diff --git a/app-store-ui/src/dist/luci-static/istore/i18n/en.json b/app-store-ui/src/dist/luci-static/istore/i18n/en.json
index 3732a58..6985961 100644
--- a/app-store-ui/src/dist/luci-static/istore/i18n/en.json
+++ b/app-store-ui/src/dist/luci-static/istore/i18n/en.json
@@ -1 +1 @@
-{"en":{"%{ num } download":["%{ num } download","%{ num } downloads"],"%{ num } like":["%{ num } like","%{ num } likes"],"all app":"all app","app backup":"app backup","are you sure you want to uninstall %{name}?":"are you sure you want to uninstall %{name}?","author":"author","backup fail":"backup fail","backup fail with error code":"backup fail with error code","backup now":"backup now","backup now backs up installed software (unlimited installation sources) to external storage":"backup now backs up installed software (unlimited installation sources) to external storage","backup now will download a list of iStore installed software":"backup now will download a list of iStore installed software","backup success":"backup success","backuping":"backuping","Broken":"Broken","By download":"By download","By rating":"By rating","checking for latest version":"checking for latest version","choose":"choose","choose backup file":"choose backup file","click to download":"click to download","click to update":"click to update","closed":"closed","config":"config","customize":"customize","default":"default","Docker is not installed on the system, try to install it?":"Docker is not installed on the system, try to install it?","download":"Download","explain":"explain","external storage directory":"external storage directory","hide docker packages":"hide docker packages","hide incompatible packages":"hide incompatible packages","Icon is gone":"Icon is gone","in this page, you can upload and install packages":"in this page, you can upload and install packages","install":"install","installation failed, error code":"installation failed, error code","installed":"installed","last version":"last version","Latest update":"Latest date","light backup":"light backup","like":"like","liked":"liked","loading data":"loading data","local backup":"local backup","maintain":"maintain","manual install":"manual install","monitor":"Monitor","multimedia":"Multimedia","nas":"NAS","net":"Net","networking":"Networking","no files selected":"no files selected","no internet required for recovery":"no internet required for recovery","offline install":"offline install","offline installation failed with error code":"offline installation failed with error code","open":"open","order":"order","packages installed offline may not appear in iStore":"packages installed offline may not appear in iStore","please enter an absolute path starting with %{name}":"please enter an absolute path starting with %{name}","please enter the path, give up the input, please clear the input box":"please enter the path, give up the input, please clear the input box","please enter the search keyword":"please enter the search keyword","please fill in the external storage directory":"please fill in the external storage directory","please select a backup file to restore":"please select a backup file to restore","restore backup":"restore backup","restore failed with error code":"restore failed with error code","restore now":"restore now","select or drag and drop files":"select or drag and drop files","service":"Service","show docker packages":"show docker packages","show incompatible packages":"show incompatible packages","Stick to the top":"Stick to the top","supports .ipk packages, .run self-extracting packages":"supports .ipk packages, .run self-extracting packages","system":"System","tag":"Tag","the is last version":"the is last version","there are no backup files in this path":"there are no backup files in this path","tool":"Tool","tutorial":"tutorial","uninstall":"uninstall","uninstall failed, error code":"uninstall failed, error code","update date":"update date","update error":"update error","update failed with error code":"update failed with error code","update success, reloading":"update success, reloading","updateing":"updateing","upgrade":"upgrade","upload software list and install from iStore when restoring backup":"upload software list and install from iStore when restoring backup","uploading":"uploading","website":"website","you have already liked":"you have already liked"}}
\ No newline at end of file
+{"en":{"%{ num } download":["%{ num } download","%{ num } downloads"],"%{ num } like":["%{ num } like","%{ num } likes"],"all app":"all app","app backup":"app backup","are you sure you want to uninstall %{name}?":"are you sure you want to uninstall %{name}?","author":"author","backup fail":"backup fail","backup fail with error code":"backup fail with error code","backup now":"backup now","backup now backs up installed software (unlimited installation sources) to external storage":"backup now backs up installed software (unlimited installation sources) to external storage","backup now will download a list of iStore installed software":"backup now will download a list of iStore installed software","backup success":"backup success","backuping":"backuping","Broken":"Broken","By download":"By download","By rating":"By rating","checking for latest version":"checking for latest version","choose":"choose","choose backup file":"choose backup file","click to download":"click to download","click to update":"click to update","closed":"closed","config":"config","customize":"customize","default":"default","Docker is not installed on the system, try to install it?":"Docker is not installed on the system, try to install it?","download":"Download","explain":"explain","external storage directory":"external storage directory","hide docker packages":"hide docker packages","hide incompatible packages":"hide incompatible packages","Icon is gone":"Icon is gone","in this page, you can upload and install packages":"in this page, you can upload and install packages","install":"install","installation failed, error code":"installation failed, error code","installed":"installed","last version":"last version","Latest update":"Latest update","light backup":"light backup","like":"like","liked":"liked","loading data":"loading data","local backup":"local backup","maintain":"maintain","manual install":"manual install","monitor":"Monitor","multimedia":"Multimedia","nas":"NAS","net":"Net","networking":"Networking","no files selected":"no files selected","no internet required for recovery":"no internet required for recovery","offline install":"offline install","offline installation failed with error code":"offline installation failed with error code","open":"open","order":"order","packages installed offline may not appear in iStore":"packages installed offline may not appear in iStore","please enter an absolute path starting with %{name}":"please enter an absolute path starting with %{name}","please enter the path, give up the input, please clear the input box":"please enter the path, give up the input, please clear the input box","please enter the search keyword":"please enter the search keyword","please fill in the external storage directory":"please fill in the external storage directory","please select a backup file to restore":"please select a backup file to restore","restore backup":"restore backup","restore failed with error code":"restore failed with error code","restore now":"restore now","select or drag and drop files":"select or drag and drop files","service":"Service","show docker packages":"show docker packages","show incompatible packages":"show incompatible packages","Stick to the top":"Stick to the top","supports .ipk packages, .run self-extracting packages":"supports .ipk packages, .run self-extracting packages","system":"System","tag":"Tag","the is last version":"the is last version","there are no backup files in this path":"there are no backup files in this path","tool":"Tool","tutorial":"tutorial","uninstall":"uninstall","uninstall failed, error code":"uninstall failed, error code","update date":"update date","update error":"update error","update failed with error code":"update failed with error code","update success, reloading":"update success, reloading","updateing":"updateing","upgrade":"upgrade","upload software list and install from iStore when restoring backup":"upload software list and install from iStore when restoring backup","uploading":"uploading","website":"website","you have already liked":"you have already liked"}}
\ No newline at end of file
diff --git a/app-store-ui/src/dist/luci-static/istore/index.js b/app-store-ui/src/dist/luci-static/istore/index.js
index 77c619c..39c1ff3 100644
--- a/app-store-ui/src/dist/luci-static/istore/index.js
+++ b/app-store-ui/src/dist/luci-static/istore/index.js
@@ -1,8 +1,8 @@
-var Le=Object.defineProperty,Te=Object.defineProperties;var Ie=Object.getOwnPropertyDescriptors;var ke=Object.getOwnPropertySymbols;var Pe=Object.prototype.hasOwnProperty,De=Object.prototype.propertyIsEnumerable;var we=(n,e,t)=>e in n?Le(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,G=(n,e)=>{for(var t in e||(e={}))Pe.call(e,t)&&we(n,t,e[t]);if(ke)for(var t of ke(e))De.call(e,t)&&we(n,t,e[t]);return n},se=(n,e)=>Te(n,Ie(e));var Ee=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var w=(n,e,t)=>new Promise((s,o)=>{var a=c=>{try{u(t.next(c))}catch(h){o(h)}},l=c=>{try{u(t.throw(c))}catch(h){o(h)}},u=c=>c.done?s(c.value):Promise.resolve(c.value).then(a,l);u((t=t.apply(n,e)).next())});import{a as oe,c as Oe,u as B,b as z,d as P,r as Z,o as p,e as d,F as E,f as K,g as Q,w as Me,h as r,p as ee,i as te,j as i,t as _,k as D,n as q,l as O,m as Be,q as x,s as ae,v as ye,x as X,y as xe,z as Ce,A as Fe,B as be,C as Ve,D as ze,E as Ue,G as Re}from"./vendor.js?v=3831f804";var Qo=Ee(y=>{const Ge=function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const a of o)if(a.type==="childList")for(const l of a.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function t(o){const a={};return o.integrity&&(a.integrity=o.integrity),o.referrerpolicy&&(a.referrerPolicy=o.referrerpolicy),o.crossorigin==="use-credentials"?a.credentials="include":o.crossorigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function s(o){if(o.ep)return;o.ep=!0;const a=t(o);fetch(o.href,a)}};Ge();const j={tagMap:{},numberFormat:new Intl.NumberFormat("en",{notation:"compact"})},He=n=>w(y,null,function*(){const e=window.vue_lang;new Date().getTime();let t={};try{const a=yield oe({url:window.vue_lang_data,method:"GET"});a.data&&(t=a.data)}catch(a){console.log(a)}const s=Oe({defaultLanguage:e,translations:t,setGlobalProperties:!1,provideDirective:!1,provideComponent:!1});n.use(s);const{$gettext:o}=s;window.$i18n=o,j.tagMap={net:o("net"),tool:o("tool"),download:o("download"),service:o("service"),multimedia:o("multimedia"),nas:o("nas"),monitor:o("monitor"),system:o("system"),networking:o("networking"),broken:o("Broken")};try{j.numberFormat=new Intl.NumberFormat(e,{notation:"compact"})}catch(a){console.error("Intl.NumberFormat unsupported lang",e,a)}}),Se=n=>j.tagMap[n]||n,$e=n=>typeof n=="number"?j.numberFormat.format(n):"?";var C=(n,e)=>{const t=n.__vccOpts||n;for(const[s,o]of e)t[s]=o;return t};const Ke=n=>(ee("data-v-13251538"),n=n(),te(),n),Ne={class:"tabs"},We=["href","onClick"],Ze={key:0},qe=Ke(()=>i("div",{class:"auto"},null,-1)),Je={setup(n){const{$gettext:e}=B(),t=z(),s=P(()=>t.state.version),o=P(()=>[{to:"/installed",name:e("installed")},{to:"/store",name:e("all app")},{to:"/upload",name:e("manual install")},{to:"/maintance",name:e("maintain"),up:s.value}]);return(a,l)=>{const u=Z("router-link");return p(),d("ul",Ne,[(p(!0),d(E,null,K(r(o),c=>(p(),Q(u,{to:c.to,custom:"",key:c.to},{default:Me(({href:h,navigate:T,isActive:M})=>[i("li",{class:q(M&&"active cbi-tab")},[i("a",{href:h,onClick:T},_(c.name),9,We),c.up?(p(),d("span",Ze)):D("",!0)],2)]),_:2},1032,["to"]))),128)),qe])}}};var Ye=C(Je,[["__scopeId","data-v-13251538"]]);const Qe={setup(n){return z().dispatch("getData"),(t,s)=>{const o=Z("router-view");return p(),d(E,null,[O(Ye),O(o)],64)}}},Xe=()=>window.vue_base,je=()=>window.istore_api_base||"https://istore.linkease.com",et=n=>{if(n)return Be(n).format("YYYY-MM-DD HH:mm:ss")},tt=()=>new Date().getTime(),nt=n=>{if(n<1024)return""+n+"KB";let t=1024,s=0;for(let a=n/1024;a>=1024;a/=1024)t*=1024,s++;let o=["M","G","T","P","E"];return(n/100/(t/100)).toFixed(2)+o[s]},st=n=>{if(n==null)return 0;if(n<1e4)return n;let t=parseInt(`${n/1e4}`),s=n%1e4;return`${t}\u4E07${s}`},ot=()=>window.token||"",at=()=>{var n;return((n=window==null?void 0:window.device_id)==null?void 0:n.uid)||""},rt=()=>{var n;return((n=window==null?void 0:window.istore_config)==null?void 0:n.channel)||""},ct=()=>{var n;return((n=window==null?void 0:window.device_id)==null?void 0:n.version)||""},it=()=>{var n;return((n=window==null?void 0:window.device_id)==null?void 0:n.arch)||""},lt=()=>"https://www.kooldns.cn/bind",ut=()=>window.istore_features||[];var pt=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",BasePage:Xe,ApiBaseURL:je,formatDate:et,UnixDate:tt,numberToSize:nt,numberToSum:st,getToken:ot,getDeviceId:at,getChannel:rt,getVersion:ct,modelArch:it,getIframeURL:lt,getFeatures:ut}),L=G({},pt);const S=oe.create({});S.interceptors.request.use(n=>(n.params==null&&(n.params={}),n.params=se(G({},n.params),{token:L.getToken(),_t:L.UnixDate()}),n),n=>n);S.interceptors.response.use(n=>n,n=>n);const R=oe.create({baseURL:L.ApiBaseURL()});R.interceptors.request.use(n=>(n.params==null&&(n.params={}),n.params=se(G({},n.params),{modelArch:L.modelArch(),deviceId:L.getDeviceId(),channel:L.getChannel(),_t:L.UnixDate()}),n),n=>n);R.interceptors.response.use(n=>n);const dt=()=>new Promise((n,e)=>w(y,null,function*(){try{const t=yield S({method:"GET",url:"/cgi-bin/luci/admin/store/installed"});if(t.status==200){n(t.data);return}e(t.status);return}catch(t){e(t);return}})),_t=n=>new Promise((e,t)=>w(y,null,function*(){try{const s=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/install",params:{package:n}});if(s.status==200){e(s.data);return}t(s.status);return}catch(s){t(s);return}})),ht=n=>new Promise((e,t)=>w(y,null,function*(){try{const s=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/upgrade",params:{package:n}});if(s.status==200){e(s.data);return}t(s.status);return}catch(s){t(s);return}})),vt=n=>new Promise((e,t)=>w(y,null,function*(){try{const s=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/remove",params:{package:n}});if(s.status==200){e(s.data);return}t(s.status);return}catch(s){t(s);return}})),gt=()=>new Promise((n,e)=>w(y,null,function*(){try{const t=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/update"});if(t.status==200){n(t.data);return}e(t.status);return}catch(t){e(t);return}})),ft=n=>new Promise((e,t)=>w(y,null,function*(){try{const s=yield S({method:"GET",url:"/cgi-bin/luci/admin/store/status",params:{package:n}});if(s.status==200){e(s.data);return}t(s.status);return}catch(s){t(s);return}})),mt=n=>new Promise((e,t)=>w(y,null,function*(){try{const s=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/upload",headers:{"Content-Type":"multipart/form-data"},data:n});if(s.data){e(s.data);return}}catch(s){t(s);return}t("not found soft")})),kt=()=>new Promise((n,e)=>w(y,null,function*(){try{const t=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/light_backup"});if(t.status==200){n(t.data);return}e(t.status);return}catch(t){e(t);return}})),wt=n=>new Promise((e,t)=>w(y,null,function*(){try{const s=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/light_restore",headers:{"Content-Type":"multipart/form-data"},data:n});if(s.data){e(s.data);return}}catch(s){t(s);return}t("not found soft")})),bt=n=>new Promise((e,t)=>w(y,null,function*(){try{const s=yield S({method:"GET",url:"/cgi-bin/luci/admin/store/get_available_backup_file_list",params:{path:n}});if(s.status==200){e(s==null?void 0:s.data);return}t(s.status);return}catch(s){t(s);return}})),$t=()=>new Promise((n,e)=>w(y,null,function*(){try{const t=yield S({method:"GET",url:"/cgi-bin/luci/admin/store/get_local_backup_dir_path"});if(t.status==200){n(t==null?void 0:t.data);return}e(t.status);return}catch(t){e(t);return}})),yt=(n,e)=>new Promise((t,s)=>w(y,null,function*(){try{const o=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/local_backup",params:{path:n,force:e}});if(o.status==200){t(o==null?void 0:o.data);return}s(o.status);return}catch(o){s(o);return}})),xt=n=>new Promise((e,t)=>w(y,null,function*(){try{const s=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/local_restore",params:{path:n}});if(s.status==200){e(s.data);return}t(s.status);return}catch(s){t(s);return}})),Ct=()=>new Promise((n,e)=>w(y,null,function*(){try{const t=yield S({method:"GET",url:"/cgi-bin/luci/admin/store/get_block_devices"});if(t.status==200){n(t==null?void 0:t.data);return}e(t.status);return}catch(t){e(t);return}})),St=n=>new Promise((e,t)=>w(y,null,function*(){try{const s=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/toggle_docker",params:{hide:n}});if(s.status==200){e(s.data);return}t(s.status);return}catch(s){t(s);return}})),At=n=>new Promise((e,t)=>w(y,null,function*(){try{const s=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/toggle_arch",params:{ignore:n}});if(s.status==200){e(s.data);return}t(s.status);return}catch(s){t(s);return}}));var Lt=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",getInstalledApp:dt,installApp:_t,upgradeApp:ht,removeApp:vt,updateAppStore:gt,getAppStatus:ft,uploadAppIPK:mt,lightBackup:kt,lightRestore:wt,backupFileList:bt,localBackupdirPath:$t,localBackup:yt,localRestore:xt,getBlockDevices:Ct,toggleDocker:St,toggleArch:At});const Tt=n=>new Promise((e,t)=>w(y,null,function*(){var s,o,a,l;try{const u=yield R({method:"GET",url:"/api/store/list",params:n});if(((s=u==null?void 0:u.data)==null?void 0:s.success)===0){e((o=u==null?void 0:u.data)==null?void 0:o.result);return}if((a=u==null?void 0:u.data)!=null&&a.message){t((l=u==null?void 0:u.data)==null?void 0:l.message);return}t("error")}catch(u){console.log(u),t(u);return}})),It=(n,e)=>new Promise((t,s)=>w(y,null,function*(){var o,a,l,u;try{const c=yield R({method:"POST",url:"/api/store/list",params:n,data:e});if(((o=c==null?void 0:c.data)==null?void 0:o.success)===0){t((a=c==null?void 0:c.data)==null?void 0:a.result);return}if((l=c==null?void 0:c.data)!=null&&l.message){s((u=c==null?void 0:c.data)==null?void 0:u.message);return}s("error")}catch(c){console.log(c),s(c);return}})),Pt=L.ApiBaseURL(),Dt=n=>`${Pt}${n}`,Et=()=>new Promise((n,e)=>w(y,null,function*(){var t,s,o,a;try{const l=yield R({method:"GET",url:"/api/store/tags"});if(((t=l==null?void 0:l.data)==null?void 0:t.success)===0){n((s=l==null?void 0:l.data)==null?void 0:s.result);return}if((o=l==null?void 0:l.data)!=null&&o.message){e((a=l==null?void 0:l.data)==null?void 0:a.message);return}e("error")}catch(l){e(l);return}})),Ot=n=>new Promise((e,t)=>{R({method:"POST",url:"/api/store/expand",data:{appsId:n||[],deviceId:L.getDeviceId()}}).then(s=>{var o,a,l;if(((o=s.data)==null?void 0:o.success)==0&&((a=s.data)==null?void 0:a.result)){e((l=s.data)==null?void 0:l.result);return}t("not found expand")}).catch(s=>{t(s)})}),Mt=n=>{R({method:"POST",url:"/api/store/download",data:{appId:n,deviceId:L.getDeviceId()}}).then(e=>{var t;((t=e.data)==null?void 0:t.success)!=0})},Bt=n=>new Promise((e,t)=>{R({method:"POST",url:"/api/store/star",data:{appId:n,deviceId:L.getDeviceId()}}).then(s=>{var o;if(((o=s.data)==null?void 0:o.success)==0){e(s.data);return}t("not found expand")}).catch(s=>{t(s)})});var Ft=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",getStoreAppList:Tt,postStoreAppList:It,getStoreAppIcon:Dt,getStoreTags:Et,getAppExpandData:Ot,increasingDownloadCount:Mt,postStarApp:Bt});const Vt=()=>S({method:"GET",url:"/cgi-bin/luci/admin/store/check_self_upgrade"}),zt=()=>S({method:"POST",url:"/cgi-bin/luci/admin/store/do_self_upgrade"});var Ut=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",updateIstore:Vt,selfUpdateIstore:zt}),$=G(G(G({},Lt),Ft),Ut);const Rt={class:"toast"},Gt=["title"],Ht={key:1,class:"msg"},Kt=["innerHTML"],Nt={props:{content:String,type:String,Close:Function,keep:Boolean,html:Boolean},setup(n){const e=n,t=x(e.content),s=x(e.keep),o=x(e.html),a=x(window.$i18n);e.keep||setTimeout(()=>{e.Close()},2e3);const l=()=>{e.Close()};return(u,c)=>(p(),d("div",Rt,[s.value?(p(),d("div",{key:0,class:"toast-close",onClick:l,title:a.value("closed")},"x",8,Gt)):D("",!0),o.value?D("",!0):(p(),d("div",Ht,_(t.value),1)),o.value?(p(),d("div",{key:2,class:"msg",innerHTML:t.value},null,8,Kt)):D("",!0)]))}};var Wt=C(Nt,[["__scopeId","data-v-b05f92bc"]]);const b=n=>{let e={content:"",type:"",keep:!1,html:!1,Close:()=>{s.unmount(t),document.body.removeChild(t)}};n!=null&&(typeof n=="object"?(e.content=(n==null?void 0:n.content)||"",e.type=(n==null?void 0:n.type)||"",e.keep=(n==null?void 0:n.keep)||!1,e.html=(n==null?void 0:n.html)||!1):e.content=n);let t=document.createElement("div"),s=ae(Wt,e);document.body.append(t),s.mount(t),ye(()=>{s.unmount(t),document.body.removeChild(t)})},Zt={props:{content:String,Close:Function},setup(n){return{message:n.content}}},qt=n=>(ee("data-v-6d7664a4"),n=n(),te(),n),Jt={class:"loading"},Yt=qt(()=>i("div",{class:"icon"},null,-1)),Qt={class:"msg"};function Xt(n,e,t,s,o,a){return p(),d("div",Jt,[Yt,i("div",Qt,_(s.message),1)])}var jt=C(Zt,[["render",Xt],["__scopeId","data-v-6d7664a4"]]),V={props:{content:"",Close:()=>{}},Start(n){this.props={content:n,Close:()=>{e.unmount(t),document.body.removeChild(t)}};let e=ae(jt,this.props),t=document.createElement("div");document.body.append(t),e.mount(t),ye(()=>{this.props.Close()})},Stop(){this.props.Close()}};const re=n=>!Array.isArray(window.istore_features)||window.istore_features.indexOf(n)!=-1,J=n=>(ee("data-v-e48bab18"),n=n(),te(),n),en={class:"app-container"},tn={class:"app-info"},nn={class:"app-f"},sn={class:"app-icon"},on=["alt","src"],an={key:0,class:"docker-icon-i"},rn={class:"app-tags"},cn={class:"tag"},ln=J(()=>i("span",{class:"block"},"\uFF5C",-1)),un={class:"app-r"},pn=["title"],dn={class:"app-name"},_n={class:"app-version"},hn={class:"app-as"},vn=J(()=>i("span",{style:{margin:"0 10px"}},"|",-1)),gn=["title"],fn=["title"],mn=["title"],kn={class:"app-author"},wn={class:"app-date"},bn={class:"app-btns"},$n=["href"],yn=["href"],xn=J(()=>i("div",{class:"auto"},null,-1)),Cn=J(()=>i("div",{class:"app-margin-left"},null,-1)),Sn=J(()=>i("div",{class:"app-margin-left"},null,-1)),An=["href"],Ln=J(()=>i("div",{class:"app-margin-left"},null,-1)),Tn=["title"],In={props:{col:{type:Object,default(){return{description:"",tags:[],entry:"",author:"",depends:[],installed:!1,hasupdate:!1,broken:!1,title:"",time:"",release:1,website:"",name:"",version:""}}}},setup(n){const e=n,{$gettext:t,$ngettext:s}=B(),o=P(()=>e.col),a=z(),l=L.formatDate,u=m=>{$.upgradeApp(m).then(k=>{let I=k.stderr;k.code!==0?b({content:`${I}
-${t("update failed with error code")}: ${k.code}`,keep:!0}):window.istore_log(!0)}).catch(k=>{b({content:`${t("update failed with error code")}: ${500}`,keep:!0})})},c=(m,k)=>{k&&!re("docker")&&!confirm(t("Docker is not installed on the system, try to install it?"))||$.installApp(m).then(I=>{let f=I.stderr;I.code!==0?b({content:`${f}
-${t("installation failed, error code")}: ${I.code}`,keep:!0}):($.increasingDownloadCount(m),a.dispatch("apps/incrAppDownload",{name:m}),window.istore_log(!0))}).catch(I=>{b({content:`${t("installation failed, error code")}: ${500}`,keep:!0})})},h=m=>{!confirm(t("are you sure you want to uninstall %{name}?",{name:m}))||$.removeApp(m).then(I=>{let f=I.stderr;I.code!==0?b({content:`${f}
-${t("uninstall failed, error code")}: ${I.code}`,keep:!0}):window.istore_log(!0)}).catch(I=>{b({content:`${t("uninstall failed, error code")}: ${500}`,keep:!0})})},T=m=>w(this,null,function*(){V.Start();try{(yield $.postStarApp(m))&&a.dispatch("apps/incrAppStar",{name:m})}catch(k){}V.Stop()}),M=()=>{b(t("you have already liked"))},N=m=>o.value.installed?`/luci-static/resources/app-icons/${m}.png`:o.value.icon?$.getStoreAppIcon(o.value.icon):`/luci-static/resources/app-icons/${m}.png`,W=m=>{switch(window.vue_lang){case"zh-cn":case"zh-tw":return m.title}return m.title_en||m.title},Y=m=>{switch(window.vue_lang){case"zh-cn":case"zh-tw":return m.description}return m.description_en||m.description},ne=m=>{a.dispatch("apps/stickTop",m)};return(m,k)=>{var v,A,F,ce,ie,le,ue,pe,de,_e,he,ve,ge,fe,me;const I=Z("svg-docker"),f=Z("svg-star-off"),g=Z("svg-star-on");return p(),d("div",en,[i("div",tn,[i("div",nn,[i("div",sn,[i("img",{alt:r(t)("Icon is gone")+"~",src:N(r(o).name)},null,8,on),!r(o).broken&&r(o).depends.indexOf("docker-deps")!=-1?(p(),d("i",an,[O(I,{class:"docker-icon"})])):D("",!0)]),i("div",rn,[(p(!0),d(E,null,K(r(o).tags,U=>(p(),d(E,{key:U},[i("div",cn,[i("span",null,_(r(Se)(U)),1)]),ln],64))),128))])]),i("div",un,[i("div",{class:"app-title",title:r(o).name},[i("span",dn,_(W(r(o))),1),i("span",_n,"v"+_(r(o).version),1)],8,pn),i("div",hn,[i("span",null,_(r(s)("%{ num } download","%{ num } downloads",((A=(v=r(o))==null?void 0:v.expand)==null?void 0:A.downloadCount)||0,{num:r($e)((ce=(F=r(o))==null?void 0:F.expand)==null?void 0:ce.downloadCount)})),1),vn,i("span",null,_(r(s)("%{ num } like","%{ num } likes",((le=(ie=r(o))==null?void 0:ie.expand)==null?void 0:le.starCount)||0,{num:r($e)((pe=(ue=r(o))==null?void 0:ue.expand)==null?void 0:pe.starCount)})),1),((de=r(o))==null?void 0:de.expand)!=null?(p(),d(E,{key:0},[(he=(_e=r(o))==null?void 0:_e.expand)!=null&&he.isStar?(p(),d("a",{key:0,class:"star-btn",title:r(t)("liked"),onClick:k[0]||(k[0]=U=>M())},[O(f)],8,gn)):(p(),d("a",{key:1,class:"star-btn",title:r(t)("like"),onClick:k[1]||(k[1]=U=>T(r(o).name))},[O(g)],8,fn))],64)):D("",!0)]),i("div",{class:"app-description cbi-value-description",title:Y(r(o))},[i("span",null,_(Y(r(o))),1)],8,mn),i("div",kn,[i("span",null,_(r(t)("author"))+": "+_(r(o).author||"null"),1)]),i("div",wn,[i("span",null,_(r(t)("update date"))+": "+_(r(l)(r(o).time*1e3)||"null"),1)])])]),i("div",bn,[r(o).tutorial?(p(),d("a",{key:0,class:"app-btn cbi-button cbi-button-apply",target:"_blank",href:r(o).tutorial},_(r(t)("tutorial")),9,$n)):r(o).website?(p(),d("a",{key:1,class:"app-btn cbi-button cbi-button-apply",target:"_blank",href:r(o).website},_(r(t)("website")),9,yn)):D("",!0),xn,r(o).installed?(p(),d(E,{key:2},[!r(o).broken&&(((ve=r(o))==null?void 0:ve.curVersion)!=((ge=r(o))==null?void 0:ge.lastVersion)||((fe=r(o))==null?void 0:fe.curRelease)!=((me=r(o))==null?void 0:me.lastRelease))?(p(),d(E,{key:0},[Cn,i("a",{class:"app-btn cbi-button cbi-button-reload",onClick:k[2]||(k[2]=U=>u(r(o).name))},_(r(t)("upgrade")),1)],64)):D("",!0),Sn,!r(o).broken&&r(o).entry?(p(),d("a",{key:1,class:"app-btn cbi-button cbi-button-apply",href:r(o).entry},_(r(t)("open")),9,An)):D("",!0),Ln,i("a",{class:"app-btn cbi-button cbi-button-remove",onClick:k[3]||(k[3]=U=>h(r(o).name))},_(r(t)("uninstall")),1)],64)):(p(),d("a",{key:3,class:"app-btn cbi-button cbi-button-add",onClick:k[4]||(k[4]=U=>c(r(o).name,r(o).depends.indexOf("docker-deps")!=-1))},_(r(t)("install")),1))]),i("span",{class:"fav-icon-i",onClick:k[5]||(k[5]=U=>ne(r(o).name)),title:r(t)("Stick to the top")},"\u21EA",8,Tn)])}}};var Pn=C(In,[["__scopeId","data-v-e48bab18"]]);const Dn={class:"containers"},En={props:{apps:{type:Array,default(){return[]}}},setup(n){const e=n,t=P(()=>e.apps);return(s,o)=>(p(),d("div",Dn,[(p(!0),d(E,null,K(r(t),a=>(p(),Q(Pn,{key:a.name,col:a},null,8,["col"]))),128))]))}};var Ae=C(En,[["__scopeId","data-v-0708f588"]]);const On={class:"cbi-section"},Mn={setup(n){const e=z(),t=P(()=>e.getters["apps/LocalApps"]);return(s,o)=>(p(),d("fieldset",On,[O(Ae,{class:"app-list-installed",apps:r(t)},null,8,["apps"])]))}};var Bn=C(Mn,[["__scopeId","data-v-bb2340b4"]]);const Fn={class:"sort-container"},Vn={class:"sort-title"},zn={class:"sort-value"},Un=["value","onClick"],Rn={setup(n){const{$gettext:e}=B(),t=x("default"),s=z(),o=x([{key:e("default"),value:"default"},{key:e("By download"),value:"download"},{key:e("By rating"),value:"star"},{key:e("Latest update"),value:"updateDate"}]),a=l=>{t.value=l,s.dispatch("apps/filterCurApps",{sort:l})};return(l,u)=>(p(),d("div",Fn,[i("div",Vn,_(r(e)("order"))+":",1),i("div",zn,[(p(!0),d(E,null,K(o.value,c=>(p(),d("input",{key:c.value,class:q(["cbi-button",{"cbi-button-apply":t.value==c.value}]),type:"button",value:c.key,onClick:h=>a(c.value)},null,10,Un))),128))])]))}};var Gn=C(Rn,[["__scopeId","data-v-9f592bc6"]]);const Hn={class:"tags-container"},Kn={class:"tags-title"},Nn={class:"tags-value"},Wn=["value"],Zn=["value","onClick"],qn={setup(n){const{$gettext:e}=B(),t=x("default"),s=z(),o=P(()=>s.getters["tags/Tags"]),a=l=>{t.value=l,s.dispatch("apps/filterCurApps",{tag:l})};return(l,u)=>(p(),d("div",Hn,[i("div",Kn,_(r(e)("tag"))+": ",1),i("div",Nn,[i("input",{class:q(["cbi-button",{"cbi-button-apply":t.value=="default"}]),type:"button",value:r(e)("default"),onClick:u[0]||(u[0]=c=>a("default"))},null,10,Wn),(p(!0),d(E,null,K(r(o),c=>(p(),d("input",{key:c,class:q(["cbi-button",{"cbi-button-apply":t.value==c}]),type:"button",value:r(Se)(c),onClick:h=>a(c)},null,10,Zn))),128))])]))}};var Jn=C(qn,[["__scopeId","data-v-07bccc36"]]);const Yn=["onSubmit"],Qn=["placeholder"],Xn={setup(n){const{$gettext:e}=B(),t=x(""),s=z(),o=()=>{s.dispatch("apps/filterCurApps",{search:t.value})};return(a,l)=>{const u=Z("svg-search");return p(),d("form",{class:"search",onSubmit:Ce(o,["prevent"])},[i("a",{class:"search-btn",onClick:o},[O(u)]),X(i("input",{type:"text",placeholder:r(e)("please enter the search keyword"),"onUpdate:modelValue":l[0]||(l[0]=c=>t.value=c)},null,8,Qn),[[xe,t.value,void 0,{trim:!0}]])],40,Yn)}}};var jn=C(Xn,[["__scopeId","data-v-c4e8a9f2"]]);const es={key:1,style:{margin:"10px 0","text-align":"center",width:"100%"}},ts={setup(n){const{$gettext:e}=B(),t=z(),s=P(()=>t.getters["apps/StoreApps"]),o=P(()=>t.state.apps.Load);return(a,l)=>r(o)?(p(),Q(Ae,{key:0,apps:r(s)},null,8,["apps"])):(p(),d("span",es,_(r(e)("loading data"))+"...",1))}},ns={class:"cbi-section"},ss={setup(n){return(e,t)=>(p(),d("fieldset",ns,[O(jn),O(Jn),O(Gn),O(ts)]))}};var os=C(ss,[["__scopeId","data-v-74b0669f"]]);const as=n=>(ee("data-v-0b0723c2"),n=n(),te(),n),rs={class:"cbi-section"},cs={class:"container_msg cbi-map-descr"},is=["onSubmit"],ls={class:"upload-file"},us={class:"button"},ps=as(()=>i("div",{class:"auto"},null,-1)),ds={setup(n){const{$gettext:e}=B(),t=x(null),s=x(null);Fe(()=>{if(t.value){const u=t.value;u.addEventListener("dragenter",c=>{(c.fromElement===null||!u.contains(c.fromElement))&&console.log("dragenter")},!1),u.addEventListener("dragleave",c=>{(c.fromElement===null||!u.contains(c.fromElement))&&console.log("dragleave")},!1),u.addEventListener("dragover",c=>{c.preventDefault(),c.dataTransfer.dropEffect="link"},!1),u.addEventListener("drop",c=>{console.log("drop"),c.preventDefault(),o(c)},!1)}});const o=u=>{const c=u.dataTransfer.files;if(c&&c.length>0){const h=c[0];l(h);return}},a=u=>{const c=u.target.files;if(c&&c.length>0){const h=c[0];l(h);return}},l=u=>{if(u.name.endsWith(".run")||u.name.endsWith(".ipk")){let c=new FormData;c.append(u.name,u),V.Start(`${e("uploading")}...`),$.uploadAppIPK(c).then(h=>{let T=h.stderr;h.code!==0?Toast({content:`${T}
-${e("offline installation failed with error code")}: ${h.code}`,keep:!0}):window.istore_log(!0)}).catch(h=>{Toast({content:`${e("offline installation failed with error code")}: ${500}`,keep:!0})}).finally(()=>{V.Stop()})}};return(u,c)=>{var h;return p(),d("fieldset",rs,[i("div",cs,[i("span",null,_(r(e)("offline install")),1),i("span",null,"\xB7 "+_(r(e)("in this page, you can upload and install packages")),1),i("span",null,"\xB7 "+_(r(e)("supports .ipk packages, .run self-extracting packages")),1),i("span",null,"\xB7 "+_(r(e)("packages installed offline may not appear in iStore")),1)]),i("form",{onSubmit:Ce(l,["prevent"])},[i("div",{class:"flex",ref_key:"upl",ref:t},[i("label",ls,[i("span",null,_(((h=s.value)==null?void 0:h.name)||r(e)("no files selected")),1),i("input",{type:"file",name:"file",accept:".ipk, .run",hidden:"",onChange:a},null,32),i("div",us,_(r(e)("select or drag and drop files")),1)]),ps],512)],40,is)])}}};var _s=C(ds,[["__scopeId","data-v-0b0723c2"]]);const hs={class:"cbi-section"},vs={class:"webapp-container"},gs=["src"],fs={setup(n){const e=P(()=>""),t=P(()=>""),s=P(()=>`${L.getIframeURL()}/#/apps?token=${t.value}&deviceId=${e.value}`);return(o,a)=>(p(),d("fieldset",hs,[i("div",vs,[i("iframe",{src:r(s),sandbox:"allow-scripts allow-same-origin allow-popups",seamless:""},null,8,gs)])]))}};var ms=C(fs,[["__scopeId","data-v-8e330954"]]);const ks={class:"log-containers"},ws={key:0,class:"containers-tit"},bs={key:1,class:"containers-tit"},$s=["value"],ys={key:1},xs={setup(n){const{$gettext:e}=B(),t=z(),s=P(()=>t.state.version),o=P(()=>t.state.versionLoad),a=()=>{V.Start(`${e("updateing")}...`),$.selfUpdateIstore().then(({data:l})=>{if(l){const{stdout:u,stderr:c,code:h}=l;if(h==0){b({content:`${e("update success, reloading")}...`,keep:!0}),t.dispatch("istoreUpdated"),setTimeout(()=>{location.href=location.href},1e3);return}else throw c||"unknown error"}throw"unknown error"}).catch(l=>{b(`${e("update error")}: ${l}`)}).finally(()=>{V.Stop()})};return(l,u)=>(p(),d("div",ks,[r(o)?(p(),d("div",bs,[r(s)?(p(),d(E,{key:0},[i("span",null,_(r(e)("last version"))+":"+_(r(s)),1),i("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:u[0]||(u[0]=c=>a()),value:r(e)("click to update")},null,8,$s)],64)):(p(),d("span",ys,_(r(e)("the is last version"))+"...",1))])):(p(),d("div",ws,_(r(e)("checking for latest version")),1))]))}};var Cs=C(xs,[["__scopeId","data-v-8ac6e0ca"]]);const Ss={class:"log-containers"},As={class:"containers-tit"},Ls=["disabled","value"],Ts=["disabled","value"],Is={setup(n){const{$gettext:e}=B(),t=z(),s=P(()=>t.state.apps.Cur.hide_docker),o=P(()=>t.state.apps.Cur.ignore_arch),a=x(!1),l=()=>{a.value=!0;let c=!s.value;window.istore_config.hide_docker=c,t.dispatch("apps/filterCurApps",{hide_docker:c}),$.toggleDocker(c).finally(()=>{a.value=!1})},u=()=>{a.value=!0;let c=!o.value;window.istore_config.ignore_arch=c,t.dispatch("apps/filterCurApps",{ignore_arch:c}),$.toggleArch(c).finally(()=>{a.value=!1})};return(c,h)=>(p(),d("div",Ss,[i("div",As,[i("input",{disabled:a.value,type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:h[0]||(h[0]=T=>l()),value:r(s)?r(e)("show docker packages"):r(e)("hide docker packages")},null,8,Ls),i("input",{disabled:a.value,type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:h[1]||(h[1]=T=>u()),value:r(o)?r(e)("hide incompatible packages"):r(e)("show incompatible packages")},null,8,Ts)])]))}};var Ps=C(Is,[["__scopeId","data-v-3388f69c"]]);const Ds={class:"Lightweight"},Es={class:"Lightweight-container"},Os={class:"model"},Ms={class:"Lightweight-container1"},Bs={class:"container1-center"},Fs={class:"Lightweight-tit"},Vs={class:"Lightweight-backup"},zs=["value"],Us=["value"],Rs={setup(n){const{$gettext:e}=B(),t=x(null),s=()=>{const u=e("backuping"),c=e("backup success"),h=e("backup fail"),T=e("click to download");V.Start(`${u}...`),$.lightBackup().then(M=>{if(M){const{msg:N,code:W}=M;if(W==200){b({content:`${c}\uFF0C${T}
`,keep:!0,html:!0});return}else throw N||"unknown error"}throw"unknown error"}).catch(M=>{b(`${h} : ${M}`)}).finally(()=>{V.Stop()})},o=u=>{const c=u.target.files;if(c&&c.length>0){const h=c[0];a(h);return}},a=u=>{let c=new FormData;c.append(u.name,u),V.Start(`${e("uploading")}...`),$.lightRestore(c).then(h=>{let T=h.stderr;h.code!==0?b({content:`${T}
-${e("restore failed with error code")}: ${h.code}`,keep:!0}):window.istore_log(!0)}).catch(h=>{b({content:`${e("restore failed with error code")}: ${500}`,keep:!0})}).finally(()=>{V.Stop()})},l=u=>{t.value.click(u),u.preventDefault()};return(u,c)=>(p(),d("div",Ds,[i("div",Es,[i("div",Os,_(r(e)("explain")),1),i("div",Ms,[i("div",Bs,[i("div",Fs,[i("span",null,"\xB7 "+_(r(e)("backup now will download a list of iStore installed software")),1),i("span",null,"\xB7 "+_(r(e)("upload software list and install from iStore when restoring backup")),1)]),i("div",Vs,[i("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:s,value:r(e)("backup now")},null,8,zs),i("input",{type:"file",name:"file",accept:".tar, .gz",hidden:"",onChange:o,ref_key:"upl",ref:t},null,544),i("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:l,value:r(e)("restore backup")},null,8,Us)])])])])]))}};var Gs=C(Rs,[["__scopeId","data-v-a4c06ae8"]]);const Hs={class:"local"},Ks={class:"local-container"},Ns={class:"model"},Ws={class:"local-container1"},Zs={class:"container1-center"},qs={class:"local-tit"},Js={class:"local-device"},Ys={class:"local-input"},Qs={value:"",disabled:""},Xs=["value"],js={value:"-"},eo=["onKeyup","placeholder"],to={key:2,class:"local-btn"},no=["value"],so=["value"],oo={key:0,class:"device-list"},ao=["value"],ro=["value"],co={setup(n){const{$gettext:e}=B(),t=e("backup now backs up installed software (unlimited installation sources) to external storage"),s=x([]),o=x("-");let a="-";const l=x(!1),u=x([]),c=x(""),h=x(""),T=x(),M=(f,g)=>{if(!(g===""||g==="-"||f.find(v=>v.path===g))){let v;f.filter(A=>A.mount&&A.dev&&g.startsWith(A.mount)).forEach(A=>{v&&v.mount.length>A.mount.length||(v=A)}),f.push({path:g,size:v?v.size:void 0})}s.value=f,g!=="-"&&(o.value=g,N())};o.value=="-"&&($.localBackupdirPath().then(f=>{if(f){const{code:g,msg:v}=f;g==200&&M(s.value,v)}}),$.getBlockDevices().then(f=>{if(f&&f.code==200){const g=f.data,v=[];for(let A in g){const F=g[A];F.mount&&F.mount!="/"&&F.mount!="/rom"&&F.mount!="/overlay"&&v.push(F)}v.forEach(A=>{A.path=A.mount+"/istore_backup"}),M(v,v.length>0&&o.value==="-"?"":o.value)}}));const N=f=>{l.value=!1,o.value==="-"?(a!="-"&&(h.value=a),T.value.focus()):a=o.value},W=f=>{h.value==""?a!="-"?o.value=a:o.value="":h.value.startsWith("/")?M(s.value,h.value):(b(e("please enter the path, give up the input, please clear the input box")),T.value.setSelectionRange(0,h.value.length),T.value.focus())},Y=()=>o.value.length>1&&o.value.endsWith("/")?o.value.substring(0,o.value.length-1):o.value,ne=()=>{let f=Y();if(f==""){b(e("please fill in the external storage directory"));return}l.value=!1,$.backupFileList(f).then(g=>{if(g){const{code:v,msg:A}=g;if(v==200){let F=JSON.parse(A);F.length==0?(b(e("there are no backup files in this path")),l.value=!1):(u.value=F,l.value=!0);return}throw A||"unknown error"}throw"unknown error"}).catch(g=>{b(g)})},m=()=>{let f=Y();if(f==""){b(e("please fill in the external storage directory"));return}$.localBackup(f).then(g=>{let v=g.stderr;g.code!==0?b({content:`${v}
-${e("backup fail with error code")}: ${g.code}`,keep:!0}):window.istore_log(!1)}).catch(g=>{b({content:`${e("backup fail with error code")}: ${500}`,keep:!0})})},k=f=>o.value.endsWith("/")?o.value+f:o.value+"/"+f,I=()=>{if(c.value===""){b(e("please select a backup file to restore"));return}$.localRestore(k(c.value)).then(f=>{let g=res.stderr;res.code!==0?b({content:`${g}
-${e("restore failed with error code")}: ${res.code}`,keep:!0}):window.istore_log(!0)}).catch(f=>{b({content:`${e("restore failed with error code")}: ${500}`,keep:!0})})};return(f,g)=>(p(),d("div",Hs,[i("div",Ks,[i("div",Ns,_(r(e)("explain")),1),i("div",Ws,[i("div",Zs,[i("div",qs,[i("span",null,"\xB7 "+_(r(e)(r(t))),1),i("span",null,"\xB7 "+_(r(e)("no internet required for recovery")),1)]),i("div",Js,_(r(e)("external storage directory"))+" \uFF1A ",1),i("div",Ys,[o.value!="-"?X((p(),d("select",{key:0,class:"local-input-field",onChange:N,"onUpdate:modelValue":g[0]||(g[0]=v=>o.value=v)},[i("option",Qs,_(r(e)("choose")),1),(p(!0),d(E,null,K(s.value,(v,A)=>(p(),d("option",{value:v.path,key:A},_(v.path+(v.size?"\uFF08"+v.size+"\uFF09":"")),9,Xs))),128)),i("option",js,_(r(e)("customize")),1)],544)),[[be,o.value,void 0,{trim:!0}]]):X((p(),d("input",{key:1,class:"local-input-field",onBlur:W,onKeyup:Ve(W,["enter"]),placeholder:r(e)("please enter an absolute path starting with %{name}",{name:"/"}),type:"text","onUpdate:modelValue":g[1]||(g[1]=v=>h.value=v),ref_key:"user_input",ref:T},null,40,eo)),[[xe,h.value,void 0,{trim:!0}]]),o.value!="-"&&o.value!=""?(p(),d("div",to,[i("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:m,value:r(e)("backup now")},null,8,no),i("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:ne,value:r(e)("restore backup")},null,8,so)])):D("",!0)]),l.value?(p(),d("div",oo,[i("div",null,_(r(e)("choose backup file"))+" \uFF1A",1),X(i("select",{"onUpdate:modelValue":g[2]||(g[2]=v=>c.value=v)},[(p(!0),d(E,null,K(u.value,v=>(p(),d("option",{key:v,value:v},_(v),9,ao))),128))],512),[[be,c.value,void 0,{trim:!0}]]),i("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:I,value:r(e)("restore now")},null,8,ro)])):D("",!0)])])])]))}};var io=C(co,[["__scopeId","data-v-67b754ac"]]);const lo={class:"cbi-map"},uo={class:"cbi-section"},po={class:"panel-title"},_o={class:"cbi-section"},ho={class:"panel-title"},vo={key:0,class:"cbi-section"},go={class:"panel-title"},fo={class:"cbi-tabmenu"},mo={onclick:"false",href:"#"},ko={onclick:"false",href:"#"},wo={setup(n){const{$gettext:e}=B(),t=x(2);return(s,o)=>(p(),d("div",lo,[i("fieldset",uo,[i("span",po,_(r(e)("upgrade"))+" iStore",1),O(Cs)]),i("fieldset",_o,[i("span",ho,_(r(e)("config"))+" iStore",1),O(Ps)]),r(re)("backup")?(p(),d("fieldset",vo,[i("span",go,_(r(e)("app backup")),1),i("ul",fo,[i("li",{class:q(t.value==2?"cbi-tab":"cbi-tab-disabled"),onClick:o[0]||(o[0]=a=>t.value=2)},[i("a",mo,_(r(e)("light backup")),1)],2),i("li",{class:q(t.value==3?"cbi-tab":"cbi-tab-disabled"),onClick:o[1]||(o[1]=a=>t.value=3)},[i("a",ko,_(r(e)("local backup")),1)],2)]),t.value==2?(p(),Q(Gs,{key:0})):D("",!0),t.value==3?(p(),Q(io,{key:1})):D("",!0)])):D("",!0)]))}},bo=ze({history:Ue(L.BasePage()),routes:[{path:"/",redirect:"/installed"},{path:"/installed",name:"Installed",component:Bn},{path:"/store",name:"Store",component:os},{path:"/upload",name:"Upload",component:_s},{path:"/webapps",name:"Webapps",component:ms},{path:"/maintance",name:"Maintance",component:wo},{path:"/:pathMatch(.*)*",name:"notfound",redirect:"/"}]});var $o={namespaced:!0,state:{Load:!1,LocalApps:[],StoreApps:[],Expand:{},Cur:{tag:"default",sort:"default",search:"",limit:30,offset:0,hide_docker:window.istore_config.hide_docker||!1,ignore_arch:window.istore_config.ignore_arch||!1,super_arch:window.istore_config.super_arch},LocalAppsMap:{},StoreAppsMap:{}},mutations:{setExpand(n,e){n.Expand=e},setLocalApps(n,e){e=e||[],n.LocalAppsMap={},e.forEach(o=>{n.LocalAppsMap[o.name]=o});const t=[],s=JSON.parse(window.localStorage&&window.localStorage.getItem("istore.tops")||"[]");s.forEach(o=>{const a=n.LocalAppsMap[o];a&&t.push(a)}),e.sort((o,a)=>a.time-o.time),e.forEach(o=>{s.indexOf(o.name)==-1&&t.push(o)}),n.LocalApps=t},setStoreApps(n,e){n.StoreApps=e||[],e.forEach(t=>{n.StoreAppsMap[t.name]=t})},setCur(n,e){for(const t in e)Object.hasOwnProperty.call(e,t)&&(n.Cur[t]=e[t])}},getters:{Cur(n){return n.Cur},LocalApps(n){let e=[...n.LocalApps],t=n.Expand;for(let s=0;s((a==null?void 0:a.depends)||[]).indexOf("luci-js-deps")==-1));let t=n.Expand;for(let a=0;a((a==null?void 0:a.depends)||[]).indexOf("docker-deps")==-1)),!n.Cur.ignore_arch&&n.Cur.super_arch&&(e=e.filter(a=>{const l=(a==null?void 0:a.arch)||["all"];return l.indexOf("all")!=-1?!0:l.indexOf(n.Cur.super_arch)!=-1}));let s=n.Cur.tag;s!="default"&&(e=e.filter(a=>((a==null?void 0:a.tags)||[]).indexOf(s)!=-1));let o=n.Cur.search;switch(o&&(e=e.filter(a=>{let l=JSON.stringify(a);return new RegExp(o,"i").test(l)})),n.Cur.sort){case"download":e=e.sort((a,l)=>{var u,c;return(((u=l==null?void 0:l.expand)==null?void 0:u.downloadCount)||0)-(((c=a==null?void 0:a.expand)==null?void 0:c.downloadCount)||0)});break;case"star":e=e.sort((a,l)=>{var u,c;return(((u=l==null?void 0:l.expand)==null?void 0:u.starCount)||0)-(((c=a==null?void 0:a.expand)==null?void 0:c.starCount)||0)});break;case"updateDate":e=e.sort((a,l)=>l.time-a.time);break}return e}},actions:{incrAppDownload(n,e){const{state:t}=n;t.Expand[e==null?void 0:e.name]&&t.Expand[e==null?void 0:e.name].downloadCount++},incrAppStar(n,e){const{state:t}=n;t!=null&&t.Expand[e==null?void 0:e.name]&&(t.Expand[e==null?void 0:e.name].starCount++,t.Expand[e==null?void 0:e.name].isStar=!0)},filterCurApps(n,e){const{commit:t,dispatch:s}=n;t("setCur",e)},getApps(n){const{state:e,dispatch:t}=n;t("getLocalApps"),t("getStoreApps",e.Cur)},getLocalApps(n){const{commit:e}=n;$.getInstalledApp().then(t=>{t.forEach(s=>{s.installed=!0}),e("setLocalApps",t)})},getStoreApps(n,e){const{state:t,commit:s,dispatch:o}=n,a={deviceId:L.getDeviceId(),arch:L.modelArch(),ver:L.getVersion(),feature:L.getFeatures().join(",")};let l=[];$.postStoreAppList(e,a).then(u=>{u.apps&&(u.apps.forEach(c=>{l.push(c.name)}),o("getStoreAppsExpand",l),s("setStoreApps",u.apps)),t.Load=!0}).catch(u=>{console.log(u)})},getStoreAppsExpand(n,e){const{commit:t}=n;$.getAppExpandData(e).then(s=>{s&&t("setExpand",s)})},stickTop(n,e){if(!window.localStorage)return;const t=JSON.parse(window.localStorage.getItem("istore.tops")||"[]");if(t.length>0&&t[0]==e)return;const s=[e];t.forEach(l=>{l!=e&&s.push(l)}),window.localStorage.setItem("istore.tops",JSON.stringify(s));const{state:o,commit:a}=n;a("setLocalApps",o.LocalApps)}}},yo={namespaced:!0,state:{Tags:[],Total:0},mutations:{},getters:{Tags(n){return n.Tags},Total(n){return n.Total}},actions:{getTags(n){const{state:e,commit:t}=n;$.getStoreTags().then(s=>{e.Tags=(s==null?void 0:s.tags)||[],e.Total=(s==null?void 0:s.total)||0})}}},xo=Re({state:{version:"",versionLoad:!1},mutations:{setVersion(n,e){n.version=e},setVersionLoad(n,e){n.versionLoad=e}},modules:{apps:$o,tags:yo},actions:{getData(n){const{dispatch:e}=n;e("tags/getTags"),e("apps/getApps"),e("getVersion")},getVersion(n){return w(this,null,function*(){const{commit:e}=n;try{const t=yield $.updateIstore(),{code:s,msg:o}=t==null?void 0:t.data;s==200&&e("setVersion",o)}catch(t){console.log(t)}e("setVersionLoad",!0)})},istoreUpdated(n){const{commit:e}=n;e("setVersion","")}}});const Co={},So={width:"16px",height:"16px",viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Ao=i("path",{d:"M14.9234958,14.5525054 L10.84453,10.4679606 C11.8849284,9.46327833 12.5294813,8.07823887 12.5294813,6.55073066 C12.5294813,3.48989918 9.94358337,1 6.76474066,1 C3.58589795,1 1,3.48989918 1,6.55073066 C1,9.61156213 3.58589795,12.1014613 6.76474066,12.1014613 C8.16008242,12.1014613 9.44067838,11.621191 10.438802,10.8242646 L14.5276502,14.9188536 C14.5814545,14.9730393 14.6533765,15 14.725573,15 C14.7942009,15 14.8625542,14.9754182 14.9158095,14.9262546 C15.025065,14.8250198 15.0283592,14.6577049 14.9234958,14.5525054 Z M6.76474066,11.5728203 C3.8886841,11.5728203 1.54902292,9.32001661 1.54902292,6.55073066 C1.54902292,3.7814447 3.8886841,1.52864101 6.76474066,1.52864101 C9.64079723,1.52864101 11.9804584,3.7814447 11.9804584,6.55073066 C11.9804584,9.32001661 9.64052272,11.5728203 6.76474066,11.5728203 Z",id:"Shape",stroke:"#FFFFFF","stroke-width":"1.3"},null,-1),Lo=[Ao];function To(n,e,t,s,o,a){return p(),d("svg",So,Lo)}var Io=C(Co,[["render",To]]);const Po={},Do={width:"12px",height:"12px",viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Eo=i("path",{d:"M10.171916,3.81818329 C10.6519813,3.81274681 11.1102149,4.01840688 11.4252438,4.38069009 C11.7402726,4.74297329 11.8803105,5.2253253 11.8081406,5.70080197 L11.0555552,10.608963 C10.9332063,11.4157454 10.2351606,12.0090843 9.42537185,12 L3.27269856,12 C2.97145497,12 2.7272488,11.7556885 2.7272488,11.454445 L2.7272488,5.4544976 C2.7272488,5.37817917 2.74326442,5.30271013 2.77426027,5.23296947 L4.95605931,0.323921631 C5.04360472,0.126944443 5.23894201,0 5.4544976,0 C6.65947193,0 7.63629663,0.976824702 7.63629663,2.18179904 L7.63629663,3.81815451 L10.171916,3.81818329 Z M3.81814832,10.9090654 L9.43153778,10.9090654 C9.70352269,10.9121048 9.93620458,10.7143252 9.97712277,10.4445109 L10.7297188,5.53628009 C10.7537339,5.3780602 10.7070546,5.2172762 10.602045,5.09651513 C10.4970353,4.97575406 10.3442908,4.9072007 10.1780925,4.90904784 L7.09084687,4.90904784 C6.78960329,4.90904784 6.54539711,4.66484166 6.54539711,4.36359808 L6.54539711,2.18179904 C6.54539711,1.69494967 6.22647822,1.2825878 5.78615711,1.14223013 L3.81814832,5.57024992 L3.81814832,10.9090654 Z M2.7272488,5.99994736 L1.63634928,5.99994736 C1.33510569,5.99994736 1.09089952,6.24415353 1.09089952,6.54539711 L1.09089952,10.3635454 C1.09089952,10.664789 1.33510569,10.9089952 1.63634928,10.9089952 L2.7272488,10.9089952 L2.7272488,5.99994736 Z M3.27269856,11.9998947 L1.63634928,11.9998947 C0.732618527,11.9998947 -1.03028697e-13,11.2672762 -1.03028697e-13,10.3635454 L-1.03028697e-13,6.54539711 C-1.03028697e-13,5.64166636 0.732618527,4.90904784 1.63634928,4.90904784 L3.27269856,4.90904784 C3.57394214,4.90904784 3.81814832,5.15325401 3.81814832,5.4544976 L3.81814832,11.454445 C3.81814832,11.7556885 3.57394214,11.9998947 3.27269856,11.9998947 Z",id:"Shape",fill:"#FFFFFF","fill-rule":"nonzero"},null,-1),Oo=[Eo];function Mo(n,e,t,s,o,a){return p(),d("svg",Do,Oo)}var Bo=C(Po,[["render",Mo]]);const Fo={},Vo={width:"12px",height:"12px",viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},zo=i("path",{d:"M10.171916,3.81818329 C10.6519813,3.81274681 11.1102149,4.01840688 11.4252438,4.38069009 C11.7402726,4.74297329 11.8803105,5.2253253 11.8081406,5.70080197 L11.0555552,10.608963 C10.9332063,11.4157454 10.2351606,12.0090843 9.42537185,12 L3.27269856,12 C2.97145497,12 2.7272488,11.7556885 2.7272488,11.454445 L2.7272488,5.4544976 C2.7272488,5.37817917 2.74326442,5.30271013 2.77426027,5.23296947 L4.95605931,0.323921631 C5.04360472,0.126944443 5.23894201,0 5.4544976,0 C6.65947193,0 7.63629663,0.976824702 7.63629663,2.18179904 L7.63629663,3.81815451 L10.171916,3.81818329 Z M3.27269856,11.9998947 L1.63634928,11.9998947 C0.732618527,11.9998947 0,11.2672762 0,10.3635454 L0,6.54539711 C0,5.64166636 0.732618527,4.90904784 1.63634928,4.90904784 L3.27269856,4.90904784 C3.57394214,4.90904784 3.81814832,5.15325401 3.81814832,5.4544976 L3.81814832,11.454445 C3.81814832,11.7556885 3.57394214,11.9998947 3.27269856,11.9998947 Z",id:"Shape",fill:"#FFE45A","fill-rule":"nonzero"},null,-1),Uo=[zo];function Ro(n,e,t,s,o,a){return p(),d("svg",Vo,Uo)}var Go=C(Fo,[["render",Ro]]);const Ho={},Ko={viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",width:"20",height:"20"},No=i("title",null,"Docker",-1),Wo=i("path",{fill:"currentColor",d:"M560.86064 480h-105.6v-94.4H560.86064V480z m0-326.4h-105.6v97.6H560.86064V153.6z m124.8 232h-105.6V480h105.6v-94.4z m-249.6-115.2h-105.6v96h105.6v-96z m124.8 0h-105.6v96H560.86064v-96z m443.2 160c-22.4-16-76.8-20.8-116.8-12.8-4.8-38.4-27.2-72-65.6-102.4l-22.4-14.4-14.4 22.4c-28.8 44.8-36.8 118.4-6.4 166.4-14.4 8-41.6 17.6-76.8 17.6H4.06064c-14.4 81.6 9.6 187.2 70.4 259.2 59.2 70.4 148.8 105.6 264 105.6 251.2 0 438.4-115.2 524.8-326.4 33.6 0 108.8 0 145.6-72 1.6-3.2 11.2-20.8 12.8-27.2l-17.6-16z m-817.6-44.8H80.86064V480h105.6v-94.4z m124.8 0h-105.6V480h105.6v-94.4z m124.8 0h-105.6V480h105.6v-94.4z m-124.8-115.2h-105.6v96h105.6v-96z"},null,-1),Zo=[No,Wo];function qo(n,e,t,s,o,a){return p(),d("svg",Ko,Zo)}var Jo=C(Ho,[["render",qo]]);const H=ae(Qe);H.component("svg-search",Io);H.component("svg-star-on",Bo);H.component("svg-star-off",Go);H.component("svg-docker",Jo);const Yo=()=>w(y,null,function*(){yield He(H),H.use(bo).use(xo),H.mount("#app")});Yo()});export default Qo();
+var Le=Object.defineProperty,Te=Object.defineProperties;var Ie=Object.getOwnPropertyDescriptors;var we=Object.getOwnPropertySymbols;var Pe=Object.prototype.hasOwnProperty,De=Object.prototype.propertyIsEnumerable;var ke=(n,e,t)=>e in n?Le(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,G=(n,e)=>{for(var t in e||(e={}))Pe.call(e,t)&&ke(n,t,e[t]);if(we)for(var t of we(e))De.call(e,t)&&ke(n,t,e[t]);return n},se=(n,e)=>Te(n,Ie(e));var Ee=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var k=(n,e,t)=>new Promise((o,s)=>{var a=c=>{try{u(t.next(c))}catch(h){s(h)}},l=c=>{try{u(t.throw(c))}catch(h){s(h)}},u=c=>c.done?o(c.value):Promise.resolve(c.value).then(a,l);u((t=t.apply(n,e)).next())});import{a as oe,c as Oe,u as F,b as z,d as P,r as Z,o as p,e as d,F as O,f as K,g as Q,w as Me,h as r,p as ee,i as te,j as i,t as _,k as D,n as q,l as M,m as Be,q as x,s as ae,v as ye,x as X,y as xe,z as Ce,A as Fe,B as be,C as Ve,D as ze,E as Ue,G as Re}from"./vendor.js?v=3831f804";var Qo=Ee(y=>{const Ge=function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const a of s)if(a.type==="childList")for(const l of a.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&o(l)}).observe(document,{childList:!0,subtree:!0});function t(s){const a={};return s.integrity&&(a.integrity=s.integrity),s.referrerpolicy&&(a.referrerPolicy=s.referrerpolicy),s.crossorigin==="use-credentials"?a.credentials="include":s.crossorigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function o(s){if(s.ep)return;s.ep=!0;const a=t(s);fetch(s.href,a)}};Ge();const j={tagMap:{},numberFormat:new Intl.NumberFormat("en",{notation:"compact"})},He=n=>k(y,null,function*(){const e=window.vue_lang;new Date().getTime();let t={};try{const a=yield oe({url:window.vue_lang_data,method:"GET"});a.data&&(t=a.data)}catch(a){console.log(a)}const o=Oe({defaultLanguage:e,translations:t,setGlobalProperties:!1,provideDirective:!1,provideComponent:!1});n.use(o);const{$gettext:s}=o;window.$i18n=s,j.tagMap={net:s("net"),tool:s("tool"),download:s("download"),service:s("service"),multimedia:s("multimedia"),nas:s("nas"),monitor:s("monitor"),system:s("system"),networking:s("networking"),broken:s("Broken")};try{j.numberFormat=new Intl.NumberFormat(e,{notation:"compact"})}catch(a){console.error("Intl.NumberFormat unsupported lang",e,a)}}),Se=n=>j.tagMap[n]||n,$e=n=>typeof n=="number"?j.numberFormat.format(n):"?";var C=(n,e)=>{const t=n.__vccOpts||n;for(const[o,s]of e)t[o]=s;return t};const Ke=n=>(ee("data-v-13251538"),n=n(),te(),n),We={class:"tabs"},Ne=["href","onClick"],Ze={key:0},qe=Ke(()=>i("div",{class:"auto"},null,-1)),Je={setup(n){const{$gettext:e}=F(),t=z(),o=P(()=>t.state.version),s=P(()=>[{to:"/installed",name:e("installed")},{to:"/store",name:e("all app")},{to:"/upload",name:e("manual install")},{to:"/maintance",name:e("maintain"),up:o.value}]);return(a,l)=>{const u=Z("router-link");return p(),d("ul",We,[(p(!0),d(O,null,K(r(s),c=>(p(),Q(u,{to:c.to,custom:"",key:c.to},{default:Me(({href:h,navigate:T,isActive:B})=>[i("li",{class:q(B&&"active cbi-tab")},[i("a",{href:h,onClick:T},_(c.name),9,Ne),c.up?(p(),d("span",Ze)):D("",!0)],2)]),_:2},1032,["to"]))),128)),qe])}}};var Ye=C(Je,[["__scopeId","data-v-13251538"]]);const Qe={setup(n){return z().dispatch("getData"),(t,o)=>{const s=Z("router-view");return p(),d(O,null,[M(Ye),M(s)],64)}}},Xe=()=>window.vue_base,je=()=>window.istore_api_base||"https://istore.istoreos.com",et=n=>{if(n)return Be(n).format("YYYY-MM-DD HH:mm:ss")},tt=()=>new Date().getTime(),nt=n=>{if(n<1024)return""+n+"KB";let t=1024,o=0;for(let a=n/1024;a>=1024;a/=1024)t*=1024,o++;let s=["M","G","T","P","E"];return(n/100/(t/100)).toFixed(2)+s[o]},st=n=>{if(n==null)return 0;if(n<1e4)return n;let t=parseInt(`${n/1e4}`),o=n%1e4;return`${t}\u4E07${o}`},ot=()=>window.token||"",at=()=>{var n;return((n=window==null?void 0:window.device_id)==null?void 0:n.uid)||""},rt=()=>{var n;return((n=window==null?void 0:window.istore_config)==null?void 0:n.channel)||""},ct=()=>{var n;return((n=window==null?void 0:window.device_id)==null?void 0:n.version)||""},it=()=>{var n;return((n=window==null?void 0:window.device_id)==null?void 0:n.arch)||""},lt=()=>"https://www.kooldns.cn/bind",ut=()=>window.istore_features||[];var pt=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",BasePage:Xe,ApiBaseURL:je,formatDate:et,UnixDate:tt,numberToSize:nt,numberToSum:st,getToken:ot,getDeviceId:at,getChannel:rt,getVersion:ct,modelArch:it,getIframeURL:lt,getFeatures:ut}),L=G({},pt);const S=oe.create({});S.interceptors.request.use(n=>(n.params==null&&(n.params={}),n.params=se(G({},n.params),{token:L.getToken(),_t:L.UnixDate()}),n),n=>n);S.interceptors.response.use(n=>n,n=>n);const R=oe.create({baseURL:L.ApiBaseURL()});R.interceptors.request.use(n=>(n.params==null&&(n.params={}),n.params=se(G({},n.params),{modelArch:L.modelArch(),deviceId:L.getDeviceId(),channel:L.getChannel(),_t:L.UnixDate()}),n),n=>n);R.interceptors.response.use(n=>n);const dt=()=>new Promise((n,e)=>k(y,null,function*(){try{const t=yield S({method:"GET",url:"/cgi-bin/luci/admin/store/installed"});if(t.status==200){n(t.data);return}e(t.status);return}catch(t){e(t);return}})),_t=(n,e)=>new Promise((t,o)=>k(y,null,function*(){const s={package:n};e&&(s.autoconf=1,s.path=e.path,s.enable=e.enable);try{const a=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/install",params:s});if(a.status==200){t(a.data);return}o(a.status);return}catch(a){o(a);return}})),ht=n=>new Promise((e,t)=>k(y,null,function*(){try{const o=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/upgrade",params:{package:n}});if(o.status==200){e(o.data);return}t(o.status);return}catch(o){t(o);return}})),vt=n=>new Promise((e,t)=>k(y,null,function*(){try{const o=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/remove",params:{package:n}});if(o.status==200){e(o.data);return}t(o.status);return}catch(o){t(o);return}})),gt=()=>new Promise((n,e)=>k(y,null,function*(){try{const t=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/update"});if(t.status==200){n(t.data);return}e(t.status);return}catch(t){e(t);return}})),ft=n=>new Promise((e,t)=>k(y,null,function*(){try{const o=yield S({method:"GET",url:"/cgi-bin/luci/admin/store/status",params:{package:n}});if(o.status==200){e(o.data);return}t(o.status);return}catch(o){t(o);return}})),mt=n=>new Promise((e,t)=>k(y,null,function*(){try{const o=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/upload",headers:{"Content-Type":"multipart/form-data"},data:n});if(o.data){e(o.data);return}}catch(o){t(o);return}t("not found soft")})),wt=()=>new Promise((n,e)=>k(y,null,function*(){try{const t=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/light_backup"});if(t.status==200){n(t.data);return}e(t.status);return}catch(t){e(t);return}})),kt=n=>new Promise((e,t)=>k(y,null,function*(){try{const o=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/light_restore",headers:{"Content-Type":"multipart/form-data"},data:n});if(o.data){e(o.data);return}}catch(o){t(o);return}t("not found soft")})),bt=n=>new Promise((e,t)=>k(y,null,function*(){try{const o=yield S({method:"GET",url:"/cgi-bin/luci/admin/store/get_available_backup_file_list",params:{path:n}});if(o.status==200){e(o==null?void 0:o.data);return}t(o.status);return}catch(o){t(o);return}})),$t=()=>new Promise((n,e)=>k(y,null,function*(){try{const t=yield S({method:"GET",url:"/cgi-bin/luci/admin/store/get_local_backup_dir_path"});if(t.status==200){n(t==null?void 0:t.data);return}e(t.status);return}catch(t){e(t);return}})),yt=(n,e)=>new Promise((t,o)=>k(y,null,function*(){try{const s=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/local_backup",params:{path:n,force:e}});if(s.status==200){t(s==null?void 0:s.data);return}o(s.status);return}catch(s){o(s);return}})),xt=n=>new Promise((e,t)=>k(y,null,function*(){try{const o=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/local_restore",params:{path:n}});if(o.status==200){e(o.data);return}t(o.status);return}catch(o){t(o);return}})),Ct=()=>new Promise((n,e)=>k(y,null,function*(){try{const t=yield S({method:"GET",url:"/cgi-bin/luci/admin/store/get_block_devices"});if(t.status==200){n(t==null?void 0:t.data);return}e(t.status);return}catch(t){e(t);return}})),St=n=>new Promise((e,t)=>k(y,null,function*(){try{const o=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/toggle_docker",params:{hide:n}});if(o.status==200){e(o.data);return}t(o.status);return}catch(o){t(o);return}})),At=n=>new Promise((e,t)=>k(y,null,function*(){try{const o=yield S({method:"POST",url:"/cgi-bin/luci/admin/store/toggle_arch",params:{ignore:n}});if(o.status==200){e(o.data);return}t(o.status);return}catch(o){t(o);return}}));var Lt=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",getInstalledApp:dt,installApp:_t,upgradeApp:ht,removeApp:vt,updateAppStore:gt,getAppStatus:ft,uploadAppIPK:mt,lightBackup:wt,lightRestore:kt,backupFileList:bt,localBackupdirPath:$t,localBackup:yt,localRestore:xt,getBlockDevices:Ct,toggleDocker:St,toggleArch:At});const Tt=n=>new Promise((e,t)=>k(y,null,function*(){var o,s,a,l;try{const u=yield R({method:"GET",url:"/api/store/list",params:n});if(((o=u==null?void 0:u.data)==null?void 0:o.success)===0){e((s=u==null?void 0:u.data)==null?void 0:s.result);return}if((a=u==null?void 0:u.data)!=null&&a.message){t((l=u==null?void 0:u.data)==null?void 0:l.message);return}t("error")}catch(u){console.log(u),t(u);return}})),It=(n,e)=>new Promise((t,o)=>k(y,null,function*(){var s,a,l,u;try{const c=yield R({method:"POST",url:"/api/store/list",params:n,data:e});if(((s=c==null?void 0:c.data)==null?void 0:s.success)===0){t((a=c==null?void 0:c.data)==null?void 0:a.result);return}if((l=c==null?void 0:c.data)!=null&&l.message){o((u=c==null?void 0:c.data)==null?void 0:u.message);return}o("error")}catch(c){console.log(c),o(c);return}})),Pt=L.ApiBaseURL(),Dt=n=>`${Pt}${n}`,Et=()=>new Promise((n,e)=>k(y,null,function*(){var t,o,s,a;try{const l=yield R({method:"GET",url:"/api/store/tags"});if(((t=l==null?void 0:l.data)==null?void 0:t.success)===0){n((o=l==null?void 0:l.data)==null?void 0:o.result);return}if((s=l==null?void 0:l.data)!=null&&s.message){e((a=l==null?void 0:l.data)==null?void 0:a.message);return}e("error")}catch(l){e(l);return}})),Ot=n=>new Promise((e,t)=>{R({method:"POST",url:"/api/store/expand",data:{appsId:n||[],deviceId:L.getDeviceId()}}).then(o=>{var s,a,l;if(((s=o.data)==null?void 0:s.success)==0&&((a=o.data)==null?void 0:a.result)){e((l=o.data)==null?void 0:l.result);return}t("not found expand")}).catch(o=>{t(o)})}),Mt=n=>{R({method:"POST",url:"/api/store/download",data:{appId:n,deviceId:L.getDeviceId()}}).then(e=>{var t;((t=e.data)==null?void 0:t.success)!=0})},Bt=n=>new Promise((e,t)=>{R({method:"POST",url:"/api/store/star",data:{appId:n,deviceId:L.getDeviceId()}}).then(o=>{var s;if(((s=o.data)==null?void 0:s.success)==0){e(o.data);return}t("not found expand")}).catch(o=>{t(o)})});var Ft=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",getStoreAppList:Tt,postStoreAppList:It,getStoreAppIcon:Dt,getStoreTags:Et,getAppExpandData:Ot,increasingDownloadCount:Mt,postStarApp:Bt});const Vt=()=>S({method:"GET",url:"/cgi-bin/luci/admin/store/check_self_upgrade"}),zt=()=>S({method:"POST",url:"/cgi-bin/luci/admin/store/do_self_upgrade"});var Ut=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",updateIstore:Vt,selfUpdateIstore:zt}),$=G(G(G({},Lt),Ft),Ut);const Rt={class:"toast"},Gt=["title"],Ht={key:1,class:"msg"},Kt=["innerHTML"],Wt={props:{content:String,type:String,Close:Function,keep:Boolean,html:Boolean},setup(n){const e=n,t=x(e.content),o=x(e.keep),s=x(e.html),a=x(window.$i18n);e.keep||setTimeout(()=>{e.Close()},2e3);const l=()=>{e.Close()};return(u,c)=>(p(),d("div",Rt,[o.value?(p(),d("div",{key:0,class:"toast-close",onClick:l,title:a.value("closed")},"x",8,Gt)):D("",!0),s.value?D("",!0):(p(),d("div",Ht,_(t.value),1)),s.value?(p(),d("div",{key:2,class:"msg",innerHTML:t.value},null,8,Kt)):D("",!0)]))}};var Nt=C(Wt,[["__scopeId","data-v-b05f92bc"]]);const b=n=>{let e={content:"",type:"",keep:!1,html:!1,Close:()=>{o.unmount(t),document.body.removeChild(t)}};n!=null&&(typeof n=="object"?(e.content=(n==null?void 0:n.content)||"",e.type=(n==null?void 0:n.type)||"",e.keep=(n==null?void 0:n.keep)||!1,e.html=(n==null?void 0:n.html)||!1):e.content=n);let t=document.createElement("div"),o=ae(Nt,e);document.body.append(t),o.mount(t),ye(()=>{o.unmount(t),document.body.removeChild(t)})},Zt={props:{content:String,Close:Function},setup(n){return{message:n.content}}},qt=n=>(ee("data-v-6d7664a4"),n=n(),te(),n),Jt={class:"loading"},Yt=qt(()=>i("div",{class:"icon"},null,-1)),Qt={class:"msg"};function Xt(n,e,t,o,s,a){return p(),d("div",Jt,[Yt,i("div",Qt,_(o.message),1)])}var jt=C(Zt,[["render",Xt],["__scopeId","data-v-6d7664a4"]]),V={props:{content:"",Close:()=>{}},Start(n){this.props={content:n,Close:()=>{e.unmount(t),document.body.removeChild(t)}};let e=ae(jt,this.props),t=document.createElement("div");document.body.append(t),e.mount(t),ye(()=>{this.props.Close()})},Stop(){this.props.Close()}};const re=n=>!Array.isArray(window.istore_features)||window.istore_features.indexOf(n)!=-1,J=n=>(ee("data-v-b0655b7c"),n=n(),te(),n),en={class:"app-container"},tn={class:"app-info"},nn={class:"app-f"},sn={class:"app-icon"},on=["alt","src"],an={key:0,class:"docker-icon-i"},rn={class:"app-tags"},cn={class:"tag"},ln=J(()=>i("span",{class:"block"},"\uFF5C",-1)),un={class:"app-r"},pn=["title"],dn={class:"app-name"},_n={class:"app-version"},hn={class:"app-as"},vn=J(()=>i("span",{style:{margin:"0 10px"}},"|",-1)),gn=["title"],fn=["title"],mn=["title"],wn={class:"app-author"},kn={class:"app-date"},bn={class:"app-btns"},$n=["href"],yn=["href"],xn=J(()=>i("div",{class:"auto"},null,-1)),Cn=J(()=>i("div",{class:"app-margin-left"},null,-1)),Sn=J(()=>i("div",{class:"app-margin-left"},null,-1)),An=["href"],Ln=J(()=>i("div",{class:"app-margin-left"},null,-1)),Tn=["title"],In={props:{col:{type:Object,default(){return{description:"",tags:[],entry:"",author:"",depends:[],installed:!1,hasupdate:!1,broken:!1,title:"",time:"",release:1,website:"",name:"",version:""}}}},setup(n){const e=n,{$gettext:t,$ngettext:o}=F(),s=P(()=>e.col),a=z(),l=L.formatDate,u=m=>{$.upgradeApp(m).then(w=>{let I=w.stderr;w.code!==0?b({content:`${I}
+${t("update failed with error code")}: ${w.code}`,keep:!0}):window.istore_log(!0)}).catch(w=>{b({content:`${t("update failed with error code")}: ${500}`,keep:!0})})},c=(m,w)=>{w&&!re("docker")&&!confirm(t("Docker is not installed on the system, try to install it?"))||$.installApp(m).then(I=>{let f=I.stderr;I.code!==0?b({content:`${f}
+${t("installation failed, error code")}: ${I.code}`,keep:!0}):($.increasingDownloadCount(m),a.dispatch("apps/incrAppDownload",{name:m}),window.istore_log(!0,g=>{console.log("Install ",m," ",g==0?"successed":"failed")}))}).catch(I=>{b({content:`${t("installation failed, error code")}: ${500}`,keep:!0})})},h=m=>{!confirm(t("are you sure you want to uninstall %{name}?",{name:m}))||$.removeApp(m).then(I=>{let f=I.stderr;I.code!==0?b({content:`${f}
+${t("uninstall failed, error code")}: ${I.code}`,keep:!0}):window.istore_log(!0)}).catch(I=>{b({content:`${t("uninstall failed, error code")}: ${500}`,keep:!0})})},T=m=>k(this,null,function*(){V.Start();try{(yield $.postStarApp(m))&&a.dispatch("apps/incrAppStar",{name:m})}catch(w){}V.Stop()}),B=()=>{b(t("you have already liked"))},W=m=>s.value.installed?`/luci-static/resources/app-icons/${m}.png`:s.value.icon?$.getStoreAppIcon(s.value.icon):`/luci-static/resources/app-icons/${m}.png`,N=m=>{switch(window.vue_lang){case"zh-cn":case"zh-tw":return m.title}return m.title_en||m.title},Y=m=>{switch(window.vue_lang){case"zh-cn":case"zh-tw":return m.description}return m.description_en||m.description},ne=m=>{a.dispatch("apps/stickTop",m)};return(m,w)=>{var v,A,E,ce,ie,le,ue,pe,de,_e,he,ve,ge,fe,me;const I=Z("svg-docker"),f=Z("svg-star-off"),g=Z("svg-star-on");return p(),d("div",en,[i("div",tn,[i("div",nn,[i("div",sn,[i("img",{alt:r(t)("Icon is gone")+"~",src:W(r(s).name)},null,8,on),!r(s).broken&&r(s).depends.indexOf("docker-deps")!=-1?(p(),d("i",an,[M(I,{class:"docker-icon"})])):D("",!0)]),i("div",rn,[(p(!0),d(O,null,K(r(s).tags,U=>(p(),d(O,{key:U},[i("div",cn,[i("span",null,_(r(Se)(U)),1)]),ln],64))),128))])]),i("div",un,[i("div",{class:"app-title",title:r(s).name},[i("span",dn,_(N(r(s))),1),i("span",_n,"v"+_(r(s).version),1)],8,pn),i("div",hn,[i("span",null,_(r(o)("%{ num } download","%{ num } downloads",((A=(v=r(s))==null?void 0:v.expand)==null?void 0:A.downloadCount)||0,{num:r($e)((ce=(E=r(s))==null?void 0:E.expand)==null?void 0:ce.downloadCount)})),1),vn,i("span",null,_(r(o)("%{ num } like","%{ num } likes",((le=(ie=r(s))==null?void 0:ie.expand)==null?void 0:le.starCount)||0,{num:r($e)((pe=(ue=r(s))==null?void 0:ue.expand)==null?void 0:pe.starCount)})),1),((de=r(s))==null?void 0:de.expand)!=null?(p(),d(O,{key:0},[(he=(_e=r(s))==null?void 0:_e.expand)!=null&&he.isStar?(p(),d("a",{key:0,class:"star-btn",title:r(t)("liked"),onClick:w[0]||(w[0]=U=>B())},[M(f)],8,gn)):(p(),d("a",{key:1,class:"star-btn",title:r(t)("like"),onClick:w[1]||(w[1]=U=>T(r(s).name))},[M(g)],8,fn))],64)):D("",!0)]),i("div",{class:"app-description cbi-value-description",title:Y(r(s))},[i("span",null,_(Y(r(s))),1)],8,mn),i("div",wn,[i("span",null,_(r(t)("author"))+": "+_(r(s).author||"null"),1)]),i("div",kn,[i("span",null,_(r(t)("update date"))+": "+_(r(l)(r(s).time*1e3)||"null"),1)])])]),i("div",bn,[r(s).tutorial?(p(),d("a",{key:0,class:"app-btn cbi-button cbi-button-apply",target:"_blank",href:r(s).tutorial},_(r(t)("tutorial")),9,$n)):r(s).website?(p(),d("a",{key:1,class:"app-btn cbi-button cbi-button-apply",target:"_blank",href:r(s).website},_(r(t)("website")),9,yn)):D("",!0),xn,r(s).installed?(p(),d(O,{key:2},[!r(s).broken&&(((ve=r(s))==null?void 0:ve.curVersion)!=((ge=r(s))==null?void 0:ge.lastVersion)||((fe=r(s))==null?void 0:fe.curRelease)!=((me=r(s))==null?void 0:me.lastRelease))?(p(),d(O,{key:0},[Cn,i("a",{class:"app-btn cbi-button cbi-button-reload",onClick:w[2]||(w[2]=U=>u(r(s).name))},_(r(t)("upgrade")),1)],64)):D("",!0),Sn,!r(s).broken&&r(s).entry?(p(),d("a",{key:1,class:"app-btn cbi-button cbi-button-apply",href:r(s).entry},_(r(t)("open")),9,An)):D("",!0),Ln,i("a",{class:"app-btn cbi-button cbi-button-remove",onClick:w[3]||(w[3]=U=>h(r(s).name))},_(r(t)("uninstall")),1)],64)):(p(),d("a",{key:3,class:"app-btn cbi-button cbi-button-add",onClick:w[4]||(w[4]=U=>c(r(s).name,r(s).depends.indexOf("docker-deps")!=-1))},_(r(t)("install")),1))]),i("span",{class:"fav-icon-i",onClick:w[5]||(w[5]=U=>ne(r(s).name)),title:r(t)("Stick to the top")},"\u21EA",8,Tn)])}}};var Pn=C(In,[["__scopeId","data-v-b0655b7c"]]);const Dn={class:"containers"},En={props:{apps:{type:Array,default(){return[]}}},setup(n){const e=n,t=P(()=>e.apps);return(o,s)=>(p(),d("div",Dn,[(p(!0),d(O,null,K(r(t),a=>(p(),Q(Pn,{key:a.name,col:a},null,8,["col"]))),128))]))}};var Ae=C(En,[["__scopeId","data-v-0708f588"]]);const On={class:"cbi-section"},Mn={setup(n){const e=z(),t=P(()=>e.getters["apps/LocalApps"]);return(o,s)=>(p(),d("fieldset",On,[M(Ae,{class:"app-list-installed",apps:r(t)},null,8,["apps"])]))}};var Bn=C(Mn,[["__scopeId","data-v-bb2340b4"]]);const Fn={class:"sort-container"},Vn={class:"sort-title"},zn={class:"sort-value"},Un=["value","onClick"],Rn={setup(n){const{$gettext:e}=F(),t=x("default"),o=z(),s=x([{key:e("default"),value:"default"},{key:e("By download"),value:"download"},{key:e("By rating"),value:"star"},{key:e("Latest update"),value:"updateDate"}]),a=l=>{t.value=l,o.dispatch("apps/filterCurApps",{sort:l})};return(l,u)=>(p(),d("div",Fn,[i("div",Vn,_(r(e)("order"))+":",1),i("div",zn,[(p(!0),d(O,null,K(s.value,c=>(p(),d("input",{key:c.value,class:q(["cbi-button",{"cbi-button-apply":t.value==c.value}]),type:"button",value:c.key,onClick:h=>a(c.value)},null,10,Un))),128))])]))}};var Gn=C(Rn,[["__scopeId","data-v-9f592bc6"]]);const Hn={class:"tags-container"},Kn={class:"tags-title"},Wn={class:"tags-value"},Nn=["value"],Zn=["value","onClick"],qn={setup(n){const{$gettext:e}=F(),t=x("default"),o=z(),s=P(()=>o.getters["tags/Tags"]),a=l=>{t.value=l,o.dispatch("apps/filterCurApps",{tag:l})};return(l,u)=>(p(),d("div",Hn,[i("div",Kn,_(r(e)("tag"))+": ",1),i("div",Wn,[i("input",{class:q(["cbi-button",{"cbi-button-apply":t.value=="default"}]),type:"button",value:r(e)("default"),onClick:u[0]||(u[0]=c=>a("default"))},null,10,Nn),(p(!0),d(O,null,K(r(s),c=>(p(),d("input",{key:c,class:q(["cbi-button",{"cbi-button-apply":t.value==c}]),type:"button",value:r(Se)(c),onClick:h=>a(c)},null,10,Zn))),128))])]))}};var Jn=C(qn,[["__scopeId","data-v-07bccc36"]]);const Yn=["onSubmit"],Qn=["placeholder"],Xn={setup(n){const{$gettext:e}=F(),t=x(""),o=z(),s=()=>{o.dispatch("apps/filterCurApps",{search:t.value})};return(a,l)=>{const u=Z("svg-search");return p(),d("form",{class:"search",onSubmit:Ce(s,["prevent"])},[i("a",{class:"search-btn",onClick:s},[M(u)]),X(i("input",{type:"text",placeholder:r(e)("please enter the search keyword"),"onUpdate:modelValue":l[0]||(l[0]=c=>t.value=c)},null,8,Qn),[[xe,t.value,void 0,{trim:!0}]])],40,Yn)}}};var jn=C(Xn,[["__scopeId","data-v-c4e8a9f2"]]);const es={key:1,style:{margin:"10px 0","text-align":"center",width:"100%"}},ts={setup(n){const{$gettext:e}=F(),t=z(),o=P(()=>t.getters["apps/StoreApps"]),s=P(()=>t.state.apps.Load);return(a,l)=>r(s)?(p(),Q(Ae,{key:0,apps:r(o)},null,8,["apps"])):(p(),d("span",es,_(r(e)("loading data"))+"...",1))}},ns={class:"cbi-section"},ss={setup(n){return(e,t)=>(p(),d("fieldset",ns,[M(jn),M(Jn),M(Gn),M(ts)]))}};var os=C(ss,[["__scopeId","data-v-74b0669f"]]);const as=n=>(ee("data-v-0b0723c2"),n=n(),te(),n),rs={class:"cbi-section"},cs={class:"container_msg cbi-map-descr"},is=["onSubmit"],ls={class:"upload-file"},us={class:"button"},ps=as(()=>i("div",{class:"auto"},null,-1)),ds={setup(n){const{$gettext:e}=F(),t=x(null),o=x(null);Fe(()=>{if(t.value){const u=t.value;u.addEventListener("dragenter",c=>{(c.fromElement===null||!u.contains(c.fromElement))&&console.log("dragenter")},!1),u.addEventListener("dragleave",c=>{(c.fromElement===null||!u.contains(c.fromElement))&&console.log("dragleave")},!1),u.addEventListener("dragover",c=>{c.preventDefault(),c.dataTransfer.dropEffect="link"},!1),u.addEventListener("drop",c=>{console.log("drop"),c.preventDefault(),s(c)},!1)}});const s=u=>{const c=u.dataTransfer.files;if(c&&c.length>0){const h=c[0];l(h);return}},a=u=>{const c=u.target.files;if(c&&c.length>0){const h=c[0];l(h);return}},l=u=>{if(u.name.endsWith(".run")||u.name.endsWith(".ipk")){let c=new FormData;c.append(u.name,u),V.Start(`${e("uploading")}...`),$.uploadAppIPK(c).then(h=>{let T=h.stderr;h.code!==0?Toast({content:`${T}
+${e("offline installation failed with error code")}: ${h.code}`,keep:!0}):window.istore_log(!0)}).catch(h=>{Toast({content:`${e("offline installation failed with error code")}: ${500}`,keep:!0})}).finally(()=>{V.Stop()})}};return(u,c)=>{var h;return p(),d("fieldset",rs,[i("div",cs,[i("span",null,_(r(e)("offline install")),1),i("span",null,"\xB7 "+_(r(e)("in this page, you can upload and install packages")),1),i("span",null,"\xB7 "+_(r(e)("supports .ipk packages, .run self-extracting packages")),1),i("span",null,"\xB7 "+_(r(e)("packages installed offline may not appear in iStore")),1)]),i("form",{onSubmit:Ce(l,["prevent"])},[i("div",{class:"flex",ref_key:"upl",ref:t},[i("label",ls,[i("span",null,_(((h=o.value)==null?void 0:h.name)||r(e)("no files selected")),1),i("input",{type:"file",name:"file",accept:".ipk, .run",hidden:"",onChange:a},null,32),i("div",us,_(r(e)("select or drag and drop files")),1)]),ps],512)],40,is)])}}};var _s=C(ds,[["__scopeId","data-v-0b0723c2"]]);const hs={class:"cbi-section"},vs={class:"webapp-container"},gs=["src"],fs={setup(n){const e=P(()=>""),t=P(()=>""),o=P(()=>`${L.getIframeURL()}/#/apps?token=${t.value}&deviceId=${e.value}`);return(s,a)=>(p(),d("fieldset",hs,[i("div",vs,[i("iframe",{src:r(o),sandbox:"allow-scripts allow-same-origin allow-popups",seamless:""},null,8,gs)])]))}};var ms=C(fs,[["__scopeId","data-v-8e330954"]]);const ws={class:"log-containers"},ks={key:0,class:"containers-tit"},bs={key:1,class:"containers-tit"},$s=["value"],ys={key:1},xs={setup(n){const{$gettext:e}=F(),t=z(),o=P(()=>t.state.version),s=P(()=>t.state.versionLoad),a=()=>{V.Start(`${e("updateing")}...`),$.selfUpdateIstore().then(({data:l})=>{if(l){const{stdout:u,stderr:c,code:h}=l;if(h==0){b({content:`${e("update success, reloading")}...`,keep:!0}),t.dispatch("istoreUpdated"),setTimeout(()=>{location.href=location.href},1e3);return}else throw c||"unknown error"}throw"unknown error"}).catch(l=>{b(`${e("update error")}: ${l}`)}).finally(()=>{V.Stop()})};return(l,u)=>(p(),d("div",ws,[r(s)?(p(),d("div",bs,[r(o)?(p(),d(O,{key:0},[i("span",null,_(r(e)("last version"))+":"+_(r(o)),1),i("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:u[0]||(u[0]=c=>a()),value:r(e)("click to update")},null,8,$s)],64)):(p(),d("span",ys,_(r(e)("the is last version"))+"...",1))])):(p(),d("div",ks,_(r(e)("checking for latest version")),1))]))}};var Cs=C(xs,[["__scopeId","data-v-8ac6e0ca"]]);const Ss={class:"log-containers"},As={class:"containers-tit"},Ls=["disabled","value"],Ts=["disabled","value"],Is={setup(n){const{$gettext:e}=F(),t=z(),o=P(()=>t.state.apps.Cur.hide_docker),s=P(()=>t.state.apps.Cur.ignore_arch),a=x(!1),l=()=>{a.value=!0;let c=!o.value;window.istore_config.hide_docker=c,t.dispatch("apps/filterCurApps",{hide_docker:c}),$.toggleDocker(c).finally(()=>{a.value=!1})},u=()=>{a.value=!0;let c=!s.value;window.istore_config.ignore_arch=c,t.dispatch("apps/filterCurApps",{ignore_arch:c}),$.toggleArch(c).finally(()=>{a.value=!1})};return(c,h)=>(p(),d("div",Ss,[i("div",As,[i("input",{disabled:a.value,type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:h[0]||(h[0]=T=>l()),value:r(o)?r(e)("show docker packages"):r(e)("hide docker packages")},null,8,Ls),i("input",{disabled:a.value,type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:h[1]||(h[1]=T=>u()),value:r(s)?r(e)("hide incompatible packages"):r(e)("show incompatible packages")},null,8,Ts)])]))}};var Ps=C(Is,[["__scopeId","data-v-3388f69c"]]);const Ds={class:"Lightweight"},Es={class:"Lightweight-container"},Os={class:"model"},Ms={class:"Lightweight-container1"},Bs={class:"container1-center"},Fs={class:"Lightweight-tit"},Vs={class:"Lightweight-backup"},zs=["value"],Us=["value"],Rs={setup(n){const{$gettext:e}=F(),t=x(null),o=()=>{const u=e("backuping"),c=e("backup success"),h=e("backup fail"),T=e("click to download");V.Start(`${u}...`),$.lightBackup().then(B=>{if(B){const{msg:W,code:N}=B;if(N==200){b({content:`${c}\uFF0C${T}
`,keep:!0,html:!0});return}else throw W||"unknown error"}throw"unknown error"}).catch(B=>{b(`${h} : ${B}`)}).finally(()=>{V.Stop()})},s=u=>{const c=u.target.files;if(c&&c.length>0){const h=c[0];a(h);return}},a=u=>{let c=new FormData;c.append(u.name,u),V.Start(`${e("uploading")}...`),$.lightRestore(c).then(h=>{let T=h.stderr;h.code!==0?b({content:`${T}
+${e("restore failed with error code")}: ${h.code}`,keep:!0}):window.istore_log(!0)}).catch(h=>{b({content:`${e("restore failed with error code")}: ${500}`,keep:!0})}).finally(()=>{V.Stop()})},l=u=>{t.value.click(u),u.preventDefault()};return(u,c)=>(p(),d("div",Ds,[i("div",Es,[i("div",Os,_(r(e)("explain")),1),i("div",Ms,[i("div",Bs,[i("div",Fs,[i("span",null,"\xB7 "+_(r(e)("backup now will download a list of iStore installed software")),1),i("span",null,"\xB7 "+_(r(e)("upload software list and install from iStore when restoring backup")),1)]),i("div",Vs,[i("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:o,value:r(e)("backup now")},null,8,zs),i("input",{type:"file",name:"file",accept:".tar, .gz",hidden:"",onChange:s,ref_key:"upl",ref:t},null,544),i("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:l,value:r(e)("restore backup")},null,8,Us)])])])])]))}};var Gs=C(Rs,[["__scopeId","data-v-a4c06ae8"]]);const Hs={class:"local"},Ks={class:"local-container"},Ws={class:"model"},Ns={class:"local-container1"},Zs={class:"container1-center"},qs={class:"local-tit"},Js={class:"local-device"},Ys={class:"local-input"},Qs={value:"",disabled:""},Xs=["value"],js={value:"-"},eo=["onKeyup","placeholder"],to={key:2,class:"local-btn"},no=["value"],so=["value"],oo={key:0,class:"device-list"},ao=["value"],ro=["value"],co={setup(n){const{$gettext:e}=F(),t=e("backup now backs up installed software (unlimited installation sources) to external storage"),o=x([]),s=x("-");let a="-";const l=x(!1),u=x([]),c=x(""),h=x(""),T=x(),B=(f,g)=>{if(!(g===""||g==="-"||f.find(v=>v.path===g))){let v;f.filter(A=>A.mount&&A.dev&&g.startsWith(A.mount)).forEach(A=>{v&&v.mount.length>A.mount.length||(v=A)}),f.push({path:g,size:v?v.size:void 0})}o.value=f,g!=="-"&&(s.value=g,W())};s.value=="-"&&($.localBackupdirPath().then(f=>{if(f){const{code:g,msg:v}=f;g==200&&B(o.value,v)}}),$.getBlockDevices().then(f=>{if(f&&f.code==200){const g=f.data,v=[];for(let A in g){const E=g[A];E.mount&&E.mount!="/"&&E.mount!="/rom"&&E.mount!="/boot"&&E.mount!="/ext_overlay"&&E.mount!="/overlay"&&v.push(E)}v.forEach(A=>{A.path=A.mount+"/istore_backup"}),B(v,v.length>0&&s.value==="-"?"":s.value)}}));const W=f=>{l.value=!1,s.value==="-"?(a!="-"&&(h.value=a),T.value.focus()):a=s.value},N=f=>{h.value==""?a!="-"?s.value=a:s.value="":h.value.startsWith("/")?B(o.value,h.value):(b(e("please enter the path, give up the input, please clear the input box")),T.value.setSelectionRange(0,h.value.length),T.value.focus())},Y=()=>s.value.length>1&&s.value.endsWith("/")?s.value.substring(0,s.value.length-1):s.value,ne=()=>{let f=Y();if(f==""){b(e("please fill in the external storage directory"));return}l.value=!1,$.backupFileList(f).then(g=>{if(g){const{code:v,msg:A}=g;if(v==200){let E=JSON.parse(A);E.length==0?(b(e("there are no backup files in this path")),l.value=!1):(u.value=E,l.value=!0);return}throw A||"unknown error"}throw"unknown error"}).catch(g=>{b(g)})},m=()=>{let f=Y();if(f==""){b(e("please fill in the external storage directory"));return}$.localBackup(f).then(g=>{let v=g.stderr;g.code!==0?b({content:`${v}
+${e("backup fail with error code")}: ${g.code}`,keep:!0}):window.istore_log(!1)}).catch(g=>{b({content:`${e("backup fail with error code")}: ${500}`,keep:!0})})},w=f=>s.value.endsWith("/")?s.value+f:s.value+"/"+f,I=()=>{if(c.value===""){b(e("please select a backup file to restore"));return}$.localRestore(w(c.value)).then(f=>{let g=res.stderr;res.code!==0?b({content:`${g}
+${e("restore failed with error code")}: ${res.code}`,keep:!0}):window.istore_log(!0)}).catch(f=>{b({content:`${e("restore failed with error code")}: ${500}`,keep:!0})})};return(f,g)=>(p(),d("div",Hs,[i("div",Ks,[i("div",Ws,_(r(e)("explain")),1),i("div",Ns,[i("div",Zs,[i("div",qs,[i("span",null,"\xB7 "+_(r(e)(r(t))),1),i("span",null,"\xB7 "+_(r(e)("no internet required for recovery")),1)]),i("div",Js,_(r(e)("external storage directory"))+" \uFF1A ",1),i("div",Ys,[s.value!="-"?X((p(),d("select",{key:0,class:"local-input-field",onChange:W,"onUpdate:modelValue":g[0]||(g[0]=v=>s.value=v)},[i("option",Qs,_(r(e)("choose")),1),(p(!0),d(O,null,K(o.value,(v,A)=>(p(),d("option",{value:v.path,key:A},_(v.path+(v.size?"\uFF08"+v.size+"\uFF09":"")),9,Xs))),128)),i("option",js,_(r(e)("customize")),1)],544)),[[be,s.value,void 0,{trim:!0}]]):X((p(),d("input",{key:1,class:"local-input-field",onBlur:N,onKeyup:Ve(N,["enter"]),placeholder:r(e)("please enter an absolute path starting with %{name}",{name:"/"}),type:"text","onUpdate:modelValue":g[1]||(g[1]=v=>h.value=v),ref_key:"user_input",ref:T},null,40,eo)),[[xe,h.value,void 0,{trim:!0}]]),s.value!="-"&&s.value!=""?(p(),d("div",to,[i("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:m,value:r(e)("backup now")},null,8,no),i("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:ne,value:r(e)("restore backup")},null,8,so)])):D("",!0)]),l.value?(p(),d("div",oo,[i("div",null,_(r(e)("choose backup file"))+" \uFF1A",1),X(i("select",{"onUpdate:modelValue":g[2]||(g[2]=v=>c.value=v)},[(p(!0),d(O,null,K(u.value,v=>(p(),d("option",{key:v,value:v},_(v),9,ao))),128))],512),[[be,c.value,void 0,{trim:!0}]]),i("input",{type:"button",class:"app-btn cbi-button cbi-button-apply",onClick:I,value:r(e)("restore now")},null,8,ro)])):D("",!0)])])])]))}};var io=C(co,[["__scopeId","data-v-3b02aa6c"]]);const lo={class:"cbi-map"},uo={class:"cbi-section"},po={class:"panel-title"},_o={class:"cbi-section"},ho={class:"panel-title"},vo={key:0,class:"cbi-section"},go={class:"panel-title"},fo={class:"cbi-tabmenu"},mo={onclick:"false",href:"#"},wo={onclick:"false",href:"#"},ko={setup(n){const{$gettext:e}=F(),t=x(2);return(o,s)=>(p(),d("div",lo,[i("fieldset",uo,[i("span",po,_(r(e)("upgrade"))+" iStore",1),M(Cs)]),i("fieldset",_o,[i("span",ho,_(r(e)("config"))+" iStore",1),M(Ps)]),r(re)("backup")?(p(),d("fieldset",vo,[i("span",go,_(r(e)("app backup")),1),i("ul",fo,[i("li",{class:q(t.value==2?"cbi-tab":"cbi-tab-disabled"),onClick:s[0]||(s[0]=a=>t.value=2)},[i("a",mo,_(r(e)("light backup")),1)],2),i("li",{class:q(t.value==3?"cbi-tab":"cbi-tab-disabled"),onClick:s[1]||(s[1]=a=>t.value=3)},[i("a",wo,_(r(e)("local backup")),1)],2)]),t.value==2?(p(),Q(Gs,{key:0})):D("",!0),t.value==3?(p(),Q(io,{key:1})):D("",!0)])):D("",!0)]))}},bo=ze({history:Ue(L.BasePage()),routes:[{path:"/",redirect:"/installed"},{path:"/installed",name:"Installed",component:Bn},{path:"/store",name:"Store",component:os},{path:"/upload",name:"Upload",component:_s},{path:"/webapps",name:"Webapps",component:ms},{path:"/maintance",name:"Maintance",component:ko},{path:"/:pathMatch(.*)*",name:"notfound",redirect:"/"}]});var $o={namespaced:!0,state:{Load:!1,LocalApps:[],StoreApps:[],Expand:{},Cur:{tag:"default",sort:"default",search:"",limit:30,offset:0,hide_docker:window.istore_config.hide_docker||!1,ignore_arch:window.istore_config.ignore_arch||!1,super_arch:window.istore_config.super_arch},LocalAppsMap:{},StoreAppsMap:{}},mutations:{setExpand(n,e){n.Expand=e},setLocalApps(n,e){e=e||[],n.LocalAppsMap={},e.forEach(s=>{n.LocalAppsMap[s.name]=s});const t=[],o=JSON.parse(window.localStorage&&window.localStorage.getItem("istore.tops")||"[]");o.forEach(s=>{const a=n.LocalAppsMap[s];a&&t.push(a)}),e.sort((s,a)=>a.time-s.time),e.forEach(s=>{o.indexOf(s.name)==-1&&t.push(s)}),n.LocalApps=t},setStoreApps(n,e){n.StoreApps=e||[],e.forEach(t=>{n.StoreAppsMap[t.name]=t})},setCur(n,e){for(const t in e)Object.hasOwnProperty.call(e,t)&&(n.Cur[t]=e[t])}},getters:{Cur(n){return n.Cur},LocalApps(n){let e=[...n.LocalApps],t=n.Expand;for(let o=0;o((a==null?void 0:a.depends)||[]).indexOf("luci-js-deps")==-1));let t=n.Expand;for(let a=0;a((a==null?void 0:a.depends)||[]).indexOf("docker-deps")==-1)),!n.Cur.ignore_arch&&n.Cur.super_arch&&(e=e.filter(a=>{const l=(a==null?void 0:a.arch)||["all"];return l.indexOf("all")!=-1?!0:l.indexOf(n.Cur.super_arch)!=-1}));let o=n.Cur.tag;o!="default"&&(e=e.filter(a=>((a==null?void 0:a.tags)||[]).indexOf(o)!=-1));let s=n.Cur.search;switch(s&&(e=e.filter(a=>{let l=JSON.stringify(a);return new RegExp(s,"i").test(l)})),n.Cur.sort){case"download":e=e.sort((a,l)=>{var u,c;return(((u=l==null?void 0:l.expand)==null?void 0:u.downloadCount)||0)-(((c=a==null?void 0:a.expand)==null?void 0:c.downloadCount)||0)});break;case"star":e=e.sort((a,l)=>{var u,c;return(((u=l==null?void 0:l.expand)==null?void 0:u.starCount)||0)-(((c=a==null?void 0:a.expand)==null?void 0:c.starCount)||0)});break;case"updateDate":e=e.sort((a,l)=>l.time-a.time);break}return e}},actions:{incrAppDownload(n,e){const{state:t}=n;t.Expand[e==null?void 0:e.name]&&t.Expand[e==null?void 0:e.name].downloadCount++},incrAppStar(n,e){const{state:t}=n;t!=null&&t.Expand[e==null?void 0:e.name]&&(t.Expand[e==null?void 0:e.name].starCount++,t.Expand[e==null?void 0:e.name].isStar=!0)},filterCurApps(n,e){const{commit:t,dispatch:o}=n;t("setCur",e)},getApps(n){const{state:e,dispatch:t}=n;t("getLocalApps"),t("getStoreApps",e.Cur)},getLocalApps(n){const{commit:e}=n;$.getInstalledApp().then(t=>{t.forEach(o=>{o.installed=!0}),e("setLocalApps",t)})},getStoreApps(n,e){const{state:t,commit:o,dispatch:s}=n,a={deviceId:L.getDeviceId(),arch:L.modelArch(),ver:L.getVersion(),feature:L.getFeatures().join(",")};let l=[];$.postStoreAppList(e,a).then(u=>{u.apps&&(u.apps.forEach(c=>{l.push(c.name)}),s("getStoreAppsExpand",l),o("setStoreApps",u.apps)),t.Load=!0}).catch(u=>{console.log(u)})},getStoreAppsExpand(n,e){const{commit:t}=n;$.getAppExpandData(e).then(o=>{o&&t("setExpand",o)})},stickTop(n,e){if(!window.localStorage)return;const t=JSON.parse(window.localStorage.getItem("istore.tops")||"[]");if(t.length>0&&t[0]==e)return;const o=[e];t.forEach(l=>{l!=e&&o.push(l)}),window.localStorage.setItem("istore.tops",JSON.stringify(o));const{state:s,commit:a}=n;a("setLocalApps",s.LocalApps)}}},yo={namespaced:!0,state:{Tags:[],Total:0},mutations:{},getters:{Tags(n){return n.Tags},Total(n){return n.Total}},actions:{getTags(n){const{state:e,commit:t}=n;$.getStoreTags().then(o=>{e.Tags=(o==null?void 0:o.tags)||[],e.Total=(o==null?void 0:o.total)||0})}}},xo=Re({state:{version:"",versionLoad:!1},mutations:{setVersion(n,e){n.version=e},setVersionLoad(n,e){n.versionLoad=e}},modules:{apps:$o,tags:yo},actions:{getData(n){const{dispatch:e}=n;e("tags/getTags"),e("apps/getApps"),e("getVersion")},getVersion(n){return k(this,null,function*(){const{commit:e}=n;try{const t=yield $.updateIstore(),{code:o,msg:s}=t==null?void 0:t.data;o==200&&e("setVersion",s)}catch(t){console.log(t)}e("setVersionLoad",!0)})},istoreUpdated(n){const{commit:e}=n;e("setVersion","")}}});const Co={},So={width:"16px",height:"16px",viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Ao=i("path",{d:"M14.9234958,14.5525054 L10.84453,10.4679606 C11.8849284,9.46327833 12.5294813,8.07823887 12.5294813,6.55073066 C12.5294813,3.48989918 9.94358337,1 6.76474066,1 C3.58589795,1 1,3.48989918 1,6.55073066 C1,9.61156213 3.58589795,12.1014613 6.76474066,12.1014613 C8.16008242,12.1014613 9.44067838,11.621191 10.438802,10.8242646 L14.5276502,14.9188536 C14.5814545,14.9730393 14.6533765,15 14.725573,15 C14.7942009,15 14.8625542,14.9754182 14.9158095,14.9262546 C15.025065,14.8250198 15.0283592,14.6577049 14.9234958,14.5525054 Z M6.76474066,11.5728203 C3.8886841,11.5728203 1.54902292,9.32001661 1.54902292,6.55073066 C1.54902292,3.7814447 3.8886841,1.52864101 6.76474066,1.52864101 C9.64079723,1.52864101 11.9804584,3.7814447 11.9804584,6.55073066 C11.9804584,9.32001661 9.64052272,11.5728203 6.76474066,11.5728203 Z",id:"Shape",stroke:"#FFFFFF","stroke-width":"1.3"},null,-1),Lo=[Ao];function To(n,e,t,o,s,a){return p(),d("svg",So,Lo)}var Io=C(Co,[["render",To]]);const Po={},Do={width:"12px",height:"12px",viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Eo=i("path",{d:"M10.171916,3.81818329 C10.6519813,3.81274681 11.1102149,4.01840688 11.4252438,4.38069009 C11.7402726,4.74297329 11.8803105,5.2253253 11.8081406,5.70080197 L11.0555552,10.608963 C10.9332063,11.4157454 10.2351606,12.0090843 9.42537185,12 L3.27269856,12 C2.97145497,12 2.7272488,11.7556885 2.7272488,11.454445 L2.7272488,5.4544976 C2.7272488,5.37817917 2.74326442,5.30271013 2.77426027,5.23296947 L4.95605931,0.323921631 C5.04360472,0.126944443 5.23894201,0 5.4544976,0 C6.65947193,0 7.63629663,0.976824702 7.63629663,2.18179904 L7.63629663,3.81815451 L10.171916,3.81818329 Z M3.81814832,10.9090654 L9.43153778,10.9090654 C9.70352269,10.9121048 9.93620458,10.7143252 9.97712277,10.4445109 L10.7297188,5.53628009 C10.7537339,5.3780602 10.7070546,5.2172762 10.602045,5.09651513 C10.4970353,4.97575406 10.3442908,4.9072007 10.1780925,4.90904784 L7.09084687,4.90904784 C6.78960329,4.90904784 6.54539711,4.66484166 6.54539711,4.36359808 L6.54539711,2.18179904 C6.54539711,1.69494967 6.22647822,1.2825878 5.78615711,1.14223013 L3.81814832,5.57024992 L3.81814832,10.9090654 Z M2.7272488,5.99994736 L1.63634928,5.99994736 C1.33510569,5.99994736 1.09089952,6.24415353 1.09089952,6.54539711 L1.09089952,10.3635454 C1.09089952,10.664789 1.33510569,10.9089952 1.63634928,10.9089952 L2.7272488,10.9089952 L2.7272488,5.99994736 Z M3.27269856,11.9998947 L1.63634928,11.9998947 C0.732618527,11.9998947 -1.03028697e-13,11.2672762 -1.03028697e-13,10.3635454 L-1.03028697e-13,6.54539711 C-1.03028697e-13,5.64166636 0.732618527,4.90904784 1.63634928,4.90904784 L3.27269856,4.90904784 C3.57394214,4.90904784 3.81814832,5.15325401 3.81814832,5.4544976 L3.81814832,11.454445 C3.81814832,11.7556885 3.57394214,11.9998947 3.27269856,11.9998947 Z",id:"Shape",fill:"#FFFFFF","fill-rule":"nonzero"},null,-1),Oo=[Eo];function Mo(n,e,t,o,s,a){return p(),d("svg",Do,Oo)}var Bo=C(Po,[["render",Mo]]);const Fo={},Vo={width:"12px",height:"12px",viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},zo=i("path",{d:"M10.171916,3.81818329 C10.6519813,3.81274681 11.1102149,4.01840688 11.4252438,4.38069009 C11.7402726,4.74297329 11.8803105,5.2253253 11.8081406,5.70080197 L11.0555552,10.608963 C10.9332063,11.4157454 10.2351606,12.0090843 9.42537185,12 L3.27269856,12 C2.97145497,12 2.7272488,11.7556885 2.7272488,11.454445 L2.7272488,5.4544976 C2.7272488,5.37817917 2.74326442,5.30271013 2.77426027,5.23296947 L4.95605931,0.323921631 C5.04360472,0.126944443 5.23894201,0 5.4544976,0 C6.65947193,0 7.63629663,0.976824702 7.63629663,2.18179904 L7.63629663,3.81815451 L10.171916,3.81818329 Z M3.27269856,11.9998947 L1.63634928,11.9998947 C0.732618527,11.9998947 0,11.2672762 0,10.3635454 L0,6.54539711 C0,5.64166636 0.732618527,4.90904784 1.63634928,4.90904784 L3.27269856,4.90904784 C3.57394214,4.90904784 3.81814832,5.15325401 3.81814832,5.4544976 L3.81814832,11.454445 C3.81814832,11.7556885 3.57394214,11.9998947 3.27269856,11.9998947 Z",id:"Shape",fill:"#FFE45A","fill-rule":"nonzero"},null,-1),Uo=[zo];function Ro(n,e,t,o,s,a){return p(),d("svg",Vo,Uo)}var Go=C(Fo,[["render",Ro]]);const Ho={},Ko={viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",width:"20",height:"20"},Wo=i("title",null,"Docker",-1),No=i("path",{fill:"currentColor",d:"M560.86064 480h-105.6v-94.4H560.86064V480z m0-326.4h-105.6v97.6H560.86064V153.6z m124.8 232h-105.6V480h105.6v-94.4z m-249.6-115.2h-105.6v96h105.6v-96z m124.8 0h-105.6v96H560.86064v-96z m443.2 160c-22.4-16-76.8-20.8-116.8-12.8-4.8-38.4-27.2-72-65.6-102.4l-22.4-14.4-14.4 22.4c-28.8 44.8-36.8 118.4-6.4 166.4-14.4 8-41.6 17.6-76.8 17.6H4.06064c-14.4 81.6 9.6 187.2 70.4 259.2 59.2 70.4 148.8 105.6 264 105.6 251.2 0 438.4-115.2 524.8-326.4 33.6 0 108.8 0 145.6-72 1.6-3.2 11.2-20.8 12.8-27.2l-17.6-16z m-817.6-44.8H80.86064V480h105.6v-94.4z m124.8 0h-105.6V480h105.6v-94.4z m124.8 0h-105.6V480h105.6v-94.4z m-124.8-115.2h-105.6v96h105.6v-96z"},null,-1),Zo=[Wo,No];function qo(n,e,t,o,s,a){return p(),d("svg",Ko,Zo)}var Jo=C(Ho,[["render",qo]]);const H=ae(Qe);H.component("svg-search",Io);H.component("svg-star-on",Bo);H.component("svg-star-off",Go);H.component("svg-docker",Jo);const Yo=()=>k(y,null,function*(){yield He(H),H.use(bo).use(xo),H.mount("#app")});Yo()});export default Qo();
diff --git a/app-store-ui/src/dist/luci-static/istore/style.css b/app-store-ui/src/dist/luci-static/istore/style.css
index 1226153..21ea364 100644
--- a/app-store-ui/src/dist/luci-static/istore/style.css
+++ b/app-store-ui/src/dist/luci-static/istore/style.css
@@ -1 +1 @@
-#app *[data-v-13251538]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}li[data-v-13251538]{position:relative}li span[data-v-13251538]{position:absolute;top:5px;right:5px;padding:3px;background-color:#fd1919;border-radius:50%}#app *[data-v-b05f92bc]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.toast[data-v-b05f92bc]{position:fixed;top:50%;left:50%;display:flex;flex-direction:column;align-items:center;justify-content:space-around;box-sizing:content-box;width:150px;max-width:70%;min-height:30px;padding:10px;color:#fff;font-size:14px;text-align:center;background-color:#000000b3;border-radius:8px;transform:translate3d(-50%,-50%,0);z-index:9999}.toast .toast-close[data-v-b05f92bc]{cursor:pointer;padding-bottom:36px;right:-61px;position:relative;font-size:20px}#app *[data-v-6d7664a4]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}@keyframes load-6d7664a4{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.loading[data-v-6d7664a4]{position:fixed;top:50%;left:50%;display:flex;flex-direction:column;align-items:center;justify-content:space-around;box-sizing:content-box;max-width:150px;padding:16px;color:#fff;font-size:14px;text-align:center;background-color:#000000b3;border-radius:8px;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);z-index:999999}.loading .icon[data-v-6d7664a4]{width:35px;height:35px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:load-6d7664a4 1s linear infinite}.loading .msg[data-v-6d7664a4]{margin-top:10px;color:#fff}#app *[data-v-e48bab18]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.app-container[data-v-e48bab18]{padding:15px;background:#88888822;border-radius:.375rem;overflow:hidden;margin:10px;position:relative}.app-container .app-info[data-v-e48bab18]{display:flex;flex-wrap:wrap;width:100%;margin-bottom:10px;padding-bottom:10px;border-bottom:1px dashed #999}.app-container .app-info .app-f[data-v-e48bab18]{flex:0 0 100%;max-width:150px}.app-container .app-info .app-f .app-icon[data-v-e48bab18]{width:100px;height:100px;margin:0 auto;position:relative}.app-container .app-info .app-f .app-icon img[data-v-e48bab18]{width:100%;height:100%;object-fit:contain}.app-container .app-info .app-f .app-icon .docker-icon-i[data-v-e48bab18]{position:absolute;right:5px;top:5px}.app-container .app-info .app-f .app-icon .docker-icon[data-v-e48bab18]{position:absolute;width:30px;height:30px;left:-15px;top:-15px;color:#fff;background-color:#2496ed;border-radius:50%;padding:5px}.app-container .app-info .app-f .app-tags[data-v-e48bab18]{width:100%;display:flex;justify-content:center;align-items:center;padding:0 25px}.app-container .app-info .app-f .app-tags .tag[data-v-e48bab18]{font-family:PingFangSC-Medium,PingFang SC;font-weight:500;line-height:12px;font-size:.8125rem;white-space:nowrap;padding:.5rem}.app-container .app-info .app-f .app-tags .block[data-v-e48bab18]{font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin:0 2px}.app-container .app-info .app-f .app-tags .block[data-v-e48bab18]:last-child{display:none}.app-container .app-info .app-r[data-v-e48bab18]{flex:0 0 100%;max-width:calc(100% - 150px);padding:0 15px}.app-container .app-info .app-r .app-title[data-v-e48bab18]{width:100%;margin-bottom:10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:26px;padding-top:12px}.app-container .app-info .app-r .app-title .app-version[data-v-e48bab18]{margin-left:10px;font-size:.8125rem}.app-container .app-info .app-r .app-as[data-v-e48bab18]{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-bottom:10px}.app-container .app-info .app-r .app-as .star-btn[data-v-e48bab18]{padding:0;margin:0 0 0 10px;width:30px;border:none!important;cursor:pointer;background:none;box-shadow:none}.app-container .app-info .app-r .app-as .star-btn[data-v-e48bab18] svg path{fill:currentColor}.app-container .app-info .app-r .app-as .star-btn[data-v-e48bab18]:hover svg path{filter:invert(.6)}.app-container .app-info .app-r .app-description[data-v-e48bab18]{font-size:12px;height:36px;line-height:18px;margin-bottom:10px;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;padding:0}.app-container .app-info .app-r .app-description span[data-v-e48bab18]{-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;display:-webkit-box}.app-container .app-info .app-r .app-author[data-v-e48bab18],.app-container .app-info .app-r .app-date[data-v-e48bab18]{width:100%;height:20px;line-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.app-container .app-btns[data-v-e48bab18]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end}.app-container .app-btns .auto[data-v-e48bab18]{flex:auto}.app-container .app-btns .app-margin-left[data-v-e48bab18]{margin:0 5px}.app-container .app-btns .app-btn[data-v-e48bab18]{padding-top:5px;padding-bottom:5px;text-decoration:none}.app-container .fav-icon-i[data-v-e48bab18]{user-select:none;position:absolute;top:10px;right:10px;cursor:pointer;display:none;font-family:none;font-style:normal;line-height:1;font-size:24px}.app-list-installed .app-container:hover .fav-icon-i[data-v-e48bab18]{display:initial}@media (hover: none){.app-list-installed .app-container .fav-icon-i[data-v-e48bab18]{display:initial}}@media screen and (max-width: 420px){.app-container .app-btns .app-margin-left[data-v-e48bab18]{margin:0 3px}}#app *[data-v-0708f588]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.containers[data-v-0708f588]{width:100%;height:100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(475px,1fr))}@media screen and (max-width: 1242px){.containers[data-v-0708f588]{grid-template-columns:1fr 1fr}}@media screen and (max-width: 900px){.containers[data-v-0708f588]{grid-template-columns:1fr}}#app *[data-v-bb2340b4]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-bb2340b4]{padding:15px}#app *[data-v-9f592bc6]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.sort-container[data-v-9f592bc6]{display:flex;flex-wrap:wrap;align-items:flex-start;margin-bottom:10px}.sort-container .sort-title[data-v-9f592bc6]{width:50px;height:28px;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;line-height:28px}.sort-container .sort-value[data-v-9f592bc6]{display:flex;flex-wrap:wrap;flex:0 0 100%;max-width:calc(100% - 50px)}.sort-container .sort-value .cbi-button[data-v-9f592bc6]{margin-right:5px}#app *[data-v-07bccc36]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.tags-container[data-v-07bccc36]{display:flex;flex-wrap:wrap;align-items:flex-start;margin-bottom:10px}.tags-container .tags-title[data-v-07bccc36]{width:50px;height:28px;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;line-height:28px}.tags-container .tags-value[data-v-07bccc36]{display:flex;flex-wrap:wrap;flex:0 0 100%;max-width:calc(100% - 50px)}.tags-container .tags-value .cbi-button[data-v-07bccc36]{margin-right:5px}#app *[data-v-c4e8a9f2]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}form.search[data-v-c4e8a9f2]{width:100%;display:flex;flex-wrap:wrap;align-items:center;margin-bottom:10px;position:relative}form.search input[data-v-c4e8a9f2]{width:100%;height:36px;border-radius:19px;padding:0 40px}form.search .search-btn[data-v-c4e8a9f2]{position:absolute;left:20px;border:none!important;box-shadow:none!important;background:none!important;cursor:pointer;z-index:10;display:flex;flex-wrap:wrap;align-items:center;width:30px;padding:0;margin:0}form.search .search-btn[data-v-c4e8a9f2] svg path{stroke:currentColor}#app *[data-v-74b0669f]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-74b0669f]{padding:15px}.cbi-section[data-v-74b0669f] .cbi-value{display:flex;flex-wrap:wrap;align-items:center;margin-bottom:10px}#app *[data-v-0b0723c2]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-0b0723c2]{padding:15px}.cbi-section .container_msg span[data-v-0b0723c2]{display:block;width:100%;margin-bottom:5px}.cbi-section form[data-v-0b0723c2]{width:100%;margin:30px 0}.cbi-section form .flex[data-v-0b0723c2]{width:100%;display:flex;flex-wrap:wrap;align-items:center}.cbi-section form .flex label.upload-file[data-v-0b0723c2]{width:100%;height:54px;background:linear-gradient(144deg,#009aff 0%,#0060ff 100%);border-radius:12px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:0 20px;cursor:pointer}.cbi-section form .flex label.upload-file span[data-v-0b0723c2]{font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#fff;line-height:22px}.cbi-section form .flex label.upload-file .button[data-v-0b0723c2]{min-width:116px;padding:0 10px;height:38px;background:rgba(255,255,255,.2);border-radius:6px;font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#fff;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.cbi-section form .flex label.upload-file input[data-v-0b0723c2]{visibility:hidden}.cbi-section form .flex label.upload-file[data-v-0b0723c2]:hover{opacity:.9}.cbi-section form button.upload-button[data-v-0b0723c2]{width:118px;height:36px;display:flex;align-items:center;justify-content:center;background:linear-gradient(144deg,#009aff 0%,#0060ff 100%);border-radius:10px;font-size:14px;font-family:PingFangSC-Semibold,PingFang SC;font-weight:600;color:#fff}.cbi-section form button.upload-button[data-v-0b0723c2]:hover{opacity:.9}#app *[data-v-8e330954]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-8e330954]{width:100%;min-height:400px;display:block;background:rgba(0,0,0,.9)}.cbi-section .webapp-container[data-v-8e330954]{width:100%;height:100%;min-height:inherit}.cbi-section .webapp-container iframe[data-v-8e330954]{width:100%;height:100%;min-height:inherit;border:none}#app *[data-v-8ac6e0ca]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.log-containers[data-v-8ac6e0ca]{display:flex;flex-wrap:wrap}.log-containers .model[data-v-8ac6e0ca]{width:100%;flex:0 0 100%;display:block;margin-left:18px;margin-top:18px}.log-containers .containers-tit[data-v-8ac6e0ca]{margin:1rem 0;display:flex;align-items:center;align-content:center;padding-left:16px}.log-containers .containers-tit .app-btn[data-v-8ac6e0ca]{margin-left:3rem}em[data-v-8ac6e0ca]{width:100%;display:block;border-bottom:1px solid #eee;margin:1rem 0}#app *[data-v-3388f69c]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.log-containers[data-v-3388f69c]{display:flex;flex-wrap:wrap}.log-containers .containers-tit[data-v-3388f69c]{margin:1rem 0;display:flex;align-items:center;align-content:center;padding-left:16px}em[data-v-3388f69c]{width:100%;display:block;border-bottom:1px solid #eee;margin:1rem 0}#app *[data-v-a4c06ae8]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.Lightweight[data-v-a4c06ae8]{margin-top:20px;margin-left:18px}.Lightweight .Lightweight-container .model[data-v-a4c06ae8]{margin-bottom:10px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-tit[data-v-a4c06ae8]{margin-bottom:20px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-tit span[data-v-a4c06ae8]{display:block;line-height:24px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-backup[data-v-a4c06ae8]{display:flex}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-backup .app-btn[data-v-a4c06ae8]{margin-left:14px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .upload-file[data-v-a4c06ae8]{color:#000}input[hidden][data-v-a4c06ae8]{display:none!important}#app *[data-v-67b754ac]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.local[data-v-67b754ac]{margin-top:20px}.local .local-container[data-v-67b754ac]{margin-left:18px}.local .local-container .model[data-v-67b754ac]{margin-bottom:10px}.local .local-container .local-container1[data-v-67b754ac]{width:800px;height:400px}.local .local-container .local-container1 .container1-center[data-v-67b754ac]{text-align:left}.local .local-container .local-container1 .container1-center .local-tit span[data-v-67b754ac]{display:block;line-height:24px}.local .local-container .local-container1 .container1-center .local-device[data-v-67b754ac]{margin-top:20px;margin-bottom:10px}.local .local-container .local-container1 .container1-center .local-input[data-v-67b754ac]{display:flex;align-items:center}.local .local-container .local-container1 .container1-center .local-input .app-btn[data-v-67b754ac]{margin-left:14px}.local .local-container .local-container1 .container1-center .local-input .local-input-field[data-v-67b754ac]{width:20rem}.local .local-container .local-container1 .container1-center .list[data-v-67b754ac]{margin-top:20px;margin-bottom:10px}.local .local-container .local-container1 .container1-center .select[data-v-67b754ac]{flex:0 0 100%;max-width:100%}
+#app *[data-v-13251538]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}li[data-v-13251538]{position:relative}li span[data-v-13251538]{position:absolute;top:5px;right:5px;padding:3px;background-color:#fd1919;border-radius:50%}#app *[data-v-b05f92bc]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.toast[data-v-b05f92bc]{position:fixed;top:50%;left:50%;display:flex;flex-direction:column;align-items:center;justify-content:space-around;box-sizing:content-box;width:150px;max-width:70%;min-height:30px;padding:10px;color:#fff;font-size:14px;text-align:center;background-color:#000000b3;border-radius:8px;transform:translate3d(-50%,-50%,0);z-index:9999}.toast .toast-close[data-v-b05f92bc]{cursor:pointer;padding-bottom:36px;right:-61px;position:relative;font-size:20px}#app *[data-v-6d7664a4]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}@keyframes load-6d7664a4{0%{-webkit-transform:rotate(0deg)}25%{-webkit-transform:rotate(90deg)}50%{-webkit-transform:rotate(180deg)}75%{-webkit-transform:rotate(270deg)}to{-webkit-transform:rotate(360deg)}}.loading[data-v-6d7664a4]{position:fixed;top:50%;left:50%;display:flex;flex-direction:column;align-items:center;justify-content:space-around;box-sizing:content-box;max-width:150px;padding:16px;color:#fff;font-size:14px;text-align:center;background-color:#000000b3;border-radius:8px;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);z-index:999999}.loading .icon[data-v-6d7664a4]{width:35px;height:35px;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:load-6d7664a4 1s linear infinite}.loading .msg[data-v-6d7664a4]{margin-top:10px;color:#fff}#app *[data-v-b0655b7c]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.app-container[data-v-b0655b7c]{padding:15px;background:#88888822;border-radius:.375rem;overflow:hidden;margin:10px;position:relative}.app-container .app-info[data-v-b0655b7c]{display:flex;flex-wrap:wrap;width:100%;margin-bottom:10px;padding-bottom:10px;border-bottom:1px dashed #999}.app-container .app-info .app-f[data-v-b0655b7c]{flex:0 0 100%;max-width:150px}.app-container .app-info .app-f .app-icon[data-v-b0655b7c]{width:100px;height:100px;margin:0 auto;position:relative}.app-container .app-info .app-f .app-icon img[data-v-b0655b7c]{width:100%;height:100%;object-fit:contain}.app-container .app-info .app-f .app-icon .docker-icon-i[data-v-b0655b7c]{position:absolute;right:5px;top:5px}.app-container .app-info .app-f .app-icon .docker-icon[data-v-b0655b7c]{position:absolute;width:30px;height:30px;left:-15px;top:-15px;color:#fff;background-color:#2496ed;border-radius:50%;padding:5px}.app-container .app-info .app-f .app-tags[data-v-b0655b7c]{width:100%;display:flex;justify-content:center;align-items:center;padding:0 25px}.app-container .app-info .app-f .app-tags .tag[data-v-b0655b7c]{font-family:PingFangSC-Medium,PingFang SC;font-weight:500;line-height:12px;font-size:.8125rem;white-space:nowrap;padding:.5rem}.app-container .app-info .app-f .app-tags .block[data-v-b0655b7c]{font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin:0 2px}.app-container .app-info .app-f .app-tags .block[data-v-b0655b7c]:last-child{display:none}.app-container .app-info .app-r[data-v-b0655b7c]{flex:0 0 100%;max-width:calc(100% - 150px);padding:0 15px}.app-container .app-info .app-r .app-title[data-v-b0655b7c]{width:100%;margin-bottom:10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:26px;padding-top:12px}.app-container .app-info .app-r .app-title .app-version[data-v-b0655b7c]{margin-left:10px;font-size:.8125rem}.app-container .app-info .app-r .app-as[data-v-b0655b7c]{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-bottom:10px}.app-container .app-info .app-r .app-as .star-btn[data-v-b0655b7c]{padding:0;margin:0 0 0 10px;width:30px;border:none!important;cursor:pointer;background:none;box-shadow:none}.app-container .app-info .app-r .app-as .star-btn[data-v-b0655b7c] svg path{fill:currentColor}.app-container .app-info .app-r .app-as .star-btn[data-v-b0655b7c]:hover svg path{filter:invert(.6)}.app-container .app-info .app-r .app-description[data-v-b0655b7c]{font-size:12px;height:36px;line-height:18px;margin-bottom:10px;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;padding:0}.app-container .app-info .app-r .app-description span[data-v-b0655b7c]{-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;display:-webkit-box}.app-container .app-info .app-r .app-author[data-v-b0655b7c],.app-container .app-info .app-r .app-date[data-v-b0655b7c]{width:100%;height:20px;line-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.app-container .app-btns[data-v-b0655b7c]{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end}.app-container .app-btns .auto[data-v-b0655b7c]{flex:auto}.app-container .app-btns .app-margin-left[data-v-b0655b7c]{margin:0 5px}.app-container .app-btns .app-btn[data-v-b0655b7c]{padding-top:5px;padding-bottom:5px;text-decoration:none}.app-container .fav-icon-i[data-v-b0655b7c]{user-select:none;position:absolute;top:10px;right:10px;cursor:pointer;display:none;font-family:none;font-style:normal;line-height:1;font-size:24px}.app-list-installed .app-container:hover .fav-icon-i[data-v-b0655b7c]{display:initial}@media (hover: none){.app-list-installed .app-container .fav-icon-i[data-v-b0655b7c]{display:initial}}@media screen and (max-width: 420px){.app-container .app-btns .app-margin-left[data-v-b0655b7c]{margin:0 3px}}#app *[data-v-0708f588]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.containers[data-v-0708f588]{width:100%;height:100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(475px,1fr))}@media screen and (max-width: 1242px){.containers[data-v-0708f588]{grid-template-columns:1fr 1fr}}@media screen and (max-width: 900px){.containers[data-v-0708f588]{grid-template-columns:1fr}}#app *[data-v-bb2340b4]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-bb2340b4]{padding:15px}#app *[data-v-9f592bc6]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.sort-container[data-v-9f592bc6]{display:flex;flex-wrap:wrap;align-items:flex-start;margin-bottom:10px}.sort-container .sort-title[data-v-9f592bc6]{width:50px;height:28px;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;line-height:28px}.sort-container .sort-value[data-v-9f592bc6]{display:flex;flex-wrap:wrap;flex:0 0 100%;max-width:calc(100% - 50px)}.sort-container .sort-value .cbi-button[data-v-9f592bc6]{margin-right:5px}#app *[data-v-07bccc36]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.tags-container[data-v-07bccc36]{display:flex;flex-wrap:wrap;align-items:flex-start;margin-bottom:10px}.tags-container .tags-title[data-v-07bccc36]{width:50px;height:28px;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;line-height:28px}.tags-container .tags-value[data-v-07bccc36]{display:flex;flex-wrap:wrap;flex:0 0 100%;max-width:calc(100% - 50px)}.tags-container .tags-value .cbi-button[data-v-07bccc36]{margin-right:5px}#app *[data-v-c4e8a9f2]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}form.search[data-v-c4e8a9f2]{width:100%;display:flex;flex-wrap:wrap;align-items:center;margin-bottom:10px;position:relative}form.search input[data-v-c4e8a9f2]{width:100%;height:36px;border-radius:19px;padding:0 40px}form.search .search-btn[data-v-c4e8a9f2]{position:absolute;left:20px;border:none!important;box-shadow:none!important;background:none!important;cursor:pointer;z-index:10;display:flex;flex-wrap:wrap;align-items:center;width:30px;padding:0;margin:0}form.search .search-btn[data-v-c4e8a9f2] svg path{stroke:currentColor}#app *[data-v-74b0669f]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-74b0669f]{padding:15px}.cbi-section[data-v-74b0669f] .cbi-value{display:flex;flex-wrap:wrap;align-items:center;margin-bottom:10px}#app *[data-v-0b0723c2]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-0b0723c2]{padding:15px}.cbi-section .container_msg span[data-v-0b0723c2]{display:block;width:100%;margin-bottom:5px}.cbi-section form[data-v-0b0723c2]{width:100%;margin:30px 0}.cbi-section form .flex[data-v-0b0723c2]{width:100%;display:flex;flex-wrap:wrap;align-items:center}.cbi-section form .flex label.upload-file[data-v-0b0723c2]{width:100%;height:54px;background:linear-gradient(144deg,#009aff 0%,#0060ff 100%);border-radius:12px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:0 20px;cursor:pointer}.cbi-section form .flex label.upload-file span[data-v-0b0723c2]{font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#fff;line-height:22px}.cbi-section form .flex label.upload-file .button[data-v-0b0723c2]{min-width:116px;padding:0 10px;height:38px;background:rgba(255,255,255,.2);border-radius:6px;font-size:12px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#fff;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.cbi-section form .flex label.upload-file input[data-v-0b0723c2]{visibility:hidden}.cbi-section form .flex label.upload-file[data-v-0b0723c2]:hover{opacity:.9}.cbi-section form button.upload-button[data-v-0b0723c2]{width:118px;height:36px;display:flex;align-items:center;justify-content:center;background:linear-gradient(144deg,#009aff 0%,#0060ff 100%);border-radius:10px;font-size:14px;font-family:PingFangSC-Semibold,PingFang SC;font-weight:600;color:#fff}.cbi-section form button.upload-button[data-v-0b0723c2]:hover{opacity:.9}#app *[data-v-8e330954]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.cbi-section[data-v-8e330954]{width:100%;min-height:400px;display:block;background:rgba(0,0,0,.9)}.cbi-section .webapp-container[data-v-8e330954]{width:100%;height:100%;min-height:inherit}.cbi-section .webapp-container iframe[data-v-8e330954]{width:100%;height:100%;min-height:inherit;border:none}#app *[data-v-8ac6e0ca]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.log-containers[data-v-8ac6e0ca]{display:flex;flex-wrap:wrap}.log-containers .model[data-v-8ac6e0ca]{width:100%;flex:0 0 100%;display:block;margin-left:18px;margin-top:18px}.log-containers .containers-tit[data-v-8ac6e0ca]{margin:1rem 0;display:flex;align-items:center;align-content:center;padding-left:16px}.log-containers .containers-tit .app-btn[data-v-8ac6e0ca]{margin-left:3rem}em[data-v-8ac6e0ca]{width:100%;display:block;border-bottom:1px solid #eee;margin:1rem 0}#app *[data-v-3388f69c]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.log-containers[data-v-3388f69c]{display:flex;flex-wrap:wrap}.log-containers .containers-tit[data-v-3388f69c]{margin:1rem 0;display:flex;align-items:center;align-content:center;padding-left:16px}em[data-v-3388f69c]{width:100%;display:block;border-bottom:1px solid #eee;margin:1rem 0}#app *[data-v-a4c06ae8]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.Lightweight[data-v-a4c06ae8]{margin-top:20px;margin-left:18px}.Lightweight .Lightweight-container .model[data-v-a4c06ae8]{margin-bottom:10px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-tit[data-v-a4c06ae8]{margin-bottom:20px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-tit span[data-v-a4c06ae8]{display:block;line-height:24px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-backup[data-v-a4c06ae8]{display:flex}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .Lightweight-backup .app-btn[data-v-a4c06ae8]{margin-left:14px}.Lightweight .Lightweight-container .Lightweight-container1 .container1-center .upload-file[data-v-a4c06ae8]{color:#000}input[hidden][data-v-a4c06ae8]{display:none!important}#app *[data-v-3b02aa6c]{-webkit-box-sizing:border-box;-webkit-tap-highlight-color:transparent;box-sizing:border-box;word-wrap:break-word;outline:none}.local[data-v-3b02aa6c]{margin-top:20px}.local .local-container[data-v-3b02aa6c]{margin-left:18px}.local .local-container .model[data-v-3b02aa6c]{margin-bottom:10px}.local .local-container .local-container1[data-v-3b02aa6c]{width:800px;height:400px}.local .local-container .local-container1 .container1-center[data-v-3b02aa6c]{text-align:left}.local .local-container .local-container1 .container1-center .local-tit span[data-v-3b02aa6c]{display:block;line-height:24px}.local .local-container .local-container1 .container1-center .local-device[data-v-3b02aa6c]{margin-top:20px;margin-bottom:10px}.local .local-container .local-container1 .container1-center .local-input[data-v-3b02aa6c]{display:flex;align-items:center}.local .local-container .local-container1 .container1-center .local-input .app-btn[data-v-3b02aa6c]{margin-left:14px}.local .local-container .local-container1 .container1-center .local-input .local-input-field[data-v-3b02aa6c]{width:20rem}.local .local-container .local-container1 .container1-center .list[data-v-3b02aa6c]{margin-top:20px;margin-bottom:10px}.local .local-container .local-container1 .container1-center .select[data-v-3b02aa6c]{flex:0 0 100%;max-width:100%}