From ac5a8931a6d70b287577417ac0c28c62214e4f61 Mon Sep 17 00:00:00 2001 From: wnlen <544241974@qq.com> Date: Thu, 15 Jan 2026 21:23:41 +0800 Subject: [PATCH] ui --- dashboard/public/200.html | 2 +- dashboard/public/404.html | 2 +- .../public/_nuxt/{CF_wGKUg.js => 0fYsCwSZ.js} | 2 +- dashboard/public/_nuxt/11_hK3oH.js | 1 - dashboard/public/_nuxt/48NUT-il.js | 1 - .../public/_nuxt/{DU0EtKBX.js => 5MMMtqqF.js} | 2 +- dashboard/public/_nuxt/5dvSfUDH.js | 1 - .../public/_nuxt/{CgpkS0YV.js => 6QyW-nVe.js} | 2 +- .../public/_nuxt/{DP4NE4zB.js => A1BmUOM0.js} | 2 +- dashboard/public/_nuxt/B28Maf-W.js | 1 - .../public/_nuxt/{C77G6-6o.js => BDrZyX6e.js} | 2 +- dashboard/public/_nuxt/BFCYF24c.js | 1 - .../public/_nuxt/{BYCvG7bQ.js => BGrMhtLn.js} | 2 +- dashboard/public/_nuxt/BMhFqWGI.js | 6 ------ dashboard/public/_nuxt/BPp2G0kT.js | 1 - dashboard/public/_nuxt/BQ8FVLbv.js | 1 - .../public/_nuxt/{ATr41dst.js => BWQ9TmQI.js} | 2 +- dashboard/public/_nuxt/BWjTEMpd.js | 4 ---- .../public/_nuxt/{BO7OF0rr.js => B_eM63Cy.js} | 2 +- .../public/_nuxt/{BxasJJ8h.js => BgICMvmn.js} | 2 +- .../public/_nuxt/{izVbzk-g.js => Bk2nYVL8.js} | 2 +- dashboard/public/_nuxt/Bqz0uJa8.js | 1 - .../public/_nuxt/{-HSUUYd8.js => BtSopSH8.js} | 2 +- dashboard/public/_nuxt/Bw8ZgzaJ.js | 1 - dashboard/public/_nuxt/C-7rICsH.js | 1 - dashboard/public/_nuxt/C4Izj9vY.js | 1 - dashboard/public/_nuxt/C7eIA7p7.js | 1 - .../public/_nuxt/{Dw7DszGx.js => CAhuthQu.js} | 2 +- .../public/_nuxt/{jBFdz1Nc.js => CDkZXm8O.js} | 2 +- .../public/_nuxt/{QKDRT3JW.js => CEumzr83.js} | 2 +- dashboard/public/_nuxt/CHkD68cx.js | 1 - dashboard/public/_nuxt/CIuSAjlR.js | 14 -------------- dashboard/public/_nuxt/COGTrV_9.js | 4 ---- dashboard/public/_nuxt/CQmGs_du.js | 1 - dashboard/public/_nuxt/CVaLGC6V.js | 1 - dashboard/public/_nuxt/CWCRUonY.js | 1 - dashboard/public/_nuxt/CXM3Cj0x.js | 1 - dashboard/public/_nuxt/CZ3DFtjO.js | 1 - dashboard/public/_nuxt/C_DxEl1C.js | 1 - .../public/_nuxt/{CYfd8DrP.js => Ca1zbqff.js} | 2 +- dashboard/public/_nuxt/CcngD7fo.js | 1 - .../public/_nuxt/{CIh0-pO9.js => CdfRVy8H.js} | 2 +- dashboard/public/_nuxt/CiEWk5bS.js | 1 - dashboard/public/_nuxt/CkFKWn77.js | 1 - dashboard/public/_nuxt/Cmp5Xxcv.js | 1 - .../public/_nuxt/{KSfHyQbQ.js => CryS42-p.js} | 2 +- dashboard/public/_nuxt/CtoxLCJE.js | 1 - dashboard/public/_nuxt/CwRUcIL4.js | 6 ------ dashboard/public/_nuxt/D3YKBdJv.js | 1 - .../public/_nuxt/{D7tkHZlc.js => D5cPuKwi.js} | 2 +- .../public/_nuxt/{DRIKxGNz.js => DAS1YOZ7.js} | 2 +- dashboard/public/_nuxt/DAkLcU18.js | 2 -- .../public/_nuxt/{B99QpFu8.js => DB3QyUG1.js} | 6 +++--- dashboard/public/_nuxt/DJ3E0YD4.js | 14 -------------- dashboard/public/_nuxt/DMUfQgCK.js | 1 - dashboard/public/_nuxt/DMVbmS_f.js | 1 - dashboard/public/_nuxt/DQ_xW1ii.js | 1 - .../public/_nuxt/{DGv368eE.js => DVG4eZ5B.js} | 2 +- dashboard/public/_nuxt/DVxVeNNS.js | 1 - .../public/_nuxt/{ChjNKprk.js => DZEHn5jx.js} | 2 +- dashboard/public/_nuxt/D_eq9jO9.js | 1 - dashboard/public/_nuxt/D_vHEnDd.js | 1 - .../public/_nuxt/{Bi4HkZ6K.js => DfiEaVJo.js} | 2 +- dashboard/public/_nuxt/DfolQpu4.js | 1 - .../public/_nuxt/{B_7V5VkU.js => Ds3PMqWb.js} | 2 +- dashboard/public/_nuxt/Dt7oRBho.js | 2 -- dashboard/public/_nuxt/DtaQMze4.js | 1 - dashboard/public/_nuxt/Du57LVNU.js | 1 - dashboard/public/_nuxt/Dv_ebRq1.js | 1 - dashboard/public/_nuxt/DwuHi3Y0.js | 1 - dashboard/public/_nuxt/GaREVKPc.js | 1 - dashboard/public/_nuxt/IdKAa0IB.js | 1 - .../public/_nuxt/{BnJfxAU5.js => RfkGMhKY.js} | 2 +- dashboard/public/_nuxt/TBOUSp6T.js | 1 - .../public/_nuxt/{BPbvcg-O.js => ThoTt0mV.js} | 2 +- dashboard/public/_nuxt/Tn8d4t_x.js | 1 - .../public/_nuxt/{Dt1EEJRH.js => Wo8RWyMo.js} | 2 +- dashboard/public/_nuxt/b3bVkeK4.js | 1 - dashboard/public/_nuxt/builds/latest.json | 2 +- .../meta/0da2ef85-3221-465e-b120-1984cb45b72f.json | 1 - .../meta/129b9020-4932-440b-814b-282bea6ba3b6.json | 1 - .../meta/9e907c20-1691-4d15-931e-034612d45b5a.json | 1 - .../meta/b83a4358-a855-4c8e-88d0-6b1f3d21730e.json | 1 + dashboard/public/_nuxt/dVX1iVDd.js | 1 - dashboard/public/_nuxt/o7P0ufZs.js | 1 - dashboard/public/_nuxt/oqOpHiKU.js | 1 - dashboard/public/_nuxt/q8o7tR36.js | 1 - dashboard/public/_nuxt/wm6hNCZN.js | 1 - dashboard/public/index.html | 2 +- 89 files changed, 34 insertions(+), 134 deletions(-) rename dashboard/public/_nuxt/{CF_wGKUg.js => 0fYsCwSZ.js} (98%) delete mode 100644 dashboard/public/_nuxt/11_hK3oH.js delete mode 100644 dashboard/public/_nuxt/48NUT-il.js rename dashboard/public/_nuxt/{DU0EtKBX.js => 5MMMtqqF.js} (80%) delete mode 100644 dashboard/public/_nuxt/5dvSfUDH.js rename dashboard/public/_nuxt/{CgpkS0YV.js => 6QyW-nVe.js} (90%) rename dashboard/public/_nuxt/{DP4NE4zB.js => A1BmUOM0.js} (99%) delete mode 100644 dashboard/public/_nuxt/B28Maf-W.js rename dashboard/public/_nuxt/{C77G6-6o.js => BDrZyX6e.js} (93%) delete mode 100644 dashboard/public/_nuxt/BFCYF24c.js rename dashboard/public/_nuxt/{BYCvG7bQ.js => BGrMhtLn.js} (96%) delete mode 100644 dashboard/public/_nuxt/BMhFqWGI.js delete mode 100644 dashboard/public/_nuxt/BPp2G0kT.js delete mode 100644 dashboard/public/_nuxt/BQ8FVLbv.js rename dashboard/public/_nuxt/{ATr41dst.js => BWQ9TmQI.js} (83%) delete mode 100644 dashboard/public/_nuxt/BWjTEMpd.js rename dashboard/public/_nuxt/{BO7OF0rr.js => B_eM63Cy.js} (59%) rename dashboard/public/_nuxt/{BxasJJ8h.js => BgICMvmn.js} (99%) rename dashboard/public/_nuxt/{izVbzk-g.js => Bk2nYVL8.js} (98%) delete mode 100644 dashboard/public/_nuxt/Bqz0uJa8.js rename dashboard/public/_nuxt/{-HSUUYd8.js => BtSopSH8.js} (98%) delete mode 100644 dashboard/public/_nuxt/Bw8ZgzaJ.js delete mode 100644 dashboard/public/_nuxt/C-7rICsH.js delete mode 100644 dashboard/public/_nuxt/C4Izj9vY.js delete mode 100644 dashboard/public/_nuxt/C7eIA7p7.js rename dashboard/public/_nuxt/{Dw7DszGx.js => CAhuthQu.js} (99%) rename dashboard/public/_nuxt/{jBFdz1Nc.js => CDkZXm8O.js} (97%) rename dashboard/public/_nuxt/{QKDRT3JW.js => CEumzr83.js} (99%) delete mode 100644 dashboard/public/_nuxt/CHkD68cx.js delete mode 100644 dashboard/public/_nuxt/CIuSAjlR.js delete mode 100644 dashboard/public/_nuxt/COGTrV_9.js delete mode 100644 dashboard/public/_nuxt/CQmGs_du.js delete mode 100644 dashboard/public/_nuxt/CVaLGC6V.js delete mode 100644 dashboard/public/_nuxt/CWCRUonY.js delete mode 100644 dashboard/public/_nuxt/CXM3Cj0x.js delete mode 100644 dashboard/public/_nuxt/CZ3DFtjO.js delete mode 100644 dashboard/public/_nuxt/C_DxEl1C.js rename dashboard/public/_nuxt/{CYfd8DrP.js => Ca1zbqff.js} (90%) delete mode 100644 dashboard/public/_nuxt/CcngD7fo.js rename dashboard/public/_nuxt/{CIh0-pO9.js => CdfRVy8H.js} (99%) delete mode 100644 dashboard/public/_nuxt/CiEWk5bS.js delete mode 100644 dashboard/public/_nuxt/CkFKWn77.js delete mode 100644 dashboard/public/_nuxt/Cmp5Xxcv.js rename dashboard/public/_nuxt/{KSfHyQbQ.js => CryS42-p.js} (98%) delete mode 100644 dashboard/public/_nuxt/CtoxLCJE.js delete mode 100644 dashboard/public/_nuxt/CwRUcIL4.js delete mode 100644 dashboard/public/_nuxt/D3YKBdJv.js rename dashboard/public/_nuxt/{D7tkHZlc.js => D5cPuKwi.js} (94%) rename dashboard/public/_nuxt/{DRIKxGNz.js => DAS1YOZ7.js} (98%) delete mode 100644 dashboard/public/_nuxt/DAkLcU18.js rename dashboard/public/_nuxt/{B99QpFu8.js => DB3QyUG1.js} (99%) delete mode 100644 dashboard/public/_nuxt/DJ3E0YD4.js delete mode 100644 dashboard/public/_nuxt/DMUfQgCK.js delete mode 100644 dashboard/public/_nuxt/DMVbmS_f.js delete mode 100644 dashboard/public/_nuxt/DQ_xW1ii.js rename dashboard/public/_nuxt/{DGv368eE.js => DVG4eZ5B.js} (99%) delete mode 100644 dashboard/public/_nuxt/DVxVeNNS.js rename dashboard/public/_nuxt/{ChjNKprk.js => DZEHn5jx.js} (99%) delete mode 100644 dashboard/public/_nuxt/D_eq9jO9.js delete mode 100644 dashboard/public/_nuxt/D_vHEnDd.js rename dashboard/public/_nuxt/{Bi4HkZ6K.js => DfiEaVJo.js} (96%) delete mode 100644 dashboard/public/_nuxt/DfolQpu4.js rename dashboard/public/_nuxt/{B_7V5VkU.js => Ds3PMqWb.js} (91%) delete mode 100644 dashboard/public/_nuxt/Dt7oRBho.js delete mode 100644 dashboard/public/_nuxt/DtaQMze4.js delete mode 100644 dashboard/public/_nuxt/Du57LVNU.js delete mode 100644 dashboard/public/_nuxt/Dv_ebRq1.js delete mode 100644 dashboard/public/_nuxt/DwuHi3Y0.js delete mode 100644 dashboard/public/_nuxt/GaREVKPc.js delete mode 100644 dashboard/public/_nuxt/IdKAa0IB.js rename dashboard/public/_nuxt/{BnJfxAU5.js => RfkGMhKY.js} (97%) delete mode 100644 dashboard/public/_nuxt/TBOUSp6T.js rename dashboard/public/_nuxt/{BPbvcg-O.js => ThoTt0mV.js} (92%) delete mode 100644 dashboard/public/_nuxt/Tn8d4t_x.js rename dashboard/public/_nuxt/{Dt1EEJRH.js => Wo8RWyMo.js} (99%) delete mode 100644 dashboard/public/_nuxt/b3bVkeK4.js delete mode 100644 dashboard/public/_nuxt/builds/meta/0da2ef85-3221-465e-b120-1984cb45b72f.json delete mode 100644 dashboard/public/_nuxt/builds/meta/129b9020-4932-440b-814b-282bea6ba3b6.json delete mode 100644 dashboard/public/_nuxt/builds/meta/9e907c20-1691-4d15-931e-034612d45b5a.json create mode 100644 dashboard/public/_nuxt/builds/meta/b83a4358-a855-4c8e-88d0-6b1f3d21730e.json delete mode 100644 dashboard/public/_nuxt/dVX1iVDd.js delete mode 100644 dashboard/public/_nuxt/o7P0ufZs.js delete mode 100644 dashboard/public/_nuxt/oqOpHiKU.js delete mode 100644 dashboard/public/_nuxt/q8o7tR36.js delete mode 100644 dashboard/public/_nuxt/wm6hNCZN.js diff --git a/dashboard/public/200.html b/dashboard/public/200.html index 0b93239..3f60aed 100644 --- a/dashboard/public/200.html +++ b/dashboard/public/200.html @@ -1 +1 @@ -
{let{slotScopeIds:u}=t;u&&(i=i?i.concat(u):u);let d=o(e),f=p(a(e),t,d,n,r,i,s);return f&&di(f)&&f.data===`]`?a(t.anchor=f):(si(),c(t.anchor=l(`]`),d,f),f)},g=(e,t,r,i,c,l)=>{if(hi(e.parentElement,1)||si(),t.el=null,l){let t=_(e);for(;;){let n=a(e);if(n&&n!==t)s(n);else break}}let u=a(e),d=o(e);return s(e),n(null,t,d,u,r,i,ui(d),c),r&&(r.vnode.el=t.el,go(r,t.el)),u},_=(e,t=`[`,n=`]`)=>{let r=0;for(;e;)if(e=a(e),e&&di(e)&&(e.data===t&&r++,e.data===n)){if(r===0)return a(e);r--}return e},v=(e,t,n)=>{let r=t.parentNode;r&&r.replaceChild(e,t);let i=n;for(;i;)i.vnode.el===t&&(i.vnode.el=i.subTree.el=e),i=i.parent},y=e=>e.nodeType===1&&e.tagName===`TEMPLATE`;return[u,d]}var pi=`data-allow-mismatch`,mi={0:`text`,1:`children`,2:`class`,3:`style`,4:`attribute`};function hi(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(pi);)e=e.parentElement;let n=e&&e.getAttribute(pi);if(n==null)return!1;if(n===``)return!0;{let e=n.split(`,`);return t===0&&e.includes(`children`)?!0:e.includes(mi[t])}}var gi=ve().requestIdleCallback||(e=>setTimeout(e,1)),_i=ve().cancelIdleCallback||(e=>clearTimeout(e)),vi=(e=1e4)=>t=>{let n=gi(t,{timeout:e});return()=>_i(n)};function yi(e){let{top:t,left:n,bottom:r,right:i}=e.getBoundingClientRect(),{innerHeight:a,innerWidth:o}=window;return(t>0&&t0&&r0&&n 0,g<=h.r||!h.r){g<=1&&m>0&&(h=f[m-1]);var _=d[h.l];s&&(g=s(``+g)),l=typeof _==`string`?_.replace(`%d`,g):_(g,r,h.l,u);break}}if(r)return l;var v=u?d.future:d.past;return typeof v==`function`?v(l):v.replace(`%s`,l)},r.to=function(e,t){return a(e,t,this,!0)},r.from=function(e,t){return a(e,t,this)};var o=function(e){return e.$u?n.utc():n()};r.toNow=function(e){return this.to(o(this),e)},r.fromNow=function(e){return this.from(o(this),e)}}}))})),s=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r(i()):typeof define==`function`&&define.amd?define([`dayjs`],r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_locale_zh_cn=r(n.dayjs)})(e,(function(e){function t(e){return e&&typeof e==`object`&&`default`in e?e:{default:e}}var n=t(e),r={name:`zh-cn`,weekdays:`星期日_星期一_星期二_星期三_星期四_星期五_星期六`.split(`_`),weekdaysShort:`周日_周一_周二_周三_周四_周五_周六`.split(`_`),weekdaysMin:`日_一_二_三_四_五_六`.split(`_`),months:`一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月`.split(`_`),monthsShort:`1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月`.split(`_`),ordinal:function(e,t){return t===`W`?e+`周`:e+`日`},weekStart:1,yearStart:4,formats:{LT:`HH:mm`,LTS:`HH:mm:ss`,L:`YYYY/MM/DD`,LL:`YYYY年M月D日`,LLL:`YYYY年M月D日Ah点mm分`,LLLL:`YYYY年M月D日ddddAh点mm分`,l:`YYYY/M/D`,ll:`YYYY年M月D日`,lll:`YYYY年M月D日 HH:mm`,llll:`YYYY年M月D日dddd HH:mm`},relativeTime:{future:`%s内`,past:`%s前`,s:`几秒`,m:`1 分钟`,mm:`%d 分钟`,h:`1 小时`,hh:`%d 小时`,d:`1 天`,dd:`%d 天`,M:`1 个月`,MM:`%d 个月`,y:`1 年`,yy:`%d 年`},meridiem:function(e,t){var n=100*e+t;return n<600?`凌晨`:n<900?`早上`:n<1100?`上午`:n<1300?`中午`:n<1800?`下午`:`晚上`}};return n.default.locale(r,null,!0),r}))})),c=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r(i()):typeof define==`function`&&define.amd?define([`dayjs`],r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_locale_ru=r(n.dayjs)})(e,(function(e){function t(e){return e&&typeof e==`object`&&`default`in e?e:{default:e}}var n=t(e),r=`января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря`.split(`_`),i=`январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь`.split(`_`),a=`янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.`.split(`_`),o=`янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.`.split(`_`),s=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function c(e,t,n){var r,i;return n===`m`?t?`минута`:`минуту`:e+` `+(r=+e,i={mm:t?`минута_минуты_минут`:`минуту_минуты_минут`,hh:`час_часа_часов`,dd:`день_дня_дней`,MM:`месяц_месяца_месяцев`,yy:`год_года_лет`}[n].split(`_`),r%10==1&&r%100!=11?i[0]:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?i[1]:i[2])}var l=function(e,t){return s.test(t)?r[e.month()]:i[e.month()]};l.s=i,l.f=r;var u=function(e,t){return s.test(t)?a[e.month()]:o[e.month()]};u.s=o,u.f=a;var d={name:`ru`,weekdays:`воскресенье_понедельник_вторник_среда_четверг_пятница_суббота`.split(`_`),weekdaysShort:`вск_пнд_втр_срд_чтв_птн_сбт`.split(`_`),weekdaysMin:`вс_пн_вт_ср_чт_пт_сб`.split(`_`),months:l,monthsShort:u,weekStart:1,yearStart:4,formats:{LT:`H:mm`,LTS:`H:mm:ss`,L:`DD.MM.YYYY`,LL:`D MMMM YYYY г.`,LLL:`D MMMM YYYY г., H:mm`,LLLL:`dddd, D MMMM YYYY г., H:mm`},relativeTime:{future:`через %s`,past:`%s назад`,s:`несколько секунд`,m:c,mm:c,h:`час`,hh:c,d:`день`,dd:c,M:`месяц`,MM:c,y:`год`,yy:c},ordinal:function(e){return e},meridiem:function(e){return e<4?`ночи`:e<12?`утра`:e<17?`дня`:`вечера`}};return n.default.locale(d,null,!0),d}))})),l=t(i(),1),u=t(a(),1),d=t(o(),1);s(),c(),l.default.extend(d.default),l.default.extend(u.default);function f(e){return/^https?:\/\//.test(e)?e:`${window.location.protocol}//${e}`}function p(e){return/:{1,2}/.test(e)?`[${e}]`:e}function m(e,t=`en`){let n=t===`zh`?`zh-cn`:t===`ru`?`ru`:`en`;return(0,l.default)(e).locale(n).fromNow()}function h(e,t){let n=t-e,r=l.default.duration(n),i=Math.floor(r.asDays()),a=r.hours(),o=r.minutes(),s=r.seconds(),c=[];return i>0&&c.push(`${i}d`),a>0&&c.push(`${a}h`),o>0&&c.push(`${o}m`),s>0&&i===0&&c.push(`${s}s`),c.length>0?c.join(` `):`0s`}function g(e,t,n=`en`){let r=n===`zh`?`zh-cn`:n===`ru`?`ru`:`en`,i=(0,l.default)(e),a=(0,l.default)(t);return i.isSame(a,`day`)?`${i.locale(r).format(`MMM D, YYYY HH:mm`)} - ${a.locale(r).format(`HH:mm`)}`:`${i.locale(r).format(`MMM D, HH:mm`)} - ${a.locale(r).format(`MMM D, HH:mm`)}`}function _(e=``,t){let n=e.toLowerCase(),r=new Map([[`shadowsocks`,`SS`],[`shadowsocksr`,`SSR`],[`hysteria`,`HY`],[`hysteria2`,`HY2`],[`wireguard`,`WG`],[`selector`,t(`selector`)],[`urltest`,t(`urltest`)],[`fallback`,t(`fallback`)],[`loadbalance`,t(`loadbalance`)],[`direct`,t(`direct`)],[`reject`,t(`reject`)],[`rejectdrop`,t(`rejectdrop`)],[`relay`,t(`relay`)],[`pass`,t(`pass`)]]);return r.has(n)?r.get(n):n}function v(e,t){return e>t.HIGH?`text-red-500`:e>t.MEDIUM?`text-yellow-500`:e===t.NOT_CONNECTED?`text-gray`:`text-green-600`}function y(e=``){return![`selector`,`direct`,`reject`,`urltest`,`loadbalance`,`fallback`,`relay`].includes(e.toLowerCase())}function b({proxyNames:e,orderingType:t,testUrl:n,getLatencyByName:i,latencyQualityMap:a,urlForLatencyTest:o}){if(t===r.NATURAL)return e;let s=n||o;return[...e].sort((e,n)=>{let o=i(e,s),c=i(n,s);switch(t){case r.LATENCY_ASC:return o===a.NOT_CONNECTED?1:c===a.NOT_CONNECTED?-1:o-c;case r.LATENCY_DESC:return o===a.NOT_CONNECTED?1:c===a.NOT_CONNECTED?-1:c-o;case r.NAME_ASC:return e.localeCompare(n);case r.NAME_DESC:return n.localeCompare(e);default:return 0}})}function x({proxyNames:e,enabled:t,testUrl:n,getLatencyByName:r,isProxyGroup:i,latencyQualityMap:a,urlForLatencyTest:o}){let s=n||o;return t?e.filter(e=>i(e)||r(e,s)!==a.NOT_CONNECTED):e}function S(){let e=n({}),t=(t,n)=>{e.value={...e.value,[t]:n}};return{map:e,set:t,setWithCallback:async(e,n)=>{t(e,!0);try{await n()}catch{}t(e,!1)}}}function C(e){return typeof document>`u`?``:getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function w(){return{baseContent:C(`--color-base-content`)||`oklch(0.746 0 0)`,base100:C(`--color-base-100`)||`oklch(0.253 0 0)`,base200:C(`--color-base-200`)||`oklch(0.232 0 0)`,base300:C(`--color-base-300`)||`oklch(0.211 0 0)`,primary:C(`--color-primary`)||`oklch(0.65 0.15 240)`,primaryContent:C(`--color-primary-content`)||`oklch(0.98 0 0)`,secondary:C(`--color-secondary`)||`oklch(0.65 0.15 300)`,secondaryContent:C(`--color-secondary-content`)||`oklch(0.98 0 0)`,accent:C(`--color-accent`)||`oklch(0.65 0.15 180)`,accentContent:C(`--color-accent-content`)||`oklch(0.98 0 0)`,neutral:C(`--color-neutral`)||`oklch(0.3 0 0)`,neutralContent:C(`--color-neutral-content`)||`oklch(0.98 0 0)`,info:C(`--color-info`)||`oklch(0.65 0.15 220)`,success:C(`--color-success`)||`oklch(0.65 0.15 140)`,warning:C(`--color-warning`)||`oklch(0.8 0.15 80)`,error:C(`--color-error`)||`oklch(0.65 0.2 25)`}}function T(){let e=w();return{textColor:e.baseContent,textColorHover:e.primaryContent,gridLineColor:e.base300,lineColor:e.base300,tickColor:e.base300,seriesColors:[e.info,e.success,e.warning,e.error],backgroundColor:e.base200}}function E(e){return e.replace(`/g,`%3E`)}export{h as a,m as c,w as d,b as f,i as h,g as i,T as l,S as m,x as n,p as o,f as p,y as r,_ as s,E as t,v as u};
\ No newline at end of file
diff --git a/dashboard/public/_nuxt/C4Izj9vY.js b/dashboard/public/_nuxt/C4Izj9vY.js
deleted file mode 100644
index 30bdc0e..0000000
--- a/dashboard/public/_nuxt/C4Izj9vY.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,C as t,Dt as n,E as r,Et as i,G as a,H as o,J as s,K as c,L as l,Mt as u,Ot as d,Q as f,V as p,W as m,Z as h,at as g,ct as _,dt as v,ft as y,ht as b,j as x,kt as S,lt as C,ot as w,pt as ee,q as T,rt as E,st as D,ut as O,x as k,yt as A}from"./BMhFqWGI.js";import{t as j}from"./_v7-ePgP.js";import{t as M}from"./D_eq9jO9.js";import{t as N}from"./B_7V5VkU.js";import{B as te,C as P,E as ne,F,O as re,R as I,a as ie,d as ae,g as oe,h as se,k as L,m as ce,n as le,o as ue,t as de,v as fe,x as pe,z as R}from"./b3bVkeK4.js";import{t as me}from"./CDMImveV.js";import{n as he,t as z}from"./CkFKWn77.js";import{t as ge}from"./DGv368eE.js";import{a as _e,d as ve,i as ye,l as be}from"./Dv_ebRq1.js";var xe={class:`stat place-items-center px-2 py-3`},Se={class:`stat-title text-xs text-primary-content sm:text-sm`},Ce={class:`stat-value text-center text-lg whitespace-nowrap text-primary-content sm:text-xl lg:text-2xl`},we=e({__name:`TrafficWidget`,props:{label:{}},setup(e){return(t,n)=>(D(),s(`div`,xe,[a(`div`,Se,S(e.label),1),a(`div`,Ce,[C(t.$slots,`default`)])]))}}),Te=Object.assign(we,{__name:`TrafficWidget`}),Ee=u(ge(),1),De={class:`relative h-full w-full`},Oe={key:0,class:`absolute inset-0 flex items-center justify-center`},ke=e({__name:`RealtimeLineChart`,props:{title:{},seriesConfig:{},isLoading:{type:Boolean,default:!1},initialData:{default:()=>[]},valueMode:{default:`bytes`}},emits:[`chartReady`],setup(e,{expose:t,emit:r}){let i=e,o=r,c=(e,t=!1)=>i.valueMode===`number`?String(e):t?`${z(e).toString()}/s`:z(e).toString(),l=A(),u,d=M();function f(){let e=be();return{chart:{type:`areaspline`,animation:{duration:800,easing:`linear`},backgroundColor:e.backgroundColor},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:i.title,style:{color:e.textColor}},legend:{enabled:!0,itemStyle:{color:e.textColor},itemHoverStyle:{color:e.textColorHover}},xAxis:{type:`datetime`,tickPixelInterval:100,labels:{style:{color:e.textColor},formatter(){let e=new Date(this.value);return`${e.getMinutes().toString().padStart(2,`0`)}:${e.getSeconds().toString().padStart(2,`0`)}`}},lineColor:e.lineColor,tickColor:e.tickColor},yAxis:{title:{text:void 0},labels:{style:{color:e.textColor},formatter(){return c(this.value)}},gridLineColor:e.gridLineColor,min:0},tooltip:{shared:!0,formatter(){let e=new Date(this.x),t=`${`${e.getMinutes().toString().padStart(2,`0`)}:${e.getSeconds().toString().padStart(2,`0`)}`} 0,g<=h.r||!h.r){g<=1&&m>0&&(h=f[m-1]);var _=d[h.l];s&&(g=s(``+g)),l=typeof _==`string`?_.replace(`%d`,g):_(g,r,h.l,u);break}}if(r)return l;var v=u?d.future:d.past;return typeof v==`function`?v(l):v.replace(`%s`,l)},r.to=function(e,t){return a(e,t,this,!0)},r.from=function(e,t){return a(e,t,this)};var o=function(e){return e.$u?n.utc():n()};r.toNow=function(e){return this.to(o(this),e)},r.fromNow=function(e){return this.from(o(this),e)}}}))})),s=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r(i()):typeof define==`function`&&define.amd?define([`dayjs`],r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_locale_zh_cn=r(n.dayjs)})(e,(function(e){function t(e){return e&&typeof e==`object`&&`default`in e?e:{default:e}}var n=t(e),r={name:`zh-cn`,weekdays:`星期日_星期一_星期二_星期三_星期四_星期五_星期六`.split(`_`),weekdaysShort:`周日_周一_周二_周三_周四_周五_周六`.split(`_`),weekdaysMin:`日_一_二_三_四_五_六`.split(`_`),months:`一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月`.split(`_`),monthsShort:`1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月`.split(`_`),ordinal:function(e,t){return t===`W`?e+`周`:e+`日`},weekStart:1,yearStart:4,formats:{LT:`HH:mm`,LTS:`HH:mm:ss`,L:`YYYY/MM/DD`,LL:`YYYY年M月D日`,LLL:`YYYY年M月D日Ah点mm分`,LLLL:`YYYY年M月D日ddddAh点mm分`,l:`YYYY/M/D`,ll:`YYYY年M月D日`,lll:`YYYY年M月D日 HH:mm`,llll:`YYYY年M月D日dddd HH:mm`},relativeTime:{future:`%s内`,past:`%s前`,s:`几秒`,m:`1 分钟`,mm:`%d 分钟`,h:`1 小时`,hh:`%d 小时`,d:`1 天`,dd:`%d 天`,M:`1 个月`,MM:`%d 个月`,y:`1 年`,yy:`%d 年`},meridiem:function(e,t){var n=100*e+t;return n<600?`凌晨`:n<900?`早上`:n<1100?`上午`:n<1300?`中午`:n<1800?`下午`:`晚上`}};return n.default.locale(r,null,!0),r}))})),c=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r(i()):typeof define==`function`&&define.amd?define([`dayjs`],r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_locale_ru=r(n.dayjs)})(e,(function(e){function t(e){return e&&typeof e==`object`&&`default`in e?e:{default:e}}var n=t(e),r=`января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря`.split(`_`),i=`январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь`.split(`_`),a=`янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.`.split(`_`),o=`янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.`.split(`_`),s=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function c(e,t,n){var r,i;return n===`m`?t?`минута`:`минуту`:e+` `+(r=+e,i={mm:t?`минута_минуты_минут`:`минуту_минуты_минут`,hh:`час_часа_часов`,dd:`день_дня_дней`,MM:`месяц_месяца_месяцев`,yy:`год_года_лет`}[n].split(`_`),r%10==1&&r%100!=11?i[0]:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?i[1]:i[2])}var l=function(e,t){return s.test(t)?r[e.month()]:i[e.month()]};l.s=i,l.f=r;var u=function(e,t){return s.test(t)?a[e.month()]:o[e.month()]};u.s=o,u.f=a;var d={name:`ru`,weekdays:`воскресенье_понедельник_вторник_среда_четверг_пятница_суббота`.split(`_`),weekdaysShort:`вск_пнд_втр_срд_чтв_птн_сбт`.split(`_`),weekdaysMin:`вс_пн_вт_ср_чт_пт_сб`.split(`_`),months:l,monthsShort:u,weekStart:1,yearStart:4,formats:{LT:`H:mm`,LTS:`H:mm:ss`,L:`DD.MM.YYYY`,LL:`D MMMM YYYY г.`,LLL:`D MMMM YYYY г., H:mm`,LLLL:`dddd, D MMMM YYYY г., H:mm`},relativeTime:{future:`через %s`,past:`%s назад`,s:`несколько секунд`,m:c,mm:c,h:`час`,hh:c,d:`день`,dd:c,M:`месяц`,MM:c,y:`год`,yy:c},ordinal:function(e){return e},meridiem:function(e){return e<4?`ночи`:e<12?`утра`:e<17?`дня`:`вечера`}};return n.default.locale(d,null,!0),d}))})),l=t(i(),1),u=t(a(),1),d=t(o(),1);s(),c(),l.default.extend(d.default),l.default.extend(u.default);function f(e){return/^https?:\/\//.test(e)?e:`${window.location.protocol}//${e}`}function p(e){return/:{1,2}/.test(e)?`[${e}]`:e}function m(e,t=`en`){let n=t===`zh`?`zh-cn`:t===`ru`?`ru`:`en`;return(0,l.default)(e).locale(n).fromNow()}function h(e,t){let n=t-e,r=l.default.duration(n),i=Math.floor(r.asDays()),a=r.hours(),o=r.minutes(),s=r.seconds(),c=[];return i>0&&c.push(`${i}d`),a>0&&c.push(`${a}h`),o>0&&c.push(`${o}m`),s>0&&i===0&&c.push(`${s}s`),c.length>0?c.join(` `):`0s`}function g(e,t,n=`en`){let r=n===`zh`?`zh-cn`:n===`ru`?`ru`:`en`,i=(0,l.default)(e),a=(0,l.default)(t);return i.isSame(a,`day`)?`${i.locale(r).format(`MMM D, YYYY HH:mm`)} - ${a.locale(r).format(`HH:mm`)}`:`${i.locale(r).format(`MMM D, HH:mm`)} - ${a.locale(r).format(`MMM D, HH:mm`)}`}function _(e=``,t){let n=e.toLowerCase(),r=new Map([[`shadowsocks`,`SS`],[`shadowsocksr`,`SSR`],[`hysteria`,`HY`],[`hysteria2`,`HY2`],[`wireguard`,`WG`],[`selector`,t(`selector`)],[`urltest`,t(`urltest`)],[`fallback`,t(`fallback`)],[`loadbalance`,t(`loadbalance`)],[`direct`,t(`direct`)],[`reject`,t(`reject`)],[`rejectdrop`,t(`rejectdrop`)],[`relay`,t(`relay`)],[`pass`,t(`pass`)]]);return r.has(n)?r.get(n):n}function v(e,t){return e>t.HIGH?`text-red-500`:e>t.MEDIUM?`text-yellow-500`:e===t.NOT_CONNECTED?`text-gray`:`text-green-600`}function y(e=``){return![`selector`,`direct`,`reject`,`urltest`,`loadbalance`,`fallback`,`relay`].includes(e.toLowerCase())}function b({proxyNames:e,orderingType:t,testUrl:n,getLatencyByName:i,latencyQualityMap:a,urlForLatencyTest:o}){if(t===r.NATURAL)return e;let s=n||o;return[...e].sort((e,n)=>{let o=i(e,s),c=i(n,s);switch(t){case r.LATENCY_ASC:return o===a.NOT_CONNECTED?1:c===a.NOT_CONNECTED?-1:o-c;case r.LATENCY_DESC:return o===a.NOT_CONNECTED?1:c===a.NOT_CONNECTED?-1:c-o;case r.NAME_ASC:return e.localeCompare(n);case r.NAME_DESC:return n.localeCompare(e);default:return 0}})}function x({proxyNames:e,enabled:t,testUrl:n,getLatencyByName:r,isProxyGroup:i,latencyQualityMap:a,urlForLatencyTest:o}){let s=n||o;return t?e.filter(e=>i(e)||r(e,s)!==a.NOT_CONNECTED):e}function S(){let e=n({}),t=(t,n)=>{e.value={...e.value,[t]:n}};return{map:e,set:t,setWithCallback:async(e,n)=>{t(e,!0);try{await n()}catch{}t(e,!1)}}}function C(e){return typeof document>`u`?``:getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function w(){return{baseContent:C(`--color-base-content`)||`oklch(0.746 0 0)`,base100:C(`--color-base-100`)||`oklch(0.253 0 0)`,base200:C(`--color-base-200`)||`oklch(0.232 0 0)`,base300:C(`--color-base-300`)||`oklch(0.211 0 0)`,primary:C(`--color-primary`)||`oklch(0.65 0.15 240)`,primaryContent:C(`--color-primary-content`)||`oklch(0.98 0 0)`,secondary:C(`--color-secondary`)||`oklch(0.65 0.15 300)`,secondaryContent:C(`--color-secondary-content`)||`oklch(0.98 0 0)`,accent:C(`--color-accent`)||`oklch(0.65 0.15 180)`,accentContent:C(`--color-accent-content`)||`oklch(0.98 0 0)`,neutral:C(`--color-neutral`)||`oklch(0.3 0 0)`,neutralContent:C(`--color-neutral-content`)||`oklch(0.98 0 0)`,info:C(`--color-info`)||`oklch(0.65 0.15 220)`,success:C(`--color-success`)||`oklch(0.65 0.15 140)`,warning:C(`--color-warning`)||`oklch(0.8 0.15 80)`,error:C(`--color-error`)||`oklch(0.65 0.2 25)`}}function T(){let e=w();return{textColor:e.baseContent,textColorHover:e.primaryContent,gridLineColor:e.base300,lineColor:e.base300,tickColor:e.base300,seriesColors:[e.info,e.success,e.warning,e.error],backgroundColor:e.base200}}function E(e){return e.replace(`/g,`%3E`)}export{h as a,m as c,w as d,b as f,i as h,g as i,T as l,S as m,x as n,p as o,f as p,y as r,_ as s,E as t,v as u};
\ No newline at end of file
+import{At as e,Mt as t,yt as n}from"./DB3QyUG1.js";import{f as r}from"./_v7-ePgP.js";var i=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs=r()})(e,(function(){var e=1e3,t=6e4,n=36e5,r=`millisecond`,i=`second`,a=`minute`,o=`hour`,s=`day`,c=`week`,l=`month`,u=`quarter`,d=`year`,f=`date`,p=`Invalid Date`,m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:`en`,weekdays:`Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday`.split(`_`),months:`January_February_March_April_May_June_July_August_September_October_November_December`.split(`_`),ordinal:function(e){var t=[`th`,`st`,`nd`,`rd`],n=e%100;return`[`+e+(t[(n-20)%10]||t[n]||t[0])+`]`}},_=function(e,t,n){var r=String(e);return!r||r.length>=t?e:``+Array(t+1-r.length).join(n)+e},v={s:_,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?`+`:`-`)+_(r,2,`0`)+`:`+_(i,2,`0`)},m:function e(t,n){if(t.date() 0,g<=h.r||!h.r){g<=1&&m>0&&(h=f[m-1]);var _=d[h.l];s&&(g=s(``+g)),l=typeof _==`string`?_.replace(`%d`,g):_(g,r,h.l,u);break}}if(r)return l;var v=u?d.future:d.past;return typeof v==`function`?v(l):v.replace(`%s`,l)},r.to=function(e,t){return a(e,t,this,!0)},r.from=function(e,t){return a(e,t,this)};var o=function(e){return e.$u?n.utc():n()};r.toNow=function(e){return this.to(o(this),e)},r.fromNow=function(e){return this.from(o(this),e)}}}))})),s=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r(i()):typeof define==`function`&&define.amd?define([`dayjs`],r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_locale_zh_cn=r(n.dayjs)})(e,(function(e){function t(e){return e&&typeof e==`object`&&`default`in e?e:{default:e}}var n=t(e),r={name:`zh-cn`,weekdays:`星期日_星期一_星期二_星期三_星期四_星期五_星期六`.split(`_`),weekdaysShort:`周日_周一_周二_周三_周四_周五_周六`.split(`_`),weekdaysMin:`日_一_二_三_四_五_六`.split(`_`),months:`一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月`.split(`_`),monthsShort:`1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月`.split(`_`),ordinal:function(e,t){return t===`W`?e+`周`:e+`日`},weekStart:1,yearStart:4,formats:{LT:`HH:mm`,LTS:`HH:mm:ss`,L:`YYYY/MM/DD`,LL:`YYYY年M月D日`,LLL:`YYYY年M月D日Ah点mm分`,LLLL:`YYYY年M月D日ddddAh点mm分`,l:`YYYY/M/D`,ll:`YYYY年M月D日`,lll:`YYYY年M月D日 HH:mm`,llll:`YYYY年M月D日dddd HH:mm`},relativeTime:{future:`%s内`,past:`%s前`,s:`几秒`,m:`1 分钟`,mm:`%d 分钟`,h:`1 小时`,hh:`%d 小时`,d:`1 天`,dd:`%d 天`,M:`1 个月`,MM:`%d 个月`,y:`1 年`,yy:`%d 年`},meridiem:function(e,t){var n=100*e+t;return n<600?`凌晨`:n<900?`早上`:n<1100?`上午`:n<1300?`中午`:n<1800?`下午`:`晚上`}};return n.default.locale(r,null,!0),r}))})),c=e(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r(i()):typeof define==`function`&&define.amd?define([`dayjs`],r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_locale_ru=r(n.dayjs)})(e,(function(e){function t(e){return e&&typeof e==`object`&&`default`in e?e:{default:e}}var n=t(e),r=`января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря`.split(`_`),i=`январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь`.split(`_`),a=`янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.`.split(`_`),o=`янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.`.split(`_`),s=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function c(e,t,n){var r,i;return n===`m`?t?`минута`:`минуту`:e+` `+(r=+e,i={mm:t?`минута_минуты_минут`:`минуту_минуты_минут`,hh:`час_часа_часов`,dd:`день_дня_дней`,MM:`месяц_месяца_месяцев`,yy:`год_года_лет`}[n].split(`_`),r%10==1&&r%100!=11?i[0]:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?i[1]:i[2])}var l=function(e,t){return s.test(t)?r[e.month()]:i[e.month()]};l.s=i,l.f=r;var u=function(e,t){return s.test(t)?a[e.month()]:o[e.month()]};u.s=o,u.f=a;var d={name:`ru`,weekdays:`воскресенье_понедельник_вторник_среда_четверг_пятница_суббота`.split(`_`),weekdaysShort:`вск_пнд_втр_срд_чтв_птн_сбт`.split(`_`),weekdaysMin:`вс_пн_вт_ср_чт_пт_сб`.split(`_`),months:l,monthsShort:u,weekStart:1,yearStart:4,formats:{LT:`H:mm`,LTS:`H:mm:ss`,L:`DD.MM.YYYY`,LL:`D MMMM YYYY г.`,LLL:`D MMMM YYYY г., H:mm`,LLLL:`dddd, D MMMM YYYY г., H:mm`},relativeTime:{future:`через %s`,past:`%s назад`,s:`несколько секунд`,m:c,mm:c,h:`час`,hh:c,d:`день`,dd:c,M:`месяц`,MM:c,y:`год`,yy:c},ordinal:function(e){return e},meridiem:function(e){return e<4?`ночи`:e<12?`утра`:e<17?`дня`:`вечера`}};return n.default.locale(d,null,!0),d}))})),l=t(i(),1),u=t(a(),1),d=t(o(),1);s(),c(),l.default.extend(d.default),l.default.extend(u.default);function f(e){return/^https?:\/\//.test(e)?e:`${window.location.protocol}//${e}`}function p(e){return/:{1,2}/.test(e)?`[${e}]`:e}function m(e,t=`en`){let n=t===`zh`?`zh-cn`:t===`ru`?`ru`:`en`;return(0,l.default)(e).locale(n).fromNow()}function h(e,t){let n=t-e,r=l.default.duration(n),i=Math.floor(r.asDays()),a=r.hours(),o=r.minutes(),s=r.seconds(),c=[];return i>0&&c.push(`${i}d`),a>0&&c.push(`${a}h`),o>0&&c.push(`${o}m`),s>0&&i===0&&c.push(`${s}s`),c.length>0?c.join(` `):`0s`}function g(e,t,n=`en`){let r=n===`zh`?`zh-cn`:n===`ru`?`ru`:`en`,i=(0,l.default)(e),a=(0,l.default)(t);return i.isSame(a,`day`)?`${i.locale(r).format(`MMM D, YYYY HH:mm`)} - ${a.locale(r).format(`HH:mm`)}`:`${i.locale(r).format(`MMM D, HH:mm`)} - ${a.locale(r).format(`MMM D, HH:mm`)}`}function _(e=``,t){let n=e.toLowerCase(),r=new Map([[`shadowsocks`,`SS`],[`shadowsocksr`,`SSR`],[`hysteria`,`HY`],[`hysteria2`,`HY2`],[`wireguard`,`WG`],[`selector`,t(`selector`)],[`urltest`,t(`urltest`)],[`fallback`,t(`fallback`)],[`loadbalance`,t(`loadbalance`)],[`direct`,t(`direct`)],[`reject`,t(`reject`)],[`rejectdrop`,t(`rejectdrop`)],[`relay`,t(`relay`)],[`pass`,t(`pass`)]]);return r.has(n)?r.get(n):n}function v(e,t){return e>t.HIGH?`text-red-500`:e>t.MEDIUM?`text-yellow-500`:e===t.NOT_CONNECTED?`text-gray`:`text-green-600`}function y(e=``){return![`selector`,`direct`,`reject`,`urltest`,`loadbalance`,`fallback`,`relay`].includes(e.toLowerCase())}function b({proxyNames:e,orderingType:t,testUrl:n,getLatencyByName:i,latencyQualityMap:a,urlForLatencyTest:o}){if(t===r.NATURAL)return e;let s=n||o;return[...e].sort((e,n)=>{let o=i(e,s),c=i(n,s);switch(t){case r.LATENCY_ASC:return o===a.NOT_CONNECTED?1:c===a.NOT_CONNECTED?-1:o-c;case r.LATENCY_DESC:return o===a.NOT_CONNECTED?1:c===a.NOT_CONNECTED?-1:c-o;case r.NAME_ASC:return e.localeCompare(n);case r.NAME_DESC:return n.localeCompare(e);default:return 0}})}function x({proxyNames:e,enabled:t,testUrl:n,getLatencyByName:r,isProxyGroup:i,latencyQualityMap:a,urlForLatencyTest:o}){let s=n||o;return t?e.filter(e=>i(e)||r(e,s)!==a.NOT_CONNECTED):e}function S(){let e=n({}),t=(t,n)=>{e.value={...e.value,[t]:n}};return{map:e,set:t,setWithCallback:async(e,n)=>{t(e,!0);try{await n()}catch{}t(e,!1)}}}function C(e){return typeof document>`u`?``:getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function w(){return{baseContent:C(`--color-base-content`)||`oklch(0.746 0 0)`,base100:C(`--color-base-100`)||`oklch(0.253 0 0)`,base200:C(`--color-base-200`)||`oklch(0.232 0 0)`,base300:C(`--color-base-300`)||`oklch(0.211 0 0)`,primary:C(`--color-primary`)||`oklch(0.65 0.15 240)`,primaryContent:C(`--color-primary-content`)||`oklch(0.98 0 0)`,secondary:C(`--color-secondary`)||`oklch(0.65 0.15 300)`,secondaryContent:C(`--color-secondary-content`)||`oklch(0.98 0 0)`,accent:C(`--color-accent`)||`oklch(0.65 0.15 180)`,accentContent:C(`--color-accent-content`)||`oklch(0.98 0 0)`,neutral:C(`--color-neutral`)||`oklch(0.3 0 0)`,neutralContent:C(`--color-neutral-content`)||`oklch(0.98 0 0)`,info:C(`--color-info`)||`oklch(0.65 0.15 220)`,success:C(`--color-success`)||`oklch(0.65 0.15 140)`,warning:C(`--color-warning`)||`oklch(0.8 0.15 80)`,error:C(`--color-error`)||`oklch(0.65 0.2 25)`}}function T(){let e=w();return{textColor:e.baseContent,textColorHover:e.primaryContent,gridLineColor:e.base300,lineColor:e.base300,tickColor:e.base300,seriesColors:[e.info,e.success,e.warning,e.error],backgroundColor:e.base200}}function E(e){return e.replace(`/g,`%3E`)}export{h as a,m as c,w as d,b as f,i as h,g as i,T as l,S as m,x as n,p as o,f as p,y as r,_ as s,E as t,v as u};
\ No newline at end of file
diff --git a/dashboard/public/_nuxt/jBFdz1Nc.js b/dashboard/public/_nuxt/CDkZXm8O.js
similarity index 97%
rename from dashboard/public/_nuxt/jBFdz1Nc.js
rename to dashboard/public/_nuxt/CDkZXm8O.js
index f2fe297..104f552 100644
--- a/dashboard/public/_nuxt/jBFdz1Nc.js
+++ b/dashboard/public/_nuxt/CDkZXm8O.js
@@ -1 +1 @@
-import"./CcngD7fo.js";import{$ as e,B as t,C as n,D as r,Dt as i,E as a,Et as o,G as s,H as c,I as l,J as u,K as d,Mt as f,N as p,Ot as m,Q as h,S as g,U as _,V as v,W as y,at as b,ct as x,dt as S,ft as C,it as w,kt as T,lt as E,ot as D,pt as O,q as k,rt as A,st as j,ut as M,x as N,yt as P}from"./B99QpFu8.js";import{h as F}from"./_v7-ePgP.js";import{t as I}from"./BYCvG7bQ.js";import{t as L}from"./DMVbmS_f.js";import{D as R,M as z,R as B,S as ee,T as V,_ as te,b as H,f as U,i as ne,j as W,u as G,v as K,w as re,y as ie,z as q}from"./Cmp5Xxcv.js";import{a as ae,i as J,n as Y,o as X,r as Z}from"./QKDRT3JW.js";import{t as Q}from"./CIuSAjlR.js";import{g as $,v as oe}from"./CVaLGC6V.js";import{n as se,t as ce}from"./BnJfxAU5.js";import{t as le}from"./BPp2G0kT.js";import{t as ue}from"./DAkLcU18.js";import{l as de}from"./C-7rICsH.js";var fe={class:`flex min-w-0 items-center gap-1 text-sm font-bold whitespace-nowrap uppercase sm:text-xl`},pe=e({__name:`LogoText`,setup(e){let t=n(),r=y(()=>!!t.currentEndpoint);return(e,t)=>{let n=g;return j(),u(`div`,fe,[h(n,{class:`bg-linear-to-br from-primary to-secondary bg-clip-text text-transparent`,to:o(r)?`/`:`/setup`},{default:C(()=>[...t[0]||=[s(`span`,{class:`hidden min-[400px]:inline`},`metacube`,-1),s(`span`,{class:`min-[400px]:hidden`},`mcx`,-1)]]),_:1},8,[`to`]),t[1]||=s(`span`,null,`(`,-1),t[2]||=s(`a`,{class:`text-primary transition-transform hover:scale-125 hover:rotate-90`,href:`https://github.com/metacubex/metacubexd`,target:`_blank`},` xd `,-1),t[3]||=s(`span`,null,`)`,-1)])}}}),me=Object.assign(pe,{__name:`LogoText`}),he={class:`dropdown dropdown-end`},ge={tabindex:`0`,role:`button`,class:`btn btn-circle btn-ghost`,"aria-label":`Change language`},_e={tabindex:`0`,class:`dropdown-content menu z-50 mt-2 w-40 rounded-box bg-base-200 p-2 shadow-lg`},ve=[`onClick`],ye=e({__name:`LangSwitcher`,setup(e){let{locale:t,locales:n,setLocale:r}=N(),a=y(()=>n.value.map(e=>typeof e==`string`?{code:e,name:e}:e));return(e,n)=>(j(),u(`div`,he,[s(`div`,ge,[h(o(H),{size:20})]),s(`ul`,_e,[(j(!0),u(c,null,x(o(a),e=>(j(),u(`li`,{key:e.code},[s(`button`,{class:i({"menu-active":o(t)===e.code}),onClick:t=>o(r)(e.code)},T(e.name),11,ve)]))),128))])]))}}),be=Object.assign(ye,{__name:`LangSwitcher`}),xe=[`data-theme`],Se=[`onClick`],Ce=e({__name:`ThemeSwitcher`,setup(e){let t=I(),n=P(null),r=P(null),a=P(!1),{floatingStyles:l}=Y(n,r,{placement:`top`,middleware:[ae(10),J(),X({padding:8})],whileElementsMounted:Z});function f(){a.value=!a.value}function p(e){t.curTheme=e,document.documentElement.setAttribute(`data-theme`,e),a.value=!1}function g(e){let t=e.target;!n.value?.contains(t)&&!r.value?.contains(t)&&(a.value=!1)}return b(()=>{document.addEventListener(`click`,g)}),D(()=>{document.removeEventListener(`click`,g)}),(e,g)=>(j(),u(`div`,null,[s(`button`,{ref_key:`reference`,ref:n,class:`btn btn-circle btn-sm btn-primary`,onClick:v(f,[`stop`])},[h(o(te))],512),(j(),d(_,{to:`body`},[o(a)?(j(),u(`ul`,{key:0,ref_key:`floating`,ref:r,style:m(o(l)),class:`menu z-70 max-h-64 w-40 flex-nowrap overflow-y-auto rounded-box bg-base-300 p-2 shadow-lg`},[(j(!0),u(c,null,x(o(F),e=>(j(),u(`li`,{key:e,"data-theme":e,class:`rounded-btn`},[s(`button`,{class:i([`btn justify-start btn-xs`,{"btn-active":o(t).curTheme===e}]),onClick:t=>p(e)},T(e),11,Se)],8,xe))),128))],4)):k(``,!0)]))]))}}),we=Object.assign(Ce,{__name:`ThemeSwitcher`}),Te={class:`mx-2 mb-2 overflow-hidden rounded-2xl border border-base-content/10 bg-base-300/90 shadow-lg backdrop-blur-md`},Ee={class:`grid h-16 grid-cols-6`},De={class:`sr-only`},Oe=e({__name:`MobileBottomNav`,props:{navItems:{}},setup(e){let t=p(),n=e=>t.path===e,r=P(!1);b(()=>{a(),window.addEventListener(`resize`,a),requestAnimationFrame(()=>{r.value=!0})}),D(()=>{document.body.style.paddingBottom=`0`,window.removeEventListener(`resize`,a)});function a(){document.body.style.paddingBottom=window.innerWidth<1024?`4.5rem`:`0`}return(t,a)=>{let l=g;return j(),u(`nav`,{"aria-label":`Mobile bottom navigation`,class:i([`fixed inset-x-0 bottom-0 z-50 transform transition-all duration-500 ease-out lg:hidden`,[o(r)?`translate-y-0 opacity-100`:`translate-y-full opacity-0`]])},[s(`div`,Te,[s(`div`,Ee,[(j(!0),u(c,null,x(e.navItems,e=>(j(),d(l,{key:e.href,to:e.href,class:i([`group relative flex flex-col items-center justify-center gap-0.5 transition-all duration-300`,[n(e.href)?`text-primary`:`text-base-content/60 hover:text-base-content active:scale-90`]])},{default:C(()=>[s(`div`,{class:i([`absolute inset-1 rounded-xl transition-all duration-300`,[n(e.href)?`bg-primary/10`:`bg-transparent group-hover:bg-base-content/5`]])},null,2),s(`div`,{class:i([`absolute top-1 h-1 rounded-full bg-primary transition-all duration-300`,[n(e.href)?`w-8 opacity-100`:`w-0 opacity-0`]])},null,2),s(`div`,{class:i([`relative z-10 transition-all duration-300`,[n(e.href)?`scale-110 text-xl`:`scale-100 text-lg group-hover:scale-105`]])},[(j(),d(M(e.icon)))],2),s(`span`,De,T(`Navigate to ${e.name}`),1),s(`span`,{"aria-hidden":`true`,class:i([`relative z-10 text-[10px] font-medium transition-all duration-300`,[n(e.href)?`translate-y-0 opacity-100`:`translate-y-0 opacity-80 group-hover:opacity-100 group-focus-visible:opacity-100`]])},T(e.name),3)]),_:2},1032,[`to`,`class`]))),128))])])],2)}}}),ke=Object.assign(Oe,{__name:`MobileBottomNav`}),Ae={class:`drawer-content flex h-full flex-col`},je={class:`z-50 flex h-14 w-full shrink-0 items-center gap-2 bg-base-300 px-2 shadow-lg sm:px-4 lg:hidden`},Me={key:0,for:`main-drawer`,class:`btn btn-ghost btn-sm`,"aria-label":`open sidebar`},Ne={class:`min-w-0 shrink`},Pe={class:`ml-auto flex shrink-0 items-center gap-1`},Fe={class:`flex min-h-0 flex-1 flex-col p-2 sm:p-4`},Ie={key:0,class:`drawer-side z-60`},Le={class:`flex shrink-0 flex-col gap-2 border-b border-base-content/10 p-3`},Re={class:`menu w-full flex-1 gap-1 px-2`},ze=e({__name:`Sidebar`,setup(e){let n=p(),{t:r}=N(),a=I(),l=y(()=>[{href:`/overview`,name:r(`overview`),icon:ee},{href:`/proxies`,name:r(`proxies`),icon:V},{href:`/rules`,name:r(`rules`),icon:U},{href:`/connections`,name:r(`connections`),icon:K},{href:`/logs`,name:r(`logs`),icon:R},{href:`/config`,name:r(`config`),icon:G}]),f=e=>n.path===e,m=P(null);S(()=>n.path,()=>{m.value&&(m.value.checked=!1)});let _=()=>{a.sidebarExpanded=!a.sidebarExpanded};return(e,p)=>{let v=me,y=be,b=we,S=g,w=Q,D=ke;return j(),u(`div`,{class:i([`drawer h-full`,{"lg:drawer-open":o(n).path!==`/setup`}])},[s(`input`,{id:`main-drawer`,ref_key:`drawerCheckbox`,ref:m,type:`checkbox`,class:`drawer-toggle`},null,512),s(`div`,Ae,[s(`header`,je,[o(n).path!==`/setup`&&!o(a).useMobileBottomNav?(j(),u(`label`,Me,[h(o(ie),{class:`size-5`})])):k(``,!0),s(`div`,Ne,[h(v)]),s(`div`,Pe,[p[0]||=s(`div`,{id:`header-traffic-indicator`,class:`flex items-center`},null,-1),h(y),h(b)])]),s(`div`,Fe,[E(e.$slots,`default`)])]),o(n).path===`/setup`?k(``,!0):(j(),u(`div`,Ie,[p[1]||=s(`label`,{for:`main-drawer`,"aria-label":`close sidebar`,class:`drawer-overlay`},null,-1),s(`div`,{class:i([`flex h-full w-52 flex-col bg-base-200 transition-all duration-300`,o(a).sidebarExpanded?``:`lg:w-16`])},[s(`div`,Le,[s(`div`,{class:i([`flex items-center`,o(a).sidebarExpanded?``:`lg:justify-center`])},[O(h(v,{class:`lg:block`},null,512),[[t,o(a).sidebarExpanded]]),h(v,{class:`lg:hidden`})],2),s(`button`,{class:i([`btn hidden w-full btn-ghost btn-sm lg:flex`,o(a).sidebarExpanded?``:`lg:btn-square`]),onClick:_},[o(a).sidebarExpanded?(j(),d(o(z),{key:1,class:`size-5`})):(j(),d(o(W),{key:0,class:`size-5`})),s(`span`,{class:i(o(a).sidebarExpanded?``:`lg:hidden`)},T(o(r)(`collapse`)),3)],2)]),s(`ul`,Re,[(j(!0),u(c,null,x(o(l),e=>(j(),u(`li`,{key:e.href,class:`w-full`},[h(S,{to:e.href,class:i([`flex w-full items-center gap-3`,[{"menu-active":f(e.href)},o(a).sidebarExpanded?``:`lg:justify-center lg:px-0`]]),title:o(a).sidebarExpanded?void 0:e.name},{default:C(()=>[(j(),d(M(e.icon),{class:`size-5 shrink-0`})),s(`span`,{class:i(o(a).sidebarExpanded?``:`lg:hidden`)},T(e.name),3)]),_:2},1032,[`to`,`class`,`title`])]))),128))]),s(`div`,{class:i([`shrink-0 border-t border-base-content/10 p-2`,o(a).sidebarExpanded?``:`lg:flex lg:flex-col lg:items-center`])},[s(`div`,{id:`sidebar-traffic-expanded`,class:i([`mb-2 hidden w-full`,o(a).sidebarExpanded?`lg:block`:``])},null,2),s(`div`,{id:`sidebar-traffic-indicator`,class:i([`mb-2 hidden w-full lg:block`,o(a).sidebarExpanded?`lg:hidden`:``])},null,2),s(`div`,{class:i([`mb-2 hidden items-center gap-1`,o(a).sidebarExpanded?`lg:flex`:`lg:flex lg:flex-col`])},[h(y),h(b)],2),h(w,{collapsed:!o(a).sidebarExpanded},null,8,[`collapsed`])],2)],2)])),o(a).useMobileBottomNav&&o(n).path!==`/setup`?(j(),d(D,{key:1,"nav-items":o(l)},null,8,[`nav-items`])):k(``,!0)],2)}}}),Be=Object.assign(ze,{__name:`Sidebar`});const Ve=globalThis.setInterval;function He(){let e=n(),t=se(),r=L(),i=le(),a=I(),o=null,s=null,c=null,l=null,u=null,d=(t,n)=>{let r=e.currentEndpoint;if(!r)return null;let i=e.wsEndpointURL,a=r.secret,o=new URLSearchParams;a&&o.set(`token`,a);let s=new WebSocket(`${i}/${t}?${o.toString()}`);return s.onmessage=e=>{try{n(JSON.parse(e.data))}catch{}},s.onerror=e=>{console.error(`WebSocket error for ${t}:`,e)},s};return{connect:()=>{if($()){let e=oe();t.updateFromWsMsg({connections:e.mockConnections,uploadTotal:e.mockTrafficStats.up,downloadTotal:e.mockTrafficStats.down}),r.setLatestTraffic(e.mockTrafficStats),r.setLatestMemory(e.mockMemory);let n=Date.now(),a=e.mockConnections.length;for(let t=30;t>=0;t--){let i=n-t*1e3,o=e.mockTrafficStats.down+Math.floor(Math.random()*1e5)-5e4,s=e.mockTrafficStats.up+Math.floor(Math.random()*2e4)-1e4,c=e.mockMemory.inuse+Math.floor(Math.random()*5e6)-25e5,l=a+Math.floor(Math.random()*10)-5;r.addTrafficDataPoint(i,o,s),r.addMemoryDataPoint(i,c),r.addConnectionCountDataPoint(i,l)}e.mockLogs.forEach(e=>{i.addLog(e)}),u=Ve(()=>{let t=Date.now(),n={up:e.mockTrafficStats.up+Math.floor(Math.random()*1e4),down:e.mockTrafficStats.down+Math.floor(Math.random()*5e4)};r.setLatestTraffic(n),r.addTrafficDataPoint(t,n.down,n.up);let i={inuse:e.mockMemory.inuse+Math.floor(Math.random()*5e6)-25e5,oslimit:e.mockMemory.oslimit};r.setLatestMemory(i),r.addMemoryDataPoint(t,i.inuse);let a=e.mockConnections.length+Math.floor(Math.random()*10)-5;r.addConnectionCountDataPoint(t,a)},1e3);return}o=d(`connections`,e=>{let n=e;if(t.updateFromWsMsg(n),n){let e=n.connections?.length??0;r.addConnectionCountDataPoint(Date.now(),e)}}),s=d(`traffic`,e=>{let t=e;r.setLatestTraffic(t),r.addTrafficDataPoint(Date.now(),t.down,t.up)}),c=d(`memory`,e=>{let t=e;r.setLatestMemory(t),r.addMemoryDataPoint(Date.now(),t.inuse)});let n=e.currentEndpoint;if(n){let t=e.wsEndpointURL,r=new URLSearchParams;n.secret&&r.set(`token`,n.secret),r.set(`level`,a.logLevel),l=new WebSocket(`${t}/logs?${r.toString()}`),l.onmessage=e=>{try{let t=JSON.parse(e.data);i.addLog(t)}catch{}}}},disconnect:()=>{u&&=(clearInterval(u),null),o?.close(),s?.close(),c?.close(),l?.close(),o=null,s=null,c=null,l=null},reconnectLogs:()=>{l?.close();let t=e.currentEndpoint;if(t){let n=e.wsEndpointURL,r=new URLSearchParams;t.secret&&r.set(`token`,t.secret),r.set(`level`,a.logLevel),l=new WebSocket(`${n}/logs?${r.toString()}`),l.onmessage=e=>{try{let t=JSON.parse(e.data);i.addLog(t)}catch{}}}}}}var Ue={class:`hidden`},We=e({__name:`ProtectedResources`,setup(e){let{connect:t,disconnect:n,reconnectLogs:r}=He(),i=I();return b(()=>{t()}),D(()=>{n()}),S(()=>i.logLevel,()=>{r()}),(e,t)=>(j(),u(`div`,Ue))}}),Ge=Object.assign(We,{__name:`ProtectedResources`}),Ke=f(ue(),1),qe={class:`flex items-center gap-1`},Je={class:`font-mono text-xs`},Ye={class:`flex items-center gap-1`},Xe={class:`font-mono text-xs`},Ze={class:`flex items-center justify-center gap-1`},Qe={class:`font-mono text-xs`},$e={class:`flex items-center justify-center gap-1`},et={class:`font-mono text-xs`},tt={key:0,class:`rounded-btn w-full bg-base-100/50 p-2`},nt={class:`grid grid-cols-2 gap-1 text-xs`},rt={class:`flex items-center gap-1`},it={class:`truncate font-mono`},at={class:`flex items-center gap-1`},ot={class:`truncate font-mono`},st={class:`flex items-center gap-1`},ct={class:`font-mono text-xs`},lt={class:`flex items-center gap-1`},ut={class:`font-mono text-xs`},dt=[`title`],ft={class:`flex flex-col gap-2 p-3`},pt={class:`flex items-center justify-between gap-2`},mt={class:`text-xs font-semibold uppercase opacity-60`},ht={class:`flex items-center gap-1`},gt=[`title`],_t=[`title`],vt={class:`grid grid-cols-2 gap-x-4 gap-y-1 text-xs`},yt={class:`flex items-center gap-1.5`},bt={class:`font-mono font-medium`},xt={class:`flex items-center gap-1.5`},St={class:`font-mono font-medium`},Ct={class:`flex items-center gap-1.5 opacity-70`},wt={class:`font-mono`},Tt={class:`flex items-center gap-1.5 opacity-70`},Et={class:`font-mono`},Dt=e({__name:`GlobalTrafficIndicator`,setup(e){let t=L(),n=se(),r=I(),f=a(`globalTrafficIndicatorVisible`,!0),p=a(`globalTrafficIndicatorCollapsed`,!0),g=a(`globalTrafficIndicatorPosition`,{x:-1,y:-1}),v=P(!1),x=P({x:0,y:0}),E=P(null),D=P(null),O,M=y(()=>t.latestTraffic?.down??0),N=y(()=>t.latestTraffic?.up??0),F=y(()=>t.latestMemory?.inuse??0),R=y(()=>n.latestConnectionMsg?.connections?.length??0),z=e=>ce(e).toString(),ee=y(()=>g.value.x===-1||g.value.y===-1?{right:`16px`,bottom:`16px`}:{left:`${g.value.x}px`,top:`${g.value.y}px`});function V(){f.value=!f.value}function te(){p.value=!p.value}function H(){p.value=!1,g.value={x:-1,y:-1}}function U(e){if(!E.value)return;v.value=!0;let t=E.value.getBoundingClientRect(),n=`touches`in e?e.touches[0].clientX:e.clientX,r=`touches`in e?e.touches[0].clientY:e.clientY;x.value={x:n-t.left,y:r-t.top},g.value.x===-1&&(g.value.x=t.left,g.value.y=t.top),document.addEventListener(`mousemove`,W),document.addEventListener(`mouseup`,G),document.addEventListener(`touchmove`,W),document.addEventListener(`touchend`,G)}function W(e){if(!v.value)return;let t=`touches`in e?e.touches[0].clientX:e.clientX,n=`touches`in e?e.touches[0].clientY:e.clientY,r=t-x.value.x,i=n-x.value.y,a=E.value?.getBoundingClientRect(),o=a?.width||200,s=a?.height||150;r=Math.max(0,Math.min(window.innerWidth-o,r)),i=Math.max(0,Math.min(window.innerHeight-s,i)),g.value.x=r,g.value.y=i}function G(){v.value&&(v.value=!1,document.removeEventListener(`mousemove`,W),document.removeEventListener(`mouseup`,G),document.removeEventListener(`touchmove`,W),document.removeEventListener(`touchend`,G))}function K(){if(!D.value)return;O&&=(O.destroy(),void 0);let e=de(),n=D.value.offsetWidth||200;O=Ke.default.chart(D.value,{chart:{type:`areaspline`,backgroundColor:`transparent`,spacing:[0,0,0,0],margin:[0,0,0,0],animation:!1,width:n,height:48},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:void 0},legend:{enabled:!1},xAxis:{visible:!1,type:`datetime`},yAxis:{visible:!1,min:0},tooltip:{enabled:!1},plotOptions:{areaspline:{lineWidth:1.5,marker:{enabled:!1},fillOpacity:.2,animation:!1}},series:[{type:`areaspline`,name:`Download`,color:e.seriesColors[0],data:t.trafficChartHistory.download.length>0?[...t.trafficChartHistory.download].slice(-30):[[Date.now(),0]]},{type:`areaspline`,name:`Upload`,color:e.seriesColors[1],data:t.trafficChartHistory.upload.length>0?[...t.trafficChartHistory.upload].slice(-30):[[Date.now(),0]]}]})}function ie(){if(!O)return;let e=[...t.trafficChartHistory.download].slice(-30),n=[...t.trafficChartHistory.upload].slice(-30);O.series[0]?.setData(e,!1),O.series[1]?.setData(n,!0)}function ae(){if(!$)return;let e=[...t.trafficChartHistory.download].slice(-30),n=[...t.trafficChartHistory.upload].slice(-30);$.series[0]?.setData(e,!1),$.series[1]?.setData(n,!0)}function J(){if(!Q.value)return;$&&=($.destroy(),void 0);let e=de();$=Ke.default.chart(Q.value,{chart:{type:`areaspline`,backgroundColor:`transparent`,spacing:[0,0,0,0],margin:[0,0,0,0],animation:!1,height:40},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:void 0},legend:{enabled:!1},xAxis:{visible:!1,type:`datetime`},yAxis:{visible:!1,min:0},tooltip:{enabled:!1},plotOptions:{areaspline:{lineWidth:1.5,marker:{enabled:!1},fillOpacity:.2,animation:!1}},series:[{type:`areaspline`,name:`Download`,color:e.seriesColors[0],data:t.trafficChartHistory.download.length>0?[...t.trafficChartHistory.download].slice(-30):[[Date.now(),0]]},{type:`areaspline`,name:`Upload`,color:e.seriesColors[1],data:t.trafficChartHistory.upload.length>0?[...t.trafficChartHistory.upload].slice(-30):[[Date.now(),0]]}]})}S(()=>t.latestTraffic,e=>{e&&(O?ie():D.value&&f.value&&!p.value&&K(),$?ae():Q.value&&J())}),S(()=>r.curTheme,()=>{D.value&&!p.value&&f.value&&K(),Q.value&&J()}),S(p,e=>{!e&&f.value?A(()=>{setTimeout(()=>{D.value&&t.latestTraffic&&K()},50)}):e&&O&&(O.destroy(),O=void 0)}),S(f,e=>{e&&!p.value?A(()=>{setTimeout(()=>{D.value&&t.latestTraffic&&K()},50)}):!e&&O&&(O.destroy(),O=void 0)}),S(()=>r.sidebarExpanded,e=>{e&&A(()=>{setTimeout(()=>{Q.value&&t.latestTraffic&&J()},100)})});let Y=P(!1),X=P(!1),Z=P(!1),Q=P(null),$;return b(()=>{A(()=>{Y.value=!!document.getElementById(`header-traffic-indicator`),X.value=!!document.getElementById(`sidebar-traffic-indicator`),Z.value=!!document.getElementById(`sidebar-traffic-expanded`)}),f.value&&!p.value&&t.latestTraffic&&setTimeout(()=>{D.value&&K()},100),t.latestTraffic&&setTimeout(()=>{Q.value&&J()},150)}),w(()=>{O&&=(O.destroy(),void 0),$&&=($.destroy(),void 0)}),(e,n)=>(j(),u(c,null,[o(Y)?(j(),d(_,{key:0,to:`#header-traffic-indicator`},[o(f)&&o(p)&&o(t).latestTraffic?(j(),u(`div`,{key:0,class:`rounded-btn flex cursor-pointer items-center gap-2 bg-base-100/50 px-2 py-1 transition-colors hover:bg-base-100`,onClick:H},[s(`div`,qe,[h(o(q),{class:`size-3 text-success`}),s(`span`,Je,T(z(o(M)))+`/s`,1)]),n[0]||=s(`div`,{class:`h-3 w-px bg-base-content/20`},null,-1),s(`div`,Ye,[h(o(B),{class:`size-3 text-info`}),s(`span`,Xe,T(z(o(N)))+`/s`,1)])])):k(``,!0)])):k(``,!0),o(X)?(j(),d(_,{key:1,to:`#sidebar-traffic-indicator`},[o(t).latestTraffic?(j(),u(`div`,{key:0,class:`rounded-btn w-full cursor-pointer bg-base-100/50 px-2 py-2 transition-colors hover:bg-base-100`,onClick:H},[s(`div`,Ze,[h(o(q),{class:`size-3 text-success`}),s(`span`,Qe,T(z(o(M)))+`/s`,1)]),s(`div`,$e,[h(o(B),{class:`size-3 text-info`}),s(`span`,et,T(z(o(N)))+`/s`,1)])])):k(``,!0)])):k(``,!0),o(Z)?(j(),d(_,{key:2,to:`#sidebar-traffic-expanded`},[o(t).latestTraffic?(j(),u(`div`,tt,[s(`div`,{ref_key:`sidebarChartContainer`,ref:Q,class:`mb-2 h-10 w-full`},null,512),s(`div`,nt,[s(`div`,rt,[h(o(q),{class:`size-3 shrink-0 text-success`}),s(`span`,it,T(z(o(M)))+`/s`,1)]),s(`div`,at,[h(o(B),{class:`size-3 shrink-0 text-info`}),s(`span`,ot,T(z(o(N)))+`/s`,1)])])])):k(``,!0)])):k(``,!0),o(f)&&o(p)&&o(t).latestTraffic&&!o(Y)&&!o(X)?(j(),u(`div`,{key:3,class:`fixed right-4 bottom-4 z-50 flex cursor-pointer items-center gap-2 rounded-box bg-base-200 px-3 py-2 shadow-lg`,onClick:H},[s(`div`,st,[h(o(q),{class:`size-3 text-success`}),s(`span`,ct,T(z(o(M)))+`/s`,1)]),n[1]||=s(`div`,{class:`h-3 w-px bg-base-content/20`},null,-1),s(`div`,lt,[h(o(B),{class:`size-3 text-info`}),s(`span`,ut,T(z(o(N)))+`/s`,1)])])):k(``,!0),o(f)?k(``,!0):(j(),u(`button`,{key:4,class:`btn fixed right-4 bottom-4 z-50 btn-circle shadow-lg btn-sm btn-primary`,title:e.$t(`showTrafficIndicator`),onClick:V},[h(o(B),{class:`size-4`})],8,dt)),h(l,{"enter-active-class":`transition-all duration-300 ease-out`,"enter-from-class":`opacity-0 scale-95`,"enter-to-class":`opacity-100 scale-100`,"leave-active-class":`transition-all duration-200 ease-in`,"leave-from-class":`opacity-100 scale-100`,"leave-to-class":`opacity-0 scale-95`},{default:C(()=>[o(f)&&!o(p)&&o(t).latestTraffic?(j(),u(`div`,{key:0,ref_key:`containerRef`,ref:E,class:i([`fixed z-50 min-w-56 rounded-box bg-base-200 shadow-lg select-none`,{"cursor-grabbing":o(v)}]),style:m(o(ee))},[s(`div`,ft,[s(`div`,pt,[s(`div`,{class:`flex cursor-grab items-center gap-1 active:cursor-grabbing`,onMousedown:U,onTouchstart:U},[h(o(re),{class:`size-4 opacity-40`}),s(`span`,mt,T(e.$t(`traffic`)),1)],32),s(`div`,ht,[s(`button`,{class:`btn btn-circle btn-ghost btn-xs`,title:e.$t(`hideTrafficIndicator`),onClick:te},[...n[2]||=[s(`span`,{class:`text-xs`},`−`,-1)]],8,gt),s(`button`,{class:`btn btn-circle btn-ghost btn-xs`,title:e.$t(`hideTrafficIndicator`),onClick:V},[h(o(ne),{class:`size-3`})],8,_t)])]),s(`div`,{ref_key:`chartContainer`,ref:D,class:`h-12 w-full`},null,512),s(`div`,vt,[s(`div`,yt,[h(o(q),{class:`size-3 text-success`}),s(`span`,bt,T(z(o(M)))+`/s `,1)]),s(`div`,xt,[h(o(B),{class:`size-3 text-info`}),s(`span`,St,T(z(o(N)))+`/s `,1)]),s(`div`,Ct,[s(`span`,null,T(e.$t(`memory`))+`:`,1),s(`span`,wt,T(z(o(F))),1)]),s(`div`,Tt,[s(`span`,null,T(e.$t(`connections`))+`:`,1),s(`span`,Et,T(o(R)),1)])])])],6)):k(``,!0)]),_:1})],64))}}),Ot=Object.assign(Dt,{__name:`GlobalTrafficIndicator`}),kt=[`data-theme`],At=e({__name:`default`,setup(e){let t=I(),a=n(),s=L(),c=P(null);S(c,e=>{e&&(s.rootElement=e)}),S([()=>t.autoSwitchTheme,r()],([e,n])=>{e&&(t.curTheme=n?t.favNightTheme:t.favDayTheme)},{immediate:!0}),S(()=>t.curTheme,e=>{document.documentElement.setAttribute(`data-theme`,e)},{immediate:!0});let l=y(()=>$()||!!a.currentEndpoint);return(e,n)=>{let r=Be,a=Ge,s=Ot;return j(),u(`div`,{ref_key:`rootElement`,ref:c,class:i([`relative h-screen overscroll-y-none bg-base-100 subpixel-antialiased`,o(t).enableTwemoji?`font-twemoji`:`font-default`]),"data-theme":o(t).curTheme},[h(r,null,{default:C(()=>[E(e.$slots,`default`)]),_:3}),o(l)?(j(),d(a,{key:0})):k(``,!0),o(l)?(j(),d(s,{key:1})):k(``,!0)],10,kt)}}});export{At as default};
\ No newline at end of file
+import"./Bk2nYVL8.js";import{$ as e,B as t,C as n,D as r,Dt as i,E as a,Et as o,G as s,H as c,I as l,J as u,K as d,Mt as f,N as p,Ot as m,Q as h,S as g,U as _,V as v,W as y,at as b,ct as x,dt as S,ft as C,it as w,kt as T,lt as E,ot as D,pt as O,q as k,rt as A,st as j,ut as M,x as N,yt as P}from"./DB3QyUG1.js";import{h as F}from"./_v7-ePgP.js";import{t as I}from"./BGrMhtLn.js";import{t as L}from"./Ds3PMqWb.js";import{D as R,M as z,R as B,S as ee,T as V,_ as te,b as H,f as U,i as ne,j as W,u as G,v as K,w as re,y as ie,z as q}from"./CdfRVy8H.js";import{a as ae,i as J,n as Y,o as X,r as Z}from"./CEumzr83.js";import{t as Q}from"./BgICMvmn.js";import{g as $,v as oe}from"./A1BmUOM0.js";import{n as se,t as ce}from"./RfkGMhKY.js";import{t as le}from"./B_eM63Cy.js";import{t as ue}from"./DVG4eZ5B.js";import{l as de}from"./CAhuthQu.js";var fe={class:`flex min-w-0 items-center gap-1 text-sm font-bold whitespace-nowrap uppercase sm:text-xl`},pe=e({__name:`LogoText`,setup(e){let t=n(),r=y(()=>!!t.currentEndpoint);return(e,t)=>{let n=g;return j(),u(`div`,fe,[h(n,{class:`bg-linear-to-br from-primary to-secondary bg-clip-text text-transparent`,to:o(r)?`/`:`/setup`},{default:C(()=>[...t[0]||=[s(`span`,{class:`hidden min-[400px]:inline`},`metacube`,-1),s(`span`,{class:`min-[400px]:hidden`},`mcx`,-1)]]),_:1},8,[`to`]),t[1]||=s(`span`,null,`(`,-1),t[2]||=s(`a`,{class:`text-primary transition-transform hover:scale-125 hover:rotate-90`,href:`https://github.com/metacubex/metacubexd`,target:`_blank`},` xd `,-1),t[3]||=s(`span`,null,`)`,-1)])}}}),me=Object.assign(pe,{__name:`LogoText`}),he={class:`dropdown dropdown-end`},ge={tabindex:`0`,role:`button`,class:`btn btn-circle btn-ghost`,"aria-label":`Change language`},_e={tabindex:`0`,class:`dropdown-content menu z-50 mt-2 w-40 rounded-box bg-base-200 p-2 shadow-lg`},ve=[`onClick`],ye=e({__name:`LangSwitcher`,setup(e){let{locale:t,locales:n,setLocale:r}=N(),a=y(()=>n.value.map(e=>typeof e==`string`?{code:e,name:e}:e));return(e,n)=>(j(),u(`div`,he,[s(`div`,ge,[h(o(H),{size:20})]),s(`ul`,_e,[(j(!0),u(c,null,x(o(a),e=>(j(),u(`li`,{key:e.code},[s(`button`,{class:i({"menu-active":o(t)===e.code}),onClick:t=>o(r)(e.code)},T(e.name),11,ve)]))),128))])]))}}),be=Object.assign(ye,{__name:`LangSwitcher`}),xe=[`data-theme`],Se=[`onClick`],Ce=e({__name:`ThemeSwitcher`,setup(e){let t=I(),n=P(null),r=P(null),a=P(!1),{floatingStyles:l}=Y(n,r,{placement:`top`,middleware:[ae(10),J(),X({padding:8})],whileElementsMounted:Z});function f(){a.value=!a.value}function p(e){t.curTheme=e,document.documentElement.setAttribute(`data-theme`,e),a.value=!1}function g(e){let t=e.target;!n.value?.contains(t)&&!r.value?.contains(t)&&(a.value=!1)}return b(()=>{document.addEventListener(`click`,g)}),D(()=>{document.removeEventListener(`click`,g)}),(e,g)=>(j(),u(`div`,null,[s(`button`,{ref_key:`reference`,ref:n,class:`btn btn-circle btn-sm btn-primary`,onClick:v(f,[`stop`])},[h(o(te))],512),(j(),d(_,{to:`body`},[o(a)?(j(),u(`ul`,{key:0,ref_key:`floating`,ref:r,style:m(o(l)),class:`menu z-70 max-h-64 w-40 flex-nowrap overflow-y-auto rounded-box bg-base-300 p-2 shadow-lg`},[(j(!0),u(c,null,x(o(F),e=>(j(),u(`li`,{key:e,"data-theme":e,class:`rounded-btn`},[s(`button`,{class:i([`btn justify-start btn-xs`,{"btn-active":o(t).curTheme===e}]),onClick:t=>p(e)},T(e),11,Se)],8,xe))),128))],4)):k(``,!0)]))]))}}),we=Object.assign(Ce,{__name:`ThemeSwitcher`}),Te={class:`mx-2 mb-2 overflow-hidden rounded-2xl border border-base-content/10 bg-base-300/90 shadow-lg backdrop-blur-md`},Ee={class:`grid h-16 grid-cols-6`},De={class:`sr-only`},Oe=e({__name:`MobileBottomNav`,props:{navItems:{}},setup(e){let t=p(),n=e=>t.path===e,r=P(!1);b(()=>{a(),window.addEventListener(`resize`,a),requestAnimationFrame(()=>{r.value=!0})}),D(()=>{document.body.style.paddingBottom=`0`,window.removeEventListener(`resize`,a)});function a(){document.body.style.paddingBottom=window.innerWidth<1024?`4.5rem`:`0`}return(t,a)=>{let l=g;return j(),u(`nav`,{"aria-label":`Mobile bottom navigation`,class:i([`fixed inset-x-0 bottom-0 z-50 transform transition-all duration-500 ease-out lg:hidden`,[o(r)?`translate-y-0 opacity-100`:`translate-y-full opacity-0`]])},[s(`div`,Te,[s(`div`,Ee,[(j(!0),u(c,null,x(e.navItems,e=>(j(),d(l,{key:e.href,to:e.href,class:i([`group relative flex flex-col items-center justify-center gap-0.5 transition-all duration-300`,[n(e.href)?`text-primary`:`text-base-content/60 hover:text-base-content active:scale-90`]])},{default:C(()=>[s(`div`,{class:i([`absolute inset-1 rounded-xl transition-all duration-300`,[n(e.href)?`bg-primary/10`:`bg-transparent group-hover:bg-base-content/5`]])},null,2),s(`div`,{class:i([`absolute top-1 h-1 rounded-full bg-primary transition-all duration-300`,[n(e.href)?`w-8 opacity-100`:`w-0 opacity-0`]])},null,2),s(`div`,{class:i([`relative z-10 transition-all duration-300`,[n(e.href)?`scale-110 text-xl`:`scale-100 text-lg group-hover:scale-105`]])},[(j(),d(M(e.icon)))],2),s(`span`,De,T(`Navigate to ${e.name}`),1),s(`span`,{"aria-hidden":`true`,class:i([`relative z-10 text-[10px] font-medium transition-all duration-300`,[n(e.href)?`translate-y-0 opacity-100`:`translate-y-0 opacity-80 group-hover:opacity-100 group-focus-visible:opacity-100`]])},T(e.name),3)]),_:2},1032,[`to`,`class`]))),128))])])],2)}}}),ke=Object.assign(Oe,{__name:`MobileBottomNav`}),Ae={class:`drawer-content flex h-full flex-col`},je={class:`z-50 flex h-14 w-full shrink-0 items-center gap-2 bg-base-300 px-2 shadow-lg sm:px-4 lg:hidden`},Me={key:0,for:`main-drawer`,class:`btn btn-ghost btn-sm`,"aria-label":`open sidebar`},Ne={class:`min-w-0 shrink`},Pe={class:`ml-auto flex shrink-0 items-center gap-1`},Fe={class:`flex min-h-0 flex-1 flex-col p-2 sm:p-4`},Ie={key:0,class:`drawer-side z-60`},Le={class:`flex shrink-0 flex-col gap-2 border-b border-base-content/10 p-3`},Re={class:`menu w-full flex-1 gap-1 px-2`},ze=e({__name:`Sidebar`,setup(e){let n=p(),{t:r}=N(),a=I(),l=y(()=>[{href:`/overview`,name:r(`overview`),icon:ee},{href:`/proxies`,name:r(`proxies`),icon:V},{href:`/rules`,name:r(`rules`),icon:U},{href:`/connections`,name:r(`connections`),icon:K},{href:`/logs`,name:r(`logs`),icon:R},{href:`/config`,name:r(`config`),icon:G}]),f=e=>n.path===e,m=P(null);S(()=>n.path,()=>{m.value&&(m.value.checked=!1)});let _=()=>{a.sidebarExpanded=!a.sidebarExpanded};return(e,p)=>{let v=me,y=be,b=we,S=g,w=Q,D=ke;return j(),u(`div`,{class:i([`drawer h-full`,{"lg:drawer-open":o(n).path!==`/setup`}])},[s(`input`,{id:`main-drawer`,ref_key:`drawerCheckbox`,ref:m,type:`checkbox`,class:`drawer-toggle`},null,512),s(`div`,Ae,[s(`header`,je,[o(n).path!==`/setup`&&!o(a).useMobileBottomNav?(j(),u(`label`,Me,[h(o(ie),{class:`size-5`})])):k(``,!0),s(`div`,Ne,[h(v)]),s(`div`,Pe,[p[0]||=s(`div`,{id:`header-traffic-indicator`,class:`flex items-center`},null,-1),h(y),h(b)])]),s(`div`,Fe,[E(e.$slots,`default`)])]),o(n).path===`/setup`?k(``,!0):(j(),u(`div`,Ie,[p[1]||=s(`label`,{for:`main-drawer`,"aria-label":`close sidebar`,class:`drawer-overlay`},null,-1),s(`div`,{class:i([`flex h-full w-52 flex-col bg-base-200 transition-all duration-300`,o(a).sidebarExpanded?``:`lg:w-16`])},[s(`div`,Le,[s(`div`,{class:i([`flex items-center`,o(a).sidebarExpanded?``:`lg:justify-center`])},[O(h(v,{class:`lg:block`},null,512),[[t,o(a).sidebarExpanded]]),h(v,{class:`lg:hidden`})],2),s(`button`,{class:i([`btn hidden w-full btn-ghost btn-sm lg:flex`,o(a).sidebarExpanded?``:`lg:btn-square`]),onClick:_},[o(a).sidebarExpanded?(j(),d(o(z),{key:1,class:`size-5`})):(j(),d(o(W),{key:0,class:`size-5`})),s(`span`,{class:i(o(a).sidebarExpanded?``:`lg:hidden`)},T(o(r)(`collapse`)),3)],2)]),s(`ul`,Re,[(j(!0),u(c,null,x(o(l),e=>(j(),u(`li`,{key:e.href,class:`w-full`},[h(S,{to:e.href,class:i([`flex w-full items-center gap-3`,[{"menu-active":f(e.href)},o(a).sidebarExpanded?``:`lg:justify-center lg:px-0`]]),title:o(a).sidebarExpanded?void 0:e.name},{default:C(()=>[(j(),d(M(e.icon),{class:`size-5 shrink-0`})),s(`span`,{class:i(o(a).sidebarExpanded?``:`lg:hidden`)},T(e.name),3)]),_:2},1032,[`to`,`class`,`title`])]))),128))]),s(`div`,{class:i([`shrink-0 border-t border-base-content/10 p-2`,o(a).sidebarExpanded?``:`lg:flex lg:flex-col lg:items-center`])},[s(`div`,{id:`sidebar-traffic-expanded`,class:i([`mb-2 hidden w-full`,o(a).sidebarExpanded?`lg:block`:``])},null,2),s(`div`,{id:`sidebar-traffic-indicator`,class:i([`mb-2 hidden w-full lg:block`,o(a).sidebarExpanded?`lg:hidden`:``])},null,2),s(`div`,{class:i([`mb-2 hidden items-center gap-1`,o(a).sidebarExpanded?`lg:flex`:`lg:flex lg:flex-col`])},[h(y),h(b)],2),h(w,{collapsed:!o(a).sidebarExpanded},null,8,[`collapsed`])],2)],2)])),o(a).useMobileBottomNav&&o(n).path!==`/setup`?(j(),d(D,{key:1,"nav-items":o(l)},null,8,[`nav-items`])):k(``,!0)],2)}}}),Be=Object.assign(ze,{__name:`Sidebar`});const Ve=globalThis.setInterval;function He(){let e=n(),t=se(),r=L(),i=le(),a=I(),o=null,s=null,c=null,l=null,u=null,d=(t,n)=>{let r=e.currentEndpoint;if(!r)return null;let i=e.wsEndpointURL,a=r.secret,o=new URLSearchParams;a&&o.set(`token`,a);let s=new WebSocket(`${i}/${t}?${o.toString()}`);return s.onmessage=e=>{try{n(JSON.parse(e.data))}catch{}},s.onerror=e=>{console.error(`WebSocket error for ${t}:`,e)},s};return{connect:()=>{if($()){let e=oe();t.updateFromWsMsg({connections:e.mockConnections,uploadTotal:e.mockTrafficStats.up,downloadTotal:e.mockTrafficStats.down}),r.setLatestTraffic(e.mockTrafficStats),r.setLatestMemory(e.mockMemory);let n=Date.now(),a=e.mockConnections.length;for(let t=30;t>=0;t--){let i=n-t*1e3,o=e.mockTrafficStats.down+Math.floor(Math.random()*1e5)-5e4,s=e.mockTrafficStats.up+Math.floor(Math.random()*2e4)-1e4,c=e.mockMemory.inuse+Math.floor(Math.random()*5e6)-25e5,l=a+Math.floor(Math.random()*10)-5;r.addTrafficDataPoint(i,o,s),r.addMemoryDataPoint(i,c),r.addConnectionCountDataPoint(i,l)}e.mockLogs.forEach(e=>{i.addLog(e)}),u=Ve(()=>{let t=Date.now(),n={up:e.mockTrafficStats.up+Math.floor(Math.random()*1e4),down:e.mockTrafficStats.down+Math.floor(Math.random()*5e4)};r.setLatestTraffic(n),r.addTrafficDataPoint(t,n.down,n.up);let i={inuse:e.mockMemory.inuse+Math.floor(Math.random()*5e6)-25e5,oslimit:e.mockMemory.oslimit};r.setLatestMemory(i),r.addMemoryDataPoint(t,i.inuse);let a=e.mockConnections.length+Math.floor(Math.random()*10)-5;r.addConnectionCountDataPoint(t,a)},1e3);return}o=d(`connections`,e=>{let n=e;if(t.updateFromWsMsg(n),n){let e=n.connections?.length??0;r.addConnectionCountDataPoint(Date.now(),e)}}),s=d(`traffic`,e=>{let t=e;r.setLatestTraffic(t),r.addTrafficDataPoint(Date.now(),t.down,t.up)}),c=d(`memory`,e=>{let t=e;r.setLatestMemory(t),r.addMemoryDataPoint(Date.now(),t.inuse)});let n=e.currentEndpoint;if(n){let t=e.wsEndpointURL,r=new URLSearchParams;n.secret&&r.set(`token`,n.secret),r.set(`level`,a.logLevel),l=new WebSocket(`${t}/logs?${r.toString()}`),l.onmessage=e=>{try{let t=JSON.parse(e.data);i.addLog(t)}catch{}}}},disconnect:()=>{u&&=(clearInterval(u),null),o?.close(),s?.close(),c?.close(),l?.close(),o=null,s=null,c=null,l=null},reconnectLogs:()=>{l?.close();let t=e.currentEndpoint;if(t){let n=e.wsEndpointURL,r=new URLSearchParams;t.secret&&r.set(`token`,t.secret),r.set(`level`,a.logLevel),l=new WebSocket(`${n}/logs?${r.toString()}`),l.onmessage=e=>{try{let t=JSON.parse(e.data);i.addLog(t)}catch{}}}}}}var Ue={class:`hidden`},We=e({__name:`ProtectedResources`,setup(e){let{connect:t,disconnect:n,reconnectLogs:r}=He(),i=I();return b(()=>{t()}),D(()=>{n()}),S(()=>i.logLevel,()=>{r()}),(e,t)=>(j(),u(`div`,Ue))}}),Ge=Object.assign(We,{__name:`ProtectedResources`}),Ke=f(ue(),1),qe={class:`flex items-center gap-1`},Je={class:`font-mono text-xs`},Ye={class:`flex items-center gap-1`},Xe={class:`font-mono text-xs`},Ze={class:`flex items-center justify-center gap-1`},Qe={class:`font-mono text-xs`},$e={class:`flex items-center justify-center gap-1`},et={class:`font-mono text-xs`},tt={key:0,class:`rounded-btn w-full bg-base-100/50 p-2`},nt={class:`grid grid-cols-2 gap-1 text-xs`},rt={class:`flex items-center gap-1`},it={class:`truncate font-mono`},at={class:`flex items-center gap-1`},ot={class:`truncate font-mono`},st={class:`flex items-center gap-1`},ct={class:`font-mono text-xs`},lt={class:`flex items-center gap-1`},ut={class:`font-mono text-xs`},dt=[`title`],ft={class:`flex flex-col gap-2 p-3`},pt={class:`flex items-center justify-between gap-2`},mt={class:`text-xs font-semibold uppercase opacity-60`},ht={class:`flex items-center gap-1`},gt=[`title`],_t=[`title`],vt={class:`grid grid-cols-2 gap-x-4 gap-y-1 text-xs`},yt={class:`flex items-center gap-1.5`},bt={class:`font-mono font-medium`},xt={class:`flex items-center gap-1.5`},St={class:`font-mono font-medium`},Ct={class:`flex items-center gap-1.5 opacity-70`},wt={class:`font-mono`},Tt={class:`flex items-center gap-1.5 opacity-70`},Et={class:`font-mono`},Dt=e({__name:`GlobalTrafficIndicator`,setup(e){let t=L(),n=se(),r=I(),f=a(`globalTrafficIndicatorVisible`,!0),p=a(`globalTrafficIndicatorCollapsed`,!0),g=a(`globalTrafficIndicatorPosition`,{x:-1,y:-1}),v=P(!1),x=P({x:0,y:0}),E=P(null),D=P(null),O,M=y(()=>t.latestTraffic?.down??0),N=y(()=>t.latestTraffic?.up??0),F=y(()=>t.latestMemory?.inuse??0),R=y(()=>n.latestConnectionMsg?.connections?.length??0),z=e=>ce(e).toString(),ee=y(()=>g.value.x===-1||g.value.y===-1?{right:`16px`,bottom:`16px`}:{left:`${g.value.x}px`,top:`${g.value.y}px`});function V(){f.value=!f.value}function te(){p.value=!p.value}function H(){p.value=!1,g.value={x:-1,y:-1}}function U(e){if(!E.value)return;v.value=!0;let t=E.value.getBoundingClientRect(),n=`touches`in e?e.touches[0].clientX:e.clientX,r=`touches`in e?e.touches[0].clientY:e.clientY;x.value={x:n-t.left,y:r-t.top},g.value.x===-1&&(g.value.x=t.left,g.value.y=t.top),document.addEventListener(`mousemove`,W),document.addEventListener(`mouseup`,G),document.addEventListener(`touchmove`,W),document.addEventListener(`touchend`,G)}function W(e){if(!v.value)return;let t=`touches`in e?e.touches[0].clientX:e.clientX,n=`touches`in e?e.touches[0].clientY:e.clientY,r=t-x.value.x,i=n-x.value.y,a=E.value?.getBoundingClientRect(),o=a?.width||200,s=a?.height||150;r=Math.max(0,Math.min(window.innerWidth-o,r)),i=Math.max(0,Math.min(window.innerHeight-s,i)),g.value.x=r,g.value.y=i}function G(){v.value&&(v.value=!1,document.removeEventListener(`mousemove`,W),document.removeEventListener(`mouseup`,G),document.removeEventListener(`touchmove`,W),document.removeEventListener(`touchend`,G))}function K(){if(!D.value)return;O&&=(O.destroy(),void 0);let e=de(),n=D.value.offsetWidth||200;O=Ke.default.chart(D.value,{chart:{type:`areaspline`,backgroundColor:`transparent`,spacing:[0,0,0,0],margin:[0,0,0,0],animation:!1,width:n,height:48},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:void 0},legend:{enabled:!1},xAxis:{visible:!1,type:`datetime`},yAxis:{visible:!1,min:0},tooltip:{enabled:!1},plotOptions:{areaspline:{lineWidth:1.5,marker:{enabled:!1},fillOpacity:.2,animation:!1}},series:[{type:`areaspline`,name:`Download`,color:e.seriesColors[0],data:t.trafficChartHistory.download.length>0?[...t.trafficChartHistory.download].slice(-30):[[Date.now(),0]]},{type:`areaspline`,name:`Upload`,color:e.seriesColors[1],data:t.trafficChartHistory.upload.length>0?[...t.trafficChartHistory.upload].slice(-30):[[Date.now(),0]]}]})}function ie(){if(!O)return;let e=[...t.trafficChartHistory.download].slice(-30),n=[...t.trafficChartHistory.upload].slice(-30);O.series[0]?.setData(e,!1),O.series[1]?.setData(n,!0)}function ae(){if(!$)return;let e=[...t.trafficChartHistory.download].slice(-30),n=[...t.trafficChartHistory.upload].slice(-30);$.series[0]?.setData(e,!1),$.series[1]?.setData(n,!0)}function J(){if(!Q.value)return;$&&=($.destroy(),void 0);let e=de();$=Ke.default.chart(Q.value,{chart:{type:`areaspline`,backgroundColor:`transparent`,spacing:[0,0,0,0],margin:[0,0,0,0],animation:!1,height:40},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:void 0},legend:{enabled:!1},xAxis:{visible:!1,type:`datetime`},yAxis:{visible:!1,min:0},tooltip:{enabled:!1},plotOptions:{areaspline:{lineWidth:1.5,marker:{enabled:!1},fillOpacity:.2,animation:!1}},series:[{type:`areaspline`,name:`Download`,color:e.seriesColors[0],data:t.trafficChartHistory.download.length>0?[...t.trafficChartHistory.download].slice(-30):[[Date.now(),0]]},{type:`areaspline`,name:`Upload`,color:e.seriesColors[1],data:t.trafficChartHistory.upload.length>0?[...t.trafficChartHistory.upload].slice(-30):[[Date.now(),0]]}]})}S(()=>t.latestTraffic,e=>{e&&(O?ie():D.value&&f.value&&!p.value&&K(),$?ae():Q.value&&J())}),S(()=>r.curTheme,()=>{D.value&&!p.value&&f.value&&K(),Q.value&&J()}),S(p,e=>{!e&&f.value?A(()=>{setTimeout(()=>{D.value&&t.latestTraffic&&K()},50)}):e&&O&&(O.destroy(),O=void 0)}),S(f,e=>{e&&!p.value?A(()=>{setTimeout(()=>{D.value&&t.latestTraffic&&K()},50)}):!e&&O&&(O.destroy(),O=void 0)}),S(()=>r.sidebarExpanded,e=>{e&&A(()=>{setTimeout(()=>{Q.value&&t.latestTraffic&&J()},100)})});let Y=P(!1),X=P(!1),Z=P(!1),Q=P(null),$;return b(()=>{A(()=>{Y.value=!!document.getElementById(`header-traffic-indicator`),X.value=!!document.getElementById(`sidebar-traffic-indicator`),Z.value=!!document.getElementById(`sidebar-traffic-expanded`)}),f.value&&!p.value&&t.latestTraffic&&setTimeout(()=>{D.value&&K()},100),t.latestTraffic&&setTimeout(()=>{Q.value&&J()},150)}),w(()=>{O&&=(O.destroy(),void 0),$&&=($.destroy(),void 0)}),(e,n)=>(j(),u(c,null,[o(Y)?(j(),d(_,{key:0,to:`#header-traffic-indicator`},[o(f)&&o(p)&&o(t).latestTraffic?(j(),u(`div`,{key:0,class:`rounded-btn flex cursor-pointer items-center gap-2 bg-base-100/50 px-2 py-1 transition-colors hover:bg-base-100`,onClick:H},[s(`div`,qe,[h(o(q),{class:`size-3 text-success`}),s(`span`,Je,T(z(o(M)))+`/s`,1)]),n[0]||=s(`div`,{class:`h-3 w-px bg-base-content/20`},null,-1),s(`div`,Ye,[h(o(B),{class:`size-3 text-info`}),s(`span`,Xe,T(z(o(N)))+`/s`,1)])])):k(``,!0)])):k(``,!0),o(X)?(j(),d(_,{key:1,to:`#sidebar-traffic-indicator`},[o(t).latestTraffic?(j(),u(`div`,{key:0,class:`rounded-btn w-full cursor-pointer bg-base-100/50 px-2 py-2 transition-colors hover:bg-base-100`,onClick:H},[s(`div`,Ze,[h(o(q),{class:`size-3 text-success`}),s(`span`,Qe,T(z(o(M)))+`/s`,1)]),s(`div`,$e,[h(o(B),{class:`size-3 text-info`}),s(`span`,et,T(z(o(N)))+`/s`,1)])])):k(``,!0)])):k(``,!0),o(Z)?(j(),d(_,{key:2,to:`#sidebar-traffic-expanded`},[o(t).latestTraffic?(j(),u(`div`,tt,[s(`div`,{ref_key:`sidebarChartContainer`,ref:Q,class:`mb-2 h-10 w-full`},null,512),s(`div`,nt,[s(`div`,rt,[h(o(q),{class:`size-3 shrink-0 text-success`}),s(`span`,it,T(z(o(M)))+`/s`,1)]),s(`div`,at,[h(o(B),{class:`size-3 shrink-0 text-info`}),s(`span`,ot,T(z(o(N)))+`/s`,1)])])])):k(``,!0)])):k(``,!0),o(f)&&o(p)&&o(t).latestTraffic&&!o(Y)&&!o(X)?(j(),u(`div`,{key:3,class:`fixed right-4 bottom-4 z-50 flex cursor-pointer items-center gap-2 rounded-box bg-base-200 px-3 py-2 shadow-lg`,onClick:H},[s(`div`,st,[h(o(q),{class:`size-3 text-success`}),s(`span`,ct,T(z(o(M)))+`/s`,1)]),n[1]||=s(`div`,{class:`h-3 w-px bg-base-content/20`},null,-1),s(`div`,lt,[h(o(B),{class:`size-3 text-info`}),s(`span`,ut,T(z(o(N)))+`/s`,1)])])):k(``,!0),o(f)?k(``,!0):(j(),u(`button`,{key:4,class:`btn fixed right-4 bottom-4 z-50 btn-circle shadow-lg btn-sm btn-primary`,title:e.$t(`showTrafficIndicator`),onClick:V},[h(o(B),{class:`size-4`})],8,dt)),h(l,{"enter-active-class":`transition-all duration-300 ease-out`,"enter-from-class":`opacity-0 scale-95`,"enter-to-class":`opacity-100 scale-100`,"leave-active-class":`transition-all duration-200 ease-in`,"leave-from-class":`opacity-100 scale-100`,"leave-to-class":`opacity-0 scale-95`},{default:C(()=>[o(f)&&!o(p)&&o(t).latestTraffic?(j(),u(`div`,{key:0,ref_key:`containerRef`,ref:E,class:i([`fixed z-50 min-w-56 rounded-box bg-base-200 shadow-lg select-none`,{"cursor-grabbing":o(v)}]),style:m(o(ee))},[s(`div`,ft,[s(`div`,pt,[s(`div`,{class:`flex cursor-grab items-center gap-1 active:cursor-grabbing`,onMousedown:U,onTouchstart:U},[h(o(re),{class:`size-4 opacity-40`}),s(`span`,mt,T(e.$t(`traffic`)),1)],32),s(`div`,ht,[s(`button`,{class:`btn btn-circle btn-ghost btn-xs`,title:e.$t(`hideTrafficIndicator`),onClick:te},[...n[2]||=[s(`span`,{class:`text-xs`},`−`,-1)]],8,gt),s(`button`,{class:`btn btn-circle btn-ghost btn-xs`,title:e.$t(`hideTrafficIndicator`),onClick:V},[h(o(ne),{class:`size-3`})],8,_t)])]),s(`div`,{ref_key:`chartContainer`,ref:D,class:`h-12 w-full`},null,512),s(`div`,vt,[s(`div`,yt,[h(o(q),{class:`size-3 text-success`}),s(`span`,bt,T(z(o(M)))+`/s `,1)]),s(`div`,xt,[h(o(B),{class:`size-3 text-info`}),s(`span`,St,T(z(o(N)))+`/s `,1)]),s(`div`,Ct,[s(`span`,null,T(e.$t(`memory`))+`:`,1),s(`span`,wt,T(z(o(F))),1)]),s(`div`,Tt,[s(`span`,null,T(e.$t(`connections`))+`:`,1),s(`span`,Et,T(o(R)),1)])])])],6)):k(``,!0)]),_:1})],64))}}),Ot=Object.assign(Dt,{__name:`GlobalTrafficIndicator`}),kt=[`data-theme`],At=e({__name:`default`,setup(e){let t=I(),a=n(),s=L(),c=P(null);S(c,e=>{e&&(s.rootElement=e)}),S([()=>t.autoSwitchTheme,r()],([e,n])=>{e&&(t.curTheme=n?t.favNightTheme:t.favDayTheme)},{immediate:!0}),S(()=>t.curTheme,e=>{document.documentElement.setAttribute(`data-theme`,e)},{immediate:!0});let l=y(()=>$()||!!a.currentEndpoint);return(e,n)=>{let r=Be,a=Ge,s=Ot;return j(),u(`div`,{ref_key:`rootElement`,ref:c,class:i([`relative h-screen overscroll-y-none bg-base-100 subpixel-antialiased`,o(t).enableTwemoji?`font-twemoji`:`font-default`]),"data-theme":o(t).curTheme},[h(r,null,{default:C(()=>[E(e.$slots,`default`)]),_:3}),o(l)?(j(),d(a,{key:0})):k(``,!0),o(l)?(j(),d(s,{key:1})):k(``,!0)],10,kt)}}});export{At as default};
\ No newline at end of file
diff --git a/dashboard/public/_nuxt/QKDRT3JW.js b/dashboard/public/_nuxt/CEumzr83.js
similarity index 99%
rename from dashboard/public/_nuxt/QKDRT3JW.js
rename to dashboard/public/_nuxt/CEumzr83.js
index 3a8d7f6..d71f37e 100644
--- a/dashboard/public/_nuxt/QKDRT3JW.js
+++ b/dashboard/public/_nuxt/CEumzr83.js
@@ -1 +1 @@
-import{Et as e,St as t,W as n,dt as r,gt as i,mt as a,xt as o,yt as s}from"./B99QpFu8.js";var c=Math.min,l=Math.max,u=Math.round,d=Math.floor,f=e=>({x:e,y:e}),p={left:`right`,right:`left`,bottom:`top`,top:`bottom`},m={start:`end`,end:`start`};function h(e,t,n){return l(e,c(t,n))}function g(e,t){return typeof e==`function`?e(t):e}function _(e){return e.split(`-`)[0]}function v(e){return e.split(`-`)[1]}function y(e){return e===`x`?`y`:`x`}function b(e){return e===`y`?`height`:`width`}var x=new Set([`top`,`bottom`]);function S(e){return x.has(_(e))?`y`:`x`}function C(e){return y(S(e))}function ee(e,t,n){n===void 0&&(n=!1);let r=v(e),i=C(e),a=b(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=A(o)),[o,A(o)]}function w(e){let t=A(e);return[T(e),t,T(t)]}function T(e){return e.replace(/start|end/g,e=>m[e])}var E=[`left`,`right`],D=[`right`,`left`],O=[`top`,`bottom`],k=[`bottom`,`top`];function te(e,t,n){switch(e){case`top`:case`bottom`:return n?t?D:E:t?E:D;case`left`:case`right`:return t?O:k;default:return[]}}function ne(e,t,n,r){let i=v(e),a=te(_(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(T)))),a}function A(e){return e.replace(/left|right|bottom|top/g,e=>p[e])}function j(e){return{top:0,right:0,bottom:0,left:0,...e}}function re(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:j(e)}function M(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function N(e,t,n){let{reference:r,floating:i}=e,a=S(t),o=C(t),s=b(o),c=_(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(v(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}var P=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=a.filter(Boolean),c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=N(l,r,c),f=r,p={},m=0;for(let n=0;n1){s=a;let e=l[s],r=e===void 0?void 0:c[e];u=r?r.end+this.options.gap:t+n}else{let e=this.options.lanes===1?c[i-1]:this.getFurthestMeasurement(c,i);u=e?e.end+this.options.gap:t+n,s=e?e.lane:i%this.options.lanes,this.options.lanes>1&&this.laneAssignments.set(i,s)}let d=o.get(e),f=typeof d==`number`?d:this.options.estimateSize(i),p=u+f;c[i]={index:i,start:u,size:f,end:p,key:e,lane:s},l[s]=i}return this.measurementsCache=c,c},{key:!1,debug:()=>this.options.debug}),this.calculateRange=O(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>this.range=e.length>0&&t>0?U({measurements:e,outerSize:t,scrollOffset:n,lanes:r}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=O(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this._measureElement=(e,t)=>{let n=this.indexFromElement(e),r=this.measurementsCache[n];if(!r)return;let i=r.key,a=this.elementsCache.get(i);a!==e&&(a&&this.observer.unobserve(a),this.observer.observe(e),this.elementsCache.set(i,e)),e.isConnected&&this.resizeItem(n,this.options.measureElement(e,t,this))},this.resizeItem=(e,t)=>{let n=this.measurementsCache[e];if(!n)return;let r=t-(this.itemSizeCache.get(n.key)??n.size);r!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange===void 0?n.start32))return a;if(r===41){if(o===0)break;o--}i++}return t===i||o!==0?a:(a.str=F(e.slice(t,i)),a.pos=i,a.ok=!0,a)}function vt(e,t,n,r){let i,a=t,o={ok:!1,can_continue:!1,pos:0,str:``,marker:0};if(r)o.str=r.str,o.marker=r.marker;else{if(a>=n)return o;let r=e.charCodeAt(a);if(r!==34&&r!==39&&r!==40)return o;t++,a++,r===40&&(r=41),o.marker=r}for(;a`+I(a.content)+``},V.code_block=function(e,t,n,r,i){let a=e[t];return`
`},V.fence=function(e,t,n,r,i){let a=e[t],o=a.info?F(a.info).trim():``,s=``,c=``;if(o){let e=o.split(/(\s+)/g);s=e[0],c=e.slice(2).join(``)}let l;if(l=n.highlight&&n.highlight(a.content,s,c)||I(a.content),l.indexOf(``+I(e[t].content)+`
\n`}return`${l}
\n`},V.image=function(e,t,n,r,i){let a=e[t];return a.attrs[a.attrIndex(`alt`)][1]=i.renderInlineAsText(a.children,n,r),i.renderToken(e,t,n)},V.hardbreak=function(e,t,n){return n.xhtmlOut?`${l}
diff --git a/dashboard/public/_nuxt/izVbzk-g.js b/dashboard/public/_nuxt/Bk2nYVL8.js
similarity index 98%
rename from dashboard/public/_nuxt/izVbzk-g.js
rename to dashboard/public/_nuxt/Bk2nYVL8.js
index b9c6a24..ad88f8b 100644
--- a/dashboard/public/_nuxt/izVbzk-g.js
+++ b/dashboard/public/_nuxt/Bk2nYVL8.js
@@ -1 +1 @@
-import{Ct as e,W as t,_ as n,_t as r,a as i,b as a,bt as o,c as s,d as c,dt as l,f as u,g as d,gt as f,h as p,i as m,l as h,m as g,n as _,nt as v,o as y,p as b,r as x,s as S,t as C,tt as w,u as T,v as E,vt as D,xt as O,y as k}from"./CwRUcIL4.js";import{_ as A}from"./DQ_xW1ii.js";var j=class extends a{constructor(e,t){super(),this.options=t,this.#e=e,this.#s=null,this.#o=S(),this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),N(this.#t,this.options)?this.#h():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return P(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return P(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof g(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!d(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&F(this.#t,n,this.options,t)&&this.#h(),this.updateResult(),r&&(this.#t!==n||g(this.options.enabled,this.#t)!==g(t.enabled,this.#t)||p(this.options.staleTime,this.#t)!==p(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||g(this.options.enabled,this.#t)!==g(t.enabled,this.#t)||i!==this.#p)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return L(this,n)&&(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),n===`promise`&&(this.trackProp(`data`),!this.options.experimental_prefetchInRender&&this.#o.status===`pending`&&this.#o.reject(Error(`experimental_prefetchInRender feature flag is not enabled`))),Reflect.get(e,n))})}trackProp(e){this.#m.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t);return n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#h({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#h(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(u)),t}#g(){this.#b();let e=p(this.options.staleTime,this.#t);if(T||this.#r.isStale||!c(e))return;let t=E(this.#r.dataUpdatedAt,e)+1;this.#d=k.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#p=e,!(T||g(this.options.enabled,this.#t)===!1||!c(this.#p)||this.#p===0)&&(this.#f=k.setInterval(()=>{(this.options.refetchIntervalInBackground||s.isFocused())&&this.#h()},this.#p))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#d&&=(k.clearTimeout(this.#d),void 0)}#x(){this.#f&&=(k.clearInterval(this.#f),void 0)}createResult(e,t){let n=this.#t,r=this.options,a=this.#r,o=this.#i,s=this.#a,c=e===n?this.#n:e.state,{state:l}=e,u={...l},d=!1,f;if(t._optimisticResults){let a=this.hasListeners(),o=!a&&N(e,t),s=a&&F(e,n,t,r);(o||s)&&(u={...u,...i(l.data,e.options)}),t._optimisticResults===`isRestoring`&&(u.fetchStatus=`idle`)}let{error:p,errorUpdatedAt:m,status:h}=u;f=u.data;let _=!1;if(t.placeholderData!==void 0&&f===void 0&&h===`pending`){let e;a?.isPlaceholderData&&t.placeholderData===s?.placeholderData?(e=a.data,_=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#u?.state.data,this.#u):t.placeholderData,e!==void 0&&(h=`success`,f=b(a?.data,e,t),d=!0)}if(t.select&&f!==void 0&&!_)if(a&&f===o?.data&&t.select===this.#c)f=this.#l;else try{this.#c=t.select,f=t.select(f),f=b(a?.data,f,t),this.#l=f,this.#s=null}catch(e){this.#s=e}this.#s&&(p=this.#s,f=this.#l,m=Date.now(),h=`error`);let v=u.fetchStatus===`fetching`,y=h===`pending`,x=h===`error`,C=y&&v,w=f!==void 0,T={status:h,fetchStatus:u.fetchStatus,isPending:y,isSuccess:h===`success`,isError:x,isInitialLoading:C,isLoading:C,data:f,dataUpdatedAt:u.dataUpdatedAt,error:p,errorUpdatedAt:m,failureCount:u.fetchFailureCount,failureReason:u.fetchFailureReason,errorUpdateCount:u.errorUpdateCount,isFetched:u.dataUpdateCount>0||u.errorUpdateCount>0,isFetchedAfterMount:u.dataUpdateCount>c.dataUpdateCount||u.errorUpdateCount>c.errorUpdateCount,isFetching:v,isRefetching:v&&!y,isLoadingError:x&&!w,isPaused:u.fetchStatus===`paused`,isPlaceholderData:d,isRefetchError:x&&w,isStale:I(e,t),refetch:this.refetch,promise:this.#o,isEnabled:g(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){let t=e=>{T.status===`error`?e.reject(T.error):T.data!==void 0&&e.resolve(T.data)},r=()=>{t(this.#o=T.promise=S())},i=this.#o;switch(i.status){case`pending`:e.queryHash===n.queryHash&&t(i);break;case`fulfilled`:(T.status===`error`||T.data!==i.value)&&r();break;case`rejected`:(T.status!==`error`||T.error!==i.reason)&&r();break}}return T}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#u=this.#t),!d(t,e)&&(this.#r=t,this.#C({listeners:(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#m.size)return!0;let r=new Set(n??this.#m);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})()}))}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#C(e){y.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}};function M(e,t){return g(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status===`error`&&t.retryOnMount===!1)}function N(e,t){return M(e,t)||e.state.data!==void 0&&P(e,t,t.refetchOnMount)}function P(e,t,n){if(g(t.enabled,e)!==!1&&p(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&I(e,t)}return!1}function F(e,t,n,r){return(e!==t||g(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&I(e,n)}function I(e,t){return g(t.enabled,e)!==!1&&e.isStaleByTime(p(t.staleTime,e))}function L(e,t){return!d(e.getCurrentResult(),t)}var R=class extends a{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),d(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&h(t.mutationKey)!==h(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??m();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){y.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};e?.type===`success`?(this.#r.onSuccess?.(e.data,t,n,r),this.#r.onSettled?.(e.data,null,t,n,r)):e?.type===`error`&&(this.#r.onError?.(e.error,t,n,r),this.#r.onSettled?.(void 0,e.error,t,n,r))}this.listeners.forEach(e=>{e(this.#t)})})}};function z(e=``){if(!w())throw Error(`vue-query hooks can only be used inside setup() function or functions that support injection context.`);let t=v(_(e));if(!t)throw Error(`No 'queryClient' found in Vue context, use 'VueQueryPlugin' to properly initialize the library.`);return t}function B(i,a,s){let c=s||z(),u=t(()=>{let e=a;typeof e==`function`&&(e=e());let t=C(e);typeof t.enabled==`function`&&(t.enabled=t.enabled());let n=c.defaultQueryOptions(t);return n._optimisticResults=c.isRestoring?.value?`isRestoring`:`optimistic`,n}),d=new i(c,u.value),p=u.value.shallow?o(d.getCurrentResult()):r(d.getCurrentResult()),m=()=>{};c.isRestoring&&l(c.isRestoring,e=>{e||(m(),m=d.subscribe(e=>{x(p,e)}))},{immediate:!0});let h=()=>{d.setOptions(u.value),x(p,d.getCurrentResult())};l(u,h),f(()=>{m()});let g=(...e)=>(h(),p.refetch(...e)),_=()=>new Promise((e,t)=>{let r=()=>{},i=()=>{if(u.value.enabled!==!1){d.setOptions(u.value);let i=d.getOptimisticResult(u.value);i.isStale?(r(),d.fetchOptimistic(u.value).then(e,r=>{n(u.value.throwOnError,[r,d.getCurrentQuery()])?t(r):e(d.getCurrentResult())})):(r(),e(i))}};i(),r=l(u,i)});l(()=>p.error,e=>{if(p.isError&&!p.isFetching&&n(u.value.throwOnError,[e,d.getCurrentQuery()]))throw e});let v=e(u.value.shallow?O(p):D(p));for(let e in p)typeof p[e]==`function`&&(v[e]=p[e]);return v.suspense=_,v.refetch=g,v}function V(e,t){return B(j,e,t)}function H(i,a){let s=a||z(),c=t(()=>{let e=typeof i==`function`?i():i;return s.defaultMutationOptions(C(e))}),u=new R(s,c.value),d=c.value.shallow?o(u.getCurrentResult()):r(u.getCurrentResult()),p=u.subscribe(e=>{x(d,e)}),m=(e,t)=>{u.mutate(e,t).catch(()=>{})};l(c,()=>{u.setOptions(c.value)}),f(()=>{p()});let h=e(c.value.shallow?O(d):D(d));return l(()=>d.error,e=>{if(e&&n(c.value.throwOnError,[e]))throw e}),{...h,mutate:m,mutateAsync:d.mutate,reset:d.reset}}function U(){return A()}const W={proxies:[`proxies`],proxyProviders:[`proxy-providers`],rules:[`rules`],ruleProviders:[`rule-providers`],config:[`config`],version:[`version`]};function G(){return V({queryKey:W.rules,queryFn:async()=>{let{rules:e}=await U().get(`rules`).json();return Object.values(e)}})}function K(){return V({queryKey:W.ruleProviders,queryFn:async()=>{let{providers:e}=await U().get(`providers/rules`).json();return Object.values(e)}})}function q(){let e=z();return H({mutationFn:async e=>{await U().put(`providers/rules/${encodeURIComponent(e)}`)},onSuccess:()=>{e.invalidateQueries({queryKey:W.rules}),e.invalidateQueries({queryKey:W.ruleProviders})}})}function J(){return V({queryKey:W.config,queryFn:async()=>U().get(`configs`).json()})}function Y(){let e=z();return H({mutationFn:async({key:e,value:t})=>{await U().patch(`configs`,{json:{[e]:t}})},onSuccess:()=>{e.invalidateQueries({queryKey:W.config})}})}function X(){return V({queryKey:W.version,queryFn:async()=>{let{version:e}=await U().get(`version`).json();return e}})}export{q as a,Y as i,K as n,X as o,G as r,H as s,J as t};
\ No newline at end of file
+import{Ct as e,W as t,_ as n,_t as r,a as i,b as a,bt as o,c as s,d as c,dt as l,f as u,g as d,gt as f,h as p,i as m,l as h,m as g,n as _,nt as v,o as y,p as b,r as x,s as S,t as C,tt as w,u as T,v as E,vt as D,xt as O,y as k}from"./DB3QyUG1.js";import{_ as A}from"./A1BmUOM0.js";var j=class extends a{constructor(e,t){super(),this.options=t,this.#e=e,this.#s=null,this.#o=S(),this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),N(this.#t,this.options)?this.#h():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return P(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return P(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof g(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!d(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&F(this.#t,n,this.options,t)&&this.#h(),this.updateResult(),r&&(this.#t!==n||g(this.options.enabled,this.#t)!==g(t.enabled,this.#t)||p(this.options.staleTime,this.#t)!==p(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||g(this.options.enabled,this.#t)!==g(t.enabled,this.#t)||i!==this.#p)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return L(this,n)&&(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),n===`promise`&&(this.trackProp(`data`),!this.options.experimental_prefetchInRender&&this.#o.status===`pending`&&this.#o.reject(Error(`experimental_prefetchInRender feature flag is not enabled`))),Reflect.get(e,n))})}trackProp(e){this.#m.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t);return n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#h({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#h(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(u)),t}#g(){this.#b();let e=p(this.options.staleTime,this.#t);if(T||this.#r.isStale||!c(e))return;let t=E(this.#r.dataUpdatedAt,e)+1;this.#d=k.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#p=e,!(T||g(this.options.enabled,this.#t)===!1||!c(this.#p)||this.#p===0)&&(this.#f=k.setInterval(()=>{(this.options.refetchIntervalInBackground||s.isFocused())&&this.#h()},this.#p))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#d&&=(k.clearTimeout(this.#d),void 0)}#x(){this.#f&&=(k.clearInterval(this.#f),void 0)}createResult(e,t){let n=this.#t,r=this.options,a=this.#r,o=this.#i,s=this.#a,c=e===n?this.#n:e.state,{state:l}=e,u={...l},d=!1,f;if(t._optimisticResults){let a=this.hasListeners(),o=!a&&N(e,t),s=a&&F(e,n,t,r);(o||s)&&(u={...u,...i(l.data,e.options)}),t._optimisticResults===`isRestoring`&&(u.fetchStatus=`idle`)}let{error:p,errorUpdatedAt:m,status:h}=u;f=u.data;let _=!1;if(t.placeholderData!==void 0&&f===void 0&&h===`pending`){let e;a?.isPlaceholderData&&t.placeholderData===s?.placeholderData?(e=a.data,_=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#u?.state.data,this.#u):t.placeholderData,e!==void 0&&(h=`success`,f=b(a?.data,e,t),d=!0)}if(t.select&&f!==void 0&&!_)if(a&&f===o?.data&&t.select===this.#c)f=this.#l;else try{this.#c=t.select,f=t.select(f),f=b(a?.data,f,t),this.#l=f,this.#s=null}catch(e){this.#s=e}this.#s&&(p=this.#s,f=this.#l,m=Date.now(),h=`error`);let v=u.fetchStatus===`fetching`,y=h===`pending`,x=h===`error`,C=y&&v,w=f!==void 0,T={status:h,fetchStatus:u.fetchStatus,isPending:y,isSuccess:h===`success`,isError:x,isInitialLoading:C,isLoading:C,data:f,dataUpdatedAt:u.dataUpdatedAt,error:p,errorUpdatedAt:m,failureCount:u.fetchFailureCount,failureReason:u.fetchFailureReason,errorUpdateCount:u.errorUpdateCount,isFetched:u.dataUpdateCount>0||u.errorUpdateCount>0,isFetchedAfterMount:u.dataUpdateCount>c.dataUpdateCount||u.errorUpdateCount>c.errorUpdateCount,isFetching:v,isRefetching:v&&!y,isLoadingError:x&&!w,isPaused:u.fetchStatus===`paused`,isPlaceholderData:d,isRefetchError:x&&w,isStale:I(e,t),refetch:this.refetch,promise:this.#o,isEnabled:g(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){let t=e=>{T.status===`error`?e.reject(T.error):T.data!==void 0&&e.resolve(T.data)},r=()=>{t(this.#o=T.promise=S())},i=this.#o;switch(i.status){case`pending`:e.queryHash===n.queryHash&&t(i);break;case`fulfilled`:(T.status===`error`||T.data!==i.value)&&r();break;case`rejected`:(T.status!==`error`||T.error!==i.reason)&&r();break}}return T}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#u=this.#t),!d(t,e)&&(this.#r=t,this.#C({listeners:(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#m.size)return!0;let r=new Set(n??this.#m);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})()}))}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#C(e){y.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}};function M(e,t){return g(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status===`error`&&t.retryOnMount===!1)}function N(e,t){return M(e,t)||e.state.data!==void 0&&P(e,t,t.refetchOnMount)}function P(e,t,n){if(g(t.enabled,e)!==!1&&p(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&I(e,t)}return!1}function F(e,t,n,r){return(e!==t||g(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&I(e,n)}function I(e,t){return g(t.enabled,e)!==!1&&e.isStaleByTime(p(t.staleTime,e))}function L(e,t){return!d(e.getCurrentResult(),t)}var R=class extends a{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),d(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&h(t.mutationKey)!==h(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??m();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){y.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};e?.type===`success`?(this.#r.onSuccess?.(e.data,t,n,r),this.#r.onSettled?.(e.data,null,t,n,r)):e?.type===`error`&&(this.#r.onError?.(e.error,t,n,r),this.#r.onSettled?.(void 0,e.error,t,n,r))}this.listeners.forEach(e=>{e(this.#t)})})}};function z(e=``){if(!w())throw Error(`vue-query hooks can only be used inside setup() function or functions that support injection context.`);let t=v(_(e));if(!t)throw Error(`No 'queryClient' found in Vue context, use 'VueQueryPlugin' to properly initialize the library.`);return t}function B(i,a,s){let c=s||z(),u=t(()=>{let e=a;typeof e==`function`&&(e=e());let t=C(e);typeof t.enabled==`function`&&(t.enabled=t.enabled());let n=c.defaultQueryOptions(t);return n._optimisticResults=c.isRestoring?.value?`isRestoring`:`optimistic`,n}),d=new i(c,u.value),p=u.value.shallow?o(d.getCurrentResult()):r(d.getCurrentResult()),m=()=>{};c.isRestoring&&l(c.isRestoring,e=>{e||(m(),m=d.subscribe(e=>{x(p,e)}))},{immediate:!0});let h=()=>{d.setOptions(u.value),x(p,d.getCurrentResult())};l(u,h),f(()=>{m()});let g=(...e)=>(h(),p.refetch(...e)),_=()=>new Promise((e,t)=>{let r=()=>{},i=()=>{if(u.value.enabled!==!1){d.setOptions(u.value);let i=d.getOptimisticResult(u.value);i.isStale?(r(),d.fetchOptimistic(u.value).then(e,r=>{n(u.value.throwOnError,[r,d.getCurrentQuery()])?t(r):e(d.getCurrentResult())})):(r(),e(i))}};i(),r=l(u,i)});l(()=>p.error,e=>{if(p.isError&&!p.isFetching&&n(u.value.throwOnError,[e,d.getCurrentQuery()]))throw e});let v=e(u.value.shallow?O(p):D(p));for(let e in p)typeof p[e]==`function`&&(v[e]=p[e]);return v.suspense=_,v.refetch=g,v}function V(e,t){return B(j,e,t)}function H(i,a){let s=a||z(),c=t(()=>{let e=typeof i==`function`?i():i;return s.defaultMutationOptions(C(e))}),u=new R(s,c.value),d=c.value.shallow?o(u.getCurrentResult()):r(u.getCurrentResult()),p=u.subscribe(e=>{x(d,e)}),m=(e,t)=>{u.mutate(e,t).catch(()=>{})};l(c,()=>{u.setOptions(c.value)}),f(()=>{p()});let h=e(c.value.shallow?O(d):D(d));return l(()=>d.error,e=>{if(e&&n(c.value.throwOnError,[e]))throw e}),{...h,mutate:m,mutateAsync:d.mutate,reset:d.reset}}function U(){return A()}const W={proxies:[`proxies`],proxyProviders:[`proxy-providers`],rules:[`rules`],ruleProviders:[`rule-providers`],config:[`config`],version:[`version`]};function G(){return V({queryKey:W.rules,queryFn:async()=>{let{rules:e}=await U().get(`rules`).json();return Object.values(e)}})}function K(){return V({queryKey:W.ruleProviders,queryFn:async()=>{let{providers:e}=await U().get(`providers/rules`).json();return Object.values(e)}})}function q(){let e=z();return H({mutationFn:async e=>{await U().put(`providers/rules/${encodeURIComponent(e)}`)},onSuccess:()=>{e.invalidateQueries({queryKey:W.rules}),e.invalidateQueries({queryKey:W.ruleProviders})}})}function J(){return V({queryKey:W.config,queryFn:async()=>U().get(`configs`).json()})}function Y(){let e=z();return H({mutationFn:async({key:e,value:t})=>{await U().patch(`configs`,{json:{[e]:t}})},onSuccess:()=>{e.invalidateQueries({queryKey:W.config})}})}function X(){return V({queryKey:W.version,queryFn:async()=>{let{version:e}=await U().get(`version`).json();return e}})}export{q as a,Y as i,K as n,X as o,G as r,H as s,J as t};
\ No newline at end of file
diff --git a/dashboard/public/_nuxt/Bqz0uJa8.js b/dashboard/public/_nuxt/Bqz0uJa8.js
deleted file mode 100644
index 2553894..0000000
--- a/dashboard/public/_nuxt/Bqz0uJa8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,D as t,Dt as n,Et as r,J as i,dt as a,lt as o,st as s,yt as c}from"./B99QpFu8.js";import"./_v7-ePgP.js";import{t as l}from"./BYCvG7bQ.js";import{t as u}from"./DMVbmS_f.js";var d=[`data-theme`],f=e({__name:`blank`,setup(e){let f=l(),p=u(),m=c(null);return a(m,e=>{e&&(p.rootElement=e)}),a([()=>f.autoSwitchTheme,t()],([e,t])=>{e&&(f.curTheme=t?f.favNightTheme:f.favDayTheme)},{immediate:!0}),a(()=>f.curTheme,e=>{document.documentElement.setAttribute(`data-theme`,e)},{immediate:!0}),(e,t)=>(s(),i(`div`,{ref_key:`rootElement`,ref:m,class:n([`relative flex h-screen flex-col overscroll-y-none bg-base-100 subpixel-antialiased`,r(f).enableTwemoji?`font-twemoji`:`font-default`]),"data-theme":r(f).curTheme},[o(e.$slots,`default`)],10,d))}});export{f as default};
\ No newline at end of file
diff --git a/dashboard/public/_nuxt/-HSUUYd8.js b/dashboard/public/_nuxt/BtSopSH8.js
similarity index 98%
rename from dashboard/public/_nuxt/-HSUUYd8.js
rename to dashboard/public/_nuxt/BtSopSH8.js
index cb0edd4..dbf01e0 100644
--- a/dashboard/public/_nuxt/-HSUUYd8.js
+++ b/dashboard/public/_nuxt/BtSopSH8.js
@@ -1,4 +1,4 @@
-import{a as e,n as t,r as n}from"./CZ3DFtjO.js";import{$ as r,At as i,Dt as a,Et as o,G as s,H as c,J as l,K as u,Mt as d,Ot as f,Q as p,St as m,Tt as h,W as g,ct as _,dt as v,ft as y,gt as b,ht as ee,j as te,kt as x,pt as S,q as C,st as w,x as T,yt as E,z as ne}from"./BMhFqWGI.js";import"./_v7-ePgP.js";import{t as re}from"./D_eq9jO9.js";import{p as D}from"./b3bVkeK4.js";import"./DP4NE4zB.js";import{c as ie,m as ae}from"./Dv_ebRq1.js";import{t as oe}from"./DMUfQgCK.js";function O(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o;n.key&&n.debug?.call(n)&&(o=Date.now());let s=e();if(!(s.length!==r.length||s.some((e,t)=>r[t]!==e)))return i;r=s;let c;if(n.key&&n.debug?.call(n)&&(c=Date.now()),i=t(...s),n.key&&n.debug?.call(n)){let e=Math.round((Date.now()-o)*100)/100,t=Math.round((Date.now()-c)*100)/100,r=t/16,i=(e,t)=>{for(e=String(e);e.length1){s=a;let e=l[s],r=e===void 0?void 0:c[e];u=r?r.end+this.options.gap:t+n}else{let e=this.options.lanes===1?c[i-1]:this.getFurthestMeasurement(c,i);u=e?e.end+this.options.gap:t+n,s=e?e.lane:i%this.options.lanes,this.options.lanes>1&&this.laneAssignments.set(i,s)}let d=o.get(e),f=typeof d==`number`?d:this.options.estimateSize(i),p=u+f;c[i]={index:i,start:u,size:f,end:p,key:e,lane:s},l[s]=i}return this.measurementsCache=c,c},{key:!1,debug:()=>this.options.debug}),this.calculateRange=O(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>this.range=e.length>0&&t>0?U({measurements:e,outerSize:t,scrollOffset:n,lanes:r}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=O(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this._measureElement=(e,t)=>{let n=this.indexFromElement(e),r=this.measurementsCache[n];if(!r)return;let i=r.key,a=this.elementsCache.get(i);a!==e&&(a&&this.observer.unobserve(a),this.observer.observe(e),this.elementsCache.set(i,e)),e.isConnected&&this.resizeItem(n,this.options.measureElement(e,t,this))},this.resizeItem=(e,t)=>{let n=this.measurementsCache[e];if(!n)return;let r=t-(this.itemSizeCache.get(n.key)??n.size);r!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange===void 0?n.start
`;return this.points?.forEach(e=>{t+=`\u25CF ${e.series.name}: ${c(e.y,!0)}
`}),t}},plotOptions:{areaspline:{fillOpacity:.3,marker:{enabled:!1},lineWidth:2,states:{hover:{lineWidth:3}},threshold:null}},series:i.seriesConfig.map((t,n)=>({type:`areaspline`,name:t.name,color:t.color||e.seriesColors[n]||Ee.default.getOptions().colors?.[n]||`hsl(${n*120}, 70%, 50%)`,data:i.initialData?.[n]||[]}))}}let p={addPoint:(e,t,n)=>{if(u?.series[e]){let r=u.series[e].data.length>=10;u.series[e].addPoint([t,n],!0,r,{duration:800,easing:`linear`})}},addPoints:e=>{if(!u)return;let t=new Map;e.forEach(e=>{t.has(e.seriesIndex)||t.set(e.seriesIndex,[]),t.get(e.seriesIndex).push({time:e.time,value:e.value})}),t.forEach((e,t)=>{let n=u?.series[t];n&&e.forEach(e=>{let t=n.data.length>=10;n.addPoint([e.time,e.value],!1,t)})}),u.redraw({duration:800,easing:`linear`})},setSeriesData:(e,t)=>{u?.series[e]&&u.series[e].setData(t,!0,!1,!1)}};return t({chartRef:p}),g(()=>{if(!l.value)return;u=Ee.default.chart(l.value,f()),o(`chartReady`,p);let e=new ResizeObserver(()=>{u&&l.value&&u.setSize(l.value.clientWidth,l.value.clientHeight,!0)});e.observe(l.value),w(()=>{e.disconnect(),u?.destroy()})}),v(()=>i.title,e=>{u&&u.setTitle({text:e})}),v(()=>i.seriesConfig,e=>{u&&(e.forEach((e,t)=>{u.series[t]&&u.series[t].update({type:`areaspline`,name:e.name,color:e.color},!1)}),u.redraw())},{deep:!0}),v(()=>d.curTheme,()=>{requestAnimationFrame(()=>{if(u){let e=be();u.update({chart:{backgroundColor:e.backgroundColor},title:{style:{color:e.textColor}},legend:{itemStyle:{color:e.textColor},itemHoverStyle:{color:e.textColorHover}},xAxis:{labels:{style:{color:e.textColor}},lineColor:e.lineColor,tickColor:e.tickColor},yAxis:{labels:{style:{color:e.textColor}},gridLineColor:e.gridLineColor}},!0,!1,!1)}})}),(t,r)=>(D(),s(`div`,De,[e.isLoading?(D(),s(`div`,Oe,[...r[0]||=[a(`span`,{class:`loading loading-lg loading-dots`},null,-1)]])):T(``,!0),a(`div`,{ref_key:`containerRef`,ref:l,class:n([`h-full w-full`,{"opacity-0":e.isLoading}])},null,2)]))}}),Ae=Object.assign(ke,{__name:`RealtimeLineChart`}),je=u(ge(),1),Me={class:`relative h-full w-full`},Ne={key:0,class:`absolute inset-0 flex items-center justify-center`},Pe=e({__name:`HighchartsAutoSize`,props:{options:{},isLoading:{type:Boolean,default:!1}},setup(e){let t=e,r=A(),i,o=M();function c(){let e=be();return{chart:{animation:{duration:300},backgroundColor:e.backgroundColor},credits:{enabled:!1},accessibility:{enabled:!1},legend:{itemStyle:{color:e.textColor},itemHoverStyle:{color:e.textColorHover}},title:{style:{color:e.textColor}}}}return g(()=>{if(!r.value)return;let e=c(),n={...e,...t.options,chart:{...e.chart,...t.options.chart}};i=je.default.chart(r.value,n);let a=r.value.clientWidth,o=r.value.clientHeight,s=new ResizeObserver(()=>{if(i&&r.value){let e=r.value.clientWidth,t=r.value.clientHeight;(e!==a||t!==o)&&(a=e,o=t,i.setSize(e,t,!1))}});s.observe(r.value),w(()=>{s.disconnect(),i?.destroy()})}),v(()=>t.options,e=>{i&&i.update(e,!0,!1,!1)},{deep:!0}),v(()=>o.curTheme,()=>{requestAnimationFrame(()=>{if(i){let e=be();i.update({chart:{backgroundColor:e.backgroundColor},title:{style:{color:e.textColor}},legend:{itemStyle:{color:e.textColor},itemHoverStyle:{color:e.textColorHover}},xAxis:{labels:{style:{color:e.textColor}},lineColor:e.lineColor,tickColor:e.tickColor},yAxis:{labels:{style:{color:e.textColor}},gridLineColor:e.gridLineColor}},!0,!1,!1)}})}),(t,i)=>(D(),s(`div`,Me,[e.isLoading?(D(),s(`div`,Ne,[...i[0]||=[a(`span`,{class:`loading loading-lg loading-dots`},null,-1)]])):T(``,!0),a(`div`,{ref_key:`containerRef`,ref:r,class:n([`h-full w-full`,{"opacity-0":e.isLoading}])},null,2)]))}}),Fe=Object.assign(Pe,{__name:`HighchartsAutoSize`}),Ie={"ip.sb":`https://api.ip.sb/geoip`,"ipwho.is":`https://ipwho.is/`,"ipapi.is":`https://api.ipapi.is/`};function Le(e){return{ip:e.ip,country:e.country,city:e.city,asn:e.asn,org:e.asn_organization}}function Re(e){return{ip:e.ip,country:e.country,countryCode:e.country_code,city:e.city,region:e.region,asn:e.connection?.asn,org:e.connection?.org,isp:e.connection?.isp,latitude:e.latitude,longitude:e.longitude,timezone:e.timezone?.id}}function ze(e){return{ip:e.ip,country:e.location?.country,countryCode:e.location?.country_code,city:e.location?.city,region:e.location?.state,asn:e.asn?.asn,org:e.asn?.org,isProxy:e.is_proxy,isVPN:e.is_vpn,latitude:e.location?.latitude,longitude:e.location?.longitude,timezone:e.location?.timezone}}async function Be(e){let t=Ie[e],n=await me.get(t,{timeout:1e4}).json();switch(e){case`ip.sb`:return Le(n);case`ipwho.is`:return Re(n);case`ipapi.is`:return ze(n);default:throw Error(`Unknown IP provider: ${e}`)}}function Ve(){let e=A(`ip.sb`),t=A(null),n=A(!1),r=A(null);async function i(i){let a=i??e.value;n.value=!0,r.value=null;try{t.value=await Be(a),e.value=a}catch(e){r.value=e instanceof Error?e.message:`Failed to fetch IP info`,t.value=null}finally{n.value=!1}}return{currentProvider:e,ipInfo:t,isLoading:n,error:r,fetchIP:i}}var He={class:`card bg-base-200 p-4 shadow-sm`},Ue={class:`mb-3 flex items-center justify-between`},We={class:`flex items-center gap-2`},Ge={class:`font-semibold`},Ke={class:`flex items-center gap-2`},qe=[`value`],Je=[`value`],Ye=[`disabled`],Xe={key:0,class:`flex justify-center py-4`},Ze={key:1,class:`alert alert-error`},Qe={key:2,class:`space-y-2`},$e={class:`flex items-center justify-between gap-2`},et={class:`shrink-0 text-base-content/60`},tt=[`title`],nt={key:0,class:`flex items-center justify-between gap-2`},rt={class:`shrink-0 text-base-content/60`},it={class:`truncate`},at={key:1,class:`flex items-center justify-between gap-2`},ot={class:`shrink-0 text-base-content/60`},st={class:`truncate`},ct={key:2,class:`flex items-center justify-between gap-2`},lt={class:`shrink-0 text-base-content/60`},ut=[`title`],dt={key:3,class:`flex items-center justify-between gap-2`},ft={class:`truncate font-mono`},pt={key:4,class:`flex items-center justify-between gap-2`},mt=[`title`],ht={key:5,class:`flex items-center justify-between`},gt={class:`text-base-content/60`},_t={class:`flex gap-1`},vt={key:0,class:`badge badge-sm badge-warning`},yt={key:1,class:`badge badge-sm badge-warning`},bt={key:2,class:`badge badge-sm badge-success`},xt={key:3,class:`py-4 text-center text-base-content/60`},St=e({__name:`IPInfoCard`,setup(e){let{t}=k(),{currentProvider:r,ipInfo:c,isLoading:l,error:u,fetchIP:d}=Ve(),p=[{value:`ip.sb`,label:`IP.SB`},{value:`ipwho.is`,label:`ipwho.is`},{value:`ipapi.is`,label:`ipapi.is`}];g(()=>{d()});function m(e){let t=e.target;d(t.value)}return(e,h)=>(D(),s(`div`,He,[a(`div`,Ue,[a(`div`,We,[f(i(ie),{class:`h-5 w-5 text-primary`}),a(`h3`,Ge,S(i(t)(`currentIP`)),1)]),a(`div`,Ke,[a(`select`,{value:i(r),class:`select-bordered select select-sm`,onChange:m},[(D(),s(o,null,_(p,e=>a(`option`,{key:e.value,value:e.value},S(e.label),9,Je)),64))],40,qe),a(`button`,{class:n([`btn btn-circle btn-ghost btn-sm`,{"animate-spin":i(l)}]),disabled:i(l),onClick:h[0]||=e=>i(d)()},[f(i(ce),{class:`h-4 w-4`})],10,Ye)])]),i(l)?(D(),s(`div`,Xe,[...h[1]||=[a(`span`,{class:`loading loading-md loading-spinner`},null,-1)]])):i(u)?(D(),s(`div`,Ze,[a(`span`,null,S(i(u)),1)])):i(c)?(D(),s(`div`,Qe,[a(`div`,$e,[a(`span`,et,S(i(t)(`ipAddress`)),1),a(`span`,{class:`truncate font-mono font-semibold`,title:i(c).ip},S(i(c).ip),9,tt)]),i(c).country?(D(),s(`div`,nt,[a(`span`,rt,S(i(t)(`country`)),1),a(`span`,it,S(i(c).country),1)])):T(``,!0),i(c).city?(D(),s(`div`,at,[a(`span`,ot,S(i(t)(`city`)),1),a(`span`,st,S(i(c).city),1)])):T(``,!0),i(c).org?(D(),s(`div`,ct,[a(`span`,lt,S(i(t)(`organization`)),1),a(`span`,{class:`truncate text-right`,title:i(c).org},S(i(c).org),9,ut)])):T(``,!0),i(c).asn?(D(),s(`div`,dt,[h[2]||=a(`span`,{class:`shrink-0 text-base-content/60`},`ASN`,-1),a(`span`,ft,`AS`+S(i(c).asn),1)])):T(``,!0),i(c).isp?(D(),s(`div`,pt,[h[3]||=a(`span`,{class:`shrink-0 text-base-content/60`},`ISP`,-1),a(`span`,{class:`truncate text-right`,title:i(c).isp},S(i(c).isp),9,mt)])):T(``,!0),i(c).isProxy!==void 0||i(c).isVPN!==void 0?(D(),s(`div`,ht,[a(`span`,gt,S(i(t)(`proxyDetection`)),1),a(`div`,_t,[i(c).isProxy?(D(),s(`span`,vt,` Proxy `)):T(``,!0),i(c).isVPN?(D(),s(`span`,yt,` VPN `)):T(``,!0),!i(c).isProxy&&!i(c).isVPN?(D(),s(`span`,bt,S(i(t)(`clean`)),1)):T(``,!0)])])):T(``,!0)])):(D(),s(`div`,xt,S(i(t)(`noData`)),1))]))}}),Ct=Object.assign(St,{__name:`IPInfoCard`}),wt=[{name:`Google`,url:`https://www.google.com/generate_204`},{name:`Cloudflare`,url:`https://www.cloudflare.com/cdn-cgi/trace`},{name:`GitHub`,url:`https://github.com`}];async function Tt(e){try{let t=performance.now();await fetch(e,{method:`HEAD`,mode:`no-cors`,cache:`no-store`});let n=performance.now();return Math.round(n-t)}catch{return null}}function Et(){let e=A(new Map),t=A(!1),n=A(wt);async function r(t,n){e.value.set(n,{url:n,latency:null,status:`pending`,timestamp:Date.now()});let r=await Tt(n);return e.value.set(n,{url:n,latency:r,status:r===null?`error`:`success`,timestamp:Date.now()}),r}async function i(){t.value=!0;let e=n.value.map(e=>r(e.name,e.url));await Promise.all(e),t.value=!1}function a(t){return e.value.get(t)}return{results:e,isTestingAll:t,targets:n,testLatency:r,testAllLatencies:i,getResult:a,allResults:m(()=>n.value.map(t=>({name:t.name,url:t.url,result:e.value.get(t.url)}))),averageLatency:m(()=>{let t=Array.from(e.value.values()).filter(e=>e.status===`success`&&e.latency!==null);if(t.length===0)return null;let n=t.reduce((e,t)=>e+(t.latency??0),0);return Math.round(n/t.length)})}}var Dt={class:`card bg-base-200 p-4 shadow-sm`},Ot={class:`mb-3 flex items-center justify-between`},kt={class:`flex items-center gap-2`},At={class:`font-semibold`},jt={class:`flex items-center gap-2`},Mt=[`disabled`],Nt={class:`space-y-3`},Pt={class:`w-20 shrink-0 truncate text-sm`},Ft={class:`relative h-4 flex-1 overflow-hidden rounded-full bg-base-300`},It={class:`w-16 shrink-0 text-right font-mono text-sm`},Lt={key:0,class:`loading loading-xs loading-spinner`},Rt={key:1},zt={key:2,class:`text-error`},Bt={key:3,class:`text-base-content/40`},Vt=e({__name:`LatencyCard`,setup(e){let{t}=k(),{allResults:r,isTestingAll:c,testAllLatencies:l,averageLatency:u}=Et();g(()=>{l()});function p(e){return e==null?`badge-ghost`:e<100?`badge-success`:e<300?`badge-warning`:`badge-error`}function m(e){return e==null?`0%`:`${Math.min(e/500*100,100)}%`}function h(e){return e==null?`bg-base-300`:e<100?`bg-success`:e<300?`bg-warning`:`bg-error`}return(e,g)=>(D(),s(`div`,Dt,[a(`div`,Ot,[a(`div`,kt,[f(i(te),{class:`h-5 w-5 text-primary`}),a(`h3`,At,S(i(t)(`networkLatency`)),1)]),a(`div`,jt,[i(u)===null?T(``,!0):(D(),s(`span`,{key:0,class:n([`badge`,p(i(u))])},S(i(t)(`average`))+`: `+S(i(u))+`ms `,3)),a(`button`,{class:n([`btn btn-circle btn-ghost btn-sm`,{"animate-spin":i(c)}]),disabled:i(c),onClick:g[0]||=(...e)=>i(l)&&i(l)(...e)},[f(i(ce),{class:`h-4 w-4`})],10,Mt)])]),a(`div`,Nt,[(D(!0),s(o,null,_(i(r),e=>(D(),s(`div`,{key:e.url,class:`flex items-center gap-3`},[a(`span`,Pt,S(e.name),1),a(`div`,Ft,[a(`div`,{class:n([`absolute inset-y-0 left-0 rounded-full transition-all duration-500`,h(e.result?.latency)]),style:d({width:m(e.result?.latency)})},null,6)]),a(`span`,It,[e.result?.status===`pending`?(D(),s(`span`,Lt)):e.result?.status===`success`?(D(),s(`span`,Rt,S(e.result.latency)+`ms `,1)):e.result?.status===`error`?(D(),s(`span`,zt,S(i(t)(`timeout`)),1)):(D(),s(`span`,Bt,`-`))])]))),128))])]))}}),Ht=Object.assign(Vt,{__name:`LatencyCard`}),Ut={value:()=>{}};function Wt(){for(var e=0,t=arguments.length,n={},r;e=0&&(e=e.slice(0,t)),!e||e===`start`})}function Za(e,t,n){var r,i,a=Xa(t)?_a:X;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function Qa(e,t){var n=this._id;return arguments.length<2?Z(this.node(),n).on.on(e):this.each(Za(n,e,t))}function $a(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function eo(){return this.on(`end.remove`,$a(this._id))}function to(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=nn(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o=0;)t+=n[r].value;e.value=t}function Fo(){return this.eachAfter(Po)}function Io(e,t){let n=-1;for(let r of this)e.call(t,r,++n,this);return this}function Lo(e,t){for(var n=this,r=[n],i,a,o=-1;n=r.pop();)if(e.call(t,n,++o,this),i=n.children)for(a=i.length-1;a>=0;--a)r.push(i[a]);return this}function Ro(e,t){for(var n=this,r=[n],i=[],a,o,s,c=-1;n=r.pop();)if(i.push(n),a=n.children)for(o=0,s=a.length;o=0;)n+=r[i].value;t.value=n})}function Vo(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}function Ho(e){for(var t=this,n=Uo(t,e),r=[t];t!==n;)t=t.parent,r.push(t);for(var i=r.length;e!==n;)r.splice(i,0,e),e=e.parent;return r}function Uo(e,t){if(e===t)return e;var n=e.ancestors(),r=t.ancestors(),i=null;for(e=n.pop(),t=r.pop();e===t;)i=e,e=n.pop(),t=r.pop();return i}function Wo(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}function Go(){return Array.from(this)}function Ko(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}function qo(){var e=this,t=[];return e.each(function(n){n!==e&&t.push({source:n.parent,target:n})}),t}function*Jo(){var e=this,t,n=[e],r,i,a;do for(t=n.reverse(),n=[];e=t.pop();)if(yield e,r=e.children)for(i=0,a=r.length;i=0;--s)i.push(a=o[s]=new ts(o[s])),a.parent=r,a.depth=r.depth+1;return n.eachBefore(es)}function Xo(){return Yo(this).eachBefore($o)}function Zo(e){return e.children}function Qo(e){return Array.isArray(e)?e[1]:null}function $o(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function es(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function ts(e){this.data=e,this.depth=this.height=0,this.parent=null}ts.prototype=Yo.prototype={constructor:ts,count:Fo,each:Io,eachAfter:Ro,eachBefore:Lo,find:zo,sum:Bo,sort:Vo,path:Ho,ancestors:Wo,descendants:Go,leaves:Ko,links:qo,copy:Xo,[Symbol.iterator]:Jo};function ns(e,t){return e.parent===t.parent?1:2}function rs(e){var t=e.children;return t?t[0]:e.t}function is(e){var t=e.children;return t?t[t.length-1]:e.t}function as(e,t,n){var r=n/(t.i-e.i);t.c-=r,t.s+=n,e.c+=r,t.z+=n,t.m+=n}function os(e){for(var t=0,n=0,r=e.children,i=r.length,a;--i>=0;)a=r[i],a.z+=t,a.m+=t,t+=a.s+(n+=a.c)}function ss(e,t,n){return e.a.parent===t.parent?e.a:n}function cs(e,t){this._=e,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}cs.prototype=Object.create(ts.prototype);function ls(e){for(var t=new cs(e,0),n,r=[t],i,a,o,s;n=r.pop();)if(a=n._.children)for(n.children=Array(s=a.length),o=s-1;o>=0;--o)r.push(i=n.children[o]=new cs(a[o],o)),i.parent=n;return(t.parent=new cs(null,0)).children=[t],t}function us(){var e=ns,t=1,n=1,r=null;function i(i){var s=ls(i);if(s.eachAfter(a),s.parent.m=-s.z,s.eachBefore(o),r)i.eachBefore(c);else{var l=i,u=i,d=i;i.eachBefore(function(e){e.x
${z(e).toString()} (${t.toFixed(1)}%)`}},plotOptions:{pie:{allowPointSelect:!0,cursor:`pointer`,dataLabels:{enabled:!1},showInLegend:!0,animation:!1}},legend:{itemStyle:{color:g.value.textColor},itemHoverStyle:{color:g.value.textColorHover}},series:[{type:`pie`,name:r(`flow`),data:[{name:r(`downloadTotal`),y:l.latestConnectionMsg?.downloadTotal||0,color:g.value.seriesColors[0]},{name:r(`uploadTotal`),y:l.latestConnectionMsg?.uploadTotal||0,color:g.value.seriesColors[1]}]}]})),ne=m(()=>{let e=l.activeConnections,t=0,n=0,i=0;return e.forEach(e=>{let r=e.metadata.network?.toLowerCase()||``;r===`tcp`?t++:r===`udp`?n++:i++}),{chart:{type:`pie`,backgroundColor:g.value.backgroundColor,animation:!1},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:r(`networkTypes`),style:{color:g.value.textColor}},tooltip:{pointFormatter(){let e=this.y||0,t=this.percentage||0;return`${this.name}: ${e} (${t.toFixed(1)}%)`}},plotOptions:{pie:{allowPointSelect:!0,cursor:`pointer`,dataLabels:{enabled:!1},showInLegend:!0,animation:!1}},legend:{itemStyle:{color:g.value.textColor},itemHoverStyle:{color:g.value.textColorHover}},series:[{type:`pie`,name:r(`networkTypes`),data:[{name:r(`tcp`),y:t,color:g.value.seriesColors[0]},{name:r(`udp`),y:n,color:g.value.seriesColors[1]},...i>0?[{name:r(`other`),y:i,color:g.value.seriesColors[2]}]:[]]}]}}),re=m(()=>{let e=l.speedGroupByName,t=Object.entries(e).sort(([,e],[,t])=>t-e).slice(0,5),n=t.map(([e])=>e),i=t.map(([,e])=>e);return{chart:{type:`bar`,backgroundColor:g.value.backgroundColor,animation:!1},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:r(`topProxies`),style:{color:g.value.textColor}},xAxis:{categories:n,labels:{style:{color:g.value.textColor}},lineColor:g.value.lineColor},yAxis:{title:{text:void 0},labels:{style:{color:g.value.textColor},formatter(){return`${z(this.value).toString()}/s`}},gridLineColor:g.value.gridLineColor,min:0},tooltip:{formatter(){return`${n[this.x]||this.x}
${z(this.y).toString()}/s`}},legend:{enabled:!1},plotOptions:{bar:{dataLabels:{enabled:!1},animation:!1}},series:[{type:`bar`,name:r(`traffic`),data:i,color:g.value.seriesColors[0]}]}}),I=o.trafficChartHistory.download.at(-1)?.[0]??0,ie=o.memoryChartHistory.at(-1)?.[0]??0,ae=o.connectionCountHistory.at(-1)?.[0]??0;return v(()=>o.latestTraffic,e=>{if(e&&_.value?.chartRef){let t=Date.now();t>I&&(_.value.chartRef.addPoints([{seriesIndex:0,time:t,value:e.down},{seriesIndex:1,time:t,value:e.up}]),I=t)}}),v(()=>o.latestMemory?.inuse,e=>{if(e&&b.value?.chartRef){let t=Date.now();t>ie&&(b.value.chartRef.addPoint(0,t,e),ie=t)}}),v(()=>l.latestConnectionMsg?.connections?.length,e=>{if(e!==void 0&&C.value?.chartRef){let t=Date.now();t>ae&&(C.value.chartRef.addPoint(0,t,e),ae=t)}}),(e,t)=>{let m=Te,g=Ae,v=Fe,x=Ct,k=Ht,A=Es,M=nl;return D(),s(`div`,rl,[a(`div`,il,[f(m,{label:i(r)(`upload`)},{default:y(()=>[h(S(p(i(o).latestTraffic?.up||0))+`/s `,1)]),_:1},8,[`label`]),f(m,{label:i(r)(`download`)},{default:y(()=>[h(S(p(i(o).latestTraffic?.down||0))+`/s `,1)]),_:1},8,[`label`]),f(m,{label:i(r)(`uploadTotal`)},{default:y(()=>[h(S(p(i(l).latestConnectionMsg?.uploadTotal||0)),1)]),_:1},8,[`label`]),f(m,{label:i(r)(`downloadTotal`)},{default:y(()=>[h(S(p(i(l).latestConnectionMsg?.downloadTotal||0)),1)]),_:1},8,[`label`]),f(m,{label:i(r)(`activeConnections`)},{default:y(()=>[h(S(i(l).latestConnectionMsg?.connections?.length||0),1)]),_:1},8,[`label`]),f(m,{label:i(r)(`memoryUsage`)},{default:y(()=>[h(S(p(i(o).latestMemory?.inuse||0)),1)]),_:1},8,[`label`])]),i(u).currentEndpoint?.url?(D(),s(`div`,al,[a(`span`,ol,S(i(r)(`connectedTo`))+`:`,1),a(`span`,sl,S(i(u).currentEndpoint?.url),1)])):T(``,!0),a(`div`,cl,[a(`div`,ll,[f(g,{ref_key:`trafficChartRef`,ref:_,title:i(r)(`traffic`),"series-config":i(w),"initial-data":i(ee),"is-loading":!i(o).latestTraffic},null,8,[`title`,`series-config`,`initial-data`,`is-loading`])]),a(`div`,ul,[f(v,{options:i(P),"is-loading":!i(l).latestConnectionMsg?.connections?.length},null,8,[`options`,`is-loading`])]),a(`div`,dl,[f(g,{ref_key:`memoryChartRef`,ref:b,title:i(r)(`memory`),"series-config":i(E),"initial-data":i(O),"is-loading":!i(o).latestMemory},null,8,[`title`,`series-config`,`initial-data`,`is-loading`])]),a(`div`,fl,[f(g,{ref_key:`connectionsChartRef`,ref:C,title:i(r)(`connectionsChart`),"series-config":i(j),"initial-data":i(te),"is-loading":!i(l).latestConnectionMsg?.connections?.length,"value-mode":`number`},null,8,[`title`,`series-config`,`initial-data`,`is-loading`])]),a(`div`,pl,[f(v,{options:i(ne),"is-loading":!i(l).latestConnectionMsg?.connections?.length},null,8,[`options`,`is-loading`])]),a(`div`,ml,[f(v,{options:i(re),"is-loading":Object.keys(i(l).speedGroupByName).length===0},null,8,[`options`,`is-loading`])])]),a(`div`,hl,[f(x),f(k)]),a(`div`,gl,[a(`div`,{class:`flex cursor-pointer items-center justify-between`,onClick:t[0]||=e=>i(d).showNetworkTopology=!i(d).showNetworkTopology},[a(`h3`,_l,S(i(r)(`networkTopology`)),1),a(`button`,vl,[f(i(F),{class:n([`h-5 w-5 transition-transform`,{"rotate-180":i(d).showNetworkTopology}])},null,8,[`class`])])]),i(d).showNetworkTopology?(D(),c(A,{key:0,class:`mt-4`})):T(``,!0)]),f(M)])}}});export{yl as default};
\ No newline at end of file
diff --git a/dashboard/public/_nuxt/C7eIA7p7.js b/dashboard/public/_nuxt/C7eIA7p7.js
deleted file mode 100644
index 7d19328..0000000
--- a/dashboard/public/_nuxt/C7eIA7p7.js
+++ /dev/null
@@ -1 +0,0 @@
-import{$ as e,A as t,Dt as n,E as r,Et as i,G as a,H as o,J as s,K as c,Mt as l,Q as u,R as d,T as f,V as p,W as m,Z as h,ct as g,dt as _,et as v,ft as y,ht as ee,j as b,k as x,kt as S,pt as te,q as C,rt as w,st as T,ut as E,w as D,wt as O,x as k,yt as A,z as ne}from"./BMhFqWGI.js";import{i as j,n as M,r as re}from"./_v7-ePgP.js";import{t as ie}from"./D_eq9jO9.js";import"./B_7V5VkU.js";import{M as ae,N as oe,P as se,c as ce,g as le,h as ue,i as de,j as fe,l as pe,n as me,t as he,u as ge,v as _e,w as ve}from"./b3bVkeK4.js";import{i as ye,r as be}from"./DP4NE4zB.js";import{i as xe,n as Se,r as Ce,t as we}from"./CkFKWn77.js";import{c as Te,h as Ee,o as De}from"./Dv_ebRq1.js";import{t as Oe}from"./wm6hNCZN.js";import{t as ke}from"./DMUfQgCK.js";import{t as Ae}from"./Du57LVNU.js";function je(e){var t=typeof e;return e!=null&&(t==`object`||t==`function`)}var Me=je,Ne=`[object AsyncFunction]`,Pe=`[object Function]`,Fe=`[object GeneratorFunction]`,Ie=`[object Proxy]`;function Le(e){if(!Me(e))return!1;var t=Ce(e);return t==Pe||t==Fe||t==Ne||t==Ie}var Re=Le,ze=xe[`__core-js_shared__`],Be=function(){var e=/[^.]+$/.exec(ze&&ze.keys&&ze.keys.IE_PROTO||``);return e?`Symbol(src)_1.`+e:``}();function Ve(e){return!!Be&&Be in e}var He=Ve,Ue=Function.prototype.toString;function We(e){if(e!=null){try{return Ue.call(e)}catch{}try{return e+``}catch{}}return``}var Ge=We,Ke=/[\\^$.*+?()[\]{}|]/g,qe=/^\[object .+?Constructor\]$/,Je=Function.prototype,Ye=Object.prototype,Xe=Je.toString,Ze=Ye.hasOwnProperty,Qe=RegExp(`^`+Xe.call(Ze).replace(Ke,`\\$&`).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,`$1.*?`)+`$`);function $e(e){return!Me(e)||He(e)?!1:(Re(e)?Qe:qe).test(Ge(e))}var et=$e;function tt(e,t){return e?.[t]}var nt=tt;function rt(e,t){var n=nt(e,t);return et(n)?n:void 0}var it=rt;function at(){}var ot=at;function st(e,t,n,r){for(var i=e.length,a=n+(r?1:-1);r?a--:++a-1}var gt=ht;function _t(e,t){return e===t||e!==e&&t!==t}var vt=_t,yt=it(Object,`create`);function bt(){this.__data__=yt?yt(null):{},this.size=0}var xt=bt;function St(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var Ct=St,wt=`__lodash_hash_undefined__`,Tt=Object.prototype.hasOwnProperty;function Et(e){var t=this.__data__;if(yt){var n=t[e];return n===wt?void 0:n}return Tt.call(t,e)?t[e]:void 0}var Dt=Et,Ot=Object.prototype.hasOwnProperty;function kt(e){var t=this.__data__;return yt?t[e]!==void 0:Ot.call(t,e)}var At=kt,jt=`__lodash_hash_undefined__`;function Mt(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=yt&&t===void 0?jt:t,this}var Nt=Mt;function Pt(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t32))return a;if(r===41){if(o===0)break;o--}i++}return t===i||o!==0?a:(a.str=F(e.slice(t,i)),a.pos=i,a.ok=!0,a)}function vt(e,t,n,r){let i,a=t,o={ok:!1,can_continue:!1,pos:0,str:``,marker:0};if(r)o.str=r.str,o.marker=r.marker;else{if(a>=n)return o;let r=e.charCodeAt(a);if(r!==34&&r!==39&&r!==40)return o;t++,a++,r===40&&(r=41),o.marker=r}for(;a`+I(a.content)+``},V.code_block=function(e,t,n,r,i){let a=e[t];return`
-`},V.fence=function(e,t,n,r,i){let a=e[t],o=a.info?F(a.info).trim():``,s=``,c=``;if(o){let e=o.split(/(\s+)/g);s=e[0],c=e.slice(2).join(``)}let l;if(l=n.highlight&&n.highlight(a.content,s,c)||I(a.content),l.indexOf(``+I(e[t].content)+`
\n`}return`${l}
\n`},V.image=function(e,t,n,r,i){let a=e[t];return a.attrs[a.attrIndex(`alt`)][1]=i.renderInlineAsText(a.children,n,r),i.renderToken(e,t,n)},V.hardbreak=function(e,t,n){return n.xhtmlOut?`${l}
-`:`
-`},V.softbreak=function(e,t,n){return n.breaks?n.xhtmlOut?`
-`:`
-`:`
-`},V.text=function(e,t){return I(e[t].content)},V.html_block=function(e,t){return e[t].content},V.html_inline=function(e,t){return e[t].content};function H(){this.rules=$e({},V)}H.prototype.renderAttrs=function(e){let t,n,r;if(!e.attrs)return``;for(r=``,t=0,n=e.attrs.length;t