@forsion/extend 0.9.5 → 0.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/README.md +12 -0
- package/SIGNATURE +7 -7
- package/dist/desktop.mjs +46 -35
- package/dist/main.js +203 -45
- package/manifest.json +2 -2
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
"use strict";var __fxExtend=(()=>{var
|
|
2
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function gp(e,t){return pp(e)||fp(e,t)||hp(e,t)||mp()}function hp(e,t){if(e){if(typeof e=="string")return ps(e,t);var n={}.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ps(e,t):void 0}}function vr(e){var t,n;function r(i,s){try{var l=e[i](s),c=l.value,d=c instanceof up;Promise.resolve(d?c.v:c).then(function(g){if(d){var u=i==="return"&&c.k?i:"next";if(!c.k||g.done)return r(u,g);g=e[u](g).value}a(!!l.done,g)},function(g){r("throw",g)})}catch(g){a(2,g)}}function a(i,s){i===2?t.reject(s):t.resolve({value:s,done:i}),(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(i,s){return new Promise(function(l,c){var d={key:i,arg:s,resolve:l,reject:c,next:null};n?n=n.next=d:(t=n=d,r(i,s))})},typeof e.return!="function"&&(this.return=void 0)}vr.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},vr.prototype.next=function(e){return this._invoke("next",e)},vr.prototype.throw=function(e){return this._invoke("throw",e)},vr.prototype.return=function(e){return this._invoke("return",e)};var Ts=Object.entries,fs=Object.setPrototypeOf,bp=Object.isFrozen,vp=Object.getPrototypeOf,yp=Object.getOwnPropertyDescriptor,et=Object.freeze,rt=Object.seal,bo=Object.create,As=typeof Reflect<"u"&&Reflect,ha=As.apply,ba=As.construct;et||(et=function(t){return t});rt||(rt=function(t){return t});ha||(ha=function(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),i=2;i<r;i++)a[i-2]=arguments[i];return t.apply(n,a)});ba||(ba=function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return new t(...r)});var Gn=Ye(Array.prototype.forEach);Array.prototype.indexOf;var xp=Ye(Array.prototype.lastIndexOf),ms=Ye(Array.prototype.pop),Bo=Ye(Array.prototype.push);Array.prototype.slice;var kp=Ye(Array.prototype.splice),vo=Array.isArray,Uo=Ye(String.prototype.toLowerCase),da=Ye(String.prototype.toString),gs=Ye(String.prototype.match),Fo=Ye(String.prototype.replace),hs=Ye(String.prototype.indexOf),wp=Ye(String.prototype.trim),zp=Ye(Number.prototype.toString),Sp=Ye(Boolean.prototype.toString),bs=typeof BigInt>"u"?null:Ye(BigInt.prototype.toString),vs=typeof Symbol>"u"?null:Ye(Symbol.prototype.toString),zt=Ye(Object.prototype.hasOwnProperty),$o=Ye(Object.prototype.toString),dt=Ye(RegExp.prototype.test),In=_p(TypeError);function Ye(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return ha(e,t,r)}}function _p(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return ba(e,n)}}function _e(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Uo;if(fs&&fs(e,null),!vo(t))return e;let r=t.length;for(;r--;){let a=t[r];if(typeof a=="string"){let i=n(a);i!==a&&(bp(t)||(t[r]=i),a=i)}e[a]=!0}return e}function Cp(e){for(let t=0;t<e.length;t++)zt(e,t)||(e[t]=null);return e}function Dt(e){let t=bo(null);for(let r of Ts(e)){var n=gp(r,2);let a=n[0],i=n[1];zt(e,a)&&(vo(i)?t[a]=Cp(i):i&&typeof i=="object"&&i.constructor===Object?t[a]=Dt(i):t[a]=i)}return t}function Tp(e){switch(typeof e){case"string":return e;case"number":return zp(e);case"boolean":return Sp(e);case"bigint":return bs?bs(e):"0";case"symbol":return vs?vs(e):"Symbol()";case"undefined":return $o(e);case"function":case"object":{if(e===null)return $o(e);let t=e,n=jt(t,"toString");if(typeof n=="function"){let r=n(t);return typeof r=="string"?r:$o(r)}return $o(e)}default:return $o(e)}}function jt(e,t){for(;e!==null;){let r=yp(e,t);if(r){if(r.get)return Ye(r.get);if(typeof r.value=="function")return Ye(r.value)}e=vp(e)}function n(){return null}return n}function Ap(e){try{return dt(e,""),!0}catch{return!1}}var ys=et(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ua=et(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),pa=et(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Ep=et(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),fa=et(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Pp=et(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),xs=et(["#text"]),ks=et(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),ma=et(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),ws=et(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),yr=et(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Mp=rt(/{{[\w\W]*|^[\w\W]*}}/g),Ip=rt(/<%[\w\W]*|^[\w\W]*%>/g),Rp=rt(/\${[\w\W]*/g),Lp=rt(/^data-[\-\w.\u00B7-\uFFFF]+$/),Dp=rt(/^aria-[\-\w]+$/),zs=rt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Np=rt(/^(?:\w+script|data):/i),Op=rt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Bp=rt(/^html$/i),Fp=rt(/^[a-z][.\w]*(-[.\w]+)+$/i),Ss=rt(/<[/\w!]/g),_s=rt(/<[/\w]/g),$p=rt(/<\/no(script|embed|frames)/i),Up=rt(/\/>/i),Lt={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Es=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],Hp=et(_e({},Es)),qp=(function(){let e={};return Gn(Es,t=>{e[t]=rt(new RegExp("</"+t+"(?=[\\t\\n\\f\\r />])","i"))}),et(e)})(),Vp=function(){return typeof window>"u"?null:window},jp=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let r=null,a="data-tt-policy-suffix";n&&n.hasAttribute(a)&&(r=n.getAttribute(a));let i="dompurify"+(r?"#"+r:"");try{return t.createPolicy(i,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+i+" could not be created."),null}},Cs=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Rn=function(t,n,r,a){return zt(t,n)&&vo(t[n])?_e(a.base?Dt(a.base):{},t[n],a.transform):r},ga=function(t,n,r){let a=zt(t,n)?t[n]:void 0;return a&&typeof a=="object"?Dt(a):r()};function Ps(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Vp(),t=F=>Ps(F);if(t.version="3.4.16",t.removed=[],!e||!e.document||e.document.nodeType!==Lt.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,a=r.currentScript;e.DocumentFragment;let i=e.HTMLTemplateElement,s=e.Node,l=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let d=e.DOMParser,g=e.trustedTypes,u=l.prototype,p=jt(u,"cloneNode"),m=jt(u,"remove"),f=jt(u,"removeAttributeNode"),v=jt(u,"nextSibling"),w=jt(u,"childNodes"),k=jt(u,"parentNode"),z=jt(u,"shadowRoot"),x=jt(u,"attributes"),M=s&&s.prototype?jt(s.prototype,"nodeType"):null,L=s&&s.prototype?jt(s.prototype,"nodeName"):null,H=s&&s.prototype?jt(s.prototype,"ownerDocument"):null,V=function(h){return M?M(h):h.nodeType},ee=function(h){return L?L(h):h.nodeName};if(typeof i=="function"){let F=n.createElement("template");F.content&&F.content.ownerDocument&&(n=F.content.ownerDocument)}let te,S="",E,O=!1,I=0,ne=function(){if(I>0)throw In('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},b=function(h){ne(),I++;try{return te.createHTML(h)}finally{I--}},T=function(h){ne(),I++;try{return te.createScriptURL(h)}finally{I--}},R=function(){return O||(E=jp(g,a),O=!0),E},K=n,X=K.implementation,Y=K.createNodeIterator,me=K.createDocumentFragment,Le=K.getElementsByTagName,je=r.importNode,he=Cs();t.isSupported=typeof Ts=="function"&&typeof k=="function"&&X&&X.createHTMLDocument!==void 0;let Te=Mp,ft=Ip,Ct=Rp,Tt=Lp,on=Dp,bt=Np,lt=Op,At=Fp,vt=zs,ve=null,yt=_e({},[...ys,...ua,...pa,...fa,...xs]),Ae=null,Hn=_e({},[...ks,...ma,...ws,...yr]),ct=Object.seal(bo(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Xe=null,xt=null,mt=Object.seal(bo(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Et=!0,Ht=!0,nt=!1,Tn=!0,Je=!1,kt=!0,D=!1,re=!1,we=null,Qe=null,it=!1,We=!1,Pt=!1,rn=!1,An=!0,En=!1,un="user-content-",Fe=!0,wt=!1,gt={},Mt=null,Ro=_e({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),pn=null,ot=_e({},["audio","video","img","source","image","track"]),Lo=null,Do=_e({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),qt="http://www.w3.org/1998/Math/MathML",qn="http://www.w3.org/2000/svg",It="http://www.w3.org/1999/xhtml",fn=It,Vn=!1,No=null,aa=_e({},[qt,qn,It],da),dr=et(["mi","mo","mn","ms","mtext"]),y=_e({},dr),C=et(["annotation-xml"]),P=_e({},C),j=_e({},["title","style","font","a","script"]),$=null,ie=["application/xhtml+xml","text/html"],Se="text/html",Z=null,ye=null,ur=n.createElement("form"),jn=function(h){return h instanceof RegExp||h instanceof Function},fo=function(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(ye&&ye===h)return;(!h||typeof h!="object")&&(h={}),h=Dt(h),$=ie.indexOf(h.PARSER_MEDIA_TYPE)===-1?Se:h.PARSER_MEDIA_TYPE,Z=$==="application/xhtml+xml"?da:Uo,ve=Rn(h,"ALLOWED_TAGS",yt,{transform:Z}),Ae=Rn(h,"ALLOWED_ATTR",Hn,{transform:Z}),No=Rn(h,"ALLOWED_NAMESPACES",aa,{transform:da}),Lo=Rn(h,"ADD_URI_SAFE_ATTR",Do,{transform:Z,base:Do}),pn=Rn(h,"ADD_DATA_URI_TAGS",ot,{transform:Z,base:ot}),Mt=Rn(h,"FORBID_CONTENTS",Ro,{transform:Z}),Xe=Rn(h,"FORBID_TAGS",Dt({}),{transform:Z}),xt=Rn(h,"FORBID_ATTR",Dt({}),{transform:Z}),gt=zt(h,"USE_PROFILES")?h.USE_PROFILES&&typeof h.USE_PROFILES=="object"?Dt(h.USE_PROFILES):h.USE_PROFILES:!1,Et=h.ALLOW_ARIA_ATTR!==!1,Ht=h.ALLOW_DATA_ATTR!==!1,nt=h.ALLOW_UNKNOWN_PROTOCOLS||!1,Tn=h.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Je=h.SAFE_FOR_TEMPLATES||!1,kt=h.SAFE_FOR_XML!==!1,D=h.WHOLE_DOCUMENT||!1,We=h.RETURN_DOM||!1,Pt=h.RETURN_DOM_FRAGMENT||!1,rn=h.RETURN_TRUSTED_TYPE||!1,it=h.FORCE_BODY||!1,An=h.SANITIZE_DOM!==!1,En=h.SANITIZE_NAMED_PROPS||!1,Fe=h.KEEP_CONTENT!==!1,wt=h.IN_PLACE||!1,vt=Ap(h.ALLOWED_URI_REGEXP)?h.ALLOWED_URI_REGEXP:zs,fn=typeof h.NAMESPACE=="string"?h.NAMESPACE:It,y=ga(h,"MATHML_TEXT_INTEGRATION_POINTS",()=>_e({},dr)),P=ga(h,"HTML_INTEGRATION_POINTS",()=>_e({},C));let _=ga(h,"CUSTOM_ELEMENT_HANDLING",()=>bo(null));if(ct=bo(null),zt(_,"tagNameCheck")&&jn(_.tagNameCheck)&&(ct.tagNameCheck=_.tagNameCheck),zt(_,"attributeNameCheck")&&jn(_.attributeNameCheck)&&(ct.attributeNameCheck=_.attributeNameCheck),zt(_,"allowCustomizedBuiltInElements")&&typeof _.allowCustomizedBuiltInElements=="boolean"&&(ct.allowCustomizedBuiltInElements=_.allowCustomizedBuiltInElements),rt(ct),Je&&(Ht=!1),Pt&&(We=!0),gt&&(ve=_e({},xs),Ae=bo(null),gt.html===!0&&(_e(ve,ys),_e(Ae,ks)),gt.svg===!0&&(_e(ve,ua),_e(Ae,ma),_e(Ae,yr)),gt.svgFilters===!0&&(_e(ve,pa),_e(Ae,ma),_e(Ae,yr)),gt.mathMl===!0&&(_e(ve,fa),_e(Ae,ws),_e(Ae,yr))),mt.tagCheck=null,mt.attributeCheck=null,zt(h,"ADD_TAGS")&&(typeof h.ADD_TAGS=="function"?mt.tagCheck=h.ADD_TAGS:vo(h.ADD_TAGS)&&(ve===yt&&(ve=Dt(ve)),_e(ve,h.ADD_TAGS,Z))),zt(h,"ADD_ATTR")&&(typeof h.ADD_ATTR=="function"?mt.attributeCheck=h.ADD_ATTR:vo(h.ADD_ATTR)&&(Ae===Hn&&(Ae=Dt(Ae)),_e(Ae,h.ADD_ATTR,Z))),zt(h,"ADD_FORBID_CONTENTS")&&vo(h.ADD_FORBID_CONTENTS)&&(Mt===Ro&&(Mt=Dt(Mt)),_e(Mt,h.ADD_FORBID_CONTENTS,Z)),Fe&&(ve["#text"]=!0),D&&_e(ve,["html","head","body"]),ve.table&&(_e(ve,["tbody"]),delete Xe.tbody),h.TRUSTED_TYPES_POLICY){if(typeof h.TRUSTED_TYPES_POLICY.createHTML!="function")throw In('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof h.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw In('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let B=te;te=h.TRUSTED_TYPES_POLICY;try{S=b("")}catch(U){throw te=B,U}}else h.TRUSTED_TYPES_POLICY===null?(te=void 0,S=""):(te===void 0&&(te=R()),te&&typeof S=="string"&&(S=b("")));et&&et(h),ye=h},Pn=_e({},[...ua,...pa,...Ep]),ts=_e({},[...fa,...Pp]),Ku=function(h,_,B){return _.namespaceURI===It?h==="svg":_.namespaceURI===qt?h==="svg"&&(B==="annotation-xml"||y[B]):!!Pn[h]},Xu=function(h,_,B){return _.namespaceURI===It?h==="math":_.namespaceURI===qn?h==="math"&&P[B]:!!ts[h]},Ju=function(h,_,B){return _.namespaceURI===qn&&!P[B]||_.namespaceURI===qt&&!y[B]?!1:!ts[h]&&(j[h]||!Pn[h])},Yu=function(h){let _=k(h);(!_||!_.tagName)&&(_={namespaceURI:fn,tagName:"template"});let B=Uo(h.tagName),U=Uo(_.tagName);return No[h.namespaceURI]?h.namespaceURI===qn?Ku(B,_,U):h.namespaceURI===qt?Xu(B,_,U):h.namespaceURI===It?Ju(B,_,U):!!($==="application/xhtml+xml"&&No[h.namespaceURI]):!1},Mn=function(h){Bo(t.removed,{element:h});try{k(h).removeChild(h)}catch{if(m(h),!k(h))throw In("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},ns=function(h,_,B){try{f(h,_)}catch{try{h.removeAttribute(B)}catch{}}},pr=function(h){fr(h);let _=w(h);if(_){let U=[];Gn(_,le=>{Bo(U,le)}),Gn(U,le=>{try{m(le)}catch{}})}let B=x(h);if(B)for(let U=B.length-1;U>=0;--U){let le=B[U],be=le&&le.name;typeof be=="string"&&ns(h,le,be)}},Wn=function(h,_,B){if(!B)try{B=_.getAttributeNode(h)}catch{B=null}Bo(t.removed,{attribute:B||null,from:_});try{B?f(_,B):_.removeAttribute(h)}catch{try{_.removeAttribute(h)}catch{}}if(h==="is")if(We||Pt)try{Mn(_)}catch{}else try{_.setAttribute(h,"")}catch{}},Zu=function(h){let _=x(h);if(_)for(let B=_.length-1;B>=0;--B){let U=_[B],le=U&&U.name;typeof le!="string"||Ae[Z(le)]||ns(h,U,le)}},fr=function(h){let _=[h];for(;_.length>0;){let B=_.pop();V(B)===Lt.element&&Zu(B);let U=w(B);if(U)for(let le=U.length-1;le>=0;--le)_.push(U[le])}},os=function(h,_){return kt?h==="patchsrc"?!0:h==="for"&&_!=="label"&&_!=="output":!1},Qu=function(h){if(!kt)return;let _=[h];for(;_.length>0;){let B=_.pop(),U=V(B);if(U===Lt.processingInstruction||U===Lt.comment&&dt(_s,B.data)){try{m(B)}catch{}continue}if(U===Lt.element){let be=B,ze=Z(ee(B));try{be.hasAttribute&&be.hasAttribute("patchsrc")&&be.removeAttribute("patchsrc"),be.hasAttribute&&be.hasAttribute("for")&&os("for",ze)&&be.removeAttribute("for")}catch{}}let le=w(B);if(le)for(let be=le.length-1;be>=0;--be)_.push(le[be])}},rs=function(h){let _=null,B=null;if(it)h="<remove></remove>"+h;else{let be=gs(h,/^[\r\n\t ]+/);B=be&&be[0]}$==="application/xhtml+xml"&&fn===It&&(h='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+h+"</body></html>");let U=te?b(h):h;if(fn===It)try{_=new d().parseFromString(U,$)}catch{}if(!_||!_.documentElement){_=X.createDocument(fn,"template",null);try{_.documentElement.innerHTML=Vn?S:U}catch{}}let le=_.body||_.documentElement;return h&&B&&le.insertBefore(n.createTextNode(B),le.childNodes[0]||null),fn===It?Le.call(_,D?"html":"body")[0]:D?_.documentElement:le},as=function(h){let _=H?H(h):h.ownerDocument;return Y.call(_||h,h,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},mr=function(h){return h=Fo(h,Te," "),h=Fo(h,ft," "),h=Fo(h,Ct," "),h},ia=function(h){var _;h.normalize();let B=H?H(h):h.ownerDocument,U=Y.call(B||h,h,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),le=U.nextNode();for(;le;)le.data=mr(le.data),le=U.nextNode();let be=(_=h.querySelectorAll)===null||_===void 0?void 0:_.call(h,"template");be&&Gn(be,ze=>{mo(ze.content)&&ia(ze.content)})},gr=function(h){let _=L?L(h):null;return typeof _!="string"||Z(_)!=="form"?!1:typeof h.nodeName!="string"||typeof h.textContent!="string"||typeof h.removeChild!="function"||h.attributes!==x(h)||typeof h.removeAttribute!="function"||typeof h.removeAttributeNode!="function"||typeof h.getAttributeNode!="function"||typeof h.setAttribute!="function"||typeof h.namespaceURI!="string"||typeof h.insertBefore!="function"||typeof h.hasChildNodes!="function"||h.nodeType!==M(h)||h.childNodes!==w(h)},mo=function(h){if(!M||typeof h!="object"||h===null)return!1;try{return M(h)===Lt.documentFragment}catch{return!1}},Oo=function(h){if(!M||typeof h!="object"||h===null)return!1;try{return typeof M(h)=="number"}catch{return!1}};function an(F,h,_){F.length!==0&&Gn(F,B=>{B.call(t,h,_,ye)})}let ep=function(h,_){return!!(kt&&h.hasChildNodes()&&!Oo(h.firstElementChild)&&dt(Ss,h.textContent)&&dt(Ss,h.innerHTML)||kt&&h.namespaceURI===It&&Hp[_]&&(Oo(h.firstElementChild)||typeof h.textContent=="string"&&dt(qp[_],h.textContent))||h.nodeType===Lt.processingInstruction||kt&&h.nodeType===Lt.comment&&dt(_s,h.data))},hr=function(h,_){if(h instanceof RegExp)return dt(h,_);if(h instanceof Function){for(var B=arguments.length,U=new Array(B>2?B-2:0),le=2;le<B;le++)U[le-2]=arguments[le];return!!h(_,...U)}return!1},tp=function(h,_,B){if(!Xe[_]&&cs(_)&&hr(ct.tagNameCheck,_))return!1;if(Fe&&!Mt[_]){let U=k(h),le=w(h);if(le&&U){let be=le.length;for(let ze=be-1;ze>=0;--ze){let Ue=h===B?p(le[ze],!0):le[ze];U.insertBefore(Ue,v(h))}}}return Mn(h),!0},is=function(h,_,B,U){return h.length===0?_:_===B||_===U?Dt(_):_},go=function(h,_){return h===_||k(h)!==null?!1:(wt&&fr(h),!0)},ss=function(h,_){if(an(he.beforeSanitizeElements,h,null),go(h,_))return!0;if(gr(h))return Mn(h),!0;let B=Z(ee(h));if(ve=is(he.uponSanitizeElement,ve,yt,we),an(he.uponSanitizeElement,h,{tagName:B,allowedTags:ve}),go(h,_))return!0;if(ep(h,B))return Mn(h),!0;if(Xe[B]||!(mt.tagCheck instanceof Function&&mt.tagCheck(B))&&!ve[B]){let U=tp(h,B,_);return U===!1&&(an(he.afterSanitizeElements,h,null),go(h,_))?!0:U}if(V(h)===Lt.element&&!Yu(h)||(B==="noscript"||B==="noembed"||B==="noframes")&&dt($p,h.innerHTML))return Mn(h),!0;if(Je&&h.nodeType===Lt.text){let U=mr(h.textContent);h.textContent!==U&&(Bo(t.removed,{element:h.cloneNode()}),h.textContent=U)}return an(he.afterSanitizeElements,h,null),go(h,_)},ls=function(h,_,B){if(xt[_]||os(_,h)||An&&(_==="id"||_==="name")&&(B in n||B in ur))return!1;let U=Ae[_]||mt.attributeCheck instanceof Function&&mt.attributeCheck(_,h);return Ht&&dt(Tt,_)||Et&&dt(on,_)?!0:U?Lo[_]||dt(vt,Fo(B,lt,""))||(_==="src"||_==="xlink:href"||_==="href")&&h!=="script"&&hs(B,"data:")===0&&pn[h]||nt&&!dt(bt,Fo(B,lt,""))?!0:!B:cs(h)&&hr(ct.tagNameCheck,h)&&hr(ct.attributeNameCheck,_,h)||_==="is"&&ct.allowCustomizedBuiltInElements&&hr(ct.tagNameCheck,B)},np=_e({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),cs=function(h){return!np[Uo(h)]&&dt(At,h)},op=function(h,_,B,U){if(te&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!B)switch(g.getAttributeType(h,_)){case"TrustedHTML":return b(U);case"TrustedScriptURL":return T(U)}return U},rp=function(h,_,B,U){try{return B?h.setAttributeNS(B,_,U):h.setAttribute(_,U),gr(h)?(Mn(h),!1):!0}catch{return Wn(_,h),!1}},ds=function(h,_){if(an(he.beforeSanitizeAttributes,h,null),go(h,_))return;let B=h.attributes;if(!B||gr(h))return;Ae=is(he.uponSanitizeAttribute,Ae,Hn,Qe);let U={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ae,forceKeepAttr:void 0},le=B.length,be=Z(h.nodeName);for(;le--;){let ze=B[le],Ue=ze.name,Vt=ze.namespaceURI,Rt=ze.value,ho=Z(Ue),la=Rt,ht=Ue==="value"?la:wp(la),us=!1;if(U.attrName=ho,U.attrValue=ht,U.keepAttr=!0,U.forceKeepAttr=void 0,an(he.uponSanitizeAttribute,h,U),ht=U.attrValue,En&&(ho==="id"||ho==="name")&&hs(ht,un)!==0&&(Wn(Ue,h,ze),ht=un+ht,us=!0),kt&&dt(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,ht)){Wn(Ue,h,ze);continue}if(ho==="attributename"&&gs(ht,"href")){Wn(Ue,h,ze);continue}if(!U.forceKeepAttr){if(!U.keepAttr){Wn(Ue,h,ze);continue}if(!Tn&&dt(Up,ht)){Wn(Ue,h,ze);continue}if(Je&&(ht=mr(ht)),!ls(be,ho,ht)){Wn(Ue,h,ze);continue}ht=op(be,ho,Vt,ht),ht!==la&&rp(h,Ue,Vt,ht)&&us&&ms(t.removed)}}an(he.afterSanitizeAttributes,h,null),go(h,_)},br=function(h){let _=null,B=as(h);for(an(he.beforeSanitizeShadowDOM,h,null);_=B.nextNode();)if(an(he.uponSanitizeShadowNode,_,null),ss(_,h),ds(_,h),mo(_.content)&&br(_.content),V(_)===Lt.element){let U=z(_);mo(U)&&(sa(U),br(U))}an(he.afterSanitizeShadowDOM,h,null)},sa=function(h){let _=[{node:h,shadow:null}];for(;_.length>0;){let B=_.pop();if(B.shadow){br(B.shadow);continue}let U=B.node,le=V(U)===Lt.element,be=w(U);if(be)for(let ze=be.length-1;ze>=0;--ze)_.push({node:be[ze],shadow:null});if(le){let ze=L?L(U):null;if(typeof ze=="string"&&Z(ze)==="template"){let Ue=U.content;mo(Ue)&&_.push({node:Ue,shadow:null})}}if(le){let ze=z(U);mo(ze)&&_.push({node:null,shadow:ze},{node:ze,shadow:null})}}};return t.sanitize=function(F){let h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},_=null,B=null,U=null,le=null;if(Vn=!F,Vn&&(F="<!-->"),typeof F!="string"&&!Oo(F)&&(F=Tp(F),typeof F!="string"))throw In("dirty is not a string, aborting");if(!t.isSupported)return F;re?(ve=we,Ae=Qe):fo(h),(he.uponSanitizeElement.length>0||he.uponSanitizeAttribute.length>0)&&(ve=Dt(ve)),he.uponSanitizeAttribute.length>0&&(Ae=Dt(Ae)),t.removed=[];let be=wt&&typeof F!="string"&&Oo(F);if(be){Qu(F);let Vt=ee(F);if(typeof Vt=="string"){let Rt=Z(Vt);if(!ve[Rt]||Xe[Rt])throw pr(F),In("root node is forbidden and cannot be sanitized in-place")}if(gr(F))throw pr(F),In("root node is clobbered and cannot be sanitized in-place");try{sa(F)}catch(Rt){throw pr(F),Rt}}else if(Oo(F))_=rs("<!---->"),B=_.ownerDocument.importNode(F,!0),B.nodeType===Lt.element&&B.nodeName==="BODY"||B.nodeName==="HTML"?_=B:_.appendChild(B),sa(_);else{if(!We&&!Je&&!D&&F.indexOf("<")===-1)return te&&rn?b(F):F;if(_=rs(F),!_)return We?null:rn?S:""}_&&it&&Mn(_.firstChild);let ze=be?F:_;try{let Vt=as(ze);for(;U=Vt.nextNode();)ss(U,ze),ds(U,ze),mo(U.content)&&br(U.content)}catch(Vt){throw be&&(pr(F),Gn(t.removed,Rt=>{Rt.element&&fr(Rt.element)})),Vt}if(be){let Vt=!1;if(Gn(t.removed,Rt=>{Rt.element&&(Rt.element===F&&(Vt=!0),fr(Rt.element))}),Vt)throw In("a node selected for removal could not be safely returned; refusing to sanitize in place");return Je&&ia(F),F}if(We){if(Je&&ia(_),Pt)for(le=me.call(_.ownerDocument);_.firstChild;)le.appendChild(_.firstChild);else le=_;return(Ae.shadowroot||Ae.shadowrootmode)&&(le=je.call(r,le,!0)),le}let Ue=D?_.outerHTML:_.innerHTML;return D&&ve["!doctype"]&&_.ownerDocument&&_.ownerDocument.doctype&&_.ownerDocument.doctype.name&&dt(Bp,_.ownerDocument.doctype.name)&&(Ue="<!DOCTYPE "+_.ownerDocument.doctype.name+`>
|
|
3
|
-
`+
|
|
4
|
-
]`).replace("lheading",
|
|
5
|
-
`),n=t.length-1;for(;n>=0&&
|
|
6
|
-
`)}function
|
|
1
|
+
"use strict";var __fxExtend=(()=>{var Sa=Object.defineProperty;var nf=Object.getOwnPropertyDescriptor;var of=Object.getOwnPropertyNames;var rf=Object.prototype.hasOwnProperty;var af=(e,t)=>{for(var n in t)Sa(e,n,{get:t[n],enumerable:!0})},sf=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of of(t))!rf.call(e,a)&&a!==n&&Sa(e,a,{get:()=>t[a],enumerable:!(r=nf(t,a))||r.enumerable});return e};var lf=e=>sf(Sa({},"__esModule",{value:!0}),e);var Jb={};af(Jb,{dispose:()=>Wp});function cf(e,t){this.v=e,this.k=t}function Hs(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function df(e){if(Array.isArray(e))return e}function uf(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,a,i,s,l=[],c=!0,d=!1;try{if(i=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(g){d=!0,a=g}finally{try{if(!c&&n.return!=null&&(s=n.return(),Object(s)!==s))return}finally{if(d)throw a}}return l}}function pf(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ff(e,t){return df(e)||uf(e,t)||mf(e,t)||pf()}function mf(e,t){if(e){if(typeof e=="string")return Hs(e,t);var n={}.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Hs(e,t):void 0}}function Tr(e){var t,n;function r(i,s){try{var l=e[i](s),c=l.value,d=c instanceof cf;Promise.resolve(d?c.v:c).then(function(g){if(d){var u=i==="return"&&c.k?i:"next";if(!c.k||g.done)return r(u,g);g=e[u](g).value}a(!!l.done,g)},function(g){r("throw",g)})}catch(g){a(2,g)}}function a(i,s){i===2?t.reject(s):t.resolve({value:s,done:i}),(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(i,s){return new Promise(function(l,c){var d={key:i,arg:s,resolve:l,reject:c,next:null};n?n=n.next=d:(t=n=d,r(i,s))})},typeof e.return!="function"&&(this.return=void 0)}Tr.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},Tr.prototype.next=function(e){return this._invoke("next",e)},Tr.prototype.throw=function(e){return this._invoke("throw",e)},Tr.prototype.return=function(e){return this._invoke("return",e)};var ol=Object.entries,qs=Object.setPrototypeOf,gf=Object.isFrozen,hf=Object.getPrototypeOf,vf=Object.getOwnPropertyDescriptor,ot=Object.freeze,st=Object.seal,zo=Object.create,rl=typeof Reflect<"u"&&Reflect,Ma=rl.apply,Ra=rl.construct;ot||(ot=function(t){return t});st||(st=function(t){return t});Ma||(Ma=function(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),i=2;i<r;i++)a[i-2]=arguments[i];return t.apply(n,a)});Ra||(Ra=function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return new t(...r)});var eo=et(Array.prototype.forEach);Array.prototype.indexOf;var bf=et(Array.prototype.lastIndexOf),Ws=et(Array.prototype.pop),jo=et(Array.prototype.push);Array.prototype.slice;var yf=et(Array.prototype.splice),So=Array.isArray,Jo=et(String.prototype.toLowerCase),_a=et(String.prototype.toString),Vs=et(String.prototype.match),Go=et(String.prototype.replace),js=et(String.prototype.indexOf),xf=et(String.prototype.trim),kf=et(Number.prototype.toString),wf=et(Boolean.prototype.toString),Gs=typeof BigInt>"u"?null:et(BigInt.prototype.toString),Xs=typeof Symbol>"u"?null:et(Symbol.prototype.toString),At=et(Object.prototype.hasOwnProperty),Xo=et(Object.prototype.toString),gt=et(RegExp.prototype.test),Fn=zf(TypeError);function et(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return Ma(e,t,r)}}function zf(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return Ra(e,n)}}function Ce(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Jo;if(qs&&qs(e,null),!So(t))return e;let r=t.length;for(;r--;){let a=t[r];if(typeof a=="string"){let i=n(a);i!==a&&(gf(t)||(t[r]=i),a=i)}e[a]=!0}return e}function Sf(e){for(let t=0;t<e.length;t++)At(e,t)||(e[t]=null);return e}function $t(e){let t=zo(null);for(let r of ol(e)){var n=ff(r,2);let a=n[0],i=n[1];At(e,a)&&(So(i)?t[a]=Sf(i):i&&typeof i=="object"&&i.constructor===Object?t[a]=$t(i):t[a]=i)}return t}function _f(e){switch(typeof e){case"string":return e;case"number":return kf(e);case"boolean":return wf(e);case"bigint":return Gs?Gs(e):"0";case"symbol":return Xs?Xs(e):"Symbol()";case"undefined":return Xo(e);case"function":case"object":{if(e===null)return Xo(e);let t=e,n=Yt(t,"toString");if(typeof n=="function"){let r=n(t);return typeof r=="string"?r:Xo(r)}return Xo(e)}default:return Xo(e)}}function Yt(e,t){for(;e!==null;){let r=vf(e,t);if(r){if(r.get)return et(r.get);if(typeof r.value=="function")return et(r.value)}e=hf(e)}function n(){return null}return n}function Cf(e){try{return gt(e,""),!0}catch{return!1}}var Js=ot(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Ca=ot(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Ta=ot(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Tf=ot(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Aa=ot(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Af=ot(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Ks=ot(["#text"]),Ys=ot(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),Ea=ot(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Zs=ot(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Ar=ot(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Ef=st(/{{[\w\W]*|^[\w\W]*}}/g),Pf=st(/<%[\w\W]*|^[\w\W]*%>/g),Mf=st(/\${[\w\W]*/g),Rf=st(/^data-[\-\w.\u00B7-\uFFFF]+$/),If=st(/^aria-[\-\w]+$/),Qs=st(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Lf=st(/^(?:\w+script|data):/i),Df=st(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Nf=st(/^html$/i),Of=st(/^[a-z][.\w]*(-[.\w]+)+$/i),el=st(/<[/\w!]/g),tl=st(/<[/\w]/g),Ff=st(/<\/no(script|embed|frames)/i),Bf=st(/\/>/i),Bt={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},al=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],$f=ot(Ce({},al)),Uf=(function(){let e={};return eo(al,t=>{e[t]=st(new RegExp("</"+t+"(?=[\\t\\n\\f\\r />])","i"))}),ot(e)})(),Hf=function(){return typeof window>"u"?null:window},qf=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let r=null,a="data-tt-policy-suffix";n&&n.hasAttribute(a)&&(r=n.getAttribute(a));let i="dompurify"+(r?"#"+r:"");try{return t.createPolicy(i,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+i+" could not be created."),null}},nl=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Bn=function(t,n,r,a){return At(t,n)&&So(t[n])?Ce(a.base?$t(a.base):{},t[n],a.transform):r},Pa=function(t,n,r){let a=At(t,n)?t[n]:void 0;return a&&typeof a=="object"?$t(a):r()};function il(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Hf(),t=q=>il(q);if(t.version="3.4.16",t.removed=[],!e||!e.document||e.document.nodeType!==Bt.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,a=r.currentScript;e.DocumentFragment;let i=e.HTMLTemplateElement,s=e.Node,l=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let d=e.DOMParser,g=e.trustedTypes,u=l.prototype,p=Yt(u,"cloneNode"),m=Yt(u,"remove"),f=Yt(u,"removeAttributeNode"),v=Yt(u,"nextSibling"),k=Yt(u,"childNodes"),z=Yt(u,"parentNode"),x=Yt(u,"shadowRoot"),w=Yt(u,"attributes"),P=s&&s.prototype?Yt(s.prototype,"nodeType"):null,L=s&&s.prototype?Yt(s.prototype,"nodeName"):null,U=s&&s.prototype?Yt(s.prototype,"ownerDocument"):null,H=function(h){return P?P(h):h.nodeType},B=function(h){return L?L(h):h.nodeName};if(typeof i=="function"){let q=n.createElement("template");q.content&&q.content.ownerDocument&&(n=q.content.ownerDocument)}let G,_="",E,D=!1,I=0,ne=function(){if(I>0)throw Fn('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},b=function(h){ne(),I++;try{return G.createHTML(h)}finally{I--}},S=function(h){ne(),I++;try{return G.createScriptURL(h)}finally{I--}},R=function(){return D||(E=qf(g,a),D=!0),E},$=n,K=$.implementation,Y=$.createNodeIterator,de=$.createDocumentFragment,ve=$.getElementsByTagName,$e=r.importNode,ge=nl();t.isSupported=typeof ol=="function"&&typeof z=="function"&&K&&K.createHTMLDocument!==void 0;let Ee=Ef,pt=Pf,Pe=Mf,Xe=Rf,Gt=If,ft=Lf,tt=Df,It=Of,zt=Qs,ke=null,St=Ce({},[...Js,...Ca,...Ta,...Aa,...Ks]),Le=null,Jn=Ce({},[...Ys,...Ea,...Zs,...Ar]),mt=Object.seal(zo(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ze=null,_t=null,vt=Object.seal(zo(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Lt=!0,Xt=!0,at=!1,In=!0,Ct=!1,Qe=!0,O=!1,se=!1,ze=null,nt=null,dt=!1,Je=!1,Dt=!1,ln=!1,Ln=!0,Dn=!1,hn="user-content-",Ve=!0,Tt=!1,bt={},Nt=null,Uo=Ce({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),vn=null,it=Ce({},["audio","video","img","source","image","track"]),Ho=null,qo=Ce({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Jt="http://www.w3.org/1998/Math/MathML",Kn="http://www.w3.org/2000/svg",Ot="http://www.w3.org/1999/xhtml",bn=Ot,Yn=!1,Wo=null,xa=Ce({},[Jt,Kn,Ot],_a),yr=ot(["mi","mo","mn","ms","mtext"]),y=Ce({},yr),A=ot(["annotation-xml"]),M=Ce({},A),Z=Ce({},["title","style","font","a","script"]),V=null,le=["application/xhtml+xml","text/html"],_e="text/html",ae=null,we=null,xr=n.createElement("form"),Zn=function(h){return h instanceof RegExp||h instanceof Function},yo=function(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(we&&we===h)return;(!h||typeof h!="object")&&(h={}),h=$t(h),V=le.indexOf(h.PARSER_MEDIA_TYPE)===-1?_e:h.PARSER_MEDIA_TYPE,ae=V==="application/xhtml+xml"?_a:Jo,ke=Bn(h,"ALLOWED_TAGS",St,{transform:ae}),Le=Bn(h,"ALLOWED_ATTR",Jn,{transform:ae}),Wo=Bn(h,"ALLOWED_NAMESPACES",xa,{transform:_a}),Ho=Bn(h,"ADD_URI_SAFE_ATTR",qo,{transform:ae,base:qo}),vn=Bn(h,"ADD_DATA_URI_TAGS",it,{transform:ae,base:it}),Nt=Bn(h,"FORBID_CONTENTS",Uo,{transform:ae}),Ze=Bn(h,"FORBID_TAGS",$t({}),{transform:ae}),_t=Bn(h,"FORBID_ATTR",$t({}),{transform:ae}),bt=At(h,"USE_PROFILES")?h.USE_PROFILES&&typeof h.USE_PROFILES=="object"?$t(h.USE_PROFILES):h.USE_PROFILES:!1,Lt=h.ALLOW_ARIA_ATTR!==!1,Xt=h.ALLOW_DATA_ATTR!==!1,at=h.ALLOW_UNKNOWN_PROTOCOLS||!1,In=h.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ct=h.SAFE_FOR_TEMPLATES||!1,Qe=h.SAFE_FOR_XML!==!1,O=h.WHOLE_DOCUMENT||!1,Je=h.RETURN_DOM||!1,Dt=h.RETURN_DOM_FRAGMENT||!1,ln=h.RETURN_TRUSTED_TYPE||!1,dt=h.FORCE_BODY||!1,Ln=h.SANITIZE_DOM!==!1,Dn=h.SANITIZE_NAMED_PROPS||!1,Ve=h.KEEP_CONTENT!==!1,Tt=h.IN_PLACE||!1,zt=Cf(h.ALLOWED_URI_REGEXP)?h.ALLOWED_URI_REGEXP:Qs,bn=typeof h.NAMESPACE=="string"?h.NAMESPACE:Ot,y=Pa(h,"MATHML_TEXT_INTEGRATION_POINTS",()=>Ce({},yr)),M=Pa(h,"HTML_INTEGRATION_POINTS",()=>Ce({},A));let T=Pa(h,"CUSTOM_ELEMENT_HANDLING",()=>zo(null));if(mt=zo(null),At(T,"tagNameCheck")&&Zn(T.tagNameCheck)&&(mt.tagNameCheck=T.tagNameCheck),At(T,"attributeNameCheck")&&Zn(T.attributeNameCheck)&&(mt.attributeNameCheck=T.attributeNameCheck),At(T,"allowCustomizedBuiltInElements")&&typeof T.allowCustomizedBuiltInElements=="boolean"&&(mt.allowCustomizedBuiltInElements=T.allowCustomizedBuiltInElements),st(mt),Ct&&(Xt=!1),Dt&&(Je=!0),bt&&(ke=Ce({},Ks),Le=zo(null),bt.html===!0&&(Ce(ke,Js),Ce(Le,Ys)),bt.svg===!0&&(Ce(ke,Ca),Ce(Le,Ea),Ce(Le,Ar)),bt.svgFilters===!0&&(Ce(ke,Ta),Ce(Le,Ea),Ce(Le,Ar)),bt.mathMl===!0&&(Ce(ke,Aa),Ce(Le,Zs),Ce(Le,Ar))),vt.tagCheck=null,vt.attributeCheck=null,At(h,"ADD_TAGS")&&(typeof h.ADD_TAGS=="function"?vt.tagCheck=h.ADD_TAGS:So(h.ADD_TAGS)&&(ke===St&&(ke=$t(ke)),Ce(ke,h.ADD_TAGS,ae))),At(h,"ADD_ATTR")&&(typeof h.ADD_ATTR=="function"?vt.attributeCheck=h.ADD_ATTR:So(h.ADD_ATTR)&&(Le===Jn&&(Le=$t(Le)),Ce(Le,h.ADD_ATTR,ae))),At(h,"ADD_FORBID_CONTENTS")&&So(h.ADD_FORBID_CONTENTS)&&(Nt===Uo&&(Nt=$t(Nt)),Ce(Nt,h.ADD_FORBID_CONTENTS,ae)),Ve&&(ke["#text"]=!0),O&&Ce(ke,["html","head","body"]),ke.table&&(Ce(ke,["tbody"]),delete Ze.tbody),h.TRUSTED_TYPES_POLICY){if(typeof h.TRUSTED_TYPES_POLICY.createHTML!="function")throw Fn('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof h.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Fn('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let F=G;G=h.TRUSTED_TYPES_POLICY;try{_=b("")}catch(j){throw G=F,j}}else h.TRUSTED_TYPES_POLICY===null?(G=void 0,_=""):(G===void 0&&(G=R()),G&&typeof _=="string"&&(_=b("")));ot&&ot(h),we=h},Nn=Ce({},[...Ca,...Ta,...Tf]),Ms=Ce({},[...Aa,...Af]),Vp=function(h,T,F){return T.namespaceURI===Ot?h==="svg":T.namespaceURI===Jt?h==="svg"&&(F==="annotation-xml"||y[F]):!!Nn[h]},jp=function(h,T,F){return T.namespaceURI===Ot?h==="math":T.namespaceURI===Kn?h==="math"&&M[F]:!!Ms[h]},Gp=function(h,T,F){return T.namespaceURI===Kn&&!M[F]||T.namespaceURI===Jt&&!y[F]?!1:!Ms[h]&&(Z[h]||!Nn[h])},Xp=function(h){let T=z(h);(!T||!T.tagName)&&(T={namespaceURI:bn,tagName:"template"});let F=Jo(h.tagName),j=Jo(T.tagName);return Wo[h.namespaceURI]?h.namespaceURI===Kn?Vp(F,T,j):h.namespaceURI===Jt?jp(F,T,j):h.namespaceURI===Ot?Gp(F,T,j):!!(V==="application/xhtml+xml"&&Wo[h.namespaceURI]):!1},On=function(h){jo(t.removed,{element:h});try{z(h).removeChild(h)}catch{if(m(h),!z(h))throw Fn("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},Rs=function(h,T,F){try{f(h,T)}catch{try{h.removeAttribute(F)}catch{}}},kr=function(h){wr(h);let T=k(h);if(T){let j=[];eo(T,ue=>{jo(j,ue)}),eo(j,ue=>{try{m(ue)}catch{}})}let F=w(h);if(F)for(let j=F.length-1;j>=0;--j){let ue=F[j],ye=ue&&ue.name;typeof ye=="string"&&Rs(h,ue,ye)}},Qn=function(h,T,F){if(!F)try{F=T.getAttributeNode(h)}catch{F=null}jo(t.removed,{attribute:F||null,from:T});try{F?f(T,F):T.removeAttribute(h)}catch{try{T.removeAttribute(h)}catch{}}if(h==="is")if(Je||Dt)try{On(T)}catch{}else try{T.setAttribute(h,"")}catch{}},Jp=function(h){let T=w(h);if(T)for(let F=T.length-1;F>=0;--F){let j=T[F],ue=j&&j.name;typeof ue!="string"||Le[ae(ue)]||Rs(h,j,ue)}},wr=function(h){let T=[h];for(;T.length>0;){let F=T.pop();H(F)===Bt.element&&Jp(F);let j=k(F);if(j)for(let ue=j.length-1;ue>=0;--ue)T.push(j[ue])}},Is=function(h,T){return Qe?h==="patchsrc"?!0:h==="for"&&T!=="label"&&T!=="output":!1},Kp=function(h){if(!Qe)return;let T=[h];for(;T.length>0;){let F=T.pop(),j=H(F);if(j===Bt.processingInstruction||j===Bt.comment&>(tl,F.data)){try{m(F)}catch{}continue}if(j===Bt.element){let ye=F,Se=ae(B(F));try{ye.hasAttribute&&ye.hasAttribute("patchsrc")&&ye.removeAttribute("patchsrc"),ye.hasAttribute&&ye.hasAttribute("for")&&Is("for",Se)&&ye.removeAttribute("for")}catch{}}let ue=k(F);if(ue)for(let ye=ue.length-1;ye>=0;--ye)T.push(ue[ye])}},Ls=function(h){let T=null,F=null;if(dt)h="<remove></remove>"+h;else{let ye=Vs(h,/^[\r\n\t ]+/);F=ye&&ye[0]}V==="application/xhtml+xml"&&bn===Ot&&(h='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+h+"</body></html>");let j=G?b(h):h;if(bn===Ot)try{T=new d().parseFromString(j,V)}catch{}if(!T||!T.documentElement){T=K.createDocument(bn,"template",null);try{T.documentElement.innerHTML=Yn?_:j}catch{}}let ue=T.body||T.documentElement;return h&&F&&ue.insertBefore(n.createTextNode(F),ue.childNodes[0]||null),bn===Ot?ve.call(T,O?"html":"body")[0]:O?T.documentElement:ue},Ds=function(h){let T=U?U(h):h.ownerDocument;return Y.call(T||h,h,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},zr=function(h){return h=Go(h,Ee," "),h=Go(h,pt," "),h=Go(h,Pe," "),h},ka=function(h){var T;h.normalize();let F=U?U(h):h.ownerDocument,j=Y.call(F||h,h,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),ue=j.nextNode();for(;ue;)ue.data=zr(ue.data),ue=j.nextNode();let ye=(T=h.querySelectorAll)===null||T===void 0?void 0:T.call(h,"template");ye&&eo(ye,Se=>{xo(Se.content)&&ka(Se.content)})},Sr=function(h){let T=L?L(h):null;return typeof T!="string"||ae(T)!=="form"?!1:typeof h.nodeName!="string"||typeof h.textContent!="string"||typeof h.removeChild!="function"||h.attributes!==w(h)||typeof h.removeAttribute!="function"||typeof h.removeAttributeNode!="function"||typeof h.getAttributeNode!="function"||typeof h.setAttribute!="function"||typeof h.namespaceURI!="string"||typeof h.insertBefore!="function"||typeof h.hasChildNodes!="function"||h.nodeType!==P(h)||h.childNodes!==k(h)},xo=function(h){if(!P||typeof h!="object"||h===null)return!1;try{return P(h)===Bt.documentFragment}catch{return!1}},Vo=function(h){if(!P||typeof h!="object"||h===null)return!1;try{return typeof P(h)=="number"}catch{return!1}};function cn(q,h,T){q.length!==0&&eo(q,F=>{F.call(t,h,T,we)})}let Yp=function(h,T){return!!(Qe&&h.hasChildNodes()&&!Vo(h.firstElementChild)&>(el,h.textContent)&>(el,h.innerHTML)||Qe&&h.namespaceURI===Ot&&$f[T]&&(Vo(h.firstElementChild)||typeof h.textContent=="string"&>(Uf[T],h.textContent))||h.nodeType===Bt.processingInstruction||Qe&&h.nodeType===Bt.comment&>(tl,h.data))},_r=function(h,T){if(h instanceof RegExp)return gt(h,T);if(h instanceof Function){for(var F=arguments.length,j=new Array(F>2?F-2:0),ue=2;ue<F;ue++)j[ue-2]=arguments[ue];return!!h(T,...j)}return!1},Zp=function(h,T,F){if(!Ze[T]&&Bs(T)&&_r(mt.tagNameCheck,T))return!1;if(Ve&&!Nt[T]){let j=z(h),ue=k(h);if(ue&&j){let ye=ue.length;for(let Se=ye-1;Se>=0;--Se){let Ge=h===F?p(ue[Se],!0):ue[Se];j.insertBefore(Ge,v(h))}}}return On(h),!0},Ns=function(h,T,F,j){return h.length===0?T:T===F||T===j?$t(T):T},ko=function(h,T){return h===T||z(h)!==null?!1:(Tt&&wr(h),!0)},Os=function(h,T){if(cn(ge.beforeSanitizeElements,h,null),ko(h,T))return!0;if(Sr(h))return On(h),!0;let F=ae(B(h));if(ke=Ns(ge.uponSanitizeElement,ke,St,ze),cn(ge.uponSanitizeElement,h,{tagName:F,allowedTags:ke}),ko(h,T))return!0;if(Yp(h,F))return On(h),!0;if(Ze[F]||!(vt.tagCheck instanceof Function&&vt.tagCheck(F))&&!ke[F]){let j=Zp(h,F,T);return j===!1&&(cn(ge.afterSanitizeElements,h,null),ko(h,T))?!0:j}if(H(h)===Bt.element&&!Xp(h)||(F==="noscript"||F==="noembed"||F==="noframes")&>(Ff,h.innerHTML))return On(h),!0;if(Ct&&h.nodeType===Bt.text){let j=zr(h.textContent);h.textContent!==j&&(jo(t.removed,{element:h.cloneNode()}),h.textContent=j)}return cn(ge.afterSanitizeElements,h,null),ko(h,T)},Fs=function(h,T,F){if(_t[T]||Is(T,h)||Ln&&(T==="id"||T==="name")&&(F in n||F in xr))return!1;let j=Le[T]||vt.attributeCheck instanceof Function&&vt.attributeCheck(T,h);return Xt&>(Xe,T)||Lt&>(Gt,T)?!0:j?Ho[T]||gt(zt,Go(F,tt,""))||(T==="src"||T==="xlink:href"||T==="href")&&h!=="script"&&js(F,"data:")===0&&vn[h]||at&&!gt(ft,Go(F,tt,""))?!0:!F:Bs(h)&&_r(mt.tagNameCheck,h)&&_r(mt.attributeNameCheck,T,h)||T==="is"&&mt.allowCustomizedBuiltInElements&&_r(mt.tagNameCheck,F)},Qp=Ce({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),Bs=function(h){return!Qp[Jo(h)]&>(It,h)},ef=function(h,T,F,j){if(G&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!F)switch(g.getAttributeType(h,T)){case"TrustedHTML":return b(j);case"TrustedScriptURL":return S(j)}return j},tf=function(h,T,F,j){try{return F?h.setAttributeNS(F,T,j):h.setAttribute(T,j),Sr(h)?(On(h),!1):!0}catch{return Qn(T,h),!1}},$s=function(h,T){if(cn(ge.beforeSanitizeAttributes,h,null),ko(h,T))return;let F=h.attributes;if(!F||Sr(h))return;Le=Ns(ge.uponSanitizeAttribute,Le,Jn,nt);let j={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Le,forceKeepAttr:void 0},ue=F.length,ye=ae(h.nodeName);for(;ue--;){let Se=F[ue],Ge=Se.name,Kt=Se.namespaceURI,Ft=Se.value,wo=ae(Ge),za=Ft,yt=Ge==="value"?za:xf(za),Us=!1;if(j.attrName=wo,j.attrValue=yt,j.keepAttr=!0,j.forceKeepAttr=void 0,cn(ge.uponSanitizeAttribute,h,j),yt=j.attrValue,Dn&&(wo==="id"||wo==="name")&&js(yt,hn)!==0&&(Qn(Ge,h,Se),yt=hn+yt,Us=!0),Qe&>(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,yt)){Qn(Ge,h,Se);continue}if(wo==="attributename"&&Vs(yt,"href")){Qn(Ge,h,Se);continue}if(!j.forceKeepAttr){if(!j.keepAttr){Qn(Ge,h,Se);continue}if(!In&>(Bf,yt)){Qn(Ge,h,Se);continue}if(Ct&&(yt=zr(yt)),!Fs(ye,wo,yt)){Qn(Ge,h,Se);continue}yt=ef(ye,wo,Kt,yt),yt!==za&&tf(h,Ge,Kt,yt)&&Us&&Ws(t.removed)}}cn(ge.afterSanitizeAttributes,h,null),ko(h,T)},Cr=function(h){let T=null,F=Ds(h);for(cn(ge.beforeSanitizeShadowDOM,h,null);T=F.nextNode();)if(cn(ge.uponSanitizeShadowNode,T,null),Os(T,h),$s(T,h),xo(T.content)&&Cr(T.content),H(T)===Bt.element){let j=x(T);xo(j)&&(wa(j),Cr(j))}cn(ge.afterSanitizeShadowDOM,h,null)},wa=function(h){let T=[{node:h,shadow:null}];for(;T.length>0;){let F=T.pop();if(F.shadow){Cr(F.shadow);continue}let j=F.node,ue=H(j)===Bt.element,ye=k(j);if(ye)for(let Se=ye.length-1;Se>=0;--Se)T.push({node:ye[Se],shadow:null});if(ue){let Se=L?L(j):null;if(typeof Se=="string"&&ae(Se)==="template"){let Ge=j.content;xo(Ge)&&T.push({node:Ge,shadow:null})}}if(ue){let Se=x(j);xo(Se)&&T.push({node:null,shadow:Se},{node:Se,shadow:null})}}};return t.sanitize=function(q){let h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},T=null,F=null,j=null,ue=null;if(Yn=!q,Yn&&(q="<!-->"),typeof q!="string"&&!Vo(q)&&(q=_f(q),typeof q!="string"))throw Fn("dirty is not a string, aborting");if(!t.isSupported)return q;se?(ke=ze,Le=nt):yo(h),(ge.uponSanitizeElement.length>0||ge.uponSanitizeAttribute.length>0)&&(ke=$t(ke)),ge.uponSanitizeAttribute.length>0&&(Le=$t(Le)),t.removed=[];let ye=Tt&&typeof q!="string"&&Vo(q);if(ye){Kp(q);let Kt=B(q);if(typeof Kt=="string"){let Ft=ae(Kt);if(!ke[Ft]||Ze[Ft])throw kr(q),Fn("root node is forbidden and cannot be sanitized in-place")}if(Sr(q))throw kr(q),Fn("root node is clobbered and cannot be sanitized in-place");try{wa(q)}catch(Ft){throw kr(q),Ft}}else if(Vo(q))T=Ls("<!---->"),F=T.ownerDocument.importNode(q,!0),F.nodeType===Bt.element&&F.nodeName==="BODY"||F.nodeName==="HTML"?T=F:T.appendChild(F),wa(T);else{if(!Je&&!Ct&&!O&&q.indexOf("<")===-1)return G&&ln?b(q):q;if(T=Ls(q),!T)return Je?null:ln?_:""}T&&dt&&On(T.firstChild);let Se=ye?q:T;try{let Kt=Ds(Se);for(;j=Kt.nextNode();)Os(j,Se),$s(j,Se),xo(j.content)&&Cr(j.content)}catch(Kt){throw ye&&(kr(q),eo(t.removed,Ft=>{Ft.element&&wr(Ft.element)})),Kt}if(ye){let Kt=!1;if(eo(t.removed,Ft=>{Ft.element&&(Ft.element===q&&(Kt=!0),wr(Ft.element))}),Kt)throw Fn("a node selected for removal could not be safely returned; refusing to sanitize in place");return Ct&&ka(q),q}if(Je){if(Ct&&ka(T),Dt)for(ue=de.call(T.ownerDocument);T.firstChild;)ue.appendChild(T.firstChild);else ue=T;return(Le.shadowroot||Le.shadowrootmode)&&(ue=$e.call(r,ue,!0)),ue}let Ge=O?T.outerHTML:T.innerHTML;return O&&ke["!doctype"]&&T.ownerDocument&&T.ownerDocument.doctype&&T.ownerDocument.doctype.name&>(Nf,T.ownerDocument.doctype.name)&&(Ge="<!DOCTYPE "+T.ownerDocument.doctype.name+`>
|
|
3
|
+
`+Ge),Ct&&(Ge=zr(Ge)),G&&ln?b(Ge):Ge},t.setConfig=function(){let q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};yo(q),se=!0,ze=ke,nt=Le},t.clearConfig=function(){we=null,se=!1,ze=null,nt=null,G=E,_=""},t.isValidAttribute=function(q,h,T){we||yo({});let F=ae(q),j=ae(h);return Fs(F,j,T)},t.addHook=function(q,h){typeof h=="function"&&At(ge,q)&&jo(ge[q],h)},t.removeHook=function(q,h){if(At(ge,q)){if(h!==void 0){let T=bf(ge[q],h);return T===-1?void 0:yf(ge[q],T,1)[0]}return Ws(ge[q])}},t.removeHooks=function(q){At(ge,q)&&(ge[q]=[])},t.removeAllHooks=function(){ge=nl()},t}var Ia=il();function Oa(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var oo=Oa();function vl(e){oo=e}var to={exec:()=>null};function _o(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),a=t[r];return a||(a=e(r),t[r]=a),a}}function he(e,t=""){let n=typeof e=="string"?e:e.source,r={replace:(a,i)=>{let s=typeof i=="string"?i:i.source;return s=s.replace(ut.caret,"$1"),n=n.replace(a,s),r},getRegex:()=>new RegExp(n,t)};return r}var Wf=((e="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+e)}catch{return!1}})(),ut={codeRemoveIndent:/^(?: {0,3}\t| {1,4})/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,leadingSpaceTab:/^[ \t]+/,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,numericCharacterReference:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/g,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:_o(e=>new RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:_o(e=>new RegExp(`^ {0,${e}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:_o(e=>new RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:_o(e=>new RegExp(`^ {0,${e}}#`)),htmlBeginRegex:_o(e=>new RegExp(`^ {0,${e}}(?:</?(?:${Qo})(?: +|$|/?>)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:_o(e=>new RegExp(`^ {0,${e}}>`))},Vf=/^(?:[ \t]*(?:\n|$))+/,jf=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Gf=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Zo=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Xf=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Fa=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,bl=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,yl=he(bl).replace(/bull/g,Fa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Jf=he(bl).replace(/bull/g,Fa).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Ba=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,Kf=/^[^\n]+/,$a=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Yf=he(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",$a).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Zf=he(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,Fa).getRegex(),Qo="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ua=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Qf=he("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ua).replace("tag",Qo).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),xl=e=>he(Ba).replace("hr",Zo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",e).replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Qo).getRegex(),em=xl(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),tm=xl(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),nm=he(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",tm).getRegex(),Ha={blockquote:nm,code:jf,def:Yf,fences:Gf,heading:Xf,hr:Zo,html:Qf,lheading:yl,list:Zf,newline:Vf,paragraph:em,table:to,text:Kf},sl=he("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Zo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Qo).getRegex(),om={...Ha,lheading:Jf,table:sl,paragraph:he(Ba).replace("hr",Zo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",sl).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Qo).getRegex()},rm={...Ha,html:he(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ua).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:to,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:he(Ba).replace("hr",Zo).replace("heading",` *#{1,6} *[^
|
|
4
|
+
]`).replace("lheading",yl).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},am=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,im=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,kl=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,sm=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,yn=/[\p{P}\p{S}]/u,Co=/[\s\p{P}\p{S}]/u,er=/[^\s\p{P}\p{S}]/u,lm=he(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Co).getRegex(),cm=/[\p{Pi}\p{Ps}"']/u,wl=/(?!~)[\p{P}\p{S}]/u,dm=/(?!~)[\s\p{P}\p{S}]/u,um=/(?:[^\s\p{P}\p{S}]|~)/u,pm=he(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Wf?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),zl=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,fm=he(zl,"u").replace(/punct/g,yn).getRegex(),mm=he(zl,"u").replace(/punct/g,wl).getRegex(),gm=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,hm=he(gm,"u").replace(/openQuote/g,cm).replace(/punct/g,yn).getRegex(),Sl="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",vm=he(Sl,"gu").replace(/notPunctSpace/g,er).replace(/punctSpace/g,Co).replace(/punct/g,yn).getRegex(),bm=he(Sl,"gu").replace(/notPunctSpace/g,um).replace(/punctSpace/g,dm).replace(/punct/g,wl).getRegex(),ym="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",xm=he(ym,"gu").replace(/notPunctSpace/g,er).replace(/punctSpace/g,Co).replace(/punct/g,yn).getRegex(),km=he("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,er).replace(/punctSpace/g,Co).replace(/punct/g,yn).getRegex(),wm="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",zm=he(wm,"gu").replace(/notPunctSpace/g,er).replace(/punctSpace/g,Co).replace(/punct/g,yn).getRegex(),Sm=he(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,yn).getRegex(),_m="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Cm=he(_m,"gu").replace(/notPunctSpace/g,er).replace(/punctSpace/g,Co).replace(/punct/g,yn).getRegex(),Tm=he(/\\(punct)/,"gu").replace(/punct/g,yn).getRegex(),Am=he(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Em=he(Ua).replace("(?:-->|$)","-->").getRegex(),Pm=he("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Em).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),_l=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Pr=he(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",_l).getRegex(),Mm=he(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Pr).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Rm=he(/^!?\[(label)\]\[(ref)\]/).replace("label",Pr).replace("ref",$a).getRegex(),Im=he(/^!?\[(ref)\](?:\[\])?/).replace("ref",$a).getRegex(),ll=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,Lm=he(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",_l).getRegex(),Dm=he("reflink|nolink(?!\\()","g").replace("reflink",he(/^!?\[(label)\]\[(ref)\]/).replace("label",Lm).replace("ref",ll).getRegex()).replace("nolink",he(/^!?\[(ref)\](?:\[\])?/).replace("ref",ll).getRegex()).getRegex(),cl=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Nm=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/,Om=he(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g,Nm).getRegex(),qa={_backpedal:to,anyPunctuation:Tm,autolink:Am,blockSkip:pm,br:kl,code:im,del:to,delLDelim:to,delRDelim:to,emStrongLDelim:fm,emStrongRDelimAst:vm,emStrongRDelimUnd:km,escape:am,link:Mm,nolink:Im,punctuation:lm,reflink:Rm,reflinkSearch:Dm,tag:Pm,text:sm,url:to},Fm={...qa,emStrongLDelim:hm,emStrongRDelimAst:xm,emStrongRDelimUnd:zm,link:he(/^!?\[(label)\]\((.*?)\)/).replace("label",Pr).getRegex(),reflink:he(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Pr).getRegex()},La={...qa,emStrongRDelimAst:bm,emStrongLDelim:mm,delLDelim:Sm,delRDelim:Cm,url:he(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("emailProtocol",Om).replace("protocol",cl).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:he(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace("protocol",cl).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},Bm={...La,br:he(kl).replace("{2,}","*").getRegex(),text:he(La.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Er={normal:Ha,gfm:om,pedantic:rm},Ko={normal:qa,gfm:La,breaks:Bm,pedantic:Fm},$m={"&":"&","<":"<",">":">",'"':""","'":"'"},dl=e=>$m[e];function Ut(e,t){if(t){if(ut.escapeTest.test(e))return e.replace(ut.escapeReplace,dl)}else if(ut.escapeTestNoEncode.test(e))return e.replace(ut.escapeReplaceNoEncode,dl);return e}function Um(e){return e.replace(ut.numericCharacterReference,(t,n,r)=>{let a=n===void 0?Number.parseInt(r,16):Number.parseInt(n,10);return a===0||a>1114111||a>=55296&&a<=57343?"\uFFFD":String.fromCodePoint(a)})}function ul(e){try{e=encodeURI(e).replace(ut.percentDecode,"%")}catch{return null}return e}function pl(e,t){let n=e.replace(ut.findPipe,(i,s,l)=>{let c=!1,d=s;for(;--d>=0&&l[d]==="\\";)c=!c;return c?"|":" |"}),r=n.split(ut.splitPipe),a=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),t)if(r.length>t)r.splice(t);else for(;r.length<t;)r.push("");for(;a<r.length;a++)r[a]=r[a].trim().replace(ut.slashPipe,"|");return r}function $n(e,t,n){let r=e.length;if(r===0)return"";let a=0;for(;a<r;){let i=e.charAt(r-a-1);if(i===t&&!n)a++;else if(i!==t&&n)a++;else break}return e.slice(0,r-a)}function fl(e){let t=e.split(`
|
|
5
|
+
`),n=t.length-1;for(;n>=0&&ut.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
|
|
6
|
+
`)}function Mr(e){return e.trim().toLowerCase().toUpperCase().toLowerCase()}function Hm(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]==="\\")r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function ml(e,t=0){let n=t,r="";for(let a of e)if(a===" "){let i=4-n%4;r+=" ".repeat(i),n+=i}else r+=a,n++;return r}function gl(e,t,n,r,a){let i=t.href,s=t.title||null,l=e[1].replace(a.other.outputLinkReplace,"$1"),c=e[0].charAt(0)==="!";r.state.inLink=!0;let d=r.state.linkEmitted,g=r.state.inRawBlock;r.state.linkEmitted=!1;let u=r.inlineTokens(l),p=r.state.linkEmitted;if(r.state.linkEmitted=d,r.state.inLink=!1,!c){if(p){r.state.inRawBlock=g;return}r.state.linkEmitted=!0}return{type:c?"image":"link",raw:n,href:i,title:s,text:l,tokens:u}}function qm(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let a=r[1];return t.split(`
|
|
7
7
|
`).map(i=>{let s=i.match(n.other.beginningSpace);if(s===null)return i;let[l]=s;return i.slice(Math.min(l.length,a.length))}).join(`
|
|
8
|
-
`)}function
|
|
9
|
-
`),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw
|
|
10
|
-
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n
|
|
8
|
+
`)}function hl(e,t,n,r){if(!t.includes("<"))return!1;for(let a=0;a<t.length;a++){if(t[a]==="\\"){a++;continue}if(t[a]==="`"){let l=r.inline.code.exec(t.slice(a));if(l){a+=l[0].length-1;continue}}if(t[a]!=="<")continue;let i=e.slice(n+a),s=r.inline.tag.exec(i)||r.inline.autolink.exec(i);if(s){if(s[0].length>t.length-a)return!0;a+=s[0].length-1}}return!1}var Rr=class{options;rules;lexer;constructor(e){this.options=e||oo}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:fl(t[0]),r=n.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n,codeBlockStyle:"indented",text:r}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=qm(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=$n(n,"#");(this.options.pedantic||!r||this.rules.other.endingSpaceTabChar.test(r))&&(n=r.trim())}return{type:"heading",raw:$n(t[0],`
|
|
9
|
+
`),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:$n(t[0],`
|
|
10
|
+
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=$n(t[0],`
|
|
11
11
|
`).split(`
|
|
12
12
|
`),r="",a="",i=[];for(;n.length>0;){let s=!1,l=[],c;for(c=0;c<n.length;c++)if(this.rules.other.blockquoteStart.test(n[c]))l.push(n[c]),s=!0;else if(!s)l.push(n[c]);else break;n=n.slice(c);let d=l.join(`
|
|
13
13
|
`),g=d.replace(this.rules.other.blockquoteSetextReplace,`
|
|
@@ -15,26 +15,26 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
15
15
|
${d}`:d,a=a?`${a}
|
|
16
16
|
${g}`:g;let u=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(g,i,!0),this.lexer.state.top=u,n.length===0)break;let p=i.at(-1);if(p?.type==="code")break;if(p?.type==="blockquote"){let m=p,f=n.join(`
|
|
17
17
|
`),v=m.raw+`
|
|
18
|
-
`+f.replace(this.rules.other.blockquoteSetextReplace2,""),
|
|
19
|
-
`).length:0,x
|
|
20
|
-
${
|
|
21
|
-
`)}`),a=a.substring(0,a.length-m.text.length)+
|
|
18
|
+
`+f.replace(this.rules.other.blockquoteSetextReplace2,""),k=this.blockquote(v);i[i.length-1]=k;let z=v.substring(k.raw.length).replace(/^\n/,""),x=z?z.split(`
|
|
19
|
+
`).length:0,w=x?n.slice(0,-x):n;w.length>0&&(r=`${r}
|
|
20
|
+
${w.join(`
|
|
21
|
+
`)}`),a=a.substring(0,a.length-m.text.length)+k.text;break}else if(p?.type==="list"){let m=p,f=m.raw+`
|
|
22
22
|
`+n.join(`
|
|
23
23
|
`),v=this.list(f);i[i.length-1]=v,r=r.substring(0,r.length-p.raw.length)+v.raw,a=a.substring(0,a.length-m.raw.length)+v.raw,n=f.substring(i.at(-1).raw.length).split(`
|
|
24
24
|
`);continue}}return{type:"blockquote",raw:r,tokens:i,text:a}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,a={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let i=this.rules.other.listItemRegex(n),s=!1;for(;e;){let c=!1,d="",g="";if(!(t=i.exec(e))||this.rules.block.hr.test(e))break;d=t[0],e=e.substring(d.length);let u=t[2].split(`
|
|
25
|
-
`,1)[0],p=t[1].length,m=this.options.pedantic?
|
|
26
|
-
`,1)[0],v=!m.trim(),
|
|
27
|
-
`,e=e.substring(f.length+1),c=!0),!c){let
|
|
28
|
-
`,1)[0],
|
|
29
|
-
`+
|
|
30
|
-
`+f}v=!f.trim(),d+=
|
|
31
|
-
`,e=e.substring(
|
|
32
|
-
`),href:r,title:a}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=
|
|
33
|
-
`):[],i={type:"table",raw
|
|
34
|
-
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let s of r)this.rules.other.tableAlignRight.test(s)?i.align.push("right"):this.rules.other.tableAlignCenter.test(s)?i.align.push("center"):this.rules.other.tableAlignLeft.test(s)?i.align.push("left"):i.align.push(null);for(let s=0;s<n.length;s++)i.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:i.align[s]});for(let s of a)i.rows.push(
|
|
25
|
+
`,1)[0],p=t[1].length,m=this.options.pedantic?ml(u,p):u.replace(this.rules.other.leadingSpaceTab,z=>ml(z,p)),f=e.split(`
|
|
26
|
+
`,1)[0],v=!m.trim(),k=0;if(this.options.pedantic?(k=2,g=m.trimStart()):v?k=p+1:(k=m.search(this.rules.other.nonSpaceChar),k=k>4?1:k,g=m.slice(k),k+=p),v&&this.rules.other.blankLine.test(f)&&(d+=f+`
|
|
27
|
+
`,e=e.substring(f.length+1),c=!0),!c){let z=this.rules.other.nextBulletRegex(k),x=this.rules.other.hrRegex(k),w=this.rules.other.fencesBeginRegex(k),P=this.rules.other.headingBeginRegex(k),L=this.rules.other.htmlBeginRegex(k),U=this.rules.other.blockquoteBeginRegex(k);for(;e;){let H=e.split(`
|
|
28
|
+
`,1)[0],B;if(f=H,this.options.pedantic?(f=f.replace(this.rules.other.listReplaceNesting," "),B=f):B=f.replace(this.rules.other.leadingSpaceTab,G=>G.replace(this.rules.other.tabCharGlobal," ")),w.test(f)||P.test(f)||L.test(f)||U.test(f)||z.test(f)||x.test(f))break;if(B.search(this.rules.other.nonSpaceChar)>=k||!f.trim())g+=`
|
|
29
|
+
`+B.slice(k);else{if(v||m.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||w.test(m)||P.test(m)||x.test(m))break;g+=`
|
|
30
|
+
`+f}v=!f.trim(),d+=H+`
|
|
31
|
+
`,e=e.substring(H.length+1),m=B.slice(k)}}a.loose||(s?a.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(s=!0)),a.items.push({type:"list_item",raw:d,task:!!this.options.gfm&&this.rules.other.listIsTask.test(g),loose:!1,text:g,tokens:[]}),a.raw+=d}let l=a.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;a.raw=a.raw.trimEnd();for(let c of a.items)if(this.lexer.state.top=!1,c.tokens=this.lexer.blockTokens(c.text,[]),!a.loose){let d=c.tokens.filter(u=>u.type==="space"),g=d.length>0&&d.some(u=>this.rules.other.anyLine.test(u.raw));a.loose=g}for(let c of a.items){let d=c.tokens[0];if(c.task&&(d?.type==="text"||d?.type==="paragraph")){c.text=c.text.replace(this.rules.other.listReplaceTask,""),d.raw=d.raw.replace(this.rules.other.listReplaceTask,""),d.text=d.text.replace(this.rules.other.listReplaceTask,"");for(let u=this.lexer.inlineQueue.length-1;u>=0;u--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[u].src)){this.lexer.inlineQueue[u].src=this.lexer.inlineQueue[u].src.replace(this.rules.other.listReplaceTask,"");break}let g=this.rules.other.listTaskCheckbox.exec(c.raw);if(g){let u={type:"checkbox",raw:g[0]+" ",checked:g[0]!=="[ ]"};c.checked=u.checked,a.loose?c.tokens[0]&&["paragraph","text"].includes(c.tokens[0].type)&&"tokens"in c.tokens[0]&&c.tokens[0].tokens?(c.tokens[0].raw=u.raw+c.tokens[0].raw,c.tokens[0].text=u.raw+c.tokens[0].text,c.tokens[0].tokens.unshift(u)):c.tokens.unshift({type:"paragraph",raw:u.raw,text:u.raw,tokens:[u]}):c.tokens.unshift(u)}}else c.task&&(c.task=!1)}if(a.loose)for(let c of a.items){c.loose=!0;for(let d of c.tokens)d.type==="text"&&(d.type="paragraph")}return a}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=fl(t[0]);return{type:"html",block:!0,raw:n,pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=Mr(t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",a=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:$n(t[0],`
|
|
32
|
+
`),href:r,title:a}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=pl(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),a=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
|
33
|
+
`):[],i={type:"table",raw:$n(t[0],`
|
|
34
|
+
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let s of r)this.rules.other.tableAlignRight.test(s)?i.align.push("right"):this.rules.other.tableAlignCenter.test(s)?i.align.push("center"):this.rules.other.tableAlignLeft.test(s)?i.align.push("left"):i.align.push(null);for(let s=0;s<n.length;s++)i.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:i.align[s]});for(let s of a)i.rows.push(pl(s,i.header.length).map((l,c)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:i.align[c]})));return i}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:"heading",raw:$n(t[0],`
|
|
35
35
|
`),depth:t[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
|
|
36
|
-
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic
|
|
37
|
-
`),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let r=this.inlineQueue[n];this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],r=!1){this.tokenizer.lexer=this,this.options.pedantic&&(t=t.replace(
|
|
36
|
+
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&hl(e,t[1],n,this.rules))return;let r=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let s=$n(r.slice(0,-1),"\\");if((r.length-s.length)%2===0)return}else{let s=Hm(t[2],"()");if(s===-2)return;if(s>-1){let l=(t[0].indexOf("!")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,l).trim(),t[3]=""}}let a=t[2],i="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(a);s&&(a=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):"";return a=a.trim(),this.rules.other.startAngleBracket.test(a)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?a=a.slice(1):a=a.slice(1,-1)),gl(t,{href:a&&a.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=n[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&hl(e,n[1],r,this.rules))return;let a=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[Mr(a)];if(!i){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return gl(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let a=[...r[0]].length-1,i,s,l=a,c=0,d=r[0][0],g=n===d,u=d==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,t=t.slice(-1*e.length+a);(r=u.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i)continue;if(s=[...i].length,r[3]||r[4]){l+=s;continue}else if(r[5]||r[6]){if(a%3&&!((a+s)%3)){c+=s;continue}if(g)break}if(l-=s,l>0)continue;s=Math.min(s,s+l+c);let p=[...r[0]][0].length,m=e.slice(0,a+r.index+p+s);if(Math.min(a,s)%2){let v=m.slice(1,-1);return{type:"em",raw:m,text:v,tokens:this.lexer.inlineTokens(v)}}let f=m.slice(2,-2);return{type:"strong",raw:m,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(n),a=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&a&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e,t,n=""){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let a=[...r[0]].length-1,i,s,l=a,c=this.rules.inline.delRDelim;for(c.lastIndex=0,t=t.slice(-1*e.length+a);(r=c.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(s=[...i].length,s!==a))continue;if(r[3]||r[4]){l+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l);let d=[...r[0]][0].length,g=e.slice(0,a+r.index+d+s),u=g.slice(a,-a);return{type:"del",raw:g,text:u,tokens:this.lexer.inlineTokens(u)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]==="@"?(n=t[1],r="mailto:"+n):(n=t[1],r=n),{type:"link",raw:t[0],text:n,href:r,autolink:!0,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]==="@")n=t[0],r="mailto:"+n;else{let a;do a=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(a!==t[0]);n=t[0],t[1]==="www."?r="http://"+t[0]:r=t[0]}return{type:"link",raw:t[0],text:n,href:r,autolink:!0,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:n?t[0]:Um(t[0]),escaped:n}}}},Zt=class Da{tokens;options;state;inlineQueue;tokenizer;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||oo,this.options.tokenizer=this.options.tokenizer||new Rr,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let n={other:ut,block:Er.normal,inline:Ko.normal};this.options.pedantic?(n.block=Er.pedantic,n.inline=Ko.pedantic):this.options.gfm&&(n.block=Er.gfm,this.options.breaks?n.inline=Ko.breaks:n.inline=Ko.gfm),this.tokenizer.rules=n}static get rules(){return{block:Er,inline:Ko}}static lex(t,n){return new Da(n).lex(t)}static lexInline(t,n){return new Da(n).inlineTokens(t)}lex(t){t=t.replace(ut.carriageReturn,`
|
|
37
|
+
`),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let r=this.inlineQueue[n];this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],r=!1){this.tokenizer.lexer=this,this.options.pedantic&&(t=t.replace(ut.tabCharGlobal," ").replace(ut.spaceLine,""));let a=1/0;for(;t;){if(t.length<a)a=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}let i;if(this.options.extensions?.block?.some(l=>(i=l.call({lexer:this},t,n))?(t=t.substring(i.raw.length),n.push(i),!0):!1))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let l=n.at(-1);i.raw.length===1&&l!==void 0?l.raw+=`
|
|
38
38
|
`:n.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let l=n.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(`
|
|
39
39
|
`)?"":`
|
|
40
40
|
`)+i.raw,l.text+=`
|
|
@@ -47,9 +47,9 @@ ${x.join(`
|
|
|
47
47
|
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(i),r=s.length!==t.length,t=t.substring(i.raw.length);continue}if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let l=n.at(-1);l?.type==="text"?(l.raw+=(l.raw.endsWith(`
|
|
48
48
|
`)?"":`
|
|
49
49
|
`)+i.raw,l.text+=`
|
|
50
|
-
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(i);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}linkInText(t){if(!t.includes("["))return!1;let n=this.tokenizer.rules.inline.link;for(let r of t.matchAll(this.tokenizer.rules.inline.blockSkip))if(n.test(r[0])&&t.charAt(r.index-1)!=="!")return!0;for(let r of t.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let a=r[0],i=a.lastIndexOf("[");if(!(a.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,
|
|
51
|
-
`:"";return r?'<pre><code class="language-'+
|
|
52
|
-
`:"<pre><code>"+(n?a:
|
|
50
|
+
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(i);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}linkInText(t){if(!t.includes("["))return!1;let n=this.tokenizer.rules.inline.link;for(let r of t.matchAll(this.tokenizer.rules.inline.blockSkip))if(n.test(r[0])&&t.charAt(r.index-1)!=="!")return!0;for(let r of t.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let a=r[0],i=a.lastIndexOf("[");if(!(a.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,Mr(a.slice(i+1,-1))))&&!(i>1&&this.linkInText(a.slice(1,i-1))))return!0}return!1}inlineTokens(t,n=[]){this.tokenizer.lexer=this;let r=t;if(this.tokens.links&&t.includes("[")){let l=this.tokenizer.rules.inline.reflinkSearch,c=d=>{let g=d.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,Mr(d.slice(g+1,-1))))return d;if(g>1&&d.charAt(0)!=="!"){let u=d.slice(1,g-1);if(this.linkInText(u))return"["+u.replace(l,c)+"]["+"a".repeat(d.length-g-2)+"]"}return"["+"a".repeat(d.length-2)+"]"};r=r.replace(l,c)}r=r.replace(this.tokenizer.rules.inline.anyPunctuation,l=>"+".repeat(l.length)),r=r.replace(this.tokenizer.rules.inline.blockSkip,(l,c,d)=>{let g=d?d.length:0;return l.slice(0,g)+"["+"a".repeat(l.length-g-2)+"]"}),r=this.options.hooks?.emStrongMask?.call({lexer:this},r)??r;let a=!1,i="",s=1/0;for(;t;){if(t.length<s)s=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}a||(i=""),a=!1;let l;if(this.options.extensions?.inline?.some(d=>(l=d.call({lexer:this},t,n))?(t=t.substring(l.raw.length),n.push(l),!0):!1))continue;if(l=this.tokenizer.escape(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.tag(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.link(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(l.raw.length);let d=n.at(-1);l.type==="text"&&d?.type==="text"?(d.raw+=l.raw,d.text+=l.text):n.push(l);continue}if(l=this.tokenizer.emStrong(t,r,i)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.codespan(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.br(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.del(t,r,i)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.autolink(t)){t=t.substring(l.raw.length),n.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(t))){t=t.substring(l.raw.length),n.push(l);continue}let c=t;if(this.options.extensions?.startInline){let d=1/0,g=t.slice(1),u;this.options.extensions.startInline.forEach(p=>{u=p.call({lexer:this},g),typeof u=="number"&&u>=0&&(d=Math.min(d,u))}),d<1/0&&d>=0&&(c=t.substring(0,d+1))}if(l=this.tokenizer.inlineText(c)){t=t.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(i=l.raw.slice(-1)),a=!0;let d=n.at(-1);d?.type==="text"?(d.raw+=l.raw,d.text+=l.text):n.push(l);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return n}infiniteLoopError(t){let n="Infinite loop on byte: "+t;if(this.options.silent)console.error(n);else throw new Error(n)}},Ir=class{options;parser;constructor(e){this.options=e||oo}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(ut.notSpaceStart)?.[0],a=e?e.replace(ut.endingNewline,"")+`
|
|
51
|
+
`:"";return r?'<pre><code class="language-'+Ut(r)+'">'+(n?a:Ut(a,!0))+`</code></pre>
|
|
52
|
+
`:"<pre><code>"+(n?a:Ut(a,!0))+`</code></pre>
|
|
53
53
|
`}blockquote({tokens:e}){return`<blockquote>
|
|
54
54
|
${this.parser.parse(e)}</blockquote>
|
|
55
55
|
`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
|
|
@@ -65,8 +65,8 @@ ${this.parser.parse(e)}</blockquote>
|
|
|
65
65
|
`}tablerow({text:e}){return`<tr>
|
|
66
66
|
${e}</tr>
|
|
67
67
|
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
68
|
-
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${
|
|
69
|
-
Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error occurred:</p><pre>"+Nt(n.message+"",!0)+"</pre>";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}},Xn=new Pa;function Ee(e,t){return Xn.parse(e,t)}Ee.options=Ee.setOptions=function(e){return Xn.setOptions(e),Ee.defaults=Xn.defaults,Us(Ee.defaults),Ee};Ee.getDefaults=wa;Ee.defaults=Jn;function Gf(...e){return Xn.use(...e),Ee.defaults=Xn.defaults,Us(Ee.defaults),Ee}Ee.use=Gf;Ee.walkTokens=function(e,t){return Xn.walkTokens(e,t)};Ee.parseInline=Xn.parseInline;Ee.Parser=Jt;Ee.parser=Jt.parse;Ee.Renderer=Sr;Ee.TextRenderer=Ea;Ee.Lexer=Xt;Ee.lexer=Xt.lex;Ee.Tokenizer=zr;Ee.Hooks=qo;Ee.parse=Ee;var Ib=Ee.options,Rb=Ee.setOptions,Lb=Ee.walkTokens,Db=Ee.parseInline;var Nb=Jt.parse,Ob=Xt.lex;var Mr,fe,Qs,Kf,Dn,Js,el,tl,Ma,Cr,Go,nl,Da,Ia,Ra,ol,Ar={},Er=[],Xf=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Ko=Array.isArray;function gn(e,t){for(var n in t)e[n]=t[n];return e}function Na(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function Zn(e,t,n){var r,a,i,s={};for(i in t)i=="key"?r=t[i]:i=="ref"?a=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?Mr.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)s[i]===void 0&&(s[i]=e.defaultProps[i]);return Tr(e,s,r,a,null)}function Tr(e,t,n,r,a){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++Qs,__i:-1,__u:0};return a==null&&fe.vnode!=null&&fe.vnode(i),i}function N(e){return e.children}function Yt(e,t){this.props=e,this.context=t}function Yn(e,t){if(t==null)return e.__?Yn(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?Yn(e):null}function Jf(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,r=[],a=[],i=gn({},t);i.__v=t.__v+1,fe.vnode&&fe.vnode(i),Oa(e.__P,i,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,r,n??Yn(t),!!(32&t.__u),a),i.__v=t.__v,i.__.__k[i.__i]=i,ll(r,i,a),t.__e=t.__=null,i.__e!=n&&rl(i)}}function rl(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),rl(e)}function La(e){(!e.__d&&(e.__d=!0)&&Dn.push(e)&&!Pr.__r++||Js!=fe.debounceRendering)&&((Js=fe.debounceRendering)||el)(Pr)}function Pr(){try{for(var e,t=1;Dn.length;)Dn.length>t&&Dn.sort(tl),e=Dn.shift(),t=Dn.length,Jf(e)}finally{Dn.length=Pr.__r=0}}function al(e,t,n,r,a,i,s,l,c,d,g){var u,p,m,f,v,w,k=r&&r.__k||Er,z=t.length;for(c=Yf(n,t,k,c,z),u=0;u<z;u++)(m=n.__k[u])!=null&&(p=m.__i!=-1&&k[m.__i]||Ar,m.__i=u,w=Oa(e,m,p,a,i,s,l,c,d,g),f=m.__e,m.ref&&p.ref!=m.ref&&(p.ref&&Ba(p.ref,null,m),g.push(m.ref,m.__c||f,m)),v==null&&f!=null&&(v=f),4&m.__u?(c=il(m,c,e),p.__e&&(p.__e=null)):typeof m.type=="function"&&w!==void 0?c=w:f&&(c=f.nextSibling),m.__u&=-7);return n.__e=v,c}function Yf(e,t,n,r,a){var i,s,l,c,d,g=n.length,u=g,p=0;for(e.__k=new Array(a),i=0;i<a;i++)(s=t[i])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=e.__k[i]=Tr(null,s,null,null,null):Ko(s)?s=e.__k[i]=Tr(N,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=e.__k[i]=Tr(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[i]=s,c=i+p,s.__=e,s.__b=e.__b+1,l=null,(d=s.__i=Zf(s,n,c,u))!=-1&&(u--,(l=n[d])&&(l.__u|=2)),l==null||l.__v==null?(d==-1&&(a>g?p--:a<g&&p++),typeof s.type!="function"&&(s.__u|=4)):d!=c&&(d==c-1?p--:d==c+1?p++:(d>c?p--:p++,s.__u|=4))):e.__k[i]=null;if(u)for(i=0;i<g;i++)(l=n[i])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=Yn(l)),dl(l,l));return r}function il(e,t,n){var r,a;if(typeof e.type=="function"){for(r=e.__k,a=0;r&&a<r.length;a++)r[a]&&(r[a].__=e,t=il(r[a],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=Yn(e)),t=n.insertBefore(e.__e,t||null));do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function Xo(e,t){return t=t||[],e==null||typeof e=="boolean"||(Ko(e)?e.some(function(n){Xo(n,t)}):t.push(e)),t}function Zf(e,t,n,r){var a,i,s,l=e.key,c=e.type,d=t[n],g=d!=null&&(2&d.__u)==0;if(d===null&&l==null||g&&l==d.key&&c==d.type)return n;if(r>(g?1:0)){for(a=n-1,i=n+1;a>=0||i<t.length;)if((d=t[s=a>=0?a--:i++])!=null&&(2&d.__u)==0&&l==d.key&&c==d.type)return s}return-1}function Ys(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Xf.test(t)?n:n+"px"}function _r(e,t,n,r,a){var i,s;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof r=="string"&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Ys(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||Ys(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")i=t!=(t=t.replace(nl,"$1")),s=t.toLowerCase(),t=s in e||t=="onFocusOut"||t=="onFocusIn"?s.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r?n[Go]=r[Go]:(n[Go]=Da,e.addEventListener(t,i?Ra:Ia,i)):e.removeEventListener(t,i?Ra:Ia,i);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Zs(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[Cr]==null)t[Cr]=Da++;else if(t[Cr]<n[Go])return;return n(fe.event?fe.event(t):t)}}}function Oa(e,t,n,r,a,i,s,l,c,d){var g,u,p,m,f,v,w,k,z,x,M,L,H,V,ee,te,S=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(c=!!(32&n.__u),i=[l=t.__e=n.__e]),(g=fe.__b)&&g(t);e:if(typeof S=="function"){u=s.length;try{if(z=t.props,x=S.prototype&&S.prototype.render,M=(g=S.contextType)&&r[g.__c],L=g?M?M.props.value:g.__:r,n.__c?k=(p=t.__c=n.__c).__=p.__E:(x?t.__c=p=new S(z,L):(t.__c=p=new Yt(z,L),p.constructor=S,p.render=em),M&&M.sub(p),p.state||(p.state={}),p.__n=r,m=p.__d=!0,p.__h=[],p._sb=[]),x&&p.__s==null&&(p.__s=p.state),x&&S.getDerivedStateFromProps!=null&&(p.__s==p.state&&(p.__s=gn({},p.__s)),gn(p.__s,S.getDerivedStateFromProps(z,p.__s))),f=p.props,v=p.state,p.__v=t,m)x&&S.getDerivedStateFromProps==null&&p.componentWillMount!=null&&p.componentWillMount(),x&&p.componentDidMount!=null&&p.__h.push(p.componentDidMount);else{if(x&&S.getDerivedStateFromProps==null&&z!==f&&p.componentWillReceiveProps!=null&&p.componentWillReceiveProps(z,L),t.__v==n.__v||!p.__e&&p.shouldComponentUpdate!=null&&p.shouldComponentUpdate(z,p.__s,L)===!1){t.__v!=n.__v&&(p.props=z,p.state=p.__s,p.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(E){E&&(E.__=t)}),Er.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&s.push(p),l=Yn(n);break e}p.componentWillUpdate!=null&&p.componentWillUpdate(z,p.__s,L),x&&p.componentDidUpdate!=null&&p.__h.push(function(){p.componentDidUpdate(f,v,w)})}if(p.context=L,p.props=z,p.__P=e,p.__e=!1,H=fe.__r,V=0,x)p.state=p.__s,p.__d=!1,H&&H(t),g=p.render(p.props,p.state,p.context),Er.push.apply(p.__h,p._sb),p._sb=[];else do p.__d=!1,H&&H(t),g=p.render(p.props,p.state,p.context),p.state=p.__s;while(p.__d&&++V<25);p.state=p.__s,p.getChildContext!=null&&(r=gn(gn({},r),p.getChildContext())),x&&!m&&p.getSnapshotBeforeUpdate!=null&&(w=p.getSnapshotBeforeUpdate(f,v)),ee=g!=null&&g.type===N&&g.key==null?cl(g.props.children):g,l=al(e,Ko(ee)?ee:[ee],t,n,r,a,i,s,l,c,d),p.base=t.__e,t.__u&=-161,p.__h.length&&s.push(p),k&&(p.__E=p.__=null)}catch(E){if(s.length=u,t.__v=null,c||i!=null){if(E.then){for(t.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;i!=null&&(i[i.indexOf(l)]=null),t.__e=l}else if(i!=null)for(te=i.length;te--;)Na(i[te])}else t.__e=n.__e;t.__k==null&&(t.__k=n.__k||[]),E.then||sl(t),fe.__e(E,t,n)}}else i==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):l=t.__e=Qf(n.__e,t,n,r,a,i,s,c,d);return(g=fe.diffed)&&g(t),128&t.__u?void 0:l}function sl(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(sl))}function ll(e,t,n){for(var r=0;r<n.length;r++)Ba(n[r],n[++r],n[++r]);fe.__c&&fe.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(i){i.call(a)})}catch(i){fe.__e(i,a.__v)}})}function cl(e){return typeof e!="object"||e==null||e.__b>0?e:Ko(e)?e.map(cl):e.constructor!==void 0?null:gn({},e)}function Qf(e,t,n,r,a,i,s,l,c){var d,g,u,p,m,f,v,w=n.props||Ar,k=t.props,z=t.type;if(z=="svg"?a="http://www.w3.org/2000/svg":z=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),i!=null){for(d=0;d<i.length;d++)if((m=i[d])&&"setAttribute"in m==!!z&&(z?m.localName==z:m.nodeType==3)){e=m,i[d]=null;break}}if(e==null){if(z==null)return document.createTextNode(k);e=document.createElementNS(a,z,k.is&&k),l&&(fe.__m&&fe.__m(t,i),l=!1),i=null}if(z==null)w===k||l&&e.data==k||(e.data=k);else{if(i=z=="textarea"&&k.defaultValue!=null?null:i&&Mr.call(e.childNodes),!l&&i!=null)for(w={},d=0;d<e.attributes.length;d++)w[(m=e.attributes[d]).name]=m.value;for(d in w)m=w[d],d=="dangerouslySetInnerHTML"?u=m:d=="children"||d in k||d=="value"&&"defaultValue"in k||d=="checked"&&"defaultChecked"in k||_r(e,d,null,m,a);for(d in k)m=k[d],d=="children"?p=m:d=="dangerouslySetInnerHTML"?g=m:d=="value"?f=m:d=="checked"?v=m:l&&typeof m!="function"||w[d]===m||_r(e,d,m,w[d],a);if(g)l||u&&(g.__html==u.__html||g.__html==e.innerHTML)||(e.innerHTML=g.__html),t.__k=[];else if(u&&(e.innerHTML=""),al(t.type=="template"?e.content:e,Ko(p)?p:[p],t,n,r,z=="foreignObject"?"http://www.w3.org/1999/xhtml":a,i,s,i?i[0]:n.__k&&Yn(n,0),l,c),i!=null)for(d=i.length;d--;)Na(i[d]);l&&z!="textarea"||(d="value",z=="progress"&&f==null?e.removeAttribute("value"):f!=null&&(f!==e[d]||z=="progress"&&!f||z=="option"&&f!=w[d])&&_r(e,d,f,w[d],a),d="checked",v!=null&&v!=e[d]&&_r(e,d,v,w[d],a))}return e}function Ba(e,t,n){try{if(typeof e=="function"){var r=typeof e.__u=="function";r&&e.__u(),r&&t==null||(e.__u=e(t))}else e.current=t}catch(a){fe.__e(a,n)}}function dl(e,t,n){var r,a;if(fe.unmount&&fe.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||Ba(r,null,t)),(r=e.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(i){fe.__e(i,t)}r.base=r.__P=r.__n=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&dl(r[a],t,n||typeof e.type!="function");n||Na(e.__e),e.__c=e.__=e.__e=void 0}function em(e,t,n){return this.constructor(e,n)}function He(e,t,n){var r,a,i,s;t==document&&(t=document.documentElement),fe.__&&fe.__(e,t),a=(r=typeof n=="function")?null:n&&n.__k||t.__k,i=[],s=[],Oa(t,e=(!r&&n||t).__k=Zn(N,null,[e]),a||Ar,Ar,t.namespaceURI,!r&&n?[n]:a?null:t.firstChild?Mr.call(t.childNodes):null,i,!r&&n?n:a?a.__e:t.firstChild,r,s),ll(i,e,s),e.props.children=null}function Ir(e){function t(n){var r,a;return this.getChildContext||(r=new Set,(a={})[t.__c]=this,this.getChildContext=function(){return a},this.componentWillUnmount=function(){r=null},this.shouldComponentUpdate=function(i){this.props.value!=i.value&&r.forEach(function(s){s.__e=!0,La(s)})},this.sub=function(i){r.add(i);var s=i.componentWillUnmount;i.componentWillUnmount=function(){r&&r.delete(i),s&&s.call(i)}}),n.children}return t.__c="__cC"+ol++,t.__=e,t.Provider=t.__l=(t.Consumer=function(n,r){return n.children(r)}).contextType=t,t}Mr=Er.slice,fe={__e:function(e,t,n,r){for(var a,i,s;t=t.__;)if((a=t.__c)&&!a.__)try{if((i=a.constructor)&&i.getDerivedStateFromError!=null&&(a.setState(i.getDerivedStateFromError(e)),s=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,r||{}),s=a.__d),s)return a.__E=a}catch(l){e=l}throw e}},Qs=0,Kf=function(e){return e!=null&&e.constructor===void 0},Yt.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=gn({},this.state),typeof e=="function"&&(e=e(gn({},n),this.props)),e&&gn(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),La(this))},Yt.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),La(this))},Yt.prototype.render=N,Dn=[],el=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,tl=function(e,t){return e.__v.__b-t.__v.__b},Pr.__r=0,Ma=Math.random().toString(8),Cr="__d"+Ma,Go="__a"+Ma,nl=/(PointerCapture)$|Capture$/i,Da=0,Ia=Zs(!1),Ra=Zs(!0),ol=0;var Nn,Ne,Fa,ul,Jo=0,yl=[],Ge=fe,pl=Ge.__b,fl=Ge.__r,ml=Ge.diffed,gl=Ge.__c,hl=Ge.unmount,bl=Ge.__;function ko(e,t){Ge.__h&&Ge.__h(Ne,e,Jo||t),Jo=0;var n=Ne.__H||(Ne.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function A(e){return Jo=1,xl(kl,e)}function xl(e,t,n){var r=ko(Nn++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):kl(void 0,t),function(l){var c=r.__N?r.__N[0]:r.__[0],d=r.t(c,l);c!==d&&(r.__N=[d,r.__[1]],r.__c.setState({}))}],r.__c=Ne,!Ne.__f)){var a=function(l,c,d){if(!r.__c.__H)return!0;var g=!1,u=r.__c.props!==l;if(r.__c.__H.__.some(function(m){if(m.__N){g=!0;var f=m.__[0];m.__=m.__N,m.__N=void 0,f!==m.__[0]&&(u=!0)}}),i){var p=i.call(this,l,c,d);return g?p||u:p}return!g||u};Ne.__f=!0;var i=Ne.shouldComponentUpdate,s=Ne.componentWillUpdate;Ne.componentWillUpdate=function(l,c,d){if(this.__e){var g=i;i=void 0,a(l,c,d),i=g}s&&s.call(this,l,c,d)},Ne.shouldComponentUpdate=a}return r.__N||r.__}function oe(e,t){var n=ko(Nn++,3);!Ge.__s&&Ha(n.__H,t)&&(n.__=e,n.u=t,Ne.__H.__h.push(n))}function Yo(e,t){var n=ko(Nn++,4);!Ge.__s&&Ha(n.__H,t)&&(n.__=e,n.u=t,Ne.__h.push(n))}function ce(e){return Jo=5,Ot(function(){return{current:e}},[])}function Ot(e,t){var n=ko(Nn++,7);return Ha(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function hn(e,t){return Jo=8,Ot(function(){return e},t)}function Ua(e){var t=Ne.context[e.__c],n=ko(Nn++,9);return n.c=e,t?(n.__==null&&(n.__=!0,t.sub(Ne)),t.props.value):e.__}function Qn(){var e=ko(Nn++,11);if(!e.__){for(var t=Ne.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function tm(){for(var e;e=yl.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(Rr),t.__h.some($a),t.__h=[]}catch(n){t.__h=[],Ge.__e(n,e.__v)}}}Ge.__b=function(e){Ne=null,pl&&pl(e)},Ge.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),bl&&bl(e,t)},Ge.__r=function(e){fl&&fl(e),Nn=0;var t=(Ne=e.__c).__H;t&&(Fa===Ne?(t.__h=[],Ne.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(Rr),t.__h.some($a),t.__h=[],Nn=0)),Fa=Ne},Ge.diffed=function(e){ml&&ml(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(yl.push(t)!==1&&ul===Ge.requestAnimationFrame||((ul=Ge.requestAnimationFrame)||nm)(tm)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),Fa=Ne=null},Ge.__c=function(e,t){t.some(function(n){try{n.__h.some(Rr),n.__h=n.__h.filter(function(r){return!r.__||$a(r)})}catch(r){t.some(function(a){a.__h&&(a.__h=[])}),t=[],Ge.__e(r,n.__v)}}),gl&&gl(e,t)},Ge.unmount=function(e){hl&&hl(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(r){try{Rr(r)}catch(a){t=a}}),n.__H=void 0,t&&Ge.__e(t,n.__v))};var vl=typeof requestAnimationFrame=="function";function nm(e){var t,n=function(){clearTimeout(r),vl&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);vl&&(t=requestAnimationFrame(n))}function Rr(e){var t=Ne,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),Ne=t}function $a(e){var t=Ne;e.__c=e.__(),Ne=t}function Ha(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function kl(e,t){return typeof t=="function"?t(e):t}var qa=null;function wl(e){qa=e}function bn(e){return qa&&e&&typeof window<"u"&&e===window.tangu?{...e,...qa}:e}var vn=e=>!!(e?.unitPage&&e.unitPublicEntry||e?.mobile&&e.extendMobile),eo=e=>!!e&&(!e.unitPage||!!e.unitPublicEntry),se=()=>bn(typeof window<"u"?window.tangu:void 0)||{};function Lr(e){let t=typeof e?.status=="number"?e.status:0;if(t>=200&&t<300)return{ok:!0,status:t,data:e?.json??null};let n=e?.json&&typeof e.json=="object"?e.json:null,r=typeof n?.error=="string"?n.error:typeof n?.code=="string"?n.code:null,a=typeof n?.detail=="string"?n.detail:typeof n?.message=="string"?n.message:null;return{ok:!1,status:t,code:r,detail:a,transport:typeof e?.error=="string"?e.error:null}}var Va=e=>({ok:!1,status:0,code:null,detail:null,transport:e});async function Q(e,t={}){let n=se().cloudFetch;if(!n)return Va("no_bridge");try{return Lr(await n({path:e,...t}))}catch(r){return Va(String(r?.message||r))}}async function Dr(e,t){if(!e)return t();try{return Lr(await e())}catch(n){return Va(String(n?.message||n))}}var to=e=>e.status===401&&(e.transport==="not_signed_in"||e.code===null&&e.detail===null&&e.transport===null);function Zt(e){return String(e?.message??e??"").replace(/^Error invoking remote method '[^']*':\s*/,"").replace(/^(?:[A-Za-z]*Error):\s*/,"").trim()}async function On(e,t,n){let r=se().cloudInvoke;if(!r)return!1;let a=e==="membership"&&t?n?[e,t,n]:[e,t]:[e];try{return!!(await r("auth:openPayCenter",...a))?.ok}catch{return!1}}async function no(e){let t=se().openAccountCenter;if(!t)return!1;try{return!!(await t(e)).ok}catch{return!1}}var om=0;function o(e,t,n,r,a,i){t||(t={});var s,l,c=t;if("ref"in c)for(l in c={},t)l=="ref"?s=t[l]:c[l]=t[l];var d={type:e,props:c,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--om,__i:-1,__u:0,__source:a,__self:i};if(typeof e=="function"&&(s=e.defaultProps))for(l in s)c[l]===void 0&&(c[l]=s[l]);return fe.vnode&&fe.vnode(d),d}var rm={user:"M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M4 20c.8-3.5 4-5.5 8-5.5s7.2 2 8 5.5",backpack:"M9 5V3h6v2 M6 8a6 6 0 0 1 12 0v12H6V8Z M9 13h6v5H9z M3 11h3v7H3z M18 11h3v7h-3 M10 8h4",gauge:"M4 16a8 8 0 1 1 16 0 M12 16l4-5 M12 16h.01",shield:"M12 3l7 3v5c0 4.5-3 8.2-7 10-4-1.8-7-5.5-7-10V6l7-3Z",chart:"M4 20V10 M10 20V4 M16 20v-7 M21 20H3",message:"M5 4h14a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-7l-5 4v-4H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z",card:"M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Z M3 10h18 M7 15h4",coins:"M9 11a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z M15.5 9.2A5 5 0 1 1 9.8 16",clock:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M12 7v5l3 2",gift:"M4 11h16v9H4z M3 7h18v4H3z M12 7v13 M12 7c-1.5-3-5-3-5-1s3 1 5 1c2 0 5 1 5-1s-3.5-2-5 1",key:"M8 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M11 11h10 M17 11v3 M20 11v2",laptop:"M5 5h14v10H5z M3 19h18",alert:"M12 4l9 16H3l9-16Z M12 10v4 M12 17h.01",external:"M14 4h6v6 M20 4l-9 9 M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5",copy:"M9 9h11v11H9z M5 15H4V4h11v1",check:"M5 12.5l4.5 4.5L19 7.5",chevron:"M9 6l6 6-6 6",back:"M15 6l-6 6 6 6",pencil:"M4 20h4L19 9l-4-4L4 16v4Z M13.5 6.5l4 4",plus:"M12 5v14 M5 12h14",refresh:"M20 11a8 8 0 0 0-14.3-4.9L4 8 M4 4v4h4 M4 13a8 8 0 0 0 14.3 4.9L20 16 M20 20v-4h-4",phone:"M8 3h8a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M11 18h2",mail:"M4 6h16v12H4z M4 7l8 6 8-6",image:"M4 5h16v14H4z M4 16l5-5 4 4 3-3 4 4 M15.5 9.5h.01",x:"M6 6l12 12 M18 6L6 18",logout:"M15 4h4v16h-4 M10 8l-4 4 4 4 M6 12h10",globe:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M3 12h18 M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3Z",lock:"M6 11h12v9H6z M8.5 11V8a3.5 3.5 0 0 1 7 0v3",palette:"M12 3a9 9 0 0 0 0 18c1.2 0 2-.8 2-1.9 0-.5-.2-.9-.5-1.3-.3-.4-.5-.8-.5-1.3 0-1 .8-1.8 1.8-1.8H17a4 4 0 0 0 4-4c0-4.3-4-7.7-9-7.7Z M7.5 12.5h.01 M9 8.5h.01 M14 7.5h.01",calendar:"M5 5h14v15H5z M5 10h14 M9 3v4 M15 3v4",link:"M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1 M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1",flame:"M12 21a6 6 0 0 0 6-6c0-2.5-1.4-4.4-3-6-.3 1.5-1 2.5-2 3 .3-3-1-6-3.5-8 .2 3-1 4.8-2.2 6.3C6.4 11.5 6 13.2 6 15a6 6 0 0 0 6 6Z",trophy:"M8 4h8v6a4 4 0 0 1-8 0V4Z M8 6H5v1a3 3 0 0 0 3 3 M16 6h3v1a3 3 0 0 1-3 3 M12 14v4 M8.5 20h7",sprout:"M12 20v-8 M12 12c0-3-2-5-6-5 0 3.5 2 5 6 5Z M12 14c0-3 2-5 6-5 0 3.5-2 5-6 5Z",eye:"M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z M12 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z",download:"M12 4v11 M7.5 11l4.5 4.5 4.5-4.5 M5 20h14",upload:"M12 16V5 M7.5 9.5 12 5l4.5 4.5 M5 20h14",up:"M12 19V5 M6 11l6-6 6 6",down:"M12 5v14 M6 13l6 6 6-6",sparkles:"M12 4l1.8 4.7 4.7 1.8-4.7 1.8L12 17l-1.8-4.7-4.7-1.8 4.7-1.8L12 4Z M18.5 15.5v4 M16.5 17.5h4",bot:"M6 9h12v10H6z M12 9V5 M12 4.5h.01 M9.5 13.5h.01 M14.5 13.5h.01 M3.5 13v3 M20.5 13v3",box:"M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3Z M4 7.5l8 4.5 8-4.5 M12 12v9",grid:"M4 4h7v7H4z M13 4h7v7h-7z M4 13h7v7H4z M13 13h7v7h-7z",note:"M6 3h9l4 4v14H6z M15 3v4h4 M9 12h6 M9 16h4",puzzle:"M9 3H4v6a3 3 0 1 0 0 6v5h6a3 3 0 1 1 6 0h4v-6a3 3 0 1 0 0-6V3h-5a3 3 0 1 1-6 0Z"};function J({name:e,size:t=14,class:n}){return o("svg",{class:n,width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",children:o("path",{d:rm[e]})})}function wo({size:e=12}){return o("svg",{class:"spin",width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","aria-hidden":"true",focusable:"false",children:o("path",{d:"M21 12a9 9 0 1 1-6.2-8.56"})})}var am={"penzor.rules.default":"\u4E91\u7AEF\u9ED8\u8BA4","penzor.rules.off":"\u4E0D\u540C\u6B65","penzor.rules.device":"\u8BBE\u5907","penzor.rules.run":"\u7ACB\u5373\u540C\u6B65","penzor.rules.twoWay":"\u53CC\u5411","penzor.rules.defaultForWeb":"\u9ED8\u8BA4\u76EE\u5F55\u4F9B\u7F51\u9875\u7AEF\u4F7F\u7528","penzor.rules.tab.rules":"\u540C\u6B65\u89C4\u5219","penzor.rules.tab.active":"\u6B63\u5728\u4F20\u8F93","penzor.rules.tab.history":"\u5386\u53F2\u8BB0\u5F55","penzor.rules.enable":"\u5F00\u542F\u5185\u5BB9\u540C\u6B65","penzor.rules.add":"\u6DFB\u52A0\u89C4\u5219","penzor.rules.source":"\u672C\u673A\u6765\u6E90","penzor.rules.destination":"\u4E91\u7AEF\u76EE\u6807","penzor.rules.direction":"\u65B9\u5411","penzor.rules.remove":"\u5220\u9664\u89C4\u5219","penzor.rules.inherit":"\u7A7A\u8DEF\u5F84\u4EE3\u8868\u6574\u4E2A Forsion\u3002\u5B50\u9879\u7EE7\u627F\u4E0A\u7EA7\u89C4\u5219\uFF0C\u6700\u5177\u4F53\u7684\u8DEF\u5F84\u4F18\u5148\uFF1B\u6CA1\u6709\u5339\u914D\u89C4\u5219\u7684\u5185\u5BB9\u4E0D\u540C\u6B65\u3002","penzor.rules.namespace":"\u9ED8\u8BA4\uFF1A\u4E91\u7AEF /Forsion/\uFF1B\u8BBE\u5907\u76EE\u5F55\uFF1A\u4E91\u7AEF /Forsion-\u8BBE\u5907ID/\u3002","penzor.rules.human":"human \u72EC\u7ACB\u9009\u62E9\u8303\u56F4\uFF1B\u9ED8\u8BA4\u65E5\u5386\u4F7F\u7528 human/CALENDAR.db\u3002\u6539\u5230\u8BBE\u5907\u76EE\u5F55\u540E\uFF0C\u7F51\u9875\u9ED8\u8BA4\u65E5\u5386\u4E0D\u8DDF\u968F\u5207\u6362\u3002","penzor.rules.preview":"\u9884\u89C8\u53D8\u66F4","penzor.rules.previewTitle":"\u786E\u8BA4\u672C\u6B21\u540C\u6B65\u8303\u56F4","penzor.rules.previewCounts":"\u4E0A\u4F20 {up} \u9879\uFF0C\u4E0B\u8F7D {down} \u9879\uFF0C{conflicts} \u9879\u5DF2\u6709\u4E0D\u540C\u5185\u5BB9\u9700\u5408\u5E76\u6216\u4FDD\u7559\u7248\u672C\u3002","penzor.rules.retain":"\u65E7\u76EE\u6807\u4E2D\u7684\u5185\u5BB9\u4FDD\u7559\u3002\u5173\u95ED\u540C\u6B65\u4E0D\u4F1A\u5220\u9664\u672C\u673A\u6216\u4E91\u7AEF\u6587\u4EF6\uFF1B\u6E90\u6587\u4EF6\u53D8\u5316\u540E\u9700\u91CD\u65B0\u9884\u89C8\u3002","penzor.rules.back":"\u8FD4\u56DE\u4FEE\u6539","penzor.rules.apply":"\u786E\u8BA4\u5E76\u5F00\u59CB","penzor.rules.pause":"\u6682\u505C","penzor.rules.resume":"\u7EE7\u7EED","penzor.rules.noActive":"\u5F53\u524D\u6CA1\u6709\u6587\u4EF6\u6B63\u5728\u4F20\u8F93\u3002","penzor.rules.manual":"\u624B\u52A8\u4E0A\u4F20\u4E0E\u4E0B\u8F7D","penzor.rules.historyNote":"\u4FDD\u7559\u6700\u8FD1 200 \u9879\u3002\u51B2\u7A81\u65F6\u4FDD\u7559\u4E24\u4E2A\u7248\u672C\uFF0C\u5176\u4F59\u5185\u5BB9\u7EE7\u7EED\u540C\u6B65\u3002","penzor.rules.retry":"\u91CD\u8BD5\u5931\u8D25\u9879","penzor.rules.noHistory":"\u8FD8\u6CA1\u6709\u540C\u6B65\u8BB0\u5F55\u3002","penzor.rules.details":"\u67E5\u770B\u4F20\u8F93","penzor.rules.plugins":"\u63D2\u4EF6\u6570\u636E\u4ECD\u7531\u5404\u63D2\u4EF6\u7684\u6570\u636E\u540C\u6B65\u7BA1\u7406\u3002","penzor.rules.turnOff":"\u5173\u95ED\u63D2\u4EF6\u6570\u636E\u540C\u6B65","penzor.rules.turnOn":"\u5F00\u542F\u63D2\u4EF6\u6570\u636E\u540C\u6B65","penzor.rules.phase.idle":"\u7B49\u5F85\u4E0B\u6B21\u540C\u6B65","penzor.rules.phase.scanning":"\u6B63\u5728\u6838\u5BF9\u6587\u4EF6","penzor.rules.phase.syncing":"\u6B63\u5728\u540C\u6B65","penzor.rules.phase.paused":"\u5DF2\u6682\u505C","penzor.rules.state.queued":"\u7B49\u5F85\u4E2D","penzor.rules.state.active":"\u4F20\u8F93\u4E2D","penzor.rules.state.done":"\u5DF2\u5B8C\u6210","penzor.rules.state.failed":"\u5931\u8D25","penzor.rules.state.paused":"\u5DF2\u6682\u505C","penzor.rules.state.conflict":"\u5DF2\u4FDD\u7559\u51B2\u7A81\u7248\u672C","penzor.tree.synced":"\u540C\u6B65\u7684\u5185\u5BB9","penzor.tree.thisBackup":"\u8FD9\u53F0\u7535\u8111 \xB7 \u53EA\u5907\u4EFD","penzor.tree.byApp":"\u6309\u5E94\u7528\u770B","penzor.tree.legacy":"\u65E7\u7248\u667A\u5E93\u540C\u6B65","penzor.quota.sourceLimit":"\u8FD9\u4E00\u7C7B\u8FD8\u6709\u5355\u72EC\u4E0A\u9650 {max}\uFF0C\u5DF2\u7528 {used}","penzor.ov.mine":"\u4F60\u653E\u7684","penzor.ov.synced":"\u540C\u6B65\u4E0A\u6765\u7684","penzor.ov.stale":"\u4E0D\u518D\u66F4\u65B0","penzor.ov.uploads":"\u4F60\u81EA\u5DF1\u4E0A\u4F20\u548C\u6574\u7406\u7684\u6587\u4EF6\uFF0C\u53EF\u4EE5\u968F\u4FBF\u6539","penzor.ov.all":"\u7B14\u8BB0\u3001Agents\u3001\u6211\u7684\u8D44\u6599\u3001\u63D2\u4EF6","penzor.ov.allLast":"\u7B14\u8BB0\u3001Agents\u3001\u6211\u7684\u8D44\u6599\u3001\u63D2\u4EF6 \xB7 \u4E0A\u6B21\u540C\u6B65 {time}","penzor.ov.self":"\u53EA\u6709\u8FD9\u53F0\u7535\u8111\u7528\u7684\u90A3\u4EFD","penzor.ov.device":"\u53EA\u5728\u8FD9\u53F0\u7535\u8111\u548C\u5B83\u4E4B\u95F4\u5171\u7528","penzor.ov.agents":"Agent \u7684\u8BBE\u7F6E\u3001\u8BB0\u5FC6\u548C\u65E5\u5FD7","penzor.ov.profile":"\u4F60\u7684\u8D44\u6599\u548C\u9ED8\u8BA4\u65E5\u5386","penzor.ov.sync":"\u7535\u8111\u540C\u6B65\u4E0A\u6765\u7684\u667A\u5E93","penzor.ov.legacy":"\u8FD9\u53F0\u7535\u8111\u5F00\u4E86\u65B0\u540C\u6B65\u540E\u4E0D\u518D\u5199\u5165\uFF0C\u7559\u7740\u4E0D\u5220","penzor.ov.ama":"\u7F51\u9875\u7248\u7684\u7B14\u8BB0\uFF0C\u548C\u540C\u6B65\u4E0A\u6765\u7684\u7B14\u8BB0","penzor.ov.apps":"\u5404\u5E94\u7528\u5B58\u7684\u6587\u4EF6\uFF0C\u53EF\u4EE5\u5220\u3001\u6539\u540D","penzor.ov.plugins":"\u63D2\u4EF6\u81EA\u5DF1\u5B58\u7684\u8BBE\u7F6E\uFF0C\u8FD9\u91CC\u53EA\u663E\u793A\u5360\u7528","penzor.ov.exports":"\u5BFC\u51FA\u7684\u6587\u4EF6\uFF0C\u53EF\u4EE5\u4E0B\u8F7D\u3001\u5220\u9664","penzor.ov.segNotes":"\u7B14\u8BB0","penzor.ov.segSync":"\u8BBE\u5907\u540C\u6B65","penzor.ov.segOther":"\u5176\u4ED6","penzor.content.badge":"\u65B0\u540C\u6B65\u7EF4\u62A4","penzor.content.badgeLast":"\u65B0\u540C\u6B65\u7EF4\u62A4 \xB7 \u4E0A\u6B21\u540C\u6B65 {time}","penzor.content.noteAll":"\u8FD9\u662F\u4E91\u7AEF\u7684\u90A3\u4E00\u4EFD\uFF0C\u4F60\u767B\u5F55\u7684\u6BCF\u53F0\u8BBE\u5907\u548C\u7F51\u9875\u7248\u770B\u5230\u7684\u90FD\u662F\u5B83\u3002\u8981\u6539\u6587\u4EF6\uFF0C\u5728\u7535\u8111\u4E0A\u7684\u7B14\u8BB0\u3001Agents \u91CC\u6539\uFF0C\u6539\u5B8C\u4F1A\u81EA\u52A8\u540C\u6B65\u4E0A\u6765\uFF1B\u8FD9\u91CC\u53EF\u4EE5\u4E0B\u8F7D\u3002","penzor.content.noteSelf":"\u53EA\u6709\u8FD9\u53F0\u7535\u8111\u7528\u7684\u90A3\u4E00\u4EFD\uFF0C\u522B\u7684\u8BBE\u5907\u770B\u4E0D\u5230\u3002\u8981\u6539\u6587\u4EF6\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u6539\uFF1B\u8FD9\u91CC\u53EF\u4EE5\u4E0B\u8F7D\u3002","penzor.content.noteDevice":"\u53EA\u5728\u8FD9\u53F0\u7535\u8111\u548C {name} \u4E4B\u95F4\u5171\u7528\u3002\u8981\u6539\u6587\u4EF6\u5728\u7535\u8111\u4E0A\u6539\uFF1B\u8FD9\u91CC\u53EF\u4EE5\u4E0B\u8F7D\u3002","penzor.legacy.title":"\u8FD9\u53F0\u7535\u8111\u5F00\u4E86\u65B0\u540C\u6B65\u540E\uFF0C\u5C31\u4E0D\u518D\u5F80\u8FD9\u4E2A\u5E93\u5199\u4E86","penzor.legacy.body":"\u8FD9\u53F0\u7535\u8111\u7684\u7B14\u8BB0\u73B0\u5728\u5728\u300C\u6240\u6709\u8BBE\u5907\u5171\u7528 \u203A \u7B14\u8BB0\u300D\u91CC\u3002\u8FD8\u6CA1\u5347\u7EA7\u7684\u65E7\u7248\u684C\u9762\u53EF\u80FD\u4ECD\u4F1A\u5199\u5230\u8FD9\u91CC\uFF0C\u6240\u4EE5\u8FD9\u4EFD\u7559\u7740\u3001\u4E0D\u5220\u3002","penzor.legacy.go":"\u53BB\u770B\u65B0\u7684\u90A3\u4EFD","penzor.drive.total":"\u6574\u4E2A\u84EC\u6D32\u4E91\u5DF2\u7528 {used} / {max}","penzor.drive.seeAll":"\u67E5\u770B","penzor.cs.statusOff":"\u672A\u5F00","penzor.cs.statusPaused":"\u5DF2\u6682\u505C","penzor.cs.statusRun":"\u540C\u6B65\u4E2D {pct}%","penzor.cs.statusScan":"\u6B63\u5728\u6838\u5BF9\u6587\u4EF6","penzor.cs.statusWarn":"{n} \u9879\u8981\u5904\u7406","penzor.cs.statusOk":"\u5DF2\u540C\u6B65","penzor.cs.statusOkAgo":"\u5DF2\u540C\u6B65 \xB7 {time}","penzor.cs.thisComputer":"\u8FD9\u53F0\u7535\u8111\uFF1A{name}","penzor.cs.thisComputerLabel":"\u8FD9\u53F0\u7535\u8111\uFF1A","penzor.cs.rename":"\u6539\u8FD9\u53F0\u7535\u8111\u7684\u540D\u5B57","penzor.cs.renameHint":"\u6539\u4E86\u4EE5\u540E\uFF0C\u522B\u7684\u8BBE\u5907\u4E0A\u4E5F\u663E\u793A\u8FD9\u4E2A\u540D\u5B57 \xB7 \u56DE\u8F66\u4FDD\u5B58","penzor.cs.othersN":"\u53E6\u5916 {n} \u53F0\uFF1A{names}","penzor.cs.noOthers":"\u8FD8\u6CA1\u6709\u522B\u7684\u8BBE\u5907\u767B\u5F55\u8FD9\u4E2A\u8D26\u53F7","penzor.cs.log":"\u6700\u8FD1\u8BB0\u5F55","penzor.cs.more":"\u66F4\u591A","penzor.cs.advanced":"\u9AD8\u7EA7\uFF1A\u6309\u89C4\u5219\u7F16\u8F91","penzor.cs.backSimple":"\u8FD4\u56DE\u540C\u6B65","penzor.cs.firstTitle":"\u628A\u8FD9\u53F0\u7535\u8111\u540C\u6B65\u5230\u84EC\u6D32\u4E91","penzor.cs.firstBody":"\u4E0B\u9762\u662F\u5EFA\u8BAE\u7684\u8303\u56F4\uFF0C\u53EF\u4EE5\u5148\u6539\u3002\u70B9\u300C\u5F00\u59CB\u540C\u6B65\u300D\u4E4B\u524D\u4E0D\u4F1A\u4F20\u4EFB\u4F55\u4E1C\u897F\uFF1B\u4E91\u7AEF\u5DF2\u6709\u7684\u4E0D\u4F1A\u88AB\u8986\u76D6\u6216\u5220\u9664\u3002","penzor.cs.note":"\u60F3\u8BA9\u67D0\u4E2A\u7B14\u8BB0\u6587\u4EF6\u5939\u6216 Agent \u5355\u72EC\u5904\u7406\uFF0C\u70B9\u5B83\u4E0B\u9762\u90A3\u884C\u5C0F\u5B57\u5C31\u80FD\u6539\u3002\u5173\u6389\u5F00\u5173\u53EA\u662F\u4E0D\u518D\u540C\u6B65\uFF0C\u4E0D\u5220\u9664\u4EFB\u4F55\u6587\u4EF6\u3002","penzor.cs.barFirst":"\u6253\u5F00\u540C\u6B65\u4F1A\u4E0A\u4F20 {up} \u4E2A\u6587\u4EF6\u3001\u4E0B\u8F7D {down} \u4E2A","penzor.cs.barChanged":"\u6539\u4E86 {n} \u5904","penzor.cs.barOne":"\u6539\u4E86 1 \u5904\uFF1A\u300C{name}\u300D\u6539\u6210{scope}","penzor.cs.offName":"\u4E0D\u540C\u6B65","penzor.cs.barCounts":"\u4F1A\u4E0A\u4F20 {up} \u4E2A\u6587\u4EF6\u3001\u4E0B\u8F7D {down} \u4E2A \xB7 \u4E0D\u5220\u9664\u4EFB\u4F55\u6587\u4EF6","penzor.cs.barSize":"\u5171 {size}","penzor.cs.noDelete":"\u4E0D\u4F1A\u5220\u9664\u4EFB\u4F55\u6587\u4EF6","penzor.cs.barConflicts":"{n} \u4E2A\u4E24\u8FB9\u90FD\u6539\u8FC7\uFF0C\u4F1A\u5404\u7559\u4E00\u4EFD","penzor.cs.barCounting":"\u6B63\u5728\u7B97\u8981\u4F20\u591A\u5C11\u2026","penzor.cs.barRecount":"\u6587\u4EF6\u521A\u6709\u53D8\u5316\uFF0C\u5DF2\u7ECF\u91CD\u65B0\u7B97\u8FC7\uFF0C\u8BF7\u518D\u786E\u8BA4\u4E00\u6B21","penzor.cs.later":"\u5148\u4E0D\u5F00","penzor.cs.start":"\u5F00\u59CB\u540C\u6B65","penzor.cs.undo":"\u64A4\u9500","penzor.cs.confirm":"\u786E\u8BA4","penzor.cs.up":"\u6B63\u5728\u4E0A\u4F20\u300C{name}\u300D","penzor.cs.down":"\u6B63\u5728\u4E0B\u8F7D\u300C{name}\u300D","penzor.cs.waiting":"\u8FD8\u6709 {n} \u4E2A\u6587\u4EF6\u7B49\u7740\u4F20","penzor.cs.failedN":"{n} \u4E2A\u6587\u4EF6\u6CA1\u4F20\u6210\u529F","penzor.cs.retry":"\u91CD\u8BD5","penzor.cs.seeLog":"\u770B\u8BB0\u5F55","penzor.cs.logEmpty":"\u8FD8\u6CA1\u6709\u540C\u6B65\u8BB0\u5F55\u3002","penzor.cs.logNote":"\u4FDD\u7559\u6700\u8FD1 200 \u9879\u3002\u4E24\u8FB9\u90FD\u6539\u8FC7\u65F6\u4F1A\u5404\u7559\u4E00\u4EFD\u3002","penzor.cat.notes":"\u7B14\u8BB0","penzor.cat.notesDesc":"Amadeus \u91CC\u7684\u667A\u5E93","penzor.cat.agents":"Agents \u4E0E\u8BB0\u5FC6","penzor.cat.agentsDesc":"\u6BCF\u4E2A Agent \u7684\u8BBE\u7F6E\u3001\u8BB0\u5FC6\u548C\u65E5\u5FD7","penzor.cat.profile":"\u6211\u7684\u8D44\u6599","penzor.cat.profileDesc":"\u4F60\u7684\u8D44\u6599\u548C\u9ED8\u8BA4\u65E5\u5386","penzor.cat.profileOn":"\u542B\u9ED8\u8BA4\u65E5\u5386","penzor.cat.plugins":"\u63D2\u4EF6","penzor.cat.pluginsDesc":"\u63D2\u4EF6\u7684\u6587\u4EF6\u5939\u548C\u8BBE\u7F6E","penzor.cat.others":"\u5176\u4ED6\u6587\u4EF6","penzor.cat.othersDesc":"\u5DE5\u4F5C\u6587\u4EF6\u5939\u91CC\u4E0D\u5C5E\u4E8E\u4E0A\u9762\u51E0\u7C7B\u7684\u6587\u4EF6","penzor.cat.files":"{n} \u4E2A\u6587\u4EF6 \xB7 {size}","penzor.cat.agentsN":"{n} \u4E2A Agent","penzor.cat.agentsSome":"{n} \u4E2A Agent \xB7 {m} \u4E2A\u4E0A\u4E91","penzor.cat.pluginsN":"{n} \u4E2A\u63D2\u4EF6","penzor.cat.custom":"\u53E6\u6709 {n} \u6761\u81EA\u5B9A\u4E49\u89C4\u5219","penzor.cat.notSynced":"\u4E0D\u540C\u6B65 \xB7 \u53EA\u7559\u5728\u8FD9\u53F0\u7535\u8111","penzor.scope.all":"\u6240\u6709\u8BBE\u5907\u5171\u7528","penzor.scope.allDesc":"\u6BCF\u53F0\u767B\u5F55\u7684\u8BBE\u5907\u548C\u7F51\u9875\u7248\u90FD\u662F\u540C\u4E00\u4EFD","penzor.scope.self":"\u53EA\u5907\u4EFD\u8FD9\u53F0\u7535\u8111","penzor.scope.selfDesc":"\u4E91\u7AEF\u5355\u72EC\u5B58\u4E00\u4EFD\uFF0C\u522B\u7684\u8BBE\u5907\u770B\u4E0D\u5230","penzor.scope.with":"\u53EA\u548C {name} \u5171\u7528","penzor.scope.menuTitle":"\u300C{name}\u300D\u548C\u8C01\u5171\u7528","penzor.scope.menuFoot":"\u4E0D\u60F3\u4E0A\u4E91\u5C31\u5173\u6389\u53F3\u8FB9\u7684\u5F00\u5173","penzor.scope.calendarNote":"\u7F51\u9875\u7248\u7684\u9ED8\u8BA4\u65E5\u5386\u4E0D\u4F1A\u8DDF\u7740\u53D8","penzor.unified.stale":"\u5237\u65B0\u5931\u8D25\uFF0C\u4EE5\u4E0B\u4FDD\u7559\u4E0A\u6B21\u7EDF\u8BA1\uFF1B\u5F53\u524D\u7528\u91CF\u672A\u77E5\uFF0C\u8BF7\u91CD\u8BD5\u3002","penzor.unified.uploadTo":"\u4E0A\u4F20\u5230\u300C\u6211\u7684\u6587\u4EF6\u300D","penzor.unified.apps":"\u666E\u901A\u6587\u4EF6\u53EF\u7BA1\u7406 \xB7 \u6765\u6E90\u9650\u5236\u4F18\u5148","penzor.trash.ama":"Amadeus \xB7 \u5F85\u6E05\u7406\u5FEB\u7167","penzor.trash.amaNote":"\u88AB\u5220\u7684\u5F53\u524D\u6587\u4EF6\u4ECD\u8BA1\u5165\u989D\u5EA6\uFF0C\u5386\u53F2\u7248\u672C\u4E0D\u91CD\u590D\u8BA1\u5165\u300230 \u5929\u540E\u7B49\u5F85\u7CFB\u7EDF\u6E05\u7406\uFF1B\u6B64\u5904\u53EA\u8BFB\uFF0C\u4E0D\u53D7\u300C\u6E05\u7A7A\u56DE\u6536\u7AD9\u300D\u5F71\u54CD\u3002","penzor.trash.expires":"\u53EF\u6E05\u7406\u65E5\u671F","penzor.source.openAgents":"\u5728 Agents \u4E2D\u6253\u5F00","penzor.source.openCalendar":"\u6253\u5F00\u65E5\u5386","penzor.source.entryUnavailable":"\u6B64\u5BBF\u4E3B\u6682\u672A\u63D0\u4F9B\u8BE5\u5165\u53E3","penzor.uploads":"\u6211\u7684\u6587\u4EF6","penzor.source.agents":"Agents","penzor.source.profile":"\u6211\u7684\u8D44\u6599","penzor.source.plugins":"\u63D2\u4EF6\u6570\u636E","penzor.source.readonly":"\u540C\u6B65\u6765\u6E90\u4E3A\u53EA\u8BFB\uFF0C\u8BF7\u5728\u539F\u4F4D\u7F6E\u7F16\u8F91\u6216\u5220\u9664\uFF1B\u6B64\u5904\u53EF\u4E0B\u8F7D\u5DF2\u540C\u6B65\u7684\u6587\u4EF6\u3002","penzor.source.appNote":"\u5E94\u7528\u6587\u4EF6\u7531\u539F\u5E94\u7528\u7BA1\u7406\uFF0C\u8BF7\u5728\u5E94\u7528\u4E2D\u7F16\u8F91\u6216\u5220\u9664\u3002","penzor.source.pluginNote":"\u4EC5\u5C55\u793A\u63D2\u4EF6\u540D\u79F0\u548C\u5360\u7528\uFF1B\u6570\u636E\u53EF\u80FD\u542B\u914D\u7F6E\u6216\u51ED\u636E\uFF0C\u4E0D\u76F4\u63A5\u9884\u89C8\u6216\u4E0B\u8F7D\u3002","penzor.unified.unavailable":"\u7EDF\u8BA1\u4E0D\u53EF\u7528","penzor.unified.incomplete":"\u7EDF\u4E00\u7528\u91CF\u5C1A\u672A\u7EDF\u8BA1\u5B8C\u6574\uFF0C\u4E0D\u80FD\u636E\u6B64\u5224\u65AD\u662F\u5426\u8D85\u989D\u3002\u8BF7\u5237\u65B0\u91CD\u8BD5\u3002","penzor.unified.enforced":"\u7EDF\u4E00\u989D\u5EA6\u5DF2\u542F\u7528\uFF1A\u8D85\u989D\u65F6\u6682\u505C\u65B0\u589E\u5185\u5BB9\u548C\u53D8\u5927\u7684\u6587\u4EF6\uFF1B\u4E0B\u8F7D\u3001\u5220\u9664\u53CA\u4E0D\u589E\u5927\u7684\u8986\u76D6\u4ECD\u53EF\u7528\u3002","penzor.unified.grace":"\u901A\u77E5\u5BBD\u9650\u671F\u81F3 {date}\uFF0C\u76EE\u524D\u4E0D\u65B0\u589E\u7EDF\u4E00\u989D\u5EA6\u62E6\u622A\u3002","penzor.unified.rolloutPolicy":"\u5BB9\u91CF\u653F\u7B56\u901A\u77E5\uFF1A\u6700\u65E9\u5728\u786E\u8BA4\u901A\u77E5 30 \u5929\u540E\uFF0C\u7EDF\u4E00\u989D\u5EA6\u624D\u53EF\u80FD\u9650\u5236\u589E\u957F\u5199\u5165\uFF1B\u5E94\u7528\u6587\u4EF6\u5386\u53F2\u5C06\u4EC5\u4FDD\u7559\u6700\u8FD1 30 \u5929\u5185\u6700\u591A 50 \u4EFD\u3002\u5386\u53F2\u4E0D\u8BA1\u5957\u9910\uFF0C\u6E05\u7406\u524D\u4ECD\u53EF\u4E0B\u8F7D\u5907\u4EFD\uFF0C\u5F53\u524D\u6587\u4EF6\u4E0D\u53D7\u5386\u53F2\u6E05\u7406\u5F71\u54CD\u3002","penzor.unified.ack":"\u5DF2\u9605\u8BFB\u5BB9\u91CF\u4E0E\u5386\u53F2\u4FDD\u7559\u901A\u77E5","penzor.unified.notice":"\u73B0\u5728\u53EA\u662F\u63D0\u9192\uFF0C\u8D85\u4E86\u4E5F\u4E0D\u4F1A\u505C\u6389\u540C\u6B65\u6216\u4E0A\u4F20","penzor.unified.over":"\u5DF2\u8D85\u8FC7\u7EDF\u4E00\u989D\u5EA6\u3002\u76EE\u524D\u53EA\u63D0\u9192\uFF0C\u4E0D\u65B0\u589E\u540C\u6B65\u6216\u4E0A\u4F20\u62E6\u622A\uFF1B\u53EF\u6E05\u7406\u6587\u4EF6\u6216\u5347\u7EA7\u5957\u9910\u3002","penzor.unified.warn":"\u7EDF\u4E00\u7A7A\u95F4\u5373\u5C06\u7528\u6EE1\u3002\u76EE\u524D\u53EA\u63D0\u9192\uFF0C\u4E0D\u65B0\u589E\u540C\u6B65\u6216\u4E0A\u4F20\u62E6\u622A\u3002","penzor.unified.accounting":"\u542B\u56DE\u6536\u7AD9 {trash}\uFF0C\u5386\u53F2\u7248\u672C\u4E0D\u7B97","penzor.unified.writable":"\u53EF\u4E0A\u4F20\u3001\u65B0\u5EFA\u3001\u91CD\u547D\u540D\u548C\u5220\u9664","penzor.unified.readonly":"\u53EA\u8BFB \xB7 \u7531\u6765\u6E90\u7BA1\u7406","penzor.unified.export":"\u53EF\u4E0B\u8F7D\u3001\u91CD\u547D\u540D\u548C\u6C38\u4E45\u5220\u9664","penzor.unified.counted":"\u8BA1\u5165\u7EDF\u4E00\u7528\u91CF \xB7 \u63D0\u9192\u9636\u6BB5","penzor.unified.policy":"\u771F\u8981\u9650\u5236\u4E4B\u524D\uFF0C\u81F3\u5C11\u63D0\u524D 30 \u5929\u544A\u8BC9\u4F60\u3002","penzor.unified.legacySync":"\u539F\u8BBE\u5907\u540C\u6B65\u9650\u5236\uFF1A{used} / {max}","penzor.unified.legacyApps":"\u539F\u5E94\u7528\u6587\u4EF6\u9650\u5236\uFF1A{used} / {max}","sub.identity":"\u63D2\u4EF6 ID","sub.identityHint":"\u63D0\u4EA4\u540E\u81EA\u52A8\u5206\u914D\u552F\u4E00 ID\u3002\u540D\u79F0\u53EF\u4EE5\u91CD\u590D\uFF0C\u66F4\u65B0\u6CBF\u7528\u540C\u4E00\u4E2A ID\u3002","sub.description":"\u8BE6\u7EC6\u63CF\u8FF0","sub.tags":"\u6807\u7B7E","sub.tagsHint":"\u4EE5\u9017\u53F7\u5206\u9694\uFF0C\u6700\u591A 8 \u4E2A","sub.minAppVersion":"\u6700\u4F4E Forsion \u7248\u672C","sub.maxAppVersion":"\u6700\u9AD8\u7248\u672C\uFF08\u4E0D\u542B\uFF09","sub.optional":"\u9009\u586B","sub.platforms":"\u652F\u6301\u7684\u7AEF","sub.requirementsHint":"\u652F\u6301 desktop\u3001macos\u3001windows\u3001linux\u3001android\u3001ios\u3001web\u3002\u7559\u7A7A\u8868\u793A\u672A\u58F0\u660E\u3002ZIP \u6E05\u5355\u4E2D\u7684\u8981\u6C42\u4F1A\u81EA\u52A8\u8BFB\u53D6\uFF0C\u624B\u586B\u503C\u987B\u4E0E\u6E05\u5355\u4E00\u81F4\u3002","sub.err.market_requirements_invalid":"\u7248\u672C\u8981\u6C42\u6216\u5E73\u53F0\u65E0\u6548\u3002","sub.err.market_requirements_mismatch":"\u624B\u586B\u7248\u672C\u8981\u6C42\u4E0E ZIP \u6E05\u5355\u4E0D\u4E00\u81F4\u3002","sub.mine":"\u6211\u7684\u6295\u7A3F","page.submission":"\u63D2\u4EF6\u6295\u7A3F","page.webPages":"\u6211\u7684\u7F51\u9875","web.title":"\u6211\u7684\u7F51\u9875","web.desc":"\u7528 Tangu \u6216 Coding Space \u53D1\u5E03\u7684\u7F51\u9875\u90FD\u5728\u8FD9\u91CC\u3002\u62FF\u5230\u94FE\u63A5\u7684\u4EBA\u90FD\u80FD\u6253\u5F00\uFF1B\u9875\u9762\u5728\u6C99\u7BB1\u91CC\u8FD0\u884C\uFF0C\u62FF\u4E0D\u5230\u8BBF\u5BA2\u7684 Forsion \u767B\u5F55\u6001\u3002","web.refresh":"\u5237\u65B0","web.used":"\u5DF2\u53D1\u5E03 {used} / {limit} \u4E2A","web.full":"\u540D\u989D\u5DF2\u6EE1\uFF0C\u4E0B\u7EBF\u4E00\u4E2A\u6216\u5347\u7EA7\u4F1A\u5458\u540E\u624D\u80FD\u53D1\u65B0\u7684","web.empty":"\u8FD8\u6CA1\u6709\u53D1\u5E03\u8FC7\u7F51\u9875","web.emptyHint":"\u5728\u5BF9\u8BDD\u91CC\u8BA9 Tangu \u628A\u7F51\u9875\u53D1\u5E03\u51FA\u53BB\uFF0C\u6BD4\u5982\u300C\u628A\u8FD9\u4E2A\u9875\u9762\u53D1\u5E03\u6210\u7F51\u9875\u300D\uFF1BCoding Space \u91CC\u7684\u9879\u76EE\u4E5F\u53EF\u4EE5\u70B9\u300C\u53D1\u5E03\u300D\u3002","web.updated":"\u66F4\u65B0\u4E8E {date}","web.disabled":"\u5DF2\u505C\u7528","web.disabledHint":"\u8FD9\u4E2A\u7F51\u9875\u88AB\u7BA1\u7406\u5458\u505C\u7528\u4E86\uFF0C\u94FE\u63A5\u6253\u4E0D\u5F00\uFF0C\u4E5F\u4E0D\u80FD\u66F4\u65B0\u3002","web.copy":"\u590D\u5236\u94FE\u63A5","web.unpublish":"\u4E0B\u7EBF","web.unpublishConfirm":"\u786E\u8BA4\u4E0B\u7EBF","web.listingPending":"\u4E0A\u67B6\u5BA1\u6838\u4E2D","web.listingApproved":"\u5DF2\u4E0A\u67B6","web.listingRejected":"\u4E0A\u67B6\u88AB\u9A73\u56DE","web.listingNote":"\u9A73\u56DE\u539F\u56E0\uFF1A{note}","web.listingApply":"\u7533\u8BF7\u4E0A\u67B6","web.listingReapply":"\u91CD\u65B0\u7533\u8BF7","web.listingWithdraw":"\u64A4\u56DE\u7533\u8BF7","web.listingDelist":"\u4E0B\u67B6","web.listingDelistConfirm":"\u786E\u8BA4\u4E0B\u67B6","web.listingSummary":"\u5546\u5E97\u7B80\u4ECB","web.listingSummaryPh":"\u4E00\u53E5\u8BDD\u4ECB\u7ECD\u8FD9\u4E2A\u7F51\u9875","web.listingHint":"\u5BA1\u6838\u901A\u8FC7\u540E\u5728\u5546\u5E97\u300C\u7F51\u7AD9\u5E94\u7528\u300D\u91CC\u516C\u5F00\u5C55\u793A\uFF0C300 \u5B57\u4EE5\u5185\u3002","web.listingSubmit":"\u63D0\u4EA4\u7533\u8BF7","sub.desc":"\u7BA1\u7406\u4F60\u6295\u7A3F\u7684\u5185\u5BB9\u3001\u5BA1\u6838\u7ED3\u679C\u548C\u7248\u672C\u66F4\u65B0\u3002","sub.new":"\u65B0\u6295\u7A3F","sub.refresh":"\u5237\u65B0","sub.empty":"\u8FD8\u6CA1\u6709\u6295\u7A3F","sub.emptyHint":"\u628A\u4F60\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001Agent \u6216 Space \u5206\u4EAB\u5230\u5E94\u7528\u5E02\u573A\u3002","sub.name":"\u540D\u79F0","sub.summary":"\u7B80\u4ECB","sub.type":"\u5185\u5BB9\u7C7B\u578B","sub.source":"\u53D1\u5E03\u6E20\u9053","sub.type.skill":"\u6280\u80FD","sub.type.agent":"Agent","sub.type.plugin":"\u63D2\u4EF6","sub.type.space":"Space","sub.type.theme":"\u4E3B\u9898","sub.type.amadeus_plugin":"Amadeus \u63D2\u4EF6","sub.pending":"\u5F85\u5BA1\u6838","sub.approved":"\u5DF2\u4E0A\u67B6","sub.rejected":"\u5DF2\u9A73\u56DE","sub.pendingVersion":"v{version} \u66F4\u65B0\u5F85\u5BA1\u6838","sub.rejectedVersion":"v{version} \u66F4\u65B0\u5DF2\u9A73\u56DE","sub.submit":"\u63D0\u4EA4\u5BA1\u6838","sub.submitted":"\u6295\u7A3F\u5DF2\u63D0\u4EA4\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u548C\u4F60\u7684\u6536\u4EF6\u7BB1\u91CC\u3002","sub.updated":"\u65B0\u7248\u672C\u5DF2\u63D0\u4EA4\u5BA1\u6838\u3002\u5BA1\u6838\u901A\u8FC7\u524D\u5546\u5E97\u7167\u65E7\u63D0\u4F9B\u5DF2\u4E0A\u67B6\u7684\u7248\u672C\uFF0C\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.repo":"GitHub \u516C\u5F00\u4ED3\u5E93","sub.npm":"npm \u516C\u5F00\u5305","sub.repoHint":"\u4ECE\u4ED3\u5E93\u8BFB\u53D6 README \u548C Release\uFF1B\u4ED3\u5E93\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.npmHint":"\u4ECE npm \u8BFB\u53D6\u5305\u4FE1\u606F\uFF1B\u5BF9\u5E94\u516C\u5F00\u4ED3\u5E93\u7684\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.reviewHint":"\u65B0\u7248\u672C\u9700\u91CD\u65B0\u5BA1\u6838\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u5411\u7528\u6237\u63D0\u4F9B\u3002\u4F60\u7684 Forsion \u8D26\u53F7\u7528\u4E8E\u7BA1\u7406\u6295\u7A3F\u3002","sub.zipHint":"\u6700\u5927 50 MB\uFF0C\u5305\u5185\u5305\u542B\u5BF9\u5E94\u7684 manifest \u4E0E\u5165\u53E3\u6587\u4EF6\u3002","sub.filter":"\u6309\u72B6\u6001\u7B5B\u9009","sub.all":"\u5168\u90E8","sub.noResults":"\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6295\u7A3F","sub.downloads":"{n} \u6B21\u4E0B\u8F7D","sub.errName":"\u8BF7\u586B\u5199\u540D\u79F0\u3002","sub.errSource":"\u8BF7\u586B\u5199\u516C\u5F00\u4ED3\u5E93\u5730\u5740\u6216 npm \u5305\u540D\u3002","sub.errZip":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.errLarge":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.err.market_npm_invalid":"npm \u5305\u4E0D\u5B58\u5728\u6216\u4E0D\u7B26\u5408\u63D2\u4EF6\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_npm_source":"\u8BF7\u901A\u8FC7 npm \u53D1\u5E03\u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_github_source":"\u8BF7\u5728 GitHub \u53D1\u5E03 Release \u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_not_found":"\u6295\u7A3F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","sub.err.market_zip_required":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.err.market_zip_invalid":"ZIP \u5305\u7ED3\u6784\u4E0D\u7B26\u5408\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_zip_too_large":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.err.market_version_required":"\u5305\u91CC\u6CA1\u5199\u7248\u672C\u53F7\u3002\u5728 manifest \u91CC\u5199\u4E0A\u7248\u672C\u53F7\uFF08\u6280\u80FD\u5199\u5728 SKILL.md \u7684 version \u6216 metadata.version\uFF09\u518D\u6253\u5305\u3002","sub.err.market_version_invalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7248\u672C\u53F7\u3002","sub.err.market_version_mismatch":"\u7248\u672C\u53F7\u4E0E\u5305\u5185 manifest \u4E0D\u4E00\u81F4\u3002","sub.err.market_version_not_newer":"\u65B0\u7248\u987B\u9AD8\u4E8E\u5F53\u524D\u5DF2\u4E0A\u67B6\u7248\u672C\u3002","sub.err.market_icon_invalid":"\u56FE\u6807\u5E94\u4E3A 64\u2013512 px \u7684\u6B63\u65B9\u5F62 PNG\u3002","sub.err.market_duplicate":"\u8BE5\u5185\u5BB9\u5DF2\u6709\u6295\u7A3F\uFF0C\u8BF7\u7BA1\u7406\u73B0\u6709\u6295\u7A3F\u3002","sub.err.market_update_pending":"\u5DF2\u6709\u65B0\u7248\u7B49\u5F85\u5BA1\u6838\uFF0C\u8BF7\u5148\u7B49\u5F85\u5BA1\u6838\u7ED3\u679C\u3002","sub.err.market_stale":"\u6295\u7A3F\u5DF2\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","sub.notNewer":"\u5305\u91CC\u7684\u7248\u672C\u662F v{version}\uFF0C\u8981\u9AD8\u4E8E\u5546\u5E97\u5F53\u524D\u7684 v{current}\u3002","sub.reqNone":"\u6CA1\u6709\u58F0\u660E\u7248\u672C\u8981\u6C42\u548C\u5E73\u53F0","sub.dropTitle":"\u628A ZIP \u62D6\u5230\u8FD9\u91CC\uFF0C\u6216\u70B9\u8FD9\u91CC\u9009\u62E9","sub.dropHint":"\u6700\u5927 50 MB\u3002\u9009\u597D\u540E\u5148\u68C0\u67E5\uFF0C\u4E0D\u4F1A\u76F4\u63A5\u63D0\u4EA4\u3002","sub.dropReplace":"{size} \xB7 \u62D6\u5165\u6216\u70B9\u8FD9\u91CC\u6362\u4E00\u4E2A","sub.checkType":"\u7C7B\u578B","sub.checkVersion":"\u7248\u672C","sub.checkIcon":"\u56FE\u6807","sub.checkReadme":"\u8BF4\u660E\u6587\u6863","sub.checkReq":"\u8981\u6C42","sub.checkWarn":"\u6CE8\u610F","sub.iconYes":"\u5305\u91CC\u6709 icon.png","sub.iconNo":"\u5305\u91CC\u6CA1\u6709 icon.png\uFF0C\u5361\u7247\u663E\u793A\u7C7B\u578B\u56FE\u6807","sub.readmeYes":"\u53D6\u5305\u91CC\u7684 README.md","sub.readmeKeep":"\u5305\u91CC\u6CA1\u6709 README.md\uFF0C\u6CBF\u7528\u73B0\u5728\u7684\u8BF4\u660E","sub.readmeNo":"\u5305\u91CC\u6CA1\u6709 README.md","sub.warn.no_manifest":"\u5305\u91CC\u6CA1\u627E\u5230\u6E05\u5355\u6587\u4EF6\uFF08manifest\uFF09","sub.warn.type_mismatch":"\u5305\u91CC\u7684\u7C7B\u578B\u548C\u8FD9\u6761\u6295\u7A3F\u7684\u7C7B\u578B\u4E0D\u4E00\u81F4","sub.warn.tag_version_mismatch":"Release \u6807\u7B7E\u548C\u5305\u91CC\u7684\u7248\u672C\u53F7\u4E0D\u4E00\u81F4","sub.warn.id_slug_mismatch":"\u5305\u91CC\u7684 id \u548C\u5DF2\u5B89\u88C5\u7684\u76EE\u5F55\u540D\u4E0D\u4E00\u81F4\uFF0C\u7528\u6237\u66F4\u65B0\u540E\u4F1A\u591A\u51FA\u4E00\u4EFD","sub.warn.engine_slug_mismatch":"\u5F15\u64CE\u63D2\u4EF6\u7684\u76EE\u5F55\u540D\u548C\u5B83\u7684 id \u4E0D\u4E00\u81F4","sub.warn.no_entry":"Amadeus \u63D2\u4EF6\u7F3A\u5C11\u5165\u53E3 main.js","sub.warn.has_node_modules":"\u5305\u91CC\u5E26\u4E86 node_modules\uFF0C\u4F53\u79EF\u5927\uFF0C\u901A\u5E38\u4E5F\u7528\u4E0D\u4E0A","sub.zipListedNote":"\u5BA1\u6838\u901A\u8FC7\u524D\uFF0C\u5546\u5E97\u7EE7\u7EED\u63D0\u4F9B\u5DF2\u4E0A\u67B6\u7684\u7248\u672C\u3002\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.zipUnlistedNote":"\u63D0\u4EA4\u540E\u66FF\u6362\u73B0\u5728\u8FD9\u4EFD\u5305\uFF0C\u91CD\u65B0\u8FDB\u5165\u5BA1\u6838\u3002","sub.submitVersion":"\u63D0\u4EA4 v{version} \u5BA1\u6838","sub.checkNew":"\u68C0\u67E5\u65B0\u7248\u672C","sub.checkAgain":"\u518D\u68C0\u67E5\u4E00\u6B21","sub.upToDate":"\u4E0A\u6E38\u6700\u65B0\u662F v{version}\uFF0C\u5546\u5E97\u5DF2\u662F v{current}\uFF0C\u6CA1\u6709\u65B0\u7248\u672C\u3002\u53D1\u5E03\u65B0\u7248\u672C\u540E\u518D\u6765\u68C0\u67E5\u3002","sub.upstreamLatest":"\u4E0A\u6E38\u6700\u65B0\uFF1Av{version}","sub.releaseTag":"Release {tag}","sub.storeHas":"\u5546\u5E97\u5F53\u524D v{version}","sub.githubNote":"\u901A\u8FC7\u540E\u5546\u5E97\u9501\u5B9A\u5230 v{version}\u3002\u4EE5\u540E\u5728 GitHub \u53D1\u4E86\u65B0 Release\uFF0C\u56DE\u5230\u8FD9\u91CC\u518D\u68C0\u67E5\u4E00\u6B21\u3002","sub.npmNote":"\u901A\u8FC7\u540E\u5546\u5E97\u9501\u5B9A\u5230 v{version}\u3002\u4EE5\u540E\u5728 npm \u53D1\u4E86\u65B0\u7248\u672C\uFF0C\u56DE\u5230\u8FD9\u91CC\u518D\u68C0\u67E5\u4E00\u6B21\u3002","sub.secVersion":"\u7248\u672C","sub.secInfo":"\u5546\u5E97\u4FE1\u606F","sub.secHistory":"\u8BB0\u5F55","sub.edit":"\u7F16\u8F91","sub.unset":"\u672A\u586B\u5199","sub.infoNote":"\u4E0D\u7528\u4F20\u5305\u3001\u4E0D\u7528\u5347\u7248\u672C\u3002\u5DF2\u4E0A\u67B6\u7684\u4FEE\u6539\u540C\u6837\u8981\u8FC7\u5BA1\u6838\uFF0C\u5BA1\u6838\u524D\u5546\u5E97\u7167\u65E7\u663E\u793A\u539F\u6765\u7684\u4FE1\u606F\u3002","sub.submitInfo":"\u63D0\u4EA4\u4FEE\u6539","sub.back":"\u8FD4\u56DE\u5217\u8868","sub.pendingInfo":"\u5546\u5E97\u4FE1\u606F\u4FEE\u6539\u5F85\u5BA1\u6838","sub.rejectedInfo":"\u5546\u5E97\u4FE1\u606F\u4FEE\u6539\u5DF2\u9A73\u56DE","sub.pendingHint":"\u5BA1\u6838\u901A\u8FC7\u524D\u5546\u5E97\u7167\u65E7\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.inReview":"\u6B63\u5728\u7B49\u5F85\u9996\u6B21\u5BA1\u6838\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.histApproved":"v{version} \u5BA1\u6838\u901A\u8FC7","sub.histSubmitted":"\u6295\u7A3F","sub.resubmitted":"\u5DF2\u91CD\u65B0\u63D0\u4EA4\u5BA1\u6838\uFF0C\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.infoSubmitted":"\u4FEE\u6539\u5DF2\u63D0\u4EA4\u5BA1\u6838\uFF0C\u5BA1\u6838\u524D\u5546\u5E97\u7167\u65E7\u663E\u793A\u539F\u6765\u7684\u4FE1\u606F\u3002","sub.err.market_no_release":"\u8FD9\u4E2A\u4ED3\u5E93\u8FD8\u6CA1\u6709 GitHub Release\u3002\u5546\u5E97\u8981\u9501\u5B9A\u4E00\u4E2A\u7248\u672C\uFF0C\u5148\u5728 GitHub \u53D1\u4E00\u4E2A Release\uFF0C\u518D\u56DE\u6765\u68C0\u67E5\u3002","sub.err.market_no_changes":"\u6CA1\u6709\u6539\u52A8\u3002","sub.err.market_dryrun_unsupported":"GitHub \u548C npm \u6295\u7A3F\u6CA1\u6CD5\u63D0\u524D\u68C0\u67E5\uFF0C\u76F4\u63A5\u63D0\u4EA4\u5BA1\u6838\u5373\u53EF\u3002","page.account":"\u8D26\u53F7","page.membershipUsage":"\u4F1A\u5458\u4E0E\u7528\u91CF","page.membershipQuota":"\u4F1A\u5458\u4E0E\u989D\u5EA6","page.pointsInvite":"\u79EF\u5206\u4E0E\u9080\u8BF7","page.helpDiagnostics":"\u5E2E\u52A9\u4E0E\u8BCA\u65AD","account.details.title":"\u767B\u5F55\u4E0E\u8D44\u6599","account.details.desc":"\u5934\u50CF\u3001\u6635\u79F0\u4E0E\u7B80\u4ECB\u5728\u300C\u4E2A\u4EBA\u4E3B\u9875\u300D\u4E2D\u7F16\u8F91\u3002","account.details.username":"\u7528\u6237\u540D","diag.unavailable":"\u5F53\u524D\u5BBF\u4E3B\u4E0D\u652F\u6301\u8BCA\u65AD\u6570\u636E\uFF0C\u8BF7\u66F4\u65B0 Forsion \u540E\u91CD\u8BD5\u3002","page.profile":"\u4E2A\u4EBA\u4E3B\u9875","page.quota":"\u989D\u5EA6\u4E0E\u79EF\u5206","page.backpack":"\u80CC\u5305","page.security":"\u5B89\u5168","page.usage":"\u7528\u91CF\u8BB0\u5F55","page.feedback":"\u53CD\u9988","store.group":"\u4F1A\u5458\u4E0E\u79EF\u5206","store.membership":"\u4F1A\u5458","store.membership.desc":"\u5347\u7EA7\u6863\u4F4D\uFF0C\u83B7\u5F97\u66F4\u591A\u6BCF\u65E5\u4E0E\u6BCF\u5468\u989D\u5EA6","store.points":"\u79EF\u5206","store.points.desc":"\u5145\u503C\u79EF\u5206\uFF0C\u7528\u6765\u5151\u6362\u7269\u54C1","store.items":"\u7269\u54C1","store.items.desc":"\u7528\u79EF\u5206\u5151\u6362\u7684\u7269\u54C1\uFF0C\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.status":"\u6863\u4F4D\u4E0E\u79EF\u5206","store.tier":"\u5F53\u524D\u6863\u4F4D","store.balance":"\u79EF\u5206\u4F59\u989D","store.choosePlan":"\u9009\u62E9\u6863\u4F4D","store.payHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u56DE\u5230\u5E94\u7528\u540E\u81EA\u52A8\u5237\u65B0","store.payOff":"\u6682\u65F6\u4E0D\u80FD\u8D2D\u4E70","store.period":"\u4ED8\u8D39\u5468\u671F","store.period.monthly":"\u6708\u4ED8","store.period.quarterly":"\u5B63\u4ED8","store.period.yearly":"\u5E74\u4ED8","store.per.monthly":"/ \u6708","store.per.quarterly":"/ \u5B63","store.per.yearly":"/ \u5E74","store.currentTier":"\u5F53\u524D\u6863\u4F4D","store.pay":"\u53BB\u652F\u4ED8","store.payPrice":"{price} \u53BB\u652F\u4ED8","store.noPlans":"\u6682\u65F6\u6CA1\u6709\u53EF\u9009\u7684\u6863\u4F4D","store.packs":"\u79EF\u5206\u5305","store.packsHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u4ED8\u6B3E\u540E\u79EF\u5206\u5373\u65F6\u5230\u8D26","store.noPacks":"\u6682\u65F6\u6CA1\u6709\u79EF\u5206\u5305","store.kind.pack":"\u79EF\u5206\u5305","store.kind.card":"\u9053\u5177","store.kind.code":"\u5151\u6362\u7801","store.kind.item":"\u7269\u54C1","store.nPoints":"{n} \u79EF\u5206","store.instant":"\u4ED8\u6B3E\u540E\u5373\u65F6\u5230\u8D26","store.redeemTitle":"\u79EF\u5206\u5151\u6362","store.redeemHint":"\u7528\u79EF\u5206\u5151\u6362\u5728\u5E94\u7528\u5185\u76F4\u63A5\u5B8C\u6210\uFF0C\u5151\u6362\u540E\u7269\u54C1\u8FDB\u80CC\u5305","store.redeem":"{n} \u79EF\u5206\u5151\u6362","store.redeemConfirm":"\u786E\u8BA4\u82B1 {n} \u79EF\u5206","store.redeemed":"\u5DF2\u5151\u6362\uFF0C\u7269\u54C1\u5728\u80CC\u5305\u91CC","store.uncertain":"\u6CA1\u6536\u5230\u7ED3\u679C\u3002\u5148\u5230\u80CC\u5305\u770B\u4E00\u4E0B\u6709\u6CA1\u6709\u5230\u8D26\uFF0C\u518D\u51B3\u5B9A\u8981\u4E0D\u8981\u91CD\u8BD5\u3002","store.soldOut":"\u5DF2\u552E\u7F44","store.left":"\u4F59 {n}","store.toBackpack":"\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.limitReached":"\u5DF2\u8FBE\u8D2D\u4E70\u4E0A\u9650","store.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u6682\u65F6\u4E0D\u80FD\u5151\u6362","store.noItems":"\u6682\u65F6\u6CA1\u6709\u53EF\u5151\u6362\u7684\u7269\u54C1","store.itemsOff":"\u7269\u54C1\u5151\u6362\u6682\u672A\u5F00\u653E","store.openBackpack":"\u6253\u5F00\u80CC\u5305","backpack.desc":"\u5728\u8FD9\u91CC\u67E5\u770B\u4F60\u83B7\u5F97\u7684\u7269\u54C1\uFF0C\u70B9\u51FB\u683C\u5B50\u67E5\u770B\u8BE6\u60C5\u3002","backpack.refresh":"\u5237\u65B0","backpack.total":"\u5171 {n} \u4EF6\u7269\u54C1","backpack.grid":"\u80CC\u5305\u7269\u54C1","backpack.slot":"{name}\uFF0C\u6570\u91CF {n}","backpack.item":"\u7269\u54C1","backpack.empty":"\u80CC\u5305\u8FD8\u662F\u7A7A\u7684","backpack.emptyHint":"\u5151\u6362\u6216\u83B7\u8D60\u7684\u7269\u54C1\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","backpack.select":"\u70B9\u51FB\u7269\u54C1\u67E5\u770B\u8BE6\u60C5","backpack.details":"\u7269\u54C1\u8BE6\u60C5","backpack.quantity":"\u6301\u6709\u6570\u91CF","backpack.acquired":"\u83B7\u5F97\u65F6\u95F4","backpack.source":"\u83B7\u5F97\u65B9\u5F0F","backpack.source.points":"\u79EF\u5206\u5151\u6362","backpack.source.admin":"\u8D60\u9001","backpack.source.reward":"\u5956\u52B1","backpack.source.other":"\u4E91\u7AEF\u53D1\u653E","backpack.consumable":"\u6D88\u8017\u54C1","backpack.voucher":"\u5361\u5238","backpack.getCards":"\u5151\u6362\u91CD\u7F6E\u5361","backpack.manageCards":"\u4F7F\u7528\u6216\u5151\u6362","backpack.reveal":"\u67E5\u770B\u5361\u5BC6","backpack.copyKey":"\u590D\u5236\u5361\u5BC6","backpack.noKey":"\u8FD9\u4EF6\u7269\u54C1\u6CA1\u6709\u5361\u5BC6\u3002","backpack.use":"\u4F7F\u7528","backpack.confirmUse":"\u786E\u8BA4\u4F7F\u7528","backpack.consumeConfirm":"\u4F7F\u7528\u540E\u6D88\u8017 1 \u4EF6\u7269\u54C1\u3002","backpack.collectible":"\u7EAA\u5FF5\u54C1","backpack.effect.points":"+{n} \u79EF\u5206","backpack.effect.cards":"+{n} \u5F20\u91CD\u7F6E\u5361","backpack.effect.quota":"\u91CD\u7F6E\u4ECA\u65E5\u4E0E\u672C\u5468\u989D\u5EA6","backpack.rarity.common":"\u666E\u901A","backpack.rarity.rare":"\u7A00\u6709","backpack.rarity.epic":"\u53F2\u8BD7","backpack.rarity.legendary":"\u4F20\u8BF4","backpack.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u5DF2\u4E0D\u53EF\u7528\uFF0C\u8BF7\u5237\u65B0\u80CC\u5305\u3002","backpack.notUsable":"\u8FD9\u4EF6\u7269\u54C1\u4E0D\u80FD\u4F7F\u7528\u3002","backpack.quotaUnavailable":"\u8BF7\u5148\u4F7F\u7528\u4E91\u7AEF AI \u521D\u59CB\u5316\u989D\u5EA6\uFF0C\u518D\u4F7F\u7528\u8FD9\u4EF6\u7269\u54C1\u3002","common.cancel":"\u53D6\u6D88","common.copied":"\u5DF2\u590D\u5236","common.copyFailed":"\u590D\u5236\u5931\u8D25","common.done":"\u5B8C\u6210","common.loadFailed":"\u6CA1\u80FD\u52A0\u8F7D","common.loadMore":"\u52A0\u8F7D\u66F4\u591A","common.loading":"\u52A0\u8F7D\u4E2D\u2026","common.openInBrowser":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00","common.retry":"\u91CD\u8BD5","common.save":"\u4FDD\u5B58","common.thisWeek":"\u672C\u5468","common.today":"\u4ECA\u65E5","common.unlimited":"\u4E0D\u9650","ann.eyebrow":"FORSION \xB7 \u516C\u544A","ann.close":"\u5173\u95ED","ann.ok":"\u77E5\u9053\u4E86","signin.button":"\u767B\u5F55 Forsion","signin.desc":"\u767B\u5F55 Forsion \u8D26\u53F7\u540E\uFF0C\u53EF\u4EE5\u5728\u8FD9\u91CC\u7BA1\u7406\u8D26\u53F7\u3001\u989D\u5EA6\u3001\u5B89\u5168\u3001\u6295\u7A3F\u4E0E\u53CD\u9988\u3002","signin.pending":"\u7B49\u5F85\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u767B\u5F55\u2026","signin.deviceHint":"\u6D4F\u89C8\u5668\u4F1A\u81EA\u52A8\u6253\u5F00\u767B\u5F55\u9875\uFF1B\u6CA1\u6709\u6253\u5F00\u7684\u8BDD\uFF0C\u7528\u624B\u673A\u626B\u7801\u6216\u6253\u5F00\u4E0B\u9762\u7684\u94FE\u63A5\uFF0C\u5E76\u6838\u5BF9\u9A8C\u8BC1\u7801\u3002","signin.code":"\u9A8C\u8BC1\u7801","signin.openLink":"\u6253\u5F00\u767B\u5F55\u9875","signin.copyLink":"\u590D\u5236\u94FE\u63A5","signin.qrLabel":"\u767B\u5F55\u4E8C\u7EF4\u7801","account.profile.title":"\u4E2A\u4EBA\u8D44\u6599","account.profile.desc":"\u5934\u50CF\u3001\u6635\u79F0\uFF0C\u4EE5\u53CA\u7ED1\u5B9A\u7684\u624B\u673A\u548C\u90AE\u7BB1","account.avatar.change":"\u66F4\u6362\u5934\u50CF","account.avatar.saved":"\u5934\u50CF\u5DF2\u66F4\u65B0","account.nickname.edit":"\u4FEE\u6539\u6635\u79F0","account.nickname.label":"\u6635\u79F0","account.nickname.saved":"\u6635\u79F0\u5DF2\u66F4\u65B0","account.role.admin":"\u7BA1\u7406\u5458","account.username":"\u7528\u6237\u540D {name}","account.contact.phone":"\u624B\u673A","account.contact.email":"\u90AE\u7BB1","account.contact.unbound":"\u672A\u7ED1\u5B9A","account.contact.manage":"\u53BB\u5B89\u5168\u9875\u7BA1\u7406","account.web.open":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u4E2A\u4EBA\u4E2D\u5FC3","account.web.desc":"\u4E91\u7A7A\u95F4\u3001AI \u5927\u8111\u4E0E\u4E3B\u9898\u5728\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7BA1\u7406\u3002","member.title":"\u4F1A\u5458","member.desc":"\u5F53\u524D\u6863\u4F4D\u3001\u65B9\u6848\u4E0E\u5230\u671F\u65E5","member.upgrade":"\u5347\u7EA7\u4F1A\u5458","member.renew":"\u7EED\u8D39","member.freeName":"\u514D\u8D39\u7248","member.freeHint":"\u5347\u7EA7\u4F1A\u5458\u53EF\u4EE5\u83B7\u5F97\u66F4\u591A AI \u989D\u5EA6","member.expires":"{date} \u5230\u671F","member.noExpiry":"\u957F\u671F\u6709\u6548","member.loadFailed":"\u4F1A\u5458\u4FE1\u606F\u6682\u65F6\u62FF\u4E0D\u5230\u3002","session.title":"\u767B\u5F55","session.desc":"\u7BA1\u7406\u8FD9\u53F0\u8BBE\u5907\u4E0A\u7684\u767B\u5F55\u72B6\u6001","local.title":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u8D26\u53F7","local.desc":"\u5728\u767B\u5F55\u8FC7\u7684\u8D26\u53F7\u4E4B\u95F4\u5207\u6362","local.current":"\u5F53\u524D","local.switch":"\u5207\u6362","local.add":"\u767B\u5F55\u5176\u4ED6\u8D26\u53F7","local.signOut":"\u9000\u51FA\u767B\u5F55","local.empty":"\u8FD8\u6CA1\u6709\u4FDD\u5B58\u7684\u8D26\u53F7","local.loadFailed":"\u8D26\u53F7\u5217\u8868\u6682\u65F6\u8BFB\u4E0D\u5230","diag.title":"\u8BCA\u65AD\u6570\u636E","diag.desc":"\u5E2E\u52A9\u6211\u4EEC\u6392\u67E5\u95EE\u9898\u3001\u6539\u8FDB Forsion\u3002\u9ED8\u8BA4\u5173\u95ED\u3002","diag.enable":"\u4E0A\u4F20\u8BCA\u65AD\u6570\u636E","diag.enableDesc":"\u6253\u5F00\u540E\uFF0C\u8FD9\u53F0\u7535\u8111\u4F1A\u5B9A\u671F\u4E0A\u4F20\u4E00\u4EFD Forsion \u4FE1\u606F\u5FEB\u7167\u5230\u4F60\u7684 Forsion \u8D26\u53F7\uFF0CForsion \u56E2\u961F\u53EF\u4EE5\u67E5\u770B\u3002\u591A\u4E45\u4E0A\u4F20\u4E00\u6B21\u7531 Forsion \u56E2\u961F\u8BBE\u5B9A\uFF0C\u9ED8\u8BA4\u6BCF\u5929\u4E00\u6B21\u3002\u968F\u65F6\u53EF\u4EE5\u5173\u95ED\u3002","diag.collected":"\u4F1A\u4E0A\u4F20","diag.item.app":"\u5E94\u7528\u4E0E\u7CFB\u7EDF\u7684\u7248\u672C\uFF0C\u8FD9\u53F0\u7535\u8111\u7684\u540D\u5B57\u3001\u5185\u5B58\u4E0E\u78C1\u76D8\u4F59\u91CF","diag.item.settings":"\u6A21\u578B\u4E0E\u8BED\u97F3\u7684\u9009\u62E9\uFF0C\u540E\u53F0 Agent \u4E0E\u63D2\u4EF6\u8BBE\u7F6E\u91CC\u7684\u5F00\u5173\u548C\u6570\u503C\uFF0CMCP \u670D\u52A1\u4E0E\u6D88\u606F\u901A\u9053\u7684\u540D\u5B57\u548C\u5F00\u5173","diag.item.agents":"Agent \u4E0E\u56E2\u961F\u7684\u914D\u7F6E\uFF08\u540D\u5B57\u3001\u6A21\u578B\u8FD9\u7C7B\u9009\u9879\uFF1B\u63CF\u8FF0\u4E0E\u63D0\u793A\u8BCD\u53EA\u8BB0\u957F\u5EA6\uFF0C\u6B63\u6587\u5F52\u4E0B\u9762\u300C\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55\u300D\u90A3\u4E2A\u5F00\u5173\uFF09","diag.item.plugins":"\u5DF2\u5B89\u88C5\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001\u4E3B\u9898\u548C Space \u7684\u540D\u5B57\u4E0E\u7248\u672C","diag.item.runs":"\u6700\u8FD1 7 \u5929\u7684\u8FD0\u884C\u8BB0\u5F55\uFF1A\u6BCF\u6B21\u8FD0\u884C\u7684\u72B6\u6001\u548C\u62A5\u9519\u539F\u56E0\uFF0C\u6A21\u578B\u8C03\u7528\u4E0E\u5DE5\u5177\u7684\u7528\u91CF\u3001\u8017\u65F6\uFF08\u4E0D\u5E26\u5BF9\u8BDD\u5185\u5BB9\u548C\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\uFF09\uFF0C\u4EE5\u53CA\u5F15\u64CE\u6700\u8FD1\u7684\u8FD0\u884C\u65E5\u5FD7","diag.notCollected":"\u4E0D\u4F1A\u4E0A\u4F20\uFF1A\u4FDD\u5B58\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u767B\u5F55\u51ED\u636E\u4E0E API \u5BC6\u94A5\u3001\u7B14\u8BB0\u6587\u4EF6\u3001Agent \u7684\u8D44\u6599\u5E93\u3001\u63D2\u4EF6\u6570\u636E\u3002","diag.sessions":"\u5305\u542B\u4F1A\u8BDD\u5185\u5BB9","diag.sessionsDesc":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u5BF9\u8BDD\uFF1A\u4F60\u548C Agent \u7684\u6D88\u606F\u6587\u5B57\u3001Agent \u7684\u601D\u8003\u8FC7\u7A0B\u548C\u7528\u5230\u7684\u5DE5\u5177\u540D\uFF0C\u5305\u62EC\u56E2\u961F\u6210\u5458\u3001\u8BA8\u8BBA\u3001\u59D4\u6D3E\u5728\u540E\u53F0\u505A\u7684\u90A3\u90E8\u5206\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\u548C\u9644\u4EF6\u672C\u8EAB\u4E0D\u5E26\uFF1B\u6D88\u606F\u91CC\u51FA\u73B0\u7684\u6587\u4EF6\u540D\u3001Agent \u5728\u56DE\u590D\u91CC\u590D\u8FF0\u7684\u7B14\u8BB0\u6216\u6587\u4EF6\u5185\u5BB9\u4F1A\u5728\u5176\u4E2D\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.memory":"\u5305\u542B Agent \u7684\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55","diag.memoryDesc":"\u6BCF\u4E2A Agent \u7684\u4EBA\u8BBE\uFF08\u5305\u62EC\u914D\u7F6E\u91CC\u7684\u63CF\u8FF0\u548C\u5F00\u53D1\u8005\u6307\u4EE4\uFF09\uFF0C\u548C\u5B83\u81EA\u5DF1\u6512\u4E0B\u6765\u7684\u5185\u5BB9\uFF1A\u8BB0\u5FC6\u548C\u8FD8\u6CA1\u6574\u7406\u7684\u8BB0\u5FC6\u5019\u9009\u3001\u8FDB\u5316\u8BB0\u5F55\u3001\u5199\u7ED9\u4F60\u7684\u534F\u4F5C\u8BF4\u660E\u3001\u6700\u8FD1 7 \u5929\u7684\u65E5\u5FD7\u548C\u8BB0\u5FC6\u6574\u7406\u8BB0\u5F55\uFF0C\u4EE5\u53CA\u9879\u76EE\u8BB0\u5FC6\uFF1B\u8FD8\u6709\u56E2\u961F\u7684\u8BBE\u5B9A\u548C\u4F60\u7684\u7528\u6237\u753B\u50CF\u3002\u8FD9\u4E9B\u662F\u4F60\u7ED9 Agent \u548C\u56E2\u961F\u5199\u7684\u8BBE\u5B9A\uFF0C\u548C Agent \u4ECE\u5BF9\u8BDD\u91CC\u8BB0\u4E0B\u7684\u5173\u4E8E\u4F60\u548C\u4F60\u7684\u5DE5\u4F5C\u7684\u4E8B\u5B9E\uFF0C\u6BCF\u6B21\u4E0A\u4F20\u5B83\u4EEC\u5F53\u524D\u7684\u5185\u5BB9\uFF08\u5F88\u957F\u7684\u4F1A\u622A\u65AD\uFF09\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.activity":"\u5305\u542B\u6D3B\u52A8\u65E5\u5FD7","diag.activityDesc":"\u6D3B\u52A8\u8BB0\u5F55\u91CC\u6709\u5BF9\u8BDD\u5F00\u5934\u7684\u51E0\u5341\u4E2A\u5B57\u548C\u7B14\u8BB0\u6587\u4EF6\u540D\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.last":"\u4E0A\u6B21\u4E0A\u4F20\uFF1A{time}","diag.noUpload":"\u8FD8\u6CA1\u6709\u4E0A\u4F20\u8FC7","diag.freq.hour":"\u6BCF\u5C0F\u65F6\u4E00\u6B21","diag.freq.hours":"\u6BCF {n} \u5C0F\u65F6\u4E00\u6B21","diag.freq.day":"\u6BCF\u5929\u4E00\u6B21","diag.freq.days":"\u6BCF {n} \u5929\u4E00\u6B21","diag.freq.manual":"Forsion \u56E2\u961F\u9700\u8981\u65F6\u624D\u91C7\u96C6","diag.retention":"\u4E91\u7AEF\u4FDD\u7559\u8FD9\u53F0\u7535\u8111\u6700\u8FD1 {n} \u5929\u7684\u5FEB\u7167\u3002\u5173\u95ED\u540E\u4E0D\u518D\u4E0A\u4F20\uFF1B\u5DF2\u4E0A\u4F20\u7684\u5FEB\u7167\u4ECD\u7559\u5728\u4E91\u7AEF\uFF0C\u9700\u8981\u5220\u9664\u53EF\u4EE5\u5728\u300C\u53CD\u9988\u300D\u91CC\u544A\u8BC9\u6211\u4EEC\u3002","diag.uploadNow":"\u7ACB\u5373\u4E0A\u4F20","diag.uploaded":"\u5DF2\u4E0A\u4F20","diag.failed":"\u4E0A\u4F20\u5931\u8D25\uFF1A{reason}","quota.ai.title":"AI \u989D\u5EA6","quota.ai.desc":"\u4ECA\u65E5\u548C\u672C\u5468\u5404\u8FD8\u5269\u591A\u5C11\uFF1B\u7528\u5B8C\u540E\u53EF\u4EE5\u7528\u989D\u5EA6\u91CD\u7F6E\u5361\u6062\u590D","quota.resetDaily":"\u6BCF\u5929 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","quota.resetWeekly":"{date} 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","card.title":"\u989D\u5EA6\u91CD\u7F6E\u5361","card.desc":"\u628A\u4ECA\u65E5\u548C\u672C\u5468\u7684 AI \u989D\u5EA6\u6062\u590D\u5230 100%","card.owned":"\u6301\u6709 {n} \u5F20","card.use":"\u4F7F\u7528\u4E00\u5F20","card.useConfirm":"\u786E\u8BA4\u4F7F\u7528","card.used":"\u5DF2\u4F7F\u7528 1 \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","card.left":"\u8FD8\u5269 {n} \u5F20","card.noneHint":"\u6CA1\u6709\u989D\u5EA6\u91CD\u7F6E\u5361\u4E86\uFF0C\u53EF\u4EE5\u7528\u79EF\u5206\u5151\u6362\u3002","card.exchange":"\u7528\u79EF\u5206\u5151\u6362","card.price":"\u6BCF\u5F20 {price} \u79EF\u5206\uFF0C\u4E00\u6B21 1\u201350 \u5F20","card.count":"\u5151\u6362\u5F20\u6570","card.cost":"\u82B1\u8D39 {cost} \u79EF\u5206","card.countHint":"\u586B 1\u201350","card.exchangeButton":"\u5151\u6362","card.exchangeConfirm":"\u786E\u8BA4\u82B1\u8D39 {cost} \u79EF\u5206","card.exchanged":"\u5DF2\u5151\u6362 {n} \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","points.title":"\u79EF\u5206","points.desc":"\u79EF\u5206\u53EF\u4EE5\u5151\u6362\u989D\u5EA6\u91CD\u7F6E\u5361","points.balance":"\u4F59\u989D","points.balanceFailed":"\u4F59\u989D\u6682\u65F6\u62FF\u4E0D\u5230","points.recharge":"\u5145\u503C\u79EF\u5206","bg.title":"\u540E\u53F0\u989D\u5EA6","bg.desc":"Muse \u4E0E\u81EA\u52A8\u5316\u4F7F\u7528\uFF0C\u548C AI \u989D\u5EA6\u5206\u5F00\u8BA1\u7B97","bg.autoMain":"\u7528\u5B8C\u540E\u6539\u7528 AI \u989D\u5EA6\u7EE7\u7EED","bg.autoMainDesc":"\u5173\u7740\u65F6\uFF0C\u540E\u53F0\u989D\u5EA6\u7528\u5B8C\u540E Muse \u4E0E\u81EA\u52A8\u5316\u4F1A\u6682\u505C","bg.convert":"\u4ECE AI \u989D\u5EA6\u8F6C\u5165","bg.convertDesc":"\u6309 AI \u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B\u8F6C\u5165\uFF0C\u672C\u5468\u671F\u5185\u6709\u6548","bg.convertConfirm":"\u786E\u8BA4\u8F6C\u5165 {pct}%","bg.converted":"\u5DF2\u4ECE AI \u989D\u5EA6\u8F6C\u5165 {pct}%","invite.title":"\u9080\u8BF7\u4E0E\u5151\u6362","invite.desc":"\u9080\u8BF7\u597D\u53CB\u6CE8\u518C\uFF0C\u6216\u5151\u6362\u4F60\u6536\u5230\u7684\u7801","invite.myCode":"\u6211\u7684\u9080\u8BF7\u7801","invite.count":"\u5DF2\u9080\u8BF7 {n} \u4EBA","invite.copyCode":"\u590D\u5236\u9080\u8BF7\u7801","invite.copyLink":"\u590D\u5236\u9080\u8BF7\u94FE\u63A5","invite.loadFailed":"\u9080\u8BF7\u7801\u6682\u65F6\u62FF\u4E0D\u5230","invite.claim":"\u586B\u5199\u9080\u8BF7\u7801","invite.claimDesc":"\u6CE8\u518C\u540E 7 \u5929\u5185\uFF0C\u53EF\u4EE5\u8865\u586B\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimPlaceholder":"\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimSubmit":"\u63D0\u4EA4","invite.claimed":"\u9080\u8BF7\u7801\u5DF2\u751F\u6548","redeem.title":"\u5151\u6362\u7801","redeem.desc":"\u5151\u6362\u79EF\u5206\u3001\u4F1A\u5458\u6216\u5176\u4ED6\u5956\u52B1","redeem.placeholder":"\u8F93\u5165\u5151\u6362\u7801","redeem.submit":"\u5151\u6362","redeem.success":"\u5151\u6362\u6210\u529F","redeem.successWith":"\u5151\u6362\u6210\u529F\uFF1A{what}","redeem.gotPoints":"{n} \u79EF\u5206","redeem.gotMembership":"\u4F1A\u5458","sec.methods.title":"\u767B\u5F55\u65B9\u5F0F","sec.methods.desc":"\u624B\u673A\u548C\u90AE\u7BB1\u53EF\u4EE5\u7528\u6765\u767B\u5F55\u3001\u627E\u56DE\u5BC6\u7801","sec.bind":"\u7ED1\u5B9A","sec.change":"\u66F4\u6362","sec.phone":"\u624B\u673A\u53F7","sec.email":"\u90AE\u7BB1\u5730\u5740","sec.newPhone":"\u65B0\u624B\u673A\u53F7","sec.newEmail":"\u65B0\u90AE\u7BB1\u5730\u5740","sec.phonePlaceholder":"\u4E2D\u56FD\u5927\u9646\u53F7\u7801\u76F4\u63A5\u586B\uFF0C\u5176\u4ED6\u5730\u533A\u5E26 +\u533A\u53F7","sec.emailPlaceholder":"name@example.com","sec.code":"\u9A8C\u8BC1\u7801","sec.codePlaceholder":"\u8F93\u5165\u9A8C\u8BC1\u7801","sec.sendCode":"\u53D1\u9001\u9A8C\u8BC1\u7801","sec.resendIn":"{s} \u79D2\u540E\u91CD\u53D1","sec.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001","sec.bindSubmit":"\u786E\u8BA4\u7ED1\u5B9A","sec.phoneBound":"\u624B\u673A\u5DF2\u7ED1\u5B9A","sec.emailBound":"\u90AE\u7BB1\u5DF2\u7ED1\u5B9A","sec.devices.title":"\u767B\u5F55\u8BBE\u5907","sec.devices.desc":"\u62C5\u5FC3\u8D26\u53F7\u88AB\u522B\u4EBA\u7528\u4E86\uFF0C\u53EF\u4EE5\u8BA9\u6240\u6709\u8BBE\u5907\u91CD\u65B0\u767B\u5F55","sec.logoutAll":"\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDesc":"\u5305\u62EC\u8FD9\u53F0\u8BBE\u5907\uFF0C\u6240\u6709\u8BBE\u5907\u90FD\u8981\u91CD\u65B0\u767B\u5F55","sec.logoutAllConfirm":"\u786E\u8BA4\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDone":"\u5DF2\u9000\u51FA\u6240\u6709\u8BBE\u5907","pw.title":"\u5BC6\u7801","pw.desc":"{min}\u2013{max} \u4F4D\uFF0C\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u5927\u5199\u5B57\u6BCD\u548C\u7279\u6B8A\u5B57\u7B26\uFF0C\u4E0D\u80FD\u6709\u7A7A\u683C","pw.change":"\u4FEE\u6539\u5BC6\u7801","pw.modeLabel":"\u4FEE\u6539\u65B9\u5F0F","pw.mode.current":"\u7528\u5F53\u524D\u5BC6\u7801","pw.mode.code":"\u7528\u9A8C\u8BC1\u7801","pw.current":"\u5F53\u524D\u5BC6\u7801","pw.currentRequired":"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801","pw.new":"\u65B0\u5BC6\u7801","pw.confirm":"\u518D\u8F93\u4E00\u6B21\u65B0\u5BC6\u7801","pw.mismatch":"\u4E24\u6B21\u8F93\u5165\u7684\u65B0\u5BC6\u7801\u4E0D\u4E00\u81F4","pw.submit":"\u4FEE\u6539\u5BC6\u7801","pw.submitReset":"\u8BBE\u7F6E\u65B0\u5BC6\u7801","pw.changed":"\u5BC6\u7801\u5DF2\u66F4\u65B0","pw.noPasswordYet":"\u8FD9\u4E2A\u8D26\u53F7\u8FD8\u6CA1\u6709\u8BBE\u7F6E\u5BC6\u7801\uFF0C\u8BF7\u6539\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u3002","pw.codeNeedsContact":"\u7ED1\u5B9A\u624B\u673A\u6216\u90AE\u7BB1\u540E\uFF0C\u624D\u80FD\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u5BC6\u7801\u3002","pw.via":"\u9A8C\u8BC1\u7801\u53D1\u5230","pw.codeTo":"\u9A8C\u8BC1\u7801\u4F1A\u53D1\u5230 {target}","pw.rulesLabel":"\u5BC6\u7801\u89C4\u5219","pw.req.length":"{min}\u2013{max} \u4F4D","pw.req.lower":"\u542B\u5C0F\u5199\u5B57\u6BCD","pw.req.upper":"\u542B\u5927\u5199\u5B57\u6BCD","pw.req.special":"\u542B\u7279\u6B8A\u5B57\u7B26","pw.req.space":"\u4E0D\u542B\u7A7A\u683C","pw.rule.format":"\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E","pw.rule.min":"\u5BC6\u7801\u81F3\u5C11 8 \u4F4D","pw.rule.max":"\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D","pw.rule.space":"\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C","pw.rule.lower":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD","pw.rule.upper":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD","pw.rule.special":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26","del.title":"\u6CE8\u9500\u8D26\u53F7","del.desc":"\u6C38\u4E45\u5220\u9664\u8D26\u53F7\u548C\u5168\u90E8\u6570\u636E\uFF0C\u65E0\u6CD5\u6062\u590D","del.start":"\u6CE8\u9500\u8D26\u53F7","del.warn":"\u6CE8\u9500\u540E\uFF0C\u8D26\u53F7\u3001\u79EF\u5206\u3001\u4F1A\u5458\u3001\u4E91\u7A7A\u95F4\u548C\u5168\u90E8\u6570\u636E\u90FD\u4F1A\u88AB\u5220\u9664\uFF0C\u65E0\u6CD5\u627E\u56DE\u3002","del.methodLabel":"\u9A8C\u8BC1\u65B9\u5F0F","del.byCode":"\u9A8C\u8BC1\u7801","del.byPassword":"\u5BC6\u7801","del.codeLabel":"\u53D1\u5230 {target} \u7684\u9A8C\u8BC1\u7801","del.passwordLabel":"\u8D26\u53F7\u5BC6\u7801","del.submit":"\u6CE8\u9500\u8D26\u53F7","del.confirm":"\u786E\u8BA4\u6C38\u4E45\u6CE8\u9500","del.done":"\u8D26\u53F7\u5DF2\u6CE8\u9500","usage.overview.title":"\u7528\u91CF\u6982\u89C8","usage.overview.desc":"\u6240\u9009\u65F6\u95F4\u6BB5\u5185\u7684\u8BF7\u6C42\u4E0E AI \u989D\u5EA6\u6D88\u8017","usage.range":"\u65F6\u95F4\u8303\u56F4","usage.days":"{n} \u5929","usage.requests":"\u8BF7\u6C42\u6B21\u6570","usage.successRate":"\u6210\u529F\u7387","usage.consumption":"AI \u989D\u5EA6\u6D88\u8017","usage.ofToday":"\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650","usage.unlimitedNote":"\u4F60\u7684 AI \u989D\u5EA6\u4E0D\u9650\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.noLimitNote":"\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u4E3A 0 \u6216\u6682\u65F6\u62FF\u4E0D\u5230\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.byModel.title":"\u6309\u6A21\u578B","usage.byModel.desc":"\u5404\u6A21\u578B\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.byApp.title":"\u6309\u5E94\u7528","usage.byApp.desc":"\u5404\u5E94\u7528\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.col.model":"\u6A21\u578B","usage.col.app":"\u5E94\u7528","usage.col.requests":"\u8BF7\u6C42","usage.col.consumption":"\u989D\u5EA6\u6D88\u8017","usage.empty":"\u8FD9\u6BB5\u65F6\u95F4\u6CA1\u6709\u7528\u91CF","usage.appUnknown":"\u5176\u4ED6","usage.recent.title":"\u6700\u8FD1\u6D88\u8017","usage.recent.desc":"\u6BCF\u6B21\u8C03\u7528\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B","usage.recentEmpty":"\u8FD8\u6CA1\u6709\u6D88\u8017\u8BB0\u5F55","usage.failed":"\u5931\u8D25","usage.shown":"\u5DF2\u663E\u793A {shown} / {total} \u6761","fb.list.title":"\u6211\u7684\u53CD\u9988","fb.list.desc":"\u63D0\u4EA4\u8FC7\u7684\u95EE\u9898\u548C\u5EFA\u8BAE\uFF0C\u56DE\u590D\u4F1A\u663E\u793A\u5728\u8FD9\u91CC","fb.new":"\u65B0\u5EFA\u53CD\u9988","fb.empty":"\u8FD8\u6CA1\u6709\u53CD\u9988","fb.untitled":"\u672A\u547D\u540D\u53CD\u9988","fb.unread":"\u6709\u65B0\u56DE\u590D","fb.shown":"\u5DF2\u663E\u793A {n} \u6761","fb.submitted":"\u5DF2\u63D0\u4EA4\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u56DE\u590D","fb.descLabel":"\u63CF\u8FF0\u95EE\u9898\u6216\u5EFA\u8BAE","fb.descPlaceholder":"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF0C\u4F60\u671F\u671B\u600E\u6837\u2026\u2026","fb.imagesHint":"\u6700\u591A\u9644 {n} \u5F20\u622A\u56FE\uFF08\u6BCF\u5F20\u4E0D\u8D85\u8FC7 5MB\uFF09\uFF0C\u53EF\u4EE5\u7C98\u8D34\u6216\u62D6\u8FDB\u6765\u3002","fb.addImages":"\u6DFB\u52A0\u622A\u56FE","fb.removeImage":"\u79FB\u9664\u8FD9\u5F20\u56FE","fb.submit":"\u63D0\u4EA4","fb.back":"\u8FD4\u56DE\u5217\u8868","fb.you":"\u4F60","fb.support":"Forsion \u56E2\u961F","fb.attachment":"\u9644\u4EF6","fb.imagePreview":"\u67E5\u770B\u5927\u56FE","fb.closedNote":"\u8FD9\u4E2A\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u4E0D\u80FD\u518D\u56DE\u590D\u3002\u6709\u65B0\u95EE\u9898\u8BF7\u65B0\u5EFA\u53CD\u9988\u3002","fb.replyPlaceholder":"\u56DE\u590D\u2026","fb.replySend":"\u53D1\u9001\u56DE\u590D","fb.replySent":"\u56DE\u590D\u5DF2\u53D1\u9001","fb.status.open":"\u5F85\u5904\u7406","fb.status.in_progress":"\u5904\u7406\u4E2D","fb.status.resolved":"\u5DF2\u89E3\u51B3","fb.status.closed":"\u5DF2\u5173\u95ED","err.accountGone":"\u8FD9\u4E2A\u8D26\u53F7\u5DF2\u9000\u51FA\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.adminCannotDelete":"\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500","err.avatarInvalid":"\u8FD9\u5F20\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765\uFF0C\u6362\u4E00\u5F20\u8BD5\u8BD5","err.avatarTooLarge":"\u56FE\u7247\u592A\u5927\u4E86\uFF0C\u6362\u4E00\u5F20\u5C0F\u4E00\u70B9\u7684","err.backgroundUnavailable":"\u540E\u53F0\u989D\u5EA6\u6682\u65F6\u4E0D\u53EF\u7528","err.captcha":"\u9700\u8981\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u4EBA\u673A\u9A8C\u8BC1","err.codeCooldown":"\u53D1\u9001\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.codeInvalid":"\u9A8C\u8BC1\u7801\u4E0D\u5BF9\u6216\u5DF2\u8FC7\u671F","err.codeRequired":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","err.codeSendFailed":"\u9A8C\u8BC1\u7801\u6CA1\u53D1\u51FA\u53BB\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.currentPasswordWrong":"\u5F53\u524D\u5BC6\u7801\u4E0D\u5BF9","err.deleteTargetInvalid":"\u9A8C\u8BC1\u7801\u53EA\u80FD\u53D1\u5230\u8D26\u53F7\u7ED1\u5B9A\u7684\u624B\u673A\u6216\u90AE\u7BB1","err.deleteVerifyFailed":"\u9A8C\u8BC1\u6CA1\u901A\u8FC7\uFF0C\u8D26\u53F7\u6CA1\u6709\u6CE8\u9500","err.emailInUse":"\u8FD9\u4E2A\u90AE\u7BB1\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.emailInvalid":"\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.featureDisabled":"\u8FD9\u9879\u529F\u80FD\u6682\u65F6\u5173\u95ED\u4E86","err.feedbackEmpty":"\u8BF7\u5199\u4E00\u4E0B\u95EE\u9898\u6216\u5EFA\u8BAE","err.feedbackTooLong":"\u63CF\u8FF0\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.generic":"\u64CD\u4F5C\u6CA1\u6709\u6210\u529F\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.imageRead":"\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765","err.imageTooLarge":"\u6BCF\u5F20\u56FE\u7247\u4E0D\u80FD\u8D85\u8FC7 5MB","err.imageType":"\u53EA\u80FD\u6DFB\u52A0\u56FE\u7247","err.insufficientMainQuota":"AI \u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6","err.insufficientPoints":"\u79EF\u5206\u4E0D\u591F","err.priceChanged":"\u91CD\u7F6E\u5361\u5355\u4EF7\u521A\u521A\u8C03\u6574\u8FC7\uFF0C\u8BF7\u770B\u4E00\u4E0B\u65B0\u4EF7\u683C\uFF0C\u518D\u786E\u8BA4\u5151\u6362\u3002","err.invalidCount":"\u5F20\u6570\u8981\u5728 1\u201350 \u4E4B\u95F4","err.invalidInviteCode":"\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548","err.inviteAlreadyUsed":"\u4F60\u5DF2\u7ECF\u7528\u8FC7\u9080\u8BF7\u7801\u4E86","err.inviteEmpty":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","err.inviteOwnCode":"\u4E0D\u80FD\u586B\u81EA\u5DF1\u7684\u9080\u8BF7\u7801","err.inviteWindowExpired":"\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F","err.loginCodeExpired":"\u767B\u5F55\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.loginInProgress":"\u6B63\u5728\u767B\u5F55\u4E2D","err.loginTimeout":"\u767B\u5F55\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5","err.loginUnsupported":"\u8FD9\u4E2A\u4E91\u7AEF\u4E0D\u652F\u6301\u684C\u9762\u7AEF\u767B\u5F55","err.network":"\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u540E\u91CD\u8BD5","err.noCloudUrl":"\u8BF7\u5148\u5728\u300C\u8FDE\u63A5\u300D\u91CC\u586B\u5199\u4E91\u7AEF\u5730\u5740","err.noResetCard":"\u6CA1\u6709\u53EF\u7528\u7684\u989D\u5EA6\u91CD\u7F6E\u5361","err.openFailed":"\u6CA1\u80FD\u6253\u5F00\u6D4F\u89C8\u5668","err.passwordRequired":"\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801\u548C\u65B0\u5BC6\u7801","err.phoneInUse":"\u8FD9\u4E2A\u624B\u673A\u53F7\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.phoneInvalid":"\u624B\u673A\u53F7\u683C\u5F0F\u4E0D\u5BF9\uFF08\u5176\u4ED6\u5730\u533A\u8BF7\u5E26 +\u533A\u53F7\uFF09","err.redeemEmpty":"\u8BF7\u8F93\u5165\u5151\u6362\u7801","err.redeemExpired":"\u5151\u6362\u7801\u5DF2\u8FC7\u671F","err.redeemInactive":"\u5151\u6362\u7801\u5DF2\u505C\u7528","err.redeemNotFound":"\u5151\u6362\u7801\u4E0D\u5B58\u5728","err.redeemUsedUp":"\u5151\u6362\u7801\u5DF2\u88AB\u7528\u5B8C","err.redeemUserLimit":"\u4F60\u5DF2\u7ECF\u5151\u6362\u8FC7\u8FD9\u4E2A\u7801\u4E86","err.replyEmpty":"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9","err.replyTooLong":"\u56DE\u590D\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.server":"\u670D\u52A1\u5668\u51FA\u9519\u4E86\uFF08{status}\uFF09\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.session":"\u767B\u5F55\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.signedOut":"\u8BF7\u5148\u767B\u5F55 Forsion","err.targetInvalid":"\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.ticketNotFound":"\u8FD9\u6761\u53CD\u9988\u4E0D\u5B58\u5728\u6216\u5DF2\u5220\u9664","err.webPageGone":"\u8FD9\u4E2A\u7F51\u9875\u4E0D\u5B58\u5728\u6216\u5DF2\u4E0B\u7EBF","err.listingGone":"\u8FD9\u4E2A\u7F51\u9875\u6CA1\u6709\u4E0A\u67B6\u7533\u8BF7","err.listingSummary":"\u8BF7\u586B\u5199\u5546\u5E97\u7B80\u4ECB\uFF08300 \u5B57\u4EE5\u5185\uFF09","err.tooFrequent":"\u64CD\u4F5C\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.tooManyImages":"\u6700\u591A\u6DFB\u52A0 5 \u5F20\u56FE\u7247","err.unavailable":"\u8FD9\u4E2A\u7248\u672C\u8FD8\u4E0D\u652F\u6301\u8FD9\u4E2A\u64CD\u4F5C\uFF0C\u8BF7\u66F4\u65B0 Forsion","profile.unsupported":"\u8FD9\u4E2A\u670D\u52A1\u7AEF\u8FD8\u6CA1\u6709\u4E2A\u4EBA\u4E3B\u9875\u529F\u80FD","profile.state.private":"\u4EC5\u81EA\u5DF1\u53EF\u89C1","profile.state.public":"\u5DF2\u516C\u5F00","profile.state.privateDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.state.publicDesc":"\u4EFB\u4F55\u4EBA\u6253\u5F00\u516C\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.decorate":"\u88C5\u9970","profile.publish":"\u516C\u5F00\u4E3B\u9875","profile.makePrivate":"\u8BBE\u4E3A\u79C1\u6709","profile.address":"\u516C\u5F00\u5730\u5740","profile.copyLink":"\u590D\u5236\u94FE\u63A5","profile.openPublic":"\u67E5\u770B\u516C\u5F00\u9875","profile.nowPublic":"\u4E3B\u9875\u5DF2\u516C\u5F00","profile.nowPrivate":"\u4E3B\u9875\u5DF2\u8BBE\u4E3A\u79C1\u6709\uFF0C\u516C\u5F00\u5730\u5740\u4E0D\u518D\u80FD\u6253\u5F00","profile.bio":"\u7B80\u4ECB","profile.bioPlaceholder":"\u5199\u4E00\u53E5\u7B80\u4ECB","profile.linkAdd":"\u6DFB\u52A0\u94FE\u63A5","profile.linkRemove":"\u79FB\u9664\u94FE\u63A5","profile.linkInvalid":"\u94FE\u63A5\u8981\u4EE5 http:// \u6216 https:// \u5F00\u5934\uFF0C\u6216\u76F4\u63A5\u5199\u57DF\u540D","profile.joined":"{date}\u52A0\u5165","profile.stat.tokens":"\u7D2F\u8BA1 Token","profile.stat.activeDays":"\u6D3B\u8DC3\u5929\u6570","profile.stat.longest":"\u6700\u957F\u8FDE\u7EED","profile.stat.current":"\u5F53\u524D\u8FDE\u7EED","profile.stat.installs":"\u4F5C\u54C1\u88AB\u5B89\u88C5","profile.unit.days":"\u5929","profile.works":"\u7CBE\u9009\u4F5C\u54C1","profile.worksPick":"\u9009\u62E9","profile.worksEmpty":"\u8FD8\u6CA1\u6709\u4E0A\u67B6\u7684\u4F5C\u54C1\u3002\u4E0A\u67B6\u5230\u5546\u5E97\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\uFF0C\u53EF\u4EE5\u653E\u5230\u8FD9\u91CC\u3002","profile.worksNone":"\u8FD8\u6CA1\u6709\u53EF\u4EE5\u653E\u4E0A\u4E3B\u9875\u7684\u4F5C\u54C1\u3002\u4F5C\u54C1\u4E0A\u67B6\u5230\u5546\u5E97\u3001\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","profile.worksPicked":"\u5DF2\u9009 {n} / {max} \u4EF6","profile.worksAuto":"\u4E0D\u9009\u7684\u8BDD\uFF0C\u6309\u5B89\u88C5\u91CF\u81EA\u52A8\u53D6\u524D\u51E0\u4EF6","profile.goSubmit":"\u53BB\u6295\u7A3F","profile.workInstalls":"{n} \u6B21\u5B89\u88C5","profile.workVisits":"{n} \u6B21\u8BBF\u95EE","profile.work.skill":"\u6280\u80FD","profile.work.agent":"Agent","profile.work.plugin":"\u63D2\u4EF6","profile.work.space":"Space","profile.work.theme":"\u4E3B\u9898","profile.work.note":"\u7B14\u8BB0\u63D2\u4EF6","profile.work.webapp":"\u7F51\u9875\u5E94\u7528","profile.activity":"\u6D3B\u52A8","profile.activityDays":"\u8FC7\u53BB\u4E00\u5E74\u6709 {n} \u5929\u5728\u7528","profile.less":"\u5C11","profile.more":"\u591A","profile.badges":"\u5FBD\u7AE0","profile.badgesEmpty":"\u8FD8\u6CA1\u6709\u5FBD\u7AE0\u3002\u8FDE\u7EED\u4F7F\u7528\u3001\u4E0A\u67B6\u4F5C\u54C1\u3001\u9080\u8BF7\u670B\u53CB\u90FD\u4F1A\u70B9\u4EAE\u3002","profile.badge.early":"\u65E9\u671F\u7528\u6237","profile.badge.streak":"\u8FDE\u7EED 30 \u5929","profile.badge.author":"\u4F5C\u8005","profile.badge.inviter":"\u9080\u8BF7\u8FBE\u4EBA","profile.badge.event":"\u6D3B\u52A8\u7EAA\u5FF5","profile.badgeSub.early":"{value} \u5E74\u52A0\u5165","profile.badgeSub.streak":"\u6700\u957F\u8FDE\u7EED {value} \u5929","profile.badgeSub.author":"\u4E0A\u67B6\u4E86 {value} \u4EF6\u4F5C\u54C1","profile.badgeSub.inviter":"\u9080\u8BF7\u4E86 {value} \u4F4D\u670B\u53CB","profile.badgeSub.event":"\u53C2\u52A0\u8FC7 Forsion \u7684\u6D3B\u52A8{value}","profile.insights":"\u6D1E\u5BDF","profile.insightsEmpty":"\u7528\u5F97\u8FD8\u4E0D\u591F\u591A\uFF0C\u8FC7\u51E0\u5929\u518D\u6765\u770B\u3002","profile.insightModel":"\u6700\u5E38\u7528\u6A21\u578B","profile.insightHours":"\u6700\u6D3B\u8DC3\u65F6\u6BB5","profile.deco.skin":"\u516C\u5F00\u9875\u7684\u914D\u8272","profile.deco.mode":"\u516C\u5F00\u9875\u7684\u660E\u6697","profile.deco.publicHint":"\u8FD9\u4E24\u9879\u53EA\u7BA1\u8BBF\u5BA2\u5728\u516C\u5F00\u9875\u4E0A\u770B\u5230\u7684\u3002\u5728\u8FD9\u91CC\uFF0C\u4E3B\u9875\u8DDF Forsion \u5F53\u524D\u7684\u4E3B\u9898\u8D70\u3002","profile.deco.cover":"\u5C01\u9762","profile.deco.frame":"\u5934\u50CF\u6846","profile.deco.modules":"\u6A21\u5757","profile.skin.cream":"\u7ECF\u5178","profile.skin.coral":"\u73CA\u745A","profile.skin.teal":"\u67D4\u9752","profile.skin.lavender":"\u85B0\u8863\u8349","profile.mode.auto":"\u8DDF\u968F\u8BBF\u5BA2","profile.mode.light":"\u6D45\u8272","profile.mode.dark":"\u6DF1\u8272","profile.cover.none":"\u65E0","profile.cover.mist":"\u6668\u96FE","profile.cover.contour":"\u7B49\u9AD8\u7EBF","profile.cover.dots":"\u7F51\u70B9","profile.frame.none":"\u65E0","profile.frame.ring":"\u7EC6\u73AF","profile.frame.pro":"\u4F1A\u5458\u73AF","profile.frameProHint":"\u4F1A\u5458\u73AF\u662F\u4ED8\u8D39\u4F1A\u5458\u4E13\u5C5E\u3002","profile.col.show":"\u663E\u793A","profile.col.public":"\u516C\u5F00","profile.moveUp":"\u4E0A\u79FB","profile.moveDown":"\u4E0B\u79FB","profile.modulesHint":"\u300C\u663E\u793A\u300D\u51B3\u5B9A\u4E3B\u9875\u4E0A\u6709\u6CA1\u6709\u8FD9\u4E00\u5757\uFF1B\u300C\u516C\u5F00\u300D\u51B3\u5B9A\u8BBF\u5BA2\u80FD\u4E0D\u80FD\u770B\u5230\uFF0C\u4E3B\u9875\u516C\u5F00\u540E\u624D\u8D77\u4F5C\u7528\u3002","profile.mod.stats":"\u6570\u636E","profile.mod.works":"\u7CBE\u9009\u4F5C\u54C1","profile.mod.activity":"\u6D3B\u52A8","profile.mod.badges":"\u5FBD\u7AE0","profile.mod.insights":"\u6D1E\u5BDF","profile.modDesc.stats":"\u7D2F\u8BA1 Token\u3001\u6D3B\u8DC3\u5929\u6570\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4F5C\u54C1\u5B89\u88C5\u91CF","profile.modDesc.works":"\u4F60\u4E0A\u67B6\u7684\u4F5C\u54C1\uFF0C\u6700\u591A 6 \u4EF6","profile.modDesc.activity":"\u8FC7\u53BB\u4E00\u5E74\u6BCF\u5929\u7528\u6CA1\u7528\u3001\u7528\u5F97\u591A\u4E0D\u591A\uFF08\u53EA\u6709\u6DF1\u6D45\uFF0C\u6CA1\u6709\u5177\u4F53\u6570\u5B57\uFF09","profile.modDesc.badges":"\u52A0\u5165\u5E74\u4EFD\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4E0A\u67B6\u3001\u9080\u8BF7\u3001\u6D3B\u52A8","profile.modDesc.insights":"\u6700\u5E38\u7528\u7684\u6A21\u578B\u3001\u6700\u6D3B\u8DC3\u7684\u65F6\u6BB5","profile.publishDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u8FD9\u4E2A\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55\u3002\u4E0B\u9762\u6BCF\u4E00\u5757\u53EF\u4EE5\u5355\u72EC\u51B3\u5B9A\u7ED9\u4E0D\u7ED9\u8BBF\u5BA2\u770B\u3002","profile.publishNever":"\u5934\u50CF\u3001\u6635\u79F0\u3001\u7528\u6237\u540D\u3001\u7B80\u4ECB\u548C\u94FE\u63A5\u4F1A\u4E00\u8D77\u516C\u5F00\u3002\u90AE\u7BB1\u3001\u624B\u673A\u53F7\u3001\u4F1A\u5458\u5230\u671F\u65E5\u3001\u79EF\u5206\u548C\u989D\u5EA6\u4E0D\u4F1A\u51FA\u73B0\u5728\u4E3B\u9875\u4E0A\u3002","profile.publishConfirm":"\u516C\u5F00","profile.blocked.machineUsername":"\u4F60\u73B0\u5728\u7684\u7528\u6237\u540D\u662F\u7CFB\u7EDF\u751F\u6210\u7684\uFF0C\u91CC\u9762\u5E26\u7740\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u7684\u4E00\u90E8\u5206\uFF0C\u516C\u5F00\u4F1A\u628A\u5B83\u9732\u51FA\u53BB\u3002\u5148\u5230\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u300C\u8D26\u53F7\u300D\u9875\u6539\u4E00\u4E2A\u7528\u6237\u540D\uFF08\u6BCF\u4E2A\u8D26\u53F7\u53EF\u4EE5\u6539\u4E00\u6B21\uFF09\uFF0C\u518D\u56DE\u6765\u516C\u5F00\u3002","profile.blocked.publishBlocked":"\u8FD9\u4E2A\u4E3B\u9875\u5DF2\u88AB\u7BA1\u7406\u5458\u505C\u6B62\u516C\u5F00\u3002\u6709\u7591\u95EE\u8BF7\u901A\u8FC7\u300C\u53CD\u9988\u300D\u8054\u7CFB\u6211\u4EEC\u3002","profile.goRename":"\u53BB\u6539\u7528\u6237\u540D","profile.invalid":"\u8FD9\u9879\u5185\u5BB9\u6CA1\u80FD\u4FDD\u5B58\uFF0C\u8BF7\u68C0\u67E5\u540E\u518D\u8BD5","guide.title":"\u4F7F\u7528\u6307\u5357","guide.readOnly":"\u53EA\u8BFB","guide.more":"\u66F4\u591A","guide.unlockAll":"\u5168\u90E8\u89E3\u9501","guide.relock":"\u6539\u56DE\u6309\u7B49\u7EA7\u89E3\u9501","guide.reminders":"\u4F7F\u7528\u6307\u5357\u63D0\u9192","guide.spotlight":"\u73B0\u573A\u6307\u5F15","guide.spotStep":"\u7B2C {n} \u6B65\uFF0C\u5171 {total} \u6B65","guide.figure":"\u793A\u610F\u56FE","guide.openAchievements":"\u6253\u5F00\u6210\u5C31","guide.tasks":"\u672C\u7AE0\u4EFB\u52A1","guide.go":"\u5E26\u6211\u53BB","guide.desktopOnly":"\u5728\u7535\u8111\u4E0A\u505A","guide.taskDone":"\u5DF2\u5B8C\u6210","guide.askTangu":"\u95EE Tangu","guide.progress":"\u8FDB\u5EA6","guide.justUnlocked":"\u521A\u89E3\u9501","guide.lockedHint":"\u672A\u89E3\u9501","guide.whatsNew":"\u65B0\u7248\u672C \xB7 {version}","guide.level.lv1":"Lv.1 \u521D\u6765\u4E4D\u5230","guide.level.lv2":"Lv.2 \u719F\u95E8\u719F\u8DEF","guide.level.lv3":"Lv.3 \u5F97\u5FC3\u5E94\u624B","guide.level.lv4":"Lv.4 \u878D\u4F1A\u8D2F\u901A","guide.locked.title":"\u8FD9\u4E00\u7AE0\u8FD8\u6CA1\u89E3\u9501","guide.locked.body":"\u505A\u5B8C\u300C{level}\u300D\u7684\u4EFB\u52A1\u5C31\u80FD\u8BFB\u5168\u6587\u3002","guide.locked.left":"\u8FD8\u5DEE\u8FD9\u51E0\u9879\uFF1A","guide.locked.hint":"\u7528\u8FC7\u4E00\u9635\u4E86\uFF1F\u53F3\u4E0A\u89D2\u300C\xB7\xB7\xB7\u300D\u91CC\u53EF\u4EE5\u5168\u90E8\u89E3\u9501\u3002","guide.levelProgress":"\u672C\u7EA7\u8FDB\u5EA6 {done}/{total}","guide.next":"\u4E0B\u4E00\u7EA7","guide.allDone":"\u5168\u90E8\u5B8C\u6210","guide.allDoneBody":"\u6307\u5357\u91CC\u7684\u4EFB\u52A1\u90FD\u505A\u5B8C\u4E86\uFF0C\u968F\u65F6\u56DE\u6765\u7FFB\u770B\u3002","guide.review":"\u56DE\u770B","guide.ask.hint":"\u5BF9\u300C{chapter}\u300D\u6709\u7591\u95EE\uFF1F\u95EE Tangu \u4F1A\u5F00\u4E00\u4E2A\u5E26\u4E0A\u672C\u7AE0\u5185\u5BB9\u7684\u65B0\u5BF9\u8BDD\u3002","guide.ask.placeholder":"\u60F3\u95EE\u4EC0\u4E48\uFF1F","guide.ask.send":"\u5F00\u59CB\u5BF9\u8BDD","guide.ask.prompt":"\u6211\u6B63\u5728\u8BFB Forsion \u4F7F\u7528\u6307\u5357\u91CC\u300C{chapter}\u300D\u8FD9\u4E00\u7AE0\uFF0C\u5185\u5BB9\u9644\u5728\u4E0B\u9762\u3002{question}","guide.ask.unavailable":"\u8FD9\u91CC\u5F00\u4E0D\u4E86\u5BF9\u8BDD","guide.ask.chatTitle":"\u4F7F\u7528\u6307\u5357\u95EE\u7B54","guide.companion.back":"\u56DE\u5230\u6307\u5357","guide.companion.close":"\u6536\u8D77","guide.toast.taskDone":"\u5B8C\u6210\uFF1A{task}","guide.letter.levelTitle":"{level} \u5DF2\u89E3\u9501\uFF1A\u63A5\u4E0B\u6765\u8BD5\u8BD5\u8FD9\u51E0\u4EF6\u4E8B","guide.letter.levelBody":"\u4E0A\u4E00\u7EA7\u7684\u4EFB\u52A1\u90FD\u505A\u5B8C\u4E86\uFF0C\u4E0B\u9762\u8FD9\u51E0\u7AE0\u73B0\u5728\u53EF\u4EE5\u8BFB\u4E86\u3002\u6BCF\u9879\u4EFB\u52A1\u90FD\u80FD\u300C\u5E26\u6211\u53BB\u300D\u3002","guide.letter.versionTitle":"{version} \u6709 {n} \u4EF6\u65B0\u4E1C\u897F\u53EF\u4EE5\u4F53\u9A8C","guide.letter.versionBody":"\u8FD9\u4E2A\u7248\u672C\u65B0\u52A0\u7684\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4E0A\u624B\uFF1A","guide.letter.open":"\u6253\u5F00\u6307\u5357","guide.status.done":"\u5DF2\u5B8C\u6210","guide.cmd.open":"\u6253\u5F00\u4F7F\u7528\u6307\u5357","penzor.title":"\u84EC\u6D32\u4E91","penzor.overview":"\u6982\u89C8","penzor.places":"\u4F4D\u7F6E","penzor.details":"\u8BE6\u60C5","penzor.ledger.sync":"\u667A\u5E93\u540C\u6B65","penzor.ledger.ama":"Amadeus Cloud","penzor.ledger.apps":"\u5E94\u7528\u6587\u4EF6","penzor.ledger.exports":"\u5BFC\u51FA","penzor.trash":"\u56DE\u6536\u7AD9","penzor.items":"{n} \u9879","penzor.total.sub":"\u5B58\u5728 Forsion \u4E91\u7AEF \xB7 {time}\u66F4\u65B0","penzor.justNow":"\u521A\u521A","penzor.ofMax":"/ {max}","penzor.card.syncSub":"{n} \u4E2A\u5E93 \xB7 \u4E0A\u6B21\u5199\u5165 {time}","penzor.card.syncSubNone":"{n} \u4E2A\u5E93","penzor.card.syncFoot":"\u5355\u4E2A\u6587\u4EF6\u8D85\u8FC7 {size} \u4E0D\u4E0A\u4F20","penzor.card.syncWarn":"\u5FEB\u6EE1\u4E86\uFF1A\u6EE1 {max} \u540E\u65B0\u6587\u4EF6\u4E0D\u518D\u4E0A\u4F20\uFF0C\u5DF2\u5728\u4E91\u7AEF\u7684\u7167\u5E38\u540C\u6B65","penzor.card.amaSmall":"\u4E0D\u7B97\u5728\u989D\u5EA6\u91CC","penzor.card.amaSub":"{n} \u4E2A\u4E91\u7AEF\u667A\u5E93","penzor.card.amaFoot":"\u7B14\u8BB0\u548C\u9644\u4EF6\u5728 Amadeus \u7684 Cloud \u4FA7","penzor.card.appsFoot":"\u56DE\u6536\u7AD9 {n} \u9879 \xB7 {size}","penzor.card.appsWarn":"\u5FEB\u6EE1\u4E86\uFF1A\u6EE1 {max} \u540E\u5E94\u7528\u4E0D\u80FD\u518D\u5B58\u65B0\u6587\u4EF6\uFF1B\u56DE\u6536\u7AD9\u91CC\u7684\u4E5F\u7B97\uFF0C\u6E05\u7A7A\u80FD\u817E\u51FA\u7A7A\u95F4","penzor.card.expSmall":"{n} \u4E2A\u6587\u4EF6","penzor.card.expSub":"\u6700\u8FD1\uFF1A{name} \xB7 {time}","penzor.card.expFoot":"\u5404\u5E94\u7528\u5BFC\u51FA\u7684\u6587\u4EF6","penzor.card.none":"\u8FD8\u6CA1\u6709\u4E1C\u897F","penzor.largest":"\u5360\u7528\u6700\u591A","penzor.col.name":"\u540D\u79F0","penzor.col.size":"\u5927\u5C0F","penzor.col.mtime":"\u4FEE\u6539\u65F6\u95F4","penzor.col.device":"\u5199\u5165\u8BBE\u5907","penzor.col.deleted":"\u5220\u9664\u4E8E","penzor.col.origin":"\u539F\u4F4D\u7F6E","penzor.col.app":"\u6765\u6E90","penzor.sort.mtime":"\u6309\u4FEE\u6539\u65F6\u95F4","penzor.sort.size":"\u6309\u5927\u5C0F","penzor.sort.name":"\u6309\u540D\u79F0","penzor.search":"\u641C\u7D22\u8FD9\u91CC\u7684\u6587\u4EF6\u540D","penzor.sync.thisDevice":"\u672C\u673A\u5728\u540C\u6B65","penzor.meta.files":"{size} \xB7 {n} \u4E2A\u6587\u4EF6","penzor.sync.last":"\u4E0A\u6B21\u5199\u5165 {time} \xB7 {device}","penzor.sync.lastNoDevice":"\u4E0A\u6B21\u5199\u5165 {time}","penzor.sync.devices":"{n} \u53F0\u8BBE\u5907\u540C\u6B65\u8FD9\u4E2A\u5E93","penzor.sync.meter":"\u667A\u5E93\u540C\u6B65\u5171\u7528 {max}\uFF0C\u5DF2\u7528 {used}","penzor.apps.meter":"\u5E94\u7528\u6587\u4EF6\u5171\u7528 {max}\uFF0C\u5DF2\u7528 {used}\uFF08\u56DE\u6536\u7AD9\u91CC\u7684\u4E5F\u7B97\uFF09","penzor.apps.by":"\u7531 {app} \u5199\u5165","penzor.ama.notCounted":"\u4E0D\u7B97\u5728\u989D\u5EA6\u91CC","penzor.ama.open":"\u5728 Amadeus \u4E2D\u6253\u5F00","penzor.trash.meta":"{n} \u9879 \xB7 {size}","penzor.trash.note":"\u6C38\u4E45\u5220\u9664\u540E\u624D\u817E\u51FA\u7A7A\u95F4","penzor.trash.emptyBtn":"\u6E05\u7A7A\u56DE\u6536\u7AD9","penzor.act.download":"\u4E0B\u8F7D","penzor.act.rename":"\u91CD\u547D\u540D","penzor.act.move":"\u79FB\u52A8\u5230\u2026","penzor.act.trash":"\u79FB\u5230\u56DE\u6536\u7AD9","penzor.act.delete":"\u5220\u9664","penzor.act.restore":"\u6062\u590D","penzor.act.purge":"\u6C38\u4E45\u5220\u9664","penzor.act.copyName":"\u590D\u5236\u5E93\u540D","penzor.act.openSync":"\u5728\u8BBE\u7F6E\u4E2D\u6253\u5F00\u540C\u6B65","penzor.act.refresh":"\u5237\u65B0","penzor.act.up":"\u4E0A\u4E00\u7EA7","penzor.toast.trashed":"\u5DF2\u628A\u300C{name}\u300D\u79FB\u5230\u56DE\u6536\u7AD9","penzor.toast.restored":"\u5DF2\u6062\u590D\u300C{name}\u300D","penzor.toast.purged":"\u5DF2\u6C38\u4E45\u5220\u9664\u300C{name}\u300D","penzor.toast.emptied":"\u5DF2\u6E05\u7A7A\u56DE\u6536\u7AD9","penzor.toast.downloaded":"\u5DF2\u5B58\u5230\u300C\u4E0B\u8F7D\u300D\uFF1A{name}","penzor.toast.renamed":"\u5DF2\u6539\u540D\u4E3A\u300C{name}\u300D","penzor.toast.moved":"\u5DF2\u79FB\u5230\u300C{name}\u300D","penzor.toast.versionRestored":"\u5DF2\u6062\u590D\u5230\u7B2C {n} \u7248","penzor.toast.copied":"\u5DF2\u590D\u5236\u5E93\u540D","penzor.toast.failed":"\u6CA1\u6210\u529F\uFF1A{reason}","penzor.confirm.purge":"\u6C38\u4E45\u5220\u9664\u300C{name}\u300D\uFF1F\u5220\u4E86\u5C31\u627E\u4E0D\u56DE\u6765\u4E86\u3002","penzor.confirm.empty":"\u6E05\u7A7A\u56DE\u6536\u7AD9\uFF1F{n} \u9879\u4F1A\u88AB\u6C38\u4E45\u5220\u9664\uFF0C\u627E\u4E0D\u56DE\u6765\u3002","penzor.confirm.deleteExport":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5BFC\u51FA\u7684\u6587\u4EF6\u6CA1\u6709\u56DE\u6536\u7AD9\uFF0C\u5220\u4E86\u5C31\u627E\u4E0D\u56DE\u6765\u4E86\u3002","penzor.cancel":"\u53D6\u6D88","penzor.side.where":"\u4F4D\u7F6E","penzor.side.mtime":"\u4FEE\u6539","penzor.side.device":"\u5199\u5165\u8BBE\u5907","penzor.side.thisDevice":"{name}\uFF08\u672C\u673A\uFF09","penzor.side.from":"\u6765\u6E90","penzor.side.versions":"\u5386\u53F2\u7248\u672C","penzor.side.versionsNone":"\u6CA1\u6709","penzor.side.versionRow":"\u7B2C {n} \u7248 \xB7 {time} \xB7 {size}","penzor.side.restoreVersion":"\u6062\u590D\u8FD9\u4E00\u7248","penzor.side.deletedAt":"\u5220\u9664\u4E8E","penzor.side.origin":"\u539F\u4F4D\u7F6E","penzor.side.inner":"\u91CC\u9762\u8FD8\u6709 {n} \u9879\uFF0C\u6062\u590D\u65F6\u4E00\u8D77\u56DE\u6765","penzor.side.inTrash":"\u5728\u56DE\u6536\u7AD9 \xB7 {size}","penzor.side.readonlySync":"\u540C\u6B65\u5E93\u91CC\u7684\u6587\u4EF6\u53EA\u5728\u8BBE\u5907\u4E0A\u5220\u6539\u3002\u5728\u8FD9\u91CC\u5220\u6389\u4E00\u4E2A\u6587\u4EF6\uFF0C\u6BCF\u53F0\u540C\u6B65 {vault} \u7684\u8BBE\u5907\u4E0B\u6B21\u540C\u6B65\u65F6\u90FD\u4F1A\u8DDF\u7740\u5220\u6389\uFF0C\u6240\u4EE5\u8FD9\u91CC\u53EA\u80FD\u770B\u548C\u4E0B\u8F7D\u3002","penzor.side.readonlyAma":"\u7B14\u8BB0\u548C\u9644\u4EF6\u5728 Amadeus \u91CC\u6539\u3002\u5728\u8FD9\u91CC\u5220\u6389\u4E00\u4E2A\u9644\u4EF6\uFF0C\u5F15\u7528\u5B83\u7684\u7B14\u8BB0\u4F1A\u7F3A\u56FE\uFF0C\u6240\u4EE5\u8FD9\u91CC\u53EA\u80FD\u770B\u548C\u4E0B\u8F7D\u3002","penzor.side.exportNote":"\u5BFC\u51FA\u7684\u6587\u4EF6\u6CA1\u6709\u56DE\u6536\u7AD9\uFF1A\u5220\u9664\u5C31\u662F\u6C38\u4E45\u5220\u9664\u3002","penzor.side.none":"\u9009\u4E00\u4E2A\u6587\u4EF6\u770B\u8BE6\u60C5","penzor.side.folder":"\u6587\u4EF6\u5939 \xB7 {n} \u9879","penzor.side.folderPlain":"\u6587\u4EF6\u5939","penzor.move.title":"\u79FB\u5230\u54EA\u91CC","penzor.move.root":"{app} \u6700\u4E0A\u5C42","penzor.move.here":"\u79FB\u5230\u8FD9\u91CC","penzor.move.noFolders":"\u8FD9\u4E00\u5C42\u6CA1\u6709\u6587\u4EF6\u5939","penzor.rename.save":"\u4FDD\u5B58","penzor.empty.title":"\u84EC\u6D32\u4E91\u91CC\u8FD8\u6CA1\u6709\u4E1C\u897F","penzor.empty.lead":"\u8FD9\u4E9B\u4E1C\u897F\u5B58\u8FDB\u4E91\u7AEF\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\uFF1A","penzor.empty.sync":"\u5728\u300C\u8BBE\u7F6E \u203A \u540C\u6B65\u300D\u91CC\u628A\u8FDC\u7A0B\u670D\u52A1\u9009\u6210\u300C\u84EC\u6D32\u4E91\u300D\uFF0C\u672C\u5730\u667A\u5E93\u5C31\u540C\u6B65\u5230\u8FD9\u91CC","penzor.empty.ama":"Amadeus \u5207\u5230 Cloud \u4FA7\u5199\u7684\u7B14\u8BB0","penzor.empty.apps":"\u5404\u5E94\u7528\u5B58\u5230\u4E91\u7AEF\u6216\u5BFC\u51FA\u7684\u6587\u4EF6","penzor.empty.openSync":"\u6253\u5F00\u540C\u6B65\u8BBE\u7F6E","penzor.out.title":"\u767B\u5F55\u540E\u67E5\u770B\u4F60\u7684\u84EC\u6D32\u4E91","penzor.out.lead":"\u84EC\u6D32\u4E91\u653E\u7740\u4F60\u540C\u6B65\u5230 Forsion \u4E91\u7AEF\u7684\u5E93\u3001Amadeus Cloud \u7684\u7B14\u8BB0\uFF0C\u548C\u5404\u5E94\u7528\u5B58\u5728\u4E91\u7AEF\u7684\u6587\u4EF6\u3002","penzor.out.signIn":"\u767B\u5F55 Forsion \u8D26\u53F7","penzor.loading":"\u6B63\u5728\u8BFB\u53D6\u2026","penzor.err":"\u6CA1\u8BFB\u5230\uFF1A{reason}","penzor.folderEmpty":"\u8FD9\u91CC\u6CA1\u6709\u6587\u4EF6","penzor.noMatch":"\u6CA1\u6709\u540D\u5B57\u91CC\u5E26\u300C{q}\u300D\u7684\u6587\u4EF6","penzor.cmd.open":"\u6253\u5F00\u84EC\u6D32\u4E91","penzor.unreachable":"\u8FDE\u4E0D\u4E0A Forsion \u4E91\u7AEF\uFF0C\u7A0D\u540E\u518D\u8BD5","penzor.toast.emptyPartial":"\u56DE\u6536\u7AD9\u91CC\u8FD8\u6709 {n} \u9879\u6CA1\u5220\u6389","penzor.sort.deleted":"\u6309\u5220\u9664\u65F6\u95F4","penzor.side.versionsN":"{n} \u4E2A","penzor.drive":"\u6211\u7684\u4E91\u76D8","penzor.drive.meta":"\u7B97\u5728\u5E94\u7528\u6587\u4EF6\u7684 {max} \u91CC","penzor.drive.empty":"\u8FD9\u91CC\u8FD8\u7A7A\u7740\u3002\u628A\u6587\u4EF6\u62D6\u8FDB\u6765\uFF0C\u6216\u8005\u70B9\u300C\u4E0A\u4F20\u300D\u3002","penzor.act.upload":"\u4E0A\u4F20","penzor.act.uploadMore":"\u66F4\u591A\u4E0A\u4F20\u65B9\u5F0F","penzor.act.uploadFiles":"\u4E0A\u4F20\u6587\u4EF6\u2026","penzor.act.uploadFolder":"\u4E0A\u4F20\u6587\u4EF6\u5939\u2026","penzor.act.uploadHere":"\u4E0A\u4F20\u5230\u8FD9\u91CC\u2026","penzor.act.newFolder":"\u65B0\u5EFA\u6587\u4EF6\u5939","penzor.act.clearSel":"\u53D6\u6D88\u9009\u62E9","penzor.newFolder.default":"\u65B0\u5EFA\u6587\u4EF6\u5939","penzor.sel.bar":"\u5DF2\u9009 {n} \u9879 \xB7 {size}","penzor.sel.title":"\u5DF2\u9009 {n} \u9879","penzor.sel.sub":"{size} \xB7 {files} \u4E2A\u6587\u4EF6","penzor.sel.subDirs":"{size} \xB7 {files} \u4E2A\u6587\u4EF6\u3001{dirs} \u4E2A\u6587\u4EF6\u5939","penzor.sel.download":"\u4E0B\u8F7D {n} \u9879","penzor.sel.saveTo":"\u4E0B\u8F7D\u5230","penzor.sel.saveToValue":"\u4E0B\u8F7D / {folder}","penzor.sel.noDirs":"\u6587\u4EF6\u5939\u8FD9\u4E00\u7248\u8FD8\u4E0D\u80FD\u4E0B\u8F7D\uFF0C\u53EA\u4E0B\u8F7D\u9009\u4E2D\u7684\u6587\u4EF6\u3002","penzor.download.folder":"\u84EC\u6D32\u4E91 {date}","penzor.drop.to":"\u677E\u624B\u4E0A\u4F20\u5230\u300C{place}\u300D","penzor.tx.busy":"\u6B63\u5728\u4F20\u8F93 {n} \u9879","penzor.tx.allDone":"\u5168\u90E8\u4F20\u5B8C","penzor.tx.failedN":"{n} \u9879\u6CA1\u4F20\u5B8C","penzor.tx.counts":"\u4E0A\u4F20 {up} \xB7 \u4E0B\u8F7D {down}","penzor.tx.eta":"\u5269\u7EA6 {eta}","penzor.tx.doneN":"{n} \u9879\u5DF2\u4F20\u5B8C","penzor.tx.restDone":"\u5176\u4F59 {n} \u9879\u5DF2\u4F20\u5B8C","penzor.tx.pill":"{counts} \xB7 {pct}%","penzor.tx.queued":"\u6392\u961F\u4E2D","penzor.tx.paused":"\u5DF2\u6682\u505C \xB7 \u7EE7\u7EED\u4F1A\u4ECE\u5934\u4F20","penzor.tx.uploaded":"\u5DF2\u4E0A\u4F20 \xB7 {time}","penzor.tx.downloaded":"\u5DF2\u4E0B\u8F7D \xB7 {time}","penzor.tx.canceled":"\u5DF2\u53D6\u6D88","penzor.tx.left":"\u5269 {eta}","penzor.tx.sec":"{n} \u79D2","penzor.tx.min":"{n} \u5206\u949F","penzor.tx.pause":"\u6682\u505C","penzor.tx.resume":"\u7EE7\u7EED","penzor.tx.cancel":"\u53D6\u6D88","penzor.tx.retry":"\u91CD\u8BD5","penzor.tx.remove":"\u79FB\u9664","penzor.tx.locate":"\u5B9A\u4F4D","penzor.tx.reveal":"\u5728\u6587\u4EF6\u5939\u4E2D\u663E\u793A","penzor.tx.pauseAll":"\u5168\u90E8\u6682\u505C","penzor.tx.resumeAll":"\u5168\u90E8\u7EE7\u7EED","penzor.tx.retryAll":"\u5168\u90E8\u91CD\u8BD5","penzor.tx.clearDone":"\u6E05\u9664\u5DF2\u5B8C\u6210","penzor.tx.clear":"\u6E05\u9664","penzor.tx.collapse":"\u6536\u8D77","penzor.tx.expand":"\u5C55\u5F00\u4F20\u8F93\u5217\u8868","penzor.tx.quota":"\u7A7A\u95F4\u4E0D\u591F\uFF0C\u8FD8\u5DEE {size}","penzor.tx.quotaSub":"\u8FD9\u4E00\u6279\u4E00\u4E2A\u90FD\u6CA1\u5F00\u59CB\u4F20","penzor.tx.freeSpace":"\u53BB\u56DE\u6536\u7AD9\u817E\u5730\u65B9","penzor.err.too_large":"\u5355\u4E2A\u6587\u4EF6\u8D85\u8FC7 50 MB\uFF08\u8FD9\u4E2A {size}\uFF09\uFF0C\u8FD9\u4E00\u7248\u4F20\u4E0D\u4E86","penzor.err.quota":"\u4E91\u7AEF\u7A7A\u95F4\u4E0D\u591F","penzor.err.network":"\u7F51\u7EDC\u65AD\u4E86\uFF0C\u4F20\u5230 {pct}% \u505C\u4E0B","penzor.err.account_changed":"\u6362\u4E86\u8D26\u53F7\uFF0C\u8FD9\u4E00\u9879\u6CA1\u6709\u63A5\u7740\u4F20","penzor.err.download_unavailable":"\u6B64\u5BBF\u4E3B\u6682\u4E0D\u652F\u6301\u4FDD\u5B58\u4E0B\u8F7D\uFF0C\u8BF7\u66F4\u65B0 Forsion","penzor.err.download_failed":"\u6587\u4EF6\u672A\u4FDD\u5B58\uFF0C\u8BF7\u91CD\u8BD5\u4E0B\u8F7D","penzor.err.not_signed_in":"\u6CA1\u767B\u5F55","penzor.err.gone":"\u672C\u673A\u4E0A\u627E\u4E0D\u5230\u8FD9\u4E2A\u6587\u4EF6\u4E86","penzor.err.popup_blocked":"\u6D4F\u89C8\u5668\u62E6\u4E0B\u4E86\u65B0\u6807\u7B7E\u9875\uFF0C\u5141\u8BB8\u672C\u7AD9\u5F39\u51FA\u7A97\u53E3\u540E\u518D\u8BD5\u4E00\u6B21","penzor.err.changed":"\u4F20\u7684\u65F6\u5019\u6587\u4EF6\u6539\u52A8\u4E86\uFF0C\u91CD\u8BD5\u4E00\u6B21","penzor.err.storage_unavailable":"\u4E91\u7AEF\u5B58\u50A8\u6682\u65F6\u4E0D\u53EF\u7528","penzor.err.other":"\u6CA1\u4F20\u5B8C\uFF08{code}\uFF09","penzor.err.too_many":"\u4E00\u6B21\u6700\u591A {n} \u4E2A\u6587\u4EF6\uFF0C\u5206\u51E0\u6B21\u62D6\u8FDB\u6765","penzor.toast.upDoneOne":"\u5DF2\u4E0A\u4F20\u300C{name}\u300D","penzor.toast.upDoneMany":"\u5DF2\u4E0A\u4F20 {n} \u4E2A\u6587\u4EF6","penzor.toast.downDoneMany":"\u5DF2\u4E0B\u8F7D {n} \u4E2A\u6587\u4EF6\u5230\u300C\u4E0B\u8F7D\u300D","penzor.toast.txFailed":"{n} \u9879\u6CA1\u4F20\u5B8C\uFF0C\u56DE\u84EC\u6D32\u4E91\u770B\u770B","penzor.toast.folderExists":"\u5DF2\u7ECF\u6709\u53EB\u300C{name}\u300D\u7684\u6587\u4EF6\u5939\u4E86","penzor.toast.trashedN":"\u5DF2\u628A {n} \u9879\u79FB\u5230\u56DE\u6536\u7AD9","penzor.toast.movedN":"\u5DF2\u628A {n} \u9879\u79FB\u5230\u300C{name}\u300D","penzor.toast.batchPartial":"\u6709 {n} \u9879\u6CA1\u6210\u529F","penzor.sync.title":"\u540C\u6B65","penzor.sync.onN":"{n} \u9879\u5DF2\u5F00","penzor.sync.allOff":"\u90FD\u6CA1\u5F00","penzor.sync.waiting":"\u7B49\u4F60\u51B3\u5B9A","penzor.sync.badgeWaiting":"{n} \u9879\u5DF2\u5F00 \xB7 1 \u9879\u7B49\u4F60\u51B3\u5B9A","penzor.sync.running":"\u540C\u6B65\u4E2D {pct}%","penzor.sync.runningPlain":"\u540C\u6B65\u4E2D","penzor.sync.metaDevice":"\u8FD9\u53F0 {name}","penzor.sync.metaLast":"\u4E0A\u6B21\u540C\u6B65 {time}","penzor.sync.metaNever":"\u8FD8\u6CA1\u540C\u6B65\u8FC7","penzor.sync.every":"\u6BCF {n} \u5206\u949F","penzor.sync.everyHours":"\u6BCF {n} \u5C0F\u65F6","penzor.sync.manual":"\u624B\u52A8","penzor.sync.onStart":"\u5F00\u673A\u65F6\u4E00\u6B21","penzor.sync.minAgo":"{n} \u5206\u949F\u524D","penzor.sync.hoursAgo":"{n} \u5C0F\u65F6\u524D","penzor.sync.notesNamed":"\u667A\u5E93\u300C{name}\u300D","penzor.sync.notesPlain":"\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93","penzor.sync.notesDesc":"\u6574\u4E2A\u672C\u673A\u667A\u5E93\uFF0C\u548C\u4F60\u7684\u5176\u4ED6\u7535\u8111\u4FDD\u6301\u4E00\u81F4","penzor.sync.agents":"Agents \u4E0E\u8BB0\u5FC6","penzor.sync.agentsDesc":"Agents \u7684\u8BB0\u5FC6\u3001\u65E5\u5FD7\u3001\u6280\u80FD\u548C\u534F\u4F5C\u8BF4\u660E\uFF0C\u8FD8\u6709\u4F60\u7684\u8D44\u6599\u548C\u9ED8\u8BA4\u65E5\u5386","penzor.sync.conflictsN":"{n} \u4E2A\u51B2\u7A81\u526F\u672C","penzor.sync.conflictsHint":"\u4E24\u8FB9\u90FD\u6539\u8FC7\u7684\u6587\u4EF6\u4E24\u4EFD\u90FD\u7559\u7740\uFF1A\u53E6\u4E00\u4EFD\u5B58\u6210\u6587\u4EF6\u540D\u5E26\u300Cconflict\u300D\u7684\u526F\u672C\uFF0C\u5728\u5BF9\u5E94 Agent \u7684\u6587\u4EF6\u5939\uFF08\u6216\u4F60\u7684\u8D44\u6599\u6587\u4EF6\u5939\uFF09\u91CC","penzor.sync.pluginsPending":"{n} \u4E2A\u63D2\u4EF6\u7684\u6539\u52A8\u8FD8\u6CA1\u4F20\u4E0A\u53BB","penzor.sync.agentsN":"{n} \u4E2A Agent","penzor.sync.plugins":"\u63D2\u4EF6\u6570\u636E","penzor.sync.pluginsDesc":"\u63D2\u4EF6\u81EA\u5DF1\u5B58\u7684\u8BBE\u7F6E\u548C\u6570\u636E","penzor.sync.pluginsN":"{n} \u4E2A\u63D2\u4EF6","penzor.sync.off":"\u6CA1\u5F00","penzor.sync.done":"\u5DF2\u540C\u6B65","penzor.sync.doneSize":"\u5DF2\u540C\u6B65 \xB7 {size}","penzor.sync.firstPending":"\u7B49\u7B2C\u4E00\u6B21\u540C\u6B65","penzor.sync.failed":"\u4E0A\u6B21\u6CA1\u540C\u6B65\u6210\u529F","penzor.sync.overQuota":"\u8D85\u51FA\u989D\u5EA6\uFF0C\u6709\u7684\u6CA1\u4F20","penzor.sync.to":"\u540C\u6B65\u5230 {name}","penzor.sync.toFolder":"\u540C\u6B65\u5230\u672C\u673A\u6587\u4EF6\u5939","penzor.sync.decideAbove":"\u5728\u4E0A\u9762\u90A3\u5F20\u5361\u91CC\u9009","penzor.sync.kvSchedule":"\u540C\u6B65\u8BA1\u5212","penzor.sync.kvDirection":"\u65B9\u5411","penzor.sync.kvSkipped":"\u6CA1\u4F20\u7684","penzor.sync.kvWhere":"\u4E91\u7AEF\u4F4D\u7F6E","penzor.sync.change":"\u6539","penzor.sync.open":"\u6253\u5F00","penzor.sync.dir.both":"\u53CC\u5411","penzor.sync.dir.push":"\u4EC5\u4E0A\u4F20","penzor.sync.dir.pull":"\u4EC5\u4E0B\u8F7D","penzor.sync.skippedN":"{n} \u4E2A\u8D85\u8FC7 {size} \u7684\u6587\u4EF6","penzor.sync.where":"{ledger} \u203A {vault}","penzor.sync.whereUsed":"{ledger} \u203A {vault} \xB7 {used} / {max}","penzor.sync.devicesTitle":"\u5728\u540C\u6B65\u7684\u8BBE\u5907","penzor.sync.thisOne":"\u8FD9\u53F0","penzor.sync.lastWrite":"\u4E0A\u6B21\u5199\u5165 {time}","penzor.sync.noDevices":"\u8FD8\u6CA1\u6709\u8BBE\u5907\u5728\u540C\u6B65","penzor.sync.phoneTitle":"\u624B\u673A\u548C\u7F51\u9875\u770B\u5230\u7684\u90A3\u4E00\u4EFD","penzor.sync.phoneTip":"\u624B\u673A\u548C\u7F51\u9875\u76F4\u63A5\u8BFB\u300C\u4E91\u7AEF\u667A\u5E93\u300D\uFF08Amadeus \u7684\u4E91\u7AEF\u4FA7\uFF0C{size}\uFF09\uFF0C\u5B83\u4E00\u76F4\u5728\u540C\u6B65\uFF0C\u548C\u4E0A\u9762\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93\u662F\u4E24\u4EFD\u3002\u60F3\u5728\u624B\u673A\u4E0A\u770B\u8FD9\u53F0\u7684\u67D0\u4E2A\u6587\u4EF6\u5939\uFF1A\u5728\u7B14\u8BB0\u91CC\u53F3\u952E\u90A3\u4E2A\u6587\u4EF6\u5939\uFF0C\u628A\u5B83\u540C\u6B65\u5230\u4E91\u7AEF\u667A\u5E93\u3002","penzor.sync.phoneTipPlain":"\u624B\u673A\u548C\u7F51\u9875\u76F4\u63A5\u8BFB\u300C\u4E91\u7AEF\u667A\u5E93\u300D\uFF08Amadeus \u7684\u4E91\u7AEF\u4FA7\uFF09\uFF0C\u5B83\u4E00\u76F4\u5728\u540C\u6B65\uFF0C\u548C\u4E0A\u9762\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93\u662F\u4E24\u4EFD\u3002\u60F3\u5728\u624B\u673A\u4E0A\u770B\u8FD9\u53F0\u7684\u67D0\u4E2A\u6587\u4EF6\u5939\uFF1A\u5728\u7B14\u8BB0\u91CC\u53F3\u952E\u90A3\u4E2A\u6587\u4EF6\u5939\uFF0C\u628A\u5B83\u540C\u6B65\u5230\u4E91\u7AEF\u667A\u5E93\u3002","penzor.sync.foot":"\u540C\u6B65\u8BA1\u5212\u3001\u65B9\u5411\u548C\u5176\u4ED6\u5B58\u50A8\uFF08Dropbox / S3 / WebDAV\uFF09\u5728","penzor.sync.footLink":"\u8BBE\u7F6E \u203A \u540C\u6B65","penzor.sync.askTitle":"\u4E91\u7AEF\u5DF2\u7ECF\u6709\u4E00\u4EFD\u667A\u5E93","penzor.sync.askCloud":"\u4E91\u7AEF\u90A3\u4EFD\u6765\u81EA {device}\uFF1A{files} \u4E2A\u6587\u4EF6 \xB7 {size}\u3002","penzor.sync.askCloudNoDevice":"\u4E91\u7AEF\u90A3\u4EFD\uFF1A{files} \u4E2A\u6587\u4EF6 \xB7 {size}\u3002","penzor.sync.askLocal":"\u8FD9\u53F0\u6709 {local} \u4E2A\u6587\u4EF6\u4E91\u7AEF\u6CA1\u6709\uFF0C{conflicts} \u4E2A\u4E24\u8FB9\u5185\u5BB9\u4E0D\u540C\u3002","penzor.sync.askMerge":"\u5408\u5E76\u4E24\u8FB9","penzor.sync.askCloudBtn":"\u7528\u4E91\u7AEF\u90A3\u4EFD","penzor.sync.askSkip":"\u8FD9\u53F0\u5148\u4E0D\u540C\u6B65\u667A\u5E93","penzor.sync.askExplain":"\u5408\u5E76\uFF1A\u4E24\u8FB9\u90FD\u7559\u7740\uFF0C\u5185\u5BB9\u4E0D\u540C\u7684\u53E6\u5B58\u4E00\u4EFD\u300C\uFF08\u51B2\u7A81\uFF09\u300D\u3002\u7528\u4E91\u7AEF\u90A3\u4EFD\uFF1A\u8FD9\u53F0\u548C\u4E91\u7AEF\u4E0D\u4E00\u6837\u7684\u6587\u4EF6\u5148\u632A\u8FDB\u65C1\u8FB9\u7684\u300C{backup}\u300D\u6587\u4EF6\u5939\uFF0C\u518D\u4E0B\u8F7D\u4E91\u7AEF\u90A3\u4EFD\u3002","penzor.sync.askConfirm":"\u8FD9\u53F0\u548C\u4E91\u7AEF\u4E0D\u4E00\u6837\u7684\u6587\u4EF6\u4F1A\u5148\u632A\u8FDB\u300C{backup}\u300D\uFF0C\u518D\u6362\u6210\u4E91\u7AEF\u90A3\u4EFD\u3002","penzor.sync.askConfirmGo":"\u632A\u8D70\u5E76\u7528\u4E91\u7AEF\u90A3\u4EFD","penzor.sync.backupName":"{name} \u540C\u6B65\u524D\u5907\u4EFD {date}","penzor.sync.quotaTitle":"\u667A\u5E93 {size}\uFF0C\u8D85\u8FC7\u4E86\u300C{ledger}\u300D\u7684 {max} \u4E0A\u9650","penzor.sync.quotaTitlePlain":"\u667A\u5E93\u8D85\u8FC7\u4E86\u300C{ledger}\u300D\u7684\u4E0A\u9650","penzor.sync.quotaBody":"\u653E\u4E0D\u4E0B\u7684\u6587\u4EF6\u7559\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\uFF0C\u6CA1\u6709\u5220\uFF0C\u4E5F\u6CA1\u6709\u4F20\uFF1B\u5176\u4F59\u51E0\u9879\u7167\u5E38\u540C\u6B65\u3002","penzor.sync.quotaLarge":"\u8D85\u8FC7 {size} \u7684\u5355\u4E2A\u6587\u4EF6\u4E00\u76F4\u4E0D\u4F20\uFF08{n} \u4E2A\uFF09\u3002","penzor.sync.quotaSee":"\u770B\u770B\u6CA1\u4F20\u7684\u6587\u4EF6","su.title":"\u5546\u5E97\u66F4\u65B0","su.source.github":"GitHub \u6765\u6E90","su.source.npm":"npm \u6765\u6E90","su.source.zip":"ZIP \u4E0A\u4F20","su.review":"\u5F85\u5BA1\u6838","su.approved":"\u5DF2\u901A\u8FC7","su.rejected":"\u6CA1\u901A\u8FC7","su.viaGithub":"GitHub Release {tag}","su.viaNpm":"npm {version}","su.metaReview":"{time} \u63D0\u4EA4 \xB7 \u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u6536\u4EF6\u7BB1","su.metaReviewNoTime":"\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u6536\u4EF6\u7BB1","su.metaApproved":"\u5546\u5E97\u73B0\u5728\u663E\u793A {version}","su.metaApprovedInfo":"\u5546\u5E97\u4FE1\u606F\u5DF2\u66F4\u65B0","su.metaRejected":"\u5546\u5E97\u7167\u65E7\u663E\u793A {version}","su.metaRejectedUnlisted":"\u8FD8\u6CA1\u6709\u4E0A\u67B6","su.infoOnly":"\u53EA\u6539\u5546\u5E97\u4FE1\u606F","su.listSep":"\u3001","su.openSubmission":"\u5728\u6295\u7A3F\u4E2D\u67E5\u770B"},im={"penzor.rules.default":"Cloud default","penzor.rules.off":"Do not sync","penzor.rules.device":"Device","penzor.rules.run":"Sync now","penzor.rules.twoWay":"Two-way","penzor.rules.defaultForWeb":"The web uses the default folder","penzor.rules.tab.rules":"Sync rules","penzor.rules.tab.active":"Transfers","penzor.rules.tab.history":"History","penzor.rules.enable":"Enable content sync","penzor.rules.add":"Add rule","penzor.rules.source":"Local source","penzor.rules.destination":"Cloud destination","penzor.rules.direction":"Direction","penzor.rules.remove":"Remove rule","penzor.rules.inherit":"An empty path covers all of Forsion. Children inherit; the most specific path wins. Unmatched content stays on this device.","penzor.rules.namespace":"Default: Cloud /Forsion/. Device folders: Cloud /Forsion-deviceID/.","penzor.rules.human":"Choose human independently. The default calendar uses human/CALENDAR.db. A device destination does not replace the web default.","penzor.rules.preview":"Preview changes","penzor.rules.previewTitle":"Review sync scope","penzor.rules.previewCounts":"Upload {up}, download {down}; {conflicts} existing items need merging or preserved versions.","penzor.rules.retain":"Previous destinations are retained. Turning sync off deletes no files. If sources change, preview again.","penzor.rules.back":"Back","penzor.rules.apply":"Confirm and start","penzor.rules.pause":"Pause","penzor.rules.resume":"Continue","penzor.rules.noActive":"No files are transferring.","penzor.rules.manual":"Manual uploads and downloads","penzor.rules.historyNote":"The latest 200 items. Conflicts preserve both versions; other content continues syncing.","penzor.rules.retry":"Retry failed items","penzor.rules.noHistory":"No sync history yet.","penzor.rules.details":"View transfers","penzor.rules.plugins":"Plugin data keeps its own sync management.","penzor.rules.turnOff":"Turn off plugin data sync","penzor.rules.turnOn":"Turn on plugin data sync","penzor.rules.phase.idle":"Waiting for the next sync","penzor.rules.phase.scanning":"Checking files","penzor.rules.phase.syncing":"Syncing","penzor.rules.phase.paused":"Paused","penzor.rules.state.queued":"Queued","penzor.rules.state.active":"Transferring","penzor.rules.state.done":"Done","penzor.rules.state.failed":"Failed","penzor.rules.state.paused":"Paused","penzor.rules.state.conflict":"Conflict versions preserved","penzor.tree.synced":"Synced","penzor.tree.thisBackup":"This computer \xB7 backup only","penzor.tree.byApp":"By app","penzor.tree.legacy":"Legacy vault sync","penzor.quota.sourceLimit":"This kind also has its own limit of {max}; {used} used","penzor.ov.mine":"Yours","penzor.ov.synced":"Synced from your devices","penzor.ov.stale":"No longer updated","penzor.ov.uploads":"Files you upload and organize; change them freely","penzor.ov.all":"Notes, agents, about me and plugins","penzor.ov.allLast":"Notes, agents, about me and plugins \xB7 last synced {time}","penzor.ov.self":"The copy only this computer uses","penzor.ov.device":"Shared only between this computer and that one","penzor.ov.agents":"Agent settings, memory and logs","penzor.ov.profile":"Your profile and default calendar","penzor.ov.sync":"Vaults your computers sync up","penzor.ov.legacy":"No longer written once this computer uses the new sync; kept, not deleted","penzor.ov.ama":"Notes from the web and synced notes","penzor.ov.apps":"Files your apps store; delete or rename them","penzor.ov.plugins":"Settings plugins store; usage only","penzor.ov.exports":"Exported files; download or delete them","penzor.ov.segNotes":"Notes","penzor.ov.segSync":"Device sync","penzor.ov.segOther":"Other","penzor.content.badge":"Kept by the new sync","penzor.content.badgeLast":"Kept by the new sync \xB7 last synced {time}","penzor.content.noteAll":"This is the cloud copy every signed-in device and the web see. To change files, edit them in Notes or Agents on a computer and they sync up; you can download them here.","penzor.content.noteSelf":"The copy only this computer uses; other devices don\u2019t see it. Change files on this computer; you can download them here.","penzor.content.noteDevice":"Shared only between this computer and {name}. Change files on a computer; you can download them here.","penzor.legacy.title":"This computer stopped writing to this vault when it switched to the new sync","penzor.legacy.body":"This computer\u2019s notes now live in Shared with all devices \u203A Notes. Older desktop versions may still write here, so this copy is kept, not deleted.","penzor.legacy.go":"See the new copy","penzor.drive.total":"All of Penzor Cloud: {used} / {max} used","penzor.drive.seeAll":"View","penzor.cs.statusOff":"Off","penzor.cs.statusPaused":"Paused","penzor.cs.statusRun":"Syncing {pct}%","penzor.cs.statusScan":"Checking files","penzor.cs.statusWarn":"{n} to review","penzor.cs.statusOk":"Up to date","penzor.cs.statusOkAgo":"Up to date \xB7 {time}","penzor.cs.thisComputer":"This computer: {name}","penzor.cs.thisComputerLabel":"This computer:","penzor.cs.rename":"Rename this computer","penzor.cs.renameHint":"Other devices will show this name \xB7 Enter to save","penzor.cs.othersN":"{n} others: {names}","penzor.cs.noOthers":"No other devices on this account yet","penzor.cs.log":"Recent activity","penzor.cs.more":"More","penzor.cs.advanced":"Advanced: edit rules","penzor.cs.backSimple":"Back to sync","penzor.cs.firstTitle":"Sync this computer to Penzor Cloud","penzor.cs.firstBody":"Here is a suggested setup; change anything first. Nothing moves until you press Start syncing, and nothing already in the cloud is overwritten or deleted.","penzor.cs.note":"To treat one notes folder or agent differently, click the small line under it. Turning a switch off just stops syncing; nothing is deleted.","penzor.cs.barFirst":"Turning sync on uploads {up} files and downloads {down}","penzor.cs.barChanged":"{n} changes","penzor.cs.barOne":"1 change: \u201C{name}\u201D \u2192 {scope}","penzor.cs.offName":"not synced","penzor.cs.barCounts":"Uploads {up} files and downloads {down} \xB7 nothing is deleted","penzor.cs.barSize":"{size} in total","penzor.cs.noDelete":"nothing will be deleted","penzor.cs.barConflicts":"{n} changed on both sides; both copies are kept","penzor.cs.barCounting":"Working out what will move\u2026","penzor.cs.barRecount":"Files just changed, so this was recalculated. Please confirm again.","penzor.cs.later":"Not now","penzor.cs.start":"Start syncing","penzor.cs.undo":"Undo","penzor.cs.confirm":"Confirm","penzor.cs.up":"Uploading \u201C{name}\u201D","penzor.cs.down":"Downloading \u201C{name}\u201D","penzor.cs.waiting":"{n} more files waiting","penzor.cs.failedN":"{n} files didn\u2019t sync","penzor.cs.retry":"Retry","penzor.cs.seeLog":"See activity","penzor.cs.logEmpty":"No sync activity yet.","penzor.cs.logNote":"Keeps the latest 200 items. When both sides changed, both copies are kept.","penzor.cat.notes":"Notes","penzor.cat.notesDesc":"Your Amadeus vault","penzor.cat.agents":"Agents & memory","penzor.cat.agentsDesc":"Each agent\u2019s settings, memory and logs","penzor.cat.profile":"About me","penzor.cat.profileDesc":"Your profile and default calendar","penzor.cat.profileOn":"Includes your default calendar","penzor.cat.plugins":"Plugins","penzor.cat.pluginsDesc":"Plugin folders and settings","penzor.cat.others":"Other files","penzor.cat.othersDesc":"Files in your workspace outside the groups above","penzor.cat.files":"{n} files \xB7 {size}","penzor.cat.agentsN":"{n} agents","penzor.cat.agentsSome":"{n} agents \xB7 {m} synced","penzor.cat.pluginsN":"{n} plugins","penzor.cat.custom":"{n} custom rules","penzor.cat.notSynced":"Not synced \xB7 stays on this computer","penzor.scope.all":"Shared with all devices","penzor.scope.allDesc":"Every signed-in device and the web see one copy","penzor.scope.self":"Back up this computer only","penzor.scope.selfDesc":"Kept in its own cloud copy other devices don\u2019t see","penzor.scope.with":"Only with {name}","penzor.scope.menuTitle":"Who shares \u201C{name}\u201D","penzor.scope.menuFoot":"To stop syncing it, turn off the switch","penzor.scope.calendarNote":"The web\u2019s default calendar doesn\u2019t follow this","penzor.unified.stale":"Refresh failed. Showing the last sample; current usage is unknown. Please retry.","penzor.unified.uploadTo":"Upload to My files","penzor.unified.apps":"Manage ordinary files \xB7 source restrictions apply","penzor.trash.ama":"Amadeus \xB7 pending cleanup","penzor.trash.amaNote":"Deleted current files still count; history is not counted again. Eligible for system cleanup after 30 days. Read-only here; Empty trash does not affect these snapshots.","penzor.trash.expires":"Cleanup eligible from","penzor.source.openAgents":"Open Agents","penzor.source.openCalendar":"Open calendar","penzor.source.entryUnavailable":"This host does not provide that destination","penzor.uploads":"My files","penzor.source.agents":"Agents","penzor.source.profile":"My profile","penzor.source.plugins":"Plugin data","penzor.source.readonly":"Synced sources are read-only. Edit or delete in the source; download synced files here.","penzor.source.appNote":"App files are managed by their app. Edit or delete them there.","penzor.source.pluginNote":"Names and usage only. Data may contain settings or credentials, so preview and download are unavailable.","penzor.unified.unavailable":"Usage unavailable","penzor.unified.incomplete":"Unified usage is incomplete, so quota status is unknown. Refresh to retry.","penzor.unified.enforced":"Unified quota is active. Over quota, new content and larger replacements are paused; downloads, deletions and non-growing replacements remain available.","penzor.unified.grace":"Notice grace period ends {date}. Unified quota does not add restrictions yet.","penzor.unified.rolloutPolicy":"Storage policy notice: growth limits may start no earlier than 30 days after acknowledgement. App file history will retain at most 50 versions from the last 30 days. History is excluded from your plan; download backups before cleanup. Current files are not removed by history cleanup.","penzor.unified.ack":"I have read the storage and history notice","penzor.unified.notice":"This is only a notice. Going over won\u2019t stop sync or uploads","penzor.unified.over":"Unified quota exceeded. This is a notice only; no new sync or upload restrictions apply. Clear files or upgrade your plan.","penzor.unified.warn":"Unified storage is nearly full. This is a notice only; no new sync or upload restrictions apply.","penzor.unified.accounting":"includes {trash} in trash; history doesn\u2019t count","penzor.unified.writable":"Upload, create, rename and delete","penzor.unified.readonly":"Read-only \xB7 managed at source","penzor.unified.export":"Download, rename and permanently delete","penzor.unified.counted":"Included in unified usage \xB7 notice phase","penzor.unified.policy":"If limits are ever enforced, you\u2019ll hear at least 30 days ahead.","penzor.unified.legacySync":"Existing device sync limit: {used} / {max}","penzor.unified.legacyApps":"Existing app file limit: {used} / {max}","sub.identity":"Plugin ID","sub.identityHint":"A unique ID is assigned after submission. Names may repeat; updates keep the same ID.","sub.description":"Detailed description","sub.tags":"Tags","sub.tagsHint":"Comma separated, up to 8","sub.minAppVersion":"Minimum Forsion version","sub.maxAppVersion":"Maximum version (exclusive)","sub.optional":"Optional","sub.platforms":"Supported platforms","sub.requirementsHint":"Supported: desktop, macos, windows, linux, android, ios, web. Leave blank if unspecified. ZIP requirements are read from the manifest; supplied values must match it.","sub.err.market_requirements_invalid":"Invalid version requirements or platforms.","sub.err.market_requirements_mismatch":"Supplied requirements differ from the ZIP manifest.","sub.mine":"My submissions","page.submission":"Submissions","page.webPages":"My web pages","web.title":"My web pages","web.desc":"Pages you published with Tangu or Coding Space. Anyone with the link can open them; they run sandboxed and can't read visitors' Forsion sign-in.","web.refresh":"Refresh","web.used":"{used} of {limit} published","web.full":"All slots are used. Take one down or upgrade to publish another","web.empty":"No published pages yet","web.emptyHint":'Ask Tangu in a chat to publish a page, for example "publish this page", or choose Publish on a Coding Space project.',"web.updated":"Updated {date}","web.disabled":"Disabled","web.disabledHint":"An administrator disabled this page. Its link doesn't open and it can't be updated.","web.copy":"Copy link","web.unpublish":"Take down","web.unpublishConfirm":"Confirm take down","web.listingPending":"Store listing in review","web.listingApproved":"Listed in store","web.listingRejected":"Store listing rejected","web.listingNote":"Reason: {note}","web.listingApply":"Apply for store listing","web.listingReapply":"Apply again","web.listingWithdraw":"Withdraw application","web.listingDelist":"Remove from store","web.listingDelistConfirm":"Confirm removal","web.listingSummary":"Store summary","web.listingSummaryPh":"One sentence about this page","web.listingHint":"Shown in the store under Web apps after review. Up to 300 characters.","web.listingSubmit":"Submit application","sub.desc":"Manage your submissions, review results and version updates.","sub.new":"New submission","sub.refresh":"Refresh","sub.empty":"No submissions yet","sub.emptyHint":"Share your plugins, skills, Agents or Spaces in the marketplace.","sub.name":"Name","sub.summary":"Summary","sub.type":"Content type","sub.source":"Source","sub.type.skill":"Skill","sub.type.agent":"Agent","sub.type.plugin":"Plugin","sub.type.space":"Space","sub.type.theme":"Theme","sub.type.amadeus_plugin":"Amadeus plugin","sub.pending":"Pending review","sub.approved":"Published","sub.rejected":"Rejected","sub.pendingVersion":"v{version} update pending review","sub.rejectedVersion":"v{version} update rejected","sub.submit":"Submit for review","sub.submitted":"Submitted. The review result appears here and in your inbox.","sub.updated":"Update submitted for review. The published version stays available until then; the result goes to your inbox.","sub.repo":"Public GitHub repository","sub.npm":"Public npm package","sub.repoHint":"README and Releases come from the repository; its owner is shown as the publisher.","sub.npmHint":"Package metadata comes from npm; the public repository owner is shown as the publisher.","sub.reviewHint":"New versions require review before distribution. Your Forsion account manages the submission.","sub.zipHint":"Up to 50 MB. Include the required manifest and entry files.","sub.filter":"Filter by status","sub.all":"All","sub.noResults":"No matching submissions","sub.downloads":"{n} downloads","sub.errName":"Enter a name.","sub.errSource":"Enter a public repository URL or npm package name.","sub.errZip":"Choose a ZIP archive.","sub.errLarge":"ZIP archives must not exceed 50 MB.","sub.err.market_npm_invalid":"The npm package is unavailable or does not meet the plugin requirements.","sub.err.market_npm_source":"Publish the new version on npm for review.","sub.err.market_github_source":"Publish a GitHub Release for review.","sub.err.market_not_found":"Submission unavailable. Refresh and retry.","sub.err.market_zip_required":"Choose a ZIP archive.","sub.err.market_zip_invalid":"The ZIP structure does not meet the publishing requirements.","sub.err.market_zip_too_large":"ZIP archives must not exceed 50 MB.","sub.err.market_version_required":"The package has no version. Add one to the manifest (for skills, version or metadata.version in SKILL.md) and repackage.","sub.err.market_version_invalid":"Enter a valid version.","sub.err.market_version_mismatch":"The version does not match the manifest.","sub.err.market_version_not_newer":"The new version must be newer than the published version.","sub.err.market_icon_invalid":"Use a square PNG icon between 64 and 512 px.","sub.err.market_duplicate":"This content has already been submitted. Manage the existing submission.","sub.err.market_update_pending":"An update is already awaiting review.","sub.err.market_stale":"The submission has changed. Refresh and retry.","sub.notNewer":"The package says v{version}; it must be newer than the Store\u2019s v{current}.","sub.reqNone":"No version range or platforms declared","sub.dropTitle":"Drop a ZIP here, or click to choose one","sub.dropHint":"Up to 50 MB. It is checked first, not submitted yet.","sub.dropReplace":"{size} \xB7 Drop or click to replace","sub.checkType":"Type","sub.checkVersion":"Version","sub.checkIcon":"Icon","sub.checkReadme":"README","sub.checkReq":"Requirements","sub.checkWarn":"Note","sub.iconYes":"icon.png found in the package","sub.iconNo":"No icon.png; the card shows the type icon","sub.readmeYes":"Uses README.md from the package","sub.readmeKeep":"No README.md in the package; the current one stays","sub.readmeNo":"No README.md in the package","sub.warn.no_manifest":"No manifest found in the package","sub.warn.type_mismatch":"The package type differs from this submission\u2019s type","sub.warn.tag_version_mismatch":"The release tag differs from the package version","sub.warn.id_slug_mismatch":"The package id differs from the installed folder name; users would end up with a second copy","sub.warn.engine_slug_mismatch":"The engine plugin folder name differs from its id","sub.warn.no_entry":"The Amadeus plugin has no main.js entry","sub.warn.has_node_modules":"The package includes node_modules, which is large and usually unneeded","sub.zipListedNote":"Until it\u2019s approved, the Store keeps serving the published version. The review result goes to your inbox.","sub.zipUnlistedNote":"Submitting replaces the current package and sends it back for review.","sub.submitVersion":"Submit v{version} for review","sub.checkNew":"Check for a new version","sub.checkAgain":"Check again","sub.upToDate":"The latest upstream version is v{version} and the Store has v{current}. Publish a new version, then check again.","sub.upstreamLatest":"Latest upstream: v{version}","sub.releaseTag":"Release {tag}","sub.storeHas":"Store has v{version}","sub.githubNote":"Once approved, the Store pins v{version}. After your next GitHub release, come back and check again.","sub.npmNote":"Once approved, the Store pins v{version}. After your next npm release, come back and check again.","sub.secVersion":"Version","sub.secInfo":"Store details","sub.secHistory":"History","sub.edit":"Edit","sub.unset":"Not set","sub.infoNote":"No package or new version needed. Changes to a published item are reviewed too; until then the Store shows the current details.","sub.submitInfo":"Submit changes","sub.back":"Back to list","sub.pendingInfo":"Details change pending review","sub.rejectedInfo":"Details change rejected","sub.pendingHint":"The Store stays unchanged until approval. The review result goes to your inbox.","sub.inReview":"Waiting for its first review. The result goes to your inbox.","sub.histApproved":"v{version} approved","sub.histSubmitted":"Submitted","sub.resubmitted":"Resubmitted for review. The result goes to your inbox.","sub.infoSubmitted":"Changes submitted for review. The Store shows the current details until then.","sub.err.market_no_release":"This repository has no GitHub release yet. The Store pins a version, so publish a release on GitHub, then check again.","sub.err.market_no_changes":"Nothing changed.","sub.err.market_dryrun_unsupported":"GitHub and npm submissions can\u2019t be checked in advance. Submit them for review.","page.account":"Account","page.membershipUsage":"Membership & usage","page.membershipQuota":"Membership & quota","page.pointsInvite":"Points & invites","page.helpDiagnostics":"Help & diagnostics","account.details.title":"Sign-in & details","account.details.desc":"Edit your photo, nickname and bio under Profile.","account.details.username":"Username","diag.unavailable":"This host does not support diagnostic data. Update Forsion and try again.","page.profile":"Profile","page.quota":"Quota & points","page.backpack":"Backpack","page.security":"Security","page.usage":"Usage","page.feedback":"Feedback","store.group":"Membership & points","store.membership":"Membership","store.membership.desc":"Upgrade your plan for more daily and weekly quota","store.points":"Points","store.points.desc":"Buy points and use them to redeem items","store.items":"Items","store.items.desc":"Items you can redeem with points. Redeemed items go to your backpack","store.status":"Plan and points","store.tier":"Current plan","store.balance":"Points balance","store.choosePlan":"Choose a plan","store.payHint":"You pay on the payment page in your browser. This page refreshes when you come back","store.payOff":"Purchases are unavailable right now","store.period":"Billing period","store.period.monthly":"Monthly","store.period.quarterly":"Quarterly","store.period.yearly":"Yearly","store.per.monthly":"/ month","store.per.quarterly":"/ quarter","store.per.yearly":"/ year","store.currentTier":"Current plan","store.pay":"Pay","store.payPrice":"Pay {price}","store.noPlans":"No plans are available right now","store.packs":"Point packs","store.packsHint":"You pay on the payment page in your browser. Points arrive right after payment","store.noPacks":"No point packs are available right now","store.kind.pack":"Point pack","store.kind.card":"Consumable","store.kind.code":"Redeem code","store.kind.item":"Item","store.nPoints":"{n} points","store.instant":"Arrives right after payment","store.redeemTitle":"Redeem with points","store.redeemHint":"Redeeming with points completes right here. Items go to your backpack","store.redeem":"Redeem for {n} points","store.redeemConfirm":"Confirm: spend {n} points","store.redeemed":"Redeemed. The item is in your backpack","store.uncertain":"No response came back. Check your backpack before you try again","store.soldOut":"Sold out","store.left":"{n} left","store.toBackpack":"Goes to your backpack","store.limitReached":"You've reached the purchase limit","store.unavailable":"This item can't be redeemed right now","store.noItems":"Nothing to redeem right now","store.itemsOff":"Item redemption isn't available yet","store.openBackpack":"Open backpack","backpack.desc":"View the items you have collected. Select a slot for details.","backpack.refresh":"Refresh","backpack.total":"{n} items","backpack.grid":"Backpack items","backpack.slot":"{name}, quantity {n}","backpack.item":"Item","backpack.empty":"Your backpack is empty","backpack.emptyHint":"Items you redeem or receive will appear here.","backpack.select":"Select an item to view details","backpack.details":"Item details","backpack.quantity":"Quantity","backpack.acquired":"Acquired","backpack.source":"Received through","backpack.source.points":"Points exchange","backpack.source.admin":"Gift","backpack.source.reward":"Reward","backpack.source.other":"Cloud account","backpack.consumable":"Consumable","backpack.voucher":"Voucher","backpack.getCards":"Redeem reset cards","backpack.manageCards":"Use or redeem","backpack.reveal":"Reveal key","backpack.copyKey":"Copy key","backpack.noKey":"This item has no key.","backpack.use":"Use","backpack.confirmUse":"Confirm use","backpack.consumeConfirm":"Using this item consumes one copy.","backpack.collectible":"Collectible","backpack.effect.points":"+{n} points","backpack.effect.cards":"+{n} reset cards","backpack.effect.quota":"Reset daily and weekly quota","backpack.rarity.common":"Common","backpack.rarity.rare":"Rare","backpack.rarity.epic":"Epic","backpack.rarity.legendary":"Legendary","backpack.unavailable":"This item is no longer available. Refresh your backpack.","backpack.notUsable":"This item cannot be used.","backpack.quotaUnavailable":"Use cloud AI to initialize your quota before using this item.","common.cancel":"Cancel","common.copied":"Copied","common.copyFailed":"Couldn't copy","common.done":"Done","common.loadFailed":"Couldn't load","common.loadMore":"Load more","common.loading":"Loading\u2026","common.openInBrowser":"Open in browser","common.retry":"Retry","common.save":"Save","common.thisWeek":"This week","common.today":"Today","common.unlimited":"Unlimited","ann.eyebrow":"FORSION \xB7 Announcement","ann.close":"Close","ann.ok":"Got it","signin.button":"Sign in to Forsion","signin.desc":"Sign in to your Forsion account to manage your account, quota, security, submissions and feedback here.","signin.pending":"Waiting for you to finish in your browser\u2026","signin.deviceHint":"Your browser opens the sign-in page on its own. If it doesn't, scan the code with your phone or open the link below, and check that the code matches.","signin.code":"Code","signin.openLink":"Open sign-in page","signin.copyLink":"Copy link","signin.qrLabel":"Sign-in QR code","account.profile.title":"Profile","account.profile.desc":"Your photo and nickname, plus the phone and email linked to your account","account.avatar.change":"Change photo","account.avatar.saved":"Photo updated","account.nickname.edit":"Edit nickname","account.nickname.label":"Nickname","account.nickname.saved":"Nickname updated","account.role.admin":"Admin","account.username":"Username {name}","account.contact.phone":"Phone","account.contact.email":"Email","account.contact.unbound":"Not linked","account.contact.manage":"Manage in Security","account.web.open":"Open the account center in your browser","account.web.desc":"Cloud storage, AI Brain and themes are managed in the web account center.","member.title":"Membership","member.desc":"Your tier, plan and expiry date","member.upgrade":"Upgrade membership","member.renew":"Renew","member.freeName":"Free plan","member.freeHint":"Upgrade to get more AI quota","member.expires":"Expires {date}","member.noExpiry":"No expiry","member.loadFailed":"Couldn't load your membership.","session.title":"Sign-in","session.desc":"Manage your sign-in on this device","local.title":"Accounts on this computer","local.desc":"Switch between accounts you've signed in with","local.current":"Current","local.switch":"Switch","local.add":"Sign in to another account","local.signOut":"Sign out","local.empty":"No saved accounts yet","local.loadFailed":"Couldn't read the account list","diag.title":"Diagnostic data","diag.desc":"Helps us troubleshoot problems and improve Forsion. Off by default.","diag.enable":"Upload diagnostic data","diag.enableDesc":"When this is on, this computer periodically uploads a snapshot of its Forsion setup to your Forsion account, where the Forsion team can view it. The Forsion team sets how often, once a day by default. You can turn it off at any time.","diag.collected":"What's uploaded","diag.item.app":"App and system versions, this computer's name, and its free memory and disk space","diag.item.settings":"Your model and voice choices, the switches and numeric values in background agent and plugin settings, and the names and on/off state of MCP servers and message channels","diag.item.agents":"Agent and team configuration (options such as name and model; descriptions and prompts are recorded by length only, and their text falls under the personas, memory and evolution switch below)","diag.item.plugins":"Names and versions of installed plugins, skills, themes and Spaces","diag.item.runs":"Run records from the last 7 days: each run's status and error reason, usage and timing of model calls and tools (no conversation text, and nothing those tools read or wrote), and the engine's recent log output","diag.notCollected":"Never uploaded: the sign-in credentials and API keys saved on this computer, your note files, agent libraries, or plugin data.","diag.sessions":"Include conversations","diag.sessionsDesc":"Conversations on this computer: the text of your messages and the agent's replies, the agent's reasoning and the names of the tools it used, including the background work of team members, discussions and delegated tasks. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. What those tools read or wrote and the attachments themselves are left out; file names that appear in messages, and anything the agent repeated from your notes or files in its replies, are included. Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.memory":"Include agent personas, memory and evolution records","diag.memoryDesc":"Each agent's persona (including the description and developer instructions in its configuration), and what the agent has built up on its own: its memory and the memory candidates it hasn't consolidated yet, its evolution record, its collaboration notes for you, the last 7 days of its logs and memory-consolidation activity, and project memory; plus your teams' charters and your user profile. These are the instructions you wrote for your agents and teams, and the facts they noted about you and your work from conversations. Each upload carries their current content (very long ones are cut short). Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.activity":"Include activity log","diag.activityDesc":"Your activity records, which include the first few dozen characters of conversations and the names of note files. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. If you'd rather not share them, turn this off before you turn uploads on.","diag.last":"Last upload: {time}","diag.noUpload":"Nothing uploaded yet","diag.freq.hour":"every hour","diag.freq.hours":"every {n} hours","diag.freq.day":"once a day","diag.freq.days":"every {n} days","diag.freq.manual":"only when the Forsion team requests it","diag.retention":"The cloud keeps this computer's snapshots from the last {n} days. Turning this off stops uploads; snapshots already uploaded stay in the cloud. To have them deleted, let us know under Feedback.","diag.uploadNow":"Upload now","diag.uploaded":"Uploaded","diag.failed":"Upload failed: {reason}","quota.ai.title":"AI quota","quota.ai.desc":"What's left today and this week; a quota reset card restores it","quota.resetDaily":"Resets daily at 0:00 (Beijing time)","quota.resetWeekly":"Resets {date} at 0:00 (Beijing time)","card.title":"Quota reset card","card.desc":"Restores today's and this week's AI quota to 100%","card.owned":"You have {n}","card.use":"Use one","card.useConfirm":"Confirm","card.used":"Used 1 quota reset card","card.left":"{n} left","card.noneHint":"You have no quota reset cards left. You can exchange points for more.","card.exchange":"Exchange points","card.price":"{price} points each, 1\u201350 at a time","card.count":"Number of cards","card.cost":"Costs {cost} points","card.countHint":"Enter 1\u201350","card.exchangeButton":"Exchange","card.exchangeConfirm":"Spend {cost} points","card.exchanged":"Quota reset cards added: {n}","points.title":"Points","points.desc":"Use points to get quota reset cards","points.balance":"Balance","points.balanceFailed":"Couldn't load your balance","points.recharge":"Buy points","bg.title":"Background quota","bg.desc":"Used by Muse and automations, counted separately from your AI quota","bg.autoMain":"Continue with AI quota when used up","bg.autoMainDesc":"When off, Muse and automations pause once the background quota runs out","bg.convert":"Move from AI quota","bg.convertDesc":"Moves a share of your AI quota limit, valid for the current period","bg.convertConfirm":"Move {pct}%","bg.converted":"Moved {pct}% from your AI quota","invite.title":"Invites & codes","invite.desc":"Invite friends to join, or redeem a code you received","invite.myCode":"My invite code","invite.count":"{n} invited","invite.copyCode":"Copy code","invite.copyLink":"Copy invite link","invite.loadFailed":"Couldn't load your invite code","invite.claim":"Enter an invite code","invite.claimDesc":"Within 7 days of signing up, you can enter a friend's invite code","invite.claimPlaceholder":"Friend's invite code","invite.claimSubmit":"Submit","invite.claimed":"Invite code applied","redeem.title":"Redemption code","redeem.desc":"Redeem points, membership or other rewards","redeem.placeholder":"Enter a code","redeem.submit":"Redeem","redeem.success":"Redeemed","redeem.successWith":"Redeemed: {what}","redeem.gotPoints":"{n} points","redeem.gotMembership":"membership","sec.methods.title":"Sign-in methods","sec.methods.desc":"Your phone and email can be used to sign in and reset your password","sec.bind":"Link","sec.change":"Change","sec.phone":"Phone number","sec.email":"Email address","sec.newPhone":"New phone number","sec.newEmail":"New email address","sec.phonePlaceholder":"Mainland China numbers as is; others with +country code","sec.emailPlaceholder":"name@example.com","sec.code":"Verification code","sec.codePlaceholder":"Enter the code","sec.sendCode":"Send code","sec.resendIn":"Resend in {s}s","sec.codeSent":"Code sent","sec.bindSubmit":"Link","sec.phoneBound":"Phone linked","sec.emailBound":"Email linked","sec.devices.title":"Signed-in devices","sec.devices.desc":"If you think someone else is using your account, sign out on every device","sec.logoutAll":"Sign out everywhere","sec.logoutAllDesc":"Including this device: every device has to sign in again","sec.logoutAllConfirm":"Confirm sign out everywhere","sec.logoutAllDone":"Signed out everywhere","pw.title":"Password","pw.desc":"{min}\u2013{max} characters, with a lowercase letter, an uppercase letter and a special character, and no spaces","pw.change":"Change password","pw.modeLabel":"How to change it","pw.mode.current":"With current password","pw.mode.code":"With a verification code","pw.current":"Current password","pw.currentRequired":"Enter your current password","pw.new":"New password","pw.confirm":"Confirm new password","pw.mismatch":"The new passwords don't match","pw.submit":"Change password","pw.submitReset":"Set new password","pw.changed":"Password updated","pw.noPasswordYet":"This account doesn't have a password yet. Set one with a verification code instead.","pw.codeNeedsContact":"Link a phone or email first to set a password with a verification code.","pw.via":"Send the code to","pw.codeTo":"The code goes to {target}","pw.rulesLabel":"Password rules","pw.req.length":"{min}\u2013{max} characters","pw.req.lower":"A lowercase letter","pw.req.upper":"An uppercase letter","pw.req.special":"A special character","pw.req.space":"No spaces","pw.rule.format":"Invalid password","pw.rule.min":"Password must be at least 8 characters","pw.rule.max":"Password can't be longer than 64 characters","pw.rule.space":"Password can't contain spaces","pw.rule.lower":"Password needs a lowercase letter","pw.rule.upper":"Password needs an uppercase letter","pw.rule.special":"Password needs a special character","del.title":"Delete account","del.desc":"Permanently delete your account and all its data. This can't be undone","del.start":"Delete account","del.warn":"Deleting your account removes your account, points, membership, cloud storage and all other data for good.","del.methodLabel":"Verify with","del.byCode":"Verification code","del.byPassword":"Password","del.codeLabel":"Code sent to {target}","del.passwordLabel":"Account password","del.submit":"Delete account","del.confirm":"Delete permanently","del.done":"Account deleted","usage.overview.title":"Overview","usage.overview.desc":"Requests and AI quota used in the selected period","usage.range":"Time range","usage.days":"{n} days","usage.requests":"Requests","usage.successRate":"Success rate","usage.consumption":"AI quota used","usage.ofToday":"Of your daily limit","usage.unlimitedNote":"Your AI quota is unlimited, so usage isn't shown as a percentage.","usage.noLimitNote":"Your daily limit is 0 or unavailable right now, so usage isn't shown as a percentage.","usage.byModel.title":"By model","usage.byModel.desc":"Requests and quota used per model","usage.byApp.title":"By app","usage.byApp.desc":"Requests and quota used per app","usage.col.model":"Model","usage.col.app":"App","usage.col.requests":"Requests","usage.col.consumption":"Quota used","usage.empty":"No usage in this period","usage.appUnknown":"Other","usage.recent.title":"Recent usage","usage.recent.desc":"Each call as a share of your daily limit","usage.recentEmpty":"No usage yet","usage.failed":"Failed","usage.shown":"Showing {shown} of {total}","fb.list.title":"My feedback","fb.list.desc":"Issues and suggestions you've sent; replies show up here","fb.new":"New feedback","fb.empty":"No feedback yet","fb.untitled":"Untitled feedback","fb.unread":"New reply","fb.shown":"Showing {n}","fb.submitted":"Sent. We'll reply as soon as we can","fb.descLabel":"Describe the issue or suggestion","fb.descPlaceholder":"What happened, and what did you expect?","fb.imagesHint":"Attach up to {n} screenshots (5 MB each). You can paste or drop them here.","fb.addImages":"Add screenshots","fb.removeImage":"Remove this image","fb.submit":"Send","fb.back":"Back to list","fb.you":"You","fb.support":"Forsion team","fb.attachment":"Attachment","fb.imagePreview":"View image","fb.closedNote":"This ticket is closed and can't take replies. Send new feedback for a new issue.","fb.replyPlaceholder":"Reply\u2026","fb.replySend":"Send reply","fb.replySent":"Reply sent","fb.status.open":"Open","fb.status.in_progress":"In progress","fb.status.resolved":"Resolved","fb.status.closed":"Closed","err.accountGone":"This account is signed out. Sign in again","err.adminCannotDelete":"Admin accounts can't be deleted here","err.avatarInvalid":"Couldn't read this image. Try another one","err.avatarTooLarge":"This image is too large. Try a smaller one","err.backgroundUnavailable":"Background quota is unavailable right now","err.captcha":"You need to finish a verification check in your browser","err.codeCooldown":"Too many codes requested. Try again shortly","err.codeInvalid":"The code is wrong or has expired","err.codeRequired":"Enter the verification code","err.codeSendFailed":"Couldn't send the code. Try again later","err.currentPasswordWrong":"Your current password is incorrect","err.deleteTargetInvalid":"Codes can only go to the phone or email linked to your account","err.deleteVerifyFailed":"Verification failed, so your account wasn't deleted","err.emailInUse":"This email is already used by another account","err.emailInvalid":"Enter a valid email address","err.featureDisabled":"This feature is turned off for now","err.feedbackEmpty":"Describe the issue or suggestion first","err.feedbackTooLong":"The description is too long (10,000 characters max)","err.generic":"That didn't work. Try again later","err.imageRead":"Couldn't read the image","err.imageTooLarge":"Each image must be 5 MB or less","err.imageType":"Only images can be added","err.insufficientMainQuota":"Your AI quota is used up, so there's nothing to move","err.insufficientPoints":"Not enough points","err.priceChanged":"The reset card price just changed. Check the new price, then confirm the exchange again.","err.invalidCount":"Choose between 1 and 50 cards","err.invalidInviteCode":"This invite code is invalid or has expired","err.inviteAlreadyUsed":"You've already used an invite code","err.inviteEmpty":"Enter an invite code","err.inviteOwnCode":"You can't use your own invite code","err.inviteWindowExpired":"The 7-day window after sign-up has passed","err.loginCodeExpired":"The sign-in code expired. Sign in again","err.loginInProgress":"A sign-in is already in progress","err.loginTimeout":"Sign-in timed out. Try again","err.loginUnsupported":"This cloud doesn't support desktop sign-in","err.network":"Network error. Check your connection and try again","err.noCloudUrl":"Set the cloud address under Connection first","err.noResetCard":"You have no quota reset cards","err.openFailed":"Couldn't open the browser","err.passwordRequired":"Enter your current and new password","err.phoneInUse":"This phone number is already used by another account","err.phoneInvalid":"Enter a valid phone number (with +country code outside mainland China)","err.redeemEmpty":"Enter a code","err.redeemExpired":"This code has expired","err.redeemInactive":"This code is no longer active","err.redeemNotFound":"This code doesn't exist","err.redeemUsedUp":"This code has been used up","err.redeemUserLimit":"You've already redeemed this code","err.replyEmpty":"Write a reply first","err.replyTooLong":"The reply is too long (10,000 characters max)","err.server":"Server error ({status}). Try again later","err.session":"You've been signed out. Sign in again","err.signedOut":"Sign in to Forsion first","err.targetInvalid":"Enter a valid phone number or email","err.ticketNotFound":"This feedback doesn't exist or was deleted","err.webPageGone":"This page doesn't exist or was taken down","err.listingGone":"This page has no store listing","err.listingSummary":"Add a store summary (up to 300 characters)","err.tooFrequent":"Too many attempts. Try again shortly","err.tooManyImages":"You can add up to 5 images","err.unavailable":"This version of Forsion can't do that yet. Update Forsion","profile.unsupported":"This server doesn't have profiles yet","profile.state.private":"Only you can see this","profile.state.public":"Public","profile.state.privateDesc":"Once public, anyone with the address can see your profile without signing in","profile.state.publicDesc":"Anyone with the public address can see it without signing in","profile.decorate":"Decorate","profile.publish":"Make public","profile.makePrivate":"Make private","profile.address":"Public address","profile.copyLink":"Copy link","profile.openPublic":"View public page","profile.nowPublic":"Your profile is now public","profile.nowPrivate":"Your profile is private. The public address no longer opens","profile.bio":"Bio","profile.bioPlaceholder":"Add a short bio","profile.linkAdd":"Add a link","profile.linkRemove":"Remove link","profile.linkInvalid":"Links must start with http:// or https://, or be a plain domain","profile.joined":"Joined {date}","profile.stat.tokens":"Total tokens","profile.stat.activeDays":"Active days","profile.stat.longest":"Longest streak","profile.stat.current":"Current streak","profile.stat.installs":"Work installs","profile.unit.days":"d","profile.works":"Featured works","profile.worksPick":"Choose","profile.worksEmpty":"No published works yet. Publish to the store or as a web app, and they can go here.","profile.worksNone":"Nothing to feature yet. Works appear here once they are in the store or published as a web app.","profile.worksPicked":"{n} of {max} selected","profile.worksAuto":"With none selected, the most installed ones are shown","profile.goSubmit":"Submit a work","profile.workInstalls":"{n} installs","profile.workVisits":"{n} visits","profile.work.skill":"Skill","profile.work.agent":"Agent","profile.work.plugin":"Plugin","profile.work.space":"Space","profile.work.theme":"Theme","profile.work.note":"Notes plugin","profile.work.webapp":"Web app","profile.activity":"Activity","profile.activityDays":"Active on {n} days in the past year","profile.less":"Less","profile.more":"More","profile.badges":"Badges","profile.badgesEmpty":"No badges yet. Streaks, published works and invites all earn one.","profile.badge.early":"Early user","profile.badge.streak":"30-day streak","profile.badge.author":"Author","profile.badge.inviter":"Top inviter","profile.badge.event":"Event keepsake","profile.badgeSub.early":"Joined in {value}","profile.badgeSub.streak":"Longest streak: {value} days","profile.badgeSub.author":"{value} published works","profile.badgeSub.inviter":"Invited {value} friends","profile.badgeSub.event":"Took part in a Forsion event{value}","profile.insights":"Insights","profile.insightsEmpty":"Not enough usage yet. Check back in a few days.","profile.insightModel":"Most used model","profile.insightHours":"Most active hours","profile.deco.skin":"Public page color scheme","profile.deco.mode":"Public page appearance","profile.deco.publicHint":"These two only set what visitors see on the public page. Here the profile follows Forsion's current theme.","profile.deco.cover":"Cover","profile.deco.frame":"Avatar frame","profile.deco.modules":"Sections","profile.skin.cream":"Classic","profile.skin.coral":"Coral","profile.skin.teal":"Teal","profile.skin.lavender":"Lavender","profile.mode.auto":"Auto","profile.mode.light":"Light","profile.mode.dark":"Dark","profile.cover.none":"None","profile.cover.mist":"Mist","profile.cover.contour":"Contour","profile.cover.dots":"Dots","profile.frame.none":"None","profile.frame.ring":"Ring","profile.frame.pro":"Member ring","profile.frameProHint":"The member ring is for paid members.","profile.col.show":"Show","profile.col.public":"Public","profile.moveUp":"Move up","profile.moveDown":"Move down","profile.modulesHint":'"Show" decides whether a section is on your profile. "Public" decides whether visitors see it, once your profile is public.',"profile.mod.stats":"Stats","profile.mod.works":"Works","profile.mod.activity":"Activity","profile.mod.badges":"Badges","profile.mod.insights":"Insights","profile.modDesc.stats":"Total tokens, active days, streaks and installs of your works","profile.modDesc.works":"Works you have published, up to 6","profile.modDesc.activity":"Which days you were active in the past year (shades only, no numbers)","profile.modDesc.badges":"Join year, streaks, publishing, invites and events","profile.modDesc.insights":"Your most used model and most active hours","profile.publishDesc":"Once public, anyone with this address can see your profile without signing in. You decide section by section what visitors see.","profile.publishNever":"Your avatar, nickname, username, bio and links become public too. Your email, phone number, membership expiry, points and quota never appear on your profile.","profile.publishConfirm":"Make public","profile.blocked.machineUsername":"Your current username was generated by the system and contains part of your phone number or email, so making it public would expose that. Change your username on the Account page of the web account center first (each account can do this once), then come back.","profile.blocked.publishBlocked":"An administrator has stopped this profile from being public. Contact us through Feedback if you have questions.","profile.goRename":"Change username","profile.invalid":"This couldn't be saved. Check it and try again","guide.title":"Guide","guide.readOnly":"Read-only","guide.more":"More","guide.unlockAll":"Unlock all","guide.relock":"Unlock level by level","guide.reminders":"Guide reminders","guide.spotlight":"On-screen hints","guide.spotStep":"Step {n} of {total}","guide.figure":"Diagram","guide.openAchievements":"Open achievements","guide.tasks":"Tasks in this chapter","guide.go":"Take me there","guide.desktopOnly":"Do it on your computer","guide.taskDone":"Done","guide.askTangu":"Ask Tangu","guide.progress":"Progress","guide.justUnlocked":"Just unlocked","guide.lockedHint":"Locked","guide.whatsNew":"What's new in {version}","guide.level.lv1":"Lv.1 Getting started","guide.level.lv2":"Lv.2 Finding your way","guide.level.lv3":"Lv.3 Making it yours","guide.level.lv4":"Lv.4 Going further","guide.locked.title":"This chapter is still locked","guide.locked.body":"Finish the tasks in {level} to read the rest.","guide.locked.left":"Still to do:","guide.locked.hint":"Been around a while? Unlock everything from the \xB7\xB7\xB7 menu.","guide.levelProgress":"This level: {done}/{total}","guide.next":"Next level","guide.allDone":"All done","guide.allDoneBody":"You've done every task in the guide. Come back any time.","guide.review":"Look back","guide.ask.hint":'Questions about "{chapter}"? Ask Tangu opens a new chat with this chapter attached.',"guide.ask.placeholder":"What would you like to know?","guide.ask.send":"Start a chat","guide.ask.prompt":`I'm reading the "{chapter}" chapter of the Forsion guide; it's attached below. {question}`,"guide.ask.unavailable":"Chat isn't available here","guide.ask.chatTitle":"Guide Q&A","guide.companion.back":"Back to the guide","guide.companion.close":"Close","guide.toast.taskDone":"Done: {task}","guide.letter.levelTitle":"{level} unlocked: try these next","guide.letter.levelBody":'You finished the previous level, so these chapters are open now. Every task has a "Take me there" button.',"guide.letter.versionTitle":"{n} new things to try in {version}","guide.letter.versionBody":"New in this version, ready to try:","guide.letter.open":"Open the guide","guide.status.done":"Done","guide.cmd.open":"Open the guide","penzor.title":"Penzor Cloud","penzor.overview":"Overview","penzor.places":"Places","penzor.details":"Details","penzor.ledger.sync":"Vault sync","penzor.ledger.ama":"Amadeus Cloud","penzor.ledger.apps":"App files","penzor.ledger.exports":"Exports","penzor.trash":"Trash","penzor.items":"{n} items","penzor.total.sub":"Stored in Forsion Cloud \xB7 updated {time}","penzor.justNow":"just now","penzor.ofMax":"/ {max}","penzor.card.syncSub":"{n} vaults \xB7 last write {time}","penzor.card.syncSubNone":"{n} vaults","penzor.card.syncFoot":"Files over {size} are not uploaded","penzor.card.syncWarn":"Almost full: after {max}, new files stop uploading; files already in the cloud keep syncing","penzor.card.amaSmall":"Not counted in your quota","penzor.card.amaSub":"{n} cloud vaults","penzor.card.amaFoot":"Notes and attachments on the Cloud side of Amadeus","penzor.card.appsFoot":"Trash: {n} items \xB7 {size}","penzor.card.appsWarn":"Almost full: after {max}, apps can't save new files. Trash counts too, so emptying it frees space","penzor.card.expSmall":"{n} files","penzor.card.expSub":"Latest: {name} \xB7 {time}","penzor.card.expFoot":"Files exported from apps","penzor.card.none":"Nothing yet","penzor.largest":"Largest files","penzor.col.name":"Name","penzor.col.size":"Size","penzor.col.mtime":"Modified","penzor.col.device":"Written by","penzor.col.deleted":"Deleted","penzor.col.origin":"Original location","penzor.col.app":"From","penzor.sort.mtime":"By modified","penzor.sort.size":"By size","penzor.sort.name":"By name","penzor.search":"Search file names here","penzor.sync.thisDevice":"Syncing on this device","penzor.meta.files":"{size} \xB7 {n} files","penzor.sync.last":"Last write {time} \xB7 {device}","penzor.sync.lastNoDevice":"Last write {time}","penzor.sync.devices":"{n} devices sync this vault","penzor.sync.meter":"Vault sync shares {max}; {used} used","penzor.apps.meter":"App files share {max}; {used} used (trash included)","penzor.apps.by":"Written by {app}","penzor.ama.notCounted":"Not counted in your quota","penzor.ama.open":"Open in Amadeus","penzor.trash.meta":"{n} items \xB7 {size}","penzor.trash.note":"Space frees up once items are deleted permanently","penzor.trash.emptyBtn":"Empty trash","penzor.act.download":"Download","penzor.act.rename":"Rename","penzor.act.move":"Move to\u2026","penzor.act.trash":"Move to trash","penzor.act.delete":"Delete","penzor.act.restore":"Restore","penzor.act.purge":"Delete permanently","penzor.act.copyName":"Copy vault name","penzor.act.openSync":"Open sync settings","penzor.act.refresh":"Refresh","penzor.act.up":"Up one level","penzor.toast.trashed":"Moved \u201C{name}\u201D to trash","penzor.toast.restored":"Restored \u201C{name}\u201D","penzor.toast.purged":"Deleted \u201C{name}\u201D permanently","penzor.toast.emptied":"Trash emptied","penzor.toast.downloaded":"Saved to Downloads: {name}","penzor.toast.renamed":"Renamed to \u201C{name}\u201D","penzor.toast.moved":"Moved to \u201C{name}\u201D","penzor.toast.versionRestored":"Restored version {n}","penzor.toast.copied":"Vault name copied","penzor.toast.failed":"That didn't work: {reason}","penzor.confirm.purge":"Delete \u201C{name}\u201D permanently? This can't be undone.","penzor.confirm.empty":"Empty the trash? {n} items will be deleted permanently.","penzor.confirm.deleteExport":"Delete \u201C{name}\u201D? Exports have no trash, so this can't be undone.","penzor.cancel":"Cancel","penzor.side.where":"Location","penzor.side.mtime":"Modified","penzor.side.device":"Written by","penzor.side.thisDevice":"{name} (this device)","penzor.side.from":"From","penzor.side.versions":"Versions","penzor.side.versionsNone":"None","penzor.side.versionRow":"Version {n} \xB7 {time} \xB7 {size}","penzor.side.restoreVersion":"Restore this version","penzor.side.deletedAt":"Deleted","penzor.side.origin":"Original location","penzor.side.inner":"{n} more items inside come back with it","penzor.side.inTrash":"In trash \xB7 {size}","penzor.side.readonlySync":"Files in a synced vault are changed on your devices. Deleting one here would delete it on every device that syncs {vault}, so here you can only view and download.","penzor.side.readonlyAma":"Notes and attachments are changed in Amadeus. Deleting an attachment here would leave the notes that use it with missing images, so here you can only view and download.","penzor.side.exportNote":"Exports have no trash: deleting is permanent.","penzor.side.none":"Select a file to see its details","penzor.side.folder":"Folder \xB7 {n} items","penzor.side.folderPlain":"Folder","penzor.move.title":"Move to","penzor.move.root":"Top of {app}","penzor.move.here":"Move here","penzor.move.noFolders":"No folders at this level","penzor.rename.save":"Save","penzor.empty.title":"Nothing in Penzor Cloud yet","penzor.empty.lead":"These show up here once they're in the cloud:","penzor.empty.sync":"Pick Penzor Cloud as the remote service in Settings \u203A Sync, and your local vault syncs here","penzor.empty.ama":"Notes you write on the Cloud side of Amadeus","penzor.empty.apps":"Files apps save to the cloud or export","penzor.empty.openSync":"Open sync settings","penzor.out.title":"Sign in to see your Penzor Cloud","penzor.out.lead":"Penzor Cloud holds the vaults you sync to Forsion Cloud, your Amadeus Cloud notes and the files apps keep in the cloud.","penzor.out.signIn":"Sign in to Forsion","penzor.loading":"Loading\u2026","penzor.err":"Couldn't load: {reason}","penzor.folderEmpty":"No files here","penzor.noMatch":"No file names contain \u201C{q}\u201D","penzor.cmd.open":"Open Penzor Cloud","penzor.unreachable":"Can\u2019t reach Forsion Cloud. Try again later","penzor.toast.emptyPartial":"{n} items in the trash couldn\u2019t be deleted","penzor.sort.deleted":"By deleted","penzor.side.versionsN":"{n}","penzor.drive":"My drive","penzor.drive.meta":"Counts toward the {max} for app files","penzor.drive.empty":"Nothing here yet. Drag files in, or click Upload.","penzor.act.upload":"Upload","penzor.act.uploadMore":"More upload options","penzor.act.uploadFiles":"Upload files\u2026","penzor.act.uploadFolder":"Upload folder\u2026","penzor.act.uploadHere":"Upload here\u2026","penzor.act.newFolder":"New folder","penzor.act.clearSel":"Clear selection","penzor.newFolder.default":"New folder","penzor.sel.bar":"{n} selected \xB7 {size}","penzor.sel.title":"{n} selected","penzor.sel.sub":"{size} \xB7 {files} files","penzor.sel.subDirs":"{size} \xB7 {files} files, {dirs} folders","penzor.sel.download":"Download {n}","penzor.sel.saveTo":"Saves to","penzor.sel.saveToValue":"Downloads / {folder}","penzor.sel.noDirs":"Folders can\u2019t be downloaded yet; only the selected files will be.","penzor.download.folder":"Penzor Cloud {date}","penzor.drop.to":"Drop to upload to \u201C{place}\u201D","penzor.tx.busy":"Transferring {n}","penzor.tx.allDone":"All done","penzor.tx.failedN":"{n} didn\u2019t finish","penzor.tx.counts":"{up} up \xB7 {down} down","penzor.tx.eta":"about {eta} left","penzor.tx.doneN":"{n} finished","penzor.tx.restDone":"The other {n} finished","penzor.tx.pill":"{counts} \xB7 {pct}%","penzor.tx.queued":"Queued","penzor.tx.paused":"Paused \xB7 resumes from the start","penzor.tx.uploaded":"Uploaded \xB7 {time}","penzor.tx.downloaded":"Downloaded \xB7 {time}","penzor.tx.canceled":"Canceled","penzor.tx.left":"{eta} left","penzor.tx.sec":"{n}s","penzor.tx.min":"{n} min","penzor.tx.pause":"Pause","penzor.tx.resume":"Resume","penzor.tx.cancel":"Cancel","penzor.tx.retry":"Retry","penzor.tx.remove":"Remove","penzor.tx.locate":"Show","penzor.tx.reveal":"Show in folder","penzor.tx.pauseAll":"Pause all","penzor.tx.resumeAll":"Resume all","penzor.tx.retryAll":"Retry all","penzor.tx.clearDone":"Clear finished","penzor.tx.clear":"Clear","penzor.tx.collapse":"Collapse","penzor.tx.expand":"Show transfers","penzor.tx.quota":"Not enough space: {size} short","penzor.tx.quotaSub":"Nothing in this batch was started","penzor.tx.freeSpace":"Free up space in Trash","penzor.err.too_large":"Over the 50 MB per-file limit ({size}); can\u2019t upload it yet","penzor.err.quota":"Not enough cloud space","penzor.err.network":"Connection lost at {pct}%","penzor.err.account_changed":"You switched accounts, so this one stopped","penzor.err.download_unavailable":"This host cannot save downloads yet. Update Forsion","penzor.err.download_failed":"The file was not saved. Try downloading it again","penzor.err.not_signed_in":"Not signed in","penzor.err.gone":"The file is no longer on this device","penzor.err.popup_blocked":"Your browser blocked the new tab. Allow pop-ups for this site and try again","penzor.err.changed":"The file changed while uploading. Try again","penzor.err.storage_unavailable":"Cloud storage is unavailable right now","penzor.err.other":"Didn\u2019t finish ({code})","penzor.err.too_many":"Up to {n} files at a time. Add them in smaller batches","penzor.toast.upDoneOne":"Uploaded \u201C{name}\u201D","penzor.toast.upDoneMany":"Uploaded {n} files","penzor.toast.downDoneMany":"Downloaded {n} files to Downloads","penzor.toast.txFailed":"{n} transfers didn\u2019t finish. Open Penzor Cloud to check","penzor.toast.folderExists":"There\u2019s already a folder called \u201C{name}\u201D","penzor.toast.trashedN":"Moved {n} items to the trash","penzor.toast.movedN":"Moved {n} items to \u201C{name}\u201D","penzor.toast.batchPartial":"{n} items didn\u2019t go through","penzor.sync.title":"Sync","penzor.sync.onN":"{n} on","penzor.sync.allOff":"All off","penzor.sync.waiting":"Waiting for you","penzor.sync.badgeWaiting":"{n} on \xB7 1 waiting for you","penzor.sync.running":"Syncing {pct}%","penzor.sync.runningPlain":"Syncing","penzor.sync.metaDevice":"This computer: {name}","penzor.sync.metaLast":"Last synced {time}","penzor.sync.metaNever":"Not synced yet","penzor.sync.every":"Every {n} min","penzor.sync.everyHours":"Every {n} h","penzor.sync.manual":"Manual","penzor.sync.onStart":"once at startup","penzor.sync.minAgo":"{n} min ago","penzor.sync.hoursAgo":"{n} h ago","penzor.sync.notesNamed":"Notes vault \u201C{name}\u201D","penzor.sync.notesPlain":"This computer\u2019s notes vault","penzor.sync.notesDesc":"The whole local vault, kept the same on your other computers","penzor.sync.agents":"Agents & memory","penzor.sync.agentsDesc":"Your agents\u2019 memory, logs, skills and working notes, plus your profile and default calendar","penzor.sync.conflictsN":"Conflict copies: {n}","penzor.sync.conflictsHint":"Files changed on both sides are kept twice: the other version is saved as a copy with \u201Cconflict\u201D in its name, in that agent\u2019s folder (or your profile folder)","penzor.sync.pluginsPending":"Changes not uploaded yet: {n} plugins","penzor.sync.agentsN":"Agents: {n}","penzor.sync.plugins":"Plugin data","penzor.sync.pluginsDesc":"Settings and data your plugins keep","penzor.sync.pluginsN":"Plugins: {n}","penzor.sync.off":"Off","penzor.sync.done":"Synced","penzor.sync.doneSize":"Synced \xB7 {size}","penzor.sync.firstPending":"Waiting for the first sync","penzor.sync.failed":"Last sync failed","penzor.sync.overQuota":"Over the limit, some files not uploaded","penzor.sync.to":"Syncing to {name}","penzor.sync.toFolder":"Syncing to a local folder","penzor.sync.decideAbove":"Choose in the card above","penzor.sync.kvSchedule":"Schedule","penzor.sync.kvDirection":"Direction","penzor.sync.kvSkipped":"Not uploaded","penzor.sync.kvWhere":"In the cloud","penzor.sync.change":"Change","penzor.sync.open":"Open","penzor.sync.dir.both":"Both ways","penzor.sync.dir.push":"Upload only","penzor.sync.dir.pull":"Download only","penzor.sync.skippedN":"{n} files over {size}","penzor.sync.where":"{ledger} \u203A {vault}","penzor.sync.whereUsed":"{ledger} \u203A {vault} \xB7 {used} / {max}","penzor.sync.devicesTitle":"Devices syncing","penzor.sync.thisOne":"This computer","penzor.sync.lastWrite":"Last write {time}","penzor.sync.noDevices":"No devices are syncing yet","penzor.sync.phoneTitle":"What your phone and the web see","penzor.sync.phoneTip":"Your phone and the web read the cloud vault (the cloud side of Amadeus, {size}) directly. It always syncs, and it\u2019s a separate copy from this computer\u2019s notes vault above. To see a folder from this computer on your phone, right-click it in your notes and sync it to the cloud vault.","penzor.sync.phoneTipPlain":"Your phone and the web read the cloud vault (the cloud side of Amadeus) directly. It always syncs, and it\u2019s a separate copy from this computer\u2019s notes vault above. To see a folder from this computer on your phone, right-click it in your notes and sync it to the cloud vault.","penzor.sync.foot":"Schedule, direction and other storage (Dropbox / S3 / WebDAV) are in","penzor.sync.footLink":"Settings \u203A Sync","penzor.sync.askTitle":"There\u2019s already a notes vault in the cloud","penzor.sync.askCloud":"The cloud copy is from {device}: {files} files \xB7 {size}.","penzor.sync.askCloudNoDevice":"The cloud copy: {files} files \xB7 {size}.","penzor.sync.askLocal":"This computer has {local} files the cloud copy doesn\u2019t, and {conflicts} that differ.","penzor.sync.askMerge":"Merge both","penzor.sync.askCloudBtn":"Use the cloud copy","penzor.sync.askSkip":"Don\u2019t sync notes on this computer yet","penzor.sync.askExplain":"Merge keeps both sides; files that differ are saved again as a \u201C(conflict)\u201D copy. Use the cloud copy first moves this computer\u2019s differing files into a \u201C{backup}\u201D folder next to the vault, then downloads the cloud copy.","penzor.sync.askConfirm":"This computer\u2019s differing files move to \u201C{backup}\u201D first, then the cloud copy replaces them.","penzor.sync.askConfirmGo":"Move them and use the cloud copy","penzor.sync.backupName":"{name} backup before sync {date}","penzor.sync.quotaTitle":"Your notes vault is {size}, over the {max} limit of {ledger}","penzor.sync.quotaTitlePlain":"Your notes vault is over the {ledger} limit","penzor.sync.quotaBody":"Files that don\u2019t fit stay on this computer. Nothing is deleted, they just aren\u2019t uploaded, and everything else keeps syncing.","penzor.sync.quotaLarge":"Single files over {size} are never uploaded ({n}).","penzor.sync.quotaSee":"See what\u2019s not uploaded","su.title":"Store update","su.source.github":"GitHub source","su.source.npm":"npm source","su.source.zip":"ZIP upload","su.review":"In review","su.approved":"Approved","su.rejected":"Not approved","su.viaGithub":"GitHub release {tag}","su.viaNpm":"npm {version}","su.metaReview":"Submitted {time} \xB7 The result will arrive in your inbox","su.metaReviewNoTime":"The result will arrive in your inbox","su.metaApproved":"The Store now shows {version}","su.metaApprovedInfo":"The Store info is updated","su.metaRejected":"The Store keeps {version}","su.metaRejectedUnlisted":"Not listed yet","su.infoOnly":"Store info only","su.listSep":", ","su.openSubmission":"Open in Submissions"},zl={zh:am,en:im},Ze=e=>e==="en"?"en":"zh";function xe(e,t,n){let r=zl[e][t]??zl.zh[t]??t;return n?r.replace(/\{(\w+)\}/g,(a,i)=>i in n?String(n[i]):a):r}var zo=e=>(t,n)=>xe(e,t,n),Wt=(e,t)=>"raw"in e?e.raw:t(e.key,e.vars);var Sl=`
|
|
68
|
+
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Ut(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,text:n,tokens:r,autolink:a}){let i=a?Ut(n,!0):this.parser.parseInline(r),s=ul(e);if(s===null)return i;e=Ut(s,a);let l='<a href="'+e+'"';return t&&(l+=' title="'+Ut(t)+'"'),l+=">"+i+"</a>",l}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let a=ul(e);if(a===null)return Ut(n);e=a;let i=`<img src="${Ut(e)}" alt="${Ut(n)}"`;return t&&(i+=` title="${Ut(t)}"`),i+=">",i}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Ut(e.text)}},Wa=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},Qt=class Na{options;renderer;textRenderer;constructor(t){this.options=t||oo,this.options.renderer=this.options.renderer||new Ir,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Wa}static parse(t,n){return new Na(n).parse(t)}static parseInline(t,n){return new Na(n).parseInline(t)}parse(t){this.renderer.parser=this;let n="";for(let r=0;r<t.length;r++){let a=t[r];if(this.options.extensions?.renderers?.[a.type]){let s=a,l=this.options.extensions.renderers[s.type].call({parser:this},s);if(l!==!1||!["space","hr","heading","code","table","blockquote","list","checkbox","html","def","paragraph","text"].includes(s.type)){n+=l||"";continue}}let i=a;switch(i.type){case"space":{n+=this.renderer.space(i);break}case"hr":{n+=this.renderer.hr(i);break}case"heading":{n+=this.renderer.heading(i);break}case"code":{n+=this.renderer.code(i);break}case"table":{n+=this.renderer.table(i);break}case"blockquote":{n+=this.renderer.blockquote(i);break}case"list":{n+=this.renderer.list(i);break}case"checkbox":{n+=this.renderer.checkbox(i);break}case"html":{n+=this.renderer.html(i);break}case"def":{n+=this.renderer.def(i);break}case"paragraph":{n+=this.renderer.paragraph(i);break}case"text":{n+=this.renderer.text(i);break}default:{let s='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(s),"";throw new Error(s)}}}return n}parseInline(t,n=this.renderer){this.renderer.parser=this;let r="";for(let a=0;a<t.length;a++){let i=t[a];if(this.options.extensions?.renderers?.[i.type]){let l=this.options.extensions.renderers[i.type].call({parser:this},i);if(l!==!1||!["escape","html","link","image","checkbox","strong","em","codespan","br","del","text"].includes(i.type)){r+=l||"";continue}}let s=i;switch(s.type){case"escape":{r+=n.text(s);break}case"html":{r+=n.html(s);break}case"link":{r+=n.link(s);break}case"image":{r+=n.image(s);break}case"checkbox":{r+=n.checkbox(s);break}case"strong":{r+=n.strong(s);break}case"em":{r+=n.em(s);break}case"codespan":{r+=n.codespan(s);break}case"br":{r+=n.br(s);break}case"del":{r+=n.del(s);break}case"text":{r+=n.text(s);break}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return r}},Yo=class{options;block;constructor(e){this.options=e||oo}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?Zt.lex:Zt.lexInline}provideParser(e=this.block){return e?Qt.parse:Qt.parseInline}},Va=class{defaults=Oa();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Qt;Renderer=Ir;TextRenderer=Wa;Lexer=Zt;Tokenizer=Rr;Hooks=Yo;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case"table":{let a=r;for(let i of a.header)n=n.concat(this.walkTokens(i.tokens,t));for(let i of a.rows)for(let s of i)n=n.concat(this.walkTokens(s.tokens,t));break}case"list":{let a=r;n=n.concat(this.walkTokens(a.items,t));break}default:{let a=r;this.defaults.extensions?.childTokens?.[a.type]?this.defaults.extensions.childTokens[a.type].forEach(i=>{let s=a[i].flat(1/0);n=n.concat(this.walkTokens(s,t))}):a.tokens&&(n=n.concat(this.walkTokens(a.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let i=t.renderers[a.name];i?t.renderers[a.name]=function(...s){let l=a.renderer.apply(this,s);return l===!1&&(l=i.apply(this,s)),l}:t.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=t[a.level];i?i.unshift(a.tokenizer):t[a.level]=[a.tokenizer],a.start&&(a.level==="block"?t.startBlock?t.startBlock.push(a.start):t.startBlock=[a.start]:a.level==="inline"&&(t.startInline?t.startInline.push(a.start):t.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(t.childTokens[a.name]=a.childTokens)}),r.extensions=t),n.renderer){let a=this.defaults.renderer||new Ir(this.defaults);for(let i in n.renderer){if(!(i in a))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let s=i,l=n.renderer[s],c=a[s];a[s]=(...d)=>{let g=l.apply(a,d);return g===!1&&(g=c.apply(a,d)),g||""}}r.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new Rr(this.defaults);for(let i in n.tokenizer){if(!(i in a))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let s=i,l=n.tokenizer[s],c=a[s];a[s]=(...d)=>{let g=l.apply(a,d);return g===!1&&(g=c.apply(a,d)),g}}r.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new Yo;for(let i in n.hooks){if(!(i in a))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let s=i,l=n.hooks[s],c=a[s];Yo.passThroughHooks.has(i)?a[s]=d=>{if(this.defaults.async&&Yo.passThroughHooksRespectAsync.has(i))return(async()=>{let u=await l.call(a,d);return c.call(a,u)})();let g=l.call(a,d);return c.call(a,g)}:a[s]=(...d)=>{if(this.defaults.async)return(async()=>{let u=await l.apply(a,d);return u===!1&&(u=await c.apply(a,d)),u})();let g=l.apply(a,d);return g===!1&&(g=c.apply(a,d)),g}}r.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,i=n.walkTokens;r.walkTokens=function(s){let l=[];return l.push(i.call(this,s)),a&&(l=l.concat(a.call(this,s))),l}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return Zt.lex(e,t??this.defaults)}parser(e,t){return Qt.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},a={...this.defaults,...r},i=this.onError(!!a.silent,!!a.async);if(this.defaults.async===!0&&r.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(a.hooks&&(a.hooks.options=a,a.hooks.block=e),a.async)return(async()=>{let s=a.hooks?await a.hooks.preprocess(t):t,l=await(a.hooks?await a.hooks.provideLexer(e):e?Zt.lex:Zt.lexInline)(s,a),c=a.hooks?await a.hooks.processAllTokens(l):l;a.walkTokens&&await Promise.all(this.walkTokens(c,a.walkTokens));let d=await(a.hooks?await a.hooks.provideParser(e):e?Qt.parse:Qt.parseInline)(c,a);return a.hooks?await a.hooks.postprocess(d):d})().catch(i);try{a.hooks&&(t=a.hooks.preprocess(t));let s=(a.hooks?a.hooks.provideLexer(e):e?Zt.lex:Zt.lexInline)(t,a);a.hooks&&(s=a.hooks.processAllTokens(s)),a.walkTokens&&this.walkTokens(s,a.walkTokens);let l=(a.hooks?a.hooks.provideParser(e):e?Qt.parse:Qt.parseInline)(s,a);return a.hooks&&(l=a.hooks.postprocess(l)),l}catch(s){return i(s)}}}onError(e,t){return n=>{if(n.message+=`
|
|
69
|
+
Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error occurred:</p><pre>"+Ut(n.message+"",!0)+"</pre>";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}},no=new Va;function Ne(e,t){return no.parse(e,t)}Ne.options=Ne.setOptions=function(e){return no.setOptions(e),Ne.defaults=no.defaults,vl(Ne.defaults),Ne};Ne.getDefaults=Oa;Ne.defaults=oo;function Wm(...e){return no.use(...e),Ne.defaults=no.defaults,vl(Ne.defaults),Ne}Ne.use=Wm;Ne.walkTokens=function(e,t){return no.walkTokens(e,t)};Ne.parseInline=no.parseInline;Ne.Parser=Qt;Ne.parser=Qt.parse;Ne.Renderer=Ir;Ne.TextRenderer=Wa;Ne.Lexer=Zt;Ne.lexer=Zt.lex;Ne.Tokenizer=Rr;Ne.Hooks=Yo;Ne.parse=Ne;var Zb=Ne.options,Qb=Ne.setOptions,ey=Ne.walkTokens,ty=Ne.parseInline;var ny=Qt.parse,oy=Zt.lex;var $r,me,El,Vm,Un,Cl,Pl,Ml,ja,Dr,tr,Rl,Ka,Ga,Xa,Il,Or={},Fr=[],jm=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,nr=Array.isArray;function xn(e,t){for(var n in t)e[n]=t[n];return e}function Ya(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function ao(e,t,n){var r,a,i,s={};for(i in t)i=="key"?r=t[i]:i=="ref"?a=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?$r.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)s[i]===void 0&&(s[i]=e.defaultProps[i]);return Nr(e,s,r,a,null)}function Nr(e,t,n,r,a){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++El,__i:-1,__u:0};return a==null&&me.vnode!=null&&me.vnode(i),i}function N(e){return e.children}function en(e,t){this.props=e,this.context=t}function ro(e,t){if(t==null)return e.__?ro(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?ro(e):null}function Gm(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,r=[],a=[],i=xn({},t);i.__v=t.__v+1,me.vnode&&me.vnode(i),Za(e.__P,i,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,r,n??ro(t),!!(32&t.__u),a),i.__v=t.__v,i.__.__k[i.__i]=i,Fl(r,i,a),t.__e=t.__=null,i.__e!=n&&Ll(i)}}function Ll(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),Ll(e)}function Ja(e){(!e.__d&&(e.__d=!0)&&Un.push(e)&&!Br.__r++||Cl!=me.debounceRendering)&&((Cl=me.debounceRendering)||Pl)(Br)}function Br(){try{for(var e,t=1;Un.length;)Un.length>t&&Un.sort(Ml),e=Un.shift(),t=Un.length,Gm(e)}finally{Un.length=Br.__r=0}}function Dl(e,t,n,r,a,i,s,l,c,d,g){var u,p,m,f,v,k,z=r&&r.__k||Fr,x=t.length;for(c=Xm(n,t,z,c,x),u=0;u<x;u++)(m=n.__k[u])!=null&&(p=m.__i!=-1&&z[m.__i]||Or,m.__i=u,k=Za(e,m,p,a,i,s,l,c,d,g),f=m.__e,m.ref&&p.ref!=m.ref&&(p.ref&&Qa(p.ref,null,m),g.push(m.ref,m.__c||f,m)),v==null&&f!=null&&(v=f),4&m.__u?(c=Nl(m,c,e),p.__e&&(p.__e=null)):typeof m.type=="function"&&k!==void 0?c=k:f&&(c=f.nextSibling),m.__u&=-7);return n.__e=v,c}function Xm(e,t,n,r,a){var i,s,l,c,d,g=n.length,u=g,p=0;for(e.__k=new Array(a),i=0;i<a;i++)(s=t[i])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=e.__k[i]=Nr(null,s,null,null,null):nr(s)?s=e.__k[i]=Nr(N,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=e.__k[i]=Nr(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[i]=s,c=i+p,s.__=e,s.__b=e.__b+1,l=null,(d=s.__i=Jm(s,n,c,u))!=-1&&(u--,(l=n[d])&&(l.__u|=2)),l==null||l.__v==null?(d==-1&&(a>g?p--:a<g&&p++),typeof s.type!="function"&&(s.__u|=4)):d!=c&&(d==c-1?p--:d==c+1?p++:(d>c?p--:p++,s.__u|=4))):e.__k[i]=null;if(u)for(i=0;i<g;i++)(l=n[i])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=ro(l)),$l(l,l));return r}function Nl(e,t,n){var r,a;if(typeof e.type=="function"){for(r=e.__k,a=0;r&&a<r.length;a++)r[a]&&(r[a].__=e,t=Nl(r[a],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=ro(e)),t=n.insertBefore(e.__e,t||null));do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function or(e,t){return t=t||[],e==null||typeof e=="boolean"||(nr(e)?e.some(function(n){or(n,t)}):t.push(e)),t}function Jm(e,t,n,r){var a,i,s,l=e.key,c=e.type,d=t[n],g=d!=null&&(2&d.__u)==0;if(d===null&&l==null||g&&l==d.key&&c==d.type)return n;if(r>(g?1:0)){for(a=n-1,i=n+1;a>=0||i<t.length;)if((d=t[s=a>=0?a--:i++])!=null&&(2&d.__u)==0&&l==d.key&&c==d.type)return s}return-1}function Tl(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||jm.test(t)?n:n+"px"}function Lr(e,t,n,r,a){var i,s;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof r=="string"&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Tl(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||Tl(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")i=t!=(t=t.replace(Rl,"$1")),s=t.toLowerCase(),t=s in e||t=="onFocusOut"||t=="onFocusIn"?s.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r?n[tr]=r[tr]:(n[tr]=Ka,e.addEventListener(t,i?Xa:Ga,i)):e.removeEventListener(t,i?Xa:Ga,i);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Al(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[Dr]==null)t[Dr]=Ka++;else if(t[Dr]<n[tr])return;return n(me.event?me.event(t):t)}}}function Za(e,t,n,r,a,i,s,l,c,d){var g,u,p,m,f,v,k,z,x,w,P,L,U,H,B,G,_=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(c=!!(32&n.__u),i=[l=t.__e=n.__e]),(g=me.__b)&&g(t);e:if(typeof _=="function"){u=s.length;try{if(x=t.props,w=_.prototype&&_.prototype.render,P=(g=_.contextType)&&r[g.__c],L=g?P?P.props.value:g.__:r,n.__c?z=(p=t.__c=n.__c).__=p.__E:(w?t.__c=p=new _(x,L):(t.__c=p=new en(x,L),p.constructor=_,p.render=Ym),P&&P.sub(p),p.state||(p.state={}),p.__n=r,m=p.__d=!0,p.__h=[],p._sb=[]),w&&p.__s==null&&(p.__s=p.state),w&&_.getDerivedStateFromProps!=null&&(p.__s==p.state&&(p.__s=xn({},p.__s)),xn(p.__s,_.getDerivedStateFromProps(x,p.__s))),f=p.props,v=p.state,p.__v=t,m)w&&_.getDerivedStateFromProps==null&&p.componentWillMount!=null&&p.componentWillMount(),w&&p.componentDidMount!=null&&p.__h.push(p.componentDidMount);else{if(w&&_.getDerivedStateFromProps==null&&x!==f&&p.componentWillReceiveProps!=null&&p.componentWillReceiveProps(x,L),t.__v==n.__v||!p.__e&&p.shouldComponentUpdate!=null&&p.shouldComponentUpdate(x,p.__s,L)===!1){t.__v!=n.__v&&(p.props=x,p.state=p.__s,p.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(E){E&&(E.__=t)}),Fr.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&s.push(p),l=ro(n);break e}p.componentWillUpdate!=null&&p.componentWillUpdate(x,p.__s,L),w&&p.componentDidUpdate!=null&&p.__h.push(function(){p.componentDidUpdate(f,v,k)})}if(p.context=L,p.props=x,p.__P=e,p.__e=!1,U=me.__r,H=0,w)p.state=p.__s,p.__d=!1,U&&U(t),g=p.render(p.props,p.state,p.context),Fr.push.apply(p.__h,p._sb),p._sb=[];else do p.__d=!1,U&&U(t),g=p.render(p.props,p.state,p.context),p.state=p.__s;while(p.__d&&++H<25);p.state=p.__s,p.getChildContext!=null&&(r=xn(xn({},r),p.getChildContext())),w&&!m&&p.getSnapshotBeforeUpdate!=null&&(k=p.getSnapshotBeforeUpdate(f,v)),B=g!=null&&g.type===N&&g.key==null?Bl(g.props.children):g,l=Dl(e,nr(B)?B:[B],t,n,r,a,i,s,l,c,d),p.base=t.__e,t.__u&=-161,p.__h.length&&s.push(p),z&&(p.__E=p.__=null)}catch(E){if(s.length=u,t.__v=null,c||i!=null){if(E.then){for(t.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;i!=null&&(i[i.indexOf(l)]=null),t.__e=l}else if(i!=null)for(G=i.length;G--;)Ya(i[G])}else t.__e=n.__e;t.__k==null&&(t.__k=n.__k||[]),E.then||Ol(t),me.__e(E,t,n)}}else i==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):l=t.__e=Km(n.__e,t,n,r,a,i,s,c,d);return(g=me.diffed)&&g(t),128&t.__u?void 0:l}function Ol(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Ol))}function Fl(e,t,n){for(var r=0;r<n.length;r++)Qa(n[r],n[++r],n[++r]);me.__c&&me.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(i){i.call(a)})}catch(i){me.__e(i,a.__v)}})}function Bl(e){return typeof e!="object"||e==null||e.__b>0?e:nr(e)?e.map(Bl):e.constructor!==void 0?null:xn({},e)}function Km(e,t,n,r,a,i,s,l,c){var d,g,u,p,m,f,v,k=n.props||Or,z=t.props,x=t.type;if(x=="svg"?a="http://www.w3.org/2000/svg":x=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),i!=null){for(d=0;d<i.length;d++)if((m=i[d])&&"setAttribute"in m==!!x&&(x?m.localName==x:m.nodeType==3)){e=m,i[d]=null;break}}if(e==null){if(x==null)return document.createTextNode(z);e=document.createElementNS(a,x,z.is&&z),l&&(me.__m&&me.__m(t,i),l=!1),i=null}if(x==null)k===z||l&&e.data==z||(e.data=z);else{if(i=x=="textarea"&&z.defaultValue!=null?null:i&&$r.call(e.childNodes),!l&&i!=null)for(k={},d=0;d<e.attributes.length;d++)k[(m=e.attributes[d]).name]=m.value;for(d in k)m=k[d],d=="dangerouslySetInnerHTML"?u=m:d=="children"||d in z||d=="value"&&"defaultValue"in z||d=="checked"&&"defaultChecked"in z||Lr(e,d,null,m,a);for(d in z)m=z[d],d=="children"?p=m:d=="dangerouslySetInnerHTML"?g=m:d=="value"?f=m:d=="checked"?v=m:l&&typeof m!="function"||k[d]===m||Lr(e,d,m,k[d],a);if(g)l||u&&(g.__html==u.__html||g.__html==e.innerHTML)||(e.innerHTML=g.__html),t.__k=[];else if(u&&(e.innerHTML=""),Dl(t.type=="template"?e.content:e,nr(p)?p:[p],t,n,r,x=="foreignObject"?"http://www.w3.org/1999/xhtml":a,i,s,i?i[0]:n.__k&&ro(n,0),l,c),i!=null)for(d=i.length;d--;)Ya(i[d]);l&&x!="textarea"||(d="value",x=="progress"&&f==null?e.removeAttribute("value"):f!=null&&(f!==e[d]||x=="progress"&&!f||x=="option"&&f!=k[d])&&Lr(e,d,f,k[d],a),d="checked",v!=null&&v!=e[d]&&Lr(e,d,v,k[d],a))}return e}function Qa(e,t,n){try{if(typeof e=="function"){var r=typeof e.__u=="function";r&&e.__u(),r&&t==null||(e.__u=e(t))}else e.current=t}catch(a){me.__e(a,n)}}function $l(e,t,n){var r,a;if(me.unmount&&me.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||Qa(r,null,t)),(r=e.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(i){me.__e(i,t)}r.base=r.__P=r.__n=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&$l(r[a],t,n||typeof e.type!="function");n||Ya(e.__e),e.__c=e.__=e.__e=void 0}function Ym(e,t,n){return this.constructor(e,n)}function Me(e,t,n){var r,a,i,s;t==document&&(t=document.documentElement),me.__&&me.__(e,t),a=(r=typeof n=="function")?null:n&&n.__k||t.__k,i=[],s=[],Za(t,e=(!r&&n||t).__k=ao(N,null,[e]),a||Or,Or,t.namespaceURI,!r&&n?[n]:a?null:t.firstChild?$r.call(t.childNodes):null,i,!r&&n?n:a?a.__e:t.firstChild,r,s),Fl(i,e,s),e.props.children=null}function Ur(e){function t(n){var r,a;return this.getChildContext||(r=new Set,(a={})[t.__c]=this,this.getChildContext=function(){return a},this.componentWillUnmount=function(){r=null},this.shouldComponentUpdate=function(i){this.props.value!=i.value&&r.forEach(function(s){s.__e=!0,Ja(s)})},this.sub=function(i){r.add(i);var s=i.componentWillUnmount;i.componentWillUnmount=function(){r&&r.delete(i),s&&s.call(i)}}),n.children}return t.__c="__cC"+Il++,t.__=e,t.Provider=t.__l=(t.Consumer=function(n,r){return n.children(r)}).contextType=t,t}$r=Fr.slice,me={__e:function(e,t,n,r){for(var a,i,s;t=t.__;)if((a=t.__c)&&!a.__)try{if((i=a.constructor)&&i.getDerivedStateFromError!=null&&(a.setState(i.getDerivedStateFromError(e)),s=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,r||{}),s=a.__d),s)return a.__E=a}catch(l){e=l}throw e}},El=0,Vm=function(e){return e!=null&&e.constructor===void 0},en.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=xn({},this.state),typeof e=="function"&&(e=e(xn({},n),this.props)),e&&xn(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ja(this))},en.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ja(this))},en.prototype.render=N,Un=[],Pl=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ml=function(e,t){return e.__v.__b-t.__v.__b},Br.__r=0,ja=Math.random().toString(8),Dr="__d"+ja,tr="__a"+ja,Rl=/(PointerCapture)$|Capture$/i,Ka=0,Ga=Al(!1),Xa=Al(!0),Il=0;var Hn,He,ei,Ul,rr=0,Jl=[],Ke=me,Hl=Ke.__b,ql=Ke.__r,Wl=Ke.diffed,Vl=Ke.__c,jl=Ke.unmount,Gl=Ke.__;function To(e,t){Ke.__h&&Ke.__h(He,e,rr||t),rr=0;var n=He.__H||(He.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function C(e){return rr=1,Kl(Yl,e)}function Kl(e,t,n){var r=To(Hn++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):Yl(void 0,t),function(l){var c=r.__N?r.__N[0]:r.__[0],d=r.t(c,l);c!==d&&(r.__N=[d,r.__[1]],r.__c.setState({}))}],r.__c=He,!He.__f)){var a=function(l,c,d){if(!r.__c.__H)return!0;var g=!1,u=r.__c.props!==l;if(r.__c.__H.__.some(function(m){if(m.__N){g=!0;var f=m.__[0];m.__=m.__N,m.__N=void 0,f!==m.__[0]&&(u=!0)}}),i){var p=i.call(this,l,c,d);return g?p||u:p}return!g||u};He.__f=!0;var i=He.shouldComponentUpdate,s=He.componentWillUpdate;He.componentWillUpdate=function(l,c,d){if(this.__e){var g=i;i=void 0,a(l,c,d),i=g}s&&s.call(this,l,c,d)},He.shouldComponentUpdate=a}return r.__N||r.__}function J(e,t){var n=To(Hn++,3);!Ke.__s&&oi(n.__H,t)&&(n.__=e,n.u=t,He.__H.__h.push(n))}function qn(e,t){var n=To(Hn++,4);!Ke.__s&&oi(n.__H,t)&&(n.__=e,n.u=t,He.__h.push(n))}function re(e){return rr=5,Ht(function(){return{current:e}},[])}function Ht(e,t){var n=To(Hn++,7);return oi(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function tn(e,t){return rr=8,Ht(function(){return e},t)}function ni(e){var t=He.context[e.__c],n=To(Hn++,9);return n.c=e,t?(n.__==null&&(n.__=!0,t.sub(He)),t.props.value):e.__}function io(){var e=To(Hn++,11);if(!e.__){for(var t=He.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function Zm(){for(var e;e=Jl.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(Hr),t.__h.some(ti),t.__h=[]}catch(n){t.__h=[],Ke.__e(n,e.__v)}}}Ke.__b=function(e){He=null,Hl&&Hl(e)},Ke.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Gl&&Gl(e,t)},Ke.__r=function(e){ql&&ql(e),Hn=0;var t=(He=e.__c).__H;t&&(ei===He?(t.__h=[],He.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(Hr),t.__h.some(ti),t.__h=[],Hn=0)),ei=He},Ke.diffed=function(e){Wl&&Wl(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Jl.push(t)!==1&&Ul===Ke.requestAnimationFrame||((Ul=Ke.requestAnimationFrame)||Qm)(Zm)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),ei=He=null},Ke.__c=function(e,t){t.some(function(n){try{n.__h.some(Hr),n.__h=n.__h.filter(function(r){return!r.__||ti(r)})}catch(r){t.some(function(a){a.__h&&(a.__h=[])}),t=[],Ke.__e(r,n.__v)}}),Vl&&Vl(e,t)},Ke.unmount=function(e){jl&&jl(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(r){try{Hr(r)}catch(a){t=a}}),n.__H=void 0,t&&Ke.__e(t,n.__v))};var Xl=typeof requestAnimationFrame=="function";function Qm(e){var t,n=function(){clearTimeout(r),Xl&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);Xl&&(t=requestAnimationFrame(n))}function Hr(e){var t=He,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),He=t}function ti(e){var t=He;e.__c=e.__(),He=t}function oi(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function Yl(e,t){return typeof t=="function"?t(e):t}var ri=null;function Zl(e){ri=e}function nn(e){return ri&&e&&typeof window<"u"&&e===window.tangu?{...e,...ri}:e}var kn=e=>!!(e?.unitPage&&e.unitPublicEntry||e?.mobile&&e.extendMobile),wn=e=>!!e&&(!e.unitPage||!!e.unitPublicEntry),oe=()=>nn(typeof window<"u"?window.tangu:void 0)||{};function qr(e){let t=typeof e?.status=="number"?e.status:0;if(t>=200&&t<300)return{ok:!0,status:t,data:e?.json??null};let n=e?.json&&typeof e.json=="object"?e.json:null,r=typeof n?.error=="string"?n.error:typeof n?.code=="string"?n.code:null,a=typeof n?.detail=="string"?n.detail:typeof n?.message=="string"?n.message:null;return{ok:!1,status:t,code:r,detail:a,transport:typeof e?.error=="string"?e.error:null}}var ai=e=>({ok:!1,status:0,code:null,detail:null,transport:e});async function te(e,t={}){let n=oe().cloudFetch;if(!n)return ai("no_bridge");try{return qr(await n({path:e,...t}))}catch(r){return ai(String(r?.message||r))}}async function Wr(e,t){if(!e)return t();try{return qr(await e())}catch(n){return ai(String(n?.message||n))}}var zn=e=>e.status===401&&(e.transport==="not_signed_in"||e.code===null&&e.detail===null&&e.transport===null);function xt(e){return String(e?.message??e??"").replace(/^Error invoking remote method '[^']*':\s*/,"").replace(/^(?:[A-Za-z]*Error):\s*/,"").trim()}async function Wn(e,t,n){let r=oe().cloudInvoke;if(!r)return!1;let a=e==="membership"&&t?n?[e,t,n]:[e,t]:[e];try{return!!(await r("auth:openPayCenter",...a))?.ok}catch{return!1}}async function so(e){let t=oe().openAccountCenter;if(!t)return!1;try{return!!(await t(e)).ok}catch{return!1}}var eg=0;function o(e,t,n,r,a,i){t||(t={});var s,l,c=t;if("ref"in c)for(l in c={},t)l=="ref"?s=t[l]:c[l]=t[l];var d={type:e,props:c,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--eg,__i:-1,__u:0,__source:a,__self:i};if(typeof e=="function"&&(s=e.defaultProps))for(l in s)c[l]===void 0&&(c[l]=s[l]);return me.vnode&&me.vnode(d),d}var tg={user:"M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M4 20c.8-3.5 4-5.5 8-5.5s7.2 2 8 5.5",backpack:"M9 5V3h6v2 M6 8a6 6 0 0 1 12 0v12H6V8Z M9 13h6v5H9z M3 11h3v7H3z M18 11h3v7h-3 M10 8h4",gauge:"M4 16a8 8 0 1 1 16 0 M12 16l4-5 M12 16h.01",bug:"M8.5 9.5a3.5 3.5 0 0 1 7 0V15a3.5 3.5 0 0 1-7 0V9.5Z M12 10v8 M4 13h4.5 M15.5 13H20 M5 8.5l3.5 2 M19 8.5l-3.5 2 M5 18.5l3.5-2 M19 18.5l-3.5-2 M10 6L9 4 M14 6l1-2",pointer:"M5 4l13 6.5-5.5 1.5L10.5 18 5 4Z",shield:"M12 3l7 3v5c0 4.5-3 8.2-7 10-4-1.8-7-5.5-7-10V6l7-3Z",chart:"M4 20V10 M10 20V4 M16 20v-7 M21 20H3",message:"M5 4h14a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-7l-5 4v-4H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z",card:"M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Z M3 10h18 M7 15h4",coins:"M9 11a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z M15.5 9.2A5 5 0 1 1 9.8 16",clock:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M12 7v5l3 2",gift:"M4 11h16v9H4z M3 7h18v4H3z M12 7v13 M12 7c-1.5-3-5-3-5-1s3 1 5 1c2 0 5 1 5-1s-3.5-2-5 1",key:"M8 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M11 11h10 M17 11v3 M20 11v2",laptop:"M5 5h14v10H5z M3 19h18",alert:"M12 4l9 16H3l9-16Z M12 10v4 M12 17h.01",external:"M14 4h6v6 M20 4l-9 9 M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5",copy:"M9 9h11v11H9z M5 15H4V4h11v1",check:"M5 12.5l4.5 4.5L19 7.5",checkin:"M5 5h14v15H5z M5 10h14 M9 3v4 M15 3v4 M9 15l2 2 4-4",tasks:"M4 6l2 2 3-3 M4 16l2 2 3-3 M12 7h9 M12 17h9",gamepad:"M6 8h12a4 4 0 0 1 4 4v3a3 3 0 0 1-5.4 1.8L15 15H9l-1.6 1.8A3 3 0 0 1 2 15v-3a4 4 0 0 1 4-4Z M7 11v3 M5.5 12.5h3 M15.5 12h.01 M18 13.5h.01",megaphone:"M4 10v4h3l9 4V6l-9 4H4Z M19 10a3 3 0 0 1 0 4 M8 14.5V19h3v-3",play:"M7 5l12 7-12 7V5Z",chevron:"M9 6l6 6-6 6",back:"M15 6l-6 6 6 6",arrowLeft:"M19 12H5M11 6l-6 6 6 6",pencil:"M4 20h4L19 9l-4-4L4 16v4Z M13.5 6.5l4 4",plus:"M12 5v14 M5 12h14",refresh:"M20 11a8 8 0 0 0-14.3-4.9L4 8 M4 4v4h4 M4 13a8 8 0 0 0 14.3 4.9L20 16 M20 20v-4h-4",phone:"M8 3h8a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M11 18h2",mail:"M4 6h16v12H4z M4 7l8 6 8-6",image:"M4 5h16v14H4z M4 16l5-5 4 4 3-3 4 4 M15.5 9.5h.01",x:"M6 6l12 12 M18 6L6 18",logout:"M15 4h4v16h-4 M10 8l-4 4 4 4 M6 12h10",globe:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M3 12h18 M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3Z",lock:"M6 11h12v9H6z M8.5 11V8a3.5 3.5 0 0 1 7 0v3",palette:"M12 3a9 9 0 0 0 0 18c1.2 0 2-.8 2-1.9 0-.5-.2-.9-.5-1.3-.3-.4-.5-.8-.5-1.3 0-1 .8-1.8 1.8-1.8H17a4 4 0 0 0 4-4c0-4.3-4-7.7-9-7.7Z M7.5 12.5h.01 M9 8.5h.01 M14 7.5h.01",calendar:"M5 5h14v15H5z M5 10h14 M9 3v4 M15 3v4",link:"M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1 M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1",flame:"M12 21a6 6 0 0 0 6-6c0-2.5-1.4-4.4-3-6-.3 1.5-1 2.5-2 3 .3-3-1-6-3.5-8 .2 3-1 4.8-2.2 6.3C6.4 11.5 6 13.2 6 15a6 6 0 0 0 6 6Z",trophy:"M8 4h8v6a4 4 0 0 1-8 0V4Z M8 6H5v1a3 3 0 0 0 3 3 M16 6h3v1a3 3 0 0 1-3 3 M12 14v4 M8.5 20h7",sprout:"M12 20v-8 M12 12c0-3-2-5-6-5 0 3.5 2 5 6 5Z M12 14c0-3 2-5 6-5 0 3.5-2 5-6 5Z",eye:"M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z M12 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z",download:"M12 4v11 M7.5 11l4.5 4.5 4.5-4.5 M5 20h14",upload:"M12 16V5 M7.5 9.5 12 5l4.5 4.5 M5 20h14",up:"M12 19V5 M6 11l6-6 6 6",down:"M12 5v14 M6 13l6 6 6-6",sparkles:"M12 4l1.8 4.7 4.7 1.8-4.7 1.8L12 17l-1.8-4.7-4.7-1.8 4.7-1.8L12 4Z M18.5 15.5v4 M16.5 17.5h4",bot:"M6 9h12v10H6z M12 9V5 M12 4.5h.01 M9.5 13.5h.01 M14.5 13.5h.01 M3.5 13v3 M20.5 13v3",box:"M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3Z M4 7.5l8 4.5 8-4.5 M12 12v9",grid:"M4 4h7v7H4z M13 4h7v7h-7z M4 13h7v7H4z M13 13h7v7h-7z",note:"M6 3h9l4 4v14H6z M15 3v4h4 M9 12h6 M9 16h4",puzzle:"M9 3H4v6a3 3 0 1 0 0 6v5h6a3 3 0 1 1 6 0h4v-6a3 3 0 1 0 0-6V3h-5a3 3 0 1 1-6 0Z"};function W({name:e,size:t=14,class:n}){return o("svg",{class:n,width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",children:o("path",{d:tg[e]})})}function Ao({size:e=12}){return o("svg",{class:"spin",width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","aria-hidden":"true",focusable:"false",children:o("path",{d:"M21 12a9 9 0 1 1-6.2-8.56"})})}var ng={"events.title":"\u6D3B\u52A8","events.back":"\u8FD4\u56DE\u5E94\u7528","events.count":"{n} \u573A\u8FDB\u884C\u4E2D","events.group.active":"\u8FDB\u884C\u4E2D","events.group.notice":"\u516C\u544A","events.group.upcoming":"\u9884\u544A","events.ended":"\u5DF2\u7ED3\u675F\u7684\u6D3B\u52A8","events.endedEmpty":"\u8FD8\u6CA1\u6709\u7ED3\u675F\u7684\u6D3B\u52A8","events.list":"\u5168\u90E8\u6D3B\u52A8","events.kind.checkin":"\u7B7E\u5230","events.kind.tasks":"\u4EFB\u52A1","events.kind.game":"\u5C0F\u6E38\u620F","events.kind.notice":"\u516C\u544A","events.left.days":"\u5269 {n} \u5929","events.left.hours":"\u5269 {n} \u5C0F\u65F6","events.left.long":"\u5269\u4F59 {d} \u5929 {h} \u5C0F\u65F6","events.left.longHours":"\u5269\u4F59 {h} \u5C0F\u65F6","events.time.start":"{date} \u5F00\u59CB","events.time.claim":"\u6D3B\u52A8\u5DF2\u7ED3\u675F\uFF0C{date} \u524D\u9886\u53D6","events.time.claimShort":"{date} \u524D\u9886\u53D6","events.time.ended":"\u5DF2\u4E8E {date} \u7ED3\u675F","events.time.published":"{date} \u53D1\u5E03","events.rewards":"\u6D3B\u52A8\u5956\u52B1","events.checkin.signed":"\u5DF2\u7B7E {n}/{total}","events.checkin.today":"\u4ECA\u5929","events.checkin.day":"\u7B2C {n} \u5929","events.checkin.do":"\u4ECA\u65E5\u7B7E\u5230","events.checkin.done":"\u4ECA\u65E5\u5DF2\u7B7E","events.checkin.finished":"\u5DF2\u5168\u90E8\u7B7E\u5B8C","events.tasks.progress":"\u4EFB\u52A1\u8FDB\u5EA6","events.tasks.claim":"\u9886\u53D6","events.tasks.claimAll":"\u5168\u90E8\u9886\u53D6 ({n})","events.tasks.go":"\u53BB\u5B8C\u6210","events.tasks.closed":"\u6D3B\u52A8\u5DF2\u7ED3\u675F","events.game.board":"\u6392\u884C\u699C","events.game.me":"\u6211","events.game.anon":"\u533F\u540D\u73A9\u5BB6","events.game.enter":"\u8FDB\u5165\u6E38\u620F","events.game.install":"\u53BB\u5546\u5E97\u5B89\u88C5","events.game.empty":"\u8FD8\u6CA1\u6709\u4EBA\u4E0A\u699C","events.notice.more":"\u67E5\u770B\u8BE6\u60C5","events.toast.checkin":"\u5DF2\u7B7E\u5230\uFF0C{reward}","events.toast.claimed":"\u5DF2\u9886\u53D6 {reward}","events.toast.partial":"\u9886\u5230 {n} \u9879\uFF0C{m} \u9879\u6CA1\u9886\u5230\uFF0C\u7A0D\u540E\u518D\u8BD5","events.toast.backpack":"\u67E5\u770B\u80CC\u5305","events.err.failed":"\u6CA1\u9886\u5230\uFF0C\u7F51\u7EDC\u6062\u590D\u540E\u518D\u8BD5\u4E00\u6B21","events.err.notLive":"\u8FD9\u573A\u6D3B\u52A8\u5DF2\u7ECF\u7ED3\u675F","events.err.completed":"\u5DF2\u7ECF\u5168\u90E8\u7B7E\u5B8C","events.err.grantFailed":"\u5956\u52B1\u6CA1\u53D1\u51FA\u53BB\uFF0C\u5DF2\u767B\u8BB0\u8865\u53D1\uFF0C\u4E0D\u7528\u91CD\u590D\u9886\u53D6","events.login.title":"\u767B\u5F55\u540E\u53C2\u4E0E\u6D3B\u52A8","events.login.do":"\u767B\u5F55 Forsion","events.empty":"\u6682\u65F6\u6CA1\u6709\u8FDB\u884C\u4E2D\u7684\u6D3B\u52A8","events.error":"\u6D3B\u52A8\u6CA1\u6709\u52A0\u8F7D\u51FA\u6765","events.retry":"\u91CD\u8BD5","events.dot":"\u6709\u5956\u52B1\u53EF\u9886\u6216\u65B0\u6D3B\u52A8","penzor.rules.default":"\u4E91\u7AEF\u9ED8\u8BA4","penzor.rules.off":"\u4E0D\u540C\u6B65","penzor.rules.device":"\u8BBE\u5907","penzor.rules.run":"\u7ACB\u5373\u540C\u6B65","penzor.rules.twoWay":"\u53CC\u5411","penzor.rules.defaultForWeb":"\u9ED8\u8BA4\u76EE\u5F55\u4F9B\u7F51\u9875\u7AEF\u4F7F\u7528","penzor.rules.tab.rules":"\u540C\u6B65\u89C4\u5219","penzor.rules.tab.active":"\u6B63\u5728\u4F20\u8F93","penzor.rules.tab.history":"\u5386\u53F2\u8BB0\u5F55","penzor.rules.enable":"\u5F00\u542F\u5185\u5BB9\u540C\u6B65","penzor.rules.add":"\u6DFB\u52A0\u89C4\u5219","penzor.rules.source":"\u672C\u673A\u6765\u6E90","penzor.rules.destination":"\u4E91\u7AEF\u76EE\u6807","penzor.rules.direction":"\u65B9\u5411","penzor.rules.remove":"\u5220\u9664\u89C4\u5219","penzor.rules.inherit":"\u7A7A\u8DEF\u5F84\u4EE3\u8868\u6574\u4E2A Forsion\u3002\u5B50\u9879\u7EE7\u627F\u4E0A\u7EA7\u89C4\u5219\uFF0C\u6700\u5177\u4F53\u7684\u8DEF\u5F84\u4F18\u5148\uFF1B\u6CA1\u6709\u5339\u914D\u89C4\u5219\u7684\u5185\u5BB9\u4E0D\u540C\u6B65\u3002","penzor.rules.namespace":"\u9ED8\u8BA4\uFF1A\u4E91\u7AEF /Forsion/\uFF1B\u8BBE\u5907\u76EE\u5F55\uFF1A\u4E91\u7AEF /Forsion-\u8BBE\u5907ID/\u3002","penzor.rules.human":"human \u72EC\u7ACB\u9009\u62E9\u8303\u56F4\uFF1B\u9ED8\u8BA4\u65E5\u5386\u4F7F\u7528 human/CALENDAR.db\u3002\u6539\u5230\u8BBE\u5907\u76EE\u5F55\u540E\uFF0C\u7F51\u9875\u9ED8\u8BA4\u65E5\u5386\u4E0D\u8DDF\u968F\u5207\u6362\u3002","penzor.rules.preview":"\u9884\u89C8\u53D8\u66F4","penzor.rules.previewTitle":"\u786E\u8BA4\u672C\u6B21\u540C\u6B65\u8303\u56F4","penzor.rules.previewCounts":"\u4E0A\u4F20 {up} \u9879\uFF0C\u4E0B\u8F7D {down} \u9879\uFF0C{conflicts} \u9879\u5DF2\u6709\u4E0D\u540C\u5185\u5BB9\u9700\u5408\u5E76\u6216\u4FDD\u7559\u7248\u672C\u3002","penzor.rules.retain":"\u65E7\u76EE\u6807\u4E2D\u7684\u5185\u5BB9\u4FDD\u7559\u3002\u5173\u95ED\u540C\u6B65\u4E0D\u4F1A\u5220\u9664\u672C\u673A\u6216\u4E91\u7AEF\u6587\u4EF6\uFF1B\u6E90\u6587\u4EF6\u53D8\u5316\u540E\u9700\u91CD\u65B0\u9884\u89C8\u3002","penzor.rules.back":"\u8FD4\u56DE\u4FEE\u6539","penzor.rules.apply":"\u786E\u8BA4\u5E76\u5F00\u59CB","penzor.rules.pause":"\u6682\u505C","penzor.rules.resume":"\u7EE7\u7EED","penzor.rules.noActive":"\u5F53\u524D\u6CA1\u6709\u6587\u4EF6\u6B63\u5728\u4F20\u8F93\u3002","penzor.rules.manual":"\u624B\u52A8\u4E0A\u4F20\u4E0E\u4E0B\u8F7D","penzor.rules.historyNote":"\u4FDD\u7559\u6700\u8FD1 200 \u9879\u3002\u51B2\u7A81\u65F6\u4FDD\u7559\u4E24\u4E2A\u7248\u672C\uFF0C\u5176\u4F59\u5185\u5BB9\u7EE7\u7EED\u540C\u6B65\u3002","penzor.rules.retry":"\u91CD\u8BD5\u5931\u8D25\u9879","penzor.rules.noHistory":"\u8FD8\u6CA1\u6709\u540C\u6B65\u8BB0\u5F55\u3002","penzor.rules.details":"\u67E5\u770B\u4F20\u8F93","penzor.rules.plugins":"\u63D2\u4EF6\u6570\u636E\u4ECD\u7531\u5404\u63D2\u4EF6\u7684\u6570\u636E\u540C\u6B65\u7BA1\u7406\u3002","penzor.rules.turnOff":"\u5173\u95ED\u63D2\u4EF6\u6570\u636E\u540C\u6B65","penzor.rules.turnOn":"\u5F00\u542F\u63D2\u4EF6\u6570\u636E\u540C\u6B65","penzor.rules.phase.idle":"\u7B49\u5F85\u4E0B\u6B21\u540C\u6B65","penzor.rules.phase.scanning":"\u6B63\u5728\u6838\u5BF9\u6587\u4EF6","penzor.rules.phase.syncing":"\u6B63\u5728\u540C\u6B65","penzor.rules.phase.paused":"\u5DF2\u6682\u505C","penzor.rules.state.queued":"\u7B49\u5F85\u4E2D","penzor.rules.state.active":"\u4F20\u8F93\u4E2D","penzor.rules.state.done":"\u5DF2\u5B8C\u6210","penzor.rules.state.failed":"\u5931\u8D25","penzor.rules.state.paused":"\u5DF2\u6682\u505C","penzor.rules.state.conflict":"\u5DF2\u4FDD\u7559\u51B2\u7A81\u7248\u672C","penzor.tree.synced":"\u540C\u6B65\u7684\u5185\u5BB9","penzor.tree.thisBackup":"\u8FD9\u53F0\u7535\u8111 \xB7 \u53EA\u5907\u4EFD","penzor.tree.byApp":"\u6309\u5E94\u7528\u770B","penzor.tree.legacy":"\u65E7\u7248\u667A\u5E93\u540C\u6B65","penzor.quota.sourceLimit":"\u8FD9\u4E00\u7C7B\u8FD8\u6709\u5355\u72EC\u4E0A\u9650 {max}\uFF0C\u5DF2\u7528 {used}","penzor.ov.mine":"\u4F60\u653E\u7684","penzor.ov.synced":"\u540C\u6B65\u4E0A\u6765\u7684","penzor.ov.stale":"\u4E0D\u518D\u66F4\u65B0","penzor.ov.uploads":"\u4F60\u81EA\u5DF1\u4E0A\u4F20\u548C\u6574\u7406\u7684\u6587\u4EF6\uFF0C\u53EF\u4EE5\u968F\u4FBF\u6539","penzor.ov.all":"\u7B14\u8BB0\u3001Agents\u3001\u6211\u7684\u8D44\u6599\u3001\u63D2\u4EF6","penzor.ov.allLast":"\u7B14\u8BB0\u3001Agents\u3001\u6211\u7684\u8D44\u6599\u3001\u63D2\u4EF6 \xB7 \u4E0A\u6B21\u540C\u6B65 {time}","penzor.ov.self":"\u53EA\u6709\u8FD9\u53F0\u7535\u8111\u7528\u7684\u90A3\u4EFD","penzor.ov.device":"\u53EA\u5728\u8FD9\u53F0\u7535\u8111\u548C\u5B83\u4E4B\u95F4\u5171\u7528","penzor.ov.agents":"Agent \u7684\u8BBE\u7F6E\u3001\u8BB0\u5FC6\u548C\u65E5\u5FD7","penzor.ov.profile":"\u4F60\u7684\u8D44\u6599\u548C\u9ED8\u8BA4\u65E5\u5386","penzor.ov.sync":"\u7535\u8111\u540C\u6B65\u4E0A\u6765\u7684\u667A\u5E93","penzor.ov.legacy":"\u8FD9\u53F0\u7535\u8111\u5F00\u4E86\u65B0\u540C\u6B65\u540E\u4E0D\u518D\u5199\u5165\uFF0C\u7559\u7740\u4E0D\u5220","penzor.ov.ama":"\u7F51\u9875\u7248\u7684\u7B14\u8BB0\uFF0C\u548C\u540C\u6B65\u4E0A\u6765\u7684\u7B14\u8BB0","penzor.ov.apps":"\u5404\u5E94\u7528\u5B58\u7684\u6587\u4EF6\uFF0C\u53EF\u4EE5\u5220\u3001\u6539\u540D","penzor.ov.plugins":"\u63D2\u4EF6\u81EA\u5DF1\u5B58\u7684\u8BBE\u7F6E\uFF0C\u8FD9\u91CC\u53EA\u663E\u793A\u5360\u7528","penzor.ov.exports":"\u5BFC\u51FA\u7684\u6587\u4EF6\uFF0C\u53EF\u4EE5\u4E0B\u8F7D\u3001\u5220\u9664","penzor.ov.segNotes":"\u7B14\u8BB0","penzor.ov.segSync":"\u8BBE\u5907\u540C\u6B65","penzor.ov.segOther":"\u5176\u4ED6","penzor.content.badge":"\u65B0\u540C\u6B65\u7EF4\u62A4","penzor.content.badgeLast":"\u65B0\u540C\u6B65\u7EF4\u62A4 \xB7 \u4E0A\u6B21\u540C\u6B65 {time}","penzor.content.noteAll":"\u8FD9\u662F\u4E91\u7AEF\u7684\u90A3\u4E00\u4EFD\uFF0C\u4F60\u767B\u5F55\u7684\u6BCF\u53F0\u8BBE\u5907\u548C\u7F51\u9875\u7248\u770B\u5230\u7684\u90FD\u662F\u5B83\u3002\u8981\u6539\u6587\u4EF6\uFF0C\u5728\u7535\u8111\u4E0A\u7684\u7B14\u8BB0\u3001Agents \u91CC\u6539\uFF0C\u6539\u5B8C\u4F1A\u81EA\u52A8\u540C\u6B65\u4E0A\u6765\uFF1B\u8FD9\u91CC\u53EF\u4EE5\u4E0B\u8F7D\u3002","penzor.content.noteSelf":"\u53EA\u6709\u8FD9\u53F0\u7535\u8111\u7528\u7684\u90A3\u4E00\u4EFD\uFF0C\u522B\u7684\u8BBE\u5907\u770B\u4E0D\u5230\u3002\u8981\u6539\u6587\u4EF6\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u6539\uFF1B\u8FD9\u91CC\u53EF\u4EE5\u4E0B\u8F7D\u3002","penzor.content.noteDevice":"\u53EA\u5728\u8FD9\u53F0\u7535\u8111\u548C {name} \u4E4B\u95F4\u5171\u7528\u3002\u8981\u6539\u6587\u4EF6\u5728\u7535\u8111\u4E0A\u6539\uFF1B\u8FD9\u91CC\u53EF\u4EE5\u4E0B\u8F7D\u3002","penzor.legacy.title":"\u8FD9\u53F0\u7535\u8111\u5F00\u4E86\u65B0\u540C\u6B65\u540E\uFF0C\u5C31\u4E0D\u518D\u5F80\u8FD9\u4E2A\u5E93\u5199\u4E86","penzor.legacy.body":"\u8FD9\u53F0\u7535\u8111\u7684\u7B14\u8BB0\u73B0\u5728\u5728\u300C\u6240\u6709\u8BBE\u5907\u5171\u7528 \u203A \u7B14\u8BB0\u300D\u91CC\u3002\u8FD8\u6CA1\u5347\u7EA7\u7684\u65E7\u7248\u684C\u9762\u53EF\u80FD\u4ECD\u4F1A\u5199\u5230\u8FD9\u91CC\uFF0C\u6240\u4EE5\u8FD9\u4EFD\u7559\u7740\u3001\u4E0D\u5220\u3002","penzor.legacy.go":"\u53BB\u770B\u65B0\u7684\u90A3\u4EFD","penzor.drive.total":"\u6574\u4E2A\u84EC\u6D32\u4E91\u5DF2\u7528 {used} / {max}","penzor.drive.seeAll":"\u67E5\u770B","penzor.cs.statusOff":"\u672A\u5F00","penzor.cs.statusPaused":"\u5DF2\u6682\u505C","penzor.cs.statusRun":"\u540C\u6B65\u4E2D {pct}%","penzor.cs.statusScan":"\u6B63\u5728\u6838\u5BF9\u6587\u4EF6","penzor.cs.statusWarn":"{n} \u9879\u8981\u5904\u7406","penzor.cs.statusOk":"\u5DF2\u540C\u6B65","penzor.cs.statusOkAgo":"\u5DF2\u540C\u6B65 \xB7 {time}","penzor.cs.thisComputer":"\u8FD9\u53F0\u7535\u8111\uFF1A{name}","penzor.cs.thisComputerLabel":"\u8FD9\u53F0\u7535\u8111\uFF1A","penzor.cs.rename":"\u6539\u8FD9\u53F0\u7535\u8111\u7684\u540D\u5B57","penzor.cs.renameHint":"\u6539\u4E86\u4EE5\u540E\uFF0C\u522B\u7684\u8BBE\u5907\u4E0A\u4E5F\u663E\u793A\u8FD9\u4E2A\u540D\u5B57 \xB7 \u56DE\u8F66\u4FDD\u5B58","penzor.cs.othersN":"\u53E6\u5916 {n} \u53F0\uFF1A{names}","penzor.cs.noOthers":"\u8FD8\u6CA1\u6709\u522B\u7684\u8BBE\u5907\u767B\u5F55\u8FD9\u4E2A\u8D26\u53F7","penzor.cs.log":"\u6700\u8FD1\u8BB0\u5F55","penzor.cs.more":"\u66F4\u591A","penzor.cs.advanced":"\u9AD8\u7EA7\uFF1A\u6309\u89C4\u5219\u7F16\u8F91","penzor.cs.backSimple":"\u8FD4\u56DE\u540C\u6B65","penzor.cs.firstTitle":"\u628A\u8FD9\u53F0\u7535\u8111\u540C\u6B65\u5230\u84EC\u6D32\u4E91","penzor.cs.firstBody":"\u4E0B\u9762\u662F\u5EFA\u8BAE\u7684\u8303\u56F4\uFF0C\u53EF\u4EE5\u5148\u6539\u3002\u70B9\u300C\u5F00\u59CB\u540C\u6B65\u300D\u4E4B\u524D\u4E0D\u4F1A\u4F20\u4EFB\u4F55\u4E1C\u897F\uFF1B\u4E91\u7AEF\u5DF2\u6709\u7684\u4E0D\u4F1A\u88AB\u8986\u76D6\u6216\u5220\u9664\u3002","penzor.cs.note":"\u60F3\u8BA9\u67D0\u4E2A\u7B14\u8BB0\u6587\u4EF6\u5939\u6216 Agent \u5355\u72EC\u5904\u7406\uFF0C\u70B9\u5B83\u4E0B\u9762\u90A3\u884C\u5C0F\u5B57\u5C31\u80FD\u6539\u3002\u5173\u6389\u5F00\u5173\u53EA\u662F\u4E0D\u518D\u540C\u6B65\uFF0C\u4E0D\u5220\u9664\u4EFB\u4F55\u6587\u4EF6\u3002","penzor.cs.barFirst":"\u6253\u5F00\u540C\u6B65\u4F1A\u4E0A\u4F20 {up} \u4E2A\u6587\u4EF6\u3001\u4E0B\u8F7D {down} \u4E2A","penzor.cs.barChanged":"\u6539\u4E86 {n} \u5904","penzor.cs.barOne":"\u6539\u4E86 1 \u5904\uFF1A\u300C{name}\u300D\u6539\u6210{scope}","penzor.cs.offName":"\u4E0D\u540C\u6B65","penzor.cs.barCounts":"\u4F1A\u4E0A\u4F20 {up} \u4E2A\u6587\u4EF6\u3001\u4E0B\u8F7D {down} \u4E2A \xB7 \u4E0D\u5220\u9664\u4EFB\u4F55\u6587\u4EF6","penzor.cs.barSize":"\u5171 {size}","penzor.cs.noDelete":"\u4E0D\u4F1A\u5220\u9664\u4EFB\u4F55\u6587\u4EF6","penzor.cs.barConflicts":"{n} \u4E2A\u4E24\u8FB9\u90FD\u6539\u8FC7\uFF0C\u4F1A\u5404\u7559\u4E00\u4EFD","penzor.cs.barCounting":"\u6B63\u5728\u7B97\u8981\u4F20\u591A\u5C11\u2026","penzor.cs.barRecount":"\u6587\u4EF6\u521A\u6709\u53D8\u5316\uFF0C\u5DF2\u7ECF\u91CD\u65B0\u7B97\u8FC7\uFF0C\u8BF7\u518D\u786E\u8BA4\u4E00\u6B21","penzor.cs.later":"\u5148\u4E0D\u5F00","penzor.cs.start":"\u5F00\u59CB\u540C\u6B65","penzor.cs.undo":"\u64A4\u9500","penzor.cs.confirm":"\u786E\u8BA4","penzor.cs.up":"\u6B63\u5728\u4E0A\u4F20\u300C{name}\u300D","penzor.cs.down":"\u6B63\u5728\u4E0B\u8F7D\u300C{name}\u300D","penzor.cs.waiting":"\u8FD8\u6709 {n} \u4E2A\u6587\u4EF6\u7B49\u7740\u4F20","penzor.cs.failedN":"{n} \u4E2A\u6587\u4EF6\u6CA1\u4F20\u6210\u529F","penzor.cs.retry":"\u91CD\u8BD5","penzor.cs.seeLog":"\u770B\u8BB0\u5F55","penzor.cs.logEmpty":"\u8FD8\u6CA1\u6709\u540C\u6B65\u8BB0\u5F55\u3002","penzor.cs.logNote":"\u4FDD\u7559\u6700\u8FD1 200 \u9879\u3002\u4E24\u8FB9\u90FD\u6539\u8FC7\u65F6\u4F1A\u5404\u7559\u4E00\u4EFD\u3002","penzor.cat.notes":"\u7B14\u8BB0","penzor.cat.notesDesc":"Amadeus \u91CC\u7684\u667A\u5E93","penzor.cat.agents":"Agents \u4E0E\u8BB0\u5FC6","penzor.cat.agentsDesc":"\u6BCF\u4E2A Agent \u7684\u8BBE\u7F6E\u3001\u8BB0\u5FC6\u548C\u65E5\u5FD7","penzor.cat.profile":"\u6211\u7684\u8D44\u6599","penzor.cat.profileDesc":"\u4F60\u7684\u8D44\u6599\u548C\u9ED8\u8BA4\u65E5\u5386","penzor.cat.profileOn":"\u542B\u9ED8\u8BA4\u65E5\u5386","penzor.cat.plugins":"\u63D2\u4EF6","penzor.cat.pluginsDesc":"\u63D2\u4EF6\u7684\u6587\u4EF6\u5939\u548C\u8BBE\u7F6E","penzor.cat.others":"\u5176\u4ED6\u6587\u4EF6","penzor.cat.othersDesc":"\u5DE5\u4F5C\u6587\u4EF6\u5939\u91CC\u4E0D\u5C5E\u4E8E\u4E0A\u9762\u51E0\u7C7B\u7684\u6587\u4EF6","penzor.cat.files":"{n} \u4E2A\u6587\u4EF6 \xB7 {size}","penzor.cat.agentsN":"{n} \u4E2A Agent","penzor.cat.agentsSome":"{n} \u4E2A Agent \xB7 {m} \u4E2A\u4E0A\u4E91","penzor.cat.pluginsN":"{n} \u4E2A\u63D2\u4EF6","penzor.cat.custom":"\u53E6\u6709 {n} \u6761\u81EA\u5B9A\u4E49\u89C4\u5219","penzor.cat.notSynced":"\u4E0D\u540C\u6B65 \xB7 \u53EA\u7559\u5728\u8FD9\u53F0\u7535\u8111","penzor.scope.all":"\u6240\u6709\u8BBE\u5907\u5171\u7528","penzor.scope.allDesc":"\u6BCF\u53F0\u767B\u5F55\u7684\u8BBE\u5907\u548C\u7F51\u9875\u7248\u90FD\u662F\u540C\u4E00\u4EFD","penzor.scope.self":"\u53EA\u5907\u4EFD\u8FD9\u53F0\u7535\u8111","penzor.scope.selfDesc":"\u4E91\u7AEF\u5355\u72EC\u5B58\u4E00\u4EFD\uFF0C\u522B\u7684\u8BBE\u5907\u770B\u4E0D\u5230","penzor.scope.with":"\u53EA\u548C {name} \u5171\u7528","penzor.scope.menuTitle":"\u300C{name}\u300D\u548C\u8C01\u5171\u7528","penzor.scope.menuFoot":"\u4E0D\u60F3\u4E0A\u4E91\u5C31\u5173\u6389\u53F3\u8FB9\u7684\u5F00\u5173","penzor.scope.calendarNote":"\u7F51\u9875\u7248\u7684\u9ED8\u8BA4\u65E5\u5386\u4E0D\u4F1A\u8DDF\u7740\u53D8","penzor.unified.stale":"\u5237\u65B0\u5931\u8D25\uFF0C\u4EE5\u4E0B\u4FDD\u7559\u4E0A\u6B21\u7EDF\u8BA1\uFF1B\u5F53\u524D\u7528\u91CF\u672A\u77E5\uFF0C\u8BF7\u91CD\u8BD5\u3002","penzor.unified.uploadTo":"\u4E0A\u4F20\u5230\u300C\u6211\u7684\u6587\u4EF6\u300D","penzor.unified.apps":"\u666E\u901A\u6587\u4EF6\u53EF\u7BA1\u7406 \xB7 \u6765\u6E90\u9650\u5236\u4F18\u5148","penzor.trash.ama":"Amadeus \xB7 \u5F85\u6E05\u7406\u5FEB\u7167","penzor.trash.amaNote":"\u88AB\u5220\u7684\u5F53\u524D\u6587\u4EF6\u4ECD\u8BA1\u5165\u989D\u5EA6\uFF0C\u5386\u53F2\u7248\u672C\u4E0D\u91CD\u590D\u8BA1\u5165\u300230 \u5929\u540E\u7B49\u5F85\u7CFB\u7EDF\u6E05\u7406\uFF1B\u6B64\u5904\u53EA\u8BFB\uFF0C\u4E0D\u53D7\u300C\u6E05\u7A7A\u56DE\u6536\u7AD9\u300D\u5F71\u54CD\u3002","penzor.trash.expires":"\u53EF\u6E05\u7406\u65E5\u671F","penzor.source.openAgents":"\u5728 Agents \u4E2D\u6253\u5F00","penzor.source.openCalendar":"\u6253\u5F00\u65E5\u5386","penzor.source.entryUnavailable":"\u6B64\u5BBF\u4E3B\u6682\u672A\u63D0\u4F9B\u8BE5\u5165\u53E3","penzor.uploads":"\u6211\u7684\u6587\u4EF6","penzor.source.agents":"Agents","penzor.source.profile":"\u6211\u7684\u8D44\u6599","penzor.source.plugins":"\u63D2\u4EF6\u6570\u636E","penzor.source.readonly":"\u540C\u6B65\u6765\u6E90\u4E3A\u53EA\u8BFB\uFF0C\u8BF7\u5728\u539F\u4F4D\u7F6E\u7F16\u8F91\u6216\u5220\u9664\uFF1B\u6B64\u5904\u53EF\u4E0B\u8F7D\u5DF2\u540C\u6B65\u7684\u6587\u4EF6\u3002","penzor.source.appNote":"\u5E94\u7528\u6587\u4EF6\u7531\u539F\u5E94\u7528\u7BA1\u7406\uFF0C\u8BF7\u5728\u5E94\u7528\u4E2D\u7F16\u8F91\u6216\u5220\u9664\u3002","penzor.source.pluginNote":"\u4EC5\u5C55\u793A\u63D2\u4EF6\u540D\u79F0\u548C\u5360\u7528\uFF1B\u6570\u636E\u53EF\u80FD\u542B\u914D\u7F6E\u6216\u51ED\u636E\uFF0C\u4E0D\u76F4\u63A5\u9884\u89C8\u6216\u4E0B\u8F7D\u3002","penzor.unified.unavailable":"\u7EDF\u8BA1\u4E0D\u53EF\u7528","penzor.unified.incomplete":"\u7EDF\u4E00\u7528\u91CF\u5C1A\u672A\u7EDF\u8BA1\u5B8C\u6574\uFF0C\u4E0D\u80FD\u636E\u6B64\u5224\u65AD\u662F\u5426\u8D85\u989D\u3002\u8BF7\u5237\u65B0\u91CD\u8BD5\u3002","penzor.unified.enforced":"\u7EDF\u4E00\u989D\u5EA6\u5DF2\u542F\u7528\uFF1A\u8D85\u989D\u65F6\u6682\u505C\u65B0\u589E\u5185\u5BB9\u548C\u53D8\u5927\u7684\u6587\u4EF6\uFF1B\u4E0B\u8F7D\u3001\u5220\u9664\u53CA\u4E0D\u589E\u5927\u7684\u8986\u76D6\u4ECD\u53EF\u7528\u3002","penzor.unified.grace":"\u901A\u77E5\u5BBD\u9650\u671F\u81F3 {date}\uFF0C\u76EE\u524D\u4E0D\u65B0\u589E\u7EDF\u4E00\u989D\u5EA6\u62E6\u622A\u3002","penzor.unified.rolloutPolicy":"\u5BB9\u91CF\u653F\u7B56\u901A\u77E5\uFF1A\u6700\u65E9\u5728\u786E\u8BA4\u901A\u77E5 30 \u5929\u540E\uFF0C\u7EDF\u4E00\u989D\u5EA6\u624D\u53EF\u80FD\u9650\u5236\u589E\u957F\u5199\u5165\uFF1B\u5E94\u7528\u6587\u4EF6\u5386\u53F2\u5C06\u4EC5\u4FDD\u7559\u6700\u8FD1 30 \u5929\u5185\u6700\u591A 50 \u4EFD\u3002\u5386\u53F2\u4E0D\u8BA1\u5957\u9910\uFF0C\u6E05\u7406\u524D\u4ECD\u53EF\u4E0B\u8F7D\u5907\u4EFD\uFF0C\u5F53\u524D\u6587\u4EF6\u4E0D\u53D7\u5386\u53F2\u6E05\u7406\u5F71\u54CD\u3002","penzor.unified.ack":"\u5DF2\u9605\u8BFB\u5BB9\u91CF\u4E0E\u5386\u53F2\u4FDD\u7559\u901A\u77E5","penzor.unified.notice":"\u73B0\u5728\u53EA\u662F\u63D0\u9192\uFF0C\u8D85\u4E86\u4E5F\u4E0D\u4F1A\u505C\u6389\u540C\u6B65\u6216\u4E0A\u4F20","penzor.unified.over":"\u5DF2\u8D85\u8FC7\u7EDF\u4E00\u989D\u5EA6\u3002\u76EE\u524D\u53EA\u63D0\u9192\uFF0C\u4E0D\u65B0\u589E\u540C\u6B65\u6216\u4E0A\u4F20\u62E6\u622A\uFF1B\u53EF\u6E05\u7406\u6587\u4EF6\u6216\u5347\u7EA7\u5957\u9910\u3002","penzor.unified.warn":"\u7EDF\u4E00\u7A7A\u95F4\u5373\u5C06\u7528\u6EE1\u3002\u76EE\u524D\u53EA\u63D0\u9192\uFF0C\u4E0D\u65B0\u589E\u540C\u6B65\u6216\u4E0A\u4F20\u62E6\u622A\u3002","penzor.unified.accounting":"\u542B\u56DE\u6536\u7AD9 {trash}\uFF0C\u5386\u53F2\u7248\u672C\u4E0D\u7B97","penzor.unified.writable":"\u53EF\u4E0A\u4F20\u3001\u65B0\u5EFA\u3001\u91CD\u547D\u540D\u548C\u5220\u9664","penzor.unified.readonly":"\u53EA\u8BFB \xB7 \u7531\u6765\u6E90\u7BA1\u7406","penzor.unified.export":"\u53EF\u4E0B\u8F7D\u3001\u91CD\u547D\u540D\u548C\u6C38\u4E45\u5220\u9664","penzor.unified.counted":"\u8BA1\u5165\u7EDF\u4E00\u7528\u91CF \xB7 \u63D0\u9192\u9636\u6BB5","penzor.unified.policy":"\u771F\u8981\u9650\u5236\u4E4B\u524D\uFF0C\u81F3\u5C11\u63D0\u524D 30 \u5929\u544A\u8BC9\u4F60\u3002","penzor.unified.legacySync":"\u539F\u8BBE\u5907\u540C\u6B65\u9650\u5236\uFF1A{used} / {max}","penzor.unified.legacyApps":"\u539F\u5E94\u7528\u6587\u4EF6\u9650\u5236\uFF1A{used} / {max}","sub.identity":"\u63D2\u4EF6 ID","sub.identityHint":"\u63D0\u4EA4\u540E\u81EA\u52A8\u5206\u914D\u552F\u4E00 ID\u3002\u540D\u79F0\u53EF\u4EE5\u91CD\u590D\uFF0C\u66F4\u65B0\u6CBF\u7528\u540C\u4E00\u4E2A ID\u3002","sub.description":"\u8BE6\u7EC6\u63CF\u8FF0","sub.tags":"\u6807\u7B7E","sub.tagsHint":"\u4EE5\u9017\u53F7\u5206\u9694\uFF0C\u6700\u591A 8 \u4E2A","sub.minAppVersion":"\u6700\u4F4E Forsion \u7248\u672C","sub.maxAppVersion":"\u6700\u9AD8\u7248\u672C\uFF08\u4E0D\u542B\uFF09","sub.optional":"\u9009\u586B","sub.platforms":"\u652F\u6301\u7684\u7AEF","sub.requirementsHint":"\u652F\u6301 desktop\u3001macos\u3001windows\u3001linux\u3001android\u3001ios\u3001web\u3002\u7559\u7A7A\u8868\u793A\u672A\u58F0\u660E\u3002ZIP \u6E05\u5355\u4E2D\u7684\u8981\u6C42\u4F1A\u81EA\u52A8\u8BFB\u53D6\uFF0C\u624B\u586B\u503C\u987B\u4E0E\u6E05\u5355\u4E00\u81F4\u3002","sub.err.market_requirements_invalid":"\u7248\u672C\u8981\u6C42\u6216\u5E73\u53F0\u65E0\u6548\u3002","sub.err.market_requirements_mismatch":"\u624B\u586B\u7248\u672C\u8981\u6C42\u4E0E ZIP \u6E05\u5355\u4E0D\u4E00\u81F4\u3002","sub.mine":"\u6211\u7684\u6295\u7A3F","page.submission":"\u63D2\u4EF6\u6295\u7A3F","page.webPages":"\u6211\u7684\u7F51\u9875","web.title":"\u6211\u7684\u7F51\u9875","web.desc":"\u7528 Tangu \u6216 Coding Space \u53D1\u5E03\u7684\u7F51\u9875\u90FD\u5728\u8FD9\u91CC\u3002\u62FF\u5230\u94FE\u63A5\u7684\u4EBA\u90FD\u80FD\u6253\u5F00\uFF1B\u9875\u9762\u5728\u6C99\u7BB1\u91CC\u8FD0\u884C\uFF0C\u62FF\u4E0D\u5230\u8BBF\u5BA2\u7684 Forsion \u767B\u5F55\u6001\u3002","web.refresh":"\u5237\u65B0","web.used":"\u5DF2\u53D1\u5E03 {used} / {limit} \u4E2A","web.full":"\u540D\u989D\u5DF2\u6EE1\uFF0C\u4E0B\u7EBF\u4E00\u4E2A\u6216\u5347\u7EA7\u4F1A\u5458\u540E\u624D\u80FD\u53D1\u65B0\u7684","web.empty":"\u8FD8\u6CA1\u6709\u53D1\u5E03\u8FC7\u7F51\u9875","web.emptyHint":"\u5728\u5BF9\u8BDD\u91CC\u8BA9 Tangu \u628A\u7F51\u9875\u53D1\u5E03\u51FA\u53BB\uFF0C\u6BD4\u5982\u300C\u628A\u8FD9\u4E2A\u9875\u9762\u53D1\u5E03\u6210\u7F51\u9875\u300D\uFF1BCoding Space \u91CC\u7684\u9879\u76EE\u4E5F\u53EF\u4EE5\u70B9\u300C\u53D1\u5E03\u300D\u3002","web.updated":"\u66F4\u65B0\u4E8E {date}","web.disabled":"\u5DF2\u505C\u7528","web.disabledHint":"\u8FD9\u4E2A\u7F51\u9875\u88AB\u7BA1\u7406\u5458\u505C\u7528\u4E86\uFF0C\u94FE\u63A5\u6253\u4E0D\u5F00\uFF0C\u4E5F\u4E0D\u80FD\u66F4\u65B0\u3002","web.copy":"\u590D\u5236\u94FE\u63A5","web.unpublish":"\u4E0B\u7EBF","web.unpublishConfirm":"\u786E\u8BA4\u4E0B\u7EBF","web.listingPending":"\u4E0A\u67B6\u5BA1\u6838\u4E2D","web.listingApproved":"\u5DF2\u4E0A\u67B6","web.listingRejected":"\u4E0A\u67B6\u88AB\u9A73\u56DE","web.listingNote":"\u9A73\u56DE\u539F\u56E0\uFF1A{note}","web.listingApply":"\u7533\u8BF7\u4E0A\u67B6","web.listingReapply":"\u91CD\u65B0\u7533\u8BF7","web.listingWithdraw":"\u64A4\u56DE\u7533\u8BF7","web.listingDelist":"\u4E0B\u67B6","web.listingDelistConfirm":"\u786E\u8BA4\u4E0B\u67B6","web.listingSummary":"\u5546\u5E97\u7B80\u4ECB","web.listingSummaryPh":"\u4E00\u53E5\u8BDD\u4ECB\u7ECD\u8FD9\u4E2A\u7F51\u9875","web.listingHint":"\u5BA1\u6838\u901A\u8FC7\u540E\u5728\u5546\u5E97\u300C\u7F51\u7AD9\u5E94\u7528\u300D\u91CC\u516C\u5F00\u5C55\u793A\uFF0C300 \u5B57\u4EE5\u5185\u3002","web.listingSubmit":"\u63D0\u4EA4\u7533\u8BF7","sub.desc":"\u7BA1\u7406\u4F60\u6295\u7A3F\u7684\u5185\u5BB9\u3001\u5BA1\u6838\u7ED3\u679C\u548C\u7248\u672C\u66F4\u65B0\u3002","sub.new":"\u65B0\u6295\u7A3F","sub.refresh":"\u5237\u65B0","sub.empty":"\u8FD8\u6CA1\u6709\u6295\u7A3F","sub.emptyHint":"\u628A\u4F60\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001Agent \u6216 Space \u5206\u4EAB\u5230\u5E94\u7528\u5E02\u573A\u3002","sub.name":"\u540D\u79F0","sub.summary":"\u7B80\u4ECB","sub.type":"\u5185\u5BB9\u7C7B\u578B","sub.source":"\u53D1\u5E03\u6E20\u9053","sub.type.skill":"\u6280\u80FD","sub.type.agent":"Agent","sub.type.plugin":"\u63D2\u4EF6","sub.type.space":"Space","sub.type.theme":"\u4E3B\u9898","sub.type.amadeus_plugin":"Amadeus \u63D2\u4EF6","sub.pending":"\u5F85\u5BA1\u6838","sub.approved":"\u5DF2\u4E0A\u67B6","sub.rejected":"\u5DF2\u9A73\u56DE","sub.pendingVersion":"v{version} \u66F4\u65B0\u5F85\u5BA1\u6838","sub.rejectedVersion":"v{version} \u66F4\u65B0\u5DF2\u9A73\u56DE","sub.submit":"\u63D0\u4EA4\u5BA1\u6838","sub.submitted":"\u6295\u7A3F\u5DF2\u63D0\u4EA4\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u548C\u4F60\u7684\u6536\u4EF6\u7BB1\u91CC\u3002","sub.updated":"\u65B0\u7248\u672C\u5DF2\u63D0\u4EA4\u5BA1\u6838\u3002\u5BA1\u6838\u901A\u8FC7\u524D\u5546\u5E97\u7167\u65E7\u63D0\u4F9B\u5DF2\u4E0A\u67B6\u7684\u7248\u672C\uFF0C\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.repo":"GitHub \u516C\u5F00\u4ED3\u5E93","sub.npm":"npm \u516C\u5F00\u5305","sub.repoHint":"\u4ECE\u4ED3\u5E93\u8BFB\u53D6 README \u548C Release\uFF1B\u4ED3\u5E93\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.npmHint":"\u4ECE npm \u8BFB\u53D6\u5305\u4FE1\u606F\uFF1B\u5BF9\u5E94\u516C\u5F00\u4ED3\u5E93\u7684\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.reviewHint":"\u65B0\u7248\u672C\u9700\u91CD\u65B0\u5BA1\u6838\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u5411\u7528\u6237\u63D0\u4F9B\u3002\u4F60\u7684 Forsion \u8D26\u53F7\u7528\u4E8E\u7BA1\u7406\u6295\u7A3F\u3002","sub.zipHint":"\u6700\u5927 50 MB\uFF0C\u5305\u5185\u5305\u542B\u5BF9\u5E94\u7684 manifest \u4E0E\u5165\u53E3\u6587\u4EF6\u3002","sub.filter":"\u6309\u72B6\u6001\u7B5B\u9009","sub.all":"\u5168\u90E8","sub.noResults":"\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6295\u7A3F","sub.downloads":"{n} \u6B21\u4E0B\u8F7D","sub.errName":"\u8BF7\u586B\u5199\u540D\u79F0\u3002","sub.errSource":"\u8BF7\u586B\u5199\u516C\u5F00\u4ED3\u5E93\u5730\u5740\u6216 npm \u5305\u540D\u3002","sub.errZip":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.errLarge":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.err.market_npm_invalid":"npm \u5305\u4E0D\u5B58\u5728\u6216\u4E0D\u7B26\u5408\u63D2\u4EF6\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_npm_source":"\u8BF7\u901A\u8FC7 npm \u53D1\u5E03\u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_github_source":"\u8BF7\u5728 GitHub \u53D1\u5E03 Release \u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_not_found":"\u6295\u7A3F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","sub.err.market_zip_required":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.err.market_zip_invalid":"ZIP \u5305\u7ED3\u6784\u4E0D\u7B26\u5408\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_zip_too_large":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.err.market_version_required":"\u5305\u91CC\u6CA1\u5199\u7248\u672C\u53F7\u3002\u5728 manifest \u91CC\u5199\u4E0A\u7248\u672C\u53F7\uFF08\u6280\u80FD\u5199\u5728 SKILL.md \u7684 version \u6216 metadata.version\uFF09\u518D\u6253\u5305\u3002","sub.err.market_version_invalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7248\u672C\u53F7\u3002","sub.err.market_version_mismatch":"\u7248\u672C\u53F7\u4E0E\u5305\u5185 manifest \u4E0D\u4E00\u81F4\u3002","sub.err.market_version_not_newer":"\u65B0\u7248\u987B\u9AD8\u4E8E\u5F53\u524D\u5DF2\u4E0A\u67B6\u7248\u672C\u3002","sub.err.market_icon_invalid":"\u56FE\u6807\u5E94\u4E3A 64\u2013512 px \u7684\u6B63\u65B9\u5F62 PNG\u3002","sub.err.market_duplicate":"\u8BE5\u5185\u5BB9\u5DF2\u6709\u6295\u7A3F\uFF0C\u8BF7\u7BA1\u7406\u73B0\u6709\u6295\u7A3F\u3002","sub.err.market_update_pending":"\u5DF2\u6709\u65B0\u7248\u7B49\u5F85\u5BA1\u6838\uFF0C\u8BF7\u5148\u7B49\u5F85\u5BA1\u6838\u7ED3\u679C\u3002","sub.err.market_stale":"\u6295\u7A3F\u5DF2\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","sub.notNewer":"\u5305\u91CC\u7684\u7248\u672C\u662F v{version}\uFF0C\u8981\u9AD8\u4E8E\u5546\u5E97\u5F53\u524D\u7684 v{current}\u3002","sub.reqNone":"\u6CA1\u6709\u58F0\u660E\u7248\u672C\u8981\u6C42\u548C\u5E73\u53F0","sub.dropTitle":"\u628A ZIP \u62D6\u5230\u8FD9\u91CC\uFF0C\u6216\u70B9\u8FD9\u91CC\u9009\u62E9","sub.dropHint":"\u6700\u5927 50 MB\u3002\u9009\u597D\u540E\u5148\u68C0\u67E5\uFF0C\u4E0D\u4F1A\u76F4\u63A5\u63D0\u4EA4\u3002","sub.dropReplace":"{size} \xB7 \u62D6\u5165\u6216\u70B9\u8FD9\u91CC\u6362\u4E00\u4E2A","sub.checkType":"\u7C7B\u578B","sub.checkVersion":"\u7248\u672C","sub.checkIcon":"\u56FE\u6807","sub.checkReadme":"\u8BF4\u660E\u6587\u6863","sub.checkReq":"\u8981\u6C42","sub.checkWarn":"\u6CE8\u610F","sub.iconYes":"\u5305\u91CC\u6709 icon.png","sub.iconNo":"\u5305\u91CC\u6CA1\u6709 icon.png\uFF0C\u5361\u7247\u663E\u793A\u7C7B\u578B\u56FE\u6807","sub.readmeYes":"\u53D6\u5305\u91CC\u7684 README.md","sub.readmeKeep":"\u5305\u91CC\u6CA1\u6709 README.md\uFF0C\u6CBF\u7528\u73B0\u5728\u7684\u8BF4\u660E","sub.readmeNo":"\u5305\u91CC\u6CA1\u6709 README.md","sub.warn.no_manifest":"\u5305\u91CC\u6CA1\u627E\u5230\u6E05\u5355\u6587\u4EF6\uFF08manifest\uFF09","sub.warn.type_mismatch":"\u5305\u91CC\u7684\u7C7B\u578B\u548C\u8FD9\u6761\u6295\u7A3F\u7684\u7C7B\u578B\u4E0D\u4E00\u81F4","sub.warn.tag_version_mismatch":"Release \u6807\u7B7E\u548C\u5305\u91CC\u7684\u7248\u672C\u53F7\u4E0D\u4E00\u81F4","sub.warn.id_slug_mismatch":"\u5305\u91CC\u7684 id \u548C\u5DF2\u5B89\u88C5\u7684\u76EE\u5F55\u540D\u4E0D\u4E00\u81F4\uFF0C\u7528\u6237\u66F4\u65B0\u540E\u4F1A\u591A\u51FA\u4E00\u4EFD","sub.warn.engine_slug_mismatch":"\u5F15\u64CE\u63D2\u4EF6\u7684\u76EE\u5F55\u540D\u548C\u5B83\u7684 id \u4E0D\u4E00\u81F4","sub.warn.no_entry":"Amadeus \u63D2\u4EF6\u7F3A\u5C11\u5165\u53E3 main.js","sub.warn.has_node_modules":"\u5305\u91CC\u5E26\u4E86 node_modules\uFF0C\u4F53\u79EF\u5927\uFF0C\u901A\u5E38\u4E5F\u7528\u4E0D\u4E0A","sub.zipListedNote":"\u5BA1\u6838\u901A\u8FC7\u524D\uFF0C\u5546\u5E97\u7EE7\u7EED\u63D0\u4F9B\u5DF2\u4E0A\u67B6\u7684\u7248\u672C\u3002\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.zipUnlistedNote":"\u63D0\u4EA4\u540E\u66FF\u6362\u73B0\u5728\u8FD9\u4EFD\u5305\uFF0C\u91CD\u65B0\u8FDB\u5165\u5BA1\u6838\u3002","sub.submitVersion":"\u63D0\u4EA4 v{version} \u5BA1\u6838","sub.checkNew":"\u68C0\u67E5\u65B0\u7248\u672C","sub.checkAgain":"\u518D\u68C0\u67E5\u4E00\u6B21","sub.upToDate":"\u4E0A\u6E38\u6700\u65B0\u662F v{version}\uFF0C\u5546\u5E97\u5DF2\u662F v{current}\uFF0C\u6CA1\u6709\u65B0\u7248\u672C\u3002\u53D1\u5E03\u65B0\u7248\u672C\u540E\u518D\u6765\u68C0\u67E5\u3002","sub.upstreamLatest":"\u4E0A\u6E38\u6700\u65B0\uFF1Av{version}","sub.releaseTag":"Release {tag}","sub.storeHas":"\u5546\u5E97\u5F53\u524D v{version}","sub.githubNote":"\u901A\u8FC7\u540E\u5546\u5E97\u9501\u5B9A\u5230 v{version}\u3002\u4EE5\u540E\u5728 GitHub \u53D1\u4E86\u65B0 Release\uFF0C\u56DE\u5230\u8FD9\u91CC\u518D\u68C0\u67E5\u4E00\u6B21\u3002","sub.npmNote":"\u901A\u8FC7\u540E\u5546\u5E97\u9501\u5B9A\u5230 v{version}\u3002\u4EE5\u540E\u5728 npm \u53D1\u4E86\u65B0\u7248\u672C\uFF0C\u56DE\u5230\u8FD9\u91CC\u518D\u68C0\u67E5\u4E00\u6B21\u3002","sub.secVersion":"\u7248\u672C","sub.secInfo":"\u5546\u5E97\u4FE1\u606F","sub.secHistory":"\u8BB0\u5F55","sub.edit":"\u7F16\u8F91","sub.unset":"\u672A\u586B\u5199","sub.infoNote":"\u4E0D\u7528\u4F20\u5305\u3001\u4E0D\u7528\u5347\u7248\u672C\u3002\u5DF2\u4E0A\u67B6\u7684\u4FEE\u6539\u540C\u6837\u8981\u8FC7\u5BA1\u6838\uFF0C\u5BA1\u6838\u524D\u5546\u5E97\u7167\u65E7\u663E\u793A\u539F\u6765\u7684\u4FE1\u606F\u3002","sub.submitInfo":"\u63D0\u4EA4\u4FEE\u6539","sub.back":"\u8FD4\u56DE\u5217\u8868","sub.pendingInfo":"\u5546\u5E97\u4FE1\u606F\u4FEE\u6539\u5F85\u5BA1\u6838","sub.rejectedInfo":"\u5546\u5E97\u4FE1\u606F\u4FEE\u6539\u5DF2\u9A73\u56DE","sub.pendingHint":"\u5BA1\u6838\u901A\u8FC7\u524D\u5546\u5E97\u7167\u65E7\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.inReview":"\u6B63\u5728\u7B49\u5F85\u9996\u6B21\u5BA1\u6838\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.histApproved":"v{version} \u5BA1\u6838\u901A\u8FC7","sub.histSubmitted":"\u6295\u7A3F","sub.resubmitted":"\u5DF2\u91CD\u65B0\u63D0\u4EA4\u5BA1\u6838\uFF0C\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.infoSubmitted":"\u4FEE\u6539\u5DF2\u63D0\u4EA4\u5BA1\u6838\uFF0C\u5BA1\u6838\u524D\u5546\u5E97\u7167\u65E7\u663E\u793A\u539F\u6765\u7684\u4FE1\u606F\u3002","sub.err.market_no_release":"\u8FD9\u4E2A\u4ED3\u5E93\u8FD8\u6CA1\u6709 GitHub Release\u3002\u5546\u5E97\u8981\u9501\u5B9A\u4E00\u4E2A\u7248\u672C\uFF0C\u5148\u5728 GitHub \u53D1\u4E00\u4E2A Release\uFF0C\u518D\u56DE\u6765\u68C0\u67E5\u3002","sub.err.market_no_changes":"\u6CA1\u6709\u6539\u52A8\u3002","sub.err.market_dryrun_unsupported":"GitHub \u548C npm \u6295\u7A3F\u6CA1\u6CD5\u63D0\u524D\u68C0\u67E5\uFF0C\u76F4\u63A5\u63D0\u4EA4\u5BA1\u6838\u5373\u53EF\u3002","page.account":"\u8D26\u53F7","page.membershipUsage":"\u4F1A\u5458\u4E0E\u7528\u91CF","page.membershipQuota":"\u4F1A\u5458\u4E0E\u989D\u5EA6","page.pointsInvite":"\u79EF\u5206\u4E0E\u9080\u8BF7","account.details.title":"\u767B\u5F55\u4E0E\u8D44\u6599","account.details.desc":"\u5934\u50CF\u3001\u6635\u79F0\u4E0E\u7B80\u4ECB\u5728\u300C\u4E2A\u4EBA\u4E3B\u9875\u300D\u4E2D\u7F16\u8F91\u3002","account.details.username":"\u7528\u6237\u540D","diag.unavailable":"\u5F53\u524D\u5BBF\u4E3B\u4E0D\u652F\u6301\u8BCA\u65AD\u6570\u636E\uFF0C\u8BF7\u66F4\u65B0 Forsion \u540E\u91CD\u8BD5\u3002","page.profile":"\u4E2A\u4EBA\u4E3B\u9875","page.quota":"\u989D\u5EA6\u4E0E\u79EF\u5206","page.backpack":"\u80CC\u5305","page.security":"\u5B89\u5168","page.usage":"\u7528\u91CF\u8BB0\u5F55","page.feedback":"\u53CD\u9988","store.group":"\u4F1A\u5458\u4E0E\u79EF\u5206","store.membership":"\u4F1A\u5458","store.membership.desc":"\u5347\u7EA7\u6863\u4F4D\uFF0C\u83B7\u5F97\u66F4\u591A\u6BCF\u65E5\u4E0E\u6BCF\u5468\u989D\u5EA6","store.points":"\u79EF\u5206","store.points.desc":"\u5145\u503C\u79EF\u5206\uFF0C\u7528\u6765\u5151\u6362\u7269\u54C1","store.items":"\u7269\u54C1","store.items.desc":"\u7528\u79EF\u5206\u5151\u6362\u7684\u7269\u54C1\uFF0C\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.status":"\u6863\u4F4D\u4E0E\u79EF\u5206","store.tier":"\u5F53\u524D\u6863\u4F4D","store.balance":"\u79EF\u5206\u4F59\u989D","store.choosePlan":"\u9009\u62E9\u6863\u4F4D","store.payHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u56DE\u5230\u5E94\u7528\u540E\u81EA\u52A8\u5237\u65B0","store.payOff":"\u6682\u65F6\u4E0D\u80FD\u8D2D\u4E70","store.period":"\u4ED8\u8D39\u5468\u671F","store.period.monthly":"\u6708\u4ED8","store.period.quarterly":"\u5B63\u4ED8","store.period.yearly":"\u5E74\u4ED8","store.per.monthly":"/ \u6708","store.per.quarterly":"/ \u5B63","store.per.yearly":"/ \u5E74","store.currentTier":"\u5F53\u524D\u6863\u4F4D","store.pay":"\u53BB\u652F\u4ED8","store.payPrice":"{price} \u53BB\u652F\u4ED8","store.noPlans":"\u6682\u65F6\u6CA1\u6709\u53EF\u9009\u7684\u6863\u4F4D","store.packs":"\u79EF\u5206\u5305","store.packsHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u4ED8\u6B3E\u540E\u79EF\u5206\u5373\u65F6\u5230\u8D26","store.noPacks":"\u6682\u65F6\u6CA1\u6709\u79EF\u5206\u5305","store.kind.pack":"\u79EF\u5206\u5305","store.kind.card":"\u9053\u5177","store.kind.code":"\u5151\u6362\u7801","store.kind.item":"\u7269\u54C1","store.nPoints":"{n} \u79EF\u5206","store.instant":"\u4ED8\u6B3E\u540E\u5373\u65F6\u5230\u8D26","store.redeemTitle":"\u79EF\u5206\u5151\u6362","store.redeemHint":"\u7528\u79EF\u5206\u5151\u6362\u5728\u5E94\u7528\u5185\u76F4\u63A5\u5B8C\u6210\uFF0C\u5151\u6362\u540E\u7269\u54C1\u8FDB\u80CC\u5305","store.redeem":"{n} \u79EF\u5206\u5151\u6362","store.redeemConfirm":"\u786E\u8BA4\u82B1 {n} \u79EF\u5206","store.redeemed":"\u5DF2\u5151\u6362\uFF0C\u7269\u54C1\u5728\u80CC\u5305\u91CC","store.uncertain":"\u6CA1\u6536\u5230\u7ED3\u679C\u3002\u5148\u5230\u80CC\u5305\u770B\u4E00\u4E0B\u6709\u6CA1\u6709\u5230\u8D26\uFF0C\u518D\u51B3\u5B9A\u8981\u4E0D\u8981\u91CD\u8BD5\u3002","store.soldOut":"\u5DF2\u552E\u7F44","store.left":"\u4F59 {n}","store.toBackpack":"\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.limitReached":"\u5DF2\u8FBE\u8D2D\u4E70\u4E0A\u9650","store.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u6682\u65F6\u4E0D\u80FD\u5151\u6362","store.noItems":"\u6682\u65F6\u6CA1\u6709\u53EF\u5151\u6362\u7684\u7269\u54C1","store.itemsOff":"\u7269\u54C1\u5151\u6362\u6682\u672A\u5F00\u653E","store.openBackpack":"\u6253\u5F00\u80CC\u5305","backpack.desc":"\u5728\u8FD9\u91CC\u67E5\u770B\u4F60\u83B7\u5F97\u7684\u7269\u54C1\uFF0C\u70B9\u51FB\u683C\u5B50\u67E5\u770B\u8BE6\u60C5\u3002","backpack.refresh":"\u5237\u65B0","backpack.total":"\u5171 {n} \u4EF6\u7269\u54C1","backpack.grid":"\u80CC\u5305\u7269\u54C1","backpack.slot":"{name}\uFF0C\u6570\u91CF {n}","backpack.item":"\u7269\u54C1","backpack.empty":"\u80CC\u5305\u8FD8\u662F\u7A7A\u7684","backpack.emptyHint":"\u5151\u6362\u6216\u83B7\u8D60\u7684\u7269\u54C1\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","backpack.select":"\u70B9\u51FB\u7269\u54C1\u67E5\u770B\u8BE6\u60C5","backpack.details":"\u7269\u54C1\u8BE6\u60C5","backpack.quantity":"\u6301\u6709\u6570\u91CF","backpack.acquired":"\u83B7\u5F97\u65F6\u95F4","backpack.source":"\u83B7\u5F97\u65B9\u5F0F","backpack.source.points":"\u79EF\u5206\u5151\u6362","backpack.source.admin":"\u8D60\u9001","backpack.source.reward":"\u5956\u52B1","backpack.source.other":"\u4E91\u7AEF\u53D1\u653E","backpack.consumable":"\u6D88\u8017\u54C1","backpack.voucher":"\u5361\u5238","backpack.getCards":"\u5151\u6362\u91CD\u7F6E\u5361","backpack.manageCards":"\u4F7F\u7528\u6216\u5151\u6362","backpack.reveal":"\u67E5\u770B\u5361\u5BC6","backpack.copyKey":"\u590D\u5236\u5361\u5BC6","backpack.noKey":"\u8FD9\u4EF6\u7269\u54C1\u6CA1\u6709\u5361\u5BC6\u3002","backpack.use":"\u4F7F\u7528","backpack.confirmUse":"\u786E\u8BA4\u4F7F\u7528","backpack.consumeConfirm":"\u4F7F\u7528\u540E\u6D88\u8017 1 \u4EF6\u7269\u54C1\u3002","backpack.collectible":"\u7EAA\u5FF5\u54C1","backpack.effect.points":"+{n} \u79EF\u5206","backpack.effect.cards":"+{n} \u5F20\u91CD\u7F6E\u5361","backpack.effect.quota":"\u91CD\u7F6E\u4ECA\u65E5\u4E0E\u672C\u5468\u989D\u5EA6","backpack.rarity.common":"\u666E\u901A","backpack.rarity.rare":"\u7A00\u6709","backpack.rarity.epic":"\u53F2\u8BD7","backpack.rarity.legendary":"\u4F20\u8BF4","backpack.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u5DF2\u4E0D\u53EF\u7528\uFF0C\u8BF7\u5237\u65B0\u80CC\u5305\u3002","backpack.notUsable":"\u8FD9\u4EF6\u7269\u54C1\u4E0D\u80FD\u4F7F\u7528\u3002","backpack.quotaUnavailable":"\u8BF7\u5148\u4F7F\u7528\u4E91\u7AEF AI \u521D\u59CB\u5316\u989D\u5EA6\uFF0C\u518D\u4F7F\u7528\u8FD9\u4EF6\u7269\u54C1\u3002","common.cancel":"\u53D6\u6D88","common.copied":"\u5DF2\u590D\u5236","common.copyFailed":"\u590D\u5236\u5931\u8D25","common.done":"\u5B8C\u6210","common.loadFailed":"\u6CA1\u80FD\u52A0\u8F7D","common.loadMore":"\u52A0\u8F7D\u66F4\u591A","common.loading":"\u52A0\u8F7D\u4E2D\u2026","common.openInBrowser":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00","common.retry":"\u91CD\u8BD5","common.save":"\u4FDD\u5B58","common.thisWeek":"\u672C\u5468","common.today":"\u4ECA\u65E5","common.unlimited":"\u4E0D\u9650","ann.eyebrow":"FORSION \xB7 \u516C\u544A","ann.close":"\u5173\u95ED","ann.ok":"\u77E5\u9053\u4E86","signin.button":"\u767B\u5F55 Forsion","signin.desc":"\u767B\u5F55 Forsion \u8D26\u53F7\u540E\uFF0C\u53EF\u4EE5\u5728\u8FD9\u91CC\u7BA1\u7406\u8D26\u53F7\u3001\u989D\u5EA6\u3001\u5B89\u5168\u3001\u6295\u7A3F\u4E0E\u53CD\u9988\u3002","signin.pending":"\u7B49\u5F85\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u767B\u5F55\u2026","signin.deviceHint":"\u6D4F\u89C8\u5668\u4F1A\u81EA\u52A8\u6253\u5F00\u767B\u5F55\u9875\uFF1B\u6CA1\u6709\u6253\u5F00\u7684\u8BDD\uFF0C\u7528\u624B\u673A\u626B\u7801\u6216\u6253\u5F00\u4E0B\u9762\u7684\u94FE\u63A5\uFF0C\u5E76\u6838\u5BF9\u9A8C\u8BC1\u7801\u3002","signin.code":"\u9A8C\u8BC1\u7801","signin.openLink":"\u6253\u5F00\u767B\u5F55\u9875","signin.copyLink":"\u590D\u5236\u94FE\u63A5","signin.qrLabel":"\u767B\u5F55\u4E8C\u7EF4\u7801","account.profile.title":"\u4E2A\u4EBA\u8D44\u6599","account.profile.desc":"\u5934\u50CF\u3001\u6635\u79F0\uFF0C\u4EE5\u53CA\u7ED1\u5B9A\u7684\u624B\u673A\u548C\u90AE\u7BB1","account.avatar.change":"\u66F4\u6362\u5934\u50CF","account.avatar.saved":"\u5934\u50CF\u5DF2\u66F4\u65B0","account.nickname.edit":"\u4FEE\u6539\u6635\u79F0","account.nickname.label":"\u6635\u79F0","account.nickname.saved":"\u6635\u79F0\u5DF2\u66F4\u65B0","account.role.admin":"\u7BA1\u7406\u5458","account.username":"\u7528\u6237\u540D {name}","account.contact.phone":"\u624B\u673A","account.contact.email":"\u90AE\u7BB1","account.contact.unbound":"\u672A\u7ED1\u5B9A","account.contact.manage":"\u53BB\u5B89\u5168\u9875\u7BA1\u7406","account.web.open":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u4E2A\u4EBA\u4E2D\u5FC3","account.web.desc":"\u4E91\u7A7A\u95F4\u3001AI \u5927\u8111\u4E0E\u4E3B\u9898\u5728\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7BA1\u7406\u3002","member.title":"\u4F1A\u5458","member.desc":"\u5F53\u524D\u6863\u4F4D\u3001\u65B9\u6848\u4E0E\u5230\u671F\u65E5","member.upgrade":"\u5347\u7EA7\u4F1A\u5458","member.renew":"\u7EED\u8D39","member.freeName":"\u514D\u8D39\u7248","member.freeHint":"\u5347\u7EA7\u4F1A\u5458\u53EF\u4EE5\u83B7\u5F97\u66F4\u591A AI \u989D\u5EA6","member.expires":"{date} \u5230\u671F","member.noExpiry":"\u957F\u671F\u6709\u6548","member.loadFailed":"\u4F1A\u5458\u4FE1\u606F\u6682\u65F6\u62FF\u4E0D\u5230\u3002","session.title":"\u767B\u5F55","session.desc":"\u7BA1\u7406\u8FD9\u53F0\u8BBE\u5907\u4E0A\u7684\u767B\u5F55\u72B6\u6001","local.title":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u8D26\u53F7","local.desc":"\u5728\u767B\u5F55\u8FC7\u7684\u8D26\u53F7\u4E4B\u95F4\u5207\u6362","local.current":"\u5F53\u524D","local.switch":"\u5207\u6362","local.add":"\u767B\u5F55\u5176\u4ED6\u8D26\u53F7","local.signOut":"\u9000\u51FA\u767B\u5F55","local.empty":"\u8FD8\u6CA1\u6709\u4FDD\u5B58\u7684\u8D26\u53F7","local.loadFailed":"\u8D26\u53F7\u5217\u8868\u6682\u65F6\u8BFB\u4E0D\u5230","diag.title":"\u8BCA\u65AD\u6570\u636E","diag.desc":"\u5E2E\u52A9\u6211\u4EEC\u6392\u67E5\u95EE\u9898\u3001\u6539\u8FDB Forsion\u3002\u9ED8\u8BA4\u5173\u95ED\u3002","diag.enable":"\u4E0A\u4F20\u8BCA\u65AD\u6570\u636E","diag.enableDesc":"\u6253\u5F00\u540E\uFF0C\u8FD9\u53F0\u7535\u8111\u4F1A\u5B9A\u671F\u4E0A\u4F20\u4E00\u4EFD Forsion \u4FE1\u606F\u5FEB\u7167\u5230\u4F60\u7684 Forsion \u8D26\u53F7\uFF0CForsion \u56E2\u961F\u53EF\u4EE5\u67E5\u770B\u3002\u591A\u4E45\u4E0A\u4F20\u4E00\u6B21\u7531 Forsion \u56E2\u961F\u8BBE\u5B9A\uFF0C\u9ED8\u8BA4\u6BCF\u5929\u4E00\u6B21\u3002\u968F\u65F6\u53EF\u4EE5\u5173\u95ED\u3002","diag.collected":"\u4F1A\u4E0A\u4F20","diag.item.app":"\u5E94\u7528\u4E0E\u7CFB\u7EDF\u7684\u7248\u672C\uFF0C\u8FD9\u53F0\u7535\u8111\u7684\u540D\u5B57\u3001\u5185\u5B58\u4E0E\u78C1\u76D8\u4F59\u91CF","diag.item.settings":"\u6A21\u578B\u4E0E\u8BED\u97F3\u7684\u9009\u62E9\uFF0C\u540E\u53F0 Agent \u4E0E\u63D2\u4EF6\u8BBE\u7F6E\u91CC\u7684\u5F00\u5173\u548C\u6570\u503C\uFF0CMCP \u670D\u52A1\u4E0E\u6D88\u606F\u901A\u9053\u7684\u540D\u5B57\u548C\u5F00\u5173","diag.item.agents":"Agent \u4E0E\u56E2\u961F\u7684\u914D\u7F6E\uFF08\u540D\u5B57\u3001\u6A21\u578B\u8FD9\u7C7B\u9009\u9879\uFF1B\u63CF\u8FF0\u4E0E\u63D0\u793A\u8BCD\u53EA\u8BB0\u957F\u5EA6\uFF0C\u6B63\u6587\u5F52\u4E0B\u9762\u300C\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55\u300D\u90A3\u4E2A\u5F00\u5173\uFF09","diag.item.plugins":"\u5DF2\u5B89\u88C5\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001\u4E3B\u9898\u548C Space \u7684\u540D\u5B57\u4E0E\u7248\u672C","diag.item.runs":"\u6700\u8FD1 7 \u5929\u7684\u8FD0\u884C\u8BB0\u5F55\uFF1A\u6BCF\u6B21\u8FD0\u884C\u7684\u72B6\u6001\u548C\u62A5\u9519\u539F\u56E0\uFF0C\u6A21\u578B\u8C03\u7528\u4E0E\u5DE5\u5177\u7684\u7528\u91CF\u3001\u8017\u65F6\uFF08\u4E0D\u5E26\u5BF9\u8BDD\u5185\u5BB9\u548C\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\uFF09\uFF0C\u4EE5\u53CA\u5F15\u64CE\u6700\u8FD1\u7684\u8FD0\u884C\u65E5\u5FD7","diag.notCollected":"\u4E0D\u4F1A\u4E0A\u4F20\uFF1A\u4FDD\u5B58\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u767B\u5F55\u51ED\u636E\u4E0E API \u5BC6\u94A5\u3001\u7B14\u8BB0\u6587\u4EF6\u3001Agent \u7684\u8D44\u6599\u5E93\u3001\u63D2\u4EF6\u6570\u636E\u3002","diag.sessions":"\u5305\u542B\u4F1A\u8BDD\u5185\u5BB9","diag.sessionsDesc":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u5BF9\u8BDD\uFF1A\u4F60\u548C Agent \u7684\u6D88\u606F\u6587\u5B57\u3001Agent \u7684\u601D\u8003\u8FC7\u7A0B\u548C\u7528\u5230\u7684\u5DE5\u5177\u540D\uFF0C\u5305\u62EC\u56E2\u961F\u6210\u5458\u3001\u8BA8\u8BBA\u3001\u59D4\u6D3E\u5728\u540E\u53F0\u505A\u7684\u90A3\u90E8\u5206\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\u548C\u9644\u4EF6\u672C\u8EAB\u4E0D\u5E26\uFF1B\u6D88\u606F\u91CC\u51FA\u73B0\u7684\u6587\u4EF6\u540D\u3001Agent \u5728\u56DE\u590D\u91CC\u590D\u8FF0\u7684\u7B14\u8BB0\u6216\u6587\u4EF6\u5185\u5BB9\u4F1A\u5728\u5176\u4E2D\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.memory":"\u5305\u542B Agent \u7684\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55","diag.memoryDesc":"\u6BCF\u4E2A Agent \u7684\u4EBA\u8BBE\uFF08\u5305\u62EC\u914D\u7F6E\u91CC\u7684\u63CF\u8FF0\u548C\u5F00\u53D1\u8005\u6307\u4EE4\uFF09\uFF0C\u548C\u5B83\u81EA\u5DF1\u6512\u4E0B\u6765\u7684\u5185\u5BB9\uFF1A\u8BB0\u5FC6\u548C\u8FD8\u6CA1\u6574\u7406\u7684\u8BB0\u5FC6\u5019\u9009\u3001\u8FDB\u5316\u8BB0\u5F55\u3001\u5199\u7ED9\u4F60\u7684\u534F\u4F5C\u8BF4\u660E\u3001\u6700\u8FD1 7 \u5929\u7684\u65E5\u5FD7\u548C\u8BB0\u5FC6\u6574\u7406\u8BB0\u5F55\uFF0C\u4EE5\u53CA\u9879\u76EE\u8BB0\u5FC6\uFF1B\u8FD8\u6709\u56E2\u961F\u7684\u8BBE\u5B9A\u548C\u4F60\u7684\u7528\u6237\u753B\u50CF\u3002\u8FD9\u4E9B\u662F\u4F60\u7ED9 Agent \u548C\u56E2\u961F\u5199\u7684\u8BBE\u5B9A\uFF0C\u548C Agent \u4ECE\u5BF9\u8BDD\u91CC\u8BB0\u4E0B\u7684\u5173\u4E8E\u4F60\u548C\u4F60\u7684\u5DE5\u4F5C\u7684\u4E8B\u5B9E\uFF0C\u6BCF\u6B21\u4E0A\u4F20\u5B83\u4EEC\u5F53\u524D\u7684\u5185\u5BB9\uFF08\u5F88\u957F\u7684\u4F1A\u622A\u65AD\uFF09\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.activity":"\u5305\u542B\u6D3B\u52A8\u65E5\u5FD7","diag.activityDesc":"\u6D3B\u52A8\u8BB0\u5F55\u91CC\u6709\u5BF9\u8BDD\u5F00\u5934\u7684\u51E0\u5341\u4E2A\u5B57\u548C\u7B14\u8BB0\u6587\u4EF6\u540D\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.last":"\u4E0A\u6B21\u4E0A\u4F20\uFF1A{time}","diag.noUpload":"\u8FD8\u6CA1\u6709\u4E0A\u4F20\u8FC7","diag.freq.hour":"\u6BCF\u5C0F\u65F6\u4E00\u6B21","diag.freq.hours":"\u6BCF {n} \u5C0F\u65F6\u4E00\u6B21","diag.freq.day":"\u6BCF\u5929\u4E00\u6B21","diag.freq.days":"\u6BCF {n} \u5929\u4E00\u6B21","diag.freq.manual":"Forsion \u56E2\u961F\u9700\u8981\u65F6\u624D\u91C7\u96C6","diag.retention":"\u4E91\u7AEF\u4FDD\u7559\u8FD9\u53F0\u7535\u8111\u6700\u8FD1 {n} \u5929\u7684\u5FEB\u7167\u3002\u5173\u95ED\u540E\u4E0D\u518D\u4E0A\u4F20\uFF1B\u5DF2\u4E0A\u4F20\u7684\u5FEB\u7167\u4ECD\u7559\u5728\u4E91\u7AEF\uFF0C\u9700\u8981\u5220\u9664\u53EF\u4EE5\u5728\u300C\u53CD\u9988\u300D\u91CC\u544A\u8BC9\u6211\u4EEC\u3002","page.privacy":"\u9690\u79C1\u4E0E\u6570\u636E","privacy.tab":"\u5E2E\u52A9\u6539\u8FDB","privacy.unavailable":"\u5F53\u524D\u5BBF\u4E3B\u4E0D\u652F\u6301\u5E2E\u52A9\u6539\u8FDB Forsion\uFF0C\u8BF7\u66F4\u65B0 Forsion \u540E\u91CD\u8BD5\u3002","privacy.needUpdate":"\u8FD9\u4E2A\u7248\u672C\u7684 Forsion \u8FD8\u4E0D\u4F1A\u53D1\u9001\u8FD9\u4E9B\u6570\u636E\uFF0C\u66F4\u65B0 Forsion \u540E\u624D\u4F1A\u751F\u6548\u3002","privacy.devBuild":"\u5F00\u53D1\u7248\u4E0D\u53D1\u9001\u4EFB\u4F55\u6570\u636E\u3002","privacy.improve.title":"\u5E2E\u52A9\u6539\u8FDB Forsion","privacy.improve.desc":"\u53EA\u53D1\u5143\u6570\u636E\uFF0C\u7528\u6765\u5B9A\u4F4D\u6545\u969C\u3001\u770B\u54EA\u91CC\u6162\u3002\u4E0D\u7528\u767B\u5F55\uFF0C\u4E5F\u4E0D\u5173\u8054\u4F60\u7684\u8D26\u53F7\u3002","privacy.improve.switch":"\u53D1\u9001\u5D29\u6E83\u62A5\u544A\u548C\u4F7F\u7528\u7EDF\u8BA1","privacy.improve.switchHint":"\u5173\u6389\u540E\u7ACB\u523B\u505C\u6B62\u53D1\u9001\uFF0C\u672C\u673A\u8FD8\u6CA1\u53D1\u51FA\u53BB\u7684\u4E5F\u4E00\u5E76\u4E22\u6389\u3002","privacy.details":"\u5177\u4F53\u6536\u96C6\u4EC0\u4E48","privacy.kind.crash":"\u5D29\u6E83\u62A5\u544A","privacy.kind.crashDesc":"\u51FA\u9519\u7684\u4F4D\u7F6E\u548C\u8C03\u7528\u6808\u3001\u7248\u672C\u53F7\u3001\u7CFB\u7EDF\u7248\u672C","privacy.kind.agent":"Agent \u8FD0\u884C\u60C5\u51B5","privacy.kind.agentDesc":"\u7528\u4E86\u54EA\u4E2A\u5DE5\u5177\u3001\u6210\u6CA1\u6210\u529F\u3001\u9519\u8BEF\u7C7B\u522B\u3001\u8017\u65F6\u3001\u6A21\u578B\u548C token \u6570","privacy.kind.perf":"\u6027\u80FD","privacy.kind.perfDesc":"\u542F\u52A8\u8017\u65F6\u3001\u5F15\u64CE\u62C9\u8D77\u8017\u65F6\u3001\u5361\u987F\u6B21\u6570\u3001\u5185\u5B58","privacy.kind.feature":"\u529F\u80FD\u4F7F\u7528","privacy.kind.featureDesc":"\u6253\u5F00\u4E86\u54EA\u4E2A Space / View / \u63D2\u4EF6","privacy.sent.title":"\u6700\u8FD1 7 \u5929\u53D1\u51FA\u53BB\u7684\u5185\u5BB9","privacy.sent.hint":"\u539F\u6837\u5B58\u5728\u672C\u673A\uFF0C\u53EF\u4EE5\u9010\u6761\u770B\u3002","privacy.sent.last":"\u539F\u6837\u5B58\u5728\u672C\u673A\uFF0C\u53EF\u4EE5\u9010\u6761\u770B\u3002\u4E0A\u6B21\u53D1\u9001\uFF1A{time}","privacy.sent.view":"\u67E5\u770B","privacy.sent.empty":"\u6700\u8FD1 7 \u5929\u8FD8\u6CA1\u6709\u53D1\u9001\u8FC7\u3002","privacy.delete.title":"\u5220\u9664\u5DF2\u53D1\u9001\u7684\u6570\u636E","privacy.delete.hint":"\u6309\u8FD9\u53F0\u8BBE\u5907\u7684\u5B89\u88C5\u6807\u8BC6\u5220\u6389\u670D\u52A1\u5668\u4E0A\u7684\u5168\u90E8\u8BB0\u5F55\uFF0C\u5E76\u6362\u4E00\u4E2A\u65B0\u6807\u8BC6\u3002","privacy.delete.button":"\u5220\u9664","privacy.delete.confirm":"\u786E\u8BA4\u5220\u9664","privacy.delete.done":"\u5DF2\u5220\u9664\uFF0C\u5E76\u6362\u4E86\u65B0\u7684\u5B89\u88C5\u6807\u8BC6\u3002","privacy.delete.failed":"\u6CA1\u5220\u6210\uFF1A{reason}","privacy.installId":"\u5B89\u88C5\u6807\u8BC6 {id} \xB7 \u548C\u4F60\u7684\u8D26\u53F7\u65E0\u5173","diag.uploadNow":"\u7ACB\u5373\u4E0A\u4F20","diag.uploaded":"\u5DF2\u4E0A\u4F20","diag.failed":"\u4E0A\u4F20\u5931\u8D25\uFF1A{reason}","quota.ai.title":"AI \u989D\u5EA6","quota.ai.desc":"\u4ECA\u65E5\u548C\u672C\u5468\u5404\u8FD8\u5269\u591A\u5C11\uFF1B\u7528\u5B8C\u540E\u53EF\u4EE5\u7528\u989D\u5EA6\u91CD\u7F6E\u5361\u6062\u590D","quota.resetDaily":"\u6BCF\u5929 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","quota.resetWeekly":"{date} 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","card.title":"\u989D\u5EA6\u91CD\u7F6E\u5361","card.desc":"\u628A\u4ECA\u65E5\u548C\u672C\u5468\u7684 AI \u989D\u5EA6\u6062\u590D\u5230 100%","card.owned":"\u6301\u6709 {n} \u5F20","card.use":"\u4F7F\u7528\u4E00\u5F20","card.useConfirm":"\u786E\u8BA4\u4F7F\u7528","card.used":"\u5DF2\u4F7F\u7528 1 \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","card.left":"\u8FD8\u5269 {n} \u5F20","card.noneHint":"\u6CA1\u6709\u989D\u5EA6\u91CD\u7F6E\u5361\u4E86\uFF0C\u53EF\u4EE5\u7528\u79EF\u5206\u5151\u6362\u3002","card.exchange":"\u7528\u79EF\u5206\u5151\u6362","card.price":"\u6BCF\u5F20 {price} \u79EF\u5206\uFF0C\u4E00\u6B21 1\u201350 \u5F20","card.count":"\u5151\u6362\u5F20\u6570","card.cost":"\u82B1\u8D39 {cost} \u79EF\u5206","card.countHint":"\u586B 1\u201350","card.exchangeButton":"\u5151\u6362","card.exchangeConfirm":"\u786E\u8BA4\u82B1\u8D39 {cost} \u79EF\u5206","card.exchanged":"\u5DF2\u5151\u6362 {n} \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","points.title":"\u79EF\u5206","points.desc":"\u79EF\u5206\u53EF\u4EE5\u5151\u6362\u989D\u5EA6\u91CD\u7F6E\u5361","points.balance":"\u4F59\u989D","points.balanceFailed":"\u4F59\u989D\u6682\u65F6\u62FF\u4E0D\u5230","points.recharge":"\u5145\u503C\u79EF\u5206","bg.title":"\u540E\u53F0\u989D\u5EA6","bg.desc":"Muse \u4E0E\u81EA\u52A8\u5316\u4F7F\u7528\uFF0C\u548C AI \u989D\u5EA6\u5206\u5F00\u8BA1\u7B97","bg.autoMain":"\u7528\u5B8C\u540E\u6539\u7528 AI \u989D\u5EA6\u7EE7\u7EED","bg.autoMainDesc":"\u5173\u7740\u65F6\uFF0C\u540E\u53F0\u989D\u5EA6\u7528\u5B8C\u540E Muse \u4E0E\u81EA\u52A8\u5316\u4F1A\u6682\u505C","bg.convert":"\u4ECE AI \u989D\u5EA6\u8F6C\u5165","bg.convertDesc":"\u6309 AI \u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B\u8F6C\u5165\uFF0C\u672C\u5468\u671F\u5185\u6709\u6548","bg.convertConfirm":"\u786E\u8BA4\u8F6C\u5165 {pct}%","bg.converted":"\u5DF2\u4ECE AI \u989D\u5EA6\u8F6C\u5165 {pct}%","invite.title":"\u9080\u8BF7\u4E0E\u5151\u6362","invite.desc":"\u9080\u8BF7\u597D\u53CB\u6CE8\u518C\uFF0C\u6216\u5151\u6362\u4F60\u6536\u5230\u7684\u7801","invite.myCode":"\u6211\u7684\u9080\u8BF7\u7801","invite.count":"\u5DF2\u9080\u8BF7 {n} \u4EBA","invite.copyCode":"\u590D\u5236\u9080\u8BF7\u7801","invite.copyLink":"\u590D\u5236\u9080\u8BF7\u94FE\u63A5","invite.loadFailed":"\u9080\u8BF7\u7801\u6682\u65F6\u62FF\u4E0D\u5230","invite.claim":"\u586B\u5199\u9080\u8BF7\u7801","invite.claimDesc":"\u6CE8\u518C\u540E 7 \u5929\u5185\uFF0C\u53EF\u4EE5\u8865\u586B\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimPlaceholder":"\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimSubmit":"\u63D0\u4EA4","invite.claimed":"\u9080\u8BF7\u7801\u5DF2\u751F\u6548","redeem.title":"\u5151\u6362\u7801","redeem.desc":"\u5151\u6362\u79EF\u5206\u3001\u4F1A\u5458\u6216\u5176\u4ED6\u5956\u52B1","redeem.placeholder":"\u8F93\u5165\u5151\u6362\u7801","redeem.submit":"\u5151\u6362","redeem.success":"\u5151\u6362\u6210\u529F","redeem.successWith":"\u5151\u6362\u6210\u529F\uFF1A{what}","redeem.gotPoints":"{n} \u79EF\u5206","redeem.gotMembership":"\u4F1A\u5458","sec.methods.title":"\u767B\u5F55\u65B9\u5F0F","sec.methods.desc":"\u624B\u673A\u548C\u90AE\u7BB1\u53EF\u4EE5\u7528\u6765\u767B\u5F55\u3001\u627E\u56DE\u5BC6\u7801","sec.bind":"\u7ED1\u5B9A","sec.change":"\u66F4\u6362","sec.phone":"\u624B\u673A\u53F7","sec.email":"\u90AE\u7BB1\u5730\u5740","sec.newPhone":"\u65B0\u624B\u673A\u53F7","sec.newEmail":"\u65B0\u90AE\u7BB1\u5730\u5740","sec.phonePlaceholder":"\u4E2D\u56FD\u5927\u9646\u53F7\u7801\u76F4\u63A5\u586B\uFF0C\u5176\u4ED6\u5730\u533A\u5E26 +\u533A\u53F7","sec.emailPlaceholder":"name@example.com","sec.code":"\u9A8C\u8BC1\u7801","sec.codePlaceholder":"\u8F93\u5165\u9A8C\u8BC1\u7801","sec.sendCode":"\u53D1\u9001\u9A8C\u8BC1\u7801","sec.resendIn":"{s} \u79D2\u540E\u91CD\u53D1","sec.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001","sec.bindSubmit":"\u786E\u8BA4\u7ED1\u5B9A","sec.phoneBound":"\u624B\u673A\u5DF2\u7ED1\u5B9A","sec.emailBound":"\u90AE\u7BB1\u5DF2\u7ED1\u5B9A","sec.devices.title":"\u767B\u5F55\u8BBE\u5907","sec.devices.desc":"\u62C5\u5FC3\u8D26\u53F7\u88AB\u522B\u4EBA\u7528\u4E86\uFF0C\u53EF\u4EE5\u8BA9\u6240\u6709\u8BBE\u5907\u91CD\u65B0\u767B\u5F55","sec.logoutAll":"\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDesc":"\u5305\u62EC\u8FD9\u53F0\u8BBE\u5907\uFF0C\u6240\u6709\u8BBE\u5907\u90FD\u8981\u91CD\u65B0\u767B\u5F55","sec.logoutAllConfirm":"\u786E\u8BA4\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDone":"\u5DF2\u9000\u51FA\u6240\u6709\u8BBE\u5907","pw.title":"\u5BC6\u7801","pw.desc":"{min}\u2013{max} \u4F4D\uFF0C\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u5927\u5199\u5B57\u6BCD\u548C\u7279\u6B8A\u5B57\u7B26\uFF0C\u4E0D\u80FD\u6709\u7A7A\u683C","pw.change":"\u4FEE\u6539\u5BC6\u7801","pw.modeLabel":"\u4FEE\u6539\u65B9\u5F0F","pw.mode.current":"\u7528\u5F53\u524D\u5BC6\u7801","pw.mode.code":"\u7528\u9A8C\u8BC1\u7801","pw.current":"\u5F53\u524D\u5BC6\u7801","pw.currentRequired":"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801","pw.new":"\u65B0\u5BC6\u7801","pw.confirm":"\u518D\u8F93\u4E00\u6B21\u65B0\u5BC6\u7801","pw.mismatch":"\u4E24\u6B21\u8F93\u5165\u7684\u65B0\u5BC6\u7801\u4E0D\u4E00\u81F4","pw.submit":"\u4FEE\u6539\u5BC6\u7801","pw.submitReset":"\u8BBE\u7F6E\u65B0\u5BC6\u7801","pw.changed":"\u5BC6\u7801\u5DF2\u66F4\u65B0","pw.noPasswordYet":"\u8FD9\u4E2A\u8D26\u53F7\u8FD8\u6CA1\u6709\u8BBE\u7F6E\u5BC6\u7801\uFF0C\u8BF7\u6539\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u3002","pw.codeNeedsContact":"\u7ED1\u5B9A\u624B\u673A\u6216\u90AE\u7BB1\u540E\uFF0C\u624D\u80FD\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u5BC6\u7801\u3002","pw.via":"\u9A8C\u8BC1\u7801\u53D1\u5230","pw.codeTo":"\u9A8C\u8BC1\u7801\u4F1A\u53D1\u5230 {target}","pw.rulesLabel":"\u5BC6\u7801\u89C4\u5219","pw.req.length":"{min}\u2013{max} \u4F4D","pw.req.lower":"\u542B\u5C0F\u5199\u5B57\u6BCD","pw.req.upper":"\u542B\u5927\u5199\u5B57\u6BCD","pw.req.special":"\u542B\u7279\u6B8A\u5B57\u7B26","pw.req.space":"\u4E0D\u542B\u7A7A\u683C","pw.rule.format":"\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E","pw.rule.min":"\u5BC6\u7801\u81F3\u5C11 8 \u4F4D","pw.rule.max":"\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D","pw.rule.space":"\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C","pw.rule.lower":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD","pw.rule.upper":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD","pw.rule.special":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26","del.title":"\u6CE8\u9500\u8D26\u53F7","del.desc":"\u6C38\u4E45\u5220\u9664\u8D26\u53F7\u548C\u5168\u90E8\u6570\u636E\uFF0C\u65E0\u6CD5\u6062\u590D","del.start":"\u6CE8\u9500\u8D26\u53F7","del.warn":"\u6CE8\u9500\u540E\uFF0C\u8D26\u53F7\u3001\u79EF\u5206\u3001\u4F1A\u5458\u3001\u4E91\u7A7A\u95F4\u548C\u5168\u90E8\u6570\u636E\u90FD\u4F1A\u88AB\u5220\u9664\uFF0C\u65E0\u6CD5\u627E\u56DE\u3002","del.methodLabel":"\u9A8C\u8BC1\u65B9\u5F0F","del.byCode":"\u9A8C\u8BC1\u7801","del.byPassword":"\u5BC6\u7801","del.codeLabel":"\u53D1\u5230 {target} \u7684\u9A8C\u8BC1\u7801","del.passwordLabel":"\u8D26\u53F7\u5BC6\u7801","del.submit":"\u6CE8\u9500\u8D26\u53F7","del.confirm":"\u786E\u8BA4\u6C38\u4E45\u6CE8\u9500","del.done":"\u8D26\u53F7\u5DF2\u6CE8\u9500","usage.overview.title":"\u7528\u91CF\u6982\u89C8","usage.overview.desc":"\u6240\u9009\u65F6\u95F4\u6BB5\u5185\u7684\u8BF7\u6C42\u4E0E AI \u989D\u5EA6\u6D88\u8017","usage.range":"\u65F6\u95F4\u8303\u56F4","usage.days":"{n} \u5929","usage.requests":"\u8BF7\u6C42\u6B21\u6570","usage.successRate":"\u6210\u529F\u7387","usage.consumption":"AI \u989D\u5EA6\u6D88\u8017","usage.ofToday":"\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650","usage.unlimitedNote":"\u4F60\u7684 AI \u989D\u5EA6\u4E0D\u9650\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.noLimitNote":"\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u4E3A 0 \u6216\u6682\u65F6\u62FF\u4E0D\u5230\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.byModel.title":"\u6309\u6A21\u578B","usage.byModel.desc":"\u5404\u6A21\u578B\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.byApp.title":"\u6309\u5E94\u7528","usage.byApp.desc":"\u5404\u5E94\u7528\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.col.model":"\u6A21\u578B","usage.col.app":"\u5E94\u7528","usage.col.requests":"\u8BF7\u6C42","usage.col.consumption":"\u989D\u5EA6\u6D88\u8017","usage.empty":"\u8FD9\u6BB5\u65F6\u95F4\u6CA1\u6709\u7528\u91CF","usage.appUnknown":"\u5176\u4ED6","usage.recent.title":"\u6700\u8FD1\u6D88\u8017","usage.recent.desc":"\u6BCF\u6B21\u8C03\u7528\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B","usage.recentEmpty":"\u8FD8\u6CA1\u6709\u6D88\u8017\u8BB0\u5F55","usage.failed":"\u5931\u8D25","usage.shown":"\u5DF2\u663E\u793A {shown} / {total} \u6761","fb.list.title":"\u6211\u7684\u53CD\u9988","fb.list.desc":"\u63D0\u4EA4\u8FC7\u7684\u95EE\u9898\u548C\u5EFA\u8BAE\uFF0C\u56DE\u590D\u4F1A\u663E\u793A\u5728\u8FD9\u91CC","fb.new":"\u65B0\u5EFA\u53CD\u9988","fb.empty":"\u8FD8\u6CA1\u6709\u53CD\u9988","fb.untitled":"\u672A\u547D\u540D\u53CD\u9988","fb.unread":"\u6709\u65B0\u56DE\u590D","fb.shown":"\u5DF2\u663E\u793A {n} \u6761","fb.submitted":"\u5DF2\u63D0\u4EA4\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u56DE\u590D","fb.descLabel":"\u63CF\u8FF0\u95EE\u9898\u6216\u5EFA\u8BAE","fb.descPlaceholder":"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF0C\u4F60\u671F\u671B\u600E\u6837\u2026\u2026","fb.imagesHint":"\u6700\u591A\u9644 {n} \u5F20\u622A\u56FE\uFF08\u6BCF\u5F20\u4E0D\u8D85\u8FC7 5MB\uFF09\uFF0C\u53EF\u4EE5\u7C98\u8D34\u6216\u62D6\u8FDB\u6765\u3002","fb.addImages":"\u6DFB\u52A0\u622A\u56FE","fb.removeImage":"\u79FB\u9664\u8FD9\u5F20\u56FE","fb.submit":"\u63D0\u4EA4","fb.back":"\u8FD4\u56DE\u5217\u8868","fb.you":"\u4F60","fb.support":"Forsion \u56E2\u961F","fb.attachment":"\u9644\u4EF6","fb.imagePreview":"\u67E5\u770B\u5927\u56FE","fb.closedNote":"\u8FD9\u4E2A\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u4E0D\u80FD\u518D\u56DE\u590D\u3002\u6709\u65B0\u95EE\u9898\u8BF7\u65B0\u5EFA\u53CD\u9988\u3002","fb.replyPlaceholder":"\u56DE\u590D\u2026","fb.replySend":"\u53D1\u9001\u56DE\u590D","fb.replySent":"\u56DE\u590D\u5DF2\u53D1\u9001","fb.status.open":"\u5F85\u5904\u7406","fb.status.in_progress":"\u5904\u7406\u4E2D","fb.status.resolved":"\u5DF2\u89E3\u51B3","fb.status.closed":"\u5DF2\u5173\u95ED","err.accountGone":"\u8FD9\u4E2A\u8D26\u53F7\u5DF2\u9000\u51FA\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.adminCannotDelete":"\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500","err.avatarInvalid":"\u8FD9\u5F20\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765\uFF0C\u6362\u4E00\u5F20\u8BD5\u8BD5","err.avatarTooLarge":"\u56FE\u7247\u592A\u5927\u4E86\uFF0C\u6362\u4E00\u5F20\u5C0F\u4E00\u70B9\u7684","err.backgroundUnavailable":"\u540E\u53F0\u989D\u5EA6\u6682\u65F6\u4E0D\u53EF\u7528","err.captcha":"\u9700\u8981\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u4EBA\u673A\u9A8C\u8BC1","err.codeCooldown":"\u53D1\u9001\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.codeInvalid":"\u9A8C\u8BC1\u7801\u4E0D\u5BF9\u6216\u5DF2\u8FC7\u671F","err.codeRequired":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","err.codeSendFailed":"\u9A8C\u8BC1\u7801\u6CA1\u53D1\u51FA\u53BB\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.currentPasswordWrong":"\u5F53\u524D\u5BC6\u7801\u4E0D\u5BF9","err.deleteTargetInvalid":"\u9A8C\u8BC1\u7801\u53EA\u80FD\u53D1\u5230\u8D26\u53F7\u7ED1\u5B9A\u7684\u624B\u673A\u6216\u90AE\u7BB1","err.deleteVerifyFailed":"\u9A8C\u8BC1\u6CA1\u901A\u8FC7\uFF0C\u8D26\u53F7\u6CA1\u6709\u6CE8\u9500","err.emailInUse":"\u8FD9\u4E2A\u90AE\u7BB1\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.emailInvalid":"\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.featureDisabled":"\u8FD9\u9879\u529F\u80FD\u6682\u65F6\u5173\u95ED\u4E86","err.feedbackEmpty":"\u8BF7\u5199\u4E00\u4E0B\u95EE\u9898\u6216\u5EFA\u8BAE","err.feedbackTooLong":"\u63CF\u8FF0\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.generic":"\u64CD\u4F5C\u6CA1\u6709\u6210\u529F\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.imageRead":"\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765","err.imageTooLarge":"\u6BCF\u5F20\u56FE\u7247\u4E0D\u80FD\u8D85\u8FC7 5MB","err.imageType":"\u53EA\u80FD\u6DFB\u52A0\u56FE\u7247","err.insufficientMainQuota":"AI \u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6","err.insufficientPoints":"\u79EF\u5206\u4E0D\u591F","err.priceChanged":"\u91CD\u7F6E\u5361\u5355\u4EF7\u521A\u521A\u8C03\u6574\u8FC7\uFF0C\u8BF7\u770B\u4E00\u4E0B\u65B0\u4EF7\u683C\uFF0C\u518D\u786E\u8BA4\u5151\u6362\u3002","err.invalidCount":"\u5F20\u6570\u8981\u5728 1\u201350 \u4E4B\u95F4","err.invalidInviteCode":"\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548","err.inviteAlreadyUsed":"\u4F60\u5DF2\u7ECF\u7528\u8FC7\u9080\u8BF7\u7801\u4E86","err.inviteEmpty":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","err.inviteOwnCode":"\u4E0D\u80FD\u586B\u81EA\u5DF1\u7684\u9080\u8BF7\u7801","err.inviteWindowExpired":"\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F","err.loginCodeExpired":"\u767B\u5F55\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.loginInProgress":"\u6B63\u5728\u767B\u5F55\u4E2D","err.loginTimeout":"\u767B\u5F55\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5","err.loginUnsupported":"\u8FD9\u4E2A\u4E91\u7AEF\u4E0D\u652F\u6301\u684C\u9762\u7AEF\u767B\u5F55","err.network":"\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u540E\u91CD\u8BD5","err.noCloudUrl":"\u8BF7\u5148\u5728\u300C\u8FDE\u63A5\u300D\u91CC\u586B\u5199\u4E91\u7AEF\u5730\u5740","err.noResetCard":"\u6CA1\u6709\u53EF\u7528\u7684\u989D\u5EA6\u91CD\u7F6E\u5361","err.openFailed":"\u6CA1\u80FD\u6253\u5F00\u6D4F\u89C8\u5668","err.passwordRequired":"\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801\u548C\u65B0\u5BC6\u7801","err.phoneInUse":"\u8FD9\u4E2A\u624B\u673A\u53F7\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.phoneInvalid":"\u624B\u673A\u53F7\u683C\u5F0F\u4E0D\u5BF9\uFF08\u5176\u4ED6\u5730\u533A\u8BF7\u5E26 +\u533A\u53F7\uFF09","err.redeemEmpty":"\u8BF7\u8F93\u5165\u5151\u6362\u7801","err.redeemExpired":"\u5151\u6362\u7801\u5DF2\u8FC7\u671F","err.redeemInactive":"\u5151\u6362\u7801\u5DF2\u505C\u7528","err.redeemNotFound":"\u5151\u6362\u7801\u4E0D\u5B58\u5728","err.redeemUsedUp":"\u5151\u6362\u7801\u5DF2\u88AB\u7528\u5B8C","err.redeemUserLimit":"\u4F60\u5DF2\u7ECF\u5151\u6362\u8FC7\u8FD9\u4E2A\u7801\u4E86","err.replyEmpty":"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9","err.replyTooLong":"\u56DE\u590D\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.server":"\u670D\u52A1\u5668\u51FA\u9519\u4E86\uFF08{status}\uFF09\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.session":"\u767B\u5F55\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.signedOut":"\u8BF7\u5148\u767B\u5F55 Forsion","err.targetInvalid":"\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.ticketNotFound":"\u8FD9\u6761\u53CD\u9988\u4E0D\u5B58\u5728\u6216\u5DF2\u5220\u9664","err.webPageGone":"\u8FD9\u4E2A\u7F51\u9875\u4E0D\u5B58\u5728\u6216\u5DF2\u4E0B\u7EBF","err.listingGone":"\u8FD9\u4E2A\u7F51\u9875\u6CA1\u6709\u4E0A\u67B6\u7533\u8BF7","err.listingSummary":"\u8BF7\u586B\u5199\u5546\u5E97\u7B80\u4ECB\uFF08300 \u5B57\u4EE5\u5185\uFF09","err.tooFrequent":"\u64CD\u4F5C\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.tooManyImages":"\u6700\u591A\u6DFB\u52A0 5 \u5F20\u56FE\u7247","err.unavailable":"\u8FD9\u4E2A\u7248\u672C\u8FD8\u4E0D\u652F\u6301\u8FD9\u4E2A\u64CD\u4F5C\uFF0C\u8BF7\u66F4\u65B0 Forsion","profile.unsupported":"\u8FD9\u4E2A\u670D\u52A1\u7AEF\u8FD8\u6CA1\u6709\u4E2A\u4EBA\u4E3B\u9875\u529F\u80FD","profile.state.private":"\u4EC5\u81EA\u5DF1\u53EF\u89C1","profile.state.public":"\u5DF2\u516C\u5F00","profile.state.privateDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.state.publicDesc":"\u4EFB\u4F55\u4EBA\u6253\u5F00\u516C\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.decorate":"\u88C5\u9970","profile.publish":"\u516C\u5F00\u4E3B\u9875","profile.makePrivate":"\u8BBE\u4E3A\u79C1\u6709","profile.address":"\u516C\u5F00\u5730\u5740","profile.copyLink":"\u590D\u5236\u94FE\u63A5","profile.openPublic":"\u67E5\u770B\u516C\u5F00\u9875","profile.nowPublic":"\u4E3B\u9875\u5DF2\u516C\u5F00","profile.nowPrivate":"\u4E3B\u9875\u5DF2\u8BBE\u4E3A\u79C1\u6709\uFF0C\u516C\u5F00\u5730\u5740\u4E0D\u518D\u80FD\u6253\u5F00","profile.bio":"\u7B80\u4ECB","profile.bioPlaceholder":"\u5199\u4E00\u53E5\u7B80\u4ECB","profile.linkAdd":"\u6DFB\u52A0\u94FE\u63A5","profile.linkRemove":"\u79FB\u9664\u94FE\u63A5","profile.linkInvalid":"\u94FE\u63A5\u8981\u4EE5 http:// \u6216 https:// \u5F00\u5934\uFF0C\u6216\u76F4\u63A5\u5199\u57DF\u540D","profile.joined":"{date}\u52A0\u5165","profile.stat.tokens":"\u7D2F\u8BA1 Token","profile.stat.activeDays":"\u6D3B\u8DC3\u5929\u6570","profile.stat.longest":"\u6700\u957F\u8FDE\u7EED","profile.stat.current":"\u5F53\u524D\u8FDE\u7EED","profile.stat.installs":"\u4F5C\u54C1\u88AB\u5B89\u88C5","profile.unit.days":"\u5929","profile.works":"\u7CBE\u9009\u4F5C\u54C1","profile.worksPick":"\u9009\u62E9","profile.worksEmpty":"\u8FD8\u6CA1\u6709\u4E0A\u67B6\u7684\u4F5C\u54C1\u3002\u4E0A\u67B6\u5230\u5546\u5E97\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\uFF0C\u53EF\u4EE5\u653E\u5230\u8FD9\u91CC\u3002","profile.worksNone":"\u8FD8\u6CA1\u6709\u53EF\u4EE5\u653E\u4E0A\u4E3B\u9875\u7684\u4F5C\u54C1\u3002\u4F5C\u54C1\u4E0A\u67B6\u5230\u5546\u5E97\u3001\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","profile.worksPicked":"\u5DF2\u9009 {n} / {max} \u4EF6","profile.worksAuto":"\u4E0D\u9009\u7684\u8BDD\uFF0C\u6309\u5B89\u88C5\u91CF\u81EA\u52A8\u53D6\u524D\u51E0\u4EF6","profile.goSubmit":"\u53BB\u6295\u7A3F","profile.workInstalls":"{n} \u6B21\u5B89\u88C5","profile.workVisits":"{n} \u6B21\u8BBF\u95EE","profile.work.skill":"\u6280\u80FD","profile.work.agent":"Agent","profile.work.plugin":"\u63D2\u4EF6","profile.work.space":"Space","profile.work.theme":"\u4E3B\u9898","profile.work.note":"\u7B14\u8BB0\u63D2\u4EF6","profile.work.webapp":"\u7F51\u9875\u5E94\u7528","profile.activity":"\u6D3B\u52A8","profile.activityDays":"\u8FC7\u53BB\u4E00\u5E74\u6709 {n} \u5929\u5728\u7528","profile.less":"\u5C11","profile.more":"\u591A","profile.badges":"\u5FBD\u7AE0","profile.badgesEmpty":"\u8FD8\u6CA1\u6709\u5FBD\u7AE0\u3002\u8FDE\u7EED\u4F7F\u7528\u3001\u4E0A\u67B6\u4F5C\u54C1\u3001\u9080\u8BF7\u670B\u53CB\u90FD\u4F1A\u70B9\u4EAE\u3002","profile.badge.early":"\u65E9\u671F\u7528\u6237","profile.badge.streak":"\u8FDE\u7EED 30 \u5929","profile.badge.author":"\u4F5C\u8005","profile.badge.inviter":"\u9080\u8BF7\u8FBE\u4EBA","profile.badge.event":"\u6D3B\u52A8\u7EAA\u5FF5","profile.badgeSub.early":"{value} \u5E74\u52A0\u5165","profile.badgeSub.streak":"\u6700\u957F\u8FDE\u7EED {value} \u5929","profile.badgeSub.author":"\u4E0A\u67B6\u4E86 {value} \u4EF6\u4F5C\u54C1","profile.badgeSub.inviter":"\u9080\u8BF7\u4E86 {value} \u4F4D\u670B\u53CB","profile.badgeSub.event":"\u53C2\u52A0\u8FC7 Forsion \u7684\u6D3B\u52A8{value}","profile.insights":"\u6D1E\u5BDF","profile.insightsEmpty":"\u7528\u5F97\u8FD8\u4E0D\u591F\u591A\uFF0C\u8FC7\u51E0\u5929\u518D\u6765\u770B\u3002","profile.insightModel":"\u6700\u5E38\u7528\u6A21\u578B","profile.insightHours":"\u6700\u6D3B\u8DC3\u65F6\u6BB5","profile.deco.skin":"\u516C\u5F00\u9875\u7684\u914D\u8272","profile.deco.mode":"\u516C\u5F00\u9875\u7684\u660E\u6697","profile.deco.publicHint":"\u8FD9\u4E24\u9879\u53EA\u7BA1\u8BBF\u5BA2\u5728\u516C\u5F00\u9875\u4E0A\u770B\u5230\u7684\u3002\u5728\u8FD9\u91CC\uFF0C\u4E3B\u9875\u8DDF Forsion \u5F53\u524D\u7684\u4E3B\u9898\u8D70\u3002","profile.deco.cover":"\u5C01\u9762","profile.deco.frame":"\u5934\u50CF\u6846","profile.deco.modules":"\u6A21\u5757","profile.skin.cream":"\u7ECF\u5178","profile.skin.coral":"\u73CA\u745A","profile.skin.teal":"\u67D4\u9752","profile.skin.lavender":"\u85B0\u8863\u8349","profile.mode.auto":"\u8DDF\u968F\u8BBF\u5BA2","profile.mode.light":"\u6D45\u8272","profile.mode.dark":"\u6DF1\u8272","profile.cover.none":"\u65E0","profile.cover.mist":"\u6668\u96FE","profile.cover.contour":"\u7B49\u9AD8\u7EBF","profile.cover.dots":"\u7F51\u70B9","profile.frame.none":"\u65E0","profile.frame.ring":"\u7EC6\u73AF","profile.frame.pro":"\u4F1A\u5458\u73AF","profile.frameProHint":"\u4F1A\u5458\u73AF\u662F\u4ED8\u8D39\u4F1A\u5458\u4E13\u5C5E\u3002","profile.col.show":"\u663E\u793A","profile.col.public":"\u516C\u5F00","profile.moveUp":"\u4E0A\u79FB","profile.moveDown":"\u4E0B\u79FB","profile.modulesHint":"\u300C\u663E\u793A\u300D\u51B3\u5B9A\u4E3B\u9875\u4E0A\u6709\u6CA1\u6709\u8FD9\u4E00\u5757\uFF1B\u300C\u516C\u5F00\u300D\u51B3\u5B9A\u8BBF\u5BA2\u80FD\u4E0D\u80FD\u770B\u5230\uFF0C\u4E3B\u9875\u516C\u5F00\u540E\u624D\u8D77\u4F5C\u7528\u3002","profile.mod.stats":"\u6570\u636E","profile.mod.works":"\u7CBE\u9009\u4F5C\u54C1","profile.mod.activity":"\u6D3B\u52A8","profile.mod.badges":"\u5FBD\u7AE0","profile.mod.insights":"\u6D1E\u5BDF","profile.modDesc.stats":"\u7D2F\u8BA1 Token\u3001\u6D3B\u8DC3\u5929\u6570\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4F5C\u54C1\u5B89\u88C5\u91CF","profile.modDesc.works":"\u4F60\u4E0A\u67B6\u7684\u4F5C\u54C1\uFF0C\u6700\u591A 6 \u4EF6","profile.modDesc.activity":"\u8FC7\u53BB\u4E00\u5E74\u6BCF\u5929\u7528\u6CA1\u7528\u3001\u7528\u5F97\u591A\u4E0D\u591A\uFF08\u53EA\u6709\u6DF1\u6D45\uFF0C\u6CA1\u6709\u5177\u4F53\u6570\u5B57\uFF09","profile.modDesc.badges":"\u52A0\u5165\u5E74\u4EFD\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4E0A\u67B6\u3001\u9080\u8BF7\u3001\u6D3B\u52A8","profile.modDesc.insights":"\u6700\u5E38\u7528\u7684\u6A21\u578B\u3001\u6700\u6D3B\u8DC3\u7684\u65F6\u6BB5","profile.publishDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u8FD9\u4E2A\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55\u3002\u4E0B\u9762\u6BCF\u4E00\u5757\u53EF\u4EE5\u5355\u72EC\u51B3\u5B9A\u7ED9\u4E0D\u7ED9\u8BBF\u5BA2\u770B\u3002","profile.publishNever":"\u5934\u50CF\u3001\u6635\u79F0\u3001\u7528\u6237\u540D\u3001\u7B80\u4ECB\u548C\u94FE\u63A5\u4F1A\u4E00\u8D77\u516C\u5F00\u3002\u90AE\u7BB1\u3001\u624B\u673A\u53F7\u3001\u4F1A\u5458\u5230\u671F\u65E5\u3001\u79EF\u5206\u548C\u989D\u5EA6\u4E0D\u4F1A\u51FA\u73B0\u5728\u4E3B\u9875\u4E0A\u3002","profile.publishConfirm":"\u516C\u5F00","profile.blocked.machineUsername":"\u4F60\u73B0\u5728\u7684\u7528\u6237\u540D\u662F\u7CFB\u7EDF\u751F\u6210\u7684\uFF0C\u91CC\u9762\u5E26\u7740\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u7684\u4E00\u90E8\u5206\uFF0C\u516C\u5F00\u4F1A\u628A\u5B83\u9732\u51FA\u53BB\u3002\u5148\u5230\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u300C\u8D26\u53F7\u300D\u9875\u6539\u4E00\u4E2A\u7528\u6237\u540D\uFF08\u6BCF\u4E2A\u8D26\u53F7\u53EF\u4EE5\u6539\u4E00\u6B21\uFF09\uFF0C\u518D\u56DE\u6765\u516C\u5F00\u3002","profile.blocked.publishBlocked":"\u8FD9\u4E2A\u4E3B\u9875\u5DF2\u88AB\u7BA1\u7406\u5458\u505C\u6B62\u516C\u5F00\u3002\u6709\u7591\u95EE\u8BF7\u901A\u8FC7\u300C\u53CD\u9988\u300D\u8054\u7CFB\u6211\u4EEC\u3002","profile.goRename":"\u53BB\u6539\u7528\u6237\u540D","profile.invalid":"\u8FD9\u9879\u5185\u5BB9\u6CA1\u80FD\u4FDD\u5B58\uFF0C\u8BF7\u68C0\u67E5\u540E\u518D\u8BD5","guide.title":"\u4F7F\u7528\u6307\u5357","guide.readOnly":"\u53EA\u8BFB","guide.more":"\u66F4\u591A","guide.unlockAll":"\u5168\u90E8\u89E3\u9501","guide.relock":"\u6539\u56DE\u6309\u7B49\u7EA7\u89E3\u9501","guide.reminders":"\u4F7F\u7528\u6307\u5357\u63D0\u9192","guide.spotlight":"\u73B0\u573A\u6307\u5F15","guide.spotStep":"\u7B2C {n} \u6B65\uFF0C\u5171 {total} \u6B65","guide.figure":"\u793A\u610F\u56FE","guide.openAchievements":"\u6253\u5F00\u6210\u5C31","guide.tasks":"\u672C\u7AE0\u4EFB\u52A1","guide.go":"\u5E26\u6211\u53BB","guide.desktopOnly":"\u5728\u7535\u8111\u4E0A\u505A","guide.taskDone":"\u5DF2\u5B8C\u6210","guide.askTangu":"\u95EE Tangu","guide.progress":"\u8FDB\u5EA6","guide.justUnlocked":"\u521A\u89E3\u9501","guide.lockedHint":"\u672A\u89E3\u9501","guide.whatsNew":"\u65B0\u7248\u672C \xB7 {version}","guide.level.lv1":"Lv.1 \u521D\u6765\u4E4D\u5230","guide.level.lv2":"Lv.2 \u719F\u95E8\u719F\u8DEF","guide.level.lv3":"Lv.3 \u5F97\u5FC3\u5E94\u624B","guide.level.lv4":"Lv.4 \u878D\u4F1A\u8D2F\u901A","guide.locked.title":"\u8FD9\u4E00\u7AE0\u8FD8\u6CA1\u89E3\u9501","guide.locked.body":"\u505A\u5B8C\u300C{level}\u300D\u7684\u4EFB\u52A1\u5C31\u80FD\u8BFB\u5168\u6587\u3002","guide.locked.left":"\u8FD8\u5DEE\u8FD9\u51E0\u9879\uFF1A","guide.locked.hint":"\u7528\u8FC7\u4E00\u9635\u4E86\uFF1F\u53F3\u4E0A\u89D2\u300C\xB7\xB7\xB7\u300D\u91CC\u53EF\u4EE5\u5168\u90E8\u89E3\u9501\u3002","guide.levelProgress":"\u672C\u7EA7\u8FDB\u5EA6 {done}/{total}","guide.next":"\u4E0B\u4E00\u7EA7","guide.allDone":"\u5168\u90E8\u5B8C\u6210","guide.allDoneBody":"\u6307\u5357\u91CC\u7684\u4EFB\u52A1\u90FD\u505A\u5B8C\u4E86\uFF0C\u968F\u65F6\u56DE\u6765\u7FFB\u770B\u3002","guide.review":"\u56DE\u770B","guide.ask.hint":"\u5BF9\u300C{chapter}\u300D\u6709\u7591\u95EE\uFF1F\u95EE Tangu \u4F1A\u5F00\u4E00\u4E2A\u5E26\u4E0A\u672C\u7AE0\u5185\u5BB9\u7684\u65B0\u5BF9\u8BDD\u3002","guide.ask.placeholder":"\u60F3\u95EE\u4EC0\u4E48\uFF1F","guide.ask.send":"\u5F00\u59CB\u5BF9\u8BDD","guide.ask.prompt":"\u6211\u6B63\u5728\u8BFB Forsion \u4F7F\u7528\u6307\u5357\u91CC\u300C{chapter}\u300D\u8FD9\u4E00\u7AE0\uFF0C\u5185\u5BB9\u9644\u5728\u4E0B\u9762\u3002{question}","guide.ask.unavailable":"\u8FD9\u91CC\u5F00\u4E0D\u4E86\u5BF9\u8BDD","guide.ask.chatTitle":"\u4F7F\u7528\u6307\u5357\u95EE\u7B54","guide.companion.back":"\u56DE\u5230\u6307\u5357","guide.companion.close":"\u6536\u8D77","guide.toast.taskDone":"\u5B8C\u6210\uFF1A{task}","guide.letter.levelTitle":"{level} \u5DF2\u89E3\u9501\uFF1A\u63A5\u4E0B\u6765\u8BD5\u8BD5\u8FD9\u51E0\u4EF6\u4E8B","guide.letter.levelBody":"\u4E0A\u4E00\u7EA7\u7684\u4EFB\u52A1\u90FD\u505A\u5B8C\u4E86\uFF0C\u4E0B\u9762\u8FD9\u51E0\u7AE0\u73B0\u5728\u53EF\u4EE5\u8BFB\u4E86\u3002\u6BCF\u9879\u4EFB\u52A1\u90FD\u80FD\u300C\u5E26\u6211\u53BB\u300D\u3002","guide.letter.versionTitle":"{version} \u6709 {n} \u4EF6\u65B0\u4E1C\u897F\u53EF\u4EE5\u4F53\u9A8C","guide.letter.versionBody":"\u8FD9\u4E2A\u7248\u672C\u65B0\u52A0\u7684\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4E0A\u624B\uFF1A","guide.letter.open":"\u6253\u5F00\u6307\u5357","guide.status.done":"\u5DF2\u5B8C\u6210","guide.cmd.open":"\u6253\u5F00\u4F7F\u7528\u6307\u5357","penzor.title":"\u84EC\u6D32\u4E91","penzor.overview":"\u6982\u89C8","penzor.places":"\u4F4D\u7F6E","penzor.details":"\u8BE6\u60C5","penzor.ledger.sync":"\u667A\u5E93\u540C\u6B65","penzor.ledger.ama":"Amadeus Cloud","penzor.ledger.apps":"\u5E94\u7528\u6587\u4EF6","penzor.ledger.exports":"\u5BFC\u51FA","penzor.trash":"\u56DE\u6536\u7AD9","penzor.items":"{n} \u9879","penzor.total.sub":"\u5B58\u5728 Forsion \u4E91\u7AEF \xB7 {time}\u66F4\u65B0","penzor.justNow":"\u521A\u521A","penzor.ofMax":"/ {max}","penzor.card.syncSub":"{n} \u4E2A\u5E93 \xB7 \u4E0A\u6B21\u5199\u5165 {time}","penzor.card.syncSubNone":"{n} \u4E2A\u5E93","penzor.card.syncFoot":"\u5355\u4E2A\u6587\u4EF6\u8D85\u8FC7 {size} \u4E0D\u4E0A\u4F20","penzor.card.syncWarn":"\u5FEB\u6EE1\u4E86\uFF1A\u6EE1 {max} \u540E\u65B0\u6587\u4EF6\u4E0D\u518D\u4E0A\u4F20\uFF0C\u5DF2\u5728\u4E91\u7AEF\u7684\u7167\u5E38\u540C\u6B65","penzor.card.amaSmall":"\u4E0D\u7B97\u5728\u989D\u5EA6\u91CC","penzor.card.amaSub":"{n} \u4E2A\u4E91\u7AEF\u667A\u5E93","penzor.card.amaFoot":"\u7B14\u8BB0\u548C\u9644\u4EF6\u5728 Amadeus \u7684 Cloud \u4FA7","penzor.card.appsFoot":"\u56DE\u6536\u7AD9 {n} \u9879 \xB7 {size}","penzor.card.appsWarn":"\u5FEB\u6EE1\u4E86\uFF1A\u6EE1 {max} \u540E\u5E94\u7528\u4E0D\u80FD\u518D\u5B58\u65B0\u6587\u4EF6\uFF1B\u56DE\u6536\u7AD9\u91CC\u7684\u4E5F\u7B97\uFF0C\u6E05\u7A7A\u80FD\u817E\u51FA\u7A7A\u95F4","penzor.card.expSmall":"{n} \u4E2A\u6587\u4EF6","penzor.card.expSub":"\u6700\u8FD1\uFF1A{name} \xB7 {time}","penzor.card.expFoot":"\u5404\u5E94\u7528\u5BFC\u51FA\u7684\u6587\u4EF6","penzor.card.none":"\u8FD8\u6CA1\u6709\u4E1C\u897F","penzor.largest":"\u5360\u7528\u6700\u591A","penzor.col.name":"\u540D\u79F0","penzor.col.size":"\u5927\u5C0F","penzor.col.mtime":"\u4FEE\u6539\u65F6\u95F4","penzor.col.device":"\u5199\u5165\u8BBE\u5907","penzor.col.deleted":"\u5220\u9664\u4E8E","penzor.col.origin":"\u539F\u4F4D\u7F6E","penzor.col.app":"\u6765\u6E90","penzor.sort.mtime":"\u6309\u4FEE\u6539\u65F6\u95F4","penzor.sort.size":"\u6309\u5927\u5C0F","penzor.sort.name":"\u6309\u540D\u79F0","penzor.search":"\u641C\u7D22\u8FD9\u91CC\u7684\u6587\u4EF6\u540D","penzor.sync.thisDevice":"\u672C\u673A\u5728\u540C\u6B65","penzor.meta.files":"{size} \xB7 {n} \u4E2A\u6587\u4EF6","penzor.sync.last":"\u4E0A\u6B21\u5199\u5165 {time} \xB7 {device}","penzor.sync.lastNoDevice":"\u4E0A\u6B21\u5199\u5165 {time}","penzor.sync.devices":"{n} \u53F0\u8BBE\u5907\u540C\u6B65\u8FD9\u4E2A\u5E93","penzor.sync.meter":"\u667A\u5E93\u540C\u6B65\u5171\u7528 {max}\uFF0C\u5DF2\u7528 {used}","penzor.apps.meter":"\u5E94\u7528\u6587\u4EF6\u5171\u7528 {max}\uFF0C\u5DF2\u7528 {used}\uFF08\u56DE\u6536\u7AD9\u91CC\u7684\u4E5F\u7B97\uFF09","penzor.apps.by":"\u7531 {app} \u5199\u5165","penzor.ama.notCounted":"\u4E0D\u7B97\u5728\u989D\u5EA6\u91CC","penzor.ama.open":"\u5728 Amadeus \u4E2D\u6253\u5F00","penzor.hosted.open":"\u7BA1\u7406\u6211\u7684\u7F51\u9875","penzor.hosted.note":"\u8FD9\u662F\u5DF2\u53D1\u5E03\u7F51\u9875\u7684\u6587\u4EF6\u3002\u8981\u6539\u5185\u5BB9\u8BF7\u91CD\u65B0\u53D1\u5E03\uFF0C\u8981\u5220\u9664\u8BF7\u5230\u300C\u6211\u7684\u7F51\u9875\u300D\u4E0B\u7EBF\u3002","penzor.trash.meta":"{n} \u9879 \xB7 {size}","penzor.trash.note":"\u6C38\u4E45\u5220\u9664\u540E\u624D\u817E\u51FA\u7A7A\u95F4","penzor.trash.emptyBtn":"\u6E05\u7A7A\u56DE\u6536\u7AD9","penzor.act.download":"\u4E0B\u8F7D","penzor.act.rename":"\u91CD\u547D\u540D","penzor.act.move":"\u79FB\u52A8\u5230\u2026","penzor.act.trash":"\u79FB\u5230\u56DE\u6536\u7AD9","penzor.act.delete":"\u5220\u9664","penzor.act.restore":"\u6062\u590D","penzor.act.purge":"\u6C38\u4E45\u5220\u9664","penzor.act.copyName":"\u590D\u5236\u5E93\u540D","penzor.act.openSync":"\u5728\u8BBE\u7F6E\u4E2D\u6253\u5F00\u540C\u6B65","penzor.act.refresh":"\u5237\u65B0","penzor.act.up":"\u4E0A\u4E00\u7EA7","penzor.toast.trashed":"\u5DF2\u628A\u300C{name}\u300D\u79FB\u5230\u56DE\u6536\u7AD9","penzor.toast.restored":"\u5DF2\u6062\u590D\u300C{name}\u300D","penzor.toast.purged":"\u5DF2\u6C38\u4E45\u5220\u9664\u300C{name}\u300D","penzor.toast.emptied":"\u5DF2\u6E05\u7A7A\u56DE\u6536\u7AD9","penzor.toast.downloaded":"\u5DF2\u5B58\u5230\u300C\u4E0B\u8F7D\u300D\uFF1A{name}","penzor.toast.renamed":"\u5DF2\u6539\u540D\u4E3A\u300C{name}\u300D","penzor.toast.moved":"\u5DF2\u79FB\u5230\u300C{name}\u300D","penzor.toast.versionRestored":"\u5DF2\u6062\u590D\u5230\u7B2C {n} \u7248","penzor.toast.copied":"\u5DF2\u590D\u5236\u5E93\u540D","penzor.toast.failed":"\u6CA1\u6210\u529F\uFF1A{reason}","penzor.confirm.purge":"\u6C38\u4E45\u5220\u9664\u300C{name}\u300D\uFF1F\u5220\u4E86\u5C31\u627E\u4E0D\u56DE\u6765\u4E86\u3002","penzor.confirm.empty":"\u6E05\u7A7A\u56DE\u6536\u7AD9\uFF1F{n} \u9879\u4F1A\u88AB\u6C38\u4E45\u5220\u9664\uFF0C\u627E\u4E0D\u56DE\u6765\u3002","penzor.confirm.deleteExport":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5BFC\u51FA\u7684\u6587\u4EF6\u6CA1\u6709\u56DE\u6536\u7AD9\uFF0C\u5220\u4E86\u5C31\u627E\u4E0D\u56DE\u6765\u4E86\u3002","penzor.cancel":"\u53D6\u6D88","penzor.side.where":"\u4F4D\u7F6E","penzor.side.mtime":"\u4FEE\u6539","penzor.side.device":"\u5199\u5165\u8BBE\u5907","penzor.side.thisDevice":"{name}\uFF08\u672C\u673A\uFF09","penzor.side.from":"\u6765\u6E90","penzor.side.versions":"\u5386\u53F2\u7248\u672C","penzor.side.versionsNone":"\u6CA1\u6709","penzor.side.versionRow":"\u7B2C {n} \u7248 \xB7 {time} \xB7 {size}","penzor.side.restoreVersion":"\u6062\u590D\u8FD9\u4E00\u7248","penzor.side.deletedAt":"\u5220\u9664\u4E8E","penzor.side.origin":"\u539F\u4F4D\u7F6E","penzor.side.inner":"\u91CC\u9762\u8FD8\u6709 {n} \u9879\uFF0C\u6062\u590D\u65F6\u4E00\u8D77\u56DE\u6765","penzor.side.inTrash":"\u5728\u56DE\u6536\u7AD9 \xB7 {size}","penzor.side.readonlySync":"\u540C\u6B65\u5E93\u91CC\u7684\u6587\u4EF6\u53EA\u5728\u8BBE\u5907\u4E0A\u5220\u6539\u3002\u5728\u8FD9\u91CC\u5220\u6389\u4E00\u4E2A\u6587\u4EF6\uFF0C\u6BCF\u53F0\u540C\u6B65 {vault} \u7684\u8BBE\u5907\u4E0B\u6B21\u540C\u6B65\u65F6\u90FD\u4F1A\u8DDF\u7740\u5220\u6389\uFF0C\u6240\u4EE5\u8FD9\u91CC\u53EA\u80FD\u770B\u548C\u4E0B\u8F7D\u3002","penzor.side.readonlyAma":"\u7B14\u8BB0\u548C\u9644\u4EF6\u5728 Amadeus \u91CC\u6539\u3002\u5728\u8FD9\u91CC\u5220\u6389\u4E00\u4E2A\u9644\u4EF6\uFF0C\u5F15\u7528\u5B83\u7684\u7B14\u8BB0\u4F1A\u7F3A\u56FE\uFF0C\u6240\u4EE5\u8FD9\u91CC\u53EA\u80FD\u770B\u548C\u4E0B\u8F7D\u3002","penzor.side.exportNote":"\u5BFC\u51FA\u7684\u6587\u4EF6\u6CA1\u6709\u56DE\u6536\u7AD9\uFF1A\u5220\u9664\u5C31\u662F\u6C38\u4E45\u5220\u9664\u3002","penzor.side.none":"\u9009\u4E00\u4E2A\u6587\u4EF6\u770B\u8BE6\u60C5","penzor.side.folder":"\u6587\u4EF6\u5939 \xB7 {n} \u9879","penzor.side.folderPlain":"\u6587\u4EF6\u5939","penzor.move.title":"\u79FB\u5230\u54EA\u91CC","penzor.move.root":"{app} \u6700\u4E0A\u5C42","penzor.move.here":"\u79FB\u5230\u8FD9\u91CC","penzor.move.noFolders":"\u8FD9\u4E00\u5C42\u6CA1\u6709\u6587\u4EF6\u5939","penzor.rename.save":"\u4FDD\u5B58","penzor.empty.title":"\u84EC\u6D32\u4E91\u91CC\u8FD8\u6CA1\u6709\u4E1C\u897F","penzor.empty.lead":"\u8FD9\u4E9B\u4E1C\u897F\u5B58\u8FDB\u4E91\u7AEF\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\uFF1A","penzor.empty.sync":"\u5728\u300C\u8BBE\u7F6E \u203A \u540C\u6B65\u300D\u91CC\u628A\u8FDC\u7A0B\u670D\u52A1\u9009\u6210\u300C\u84EC\u6D32\u4E91\u300D\uFF0C\u672C\u5730\u667A\u5E93\u5C31\u540C\u6B65\u5230\u8FD9\u91CC","penzor.empty.ama":"Amadeus \u5207\u5230 Cloud \u4FA7\u5199\u7684\u7B14\u8BB0","penzor.empty.apps":"\u5404\u5E94\u7528\u5B58\u5230\u4E91\u7AEF\u6216\u5BFC\u51FA\u7684\u6587\u4EF6","penzor.empty.openSync":"\u6253\u5F00\u540C\u6B65\u8BBE\u7F6E","penzor.out.title":"\u767B\u5F55\u540E\u67E5\u770B\u4F60\u7684\u84EC\u6D32\u4E91","penzor.out.lead":"\u84EC\u6D32\u4E91\u653E\u7740\u4F60\u540C\u6B65\u5230 Forsion \u4E91\u7AEF\u7684\u5E93\u3001Amadeus Cloud \u7684\u7B14\u8BB0\uFF0C\u548C\u5404\u5E94\u7528\u5B58\u5728\u4E91\u7AEF\u7684\u6587\u4EF6\u3002","penzor.out.signIn":"\u767B\u5F55 Forsion \u8D26\u53F7","penzor.loading":"\u6B63\u5728\u8BFB\u53D6\u2026","penzor.err":"\u6CA1\u8BFB\u5230\uFF1A{reason}","penzor.folderEmpty":"\u8FD9\u91CC\u6CA1\u6709\u6587\u4EF6","penzor.noMatch":"\u6CA1\u6709\u540D\u5B57\u91CC\u5E26\u300C{q}\u300D\u7684\u6587\u4EF6","penzor.cmd.open":"\u6253\u5F00\u84EC\u6D32\u4E91","penzor.unreachable":"\u8FDE\u4E0D\u4E0A Forsion \u4E91\u7AEF\uFF0C\u7A0D\u540E\u518D\u8BD5","penzor.toast.emptyPartial":"\u56DE\u6536\u7AD9\u91CC\u8FD8\u6709 {n} \u9879\u6CA1\u5220\u6389","penzor.sort.deleted":"\u6309\u5220\u9664\u65F6\u95F4","penzor.side.versionsN":"{n} \u4E2A","penzor.drive":"\u6211\u7684\u4E91\u76D8","penzor.drive.meta":"\u7B97\u5728\u5E94\u7528\u6587\u4EF6\u7684 {max} \u91CC","penzor.drive.empty":"\u8FD9\u91CC\u8FD8\u7A7A\u7740\u3002\u628A\u6587\u4EF6\u62D6\u8FDB\u6765\uFF0C\u6216\u8005\u70B9\u300C\u4E0A\u4F20\u300D\u3002","penzor.act.upload":"\u4E0A\u4F20","penzor.act.uploadMore":"\u66F4\u591A\u4E0A\u4F20\u65B9\u5F0F","penzor.act.uploadFiles":"\u4E0A\u4F20\u6587\u4EF6\u2026","penzor.act.uploadFolder":"\u4E0A\u4F20\u6587\u4EF6\u5939\u2026","penzor.act.uploadHere":"\u4E0A\u4F20\u5230\u8FD9\u91CC\u2026","penzor.act.newFolder":"\u65B0\u5EFA\u6587\u4EF6\u5939","penzor.act.clearSel":"\u53D6\u6D88\u9009\u62E9","penzor.newFolder.default":"\u65B0\u5EFA\u6587\u4EF6\u5939","penzor.sel.bar":"\u5DF2\u9009 {n} \u9879 \xB7 {size}","penzor.sel.title":"\u5DF2\u9009 {n} \u9879","penzor.sel.sub":"{size} \xB7 {files} \u4E2A\u6587\u4EF6","penzor.sel.subDirs":"{size} \xB7 {files} \u4E2A\u6587\u4EF6\u3001{dirs} \u4E2A\u6587\u4EF6\u5939","penzor.sel.download":"\u4E0B\u8F7D {n} \u9879","penzor.sel.saveTo":"\u4E0B\u8F7D\u5230","penzor.sel.saveToValue":"\u4E0B\u8F7D / {folder}","penzor.sel.noDirs":"\u6587\u4EF6\u5939\u8FD9\u4E00\u7248\u8FD8\u4E0D\u80FD\u4E0B\u8F7D\uFF0C\u53EA\u4E0B\u8F7D\u9009\u4E2D\u7684\u6587\u4EF6\u3002","penzor.download.folder":"\u84EC\u6D32\u4E91 {date}","penzor.drop.to":"\u677E\u624B\u4E0A\u4F20\u5230\u300C{place}\u300D","penzor.tx.busy":"\u6B63\u5728\u4F20\u8F93 {n} \u9879","penzor.tx.allDone":"\u5168\u90E8\u4F20\u5B8C","penzor.tx.failedN":"{n} \u9879\u6CA1\u4F20\u5B8C","penzor.tx.counts":"\u4E0A\u4F20 {up} \xB7 \u4E0B\u8F7D {down}","penzor.tx.eta":"\u5269\u7EA6 {eta}","penzor.tx.doneN":"{n} \u9879\u5DF2\u4F20\u5B8C","penzor.tx.restDone":"\u5176\u4F59 {n} \u9879\u5DF2\u4F20\u5B8C","penzor.tx.pill":"{counts} \xB7 {pct}%","penzor.tx.queued":"\u6392\u961F\u4E2D","penzor.tx.paused":"\u5DF2\u6682\u505C \xB7 \u7EE7\u7EED\u4F1A\u4ECE\u5934\u4F20","penzor.tx.uploaded":"\u5DF2\u4E0A\u4F20 \xB7 {time}","penzor.tx.downloaded":"\u5DF2\u4E0B\u8F7D \xB7 {time}","penzor.tx.canceled":"\u5DF2\u53D6\u6D88","penzor.tx.left":"\u5269 {eta}","penzor.tx.sec":"{n} \u79D2","penzor.tx.min":"{n} \u5206\u949F","penzor.tx.pause":"\u6682\u505C","penzor.tx.resume":"\u7EE7\u7EED","penzor.tx.cancel":"\u53D6\u6D88","penzor.tx.retry":"\u91CD\u8BD5","penzor.tx.remove":"\u79FB\u9664","penzor.tx.locate":"\u5B9A\u4F4D","penzor.tx.reveal":"\u5728\u6587\u4EF6\u5939\u4E2D\u663E\u793A","penzor.tx.pauseAll":"\u5168\u90E8\u6682\u505C","penzor.tx.resumeAll":"\u5168\u90E8\u7EE7\u7EED","penzor.tx.retryAll":"\u5168\u90E8\u91CD\u8BD5","penzor.tx.clearDone":"\u6E05\u9664\u5DF2\u5B8C\u6210","penzor.tx.clear":"\u6E05\u9664","penzor.tx.collapse":"\u6536\u8D77","penzor.tx.expand":"\u5C55\u5F00\u4F20\u8F93\u5217\u8868","penzor.tx.quota":"\u7A7A\u95F4\u4E0D\u591F\uFF0C\u8FD8\u5DEE {size}","penzor.tx.quotaSub":"\u8FD9\u4E00\u6279\u4E00\u4E2A\u90FD\u6CA1\u5F00\u59CB\u4F20","penzor.tx.freeSpace":"\u53BB\u56DE\u6536\u7AD9\u817E\u5730\u65B9","penzor.err.too_large":"\u5355\u4E2A\u6587\u4EF6\u8D85\u8FC7 50 MB\uFF08\u8FD9\u4E2A {size}\uFF09\uFF0C\u8FD9\u4E00\u7248\u4F20\u4E0D\u4E86","penzor.err.quota":"\u4E91\u7AEF\u7A7A\u95F4\u4E0D\u591F","penzor.err.network":"\u7F51\u7EDC\u65AD\u4E86\uFF0C\u4F20\u5230 {pct}% \u505C\u4E0B","penzor.err.account_changed":"\u6362\u4E86\u8D26\u53F7\uFF0C\u8FD9\u4E00\u9879\u6CA1\u6709\u63A5\u7740\u4F20","penzor.err.download_unavailable":"\u6B64\u5BBF\u4E3B\u6682\u4E0D\u652F\u6301\u4FDD\u5B58\u4E0B\u8F7D\uFF0C\u8BF7\u66F4\u65B0 Forsion","penzor.err.download_failed":"\u6587\u4EF6\u672A\u4FDD\u5B58\uFF0C\u8BF7\u91CD\u8BD5\u4E0B\u8F7D","penzor.err.not_signed_in":"\u6CA1\u767B\u5F55","penzor.err.gone":"\u672C\u673A\u4E0A\u627E\u4E0D\u5230\u8FD9\u4E2A\u6587\u4EF6\u4E86","penzor.err.popup_blocked":"\u6D4F\u89C8\u5668\u62E6\u4E0B\u4E86\u65B0\u6807\u7B7E\u9875\uFF0C\u5141\u8BB8\u672C\u7AD9\u5F39\u51FA\u7A97\u53E3\u540E\u518D\u8BD5\u4E00\u6B21","penzor.err.changed":"\u4F20\u7684\u65F6\u5019\u6587\u4EF6\u6539\u52A8\u4E86\uFF0C\u91CD\u8BD5\u4E00\u6B21","penzor.err.storage_unavailable":"\u4E91\u7AEF\u5B58\u50A8\u6682\u65F6\u4E0D\u53EF\u7528","penzor.err.other":"\u6CA1\u4F20\u5B8C\uFF08{code}\uFF09","penzor.err.too_many":"\u4E00\u6B21\u6700\u591A {n} \u4E2A\u6587\u4EF6\uFF0C\u5206\u51E0\u6B21\u62D6\u8FDB\u6765","penzor.toast.upDoneOne":"\u5DF2\u4E0A\u4F20\u300C{name}\u300D","penzor.toast.upDoneMany":"\u5DF2\u4E0A\u4F20 {n} \u4E2A\u6587\u4EF6","penzor.toast.downDoneMany":"\u5DF2\u4E0B\u8F7D {n} \u4E2A\u6587\u4EF6\u5230\u300C\u4E0B\u8F7D\u300D","penzor.toast.txFailed":"{n} \u9879\u6CA1\u4F20\u5B8C\uFF0C\u56DE\u84EC\u6D32\u4E91\u770B\u770B","penzor.toast.folderExists":"\u5DF2\u7ECF\u6709\u53EB\u300C{name}\u300D\u7684\u6587\u4EF6\u5939\u4E86","penzor.toast.trashedN":"\u5DF2\u628A {n} \u9879\u79FB\u5230\u56DE\u6536\u7AD9","penzor.toast.movedN":"\u5DF2\u628A {n} \u9879\u79FB\u5230\u300C{name}\u300D","penzor.toast.batchPartial":"\u6709 {n} \u9879\u6CA1\u6210\u529F","penzor.sync.title":"\u540C\u6B65","penzor.sync.onN":"{n} \u9879\u5DF2\u5F00","penzor.sync.allOff":"\u90FD\u6CA1\u5F00","penzor.sync.waiting":"\u7B49\u4F60\u51B3\u5B9A","penzor.sync.badgeWaiting":"{n} \u9879\u5DF2\u5F00 \xB7 1 \u9879\u7B49\u4F60\u51B3\u5B9A","penzor.sync.running":"\u540C\u6B65\u4E2D {pct}%","penzor.sync.runningPlain":"\u540C\u6B65\u4E2D","penzor.sync.metaDevice":"\u8FD9\u53F0 {name}","penzor.sync.metaLast":"\u4E0A\u6B21\u540C\u6B65 {time}","penzor.sync.metaNever":"\u8FD8\u6CA1\u540C\u6B65\u8FC7","penzor.sync.every":"\u6BCF {n} \u5206\u949F","penzor.sync.everyHours":"\u6BCF {n} \u5C0F\u65F6","penzor.sync.manual":"\u624B\u52A8","penzor.sync.onStart":"\u5F00\u673A\u65F6\u4E00\u6B21","penzor.sync.minAgo":"{n} \u5206\u949F\u524D","penzor.sync.hoursAgo":"{n} \u5C0F\u65F6\u524D","penzor.sync.notesNamed":"\u667A\u5E93\u300C{name}\u300D","penzor.sync.notesPlain":"\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93","penzor.sync.notesDesc":"\u6574\u4E2A\u672C\u673A\u667A\u5E93\uFF0C\u548C\u4F60\u7684\u5176\u4ED6\u7535\u8111\u4FDD\u6301\u4E00\u81F4","penzor.sync.agents":"Agents \u4E0E\u8BB0\u5FC6","penzor.sync.agentsDesc":"Agents \u7684\u8BB0\u5FC6\u3001\u65E5\u5FD7\u3001\u6280\u80FD\u548C\u534F\u4F5C\u8BF4\u660E\uFF0C\u8FD8\u6709\u4F60\u7684\u8D44\u6599\u548C\u9ED8\u8BA4\u65E5\u5386","penzor.sync.conflictsN":"{n} \u4E2A\u51B2\u7A81\u526F\u672C","penzor.sync.conflictsHint":"\u4E24\u8FB9\u90FD\u6539\u8FC7\u7684\u6587\u4EF6\u4E24\u4EFD\u90FD\u7559\u7740\uFF1A\u53E6\u4E00\u4EFD\u5B58\u6210\u6587\u4EF6\u540D\u5E26\u300Cconflict\u300D\u7684\u526F\u672C\uFF0C\u5728\u5BF9\u5E94 Agent \u7684\u6587\u4EF6\u5939\uFF08\u6216\u4F60\u7684\u8D44\u6599\u6587\u4EF6\u5939\uFF09\u91CC","penzor.sync.pluginsPending":"{n} \u4E2A\u63D2\u4EF6\u7684\u6539\u52A8\u8FD8\u6CA1\u4F20\u4E0A\u53BB","penzor.sync.agentsN":"{n} \u4E2A Agent","penzor.sync.plugins":"\u63D2\u4EF6\u6570\u636E","penzor.sync.pluginsDesc":"\u63D2\u4EF6\u81EA\u5DF1\u5B58\u7684\u8BBE\u7F6E\u548C\u6570\u636E","penzor.sync.pluginsN":"{n} \u4E2A\u63D2\u4EF6","penzor.sync.off":"\u6CA1\u5F00","penzor.sync.done":"\u5DF2\u540C\u6B65","penzor.sync.doneSize":"\u5DF2\u540C\u6B65 \xB7 {size}","penzor.sync.firstPending":"\u7B49\u7B2C\u4E00\u6B21\u540C\u6B65","penzor.sync.failed":"\u4E0A\u6B21\u6CA1\u540C\u6B65\u6210\u529F","penzor.sync.overQuota":"\u8D85\u51FA\u989D\u5EA6\uFF0C\u6709\u7684\u6CA1\u4F20","penzor.sync.to":"\u540C\u6B65\u5230 {name}","penzor.sync.toFolder":"\u540C\u6B65\u5230\u672C\u673A\u6587\u4EF6\u5939","penzor.sync.decideAbove":"\u5728\u4E0A\u9762\u90A3\u5F20\u5361\u91CC\u9009","penzor.sync.kvSchedule":"\u540C\u6B65\u8BA1\u5212","penzor.sync.kvDirection":"\u65B9\u5411","penzor.sync.kvSkipped":"\u6CA1\u4F20\u7684","penzor.sync.kvWhere":"\u4E91\u7AEF\u4F4D\u7F6E","penzor.sync.change":"\u6539","penzor.sync.open":"\u6253\u5F00","penzor.sync.dir.both":"\u53CC\u5411","penzor.sync.dir.push":"\u4EC5\u4E0A\u4F20","penzor.sync.dir.pull":"\u4EC5\u4E0B\u8F7D","penzor.sync.skippedN":"{n} \u4E2A\u8D85\u8FC7 {size} \u7684\u6587\u4EF6","penzor.sync.where":"{ledger} \u203A {vault}","penzor.sync.whereUsed":"{ledger} \u203A {vault} \xB7 {used} / {max}","penzor.sync.devicesTitle":"\u5728\u540C\u6B65\u7684\u8BBE\u5907","penzor.sync.thisOne":"\u8FD9\u53F0","penzor.sync.lastWrite":"\u4E0A\u6B21\u5199\u5165 {time}","penzor.sync.noDevices":"\u8FD8\u6CA1\u6709\u8BBE\u5907\u5728\u540C\u6B65","penzor.sync.phoneTitle":"\u624B\u673A\u548C\u7F51\u9875\u770B\u5230\u7684\u90A3\u4E00\u4EFD","penzor.sync.phoneTip":"\u624B\u673A\u548C\u7F51\u9875\u76F4\u63A5\u8BFB\u300C\u4E91\u7AEF\u667A\u5E93\u300D\uFF08Amadeus \u7684\u4E91\u7AEF\u4FA7\uFF0C{size}\uFF09\uFF0C\u5B83\u4E00\u76F4\u5728\u540C\u6B65\uFF0C\u548C\u4E0A\u9762\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93\u662F\u4E24\u4EFD\u3002\u60F3\u5728\u624B\u673A\u4E0A\u770B\u8FD9\u53F0\u7684\u67D0\u4E2A\u6587\u4EF6\u5939\uFF1A\u5728\u7B14\u8BB0\u91CC\u53F3\u952E\u90A3\u4E2A\u6587\u4EF6\u5939\uFF0C\u628A\u5B83\u540C\u6B65\u5230\u4E91\u7AEF\u667A\u5E93\u3002","penzor.sync.phoneTipPlain":"\u624B\u673A\u548C\u7F51\u9875\u76F4\u63A5\u8BFB\u300C\u4E91\u7AEF\u667A\u5E93\u300D\uFF08Amadeus \u7684\u4E91\u7AEF\u4FA7\uFF09\uFF0C\u5B83\u4E00\u76F4\u5728\u540C\u6B65\uFF0C\u548C\u4E0A\u9762\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93\u662F\u4E24\u4EFD\u3002\u60F3\u5728\u624B\u673A\u4E0A\u770B\u8FD9\u53F0\u7684\u67D0\u4E2A\u6587\u4EF6\u5939\uFF1A\u5728\u7B14\u8BB0\u91CC\u53F3\u952E\u90A3\u4E2A\u6587\u4EF6\u5939\uFF0C\u628A\u5B83\u540C\u6B65\u5230\u4E91\u7AEF\u667A\u5E93\u3002","penzor.sync.foot":"\u540C\u6B65\u8BA1\u5212\u3001\u65B9\u5411\u548C\u5176\u4ED6\u5B58\u50A8\uFF08Dropbox / S3 / WebDAV\uFF09\u5728","penzor.sync.footLink":"\u8BBE\u7F6E \u203A \u540C\u6B65","penzor.sync.askTitle":"\u4E91\u7AEF\u5DF2\u7ECF\u6709\u4E00\u4EFD\u667A\u5E93","penzor.sync.askCloud":"\u4E91\u7AEF\u90A3\u4EFD\u6765\u81EA {device}\uFF1A{files} \u4E2A\u6587\u4EF6 \xB7 {size}\u3002","penzor.sync.askCloudNoDevice":"\u4E91\u7AEF\u90A3\u4EFD\uFF1A{files} \u4E2A\u6587\u4EF6 \xB7 {size}\u3002","penzor.sync.askLocal":"\u8FD9\u53F0\u6709 {local} \u4E2A\u6587\u4EF6\u4E91\u7AEF\u6CA1\u6709\uFF0C{conflicts} \u4E2A\u4E24\u8FB9\u5185\u5BB9\u4E0D\u540C\u3002","penzor.sync.askMerge":"\u5408\u5E76\u4E24\u8FB9","penzor.sync.askCloudBtn":"\u7528\u4E91\u7AEF\u90A3\u4EFD","penzor.sync.askSkip":"\u8FD9\u53F0\u5148\u4E0D\u540C\u6B65\u667A\u5E93","penzor.sync.askExplain":"\u5408\u5E76\uFF1A\u4E24\u8FB9\u90FD\u7559\u7740\uFF0C\u5185\u5BB9\u4E0D\u540C\u7684\u53E6\u5B58\u4E00\u4EFD\u300C\uFF08\u51B2\u7A81\uFF09\u300D\u3002\u7528\u4E91\u7AEF\u90A3\u4EFD\uFF1A\u8FD9\u53F0\u548C\u4E91\u7AEF\u4E0D\u4E00\u6837\u7684\u6587\u4EF6\u5148\u632A\u8FDB\u65C1\u8FB9\u7684\u300C{backup}\u300D\u6587\u4EF6\u5939\uFF0C\u518D\u4E0B\u8F7D\u4E91\u7AEF\u90A3\u4EFD\u3002","penzor.sync.askConfirm":"\u8FD9\u53F0\u548C\u4E91\u7AEF\u4E0D\u4E00\u6837\u7684\u6587\u4EF6\u4F1A\u5148\u632A\u8FDB\u300C{backup}\u300D\uFF0C\u518D\u6362\u6210\u4E91\u7AEF\u90A3\u4EFD\u3002","penzor.sync.askConfirmGo":"\u632A\u8D70\u5E76\u7528\u4E91\u7AEF\u90A3\u4EFD","penzor.sync.backupName":"{name} \u540C\u6B65\u524D\u5907\u4EFD {date}","penzor.sync.quotaTitle":"\u667A\u5E93 {size}\uFF0C\u8D85\u8FC7\u4E86\u300C{ledger}\u300D\u7684 {max} \u4E0A\u9650","penzor.sync.quotaTitlePlain":"\u667A\u5E93\u8D85\u8FC7\u4E86\u300C{ledger}\u300D\u7684\u4E0A\u9650","penzor.sync.quotaBody":"\u653E\u4E0D\u4E0B\u7684\u6587\u4EF6\u7559\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\uFF0C\u6CA1\u6709\u5220\uFF0C\u4E5F\u6CA1\u6709\u4F20\uFF1B\u5176\u4F59\u51E0\u9879\u7167\u5E38\u540C\u6B65\u3002","penzor.sync.quotaLarge":"\u8D85\u8FC7 {size} \u7684\u5355\u4E2A\u6587\u4EF6\u4E00\u76F4\u4E0D\u4F20\uFF08{n} \u4E2A\uFF09\u3002","penzor.sync.quotaSee":"\u770B\u770B\u6CA1\u4F20\u7684\u6587\u4EF6","su.title":"\u5546\u5E97\u66F4\u65B0","su.source.github":"GitHub \u6765\u6E90","su.source.npm":"npm \u6765\u6E90","su.source.zip":"ZIP \u4E0A\u4F20","su.review":"\u5F85\u5BA1\u6838","su.approved":"\u5DF2\u901A\u8FC7","su.rejected":"\u6CA1\u901A\u8FC7","su.viaGithub":"GitHub Release {tag}","su.viaNpm":"npm {version}","su.metaReview":"{time} \u63D0\u4EA4 \xB7 \u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u6536\u4EF6\u7BB1","su.metaReviewNoTime":"\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u6536\u4EF6\u7BB1","su.metaApproved":"\u5546\u5E97\u73B0\u5728\u663E\u793A {version}","su.metaApprovedInfo":"\u5546\u5E97\u4FE1\u606F\u5DF2\u66F4\u65B0","su.metaRejected":"\u5546\u5E97\u7167\u65E7\u663E\u793A {version}","su.metaRejectedUnlisted":"\u8FD8\u6CA1\u6709\u4E0A\u67B6","su.infoOnly":"\u53EA\u6539\u5546\u5E97\u4FE1\u606F","su.listSep":"\u3001","su.openSubmission":"\u5728\u6295\u7A3F\u4E2D\u67E5\u770B","wc.title":"\u7F51\u9875","wc.pill.published":"\u5DF2\u53D1\u5E03","wc.pill.live":"\u5DF2\u4E0A\u7EBF","wc.pill.review":"\u4E0A\u67B6\u5BA1\u6838\u4E2D","wc.pill.listed":"\u5DF2\u4E0A\u67B6","wc.pill.rejected":"\u4E0A\u67B6\u672A\u901A\u8FC7","wc.pill.gone":"\u5DF2\u4E0B\u7EBF","wc.justPublished":"\u521A\u521A\u53D1\u5E03","wc.anyone":"\u62FF\u5230\u94FE\u63A5\u7684\u4EBA\u90FD\u80FD\u6253\u5F00","wc.open":"\u6253\u5F00","wc.viewInPages":"\u5728\u6211\u7684\u7F51\u9875\u4E2D\u67E5\u770B","wc.manage":"\u5728\u6211\u7684\u7F51\u9875\u4E2D\u7BA1\u7406","wc.total":"\u5DF2\u53D1\u5E03 {n} \u4E2A","wc.more":"\u8FD8\u6709 {n} \u4E2A","wc.unpublishTitle":"\u4E0B\u7EBF\u300C{name}\u300D\uFF1F","wc.unpublishBody":"\u94FE\u63A5\u4F1A\u5931\u6548\uFF0C\u7F51\u9875\u7684\u6587\u4EF6\u4E5F\u4F1A\u4ECE\u4E91\u76D8\u5220\u9664\u3002","wc.unpublishAgain":"\u518D\u70B9\u4E00\u6B21\u4E0B\u7EBF"},og={"events.title":"Events","events.back":"Back to app","events.count":"{n} live","events.group.active":"Live","events.group.notice":"Notices","events.group.upcoming":"Coming up","events.ended":"Past events","events.endedEmpty":"No past events yet","events.list":"All events","events.kind.checkin":"Check-in","events.kind.tasks":"Quests","events.kind.game":"Mini game","events.kind.notice":"Notice","events.left.days":"{n}d left","events.left.hours":"{n}h left","events.left.long":"{d}d {h}h left","events.left.longHours":"{h}h left","events.time.start":"Starts {date}","events.time.claim":"Ended. Claim by {date}","events.time.claimShort":"Claim by {date}","events.time.ended":"Ended {date}","events.time.published":"Published {date}","events.rewards":"Rewards","events.checkin.signed":"{n} of {total} days","events.checkin.today":"Today","events.checkin.day":"Day {n}","events.checkin.do":"Check in","events.checkin.done":"Checked in today","events.checkin.finished":"All days complete","events.tasks.progress":"Progress","events.tasks.claim":"Claim","events.tasks.claimAll":"Claim all ({n})","events.tasks.go":"Go","events.tasks.closed":"Event ended","events.game.board":"Leaderboard","events.game.me":"You","events.game.anon":"Anonymous","events.game.enter":"Play","events.game.install":"Get it in the Store","events.game.empty":"No scores yet","events.notice.more":"Learn more","events.toast.checkin":"Checked in: {reward}","events.toast.claimed":"Claimed {reward}","events.toast.partial":"{n} claimed, {m} failed. Try again later","events.toast.backpack":"Open backpack","events.err.failed":"Not claimed. Try again when you're back online","events.err.notLive":"This event has ended","events.err.completed":"You've completed every day","events.err.grantFailed":"The reward didn't go through. It's logged for manual delivery, so there's no need to claim again","events.login.title":"Sign in to join events","events.login.do":"Sign in to Forsion","events.empty":"No events right now","events.error":"Couldn't load events","events.retry":"Try again","events.dot":"Rewards to claim or new events","penzor.rules.default":"Cloud default","penzor.rules.off":"Do not sync","penzor.rules.device":"Device","penzor.rules.run":"Sync now","penzor.rules.twoWay":"Two-way","penzor.rules.defaultForWeb":"The web uses the default folder","penzor.rules.tab.rules":"Sync rules","penzor.rules.tab.active":"Transfers","penzor.rules.tab.history":"History","penzor.rules.enable":"Enable content sync","penzor.rules.add":"Add rule","penzor.rules.source":"Local source","penzor.rules.destination":"Cloud destination","penzor.rules.direction":"Direction","penzor.rules.remove":"Remove rule","penzor.rules.inherit":"An empty path covers all of Forsion. Children inherit; the most specific path wins. Unmatched content stays on this device.","penzor.rules.namespace":"Default: Cloud /Forsion/. Device folders: Cloud /Forsion-deviceID/.","penzor.rules.human":"Choose human independently. The default calendar uses human/CALENDAR.db. A device destination does not replace the web default.","penzor.rules.preview":"Preview changes","penzor.rules.previewTitle":"Review sync scope","penzor.rules.previewCounts":"Upload {up}, download {down}; {conflicts} existing items need merging or preserved versions.","penzor.rules.retain":"Previous destinations are retained. Turning sync off deletes no files. If sources change, preview again.","penzor.rules.back":"Back","penzor.rules.apply":"Confirm and start","penzor.rules.pause":"Pause","penzor.rules.resume":"Continue","penzor.rules.noActive":"No files are transferring.","penzor.rules.manual":"Manual uploads and downloads","penzor.rules.historyNote":"The latest 200 items. Conflicts preserve both versions; other content continues syncing.","penzor.rules.retry":"Retry failed items","penzor.rules.noHistory":"No sync history yet.","penzor.rules.details":"View transfers","penzor.rules.plugins":"Plugin data keeps its own sync management.","penzor.rules.turnOff":"Turn off plugin data sync","penzor.rules.turnOn":"Turn on plugin data sync","penzor.rules.phase.idle":"Waiting for the next sync","penzor.rules.phase.scanning":"Checking files","penzor.rules.phase.syncing":"Syncing","penzor.rules.phase.paused":"Paused","penzor.rules.state.queued":"Queued","penzor.rules.state.active":"Transferring","penzor.rules.state.done":"Done","penzor.rules.state.failed":"Failed","penzor.rules.state.paused":"Paused","penzor.rules.state.conflict":"Conflict versions preserved","penzor.tree.synced":"Synced","penzor.tree.thisBackup":"This computer \xB7 backup only","penzor.tree.byApp":"By app","penzor.tree.legacy":"Legacy vault sync","penzor.quota.sourceLimit":"This kind also has its own limit of {max}; {used} used","penzor.ov.mine":"Yours","penzor.ov.synced":"Synced from your devices","penzor.ov.stale":"No longer updated","penzor.ov.uploads":"Files you upload and organize; change them freely","penzor.ov.all":"Notes, agents, about me and plugins","penzor.ov.allLast":"Notes, agents, about me and plugins \xB7 last synced {time}","penzor.ov.self":"The copy only this computer uses","penzor.ov.device":"Shared only between this computer and that one","penzor.ov.agents":"Agent settings, memory and logs","penzor.ov.profile":"Your profile and default calendar","penzor.ov.sync":"Vaults your computers sync up","penzor.ov.legacy":"No longer written once this computer uses the new sync; kept, not deleted","penzor.ov.ama":"Notes from the web and synced notes","penzor.ov.apps":"Files your apps store; delete or rename them","penzor.ov.plugins":"Settings plugins store; usage only","penzor.ov.exports":"Exported files; download or delete them","penzor.ov.segNotes":"Notes","penzor.ov.segSync":"Device sync","penzor.ov.segOther":"Other","penzor.content.badge":"Kept by the new sync","penzor.content.badgeLast":"Kept by the new sync \xB7 last synced {time}","penzor.content.noteAll":"This is the cloud copy every signed-in device and the web see. To change files, edit them in Notes or Agents on a computer and they sync up; you can download them here.","penzor.content.noteSelf":"The copy only this computer uses; other devices don\u2019t see it. Change files on this computer; you can download them here.","penzor.content.noteDevice":"Shared only between this computer and {name}. Change files on a computer; you can download them here.","penzor.legacy.title":"This computer stopped writing to this vault when it switched to the new sync","penzor.legacy.body":"This computer\u2019s notes now live in Shared with all devices \u203A Notes. Older desktop versions may still write here, so this copy is kept, not deleted.","penzor.legacy.go":"See the new copy","penzor.drive.total":"All of Penzor Cloud: {used} / {max} used","penzor.drive.seeAll":"View","penzor.cs.statusOff":"Off","penzor.cs.statusPaused":"Paused","penzor.cs.statusRun":"Syncing {pct}%","penzor.cs.statusScan":"Checking files","penzor.cs.statusWarn":"{n} to review","penzor.cs.statusOk":"Up to date","penzor.cs.statusOkAgo":"Up to date \xB7 {time}","penzor.cs.thisComputer":"This computer: {name}","penzor.cs.thisComputerLabel":"This computer:","penzor.cs.rename":"Rename this computer","penzor.cs.renameHint":"Other devices will show this name \xB7 Enter to save","penzor.cs.othersN":"{n} others: {names}","penzor.cs.noOthers":"No other devices on this account yet","penzor.cs.log":"Recent activity","penzor.cs.more":"More","penzor.cs.advanced":"Advanced: edit rules","penzor.cs.backSimple":"Back to sync","penzor.cs.firstTitle":"Sync this computer to Penzor Cloud","penzor.cs.firstBody":"Here is a suggested setup; change anything first. Nothing moves until you press Start syncing, and nothing already in the cloud is overwritten or deleted.","penzor.cs.note":"To treat one notes folder or agent differently, click the small line under it. Turning a switch off just stops syncing; nothing is deleted.","penzor.cs.barFirst":"Turning sync on uploads {up} files and downloads {down}","penzor.cs.barChanged":"{n} changes","penzor.cs.barOne":"1 change: \u201C{name}\u201D \u2192 {scope}","penzor.cs.offName":"not synced","penzor.cs.barCounts":"Uploads {up} files and downloads {down} \xB7 nothing is deleted","penzor.cs.barSize":"{size} in total","penzor.cs.noDelete":"nothing will be deleted","penzor.cs.barConflicts":"{n} changed on both sides; both copies are kept","penzor.cs.barCounting":"Working out what will move\u2026","penzor.cs.barRecount":"Files just changed, so this was recalculated. Please confirm again.","penzor.cs.later":"Not now","penzor.cs.start":"Start syncing","penzor.cs.undo":"Undo","penzor.cs.confirm":"Confirm","penzor.cs.up":"Uploading \u201C{name}\u201D","penzor.cs.down":"Downloading \u201C{name}\u201D","penzor.cs.waiting":"{n} more files waiting","penzor.cs.failedN":"{n} files didn\u2019t sync","penzor.cs.retry":"Retry","penzor.cs.seeLog":"See activity","penzor.cs.logEmpty":"No sync activity yet.","penzor.cs.logNote":"Keeps the latest 200 items. When both sides changed, both copies are kept.","penzor.cat.notes":"Notes","penzor.cat.notesDesc":"Your Amadeus vault","penzor.cat.agents":"Agents & memory","penzor.cat.agentsDesc":"Each agent\u2019s settings, memory and logs","penzor.cat.profile":"About me","penzor.cat.profileDesc":"Your profile and default calendar","penzor.cat.profileOn":"Includes your default calendar","penzor.cat.plugins":"Plugins","penzor.cat.pluginsDesc":"Plugin folders and settings","penzor.cat.others":"Other files","penzor.cat.othersDesc":"Files in your workspace outside the groups above","penzor.cat.files":"{n} files \xB7 {size}","penzor.cat.agentsN":"{n} agents","penzor.cat.agentsSome":"{n} agents \xB7 {m} synced","penzor.cat.pluginsN":"{n} plugins","penzor.cat.custom":"{n} custom rules","penzor.cat.notSynced":"Not synced \xB7 stays on this computer","penzor.scope.all":"Shared with all devices","penzor.scope.allDesc":"Every signed-in device and the web see one copy","penzor.scope.self":"Back up this computer only","penzor.scope.selfDesc":"Kept in its own cloud copy other devices don\u2019t see","penzor.scope.with":"Only with {name}","penzor.scope.menuTitle":"Who shares \u201C{name}\u201D","penzor.scope.menuFoot":"To stop syncing it, turn off the switch","penzor.scope.calendarNote":"The web\u2019s default calendar doesn\u2019t follow this","penzor.unified.stale":"Refresh failed. Showing the last sample; current usage is unknown. Please retry.","penzor.unified.uploadTo":"Upload to My files","penzor.unified.apps":"Manage ordinary files \xB7 source restrictions apply","penzor.trash.ama":"Amadeus \xB7 pending cleanup","penzor.trash.amaNote":"Deleted current files still count; history is not counted again. Eligible for system cleanup after 30 days. Read-only here; Empty trash does not affect these snapshots.","penzor.trash.expires":"Cleanup eligible from","penzor.source.openAgents":"Open Agents","penzor.source.openCalendar":"Open calendar","penzor.source.entryUnavailable":"This host does not provide that destination","penzor.uploads":"My files","penzor.source.agents":"Agents","penzor.source.profile":"My profile","penzor.source.plugins":"Plugin data","penzor.source.readonly":"Synced sources are read-only. Edit or delete in the source; download synced files here.","penzor.source.appNote":"App files are managed by their app. Edit or delete them there.","penzor.source.pluginNote":"Names and usage only. Data may contain settings or credentials, so preview and download are unavailable.","penzor.unified.unavailable":"Usage unavailable","penzor.unified.incomplete":"Unified usage is incomplete, so quota status is unknown. Refresh to retry.","penzor.unified.enforced":"Unified quota is active. Over quota, new content and larger replacements are paused; downloads, deletions and non-growing replacements remain available.","penzor.unified.grace":"Notice grace period ends {date}. Unified quota does not add restrictions yet.","penzor.unified.rolloutPolicy":"Storage policy notice: growth limits may start no earlier than 30 days after acknowledgement. App file history will retain at most 50 versions from the last 30 days. History is excluded from your plan; download backups before cleanup. Current files are not removed by history cleanup.","penzor.unified.ack":"I have read the storage and history notice","penzor.unified.notice":"This is only a notice. Going over won\u2019t stop sync or uploads","penzor.unified.over":"Unified quota exceeded. This is a notice only; no new sync or upload restrictions apply. Clear files or upgrade your plan.","penzor.unified.warn":"Unified storage is nearly full. This is a notice only; no new sync or upload restrictions apply.","penzor.unified.accounting":"includes {trash} in trash; history doesn\u2019t count","penzor.unified.writable":"Upload, create, rename and delete","penzor.unified.readonly":"Read-only \xB7 managed at source","penzor.unified.export":"Download, rename and permanently delete","penzor.unified.counted":"Included in unified usage \xB7 notice phase","penzor.unified.policy":"If limits are ever enforced, you\u2019ll hear at least 30 days ahead.","penzor.unified.legacySync":"Existing device sync limit: {used} / {max}","penzor.unified.legacyApps":"Existing app file limit: {used} / {max}","sub.identity":"Plugin ID","sub.identityHint":"A unique ID is assigned after submission. Names may repeat; updates keep the same ID.","sub.description":"Detailed description","sub.tags":"Tags","sub.tagsHint":"Comma separated, up to 8","sub.minAppVersion":"Minimum Forsion version","sub.maxAppVersion":"Maximum version (exclusive)","sub.optional":"Optional","sub.platforms":"Supported platforms","sub.requirementsHint":"Supported: desktop, macos, windows, linux, android, ios, web. Leave blank if unspecified. ZIP requirements are read from the manifest; supplied values must match it.","sub.err.market_requirements_invalid":"Invalid version requirements or platforms.","sub.err.market_requirements_mismatch":"Supplied requirements differ from the ZIP manifest.","sub.mine":"My submissions","page.submission":"Submissions","page.webPages":"My web pages","web.title":"My web pages","web.desc":"Pages you published with Tangu or Coding Space. Anyone with the link can open them; they run sandboxed and can't read visitors' Forsion sign-in.","web.refresh":"Refresh","web.used":"{used} of {limit} published","web.full":"All slots are used. Take one down or upgrade to publish another","web.empty":"No published pages yet","web.emptyHint":'Ask Tangu in a chat to publish a page, for example "publish this page", or choose Publish on a Coding Space project.',"web.updated":"Updated {date}","web.disabled":"Disabled","web.disabledHint":"An administrator disabled this page. Its link doesn't open and it can't be updated.","web.copy":"Copy link","web.unpublish":"Take down","web.unpublishConfirm":"Confirm take down","web.listingPending":"Store listing in review","web.listingApproved":"Listed in store","web.listingRejected":"Store listing rejected","web.listingNote":"Reason: {note}","web.listingApply":"Apply for store listing","web.listingReapply":"Apply again","web.listingWithdraw":"Withdraw application","web.listingDelist":"Remove from store","web.listingDelistConfirm":"Confirm removal","web.listingSummary":"Store summary","web.listingSummaryPh":"One sentence about this page","web.listingHint":"Shown in the store under Web apps after review. Up to 300 characters.","web.listingSubmit":"Submit application","sub.desc":"Manage your submissions, review results and version updates.","sub.new":"New submission","sub.refresh":"Refresh","sub.empty":"No submissions yet","sub.emptyHint":"Share your plugins, skills, Agents or Spaces in the marketplace.","sub.name":"Name","sub.summary":"Summary","sub.type":"Content type","sub.source":"Source","sub.type.skill":"Skill","sub.type.agent":"Agent","sub.type.plugin":"Plugin","sub.type.space":"Space","sub.type.theme":"Theme","sub.type.amadeus_plugin":"Amadeus plugin","sub.pending":"Pending review","sub.approved":"Published","sub.rejected":"Rejected","sub.pendingVersion":"v{version} update pending review","sub.rejectedVersion":"v{version} update rejected","sub.submit":"Submit for review","sub.submitted":"Submitted. The review result appears here and in your inbox.","sub.updated":"Update submitted for review. The published version stays available until then; the result goes to your inbox.","sub.repo":"Public GitHub repository","sub.npm":"Public npm package","sub.repoHint":"README and Releases come from the repository; its owner is shown as the publisher.","sub.npmHint":"Package metadata comes from npm; the public repository owner is shown as the publisher.","sub.reviewHint":"New versions require review before distribution. Your Forsion account manages the submission.","sub.zipHint":"Up to 50 MB. Include the required manifest and entry files.","sub.filter":"Filter by status","sub.all":"All","sub.noResults":"No matching submissions","sub.downloads":"{n} downloads","sub.errName":"Enter a name.","sub.errSource":"Enter a public repository URL or npm package name.","sub.errZip":"Choose a ZIP archive.","sub.errLarge":"ZIP archives must not exceed 50 MB.","sub.err.market_npm_invalid":"The npm package is unavailable or does not meet the plugin requirements.","sub.err.market_npm_source":"Publish the new version on npm for review.","sub.err.market_github_source":"Publish a GitHub Release for review.","sub.err.market_not_found":"Submission unavailable. Refresh and retry.","sub.err.market_zip_required":"Choose a ZIP archive.","sub.err.market_zip_invalid":"The ZIP structure does not meet the publishing requirements.","sub.err.market_zip_too_large":"ZIP archives must not exceed 50 MB.","sub.err.market_version_required":"The package has no version. Add one to the manifest (for skills, version or metadata.version in SKILL.md) and repackage.","sub.err.market_version_invalid":"Enter a valid version.","sub.err.market_version_mismatch":"The version does not match the manifest.","sub.err.market_version_not_newer":"The new version must be newer than the published version.","sub.err.market_icon_invalid":"Use a square PNG icon between 64 and 512 px.","sub.err.market_duplicate":"This content has already been submitted. Manage the existing submission.","sub.err.market_update_pending":"An update is already awaiting review.","sub.err.market_stale":"The submission has changed. Refresh and retry.","sub.notNewer":"The package says v{version}; it must be newer than the Store\u2019s v{current}.","sub.reqNone":"No version range or platforms declared","sub.dropTitle":"Drop a ZIP here, or click to choose one","sub.dropHint":"Up to 50 MB. It is checked first, not submitted yet.","sub.dropReplace":"{size} \xB7 Drop or click to replace","sub.checkType":"Type","sub.checkVersion":"Version","sub.checkIcon":"Icon","sub.checkReadme":"README","sub.checkReq":"Requirements","sub.checkWarn":"Note","sub.iconYes":"icon.png found in the package","sub.iconNo":"No icon.png; the card shows the type icon","sub.readmeYes":"Uses README.md from the package","sub.readmeKeep":"No README.md in the package; the current one stays","sub.readmeNo":"No README.md in the package","sub.warn.no_manifest":"No manifest found in the package","sub.warn.type_mismatch":"The package type differs from this submission\u2019s type","sub.warn.tag_version_mismatch":"The release tag differs from the package version","sub.warn.id_slug_mismatch":"The package id differs from the installed folder name; users would end up with a second copy","sub.warn.engine_slug_mismatch":"The engine plugin folder name differs from its id","sub.warn.no_entry":"The Amadeus plugin has no main.js entry","sub.warn.has_node_modules":"The package includes node_modules, which is large and usually unneeded","sub.zipListedNote":"Until it\u2019s approved, the Store keeps serving the published version. The review result goes to your inbox.","sub.zipUnlistedNote":"Submitting replaces the current package and sends it back for review.","sub.submitVersion":"Submit v{version} for review","sub.checkNew":"Check for a new version","sub.checkAgain":"Check again","sub.upToDate":"The latest upstream version is v{version} and the Store has v{current}. Publish a new version, then check again.","sub.upstreamLatest":"Latest upstream: v{version}","sub.releaseTag":"Release {tag}","sub.storeHas":"Store has v{version}","sub.githubNote":"Once approved, the Store pins v{version}. After your next GitHub release, come back and check again.","sub.npmNote":"Once approved, the Store pins v{version}. After your next npm release, come back and check again.","sub.secVersion":"Version","sub.secInfo":"Store details","sub.secHistory":"History","sub.edit":"Edit","sub.unset":"Not set","sub.infoNote":"No package or new version needed. Changes to a published item are reviewed too; until then the Store shows the current details.","sub.submitInfo":"Submit changes","sub.back":"Back to list","sub.pendingInfo":"Details change pending review","sub.rejectedInfo":"Details change rejected","sub.pendingHint":"The Store stays unchanged until approval. The review result goes to your inbox.","sub.inReview":"Waiting for its first review. The result goes to your inbox.","sub.histApproved":"v{version} approved","sub.histSubmitted":"Submitted","sub.resubmitted":"Resubmitted for review. The result goes to your inbox.","sub.infoSubmitted":"Changes submitted for review. The Store shows the current details until then.","sub.err.market_no_release":"This repository has no GitHub release yet. The Store pins a version, so publish a release on GitHub, then check again.","sub.err.market_no_changes":"Nothing changed.","sub.err.market_dryrun_unsupported":"GitHub and npm submissions can\u2019t be checked in advance. Submit them for review.","page.account":"Account","page.membershipUsage":"Membership & usage","page.membershipQuota":"Membership & quota","page.pointsInvite":"Points & invites","account.details.title":"Sign-in & details","account.details.desc":"Edit your photo, nickname and bio under Profile.","account.details.username":"Username","diag.unavailable":"This host does not support diagnostic data. Update Forsion and try again.","page.profile":"Profile","page.quota":"Quota & points","page.backpack":"Backpack","page.security":"Security","page.usage":"Usage","page.feedback":"Feedback","store.group":"Membership & points","store.membership":"Membership","store.membership.desc":"Upgrade your plan for more daily and weekly quota","store.points":"Points","store.points.desc":"Buy points and use them to redeem items","store.items":"Items","store.items.desc":"Items you can redeem with points. Redeemed items go to your backpack","store.status":"Plan and points","store.tier":"Current plan","store.balance":"Points balance","store.choosePlan":"Choose a plan","store.payHint":"You pay on the payment page in your browser. This page refreshes when you come back","store.payOff":"Purchases are unavailable right now","store.period":"Billing period","store.period.monthly":"Monthly","store.period.quarterly":"Quarterly","store.period.yearly":"Yearly","store.per.monthly":"/ month","store.per.quarterly":"/ quarter","store.per.yearly":"/ year","store.currentTier":"Current plan","store.pay":"Pay","store.payPrice":"Pay {price}","store.noPlans":"No plans are available right now","store.packs":"Point packs","store.packsHint":"You pay on the payment page in your browser. Points arrive right after payment","store.noPacks":"No point packs are available right now","store.kind.pack":"Point pack","store.kind.card":"Consumable","store.kind.code":"Redeem code","store.kind.item":"Item","store.nPoints":"{n} points","store.instant":"Arrives right after payment","store.redeemTitle":"Redeem with points","store.redeemHint":"Redeeming with points completes right here. Items go to your backpack","store.redeem":"Redeem for {n} points","store.redeemConfirm":"Confirm: spend {n} points","store.redeemed":"Redeemed. The item is in your backpack","store.uncertain":"No response came back. Check your backpack before you try again","store.soldOut":"Sold out","store.left":"{n} left","store.toBackpack":"Goes to your backpack","store.limitReached":"You've reached the purchase limit","store.unavailable":"This item can't be redeemed right now","store.noItems":"Nothing to redeem right now","store.itemsOff":"Item redemption isn't available yet","store.openBackpack":"Open backpack","backpack.desc":"View the items you have collected. Select a slot for details.","backpack.refresh":"Refresh","backpack.total":"{n} items","backpack.grid":"Backpack items","backpack.slot":"{name}, quantity {n}","backpack.item":"Item","backpack.empty":"Your backpack is empty","backpack.emptyHint":"Items you redeem or receive will appear here.","backpack.select":"Select an item to view details","backpack.details":"Item details","backpack.quantity":"Quantity","backpack.acquired":"Acquired","backpack.source":"Received through","backpack.source.points":"Points exchange","backpack.source.admin":"Gift","backpack.source.reward":"Reward","backpack.source.other":"Cloud account","backpack.consumable":"Consumable","backpack.voucher":"Voucher","backpack.getCards":"Redeem reset cards","backpack.manageCards":"Use or redeem","backpack.reveal":"Reveal key","backpack.copyKey":"Copy key","backpack.noKey":"This item has no key.","backpack.use":"Use","backpack.confirmUse":"Confirm use","backpack.consumeConfirm":"Using this item consumes one copy.","backpack.collectible":"Collectible","backpack.effect.points":"+{n} points","backpack.effect.cards":"+{n} reset cards","backpack.effect.quota":"Reset daily and weekly quota","backpack.rarity.common":"Common","backpack.rarity.rare":"Rare","backpack.rarity.epic":"Epic","backpack.rarity.legendary":"Legendary","backpack.unavailable":"This item is no longer available. Refresh your backpack.","backpack.notUsable":"This item cannot be used.","backpack.quotaUnavailable":"Use cloud AI to initialize your quota before using this item.","common.cancel":"Cancel","common.copied":"Copied","common.copyFailed":"Couldn't copy","common.done":"Done","common.loadFailed":"Couldn't load","common.loadMore":"Load more","common.loading":"Loading\u2026","common.openInBrowser":"Open in browser","common.retry":"Retry","common.save":"Save","common.thisWeek":"This week","common.today":"Today","common.unlimited":"Unlimited","ann.eyebrow":"FORSION \xB7 Announcement","ann.close":"Close","ann.ok":"Got it","signin.button":"Sign in to Forsion","signin.desc":"Sign in to your Forsion account to manage your account, quota, security, submissions and feedback here.","signin.pending":"Waiting for you to finish in your browser\u2026","signin.deviceHint":"Your browser opens the sign-in page on its own. If it doesn't, scan the code with your phone or open the link below, and check that the code matches.","signin.code":"Code","signin.openLink":"Open sign-in page","signin.copyLink":"Copy link","signin.qrLabel":"Sign-in QR code","account.profile.title":"Profile","account.profile.desc":"Your photo and nickname, plus the phone and email linked to your account","account.avatar.change":"Change photo","account.avatar.saved":"Photo updated","account.nickname.edit":"Edit nickname","account.nickname.label":"Nickname","account.nickname.saved":"Nickname updated","account.role.admin":"Admin","account.username":"Username {name}","account.contact.phone":"Phone","account.contact.email":"Email","account.contact.unbound":"Not linked","account.contact.manage":"Manage in Security","account.web.open":"Open the account center in your browser","account.web.desc":"Cloud storage, AI Brain and themes are managed in the web account center.","member.title":"Membership","member.desc":"Your tier, plan and expiry date","member.upgrade":"Upgrade membership","member.renew":"Renew","member.freeName":"Free plan","member.freeHint":"Upgrade to get more AI quota","member.expires":"Expires {date}","member.noExpiry":"No expiry","member.loadFailed":"Couldn't load your membership.","session.title":"Sign-in","session.desc":"Manage your sign-in on this device","local.title":"Accounts on this computer","local.desc":"Switch between accounts you've signed in with","local.current":"Current","local.switch":"Switch","local.add":"Sign in to another account","local.signOut":"Sign out","local.empty":"No saved accounts yet","local.loadFailed":"Couldn't read the account list","diag.title":"Diagnostic data","diag.desc":"Helps us troubleshoot problems and improve Forsion. Off by default.","diag.enable":"Upload diagnostic data","diag.enableDesc":"When this is on, this computer periodically uploads a snapshot of its Forsion setup to your Forsion account, where the Forsion team can view it. The Forsion team sets how often, once a day by default. You can turn it off at any time.","diag.collected":"What's uploaded","diag.item.app":"App and system versions, this computer's name, and its free memory and disk space","diag.item.settings":"Your model and voice choices, the switches and numeric values in background agent and plugin settings, and the names and on/off state of MCP servers and message channels","diag.item.agents":"Agent and team configuration (options such as name and model; descriptions and prompts are recorded by length only, and their text falls under the personas, memory and evolution switch below)","diag.item.plugins":"Names and versions of installed plugins, skills, themes and Spaces","diag.item.runs":"Run records from the last 7 days: each run's status and error reason, usage and timing of model calls and tools (no conversation text, and nothing those tools read or wrote), and the engine's recent log output","diag.notCollected":"Never uploaded: the sign-in credentials and API keys saved on this computer, your note files, agent libraries, or plugin data.","diag.sessions":"Include conversations","diag.sessionsDesc":"Conversations on this computer: the text of your messages and the agent's replies, the agent's reasoning and the names of the tools it used, including the background work of team members, discussions and delegated tasks. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. What those tools read or wrote and the attachments themselves are left out; file names that appear in messages, and anything the agent repeated from your notes or files in its replies, are included. Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.memory":"Include agent personas, memory and evolution records","diag.memoryDesc":"Each agent's persona (including the description and developer instructions in its configuration), and what the agent has built up on its own: its memory and the memory candidates it hasn't consolidated yet, its evolution record, its collaboration notes for you, the last 7 days of its logs and memory-consolidation activity, and project memory; plus your teams' charters and your user profile. These are the instructions you wrote for your agents and teams, and the facts they noted about you and your work from conversations. Each upload carries their current content (very long ones are cut short). Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.activity":"Include activity log","diag.activityDesc":"Your activity records, which include the first few dozen characters of conversations and the names of note files. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. If you'd rather not share them, turn this off before you turn uploads on.","diag.last":"Last upload: {time}","diag.noUpload":"Nothing uploaded yet","diag.freq.hour":"every hour","diag.freq.hours":"every {n} hours","diag.freq.day":"once a day","diag.freq.days":"every {n} days","diag.freq.manual":"only when the Forsion team requests it","diag.retention":"The cloud keeps this computer's snapshots from the last {n} days. Turning this off stops uploads; snapshots already uploaded stay in the cloud. To have them deleted, let us know under Feedback.","page.privacy":"Privacy and data","privacy.tab":"Help improve","privacy.unavailable":"This version of Forsion does not support helping improve Forsion. Update Forsion and try again.","privacy.needUpdate":"This version of Forsion does not send this data yet. It takes effect after you update Forsion.","privacy.devBuild":"Development builds never send any data.","privacy.improve.title":"Help improve Forsion","privacy.improve.desc":"Sends metadata only, so we can find bugs and slow spots. No sign-in needed, and it is not linked to your account.","privacy.improve.switch":"Send crash reports and usage statistics","privacy.improve.switchHint":"Turning this off stops sending right away and discards anything still queued on this device.","privacy.details":"What we collect","privacy.kind.crash":"Crash reports","privacy.kind.crashDesc":"Where the error happened and its stack trace, app version, OS version","privacy.kind.agent":"Agent runs","privacy.kind.agentDesc":"Which tools were used, whether they succeeded, error categories, duration, model and token counts","privacy.kind.perf":"Performance","privacy.kind.perfDesc":"Startup time, engine startup time, number of stalls, memory","privacy.kind.feature":"Feature usage","privacy.kind.featureDesc":"Which Spaces, Views and plugins were opened","privacy.sent.title":"Sent in the last 7 days","privacy.sent.hint":"A copy stays on this device so you can read every event.","privacy.sent.last":"A copy stays on this device so you can read every event. Last sent: {time}","privacy.sent.view":"View","privacy.sent.empty":"Nothing has been sent in the last 7 days.","privacy.delete.title":"Delete sent data","privacy.delete.hint":"Removes every record for this device's install ID from our servers and issues a new ID.","privacy.delete.button":"Delete","privacy.delete.confirm":"Confirm delete","privacy.delete.done":"Deleted. This device now has a new install ID.","privacy.delete.failed":"Could not delete: {reason}","privacy.installId":"Install ID {id} \xB7 not linked to your account","diag.uploadNow":"Upload now","diag.uploaded":"Uploaded","diag.failed":"Upload failed: {reason}","quota.ai.title":"AI quota","quota.ai.desc":"What's left today and this week; a quota reset card restores it","quota.resetDaily":"Resets daily at 0:00 (Beijing time)","quota.resetWeekly":"Resets {date} at 0:00 (Beijing time)","card.title":"Quota reset card","card.desc":"Restores today's and this week's AI quota to 100%","card.owned":"You have {n}","card.use":"Use one","card.useConfirm":"Confirm","card.used":"Used 1 quota reset card","card.left":"{n} left","card.noneHint":"You have no quota reset cards left. You can exchange points for more.","card.exchange":"Exchange points","card.price":"{price} points each, 1\u201350 at a time","card.count":"Number of cards","card.cost":"Costs {cost} points","card.countHint":"Enter 1\u201350","card.exchangeButton":"Exchange","card.exchangeConfirm":"Spend {cost} points","card.exchanged":"Quota reset cards added: {n}","points.title":"Points","points.desc":"Use points to get quota reset cards","points.balance":"Balance","points.balanceFailed":"Couldn't load your balance","points.recharge":"Buy points","bg.title":"Background quota","bg.desc":"Used by Muse and automations, counted separately from your AI quota","bg.autoMain":"Continue with AI quota when used up","bg.autoMainDesc":"When off, Muse and automations pause once the background quota runs out","bg.convert":"Move from AI quota","bg.convertDesc":"Moves a share of your AI quota limit, valid for the current period","bg.convertConfirm":"Move {pct}%","bg.converted":"Moved {pct}% from your AI quota","invite.title":"Invites & codes","invite.desc":"Invite friends to join, or redeem a code you received","invite.myCode":"My invite code","invite.count":"{n} invited","invite.copyCode":"Copy code","invite.copyLink":"Copy invite link","invite.loadFailed":"Couldn't load your invite code","invite.claim":"Enter an invite code","invite.claimDesc":"Within 7 days of signing up, you can enter a friend's invite code","invite.claimPlaceholder":"Friend's invite code","invite.claimSubmit":"Submit","invite.claimed":"Invite code applied","redeem.title":"Redemption code","redeem.desc":"Redeem points, membership or other rewards","redeem.placeholder":"Enter a code","redeem.submit":"Redeem","redeem.success":"Redeemed","redeem.successWith":"Redeemed: {what}","redeem.gotPoints":"{n} points","redeem.gotMembership":"membership","sec.methods.title":"Sign-in methods","sec.methods.desc":"Your phone and email can be used to sign in and reset your password","sec.bind":"Link","sec.change":"Change","sec.phone":"Phone number","sec.email":"Email address","sec.newPhone":"New phone number","sec.newEmail":"New email address","sec.phonePlaceholder":"Mainland China numbers as is; others with +country code","sec.emailPlaceholder":"name@example.com","sec.code":"Verification code","sec.codePlaceholder":"Enter the code","sec.sendCode":"Send code","sec.resendIn":"Resend in {s}s","sec.codeSent":"Code sent","sec.bindSubmit":"Link","sec.phoneBound":"Phone linked","sec.emailBound":"Email linked","sec.devices.title":"Signed-in devices","sec.devices.desc":"If you think someone else is using your account, sign out on every device","sec.logoutAll":"Sign out everywhere","sec.logoutAllDesc":"Including this device: every device has to sign in again","sec.logoutAllConfirm":"Confirm sign out everywhere","sec.logoutAllDone":"Signed out everywhere","pw.title":"Password","pw.desc":"{min}\u2013{max} characters, with a lowercase letter, an uppercase letter and a special character, and no spaces","pw.change":"Change password","pw.modeLabel":"How to change it","pw.mode.current":"With current password","pw.mode.code":"With a verification code","pw.current":"Current password","pw.currentRequired":"Enter your current password","pw.new":"New password","pw.confirm":"Confirm new password","pw.mismatch":"The new passwords don't match","pw.submit":"Change password","pw.submitReset":"Set new password","pw.changed":"Password updated","pw.noPasswordYet":"This account doesn't have a password yet. Set one with a verification code instead.","pw.codeNeedsContact":"Link a phone or email first to set a password with a verification code.","pw.via":"Send the code to","pw.codeTo":"The code goes to {target}","pw.rulesLabel":"Password rules","pw.req.length":"{min}\u2013{max} characters","pw.req.lower":"A lowercase letter","pw.req.upper":"An uppercase letter","pw.req.special":"A special character","pw.req.space":"No spaces","pw.rule.format":"Invalid password","pw.rule.min":"Password must be at least 8 characters","pw.rule.max":"Password can't be longer than 64 characters","pw.rule.space":"Password can't contain spaces","pw.rule.lower":"Password needs a lowercase letter","pw.rule.upper":"Password needs an uppercase letter","pw.rule.special":"Password needs a special character","del.title":"Delete account","del.desc":"Permanently delete your account and all its data. This can't be undone","del.start":"Delete account","del.warn":"Deleting your account removes your account, points, membership, cloud storage and all other data for good.","del.methodLabel":"Verify with","del.byCode":"Verification code","del.byPassword":"Password","del.codeLabel":"Code sent to {target}","del.passwordLabel":"Account password","del.submit":"Delete account","del.confirm":"Delete permanently","del.done":"Account deleted","usage.overview.title":"Overview","usage.overview.desc":"Requests and AI quota used in the selected period","usage.range":"Time range","usage.days":"{n} days","usage.requests":"Requests","usage.successRate":"Success rate","usage.consumption":"AI quota used","usage.ofToday":"Of your daily limit","usage.unlimitedNote":"Your AI quota is unlimited, so usage isn't shown as a percentage.","usage.noLimitNote":"Your daily limit is 0 or unavailable right now, so usage isn't shown as a percentage.","usage.byModel.title":"By model","usage.byModel.desc":"Requests and quota used per model","usage.byApp.title":"By app","usage.byApp.desc":"Requests and quota used per app","usage.col.model":"Model","usage.col.app":"App","usage.col.requests":"Requests","usage.col.consumption":"Quota used","usage.empty":"No usage in this period","usage.appUnknown":"Other","usage.recent.title":"Recent usage","usage.recent.desc":"Each call as a share of your daily limit","usage.recentEmpty":"No usage yet","usage.failed":"Failed","usage.shown":"Showing {shown} of {total}","fb.list.title":"My feedback","fb.list.desc":"Issues and suggestions you've sent; replies show up here","fb.new":"New feedback","fb.empty":"No feedback yet","fb.untitled":"Untitled feedback","fb.unread":"New reply","fb.shown":"Showing {n}","fb.submitted":"Sent. We'll reply as soon as we can","fb.descLabel":"Describe the issue or suggestion","fb.descPlaceholder":"What happened, and what did you expect?","fb.imagesHint":"Attach up to {n} screenshots (5 MB each). You can paste or drop them here.","fb.addImages":"Add screenshots","fb.removeImage":"Remove this image","fb.submit":"Send","fb.back":"Back to list","fb.you":"You","fb.support":"Forsion team","fb.attachment":"Attachment","fb.imagePreview":"View image","fb.closedNote":"This ticket is closed and can't take replies. Send new feedback for a new issue.","fb.replyPlaceholder":"Reply\u2026","fb.replySend":"Send reply","fb.replySent":"Reply sent","fb.status.open":"Open","fb.status.in_progress":"In progress","fb.status.resolved":"Resolved","fb.status.closed":"Closed","err.accountGone":"This account is signed out. Sign in again","err.adminCannotDelete":"Admin accounts can't be deleted here","err.avatarInvalid":"Couldn't read this image. Try another one","err.avatarTooLarge":"This image is too large. Try a smaller one","err.backgroundUnavailable":"Background quota is unavailable right now","err.captcha":"You need to finish a verification check in your browser","err.codeCooldown":"Too many codes requested. Try again shortly","err.codeInvalid":"The code is wrong or has expired","err.codeRequired":"Enter the verification code","err.codeSendFailed":"Couldn't send the code. Try again later","err.currentPasswordWrong":"Your current password is incorrect","err.deleteTargetInvalid":"Codes can only go to the phone or email linked to your account","err.deleteVerifyFailed":"Verification failed, so your account wasn't deleted","err.emailInUse":"This email is already used by another account","err.emailInvalid":"Enter a valid email address","err.featureDisabled":"This feature is turned off for now","err.feedbackEmpty":"Describe the issue or suggestion first","err.feedbackTooLong":"The description is too long (10,000 characters max)","err.generic":"That didn't work. Try again later","err.imageRead":"Couldn't read the image","err.imageTooLarge":"Each image must be 5 MB or less","err.imageType":"Only images can be added","err.insufficientMainQuota":"Your AI quota is used up, so there's nothing to move","err.insufficientPoints":"Not enough points","err.priceChanged":"The reset card price just changed. Check the new price, then confirm the exchange again.","err.invalidCount":"Choose between 1 and 50 cards","err.invalidInviteCode":"This invite code is invalid or has expired","err.inviteAlreadyUsed":"You've already used an invite code","err.inviteEmpty":"Enter an invite code","err.inviteOwnCode":"You can't use your own invite code","err.inviteWindowExpired":"The 7-day window after sign-up has passed","err.loginCodeExpired":"The sign-in code expired. Sign in again","err.loginInProgress":"A sign-in is already in progress","err.loginTimeout":"Sign-in timed out. Try again","err.loginUnsupported":"This cloud doesn't support desktop sign-in","err.network":"Network error. Check your connection and try again","err.noCloudUrl":"Set the cloud address under Connection first","err.noResetCard":"You have no quota reset cards","err.openFailed":"Couldn't open the browser","err.passwordRequired":"Enter your current and new password","err.phoneInUse":"This phone number is already used by another account","err.phoneInvalid":"Enter a valid phone number (with +country code outside mainland China)","err.redeemEmpty":"Enter a code","err.redeemExpired":"This code has expired","err.redeemInactive":"This code is no longer active","err.redeemNotFound":"This code doesn't exist","err.redeemUsedUp":"This code has been used up","err.redeemUserLimit":"You've already redeemed this code","err.replyEmpty":"Write a reply first","err.replyTooLong":"The reply is too long (10,000 characters max)","err.server":"Server error ({status}). Try again later","err.session":"You've been signed out. Sign in again","err.signedOut":"Sign in to Forsion first","err.targetInvalid":"Enter a valid phone number or email","err.ticketNotFound":"This feedback doesn't exist or was deleted","err.webPageGone":"This page doesn't exist or was taken down","err.listingGone":"This page has no store listing","err.listingSummary":"Add a store summary (up to 300 characters)","err.tooFrequent":"Too many attempts. Try again shortly","err.tooManyImages":"You can add up to 5 images","err.unavailable":"This version of Forsion can't do that yet. Update Forsion","profile.unsupported":"This server doesn't have profiles yet","profile.state.private":"Only you can see this","profile.state.public":"Public","profile.state.privateDesc":"Once public, anyone with the address can see your profile without signing in","profile.state.publicDesc":"Anyone with the public address can see it without signing in","profile.decorate":"Decorate","profile.publish":"Make public","profile.makePrivate":"Make private","profile.address":"Public address","profile.copyLink":"Copy link","profile.openPublic":"View public page","profile.nowPublic":"Your profile is now public","profile.nowPrivate":"Your profile is private. The public address no longer opens","profile.bio":"Bio","profile.bioPlaceholder":"Add a short bio","profile.linkAdd":"Add a link","profile.linkRemove":"Remove link","profile.linkInvalid":"Links must start with http:// or https://, or be a plain domain","profile.joined":"Joined {date}","profile.stat.tokens":"Total tokens","profile.stat.activeDays":"Active days","profile.stat.longest":"Longest streak","profile.stat.current":"Current streak","profile.stat.installs":"Work installs","profile.unit.days":"d","profile.works":"Featured works","profile.worksPick":"Choose","profile.worksEmpty":"No published works yet. Publish to the store or as a web app, and they can go here.","profile.worksNone":"Nothing to feature yet. Works appear here once they are in the store or published as a web app.","profile.worksPicked":"{n} of {max} selected","profile.worksAuto":"With none selected, the most installed ones are shown","profile.goSubmit":"Submit a work","profile.workInstalls":"{n} installs","profile.workVisits":"{n} visits","profile.work.skill":"Skill","profile.work.agent":"Agent","profile.work.plugin":"Plugin","profile.work.space":"Space","profile.work.theme":"Theme","profile.work.note":"Notes plugin","profile.work.webapp":"Web app","profile.activity":"Activity","profile.activityDays":"Active on {n} days in the past year","profile.less":"Less","profile.more":"More","profile.badges":"Badges","profile.badgesEmpty":"No badges yet. Streaks, published works and invites all earn one.","profile.badge.early":"Early user","profile.badge.streak":"30-day streak","profile.badge.author":"Author","profile.badge.inviter":"Top inviter","profile.badge.event":"Event keepsake","profile.badgeSub.early":"Joined in {value}","profile.badgeSub.streak":"Longest streak: {value} days","profile.badgeSub.author":"{value} published works","profile.badgeSub.inviter":"Invited {value} friends","profile.badgeSub.event":"Took part in a Forsion event{value}","profile.insights":"Insights","profile.insightsEmpty":"Not enough usage yet. Check back in a few days.","profile.insightModel":"Most used model","profile.insightHours":"Most active hours","profile.deco.skin":"Public page color scheme","profile.deco.mode":"Public page appearance","profile.deco.publicHint":"These two only set what visitors see on the public page. Here the profile follows Forsion's current theme.","profile.deco.cover":"Cover","profile.deco.frame":"Avatar frame","profile.deco.modules":"Sections","profile.skin.cream":"Classic","profile.skin.coral":"Coral","profile.skin.teal":"Teal","profile.skin.lavender":"Lavender","profile.mode.auto":"Auto","profile.mode.light":"Light","profile.mode.dark":"Dark","profile.cover.none":"None","profile.cover.mist":"Mist","profile.cover.contour":"Contour","profile.cover.dots":"Dots","profile.frame.none":"None","profile.frame.ring":"Ring","profile.frame.pro":"Member ring","profile.frameProHint":"The member ring is for paid members.","profile.col.show":"Show","profile.col.public":"Public","profile.moveUp":"Move up","profile.moveDown":"Move down","profile.modulesHint":'"Show" decides whether a section is on your profile. "Public" decides whether visitors see it, once your profile is public.',"profile.mod.stats":"Stats","profile.mod.works":"Works","profile.mod.activity":"Activity","profile.mod.badges":"Badges","profile.mod.insights":"Insights","profile.modDesc.stats":"Total tokens, active days, streaks and installs of your works","profile.modDesc.works":"Works you have published, up to 6","profile.modDesc.activity":"Which days you were active in the past year (shades only, no numbers)","profile.modDesc.badges":"Join year, streaks, publishing, invites and events","profile.modDesc.insights":"Your most used model and most active hours","profile.publishDesc":"Once public, anyone with this address can see your profile without signing in. You decide section by section what visitors see.","profile.publishNever":"Your avatar, nickname, username, bio and links become public too. Your email, phone number, membership expiry, points and quota never appear on your profile.","profile.publishConfirm":"Make public","profile.blocked.machineUsername":"Your current username was generated by the system and contains part of your phone number or email, so making it public would expose that. Change your username on the Account page of the web account center first (each account can do this once), then come back.","profile.blocked.publishBlocked":"An administrator has stopped this profile from being public. Contact us through Feedback if you have questions.","profile.goRename":"Change username","profile.invalid":"This couldn't be saved. Check it and try again","guide.title":"Guide","guide.readOnly":"Read-only","guide.more":"More","guide.unlockAll":"Unlock all","guide.relock":"Unlock level by level","guide.reminders":"Guide reminders","guide.spotlight":"On-screen hints","guide.spotStep":"Step {n} of {total}","guide.figure":"Diagram","guide.openAchievements":"Open achievements","guide.tasks":"Tasks in this chapter","guide.go":"Take me there","guide.desktopOnly":"Do it on your computer","guide.taskDone":"Done","guide.askTangu":"Ask Tangu","guide.progress":"Progress","guide.justUnlocked":"Just unlocked","guide.lockedHint":"Locked","guide.whatsNew":"What's new in {version}","guide.level.lv1":"Lv.1 Getting started","guide.level.lv2":"Lv.2 Finding your way","guide.level.lv3":"Lv.3 Making it yours","guide.level.lv4":"Lv.4 Going further","guide.locked.title":"This chapter is still locked","guide.locked.body":"Finish the tasks in {level} to read the rest.","guide.locked.left":"Still to do:","guide.locked.hint":"Been around a while? Unlock everything from the \xB7\xB7\xB7 menu.","guide.levelProgress":"This level: {done}/{total}","guide.next":"Next level","guide.allDone":"All done","guide.allDoneBody":"You've done every task in the guide. Come back any time.","guide.review":"Look back","guide.ask.hint":'Questions about "{chapter}"? Ask Tangu opens a new chat with this chapter attached.',"guide.ask.placeholder":"What would you like to know?","guide.ask.send":"Start a chat","guide.ask.prompt":`I'm reading the "{chapter}" chapter of the Forsion guide; it's attached below. {question}`,"guide.ask.unavailable":"Chat isn't available here","guide.ask.chatTitle":"Guide Q&A","guide.companion.back":"Back to the guide","guide.companion.close":"Close","guide.toast.taskDone":"Done: {task}","guide.letter.levelTitle":"{level} unlocked: try these next","guide.letter.levelBody":'You finished the previous level, so these chapters are open now. Every task has a "Take me there" button.',"guide.letter.versionTitle":"{n} new things to try in {version}","guide.letter.versionBody":"New in this version, ready to try:","guide.letter.open":"Open the guide","guide.status.done":"Done","guide.cmd.open":"Open the guide","penzor.title":"Penzor Cloud","penzor.overview":"Overview","penzor.places":"Places","penzor.details":"Details","penzor.ledger.sync":"Vault sync","penzor.ledger.ama":"Amadeus Cloud","penzor.ledger.apps":"App files","penzor.ledger.exports":"Exports","penzor.trash":"Trash","penzor.items":"{n} items","penzor.total.sub":"Stored in Forsion Cloud \xB7 updated {time}","penzor.justNow":"just now","penzor.ofMax":"/ {max}","penzor.card.syncSub":"{n} vaults \xB7 last write {time}","penzor.card.syncSubNone":"{n} vaults","penzor.card.syncFoot":"Files over {size} are not uploaded","penzor.card.syncWarn":"Almost full: after {max}, new files stop uploading; files already in the cloud keep syncing","penzor.card.amaSmall":"Not counted in your quota","penzor.card.amaSub":"{n} cloud vaults","penzor.card.amaFoot":"Notes and attachments on the Cloud side of Amadeus","penzor.card.appsFoot":"Trash: {n} items \xB7 {size}","penzor.card.appsWarn":"Almost full: after {max}, apps can't save new files. Trash counts too, so emptying it frees space","penzor.card.expSmall":"{n} files","penzor.card.expSub":"Latest: {name} \xB7 {time}","penzor.card.expFoot":"Files exported from apps","penzor.card.none":"Nothing yet","penzor.largest":"Largest files","penzor.col.name":"Name","penzor.col.size":"Size","penzor.col.mtime":"Modified","penzor.col.device":"Written by","penzor.col.deleted":"Deleted","penzor.col.origin":"Original location","penzor.col.app":"From","penzor.sort.mtime":"By modified","penzor.sort.size":"By size","penzor.sort.name":"By name","penzor.search":"Search file names here","penzor.sync.thisDevice":"Syncing on this device","penzor.meta.files":"{size} \xB7 {n} files","penzor.sync.last":"Last write {time} \xB7 {device}","penzor.sync.lastNoDevice":"Last write {time}","penzor.sync.devices":"{n} devices sync this vault","penzor.sync.meter":"Vault sync shares {max}; {used} used","penzor.apps.meter":"App files share {max}; {used} used (trash included)","penzor.apps.by":"Written by {app}","penzor.ama.notCounted":"Not counted in your quota","penzor.ama.open":"Open in Amadeus","penzor.hosted.open":"Manage my web pages","penzor.hosted.note":"These files belong to a published web page. Republish to change them, or take the page down in My web pages.","penzor.trash.meta":"{n} items \xB7 {size}","penzor.trash.note":"Space frees up once items are deleted permanently","penzor.trash.emptyBtn":"Empty trash","penzor.act.download":"Download","penzor.act.rename":"Rename","penzor.act.move":"Move to\u2026","penzor.act.trash":"Move to trash","penzor.act.delete":"Delete","penzor.act.restore":"Restore","penzor.act.purge":"Delete permanently","penzor.act.copyName":"Copy vault name","penzor.act.openSync":"Open sync settings","penzor.act.refresh":"Refresh","penzor.act.up":"Up one level","penzor.toast.trashed":"Moved \u201C{name}\u201D to trash","penzor.toast.restored":"Restored \u201C{name}\u201D","penzor.toast.purged":"Deleted \u201C{name}\u201D permanently","penzor.toast.emptied":"Trash emptied","penzor.toast.downloaded":"Saved to Downloads: {name}","penzor.toast.renamed":"Renamed to \u201C{name}\u201D","penzor.toast.moved":"Moved to \u201C{name}\u201D","penzor.toast.versionRestored":"Restored version {n}","penzor.toast.copied":"Vault name copied","penzor.toast.failed":"That didn't work: {reason}","penzor.confirm.purge":"Delete \u201C{name}\u201D permanently? This can't be undone.","penzor.confirm.empty":"Empty the trash? {n} items will be deleted permanently.","penzor.confirm.deleteExport":"Delete \u201C{name}\u201D? Exports have no trash, so this can't be undone.","penzor.cancel":"Cancel","penzor.side.where":"Location","penzor.side.mtime":"Modified","penzor.side.device":"Written by","penzor.side.thisDevice":"{name} (this device)","penzor.side.from":"From","penzor.side.versions":"Versions","penzor.side.versionsNone":"None","penzor.side.versionRow":"Version {n} \xB7 {time} \xB7 {size}","penzor.side.restoreVersion":"Restore this version","penzor.side.deletedAt":"Deleted","penzor.side.origin":"Original location","penzor.side.inner":"{n} more items inside come back with it","penzor.side.inTrash":"In trash \xB7 {size}","penzor.side.readonlySync":"Files in a synced vault are changed on your devices. Deleting one here would delete it on every device that syncs {vault}, so here you can only view and download.","penzor.side.readonlyAma":"Notes and attachments are changed in Amadeus. Deleting an attachment here would leave the notes that use it with missing images, so here you can only view and download.","penzor.side.exportNote":"Exports have no trash: deleting is permanent.","penzor.side.none":"Select a file to see its details","penzor.side.folder":"Folder \xB7 {n} items","penzor.side.folderPlain":"Folder","penzor.move.title":"Move to","penzor.move.root":"Top of {app}","penzor.move.here":"Move here","penzor.move.noFolders":"No folders at this level","penzor.rename.save":"Save","penzor.empty.title":"Nothing in Penzor Cloud yet","penzor.empty.lead":"These show up here once they're in the cloud:","penzor.empty.sync":"Pick Penzor Cloud as the remote service in Settings \u203A Sync, and your local vault syncs here","penzor.empty.ama":"Notes you write on the Cloud side of Amadeus","penzor.empty.apps":"Files apps save to the cloud or export","penzor.empty.openSync":"Open sync settings","penzor.out.title":"Sign in to see your Penzor Cloud","penzor.out.lead":"Penzor Cloud holds the vaults you sync to Forsion Cloud, your Amadeus Cloud notes and the files apps keep in the cloud.","penzor.out.signIn":"Sign in to Forsion","penzor.loading":"Loading\u2026","penzor.err":"Couldn't load: {reason}","penzor.folderEmpty":"No files here","penzor.noMatch":"No file names contain \u201C{q}\u201D","penzor.cmd.open":"Open Penzor Cloud","penzor.unreachable":"Can\u2019t reach Forsion Cloud. Try again later","penzor.toast.emptyPartial":"{n} items in the trash couldn\u2019t be deleted","penzor.sort.deleted":"By deleted","penzor.side.versionsN":"{n}","penzor.drive":"My drive","penzor.drive.meta":"Counts toward the {max} for app files","penzor.drive.empty":"Nothing here yet. Drag files in, or click Upload.","penzor.act.upload":"Upload","penzor.act.uploadMore":"More upload options","penzor.act.uploadFiles":"Upload files\u2026","penzor.act.uploadFolder":"Upload folder\u2026","penzor.act.uploadHere":"Upload here\u2026","penzor.act.newFolder":"New folder","penzor.act.clearSel":"Clear selection","penzor.newFolder.default":"New folder","penzor.sel.bar":"{n} selected \xB7 {size}","penzor.sel.title":"{n} selected","penzor.sel.sub":"{size} \xB7 {files} files","penzor.sel.subDirs":"{size} \xB7 {files} files, {dirs} folders","penzor.sel.download":"Download {n}","penzor.sel.saveTo":"Saves to","penzor.sel.saveToValue":"Downloads / {folder}","penzor.sel.noDirs":"Folders can\u2019t be downloaded yet; only the selected files will be.","penzor.download.folder":"Penzor Cloud {date}","penzor.drop.to":"Drop to upload to \u201C{place}\u201D","penzor.tx.busy":"Transferring {n}","penzor.tx.allDone":"All done","penzor.tx.failedN":"{n} didn\u2019t finish","penzor.tx.counts":"{up} up \xB7 {down} down","penzor.tx.eta":"about {eta} left","penzor.tx.doneN":"{n} finished","penzor.tx.restDone":"The other {n} finished","penzor.tx.pill":"{counts} \xB7 {pct}%","penzor.tx.queued":"Queued","penzor.tx.paused":"Paused \xB7 resumes from the start","penzor.tx.uploaded":"Uploaded \xB7 {time}","penzor.tx.downloaded":"Downloaded \xB7 {time}","penzor.tx.canceled":"Canceled","penzor.tx.left":"{eta} left","penzor.tx.sec":"{n}s","penzor.tx.min":"{n} min","penzor.tx.pause":"Pause","penzor.tx.resume":"Resume","penzor.tx.cancel":"Cancel","penzor.tx.retry":"Retry","penzor.tx.remove":"Remove","penzor.tx.locate":"Show","penzor.tx.reveal":"Show in folder","penzor.tx.pauseAll":"Pause all","penzor.tx.resumeAll":"Resume all","penzor.tx.retryAll":"Retry all","penzor.tx.clearDone":"Clear finished","penzor.tx.clear":"Clear","penzor.tx.collapse":"Collapse","penzor.tx.expand":"Show transfers","penzor.tx.quota":"Not enough space: {size} short","penzor.tx.quotaSub":"Nothing in this batch was started","penzor.tx.freeSpace":"Free up space in Trash","penzor.err.too_large":"Over the 50 MB per-file limit ({size}); can\u2019t upload it yet","penzor.err.quota":"Not enough cloud space","penzor.err.network":"Connection lost at {pct}%","penzor.err.account_changed":"You switched accounts, so this one stopped","penzor.err.download_unavailable":"This host cannot save downloads yet. Update Forsion","penzor.err.download_failed":"The file was not saved. Try downloading it again","penzor.err.not_signed_in":"Not signed in","penzor.err.gone":"The file is no longer on this device","penzor.err.popup_blocked":"Your browser blocked the new tab. Allow pop-ups for this site and try again","penzor.err.changed":"The file changed while uploading. Try again","penzor.err.storage_unavailable":"Cloud storage is unavailable right now","penzor.err.other":"Didn\u2019t finish ({code})","penzor.err.too_many":"Up to {n} files at a time. Add them in smaller batches","penzor.toast.upDoneOne":"Uploaded \u201C{name}\u201D","penzor.toast.upDoneMany":"Uploaded {n} files","penzor.toast.downDoneMany":"Downloaded {n} files to Downloads","penzor.toast.txFailed":"{n} transfers didn\u2019t finish. Open Penzor Cloud to check","penzor.toast.folderExists":"There\u2019s already a folder called \u201C{name}\u201D","penzor.toast.trashedN":"Moved {n} items to the trash","penzor.toast.movedN":"Moved {n} items to \u201C{name}\u201D","penzor.toast.batchPartial":"{n} items didn\u2019t go through","penzor.sync.title":"Sync","penzor.sync.onN":"{n} on","penzor.sync.allOff":"All off","penzor.sync.waiting":"Waiting for you","penzor.sync.badgeWaiting":"{n} on \xB7 1 waiting for you","penzor.sync.running":"Syncing {pct}%","penzor.sync.runningPlain":"Syncing","penzor.sync.metaDevice":"This computer: {name}","penzor.sync.metaLast":"Last synced {time}","penzor.sync.metaNever":"Not synced yet","penzor.sync.every":"Every {n} min","penzor.sync.everyHours":"Every {n} h","penzor.sync.manual":"Manual","penzor.sync.onStart":"once at startup","penzor.sync.minAgo":"{n} min ago","penzor.sync.hoursAgo":"{n} h ago","penzor.sync.notesNamed":"Notes vault \u201C{name}\u201D","penzor.sync.notesPlain":"This computer\u2019s notes vault","penzor.sync.notesDesc":"The whole local vault, kept the same on your other computers","penzor.sync.agents":"Agents & memory","penzor.sync.agentsDesc":"Your agents\u2019 memory, logs, skills and working notes, plus your profile and default calendar","penzor.sync.conflictsN":"Conflict copies: {n}","penzor.sync.conflictsHint":"Files changed on both sides are kept twice: the other version is saved as a copy with \u201Cconflict\u201D in its name, in that agent\u2019s folder (or your profile folder)","penzor.sync.pluginsPending":"Changes not uploaded yet: {n} plugins","penzor.sync.agentsN":"Agents: {n}","penzor.sync.plugins":"Plugin data","penzor.sync.pluginsDesc":"Settings and data your plugins keep","penzor.sync.pluginsN":"Plugins: {n}","penzor.sync.off":"Off","penzor.sync.done":"Synced","penzor.sync.doneSize":"Synced \xB7 {size}","penzor.sync.firstPending":"Waiting for the first sync","penzor.sync.failed":"Last sync failed","penzor.sync.overQuota":"Over the limit, some files not uploaded","penzor.sync.to":"Syncing to {name}","penzor.sync.toFolder":"Syncing to a local folder","penzor.sync.decideAbove":"Choose in the card above","penzor.sync.kvSchedule":"Schedule","penzor.sync.kvDirection":"Direction","penzor.sync.kvSkipped":"Not uploaded","penzor.sync.kvWhere":"In the cloud","penzor.sync.change":"Change","penzor.sync.open":"Open","penzor.sync.dir.both":"Both ways","penzor.sync.dir.push":"Upload only","penzor.sync.dir.pull":"Download only","penzor.sync.skippedN":"{n} files over {size}","penzor.sync.where":"{ledger} \u203A {vault}","penzor.sync.whereUsed":"{ledger} \u203A {vault} \xB7 {used} / {max}","penzor.sync.devicesTitle":"Devices syncing","penzor.sync.thisOne":"This computer","penzor.sync.lastWrite":"Last write {time}","penzor.sync.noDevices":"No devices are syncing yet","penzor.sync.phoneTitle":"What your phone and the web see","penzor.sync.phoneTip":"Your phone and the web read the cloud vault (the cloud side of Amadeus, {size}) directly. It always syncs, and it\u2019s a separate copy from this computer\u2019s notes vault above. To see a folder from this computer on your phone, right-click it in your notes and sync it to the cloud vault.","penzor.sync.phoneTipPlain":"Your phone and the web read the cloud vault (the cloud side of Amadeus) directly. It always syncs, and it\u2019s a separate copy from this computer\u2019s notes vault above. To see a folder from this computer on your phone, right-click it in your notes and sync it to the cloud vault.","penzor.sync.foot":"Schedule, direction and other storage (Dropbox / S3 / WebDAV) are in","penzor.sync.footLink":"Settings \u203A Sync","penzor.sync.askTitle":"There\u2019s already a notes vault in the cloud","penzor.sync.askCloud":"The cloud copy is from {device}: {files} files \xB7 {size}.","penzor.sync.askCloudNoDevice":"The cloud copy: {files} files \xB7 {size}.","penzor.sync.askLocal":"This computer has {local} files the cloud copy doesn\u2019t, and {conflicts} that differ.","penzor.sync.askMerge":"Merge both","penzor.sync.askCloudBtn":"Use the cloud copy","penzor.sync.askSkip":"Don\u2019t sync notes on this computer yet","penzor.sync.askExplain":"Merge keeps both sides; files that differ are saved again as a \u201C(conflict)\u201D copy. Use the cloud copy first moves this computer\u2019s differing files into a \u201C{backup}\u201D folder next to the vault, then downloads the cloud copy.","penzor.sync.askConfirm":"This computer\u2019s differing files move to \u201C{backup}\u201D first, then the cloud copy replaces them.","penzor.sync.askConfirmGo":"Move them and use the cloud copy","penzor.sync.backupName":"{name} backup before sync {date}","penzor.sync.quotaTitle":"Your notes vault is {size}, over the {max} limit of {ledger}","penzor.sync.quotaTitlePlain":"Your notes vault is over the {ledger} limit","penzor.sync.quotaBody":"Files that don\u2019t fit stay on this computer. Nothing is deleted, they just aren\u2019t uploaded, and everything else keeps syncing.","penzor.sync.quotaLarge":"Single files over {size} are never uploaded ({n}).","penzor.sync.quotaSee":"See what\u2019s not uploaded","su.title":"Store update","su.source.github":"GitHub source","su.source.npm":"npm source","su.source.zip":"ZIP upload","su.review":"In review","su.approved":"Approved","su.rejected":"Not approved","su.viaGithub":"GitHub release {tag}","su.viaNpm":"npm {version}","su.metaReview":"Submitted {time} \xB7 The result will arrive in your inbox","su.metaReviewNoTime":"The result will arrive in your inbox","su.metaApproved":"The Store now shows {version}","su.metaApprovedInfo":"The Store info is updated","su.metaRejected":"The Store keeps {version}","su.metaRejectedUnlisted":"Not listed yet","su.infoOnly":"Store info only","su.listSep":", ","su.openSubmission":"Open in Submissions","wc.title":"Web page","wc.pill.published":"Published","wc.pill.live":"Live","wc.pill.review":"Store review","wc.pill.listed":"In the Store","wc.pill.rejected":"Not accepted in the Store","wc.pill.gone":"Taken down","wc.justPublished":"Just published","wc.anyone":"Anyone with the link can open it","wc.open":"Open","wc.viewInPages":"View in My web pages","wc.manage":"Manage in My web pages","wc.total":"{n} published","wc.more":"{n} more","wc.unpublishTitle":"Take down {name}?","wc.unpublishBody":"The link stops working and the page's files are deleted from your cloud drive.","wc.unpublishAgain":"Click again to take down"},Ql={zh:ng,en:og},De=e=>e==="en"?"en":"zh";function be(e,t,n){let r=Ql[e][t]??Ql.zh[t]??t;return n?r.replace(/\{(\w+)\}/g,(a,i)=>i in n?String(n[i]):a):r}var Sn=e=>(t,n)=>be(e,t,n),kt=(e,t)=>"raw"in e?e.raw:t(e.key,e.vars);var ec=`
|
|
70
70
|
.fx-acct { color: var(--text); }
|
|
71
71
|
.fx-acct .fx-panel > .settings-panel-head:last-child { border-bottom-color: transparent; }
|
|
72
72
|
.fx-acct .fx-panel > .fx-block + .fx-block,
|
|
@@ -89,6 +89,12 @@ Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error
|
|
|
89
89
|
|
|
90
90
|
.fx-acct .fx-link { display: inline-flex; align-items: center; gap: 4px; padding: 0; color: var(--accent-ink); font-size: inherit; line-height: inherit; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
|
|
91
91
|
.fx-acct .fx-link:disabled { opacity: 0.5; cursor: default; }
|
|
92
|
+
.fx-acct .fx-disclosure { color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); text-decoration: none; }
|
|
93
|
+
.fx-acct .fx-disclosure:hover { color: var(--text); }
|
|
94
|
+
.fx-acct .fx-disclosure > svg { transition: transform var(--duration-fast) var(--ease-out); }
|
|
95
|
+
.fx-acct .fx-disclosure[aria-expanded="true"] > svg { transform: rotate(90deg); }
|
|
96
|
+
.fx-acct .fx-row .fx-inline > svg { color: var(--text-muted); }
|
|
97
|
+
.fx-acct .fx-sent { max-height: 320px; margin: 0; font-family: var(--font-mono); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
92
98
|
.fx-acct .fx-msg { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin-top: 8px; font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
93
99
|
.fx-acct .fx-msg.is-error { color: var(--danger); }
|
|
94
100
|
.fx-acct .fx-msg.is-ok { color: var(--green); }
|
|
@@ -634,7 +640,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error
|
|
|
634
640
|
.fx-acct .fx-sub-back { display: inline-flex; align-items: center; }
|
|
635
641
|
.fx-acct .fx-sub-detail { padding: 14px 15px 18px; }
|
|
636
642
|
}
|
|
637
|
-
`,
|
|
643
|
+
`,tc=`
|
|
638
644
|
.fx-ann-backdrop { position: fixed; inset: 0; z-index: 1600; display: grid; place-items: center; padding: 20px; background: color-mix(in srgb, var(--bg) 78%, transparent); backdrop-filter: blur(8px); animation: fx-ann-fade 300ms ease-out both; }
|
|
639
645
|
.fx-ann { position: relative; display: flex; flex-direction: column; width: min(100%, 560px); max-height: calc(100dvh - 40px); overflow: auto; padding: 24px 28px 22px; border: var(--border-width) solid var(--border); border-radius: var(--radius-lg); background: var(--bg-card); box-shadow: var(--card-shadow); color: var(--text); font-family: var(--font-ui); text-align: left; animation: fx-ann-enter 480ms cubic-bezier(.2,.75,.15,1) both; }
|
|
640
646
|
.fx-ann:focus { outline: none; }
|
|
@@ -661,7 +667,7 @@ html[data-glass='off'] .fx-ann-backdrop { backdrop-filter: none; background: var
|
|
|
661
667
|
@media (prefers-reduced-motion: reduce) {
|
|
662
668
|
.fx-ann-backdrop, .fx-ann, .fx-ann-eyebrow, .fx-ann-title, .fx-ann-body, .fx-ann-ok { animation: none; }
|
|
663
669
|
}
|
|
664
|
-
`,
|
|
670
|
+
`,Vr=`
|
|
665
671
|
:host { display: block; color: var(--text); font-family: var(--font-body, var(--font-ui)); font-size: var(--ui-font-body); line-height: 1.65; overflow-wrap: anywhere; }
|
|
666
672
|
.doc > :first-child { margin-top: 0; }
|
|
667
673
|
.doc > :last-child { margin-bottom: 0; }
|
|
@@ -685,7 +691,7 @@ img { border-radius: var(--radius-sm); }
|
|
|
685
691
|
hr { margin: 16px 0; border: 0; border-top: var(--border-width) solid var(--border); }
|
|
686
692
|
a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
|
|
687
693
|
strong, b { font-weight: 650; }
|
|
688
|
-
`;var oo=e=>typeof e=="string"?e:"";function sm(e){if(!e||typeof e!="object")return null;let t=e,n=typeof t.id=="string"?t.id.trim():typeof t.id=="number"&&Number.isFinite(t.id)?String(t.id):"",r=oo(t.titleZh),a=oo(t.bodyZh);return!n||!r.trim()&&!a.trim()?null:{id:n,titleZh:r,titleEn:oo(t.titleEn).trim()?oo(t.titleEn):null,bodyZh:a,bodyEn:oo(t.bodyEn).trim()?oo(t.bodyEn):null,format:t.format==="html"?"html":"markdown",publishedAt:oo(t.publishedAt)||null}}function lm(e,t){return t==="en"&&e.bodyEn?{lang:"en",title:e.titleEn??e.titleZh,body:e.bodyEn}:{lang:"zh",title:e.titleZh,body:e.bodyZh}}var cm=new Pa({gfm:!0,breaks:!0}),dm=["script","iframe","frame","frameset","object","embed","applet","portal","form","input","textarea","select","option","button","link","meta","base","noscript"],um=/^(?:https?:|mailto:|#)/i;function Al(e){return va.sanitize(e,{FORCE_BODY:!0,RETURN_DOM_FRAGMENT:!0,FORBID_TAGS:dm,ALLOWED_URI_REGEXP:um})}function pm(e,t){let n=t==="markdown"?cm.parse(e,{async:!1}):e;return Al(n)}var Nr=null;function fm(){if(Nr===null)try{let e=Al('<p onclick="1"><a href="javascript:void 0">a</a></p><script>1<\/script><iframe></iframe>');Nr=va.isSupported&&!e.querySelector("script, iframe, [onclick], a[href]")}catch{Nr=!1}return Nr}function mm(e){try{let t=new URL(String(e??"").trim());return t.protocol==="http:"||t.protocol==="https:"?t.href:null}catch{return null}}var gm="http://www.w3.org/1999/xlink";function Or(e){let t=e.target,n=t&&typeof t.closest=="function"?t.closest("a, area"):null;if(!n||(e.preventDefault(),e.type!=="click"))return;let r=mm(n.getAttribute("href")??n.getAttributeNS(gm,"href"));if(r)try{se().openExternal?.(r)?.catch(()=>{})}catch{}}function Tl(e){return e.shadowRoot??e.attachShadow({mode:"open"})}function hm(e){let{ctx:t,ann:n}=e,[r,a]=A(()=>Ze(t.getLocale?.()));oe(()=>{a(Ze(t.getLocale?.()));let p=t.subscribeLocale?.(m=>a(Ze(m)));return()=>{typeof p=="function"&&p()}},[t]);let i=Ot(()=>zo(r),[r]),s=lm(n,r),l=ce(null),c=ce(null),d=ce(null),g=ce(null),u=ce(e.onClose);return u.current=e.onClose,oe(()=>{let p=document.activeElement instanceof HTMLElement?document.activeElement:null;l.current?.focus();let m=v=>{if(v.key==="Escape"){v.preventDefault(),v.stopPropagation(),u.current();return}if(v.key!=="Tab")return;let w=c.current,k=d.current,z=l.current;if(!w||!k||!z)return;let x=document.activeElement;if(!x||!z.contains(x)){v.preventDefault(),(v.shiftKey?k:w).focus();return}v.shiftKey&&(x===w||x===z)?(v.preventDefault(),k.focus()):!v.shiftKey&&x===k&&(v.preventDefault(),w.focus())},f=v=>{let w=l.current;w&&v.target instanceof Node&&!w.contains(v.target)&&w.focus()};return window.addEventListener("keydown",m,!0),document.addEventListener("focusin",f,!0),()=>{window.removeEventListener("keydown",m,!0),document.removeEventListener("focusin",f,!0),p?.isConnected&&p.focus()}},[]),oe(()=>{let p=g.current;if(!p)return;let m=Tl(p);return m.addEventListener("click",Or),m.addEventListener("auxclick",Or),()=>{m.removeEventListener("click",Or),m.removeEventListener("auxclick",Or)}},[]),oe(()=>{let p=g.current;if(!p)return;let m=document.createElement("style");m.textContent=Cl;let f=document.createElement("div");f.className="doc",f.appendChild(pm(s.body,n.format)),Tl(p).replaceChildren(m,f)},[s.body,n.format]),o("div",{class:"fx-ann-backdrop",children:[o("style",{children:_l}),o("section",{ref:l,class:"fx-ann",role:"dialog","aria-modal":"true","aria-labelledby":"fx-ann-title","aria-describedby":"fx-ann-body",tabIndex:-1,lang:s.lang==="zh"?"zh-CN":"en","data-announcement-id":n.id,children:[o("button",{ref:c,type:"button",class:"fx-ann-close","aria-label":i("ann.close"),onClick:()=>u.current(),children:o(J,{name:"x",size:16})}),o("div",{class:"fx-ann-eyebrow",children:i("ann.eyebrow")}),o("h2",{id:"fx-ann-title",class:"fx-ann-title",children:s.title}),o("div",{class:"fx-ann-body",children:o("div",{ref:g,id:"fx-ann-body",class:"fx-ann-doc"})}),o("div",{class:"fx-ann-footer",children:o("button",{ref:d,type:"button",class:"fx-ann-ok",onClick:()=>u.current(),children:i("ann.ok")})})]})]})}function bm(e){try{return new URLSearchParams(e||"").has("window")}catch{return!1}}function vm(e=document,t=12e3){let n=e.getElementById("tangu-splash");return n?.parentNode?new Promise(r=>{let a=()=>{i.disconnect(),clearTimeout(s),r()},i=new MutationObserver(()=>{n.isConnected||a()});i.observe(n.parentNode,{childList:!0});let s=setTimeout(a,t)}):Promise.resolve()}function El(e,t=window){let n=bn(t?.tangu);if(!e||!n?.cloudFetch||!eo(n)||bm(t.location?.search))return null;let r=0,a=!1,i=null,s=null,l=()=>{s?.done(),s=null},c=Promise.resolve(),d=(p,m)=>{let f=document.createElement("div");f.className="fx-ann-root",document.body.appendChild(f);let v=!1,w=k=>{v||(v=!0,i?.id===p.id&&(i=null),He(null,f),f.remove(),m?.done(),k&&(c=Q(`/announcements/${encodeURIComponent(p.id)}/seen`,{method:"POST"})))};i={id:p.id,finish:w},He(o(hm,{ctx:e,ann:p,onClose:()=>w(!0)}),f)},g=async()=>{let p=++r;await c;let m=await Q("/announcements/pending");if(a||p!==r||!m.ok)return;let f=sm(m.data?.announcement);if(!f||i||!fm()||(await vm(),a||p!==r||i))return;let v=e.app?.queuePopup?.();if(v&&(l(),s=v,await v.ready,s===v&&(s=null),a||p!==r||i)){v.done();return}d(f,v)},u=n.onAuthChanged?.(p=>{i?.finish(!1),l(),p?.loggedIn?g():r++});return g(),{check:g,dispose(){a=!0,r++,typeof u=="function"&&u(),i?.finish(!1),l()}}}function Pl(e){return typeof e!="string"?{ok:!1,rule:"format"}:e.length<8?{ok:!1,rule:"min"}:e.length>64?{ok:!1,rule:"max"}:/\s/.test(e)?{ok:!1,rule:"space"}:/[a-z]/.test(e)?/[A-Z]/.test(e)?/[^A-Za-z0-9]/.test(e)?{ok:!0}:{ok:!1,rule:"special"}:{ok:!1,rule:"upper"}:{ok:!1,rule:"lower"}}function Ml(e){return{length:e.length>=8&&e.length<=64,lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),special:/[^A-Za-z0-9]/.test(e),space:e.length>0&&!/\s/.test(e)}}var Il={\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E:"format","\u5BC6\u7801\u81F3\u5C11 8 \u4F4D":"min","\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D":"max",\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C:"space",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD:"lower",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD:"upper",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26:"special"};var Rl={no_reset_card:"err.noResetCard",invalid_type:"err.generic",invalid_count:"err.invalidCount",insufficient_points:"err.insufficientPoints",price_changed:"err.priceChanged",insufficient_main_quota:"err.insufficientMainQuota",background_unavailable:"err.backgroundUnavailable",invalid_percent:"err.generic",invalid_request:"err.generic",invalid_invite_code:"err.invalidInviteCode",already_used:"err.inviteAlreadyUsed",window_expired:"err.inviteWindowExpired",ITEM_NOT_FOUND:"backpack.unavailable",ITEM_NOT_ACTIVE:"backpack.unavailable",ITEM_NOT_USABLE:"backpack.notUsable",ITEM_EFFECT_UNAVAILABLE:"backpack.quotaUnavailable",FEATURE_DISABLED:"err.featureDisabled",INSUFFICIENT_POINTS:"err.insufficientPoints",OUT_OF_STOCK:"store.soldOut",LIMIT_REACHED:"store.limitReached",NOT_AVAILABLE:"store.unavailable",NOT_POINTS_PURCHASABLE:"store.unavailable",CAPTCHA_FAILED:"err.captcha",machine_username:"profile.blocked.machineUsername",publish_blocked:"profile.blocked.publishBlocked",invalid_settings:"profile.invalid"},Ll={"Current password is incorrect":"err.currentPasswordWrong","Current and new password are required":"err.passwordRequired",\u9A8C\u8BC1\u7801\u65E0\u6548\u6216\u5DF2\u8FC7\u671F:"err.codeInvalid","Invalid or expired verification code":"err.codeInvalid",\u8D26\u53F7\u6216\u9A8C\u8BC1\u7801\u9519\u8BEF:"err.codeInvalid",\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801:"err.codeRequired","Email already in use":"err.emailInUse","Phone number already in use":"err.phoneInUse","Invalid email format":"err.emailInvalid","Email is required":"err.emailInvalid","Invalid phone number format":"err.phoneInvalid","Phone number is required":"err.phoneInvalid","Invalid phone number or email format":"err.targetInvalid","Please wait before requesting another code":"err.codeCooldown","Failed to send verification code":"err.codeSendFailed","Invalid target for account deletion":"err.deleteTargetInvalid","\u8EAB\u4EFD\u9A8C\u8BC1\u5931\u8D25\uFF0C\u65E0\u6CD5\u6CE8\u9500\u8D26\u6237":"err.deleteVerifyFailed",\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500:"err.adminCannotDelete",\u79EF\u5206\u4F59\u989D\u4E0D\u8DB3:"err.insufficientPoints","\u5151\u6362\u5F20\u6570\u9700\u4E3A 1-50 \u7684\u6574\u6570":"err.invalidCount",\u6CA1\u6709\u53EF\u7528\u7684\u91CD\u7F6E\u5361:"err.noResetCard","\u4E3B\u989D\u5EA6\u5DF2\u7528\u5B8C,\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6":"err.insufficientMainQuota",\u540E\u53F0\u989D\u5EA6\u6682\u4E0D\u53EF\u7528:"err.backgroundUnavailable",\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548:"err.invalidInviteCode","\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F":"err.inviteWindowExpired",\u4F60\u5DF2\u4F7F\u7528\u8FC7\u9080\u8BF7\u7801:"err.inviteAlreadyUsed","You have already used an invite code":"err.inviteAlreadyUsed","Cannot use your own invite code":"err.inviteOwnCode","Invite code is required":"err.inviteEmpty","code is required":"err.redeemEmpty","Redemption code not found":"err.redeemNotFound","Redemption code is not active":"err.redeemInactive","Redemption code has expired":"err.redeemExpired","Redemption code has reached maximum uses":"err.redeemUsedUp","You have already used this code the maximum number of times":"err.redeemUserLimit",avatar_too_large:"err.avatarTooLarge","description is required":"err.feedbackEmpty","description too long (max 10000 chars)":"err.feedbackTooLong","content is required":"err.replyEmpty","content too long (max 10000 chars)":"err.replyTooLong","Ticket not found":"err.ticketNotFound","Too many attachments (max 5)":"err.tooManyImages","Attachment type not allowed (image / json / text only)":"err.imageType","\u4EBA\u673A\u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5":"err.captcha",\u5E94\u7528\u4E0D\u5B58\u5728\u6216\u4E0D\u5C5E\u4E8E\u4F60:"err.webPageGone","\u5E94\u7528\u5DF2\u88AB\u505C\u7528\uFF0C\u65E0\u6CD5\u7533\u8BF7\u4E0A\u67B6":"web.disabledHint",\u6CA1\u6709\u5BF9\u5E94\u7684\u4E0A\u67B6\u7533\u8BF7:"err.listingGone","\u8BF7\u586B\u5199\u5E94\u7528\u7B80\u4ECB\uFF08300 \u5B57\u4EE5\u5185\uFF09":"err.listingSummary"},ja={format:"pw.rule.format",min:"pw.rule.min",max:"pw.rule.max",space:"pw.rule.space",lower:"pw.rule.lower",upper:"pw.rule.upper",special:"pw.rule.special"};function ym(e){if(e.code&&Rl[e.code])return Rl[e.code];if(e.detail){if(Ll[e.detail])return Ll[e.detail];let t=Il[e.detail];if(t)return ja[t];if(e.detail.startsWith("Attachment exceeds 5MB"))return"err.imageTooLarge"}return null}function Bt(e){let t=ym(e);return t?{key:t}:to(e)?{key:"err.signedOut"}:e.status===0?{key:"err.network"}:e.status===401?{key:"err.session"}:e.status===429?{key:"err.tooFrequent"}:e.detail?{raw:e.detail}:e.status>=500?{key:"err.server",vars:{status:e.status}}:{key:"err.generic"}}function Zo(e){let t=e.trim();return t?/cancelled\.?$/i.test(t)?null:t==="A sign-in is already in progress."?{key:"err.loginInProgress"}:t.startsWith("\u767B\u5F55\u8D85\u65F6")?{key:"err.loginTimeout"}:t.startsWith("\u767B\u5F55\u7801\u5DF2\u8FC7\u671F")?{key:"err.loginCodeExpired"}:t.startsWith("\u65E0\u6CD5\u8FDE\u63A5")?{key:"err.network"}:t.startsWith("\u4E91\u7AEF\u4E0D\u652F\u6301 CLI \u767B\u5F55")?{key:"err.loginUnsupported"}:t.startsWith("\u8BF7\u5148\u586B\u5199 Forsion \u4E91\u7AEF\u5730\u5740")?{key:"err.noCloudUrl"}:t.startsWith("Account is no longer signed in")?{key:"err.accountGone"}:{raw:t}:{key:"err.generic"}}var Wa=Ir(null);function ae(){let e=Ua(Wa);if(!e)throw new Error("forsion-extend: page rendered outside its host root");return e}var Ke=()=>ae().t;function qe(){let e=ce(!0);return oe(()=>(e.current=!0,()=>{e.current=!1}),[]),e}var Dl={pending:!1,error:null,success:null,captcha:!1};function ue(){let e=qe(),[t,n]=A(Dl),r=ce(!1),a=hn(async s=>{if(r.current)return;r.current=!0,n({pending:!0,error:null,success:null,captcha:!1});let l;try{l=await s()}catch(c){l={error:{raw:String(c?.message||c)}}}r.current=!1,e.current&&n({pending:!1,error:l?.error??null,success:l?.success??null,captcha:!!l?.captcha})},[]),i=hn(()=>{r.current||n(Dl)},[]);return{...t,run:a,clear:i}}var De=e=>({error:Bt(e),captcha:e.status===403&&e.code==="CAPTCHA_FAILED"});function Nl(){let[e,t]=A(0),n=ce(null);oe(()=>()=>{n.current&&clearInterval(n.current)},[]);let r=hn((i=60)=>{n.current&&clearInterval(n.current),t(i),n.current=setInterval(()=>{t(s=>s<=1?(n.current&&clearInterval(n.current),n.current=null,0):s-1)},1e3)},[]),a=hn(()=>{n.current&&clearInterval(n.current),n.current=null,t(0)},[]);return{left:e,start:r,stop:a}}function Oe(e){let[t,n]=A({state:"loading"}),r=ce(0),a=ce(e);a.current=e;let i=hn((c=!1)=>{let d=++r.current;c||n({state:"loading"}),(async()=>{let g;try{g=await a.current()}catch(u){g={ok:!1,status:0,code:null,detail:null,transport:String(u?.message||u)}}d===r.current&&(g.ok?n({state:"ready",data:g.data,gen:d}):to(g)?n({state:"signedOut"}):(g.status===401&&se().authStatus?.().catch(()=>{}),n({state:"error",fail:g})))})()},[]);oe(()=>{i();let c=se().onAuthChanged?.(()=>i());return()=>{r.current++,c?.()}},[i]);let s=hn(()=>i(),[i]),l=hn(()=>i(!0),[i]);switch(t.state){case"ready":{let c=t.gen,d=g=>n(u=>u.state==="ready"&&u.gen===c?{...u,data:g(u.data)}:u);return{state:"ready",data:t.data,reload:l,update:d}}case"error":return{state:"error",error:Bt(t.fail),retry:s};default:return t}}function Br(e){let t=String(e||"").trim();if(!t)return"";let n=t.startsWith("+")?4:3;return t.length<=n+4?`${t.slice(0,2)}***`:`${t.slice(0,n)}****${t.slice(-4)}`}function Fr(e){let t=String(e||"").trim(),n=t.lastIndexOf("@");if(n<=0)return t?`${t.slice(0,1)}***`:"";let r=t.slice(0,n);return`${r.slice(0,r.length<=2?1:2)}***${t.slice(n)}`}function Qo(e){let t=String(e||"").trim().toLowerCase()||"free";return t.charAt(0).toUpperCase()+t.slice(1)}var xm=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Ol(e,t){let n=String(e||"").trim(),r,a,i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n);if(i)r=Number(i[2]),a=Number(i[3]);else{let s=new Date(n);if(!n||Number.isNaN(s.getTime()))return null;let l=new Intl.DateTimeFormat("en-US",{timeZone:"Asia/Shanghai",month:"numeric",day:"numeric"}).formatToParts(s);r=Number(l.find(c=>c.type==="month")?.value),a=Number(l.find(c=>c.type==="day")?.value)}return!(r>=1&&r<=12)||!(a>=1&&a<=31)?null:t==="zh"?`${r}\u6708${a}\u65E5`:`${xm[r-1]} ${a}`}var Ga=e=>e==="zh"?"zh-CN":"en-US";function Bl(e){if(e==null||e==="")return null;let t=new Date(typeof e=="string"&&/^\d+$/.test(e)?Number(e):e);return Number.isNaN(t.getTime())?null:t}function yn(e,t){let n=Bl(e);return n?new Intl.DateTimeFormat(Ga(t),{year:"numeric",month:"short",day:"numeric"}).format(n):"\u2014"}function Gt(e,t){let n=Bl(e);return n?new Intl.DateTimeFormat(Ga(t),{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(n):"\u2014"}function Pe(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?new Intl.NumberFormat(Ga(t),{maximumFractionDigits:2}).format(n):"\u2014"}var ro=(e=>(e[e.Border=-1]="Border",e[e.Data=0]="Data",e[e.Function=1]="Function",e[e.Position=2]="Position",e[e.Timing=3]="Timing",e[e.Alignment=4]="Alignment",e))(ro||{}),km=[0,1],$l=[1,0],Ul=[2,3],Hl=[3,2],wm={L:km,M:$l,Q:Ul,H:Hl},zm=/^\d*$/,Sm=/^[A-Z0-9 $%*+./:-]*$/,Ka="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",Za=1,Qa=40,Fl=3,_m=3,$r=40,Cm=10,ql=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],Vl=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],Xa=class{constructor(t,n,r,a){if(this.version=t,this.ecc=n,t<Za||t>Qa)throw new RangeError("Version value out of range");if(a<-1||a>7)throw new RangeError("Mask value out of range");this.size=t*4+17;let i=Array.from({length:this.size}).fill(!1);for(let l=0;l<this.size;l++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);if(this.drawCodewords(s),a===-1){let l=1e9;for(let c=0;c<8;c++){this.applyMask(c),this.drawFormatBits(c);let d=this.getPenaltyScore();d<l&&(a=c,l=d),this.applyMask(c)}}this.mask=a,this.applyMask(a),this.drawFormatBits(a)}size;mask;modules=[];types=[];getModule(t,n){return t>=0&&t<this.size&&n>=0&&n<this.size&&this.modules[n][t]}drawFunctionPatterns(){for(let r=0;r<this.size;r++)this.setFunctionModule(6,r,r%2===0,ro.Timing),this.setFunctionModule(r,6,r%2===0,ro.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let t=this.getAlignmentPatternPositions(),n=t.length;for(let r=0;r<n;r++)for(let a=0;a<n;a++)r===0&&a===0||r===0&&a===n-1||r===n-1&&a===0||this.drawAlignmentPattern(t[r],t[a]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let n=this.ecc[1]<<3|t,r=n;for(let i=0;i<10;i++)r=r<<1^(r>>>9)*1335;let a=(n<<10|r)^21522;for(let i=0;i<=5;i++)this.setFunctionModule(8,i,xn(a,i));this.setFunctionModule(8,7,xn(a,6)),this.setFunctionModule(8,8,xn(a,7)),this.setFunctionModule(7,8,xn(a,8));for(let i=9;i<15;i++)this.setFunctionModule(14-i,8,xn(a,i));for(let i=0;i<8;i++)this.setFunctionModule(this.size-1-i,8,xn(a,i));for(let i=8;i<15;i++)this.setFunctionModule(8,this.size-15+i,xn(a,i));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let r=0;r<12;r++)t=t<<1^(t>>>11)*7973;let n=this.version<<12|t;for(let r=0;r<18;r++){let a=xn(n,r),i=this.size-11+r%3,s=Math.floor(r/3);this.setFunctionModule(i,s,a),this.setFunctionModule(s,i,a)}}drawFinderPattern(t,n){for(let r=-4;r<=4;r++)for(let a=-4;a<=4;a++){let i=Math.max(Math.abs(a),Math.abs(r)),s=t+a,l=n+r;s>=0&&s<this.size&&l>=0&&l<this.size&&this.setFunctionModule(s,l,i!==2&&i!==4,ro.Position)}}drawAlignmentPattern(t,n){for(let r=-2;r<=2;r++)for(let a=-2;a<=2;a++)this.setFunctionModule(t+a,n+r,Math.max(Math.abs(a),Math.abs(r))!==1,ro.Alignment)}setFunctionModule(t,n,r,a=ro.Function){this.modules[n][t]=r,this.types[n][t]=a}addEccAndInterleave(t){let n=this.version,r=this.ecc;if(t.length!==Ur(n,r))throw new RangeError("Invalid argument");let a=Vl[r[0]][n],i=ql[r[0]][n],s=Math.floor(Ja(n)/8),l=a-s%a,c=Math.floor(s/a),d=[],g=Dm(i);for(let p=0,m=0;p<a;p++){let f=t.slice(m,m+c-i+(p<l?0:1));m+=f.length;let v=Nm(f,g);p<l&&f.push(0),d.push(f.concat(v))}let u=[];for(let p=0;p<d[0].length;p++)d.forEach((m,f)=>{(p!==c-i||f>=l)&&u.push(m[p])});return u}drawCodewords(t){if(t.length!==Math.floor(Ja(this.version)/8))throw new RangeError("Invalid argument");let n=0;for(let r=this.size-1;r>=1;r-=2){r===6&&(r=5);for(let a=0;a<this.size;a++)for(let i=0;i<2;i++){let s=r-i,c=(r+1&2)===0?this.size-1-a:a;!this.types[c][s]&&n<t.length*8&&(this.modules[c][s]=xn(t[n>>>3],7-(n&7)),n++)}}}applyMask(t){if(t<0||t>7)throw new RangeError("Mask value out of range");for(let n=0;n<this.size;n++)for(let r=0;r<this.size;r++){let a;switch(t){case 0:a=(r+n)%2===0;break;case 1:a=n%2===0;break;case 2:a=r%3===0;break;case 3:a=(r+n)%3===0;break;case 4:a=(Math.floor(r/3)+Math.floor(n/2))%2===0;break;case 5:a=r*n%2+r*n%3===0;break;case 6:a=(r*n%2+r*n%3)%2===0;break;case 7:a=((r+n)%2+r*n%3)%2===0;break;default:throw new Error("Unreachable")}!this.types[n][r]&&a&&(this.modules[n][r]=!this.modules[n][r])}}getPenaltyScore(){let t=0;for(let i=0;i<this.size;i++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let d=0;d<this.size;d++)this.modules[i][d]===s?(l++,l===5?t+=Fl:l>5&&t++):(this.finderPenaltyAddHistory(l,c),s||(t+=this.finderPenaltyCountPatterns(c)*$r),s=this.modules[i][d],l=1);t+=this.finderPenaltyTerminateAndCount(s,l,c)*$r}for(let i=0;i<this.size;i++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let d=0;d<this.size;d++)this.modules[d][i]===s?(l++,l===5?t+=Fl:l>5&&t++):(this.finderPenaltyAddHistory(l,c),s||(t+=this.finderPenaltyCountPatterns(c)*$r),s=this.modules[d][i],l=1);t+=this.finderPenaltyTerminateAndCount(s,l,c)*$r}for(let i=0;i<this.size-1;i++)for(let s=0;s<this.size-1;s++){let l=this.modules[i][s];l===this.modules[i][s+1]&&l===this.modules[i+1][s]&&l===this.modules[i+1][s+1]&&(t+=_m)}let n=0;for(let i of this.modules)n=i.reduce((s,l)=>s+(l?1:0),n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return t+=a*Cm,t}getAlignmentPatternPositions(){if(this.version===1)return[];{let t=Math.floor(this.version/7)+2,n=this.version===32?26:Math.ceil((this.version*4+4)/(t*2-2))*2,r=[6];for(let a=this.size-7;r.length<t;a-=n)r.splice(1,0,a);return r}}finderPenaltyCountPatterns(t){let n=t[1],r=n>0&&t[2]===n&&t[3]===n*3&&t[4]===n&&t[5]===n;return(r&&t[0]>=n*4&&t[6]>=n?1:0)+(r&&t[6]>=n*4&&t[0]>=n?1:0)}finderPenaltyTerminateAndCount(t,n,r){return t&&(this.finderPenaltyAddHistory(n,r),n=0),n+=this.size,this.finderPenaltyAddHistory(n,r),this.finderPenaltyCountPatterns(r)}finderPenaltyAddHistory(t,n){n[0]===0&&(t+=this.size),n.pop(),n.unshift(t)}};function kn(e,t,n){if(t<0||t>31||e>>>t)throw new RangeError("Value out of range");for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function xn(e,t){return(e>>>t&1)!==0}var er=class{constructor(t,n,r){if(this.mode=t,this.numChars=n,this.bitData=r,n<0)throw new RangeError("Invalid argument");this.bitData=r.slice()}getData(){return this.bitData.slice()}},Tm=[1,10,12,14],Am=[2,9,11,13],Em=[4,8,16,16];function jl(e,t){return e[Math.floor((t+7)/17)+1]}function Wl(e){let t=[];for(let n of e)kn(n,8,t);return new er(Em,e.length,t)}function Pm(e){if(!Gl(e))throw new RangeError("String contains non-numeric characters");let t=[];for(let n=0;n<e.length;){let r=Math.min(e.length-n,3);kn(Number.parseInt(e.substring(n,n+r),10),r*3+1,t),n+=r}return new er(Tm,e.length,t)}function Mm(e){if(!Kl(e))throw new RangeError("String contains unencodable characters in alphanumeric mode");let t=[],n;for(n=0;n+2<=e.length;n+=2){let r=Ka.indexOf(e.charAt(n))*45;r+=Ka.indexOf(e.charAt(n+1)),kn(r,11,t)}return n<e.length&&kn(Ka.indexOf(e.charAt(n)),6,t),new er(Am,e.length,t)}function Im(e){return e===""?[]:Gl(e)?[Pm(e)]:Kl(e)?[Mm(e)]:[Wl(Lm(e))]}function Gl(e){return zm.test(e)}function Kl(e){return Sm.test(e)}function Rm(e,t){let n=0;for(let r of e){let a=jl(r.mode,t);if(r.numChars>=1<<a)return Number.POSITIVE_INFINITY;n+=4+a+r.bitData.length}return n}function Lm(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)!=="%"?t.push(e.charCodeAt(n)):(t.push(Number.parseInt(e.substring(n+1,n+3),16)),n+=2);return t}function Ja(e){if(e<Za||e>Qa)throw new RangeError("Version number out of range");let t=(16*e+128)*e+64;if(e>=2){let n=Math.floor(e/7)+2;t-=(25*n-10)*n-55,e>=7&&(t-=36)}return t}function Ur(e,t){return Math.floor(Ja(e)/8)-ql[t[0]][e]*Vl[t[0]][e]}function Dm(e){if(e<1||e>255)throw new RangeError("Degree out of range");let t=[];for(let r=0;r<e-1;r++)t.push(0);t.push(1);let n=1;for(let r=0;r<e;r++){for(let a=0;a<t.length;a++)t[a]=Ya(t[a],n),a+1<t.length&&(t[a]^=t[a+1]);n=Ya(n,2)}return t}function Nm(e,t){let n=t.map(r=>0);for(let r of e){let a=r^n.shift();n.push(0),t.forEach((i,s)=>n[s]^=Ya(i,a))}return n}function Ya(e,t){if(e>>>8||t>>>8)throw new RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return n}function Om(e,t,n=1,r=40,a=-1,i=!0){if(!(Za<=n&&n<=r&&r<=Qa)||a<-1||a>7)throw new RangeError("Invalid value");let s,l;for(s=n;;s++){let u=Ur(s,t)*8,p=Rm(e,s);if(p<=u){l=p;break}if(s>=r)throw new RangeError("Data too long")}for(let u of[$l,Ul,Hl])i&&l<=Ur(s,u)*8&&(t=u);let c=[];for(let u of e){kn(u.mode[0],4,c),kn(u.numChars,jl(u.mode,s),c);for(let p of u.getData())c.push(p)}let d=Ur(s,t)*8;kn(0,Math.min(4,d-c.length),c),kn(0,(8-c.length%8)%8,c);for(let u=236;c.length<d;u^=253)kn(u,8,c);let g=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((u,p)=>g[p>>>3]|=u<<7-(p&7)),new Xa(s,t,g,a)}function Xl(e,t){let{ecc:n="L",boostEcc:r=!1,minVersion:a=1,maxVersion:i=40,maskPattern:s=-1,border:l=1}=t||{},c=typeof e=="string"?Im(e):Array.isArray(e)?[Wl(e)]:void 0;if(!c)throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof e}`);let d=Om(c,wm[n],a,i,s,r),g=Bm({version:d.version,maskPattern:d.mask,size:d.size,data:d.modules,types:d.types},l);return t?.invert&&(g.data=g.data.map(u=>u.map(p=>!p))),t?.onEncoded?.(g),g}function Bm(e,t=1){if(!t)return e;let{size:n}=e,r=n+t*2;e.size=r,e.data.forEach(i=>{for(let s=0;s<t;s++)i.unshift(!1),i.push(!1)});for(let i=0;i<t;i++)e.data.unshift(Array.from({length:r},s=>!1)),e.data.push(Array.from({length:r},s=>!1));let a=ro.Border;e.types.forEach(i=>{for(let s=0;s<t;s++)i.unshift(a),i.push(a)});for(let i=0;i<t;i++)e.types.unshift(Array.from({length:r},s=>a)),e.types.push(Array.from({length:r},s=>a));return e}function ke(e){return o("section",{class:`settings-panel fx-panel${e.danger?" fx-panel--danger":""}`,"aria-label":e.label,children:[o("div",{class:`settings-panel-head${e.actions?" settings-panel-head--actions":""}`,children:[e.icon&&o("span",{class:"settings-panel-icon",children:o(J,{name:e.icon,size:16})}),o("div",{children:[o("strong",{children:e.title}),e.desc&&o("p",{children:e.desc})]}),e.actions&&o("div",{class:"settings-panel-actions settings-panel-actions--wide",children:e.actions})]}),e.children]})}function Ve(e){return o("div",{class:`settings-control-row settings-setting-row fx-row fx-block${e.class?` ${e.class}`:""}`,children:[o("div",{class:"settings-control-copy",children:o("span",{children:[o("strong",{children:e.label}),e.desc&&o("small",{children:e.desc})]})}),e.children!==void 0&&e.children!==null&&o("div",{class:"settings-row-control fx-row-control",children:e.children})]})}function Me(e){return o("div",{class:`fx-sub${e.class?` ${e.class}`:""}`,children:e.children})}function Qt(e){return o("button",{type:"button",role:"switch","aria-checked":e.checked,"aria-label":e.label,class:`settings-switch${e.checked?" active":""}`,disabled:e.disabled,onClick:()=>e.onChange(!e.checked),children:o("span",{})})}function q(e){let t=e.variant??"ghost",n=t==="danger-solid"?"btn sm danger fx-danger-solid":`btn sm ${t}`;return o("button",{type:e.submit?"submit":"button",class:n,disabled:e.disabled||e.pending,"aria-busy":e.pending||void 0,"aria-label":e.label,title:e.title,"data-armed":e.armed?"true":void 0,onClick:e.onClick,children:[e.pending&&o(wo,{}),e.children]})}var Fm=5e3;function Kt(e){let[t,n]=A(!1),r=ce(null),a=()=>{r.current&&clearTimeout(r.current),r.current=null,n(!1)};oe(()=>()=>{r.current&&clearTimeout(r.current)},[]),oe(()=>{(e.pending||e.disabled)&&a()},[e.pending,e.disabled]);let i=()=>{if(!t){n(!0),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{r.current=null,n(!1)},Fm);return}a(),e.onConfirm()},s=e.variant??"ghost";return o(q,{variant:t?s==="danger"||s==="danger-solid"?"danger-solid":"primary":s,armed:t,pending:e.pending,disabled:e.disabled,onClick:i,children:t?e.confirmLabel:e.label})}function pe(e){let t=Ke(),{a:n}=e;return n.error?o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:Wt(n.error,t)}),n.captcha&&o("button",{type:"button",class:"fx-link",onClick:()=>void no(e.captchaSection??"security"),children:[t("common.openInBrowser")," ",o(J,{name:"external",size:12})]})]}):n.success?o("div",{class:"fx-msg is-ok",role:"status",children:Wt(n.success,t)}):null}function de(e){return o("p",{class:`fx-note${e.tone?` is-${e.tone}`:""}`,children:e.children})}function ut(e){return o("div",{class:"settings-empty-row fx-block",children:e.children})}function tr(e){let t=Ke(),n=e.display;return o("div",{class:`fx-quota${n.low?" is-low":""}`,children:[o("div",{class:"fx-quota-top",children:[o("span",{class:"fx-quota-label",children:e.label}),o("span",{class:"fx-quota-value",children:n.unlimited?t("common.unlimited"):n.text})]}),o("div",{class:"fx-bar",role:"progressbar","aria-label":e.label,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n.pct,"aria-valuetext":n.unlimited?t("common.unlimited"):n.text,children:o("span",{style:{width:`${n.pct}%`}})}),e.note&&o("div",{class:"fx-quota-note",children:e.note})]})}function St(e){return o("div",{class:"seg fx-seg",role:"radiogroup","aria-label":e.label,children:e.options.map(t=>o("button",{type:"button",role:"radio","aria-checked":t.value===e.value,class:t.value===e.value?"active":"",onClick:()=>{t.value!==e.value&&e.onChange(t.value)},children:t.label}))})}async function $m(e){try{return await navigator.clipboard.writeText(e),!0}catch{try{let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let n=document.execCommand("copy");return t.remove(),n}catch{return!1}}}function _t(e){let t=Ke(),[n,r]=A("idle"),a=ce(null);oe(()=>()=>{a.current&&clearTimeout(a.current)},[]);let i=async()=>{let s=await $m(e.text);r(s?"copied":"failed"),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>r("idle"),1800)};return o(q,{disabled:e.disabled||!e.text,onClick:()=>void i(),children:[o(J,{name:n==="copied"?"check":"copy",size:12}),n==="copied"?t("common.copied"):n==="failed"?t("common.copyFailed"):e.label]})}function Um(e){let t=Ot(()=>{try{return Xl(e.value,{ecc:"M",border:2})}catch{return null}},[e.value]);if(!t)return null;let n="";t.data.forEach((a,i)=>a.forEach((s,l)=>{s&&(n+=`M${l} ${i}h1v1h-1z`)}));let r=e.size??148;return o("svg",{class:"fx-qr",width:r,height:r,viewBox:`0 0 ${t.size} ${t.size}`,"shape-rendering":"crispEdges",role:"img","aria-label":e.label,children:[o("rect",{width:t.size,height:t.size,fill:"#fff"}),o("path",{d:n,fill:"#000"})]})}function ei(e){let t=Ke(),{device:n}=e;return o("div",{class:"fx-device",children:[o(Um,{value:n.url,label:t("signin.qrLabel")}),o("div",{class:"fx-device-copy",children:[o("p",{children:t("signin.deviceHint")}),n.userCode&&o("div",{class:"fx-device-code",children:[o("span",{children:t("signin.code")}),o("code",{children:n.userCode})]}),o("div",{class:"fx-inline",children:[o("button",{type:"button",class:"fx-link",onClick:()=>window.open(n.url,"_blank"),children:[t("signin.openLink")," ",o(J,{name:"external",size:12})]}),o(_t,{text:n.url,label:t("signin.copyLink")})]})]})]})}function Be(){let e=Ke(),t=ue(),[n,r]=A(null);oe(()=>se().onAuthDevice?.(i=>r(i)),[]);let a=()=>void t.run(async()=>{let i=se().forsionLogin;if(!i)return{error:{key:"err.unavailable"}};try{await i()}catch(s){r(null);let l=Zo(Zt(s));return l?{error:l}:void 0}});return o("section",{class:"settings-panel fx-panel fx-signin","aria-label":e("signin.button"),children:o("div",{class:"settings-state fx-signin-body",children:[o("span",{class:"settings-state-icon",children:o(J,{name:"user",size:18})}),o("p",{class:"fx-signin-lead",children:e("signin.desc")}),o("div",{class:"settings-state-actions",children:o(q,{variant:"primary",pending:t.pending,onClick:a,children:t.pending?e("signin.pending"):e("signin.button")})}),n&&o(ei,{device:n}),o(pe,{a:t})]})})}function Ie(e){let t=Ke(),n=e.panels??2,r=e.rows??2;return o("div",{class:"fx-skeleton","aria-busy":"true","aria-label":t("common.loading"),children:Array.from({length:n},(a,i)=>o("section",{class:"settings-panel fx-panel",children:[o("div",{class:"settings-panel-head",children:[o("span",{class:"fx-skel fx-skel--icon"}),o("div",{children:[o("span",{class:"fx-skel fx-skel--title"}),o("span",{class:"fx-skel fx-skel--line"})]})]}),Array.from({length:r},(s,l)=>o("div",{class:"settings-control-row",children:o("span",{class:"fx-skel fx-skel--row"})},l))]},i))})}function $e(e){let t=Ke();return o("section",{class:"settings-panel fx-panel",children:o("div",{class:"settings-state fx-error-state",role:"alert",children:[o("span",{class:"settings-state-icon",children:o(J,{name:"alert",size:18})}),o("strong",{children:t("common.loadFailed")}),o("p",{children:Wt(e.error,t)}),o("div",{class:"settings-state-actions",children:o(q,{variant:"primary",onClick:e.onRetry,children:[o(J,{name:"refresh",size:12})," ",t("common.retry")]})})]})})}function Yl(){let{t:e}=ae(),t=Oe(()=>Q("/auth/me"));if(t.state==="loading")return o(Ie,{panels:2});if(t.state==="signedOut")return o(Be,{});if(t.state==="error")return o($e,{error:t.error,onRetry:t.retry});let n=t.data;return o(N,{children:[o(ke,{icon:"user",title:e("account.details.title"),desc:e("account.details.desc"),children:[o(Ve,{label:e("account.details.username"),children:[o("span",{class:"fx-value",children:n.username}),n.role==="ADMIN"&&o("span",{class:"fx-tag",children:e("account.role.admin")})]}),o(Jl,{kind:"phone",value:n.phone}),o(Jl,{kind:"email",value:n.email})]}),o(Hm,{}),o(Vm,{})]})}function Jl(e){let{t,goTo:n}=ae(),r=!!e.value,a=r?e.kind==="phone"?Br(e.value):Fr(e.value):t("account.contact.unbound"),i=e.kind==="phone"?t("account.contact.phone"):t("account.contact.email");return o(Ve,{label:i,children:n?o("button",{type:"button",class:`fx-link-row${r?"":" is-empty"}`,onClick:()=>n("security"),title:t("account.contact.manage"),children:[o("span",{children:a}),o(J,{name:"chevron",size:12})]}):o("span",{class:`fx-value${r?"":" is-empty"}`,children:a})})}function Hm(){let{t:e}=ae(),t=qe(),[n,r]=A(null),[a,i]=A(!1),[s,l]=A(null),[c,d]=A(null),g=ue(),u=ue(),p=ue(),m=!vn(se()),f=m&&!!se().authAccounts;oe(()=>{let x=0,M=()=>{let V=se().authAccounts;if(!f||!V)return;let ee=++x;i(!1),V().then(te=>{ee===x&&r(Array.isArray(te)?te:[])}).catch(()=>{ee===x&&i(!0)})};M();let L=se().onAuthChanged?.(M),H=se().onAuthDevice?.(V=>d(V));return()=>{x++,L?.(),H?.()}},[]);let v=x=>{l(x),g.run(async()=>{let M=se().forsionSwitchAccount;if(!M)return{error:{key:"err.unavailable"}};try{await M(x)}catch(L){let H=Zo(Zt(L));return H?{error:H}:void 0}finally{t.current&&l(null)}})},w=()=>void u.run(async()=>{let x=se().forsionLogin;if(!x)return{error:{key:"err.unavailable"}};d(null);try{await x()}catch(M){t.current&&d(null);let L=Zo(Zt(M));return L?{error:L}:void 0}}),k=()=>void p.run(async()=>{let x=se().forsionLogout;if(!x)return{error:{key:"err.unavailable"}};try{await x()}catch(M){return{error:{raw:Zt(M)||e("err.generic")}}}}),z=g.pending||u.pending||p.pending;return o(ke,{icon:m?"laptop":"user",title:e(m?"local.title":"session.title"),desc:e(m?"local.desc":"session.desc"),children:[f&&n===null&&!a&&o(ut,{children:[o(wo,{})," ",e("common.loading")]}),a&&o("div",{class:"fx-sub",children:o(de,{tone:"warn",children:e("local.loadFailed")})}),n&&n.length===0&&o(ut,{children:e("local.empty")}),n&&n.length>0&&o("div",{class:"fx-list fx-block",role:"list",children:n.map(x=>o("div",{class:"fx-list-row",role:"listitem",children:[o("span",{class:"fx-list-icon",children:o(J,{name:"user",size:14})}),o("span",{class:"fx-list-main",children:[o("strong",{children:x.nickname||x.username||"Forsion"}),o("small",{children:[x.username&&x.nickname?x.username:null,qm(x.cloudUrl)].filter(Boolean).join(" \xB7 ")})]}),x.active?o("span",{class:"fx-tag fx-tag--accent",children:[o(J,{name:"check",size:11})," ",e("local.current")]}):o(q,{pending:s===x.id,disabled:z&&s!==x.id,onClick:()=>v(x.id),children:e("local.switch")})]},x.id))}),u.pending&&c&&o("div",{class:"fx-sub",children:o(ei,{device:c})}),o("div",{class:"settings-panel-footer fx-footer",children:[o(q,{pending:u.pending,disabled:z&&!u.pending,onClick:w,children:[o(J,{name:"plus",size:12})," ",u.pending?e("signin.pending"):e("local.add")]}),o(q,{pending:p.pending,disabled:z&&!p.pending,onClick:k,children:[o(J,{name:"logout",size:12})," ",e("local.signOut")]})]}),(g.error||u.error||p.error)&&o("div",{class:"fx-sub fx-sub--tight",children:[o(pe,{a:g}),o(pe,{a:u}),o(pe,{a:p})]})]})}function qm(e){try{return new URL(e).host}catch{return e}}function Vm(){let{t:e}=ae(),t=ue();return o("div",{class:"fx-page-foot",children:[o("button",{type:"button",class:"fx-link",disabled:t.pending,onClick:()=>void t.run(async()=>await no()?void 0:{error:{key:"err.openFailed"}}),children:[e("account.web.open")," ",o(J,{name:"external",size:12})]}),o("span",{class:"fx-muted",children:e("account.web.desc")}),o(pe,{a:t})]})}var ao=class extends Error{};async function Zl(e,t=256){if(e.size>20971520)throw new ao;let n=URL.createObjectURL(e);try{let r=new Image;await new Promise((g,u)=>{r.onload=()=>g(),r.onerror=()=>u(new Error("image decode failed")),r.src=n});let a=r.naturalWidth,i=r.naturalHeight;if(!a||!i)throw new Error("empty image");if(a*i>5e7)throw new ao;let s=Math.min(1,t/Math.max(a,i)),l=document.createElement("canvas");l.width=Math.max(1,Math.round(a*s)),l.height=Math.max(1,Math.round(i*s));let c=l.getContext("2d");if(!c)throw new Error("canvas unavailable");c.fillStyle="#fff",c.fillRect(0,0,l.width,l.height),c.drawImage(r,0,0,l.width,l.height);let d=l.toDataURL("image/jpeg",.85);if(d.length>262144)throw new ao;return d}finally{URL.revokeObjectURL(n)}}function Ql(e){let t=String(e||"").trim();if(!t)return"?";let n=Array.from(t)[0];return/[㐀-鿿]/.test(n)?n:Array.from(t).slice(0,2).join("").toUpperCase()}var ec=["cream","coral","teal","lavender"],tc=["auto","light","dark"],nc=["none","mist","contour","dots"],oc=["none","ring","pro"],rc=["early","streak","author","inviter","event"];var ac=e=>`/u/${encodeURIComponent(e)}`,ti=e=>!!e&&e.toLowerCase()!=="free";function ni(e,t){let n={...e.settings,...t};return{...e,settings:n,bio:n.bio,links:n.links,skin:n.skin,mode:n.mode,cover:n.cover,frame:n.frame==="pro"&&!ti(e.tier)?"none":n.frame,modules:n.modules.filter(r=>r.show).map(r=>({id:r.id}))}}function oi(e,t,n){let r=e.findIndex(s=>s.id===t),a=r+n;if(r<0||a<0||a>=e.length)return e;let i=e.slice();return[i[r],i[a]]=[i[a],i[r]],i}function ic(e){let t=e.trim();if(!t)return null;let n=/^[a-z][a-z0-9+.-]*:/i.test(t)?t:`https://${t}`,r;try{r=new URL(n)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:"||!r.hostname.includes("."))return null;let a=r.toString();return a.length<=200?a:null}function ri(e){return e.replace(/^https?:\/\//i,"").replace(/^www\./i,"").replace(/\/$/,"")}function sc(e,t){let n=t==="zh"?[[1e8,"\u4EBF"],[1e4,"\u4E07"]]:[[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[r,a]of n)if(e>=r){let i=e/r;return{value:i>=100?String(Math.round(i)):String(Math.round(i*10)/10),unit:a}}return{value:Math.round(e).toLocaleString("en-US"),unit:""}}var lc=e=>e==="zh"?"zh-CN":"en-US";function cc(e,t){let[n,r]=e.split("-").map(Number);if(!n||!r)return[];let a=new Intl.DateTimeFormat(lc(t),{month:"short",timeZone:"UTC"});return Array.from({length:12},(i,s)=>a.format(new Date(Date.UTC(n,r-12+s,1))))}function dc(e,t){let[n,r]=e.split("-").map(Number);return!n||!r?"":new Intl.DateTimeFormat(lc(t),{year:"numeric",month:"short",timeZone:"UTC"}).format(new Date(Date.UTC(n,r-1,1)))}function uc([e,t]){let n=r=>`${String((r%24+24)%24).padStart(2,"0")}:00`;return`${n(e)} \u2013 ${n(t)}`}function pc(e){let t=0,n=Promise.resolve(),r=()=>{let a=t;return e.read().then(i=>{a===t&&e.apply(i)})};return{read:r,write(a){let i=++t,s=n.then(a).then(l=>{i===t&&e.apply(l)});return n=s.catch(()=>i===t?r().catch(()=>{}):void 0),s}}}var hc={skill:{key:"profile.work.skill",icon:"sparkles"},agent:{key:"profile.work.agent",icon:"bot"},plugin:{key:"profile.work.plugin",icon:"box"},space:{key:"profile.work.space",icon:"grid"},theme:{key:"profile.work.theme",icon:"palette"},"amadeus-plugin":{key:"profile.work.note",icon:"note"},webapp:{key:"profile.work.webapp",icon:"globe"}},mc={early:"sprout",streak:"flame",author:"box",inviter:"gift",event:"trophy"},gc={plus:"Plus",pro:"Pro"},ii=e=>!!e&&/^https?:\/\//i.test(e);function si(e){if(!ii(e))return;let t=se().openExternal;t?t(e).catch(()=>{}):window.open(e,"_blank","noopener")}async function Gm(){let e=se().cloudInvoke;if(!e)return null;try{let t=await e("profile:publicOrigin");return t?.ok&&typeof t.origin=="string"&&/^https?:\/\/[^/]+$/i.test(t.origin)?t.origin:null}catch{return null}}async function Km(e,t,n){let r=await Q(e,{method:t,body:n});if(!r.ok)throw r;if(!r.data?.profile)throw{ok:!1,status:r.status,code:null,detail:null,transport:"bad_response"};return r.data.profile}var bc=e=>e&&typeof e=="object"&&e.ok===!1?Bt(e):{raw:String(e?.message||e)};function vc(){let{t:e}=ae(),t=Oe(async()=>{let[r,a,i]=await Promise.all([Q("/profile/me"),Q("/auth/me"),Gm()]);return a.ok?r.ok?r.data?.profile?{ok:!0,status:r.status,data:{profile:r.data.profile,me:a.data,origin:i}}:{ok:!0,status:404,data:null}:r.status===404?{ok:!0,status:404,data:null}:r:a});if(t.state==="loading")return o(Ie,{panels:2,rows:3});if(t.state==="signedOut")return o(Be,{});if(t.state==="error")return o($e,{error:t.error,onRetry:t.retry});if(!t.data)return o(ke,{icon:"user",title:e("page.profile"),children:o(ut,{children:e("profile.unsupported")})});let{update:n}=t;return o(Xm,{data:t.data,update:r=>n(a=>a&&r(a))})}function Xm(e){let{t}=ae(),n=qe(),{profile:r,me:a,origin:i}=e.data,[s,l]=A(null),[c,d]=A(null),[g,u]=A(!1),p=ce(e.update);p.current=e.update;let m=(E,O,I)=>n.current?Km(E,O,I):Promise.reject(new Error("unmounted")),f=Ot(()=>pc({apply:E=>p.current(O=>({...O,profile:E})),read:()=>m("/profile/me")}),[]),v=a.username||r.username,w={...r,username:v,nickname:a.nickname||null},k=r.settings.isPublic,z=i?`${i}${ac(v)}`:null,x=E=>{n.current&&d({tone:"error",m:bc(E)})},M=E=>{d(null),e.update(O=>({...O,profile:ni(O.profile,E)})),f.write(()=>m("/profile/me","PUT",E)).catch(x)},L=async E=>{e.update(O=>({...O,profile:ni(O.profile,{modules:O.profile.settings.modules.map(I=>({...I,public:E.find(ne=>ne.id===I.id)?.public??I.public}))})})),await f.write(()=>m("/profile/me/visibility","POST",{public:!0,modules:E})),n.current&&(l(null),d({tone:"ok",m:{key:"profile.nowPublic"}}))},H=async()=>{u(!0),d(null);try{await f.write(()=>m("/profile/me/visibility","POST",{public:!1})),n.current&&d({tone:"ok",m:{key:"profile.nowPrivate"}})}catch(E){x(E)}finally{n.current&&u(!1)}},V=ce(Promise.resolve()),ee=(E,O)=>{let I=V.current.then(async()=>{if(!n.current)return;let ne=await Q("/settings",{method:"PUT",body:E});if(n.current){if(!ne.ok)return d({tone:"error",m:Bt(ne)});p.current(b=>({...b,me:{...b.me,...E}})),d({tone:"ok",m:{key:O}})}});return V.current=I,I},te=async E=>{d(null);let O;try{O=await Zl(E)}catch(I){return d({tone:"error",m:{key:I instanceof ao?"err.avatarTooLarge":"err.avatarInvalid"}})}await ee({avatar:O},"account.avatar.saved")},S=E=>{d(null),l(O=>O===E?null:E)};return o("div",{class:"fx-pf-page",children:[o(ke,{icon:k?"globe":"lock",title:t(k?"profile.state.public":"profile.state.private"),desc:t(k?"profile.state.publicDesc":"profile.state.privateDesc"),actions:o(N,{children:[o(q,{onClick:()=>S("deco"),children:[o(J,{name:"palette",size:12})," ",t("profile.decorate")]}),k?o(q,{pending:g,onClick:()=>void H(),children:[o(J,{name:"lock",size:12})," ",t("profile.makePrivate")]}):o(q,{variant:"primary",onClick:()=>S("publish"),children:[o(J,{name:"globe",size:12})," ",t("profile.publish")]})]}),children:[k&&z&&o(Ve,{label:t("profile.address"),desc:z.replace(/^https?:\/\//i,""),children:[o(_t,{text:z,label:t("profile.copyLink")}),o(q,{onClick:()=>si(z),children:[o(J,{name:"external",size:12})," ",t("profile.openPublic")]})]}),s==="publish"&&!k&&o(Jm,{profile:r,url:z,submit:L,onClose:()=>l(null)}),c&&o(Me,{class:"fx-sub--tight",children:o("div",{class:`fx-msg ${c.tone==="ok"?"is-ok":"is-error"}`,role:c.tone==="ok"?"status":"alert",children:Wt(c.m,t)})})]}),o("div",{class:"fx-pf-home","data-deco":s==="deco"?"":void 0,children:[o("div",{class:"fx-pf-root",children:o(eg,{view:w,avatar:a.avatar||null,pinned:r.settings.pinned,owner:{onAvatar:E=>void te(E),onNickname:E=>{d(null),ee({nickname:E},"account.nickname.saved")},onBio:E=>M({bio:E}),onLinks:E=>M({links:E}),onPinned:E=>M({pinned:E}),onInvalidLink:()=>d({tone:"error",m:{key:"profile.linkInvalid"}})}})}),s==="deco"&&o(Ym,{profile:r,onChange:M,onClose:()=>l(null)})]})]})}function Jm(e){let{t}=ae(),n=qe(),{profile:r}=e,[a,i]=A({}),s=r.settings.modules.filter(m=>m.show).map(m=>({...m,public:a[m.id]??m.public})),[l,c]=A(!1),[d,g]=A(null),u=r.canPublish?null:r.publishBlockedReason||"publish_blocked";if(u)return o(Me,{children:[o(de,{children:t(u==="machine_username"?"profile.blocked.machineUsername":"profile.blocked.publishBlocked")}),o("div",{class:"fx-inline fx-pf-foot",children:[u==="machine_username"&&o(q,{variant:"primary",onClick:()=>void no("profile"),children:[t("profile.goRename")," ",o(J,{name:"external",size:12})]}),o(q,{onClick:e.onClose,children:t("common.cancel")})]})]});let p=async()=>{c(!0),g(null);try{await e.submit(s.map(({id:m,public:f})=>({id:m,public:f})))}catch(m){if(!n.current)return;g(bc(m)),c(!1)}};return o(Me,{children:[e.url&&o("div",{class:"fx-pf-url",children:[o(J,{name:"globe",size:14}),o("span",{children:e.url.replace(/^https?:\/\//i,"")})]}),o(de,{children:t("profile.publishDesc")}),o("div",{class:"fx-pf-checks",children:s.map(m=>o("div",{class:"fx-pf-check",children:[o("div",{children:[t(`profile.mod.${m.id}`),o("small",{children:t(`profile.modDesc.${m.id}`)})]}),o(Qt,{checked:m.public,disabled:l,label:`${t(`profile.mod.${m.id}`)} \xB7 ${t("profile.col.public")}`,onChange:f=>i(v=>({...v,[m.id]:f}))})]},m.id))}),o(de,{children:t("profile.publishNever")}),d&&o("div",{class:"fx-msg is-error",role:"alert",children:Wt(d,t)}),o("div",{class:"fx-inline fx-pf-foot",children:[o(q,{variant:"primary",pending:l,onClick:()=>void p(),children:t("profile.publishConfirm")}),o(q,{disabled:l,onClick:e.onClose,children:t("common.cancel")})]})]})}function Ym(e){let{t}=ae(),n=e.profile.settings,r=ti(e.profile.tier),a=(s,l)=>e.onChange({modules:n.modules.map(c=>c.id===s?{...c,...l}:c)}),i=s=>o("span",{class:"fx-pf-thumb",children:s});return o("aside",{class:"fx-pf-deco","aria-label":t("profile.decorate"),children:o(ke,{icon:"palette",title:t("profile.decorate"),actions:o(q,{onClick:e.onClose,children:t("common.done")}),children:o("div",{class:"fx-pf-deco-body",children:[o("h4",{children:t("profile.deco.cover")}),o("div",{class:"fx-pf-opts",children:nc.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.cover===s,onClick:()=>e.onChange({cover:s}),children:[i(o("span",{class:`fx-pf-cv-thumb fx-pf-cv-${s}`})),t(`profile.cover.${s}`)]},s))}),o("h4",{children:t("profile.deco.frame")}),o("div",{class:"fx-pf-opts",children:oc.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.frame===s,disabled:s==="pro"&&!r,title:s==="pro"&&!r?t("profile.frameProHint"):void 0,onClick:()=>e.onChange({frame:s}),children:[i(o("span",{class:`fx-pf-fr-demo fx-pf-fr-${s}`,children:o("span",{class:"fx-pf-av"})})),t(`profile.frame.${s}`)]},s))}),!r&&o(de,{children:t("profile.frameProHint")}),o("h4",{children:t("profile.deco.modules")}),o("div",{class:"fx-pf-mod-head","aria-hidden":"true",children:[o("span",{children:t("profile.col.show")}),o("span",{children:t("profile.col.public")})]}),n.modules.map((s,l)=>o("div",{class:"fx-pf-mod",children:[o("span",{children:t(`profile.mod.${s.id}`)}),o("button",{type:"button",class:"fx-icon-btn",disabled:l===0,title:t("profile.moveUp"),"aria-label":`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.moveUp")}`,onClick:()=>e.onChange({modules:oi(n.modules,s.id,-1)}),children:o(J,{name:"up",size:13})}),o("button",{type:"button",class:"fx-icon-btn",disabled:l===n.modules.length-1,title:t("profile.moveDown"),"aria-label":`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.moveDown")}`,onClick:()=>e.onChange({modules:oi(n.modules,s.id,1)}),children:o(J,{name:"down",size:13})}),o(Qt,{checked:s.show,label:`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.col.show")}`,onChange:c=>a(s.id,{show:c})}),o(Qt,{checked:s.show&&s.public,disabled:!s.show,label:`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.col.public")}`,onChange:c=>a(s.id,{public:c})})]},s.id)),o(de,{children:t("profile.modulesHint")}),o("h4",{children:t("profile.deco.skin")}),o("div",{class:"fx-pf-opts",children:ec.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.skin===s,onClick:()=>e.onChange({skin:s}),children:[i(o("span",{class:"fx-pf-swatch","data-skin":s})),t(`profile.skin.${s}`)]},s))}),o("h4",{children:t("profile.deco.mode")}),o(St,{value:n.mode,label:t("profile.deco.mode"),onChange:s=>e.onChange({mode:s}),options:tc.map(s=>({value:s,label:t(`profile.mode.${s}`)}))}),o(de,{children:t("profile.deco.publicHint")})]})})})}function ai(e){let[t,n]=A(null),r=ce(!1),a=ce(null),i=t!==null;Yo(()=>{i&&a.current?.focus()},[i]);let s=e.class?` ${e.class}`:"";if(t===null)return o("button",{type:"button",class:`fx-pf-ed${s}${e.value?"":" is-empty"}`,title:e.label,"aria-label":e.label,onClick:()=>{r.current=!1,n(e.value)},children:[o("span",{children:e.value||e.placeholder}),o(J,{name:e.value?"pencil":"plus",size:12})]});let l=()=>{let c=t.trim();n(null),!r.current&&c!==e.value&&e.onSave(c)};return o("span",{class:`fx-pf-ed-on${s}`,children:[o("input",{ref:a,class:"fx-input",type:"text",value:t,maxLength:e.maxLength,placeholder:e.placeholder,"aria-label":e.label,onInput:c=>n(c.currentTarget.value),onBlur:l,onKeyDown:c=>{c.isComposing||(c.key==="Enter"?c.currentTarget.blur():c.key==="Escape"&&(c.preventDefault(),r.current=!0,c.currentTarget.blur()))}}),e.counter&&o("small",{children:[Array.from(t).length,"/",e.maxLength]})]})}function Hr(e){return o("section",{class:"fx-pf-sec",style:{order:e.order},children:[o("div",{class:"fx-pf-sec-h",children:[o("h3",{children:e.title}),e.action]}),e.children]})}function Zm(e){let{t}=ae(),{work:n}=e,r=hc[n.type],a=o(N,{children:[o("div",{class:"fx-pf-work-top",children:[o("span",{class:"fx-pf-work-ico",children:o(J,{name:r?.icon??"box",size:17})}),o("div",{children:[o("div",{class:"fx-pf-work-name",children:n.name}),o("div",{class:"fx-pf-work-type",children:r?t(r.key):n.type})]})]}),o("p",{children:n.summary}),(n.countKind!=="visits"||n.count>0)&&o("div",{class:"fx-pf-work-foot",children:[o(J,{name:n.countKind==="visits"?"eye":"download",size:12}),t(n.countKind==="visits"?"profile.workVisits":"profile.workInstalls",{n:n.count.toLocaleString("en-US")})]})]}),i=n.url;return ii(i)?o("a",{class:"fx-pf-work",href:i,onClick:s=>{s.preventDefault(),si(i)},children:a}):o("article",{class:"fx-pf-work",children:a})}function Qm(e){let{t}=ae(),n=qe(),[r,a]=A(null),[i,s]=A(()=>e.pinned.map(g=>`${g.kind}:${g.id}`));oe(()=>{Q("/profile/me/works").then(g=>{n.current&&a(g.ok?g.data?.works??[]:"failed")})},[]);let l=g=>`${g.kind}:${g.id}`,c=g=>s(u=>u.includes(g)?u.filter(p=>p!==g):[...u,g]);if(r===null)return o("div",{class:"fx-pf-card fx-pf-empty",children:[o(wo,{})," ",t("common.loading")]});if(r==="failed"||r.length===0)return o("div",{class:"fx-pf-card fx-pf-empty",children:[o("p",{children:t(r==="failed"?"common.loadFailed":"profile.worksNone")}),o("div",{class:"fx-inline fx-pf-foot",children:[r!=="failed"&&o(q,{variant:"primary",onClick:()=>void no("submission"),children:[t("profile.goSubmit")," ",o(J,{name:"external",size:12})]}),o(q,{onClick:e.onClose,children:t("common.cancel")})]})]});let d=()=>{let g=new Map(r.map(u=>[l(u),u]));e.onSave(i.flatMap(u=>{let p=g.get(u);return p?[{kind:p.kind,id:p.id}]:[]})),e.onClose()};return o("div",{class:"fx-pf-card fx-pf-picker",children:[r.map(g=>{let u=l(g),p=i.includes(u),m=hc[g.type];return o("button",{type:"button",class:"fx-pf-pick","aria-pressed":p,disabled:!p&&i.length>=6,onClick:()=>c(u),children:[o("div",{children:[g.name,o("small",{children:[m?t(m.key):g.type," \xB7 ",g.summary]})]}),p&&o(J,{name:"check",size:15})]},u)}),o("div",{class:"fx-inline fx-pf-foot",children:[o("span",{class:"fx-grow",children:i.length?t("profile.worksPicked",{n:i.length,max:6}):t("profile.worksAuto")}),o(q,{variant:"primary",onClick:d,children:t("common.done")}),o(q,{onClick:e.onClose,children:t("common.cancel")})]})]})}function eg(e){let{t,locale:n}=ae(),{view:r,owner:a}=e,i=ce(null),[s,l]=A(!1),c=r.nickname||r.username,d=(r.tier||"free").toLowerCase(),g=r.modules.map(b=>b.id),u=b=>g.indexOf(b),p=b=>u(b)>=0,m=r.stats,f=m?sc(m.totalTokens,n):null,v=t("profile.unit.days"),w=m&&f?[[f.value,f.unit,t("profile.stat.tokens")],[String(m.activeDays),v,t("profile.stat.activeDays")],[String(m.longestStreak),v,t("profile.stat.longest")],[String(m.currentStreak),v,t("profile.stat.current")],[m.installs.toLocaleString("en-US"),"",t("profile.stat.installs")]]:[],k=m&&p("stats")&&o("div",{class:"fx-pf-stats",style:{order:u("stats")},children:w.map(([b,T,R])=>o("div",{class:"fx-pf-stat",children:[o("b",{children:[b,T&&o("small",{children:T})]}),o("span",{children:R})]},R))},"stats"),z=g[0]==="stats",x=r.works||[],M=p("works")&&o(Hr,{order:u("works"),title:t("profile.works"),action:!s&&o("button",{type:"button",class:"fx-link",onClick:()=>l(!0),children:t("profile.worksPick")}),children:s?o(Qm,{pinned:e.pinned,onSave:a.onPinned,onClose:()=>l(!1)}):x.length?o("div",{class:"fx-pf-works",children:x.map(b=>o(Zm,{work:b},`${b.kind}:${b.id}`))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.worksEmpty")})},"works"),L=r.activity,H=p("activity")&&L&&o(Hr,{order:u("activity"),title:t("profile.activity"),children:o("div",{class:"fx-pf-card",children:[o("div",{class:"fx-pf-hm",role:"img","aria-label":t("profile.activityDays",{n:L.activeDays}),children:L.levels.map((b,T)=>o("i",{class:b?`l${b}`:void 0},T))}),o("div",{class:"fx-pf-hm-months","aria-hidden":"true",children:cc(L.end,n).map((b,T)=>o("span",{children:b},T))}),o("div",{class:"fx-pf-hm-foot",children:[o("span",{children:t("profile.activityDays",{n:L.activeDays})}),o("span",{class:"fx-pf-hm-legend","aria-hidden":"true",children:[t("profile.less"),o("i",{}),o("i",{class:"l1"}),o("i",{class:"l2"}),o("i",{class:"l3"}),o("i",{class:"l4"}),t("profile.more")]})]})]})},"activity"),V=(r.badges||[]).filter(b=>rc.includes(b.id)),ee=p("badges")&&o(Hr,{order:u("badges"),title:t("profile.badges"),children:V.length?o("div",{class:"fx-pf-card fx-pf-rows",children:V.map(b=>o("div",{class:"fx-pf-brow",children:[o("span",{class:"fx-pf-badge",children:o(J,{name:mc[b.id],size:14})}),o("div",{children:[o("b",{children:t(`profile.badge.${b.id}`)}),o("span",{children:t(`profile.badgeSub.${b.id}`,{value:b.value??""})})]})]},b.id))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.badgesEmpty")})},"badges"),te=r.insights,S=[];te?.topModel&&S.push([t("profile.insightModel"),te.topModel]),te?.activeHours&&S.push([t("profile.insightHours"),uc(te.activeHours)]);let E=p("insights")&&o(Hr,{order:u("insights"),title:t("profile.insights"),children:S.length?o("div",{class:"fx-pf-card fx-pf-rows",children:S.map(([b,T])=>o("div",{class:"fx-pf-row",children:[o("span",{children:b}),o("b",{children:T})]},b))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.insightsEmpty")})},"insights"),O=[!z&&k,M,H].filter(Boolean),I=[ee,E].filter(Boolean),ne=b=>{if(!b)return;let T=ic(b);if(!T)return a.onInvalidLink();r.links.includes(T)||a.onLinks([...r.links,T])};return o("div",{class:"fx-pf","data-cover":r.cover,"data-frame":r.frame,children:[o("div",{class:"fx-pf-cover"}),o("div",{class:"fx-pf-id",children:[o("button",{type:"button",class:"fx-pf-avatar",title:t("account.avatar.change"),"aria-label":t("account.avatar.change"),onClick:()=>i.current?.click(),children:[o("span",{class:"fx-pf-av",children:e.avatar?o("img",{src:e.avatar,alt:""}):o("span",{class:"fx-pf-av-fallback",children:Ql(c)})}),o("span",{class:"fx-pf-av-mask",children:o(J,{name:"pencil",size:18})})]}),o("input",{ref:i,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif,image/avif",hidden:!0,onChange:b=>{let T=b.currentTarget,R=T.files?.[0];T.value="",R&&a.onAvatar(R)}}),o("div",{class:"fx-pf-id-text",children:[o("div",{class:"fx-pf-name",children:[o(ai,{value:c,placeholder:r.username,maxLength:40,label:t("account.nickname.edit"),onSave:b=>{b&&a.onNickname(b)}}),gc[d]&&o("span",{class:`fx-tag${d==="pro"?" fx-pf-tier-pro":" fx-tag--accent"}`,children:gc[d]})]}),o("div",{class:"fx-pf-handle",children:["@",r.username]})]}),V.length>0&&p("badges")&&o("div",{class:"fx-pf-badges",children:V.map(b=>o("span",{class:"fx-pf-badge",title:t(`profile.badge.${b.id}`),children:o(J,{name:mc[b.id],size:14})},b.id))})]}),o("div",{class:"fx-pf-sub",children:[o(ai,{class:"fx-pf-bio",value:r.bio,placeholder:t("profile.bioPlaceholder"),maxLength:80,label:t("profile.bio"),counter:!0,onSave:a.onBio}),o("div",{class:"fx-pf-meta",children:[r.joinedMonth&&o("span",{children:[o(J,{name:"calendar",size:13}),t("profile.joined",{date:dc(r.joinedMonth,n)})]}),r.links.map(b=>o("span",{children:[o(J,{name:"link",size:13}),ii(b)?o("a",{href:b,onClick:T=>{T.preventDefault(),si(b)},children:ri(b)}):o("span",{children:ri(b)}),o("button",{type:"button",class:"fx-pf-x",title:t("profile.linkRemove"),"aria-label":t("profile.linkRemove"),onClick:()=>a.onLinks(r.links.filter(T=>T!==b)),children:o(J,{name:"x",size:11})})]},b)),r.links.length<2&&o(ai,{value:"",placeholder:t("profile.linkAdd"),maxLength:200,label:t("profile.linkAdd"),onSave:ne},r.links.length)]})]}),z&&k,o("div",{class:"fx-pf-body","data-cols":O.length&&I.length?2:1,children:[o("div",{class:"fx-pf-main",children:O}),I.length>0&&o("div",{class:"fx-pf-side",children:I})]})]})}function yc(){let e=Oe(async()=>{let[t,n]=await Promise.all([Q("/membership/my"),Q("/features")]);return t.ok?{ok:!0,status:t.status,data:{membership:t.data?.membership??null,payment:!n.ok||n.data?.payment!==!1}}:t});return e.state==="loading"?o(Ie,{panels:1}):e.state==="signedOut"?null:o(tg,{membership:e.state==="ready"?e.data.membership:null,failed:e.state==="error",payment:e.state==="ready"&&e.data.payment,onRetry:e.state==="ready"?e.reload:e.retry})}function tg(e){let{t,locale:n}=ae(),r=ue(),a=e.membership&&(e.membership.status===void 0||e.membership.status==="active")?e.membership:null,i=Qo(a?.tier),s=i==="Free",l=s?"free":i.toLowerCase()==="pro"?"pro":"paid",c=()=>void r.run(async()=>await On("membership")?void 0:{error:{key:"err.openFailed"}});return o(ke,{icon:"card",title:t("member.title"),desc:t("member.desc"),actions:e.payment&&!e.failed?o(q,{variant:"primary",pending:r.pending,onClick:c,children:t(s?"member.upgrade":"member.renew")}):void 0,children:[!e.failed&&o("div",{class:"fx-member fx-block",children:[o("span",{class:`fx-tier fx-tier--${l}`,children:i}),o("div",{class:"fx-member-copy",children:[o("strong",{children:s?t("member.freeName"):a?.plan?.name||i}),o("span",{class:"fx-muted",children:s?t("member.freeHint"):a?.expiresAt?t("member.expires",{date:yn(a.expiresAt,n)}):t("member.noExpiry")})]})]}),e.failed&&o("div",{class:"fx-sub",children:o(de,{tone:"warn",children:[t("member.loadFailed")," ",o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}),r.error&&o("div",{class:"fx-sub fx-sub--tight",children:o(pe,{a:r})})]})}function Ce(e){if(typeof e=="number")return Number.isFinite(e)?e:null;if(typeof e=="string"&&e.trim()!==""){let t=Number(e);return Number.isFinite(t)?t:null}return null}function ng(e,t){let n=Ce(t);if(n===null||n<0)return null;if(n===0)return 0;let r=Math.max(0,Ce(e)??0);return Math.min(100,Math.max(0,Math.floor(r/n*100)))}var og=15;function io(e,t){let n=ng(e,t);if(n===null)return{unlimited:!0,pct:100,text:null,low:!1};let r=Math.max(0,Ce(e)??0),a=n===0&&r>0&&(Ce(t)??0)>0?"<1%":`${n}%`;return{unlimited:!1,pct:n,text:a,low:n<=og}}function qr(e,t){let n=Ce(t);if(n===null||n<=0)return null;let r=Ce(e);if(r===null)return null;let a=Math.max(0,r);if(a===0)return"0%";let i=a/n*100;if(i<.1)return"<0.1%";let s=Math.round(i*10)/10;return s<10?`${s}%`:`${Math.round(i).toLocaleString("en-US")}%`}var rg=e=>e.ok?"ok":e.status===404?"hidden":"failed";function kc(){return o(zc,{section:"points"})}function wc(){return o(N,{children:[o(yc,{}),o(zc,{section:"quota"})]})}function zc({section:e}){let t=Oe(async()=>{let[l,c,d,g]=await Promise.all([Q("/token-quota/my"),Q("/credits/balance"),Q("/features"),Q("/invite/my-code")]);return l.ok?{ok:!0,status:l.status,data:{quota:l.data??{},balance:c.ok?Ce(c.data?.balance):null,balanceFailed:!c.ok,features:d.ok&&d.data&&typeof d.data=="object"?d.data:{},invite:g.ok?g.data:null,inviteState:rg(g)}}:l});if(t.state==="loading")return o(Ie,{panels:3,rows:2});if(t.state==="signedOut")return o(Be,{});if(t.state==="error")return o($e,{error:t.error,onRetry:t.retry});let{data:n,update:r}=t,a=n.quota.background,i=n.features.redemption_codes!==!1,s=n.features.payment!==!1;return o(N,{children:[e==="quota"&&o(N,{children:[o(ig,{data:n,update:r,onFailed:t.reload}),a?.modelId?o(dg,{bg:a,update:r}):null]}),e==="points"&&o(lg,{data:n,payment:s,onRetry:t.reload}),e==="points"&&(n.inviteState!=="hidden"||i)&&o(ug,{data:n,update:r,redeemEnabled:i,onRedeemed:t.reload})]})}var xc=e=>({dailyLimit:e.dailyLimit,dailyRemaining:e.dailyRemaining,weeklyLimit:e.weeklyLimit,weeklyRemaining:e.weeklyRemaining});function ag(e,t){if(typeof e?.showResetCardCeremony!="function")return!1;try{return e.showResetCardCeremony(t),!0}catch{return!1}}function ig(e){let{t,locale:n,ctx:r}=ae(),a=e.data.quota,i=io(a.dailyRemaining,a.dailyLimit),s=io(a.weeklyRemaining,a.weeklyLimit),l=Ol(a.weeklyResetAt,n),c=Math.max(0,Ce(a.resetCards)??0),d=Ce(a.resetCardPricePoints)??100,g=ue(),u=ue(),[p,m]=A(null),[f,v]=A("1"),w=/^\d+$/.test(f.trim())?Number(f.trim()):NaN,k=Number.isInteger(w)&&w>=1&&w<=50,z=k?w*d:null,x=e.data.balance,M=z!==null&&x!==null&&x<z,L=()=>void g.run(async()=>{let ee={daily:i,weekly:s},te=xc(a);m(null);let S=se(),E=await Dr(S.accountUseResetCard?()=>S.accountUseResetCard("both"):null,()=>Q("/token-quota/reset-card/use",{method:"POST",body:{type:"both"}}));if(!E.ok)return e.onFailed(),De(E);let O=E.data?.quota,I=Ce(E.data?.resetCards);return e.update(ne=>({...ne,quota:{...ne.quota,...O??{},resetCards:I??ne.quota.resetCards}})),O&&!ag(r.app,{before:te,after:xc(O),remainingCards:I??void 0})&&m({before:ee,after:{daily:io(O.dailyRemaining,O.dailyLimit),weekly:io(O.weeklyRemaining,O.weeklyLimit)},cards:I}),{success:{key:"card.used"}}}),H=()=>void u.run(async()=>{if(!k)return{error:{key:"err.invalidCount"}};let ee=await Q("/points/exchange-reset-cards",{method:"POST",body:{count:w,expectedPricePerCard:d}});return ee.ok?(e.update(te=>({...te,quota:{...te.quota,resetCards:Ce(ee.data?.resetCards)??te.quota.resetCards},balance:Ce(ee.data?.newPointsBalance)??te.balance})),v("1"),{success:{key:"card.exchanged",vars:{n:Ce(ee.data?.cardsGranted)??w}}}):(e.onFailed(),De(ee))}),V=ee=>ee.unlimited?t("common.unlimited"):ee.text;return o(ke,{icon:"gauge",title:t("quota.ai.title"),desc:t("quota.ai.desc"),children:[o("div",{class:"fx-quota-list fx-block",children:[o(tr,{label:t("common.today"),display:i,note:i.unlimited?null:t("quota.resetDaily")}),o(tr,{label:t("common.thisWeek"),display:s,note:s.unlimited||!l?null:t("quota.resetWeekly",{date:l})})]}),o(Ve,{label:t("card.title"),desc:t("card.desc"),children:[o("span",{class:"fx-value","data-testid":"reset-card-count",children:t("card.owned",{n:c})}),o(Kt,{label:t("card.use"),confirmLabel:t("card.useConfirm"),pending:g.pending,disabled:c<=0,onConfirm:L})]}),c<=0&&!g.success&&o(Me,{children:o(de,{children:t("card.noneHint")})}),(g.error||g.success)&&o(Me,{children:[o(pe,{a:g}),g.success&&p&&o("div",{class:"fx-ceremony",role:"status",children:[o("span",{children:[t("common.today")," ",o("b",{children:V(p.before.daily)})," \u2192 ",o("b",{children:V(p.after.daily)})]}),o("span",{children:[t("common.thisWeek")," ",o("b",{children:V(p.before.weekly)})," \u2192 ",o("b",{children:V(p.after.weekly)})]}),p.cards!==null&&o("span",{class:"fx-muted",children:t("card.left",{n:p.cards})})]})]}),o(Ve,{label:t("card.exchange"),desc:t("card.price",{price:Pe(d,n)}),class:"fx-row--wide",children:[o("input",{class:"fx-input fx-input--count",type:"number",inputMode:"numeric",min:1,max:50,step:1,value:f,"aria-label":t("card.count"),onInput:ee=>{v(ee.currentTarget.value),u.clear()}}),o("span",{class:"fx-muted fx-cost",children:z!==null?t("card.cost",{cost:Pe(z,n)}):t("card.countHint")}),o(Kt,{label:t("card.exchangeButton"),confirmLabel:t("card.exchangeConfirm",{cost:z!==null?Pe(z,n):"\u2014"}),pending:u.pending,disabled:!k||M,onConfirm:H})]}),(M||u.error||u.success)&&o(Me,{children:[M&&!u.error&&o(de,{tone:"warn",children:t("err.insufficientPoints")}),o(pe,{a:u})]})]})}function sg(e,t,n){let r=ue(),[a,i]=A(null);return{checked:a??e,toggle:l=>{i(l),r.run(async()=>{let c=await t(l);if(i(null),!c.ok)return De(c);n(l)})},action:r}}function lg(e){let{t,locale:n}=ae(),r=ue(),a=()=>void r.run(async()=>await On("credits")?void 0:{error:{key:"err.openFailed"}});return o(ke,{icon:"coins",title:t("points.title"),desc:t("points.desc"),actions:e.payment?o(q,{variant:"primary",pending:r.pending,onClick:a,children:t("points.recharge")}):void 0,children:[o(Ve,{label:t("points.balance"),children:e.data.balance!==null?o("span",{class:"fx-big","data-testid":"points-balance",children:Pe(e.data.balance,n)}):o("span",{class:"fx-value is-empty",children:[t("points.balanceFailed")," ",o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}),r.error&&o(Me,{children:o(pe,{a:r})})]})}var cg=[5,10,20];function dg(e){let{t}=ae(),{bg:n}=e,r=io(n.dailyRemaining,n.dailyLimit),a=io(n.weeklyRemaining,n.weeklyLimit),i=ue(),[s,l]=A(null),c=sg(!!n.autoMain,g=>{let u=se();return Dr(u.accountBgAutoMain?()=>u.accountBgAutoMain(g):null,()=>Q("/token-quota/background/auto-main",{method:"POST",body:{enabled:g}}))},g=>e.update(u=>({...u,quota:{...u.quota,background:{...u.quota.background??{},autoMain:g}}}))),d=g=>{l(g),i.run(async()=>{let u=se(),p=await Dr(u.accountBgConvert?()=>u.accountBgConvert(g):null,()=>Q("/token-quota/background/convert",{method:"POST",body:{percent:g}}));if(l(null),!p.ok)return De(p);let m=p.data?.quota;return m&&e.update(v=>({...v,quota:{...v.quota,...m,resetCards:v.quota.resetCards,resetCardPricePoints:v.quota.resetCardPricePoints}})),{success:{key:"bg.converted",vars:{pct:g}}}})};return o(ke,{icon:"clock",title:t("bg.title"),desc:t("bg.desc"),children:[o("div",{class:"fx-quota-list fx-block",children:[o(tr,{label:t("common.today"),display:r}),o(tr,{label:t("common.thisWeek"),display:a})]}),o(Ve,{label:t("bg.autoMain"),desc:t("bg.autoMainDesc"),children:o(Qt,{checked:c.checked,disabled:c.action.pending,label:t("bg.autoMain"),onChange:c.toggle})}),o(Ve,{label:t("bg.convert"),desc:t("bg.convertDesc"),class:"fx-row--wide",children:cg.map(g=>o(Kt,{label:`${g}%`,confirmLabel:t("bg.convertConfirm",{pct:g}),pending:i.pending&&s===g,disabled:i.pending&&s!==g,onConfirm:()=>d(g)},g))}),(i.error||i.success||c.action.error)&&o(Me,{children:[o(pe,{a:c.action}),o(pe,{a:i})]})]})}function ug(e){let{t,locale:n}=ae(),{invite:r,inviteState:a}=e.data,[i,s]=A(null),[l,c]=A(""),[d,g]=A(""),u=ue(),p=ue(),m=ue();oe(()=>{let z=!0;return se().authStatus?.().then(x=>{z&&s(x?.cloudUrl?x.cloudUrl.replace(/\/+$/,""):null)}).catch(()=>{}),()=>{z=!1}},[]);let f=async()=>{let z=await Q("/invite/my-code");return e.update(x=>({...x,invite:z.ok?z.data:x.invite,inviteState:z.ok?"ok":z.status===404?"hidden":x.inviteState})),z},v=()=>void u.run(async()=>{let z=l.trim();if(!z)return{error:{key:"err.inviteEmpty"}};let x=await Q("/invite/claim",{method:"POST",body:{code:z}});return x.ok?(c(""),f(),{success:{key:"invite.claimed"}}):De(x)}),w=()=>void p.run(async()=>{let z=d.trim();if(!z)return{error:{key:"err.redeemEmpty"}};let x=await Q("/redemption/redeem",{method:"POST",body:{code:z}});if(!x.ok)return De(x);g(""),e.onRedeemed();let M=[],L=Ce(x.data?.creditsAmount);L&&M.push(t("redeem.gotPoints",{n:Pe(L,n)})),x.data?.membershipPlanId&&M.push(t("redeem.gotMembership"));for(let H of Array.isArray(x.data?.items)?x.data.items:[]){let V=(n==="zh"?H?.label?.zh:H?.label?.en)||H?.label?.zh||H?.label?.en||H?.kind;V&&M.push(V)}return{success:M.length?{key:"redeem.successWith",vars:{what:M.join(n==="zh"?"\u3001":", ")}}:{key:"redeem.success"}}}),k=r?.code&&i?`${i}/auth?invite=${encodeURIComponent(r.code)}`:"";return o(ke,{icon:"gift",title:t("invite.title"),desc:t("invite.desc"),children:[a==="ok"&&r?.code&&o(Ve,{label:t("invite.myCode"),desc:t("invite.count",{n:Pe(Ce(r.invitedCount)??0,n)}),class:"fx-row--wide",children:[o("code",{class:"fx-code","data-testid":"invite-code",children:r.code}),o(_t,{text:r.code,label:t("invite.copyCode")}),o(_t,{text:k,label:t("invite.copyLink"),disabled:!k})]}),a==="failed"&&o(Me,{children:o(de,{tone:"warn",children:[t("invite.loadFailed")," ",o("button",{type:"button",class:"fx-link",disabled:m.pending,onClick:()=>void m.run(async()=>{await f()}),children:t("common.retry")})]})}),a==="ok"&&r?.claim?.eligible&&o(Ve,{label:t("invite.claim"),desc:t("invite.claimDesc"),class:"fx-row--wide",children:o("form",{class:"fx-inline",onSubmit:z=>{z.preventDefault(),v()},children:[o("input",{class:"fx-input",value:l,placeholder:t("invite.claimPlaceholder"),"aria-label":t("invite.claim"),onInput:z=>c(z.currentTarget.value)}),o(q,{submit:!0,pending:u.pending,children:t("invite.claimSubmit")})]})}),(u.error||u.success)&&o(Me,{children:o(pe,{a:u})}),e.redeemEnabled&&o(Ve,{label:t("redeem.title"),desc:t("redeem.desc"),class:"fx-row--wide",children:o("form",{class:"fx-inline",onSubmit:z=>{z.preventDefault(),w()},children:[o("input",{class:"fx-input",value:d,placeholder:t("redeem.placeholder"),"aria-label":t("redeem.title"),onInput:z=>g(z.currentTarget.value)}),o(q,{submit:!0,pending:p.pending,children:t("redeem.submit")})]})}),(p.error||p.success)&&o(Me,{children:o(pe,{a:p})})]})}function pg(e){let t=[],n,r=new Map;for(let a of e)if(a.itemType==="reset_card")n||(n={id:"reset_card",items:[],resetCard:!0},t.push(n)),n.items.push(a);else if(a.itemType==="custom_item"&&a.itemDefinition?.stackable){let i=`${a.productId||a.id}:${JSON.stringify(a.itemDefinition)}`,s=r.get(i);s||(s={id:`custom:${i}`,items:[],resetCard:!1},r.set(i,s),t.push(s)),s.items.push(a)}else t.push({id:a.id,items:[a],resetCard:!1});return t}function Sc(){let e=Oe(()=>Q("/shop/inventory"));return e.state==="loading"?o(Ie,{panels:1,rows:4}):e.state==="signedOut"?o(Be,{}):e.state==="error"?o($e,{error:e.error,onRetry:e.retry}):o(fg,{items:e.data??[],onRefresh:e.reload,onUsed:t=>{e.update(n=>n.filter(r=>r.id!==t.itemId)),e.reload()}})}function fg(e){let{t,locale:n,goTo:r}=ae(),[a,i]=A(null),[s,l]=A(null),c=qe(),d=pg(e.items),g=d.find(f=>f.id===a),u=Math.max(24,Math.ceil(d.length/6)*6)-d.length,p=f=>f.resetCard?t("card.title"):f.items[0].itemDefinition?.name[n]||f.items[0].displayName||t("backpack.item"),m=f=>{c.current&&(l(f),e.onUsed(f))};return o(ke,{icon:"backpack",title:t("page.backpack"),desc:t("backpack.desc"),actions:o(q,{onClick:e.onRefresh,children:[o(J,{name:"refresh",size:13}),t("backpack.refresh")]}),children:o("div",{class:"fx-backpack fx-block",children:[o("div",{class:"fx-backpack-summary",children:[o("span",{children:t("backpack.total",{n:Pe(e.items.length,n)})}),r&&o("button",{class:"fx-link",type:"button",onClick:()=>r("quota"),children:t("backpack.getCards")})]}),s&&o("div",{class:`fx-backpack-used fx-backpack-${s.animation}`,role:"status",children:[o(J,{name:"gift",size:20}),o("div",{children:[o("strong",{children:s.message[n]}),o("div",{children:s.effects.map(f=>_c(f,t,n)).join(" \xB7 ")})]})]},s.itemId),o("div",{class:"fx-backpack-layout",children:[o("div",{children:[o("div",{class:"fx-backpack-grid",role:"group","aria-label":t("backpack.grid"),children:[d.map(f=>{let v=p(f);return o("button",{type:"button",class:`fx-backpack-slot${f.resetCard?" is-card":""}`,"data-rarity":f.items[0].itemDefinition?.rarity,"aria-pressed":g?.id===f.id,"aria-label":t("backpack.slot",{name:v,n:f.items.length}),title:v,onClick:()=>i(f.id),children:[o("span",{class:"fx-backpack-icon",children:f.items[0].itemDefinition?.icon?o("span",{class:"fx-backpack-emoji",children:f.items[0].itemDefinition.icon}):o(J,{name:f.resetCard?"card":"gift",size:30})}),o("span",{class:"fx-backpack-name",children:v}),(f.resetCard||f.items[0].itemDefinition?.stackable)&&o("span",{class:"fx-backpack-count",children:["\xD7",Pe(f.items.length,n)]})]},f.id)}),Array.from({length:u},(f,v)=>o("div",{class:"fx-backpack-slot is-empty","aria-hidden":"true"},`empty:${v}`))]}),!d.length&&o("p",{class:"fx-backpack-empty",children:t("backpack.empty")})]}),g?o(mg,{slot:g,name:p(g),onUsed:m},`${g.id}:${g.items[0].id}`):o("div",{class:"fx-backpack-detail fx-backpack-prompt",children:[o(J,{name:"backpack",size:30}),o(de,{children:t(d.length?"backpack.select":"backpack.emptyHint")})]})]})]})})}function _c(e,t,n){return e.type==="points"?t("backpack.effect.points",{n:Pe(e.amount,n)}):e.type==="reset_card"?t("backpack.effect.cards",{n:Pe(e.count,n)}):t("backpack.effect.quota")}function mg(e){let{t,locale:n,goTo:r}=ae(),a=e.slot.items[0],[i,s]=A(null),l=ue(),c=ue(),[d,g]=A(!1),u=a.itemDefinition,p=qe(),m=a.source==="points"?t("backpack.source.points"):a.source==="admin"?t("backpack.source.admin"):a.source==="reward"?t("backpack.source.reward"):t("backpack.source.other"),f=()=>void l.run(async()=>{let w=await Q(`/shop/inventory/${encodeURIComponent(a.id)}`);if(p.current){if(!w.ok)return De(w);s(w.data)}}),v=()=>void c.run(async()=>{let w=await Q(`/shop/inventory/${encodeURIComponent(a.id)}/use`,{method:"POST"});if(!w.ok)return De(w);e.onUsed(w.data)});return o("section",{class:"fx-backpack-detail","aria-label":t("backpack.details"),children:[o("span",{class:`fx-backpack-detail-icon${e.slot.resetCard?" is-card":""}`,children:u?.icon?o("span",{class:"fx-backpack-emoji",children:u.icon}):o(J,{name:e.slot.resetCard?"card":"gift",size:32})}),o("h3",{children:e.name}),o("span",{class:"fx-tag",children:[t(e.slot.resetCard||u?.use?"backpack.consumable":u?"backpack.collectible":"backpack.voucher"),u&&` \xB7 ${t(`backpack.rarity.${u.rarity}`)}`]}),o("dl",{class:"fx-backpack-facts",children:[o("div",{children:[o("dt",{children:t("backpack.quantity")}),o("dd",{children:Pe(e.slot.items.length,n)})]}),o("div",{children:[o("dt",{children:t("backpack.acquired")}),o("dd",{children:Gt(a.acquiredAt,n)})]}),!e.slot.resetCard&&o("div",{children:[o("dt",{children:t("backpack.source")}),o("dd",{children:m})]})]}),u?o(N,{children:[u.description&&o(de,{children:u.description[n]}),u.use&&o(N,{children:[o("div",{class:"fx-backpack-effects",children:u.use.effects.map((w,k)=>o("div",{children:_c(w,t,n)},k))}),d?o(N,{children:[o(de,{children:t("backpack.consumeConfirm")}),o("div",{class:"fx-backpack-use-actions",children:[o(q,{variant:"primary",pending:c.pending,onClick:v,children:t("backpack.confirmUse")}),o(q,{disabled:c.pending,onClick:()=>g(!1),children:t("common.cancel")})]})]}):o(q,{variant:"primary",onClick:()=>g(!0),children:u.use.label?.[n]||t("backpack.use")}),o(pe,{a:c,captchaSection:"backpack"})]})]}):e.slot.resetCard?o(N,{children:[o(de,{children:t("card.desc")}),r&&o(q,{variant:"primary",onClick:()=>r("quota"),children:t("backpack.manageCards")})]}):i?o("div",{class:"fx-backpack-reveal",children:[i.codeName&&o("div",{class:"fx-muted",children:i.codeName}),i.key?o(N,{children:[o("code",{children:i.key}),o(_t,{text:i.key,label:t("backpack.copyKey")})]}):o(de,{children:t("backpack.noKey")})]}):o(q,{pending:l.pending,onClick:f,children:[o(J,{name:"key",size:14}),t("backpack.reveal")]}),o(pe,{a:l,captchaSection:"backpack"})]})}var gg=/^1[3-9]\d{9}$|^\+[1-9]\d{6,14}$/,hg=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,Cc=(e,t)=>e==="phone"?gg.test(t):hg.test(t),nr=(e,t)=>e==="phone"?Br(t):Fr(t);function Ac(){let e=Oe(()=>Q("/auth/me"));if(e.state==="loading")return o(Ie,{panels:3,rows:2});if(e.state==="signedOut")return o(Be,{});if(e.state==="error")return o($e,{error:e.error,onRetry:e.retry});let t=e.data;return o(N,{children:[o(bg,{me:t,onBound:(n,r)=>e.update(a=>({...a,[n]:r}))}),o(xg,{me:t}),o(zg,{}),o(Sg,{me:t})]})}function ci(){let e=Nl(),t=ue();return{cd:e,a:t,send:(a,i,s)=>t.run(async()=>{let l=await Q("/auth/send-code",{method:"POST",body:{target:a,type:i,purpose:s}});return l.ok?(e.start(60),{success:{key:"sec.codeSent"}}):De(l)}),reset:()=>{e.stop(),t.clear()}}}function bg(e){let{t}=ae(),[n,r]=A(null),[a,i]=A(null);return o(ke,{icon:"key",title:t("sec.methods.title"),desc:t("sec.methods.desc"),children:["phone","email"].map(s=>{let l=e.me[s];return o(N,{children:[o(Ve,{label:t(s==="phone"?"account.contact.phone":"account.contact.email"),desc:l?nr(s,l):t("account.contact.unbound"),children:o(q,{onClick:()=>{i(null),r(n===s?null:s)},children:t(n===s?"common.cancel":l?"sec.change":"sec.bind")})}),n===s&&o(vg,{kind:s,current:l??null,onDone:c=>{e.onBound(s,c),r(null),i(s)}}),a===s&&n!==s&&o(Me,{children:o("div",{class:"fx-msg is-ok",role:"status",children:t(s==="phone"?"sec.phoneBound":"sec.emailBound")})})]},s)})})}function vg(e){let{t}=ae(),{kind:n}=e,[r,a]=A(""),[i,s]=A(""),l=ci(),c=ue(),d=r.trim(),g=n==="phone"?"err.phoneInvalid":"err.emailInvalid",u=()=>{if(!Cc(n,d)){l.a.run(async()=>({error:{key:g}}));return}l.send(d,n,"bind")},p=()=>void c.run(async()=>{if(!Cc(n,d))return{error:{key:g}};if(!i.trim())return{error:{key:"err.codeRequired"}};let m=n==="phone"?{phone:d,verification_code:i.trim()}:{email:d,verification_code:i.trim()},f=await Q(n==="phone"?"/auth/bind-phone":"/auth/bind-email",{method:"POST",body:m});if(!f.ok)return De(f);e.onDone(d)});return o(Me,{class:"fx-form",children:[o("label",{class:"fx-field",children:[o("span",{children:e.current?t(n==="phone"?"sec.newPhone":"sec.newEmail"):t(n==="phone"?"sec.phone":"sec.email")}),o("input",{class:"fx-input",type:n==="phone"?"tel":"email",value:r,autoComplete:"off",placeholder:t(n==="phone"?"sec.phonePlaceholder":"sec.emailPlaceholder"),onInput:m=>a(m.currentTarget.value)})]}),o(di,{code:i,setCode:s,sender:l,onSend:u}),o("div",{class:"fx-inline",children:o(q,{variant:"primary",pending:c.pending,onClick:p,children:t("sec.bindSubmit")})}),o(pe,{a:c})]})}function di(e){let{t}=ae(),{cd:n,a:r}=e.sender;return o("div",{class:"fx-field",children:[o("span",{children:e.label??t("sec.code")}),o("div",{class:"fx-inline",children:[o("input",{class:"fx-input fx-input--code",inputMode:"numeric",autoComplete:"one-time-code",value:e.code,placeholder:t("sec.codePlaceholder"),"aria-label":e.label??t("sec.code"),onInput:a=>e.setCode(a.currentTarget.value)}),o(q,{pending:r.pending,disabled:n.left>0||e.disabled,onClick:e.onSend,children:n.left>0?t("sec.resendIn",{s:n.left}):t("sec.sendCode")})]}),o(pe,{a:r})]})}function yg(e){let{t}=ae(),n=Ml(e.value),r=e.value.length>0,a=[[n.length,t("pw.req.length",{min:8,max:64})],[n.lower,t("pw.req.lower")],[n.upper,t("pw.req.upper")],[n.special,t("pw.req.special")],[n.space,t("pw.req.space")]];return o("ul",{class:"fx-rules","aria-label":t("pw.rulesLabel"),children:a.map(([i,s])=>o("li",{class:i?"is-ok":r?"is-bad":"",children:[i?o(J,{name:"check",size:11}):r?o(J,{name:"x",size:11}):o("span",{class:"fx-rule-dot","aria-hidden":"true"}),o("span",{children:s})]},s))})}function Ec(e,t){let n=Pl(e);return n.ok?e!==t?{error:{key:"pw.mismatch"}}:null:{error:{key:ja[n.rule]}}}function xg(e){let{t}=ae(),n=["phone","email"].filter(l=>!!e.me[l]),[r,a]=A("current"),[i,s]=A(!1);return o(ke,{icon:"shield",title:t("pw.title"),desc:t("pw.desc",{min:8,max:64}),actions:o(q,{onClick:()=>s(!i),children:t(i?"common.cancel":"pw.change")}),children:i&&o(Me,{class:"fx-form",children:[o(St,{label:t("pw.modeLabel"),value:r,onChange:a,options:[{value:"current",label:t("pw.mode.current")},{value:"code",label:t("pw.mode.code")}]}),r==="current"?o(kg,{onDone:()=>s(!1)}):n.length?o(wg,{me:e.me,targets:n,onDone:()=>s(!1)}):o(de,{children:t("pw.codeNeedsContact")})]})})}function Pc(e){let{t}=ae();return o(N,{children:[o("label",{class:"fx-field",children:[o("span",{children:t("pw.new")}),o("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:e.pw,maxLength:72,onInput:n=>e.setPw(n.currentTarget.value)})]}),o(yg,{value:e.pw}),o("label",{class:"fx-field",children:[o("span",{children:t("pw.confirm")}),o("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:e.confirm,onInput:n=>e.setConfirm(n.currentTarget.value)})]})]})}function kg(e){let{t}=ae(),[n,r]=A(""),[a,i]=A(""),[s,l]=A(""),c=ue(),[d,g]=A(!1),u=()=>void c.run(async()=>{if(!n)return{error:{key:"pw.currentRequired"}};let p=Ec(a,s);if(p)return p;let m=await Q("/auth/password",{method:"PUT",body:{currentPassword:n,newPassword:a}});return m.ok?(r(""),i(""),l(""),g(!0),{success:{key:"pw.changed"}}):m.status===404?{error:{key:"pw.noPasswordYet"}}:De(m)});return o(N,{children:[o("label",{class:"fx-field",children:[o("span",{children:t("pw.current")}),o("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:n,onInput:p=>r(p.currentTarget.value)})]}),o(Pc,{pw:a,setPw:i,confirm:s,setConfirm:l}),o("div",{class:"fx-inline",children:[o(q,{variant:"primary",pending:c.pending,onClick:u,children:t("pw.submit")}),d&&o(q,{onClick:e.onDone,children:t("common.done")})]}),o(pe,{a:c})]})}function wg(e){let{t}=ae(),[n,r]=A(e.targets[0]),[a,i]=A(""),[s,l]=A(""),[c,d]=A(""),g=ci(),u=ue(),[p,m]=A(!1),f=e.me[n]||"",v=()=>void u.run(async()=>{if(!a.trim())return{error:{key:"err.codeRequired"}};let w=Ec(s,c);if(w)return w;let k=n==="phone"?{phone:f,code:a.trim(),newPassword:s}:{email:f,code:a.trim(),newPassword:s},z=await Q("/auth/reset-password",{method:"POST",body:k});return z.ok?(i(""),l(""),d(""),m(!0),{success:{key:"pw.changed"}}):De(z)});return o(N,{children:[e.targets.length>1?o(St,{label:t("pw.via"),value:n,onChange:w=>{r(w),i(""),g.reset()},options:e.targets.map(w=>({value:w,label:nr(w,e.me[w])}))}):o(de,{children:t("pw.codeTo",{target:nr(n,f)})}),o(di,{code:a,setCode:i,sender:g,onSend:()=>void g.send(f,n,"reset_password")}),o(Pc,{pw:s,setPw:l,confirm:c,setConfirm:d}),o("div",{class:"fx-inline",children:[o(q,{variant:"primary",pending:u.pending,onClick:v,children:t("pw.submitReset")}),p&&o(q,{onClick:e.onDone,children:t("common.done")})]}),o(pe,{a:u})]})}function zg(){let{t:e}=ae(),t=ue(),n=()=>void t.run(async()=>{let r=await Q("/auth/logout-all",{method:"POST"});if(!r.ok)return De(r);try{await se().forsionLogout?.()}catch(a){return{error:{raw:Zt(a)}}}return{success:{key:"sec.logoutAllDone"}}});return o(ke,{icon:"laptop",title:e("sec.devices.title"),desc:e("sec.devices.desc"),children:[o(Ve,{label:e("sec.logoutAll"),desc:e("sec.logoutAllDesc"),children:o(Kt,{label:e("sec.logoutAll"),confirmLabel:e("sec.logoutAllConfirm"),pending:t.pending,onConfirm:n})}),(t.error||t.success)&&o(Me,{children:o(pe,{a:t})})]})}function Sg(e){let{t}=ae(),n=["phone","email"].filter(k=>!!e.me[k]),[r,a]=A(!1),[i,s]=A(n.length?"code":"password"),[l,c]=A(n[0]??null),[d,g]=A(""),[u,p]=A(""),m=ci(),f=ue(),v=l&&e.me[l]||"",w=()=>void f.run(async()=>{if(i==="code"&&!d.trim())return{error:{key:"err.codeRequired"}};if(i==="password"&&!u)return{error:{key:"pw.currentRequired"}};let k=await Q("/auth/delete-account",{method:"POST",body:i==="code"?{verification_code:d.trim()}:{password:u}});if(!k.ok)return De(k);try{await se().forsionLogout?.()}catch{}return{success:{key:"del.done"}}});return o(ke,{icon:"alert",danger:!0,title:t("del.title"),desc:t("del.desc"),actions:o(q,{variant:"danger",onClick:()=>{a(!r),f.clear()},children:t(r?"common.cancel":"del.start")}),children:r&&o(Me,{class:"fx-form",children:[o(de,{tone:"error",children:t("del.warn")}),n.length>0&&o(St,{label:t("del.methodLabel"),value:i,onChange:s,options:[{value:"code",label:t("del.byCode")},{value:"password",label:t("del.byPassword")}]}),i==="code"&&l?o(N,{children:[n.length>1&&o(St,{label:t("pw.via"),value:l,onChange:k=>{c(k),g(""),m.reset()},options:n.map(k=>({value:k,label:nr(k,e.me[k])}))}),o(di,{code:d,setCode:g,sender:m,label:t("del.codeLabel",{target:nr(l,v)}),onSend:()=>void m.send(v,l,"delete_account")})]}):o("label",{class:"fx-field",children:[o("span",{children:t("del.passwordLabel")}),o("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:u,onInput:k=>p(k.currentTarget.value)})]}),o("div",{class:"fx-inline",children:o(Kt,{variant:"danger",label:t("del.submit"),confirmLabel:t("del.confirm"),pending:f.pending,onConfirm:w})}),o(pe,{a:f})]})})}var Ic=20;function Rc(){let e=Oe(async()=>{let[t,n]=await Promise.all([Q("/token-quota/my"),Q(`/token-quota/my/logs?limit=${Ic}&offset=0`)]);if(!t.ok)return t;let r=n.ok&&Array.isArray(n.data?.logs)?n.data.logs:null;return{ok:!0,status:t.status,data:{dailyLimit:Ce(t.data?.dailyLimit),logs:r,total:n.ok?Ce(n.data?.total)??r?.length??0:0,logsFail:n.ok?null:n}}});return e.state==="loading"?o(Ie,{panels:3,rows:2}):e.state==="signedOut"?o(Be,{}):e.state==="error"?o($e,{error:e.error,onRetry:e.retry}):o(N,{children:[o(_g,{dailyLimit:e.data.dailyLimit}),o(Tg,{base:e.data,onRetry:e.reload})]})}function _g(e){let{t,locale:n}=ae(),[r,a]=A(30),[i,s]=A({state:"loading"}),[l,c]=A(!1),[d,g]=A(0),u=ce(0);oe(()=>{let x=++u.current;return c(!0),Q(`/usage/stats?days=${r}`).then(M=>{x===u.current&&(c(!1),s(M.ok?{state:"ready",data:M.data??{}}:{state:"error",fail:M}))}),()=>{u.current++}},[r,d]);let p=e.dailyLimit!==null&&e.dailyLimit<0?"usage.unlimitedNote":qr(1,e.dailyLimit)===null?"usage.noLimitNote":null,m=x=>qr(x,e.dailyLimit)??"\u2014",f=o(St,{label:t("usage.range"),value:r,onChange:a,options:[{value:7,label:t("usage.days",{n:7})},{value:30,label:t("usage.days",{n:30})},{value:90,label:t("usage.days",{n:90})}]}),v=i.state==="ready"?i.data:null,w=(v?.byModel??[]).filter(Boolean),k=(v?.byProject??[]).filter(Boolean),z=Ce(v?.successRate);return o(N,{children:[o(ke,{icon:"chart",title:t("usage.overview.title"),desc:t("usage.overview.desc"),actions:f,children:[i.state==="error"?o("div",{class:"fx-sub",children:o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:Wt(Bt(i.fail),t)}),o("button",{type:"button",class:"fx-link",onClick:()=>g(x=>x+1),children:t("common.retry")})]})}):o("div",{class:`fx-stats fx-block${l&&v?" is-refreshing":""}`,"aria-busy":l||void 0,children:[o(ui,{label:t("usage.requests"),value:v?Pe(Ce(v.totalRequests)??0,n):null,testId:"usage-requests"}),o(ui,{label:t("usage.successRate"),value:v?z===null?"\u2014":`${z.toFixed(1)}%`:null}),o(ui,{label:t("usage.consumption"),value:v?m(v.totalPointsCost):null,sub:t("usage.ofToday"),testId:"usage-consumption"})]}),p&&o("div",{class:"fx-sub fx-sub--tight",children:o(de,{children:t(p)})})]}),i.state!=="error"&&o(N,{children:[o(ke,{icon:"gauge",title:t("usage.byModel.title"),desc:t("usage.byModel.desc"),children:o(Mc,{loading:!v,empty:t("usage.empty"),head:[t("usage.col.model"),t("usage.col.requests"),t("usage.col.consumption")],rows:w.map(x=>[x.modelName||x.modelId||"\u2014",Pe(Ce(x.count)??0,n),m(x.pointsCost)])})}),o(ke,{icon:"laptop",title:t("usage.byApp.title"),desc:t("usage.byApp.desc"),children:o(Mc,{loading:!v,empty:t("usage.empty"),head:[t("usage.col.app"),t("usage.col.requests"),t("usage.col.consumption")],rows:k.map(x=>[Lc(x.projectSource,t("usage.appUnknown")),Pe(Ce(x.count)??0,n),m(x.pointsCost)])})})]})]})}var Cg={tangu:"Tangu","ai-studio":"Forsion AI Studio",desktop:"Forsion Desktop",amadeus:"Amadeus",notebase:"Notebase",calendar:"Forsion Calendar",chat:"Forsion Chat",desk:"Forsion Desk","photo-studio":"Photo Studio",connect:"Forsion Connect"},Lc=(e,t)=>!e||e==="unknown"?t:Cg[e]??e;function ui(e){return o("div",{class:"fx-stat",children:[o("span",{class:"fx-stat-label",children:e.label}),e.value===null?o("span",{class:"fx-skel fx-skel--stat"}):o("strong",{class:"fx-stat-value","data-testid":e.testId,children:e.value}),e.sub&&o("span",{class:"fx-stat-sub",children:e.sub})]})}function Mc(e){return e.loading?o("div",{class:"fx-sub",children:[o("span",{class:"fx-skel fx-skel--row"}),o("span",{class:"fx-skel fx-skel--row"})]}):e.rows.length?o("div",{class:"fx-table-wrap fx-block",children:o("table",{class:"fx-table",children:[o("thead",{children:o("tr",{children:e.head.map((t,n)=>o("th",{class:n?"is-num":"",children:t},n))})}),o("tbody",{children:e.rows.map((t,n)=>o("tr",{children:t.map((r,a)=>o("td",{class:a?"is-num":"",children:r},a))},n))})]})}):o(ut,{children:e.empty})}function Tg(e){let{t,locale:n}=ae(),r=qe(),[a,i]=A(e.base.logs??[]),[s,l]=A(e.base.total),c=ue();oe(()=>{i(e.base.logs??[]),l(e.base.total)},[e.base]);let d=()=>void c.run(async()=>{let u=await Q(`/token-quota/my/logs?limit=${Ic}&offset=${a.length}`);if(!u.ok)return{error:Bt(u)};let p=Array.isArray(u.data?.logs)?u.data.logs:[];r.current&&(i(m=>[...m,...p]),l(m=>p.length?Ce(u.data?.total)??m:a.length))}),g=e.base.dailyLimit;return o(ke,{icon:"clock",title:t("usage.recent.title"),desc:t("usage.recent.desc"),children:[e.base.logsFail?o("div",{class:"fx-sub",children:o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:Wt(Bt(e.base.logsFail),t)}),o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}):a.length===0?o(ut,{children:t("usage.recentEmpty")}):o("div",{class:"fx-list fx-block",role:"list",children:a.map((u,p)=>o("div",{class:"fx-list-row",role:"listitem",children:[o("span",{class:"fx-list-main",children:[o("strong",{children:[u.modelName||u.modelId||"\u2014",u.success===!1&&o("span",{class:"fx-tag fx-tag--danger",children:t("usage.failed")})]}),o("small",{children:[Gt(u.createdAt,n),Lc(u.projectSource,t("usage.appUnknown"))].join(" \xB7 ")})]}),o("span",{class:"fx-value",children:qr(u.pointsCost,g)??"\u2014"})]},u.id??p))}),a.length>0&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:t("usage.shown",{shown:Pe(a.length,n),total:Pe(Math.max(s,a.length),n)})}),a.length<s&&o(q,{pending:c.pending,onClick:d,children:t("common.loadMore")})]}),c.error&&o("div",{class:"fx-sub fx-sub--tight",children:o(pe,{a:c})})]})}var Dc=["plugin","amadeus-plugin","skill","agent","space","theme"],Ag=["zip","github","npm"],Eg=["description","tags","minAppVersion","maxAppVersion","platforms"],Pg=50*1024*1024,Mg=new Set(["market_npm_invalid","market_npm_source","market_github_source","market_not_found","market_zip_required","market_zip_invalid","market_zip_too_large","market_version_required","market_version_invalid","market_version_mismatch","market_version_not_newer","market_icon_invalid","market_duplicate","market_update_pending","market_stale","market_requirements_invalid","market_requirements_mismatch","market_no_release","market_no_changes","market_dryrun_unsupported"]),Ig=new Set(["no_manifest","type_mismatch","tag_version_mismatch","id_slug_mismatch","engine_slug_mismatch","no_entry","has_node_modules"]),Vr=e=>`sub.type.${e.replace("-","_")}`,Oc=e=>e==="approved"?"sub.approved":e==="rejected"?"sub.rejected":"sub.pending",mi=e=>e==="github"?"GitHub":e==="npm"?"npm":"ZIP",Rg=e=>e.status==="pending"||!!e.pendingUpdate,Nc=(e,t)=>t==="all"||(t==="pending"?Rg(e):e.status===t),Lg=e=>e>=1024*1024?`${(e/1024/1024).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1024))} KB`,Bc=e=>e.status==="approved"?"sub.updated":"sub.resubmitted";async function so(e){let t=se().cloudInvoke;if(!t)return{ok:!1,out:{error:{key:"err.unavailable"}},code:null,values:{}};let n=await t("cloud:marketSubmit",{...e.id?{id:e.id}:{},...e.dryRun?{dryRun:!0}:{},fields:e.fields,...e.zip?{zip:{name:e.zip.name,data:e.zip.data}}:{}}),r=Lr(n);if(r.ok)return{ok:!0,data:r.data};r.status===401&&se().authStatus?.().catch(()=>{});let a=Object.fromEntries(Object.entries(n?.json?.values||{}).filter(([,s])=>typeof s=="string"||typeof s=="number").map(([s,l])=>[s,String(l)]));return{ok:!1,out:r.code==="market_version_not_newer"&&a.version&&a.current?{error:{key:"sub.notNewer",vars:a}}:Mg.has(r.code||"")?{error:{key:`sub.err.${r.code}`}}:De(r),code:r.code,values:a}}async function Fc(e){return e.size>Pg?{error:{key:"sub.errLarge"}}:{name:e.name,size:e.size,data:new Uint8Array(await e.arrayBuffer())}}function Dg(e,t){let n=[e?.minAppVersion&&`\u2265 ${e.minAppVersion}`,e?.maxAppVersion&&`< ${e.maxAppVersion}`].filter(Boolean).join(", "),r=[n&&`Forsion ${n}`,e?.platforms?.length?e.platforms.join(", "):""].filter(Boolean);return r.length?r.join(" \xB7 "):t("sub.reqNone")}function $c({status:e}){let t=Ke();return o("span",{class:`fx-tag ${e==="approved"?"fx-status--resolved":e==="rejected"?"fx-tag--danger":"fx-tag--accent"}`,children:t(Oc(e))})}function Uc(e){let t=`${e.id}-${e.name}`;return o("label",{class:"fx-sub-field",for:t,children:[o("span",{children:e.label}),e.rows?o("textarea",{id:t,value:e.value,rows:e.rows,maxLength:2e5,onInput:n=>e.onInput(n.currentTarget.value)}):o("input",{id:t,value:e.value,placeholder:e.placeholder,maxLength:e.name==="summary"?2e3:500,onInput:n=>e.onInput(n.currentTarget.value)})]})}function Hc({id:e,file:t,disabled:n,onPick:r}){let a=Ke(),[i,s]=A(!1);oe(()=>{let c=()=>s(!1);return window.addEventListener("dragend",c),window.addEventListener("drop",c,!0),window.addEventListener("blur",c),()=>{window.removeEventListener("dragend",c),window.removeEventListener("drop",c,!0),window.removeEventListener("blur",c)}},[]);let l=c=>{c&&!n&&r(c)};return o("label",{class:`fx-sub-drop${i?" is-over":""}${t?" is-filled":""}`,for:`${e}-zip`,onDragOver:c=>{c.preventDefault(),n||s(!0)},onDragLeave:()=>s(!1),onDrop:c=>{c.preventDefault(),s(!1),l(c.dataTransfer?.files?.[0])},children:[o(J,{name:t?"box":"upload",size:18}),o("span",{class:"fx-sub-drop-text",children:[o("strong",{children:t?t.name:a("sub.dropTitle")}),o("small",{children:t?a("sub.dropReplace",{size:Lg(t.size)}):a("sub.dropHint")})]}),o("input",{id:`${e}-zip`,class:"fx-sub-file",type:"file",accept:".zip,application/zip",disabled:n,onChange:c=>{l(c.currentTarget.files?.[0]),c.currentTarget.value=""}})]})}function qc({check:e,update:t}){let n=Ke(),r=e.manifest,a=[r?[!0,"sub.checkType",`${n(Vr(r.type))} \xB7 ${r.file}`]:[!1,"sub.checkType",n("sub.warn.no_manifest")],...e.version?[[!0,"sub.checkVersion",e.current?`v${e.current} \u2192 v${e.version}`:`v${e.version}`]]:[],[!0,"sub.checkIcon",n(e.icon?"sub.iconYes":"sub.iconNo")],[!0,"sub.checkReadme",n(e.readme?"sub.readmeYes":t?"sub.readmeKeep":"sub.readmeNo")],[!0,"sub.checkReq",Dg(e.metadata,n)],...(e.warnings||[]).filter(i=>i!=="no_manifest"&&Ig.has(i)).map(i=>[!1,"sub.checkWarn",n(`sub.warn.${i}`)])];return o("ul",{class:"fx-sub-checks",children:a.map(([i,s,l])=>o("li",{class:i?"is-ok":"is-warn",children:[o(J,{name:i?"check":"alert",size:14}),o("span",{class:"fx-sub-k",children:n(s)}),o("span",{children:l})]}))})}function Ng({item:e,checks:t,onDone:n}){let r=Ke(),a=Qn(),i=qe(),s=ue(),[l,c]=A(null),[d,g]=A(null),u=m=>void s.run(async()=>{c(null),g(null);let f=await Fc(m);if(!i.current)return;if(!("data"in f))return f;if(c(f),!t)return;let v=await so({id:e.id,dryRun:!0,fields:{},zip:f});if(i.current){if(!v.ok)return v.out;g(v.data)}}),p=()=>void s.run(async()=>{if(!l)return;let m=await so({id:e.id,fields:{},zip:l});if(i.current){if(!m.ok)return m.out;n(Bc(e))}});return o(N,{children:[o(Hc,{id:a,file:l,disabled:s.pending,onPick:u}),d&&o(qc,{check:d,update:!0}),d&&o(de,{children:r(e.status==="approved"?"sub.zipListedNote":"sub.zipUnlistedNote")}),l&&o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",pending:s.pending,disabled:t&&!d,onClick:p,children:d?.version?r("sub.submitVersion",{version:d.version}):r("sub.submit")}),o(q,{disabled:s.pending,onClick:()=>{c(null),g(null),s.clear()},children:r("common.cancel")})]}),o(pe,{a:s,captchaSection:"submission"})]})}function Og({item:e,onDone:t}){let n=Ke(),r=qe(),a=ue(),[i,s]=A(null),[l,c]=A(null),d=()=>void a.run(async()=>{s(null),c(null);let p=await so({id:e.id,dryRun:!0,fields:{}});if(r.current){if(!p.ok){if(p.code==="market_version_not_newer"&&p.values.version){c(p.values);return}return p.out}s(p.data)}}),g=()=>void a.run(async()=>{let p=await so({id:e.id,fields:{}});if(r.current){if(!p.ok)return p.out;t(Bc(e))}}),u=e.source==="github"?e.githubRepoUrl:e.npmPackage;return o(N,{children:[!i&&o(q,{pending:a.pending,onClick:d,children:[o(J,{name:"refresh",size:13}),n(l?"sub.checkAgain":"sub.checkNew")]}),l&&o(de,{children:n("sub.upToDate",{version:l.version,current:l.current||l.version})}),i&&o(N,{children:[o("div",{class:"fx-sub-upstream",children:[o(J,{name:e.source==="github"?"link":"box",size:18}),o("span",{children:[o("strong",{children:n("sub.upstreamLatest",{version:i.version||""})}),o("small",{children:[u,i.tag&&n("sub.releaseTag",{tag:i.tag}),i.current&&n("sub.storeHas",{version:i.current})].filter(Boolean).join(" \xB7 ")})]})]}),o(de,{children:n(e.source==="github"?"sub.githubNote":"sub.npmNote",{version:i.version||""})}),o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",pending:a.pending,onClick:g,children:n("sub.submitVersion",{version:i.version||""})}),o(q,{disabled:a.pending,onClick:()=>{s(null),a.clear()},children:n("common.cancel")})]})]}),o(pe,{a,captchaSection:"submission"})]})}function Bg({item:e,onDone:t}){let n=Ke(),r=Qn(),a=qe(),i=ue(),s=()=>({name:e.name,summary:e.summary||"",description:e.description||"",tags:(e.tags||[]).join(", "),minAppVersion:e.minAppVersion||"",maxAppVersion:e.maxAppVersion||"",platforms:(e.platforms||[]).join(", ")}),[l,c]=A(s),[d,g]=A(new Set),[u,p]=A(!1),m=k=>z=>{c(x=>({...x,[k]:z})),g(x=>new Set([...x,k])),i.clear()},f=()=>void i.run(async()=>{if(!l.name.trim())return{error:{key:"sub.errName"}};if(!d.size)return{error:{key:"sub.err.market_no_changes"}};let k=await so({id:e.id,fields:{mode:"info",...Object.fromEntries([...d].map(z=>[z,l[z].trim()]))}});if(a.current){if(!k.ok)return k.out;p(!1),t(e.status==="approved"?"sub.infoSubmitted":"sub.resubmitted")}}),v=(k,z,x={})=>o(Uc,{id:r,name:k,label:n(z),value:l[k],onInput:m(k),...x}),w=n("sub.unset");return o("section",{class:"fx-sub-sec",children:[o("div",{class:"fx-sub-sec-bar",children:[o("h4",{children:n("sub.secInfo")}),!u&&o(q,{disabled:!!e.pendingUpdate,title:e.pendingUpdate?n("sub.err.market_update_pending"):void 0,onClick:()=>{c(s()),g(new Set),i.clear(),p(!0)},children:[o(J,{name:"pencil",size:13}),n("sub.edit")]})]}),u?o("form",{class:"fx-sub-form fx-sub-form--inline",onSubmit:k=>{k.preventDefault(),f()},children:[o("fieldset",{disabled:i.pending,children:[o("div",{class:"fx-sub-columns",children:[v("name","sub.name"),v("tags","sub.tags",{placeholder:n("sub.tagsHint")})]}),v("summary","sub.summary"),v("description","sub.description",{rows:3}),o("div",{class:"fx-sub-columns",children:[v("minAppVersion","sub.minAppVersion",{placeholder:"2.13.0"}),v("maxAppVersion","sub.maxAppVersion",{placeholder:n("sub.optional")})]}),v("platforms","sub.platforms",{placeholder:"desktop, android, ios, web"}),o(de,{children:n("sub.requirementsHint")}),o(de,{children:n("sub.infoNote")})]}),o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",pending:i.pending,submit:!0,children:n("sub.submitInfo")}),o(q,{disabled:i.pending,onClick:()=>{p(!1),i.clear()},children:n("common.cancel")})]}),o(pe,{a:i,captchaSection:"submission"})]}):o("dl",{class:"fx-sub-kv",children:[o("dt",{children:n("sub.summary")}),o("dd",{children:e.summary||w}),o("dt",{children:n("sub.description")}),o("dd",{class:"fx-sub-clamp",children:e.description||w}),o("dt",{children:n("sub.tags")}),o("dd",{children:e.tags?.length?e.tags.join(", "):w}),o("dt",{children:n("sub.minAppVersion")}),o("dd",{children:e.minAppVersion||w}),o("dt",{children:n("sub.maxAppVersion")}),o("dd",{children:e.maxAppVersion||w}),o("dt",{children:n("sub.platforms")}),o("dd",{children:e.platforms?.length?e.platforms.join(", "):w})]})]})}function Fg({item:e,checks:t,notice:n,onBack:r,onDone:a}){let i=Ke(),{locale:s}=ae(),l=e.pendingUpdate,c=e.rejectedUpdate;return o("div",{class:"fx-sub-detail","data-detail-id":e.id,children:[o("button",{type:"button",class:"btn sm ghost fx-sub-back",onClick:r,children:[o(J,{name:"back",size:13}),i("sub.back")]}),o("div",{class:"fx-sub-dhead",children:[o("div",{class:"fx-sub-item-head",children:[o("strong",{children:e.name}),o($c,{status:e.status})]}),o("div",{class:"fx-sub-meta",children:[o("span",{children:i(Vr(e.type))}),o("span",{children:mi(e.source)}),e.version&&o("span",{children:["v",e.version]}),o("span",{children:i("sub.downloads",{n:e.downloads||0})})]}),o("div",{children:o(_t,{text:e.id,label:`${i("sub.identity")} ${e.id.slice(0,8)}`})})]}),n&&o("p",{class:"fx-msg is-ok",role:"status",children:i(n)}),o("section",{class:"fx-sub-sec",children:[o("h4",{children:i("sub.secVersion")}),e.status==="rejected"&&e.reviewNote&&o(de,{tone:"error",children:e.reviewNote}),c&&o(de,{tone:"error",children:[i(c.kind==="info"?"sub.rejectedInfo":"sub.rejectedVersion",{version:c.version}),c.note?`: ${c.note}`:""]}),l?o(N,{children:[o(de,{children:i(l.kind==="info"?"sub.pendingInfo":"sub.pendingVersion",{version:l.version})}),o(de,{children:i("sub.pendingHint")})]}):e.status==="pending"&&e.source!=="zip"?o(de,{children:i("sub.inReview")}):e.source==="zip"?o(Ng,{item:e,checks:t,onDone:a}):o(Og,{item:e,onDone:a})]}),o(Bg,{item:e,onDone:a}),o("section",{class:"fx-sub-sec",children:[o("h4",{children:i("sub.secHistory")}),o("ul",{class:"fx-sub-time",children:[(e.versions||[]).map(d=>o("li",{children:[o("span",{children:yn(d.createdAt,s)}),o("span",{children:i("sub.histApproved",{version:d.version})})]},`${d.version}-${d.createdAt}`)),e.createdAt&&o("li",{children:[o("span",{children:yn(e.createdAt,s)}),o("span",{children:i("sub.histSubmitted")})]})]})]})]})}function $g({checks:e,onDone:t,onBack:n}){let r=Ke(),a=Qn(),i=qe(),s=ue(),[l,c]=A("zip"),[d,g]=A({type:"plugin",name:"",summary:"",githubRepoUrl:"",npmPackage:"",description:"",tags:"",minAppVersion:"",maxAppVersion:"",platforms:""}),[u,p]=A(new Set),[m,f]=A(null),[v,w]=A(null),k=L=>H=>{g(V=>({...V,[L]:H})),p(V=>new Set([...V,L])),s.clear()},z=L=>void s.run(async()=>{f(null),w(null);let H=await Fc(L);if(!i.current)return;if(!("data"in H))return H;if(f(H),!e)return;let V=await so({dryRun:!0,fields:{source:"zip"},zip:H});if(!i.current)return;if(!V.ok)return V.out;let ee=V.data;w(ee);let te=ee.manifest;g(S=>({...S,type:!u.has("type")&&te&&Dc.includes(te.type)?te.type:S.type,name:!u.has("name")&&!S.name&&te?.name?te.name:S.name}))}),x=()=>void s.run(async()=>{if(!d.name.trim())return{error:{key:"sub.errName"}};if(l!=="zip"&&!(l==="github"?d.githubRepoUrl:d.npmPackage).trim())return{error:{key:"sub.errSource"}};if(l==="zip"&&!m)return{error:{key:"sub.errZip"}};let L=l==="github"?{githubRepoUrl:d.githubRepoUrl.trim()}:l==="npm"?{npmPackage:d.npmPackage.trim()}:{},H=await so({fields:{type:d.type,source:l,name:d.name.trim(),summary:d.summary.trim(),...L,...Object.fromEntries(Eg.map(V=>[V,d[V].trim()]))},zip:l==="zip"?m:null});if(i.current){if(!H.ok)return H.out;t(String(H.data?.id||""))}}),M=(L,H,V={})=>o(Uc,{id:a,name:L,label:r(H),value:d[L],onInput:k(L),...V});return o("div",{class:"fx-sub-detail",children:[o("button",{type:"button",class:"btn sm ghost fx-sub-back",onClick:n,children:[o(J,{name:"back",size:13}),r("sub.back")]}),o("div",{class:"fx-sub-dhead",children:o("div",{class:"fx-sub-item-head",children:o("strong",{children:r("sub.new")})})}),o("form",{class:"fx-sub-form fx-sub-form--inline",onSubmit:L=>{L.preventDefault(),x()},children:[o("fieldset",{disabled:s.pending,children:[o(St,{label:r("sub.source"),value:l,options:Ag.map(L=>({value:L,label:mi(L)})),onChange:L=>{c(L),s.clear()}}),l==="zip"?o(N,{children:[o(Hc,{id:a,file:m,disabled:s.pending,onPick:z}),v?o(qc,{check:v,update:!1}):o(de,{children:r("sub.zipHint")})]}):o(N,{children:[l==="github"?M("githubRepoUrl","sub.repo",{placeholder:"https://github.com/owner/repo"}):M("npmPackage","sub.npm",{placeholder:"@scope/plugin-name"}),o(de,{children:r(l==="github"?"sub.repoHint":"sub.npmHint")})]}),o("div",{class:"fx-sub-columns",children:[o("label",{class:"fx-sub-field",for:`${a}-type`,children:[o("span",{children:r("sub.type")}),o("select",{id:`${a}-type`,value:d.type,onChange:L=>k("type")(L.currentTarget.value),children:Dc.map(L=>o("option",{value:L,children:r(Vr(L))},L))})]}),M("name","sub.name")]}),M("summary","sub.summary"),M("description","sub.description",{rows:3}),M("tags","sub.tags",{placeholder:r("sub.tagsHint")}),o("div",{class:"fx-sub-columns",children:[M("minAppVersion","sub.minAppVersion",{placeholder:"2.13.0"}),M("maxAppVersion","sub.maxAppVersion",{placeholder:r("sub.optional")})]}),M("platforms","sub.platforms",{placeholder:"desktop, android, ios, web"}),o(de,{children:r("sub.requirementsHint")}),o(de,{children:r("sub.identityHint")}),o(de,{children:r("sub.reviewHint")})]}),o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",pending:s.pending,submit:!0,children:r("sub.submit")}),o(q,{disabled:s.pending,onClick:n,children:r("common.cancel")})]}),o(pe,{a:s,captchaSection:"submission"})]})]})}var pi=null,fi=new Set;function Vc(e){let t=!1;for(let n of fi)t=n(e)||t;pi=t?null:{id:e,at:Date.now()}}var Ug=()=>{let e=pi;return pi=null,e&&Date.now()-e.at<3e4?e.id:null};function Hg({items:e,checks:t,reload:n}){let r=Ke(),[a,i]=A("all"),[s,l]=A(()=>{let k=Ug();return k&&e.some(z=>z.id===k)?k:null}),[c,d]=A(()=>s!==null),[g,u]=A(null);oe(()=>{let k=z=>e.some(x=>x.id===z)?(i("all"),l(z),d(!0),u(null),!0):!1;return fi.add(k),()=>{fi.delete(k)}},[e]);let p=e.filter(k=>Nc(k,a)),m=s==="new"?null:p.find(k=>k.id===s)||p[0]||null,f=k=>{l(k),d(!0),u(null)},v=(k,z)=>{i("all"),l(k),u({id:k,key:z}),n()},w=k=>e.filter(z=>Nc(z,k)).length;return o(ke,{title:r("sub.mine"),desc:r("sub.desc"),actions:o(N,{children:[o(q,{variant:"primary",disabled:s==="new",onClick:()=>f("new"),children:[o(J,{name:"plus",size:13}),r("sub.new")]}),o(q,{onClick:n,children:r("sub.refresh")})]}),children:!e.length&&s!=="new"?o(ut,{children:[o("strong",{children:r("sub.empty")}),o("p",{children:r("sub.emptyHint")})]}):o(N,{children:[!!e.length&&o("div",{class:"fx-sub-filter",children:o(St,{label:r("sub.filter"),value:a,onChange:i,options:["all","pending","approved","rejected"].map(k=>({value:k,label:`${r(k==="all"?"sub.all":Oc(k))} ${w(k)}`}))})}),o("div",{class:"fx-sub-cq",children:o("div",{class:`fx-sub-split${c?" is-picked":""}`,children:[o("nav",{class:"fx-sub-list","aria-label":r("sub.mine"),children:p.length?p.map(k=>o("button",{type:"button","data-submission-id":k.id,class:`fx-sub-li${k.id===m?.id?" is-on":""}`,"aria-current":k.id===m?.id||void 0,onClick:()=>f(k.id),children:[o("span",{class:"fx-sub-li-top",children:[o("strong",{children:k.name}),o($c,{status:k.status})]}),o("span",{class:"fx-sub-li-meta",children:[r(Vr(k.type)),mi(k.source),k.version&&`v${k.version}`].filter(Boolean).join(" \xB7 ")}),k.pendingUpdate&&o("span",{class:"fx-sub-li-meta",children:r(k.pendingUpdate.kind==="info"?"sub.pendingInfo":"sub.pendingVersion",{version:k.pendingUpdate.version})})]},k.id)):o("p",{class:"fx-note",children:r(e.length?"sub.noResults":"sub.empty")})}),s==="new"?o($g,{checks:t,onBack:()=>{l(null),d(!1)},onDone:k=>v(k,"sub.submitted")}):m?o(Fg,{item:m,checks:t,notice:g?.id===m.id?g.key:null,onBack:()=>d(!1),onDone:k=>v(m.id,k)},m.id):o("div",{class:"fx-sub-detail",children:o("p",{class:"fx-note",children:r("sub.noResults")})})]})})]})})}function jc(){let e=Oe(()=>Q("/market/mine"));switch(e.state){case"loading":return o(Ie,{});case"signedOut":return o(Be,{});case"error":return o($e,{error:e.error,onRetry:e.retry});case"ready":return o(Hg,{items:e.data?.items||[],checks:e.data?.dryRun===!0,reload:e.reload})}}var qg=300,Wc=e=>e.replace(/\/+$/,"").replace(/\/api$/,""),Vg=(e=0)=>e<1024*1024?`${Math.max(1,Math.ceil(e/1024))} KB`:`${(e/1024/1024).toFixed(1)} MB`;function jg(e,t){let n=se().openExternal;n&&(t.preventDefault(),n(e)?.catch(()=>{}))}function Wg({page:e,url:t,reload:n}){let r=Ke(),{locale:a}=ae(),i=Qn(),s=ue(),[l,c]=A(null),d=e.listing_status||null,g=e.status==="disabled",u=(f,v,w,k)=>void s.run(async()=>{let z=await Q(f,{method:v,body:w});if(!z.ok)return De(z);k?.(),n()}),p=`/connect/apps/${encodeURIComponent(e.slug)}`,m=d==="pending"?["web.listingPending","fx-tag--accent"]:d==="approved"?["web.listingApproved","fx-status--resolved"]:d==="rejected"?["web.listingRejected","fx-tag--danger"]:null;return o("article",{class:"fx-sub-item","data-webpage":e.slug,children:[o("div",{class:"fx-sub-item-head",children:[o("strong",{children:e.name||e.slug}),g&&o("span",{class:"fx-tag fx-tag--danger",children:r("web.disabled")}),m&&o("span",{class:`fx-tag ${m[1]}`,children:r(m[0])})]}),t&&o("a",{class:"fx-web-url",href:t,target:"_blank",rel:"noopener noreferrer",onClick:f=>jg(t,f),children:t}),o("div",{class:"fx-sub-meta",children:[o("span",{children:e.slug}),o("span",{children:Vg(e.total_bytes)}),e.updated_at&&o("span",{children:r("web.updated",{date:yn(e.updated_at,a)})})]}),g&&o(de,{tone:"error",children:r("web.disabledHint")}),d==="rejected"&&e.listing_note&&o(de,{tone:"error",children:r("web.listingNote",{note:e.listing_note})}),l!==null&&o("form",{class:"fx-sub-form",onSubmit:f=>{f.preventDefault(),l.trim()&&u(`${p}/listing`,"PUT",{summary:l.trim()},()=>c(null))},children:[o("label",{class:"fx-sub-field",for:`${i}-summary`,children:[o("span",{children:r("web.listingSummary")}),o("textarea",{id:`${i}-summary`,rows:2,maxLength:qg,value:l,disabled:s.pending,placeholder:r("web.listingSummaryPh"),onInput:f=>c(f.currentTarget.value)}),o("small",{children:r("web.listingHint")})]}),o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",submit:!0,pending:s.pending,disabled:!l.trim(),children:r("web.listingSubmit")}),o(q,{disabled:s.pending,onClick:()=>c(null),children:r("common.cancel")})]})]}),l===null&&o("div",{class:"fx-web-actions",children:[t&&o(_t,{text:t,label:r("web.copy")}),!g&&!d&&o(q,{disabled:s.pending,onClick:()=>c(""),children:r("web.listingApply")}),!g&&d==="rejected"&&o(q,{disabled:s.pending,onClick:()=>c(e.listing_summary||""),children:r("web.listingReapply")}),d==="pending"&&o(q,{pending:s.pending,onClick:()=>u(`${p}/listing`,"DELETE"),children:r("web.listingWithdraw")}),d==="approved"&&o(Kt,{label:r("web.listingDelist"),confirmLabel:r("web.listingDelistConfirm"),pending:s.pending,onConfirm:()=>u(`${p}/listing`,"DELETE")}),o(Kt,{variant:"danger",label:r("web.unpublish"),confirmLabel:r("web.unpublishConfirm"),pending:s.pending,onConfirm:()=>u(p,"DELETE")})]}),o(pe,{a:s})]})}function Gg({data:e,reload:t}){let n=Ke(),[r,a]=A("");oe(()=>{if(e.publicBase)return;let d=!0;return se().authStatus?.().then(g=>{d&&g?.cloudUrl&&a(Wc(g.cloudUrl))}).catch(()=>{}),()=>{d=!1}},[e.publicBase]);let i=e.apps||[],s=e.publicBase?Wc(e.publicBase):r,l=d=>s&&e.handle?`${s}/apps/${e.handle}/${d}/`:"",c=typeof e.limit=="number"&&i.length>=e.limit;return o(ke,{title:n("web.title"),desc:n("web.desc"),actions:o(q,{onClick:t,children:n("web.refresh")}),children:[typeof e.limit=="number"&&o("p",{class:"fx-web-quota",children:[n("web.used",{used:i.length,limit:e.limit}),c?` \xB7 ${n("web.full")}`:""]}),i.length?i.map(d=>o(Wg,{page:d,url:l(d.slug),reload:t},d.slug)):o(ut,{children:[o("strong",{children:n("web.empty")}),o("p",{children:n("web.emptyHint")})]})]})}function Gc(){let e=Oe(()=>Q("/connect/apps"));switch(e.state){case"loading":return o(Ie,{});case"signedOut":return o(Be,{});case"error":return o($e,{error:e.error,onRetry:e.retry});case"ready":return o(Gg,{data:e.data||{},reload:e.reload})}}var Kg=e=>!!e&&typeof e=="object"&&typeof e.enabled=="boolean";async function gi(e,t){let n=se().cloudInvoke;if(!n)throw new Error("no_bridge");let r=await n(e,t);if(!Kg(r))throw new Error(String(r?.error??"unavailable"));return r}var Xg=["diag.item.app","diag.item.settings","diag.item.agents","diag.item.plugins","diag.item.runs"];function Kc(){let[e,t]=A(0);return oe(()=>se().onAuthChanged?.(()=>t(n=>n+1)),[]),o(Jg,{standalone:!0},e)}function Jg({standalone:e=!1}={}){let{t,locale:n}=ae(),r=qe(),[a,i]=A(null),[s,l]=A(!1),c=ue(),d=ue();if(oe(()=>{let v=!1,w=0,k=()=>{let x=++w;gi("diagnostics:get").then(M=>{!v&&x===w&&(i(M),l(!0))},()=>{!v&&x===w&&(i(null),l(!0))})};k();let z=se().onAuthChanged?.(k);return()=>{v=!0,z?.()}},[]),!a?.signedIn)return e?s?a?o(Be,{}):o(ut,{children:t("diag.unavailable")}):o(Ie,{panels:1}):null;let g=()=>void d.run(async()=>{try{let v=await gi("diagnostics:uploadNow");return r.current&&i(v),v.lastError?{error:{key:"diag.failed",vars:{reason:v.lastError}}}:v.enabled&&v.lastUploadAt?{success:{key:"diag.uploaded"}}:void 0}catch(v){return{error:{raw:Zt(v)||t("err.generic")}}}}),u=async v=>{let w=!1;await c.run(async()=>{d.clear();try{let k=await gi("diagnostics:set",v);r.current&&i(k),w=!0}catch(k){return{error:{raw:Zt(k)||t("err.generic")}}}}),w&&v.enabled&&r.current&&g()},p=a.intervalHours??24,m=a.mode==="manual"?t("diag.freq.manual"):p===1?t("diag.freq.hour"):p%24===0?p===24?t("diag.freq.day"):t("diag.freq.days",{n:p/24}):t("diag.freq.hours",{n:p}),f=`${a.lastUploadAt?t("diag.last",{time:Gt(a.lastUploadAt,n)}):t("diag.noUpload")} \xB7 ${m}`;return o(ke,{icon:"chart",title:t("diag.title"),desc:t("diag.desc"),children:[o(Ve,{label:t("diag.enable"),desc:t("diag.enableDesc"),children:o(Qt,{checked:a.enabled,disabled:c.pending,label:t("diag.enable"),onChange:v=>void u({enabled:v})})}),o(Me,{class:"fx-diag",children:[o("strong",{children:t("diag.collected")}),o("ul",{children:Xg.map(v=>o("li",{children:t(v)},v))}),o(de,{children:t("diag.notCollected")})]}),a.sessions!==void 0&&o(Ve,{label:t("diag.sessions"),desc:t("diag.sessionsDesc"),children:o(Qt,{checked:a.sessions,disabled:c.pending,label:t("diag.sessions"),onChange:v=>void u({sessions:v})})}),a.memory!==void 0&&o(Ve,{label:t("diag.memory"),desc:t("diag.memoryDesc"),children:o(Qt,{checked:a.memory,disabled:c.pending,label:t("diag.memory"),onChange:v=>void u({memory:v})})}),o(Ve,{label:t("diag.activity"),desc:t("diag.activityDesc"),children:o(Qt,{checked:a.activity,disabled:c.pending,label:t("diag.activity"),onChange:v=>void u({activity:v})})}),a.enabled&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:f}),o(q,{pending:d.pending,disabled:c.pending,onClick:g,children:t("diag.uploadNow")})]}),o(Me,{class:"fx-sub--tight",children:[o(de,{children:t("diag.retention",{n:a.retainDays})}),a.enabled&&a.lastError&&!d.error&&!d.success&&o("div",{class:"fx-msg is-error",role:"alert",children:t("diag.failed",{reason:a.lastError})}),o(pe,{a:c}),o(pe,{a:d})]})]})}var or=20,jr=5,Yg=5*1024*1024,Wr=1e4,Zg={open:"fb.status.open",in_progress:"fb.status.in_progress",resolved:"fb.status.resolved",closed:"fb.status.closed"};function Jc(e){let{t}=ae(),n=e.status||"open",r=Zg[n];return o("span",{class:`fx-tag fx-status fx-status--${n}`,children:r?t(r):n})}function Yc(){let[e,t]=A(null),n=Oe(async()=>{let r=await Q(`/feedback?limit=${or}&offset=0`);return r.ok?{ok:!0,status:r.status,data:Array.isArray(r.data?.tickets)?r.data.tickets:[]}:r});return n.state==="loading"?o(Ie,{panels:1,rows:3}):n.state==="signedOut"?o(Be,{}):n.state==="error"?o($e,{error:n.error,onRetry:n.retry}):e?o(oh,{id:e,onBack:()=>{t(null),n.reload()}}):o(Qg,{first:n.data,onOpen:t,onChanged:n.reload})}function Qg(e){let{t,locale:n}=ae(),r=qe(),[a,i]=A(e.first),[s,l]=A(e.first.length===or),[c,d]=A(!1),[g,u]=A(!1),p=ue();oe(()=>{i(e.first),l(e.first.length===or)},[e.first]);let m=()=>void p.run(async()=>{let f=await Q(`/feedback?limit=${or}&offset=${a.length}`);if(!f.ok)return{error:Bt(f)};let v=Array.isArray(f.data?.tickets)?f.data.tickets:[];r.current&&(i(w=>{let k=new Set(w.map(z=>z.id));return[...w,...v.filter(z=>!k.has(z.id))]}),l(v.length===or))});return o(ke,{icon:"message",title:t("fb.list.title"),desc:t("fb.list.desc"),actions:c?void 0:o(q,{variant:"primary",onClick:()=>{u(!1),d(!0)},children:[o(J,{name:"plus",size:12})," ",t("fb.new")]}),children:[c&&o(nh,{onCancel:()=>d(!1),onSubmitted:()=>{d(!1),u(!0),e.onChanged()}}),g&&!c&&o(Me,{children:o("div",{class:"fx-msg is-ok",role:"status",children:t("fb.submitted")})}),a.length===0?o(ut,{children:t("fb.empty")}):o("div",{class:"fx-list fx-block",role:"list",children:a.map(f=>o("button",{type:"button",class:"fx-list-row fx-list-row--button",role:"listitem",onClick:()=>e.onOpen(f.id),children:[o("span",{class:`fx-dot${f.user_unread?" is-on":""}`,"aria-label":f.user_unread?t("fb.unread"):void 0}),o("span",{class:"fx-list-main",children:[o("strong",{children:f.title||(f.description||"").slice(0,60)||t("fb.untitled")}),o("small",{children:Gt(f.updated_at||f.created_at,n)})]}),o(Jc,{status:f.status}),o(J,{name:"chevron",size:12})]},f.id))}),a.length>0&&(s||p.error)&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:t("fb.shown",{n:Pe(a.length,n)})}),s&&o(q,{pending:p.pending,onClick:m,children:t("common.loadMore")})]}),p.error&&o(Me,{children:o(pe,{a:p})})]})}function eh(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||"")),r.onerror=()=>n(r.error||new Error("read failed")),r.readAsDataURL(e)})}var th=0;function nh(e){let{t}=ae(),n=qe(),[r,a]=A(""),[i,s]=A([]),[l,c]=A(null),[d,g]=A(!1),u=ce(null),p=ue(),[m,f]=A(0),v=ce(0);v.current=i.length;let w=async z=>{c(null);for(let x of Array.from(z||[])){if(!x.type||!x.type.startsWith("image/")){c({key:"err.imageType"});continue}if(x.size>Yg){c({key:"err.imageTooLarge"});continue}if(v.current>=jr){c({key:"err.tooManyImages"});break}v.current++,f(M=>M+1);try{let M=await eh(x);if(!n.current)return;let L={id:`img-${++th}`,filename:x.name||"image",mime_type:x.type,size:x.size,data_base64:M.replace(/^data:[^;]+;base64,/,""),url:M};s(H=>H.length>=jr?H:[...H,L])}catch{v.current--,c({key:"err.imageRead"})}finally{n.current&&f(M=>M-1)}}},k=()=>void p.run(async()=>{let z=r.trim();if(!z)return{error:{key:"err.feedbackEmpty"}};if(z.length>Wr)return{error:{key:"err.feedbackTooLong"}};let x=i.map(({filename:L,mime_type:H,size:V,data_base64:ee})=>({filename:L,mime_type:H,size:V,data_base64:ee})),M=await Q("/feedback",{method:"POST",body:{description:z,attachments:x},timeoutMs:12e4});if(!M.ok)return De(M);e.onSubmitted()});return o("div",{class:`fx-sub fx-form fx-composer${d?" is-drag":""}`,onPaste:z=>{let x=Array.from(z.clipboardData?.items||[]).filter(M=>M.kind==="file").map(M=>M.getAsFile()).filter(Boolean);x.length&&(z.preventDefault(),w(x))},onDragOver:z=>{z.preventDefault(),g(!0)},onDragLeave:()=>g(!1),onDrop:z=>{z.preventDefault(),g(!1),w(z.dataTransfer?.files)},children:[o("label",{class:"fx-field",children:[o("span",{children:t("fb.descLabel")}),o("textarea",{class:"fx-input fx-textarea",rows:5,value:r,maxLength:Wr,autoFocus:!0,placeholder:t("fb.descPlaceholder"),onInput:z=>a(z.currentTarget.value)})]}),o("p",{class:"fx-note",children:t("fb.imagesHint",{n:jr})}),i.length>0&&o("div",{class:"fx-thumbs",children:i.map(z=>o("span",{class:"fx-thumb",children:[o("img",{src:z.url,alt:z.filename}),o("button",{type:"button","aria-label":t("fb.removeImage"),title:t("fb.removeImage"),onClick:()=>{s(x=>x.filter(M=>M.id!==z.id)),c(null)},children:o(J,{name:"x",size:11})})]},z.id))}),l&&o("div",{class:"fx-msg is-error",role:"alert",children:Wt(l,t)}),o("input",{ref:u,type:"file",accept:"image/*",multiple:!0,hidden:!0,onChange:z=>{let x=z.currentTarget;w(x.files),x.value=""}}),o("div",{class:"fx-inline",children:[o(q,{disabled:i.length>=jr||p.pending,onClick:()=>u.current?.click(),children:[o(J,{name:"image",size:12})," ",t("fb.addImages")]}),o("span",{class:"fx-grow"}),o(q,{disabled:p.pending,onClick:e.onCancel,children:t("common.cancel")}),o(q,{variant:"primary",pending:p.pending,disabled:m>0,onClick:k,children:t("fb.submit")})]}),o(pe,{a:p})]})}function oh(e){let{t,locale:n}=ae(),[r,a]=A({state:"loading"}),[i,s]=A(0),[l,c]=A(""),[d,g]=A(null),u=ue(),p=ce(0);oe(()=>{let M=++p.current;return Q(`/feedback/${encodeURIComponent(e.id)}`).then(L=>{if(M===p.current){if(!L.ok){a({state:"error",fail:L});return}a({state:"ready",data:{ticket:L.data.ticket,replies:L.data.replies??[],attachments:L.data.attachments??[]}}),Q(`/feedback/${encodeURIComponent(e.id)}/read`,{method:"POST"})}}),()=>{p.current++}},[e.id,i]),oe(()=>{if(!d)return;let M=L=>{L.key==="Escape"&&g(null)};return window.addEventListener("keydown",M),()=>window.removeEventListener("keydown",M)},[d]);let m=o("div",{class:"fx-back",children:o(q,{onClick:e.onBack,children:[o(J,{name:"back",size:12})," ",t("fb.back")]})});if(r.state==="loading")return o(N,{children:[m,o(Ie,{panels:1,rows:3})]});if(r.state==="error")return o(N,{children:[m,o($e,{error:Bt(r.fail),onRetry:()=>{a({state:"loading"}),s(M=>M+1)}})]});let{ticket:f,replies:v,attachments:w}=r.data,k=f.status==="closed",z=M=>w.filter(L=>(L.reply_id??null)===M),x=()=>void u.run(async()=>{let M=l.trim();if(!M)return{error:{key:"err.replyEmpty"}};if(M.length>Wr)return{error:{key:"err.replyTooLong"}};let L=await Q(`/feedback/${encodeURIComponent(f.id)}/replies`,{method:"POST",body:{content:M},timeoutMs:6e4});return L.ok?(c(""),s(H=>H+1),{success:{key:"fb.replySent"}}):De(L)});return o(N,{children:[m,o(ke,{icon:"message",title:f.title||t("fb.untitled"),actions:o(Jc,{status:f.status}),desc:`#${String(f.id).slice(0,8)} \xB7 ${Gt(f.created_at,n)}`,children:[o("div",{class:"fx-thread fx-block",children:[o(Xc,{who:"user",when:f.created_at,text:f.description||"",files:z(null),onZoom:g}),v.map((M,L)=>o(Xc,{who:M.author_role==="user"?"user":"admin",when:M.created_at,text:M.content||"",files:M.id?z(M.id):[],onZoom:g},M.id??L))]}),k?o(Me,{children:o(de,{children:t("fb.closedNote")})}):o(Me,{class:"fx-form",children:[o("textarea",{class:"fx-input fx-textarea",rows:3,value:l,maxLength:Wr,placeholder:t("fb.replyPlaceholder"),"aria-label":t("fb.replyPlaceholder"),onInput:M=>{c(M.currentTarget.value),u.success&&u.clear()}}),o("div",{class:"fx-inline",children:[o("span",{class:"fx-grow"}),o(q,{variant:"primary",pending:u.pending,onClick:x,children:t("fb.replySend")})]}),o(pe,{a:u})]})]}),d&&o("div",{class:"fx-lightbox",role:"dialog","aria-label":t("fb.imagePreview"),onClick:()=>g(null),children:o("img",{src:d,alt:""})})]})}function Xc(e){let{t,locale:n}=ae();return o("div",{class:`fx-bubble fx-bubble--${e.who}`,children:[o("div",{class:"fx-bubble-meta",children:[e.who==="user"?t("fb.you"):t("fb.support")," \xB7 ",Gt(e.when,n)]}),o("div",{class:"fx-bubble-text",children:e.text}),e.files.length>0&&o("div",{class:"fx-thumbs",children:e.files.map((r,a)=>{let i=r.mime_type||"";if(i.startsWith("image/")&&r.data_base64){let s=`data:${i};base64,${r.data_base64}`;return o("button",{type:"button",class:"fx-thumb",onClick:()=>e.onZoom(s),"aria-label":t("fb.imagePreview"),children:o("img",{src:s,alt:r.filename||""})},r.id??a)}return o("span",{class:"fx-tag",children:[o(J,{name:"card",size:11})," ",r.filename||t("fb.attachment")]},r.id??a)})})]})}var Qc=[{id:"monthly",field:"priceMonthly",discount:"recurringPriceMonthly"},{id:"quarterly",field:"priceQuarterly",discount:"recurringPriceQuarterly"},{id:"yearly",field:"priceYearly",discount:"recurringPriceYearly"}];function Zc(e,t){let n=Qc.find(s=>s.id===t),r=Ce(e.priceMonthly)??0,a=(Ce(e[n.field])??0)||(t==="quarterly"?Math.round(r*300)/100:0),i=Ce(e[n.discount])??0;return i>0&&i<a?i:a}function hi(e,t,n){let r=Pe(e,n),a=String(t||"CNY").toUpperCase();return a==="CNY"?`\xA5${r}`:a==="USD"?`$${r}`:`${r} ${a}`}async function rh(){let[e,t,n]=await Promise.all([Q("/membership/my"),Q("/credits/balance"),Q("/features")]);return!e.ok&&to(e)?e:!t.ok&&to(t)?t:{ok:!0,status:200,data:{membership:e.ok?e.data?.membership??null:null,membershipFailed:!e.ok,balance:t.ok?Ce(t.data?.balance):null,balanceFailed:!t.ok,features:n.ok&&n.data&&typeof n.data=="object"?n.data:{}}}}async function bi(e,t){let[n,r]=await Promise.all([rh(),Q(e)]);return n.ok?r.ok?{ok:!0,status:r.status,data:{status:n.data,list:t(r.data)}}:r:n}var vi=e=>(Array.isArray(e)?e:[]).filter(t=>!!t&&typeof t=="object"&&t.isActive!==!1),ah=15*6e4;function yi(e){let t=ce(0),n=ce(0),r=ce(e);return r.current=e,oe(()=>{let a=()=>{let i=Date.now();i>t.current||document.visibilityState==="hidden"||i-n.current<2e3||(n.current=i,r.current?.())};return window.addEventListener("focus",a),document.addEventListener("visibilitychange",a),()=>{window.removeEventListener("focus",a),document.removeEventListener("visibilitychange",a)}},[]),()=>{t.current=Date.now()+ah}}function ed(e){let t=e.membership;return t&&(t.status===void 0||t.status==="active")?t:null}function xi(e){let{t,locale:n}=ae(),r=e.status,a=ed(r),i=Qo(a?.tier),s=i==="Free";return o("section",{class:"fx-shop-strip","aria-label":t("store.status"),children:[o("div",{class:"fx-shop-stat",children:[o("small",{children:t("store.tier")}),r.membershipFailed?o("b",{class:"is-empty",children:"\u2014"}):o("b",{"data-testid":"shop-tier",children:[s?t("member.freeName"):a?.plan?.name||i,!s&&o("i",{children:a?.expiresAt?t("member.expires",{date:yn(a.expiresAt,n)}):t("member.noExpiry")})]})]}),o("div",{class:"fx-shop-stat",children:[o("small",{children:t("store.balance")}),o("b",{class:r.balance===null?"is-empty":"","data-testid":"shop-balance",children:r.balance===null?"\u2014":Pe(r.balance,n)})]}),(r.membershipFailed||r.balanceFailed)&&o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")}),o("span",{class:"fx-grow"}),e.children]})}function ki(e){return o("section",{class:"fx-shop-section",children:[o("div",{class:"fx-shop-head",children:[o("div",{children:[o("h2",{children:e.title}),e.desc&&o("p",{children:e.desc})]}),e.right]}),e.children]})}function wi(e){let t=ue(),[n,r]=A(null),a=(i,s,l,c)=>{r(i),t.run(async()=>{if(!await On(s,l,c))return{error:{key:"err.openFailed"}};e()})};return{a:t,payingId:t.pending?n:null,open:a}}function zi(e){return o(q,{variant:"ghost",pending:e.pending,disabled:e.disabled,onClick:e.onClick,children:[e.label,o(J,{name:"external",size:12})]})}function Si(e){return o("div",{class:"fx-shop-empty",children:e.children})}function td(){let{t:e,locale:t}=ae(),n=Oe(()=>bi("/payment/offerings",m=>vi(m?.membershipPlans))),r=yi(n.state==="ready"?n.reload:null),a=wi(r),[i,s]=A("monthly");if(n.state==="loading")return o(Ie,{panels:2,rows:2});if(n.state==="signedOut")return o(Be,{});if(n.state==="error")return o($e,{error:n.error,onRetry:n.retry});let{status:l,list:c}=n.data,d=l.features.payment!==!1,g=Qc.filter(m=>c.some(f=>Zc(f,m.id)>0)),u=g.some(m=>m.id===i)?i:g[0]?.id??"monthly",p=ed(l)?.tier?.toLowerCase()??null;return o(N,{children:[o(xi,{status:l,onRetry:n.reload}),o(ki,{title:e("store.choosePlan"),desc:e(d?"store.payHint":"store.payOff"),right:g.length>1?o(St,{value:u,label:e("store.period"),onChange:s,options:g.map(m=>({value:m.id,label:e(`store.period.${m.id}`)}))}):void 0,children:[c.length===0?o(Si,{children:e("store.noPlans")}):o("div",{class:"fx-shop-tiers",children:c.map(m=>{let f=Zc(m,u),v=!!p&&!l.membershipFailed&&m.tier?.toLowerCase()===p;return o("article",{class:"fx-shop-tier","data-tier":m.tier,children:[o("h3",{children:[m.name||Qo(m.tier),v&&o("span",{class:"fx-shop-current",children:[o(J,{name:"check",size:12}),e("store.currentTier")]})]}),o("div",{class:"fx-shop-price",children:f>0?o(N,{children:[hi(f,m.currency,t),o("small",{children:e(`store.per.${u}`)})]}):"\u2014"}),o("p",{children:m.description}),d&&f>0&&o(zi,{label:e(v?"member.renew":"store.pay"),pending:a.payingId===m.id,disabled:a.a.pending,onClick:()=>a.open(m.id,"membership",m.id,u)})]},m.id)})}),o(pe,{a:a.a})]})]})}function nd(){let{t:e,locale:t}=ae(),n=Oe(()=>bi("/payment/offerings",c=>vi(c?.packages))),r=yi(n.state==="ready"?n.reload:null),a=wi(r);if(n.state==="loading")return o(Ie,{panels:2,rows:2});if(n.state==="signedOut")return o(Be,{});if(n.state==="error")return o($e,{error:n.error,onRetry:n.retry});let{status:i,list:s}=n.data,l=i.features.payment!==!1;return o(N,{children:[o(xi,{status:i,onRetry:n.reload}),o(ki,{title:e("store.packs"),desc:e(l?"store.packsHint":"store.payOff"),children:[s.length===0?o(Si,{children:e("store.noPacks")}):o("div",{class:"fx-shop-grid",children:s.map(c=>{let d=Ce(c.price)??0;return o(od,{icon:"coins",kind:e("store.kind.pack"),name:`${c.name||""} \xB7 ${e("store.nPoints",{n:Pe(c.credits,t)})}`,desc:c.description,meta:e("store.instant"),children:l&&d>0&&o(zi,{label:e("store.payPrice",{price:hi(d,c.currency,t)}),pending:a.payingId===c.id,disabled:a.a.pending,onClick:()=>a.open(c.id,"credits")})},c.id)})}),o(pe,{a:a.a})]})]})}function od(e){return o("article",{class:"fx-shop-card",children:[o("div",{class:"fx-shop-visual","aria-hidden":"true",children:e.emoji?o("span",{class:"fx-shop-emoji",children:e.emoji}):o(J,{name:e.icon,size:18})}),o("div",{class:"fx-shop-body",children:[o("span",{class:"fx-shop-kind",children:e.kind}),o("strong",{children:e.name}),e.desc&&o("p",{children:e.desc}),o("div",{class:"fx-shop-foot",children:[o("span",{class:"fx-shop-meta",children:e.meta}),o("span",{class:"fx-shop-acts",children:e.children})]}),e.below]})]})}var ih={reset_card:"store.kind.card",api_quota_key:"store.kind.code"};function sh(e){let{t,locale:n}=ae(),{p:r}=e,a=ue(),[i,s]=A(null),[l,c]=A(!1),d=Ce(r.pricePoints)??0,g=Ce(r.priceRmb)??0,u=typeof r.availableKeys=="number"&&r.availableKeys<=0,p=d>0&&e.balance!==null&&e.balance<d,m=()=>void a.run(async()=>{let v=await Q("/shop/purchase",{method:"POST",body:{productId:r.id,payMethod:"points"},timeoutMs:3e4});return v.ok?(s(typeof v.data?.key=="string"&&v.data.key?v.data.key:null),e.onRedeemed(),{success:{key:"store.redeemed"}}):v.status===0?(c(!0),{error:{key:"store.uncertain"}}):De(v)}),f=u?t("store.soldOut"):p?t("err.insufficientPoints"):typeof r.availableKeys=="number"?t("store.left",{n:r.availableKeys}):t("store.toBackpack");return o(od,{icon:r.type==="api_quota_key"?"key":"gift",emoji:r.icon,kind:t(ih[r.type||""]??"store.kind.item"),name:r.name||"",desc:r.description,meta:f,below:o(N,{children:[o(pe,{a}),i&&o("div",{class:"fx-shop-key",children:[o("code",{children:i}),o(_t,{text:i,label:t("backpack.copyKey")})]})]}),children:[d>0&&o(Kt,{variant:"primary",pending:a.pending,disabled:u||p||l,label:t("store.redeem",{n:Pe(d,n)}),confirmLabel:t("store.redeemConfirm",{n:Pe(d,n)}),onConfirm:m}),e.payment&&g>0&&o(zi,{label:hi(g,r.currency,n),pending:e.paying,disabled:e.payBusy||u,onClick:e.onPay})]})}function rd(){let{t:e,goTo:t}=ae(),n=Oe(()=>bi("/shop/products",d=>vi(d))),r=yi(n.state==="ready"?n.reload:null),a=wi(r);if(n.state==="loading")return o(Ie,{panels:2,rows:2});if(n.state==="signedOut")return o(Be,{});if(n.state==="error")return o($e,{error:n.error,onRetry:n.retry});let{status:i,list:s}=n.data,l=i.features.payment!==!1,c=i.features.shop!==!1;return o(N,{children:[o(xi,{status:i,onRetry:n.reload,children:t&&o(q,{onClick:()=>t("backpack"),children:e("store.openBackpack")})}),o(ki,{title:e("store.redeemTitle"),desc:e("store.redeemHint"),children:[!c||s.length===0?o(Si,{children:e(c?"store.noItems":"store.itemsOff")}):o("div",{class:"fx-shop-grid",children:s.map(d=>o(sh,{p:d,balance:i.balance,payment:l,paying:a.payingId===d.id,payBusy:a.a.pending,onPay:()=>a.open(d.id,"storefront"),onRedeemed:n.reload},d.id))}),o(pe,{a:a.a})]})]})}var lh="forsion-extend",ad=[{id:"account",titleKey:"page.account",tabTitleKey:"page.profile",aliases:["profile"],keywords:"\u4E2A\u4EBA\u4E3B\u9875 profile avatar nickname \u5934\u50CF \u6635\u79F0",Component:vc},{id:"account-details",parent:"account",titleKey:"account.details.title",keywords:"\u767B\u5F55 \u8D44\u6599 \u624B\u673A \u90AE\u7BB1 \u5207\u6362 \u9000\u51FA login sign-in email phone account switch logout",Component:Yl},{id:"security",parent:"account",titleKey:"page.security",keywords:"\u5B89\u5168 \u5BC6\u7801 \u8BBE\u5907 \u7ED1\u5B9A security password devices",Component:Ac},{id:"quota",titleKey:"page.membershipUsage",tabTitleKey:"page.membershipQuota",aliases:["membership"],keywords:"\u4F1A\u5458 \u989D\u5EA6 \u540E\u53F0 quota membership background",Component:wc},{id:"points",parent:"quota",titleKey:"page.pointsInvite",keywords:"\u79EF\u5206 \u9080\u8BF7 \u5151\u6362 \u5145\u503C points invite redeem credits",Component:kc},{id:"usage",parent:"quota",titleKey:"page.usage",keywords:"\u7528\u91CF \u8BB0\u5F55 \u6D88\u8017 usage history tokens",Component:Rc},{id:"backpack",titleKey:"page.backpack",keywords:"\u80CC\u5305 \u5361\u5238 backpack inventory",Component:Sc},{id:"submission",titleKey:"page.submission",Component:jc},{id:"webpages",titleKey:"page.webPages",keywords:"\u7F51\u9875 \u53D1\u5E03 \u94FE\u63A5 \u4E0A\u67B6 \u7F51\u7AD9 web pages publish link site connect",Component:Gc},{id:"feedback",titleKey:"page.helpDiagnostics",tabTitleKey:"page.feedback",webTitleKey:"page.feedback",keywords:"\u5E2E\u52A9 \u53CD\u9988 help feedback",Component:Yc},{id:"diagnostics",parent:"feedback",titleKey:"diag.title",keywords:"\u8BCA\u65AD \u4E0A\u4F20 \u65E5\u5FD7 diagnostic upload logs",Component:Kc,desktopOnly:!0}],id=[{id:"membership",titleKey:"store.membership",descKey:"store.membership.desc",icon:"crown",Component:td},{id:"points",titleKey:"store.points",descKey:"store.points.desc",icon:"coins",Component:nd},{id:"items",titleKey:"store.items",descKey:"store.items.desc",icon:"package",Component:rd}],_i=e=>`forsion/fx:${lh}:${e}`;function sd(e){let{ctx:t,page:n}=e,[r,a]=A(()=>Ze(t.getLocale?.()));oe(()=>{a(Ze(t.getLocale?.()));let l=t.subscribeLocale?.(c=>a(Ze(c)));return()=>{typeof l=="function"&&l()}},[t]);let i=Ot(()=>{let l=t.app?.openSettings;return{ctx:t,locale:r,t:zo(r),goTo:typeof l=="function"?c=>l.call(t.app,_i(c)):null}},[t,r]),s=n.Component;return o(Wa.Provider,{value:i,children:o("div",{class:"fx-acct","data-fx-page":n.id,lang:r==="zh"?"zh-CN":"en",children:[o("style",{children:Sl}),o(s,{})]})})}function ld(e,t=window){let n=bn(t?.tangu);if(!e||!n?.cloudFetch||!n.cloudInvoke||!eo(n)||typeof e.registerStoreView!="function")return 0;let r=a=>()=>xe(Ze(e.getLocale?.()),a);for(let a of id)e.registerStoreView({id:a.id,title:r(a.titleKey),description:r(a.descKey),group:r("store.group"),icon:a.icon,mount(i){return He(o(sd,{ctx:e,page:a}),i),()=>{He(null,i)}}});return id.length}function cd(e,t=window){let n=bn(t?.tangu);if(!e||!n?.cloudFetch||!n.cloudInvoke||!eo(n)||typeof e.registerSettingsView!="function")return 0;let r=vn(n)?ad.filter(a=>!a.desktopOnly):ad;for(let a of r)e.registerSettingsView({id:a.id,category:"forsion",parent:a.parent,tabTitle:a.tabTitleKey?()=>xe(Ze(e.getLocale?.()),a.tabTitleKey):void 0,aliases:a.aliases,keywords:a.keywords,title:()=>xe(Ze(e.getLocale?.()),vn(n)&&a.webTitleKey||a.titleKey),mount(i){return He(o(sd,{ctx:e,page:a}),i),()=>{He(null,i)}}});return r.length}var So=[{id:"lv1"},{id:"lv2"},{id:"lv3"},{id:"lv4"},{id:"new",version:"2.14"}],G=(e,t)=>({zh:e,en:t}),Bn=[{id:"welcome",level:"lv1",icon:"compass",title:G("\u8BA4\u8BC6 Forsion","Meet Forsion"),tasks:[{id:"guide-open",event:"own:guide.open",goal:1,title:G("\u6253\u5F00\u4F7F\u7528\u6307\u5357","Open the guide")},{id:"space-switch",event:"space.switch",goal:1,title:G("\u5728 Ribbon \u4E0A\u6362\u4E00\u4E2A Space","Switch to another Space from the ribbon"),go:{space:"amadeus"},spot:{anchor:"ribbon-spaces",here:!0,title:G("\u70B9 Ribbon \u4E0A\u4EFB\u610F\u4E00\u4E2A\u56FE\u6807","Click any icon on the ribbon"),body:G("\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space\uFF0C\u70B9\u4E00\u4E0B\u5C31\u5207\u8FC7\u53BB\u3002","Each icon is a Space. One click switches to it.")}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon",label:G("Ribbon\uFF1A\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space","Ribbon: each icon is a Space")},{slot:"main-tabs",label:G("\u4E3B\u533A\u7684\u6807\u7B7E\u9875","Tabs in the main area"),text:G("\u6807\u7B7E\u9875","Tab")},{slot:["left-list","right"],label:G("\u5DE6\u53F3\u4FA7\u680F","Left and right sidebars")}]}},{id:"chat",level:"lv1",icon:"message-circle",title:G("\u548C Tangu \u8BF4\u7B2C\u4E00\u53E5\u8BDD","Say hello to Tangu"),tasks:[{id:"chat-first",event:"chat.send",goal:1,title:G("\u53D1\u51FA\u7B2C\u4E00\u6761\u6D88\u606F","Send your first message"),go:{space:"tangu",command:"new-chat"},spot:{anchor:"chat-composer",title:G("\u5728\u8FD9\u91CC\u6253\u4E2A\u62DB\u547C","Say hello here"),body:G("\u6253\u5B57\uFF0C\u6309 Enter \u53D1\u9001\uFF1BShift+Enter \u6362\u884C\u3002","Type, then press Enter to send. Shift+Enter starts a new line.")}},{id:"chat-five",event:"chat.send",goal:5,title:G("\u518D\u804A\u51E0\u53E5\uFF08\u7D2F\u8BA1 5 \u6761\uFF09","Keep talking (5 messages in all)"),go:{space:"tangu"},spot:{anchor:"chat-composer",title:G("\u63A5\u7740\u804A\u51E0\u53E5","Keep the conversation going"),body:G("\u7D2F\u8BA1\u53D1\u51FA 5 \u6761\u5C31\u7B97\u5B8C\u6210\u3002","Five messages in all and this one is done.")}}],figure:{layout:"space",main:"chat",marks:[{slot:"left-top",label:G("\u5DE6\u680F\u9876\u90E8\u300C\u65B0\u4F1A\u8BDD\u300D",'"New chat" at the top of the left sidebar'),text:G("\u65B0\u4F1A\u8BDD","New chat")},{slot:"main-bottom",label:G("\u8F93\u5165\u6846","Message box")}]}},{id:"note",level:"lv1",icon:"file-text",title:G("\u5199\u4E0B\u7B2C\u4E00\u7BC7\u7B14\u8BB0","Write your first note"),tasks:[{id:"note-create",event:"note.create",goal:1,title:G("\u65B0\u5EFA\u4E00\u7BC7\u7B14\u8BB0","Create a note"),go:{space:"amadeus",command:"amadeus-new-note"},spot:{anchor:"note-new",title:G("\u70B9\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D",'Click "New note"'),body:G("\u4E5F\u53EF\u4EE5\u6309 \u2318/Ctrl+N\u3002\u6BCF\u7BC7\u7B14\u8BB0\u90FD\u662F\u667A\u5E93\u91CC\u7684\u4E00\u4E2A .md \u6587\u4EF6\u3002","Or press \u2318/Ctrl+N. Every note is a .md file in your vault.")}},{id:"note-link",event:"note.wikilink",goal:1,title:G("\u7528 [[ \u94FE\u63A5\u53E6\u4E00\u7BC7\u7B14\u8BB0","Link another note with [["),go:{space:"amadeus"},spot:{anchor:"note-body",title:G("\u5728\u6B63\u6587\u91CC\u8F93\u5165 [[","Type [[ in the note"),body:G("\u4ECE\u5F39\u51FA\u7684\u5019\u9009\u91CC\u9009\u4E00\u7BC7\u7B14\u8BB0\uFF0C\u6309 Enter\uFF0C\u4E24\u7BC7\u5C31\u8FDE\u4E0A\u4E86\u3002","Pick a note from the suggestions and press Enter to link the two.")}},{id:"note-canvas",event:"note.canvas",goal:1,title:G("\u628A\u7B14\u8BB0\u5207\u5230\u753B\u5E03","Switch a note to the canvas"),go:{space:"amadeus",command:"amadeus-toggle-canvas"},spot:{anchor:"note-canvas",title:G("\u70B9\u300C\u753B\u5E03\u300D",'Click "Canvas"'),body:G("\u540C\u4E00\u7BC7\u7B14\u8BB0\u644A\u6210\u767D\u677F\uFF0C\u968F\u624B\u6446\uFF1B\u70B9\u300C\u6587\u6863\u300D\u5207\u56DE\u6765\uFF0C\u4E00\u4E2A\u5B57\u90FD\u4E0D\u53D8\u3002",'The same note opens as a whiteboard. Click "Document" to switch back; nothing changes.')}}],figure:{layout:"space",main:"doc",marks:[{slot:"left-top",label:G("\u5DE6\u680F\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D",'"New note" in the left sidebar'),text:G("\u65B0\u5EFA\u7B14\u8BB0","New note")},{slot:"main-top",label:G("\u300C\u6587\u6863 / \u753B\u5E03\u300D\u80F6\u56CA","The Document / Canvas switch")},{slot:"right",label:G("\u53F3\u680F\u91CC\u7684\u300C\u53CD\u94FE\u300D","Backlinks in the right sidebar"),text:G("\u53CD\u94FE","Backlinks")}]}},{id:"theme",level:"lv1",icon:"sparkles",title:G("\u6362\u4E00\u8EAB\u4E3B\u9898","Make it look like yours"),tasks:[{id:"theme-change",event:"theme.change",goal:1,title:G("\u6362\u4E00\u4E2A\u4E3B\u9898","Pick another theme"),go:{settings:"theme"}}],figure:{layout:"settings",marks:[{slot:"nav",label:G("\u8BBE\u7F6E\u91CC\u7684\u300C\u5916\u89C2\u300D",'"Appearance" in Settings'),text:G("\u5916\u89C2","Appearance")},{slot:"section-1",label:G("\u8BBE\u8BA1\u8BED\u8A00","Design language"),text:G("\u8BBE\u8BA1\u8BED\u8A00","Design language")},{slot:"section-2",label:G("\u4E3B\u9898\u8272\u548C\u80CC\u666F\u8272","Theme and background colors"),text:G("\u914D\u8272","Colors")}]}},{id:"database",level:"lv2",icon:"database",title:G("\u6570\u636E\u5E93\uFF1A\u628A\u7B14\u8BB0\u53D8\u6210\u8868","Databases: turn notes into a table"),tasks:[{id:"base-create",event:"base.create",goal:1,title:G("\u65B0\u5EFA\u4E00\u4E2A\u6570\u636E\u5E93","Create a database"),go:{space:"amadeus"}}],figure:{layout:"space",main:"doc",marks:[{slot:"left-list",label:G("\u7B14\u8BB0\u6811\uFF1A\u53F3\u952E \u2192\u300C\u65B0\u5EFA Base\u300D",'Note tree: right-click \u2192 "New Base"')},{slot:"main-body",label:G("\u6B63\u6587\u91CC\u8F93\u5165 /\uFF0C\u9009\u300C\u591A\u7EF4\u8868\u300D",'Type / in a note and pick "Database"')}]}},{id:"market",level:"lv2",icon:"store",title:G("\u4ECE\u5546\u5E97\u88C5\u4E00\u4E2A\u63D2\u4EF6","Install a plugin from the store"),tasks:[{id:"market-install",event:"market.install",goal:1,title:G("\u88C5\u4E00\u4E2A\u63D2\u4EF6","Install a plugin"),go:{command:"open-market"}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon-bottom",label:G("Ribbon \u5E95\u90E8\u7684\u300C\u5546\u5E97\u300D",'"Store" at the bottom of the ribbon')}]}},{id:"space",level:"lv2",icon:"layout-grid",title:G("\u5B58\u4E0B\u81EA\u5DF1\u7684 Space","Save a Space of your own"),tasks:[{id:"space-save",event:"space.save",goal:1,title:G("\u628A\u5F53\u524D\u5E03\u5C40\u5B58\u6210 Space","Save the current layout as a Space"),go:{command:"save-as-space"}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon-plus",label:G("Space \u533A\u7684 \uFF0B","The + under the Spaces")},{slot:"main-top-right",label:G("\u53F3\u4E0A\u89D2\u7684\u6D6E\u52A8\u6309\u94AE","Floating buttons at the top right")}]}},{id:"calendar",level:"lv2",icon:"calendar-days",title:G("\u65E5\u5386\u548C\u5F85\u529E","Calendar and to-dos"),tasks:[{id:"calendar-event",event:"calendar.event",goal:1,title:G("\u5728\u65E5\u5386\u4E0A\u5EFA\u4E00\u4E2A\u65E5\u7A0B","Add an event to the calendar"),go:{space:"calendar"}},{id:"todo-done",event:"todo.done",goal:1,title:G("\u52FE\u6389\u4E00\u6761\u5F85\u529E","Tick off a to-do"),go:{space:"calendar"}}],figure:{layout:"space",main:"grid",marks:[{slot:"left-plus",label:G("\u5DE6\u680F\u300C\u65E5\u5386\u300D\u65C1\u7684 +",'The + next to "Calendars" in the left sidebar')},{slot:"main-body",label:G("\u65F6\u95F4\u683C\uFF1A\u5355\u51FB\u5EFA\u65E5\u7A0B","Time grid: click to add an event")},{slot:"right",label:G("\u53F3\u680F\u7684\u5F85\u529E","To-dos in the right sidebar"),text:G("\u5F85\u529E","To-dos")}]}},{id:"agent",level:"lv3",icon:"bot",title:G("\u521B\u5EFA\u4F60\u7684 Agent","Create your own agent"),tasks:[{id:"agent-create",event:"agent.create",goal:1,title:G("\u65B0\u5EFA\u4E00\u4E2A Agent","Create an agent"),go:{space:"agents"},spot:{anchor:"agent-new",title:G("\u70B9\u300C\u521B\u5EFA Agent\u300D",'Click "Create agent"'),body:G("\u8D77\u4E2A\u540D\u5B57\uFF0C\u5199\u51E0\u53E5\u5B83\u8BE5\u600E\u4E48\u505A\u4E8B\u3002","Give it a name and a few lines on how it should work.")}}]},{id:"muse",level:"lv3",icon:"sparkles",title:G("Muse\uFF1A\u8BA9\u7075\u611F\u81EA\u5DF1\u957F","Muse: ideas that grow on their own"),tasks:[{id:"muse-open",event:"muse.open",goal:1,title:G("\u53BB Muse \u770B\u4E00\u773C","Take a look at Muse"),go:{space:"muse"}}]},{id:"automation",level:"lv3",icon:"zap",title:G("\u81EA\u52A8\u5316\uFF1A\u5230\u70B9\u5C31\u505A","Automations: done on schedule"),tasks:[{id:"automation-create",event:"automation.create",goal:1,title:G("\u5EFA\u4E00\u6761\u81EA\u52A8\u5316","Create an automation"),go:{space:"automation"}}]},{id:"computer",level:"lv4",icon:"terminal",title:G("\u8BA9 Tangu \u64CD\u4F5C\u7535\u8111","Let Tangu use your computer"),tasks:[{id:"cu-use",event:"computer.use",goal:1,title:G("\u8BA9 Tangu \u7528\u4E00\u6B21\u7535\u8111","Have Tangu use your computer once"),go:{settings:"computer-use"},desktopOnly:!0}]},{id:"plugin",level:"lv4",icon:"code",title:G("\u5199\u4E00\u4E2A\u81EA\u5DF1\u7684\u63D2\u4EF6","Write a plugin of your own"),tasks:[{id:"plugin-dev",event:"plugin.local",goal:1,title:G("\u4ECE\u672C\u673A\u6587\u4EF6\u5939\u8F7D\u5165\u4E00\u4E2A\u63D2\u4EF6","Load a plugin from a local folder"),go:{settings:"amadeus-plugins"},desktopOnly:!0}]},{id:"mini-capsules",level:"new",icon:"layout-grid",title:G("Mini \u9876\u680F\u4E24\u9897\u80F6\u56CA","Two capsules on the Mini bar"),tasks:[{id:"mini-open",event:"mini.open",goal:1,title:G("\u6253\u5F00\u4E00\u6B21 Mini \u7A97\u53E3","Open the Mini window"),go:{command:"open-mini"},desktopOnly:!0}]},{id:"todo-standalone",level:"new",icon:"list-tree",title:G("\u5F85\u529E\u89C6\u56FE\u5355\u72EC\u6253\u5F00","Open the to-do view on its own"),tasks:[{id:"todo-open",event:"todo.open",goal:1,title:G("\u5355\u72EC\u6253\u5F00\u4E00\u6B21\u5F85\u529E\u89C6\u56FE","Open the to-do view by itself"),go:{space:"calendar"}}]}],en=e=>Bn.filter(t=>t.level===e),Fn=e=>Bn.find(t=>t.id===e);var Ft=So.filter(e=>!e.version);function sn(e,t){let n=e.event.startsWith("own:");return t.count(n?e.event.slice(4):e.event,n)>=e.goal}var rr=(e,t)=>e.filter(n=>t.desktop||!n.desktopOnly);function dd(e,t){return en(e).every(n=>rr(n.tasks,t).every(r=>sn(r,t)))}function Gr(e,t){let n=Ft.findIndex(r=>r.id===e);return n<=0||t.unlockAll?!0:Ft.slice(0,n).every(r=>dd(r.id,t))}function _o(e,t){return Gr(e.level,t)?rr(e.tasks,t).every(n=>sn(n,t))?"done":"active":"locked"}function Ci(e){return Ft.find(t=>!dd(t.id,e))?.id??null}function ud(e){let t={...e,unlockAll:!1},n=Ft[0].id;for(let r of Ft)Gr(r.id,t)&&(n=r.id);return n}function ch(e,t){let n=e.split(/[.+-]/).map(a=>Number.parseInt(a,10)||0),r=t.split(/[.+-]/).map(a=>Number.parseInt(a,10)||0);for(let a=0;a<Math.max(n.length,r.length);a++){let i=(n[a]??0)-(r[a]??0);if(i)return i<0?-1:1}return 0}function Ti(e){let t=So.find(n=>n.version);return t?.version&&e.appVersion&&ch(e.appVersion,t.version)>=0?t.version:null}var pd=e=>Bn.filter(t=>t.level!=="new"||!!Ti(e));function fd(e,t){let n=rr(en(e).flatMap(r=>r.tasks),t);return{done:n.filter(r=>sn(r,t)).length,total:n.length}}var Ai={zh:{agent:`\u9664\u4E86\u9ED8\u8BA4\u7684 Tangu\uFF0C\u4F60\u53EF\u4EE5\u6309\u7528\u9014\u5EFA\u81EA\u5DF1\u7684 Agent\uFF1A\u7ED9\u5B83\u540D\u5B57\u3001\u5DE5\u4F5C\u6307\u4EE4\u548C\u81EA\u5DF1\u7684\u8BB0\u5FC6\uFF0C\u8BA9\u5B83\u4E13\u95E8\u505A\u4E00\u7C7B\u4E8B\u3002
|
|
694
|
+
`;var lo=e=>typeof e=="string"?e:"";function rg(e){if(!e||typeof e!="object")return null;let t=e,n=typeof t.id=="string"?t.id.trim():typeof t.id=="number"&&Number.isFinite(t.id)?String(t.id):"",r=lo(t.titleZh),a=lo(t.bodyZh);return!n||!r.trim()&&!a.trim()?null:{id:n,titleZh:r,titleEn:lo(t.titleEn).trim()?lo(t.titleEn):null,bodyZh:a,bodyEn:lo(t.bodyEn).trim()?lo(t.bodyEn):null,format:t.format==="html"?"html":"markdown",publishedAt:lo(t.publishedAt)||null}}function ag(e,t){return t==="en"&&e.bodyEn?{lang:"en",title:e.titleEn??e.titleZh,body:e.bodyEn}:{lang:"zh",title:e.titleZh,body:e.bodyZh}}var ig=new Va({gfm:!0,breaks:!0}),sg=["script","iframe","frame","frameset","object","embed","applet","portal","form","input","textarea","select","option","button","link","meta","base","noscript"],lg=/^(?:https?:|mailto:|#)/i;function nc(e){return Ia.sanitize(e,{FORCE_BODY:!0,RETURN_DOM_FRAGMENT:!0,FORBID_TAGS:sg,ALLOWED_URI_REGEXP:lg})}function ii(e,t){let n=t==="markdown"?ig.parse(e,{async:!1}):e;return nc(n)}var jr=null;function si(){if(jr===null)try{let e=nc('<p onclick="1"><a href="javascript:void 0">a</a></p><script>1<\/script><iframe></iframe>');jr=Ia.isSupported&&!e.querySelector("script, iframe, [onclick], a[href]")}catch{jr=!1}return jr}function cg(e){try{let t=new URL(String(e??"").trim());return t.protocol==="http:"||t.protocol==="https:"?t.href:null}catch{return null}}var dg="http://www.w3.org/1999/xlink";function _n(e){let t=e.target,n=t&&typeof t.closest=="function"?t.closest("a, area"):null;if(!n||(e.preventDefault(),e.type!=="click"))return;let r=cg(n.getAttribute("href")??n.getAttributeNS(dg,"href"));if(r)try{oe().openExternal?.(r)?.catch(()=>{})}catch{}}function Gr(e){return e.shadowRoot??e.attachShadow({mode:"open"})}function ug(e){let{ctx:t,ann:n}=e,[r,a]=C(()=>De(t.getLocale?.()));J(()=>{a(De(t.getLocale?.()));let p=t.subscribeLocale?.(m=>a(De(m)));return()=>{typeof p=="function"&&p()}},[t]);let i=Ht(()=>Sn(r),[r]),s=ag(n,r),l=re(null),c=re(null),d=re(null),g=re(null),u=re(e.onClose);return u.current=e.onClose,J(()=>{let p=document.activeElement instanceof HTMLElement?document.activeElement:null;l.current?.focus();let m=v=>{if(v.key==="Escape"){v.preventDefault(),v.stopPropagation(),u.current();return}if(v.key!=="Tab")return;let k=c.current,z=d.current,x=l.current;if(!k||!z||!x)return;let w=document.activeElement;if(!w||!x.contains(w)){v.preventDefault(),(v.shiftKey?z:k).focus();return}v.shiftKey&&(w===k||w===x)?(v.preventDefault(),z.focus()):!v.shiftKey&&w===z&&(v.preventDefault(),k.focus())},f=v=>{let k=l.current;k&&v.target instanceof Node&&!k.contains(v.target)&&k.focus()};return window.addEventListener("keydown",m,!0),document.addEventListener("focusin",f,!0),()=>{window.removeEventListener("keydown",m,!0),document.removeEventListener("focusin",f,!0),p?.isConnected&&p.focus()}},[]),J(()=>{let p=g.current;if(!p)return;let m=Gr(p);return m.addEventListener("click",_n),m.addEventListener("auxclick",_n),()=>{m.removeEventListener("click",_n),m.removeEventListener("auxclick",_n)}},[]),J(()=>{let p=g.current;if(!p)return;let m=document.createElement("style");m.textContent=Vr;let f=document.createElement("div");f.className="doc",f.appendChild(ii(s.body,n.format)),Gr(p).replaceChildren(m,f)},[s.body,n.format]),o("div",{class:"fx-ann-backdrop",children:[o("style",{children:tc}),o("section",{ref:l,class:"fx-ann",role:"dialog","aria-modal":"true","aria-labelledby":"fx-ann-title","aria-describedby":"fx-ann-body",tabIndex:-1,lang:s.lang==="zh"?"zh-CN":"en","data-announcement-id":n.id,children:[o("button",{ref:c,type:"button",class:"fx-ann-close","aria-label":i("ann.close"),onClick:()=>u.current(),children:o(W,{name:"x",size:16})}),o("div",{class:"fx-ann-eyebrow",children:i("ann.eyebrow")}),o("h2",{id:"fx-ann-title",class:"fx-ann-title",children:s.title}),o("div",{class:"fx-ann-body",children:o("div",{ref:g,id:"fx-ann-body",class:"fx-ann-doc"})}),o("div",{class:"fx-ann-footer",children:o("button",{ref:d,type:"button",class:"fx-ann-ok",onClick:()=>u.current(),children:i("ann.ok")})})]})]})}function pg(e){try{return new URLSearchParams(e||"").has("window")}catch{return!1}}function fg(e=document,t=12e3){let n=e.getElementById("tangu-splash");return n?.parentNode?new Promise(r=>{let a=()=>{i.disconnect(),clearTimeout(s),r()},i=new MutationObserver(()=>{n.isConnected||a()});i.observe(n.parentNode,{childList:!0});let s=setTimeout(a,t)}):Promise.resolve()}function oc(e,t=window){let n=nn(t?.tangu);if(!e||!n?.cloudFetch||!wn(n)||pg(t.location?.search))return null;let r=0,a=!1,i=null,s=null,l=()=>{s?.done(),s=null},c=Promise.resolve(),d=(p,m)=>{let f=document.createElement("div");f.className="fx-ann-root",document.body.appendChild(f);let v=!1,k=z=>{v||(v=!0,i?.id===p.id&&(i=null),Me(null,f),f.remove(),m?.done(),z&&(c=te(`/announcements/${encodeURIComponent(p.id)}/seen`,{method:"POST"})))};i={id:p.id,finish:k},Me(o(ug,{ctx:e,ann:p,onClose:()=>k(!0)}),f)},g=async()=>{let p=++r;await c;let m=await te("/announcements/pending");if(a||p!==r||!m.ok)return;let f=rg(m.data?.announcement);if(!f||i||!si()||(await fg(),a||p!==r||i))return;let v=e.app?.queuePopup?.();if(v&&(l(),s=v,await v.ready,s===v&&(s=null),a||p!==r||i)){v.done();return}d(f,v)},u=n.onAuthChanged?.(p=>{i?.finish(!1),l(),p?.loggedIn?g():r++});return g(),{check:g,dispose(){a=!0,r++,typeof u=="function"&&u(),i?.finish(!1),l()}}}function rc(e){return typeof e!="string"?{ok:!1,rule:"format"}:e.length<8?{ok:!1,rule:"min"}:e.length>64?{ok:!1,rule:"max"}:/\s/.test(e)?{ok:!1,rule:"space"}:/[a-z]/.test(e)?/[A-Z]/.test(e)?/[^A-Za-z0-9]/.test(e)?{ok:!0}:{ok:!1,rule:"special"}:{ok:!1,rule:"upper"}:{ok:!1,rule:"lower"}}function ac(e){return{length:e.length>=8&&e.length<=64,lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),special:/[^A-Za-z0-9]/.test(e),space:e.length>0&&!/\s/.test(e)}}var ic={\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E:"format","\u5BC6\u7801\u81F3\u5C11 8 \u4F4D":"min","\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D":"max",\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C:"space",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD:"lower",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD:"upper",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26:"special"};var sc={no_reset_card:"err.noResetCard",invalid_type:"err.generic",invalid_count:"err.invalidCount",insufficient_points:"err.insufficientPoints",price_changed:"err.priceChanged",insufficient_main_quota:"err.insufficientMainQuota",background_unavailable:"err.backgroundUnavailable",invalid_percent:"err.generic",invalid_request:"err.generic",invalid_invite_code:"err.invalidInviteCode",already_used:"err.inviteAlreadyUsed",window_expired:"err.inviteWindowExpired",ITEM_NOT_FOUND:"backpack.unavailable",ITEM_NOT_ACTIVE:"backpack.unavailable",ITEM_NOT_USABLE:"backpack.notUsable",ITEM_EFFECT_UNAVAILABLE:"backpack.quotaUnavailable",FEATURE_DISABLED:"err.featureDisabled",INSUFFICIENT_POINTS:"err.insufficientPoints",OUT_OF_STOCK:"store.soldOut",LIMIT_REACHED:"store.limitReached",NOT_AVAILABLE:"store.unavailable",NOT_POINTS_PURCHASABLE:"store.unavailable",CAPTCHA_FAILED:"err.captcha",machine_username:"profile.blocked.machineUsername",publish_blocked:"profile.blocked.publishBlocked",invalid_settings:"profile.invalid"},lc={"Current password is incorrect":"err.currentPasswordWrong","Current and new password are required":"err.passwordRequired",\u9A8C\u8BC1\u7801\u65E0\u6548\u6216\u5DF2\u8FC7\u671F:"err.codeInvalid","Invalid or expired verification code":"err.codeInvalid",\u8D26\u53F7\u6216\u9A8C\u8BC1\u7801\u9519\u8BEF:"err.codeInvalid",\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801:"err.codeRequired","Email already in use":"err.emailInUse","Phone number already in use":"err.phoneInUse","Invalid email format":"err.emailInvalid","Email is required":"err.emailInvalid","Invalid phone number format":"err.phoneInvalid","Phone number is required":"err.phoneInvalid","Invalid phone number or email format":"err.targetInvalid","Please wait before requesting another code":"err.codeCooldown","Failed to send verification code":"err.codeSendFailed","Invalid target for account deletion":"err.deleteTargetInvalid","\u8EAB\u4EFD\u9A8C\u8BC1\u5931\u8D25\uFF0C\u65E0\u6CD5\u6CE8\u9500\u8D26\u6237":"err.deleteVerifyFailed",\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500:"err.adminCannotDelete",\u79EF\u5206\u4F59\u989D\u4E0D\u8DB3:"err.insufficientPoints","\u5151\u6362\u5F20\u6570\u9700\u4E3A 1-50 \u7684\u6574\u6570":"err.invalidCount",\u6CA1\u6709\u53EF\u7528\u7684\u91CD\u7F6E\u5361:"err.noResetCard","\u4E3B\u989D\u5EA6\u5DF2\u7528\u5B8C,\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6":"err.insufficientMainQuota",\u540E\u53F0\u989D\u5EA6\u6682\u4E0D\u53EF\u7528:"err.backgroundUnavailable",\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548:"err.invalidInviteCode","\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F":"err.inviteWindowExpired",\u4F60\u5DF2\u4F7F\u7528\u8FC7\u9080\u8BF7\u7801:"err.inviteAlreadyUsed","You have already used an invite code":"err.inviteAlreadyUsed","Cannot use your own invite code":"err.inviteOwnCode","Invite code is required":"err.inviteEmpty","code is required":"err.redeemEmpty","Redemption code not found":"err.redeemNotFound","Redemption code is not active":"err.redeemInactive","Redemption code has expired":"err.redeemExpired","Redemption code has reached maximum uses":"err.redeemUsedUp","You have already used this code the maximum number of times":"err.redeemUserLimit",avatar_too_large:"err.avatarTooLarge","description is required":"err.feedbackEmpty","description too long (max 10000 chars)":"err.feedbackTooLong","content is required":"err.replyEmpty","content too long (max 10000 chars)":"err.replyTooLong","Ticket not found":"err.ticketNotFound","Too many attachments (max 5)":"err.tooManyImages","Attachment type not allowed (image / json / text only)":"err.imageType","\u4EBA\u673A\u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5":"err.captcha",\u5E94\u7528\u4E0D\u5B58\u5728\u6216\u4E0D\u5C5E\u4E8E\u4F60:"err.webPageGone","\u5E94\u7528\u5DF2\u88AB\u505C\u7528\uFF0C\u65E0\u6CD5\u7533\u8BF7\u4E0A\u67B6":"web.disabledHint",\u6CA1\u6709\u5BF9\u5E94\u7684\u4E0A\u67B6\u7533\u8BF7:"err.listingGone","\u8BF7\u586B\u5199\u5E94\u7528\u7B80\u4ECB\uFF08300 \u5B57\u4EE5\u5185\uFF09":"err.listingSummary"},li={format:"pw.rule.format",min:"pw.rule.min",max:"pw.rule.max",space:"pw.rule.space",lower:"pw.rule.lower",upper:"pw.rule.upper",special:"pw.rule.special"};function mg(e){if(e.code&&sc[e.code])return sc[e.code];if(e.detail){if(lc[e.detail])return lc[e.detail];let t=ic[e.detail];if(t)return li[t];if(e.detail.startsWith("Attachment exceeds 5MB"))return"err.imageTooLarge"}return null}function wt(e){let t=mg(e);return t?{key:t}:zn(e)?{key:"err.signedOut"}:e.status===0?{key:"err.network"}:e.status===401?{key:"err.session"}:e.status===429?{key:"err.tooFrequent"}:e.detail?{raw:e.detail}:e.status>=500?{key:"err.server",vars:{status:e.status}}:{key:"err.generic"}}function ar(e){let t=e.trim();return t?/cancelled\.?$/i.test(t)?null:t==="A sign-in is already in progress."?{key:"err.loginInProgress"}:t.startsWith("\u767B\u5F55\u8D85\u65F6")?{key:"err.loginTimeout"}:t.startsWith("\u767B\u5F55\u7801\u5DF2\u8FC7\u671F")?{key:"err.loginCodeExpired"}:t.startsWith("\u65E0\u6CD5\u8FDE\u63A5")?{key:"err.network"}:t.startsWith("\u4E91\u7AEF\u4E0D\u652F\u6301 CLI \u767B\u5F55")?{key:"err.loginUnsupported"}:t.startsWith("\u8BF7\u5148\u586B\u5199 Forsion \u4E91\u7AEF\u5730\u5740")?{key:"err.noCloudUrl"}:t.startsWith("Account is no longer signed in")?{key:"err.accountGone"}:{raw:t}:{key:"err.generic"}}var ci=Ur(null);function ie(){let e=ni(ci);if(!e)throw new Error("forsion-extend: page rendered outside its host root");return e}var Ye=()=>ie().t;function Ue(){let e=re(!0);return J(()=>(e.current=!0,()=>{e.current=!1}),[]),e}var cc={pending:!1,error:null,success:null,captcha:!1};function pe(){let e=Ue(),[t,n]=C(cc),r=re(!1),a=tn(async s=>{if(r.current)return;r.current=!0,n({pending:!0,error:null,success:null,captcha:!1});let l;try{l=await s()}catch(c){l={error:{raw:String(c?.message||c)}}}r.current=!1,e.current&&n({pending:!1,error:l?.error??null,success:l?.success??null,captcha:!!l?.captcha})},[]),i=tn(()=>{r.current||n(cc)},[]);return{...t,run:a,clear:i}}var Re=e=>({error:wt(e),captcha:e.status===403&&e.code==="CAPTCHA_FAILED"});function dc(){let[e,t]=C(0),n=re(null);J(()=>()=>{n.current&&clearInterval(n.current)},[]);let r=tn((i=60)=>{n.current&&clearInterval(n.current),t(i),n.current=setInterval(()=>{t(s=>s<=1?(n.current&&clearInterval(n.current),n.current=null,0):s-1)},1e3)},[]),a=tn(()=>{n.current&&clearInterval(n.current),n.current=null,t(0)},[]);return{left:e,start:r,stop:a}}function qe(e){let[t,n]=C({state:"loading"}),r=re(0),a=re(e);a.current=e;let i=tn((c=!1)=>{let d=++r.current;c||n({state:"loading"}),(async()=>{let g;try{g=await a.current()}catch(u){g={ok:!1,status:0,code:null,detail:null,transport:String(u?.message||u)}}d===r.current&&(g.ok?n({state:"ready",data:g.data,gen:d}):zn(g)?n({state:"signedOut"}):(g.status===401&&oe().authStatus?.().catch(()=>{}),n({state:"error",fail:g})))})()},[]);J(()=>{i();let c=oe().onAuthChanged?.(()=>i());return()=>{r.current++,c?.()}},[i]);let s=tn(()=>i(),[i]),l=tn(()=>i(!0),[i]);switch(t.state){case"ready":{let c=t.gen,d=g=>n(u=>u.state==="ready"&&u.gen===c?{...u,data:g(u.data)}:u);return{state:"ready",data:t.data,reload:l,update:d}}case"error":return{state:"error",error:wt(t.fail),retry:s};default:return t}}function Xr(e){let t=String(e||"").trim();if(!t)return"";let n=t.startsWith("+")?4:3;return t.length<=n+4?`${t.slice(0,2)}***`:`${t.slice(0,n)}****${t.slice(-4)}`}function Jr(e){let t=String(e||"").trim(),n=t.lastIndexOf("@");if(n<=0)return t?`${t.slice(0,1)}***`:"";let r=t.slice(0,n);return`${r.slice(0,r.length<=2?1:2)}***${t.slice(n)}`}function ir(e){let t=String(e||"").trim().toLowerCase()||"free";return t.charAt(0).toUpperCase()+t.slice(1)}var gg=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function uc(e,t){let n=String(e||"").trim(),r,a,i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n);if(i)r=Number(i[2]),a=Number(i[3]);else{let s=new Date(n);if(!n||Number.isNaN(s.getTime()))return null;let l=new Intl.DateTimeFormat("en-US",{timeZone:"Asia/Shanghai",month:"numeric",day:"numeric"}).formatToParts(s);r=Number(l.find(c=>c.type==="month")?.value),a=Number(l.find(c=>c.type==="day")?.value)}return!(r>=1&&r<=12)||!(a>=1&&a<=31)?null:t==="zh"?`${r}\u6708${a}\u65E5`:`${gg[r-1]} ${a}`}var di=e=>e==="zh"?"zh-CN":"en-US";function pc(e){if(e==null||e==="")return null;let t=new Date(typeof e=="string"&&/^\d+$/.test(e)?Number(e):e);return Number.isNaN(t.getTime())?null:t}function on(e,t){let n=pc(e);return n?new Intl.DateTimeFormat(di(t),{year:"numeric",month:"short",day:"numeric"}).format(n):"\u2014"}function Et(e,t){let n=pc(e);return n?new Intl.DateTimeFormat(di(t),{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(n):"\u2014"}function Oe(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?new Intl.NumberFormat(di(t),{maximumFractionDigits:2}).format(n):"\u2014"}var co=(e=>(e[e.Border=-1]="Border",e[e.Data=0]="Data",e[e.Function=1]="Function",e[e.Position=2]="Position",e[e.Timing=3]="Timing",e[e.Alignment=4]="Alignment",e))(co||{}),hg=[0,1],mc=[1,0],gc=[2,3],hc=[3,2],vg={L:hg,M:mc,Q:gc,H:hc},bg=/^\d*$/,yg=/^[A-Z0-9 $%*+./:-]*$/,ui="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",gi=1,hi=40,fc=3,xg=3,Kr=40,kg=10,vc=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],bc=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],pi=class{constructor(t,n,r,a){if(this.version=t,this.ecc=n,t<gi||t>hi)throw new RangeError("Version value out of range");if(a<-1||a>7)throw new RangeError("Mask value out of range");this.size=t*4+17;let i=Array.from({length:this.size}).fill(!1);for(let l=0;l<this.size;l++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);if(this.drawCodewords(s),a===-1){let l=1e9;for(let c=0;c<8;c++){this.applyMask(c),this.drawFormatBits(c);let d=this.getPenaltyScore();d<l&&(a=c,l=d),this.applyMask(c)}}this.mask=a,this.applyMask(a),this.drawFormatBits(a)}size;mask;modules=[];types=[];getModule(t,n){return t>=0&&t<this.size&&n>=0&&n<this.size&&this.modules[n][t]}drawFunctionPatterns(){for(let r=0;r<this.size;r++)this.setFunctionModule(6,r,r%2===0,co.Timing),this.setFunctionModule(r,6,r%2===0,co.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let t=this.getAlignmentPatternPositions(),n=t.length;for(let r=0;r<n;r++)for(let a=0;a<n;a++)r===0&&a===0||r===0&&a===n-1||r===n-1&&a===0||this.drawAlignmentPattern(t[r],t[a]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let n=this.ecc[1]<<3|t,r=n;for(let i=0;i<10;i++)r=r<<1^(r>>>9)*1335;let a=(n<<10|r)^21522;for(let i=0;i<=5;i++)this.setFunctionModule(8,i,Cn(a,i));this.setFunctionModule(8,7,Cn(a,6)),this.setFunctionModule(8,8,Cn(a,7)),this.setFunctionModule(7,8,Cn(a,8));for(let i=9;i<15;i++)this.setFunctionModule(14-i,8,Cn(a,i));for(let i=0;i<8;i++)this.setFunctionModule(this.size-1-i,8,Cn(a,i));for(let i=8;i<15;i++)this.setFunctionModule(8,this.size-15+i,Cn(a,i));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let r=0;r<12;r++)t=t<<1^(t>>>11)*7973;let n=this.version<<12|t;for(let r=0;r<18;r++){let a=Cn(n,r),i=this.size-11+r%3,s=Math.floor(r/3);this.setFunctionModule(i,s,a),this.setFunctionModule(s,i,a)}}drawFinderPattern(t,n){for(let r=-4;r<=4;r++)for(let a=-4;a<=4;a++){let i=Math.max(Math.abs(a),Math.abs(r)),s=t+a,l=n+r;s>=0&&s<this.size&&l>=0&&l<this.size&&this.setFunctionModule(s,l,i!==2&&i!==4,co.Position)}}drawAlignmentPattern(t,n){for(let r=-2;r<=2;r++)for(let a=-2;a<=2;a++)this.setFunctionModule(t+a,n+r,Math.max(Math.abs(a),Math.abs(r))!==1,co.Alignment)}setFunctionModule(t,n,r,a=co.Function){this.modules[n][t]=r,this.types[n][t]=a}addEccAndInterleave(t){let n=this.version,r=this.ecc;if(t.length!==Yr(n,r))throw new RangeError("Invalid argument");let a=bc[r[0]][n],i=vc[r[0]][n],s=Math.floor(fi(n)/8),l=a-s%a,c=Math.floor(s/a),d=[],g=Pg(i);for(let p=0,m=0;p<a;p++){let f=t.slice(m,m+c-i+(p<l?0:1));m+=f.length;let v=Mg(f,g);p<l&&f.push(0),d.push(f.concat(v))}let u=[];for(let p=0;p<d[0].length;p++)d.forEach((m,f)=>{(p!==c-i||f>=l)&&u.push(m[p])});return u}drawCodewords(t){if(t.length!==Math.floor(fi(this.version)/8))throw new RangeError("Invalid argument");let n=0;for(let r=this.size-1;r>=1;r-=2){r===6&&(r=5);for(let a=0;a<this.size;a++)for(let i=0;i<2;i++){let s=r-i,c=(r+1&2)===0?this.size-1-a:a;!this.types[c][s]&&n<t.length*8&&(this.modules[c][s]=Cn(t[n>>>3],7-(n&7)),n++)}}}applyMask(t){if(t<0||t>7)throw new RangeError("Mask value out of range");for(let n=0;n<this.size;n++)for(let r=0;r<this.size;r++){let a;switch(t){case 0:a=(r+n)%2===0;break;case 1:a=n%2===0;break;case 2:a=r%3===0;break;case 3:a=(r+n)%3===0;break;case 4:a=(Math.floor(r/3)+Math.floor(n/2))%2===0;break;case 5:a=r*n%2+r*n%3===0;break;case 6:a=(r*n%2+r*n%3)%2===0;break;case 7:a=((r+n)%2+r*n%3)%2===0;break;default:throw new Error("Unreachable")}!this.types[n][r]&&a&&(this.modules[n][r]=!this.modules[n][r])}}getPenaltyScore(){let t=0;for(let i=0;i<this.size;i++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let d=0;d<this.size;d++)this.modules[i][d]===s?(l++,l===5?t+=fc:l>5&&t++):(this.finderPenaltyAddHistory(l,c),s||(t+=this.finderPenaltyCountPatterns(c)*Kr),s=this.modules[i][d],l=1);t+=this.finderPenaltyTerminateAndCount(s,l,c)*Kr}for(let i=0;i<this.size;i++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let d=0;d<this.size;d++)this.modules[d][i]===s?(l++,l===5?t+=fc:l>5&&t++):(this.finderPenaltyAddHistory(l,c),s||(t+=this.finderPenaltyCountPatterns(c)*Kr),s=this.modules[d][i],l=1);t+=this.finderPenaltyTerminateAndCount(s,l,c)*Kr}for(let i=0;i<this.size-1;i++)for(let s=0;s<this.size-1;s++){let l=this.modules[i][s];l===this.modules[i][s+1]&&l===this.modules[i+1][s]&&l===this.modules[i+1][s+1]&&(t+=xg)}let n=0;for(let i of this.modules)n=i.reduce((s,l)=>s+(l?1:0),n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return t+=a*kg,t}getAlignmentPatternPositions(){if(this.version===1)return[];{let t=Math.floor(this.version/7)+2,n=this.version===32?26:Math.ceil((this.version*4+4)/(t*2-2))*2,r=[6];for(let a=this.size-7;r.length<t;a-=n)r.splice(1,0,a);return r}}finderPenaltyCountPatterns(t){let n=t[1],r=n>0&&t[2]===n&&t[3]===n*3&&t[4]===n&&t[5]===n;return(r&&t[0]>=n*4&&t[6]>=n?1:0)+(r&&t[6]>=n*4&&t[0]>=n?1:0)}finderPenaltyTerminateAndCount(t,n,r){return t&&(this.finderPenaltyAddHistory(n,r),n=0),n+=this.size,this.finderPenaltyAddHistory(n,r),this.finderPenaltyCountPatterns(r)}finderPenaltyAddHistory(t,n){n[0]===0&&(t+=this.size),n.pop(),n.unshift(t)}};function Tn(e,t,n){if(t<0||t>31||e>>>t)throw new RangeError("Value out of range");for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function Cn(e,t){return(e>>>t&1)!==0}var sr=class{constructor(t,n,r){if(this.mode=t,this.numChars=n,this.bitData=r,n<0)throw new RangeError("Invalid argument");this.bitData=r.slice()}getData(){return this.bitData.slice()}},wg=[1,10,12,14],zg=[2,9,11,13],Sg=[4,8,16,16];function yc(e,t){return e[Math.floor((t+7)/17)+1]}function xc(e){let t=[];for(let n of e)Tn(n,8,t);return new sr(Sg,e.length,t)}function _g(e){if(!kc(e))throw new RangeError("String contains non-numeric characters");let t=[];for(let n=0;n<e.length;){let r=Math.min(e.length-n,3);Tn(Number.parseInt(e.substring(n,n+r),10),r*3+1,t),n+=r}return new sr(wg,e.length,t)}function Cg(e){if(!wc(e))throw new RangeError("String contains unencodable characters in alphanumeric mode");let t=[],n;for(n=0;n+2<=e.length;n+=2){let r=ui.indexOf(e.charAt(n))*45;r+=ui.indexOf(e.charAt(n+1)),Tn(r,11,t)}return n<e.length&&Tn(ui.indexOf(e.charAt(n)),6,t),new sr(zg,e.length,t)}function Tg(e){return e===""?[]:kc(e)?[_g(e)]:wc(e)?[Cg(e)]:[xc(Eg(e))]}function kc(e){return bg.test(e)}function wc(e){return yg.test(e)}function Ag(e,t){let n=0;for(let r of e){let a=yc(r.mode,t);if(r.numChars>=1<<a)return Number.POSITIVE_INFINITY;n+=4+a+r.bitData.length}return n}function Eg(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)!=="%"?t.push(e.charCodeAt(n)):(t.push(Number.parseInt(e.substring(n+1,n+3),16)),n+=2);return t}function fi(e){if(e<gi||e>hi)throw new RangeError("Version number out of range");let t=(16*e+128)*e+64;if(e>=2){let n=Math.floor(e/7)+2;t-=(25*n-10)*n-55,e>=7&&(t-=36)}return t}function Yr(e,t){return Math.floor(fi(e)/8)-vc[t[0]][e]*bc[t[0]][e]}function Pg(e){if(e<1||e>255)throw new RangeError("Degree out of range");let t=[];for(let r=0;r<e-1;r++)t.push(0);t.push(1);let n=1;for(let r=0;r<e;r++){for(let a=0;a<t.length;a++)t[a]=mi(t[a],n),a+1<t.length&&(t[a]^=t[a+1]);n=mi(n,2)}return t}function Mg(e,t){let n=t.map(r=>0);for(let r of e){let a=r^n.shift();n.push(0),t.forEach((i,s)=>n[s]^=mi(i,a))}return n}function mi(e,t){if(e>>>8||t>>>8)throw new RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return n}function Rg(e,t,n=1,r=40,a=-1,i=!0){if(!(gi<=n&&n<=r&&r<=hi)||a<-1||a>7)throw new RangeError("Invalid value");let s,l;for(s=n;;s++){let u=Yr(s,t)*8,p=Ag(e,s);if(p<=u){l=p;break}if(s>=r)throw new RangeError("Data too long")}for(let u of[mc,gc,hc])i&&l<=Yr(s,u)*8&&(t=u);let c=[];for(let u of e){Tn(u.mode[0],4,c),Tn(u.numChars,yc(u.mode,s),c);for(let p of u.getData())c.push(p)}let d=Yr(s,t)*8;Tn(0,Math.min(4,d-c.length),c),Tn(0,(8-c.length%8)%8,c);for(let u=236;c.length<d;u^=253)Tn(u,8,c);let g=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((u,p)=>g[p>>>3]|=u<<7-(p&7)),new pi(s,t,g,a)}function zc(e,t){let{ecc:n="L",boostEcc:r=!1,minVersion:a=1,maxVersion:i=40,maskPattern:s=-1,border:l=1}=t||{},c=typeof e=="string"?Tg(e):Array.isArray(e)?[xc(e)]:void 0;if(!c)throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof e}`);let d=Rg(c,vg[n],a,i,s,r),g=Ig({version:d.version,maskPattern:d.mask,size:d.size,data:d.modules,types:d.types},l);return t?.invert&&(g.data=g.data.map(u=>u.map(p=>!p))),t?.onEncoded?.(g),g}function Ig(e,t=1){if(!t)return e;let{size:n}=e,r=n+t*2;e.size=r,e.data.forEach(i=>{for(let s=0;s<t;s++)i.unshift(!1),i.push(!1)});for(let i=0;i<t;i++)e.data.unshift(Array.from({length:r},s=>!1)),e.data.push(Array.from({length:r},s=>!1));let a=co.Border;e.types.forEach(i=>{for(let s=0;s<t;s++)i.unshift(a),i.push(a)});for(let i=0;i<t;i++)e.types.unshift(Array.from({length:r},s=>a)),e.types.push(Array.from({length:r},s=>a));return e}function xe(e){return o("section",{class:`settings-panel fx-panel${e.danger?" fx-panel--danger":""}`,"aria-label":e.label,children:[o("div",{class:`settings-panel-head${e.actions?" settings-panel-head--actions":""}`,children:[e.icon&&o("span",{class:"settings-panel-icon",children:o(W,{name:e.icon,size:16})}),o("div",{children:[o("strong",{children:e.title}),e.desc&&o("p",{children:e.desc})]}),e.actions&&o("div",{class:"settings-panel-actions settings-panel-actions--wide",children:e.actions})]}),e.children]})}function Fe(e){return o("div",{class:`settings-control-row settings-setting-row fx-row fx-block${e.class?` ${e.class}`:""}`,children:[o("div",{class:"settings-control-copy",children:o("span",{children:[o("strong",{children:e.label}),e.desc&&o("small",{children:e.desc})]})}),e.children!==void 0&&e.children!==null&&o("div",{class:"settings-row-control fx-row-control",children:e.children})]})}function Te(e){return o("div",{class:`fx-sub${e.class?` ${e.class}`:""}`,children:e.children})}function qt(e){return o("button",{type:"button",role:"switch","aria-checked":e.checked,"aria-label":e.label,class:`settings-switch${e.checked?" active":""}`,disabled:e.disabled,onClick:()=>e.onChange(!e.checked),children:o("span",{})})}function X(e){let t=e.variant??"ghost",n=t==="danger-solid"?"btn sm danger fx-danger-solid":`btn sm ${t}`;return o("button",{type:e.submit?"submit":"button",class:n,disabled:e.disabled||e.pending,"aria-busy":e.pending||void 0,"aria-label":e.label,title:e.title,"data-armed":e.armed?"true":void 0,onClick:e.onClick,children:[e.pending&&o(Ao,{}),e.children]})}var Zr=5e3;function Pt(e){let[t,n]=C(!1),r=re(null),a=()=>{r.current&&clearTimeout(r.current),r.current=null,n(!1)};J(()=>()=>{r.current&&clearTimeout(r.current)},[]),J(()=>{(e.pending||e.disabled)&&a()},[e.pending,e.disabled]);let i=()=>{if(!t){n(!0),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{r.current=null,n(!1)},Zr);return}a(),e.onConfirm()},s=e.variant??"ghost";return o(X,{variant:t?s==="danger"||s==="danger-solid"?"danger-solid":"primary":s,armed:t,pending:e.pending,disabled:e.disabled,onClick:i,children:t?e.confirmLabel:e.label})}function fe(e){let t=Ye(),{a:n}=e;return n.error?o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:kt(n.error,t)}),n.captcha&&o("button",{type:"button",class:"fx-link",onClick:()=>void so(e.captchaSection??"security"),children:[t("common.openInBrowser")," ",o(W,{name:"external",size:12})]})]}):n.success?o("div",{class:"fx-msg is-ok",role:"status",children:kt(n.success,t)}):null}function ce(e){return o("p",{class:`fx-note${e.tone?` is-${e.tone}`:""}`,children:e.children})}function lt(e){return o("div",{class:"settings-empty-row fx-block",children:e.children})}function lr(e){let t=Ye(),n=e.display;return o("div",{class:`fx-quota${n.low?" is-low":""}`,children:[o("div",{class:"fx-quota-top",children:[o("span",{class:"fx-quota-label",children:e.label}),o("span",{class:"fx-quota-value",children:n.unlimited?t("common.unlimited"):n.text})]}),o("div",{class:"fx-bar",role:"progressbar","aria-label":e.label,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n.pct,"aria-valuetext":n.unlimited?t("common.unlimited"):n.text,children:o("span",{style:{width:`${n.pct}%`}})}),e.note&&o("div",{class:"fx-quota-note",children:e.note})]})}function Mt(e){return o("div",{class:"seg fx-seg",role:"radiogroup","aria-label":e.label,children:e.options.map(t=>o("button",{type:"button",role:"radio","aria-checked":t.value===e.value,class:t.value===e.value?"active":"",onClick:()=>{t.value!==e.value&&e.onChange(t.value)},children:t.label}))})}async function Qr(e){try{return await navigator.clipboard.writeText(e),!0}catch{try{let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let n=document.execCommand("copy");return t.remove(),n}catch{return!1}}}function Rt(e){let t=Ye(),[n,r]=C("idle"),a=re(null);J(()=>()=>{a.current&&clearTimeout(a.current)},[]);let i=async()=>{let s=await Qr(e.text);r(s?"copied":"failed"),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>r("idle"),1800)};return o(X,{disabled:e.disabled||!e.text,onClick:()=>void i(),children:[o(W,{name:n==="copied"?"check":"copy",size:12}),n==="copied"?t("common.copied"):n==="failed"?t("common.copyFailed"):e.label]})}function Lg(e){let t=Ht(()=>{try{return zc(e.value,{ecc:"M",border:2})}catch{return null}},[e.value]);if(!t)return null;let n="";t.data.forEach((a,i)=>a.forEach((s,l)=>{s&&(n+=`M${l} ${i}h1v1h-1z`)}));let r=e.size??148;return o("svg",{class:"fx-qr",width:r,height:r,viewBox:`0 0 ${t.size} ${t.size}`,"shape-rendering":"crispEdges",role:"img","aria-label":e.label,children:[o("rect",{width:t.size,height:t.size,fill:"#fff"}),o("path",{d:n,fill:"#000"})]})}function vi(e){let t=Ye(),{device:n}=e;return o("div",{class:"fx-device",children:[o(Lg,{value:n.url,label:t("signin.qrLabel")}),o("div",{class:"fx-device-copy",children:[o("p",{children:t("signin.deviceHint")}),n.userCode&&o("div",{class:"fx-device-code",children:[o("span",{children:t("signin.code")}),o("code",{children:n.userCode})]}),o("div",{class:"fx-inline",children:[o("button",{type:"button",class:"fx-link",onClick:()=>window.open(n.url,"_blank"),children:[t("signin.openLink")," ",o(W,{name:"external",size:12})]}),o(Rt,{text:n.url,label:t("signin.copyLink")})]})]})]})}function We(){let e=Ye(),t=pe(),[n,r]=C(null);J(()=>oe().onAuthDevice?.(i=>r(i)),[]);let a=()=>void t.run(async()=>{let i=oe().forsionLogin;if(!i)return{error:{key:"err.unavailable"}};try{await i()}catch(s){r(null);let l=ar(xt(s));return l?{error:l}:void 0}});return o("section",{class:"settings-panel fx-panel fx-signin","aria-label":e("signin.button"),children:o("div",{class:"settings-state fx-signin-body",children:[o("span",{class:"settings-state-icon",children:o(W,{name:"user",size:18})}),o("p",{class:"fx-signin-lead",children:e("signin.desc")}),o("div",{class:"settings-state-actions",children:o(X,{variant:"primary",pending:t.pending,onClick:a,children:t.pending?e("signin.pending"):e("signin.button")})}),n&&o(vi,{device:n}),o(fe,{a:t})]})})}function Ie(e){let t=Ye(),n=e.panels??2,r=e.rows??2;return o("div",{class:"fx-skeleton","aria-busy":"true","aria-label":t("common.loading"),children:Array.from({length:n},(a,i)=>o("section",{class:"settings-panel fx-panel",children:[o("div",{class:"settings-panel-head",children:[o("span",{class:"fx-skel fx-skel--icon"}),o("div",{children:[o("span",{class:"fx-skel fx-skel--title"}),o("span",{class:"fx-skel fx-skel--line"})]})]}),Array.from({length:r},(s,l)=>o("div",{class:"settings-control-row",children:o("span",{class:"fx-skel fx-skel--row"})},l))]},i))})}function je(e){let t=Ye();return o("section",{class:"settings-panel fx-panel",children:o("div",{class:"settings-state fx-error-state",role:"alert",children:[o("span",{class:"settings-state-icon",children:o(W,{name:"alert",size:18})}),o("strong",{children:t("common.loadFailed")}),o("p",{children:kt(e.error,t)}),o("div",{class:"settings-state-actions",children:o(X,{variant:"primary",onClick:e.onRetry,children:[o(W,{name:"refresh",size:12})," ",t("common.retry")]})})]})})}function _c(){let{t:e}=ie(),t=qe(()=>te("/auth/me"));if(t.state==="loading")return o(Ie,{panels:2});if(t.state==="signedOut")return o(We,{});if(t.state==="error")return o(je,{error:t.error,onRetry:t.retry});let n=t.data;return o(N,{children:[o(xe,{icon:"user",title:e("account.details.title"),desc:e("account.details.desc"),children:[o(Fe,{label:e("account.details.username"),children:[o("span",{class:"fx-value",children:n.username}),n.role==="ADMIN"&&o("span",{class:"fx-tag",children:e("account.role.admin")})]}),o(Sc,{kind:"phone",value:n.phone}),o(Sc,{kind:"email",value:n.email})]}),o(Dg,{}),o(Og,{})]})}function Sc(e){let{t,goTo:n}=ie(),r=!!e.value,a=r?e.kind==="phone"?Xr(e.value):Jr(e.value):t("account.contact.unbound"),i=e.kind==="phone"?t("account.contact.phone"):t("account.contact.email");return o(Fe,{label:i,children:n?o("button",{type:"button",class:`fx-link-row${r?"":" is-empty"}`,onClick:()=>n("security"),title:t("account.contact.manage"),children:[o("span",{children:a}),o(W,{name:"chevron",size:12})]}):o("span",{class:`fx-value${r?"":" is-empty"}`,children:a})})}function Dg(){let{t:e}=ie(),t=Ue(),[n,r]=C(null),[a,i]=C(!1),[s,l]=C(null),[c,d]=C(null),g=pe(),u=pe(),p=pe(),m=!kn(oe()),f=m&&!!oe().authAccounts;J(()=>{let w=0,P=()=>{let H=oe().authAccounts;if(!f||!H)return;let B=++w;i(!1),H().then(G=>{B===w&&r(Array.isArray(G)?G:[])}).catch(()=>{B===w&&i(!0)})};P();let L=oe().onAuthChanged?.(P),U=oe().onAuthDevice?.(H=>d(H));return()=>{w++,L?.(),U?.()}},[]);let v=w=>{l(w),g.run(async()=>{let P=oe().forsionSwitchAccount;if(!P)return{error:{key:"err.unavailable"}};try{await P(w)}catch(L){let U=ar(xt(L));return U?{error:U}:void 0}finally{t.current&&l(null)}})},k=()=>void u.run(async()=>{let w=oe().forsionLogin;if(!w)return{error:{key:"err.unavailable"}};d(null);try{await w()}catch(P){t.current&&d(null);let L=ar(xt(P));return L?{error:L}:void 0}}),z=()=>void p.run(async()=>{let w=oe().forsionLogout;if(!w)return{error:{key:"err.unavailable"}};try{await w()}catch(P){return{error:{raw:xt(P)||e("err.generic")}}}}),x=g.pending||u.pending||p.pending;return o(xe,{icon:m?"laptop":"user",title:e(m?"local.title":"session.title"),desc:e(m?"local.desc":"session.desc"),children:[f&&n===null&&!a&&o(lt,{children:[o(Ao,{})," ",e("common.loading")]}),a&&o("div",{class:"fx-sub",children:o(ce,{tone:"warn",children:e("local.loadFailed")})}),n&&n.length===0&&o(lt,{children:e("local.empty")}),n&&n.length>0&&o("div",{class:"fx-list fx-block",role:"list",children:n.map(w=>o("div",{class:"fx-list-row",role:"listitem",children:[o("span",{class:"fx-list-icon",children:o(W,{name:"user",size:14})}),o("span",{class:"fx-list-main",children:[o("strong",{children:w.nickname||w.username||"Forsion"}),o("small",{children:[w.username&&w.nickname?w.username:null,Ng(w.cloudUrl)].filter(Boolean).join(" \xB7 ")})]}),w.active?o("span",{class:"fx-tag fx-tag--accent",children:[o(W,{name:"check",size:11})," ",e("local.current")]}):o(X,{pending:s===w.id,disabled:x&&s!==w.id,onClick:()=>v(w.id),children:e("local.switch")})]},w.id))}),u.pending&&c&&o("div",{class:"fx-sub",children:o(vi,{device:c})}),o("div",{class:"settings-panel-footer fx-footer",children:[o(X,{pending:u.pending,disabled:x&&!u.pending,onClick:k,children:[o(W,{name:"plus",size:12})," ",u.pending?e("signin.pending"):e("local.add")]}),o(X,{pending:p.pending,disabled:x&&!p.pending,onClick:z,children:[o(W,{name:"logout",size:12})," ",e("local.signOut")]})]}),(g.error||u.error||p.error)&&o("div",{class:"fx-sub fx-sub--tight",children:[o(fe,{a:g}),o(fe,{a:u}),o(fe,{a:p})]})]})}function Ng(e){try{return new URL(e).host}catch{return e}}function Og(){let{t:e}=ie(),t=pe();return o("div",{class:"fx-page-foot",children:[o("button",{type:"button",class:"fx-link",disabled:t.pending,onClick:()=>void t.run(async()=>await so()?void 0:{error:{key:"err.openFailed"}}),children:[e("account.web.open")," ",o(W,{name:"external",size:12})]}),o("span",{class:"fx-muted",children:e("account.web.desc")}),o(fe,{a:t})]})}var Fg=e=>!!e&&typeof e=="object"&&typeof e.enabled=="boolean";async function ea(e,t,n=Fg){let r=oe().cloudInvoke;if(!r)throw new Error("no_bridge");let a=await r(e,t);if(!n(a))throw new Error(String(a?.error??"unavailable"));return a}var Bg=[["bug","crash"],["bot","agent"],["gauge","perf"],["pointer","feature"]];function Cc(){let{t:e,locale:t}=ie(),n=Ue(),[r,a]=C(null),[i,s]=C(!1),[l,c]=C(!1),[d,g]=C(null),u=pe(),p=pe(),m=pe();if(J(()=>{ea("telemetry:get").then(x=>{n.current&&(a(x),s(!0))},()=>{n.current&&s(!0)})},[]),!i)return o(Ie,{panels:1});if(!r)return o(lt,{children:e("privacy.unavailable")});let f=r.enabled&&r.noticeSeen,v=x=>void u.run(async()=>{try{let w=await ea("telemetry:set",x?{enabled:!0,noticeSeen:!0}:{enabled:!1});n.current&&(a(w),x||g(null))}catch(w){return{error:{raw:xt(w)||e("err.generic")}}}}),k=()=>void p.run(async()=>{try{let x=await ea("telemetry:sent",void 0,w=>Array.isArray(w?.batches));n.current&&g(x.batches)}catch(x){return{error:{raw:xt(x)||e("err.generic")}}}}),z=()=>void m.run(async()=>{try{let x=await ea("telemetry:delete");return n.current&&(a(x),g(null)),{success:{key:"privacy.delete.done"}}}catch(x){return{error:{key:"privacy.delete.failed",vars:{reason:xt(x)||e("err.generic")}}}}});return o(xe,{icon:"shield",title:e("privacy.improve.title"),desc:e("privacy.improve.desc"),children:[o(Fe,{label:e("privacy.improve.switch"),desc:e("privacy.improve.switchHint"),children:o(qt,{checked:f,disabled:u.pending||!r.available,label:e("privacy.improve.switch"),onChange:v})}),(!r.available||!r.packaged||u.error)&&o(Te,{children:[r.available?!r.packaged&&o(ce,{children:e("privacy.devBuild")}):o(ce,{children:e("privacy.needUpdate")}),o(fe,{a:u})]}),o("div",{class:"settings-control-row fx-row fx-block",children:o("button",{type:"button",class:"fx-link fx-disclosure","aria-expanded":l,onClick:()=>c(!l),children:[o(W,{name:"chevron",size:12}),e("privacy.details")]})}),l&&Bg.map(([x,w])=>o(Fe,{label:o("span",{class:"fx-inline",children:[o(W,{name:x}),e(`privacy.kind.${w}`)]}),desc:e(`privacy.kind.${w}Desc`)},w)),o(Fe,{label:e("privacy.sent.title"),desc:r.lastSentAt?e("privacy.sent.last",{time:Et(r.lastSentAt,t)}):e("privacy.sent.hint"),children:o(X,{pending:p.pending,onClick:k,children:[o(W,{name:"eye",size:12})," ",e("privacy.sent.view")]})}),(d||p.error)&&o(Te,{children:[o(fe,{a:p}),d&&(d.length?o("pre",{class:"fx-sent",children:JSON.stringify(d.map(x=>({at:new Date(x.at).toISOString(),...x.body})),null,2)}):o(ce,{children:e("privacy.sent.empty")}))]}),o(Fe,{label:e("privacy.delete.title"),desc:e("privacy.delete.hint"),children:o(Pt,{label:e("privacy.delete.button"),confirmLabel:e("privacy.delete.confirm"),variant:"danger",pending:m.pending,onConfirm:z})}),(m.error||m.success)&&o(Te,{children:o(fe,{a:m})}),o(Te,{class:"fx-sub--tight",children:o("span",{class:"fx-muted",children:e("privacy.installId",{id:`${r.installId.slice(0,6)}\u2026${r.installId.slice(-4)}`})})})]})}var uo=class extends Error{};async function Tc(e,t=256){if(e.size>20971520)throw new uo;let n=URL.createObjectURL(e);try{let r=new Image;await new Promise((g,u)=>{r.onload=()=>g(),r.onerror=()=>u(new Error("image decode failed")),r.src=n});let a=r.naturalWidth,i=r.naturalHeight;if(!a||!i)throw new Error("empty image");if(a*i>5e7)throw new uo;let s=Math.min(1,t/Math.max(a,i)),l=document.createElement("canvas");l.width=Math.max(1,Math.round(a*s)),l.height=Math.max(1,Math.round(i*s));let c=l.getContext("2d");if(!c)throw new Error("canvas unavailable");c.fillStyle="#fff",c.fillRect(0,0,l.width,l.height),c.drawImage(r,0,0,l.width,l.height);let d=l.toDataURL("image/jpeg",.85);if(d.length>262144)throw new uo;return d}finally{URL.revokeObjectURL(n)}}function Ac(e){let t=String(e||"").trim();if(!t)return"?";let n=Array.from(t)[0];return/[㐀-鿿]/.test(n)?n:Array.from(t).slice(0,2).join("").toUpperCase()}var Ec=["cream","coral","teal","lavender"],Pc=["auto","light","dark"],Mc=["none","mist","contour","dots"],Rc=["none","ring","pro"],Ic=["early","streak","author","inviter","event"];var Lc=e=>`/u/${encodeURIComponent(e)}`,bi=e=>!!e&&e.toLowerCase()!=="free";function yi(e,t){let n={...e.settings,...t};return{...e,settings:n,bio:n.bio,links:n.links,skin:n.skin,mode:n.mode,cover:n.cover,frame:n.frame==="pro"&&!bi(e.tier)?"none":n.frame,modules:n.modules.filter(r=>r.show).map(r=>({id:r.id}))}}function xi(e,t,n){let r=e.findIndex(s=>s.id===t),a=r+n;if(r<0||a<0||a>=e.length)return e;let i=e.slice();return[i[r],i[a]]=[i[a],i[r]],i}function Dc(e){let t=e.trim();if(!t)return null;let n=/^[a-z][a-z0-9+.-]*:/i.test(t)?t:`https://${t}`,r;try{r=new URL(n)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:"||!r.hostname.includes("."))return null;let a=r.toString();return a.length<=200?a:null}function ki(e){return e.replace(/^https?:\/\//i,"").replace(/^www\./i,"").replace(/\/$/,"")}function Nc(e,t){let n=t==="zh"?[[1e8,"\u4EBF"],[1e4,"\u4E07"]]:[[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[r,a]of n)if(e>=r){let i=e/r;return{value:i>=100?String(Math.round(i)):String(Math.round(i*10)/10),unit:a}}return{value:Math.round(e).toLocaleString("en-US"),unit:""}}var Oc=e=>e==="zh"?"zh-CN":"en-US";function Fc(e,t){let[n,r]=e.split("-").map(Number);if(!n||!r)return[];let a=new Intl.DateTimeFormat(Oc(t),{month:"short",timeZone:"UTC"});return Array.from({length:12},(i,s)=>a.format(new Date(Date.UTC(n,r-12+s,1))))}function Bc(e,t){let[n,r]=e.split("-").map(Number);return!n||!r?"":new Intl.DateTimeFormat(Oc(t),{year:"numeric",month:"short",timeZone:"UTC"}).format(new Date(Date.UTC(n,r-1,1)))}function $c([e,t]){let n=r=>`${String((r%24+24)%24).padStart(2,"0")}:00`;return`${n(e)} \u2013 ${n(t)}`}function Uc(e){let t=0,n=Promise.resolve(),r=()=>{let a=t;return e.read().then(i=>{a===t&&e.apply(i)})};return{read:r,write(a){let i=++t,s=n.then(a).then(l=>{i===t&&e.apply(l)});return n=s.catch(()=>i===t?r().catch(()=>{}):void 0),s}}}var Vc={skill:{key:"profile.work.skill",icon:"sparkles"},agent:{key:"profile.work.agent",icon:"bot"},plugin:{key:"profile.work.plugin",icon:"box"},space:{key:"profile.work.space",icon:"grid"},theme:{key:"profile.work.theme",icon:"palette"},"amadeus-plugin":{key:"profile.work.note",icon:"note"},webapp:{key:"profile.work.webapp",icon:"globe"}},qc={early:"sprout",streak:"flame",author:"box",inviter:"gift",event:"trophy"},Wc={plus:"Plus",pro:"Pro"},zi=e=>!!e&&/^https?:\/\//i.test(e);function Si(e){if(!zi(e))return;let t=oe().openExternal;t?t(e).catch(()=>{}):window.open(e,"_blank","noopener")}async function Hg(){let e=oe().cloudInvoke;if(!e)return null;try{let t=await e("profile:publicOrigin");return t?.ok&&typeof t.origin=="string"&&/^https?:\/\/[^/]+$/i.test(t.origin)?t.origin:null}catch{return null}}async function qg(e,t,n){let r=await te(e,{method:t,body:n});if(!r.ok)throw r;if(!r.data?.profile)throw{ok:!1,status:r.status,code:null,detail:null,transport:"bad_response"};return r.data.profile}var jc=e=>e&&typeof e=="object"&&e.ok===!1?wt(e):{raw:String(e?.message||e)};function Gc(){let{t:e}=ie(),t=qe(async()=>{let[r,a,i]=await Promise.all([te("/profile/me"),te("/auth/me"),Hg()]);return a.ok?r.ok?r.data?.profile?{ok:!0,status:r.status,data:{profile:r.data.profile,me:a.data,origin:i}}:{ok:!0,status:404,data:null}:r.status===404?{ok:!0,status:404,data:null}:r:a});if(t.state==="loading")return o(Ie,{panels:2,rows:3});if(t.state==="signedOut")return o(We,{});if(t.state==="error")return o(je,{error:t.error,onRetry:t.retry});if(!t.data)return o(xe,{icon:"user",title:e("page.profile"),children:o(lt,{children:e("profile.unsupported")})});let{update:n}=t;return o(Wg,{data:t.data,update:r=>n(a=>a&&r(a))})}function Wg(e){let{t}=ie(),n=Ue(),{profile:r,me:a,origin:i}=e.data,[s,l]=C(null),[c,d]=C(null),[g,u]=C(!1),p=re(e.update);p.current=e.update;let m=(E,D,I)=>n.current?qg(E,D,I):Promise.reject(new Error("unmounted")),f=Ht(()=>Uc({apply:E=>p.current(D=>({...D,profile:E})),read:()=>m("/profile/me")}),[]),v=a.username||r.username,k={...r,username:v,nickname:a.nickname||null},z=r.settings.isPublic,x=i?`${i}${Lc(v)}`:null,w=E=>{n.current&&d({tone:"error",m:jc(E)})},P=E=>{d(null),e.update(D=>({...D,profile:yi(D.profile,E)})),f.write(()=>m("/profile/me","PUT",E)).catch(w)},L=async E=>{e.update(D=>({...D,profile:yi(D.profile,{modules:D.profile.settings.modules.map(I=>({...I,public:E.find(ne=>ne.id===I.id)?.public??I.public}))})})),await f.write(()=>m("/profile/me/visibility","POST",{public:!0,modules:E})),n.current&&(l(null),d({tone:"ok",m:{key:"profile.nowPublic"}}))},U=async()=>{u(!0),d(null);try{await f.write(()=>m("/profile/me/visibility","POST",{public:!1})),n.current&&d({tone:"ok",m:{key:"profile.nowPrivate"}})}catch(E){w(E)}finally{n.current&&u(!1)}},H=re(Promise.resolve()),B=(E,D)=>{let I=H.current.then(async()=>{if(!n.current)return;let ne=await te("/settings",{method:"PUT",body:E});if(n.current){if(!ne.ok)return d({tone:"error",m:wt(ne)});p.current(b=>({...b,me:{...b.me,...E}})),d({tone:"ok",m:{key:D}})}});return H.current=I,I},G=async E=>{d(null);let D;try{D=await Tc(E)}catch(I){return d({tone:"error",m:{key:I instanceof uo?"err.avatarTooLarge":"err.avatarInvalid"}})}await B({avatar:D},"account.avatar.saved")},_=E=>{d(null),l(D=>D===E?null:E)};return o("div",{class:"fx-pf-page",children:[o(xe,{icon:z?"globe":"lock",title:t(z?"profile.state.public":"profile.state.private"),desc:t(z?"profile.state.publicDesc":"profile.state.privateDesc"),actions:o(N,{children:[o(X,{onClick:()=>_("deco"),children:[o(W,{name:"palette",size:12})," ",t("profile.decorate")]}),z?o(X,{pending:g,onClick:()=>void U(),children:[o(W,{name:"lock",size:12})," ",t("profile.makePrivate")]}):o(X,{variant:"primary",onClick:()=>_("publish"),children:[o(W,{name:"globe",size:12})," ",t("profile.publish")]})]}),children:[z&&x&&o(Fe,{label:t("profile.address"),desc:x.replace(/^https?:\/\//i,""),children:[o(Rt,{text:x,label:t("profile.copyLink")}),o(X,{onClick:()=>Si(x),children:[o(W,{name:"external",size:12})," ",t("profile.openPublic")]})]}),s==="publish"&&!z&&o(Vg,{profile:r,url:x,submit:L,onClose:()=>l(null)}),c&&o(Te,{class:"fx-sub--tight",children:o("div",{class:`fx-msg ${c.tone==="ok"?"is-ok":"is-error"}`,role:c.tone==="ok"?"status":"alert",children:kt(c.m,t)})})]}),o("div",{class:"fx-pf-home","data-deco":s==="deco"?"":void 0,children:[o("div",{class:"fx-pf-root",children:o(Jg,{view:k,avatar:a.avatar||null,pinned:r.settings.pinned,owner:{onAvatar:E=>void G(E),onNickname:E=>{d(null),B({nickname:E},"account.nickname.saved")},onBio:E=>P({bio:E}),onLinks:E=>P({links:E}),onPinned:E=>P({pinned:E}),onInvalidLink:()=>d({tone:"error",m:{key:"profile.linkInvalid"}})}})}),s==="deco"&&o(jg,{profile:r,onChange:P,onClose:()=>l(null)})]})]})}function Vg(e){let{t}=ie(),n=Ue(),{profile:r}=e,[a,i]=C({}),s=r.settings.modules.filter(m=>m.show).map(m=>({...m,public:a[m.id]??m.public})),[l,c]=C(!1),[d,g]=C(null),u=r.canPublish?null:r.publishBlockedReason||"publish_blocked";if(u)return o(Te,{children:[o(ce,{children:t(u==="machine_username"?"profile.blocked.machineUsername":"profile.blocked.publishBlocked")}),o("div",{class:"fx-inline fx-pf-foot",children:[u==="machine_username"&&o(X,{variant:"primary",onClick:()=>void so("profile"),children:[t("profile.goRename")," ",o(W,{name:"external",size:12})]}),o(X,{onClick:e.onClose,children:t("common.cancel")})]})]});let p=async()=>{c(!0),g(null);try{await e.submit(s.map(({id:m,public:f})=>({id:m,public:f})))}catch(m){if(!n.current)return;g(jc(m)),c(!1)}};return o(Te,{children:[e.url&&o("div",{class:"fx-pf-url",children:[o(W,{name:"globe",size:14}),o("span",{children:e.url.replace(/^https?:\/\//i,"")})]}),o(ce,{children:t("profile.publishDesc")}),o("div",{class:"fx-pf-checks",children:s.map(m=>o("div",{class:"fx-pf-check",children:[o("div",{children:[t(`profile.mod.${m.id}`),o("small",{children:t(`profile.modDesc.${m.id}`)})]}),o(qt,{checked:m.public,disabled:l,label:`${t(`profile.mod.${m.id}`)} \xB7 ${t("profile.col.public")}`,onChange:f=>i(v=>({...v,[m.id]:f}))})]},m.id))}),o(ce,{children:t("profile.publishNever")}),d&&o("div",{class:"fx-msg is-error",role:"alert",children:kt(d,t)}),o("div",{class:"fx-inline fx-pf-foot",children:[o(X,{variant:"primary",pending:l,onClick:()=>void p(),children:t("profile.publishConfirm")}),o(X,{disabled:l,onClick:e.onClose,children:t("common.cancel")})]})]})}function jg(e){let{t}=ie(),n=e.profile.settings,r=bi(e.profile.tier),a=(s,l)=>e.onChange({modules:n.modules.map(c=>c.id===s?{...c,...l}:c)}),i=s=>o("span",{class:"fx-pf-thumb",children:s});return o("aside",{class:"fx-pf-deco","aria-label":t("profile.decorate"),children:o(xe,{icon:"palette",title:t("profile.decorate"),actions:o(X,{onClick:e.onClose,children:t("common.done")}),children:o("div",{class:"fx-pf-deco-body",children:[o("h4",{children:t("profile.deco.cover")}),o("div",{class:"fx-pf-opts",children:Mc.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.cover===s,onClick:()=>e.onChange({cover:s}),children:[i(o("span",{class:`fx-pf-cv-thumb fx-pf-cv-${s}`})),t(`profile.cover.${s}`)]},s))}),o("h4",{children:t("profile.deco.frame")}),o("div",{class:"fx-pf-opts",children:Rc.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.frame===s,disabled:s==="pro"&&!r,title:s==="pro"&&!r?t("profile.frameProHint"):void 0,onClick:()=>e.onChange({frame:s}),children:[i(o("span",{class:`fx-pf-fr-demo fx-pf-fr-${s}`,children:o("span",{class:"fx-pf-av"})})),t(`profile.frame.${s}`)]},s))}),!r&&o(ce,{children:t("profile.frameProHint")}),o("h4",{children:t("profile.deco.modules")}),o("div",{class:"fx-pf-mod-head","aria-hidden":"true",children:[o("span",{children:t("profile.col.show")}),o("span",{children:t("profile.col.public")})]}),n.modules.map((s,l)=>o("div",{class:"fx-pf-mod",children:[o("span",{children:t(`profile.mod.${s.id}`)}),o("button",{type:"button",class:"fx-icon-btn",disabled:l===0,title:t("profile.moveUp"),"aria-label":`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.moveUp")}`,onClick:()=>e.onChange({modules:xi(n.modules,s.id,-1)}),children:o(W,{name:"up",size:13})}),o("button",{type:"button",class:"fx-icon-btn",disabled:l===n.modules.length-1,title:t("profile.moveDown"),"aria-label":`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.moveDown")}`,onClick:()=>e.onChange({modules:xi(n.modules,s.id,1)}),children:o(W,{name:"down",size:13})}),o(qt,{checked:s.show,label:`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.col.show")}`,onChange:c=>a(s.id,{show:c})}),o(qt,{checked:s.show&&s.public,disabled:!s.show,label:`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.col.public")}`,onChange:c=>a(s.id,{public:c})})]},s.id)),o(ce,{children:t("profile.modulesHint")}),o("h4",{children:t("profile.deco.skin")}),o("div",{class:"fx-pf-opts",children:Ec.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.skin===s,onClick:()=>e.onChange({skin:s}),children:[i(o("span",{class:"fx-pf-swatch","data-skin":s})),t(`profile.skin.${s}`)]},s))}),o("h4",{children:t("profile.deco.mode")}),o(Mt,{value:n.mode,label:t("profile.deco.mode"),onChange:s=>e.onChange({mode:s}),options:Pc.map(s=>({value:s,label:t(`profile.mode.${s}`)}))}),o(ce,{children:t("profile.deco.publicHint")})]})})})}function wi(e){let[t,n]=C(null),r=re(!1),a=re(null),i=t!==null;qn(()=>{i&&a.current?.focus()},[i]);let s=e.class?` ${e.class}`:"";if(t===null)return o("button",{type:"button",class:`fx-pf-ed${s}${e.value?"":" is-empty"}`,title:e.label,"aria-label":e.label,onClick:()=>{r.current=!1,n(e.value)},children:[o("span",{children:e.value||e.placeholder}),o(W,{name:e.value?"pencil":"plus",size:12})]});let l=()=>{let c=t.trim();n(null),!r.current&&c!==e.value&&e.onSave(c)};return o("span",{class:`fx-pf-ed-on${s}`,children:[o("input",{ref:a,class:"fx-input",type:"text",value:t,maxLength:e.maxLength,placeholder:e.placeholder,"aria-label":e.label,onInput:c=>n(c.currentTarget.value),onBlur:l,onKeyDown:c=>{c.isComposing||(c.key==="Enter"?c.currentTarget.blur():c.key==="Escape"&&(c.preventDefault(),r.current=!0,c.currentTarget.blur()))}}),e.counter&&o("small",{children:[Array.from(t).length,"/",e.maxLength]})]})}function ta(e){return o("section",{class:"fx-pf-sec",style:{order:e.order},children:[o("div",{class:"fx-pf-sec-h",children:[o("h3",{children:e.title}),e.action]}),e.children]})}function Gg(e){let{t}=ie(),{work:n}=e,r=Vc[n.type],a=o(N,{children:[o("div",{class:"fx-pf-work-top",children:[o("span",{class:"fx-pf-work-ico",children:o(W,{name:r?.icon??"box",size:17})}),o("div",{children:[o("div",{class:"fx-pf-work-name",children:n.name}),o("div",{class:"fx-pf-work-type",children:r?t(r.key):n.type})]})]}),o("p",{children:n.summary}),(n.countKind!=="visits"||n.count>0)&&o("div",{class:"fx-pf-work-foot",children:[o(W,{name:n.countKind==="visits"?"eye":"download",size:12}),t(n.countKind==="visits"?"profile.workVisits":"profile.workInstalls",{n:n.count.toLocaleString("en-US")})]})]}),i=n.url;return zi(i)?o("a",{class:"fx-pf-work",href:i,onClick:s=>{s.preventDefault(),Si(i)},children:a}):o("article",{class:"fx-pf-work",children:a})}function Xg(e){let{t}=ie(),n=Ue(),[r,a]=C(null),[i,s]=C(()=>e.pinned.map(g=>`${g.kind}:${g.id}`));J(()=>{te("/profile/me/works").then(g=>{n.current&&a(g.ok?g.data?.works??[]:"failed")})},[]);let l=g=>`${g.kind}:${g.id}`,c=g=>s(u=>u.includes(g)?u.filter(p=>p!==g):[...u,g]);if(r===null)return o("div",{class:"fx-pf-card fx-pf-empty",children:[o(Ao,{})," ",t("common.loading")]});if(r==="failed"||r.length===0)return o("div",{class:"fx-pf-card fx-pf-empty",children:[o("p",{children:t(r==="failed"?"common.loadFailed":"profile.worksNone")}),o("div",{class:"fx-inline fx-pf-foot",children:[r!=="failed"&&o(X,{variant:"primary",onClick:()=>void so("submission"),children:[t("profile.goSubmit")," ",o(W,{name:"external",size:12})]}),o(X,{onClick:e.onClose,children:t("common.cancel")})]})]});let d=()=>{let g=new Map(r.map(u=>[l(u),u]));e.onSave(i.flatMap(u=>{let p=g.get(u);return p?[{kind:p.kind,id:p.id}]:[]})),e.onClose()};return o("div",{class:"fx-pf-card fx-pf-picker",children:[r.map(g=>{let u=l(g),p=i.includes(u),m=Vc[g.type];return o("button",{type:"button",class:"fx-pf-pick","aria-pressed":p,disabled:!p&&i.length>=6,onClick:()=>c(u),children:[o("div",{children:[g.name,o("small",{children:[m?t(m.key):g.type," \xB7 ",g.summary]})]}),p&&o(W,{name:"check",size:15})]},u)}),o("div",{class:"fx-inline fx-pf-foot",children:[o("span",{class:"fx-grow",children:i.length?t("profile.worksPicked",{n:i.length,max:6}):t("profile.worksAuto")}),o(X,{variant:"primary",onClick:d,children:t("common.done")}),o(X,{onClick:e.onClose,children:t("common.cancel")})]})]})}function Jg(e){let{t,locale:n}=ie(),{view:r,owner:a}=e,i=re(null),[s,l]=C(!1),c=r.nickname||r.username,d=(r.tier||"free").toLowerCase(),g=r.modules.map(b=>b.id),u=b=>g.indexOf(b),p=b=>u(b)>=0,m=r.stats,f=m?Nc(m.totalTokens,n):null,v=t("profile.unit.days"),k=m&&f?[[f.value,f.unit,t("profile.stat.tokens")],[String(m.activeDays),v,t("profile.stat.activeDays")],[String(m.longestStreak),v,t("profile.stat.longest")],[String(m.currentStreak),v,t("profile.stat.current")],[m.installs.toLocaleString("en-US"),"",t("profile.stat.installs")]]:[],z=m&&p("stats")&&o("div",{class:"fx-pf-stats",style:{order:u("stats")},children:k.map(([b,S,R])=>o("div",{class:"fx-pf-stat",children:[o("b",{children:[b,S&&o("small",{children:S})]}),o("span",{children:R})]},R))},"stats"),x=g[0]==="stats",w=r.works||[],P=p("works")&&o(ta,{order:u("works"),title:t("profile.works"),action:!s&&o("button",{type:"button",class:"fx-link",onClick:()=>l(!0),children:t("profile.worksPick")}),children:s?o(Xg,{pinned:e.pinned,onSave:a.onPinned,onClose:()=>l(!1)}):w.length?o("div",{class:"fx-pf-works",children:w.map(b=>o(Gg,{work:b},`${b.kind}:${b.id}`))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.worksEmpty")})},"works"),L=r.activity,U=p("activity")&&L&&o(ta,{order:u("activity"),title:t("profile.activity"),children:o("div",{class:"fx-pf-card",children:[o("div",{class:"fx-pf-hm",role:"img","aria-label":t("profile.activityDays",{n:L.activeDays}),children:L.levels.map((b,S)=>o("i",{class:b?`l${b}`:void 0},S))}),o("div",{class:"fx-pf-hm-months","aria-hidden":"true",children:Fc(L.end,n).map((b,S)=>o("span",{children:b},S))}),o("div",{class:"fx-pf-hm-foot",children:[o("span",{children:t("profile.activityDays",{n:L.activeDays})}),o("span",{class:"fx-pf-hm-legend","aria-hidden":"true",children:[t("profile.less"),o("i",{}),o("i",{class:"l1"}),o("i",{class:"l2"}),o("i",{class:"l3"}),o("i",{class:"l4"}),t("profile.more")]})]})]})},"activity"),H=(r.badges||[]).filter(b=>Ic.includes(b.id)),B=p("badges")&&o(ta,{order:u("badges"),title:t("profile.badges"),children:H.length?o("div",{class:"fx-pf-card fx-pf-rows",children:H.map(b=>o("div",{class:"fx-pf-brow",children:[o("span",{class:"fx-pf-badge",children:o(W,{name:qc[b.id],size:14})}),o("div",{children:[o("b",{children:t(`profile.badge.${b.id}`)}),o("span",{children:t(`profile.badgeSub.${b.id}`,{value:b.value??""})})]})]},b.id))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.badgesEmpty")})},"badges"),G=r.insights,_=[];G?.topModel&&_.push([t("profile.insightModel"),G.topModel]),G?.activeHours&&_.push([t("profile.insightHours"),$c(G.activeHours)]);let E=p("insights")&&o(ta,{order:u("insights"),title:t("profile.insights"),children:_.length?o("div",{class:"fx-pf-card fx-pf-rows",children:_.map(([b,S])=>o("div",{class:"fx-pf-row",children:[o("span",{children:b}),o("b",{children:S})]},b))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.insightsEmpty")})},"insights"),D=[!x&&z,P,U].filter(Boolean),I=[B,E].filter(Boolean),ne=b=>{if(!b)return;let S=Dc(b);if(!S)return a.onInvalidLink();r.links.includes(S)||a.onLinks([...r.links,S])};return o("div",{class:"fx-pf","data-cover":r.cover,"data-frame":r.frame,children:[o("div",{class:"fx-pf-cover"}),o("div",{class:"fx-pf-id",children:[o("button",{type:"button",class:"fx-pf-avatar",title:t("account.avatar.change"),"aria-label":t("account.avatar.change"),onClick:()=>i.current?.click(),children:[o("span",{class:"fx-pf-av",children:e.avatar?o("img",{src:e.avatar,alt:""}):o("span",{class:"fx-pf-av-fallback",children:Ac(c)})}),o("span",{class:"fx-pf-av-mask",children:o(W,{name:"pencil",size:18})})]}),o("input",{ref:i,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif,image/avif",hidden:!0,onChange:b=>{let S=b.currentTarget,R=S.files?.[0];S.value="",R&&a.onAvatar(R)}}),o("div",{class:"fx-pf-id-text",children:[o("div",{class:"fx-pf-name",children:[o(wi,{value:c,placeholder:r.username,maxLength:40,label:t("account.nickname.edit"),onSave:b=>{b&&a.onNickname(b)}}),Wc[d]&&o("span",{class:`fx-tag${d==="pro"?" fx-pf-tier-pro":" fx-tag--accent"}`,children:Wc[d]})]}),o("div",{class:"fx-pf-handle",children:["@",r.username]})]}),H.length>0&&p("badges")&&o("div",{class:"fx-pf-badges",children:H.map(b=>o("span",{class:"fx-pf-badge",title:t(`profile.badge.${b.id}`),children:o(W,{name:qc[b.id],size:14})},b.id))})]}),o("div",{class:"fx-pf-sub",children:[o(wi,{class:"fx-pf-bio",value:r.bio,placeholder:t("profile.bioPlaceholder"),maxLength:80,label:t("profile.bio"),counter:!0,onSave:a.onBio}),o("div",{class:"fx-pf-meta",children:[r.joinedMonth&&o("span",{children:[o(W,{name:"calendar",size:13}),t("profile.joined",{date:Bc(r.joinedMonth,n)})]}),r.links.map(b=>o("span",{children:[o(W,{name:"link",size:13}),zi(b)?o("a",{href:b,onClick:S=>{S.preventDefault(),Si(b)},children:ki(b)}):o("span",{children:ki(b)}),o("button",{type:"button",class:"fx-pf-x",title:t("profile.linkRemove"),"aria-label":t("profile.linkRemove"),onClick:()=>a.onLinks(r.links.filter(S=>S!==b)),children:o(W,{name:"x",size:11})})]},b)),r.links.length<2&&o(wi,{value:"",placeholder:t("profile.linkAdd"),maxLength:200,label:t("profile.linkAdd"),onSave:ne},r.links.length)]})]}),x&&z,o("div",{class:"fx-pf-body","data-cols":D.length&&I.length?2:1,children:[o("div",{class:"fx-pf-main",children:D}),I.length>0&&o("div",{class:"fx-pf-side",children:I})]})]})}function Xc(){let e=qe(async()=>{let[t,n]=await Promise.all([te("/membership/my"),te("/features")]);return t.ok?{ok:!0,status:t.status,data:{membership:t.data?.membership??null,payment:!n.ok||n.data?.payment!==!1}}:t});return e.state==="loading"?o(Ie,{panels:1}):e.state==="signedOut"?null:o(Kg,{membership:e.state==="ready"?e.data.membership:null,failed:e.state==="error",payment:e.state==="ready"&&e.data.payment,onRetry:e.state==="ready"?e.reload:e.retry})}function Kg(e){let{t,locale:n}=ie(),r=pe(),a=e.membership&&(e.membership.status===void 0||e.membership.status==="active")?e.membership:null,i=ir(a?.tier),s=i==="Free",l=s?"free":i.toLowerCase()==="pro"?"pro":"paid",c=()=>void r.run(async()=>await Wn("membership")?void 0:{error:{key:"err.openFailed"}});return o(xe,{icon:"card",title:t("member.title"),desc:t("member.desc"),actions:e.payment&&!e.failed?o(X,{variant:"primary",pending:r.pending,onClick:c,children:t(s?"member.upgrade":"member.renew")}):void 0,children:[!e.failed&&o("div",{class:"fx-member fx-block",children:[o("span",{class:`fx-tier fx-tier--${l}`,children:i}),o("div",{class:"fx-member-copy",children:[o("strong",{children:s?t("member.freeName"):a?.plan?.name||i}),o("span",{class:"fx-muted",children:s?t("member.freeHint"):a?.expiresAt?t("member.expires",{date:on(a.expiresAt,n)}):t("member.noExpiry")})]})]}),e.failed&&o("div",{class:"fx-sub",children:o(ce,{tone:"warn",children:[t("member.loadFailed")," ",o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}),r.error&&o("div",{class:"fx-sub fx-sub--tight",children:o(fe,{a:r})})]})}function Ae(e){if(typeof e=="number")return Number.isFinite(e)?e:null;if(typeof e=="string"&&e.trim()!==""){let t=Number(e);return Number.isFinite(t)?t:null}return null}function Yg(e,t){let n=Ae(t);if(n===null||n<0)return null;if(n===0)return 0;let r=Math.max(0,Ae(e)??0);return Math.min(100,Math.max(0,Math.floor(r/n*100)))}var Zg=15;function po(e,t){let n=Yg(e,t);if(n===null)return{unlimited:!0,pct:100,text:null,low:!1};let r=Math.max(0,Ae(e)??0),a=n===0&&r>0&&(Ae(t)??0)>0?"<1%":`${n}%`;return{unlimited:!1,pct:n,text:a,low:n<=Zg}}function na(e,t){let n=Ae(t);if(n===null||n<=0)return null;let r=Ae(e);if(r===null)return null;let a=Math.max(0,r);if(a===0)return"0%";let i=a/n*100;if(i<.1)return"<0.1%";let s=Math.round(i*10)/10;return s<10?`${s}%`:`${Math.round(i).toLocaleString("en-US")}%`}var Qg=e=>e.ok?"ok":e.status===404?"hidden":"failed";function Kc(){return o(Zc,{section:"points"})}function Yc(){return o(N,{children:[o(Xc,{}),o(Zc,{section:"quota"})]})}function Zc({section:e}){let t=qe(async()=>{let[l,c,d,g]=await Promise.all([te("/token-quota/my"),te("/credits/balance"),te("/features"),te("/invite/my-code")]);return l.ok?{ok:!0,status:l.status,data:{quota:l.data??{},balance:c.ok?Ae(c.data?.balance):null,balanceFailed:!c.ok,features:d.ok&&d.data&&typeof d.data=="object"?d.data:{},invite:g.ok?g.data:null,inviteState:Qg(g)}}:l});if(t.state==="loading")return o(Ie,{panels:3,rows:2});if(t.state==="signedOut")return o(We,{});if(t.state==="error")return o(je,{error:t.error,onRetry:t.retry});let{data:n,update:r}=t,a=n.quota.background,i=n.features.redemption_codes!==!1,s=n.features.payment!==!1;return o(N,{children:[e==="quota"&&o(N,{children:[o(th,{data:n,update:r,onFailed:t.reload}),a?.modelId?o(ah,{bg:a,update:r}):null]}),e==="points"&&o(oh,{data:n,payment:s,onRetry:t.reload}),e==="points"&&(n.inviteState!=="hidden"||i)&&o(ih,{data:n,update:r,redeemEnabled:i,onRedeemed:t.reload})]})}var Jc=e=>({dailyLimit:e.dailyLimit,dailyRemaining:e.dailyRemaining,weeklyLimit:e.weeklyLimit,weeklyRemaining:e.weeklyRemaining});function eh(e,t){if(typeof e?.showResetCardCeremony!="function")return!1;try{return e.showResetCardCeremony(t),!0}catch{return!1}}function th(e){let{t,locale:n,ctx:r}=ie(),a=e.data.quota,i=po(a.dailyRemaining,a.dailyLimit),s=po(a.weeklyRemaining,a.weeklyLimit),l=uc(a.weeklyResetAt,n),c=Math.max(0,Ae(a.resetCards)??0),d=Ae(a.resetCardPricePoints)??100,g=pe(),u=pe(),[p,m]=C(null),[f,v]=C("1"),k=/^\d+$/.test(f.trim())?Number(f.trim()):NaN,z=Number.isInteger(k)&&k>=1&&k<=50,x=z?k*d:null,w=e.data.balance,P=x!==null&&w!==null&&w<x,L=()=>void g.run(async()=>{let B={daily:i,weekly:s},G=Jc(a);m(null);let _=oe(),E=await Wr(_.accountUseResetCard?()=>_.accountUseResetCard("both"):null,()=>te("/token-quota/reset-card/use",{method:"POST",body:{type:"both"}}));if(!E.ok)return e.onFailed(),Re(E);let D=E.data?.quota,I=Ae(E.data?.resetCards);return e.update(ne=>({...ne,quota:{...ne.quota,...D??{},resetCards:I??ne.quota.resetCards}})),D&&!eh(r.app,{before:G,after:Jc(D),remainingCards:I??void 0})&&m({before:B,after:{daily:po(D.dailyRemaining,D.dailyLimit),weekly:po(D.weeklyRemaining,D.weeklyLimit)},cards:I}),{success:{key:"card.used"}}}),U=()=>void u.run(async()=>{if(!z)return{error:{key:"err.invalidCount"}};let B=await te("/points/exchange-reset-cards",{method:"POST",body:{count:k,expectedPricePerCard:d}});return B.ok?(e.update(G=>({...G,quota:{...G.quota,resetCards:Ae(B.data?.resetCards)??G.quota.resetCards},balance:Ae(B.data?.newPointsBalance)??G.balance})),v("1"),{success:{key:"card.exchanged",vars:{n:Ae(B.data?.cardsGranted)??k}}}):(e.onFailed(),Re(B))}),H=B=>B.unlimited?t("common.unlimited"):B.text;return o(xe,{icon:"gauge",title:t("quota.ai.title"),desc:t("quota.ai.desc"),children:[o("div",{class:"fx-quota-list fx-block",children:[o(lr,{label:t("common.today"),display:i,note:i.unlimited?null:t("quota.resetDaily")}),o(lr,{label:t("common.thisWeek"),display:s,note:s.unlimited||!l?null:t("quota.resetWeekly",{date:l})})]}),o(Fe,{label:t("card.title"),desc:t("card.desc"),children:[o("span",{class:"fx-value","data-testid":"reset-card-count",children:t("card.owned",{n:c})}),o(Pt,{label:t("card.use"),confirmLabel:t("card.useConfirm"),pending:g.pending,disabled:c<=0,onConfirm:L})]}),c<=0&&!g.success&&o(Te,{children:o(ce,{children:t("card.noneHint")})}),(g.error||g.success)&&o(Te,{children:[o(fe,{a:g}),g.success&&p&&o("div",{class:"fx-ceremony",role:"status",children:[o("span",{children:[t("common.today")," ",o("b",{children:H(p.before.daily)})," \u2192 ",o("b",{children:H(p.after.daily)})]}),o("span",{children:[t("common.thisWeek")," ",o("b",{children:H(p.before.weekly)})," \u2192 ",o("b",{children:H(p.after.weekly)})]}),p.cards!==null&&o("span",{class:"fx-muted",children:t("card.left",{n:p.cards})})]})]}),o(Fe,{label:t("card.exchange"),desc:t("card.price",{price:Oe(d,n)}),class:"fx-row--wide",children:[o("input",{class:"fx-input fx-input--count",type:"number",inputMode:"numeric",min:1,max:50,step:1,value:f,"aria-label":t("card.count"),onInput:B=>{v(B.currentTarget.value),u.clear()}}),o("span",{class:"fx-muted fx-cost",children:x!==null?t("card.cost",{cost:Oe(x,n)}):t("card.countHint")}),o(Pt,{label:t("card.exchangeButton"),confirmLabel:t("card.exchangeConfirm",{cost:x!==null?Oe(x,n):"\u2014"}),pending:u.pending,disabled:!z||P,onConfirm:U})]}),(P||u.error||u.success)&&o(Te,{children:[P&&!u.error&&o(ce,{tone:"warn",children:t("err.insufficientPoints")}),o(fe,{a:u})]})]})}function nh(e,t,n){let r=pe(),[a,i]=C(null);return{checked:a??e,toggle:l=>{i(l),r.run(async()=>{let c=await t(l);if(i(null),!c.ok)return Re(c);n(l)})},action:r}}function oh(e){let{t,locale:n}=ie(),r=pe(),a=()=>void r.run(async()=>await Wn("credits")?void 0:{error:{key:"err.openFailed"}});return o(xe,{icon:"coins",title:t("points.title"),desc:t("points.desc"),actions:e.payment?o(X,{variant:"primary",pending:r.pending,onClick:a,children:t("points.recharge")}):void 0,children:[o(Fe,{label:t("points.balance"),children:e.data.balance!==null?o("span",{class:"fx-big","data-testid":"points-balance",children:Oe(e.data.balance,n)}):o("span",{class:"fx-value is-empty",children:[t("points.balanceFailed")," ",o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}),r.error&&o(Te,{children:o(fe,{a:r})})]})}var rh=[5,10,20];function ah(e){let{t}=ie(),{bg:n}=e,r=po(n.dailyRemaining,n.dailyLimit),a=po(n.weeklyRemaining,n.weeklyLimit),i=pe(),[s,l]=C(null),c=nh(!!n.autoMain,g=>{let u=oe();return Wr(u.accountBgAutoMain?()=>u.accountBgAutoMain(g):null,()=>te("/token-quota/background/auto-main",{method:"POST",body:{enabled:g}}))},g=>e.update(u=>({...u,quota:{...u.quota,background:{...u.quota.background??{},autoMain:g}}}))),d=g=>{l(g),i.run(async()=>{let u=oe(),p=await Wr(u.accountBgConvert?()=>u.accountBgConvert(g):null,()=>te("/token-quota/background/convert",{method:"POST",body:{percent:g}}));if(l(null),!p.ok)return Re(p);let m=p.data?.quota;return m&&e.update(v=>({...v,quota:{...v.quota,...m,resetCards:v.quota.resetCards,resetCardPricePoints:v.quota.resetCardPricePoints}})),{success:{key:"bg.converted",vars:{pct:g}}}})};return o(xe,{icon:"clock",title:t("bg.title"),desc:t("bg.desc"),children:[o("div",{class:"fx-quota-list fx-block",children:[o(lr,{label:t("common.today"),display:r}),o(lr,{label:t("common.thisWeek"),display:a})]}),o(Fe,{label:t("bg.autoMain"),desc:t("bg.autoMainDesc"),children:o(qt,{checked:c.checked,disabled:c.action.pending,label:t("bg.autoMain"),onChange:c.toggle})}),o(Fe,{label:t("bg.convert"),desc:t("bg.convertDesc"),class:"fx-row--wide",children:rh.map(g=>o(Pt,{label:`${g}%`,confirmLabel:t("bg.convertConfirm",{pct:g}),pending:i.pending&&s===g,disabled:i.pending&&s!==g,onConfirm:()=>d(g)},g))}),(i.error||i.success||c.action.error)&&o(Te,{children:[o(fe,{a:c.action}),o(fe,{a:i})]})]})}function ih(e){let{t,locale:n}=ie(),{invite:r,inviteState:a}=e.data,[i,s]=C(null),[l,c]=C(""),[d,g]=C(""),u=pe(),p=pe(),m=pe();J(()=>{let x=!0;return oe().authStatus?.().then(w=>{x&&s(w?.cloudUrl?w.cloudUrl.replace(/\/+$/,""):null)}).catch(()=>{}),()=>{x=!1}},[]);let f=async()=>{let x=await te("/invite/my-code");return e.update(w=>({...w,invite:x.ok?x.data:w.invite,inviteState:x.ok?"ok":x.status===404?"hidden":w.inviteState})),x},v=()=>void u.run(async()=>{let x=l.trim();if(!x)return{error:{key:"err.inviteEmpty"}};let w=await te("/invite/claim",{method:"POST",body:{code:x}});return w.ok?(c(""),f(),{success:{key:"invite.claimed"}}):Re(w)}),k=()=>void p.run(async()=>{let x=d.trim();if(!x)return{error:{key:"err.redeemEmpty"}};let w=await te("/redemption/redeem",{method:"POST",body:{code:x}});if(!w.ok)return Re(w);g(""),e.onRedeemed();let P=[],L=Ae(w.data?.creditsAmount);L&&P.push(t("redeem.gotPoints",{n:Oe(L,n)})),w.data?.membershipPlanId&&P.push(t("redeem.gotMembership"));for(let U of Array.isArray(w.data?.items)?w.data.items:[]){let H=(n==="zh"?U?.label?.zh:U?.label?.en)||U?.label?.zh||U?.label?.en||U?.kind;H&&P.push(H)}return{success:P.length?{key:"redeem.successWith",vars:{what:P.join(n==="zh"?"\u3001":", ")}}:{key:"redeem.success"}}}),z=r?.code&&i?`${i}/auth?invite=${encodeURIComponent(r.code)}`:"";return o(xe,{icon:"gift",title:t("invite.title"),desc:t("invite.desc"),children:[a==="ok"&&r?.code&&o(Fe,{label:t("invite.myCode"),desc:t("invite.count",{n:Oe(Ae(r.invitedCount)??0,n)}),class:"fx-row--wide",children:[o("code",{class:"fx-code","data-testid":"invite-code",children:r.code}),o(Rt,{text:r.code,label:t("invite.copyCode")}),o(Rt,{text:z,label:t("invite.copyLink"),disabled:!z})]}),a==="failed"&&o(Te,{children:o(ce,{tone:"warn",children:[t("invite.loadFailed")," ",o("button",{type:"button",class:"fx-link",disabled:m.pending,onClick:()=>void m.run(async()=>{await f()}),children:t("common.retry")})]})}),a==="ok"&&r?.claim?.eligible&&o(Fe,{label:t("invite.claim"),desc:t("invite.claimDesc"),class:"fx-row--wide",children:o("form",{class:"fx-inline",onSubmit:x=>{x.preventDefault(),v()},children:[o("input",{class:"fx-input",value:l,placeholder:t("invite.claimPlaceholder"),"aria-label":t("invite.claim"),onInput:x=>c(x.currentTarget.value)}),o(X,{submit:!0,pending:u.pending,children:t("invite.claimSubmit")})]})}),(u.error||u.success)&&o(Te,{children:o(fe,{a:u})}),e.redeemEnabled&&o(Fe,{label:t("redeem.title"),desc:t("redeem.desc"),class:"fx-row--wide",children:o("form",{class:"fx-inline",onSubmit:x=>{x.preventDefault(),k()},children:[o("input",{class:"fx-input",value:d,placeholder:t("redeem.placeholder"),"aria-label":t("redeem.title"),onInput:x=>g(x.currentTarget.value)}),o(X,{submit:!0,pending:p.pending,children:t("redeem.submit")})]})}),(p.error||p.success)&&o(Te,{children:o(fe,{a:p})})]})}function sh(e){let t=[],n,r=new Map;for(let a of e)if(a.itemType==="reset_card")n||(n={id:"reset_card",items:[],resetCard:!0},t.push(n)),n.items.push(a);else if(a.itemType==="custom_item"&&a.itemDefinition?.stackable){let i=`${a.productId||a.id}:${JSON.stringify(a.itemDefinition)}`,s=r.get(i);s||(s={id:`custom:${i}`,items:[],resetCard:!1},r.set(i,s),t.push(s)),s.items.push(a)}else t.push({id:a.id,items:[a],resetCard:!1});return t}function Qc(){let e=qe(()=>te("/shop/inventory"));return e.state==="loading"?o(Ie,{panels:1,rows:4}):e.state==="signedOut"?o(We,{}):e.state==="error"?o(je,{error:e.error,onRetry:e.retry}):o(lh,{items:e.data??[],onRefresh:e.reload,onUsed:t=>{e.update(n=>n.filter(r=>r.id!==t.itemId)),e.reload()}})}function lh(e){let{t,locale:n,goTo:r}=ie(),[a,i]=C(null),[s,l]=C(null),c=Ue(),d=sh(e.items),g=d.find(f=>f.id===a),u=Math.max(24,Math.ceil(d.length/6)*6)-d.length,p=f=>f.resetCard?t("card.title"):f.items[0].itemDefinition?.name[n]||f.items[0].displayName||t("backpack.item"),m=f=>{c.current&&(l(f),e.onUsed(f))};return o(xe,{icon:"backpack",title:t("page.backpack"),desc:t("backpack.desc"),actions:o(X,{onClick:e.onRefresh,children:[o(W,{name:"refresh",size:13}),t("backpack.refresh")]}),children:o("div",{class:"fx-backpack fx-block",children:[o("div",{class:"fx-backpack-summary",children:[o("span",{children:t("backpack.total",{n:Oe(e.items.length,n)})}),r&&o("button",{class:"fx-link",type:"button",onClick:()=>r("quota"),children:t("backpack.getCards")})]}),s&&o("div",{class:`fx-backpack-used fx-backpack-${s.animation}`,role:"status",children:[o(W,{name:"gift",size:20}),o("div",{children:[o("strong",{children:s.message[n]}),o("div",{children:s.effects.map(f=>ed(f,t,n)).join(" \xB7 ")})]})]},s.itemId),o("div",{class:"fx-backpack-layout",children:[o("div",{children:[o("div",{class:"fx-backpack-grid",role:"group","aria-label":t("backpack.grid"),children:[d.map(f=>{let v=p(f);return o("button",{type:"button",class:`fx-backpack-slot${f.resetCard?" is-card":""}`,"data-rarity":f.items[0].itemDefinition?.rarity,"aria-pressed":g?.id===f.id,"aria-label":t("backpack.slot",{name:v,n:f.items.length}),title:v,onClick:()=>i(f.id),children:[o("span",{class:"fx-backpack-icon",children:f.items[0].itemDefinition?.icon?o("span",{class:"fx-backpack-emoji",children:f.items[0].itemDefinition.icon}):o(W,{name:f.resetCard?"card":"gift",size:30})}),o("span",{class:"fx-backpack-name",children:v}),(f.resetCard||f.items[0].itemDefinition?.stackable)&&o("span",{class:"fx-backpack-count",children:["\xD7",Oe(f.items.length,n)]})]},f.id)}),Array.from({length:u},(f,v)=>o("div",{class:"fx-backpack-slot is-empty","aria-hidden":"true"},`empty:${v}`))]}),!d.length&&o("p",{class:"fx-backpack-empty",children:t("backpack.empty")})]}),g?o(ch,{slot:g,name:p(g),onUsed:m},`${g.id}:${g.items[0].id}`):o("div",{class:"fx-backpack-detail fx-backpack-prompt",children:[o(W,{name:"backpack",size:30}),o(ce,{children:t(d.length?"backpack.select":"backpack.emptyHint")})]})]})]})})}function ed(e,t,n){return e.type==="points"?t("backpack.effect.points",{n:Oe(e.amount,n)}):e.type==="reset_card"?t("backpack.effect.cards",{n:Oe(e.count,n)}):t("backpack.effect.quota")}function ch(e){let{t,locale:n,goTo:r}=ie(),a=e.slot.items[0],[i,s]=C(null),l=pe(),c=pe(),[d,g]=C(!1),u=a.itemDefinition,p=Ue(),m=a.source==="points"?t("backpack.source.points"):a.source==="admin"?t("backpack.source.admin"):a.source==="reward"?t("backpack.source.reward"):t("backpack.source.other"),f=()=>void l.run(async()=>{let k=await te(`/shop/inventory/${encodeURIComponent(a.id)}`);if(p.current){if(!k.ok)return Re(k);s(k.data)}}),v=()=>void c.run(async()=>{let k=await te(`/shop/inventory/${encodeURIComponent(a.id)}/use`,{method:"POST"});if(!k.ok)return Re(k);e.onUsed(k.data)});return o("section",{class:"fx-backpack-detail","aria-label":t("backpack.details"),children:[o("span",{class:`fx-backpack-detail-icon${e.slot.resetCard?" is-card":""}`,children:u?.icon?o("span",{class:"fx-backpack-emoji",children:u.icon}):o(W,{name:e.slot.resetCard?"card":"gift",size:32})}),o("h3",{children:e.name}),o("span",{class:"fx-tag",children:[t(e.slot.resetCard||u?.use?"backpack.consumable":u?"backpack.collectible":"backpack.voucher"),u&&` \xB7 ${t(`backpack.rarity.${u.rarity}`)}`]}),o("dl",{class:"fx-backpack-facts",children:[o("div",{children:[o("dt",{children:t("backpack.quantity")}),o("dd",{children:Oe(e.slot.items.length,n)})]}),o("div",{children:[o("dt",{children:t("backpack.acquired")}),o("dd",{children:Et(a.acquiredAt,n)})]}),!e.slot.resetCard&&o("div",{children:[o("dt",{children:t("backpack.source")}),o("dd",{children:m})]})]}),u?o(N,{children:[u.description&&o(ce,{children:u.description[n]}),u.use&&o(N,{children:[o("div",{class:"fx-backpack-effects",children:u.use.effects.map((k,z)=>o("div",{children:ed(k,t,n)},z))}),d?o(N,{children:[o(ce,{children:t("backpack.consumeConfirm")}),o("div",{class:"fx-backpack-use-actions",children:[o(X,{variant:"primary",pending:c.pending,onClick:v,children:t("backpack.confirmUse")}),o(X,{disabled:c.pending,onClick:()=>g(!1),children:t("common.cancel")})]})]}):o(X,{variant:"primary",onClick:()=>g(!0),children:u.use.label?.[n]||t("backpack.use")}),o(fe,{a:c,captchaSection:"backpack"})]})]}):e.slot.resetCard?o(N,{children:[o(ce,{children:t("card.desc")}),r&&o(X,{variant:"primary",onClick:()=>r("quota"),children:t("backpack.manageCards")})]}):i?o("div",{class:"fx-backpack-reveal",children:[i.codeName&&o("div",{class:"fx-muted",children:i.codeName}),i.key?o(N,{children:[o("code",{children:i.key}),o(Rt,{text:i.key,label:t("backpack.copyKey")})]}):o(ce,{children:t("backpack.noKey")})]}):o(X,{pending:l.pending,onClick:f,children:[o(W,{name:"key",size:14}),t("backpack.reveal")]}),o(fe,{a:l,captchaSection:"backpack"})]})}var dh=/^1[3-9]\d{9}$|^\+[1-9]\d{6,14}$/,uh=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,td=(e,t)=>e==="phone"?dh.test(t):uh.test(t),cr=(e,t)=>e==="phone"?Xr(t):Jr(t);function od(){let e=qe(()=>te("/auth/me"));if(e.state==="loading")return o(Ie,{panels:3,rows:2});if(e.state==="signedOut")return o(We,{});if(e.state==="error")return o(je,{error:e.error,onRetry:e.retry});let t=e.data;return o(N,{children:[o(ph,{me:t,onBound:(n,r)=>e.update(a=>({...a,[n]:r}))}),o(gh,{me:t}),o(bh,{}),o(yh,{me:t})]})}function Ci(){let e=dc(),t=pe();return{cd:e,a:t,send:(a,i,s)=>t.run(async()=>{let l=await te("/auth/send-code",{method:"POST",body:{target:a,type:i,purpose:s}});return l.ok?(e.start(60),{success:{key:"sec.codeSent"}}):Re(l)}),reset:()=>{e.stop(),t.clear()}}}function ph(e){let{t}=ie(),[n,r]=C(null),[a,i]=C(null);return o(xe,{icon:"key",title:t("sec.methods.title"),desc:t("sec.methods.desc"),children:["phone","email"].map(s=>{let l=e.me[s];return o(N,{children:[o(Fe,{label:t(s==="phone"?"account.contact.phone":"account.contact.email"),desc:l?cr(s,l):t("account.contact.unbound"),children:o(X,{onClick:()=>{i(null),r(n===s?null:s)},children:t(n===s?"common.cancel":l?"sec.change":"sec.bind")})}),n===s&&o(fh,{kind:s,current:l??null,onDone:c=>{e.onBound(s,c),r(null),i(s)}}),a===s&&n!==s&&o(Te,{children:o("div",{class:"fx-msg is-ok",role:"status",children:t(s==="phone"?"sec.phoneBound":"sec.emailBound")})})]},s)})})}function fh(e){let{t}=ie(),{kind:n}=e,[r,a]=C(""),[i,s]=C(""),l=Ci(),c=pe(),d=r.trim(),g=n==="phone"?"err.phoneInvalid":"err.emailInvalid",u=()=>{if(!td(n,d)){l.a.run(async()=>({error:{key:g}}));return}l.send(d,n,"bind")},p=()=>void c.run(async()=>{if(!td(n,d))return{error:{key:g}};if(!i.trim())return{error:{key:"err.codeRequired"}};let m=n==="phone"?{phone:d,verification_code:i.trim()}:{email:d,verification_code:i.trim()},f=await te(n==="phone"?"/auth/bind-phone":"/auth/bind-email",{method:"POST",body:m});if(!f.ok)return Re(f);e.onDone(d)});return o(Te,{class:"fx-form",children:[o("label",{class:"fx-field",children:[o("span",{children:e.current?t(n==="phone"?"sec.newPhone":"sec.newEmail"):t(n==="phone"?"sec.phone":"sec.email")}),o("input",{class:"fx-input",type:n==="phone"?"tel":"email",value:r,autoComplete:"off",placeholder:t(n==="phone"?"sec.phonePlaceholder":"sec.emailPlaceholder"),onInput:m=>a(m.currentTarget.value)})]}),o(Ti,{code:i,setCode:s,sender:l,onSend:u}),o("div",{class:"fx-inline",children:o(X,{variant:"primary",pending:c.pending,onClick:p,children:t("sec.bindSubmit")})}),o(fe,{a:c})]})}function Ti(e){let{t}=ie(),{cd:n,a:r}=e.sender;return o("div",{class:"fx-field",children:[o("span",{children:e.label??t("sec.code")}),o("div",{class:"fx-inline",children:[o("input",{class:"fx-input fx-input--code",inputMode:"numeric",autoComplete:"one-time-code",value:e.code,placeholder:t("sec.codePlaceholder"),"aria-label":e.label??t("sec.code"),onInput:a=>e.setCode(a.currentTarget.value)}),o(X,{pending:r.pending,disabled:n.left>0||e.disabled,onClick:e.onSend,children:n.left>0?t("sec.resendIn",{s:n.left}):t("sec.sendCode")})]}),o(fe,{a:r})]})}function mh(e){let{t}=ie(),n=ac(e.value),r=e.value.length>0,a=[[n.length,t("pw.req.length",{min:8,max:64})],[n.lower,t("pw.req.lower")],[n.upper,t("pw.req.upper")],[n.special,t("pw.req.special")],[n.space,t("pw.req.space")]];return o("ul",{class:"fx-rules","aria-label":t("pw.rulesLabel"),children:a.map(([i,s])=>o("li",{class:i?"is-ok":r?"is-bad":"",children:[i?o(W,{name:"check",size:11}):r?o(W,{name:"x",size:11}):o("span",{class:"fx-rule-dot","aria-hidden":"true"}),o("span",{children:s})]},s))})}function rd(e,t){let n=rc(e);return n.ok?e!==t?{error:{key:"pw.mismatch"}}:null:{error:{key:li[n.rule]}}}function gh(e){let{t}=ie(),n=["phone","email"].filter(l=>!!e.me[l]),[r,a]=C("current"),[i,s]=C(!1);return o(xe,{icon:"shield",title:t("pw.title"),desc:t("pw.desc",{min:8,max:64}),actions:o(X,{onClick:()=>s(!i),children:t(i?"common.cancel":"pw.change")}),children:i&&o(Te,{class:"fx-form",children:[o(Mt,{label:t("pw.modeLabel"),value:r,onChange:a,options:[{value:"current",label:t("pw.mode.current")},{value:"code",label:t("pw.mode.code")}]}),r==="current"?o(hh,{onDone:()=>s(!1)}):n.length?o(vh,{me:e.me,targets:n,onDone:()=>s(!1)}):o(ce,{children:t("pw.codeNeedsContact")})]})})}function ad(e){let{t}=ie();return o(N,{children:[o("label",{class:"fx-field",children:[o("span",{children:t("pw.new")}),o("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:e.pw,maxLength:72,onInput:n=>e.setPw(n.currentTarget.value)})]}),o(mh,{value:e.pw}),o("label",{class:"fx-field",children:[o("span",{children:t("pw.confirm")}),o("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:e.confirm,onInput:n=>e.setConfirm(n.currentTarget.value)})]})]})}function hh(e){let{t}=ie(),[n,r]=C(""),[a,i]=C(""),[s,l]=C(""),c=pe(),[d,g]=C(!1),u=()=>void c.run(async()=>{if(!n)return{error:{key:"pw.currentRequired"}};let p=rd(a,s);if(p)return p;let m=await te("/auth/password",{method:"PUT",body:{currentPassword:n,newPassword:a}});return m.ok?(r(""),i(""),l(""),g(!0),{success:{key:"pw.changed"}}):m.status===404?{error:{key:"pw.noPasswordYet"}}:Re(m)});return o(N,{children:[o("label",{class:"fx-field",children:[o("span",{children:t("pw.current")}),o("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:n,onInput:p=>r(p.currentTarget.value)})]}),o(ad,{pw:a,setPw:i,confirm:s,setConfirm:l}),o("div",{class:"fx-inline",children:[o(X,{variant:"primary",pending:c.pending,onClick:u,children:t("pw.submit")}),d&&o(X,{onClick:e.onDone,children:t("common.done")})]}),o(fe,{a:c})]})}function vh(e){let{t}=ie(),[n,r]=C(e.targets[0]),[a,i]=C(""),[s,l]=C(""),[c,d]=C(""),g=Ci(),u=pe(),[p,m]=C(!1),f=e.me[n]||"",v=()=>void u.run(async()=>{if(!a.trim())return{error:{key:"err.codeRequired"}};let k=rd(s,c);if(k)return k;let z=n==="phone"?{phone:f,code:a.trim(),newPassword:s}:{email:f,code:a.trim(),newPassword:s},x=await te("/auth/reset-password",{method:"POST",body:z});return x.ok?(i(""),l(""),d(""),m(!0),{success:{key:"pw.changed"}}):Re(x)});return o(N,{children:[e.targets.length>1?o(Mt,{label:t("pw.via"),value:n,onChange:k=>{r(k),i(""),g.reset()},options:e.targets.map(k=>({value:k,label:cr(k,e.me[k])}))}):o(ce,{children:t("pw.codeTo",{target:cr(n,f)})}),o(Ti,{code:a,setCode:i,sender:g,onSend:()=>void g.send(f,n,"reset_password")}),o(ad,{pw:s,setPw:l,confirm:c,setConfirm:d}),o("div",{class:"fx-inline",children:[o(X,{variant:"primary",pending:u.pending,onClick:v,children:t("pw.submitReset")}),p&&o(X,{onClick:e.onDone,children:t("common.done")})]}),o(fe,{a:u})]})}function bh(){let{t:e}=ie(),t=pe(),n=()=>void t.run(async()=>{let r=await te("/auth/logout-all",{method:"POST"});if(!r.ok)return Re(r);try{await oe().forsionLogout?.()}catch(a){return{error:{raw:xt(a)}}}return{success:{key:"sec.logoutAllDone"}}});return o(xe,{icon:"laptop",title:e("sec.devices.title"),desc:e("sec.devices.desc"),children:[o(Fe,{label:e("sec.logoutAll"),desc:e("sec.logoutAllDesc"),children:o(Pt,{label:e("sec.logoutAll"),confirmLabel:e("sec.logoutAllConfirm"),pending:t.pending,onConfirm:n})}),(t.error||t.success)&&o(Te,{children:o(fe,{a:t})})]})}function yh(e){let{t}=ie(),n=["phone","email"].filter(z=>!!e.me[z]),[r,a]=C(!1),[i,s]=C(n.length?"code":"password"),[l,c]=C(n[0]??null),[d,g]=C(""),[u,p]=C(""),m=Ci(),f=pe(),v=l&&e.me[l]||"",k=()=>void f.run(async()=>{if(i==="code"&&!d.trim())return{error:{key:"err.codeRequired"}};if(i==="password"&&!u)return{error:{key:"pw.currentRequired"}};let z=await te("/auth/delete-account",{method:"POST",body:i==="code"?{verification_code:d.trim()}:{password:u}});if(!z.ok)return Re(z);try{await oe().forsionLogout?.()}catch{}return{success:{key:"del.done"}}});return o(xe,{icon:"alert",danger:!0,title:t("del.title"),desc:t("del.desc"),actions:o(X,{variant:"danger",onClick:()=>{a(!r),f.clear()},children:t(r?"common.cancel":"del.start")}),children:r&&o(Te,{class:"fx-form",children:[o(ce,{tone:"error",children:t("del.warn")}),n.length>0&&o(Mt,{label:t("del.methodLabel"),value:i,onChange:s,options:[{value:"code",label:t("del.byCode")},{value:"password",label:t("del.byPassword")}]}),i==="code"&&l?o(N,{children:[n.length>1&&o(Mt,{label:t("pw.via"),value:l,onChange:z=>{c(z),g(""),m.reset()},options:n.map(z=>({value:z,label:cr(z,e.me[z])}))}),o(Ti,{code:d,setCode:g,sender:m,label:t("del.codeLabel",{target:cr(l,v)}),onSend:()=>void m.send(v,l,"delete_account")})]}):o("label",{class:"fx-field",children:[o("span",{children:t("del.passwordLabel")}),o("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:u,onInput:z=>p(z.currentTarget.value)})]}),o("div",{class:"fx-inline",children:o(Pt,{variant:"danger",label:t("del.submit"),confirmLabel:t("del.confirm"),pending:f.pending,onConfirm:k})}),o(fe,{a:f})]})})}var sd=20;function ld(){let e=qe(async()=>{let[t,n]=await Promise.all([te("/token-quota/my"),te(`/token-quota/my/logs?limit=${sd}&offset=0`)]);if(!t.ok)return t;let r=n.ok&&Array.isArray(n.data?.logs)?n.data.logs:null;return{ok:!0,status:t.status,data:{dailyLimit:Ae(t.data?.dailyLimit),logs:r,total:n.ok?Ae(n.data?.total)??r?.length??0:0,logsFail:n.ok?null:n}}});return e.state==="loading"?o(Ie,{panels:3,rows:2}):e.state==="signedOut"?o(We,{}):e.state==="error"?o(je,{error:e.error,onRetry:e.retry}):o(N,{children:[o(xh,{dailyLimit:e.data.dailyLimit}),o(wh,{base:e.data,onRetry:e.reload})]})}function xh(e){let{t,locale:n}=ie(),[r,a]=C(30),[i,s]=C({state:"loading"}),[l,c]=C(!1),[d,g]=C(0),u=re(0);J(()=>{let w=++u.current;return c(!0),te(`/usage/stats?days=${r}`).then(P=>{w===u.current&&(c(!1),s(P.ok?{state:"ready",data:P.data??{}}:{state:"error",fail:P}))}),()=>{u.current++}},[r,d]);let p=e.dailyLimit!==null&&e.dailyLimit<0?"usage.unlimitedNote":na(1,e.dailyLimit)===null?"usage.noLimitNote":null,m=w=>na(w,e.dailyLimit)??"\u2014",f=o(Mt,{label:t("usage.range"),value:r,onChange:a,options:[{value:7,label:t("usage.days",{n:7})},{value:30,label:t("usage.days",{n:30})},{value:90,label:t("usage.days",{n:90})}]}),v=i.state==="ready"?i.data:null,k=(v?.byModel??[]).filter(Boolean),z=(v?.byProject??[]).filter(Boolean),x=Ae(v?.successRate);return o(N,{children:[o(xe,{icon:"chart",title:t("usage.overview.title"),desc:t("usage.overview.desc"),actions:f,children:[i.state==="error"?o("div",{class:"fx-sub",children:o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:kt(wt(i.fail),t)}),o("button",{type:"button",class:"fx-link",onClick:()=>g(w=>w+1),children:t("common.retry")})]})}):o("div",{class:`fx-stats fx-block${l&&v?" is-refreshing":""}`,"aria-busy":l||void 0,children:[o(Ai,{label:t("usage.requests"),value:v?Oe(Ae(v.totalRequests)??0,n):null,testId:"usage-requests"}),o(Ai,{label:t("usage.successRate"),value:v?x===null?"\u2014":`${x.toFixed(1)}%`:null}),o(Ai,{label:t("usage.consumption"),value:v?m(v.totalPointsCost):null,sub:t("usage.ofToday"),testId:"usage-consumption"})]}),p&&o("div",{class:"fx-sub fx-sub--tight",children:o(ce,{children:t(p)})})]}),i.state!=="error"&&o(N,{children:[o(xe,{icon:"gauge",title:t("usage.byModel.title"),desc:t("usage.byModel.desc"),children:o(id,{loading:!v,empty:t("usage.empty"),head:[t("usage.col.model"),t("usage.col.requests"),t("usage.col.consumption")],rows:k.map(w=>[w.modelName||w.modelId||"\u2014",Oe(Ae(w.count)??0,n),m(w.pointsCost)])})}),o(xe,{icon:"laptop",title:t("usage.byApp.title"),desc:t("usage.byApp.desc"),children:o(id,{loading:!v,empty:t("usage.empty"),head:[t("usage.col.app"),t("usage.col.requests"),t("usage.col.consumption")],rows:z.map(w=>[cd(w.projectSource,t("usage.appUnknown")),Oe(Ae(w.count)??0,n),m(w.pointsCost)])})})]})]})}var kh={tangu:"Tangu","ai-studio":"Forsion AI Studio",desktop:"Forsion Desktop",amadeus:"Amadeus",notebase:"Notebase",calendar:"Forsion Calendar",chat:"Forsion Chat",desk:"Forsion Desk","photo-studio":"Photo Studio",connect:"Forsion Connect"},cd=(e,t)=>!e||e==="unknown"?t:kh[e]??e;function Ai(e){return o("div",{class:"fx-stat",children:[o("span",{class:"fx-stat-label",children:e.label}),e.value===null?o("span",{class:"fx-skel fx-skel--stat"}):o("strong",{class:"fx-stat-value","data-testid":e.testId,children:e.value}),e.sub&&o("span",{class:"fx-stat-sub",children:e.sub})]})}function id(e){return e.loading?o("div",{class:"fx-sub",children:[o("span",{class:"fx-skel fx-skel--row"}),o("span",{class:"fx-skel fx-skel--row"})]}):e.rows.length?o("div",{class:"fx-table-wrap fx-block",children:o("table",{class:"fx-table",children:[o("thead",{children:o("tr",{children:e.head.map((t,n)=>o("th",{class:n?"is-num":"",children:t},n))})}),o("tbody",{children:e.rows.map((t,n)=>o("tr",{children:t.map((r,a)=>o("td",{class:a?"is-num":"",children:r},a))},n))})]})}):o(lt,{children:e.empty})}function wh(e){let{t,locale:n}=ie(),r=Ue(),[a,i]=C(e.base.logs??[]),[s,l]=C(e.base.total),c=pe();J(()=>{i(e.base.logs??[]),l(e.base.total)},[e.base]);let d=()=>void c.run(async()=>{let u=await te(`/token-quota/my/logs?limit=${sd}&offset=${a.length}`);if(!u.ok)return{error:wt(u)};let p=Array.isArray(u.data?.logs)?u.data.logs:[];r.current&&(i(m=>[...m,...p]),l(m=>p.length?Ae(u.data?.total)??m:a.length))}),g=e.base.dailyLimit;return o(xe,{icon:"clock",title:t("usage.recent.title"),desc:t("usage.recent.desc"),children:[e.base.logsFail?o("div",{class:"fx-sub",children:o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:kt(wt(e.base.logsFail),t)}),o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}):a.length===0?o(lt,{children:t("usage.recentEmpty")}):o("div",{class:"fx-list fx-block",role:"list",children:a.map((u,p)=>o("div",{class:"fx-list-row",role:"listitem",children:[o("span",{class:"fx-list-main",children:[o("strong",{children:[u.modelName||u.modelId||"\u2014",u.success===!1&&o("span",{class:"fx-tag fx-tag--danger",children:t("usage.failed")})]}),o("small",{children:[Et(u.createdAt,n),cd(u.projectSource,t("usage.appUnknown"))].join(" \xB7 ")})]}),o("span",{class:"fx-value",children:na(u.pointsCost,g)??"\u2014"})]},u.id??p))}),a.length>0&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:t("usage.shown",{shown:Oe(a.length,n),total:Oe(Math.max(s,a.length),n)})}),a.length<s&&o(X,{pending:c.pending,onClick:d,children:t("common.loadMore")})]}),c.error&&o("div",{class:"fx-sub fx-sub--tight",children:o(fe,{a:c})})]})}var dd=["plugin","amadeus-plugin","skill","agent","space","theme"],zh=["zip","github","npm"],Sh=["description","tags","minAppVersion","maxAppVersion","platforms"],_h=50*1024*1024,Ch=new Set(["market_npm_invalid","market_npm_source","market_github_source","market_not_found","market_zip_required","market_zip_invalid","market_zip_too_large","market_version_required","market_version_invalid","market_version_mismatch","market_version_not_newer","market_icon_invalid","market_duplicate","market_update_pending","market_stale","market_requirements_invalid","market_requirements_mismatch","market_no_release","market_no_changes","market_dryrun_unsupported"]),Th=new Set(["no_manifest","type_mismatch","tag_version_mismatch","id_slug_mismatch","engine_slug_mismatch","no_entry","has_node_modules"]),oa=e=>`sub.type.${e.replace("-","_")}`,pd=e=>e==="approved"?"sub.approved":e==="rejected"?"sub.rejected":"sub.pending",Mi=e=>e==="github"?"GitHub":e==="npm"?"npm":"ZIP",Ah=e=>e.status==="pending"||!!e.pendingUpdate,ud=(e,t)=>t==="all"||(t==="pending"?Ah(e):e.status===t),Eh=e=>e>=1024*1024?`${(e/1024/1024).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1024))} KB`,fd=e=>e.status==="approved"?"sub.updated":"sub.resubmitted";async function fo(e){let t=oe().cloudInvoke;if(!t)return{ok:!1,out:{error:{key:"err.unavailable"}},code:null,values:{}};let n=await t("cloud:marketSubmit",{...e.id?{id:e.id}:{},...e.dryRun?{dryRun:!0}:{},fields:e.fields,...e.zip?{zip:{name:e.zip.name,data:e.zip.data}}:{}}),r=qr(n);if(r.ok)return{ok:!0,data:r.data};r.status===401&&oe().authStatus?.().catch(()=>{});let a=Object.fromEntries(Object.entries(n?.json?.values||{}).filter(([,s])=>typeof s=="string"||typeof s=="number").map(([s,l])=>[s,String(l)]));return{ok:!1,out:r.code==="market_version_not_newer"&&a.version&&a.current?{error:{key:"sub.notNewer",vars:a}}:Ch.has(r.code||"")?{error:{key:`sub.err.${r.code}`}}:Re(r),code:r.code,values:a}}async function md(e){return e.size>_h?{error:{key:"sub.errLarge"}}:{name:e.name,size:e.size,data:new Uint8Array(await e.arrayBuffer())}}function Ph(e,t){let n=[e?.minAppVersion&&`\u2265 ${e.minAppVersion}`,e?.maxAppVersion&&`< ${e.maxAppVersion}`].filter(Boolean).join(", "),r=[n&&`Forsion ${n}`,e?.platforms?.length?e.platforms.join(", "):""].filter(Boolean);return r.length?r.join(" \xB7 "):t("sub.reqNone")}function gd({status:e}){let t=Ye();return o("span",{class:`fx-tag ${e==="approved"?"fx-status--resolved":e==="rejected"?"fx-tag--danger":"fx-tag--accent"}`,children:t(pd(e))})}function hd(e){let t=`${e.id}-${e.name}`;return o("label",{class:"fx-sub-field",for:t,children:[o("span",{children:e.label}),e.rows?o("textarea",{id:t,value:e.value,rows:e.rows,maxLength:2e5,onInput:n=>e.onInput(n.currentTarget.value)}):o("input",{id:t,value:e.value,placeholder:e.placeholder,maxLength:e.name==="summary"?2e3:500,onInput:n=>e.onInput(n.currentTarget.value)})]})}function vd({id:e,file:t,disabled:n,onPick:r}){let a=Ye(),[i,s]=C(!1);J(()=>{let c=()=>s(!1);return window.addEventListener("dragend",c),window.addEventListener("drop",c,!0),window.addEventListener("blur",c),()=>{window.removeEventListener("dragend",c),window.removeEventListener("drop",c,!0),window.removeEventListener("blur",c)}},[]);let l=c=>{c&&!n&&r(c)};return o("label",{class:`fx-sub-drop${i?" is-over":""}${t?" is-filled":""}`,for:`${e}-zip`,onDragOver:c=>{c.preventDefault(),n||s(!0)},onDragLeave:()=>s(!1),onDrop:c=>{c.preventDefault(),s(!1),l(c.dataTransfer?.files?.[0])},children:[o(W,{name:t?"box":"upload",size:18}),o("span",{class:"fx-sub-drop-text",children:[o("strong",{children:t?t.name:a("sub.dropTitle")}),o("small",{children:t?a("sub.dropReplace",{size:Eh(t.size)}):a("sub.dropHint")})]}),o("input",{id:`${e}-zip`,class:"fx-sub-file",type:"file",accept:".zip,application/zip",disabled:n,onChange:c=>{l(c.currentTarget.files?.[0]),c.currentTarget.value=""}})]})}function bd({check:e,update:t}){let n=Ye(),r=e.manifest,a=[r?[!0,"sub.checkType",`${n(oa(r.type))} \xB7 ${r.file}`]:[!1,"sub.checkType",n("sub.warn.no_manifest")],...e.version?[[!0,"sub.checkVersion",e.current?`v${e.current} \u2192 v${e.version}`:`v${e.version}`]]:[],[!0,"sub.checkIcon",n(e.icon?"sub.iconYes":"sub.iconNo")],[!0,"sub.checkReadme",n(e.readme?"sub.readmeYes":t?"sub.readmeKeep":"sub.readmeNo")],[!0,"sub.checkReq",Ph(e.metadata,n)],...(e.warnings||[]).filter(i=>i!=="no_manifest"&&Th.has(i)).map(i=>[!1,"sub.checkWarn",n(`sub.warn.${i}`)])];return o("ul",{class:"fx-sub-checks",children:a.map(([i,s,l])=>o("li",{class:i?"is-ok":"is-warn",children:[o(W,{name:i?"check":"alert",size:14}),o("span",{class:"fx-sub-k",children:n(s)}),o("span",{children:l})]}))})}function Mh({item:e,checks:t,onDone:n}){let r=Ye(),a=io(),i=Ue(),s=pe(),[l,c]=C(null),[d,g]=C(null),u=m=>void s.run(async()=>{c(null),g(null);let f=await md(m);if(!i.current)return;if(!("data"in f))return f;if(c(f),!t)return;let v=await fo({id:e.id,dryRun:!0,fields:{},zip:f});if(i.current){if(!v.ok)return v.out;g(v.data)}}),p=()=>void s.run(async()=>{if(!l)return;let m=await fo({id:e.id,fields:{},zip:l});if(i.current){if(!m.ok)return m.out;n(fd(e))}});return o(N,{children:[o(vd,{id:a,file:l,disabled:s.pending,onPick:u}),d&&o(bd,{check:d,update:!0}),d&&o(ce,{children:r(e.status==="approved"?"sub.zipListedNote":"sub.zipUnlistedNote")}),l&&o("div",{class:"fx-sub-actions",children:[o(X,{variant:"primary",pending:s.pending,disabled:t&&!d,onClick:p,children:d?.version?r("sub.submitVersion",{version:d.version}):r("sub.submit")}),o(X,{disabled:s.pending,onClick:()=>{c(null),g(null),s.clear()},children:r("common.cancel")})]}),o(fe,{a:s,captchaSection:"submission"})]})}function Rh({item:e,onDone:t}){let n=Ye(),r=Ue(),a=pe(),[i,s]=C(null),[l,c]=C(null),d=()=>void a.run(async()=>{s(null),c(null);let p=await fo({id:e.id,dryRun:!0,fields:{}});if(r.current){if(!p.ok){if(p.code==="market_version_not_newer"&&p.values.version){c(p.values);return}return p.out}s(p.data)}}),g=()=>void a.run(async()=>{let p=await fo({id:e.id,fields:{}});if(r.current){if(!p.ok)return p.out;t(fd(e))}}),u=e.source==="github"?e.githubRepoUrl:e.npmPackage;return o(N,{children:[!i&&o(X,{pending:a.pending,onClick:d,children:[o(W,{name:"refresh",size:13}),n(l?"sub.checkAgain":"sub.checkNew")]}),l&&o(ce,{children:n("sub.upToDate",{version:l.version,current:l.current||l.version})}),i&&o(N,{children:[o("div",{class:"fx-sub-upstream",children:[o(W,{name:e.source==="github"?"link":"box",size:18}),o("span",{children:[o("strong",{children:n("sub.upstreamLatest",{version:i.version||""})}),o("small",{children:[u,i.tag&&n("sub.releaseTag",{tag:i.tag}),i.current&&n("sub.storeHas",{version:i.current})].filter(Boolean).join(" \xB7 ")})]})]}),o(ce,{children:n(e.source==="github"?"sub.githubNote":"sub.npmNote",{version:i.version||""})}),o("div",{class:"fx-sub-actions",children:[o(X,{variant:"primary",pending:a.pending,onClick:g,children:n("sub.submitVersion",{version:i.version||""})}),o(X,{disabled:a.pending,onClick:()=>{s(null),a.clear()},children:n("common.cancel")})]})]}),o(fe,{a,captchaSection:"submission"})]})}function Ih({item:e,onDone:t}){let n=Ye(),r=io(),a=Ue(),i=pe(),s=()=>({name:e.name,summary:e.summary||"",description:e.description||"",tags:(e.tags||[]).join(", "),minAppVersion:e.minAppVersion||"",maxAppVersion:e.maxAppVersion||"",platforms:(e.platforms||[]).join(", ")}),[l,c]=C(s),[d,g]=C(new Set),[u,p]=C(!1),m=z=>x=>{c(w=>({...w,[z]:x})),g(w=>new Set([...w,z])),i.clear()},f=()=>void i.run(async()=>{if(!l.name.trim())return{error:{key:"sub.errName"}};if(!d.size)return{error:{key:"sub.err.market_no_changes"}};let z=await fo({id:e.id,fields:{mode:"info",...Object.fromEntries([...d].map(x=>[x,l[x].trim()]))}});if(a.current){if(!z.ok)return z.out;p(!1),t(e.status==="approved"?"sub.infoSubmitted":"sub.resubmitted")}}),v=(z,x,w={})=>o(hd,{id:r,name:z,label:n(x),value:l[z],onInput:m(z),...w}),k=n("sub.unset");return o("section",{class:"fx-sub-sec",children:[o("div",{class:"fx-sub-sec-bar",children:[o("h4",{children:n("sub.secInfo")}),!u&&o(X,{disabled:!!e.pendingUpdate,title:e.pendingUpdate?n("sub.err.market_update_pending"):void 0,onClick:()=>{c(s()),g(new Set),i.clear(),p(!0)},children:[o(W,{name:"pencil",size:13}),n("sub.edit")]})]}),u?o("form",{class:"fx-sub-form fx-sub-form--inline",onSubmit:z=>{z.preventDefault(),f()},children:[o("fieldset",{disabled:i.pending,children:[o("div",{class:"fx-sub-columns",children:[v("name","sub.name"),v("tags","sub.tags",{placeholder:n("sub.tagsHint")})]}),v("summary","sub.summary"),v("description","sub.description",{rows:3}),o("div",{class:"fx-sub-columns",children:[v("minAppVersion","sub.minAppVersion",{placeholder:"2.13.0"}),v("maxAppVersion","sub.maxAppVersion",{placeholder:n("sub.optional")})]}),v("platforms","sub.platforms",{placeholder:"desktop, android, ios, web"}),o(ce,{children:n("sub.requirementsHint")}),o(ce,{children:n("sub.infoNote")})]}),o("div",{class:"fx-sub-actions",children:[o(X,{variant:"primary",pending:i.pending,submit:!0,children:n("sub.submitInfo")}),o(X,{disabled:i.pending,onClick:()=>{p(!1),i.clear()},children:n("common.cancel")})]}),o(fe,{a:i,captchaSection:"submission"})]}):o("dl",{class:"fx-sub-kv",children:[o("dt",{children:n("sub.summary")}),o("dd",{children:e.summary||k}),o("dt",{children:n("sub.description")}),o("dd",{class:"fx-sub-clamp",children:e.description||k}),o("dt",{children:n("sub.tags")}),o("dd",{children:e.tags?.length?e.tags.join(", "):k}),o("dt",{children:n("sub.minAppVersion")}),o("dd",{children:e.minAppVersion||k}),o("dt",{children:n("sub.maxAppVersion")}),o("dd",{children:e.maxAppVersion||k}),o("dt",{children:n("sub.platforms")}),o("dd",{children:e.platforms?.length?e.platforms.join(", "):k})]})]})}function Lh({item:e,checks:t,notice:n,onBack:r,onDone:a}){let i=Ye(),{locale:s}=ie(),l=e.pendingUpdate,c=e.rejectedUpdate;return o("div",{class:"fx-sub-detail","data-detail-id":e.id,children:[o("button",{type:"button",class:"btn sm ghost fx-sub-back",onClick:r,children:[o(W,{name:"back",size:13}),i("sub.back")]}),o("div",{class:"fx-sub-dhead",children:[o("div",{class:"fx-sub-item-head",children:[o("strong",{children:e.name}),o(gd,{status:e.status})]}),o("div",{class:"fx-sub-meta",children:[o("span",{children:i(oa(e.type))}),o("span",{children:Mi(e.source)}),e.version&&o("span",{children:["v",e.version]}),o("span",{children:i("sub.downloads",{n:e.downloads||0})})]}),o("div",{children:o(Rt,{text:e.id,label:`${i("sub.identity")} ${e.id.slice(0,8)}`})})]}),n&&o("p",{class:"fx-msg is-ok",role:"status",children:i(n)}),o("section",{class:"fx-sub-sec",children:[o("h4",{children:i("sub.secVersion")}),e.status==="rejected"&&e.reviewNote&&o(ce,{tone:"error",children:e.reviewNote}),c&&o(ce,{tone:"error",children:[i(c.kind==="info"?"sub.rejectedInfo":"sub.rejectedVersion",{version:c.version}),c.note?`: ${c.note}`:""]}),l?o(N,{children:[o(ce,{children:i(l.kind==="info"?"sub.pendingInfo":"sub.pendingVersion",{version:l.version})}),o(ce,{children:i("sub.pendingHint")})]}):e.status==="pending"&&e.source!=="zip"?o(ce,{children:i("sub.inReview")}):e.source==="zip"?o(Mh,{item:e,checks:t,onDone:a}):o(Rh,{item:e,onDone:a})]}),o(Ih,{item:e,onDone:a}),o("section",{class:"fx-sub-sec",children:[o("h4",{children:i("sub.secHistory")}),o("ul",{class:"fx-sub-time",children:[(e.versions||[]).map(d=>o("li",{children:[o("span",{children:on(d.createdAt,s)}),o("span",{children:i("sub.histApproved",{version:d.version})})]},`${d.version}-${d.createdAt}`)),e.createdAt&&o("li",{children:[o("span",{children:on(e.createdAt,s)}),o("span",{children:i("sub.histSubmitted")})]})]})]})]})}function Dh({checks:e,onDone:t,onBack:n}){let r=Ye(),a=io(),i=Ue(),s=pe(),[l,c]=C("zip"),[d,g]=C({type:"plugin",name:"",summary:"",githubRepoUrl:"",npmPackage:"",description:"",tags:"",minAppVersion:"",maxAppVersion:"",platforms:""}),[u,p]=C(new Set),[m,f]=C(null),[v,k]=C(null),z=L=>U=>{g(H=>({...H,[L]:U})),p(H=>new Set([...H,L])),s.clear()},x=L=>void s.run(async()=>{f(null),k(null);let U=await md(L);if(!i.current)return;if(!("data"in U))return U;if(f(U),!e)return;let H=await fo({dryRun:!0,fields:{source:"zip"},zip:U});if(!i.current)return;if(!H.ok)return H.out;let B=H.data;k(B);let G=B.manifest;g(_=>({..._,type:!u.has("type")&&G&&dd.includes(G.type)?G.type:_.type,name:!u.has("name")&&!_.name&&G?.name?G.name:_.name}))}),w=()=>void s.run(async()=>{if(!d.name.trim())return{error:{key:"sub.errName"}};if(l!=="zip"&&!(l==="github"?d.githubRepoUrl:d.npmPackage).trim())return{error:{key:"sub.errSource"}};if(l==="zip"&&!m)return{error:{key:"sub.errZip"}};let L=l==="github"?{githubRepoUrl:d.githubRepoUrl.trim()}:l==="npm"?{npmPackage:d.npmPackage.trim()}:{},U=await fo({fields:{type:d.type,source:l,name:d.name.trim(),summary:d.summary.trim(),...L,...Object.fromEntries(Sh.map(H=>[H,d[H].trim()]))},zip:l==="zip"?m:null});if(i.current){if(!U.ok)return U.out;t(String(U.data?.id||""))}}),P=(L,U,H={})=>o(hd,{id:a,name:L,label:r(U),value:d[L],onInput:z(L),...H});return o("div",{class:"fx-sub-detail",children:[o("button",{type:"button",class:"btn sm ghost fx-sub-back",onClick:n,children:[o(W,{name:"back",size:13}),r("sub.back")]}),o("div",{class:"fx-sub-dhead",children:o("div",{class:"fx-sub-item-head",children:o("strong",{children:r("sub.new")})})}),o("form",{class:"fx-sub-form fx-sub-form--inline",onSubmit:L=>{L.preventDefault(),w()},children:[o("fieldset",{disabled:s.pending,children:[o(Mt,{label:r("sub.source"),value:l,options:zh.map(L=>({value:L,label:Mi(L)})),onChange:L=>{c(L),s.clear()}}),l==="zip"?o(N,{children:[o(vd,{id:a,file:m,disabled:s.pending,onPick:x}),v?o(bd,{check:v,update:!1}):o(ce,{children:r("sub.zipHint")})]}):o(N,{children:[l==="github"?P("githubRepoUrl","sub.repo",{placeholder:"https://github.com/owner/repo"}):P("npmPackage","sub.npm",{placeholder:"@scope/plugin-name"}),o(ce,{children:r(l==="github"?"sub.repoHint":"sub.npmHint")})]}),o("div",{class:"fx-sub-columns",children:[o("label",{class:"fx-sub-field",for:`${a}-type`,children:[o("span",{children:r("sub.type")}),o("select",{id:`${a}-type`,value:d.type,onChange:L=>z("type")(L.currentTarget.value),children:dd.map(L=>o("option",{value:L,children:r(oa(L))},L))})]}),P("name","sub.name")]}),P("summary","sub.summary"),P("description","sub.description",{rows:3}),P("tags","sub.tags",{placeholder:r("sub.tagsHint")}),o("div",{class:"fx-sub-columns",children:[P("minAppVersion","sub.minAppVersion",{placeholder:"2.13.0"}),P("maxAppVersion","sub.maxAppVersion",{placeholder:r("sub.optional")})]}),P("platforms","sub.platforms",{placeholder:"desktop, android, ios, web"}),o(ce,{children:r("sub.requirementsHint")}),o(ce,{children:r("sub.identityHint")}),o(ce,{children:r("sub.reviewHint")})]}),o("div",{class:"fx-sub-actions",children:[o(X,{variant:"primary",pending:s.pending,submit:!0,children:r("sub.submit")}),o(X,{disabled:s.pending,onClick:n,children:r("common.cancel")})]}),o(fe,{a:s,captchaSection:"submission"})]})]})}var Ei=null,Pi=new Set;function yd(e){let t=!1;for(let n of Pi)t=n(e)||t;Ei=t?null:{id:e,at:Date.now()}}var Nh=()=>{let e=Ei;return Ei=null,e&&Date.now()-e.at<3e4?e.id:null};function Oh({items:e,checks:t,reload:n}){let r=Ye(),[a,i]=C("all"),[s,l]=C(()=>{let z=Nh();return z&&e.some(x=>x.id===z)?z:null}),[c,d]=C(()=>s!==null),[g,u]=C(null);J(()=>{let z=x=>e.some(w=>w.id===x)?(i("all"),l(x),d(!0),u(null),!0):!1;return Pi.add(z),()=>{Pi.delete(z)}},[e]);let p=e.filter(z=>ud(z,a)),m=s==="new"?null:p.find(z=>z.id===s)||p[0]||null,f=z=>{l(z),d(!0),u(null)},v=(z,x)=>{i("all"),l(z),u({id:z,key:x}),n()},k=z=>e.filter(x=>ud(x,z)).length;return o(xe,{title:r("sub.mine"),desc:r("sub.desc"),actions:o(N,{children:[o(X,{variant:"primary",disabled:s==="new",onClick:()=>f("new"),children:[o(W,{name:"plus",size:13}),r("sub.new")]}),o(X,{onClick:n,children:r("sub.refresh")})]}),children:!e.length&&s!=="new"?o(lt,{children:[o("strong",{children:r("sub.empty")}),o("p",{children:r("sub.emptyHint")})]}):o(N,{children:[!!e.length&&o("div",{class:"fx-sub-filter",children:o(Mt,{label:r("sub.filter"),value:a,onChange:i,options:["all","pending","approved","rejected"].map(z=>({value:z,label:`${r(z==="all"?"sub.all":pd(z))} ${k(z)}`}))})}),o("div",{class:"fx-sub-cq",children:o("div",{class:`fx-sub-split${c?" is-picked":""}`,children:[o("nav",{class:"fx-sub-list","aria-label":r("sub.mine"),children:p.length?p.map(z=>o("button",{type:"button","data-submission-id":z.id,class:`fx-sub-li${z.id===m?.id?" is-on":""}`,"aria-current":z.id===m?.id||void 0,onClick:()=>f(z.id),children:[o("span",{class:"fx-sub-li-top",children:[o("strong",{children:z.name}),o(gd,{status:z.status})]}),o("span",{class:"fx-sub-li-meta",children:[r(oa(z.type)),Mi(z.source),z.version&&`v${z.version}`].filter(Boolean).join(" \xB7 ")}),z.pendingUpdate&&o("span",{class:"fx-sub-li-meta",children:r(z.pendingUpdate.kind==="info"?"sub.pendingInfo":"sub.pendingVersion",{version:z.pendingUpdate.version})})]},z.id)):o("p",{class:"fx-note",children:r(e.length?"sub.noResults":"sub.empty")})}),s==="new"?o(Dh,{checks:t,onBack:()=>{l(null),d(!1)},onDone:z=>v(z,"sub.submitted")}):m?o(Lh,{item:m,checks:t,notice:g?.id===m.id?g.key:null,onBack:()=>d(!1),onDone:z=>v(m.id,z)},m.id):o("div",{class:"fx-sub-detail",children:o("p",{class:"fx-note",children:r("sub.noResults")})})]})})]})})}function xd(){let e=qe(()=>te("/market/mine"));switch(e.state){case"loading":return o(Ie,{});case"signedOut":return o(We,{});case"error":return o(je,{error:e.error,onRetry:e.retry});case"ready":return o(Oh,{items:e.data?.items||[],checks:e.data?.dryRun===!0,reload:e.reload})}}var Ri=300,Eo=e=>e.replace(/\/+$/,"").replace(/\/api$/,""),Ii=(e=0)=>e<1024*1024?`${Math.max(1,Math.ceil(e/1024))} KB`:`${(e/1024/1024).toFixed(1)} MB`;function Fh(e,t){let n=oe().openExternal;n&&(t.preventDefault(),n(e)?.catch(()=>{}))}function Bh({page:e,url:t,reload:n}){let r=Ye(),{locale:a}=ie(),i=io(),s=pe(),[l,c]=C(null),d=e.listing_status||null,g=e.status==="disabled",u=(f,v,k,z)=>void s.run(async()=>{let x=await te(f,{method:v,body:k});if(!x.ok)return Re(x);z?.(),n()}),p=`/connect/apps/${encodeURIComponent(e.slug)}`,m=d==="pending"?["web.listingPending","fx-tag--accent"]:d==="approved"?["web.listingApproved","fx-status--resolved"]:d==="rejected"?["web.listingRejected","fx-tag--danger"]:null;return o("article",{class:"fx-sub-item","data-webpage":e.slug,children:[o("div",{class:"fx-sub-item-head",children:[o("strong",{children:e.name||e.slug}),g&&o("span",{class:"fx-tag fx-tag--danger",children:r("web.disabled")}),m&&o("span",{class:`fx-tag ${m[1]}`,children:r(m[0])})]}),t&&o("a",{class:"fx-web-url",href:t,target:"_blank",rel:"noopener noreferrer",onClick:f=>Fh(t,f),children:t}),o("div",{class:"fx-sub-meta",children:[o("span",{children:e.slug}),o("span",{children:Ii(e.total_bytes)}),e.updated_at&&o("span",{children:r("web.updated",{date:on(e.updated_at,a)})})]}),g&&o(ce,{tone:"error",children:r("web.disabledHint")}),d==="rejected"&&e.listing_note&&o(ce,{tone:"error",children:r("web.listingNote",{note:e.listing_note})}),l!==null&&o("form",{class:"fx-sub-form",onSubmit:f=>{f.preventDefault(),l.trim()&&u(`${p}/listing`,"PUT",{summary:l.trim()},()=>c(null))},children:[o("label",{class:"fx-sub-field",for:`${i}-summary`,children:[o("span",{children:r("web.listingSummary")}),o("textarea",{id:`${i}-summary`,rows:2,maxLength:Ri,value:l,disabled:s.pending,placeholder:r("web.listingSummaryPh"),onInput:f=>c(f.currentTarget.value)}),o("small",{children:r("web.listingHint")})]}),o("div",{class:"fx-sub-actions",children:[o(X,{variant:"primary",submit:!0,pending:s.pending,disabled:!l.trim(),children:r("web.listingSubmit")}),o(X,{disabled:s.pending,onClick:()=>c(null),children:r("common.cancel")})]})]}),l===null&&o("div",{class:"fx-web-actions",children:[t&&o(Rt,{text:t,label:r("web.copy")}),!g&&!d&&o(X,{disabled:s.pending,onClick:()=>c(""),children:r("web.listingApply")}),!g&&d==="rejected"&&o(X,{disabled:s.pending,onClick:()=>c(e.listing_summary||""),children:r("web.listingReapply")}),d==="pending"&&o(X,{pending:s.pending,onClick:()=>u(`${p}/listing`,"DELETE"),children:r("web.listingWithdraw")}),d==="approved"&&o(Pt,{label:r("web.listingDelist"),confirmLabel:r("web.listingDelistConfirm"),pending:s.pending,onConfirm:()=>u(`${p}/listing`,"DELETE")}),o(Pt,{variant:"danger",label:r("web.unpublish"),confirmLabel:r("web.unpublishConfirm"),pending:s.pending,onConfirm:()=>u(p,"DELETE")})]}),o(fe,{a:s})]})}function $h({data:e,reload:t}){let n=Ye(),[r,a]=C("");J(()=>{if(e.publicBase)return;let d=!0;return oe().authStatus?.().then(g=>{d&&g?.cloudUrl&&a(Eo(g.cloudUrl))}).catch(()=>{}),()=>{d=!1}},[e.publicBase]);let i=e.apps||[],s=e.publicBase?Eo(e.publicBase):r,l=d=>s&&e.handle?`${s}/apps/${e.handle}/${d}/`:"",c=typeof e.limit=="number"&&i.length>=e.limit;return o(xe,{title:n("web.title"),desc:n("web.desc"),actions:o(X,{onClick:t,children:n("web.refresh")}),children:[typeof e.limit=="number"&&o("p",{class:"fx-web-quota",children:[n("web.used",{used:i.length,limit:e.limit}),c?` \xB7 ${n("web.full")}`:""]}),i.length?i.map(d=>o(Bh,{page:d,url:l(d.slug),reload:t},d.slug)):o(lt,{children:[o("strong",{children:n("web.empty")}),o("p",{children:n("web.emptyHint")})]})]})}function kd(){let e=qe(()=>te("/connect/apps"));switch(e.state){case"loading":return o(Ie,{});case"signedOut":return o(We,{});case"error":return o(je,{error:e.error,onRetry:e.retry});case"ready":return o($h,{data:e.data||{},reload:e.reload})}}var Uh=e=>!!e&&typeof e=="object"&&typeof e.enabled=="boolean";async function Li(e,t){let n=oe().cloudInvoke;if(!n)throw new Error("no_bridge");let r=await n(e,t);if(!Uh(r))throw new Error(String(r?.error??"unavailable"));return r}var Hh=["diag.item.app","diag.item.settings","diag.item.agents","diag.item.plugins","diag.item.runs"];function wd(){let[e,t]=C(0);return J(()=>oe().onAuthChanged?.(()=>t(n=>n+1)),[]),o(qh,{standalone:!0},e)}function qh({standalone:e=!1}={}){let{t,locale:n}=ie(),r=Ue(),[a,i]=C(null),[s,l]=C(!1),c=pe(),d=pe();if(J(()=>{let v=!1,k=0,z=()=>{let w=++k;Li("diagnostics:get").then(P=>{!v&&w===k&&(i(P),l(!0))},()=>{!v&&w===k&&(i(null),l(!0))})};z();let x=oe().onAuthChanged?.(z);return()=>{v=!0,x?.()}},[]),!a?.signedIn)return e?s?a?o(We,{}):o(lt,{children:t("diag.unavailable")}):o(Ie,{panels:1}):null;let g=()=>void d.run(async()=>{try{let v=await Li("diagnostics:uploadNow");return r.current&&i(v),v.lastError?{error:{key:"diag.failed",vars:{reason:v.lastError}}}:v.enabled&&v.lastUploadAt?{success:{key:"diag.uploaded"}}:void 0}catch(v){return{error:{raw:xt(v)||t("err.generic")}}}}),u=async v=>{let k=!1;await c.run(async()=>{d.clear();try{let z=await Li("diagnostics:set",v);r.current&&i(z),k=!0}catch(z){return{error:{raw:xt(z)||t("err.generic")}}}}),k&&v.enabled&&r.current&&g()},p=a.intervalHours??24,m=a.mode==="manual"?t("diag.freq.manual"):p===1?t("diag.freq.hour"):p%24===0?p===24?t("diag.freq.day"):t("diag.freq.days",{n:p/24}):t("diag.freq.hours",{n:p}),f=`${a.lastUploadAt?t("diag.last",{time:Et(a.lastUploadAt,n)}):t("diag.noUpload")} \xB7 ${m}`;return o(xe,{icon:"chart",title:t("diag.title"),desc:t("diag.desc"),children:[o(Fe,{label:t("diag.enable"),desc:t("diag.enableDesc"),children:o(qt,{checked:a.enabled,disabled:c.pending,label:t("diag.enable"),onChange:v=>void u({enabled:v})})}),o(Te,{class:"fx-diag",children:[o("strong",{children:t("diag.collected")}),o("ul",{children:Hh.map(v=>o("li",{children:t(v)},v))}),o(ce,{children:t("diag.notCollected")})]}),a.sessions!==void 0&&o(Fe,{label:t("diag.sessions"),desc:t("diag.sessionsDesc"),children:o(qt,{checked:a.sessions,disabled:c.pending,label:t("diag.sessions"),onChange:v=>void u({sessions:v})})}),a.memory!==void 0&&o(Fe,{label:t("diag.memory"),desc:t("diag.memoryDesc"),children:o(qt,{checked:a.memory,disabled:c.pending,label:t("diag.memory"),onChange:v=>void u({memory:v})})}),o(Fe,{label:t("diag.activity"),desc:t("diag.activityDesc"),children:o(qt,{checked:a.activity,disabled:c.pending,label:t("diag.activity"),onChange:v=>void u({activity:v})})}),a.enabled&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:f}),o(X,{pending:d.pending,disabled:c.pending,onClick:g,children:t("diag.uploadNow")})]}),o(Te,{class:"fx-sub--tight",children:[o(ce,{children:t("diag.retention",{n:a.retainDays})}),a.enabled&&a.lastError&&!d.error&&!d.success&&o("div",{class:"fx-msg is-error",role:"alert",children:t("diag.failed",{reason:a.lastError})}),o(fe,{a:c}),o(fe,{a:d})]})]})}var dr=20,ra=5,Wh=5*1024*1024,aa=1e4,Vh={open:"fb.status.open",in_progress:"fb.status.in_progress",resolved:"fb.status.resolved",closed:"fb.status.closed"};function Sd(e){let{t}=ie(),n=e.status||"open",r=Vh[n];return o("span",{class:`fx-tag fx-status fx-status--${n}`,children:r?t(r):n})}function _d(){let[e,t]=C(null),n=qe(async()=>{let r=await te(`/feedback?limit=${dr}&offset=0`);return r.ok?{ok:!0,status:r.status,data:Array.isArray(r.data?.tickets)?r.data.tickets:[]}:r});return n.state==="loading"?o(Ie,{panels:1,rows:3}):n.state==="signedOut"?o(We,{}):n.state==="error"?o(je,{error:n.error,onRetry:n.retry}):e?o(Kh,{id:e,onBack:()=>{t(null),n.reload()}}):o(jh,{first:n.data,onOpen:t,onChanged:n.reload})}function jh(e){let{t,locale:n}=ie(),r=Ue(),[a,i]=C(e.first),[s,l]=C(e.first.length===dr),[c,d]=C(!1),[g,u]=C(!1),p=pe();J(()=>{i(e.first),l(e.first.length===dr)},[e.first]);let m=()=>void p.run(async()=>{let f=await te(`/feedback?limit=${dr}&offset=${a.length}`);if(!f.ok)return{error:wt(f)};let v=Array.isArray(f.data?.tickets)?f.data.tickets:[];r.current&&(i(k=>{let z=new Set(k.map(x=>x.id));return[...k,...v.filter(x=>!z.has(x.id))]}),l(v.length===dr))});return o(xe,{icon:"message",title:t("fb.list.title"),desc:t("fb.list.desc"),actions:c?void 0:o(X,{variant:"primary",onClick:()=>{u(!1),d(!0)},children:[o(W,{name:"plus",size:12})," ",t("fb.new")]}),children:[c&&o(Jh,{onCancel:()=>d(!1),onSubmitted:()=>{d(!1),u(!0),e.onChanged()}}),g&&!c&&o(Te,{children:o("div",{class:"fx-msg is-ok",role:"status",children:t("fb.submitted")})}),a.length===0?o(lt,{children:t("fb.empty")}):o("div",{class:"fx-list fx-block",role:"list",children:a.map(f=>o("button",{type:"button",class:"fx-list-row fx-list-row--button",role:"listitem",onClick:()=>e.onOpen(f.id),children:[o("span",{class:`fx-dot${f.user_unread?" is-on":""}`,"aria-label":f.user_unread?t("fb.unread"):void 0}),o("span",{class:"fx-list-main",children:[o("strong",{children:f.title||(f.description||"").slice(0,60)||t("fb.untitled")}),o("small",{children:Et(f.updated_at||f.created_at,n)})]}),o(Sd,{status:f.status}),o(W,{name:"chevron",size:12})]},f.id))}),a.length>0&&(s||p.error)&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:t("fb.shown",{n:Oe(a.length,n)})}),s&&o(X,{pending:p.pending,onClick:m,children:t("common.loadMore")})]}),p.error&&o(Te,{children:o(fe,{a:p})})]})}function Gh(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||"")),r.onerror=()=>n(r.error||new Error("read failed")),r.readAsDataURL(e)})}var Xh=0;function Jh(e){let{t}=ie(),n=Ue(),[r,a]=C(""),[i,s]=C([]),[l,c]=C(null),[d,g]=C(!1),u=re(null),p=pe(),[m,f]=C(0),v=re(0);v.current=i.length;let k=async x=>{c(null);for(let w of Array.from(x||[])){if(!w.type||!w.type.startsWith("image/")){c({key:"err.imageType"});continue}if(w.size>Wh){c({key:"err.imageTooLarge"});continue}if(v.current>=ra){c({key:"err.tooManyImages"});break}v.current++,f(P=>P+1);try{let P=await Gh(w);if(!n.current)return;let L={id:`img-${++Xh}`,filename:w.name||"image",mime_type:w.type,size:w.size,data_base64:P.replace(/^data:[^;]+;base64,/,""),url:P};s(U=>U.length>=ra?U:[...U,L])}catch{v.current--,c({key:"err.imageRead"})}finally{n.current&&f(P=>P-1)}}},z=()=>void p.run(async()=>{let x=r.trim();if(!x)return{error:{key:"err.feedbackEmpty"}};if(x.length>aa)return{error:{key:"err.feedbackTooLong"}};let w=i.map(({filename:L,mime_type:U,size:H,data_base64:B})=>({filename:L,mime_type:U,size:H,data_base64:B})),P=await te("/feedback",{method:"POST",body:{description:x,attachments:w},timeoutMs:12e4});if(!P.ok)return Re(P);e.onSubmitted()});return o("div",{class:`fx-sub fx-form fx-composer${d?" is-drag":""}`,onPaste:x=>{let w=Array.from(x.clipboardData?.items||[]).filter(P=>P.kind==="file").map(P=>P.getAsFile()).filter(Boolean);w.length&&(x.preventDefault(),k(w))},onDragOver:x=>{x.preventDefault(),g(!0)},onDragLeave:()=>g(!1),onDrop:x=>{x.preventDefault(),g(!1),k(x.dataTransfer?.files)},children:[o("label",{class:"fx-field",children:[o("span",{children:t("fb.descLabel")}),o("textarea",{class:"fx-input fx-textarea",rows:5,value:r,maxLength:aa,autoFocus:!0,placeholder:t("fb.descPlaceholder"),onInput:x=>a(x.currentTarget.value)})]}),o("p",{class:"fx-note",children:t("fb.imagesHint",{n:ra})}),i.length>0&&o("div",{class:"fx-thumbs",children:i.map(x=>o("span",{class:"fx-thumb",children:[o("img",{src:x.url,alt:x.filename}),o("button",{type:"button","aria-label":t("fb.removeImage"),title:t("fb.removeImage"),onClick:()=>{s(w=>w.filter(P=>P.id!==x.id)),c(null)},children:o(W,{name:"x",size:11})})]},x.id))}),l&&o("div",{class:"fx-msg is-error",role:"alert",children:kt(l,t)}),o("input",{ref:u,type:"file",accept:"image/*",multiple:!0,hidden:!0,onChange:x=>{let w=x.currentTarget;k(w.files),w.value=""}}),o("div",{class:"fx-inline",children:[o(X,{disabled:i.length>=ra||p.pending,onClick:()=>u.current?.click(),children:[o(W,{name:"image",size:12})," ",t("fb.addImages")]}),o("span",{class:"fx-grow"}),o(X,{disabled:p.pending,onClick:e.onCancel,children:t("common.cancel")}),o(X,{variant:"primary",pending:p.pending,disabled:m>0,onClick:z,children:t("fb.submit")})]}),o(fe,{a:p})]})}function Kh(e){let{t,locale:n}=ie(),[r,a]=C({state:"loading"}),[i,s]=C(0),[l,c]=C(""),[d,g]=C(null),u=pe(),p=re(0);J(()=>{let P=++p.current;return te(`/feedback/${encodeURIComponent(e.id)}`).then(L=>{if(P===p.current){if(!L.ok){a({state:"error",fail:L});return}a({state:"ready",data:{ticket:L.data.ticket,replies:L.data.replies??[],attachments:L.data.attachments??[]}}),te(`/feedback/${encodeURIComponent(e.id)}/read`,{method:"POST"})}}),()=>{p.current++}},[e.id,i]),J(()=>{if(!d)return;let P=L=>{L.key==="Escape"&&g(null)};return window.addEventListener("keydown",P),()=>window.removeEventListener("keydown",P)},[d]);let m=o("div",{class:"fx-back",children:o(X,{onClick:e.onBack,children:[o(W,{name:"back",size:12})," ",t("fb.back")]})});if(r.state==="loading")return o(N,{children:[m,o(Ie,{panels:1,rows:3})]});if(r.state==="error")return o(N,{children:[m,o(je,{error:wt(r.fail),onRetry:()=>{a({state:"loading"}),s(P=>P+1)}})]});let{ticket:f,replies:v,attachments:k}=r.data,z=f.status==="closed",x=P=>k.filter(L=>(L.reply_id??null)===P),w=()=>void u.run(async()=>{let P=l.trim();if(!P)return{error:{key:"err.replyEmpty"}};if(P.length>aa)return{error:{key:"err.replyTooLong"}};let L=await te(`/feedback/${encodeURIComponent(f.id)}/replies`,{method:"POST",body:{content:P},timeoutMs:6e4});return L.ok?(c(""),s(U=>U+1),{success:{key:"fb.replySent"}}):Re(L)});return o(N,{children:[m,o(xe,{icon:"message",title:f.title||t("fb.untitled"),actions:o(Sd,{status:f.status}),desc:`#${String(f.id).slice(0,8)} \xB7 ${Et(f.created_at,n)}`,children:[o("div",{class:"fx-thread fx-block",children:[o(zd,{who:"user",when:f.created_at,text:f.description||"",files:x(null),onZoom:g}),v.map((P,L)=>o(zd,{who:P.author_role==="user"?"user":"admin",when:P.created_at,text:P.content||"",files:P.id?x(P.id):[],onZoom:g},P.id??L))]}),z?o(Te,{children:o(ce,{children:t("fb.closedNote")})}):o(Te,{class:"fx-form",children:[o("textarea",{class:"fx-input fx-textarea",rows:3,value:l,maxLength:aa,placeholder:t("fb.replyPlaceholder"),"aria-label":t("fb.replyPlaceholder"),onInput:P=>{c(P.currentTarget.value),u.success&&u.clear()}}),o("div",{class:"fx-inline",children:[o("span",{class:"fx-grow"}),o(X,{variant:"primary",pending:u.pending,onClick:w,children:t("fb.replySend")})]}),o(fe,{a:u})]})]}),d&&o("div",{class:"fx-lightbox",role:"dialog","aria-label":t("fb.imagePreview"),onClick:()=>g(null),children:o("img",{src:d,alt:""})})]})}function zd(e){let{t,locale:n}=ie();return o("div",{class:`fx-bubble fx-bubble--${e.who}`,children:[o("div",{class:"fx-bubble-meta",children:[e.who==="user"?t("fb.you"):t("fb.support")," \xB7 ",Et(e.when,n)]}),o("div",{class:"fx-bubble-text",children:e.text}),e.files.length>0&&o("div",{class:"fx-thumbs",children:e.files.map((r,a)=>{let i=r.mime_type||"";if(i.startsWith("image/")&&r.data_base64){let s=`data:${i};base64,${r.data_base64}`;return o("button",{type:"button",class:"fx-thumb",onClick:()=>e.onZoom(s),"aria-label":t("fb.imagePreview"),children:o("img",{src:s,alt:r.filename||""})},r.id??a)}return o("span",{class:"fx-tag",children:[o(W,{name:"card",size:11})," ",r.filename||t("fb.attachment")]},r.id??a)})})]})}var Td=[{id:"monthly",field:"priceMonthly",discount:"recurringPriceMonthly"},{id:"quarterly",field:"priceQuarterly",discount:"recurringPriceQuarterly"},{id:"yearly",field:"priceYearly",discount:"recurringPriceYearly"}];function Cd(e,t){let n=Td.find(s=>s.id===t),r=Ae(e.priceMonthly)??0,a=(Ae(e[n.field])??0)||(t==="quarterly"?Math.round(r*300)/100:0),i=Ae(e[n.discount])??0;return i>0&&i<a?i:a}function Di(e,t,n){let r=Oe(e,n),a=String(t||"CNY").toUpperCase();return a==="CNY"?`\xA5${r}`:a==="USD"?`$${r}`:`${r} ${a}`}async function Yh(){let[e,t,n]=await Promise.all([te("/membership/my"),te("/credits/balance"),te("/features")]);return!e.ok&&zn(e)?e:!t.ok&&zn(t)?t:{ok:!0,status:200,data:{membership:e.ok?e.data?.membership??null:null,membershipFailed:!e.ok,balance:t.ok?Ae(t.data?.balance):null,balanceFailed:!t.ok,features:n.ok&&n.data&&typeof n.data=="object"?n.data:{}}}}async function Ni(e,t){let[n,r]=await Promise.all([Yh(),te(e)]);return n.ok?r.ok?{ok:!0,status:r.status,data:{status:n.data,list:t(r.data)}}:r:n}var Oi=e=>(Array.isArray(e)?e:[]).filter(t=>!!t&&typeof t=="object"&&t.isActive!==!1),Zh=15*6e4;function Fi(e){let t=re(0),n=re(0),r=re(e);return r.current=e,J(()=>{let a=()=>{let i=Date.now();i>t.current||document.visibilityState==="hidden"||i-n.current<2e3||(n.current=i,r.current?.())};return window.addEventListener("focus",a),document.addEventListener("visibilitychange",a),()=>{window.removeEventListener("focus",a),document.removeEventListener("visibilitychange",a)}},[]),()=>{t.current=Date.now()+Zh}}function Ad(e){let t=e.membership;return t&&(t.status===void 0||t.status==="active")?t:null}function Bi(e){let{t,locale:n}=ie(),r=e.status,a=Ad(r),i=ir(a?.tier),s=i==="Free";return o("section",{class:"fx-shop-strip","aria-label":t("store.status"),children:[o("div",{class:"fx-shop-stat",children:[o("small",{children:t("store.tier")}),r.membershipFailed?o("b",{class:"is-empty",children:"\u2014"}):o("b",{"data-testid":"shop-tier",children:[s?t("member.freeName"):a?.plan?.name||i,!s&&o("i",{children:a?.expiresAt?t("member.expires",{date:on(a.expiresAt,n)}):t("member.noExpiry")})]})]}),o("div",{class:"fx-shop-stat",children:[o("small",{children:t("store.balance")}),o("b",{class:r.balance===null?"is-empty":"","data-testid":"shop-balance",children:r.balance===null?"\u2014":Oe(r.balance,n)})]}),(r.membershipFailed||r.balanceFailed)&&o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")}),o("span",{class:"fx-grow"}),e.children]})}function $i(e){return o("section",{class:"fx-shop-section",children:[o("div",{class:"fx-shop-head",children:[o("div",{children:[o("h2",{children:e.title}),e.desc&&o("p",{children:e.desc})]}),e.right]}),e.children]})}function Ui(e){let t=pe(),[n,r]=C(null),a=(i,s,l,c)=>{r(i),t.run(async()=>{if(!await Wn(s,l,c))return{error:{key:"err.openFailed"}};e()})};return{a:t,payingId:t.pending?n:null,open:a}}function Hi(e){return o(X,{variant:"ghost",pending:e.pending,disabled:e.disabled,onClick:e.onClick,children:[e.label,o(W,{name:"external",size:12})]})}function qi(e){return o("div",{class:"fx-shop-empty",children:e.children})}function Ed(){let{t:e,locale:t}=ie(),n=qe(()=>Ni("/payment/offerings",m=>Oi(m?.membershipPlans))),r=Fi(n.state==="ready"?n.reload:null),a=Ui(r),[i,s]=C("monthly");if(n.state==="loading")return o(Ie,{panels:2,rows:2});if(n.state==="signedOut")return o(We,{});if(n.state==="error")return o(je,{error:n.error,onRetry:n.retry});let{status:l,list:c}=n.data,d=l.features.payment!==!1,g=Td.filter(m=>c.some(f=>Cd(f,m.id)>0)),u=g.some(m=>m.id===i)?i:g[0]?.id??"monthly",p=Ad(l)?.tier?.toLowerCase()??null;return o(N,{children:[o(Bi,{status:l,onRetry:n.reload}),o($i,{title:e("store.choosePlan"),desc:e(d?"store.payHint":"store.payOff"),right:g.length>1?o(Mt,{value:u,label:e("store.period"),onChange:s,options:g.map(m=>({value:m.id,label:e(`store.period.${m.id}`)}))}):void 0,children:[c.length===0?o(qi,{children:e("store.noPlans")}):o("div",{class:"fx-shop-tiers",children:c.map(m=>{let f=Cd(m,u),v=!!p&&!l.membershipFailed&&m.tier?.toLowerCase()===p;return o("article",{class:"fx-shop-tier","data-tier":m.tier,children:[o("h3",{children:[m.name||ir(m.tier),v&&o("span",{class:"fx-shop-current",children:[o(W,{name:"check",size:12}),e("store.currentTier")]})]}),o("div",{class:"fx-shop-price",children:f>0?o(N,{children:[Di(f,m.currency,t),o("small",{children:e(`store.per.${u}`)})]}):"\u2014"}),o("p",{children:m.description}),d&&f>0&&o(Hi,{label:e(v?"member.renew":"store.pay"),pending:a.payingId===m.id,disabled:a.a.pending,onClick:()=>a.open(m.id,"membership",m.id,u)})]},m.id)})}),o(fe,{a:a.a})]})]})}function Pd(){let{t:e,locale:t}=ie(),n=qe(()=>Ni("/payment/offerings",c=>Oi(c?.packages))),r=Fi(n.state==="ready"?n.reload:null),a=Ui(r);if(n.state==="loading")return o(Ie,{panels:2,rows:2});if(n.state==="signedOut")return o(We,{});if(n.state==="error")return o(je,{error:n.error,onRetry:n.retry});let{status:i,list:s}=n.data,l=i.features.payment!==!1;return o(N,{children:[o(Bi,{status:i,onRetry:n.reload}),o($i,{title:e("store.packs"),desc:e(l?"store.packsHint":"store.payOff"),children:[s.length===0?o(qi,{children:e("store.noPacks")}):o("div",{class:"fx-shop-grid",children:s.map(c=>{let d=Ae(c.price)??0;return o(Md,{icon:"coins",kind:e("store.kind.pack"),name:`${c.name||""} \xB7 ${e("store.nPoints",{n:Oe(c.credits,t)})}`,desc:c.description,meta:e("store.instant"),children:l&&d>0&&o(Hi,{label:e("store.payPrice",{price:Di(d,c.currency,t)}),pending:a.payingId===c.id,disabled:a.a.pending,onClick:()=>a.open(c.id,"credits")})},c.id)})}),o(fe,{a:a.a})]})]})}function Md(e){return o("article",{class:"fx-shop-card",children:[o("div",{class:"fx-shop-visual","aria-hidden":"true",children:e.emoji?o("span",{class:"fx-shop-emoji",children:e.emoji}):o(W,{name:e.icon,size:18})}),o("div",{class:"fx-shop-body",children:[o("span",{class:"fx-shop-kind",children:e.kind}),o("strong",{children:e.name}),e.desc&&o("p",{children:e.desc}),o("div",{class:"fx-shop-foot",children:[o("span",{class:"fx-shop-meta",children:e.meta}),o("span",{class:"fx-shop-acts",children:e.children})]}),e.below]})]})}var Qh={reset_card:"store.kind.card",api_quota_key:"store.kind.code"};function ev(e){let{t,locale:n}=ie(),{p:r}=e,a=pe(),[i,s]=C(null),[l,c]=C(!1),d=Ae(r.pricePoints)??0,g=Ae(r.priceRmb)??0,u=typeof r.availableKeys=="number"&&r.availableKeys<=0,p=d>0&&e.balance!==null&&e.balance<d,m=()=>void a.run(async()=>{let v=await te("/shop/purchase",{method:"POST",body:{productId:r.id,payMethod:"points"},timeoutMs:3e4});return v.ok?(s(typeof v.data?.key=="string"&&v.data.key?v.data.key:null),e.onRedeemed(),{success:{key:"store.redeemed"}}):v.status===0?(c(!0),{error:{key:"store.uncertain"}}):Re(v)}),f=u?t("store.soldOut"):p?t("err.insufficientPoints"):typeof r.availableKeys=="number"?t("store.left",{n:r.availableKeys}):t("store.toBackpack");return o(Md,{icon:r.type==="api_quota_key"?"key":"gift",emoji:r.icon,kind:t(Qh[r.type||""]??"store.kind.item"),name:r.name||"",desc:r.description,meta:f,below:o(N,{children:[o(fe,{a}),i&&o("div",{class:"fx-shop-key",children:[o("code",{children:i}),o(Rt,{text:i,label:t("backpack.copyKey")})]})]}),children:[d>0&&o(Pt,{variant:"primary",pending:a.pending,disabled:u||p||l,label:t("store.redeem",{n:Oe(d,n)}),confirmLabel:t("store.redeemConfirm",{n:Oe(d,n)}),onConfirm:m}),e.payment&&g>0&&o(Hi,{label:Di(g,r.currency,n),pending:e.paying,disabled:e.payBusy||u,onClick:e.onPay})]})}function Rd(){let{t:e,goTo:t}=ie(),n=qe(()=>Ni("/shop/products",d=>Oi(d))),r=Fi(n.state==="ready"?n.reload:null),a=Ui(r);if(n.state==="loading")return o(Ie,{panels:2,rows:2});if(n.state==="signedOut")return o(We,{});if(n.state==="error")return o(je,{error:n.error,onRetry:n.retry});let{status:i,list:s}=n.data,l=i.features.payment!==!1,c=i.features.shop!==!1;return o(N,{children:[o(Bi,{status:i,onRetry:n.reload,children:t&&o(X,{onClick:()=>t("backpack"),children:e("store.openBackpack")})}),o($i,{title:e("store.redeemTitle"),desc:e("store.redeemHint"),children:[!c||s.length===0?o(qi,{children:e(c?"store.noItems":"store.itemsOff")}):o("div",{class:"fx-shop-grid",children:s.map(d=>o(ev,{p:d,balance:i.balance,payment:l,paying:a.payingId===d.id,payBusy:a.a.pending,onPay:()=>a.open(d.id,"storefront"),onRedeemed:n.reload},d.id))}),o(fe,{a:a.a})]})]})}var tv="forsion-extend",Id=[{id:"account",titleKey:"page.account",tabTitleKey:"page.profile",aliases:["profile"],keywords:"\u4E2A\u4EBA\u4E3B\u9875 profile avatar nickname \u5934\u50CF \u6635\u79F0",Component:Gc},{id:"account-details",parent:"account",titleKey:"account.details.title",keywords:"\u767B\u5F55 \u8D44\u6599 \u624B\u673A \u90AE\u7BB1 \u5207\u6362 \u9000\u51FA login sign-in email phone account switch logout",Component:_c},{id:"security",parent:"account",titleKey:"page.security",keywords:"\u5B89\u5168 \u5BC6\u7801 \u8BBE\u5907 \u7ED1\u5B9A security password devices",Component:od},{id:"quota",titleKey:"page.membershipUsage",tabTitleKey:"page.membershipQuota",aliases:["membership"],keywords:"\u4F1A\u5458 \u989D\u5EA6 \u540E\u53F0 quota membership background",Component:Yc},{id:"points",parent:"quota",titleKey:"page.pointsInvite",keywords:"\u79EF\u5206 \u9080\u8BF7 \u5151\u6362 \u5145\u503C points invite redeem credits",Component:Kc},{id:"usage",parent:"quota",titleKey:"page.usage",keywords:"\u7528\u91CF \u8BB0\u5F55 \u6D88\u8017 usage history tokens",Component:ld},{id:"backpack",titleKey:"page.backpack",keywords:"\u80CC\u5305 \u5361\u5238 backpack inventory",Component:Qc},{id:"submission",titleKey:"page.submission",Component:xd},{id:"webpages",titleKey:"page.webPages",keywords:"\u7F51\u9875 \u53D1\u5E03 \u94FE\u63A5 \u4E0A\u67B6 \u7F51\u7AD9 web pages publish link site connect",Component:kd},{id:"feedback",titleKey:"page.feedback",keywords:"\u5E2E\u52A9 \u53CD\u9988 help feedback",Component:_d},{id:"privacy",titleKey:"page.privacy",tabTitleKey:"privacy.tab",keywords:"\u9690\u79C1 \u9065\u6D4B \u5D29\u6E83 \u7EDF\u8BA1 \u5E2E\u52A9\u6539\u8FDB privacy telemetry crash usage statistics improve",Component:Cc,desktopOnly:!0},{id:"diagnostics",parent:"privacy",titleKey:"diag.title",keywords:"\u8BCA\u65AD \u4E0A\u4F20 \u65E5\u5FD7 diagnostic upload logs",Component:wd,desktopOnly:!0}],Ld=[{id:"membership",titleKey:"store.membership",descKey:"store.membership.desc",icon:"crown",Component:Ed},{id:"points",titleKey:"store.points",descKey:"store.points.desc",icon:"coins",Component:Pd},{id:"items",titleKey:"store.items",descKey:"store.items.desc",icon:"package",Component:Rd}],dn=e=>`forsion/fx:${tv}:${e}`;function Dd(e){let{ctx:t,page:n}=e,[r,a]=C(()=>De(t.getLocale?.()));J(()=>{a(De(t.getLocale?.()));let l=t.subscribeLocale?.(c=>a(De(c)));return()=>{typeof l=="function"&&l()}},[t]);let i=Ht(()=>{let l=t.app?.openSettings;return{ctx:t,locale:r,t:Sn(r),goTo:typeof l=="function"?c=>l.call(t.app,dn(c)):null}},[t,r]),s=n.Component;return o(ci.Provider,{value:i,children:o("div",{class:"fx-acct","data-fx-page":n.id,lang:r==="zh"?"zh-CN":"en",children:[o("style",{children:ec}),o(s,{})]})})}function Nd(e,t=window){let n=nn(t?.tangu);if(!e||!n?.cloudFetch||!n.cloudInvoke||!wn(n)||typeof e.registerStoreView!="function")return 0;let r=a=>()=>be(De(e.getLocale?.()),a);for(let a of Ld)e.registerStoreView({id:a.id,title:r(a.titleKey),description:r(a.descKey),group:r("store.group"),icon:a.icon,mount(i){return Me(o(Dd,{ctx:e,page:a}),i),()=>{Me(null,i)}}});return Ld.length}function Od(e,t=window){let n=nn(t?.tangu);if(!e||!n?.cloudFetch||!n.cloudInvoke||!wn(n)||typeof e.registerSettingsView!="function")return 0;let r=kn(n)?Id.filter(a=>!a.desktopOnly):Id;for(let a of r)e.registerSettingsView({id:a.id,category:"forsion",parent:a.parent,tabTitle:a.tabTitleKey?()=>be(De(e.getLocale?.()),a.tabTitleKey):void 0,aliases:a.aliases,keywords:a.keywords,title:()=>be(De(e.getLocale?.()),kn(n)&&a.webTitleKey||a.titleKey),mount(i){return Me(o(Dd,{ctx:e,page:a}),i),()=>{Me(null,i)}}});return r.length}var Po=[{id:"lv1"},{id:"lv2"},{id:"lv3"},{id:"lv4"},{id:"new",version:"2.14"}],ee=(e,t)=>({zh:e,en:t}),Vn=[{id:"welcome",level:"lv1",icon:"compass",title:ee("\u8BA4\u8BC6 Forsion","Meet Forsion"),tasks:[{id:"guide-open",event:"own:guide.open",goal:1,title:ee("\u6253\u5F00\u4F7F\u7528\u6307\u5357","Open the guide")},{id:"space-switch",event:"space.switch",goal:1,title:ee("\u5728 Ribbon \u4E0A\u6362\u4E00\u4E2A Space","Switch to another Space from the ribbon"),go:{space:"amadeus"},spot:{anchor:"ribbon-spaces",here:!0,title:ee("\u70B9 Ribbon \u4E0A\u4EFB\u610F\u4E00\u4E2A\u56FE\u6807","Click any icon on the ribbon"),body:ee("\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space\uFF0C\u70B9\u4E00\u4E0B\u5C31\u5207\u8FC7\u53BB\u3002","Each icon is a Space. One click switches to it.")}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon",label:ee("Ribbon\uFF1A\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space","Ribbon: each icon is a Space")},{slot:"main-tabs",label:ee("\u4E3B\u533A\u7684\u6807\u7B7E\u9875","Tabs in the main area"),text:ee("\u6807\u7B7E\u9875","Tab")},{slot:["left-list","right"],label:ee("\u5DE6\u53F3\u4FA7\u680F","Left and right sidebars")}]}},{id:"chat",level:"lv1",icon:"message-circle",title:ee("\u548C Tangu \u8BF4\u7B2C\u4E00\u53E5\u8BDD","Say hello to Tangu"),tasks:[{id:"chat-first",event:"chat.send",goal:1,title:ee("\u53D1\u51FA\u7B2C\u4E00\u6761\u6D88\u606F","Send your first message"),go:{space:"tangu",command:"new-chat"},spot:{anchor:"chat-composer",title:ee("\u5728\u8FD9\u91CC\u6253\u4E2A\u62DB\u547C","Say hello here"),body:ee("\u6253\u5B57\uFF0C\u6309 Enter \u53D1\u9001\uFF1BShift+Enter \u6362\u884C\u3002","Type, then press Enter to send. Shift+Enter starts a new line.")}},{id:"chat-five",event:"chat.send",goal:5,title:ee("\u518D\u804A\u51E0\u53E5\uFF08\u7D2F\u8BA1 5 \u6761\uFF09","Keep talking (5 messages in all)"),go:{space:"tangu"},spot:{anchor:"chat-composer",title:ee("\u63A5\u7740\u804A\u51E0\u53E5","Keep the conversation going"),body:ee("\u7D2F\u8BA1\u53D1\u51FA 5 \u6761\u5C31\u7B97\u5B8C\u6210\u3002","Five messages in all and this one is done.")}}],figure:{layout:"space",main:"chat",marks:[{slot:"left-top",label:ee("\u5DE6\u680F\u9876\u90E8\u300C\u65B0\u4F1A\u8BDD\u300D",'"New chat" at the top of the left sidebar'),text:ee("\u65B0\u4F1A\u8BDD","New chat")},{slot:"main-bottom",label:ee("\u8F93\u5165\u6846","Message box")}]}},{id:"note",level:"lv1",icon:"file-text",title:ee("\u5199\u4E0B\u7B2C\u4E00\u7BC7\u7B14\u8BB0","Write your first note"),tasks:[{id:"note-create",event:"note.create",goal:1,title:ee("\u65B0\u5EFA\u4E00\u7BC7\u7B14\u8BB0","Create a note"),go:{space:"amadeus",command:"amadeus-new-note"},spot:{anchor:"note-new",title:ee("\u70B9\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D",'Click "New note"'),body:ee("\u4E5F\u53EF\u4EE5\u6309 \u2318/Ctrl+N\u3002\u6BCF\u7BC7\u7B14\u8BB0\u90FD\u662F\u667A\u5E93\u91CC\u7684\u4E00\u4E2A .md \u6587\u4EF6\u3002","Or press \u2318/Ctrl+N. Every note is a .md file in your vault.")}},{id:"note-link",event:"note.wikilink",goal:1,title:ee("\u7528 [[ \u94FE\u63A5\u53E6\u4E00\u7BC7\u7B14\u8BB0","Link another note with [["),go:{space:"amadeus"},spot:{anchor:"note-body",title:ee("\u5728\u6B63\u6587\u91CC\u8F93\u5165 [[","Type [[ in the note"),body:ee("\u4ECE\u5F39\u51FA\u7684\u5019\u9009\u91CC\u9009\u4E00\u7BC7\u7B14\u8BB0\uFF0C\u6309 Enter\uFF0C\u4E24\u7BC7\u5C31\u8FDE\u4E0A\u4E86\u3002","Pick a note from the suggestions and press Enter to link the two.")}},{id:"note-canvas",event:"note.canvas",goal:1,title:ee("\u628A\u7B14\u8BB0\u5207\u5230\u753B\u5E03","Switch a note to the canvas"),go:{space:"amadeus",command:"amadeus-toggle-canvas"},spot:{anchor:"note-canvas",title:ee("\u70B9\u300C\u753B\u5E03\u300D",'Click "Canvas"'),body:ee("\u540C\u4E00\u7BC7\u7B14\u8BB0\u644A\u6210\u767D\u677F\uFF0C\u968F\u624B\u6446\uFF1B\u70B9\u300C\u6587\u6863\u300D\u5207\u56DE\u6765\uFF0C\u4E00\u4E2A\u5B57\u90FD\u4E0D\u53D8\u3002",'The same note opens as a whiteboard. Click "Document" to switch back; nothing changes.')}}],figure:{layout:"space",main:"doc",marks:[{slot:"left-top",label:ee("\u5DE6\u680F\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D",'"New note" in the left sidebar'),text:ee("\u65B0\u5EFA\u7B14\u8BB0","New note")},{slot:"main-top",label:ee("\u300C\u6587\u6863 / \u753B\u5E03\u300D\u80F6\u56CA","The Document / Canvas switch")},{slot:"right",label:ee("\u53F3\u680F\u91CC\u7684\u300C\u53CD\u94FE\u300D","Backlinks in the right sidebar"),text:ee("\u53CD\u94FE","Backlinks")}]}},{id:"theme",level:"lv1",icon:"sparkles",title:ee("\u6362\u4E00\u8EAB\u4E3B\u9898","Make it look like yours"),tasks:[{id:"theme-change",event:"theme.change",goal:1,title:ee("\u6362\u4E00\u4E2A\u4E3B\u9898","Pick another theme"),go:{settings:"theme"}}],figure:{layout:"settings",marks:[{slot:"nav",label:ee("\u8BBE\u7F6E\u91CC\u7684\u300C\u5916\u89C2\u300D",'"Appearance" in Settings'),text:ee("\u5916\u89C2","Appearance")},{slot:"section-1",label:ee("\u8BBE\u8BA1\u8BED\u8A00","Design language"),text:ee("\u8BBE\u8BA1\u8BED\u8A00","Design language")},{slot:"section-2",label:ee("\u4E3B\u9898\u8272\u548C\u80CC\u666F\u8272","Theme and background colors"),text:ee("\u914D\u8272","Colors")}]}},{id:"database",level:"lv2",icon:"database",title:ee("\u6570\u636E\u5E93\uFF1A\u628A\u7B14\u8BB0\u53D8\u6210\u8868","Databases: turn notes into a table"),tasks:[{id:"base-create",event:"base.create",goal:1,title:ee("\u65B0\u5EFA\u4E00\u4E2A\u6570\u636E\u5E93","Create a database"),go:{space:"amadeus"}}],figure:{layout:"space",main:"doc",marks:[{slot:"left-list",label:ee("\u7B14\u8BB0\u6811\uFF1A\u53F3\u952E \u2192\u300C\u65B0\u5EFA Base\u300D",'Note tree: right-click \u2192 "New Base"')},{slot:"main-body",label:ee("\u6B63\u6587\u91CC\u8F93\u5165 /\uFF0C\u9009\u300C\u591A\u7EF4\u8868\u300D",'Type / in a note and pick "Database"')}]}},{id:"market",level:"lv2",icon:"store",title:ee("\u4ECE\u5546\u5E97\u88C5\u4E00\u4E2A\u63D2\u4EF6","Install a plugin from the store"),tasks:[{id:"market-install",event:"market.install",goal:1,title:ee("\u88C5\u4E00\u4E2A\u63D2\u4EF6","Install a plugin"),go:{command:"open-market"}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon-bottom",label:ee("Ribbon \u5E95\u90E8\u7684\u300C\u5546\u5E97\u300D",'"Store" at the bottom of the ribbon')}]}},{id:"space",level:"lv2",icon:"layout-grid",title:ee("\u5B58\u4E0B\u81EA\u5DF1\u7684 Space","Save a Space of your own"),tasks:[{id:"space-save",event:"space.save",goal:1,title:ee("\u628A\u5F53\u524D\u5E03\u5C40\u5B58\u6210 Space","Save the current layout as a Space"),go:{command:"save-as-space"}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon-plus",label:ee("Space \u533A\u7684 \uFF0B","The + under the Spaces")},{slot:"main-top-right",label:ee("\u53F3\u4E0A\u89D2\u7684\u6D6E\u52A8\u6309\u94AE","Floating buttons at the top right")}]}},{id:"calendar",level:"lv2",icon:"calendar-days",title:ee("\u65E5\u5386\u548C\u5F85\u529E","Calendar and to-dos"),tasks:[{id:"calendar-event",event:"calendar.event",goal:1,title:ee("\u5728\u65E5\u5386\u4E0A\u5EFA\u4E00\u4E2A\u65E5\u7A0B","Add an event to the calendar"),go:{space:"calendar"}},{id:"todo-done",event:"todo.done",goal:1,title:ee("\u52FE\u6389\u4E00\u6761\u5F85\u529E","Tick off a to-do"),go:{space:"calendar"}}],figure:{layout:"space",main:"grid",marks:[{slot:"left-plus",label:ee("\u5DE6\u680F\u300C\u65E5\u5386\u300D\u65C1\u7684 +",'The + next to "Calendars" in the left sidebar')},{slot:"main-body",label:ee("\u65F6\u95F4\u683C\uFF1A\u5355\u51FB\u5EFA\u65E5\u7A0B","Time grid: click to add an event")},{slot:"right",label:ee("\u53F3\u680F\u7684\u5F85\u529E","To-dos in the right sidebar"),text:ee("\u5F85\u529E","To-dos")}]}},{id:"agent",level:"lv3",icon:"bot",title:ee("\u521B\u5EFA\u4F60\u7684 Agent","Create your own agent"),tasks:[{id:"agent-create",event:"agent.create",goal:1,title:ee("\u65B0\u5EFA\u4E00\u4E2A Agent","Create an agent"),go:{space:"agents"},spot:{anchor:"agent-new",title:ee("\u70B9\u300C\u521B\u5EFA Agent\u300D",'Click "Create agent"'),body:ee("\u8D77\u4E2A\u540D\u5B57\uFF0C\u5199\u51E0\u53E5\u5B83\u8BE5\u600E\u4E48\u505A\u4E8B\u3002","Give it a name and a few lines on how it should work.")}}]},{id:"muse",level:"lv3",icon:"sparkles",title:ee("Muse\uFF1A\u8BA9\u7075\u611F\u81EA\u5DF1\u957F","Muse: ideas that grow on their own"),tasks:[{id:"muse-open",event:"muse.open",goal:1,title:ee("\u53BB Muse \u770B\u4E00\u773C","Take a look at Muse"),go:{space:"muse"}}]},{id:"automation",level:"lv3",icon:"zap",title:ee("\u81EA\u52A8\u5316\uFF1A\u5230\u70B9\u5C31\u505A","Automations: done on schedule"),tasks:[{id:"automation-create",event:"automation.create",goal:1,title:ee("\u5EFA\u4E00\u6761\u81EA\u52A8\u5316","Create an automation"),go:{space:"automation"}}]},{id:"computer",level:"lv4",icon:"terminal",title:ee("\u8BA9 Tangu \u64CD\u4F5C\u7535\u8111","Let Tangu use your computer"),tasks:[{id:"cu-use",event:"computer.use",goal:1,title:ee("\u8BA9 Tangu \u7528\u4E00\u6B21\u7535\u8111","Have Tangu use your computer once"),go:{settings:"computer-use"},desktopOnly:!0}]},{id:"plugin",level:"lv4",icon:"code",title:ee("\u5199\u4E00\u4E2A\u81EA\u5DF1\u7684\u63D2\u4EF6","Write a plugin of your own"),tasks:[{id:"plugin-dev",event:"plugin.local",goal:1,title:ee("\u4ECE\u672C\u673A\u6587\u4EF6\u5939\u8F7D\u5165\u4E00\u4E2A\u63D2\u4EF6","Load a plugin from a local folder"),go:{settings:"amadeus-plugins"},desktopOnly:!0}]},{id:"mini-capsules",level:"new",icon:"layout-grid",title:ee("Mini \u9876\u680F\u4E24\u9897\u80F6\u56CA","Two capsules on the Mini bar"),tasks:[{id:"mini-open",event:"mini.open",goal:1,title:ee("\u6253\u5F00\u4E00\u6B21 Mini \u7A97\u53E3","Open the Mini window"),go:{command:"open-mini"},desktopOnly:!0}]},{id:"todo-standalone",level:"new",icon:"list-tree",title:ee("\u5F85\u529E\u89C6\u56FE\u5355\u72EC\u6253\u5F00","Open the to-do view on its own"),tasks:[{id:"todo-open",event:"todo.open",goal:1,title:ee("\u5355\u72EC\u6253\u5F00\u4E00\u6B21\u5F85\u529E\u89C6\u56FE","Open the to-do view by itself"),go:{space:"calendar"}}]}],rn=e=>Vn.filter(t=>t.level===e),jn=e=>Vn.find(t=>t.id===e);var Wt=Po.filter(e=>!e.version);function un(e,t){let n=e.event.startsWith("own:");return t.count(n?e.event.slice(4):e.event,n)>=e.goal}var ur=(e,t)=>e.filter(n=>t.desktop||!n.desktopOnly);function Fd(e,t){return rn(e).every(n=>ur(n.tasks,t).every(r=>un(r,t)))}function ia(e,t){let n=Wt.findIndex(r=>r.id===e);return n<=0||t.unlockAll?!0:Wt.slice(0,n).every(r=>Fd(r.id,t))}function Mo(e,t){return ia(e.level,t)?ur(e.tasks,t).every(n=>un(n,t))?"done":"active":"locked"}function Wi(e){return Wt.find(t=>!Fd(t.id,e))?.id??null}function Bd(e){let t={...e,unlockAll:!1},n=Wt[0].id;for(let r of Wt)ia(r.id,t)&&(n=r.id);return n}function nv(e,t){let n=e.split(/[.+-]/).map(a=>Number.parseInt(a,10)||0),r=t.split(/[.+-]/).map(a=>Number.parseInt(a,10)||0);for(let a=0;a<Math.max(n.length,r.length);a++){let i=(n[a]??0)-(r[a]??0);if(i)return i<0?-1:1}return 0}function Vi(e){let t=Po.find(n=>n.version);return t?.version&&e.appVersion&&nv(e.appVersion,t.version)>=0?t.version:null}var $d=e=>Vn.filter(t=>t.level!=="new"||!!Vi(e));function Ud(e,t){let n=ur(rn(e).flatMap(r=>r.tasks),t);return{done:n.filter(r=>un(r,t)).length,total:n.length}}var ji={zh:{agent:`\u9664\u4E86\u9ED8\u8BA4\u7684 Tangu\uFF0C\u4F60\u53EF\u4EE5\u6309\u7528\u9014\u5EFA\u81EA\u5DF1\u7684 Agent\uFF1A\u7ED9\u5B83\u540D\u5B57\u3001\u5DE5\u4F5C\u6307\u4EE4\u548C\u81EA\u5DF1\u7684\u8BB0\u5FC6\uFF0C\u8BA9\u5B83\u4E13\u95E8\u505A\u4E00\u7C7B\u4E8B\u3002
|
|
689
695
|
|
|
690
696
|
## \u521B\u5EFA
|
|
691
697
|
|
|
@@ -1095,12 +1101,12 @@ In the Calendar's right panel or the Mini window, the filters and the list choic
|
|
|
1095
1101
|
- Things you have already done count right away, and progress is kept on this device. Been around a while? Unlock everything from the \xB7\xB7\xB7 menu at the top right.
|
|
1096
1102
|
|
|
1097
1103
|
> [!tip]
|
|
1098
|
-
> Can't find something? Press \`\u2318/Ctrl+K\` to open the command palette and search for it by name.`}};var
|
|
1099
|
-
`)
|
|
1104
|
+
> Can't find something? Press \`\u2318/Ctrl+K\` to open the command palette and search for it by name.`}};var Hd="forsion-guide",an={reader:"guide",side:"guide-side",companion:"guide-companion"},Gi="guide-chapters",qd=e=>`forsion-extend.guide.${e}`;function ct(e,t){try{let n=localStorage.getItem(qd(e));return n===null?t:JSON.parse(n)}catch{return t}}function ht(e,t){try{localStorage.setItem(qd(e),JSON.stringify(t))}catch{}}function Wd(e,t){let n=new Set,r=ct("unlockAll",!1),a=null,i=ct("chapter","welcome"),s=ct("companion","welcome"),l=null,c=null,d=!1,g,u=[],p=()=>De(e.getLocale?.()),m=(b,S)=>be(p(),b,S),f=(b,S)=>e.achievements?.count?.(b,S?{own:!0}:void 0)??0,v=()=>({count:f,unlockAll:r,desktop:t.desktop,appVersion:a}),k=b=>b.title[p()]||b.title.zh,z=b=>b==="new"?m("guide.whatsNew",{version:Po.find(S=>S.version)?.version??""}):m(`guide.level.${b}`),x=()=>{for(let b of[...n])try{b()}catch(S){console.error("[guide] listener failed",S)}},w=()=>{let b=v(),S=new Set(Vn.flatMap(K=>K.tasks.filter(Y=>un(Y,b)).map(Y=>Y.id)));if(l)for(let K of Vn)for(let Y of K.tasks)S.has(Y.id)&&!l.has(Y.id)&&e.app?.notify?.(m("guide.toast.taskDone",{task:k(Y)}));l=S,U(b);let R=Bd(b),$=ct("reached",null);$===null?ht("reached",R):Wt.findIndex(K=>K.id===R)>Wt.findIndex(K=>K.id===$)&&(ht("reached",R),ht("justUnlocked",R),B({kind:"level",level:R})),ct("pendingLetter",null)&&G()},P=b=>!!b.spot&&!!e.app?.spotlight&&ct("spotlight",!0)&&(t.desktop||!b.desktopOnly),L=(b,S,R)=>{let $=b.spot;c={chapter:S.id,task:b.id},x();let K=S.tasks.length>1?m("guide.spotStep",{n:S.tasks.indexOf(b)+1,total:S.tasks.length}):void 0;e.app.spotlight({anchor:$.anchor,title:k($),body:$.body[p()]||$.body.zh,step:K}).then(async Y=>{d||(c?.task===b.id&&Y!=="replaced"&&(c=null,x()),Y==="mute"&&D.setSpotlight(!1),Y==="missing"&&R&&($.here&&b.go?.space&&await e.app?.openSpace?.(b.go.space),b.go?.command&&e.app?.runCommand?.(b.go.command)))})},U=b=>{let S=c&&jn(c.chapter),R=S&&S.tasks.find(K=>K.id===c.task);if(!S||!R||!un(R,b))return;let $=S.tasks.find(K=>!un(K,b)&&P(K)&&!K.spot.here&&(K.go?.space??"")===(R.go?.space??""));$?L($,S,!1):(c=null,e.app?.spotlight?.(null))},H=Promise.resolve(),B=b=>{!e.inbox||!ct("reminders",!0)||(ht("pendingLetter",b),G())},G=()=>{H=H.then(_,_)},_=async()=>{let b=ct("pendingLetter",null);if(d||!b||!e.inbox)return;let S=b.kind==="level"?rn(b.level):rn("new"),R=S.map(de=>`- ${k(de)}`).join(`
|
|
1105
|
+
`),$=b.kind==="level"?{title:m("guide.letter.levelTitle",{level:z(b.level)}),body:`${m("guide.letter.levelBody")}
|
|
1100
1106
|
|
|
1101
|
-
${R}`}:{title:m("guide.letter.versionTitle",{version:b.version,n:
|
|
1107
|
+
${R}`}:{title:m("guide.letter.versionTitle",{version:b.version,n:S.length}),body:`${m("guide.letter.versionBody")}
|
|
1102
1108
|
|
|
1103
|
-
${R}`},
|
|
1109
|
+
${R}`},K=await e.inbox.post($);if(!K||d)return;let Y=ct("lastLetter",null);ht("lastLetter",K),ht("letters",{...ct("letters",{}),[K]:b}),JSON.stringify(ct("pendingLetter",null))===JSON.stringify(b)&&ht("pendingLetter",null),Y&&Y!==K&&await e.inbox.archive(Y)},E=()=>{let b=Vi(v());if(!b||ct("seenVersion",null)===b)return;if(!(ct("seenVersion",null)!==null||f("chat.send",!1)+f("note.create",!1)>0)){ht("seenVersion",b);return}let R=Date.now(),$=()=>{if(!d){if(document.querySelector(".ob-rail")&&Date.now()-R<6e5){g=window.setTimeout($,3e3);return}ht("seenVersion",b),B({kind:"version",version:b})}};g=window.setTimeout($,3e3)},D={ctx:e,locale:p,t:m,env:v,title:k,levelName:z,subscribe(b){return n.add(b),()=>{n.delete(b)}},selected:()=>jn(i)??Vn[0],select(b){!jn(b)||b===i||(i=b,ht("chapter",b),jn(b).level===ct("justUnlocked",null)&&ht("justUnlocked",null),x())},companionChapter:()=>jn(s)??D.selected(),async go(b,S){let R=b.go;if(!R||b.desktopOnly&&!t.desktop)return;s=S.id,ht("companion",S.id);let $=P(b);c&&(c=null,$||e.app?.spotlight?.(null)),R.space&&!($&&b.spot.here)&&await e.app?.openSpace?.(R.space)&&R.space!==Hd&&e.openView?.(an.companion,{location:"right"}),$?L(b,S,!0):R.command&&e.app?.runCommand?.(R.command),R.settings&&e.app?.openSettings?.(R.settings),x()},markdown(b){let S=ji[p()]?.[b.id]||ji.zh[b.id]||"",R=S.search(/\n\s*\n/);return R<0?{intro:S.trim(),body:""}:{intro:S.slice(0,R).trim(),body:S.slice(R).trim()}},justUnlocked:()=>ct("justUnlocked",null),setUnlockAll(b){r=b,ht("unlockAll",b),x()},reminders:()=>ct("reminders",!0),setReminders(b){ht("reminders",b),x()},spotlightOn:()=>!!e.app?.spotlight&&ct("spotlight",!0),setSpotlight(b){ht("spotlight",b),!b&&c&&(c=null,e.app?.spotlight?.(null)),x()},spotTask:()=>c?.task??null,letter:b=>ct("letters",{})[b]??null,async openGuide(b){b&&D.select(b),ht("justUnlocked",null),await e.app?.openSpace?.(Hd),x()},dispose(){c&&e.app?.spotlight?.(null),d=!0,window.clearTimeout(g);for(let b of u.splice(0))b();n.clear()}},I=e.achievements?.subscribe?.(()=>{w(),x()});I&&u.push(I);let ne=e.subscribeLocale?.(()=>x());return typeof ne=="function"&&u.push(ne),w(),t.appVersion.then(b=>{d||(a=b,E(),x())}),D}function sa(e){let t=$d(e.env());return Po.map(n=>({level:n.id,chapters:t.filter(r=>r.level===n.id)})).filter(n=>n.chapters.length)}function Vd(e,t){switch(e){case"ribbon":return{x:5,y:10,w:28,h:168};case"ribbon-plus":return{x:5,y:180,w:28,h:26};case"ribbon-bottom":return{x:5,y:208,w:28,h:26};case"left-top":return{x:48,y:14,w:128,h:28};case"left-plus":return{x:180,y:16,w:22,h:24};case"left-list":return{x:48,y:54,w:154,h:122};case"main-tabs":return{x:224,y:14,w:96,h:22};case"main-top":return{x:226,y:44,w:104,h:24};case"main-top-right":return{x:498,y:44,w:60,h:24};case"main-body":return t.main==="grid"?{x:232,y:78,w:328,h:170}:{x:244,y:80,w:304,h:112};case"main-bottom":return{x:236,y:208,w:312,h:42};case"right":return{x:588,y:16,w:116,h:76};case"nav":return{x:14,y:92,w:172,h:28};case"section-1":return{x:224,y:60,w:476,h:86};case"section-2":return{x:224,y:160,w:476,h:90}}}var Be=e=>({style:e}),rt=(e,t,n,r=7)=>o("rect",{x:e,y:t,width:n,height:r,rx:r/2,...Be("fill:var(--overlay-medium)")}),Ro=(e,t,n=12,r=!1)=>o("rect",{x:e,y:t,width:n,height:n,rx:3,...Be(r?"fill:var(--text-muted)":"fill:var(--overlay-strong)")}),Io=(e,t,n,r="")=>o("text",{x:e,y:t,...Be(`fill:var(--text);font:500 12px var(--font-ui);${r}`),children:n});function jd({g:e,figure:t}){let n=e.locale(),r=new Map;for(let u of t.marks)if(u.text)for(let p of[].concat(u.slot))r.set(p,u.text[n]||u.text.zh);let a=new Set(t.marks.flatMap(u=>[].concat(u.slot))),i=t.marks.flatMap(u=>[].concat(u.slot).map(p=>Vd(p,t))),s=t.marks.map((u,p)=>{let m=Vd([].concat(u.slot)[0],t);return{n:p+1,x:Math.min(m.x+m.w+4,712),y:Math.max(m.y-4,12)}}),l=t.marks.map(u=>u.label[n]||u.label.zh),c=()=>o(N,{children:[[16,44,72,100,128,156].map((u,p)=>o("g",{children:Ro(11,u,16,p===2)},u)),o("path",{d:"M19 186v14M12 193h14",...Be("stroke:var(--text-faint);stroke-width:2;stroke-linecap:round")}),Ro(11,213,16,a.has("ribbon-bottom")),Ro(11,240,16),o("rect",{x:38,y:1,width:1,height:266,...Be("fill:var(--border)")}),Ro(56,22,12,a.has("left-top")),r.has("left-top")?Io(76,32,r.get("left-top")):rt(76,25,70),a.has("left-plus")&&o("path",{d:"M191 21v14M184 28h14",...Be("stroke:var(--text-muted);stroke-width:2;stroke-linecap:round")}),[62,86,110,134,158].map((u,p)=>o("g",{children:[Ro(58,u,10),rt(76,u+1.5,[74,56,88,48,66][p])]},u)),r.has("right")?Io(598,38,r.get("right")):rt(598,30,52),rt(598,52,84),rt(598,68,62),rt(598,116,92),rt(598,132,70)]}),d=()=>o(N,{children:[o("rect",{x:228,y:16,width:88,height:18,rx:6,...Be("fill:var(--bg-card)")}),r.has("main-tabs")?Io(240,29,r.get("main-tabs"),"font-size:11px"):rt(238,22,52,6),o("rect",{x:230,y:47,width:48,height:18,rx:9,...Be("fill:var(--bg-card)")}),rt(242,53,24,6),rt(290,53,26,6),[506,524,542].map(u=>o("rect",{x:u,y:50,width:12,height:12,rx:3,...Be("fill:var(--overlay-strong)")},u)),t.main==="grid"?o(N,{children:[[0,1,2,3,4,5,6].map(u=>o("g",{children:rt(244+u*46,86,22,6)},u)),[104,140,176,212].map(u=>o("rect",{x:238,y:u,width:316,height:1,...Be("fill:var(--border)")},u)),[1,2,3,4,5,6].map(u=>o("rect",{x:238+u*45,y:98,width:1,height:146,...Be("fill:var(--border)")},u)),o("rect",{x:286,y:146,width:40,height:24,rx:4,...Be("fill:var(--overlay-medium)")}),o("rect",{x:376,y:182,width:40,height:18,rx:4,...Be("fill:var(--overlay-medium)")})]}):t.main==="chat"?o(N,{children:[o("rect",{x:412,y:84,width:132,height:26,rx:10,...Be("fill:var(--overlay-light)")}),rt(252,128,260),rt(252,144,230),rt(252,160,150),o("rect",{x:240,y:212,width:304,height:34,rx:10,...Be("fill:var(--bg-card);stroke:var(--border)")}),rt(254,226,120),o("circle",{cx:528,cy:229,r:8,...Be("fill:var(--overlay-strong)")})]}):o(N,{children:[o("rect",{x:252,y:86,width:120,height:12,rx:4,...Be("fill:var(--overlay-strong)")}),[110,126,142,166,182,206,222].map((u,p)=>o("g",{children:rt(252,u,[292,270,200,286,240,280,150][p])},u))]})]}),g=()=>o(N,{children:[[36,64,92,120,148,176].map((u,p)=>o("g",{children:[Ro(24,u+8,12,p===2&&a.has("nav")),p===2&&r.has("nav")?Io(44,u+18,r.get("nav")):rt(44,u+11,[64,52,58,70,46,60][p])]},u)),o("rect",{x:232,y:28,width:110,height:12,rx:4,...Be("fill:var(--overlay-strong)")}),r.has("section-1")?Io(234,82,r.get("section-1")):rt(234,74,70),[0,1,2].map(u=>o("rect",{x:234+u*150,y:94,width:136,height:42,rx:8,...Be(u===0?"fill:var(--bg-card);stroke:var(--accent)":"fill:var(--bg-card);stroke:var(--border)")},u)),r.has("section-2")?Io(234,182,r.get("section-2")):rt(234,174,70),[0,1,2,3,4,5,6].map(u=>o("circle",{cx:246+u*30,cy:210,r:10,...Be(u===0?"fill:var(--accent)":"fill:var(--overlay-strong)")},u)),[0,1,2,3,4,5,6].map(u=>o("circle",{cx:246+u*30,cy:236,r:8,...Be("fill:var(--overlay-medium)")},`b${u}`))]});return o("figure",{class:"fxg-figure",children:[o("svg",{class:"fxg-figure-svg",viewBox:"0 0 724 268",role:"img","aria-label":`${e.t("guide.figure")}: ${l.map((u,p)=>`${p+1} ${u}`).join("; ")}`,children:[o("rect",{x:.5,y:.5,width:723,height:267,rx:10,...Be("fill:var(--sidebar-bg, var(--bg));stroke:var(--border)")}),t.layout==="settings"?o("rect",{x:200,y:1,width:523,height:266,...Be("fill:var(--bg)")}):o("rect",{x:216,y:8,width:352,height:252,rx:8,...Be("fill:var(--bg)")}),i.map((u,p)=>o("rect",{x:u.x-4,y:u.y-4,width:u.w+8,height:u.h+8,rx:7,...Be("fill:var(--accent-wash);stroke:var(--accent);stroke-width:2")},`r${p}`)),t.layout==="settings"?g():o(N,{children:[c(),d()]}),s.map(u=>o("g",{children:[o("circle",{cx:u.x,cy:u.y,r:10,...Be("fill:var(--accent)")}),o("text",{x:u.x,y:u.y+4,"text-anchor":"middle",...Be("fill:var(--on-accent);font:600 12px var(--font-ui)"),children:u.n})]},u.n))]}),o("figcaption",{class:"fxg-figure-cap",children:l.map((u,p)=>o("span",{children:[o("b",{children:p+1}),u]},p))})]})}var Gd=`
|
|
1104
1110
|
.fxg { color: var(--text); font-size: var(--ui-font-body); line-height: var(--ui-line-body); height: 100%; min-height: 0; display: flex; flex-direction: column; }
|
|
1105
1111
|
.fxg button { font: inherit; }
|
|
1106
1112
|
.fxg .fx-link { display: inline-flex; align-items: center; gap: 4px; padding: 0; border: 0; background: transparent; color: var(--accent-ink); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
|
|
@@ -1167,16 +1173,16 @@ ${R}`},X=await e.inbox.post(K);if(!X||d)return;let Y=at("lastLetter",null);pt("l
|
|
|
1167
1173
|
.fxg-letter .fxg-letter-chapter { display: grid; gap: 4px; }
|
|
1168
1174
|
.fxg-letter .fxg-letter-title { padding: 0; border: 0; background: transparent; color: var(--text); font-weight: 600; text-align: left; cursor: pointer; }
|
|
1169
1175
|
.fxg-letter > .btn { align-self: flex-start; }
|
|
1170
|
-
`;function
|
|
1176
|
+
`;function la(e){let[,t]=C(0);J(()=>{let n=e.subscribe(()=>t(r=>r+1));return t(r=>r+1),n},[e])}function ca(e){return o("div",{class:`fxg fxg-${e.kind}`,lang:e.g.locale()==="zh"?"zh-CN":"en",children:[o("style",{children:Gd}),e.children]})}var da=({on:e})=>o("span",{class:`fxg-check${e?" is-on":""}`,"aria-hidden":"true",children:e&&o("svg",{viewBox:"0 0 16 16",width:"10",height:"10",children:o("path",{d:"M3.5 8.5l3 3 6-7",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})})});function Kd({g:e,task:t,chapter:n}){let r=e.env(),a=un(t,r),i=!!t.desktopOnly&&!r.desktop;return o("li",{class:`fxg-task${a?" is-done":""}${!a&&e.spotTask()===t.id?" is-current":""}`,"data-task":t.id,children:[o(da,{on:a}),o("span",{class:"fxg-task-title",children:e.title(t)}),a?o("span",{class:"fxg-task-state",children:e.t("guide.taskDone")}):i?o("span",{class:"fxg-task-state",children:e.t("guide.desktopOnly")}):t.go?o("button",{type:"button",class:"btn ghost sm fxg-go",onClick:()=>void e.go(t,n),children:e.t("guide.go")}):null]})}function Xi({g:e,chapter:t}){return o("ul",{class:"fxg-tasks",children:t.tasks.map(n=>o(Kd,{g:e,task:n,chapter:t},n.id))})}function Xd({g:e,value:t,label:n}){let r=re(null),a=re(null);return J(()=>{if(!(!r.current||!e.ctx.ui?.mountMarkdownEditor))return a.current=e.ctx.ui.mountMarkdownEditor(r.current,{value:t,label:n,readOnly:!0,modes:!1}),()=>{a.current?.dispose(),a.current=null}},[e]),J(()=>{a.current?.update({value:t})},[t]),o("div",{class:"fxg-doc",ref:r})}function rv({g:e}){let[t,n]=C(!1),r=re(null);J(()=>{if(!t)return;let s=c=>{r.current?.contains(c.target)||n(!1)},l=c=>{c.key==="Escape"&&n(!1)};return document.addEventListener("pointerdown",s,!0),document.addEventListener("keydown",l),()=>{document.removeEventListener("pointerdown",s,!0),document.removeEventListener("keydown",l)}},[t]);let a=e.env(),i=(s,l,c)=>o("button",{type:"button",role:c===void 0?"menuitem":"menuitemcheckbox","aria-checked":c,class:"fxg-menu-item",onClick:()=>{n(!1),l()},children:[o("span",{children:s}),c&&o(da,{on:!0})]});return o("div",{class:"fxg-more",ref:r,children:[o("button",{type:"button",class:"fxg-icon-btn","aria-label":e.t("guide.more"),"aria-haspopup":"menu","aria-expanded":t,onClick:()=>n(!t),children:"\xB7\xB7\xB7"}),t&&o("div",{class:"fxg-menu",role:"menu",children:[i(a.unlockAll?e.t("guide.relock"):e.t("guide.unlockAll"),()=>e.setUnlockAll(!a.unlockAll)),i(e.t("guide.reminders"),()=>e.setReminders(!e.reminders()),e.reminders()),e.ctx.app?.spotlight&&i(e.t("guide.spotlight"),()=>e.setSpotlight(!e.spotlightOn()),e.spotlightOn()),e.ctx.app?.runCommand&&i(e.t("guide.openAchievements"),()=>{e.ctx.app?.runCommand?.("open-achievements")})]})]})}function Yd({g:e}){la(e),J(()=>{e.ctx.achievements?.track("guide.open")},[e]);let t=e.selected(),n=e.env(),r=Mo(t,n),{intro:a,body:i}=e.markdown(t),s=r!=="locked",l=Wt[Wt.findIndex(c=>c.id===t.level)-1];return o(ca,{g:e,kind:"reader",children:[o("div",{class:"fxg-bar",children:[o("span",{class:"fx-tag fxg-ro",children:e.t("guide.readOnly")}),o(rv,{g:e})]}),o("div",{class:"fxg-scroll",children:o("div",{class:"fxg-col",children:[o(Xd,{g:e,value:`# ${e.title(t)}
|
|
1171
1177
|
|
|
1172
|
-
${a}`,label:e.title(t)}),s&&t.figure&&o(
|
|
1178
|
+
${a}`,label:e.title(t)}),s&&t.figure&&o(jd,{g:e,figure:t.figure}),s&&i&&o(Xd,{g:e,value:i,label:e.title(t)}),r==="locked"&&l?o("div",{class:"fxg-lock","data-locked":!0,children:[o("div",{class:"fxg-lock-title",children:e.t("guide.locked.title")}),o("p",{children:e.t("guide.locked.body",{level:e.levelName(l.id)})}),o("p",{class:"fxg-muted",children:e.t("guide.locked.left")}),o("ul",{class:"fxg-tasks",children:rn(l.id).flatMap(c=>ur(c.tasks,n).filter(d=>!un(d,n)).map(d=>o(Kd,{g:e,task:d,chapter:c},d.id)))}),o("p",{class:"fxg-muted",children:e.t("guide.locked.hint")})]}):o("section",{class:"fxg-section","data-guide-tasks":!0,children:[o("h2",{children:e.t("guide.tasks")}),o(Xi,{g:e,chapter:t})]})]})})]})}function av({done:e,total:t}){return o("div",{class:"fxg-bar-track",role:"progressbar","aria-valuemin":0,"aria-valuemax":t,"aria-valuenow":e,children:o("i",{style:{width:`${t?Math.round(e/t*100):0}%`}})})}function Jd({g:e,c:t}){let n=Mo(t,e.env());return o("button",{type:"button",class:`fxg-line is-${n}${e.selected().id===t.id?" is-active":""}`,onClick:()=>{e.select(t.id),e.ctx.openView?.(an.reader)},children:[o(da,{on:n==="done"}),o("span",{children:e.title(t)}),n==="locked"&&o("span",{class:"fxg-task-state",children:e.t("guide.lockedHint")})]})}function iv({g:e}){let t=e.env(),n=Wi(t);if(!n)return o("div",{class:"fxg-pane",children:[o("div",{class:"fxg-h",children:e.t("guide.allDone")}),o("p",{class:"fxg-muted",children:e.t("guide.allDoneBody")}),o("div",{class:"fxg-sub",children:e.t("guide.review")}),sa(e).map(({level:s,chapters:l})=>o("button",{type:"button",class:"fxg-line",onClick:()=>{e.select(l[0].id),e.ctx.openView?.(an.reader)},children:[o(da,{on:!0}),o("span",{children:e.levelName(s)})]},s))]});let{done:r,total:a}=Ud(n,t),i=Wt[Wt.findIndex(s=>s.id===n)+1];return o("div",{class:"fxg-pane",children:[o("div",{class:"fxg-h",children:e.levelName(n)}),o("div",{class:"fxg-muted",children:e.t("guide.levelProgress",{done:r,total:a})}),o(av,{done:r,total:a}),o("div",{class:"fxg-lines",children:rn(n).map(s=>o(Jd,{g:e,c:s},s.id))}),i&&o(N,{children:[o("div",{class:"fxg-sub",children:e.t("guide.next")}),o("div",{class:"fxg-lines",children:rn(i.id).map(s=>o(Jd,{g:e,c:s},s.id))})]})]})}function Zd(e,t){let{intro:n,body:r}=e.markdown(t);return`# ${e.title(t)}
|
|
1173
1179
|
|
|
1174
1180
|
${n}
|
|
1175
1181
|
|
|
1176
|
-
${r}`.trim()}function
|
|
1182
|
+
${r}`.trim()}function sv({g:e}){let t=e.selected(),n=e.ctx.tangu?.mountChat;return n?o(lv,{g:e,c:t,mount:n},`${t.id}:${e.locale()}`):o(cv,{g:e,c:t})}function lv({g:e,c:t,mount:n}){let r=re(null);return J(()=>{let a=n(r.current,{title:e.t("guide.ask.chatTitle")});return a.quote(Zd(e,t)),()=>a.dispose()},[]),o("div",{class:"fxg-chat",ref:r})}function cv({g:e,c:t}){let[n,r]=C(""),[a,i]=C(""),s=e.ctx.tangu?.startChat,l=async()=>{if(!s)return;let c=`${e.t("guide.ask.prompt",{chapter:e.title(t),question:n.trim()})}
|
|
1177
1183
|
|
|
1178
1184
|
---
|
|
1179
|
-
${Sd(e,t)}`,d=await s({prompt:c,send:!1});d?.ok?r(""):i(d?.error||e.t("guide.ask.unavailable"))};return o("div",{class:"fxg-pane",children:[o("p",{class:"fxg-muted",children:e.t("guide.ask.hint",{chapter:e.title(t)})}),o("textarea",{class:"fxg-input",rows:4,value:n,placeholder:e.t("guide.ask.placeholder"),onInput:c=>r(c.target.value)}),o("button",{type:"button",class:"btn sm",disabled:!s,onClick:()=>void l(),children:e.t("guide.ask.send")}),(!s||a)&&o("p",{class:"fxg-muted",children:a||e.t("guide.ask.unavailable")})]})}function _d({g:e}){Xr(e);let[t,n]=A("progress");return o(Jr,{g:e,kind:"side",children:[o("div",{class:"fxg-tabs",role:"tablist",children:["progress","ask"].map(r=>o("button",{type:"button",role:"tab","aria-selected":t===r,class:t===r?"is-on":"",onClick:()=>n(r),children:e.t(r==="progress"?"guide.progress":"guide.askTangu")},r))}),t==="progress"?o(fh,{g:e}):o(mh,{g:e})]})}function Cd({g:e}){Xr(e);let t=e.companionChapter(),n=_o(t,e.env())==="done",r=ce(n);return oe(()=>{if(n&&!r.current){let a=window.setTimeout(()=>e.ctx.closeView?.(tn.companion),1500);return()=>window.clearTimeout(a)}r.current=n},[n]),o(Jr,{g:e,kind:"companion",children:o("div",{class:"fxg-pane",children:[o("div",{class:"fxg-companion-head",children:[o("span",{class:"fxg-sub",children:e.t("guide.title")}),e.ctx.closeView&&o("button",{type:"button",class:"fxg-icon-btn","aria-label":e.t("guide.companion.close"),onClick:()=>e.ctx.closeView?.(tn.companion),children:"\xD7"})]}),o("div",{class:"fxg-h",children:e.title(t)}),o("div",{class:"fxg-sub",children:e.t("guide.tasks")}),o(Pi,{g:e,chapter:t}),o("button",{type:"button",class:"fx-link fxg-back",onClick:()=>void e.openGuide(t.id),children:e.t("guide.companion.back")})]})})}function Td({g:e,letter:t}){Xr(e);let n=t?t.kind==="level"?t.level:"new":null,r=n&&(n==="new"||Gr(n,e.env()))?en(n):[];return o(Jr,{g:e,kind:"letter",children:[r.map(a=>o("div",{class:"fxg-letter-chapter",children:[o("button",{type:"button",class:"fxg-letter-title",onClick:()=>void e.openGuide(a.id),children:e.title(a)}),o(Pi,{g:e,chapter:a})]},a.id)),o("button",{type:"button",class:"btn sm",onClick:()=>void e.openGuide(r[0]?.id??Fn("welcome")?.id),children:e.t("guide.letter.open")})]})}function bh(e){return!!e&&typeof e.registerView=="function"&&typeof e.registerListSource=="function"&&typeof e.openView=="function"&&typeof e.achievements?.count=="function"&&typeof e.achievements.subscribe=="function"&&typeof e.app?.openSpace=="function"&&typeof e.ui?.mountMarkdownEditor=="function"}function Ad(e,t=window){if(!bh(e)||t.tangu?.unitPage)return null;let n=t.tangu,r=hd(e,{desktop:typeof n?.appVersion=="function"&&!n.mobile,appVersion:typeof n?.appVersion=="function"?n.appVersion().catch(()=>null):Promise.resolve(null)}),a=i=>s=>(He(o(i,{g:r}),s),()=>{He(null,s)});return e.registerView({id:tn.reader,title:r.t("guide.title"),icon:"page",workspaceSource:Ei,mount:a(zd)}),e.registerView({id:tn.side,title:r.t("guide.progress"),icon:"list-view",mount:a(_d)}),e.registerView({id:tn.companion,title:r.t("guide.title"),icon:"todo",mount:a(Cd)}),e.registerListSource({id:Ei,title:r.t("guide.title"),search:!0,items:i=>{let s=r.env(),l=i?.query?.trim().toLowerCase()??"",c=r.justUnlocked();return Kr(r).flatMap(({level:d,chapters:g})=>g.map(u=>{let p=_o(u,s);return{key:u.id,title:r.title(u),group:r.levelName(d),icon:p==="done"?"circle-check":p==="locked"?"lock":"circle",hint:d===c&&p!=="locked"?r.t("guide.justUnlocked"):void 0}})).filter(d=>!l||d.title.toLowerCase().includes(l))},subscribe:i=>r.subscribe(i),activeKey:()=>r.selected().id,open:i=>{r.select(i.key),e.openView(tn.reader)}}),e.registerCommand?.({id:"open-guide",title:()=>r.t("guide.cmd.open"),keywords:"guide manual help tutorial levels \u4F7F\u7528\u6307\u5357 \u8BF4\u660E\u4E66 \u6559\u7A0B \u5E2E\u52A9 \u7B49\u7EA7 \u4EFB\u52A1",run:()=>{r.openGuide()}}),e.inbox?.registerCard({sender:()=>r.t("guide.title"),mount(i,s){return He(o(Td,{g:r,letter:r.letter(s.id)}),i),()=>{He(null,i)}}}),r}var vh=["uploads","ama","sync","agents","profile","apps","plugins","exports"],ir={uploads:"penzor.uploads",ama:"penzor.ledger.ama",sync:"penzor.ledger.sync",agents:"penzor.source.agents",profile:"penzor.source.profile",apps:"penzor.ledger.apps",plugins:"penzor.source.plugins",exports:"penzor.ledger.exports"},Ed=e=>e==="uploads"?"app:penzor":e==="exports"?"exports":`source:${e}`,$n=e=>Number.isFinite(Number(e))?Number(e):0,ln="penzor";var Md=500;async function yh(e,t){let n=Math.min(20,$n(t.totalPages));if(n<=1)return t.files;let r=await Promise.all(Array.from({length:n-1},(a,i)=>e(`/exports/list?pageSize=${Md}&sortBy=date&sortOrder=desc&page=${i+2}`)));return[...t.files,...r.flatMap(a=>a.ok&&Array.isArray(a.data?.files)?a.data.files:[])]}async function Id(e){let[t,n,r,a,i,s,l,c,d]=await Promise.all([e("/remotesync/vaults"),e("/amadeus/vaults"),e("/storage/quota"),e("/storage/files-by-app"),e(`/exports/list?pageSize=${Md}&sortBy=date&sortOrder=desc`),e("/trash?all=1"),e("/storage/ledger"),e("/storage/source-trash/ama"),e("/remotesync/content/devices")]),u=[t,n,r,a,i,s].every(m=>!m.ok&&m.status===401);return{snap:{contentDevices:d.ok&&Array.isArray(d.data?.devices)?d.data.devices:null,amaTrash:c.ok&&Array.isArray(c.data?.entries)?c.data.entries:null,ledger:l.ok&&l.data?.schemaVersion===1?l.data:null,sync:t.ok&&Array.isArray(t.data?.vaults)?{...t.data,vaults:t.data.vaults.filter(m=>m.vault!=="forsion-content")}:null,ama:n.ok&&Array.isArray(n.data?.vaults)?n.data.vaults.filter(m=>(m.role??"owner")==="owner").map(m=>({id:m.id,name:m.name,sizeBytes:$n(m.sizeBytes)})):null,apps:r.ok&&a.ok&&Array.isArray(a.data?.apps)?{used:$n(r.data?.used),quota:$n(r.data?.quota),apps:a.data.apps,largest:a.data.largest??[]}:null,exports:i.ok&&Array.isArray(i.data?.files)?{files:await yh(e,i.data),total:$n(i.data.total),totalBytes:$n(i.data.totalBytes)}:null,trash:s.ok&&Array.isArray(s.data)?s.data:null,at:Date.now()},signedOut:u}}var xh={"ai-studio":"AI Studio","photo-studio":"Photo Studio",notebase:"Notebase",chat:"Forsion Chat",connect:"Forsion Connect","video-studio":"Video Studio",bluebird:"Bluebird",cnti:"CNTI"},Mi=e=>e?xh[e]??e.split(/[-_]/).filter(Boolean).map(t=>t[0].toUpperCase()+t.slice(1)).join(" "):"\u2014",lo=e=>e.kind==="content"?`content:${e.namespace}`:e.kind==="source"?`source:${e.source}`:e.kind==="sync"?`sync:${e.vault}`:e.kind==="ama"?`ama:${e.vaultId}`:e.kind==="app"?`app:${e.appId}`:e.kind==="overview"?"ov":e.kind,co=e=>e.kind==="overview"||e.kind==="sync-home";function Rd(e){if(e==="ov")return{kind:"overview"};if(e==="sync-home"||e==="exports"||e==="trash")return{kind:e};let t=e.indexOf(":"),n=t<0?e:e.slice(0,t),r=t<0?"":e.slice(t+1);return r?n==="source"&&vh.includes(r)?{kind:"source",source:r}:n==="content"&&/^(default|device-[A-Za-z0-9_-]{1,64})$/.test(r)?{kind:"content",namespace:r}:n==="sync"?{kind:"sync",vault:r}:n==="ama"?{kind:"ama",vaultId:r}:n==="app"?{kind:"app",appId:r}:null:null}var Ii=(e,t)=>t?t.config.enabled||t.config.revision>0:!!e?.contentDevices?.length;function Ld(e,t,n,r=null){let a=m=>xe(n,ir[m]),i=m=>ar(m,n),s=m=>{let f=e?.ledger?.sources.find(v=>v.id===m);return f?.status==="ready"?f.liveBytes+f.trashBytes:null},l=m=>{let f=s(m);return f==null?"\u2014":`${e?.ledgerStale?"~ ":""}${i(f)}`},c=Ii(e,r),d=[{key:"drive-root",title:t.drive,kind:"folder",icon:t.driveIcon},{key:"ov",title:t.overview,parent:"drive-root",icon:"layout"},{key:Ed("uploads"),title:t.files,parent:"drive-root",icon:"folder",hint:l("uploads")}];if(c&&e?.contentDevices){d.push({key:"synced",title:t.synced,kind:"folder",icon:"cloud"},{key:"content:default",title:t.all,parent:"synced",icon:"cloud"});let m=r?.deviceId;m&&d.push({key:`content:device-${m}`,title:t.thisBackup,parent:"synced",icon:"lock"});for(let f of e.contentDevices.filter(v=>v.id!==m))d.push({key:`content:device-${f.id}`,title:f.name||`Forsion-${f.id.slice(0,8)}`,parent:"synced",icon:"link"})}let g=["ama","apps","plugins","exports",...c?[]:["agents","profile"]],u=g.reduce((m,f)=>m==null||s(f)==null?null:m+s(f),0);d.push({key:"by-app",title:t.byApp,kind:"folder",icon:"package",hint:u==null?"\u2014":i(u)});let p=(m,f,v=a(m))=>{let w=m==="ama"||m==="sync"||m==="apps",k=Ed(m);if(d.push({key:w?k+":group":k,parent:f,title:v,icon:m==="sync"?"clock":"folder",...w?{kind:"folder"}:{},hint:l(m)}),w&&d.push({key:`source:${m}`,parent:k+":group",title:t.overview,icon:"layout"}),m==="sync")for(let z of e?.sync?.vaults??[])d.push({key:`sync:${z.vault}`,parent:k+":group",title:z.vault,icon:"database",hint:i(z.bytes)});if(m==="ama")for(let z of e?.ama??[])d.push({key:`ama:${z.id}`,parent:k+":group",title:z.name,icon:"page",hint:i(z.sizeBytes)});if(m==="apps")for(let z of e?.apps?.apps.filter(x=>x.appId!==ln&&x.files>0)??[])d.push({key:`app:${z.appId}`,parent:k+":group",title:Mi(z.appId),icon:"archive",hint:i(z.bytes)})};for(let m of g)p(m,"by-app");return p("sync","",c?t.legacy:a("sync")),d.push({key:"trash",title:t.trash,icon:"trash",hint:e?.trash?t.items(Ri(e.trash).length):"\u2014"}),d.map(m=>m.parent===""?(({parent:f,...v})=>v)(m):m)}function Ri(e){let t=new Map(e.map(a=>[a.id,a])),n=a=>{let i=a;for(let s=0;s<64&&i.parentId&&t.has(i.parentId);s++)i=t.get(i.parentId);return i},r=new Map;for(let a of e){let i=n(a),s=r.get(i.id)??{inner:0,innerBytes:0};i.id!==a.id&&s.inner++,s.innerBytes+=$n(a.fileSize),r.set(i.id,s)}return e.filter(a=>!(a.parentId&&t.has(a.parentId))).map(a=>({...a,...r.get(a.id)}))}function Li(e,t){let n=t?`${t}/`:"",r=new Map,a=[];for(let i of e){if(n&&!i.path.startsWith(n))continue;let s=i.path.slice(n.length),l=s.indexOf("/");if(l<0){a.push({key:i.path,name:s,dir:!1,size:i.size,mtime:i.mtime,col4:i.who??null,ref:i.ref});continue}let c=s.slice(0,l),d=n+c,g=r.get(d)??{key:d,name:c,dir:!0,size:0,mtime:null,count:0};g.size+=i.size,g.count=(g.count??0)+1,i.mtime!=null&&(g.mtime==null||i.mtime>g.mtime)&&(g.mtime=i.mtime),r.set(d,g)}return[...Zr([...r.values()]),...Zr(a)]}var Zr=e=>e.sort((t,n)=>(n.mtime??-1)-(t.mtime??-1)||t.name.localeCompare(n.name)),Dd=e=>[...Zr(e.filter(t=>t.dir)),...Zr(e.filter(t=>!t.dir))];function ar(e,t){let n=Math.max(0,$n(e));if(n<1024)return`${n} B`;if(n<1024*1024)return`${Math.round(n/1024)} KB`;if(n<1024**3){let r=n/1048576;return`${r<100?Number(r.toFixed(1)):Math.round(r)} MB`}return`${Number((n/1024**3).toFixed(2))} GB`}function Di(e,t,n){let r=ar(e,n),a=ar(t,n),i=a.slice(a.indexOf(" "));return`${r.endsWith(i)?r.slice(0,-i.length):r} / ${a}`}var kh=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Pd=e=>String(e).padStart(2,"0");function nn(e,t,n=Date.now()){if(e==null||!Number.isFinite(e))return"\u2014";let r=new Date(e),a=new Date(n);a.setHours(0,0,0,0);let i=new Date(r);i.setHours(0,0,0,0);let s=Math.round((a.getTime()-i.getTime())/864e5),l=`${Pd(r.getHours())}:${Pd(r.getMinutes())}`;if(s===0)return t==="zh"?`\u4ECA\u5929 ${l}`:`Today ${l}`;if(s===1)return t==="zh"?`\u6628\u5929 ${l}`:`Yesterday ${l}`;let c=r.getFullYear()===a.getFullYear();return t==="zh"?`${c?"":`${r.getFullYear()} \u5E74 `}${r.getMonth()+1} \u6708 ${r.getDate()} \u65E5`:`${kh[r.getMonth()]} ${r.getDate()}${c?"":`, ${r.getFullYear()}`}`}function uo(e){if(e==null||e==="")return null;if(typeof e=="number")return e<1e12?e*1e3:e;let t=Number(e);if(Number.isFinite(t))return t<1e12?t*1e3:t;let n=Date.parse(String(e));return Number.isNaN(n)?null:n}var Nd=e=>[e.notes.on&&!e.notes.pending,e.agents.on,e.plugins.on].filter(Boolean).length;function Ni(e){let t=e.notes.last;return!!t&&t.ok===!1&&!(t.errors.length>0&&t.errors.every(n=>n.includes("already-running")))}var Qr=e=>!!e&&e.signedIn&&(!!e.notes.pending||e.notes.on&&Ni(e)),wh=e=>/"code"\s*:\s*"QUOTA"/.test(e),Od=(e,t)=>e.notes.on&&!e.notes.pending&&e.notes.backend==="penzor"&&(t>0&&(e.notes.localBytes??0)>t||!!e.notes.last?.errors.some(wh));function sr(e){if(!e?.notes.running)return null;let t=e.notes.progress;return t&&t.total>0?Math.min(1,Math.max(0,t.done/t.total)):0}function Bd(e,t){if(!e||!e.signedIn)return;let n=sr(e);if(n!=null)return n>0?xe(t,"penzor.sync.running",{pct:Math.round(n*100)}):xe(t,"penzor.sync.runningPlain");if(e.notes.pending)return xe(t,"penzor.sync.waiting");let r=Nd(e);return r?xe(t,"penzor.sync.onN",{n:r}):xe(t,"penzor.sync.allOff")}var Oi=e=>e.jobs.filter(t=>t.state==="failed"&&!e.jobs.some(n=>n.path===t.path&&n.at>t.at&&n.state==="done"));function wn(e){if(!e.config.enabled)return{kind:"off"};if(e.paused)return{kind:"paused"};let t=e.jobs.filter(a=>a.state==="queued"||a.state==="active");if(t.length){let a=t.reduce((s,l)=>s+(l.size??0),0),i=t.reduce((s,l)=>s+l.done,0);return{kind:"run",pct:a>0?Math.min(99,Math.round(i/a*100)):0}}if(e.phase==="scanning"||e.phase==="syncing")return{kind:"scan"};let n=Oi(e).length+(e.error?1:0);if(n)return{kind:"warn",n};let r=e.jobs.filter(a=>a.state==="done").map(a=>a.finishedAt??a.at);return{kind:"ok",at:r.length?Math.max(...r):null}}function Fd(e,t){return e.kind==="off"?xe(t,"penzor.cs.statusOff"):e.kind==="paused"?xe(t,"penzor.cs.statusPaused"):e.kind==="run"?`${e.pct}%`:e.kind==="scan"?xe(t,"penzor.sync.runningPlain"):e.kind==="warn"?xe(t,"penzor.cs.statusWarn",{n:e.n}):xe(t,"penzor.cs.statusOk")}function $d(e,t){let n=Nd(e);return e.notes.pending?xe(t,"penzor.sync.badgeWaiting",{n}):n?xe(t,"penzor.sync.onN",{n}):xe(t,"penzor.sync.allOff")}function Bi(e,t){let n=Math.max(0,Math.round(e.intervalMin)),r=n?n%60===0?xe(t,"penzor.sync.everyHours",{n:n/60}):xe(t,"penzor.sync.every",{n}):xe(t,"penzor.sync.manual");return e.syncOnStart?`${r} \xB7 ${xe(t,"penzor.sync.onStart")}`:r}function zn(e,t,n=Date.now()){if(e==null||!Number.isFinite(e))return"\u2014";let r=Math.max(0,n-e);return r<6e4?xe(t,"penzor.justNow"):r<36e5?xe(t,"penzor.sync.minAgo",{n:Math.floor(r/6e4)}):r<6*36e5?xe(t,"penzor.sync.hoursAgo",{n:Math.floor(r/36e5)}):nn(e,t,n)}function ea(e,t=!1){return t?"folder":/\.(png|jpe?g|gif|webp|heic|dng|svg|bmp|tiff?)$/i.test(e)?"image":/\.(md|txt|pdf|docx?|rtf)$/i.test(e)?"page":/\.db$/i.test(e)?"database":"attachment"}function Ud(e,t){let n=null;for(let r of t)(!r.source||e===r.source||e.startsWith(r.source+"/"))&&(!n||r.source.length>n.source.length)&&(n=r);return n}var $t={get:"penzor:sync:get",preview:"penzor:sync:preview",apply:"penzor:sync:apply",run:"penzor:sync:run",pause:"penzor:sync:pause",retry:"penzor:sync:retry",rename:"penzor:sync:rename",setup:"penzor:sync:setup"};var cn="forsion-penzor",Sn={main:"penzor",info:"penzor-info"},Fi="penzor-places",$i="forsion-extend.penzor.ready",Hd="forsion-extend.penzor.focus",ta=e=>e.state==="active"||e.state==="queued",Ao=e=>e.ok?"":e.detail||e.code||e.transport||(e.status?`HTTP ${e.status}`:"offline"),zh=e=>e.slice(e.lastIndexOf("/")+1);function qd(e,t={}){let n=t.api??Q,r=new Set,a=()=>{for(let y of[...r])try{y()}catch(C){console.error("[penzor] listener failed",C)}},i=()=>Ze(e.getLocale?.()),s=(y,C)=>xe(i(),y,C),l=y=>ar(y,i()),c=y=>e.app?.notify?.(y),d=y=>c(s("penzor.toast.failed",{reason:typeof y=="string"?y:Ao(y)})),g="unknown",u=!1,p=null,m=null,f={kind:"overview"},v="",w=[],k=null,z=null,x=null,M="mtime",L="",H=null,V={kind:"view"},ee=!1,te=null,S=null,E=0,O=0,I=0,ne=t.device??null,b=new Map,T=new Set,R=null,K=null,X=[],Y=[],me="hidden",Le=0,je=!1,he=0,Te=!1,ft=null,Ct=!1,Tt=null,on=new Map,bt=null,lt=!se().mobile&&typeof e.app?.sync?.get=="function"?e.app.sync:null,At=new Map,vt=new Set,ve=!1,yt=!1,Ae=1e4,Hn=4e3,ct=y=>{let C=M==="size"?(P,j)=>j.size-P.size:M==="name"?(P,j)=>P.name.localeCompare(j.name):null;return C?[...y.filter(P=>P.dir).sort(C),...y.filter(P=>!P.dir).sort(C)]:Dd([...y])};async function Xe(){let y=++E,C=f;if(z=null,C.kind==="overview"||C.kind==="sync-home"){k=null;return}if(C.kind==="exports"){k=(m?.exports?.files??[]).map($=>({key:$.fileId,name:$.fileName,dir:!1,size:$.size,mtime:uo($.createdAt),col4:Ht($.appId),ref:$}));return}if(C.kind==="trash"){k=Ri(m?.trash??[]).map($=>({key:$.id,name:$.name,dir:$.fileType==="directory",size:$.fileType==="directory"?$.innerBytes:$.fileSize,mtime:uo($.deletedAt),col4:$.parentName?`${Ht($.appId)} / ${$.parentName}`:Ht($.appId),count:$.fileType==="directory"?$.inner:void 0,ref:$}));return}if(k=null,a(),C.kind==="content"){let $=await n(`/remotesync/content/${encodeURIComponent(C.namespace)}`);if(y!==E)return;if(!$.ok){z=Ao($),a();return}if($.data.schemaVersion!==1||!Array.isArray($.data.nodes)){z=s("penzor.unreachable");return}let ie=$.data.nodes.filter(ye=>!ye.deleted),Se=ie.filter(ye=>ye.kind==="file"&&ye.version).map(ye=>({path:ye.path,size:ye.size??0,mtime:ye.mtime??null,ref:ye}));b.set(lo(C),Se);let Z=ye=>{let ur=0,jn=null,fo=0;for(let Pn of Se)Pn.path.startsWith(ye+"/")&&(ur+=Pn.size,fo++,Pn.mtime!=null&&(jn==null||Pn.mtime>jn)&&(jn=Pn.mtime));return{size:ur,mtime:jn,count:fo}};k=ie.filter(ye=>(ye.path.includes("/")?ye.path.slice(0,ye.path.lastIndexOf("/")):"")===v).map(ye=>ye.kind==="folder"?{key:ye.path,name:ye.name,dir:!0,...Z(ye.path),ref:ye}:{key:ye.path,name:ye.name,dir:!1,size:ye.size??0,mtime:ye.mtime??null,ref:ye});return}if(C.kind==="sync"||C.kind==="ama"){let $=lo(C),ie=b.get($);if(!ie){if(C.kind==="sync"){let Se=await n(`/remotesync/vaults/${encodeURIComponent(C.vault)}/manifest`);if(y!==E)return;if(!Se.ok){z=Ao(Se),a();return}ie=Se.data.files.map(Z=>({path:Z.path,size:Z.size,mtime:uo(Z.mtimeMs),who:Z.device??null,ref:Z}))}else{let Se=await n(`/amadeus/vaults/${encodeURIComponent(C.vaultId)}/tree`);if(y!==E)return;if(!Se.ok){z=Ao(Se),a();return}ie=(Se.data.entries??[]).map(Z=>({path:Z.path,size:Z.size,mtime:uo(Z.updatedAt),ref:Z}))}b.set($,ie)}k=Li(ie,v);return}if(C.kind==="source"){let $=(Se,Z,ye)=>({key:Se,name:Z,size:ye,dir:!0,mtime:null,ref:{go:Se}});if(C.source==="sync"||C.source==="ama"||C.source==="apps"){if(!(C.source==="sync"?m?.sync:C.source==="ama"?m?.ama:m?.apps)){z=s("penzor.unreachable");return}k=C.source==="sync"?(m?.sync?.vaults??[]).map(Z=>$(`sync:${Z.vault}`,Z.vault,Z.bytes)):C.source==="ama"?(m?.ama??[]).map(Z=>$(`ama:${Z.id}`,Z.name,Z.sizeBytes)):(m?.apps?.apps??[]).filter(Z=>Z.appId!==ln&&Z.files>0).map(Z=>$(`app:${Z.appId}`,Ht(Z.appId),Z.bytes));return}let ie=await n(`/storage/source-files/${C.source}`);if(y!==E)return;if(!ie.ok){z=Ao(ie),a();return}k=Li(ie.data.entries.map(Se=>({...Se,ref:Se})),v);return}let P=w[w.length-1]?.id,j=await n(`/files${P?`?parentId=${encodeURIComponent(P)}`:""}`,{projectSource:C.appId});if(y===E){if(!j.ok){z=Ao(j),a();return}k=j.data.map($=>({key:$.id,name:$.name,dir:$.fileType==="directory",size:Number($.fileSize)||0,mtime:uo($.updatedAt),ref:$}))}}let xt=()=>{if(!k)return null;let y=L.trim().toLowerCase(),C=y?k.filter(P=>P.name.toLowerCase().includes(y)):k;return ct(C)},mt=()=>{let y=xt()??[],C=new Set(y.map(P=>P.key));if(T=new Set([...T].filter(P=>C.has(P))),x&&C.has(x)){T.add(x);return}x=(y.find(P=>!P.dir)??y[0])?.key??null,T=new Set(x?[x]:[]),R=x,Mt()},Et=()=>{x=null,T=new Set,R=null,K=null},Ht=y=>y===ln?s("penzor.uploads"):Mi(y),nt=()=>f.kind==="app"&&f.appId===ln,Tn=y=>!!m?.apps&&m.apps.apps.find(C=>C.appId===y)?.canManage!==!1,Je=()=>f.kind==="app"&&Tn(f.appId),kt=y=>f.kind==="trash"?Tn(y.ref.appId):Je(),D=()=>!!m?.apps&&!!m.trash?.length&&m.trash.every(y=>Tn(y.appId)),re=()=>f.kind==="app"||f.kind==="sync"||f.kind==="ama"||f.kind==="content",we=()=>f.kind==="app"?w[w.length-1]?.id??"ROOT":"ROOT",Qe=()=>(xt()??[]).filter(y=>T.has(y.key)),it=(y,C)=>{let P=se().cloudInvoke;return P?P(y,C).catch(j=>({ok:!1,error:String(j?.message||j)})):Promise.resolve({ok:!1,error:"no_bridge"})};function We(y=500){ft||Ct||(ft=setTimeout(()=>{ft=null,Pt()},y))}async function Pt(){let y=O,C=await it("penzor:transfers");if(y!==O||Ct)return;let P=new Map(X.map(Z=>[Z.id,Z.state]));C?.ok&&Array.isArray(C.items)&&(X=C.items);let j=Date.now(),$=X.some(ta);X.some(Z=>Z.kind==="up"&&Z.state==="done"&&P.get(Z.id)!=="done")&&(bt&&clearTimeout(bt),bt=setTimeout(()=>{bt=null,ot()},300)),$?(Tt==null&&(Tt=j),he=0,me==="hidden"&&(me="open",Le=j),me==="open"&&!je&&j-Le>Ae&&(me="pill")):Tt!=null&&(rn(Tt),Tt=null);let ie=X.some(Z=>Z.state==="failed")||Y.length>0,Se=X.some(Z=>Z.state==="paused");!$&&!Se&&X.length&&!ie&&me!=="hidden"&&(he?j-he>Hn&&!je&&(me="hidden",he=0,qt.txClear("finished")):(he=j,me==="pill"&&(me="open"))),!$&&ie&&me==="pill"&&(me="open"),!X.length&&!Y.length&&(me="hidden"),An(),a(),($||me!=="hidden"&&he)&&We()}function rn(y){let C=X.filter(ie=>(ie.finishedAt??0)>=y),P=C.filter(ie=>ie.kind==="up"&&ie.state==="done"),j=C.filter(ie=>ie.kind==="down"&&ie.state==="done"),$=C.filter(ie=>ie.state==="failed");Te||($.length?c(s("penzor.toast.txFailed",{n:$.length})):P.length?c(P.length===1?s("penzor.toast.upDoneOne",{name:P[0].name}):s("penzor.toast.upDoneMany",{n:P.length})):j.length&&c(j.length===1?s("penzor.toast.downloaded",{name:j[0].name}):s("penzor.toast.downDoneMany",{n:j.length})))}function An(){let y=X.filter(ta),C=y.reduce((j,$)=>j+Math.max($.size,$.done),0),P=y.length?C>0?Math.min(1,y.reduce((j,$)=>j+$.done,0)/C):0:null;e.app?.setSpaceProgress?.(cn,P??sr(lt?.get()??null))}function En(){if(!lt)return;let y=Qr(lt.get());y!==yt&&(yt=y,e.app?.setSpaceDot?.(cn,y))}function un(){lt?.get()?.notes.pending||(ve=!1),An(),En(),a()}let Fe=()=>{let y=lt?.get()??null;if(!y||!At.size)return y;let C=(P,j)=>At.has(P)?{...j,on:At.get(P)}:j;return{...y,notes:C("notes",y.notes),agents:C("agents",y.agents),plugins:C("plugins",y.plugins)}},wt=async y=>{try{return await y()??{ok:!1}}catch(C){return{ok:!1,error:String(C?.message||C)}}},gt=()=>{me="open",Le=Date.now(),he=0};async function Mt(){te=null;let y=Ro();if(f.kind!=="app"||!y||y.dir){a();return}let C=y.key,P=await n(`/files/${encodeURIComponent(C)}/versions`);x===C&&(te=P.ok&&Array.isArray(P.data)?P.data.map(j=>({versionNumber:j.versionNumber,fileSize:Number(j.fileSize)||0,createdAt:uo(j.createdAt)})):[],a())}let Ro=()=>x?(k??[]).find(y=>y.key===x)??null:null;async function pn(){await Xe(),mt(),a()}async function ot(){let y=++I;u=!0,p=null,a();let C=await se().authStatus?.().catch(()=>null);if(y!==I)return;if(C&&!C.loggedIn){g="out",m=null,u=!1,a();return}let{snap:P,signedOut:j}=await Id(n);if(y===I){if(u=!1,j){g="out",m=null,a();return}g="in",!P.ledger&&m?.ledger&&(P.ledger=m.ledger,P.ledgerStale=!0),m=P,b.clear(),p=!P.ledger&&!P.sync&&!P.ama&&!P.apps&&!P.exports&&!P.trash?s("penzor.unreachable"):null,!co(f)&&f.kind!=="exports"&&f.kind!=="trash"&&f.kind!=="source"&&((f.kind==="content"?P.contentDevices!=null:f.kind==="sync"?P.sync?.vaults.some(ie=>ie.vault===f.vault):f.kind==="ama"?P.ama?.some(ie=>ie.id===f.vaultId):f.appId===ln?P.apps:P.apps?.apps.some(ie=>ie.appId===f.appId&&ie.files>0))||(f={kind:"overview"},v="",w=[],Et())),await pn()}}async function Lo(y,C={},P=f){let j=P.kind==="content"?{path:`/remotesync/content/${encodeURIComponent(P.namespace)}/nodes/${encodeURIComponent(y.ref.id)}/content`,mode:"bytes"}:P.kind==="sync"?{path:`/remotesync/vaults/${encodeURIComponent(P.vault)}/file?path=${encodeURIComponent(y.key)}`,mode:"signed"}:P.kind==="ama"?y.ref.kind==="binary"?{path:`/amadeus/vaults/${encodeURIComponent(P.vaultId)}/asset?ref=${encodeURIComponent(y.key)}`,mode:"bytes"}:{path:`/amadeus/vaults/${encodeURIComponent(P.vaultId)}/file?path=${encodeURIComponent(y.key)}`,mode:"text"}:P.kind==="app"?{path:`/files/${encodeURIComponent(y.key)}/content`,mode:"bytes"}:P.kind==="source"&&y.ref?.downloadPath?{path:y.ref.downloadPath,mode:"bytes"}:P.kind==="exports"?{path:`/exports/${encodeURIComponent(y.key)}/url`,mode:"signed"}:null;if(!j)return;let $=await it("penzor:download",{...j,name:zh(y.name),size:y.size,...C});if(!$?.ok){d($?.error||"download");return}gt(),We(0),a()}let Do=()=>{co(f)?e.closeView?.(Sn.info,{collapse:!0}):e.openView?.(Sn.info,{location:"right"})},qt={ctx:e,locale:i,t:s,b:l,subscribe(y){return r.add(y),()=>{r.delete(y)}},auth:()=>g,loading:()=>u,error:()=>p,snap:()=>m,loc:()=>f,path:()=>v,appStack:()=>w,rows:xt,rowsError:()=>z,selected:Ro,sort:()=>M,query:()=>L,menu:()=>H,side:()=>V,confirmEmpty:()=>ee,versions:()=>te,moveFolders:()=>S,thisDevice:()=>ne,setDevice(y){ne=y,a()},appLabel:Ht,canManageRow:kt,canEmptyTrash:D,canManage:Je,canWrite:nt,canMulti:re,folderId:we,selection:Qe,isSelected:y=>T.has(y),selectAll(){if(!re())return;let y=xt()??[];T=new Set(y.map(C=>C.key)),!x&&y[0]&&(x=y[0].key),H=null,a()},newFolder:()=>K,startNewFolder(){if(!nt())return;let y=s("penzor.newFolder.default"),C=new Set((k??[]).filter(j=>j.dir).map(j=>j.name)),P=y;for(let j=1;C.has(P)&&j<1e3;j++)P=`${y} (${j})`;K=P,H=null,a()},cancelNewFolder(){K!=null&&(K=null,a())},async createFolder(y){let C=y.trim();if(K=null,!C||!nt()){a();return}a();let P=await n("/files",{method:"POST",body:{type:"directory",parentId:we(),name:C},projectSource:ln});if(!P.ok){P.status===409?c(s("penzor.toast.folderExists",{name:C})):d(P);return}P.data?.id&&(x=P.data.id,T=new Set([P.data.id]),R=P.data.id),await pn()},transfers:()=>X,notices:()=>Y,async acknowledgeStorageNotice(){let y=m?.ledger?.rollout;if(!y||y.acknowledgedAt||m?.ledgerStale)return;let C=await n("/storage/notice/ack",{method:"POST",body:{revision:y.revision}});if(!C.ok){d(C);return}await ot()},txRows(){if(!nt())return[];let y=we();return X.filter(C=>C.kind==="up"&&C.projectSource===ln&&C.parentId===y&&(ta(C)||C.state==="paused")).map(C=>({key:`tx:${C.id}`,id:C.id,name:C.name,size:C.size,done:C.done,state:C.state}))},card:()=>me,setCard(y){me=y,Le=Date.now(),y!=="hidden"&&We(0),a()},holdCard(y){je=y,Le=Date.now(),y||We()},async upload(y,C){if(!nt())return;let P=O,j=C?.id??we(),$=C?[...w,C]:[...w],ie=await y;if(P!==O||Ct||!ie.length)return;on.set(j,$);let Se=await it("penzor:upload",{...typeof ie[0]=="string"?{paths:ie}:{files:ie},parentId:j,projectSource:ln});if(!(P!==O||Ct)){if(Se?.ok){gt(),We(0),a();return}if(Se?.error==="quota"){Y=[...Y,{id:String(Date.now()),kind:"quota",short:Number(Se.short)||0}],gt(),a();return}if(Se?.error==="too_many"){c(s("penzor.err.too_many",{n:Number(Se.max)||2e3}));return}Se?.error!=="no_files"&&d(Se?.error==="account_changed"?s("penzor.err.account_changed"):Se?.error==="not_signed_in"?s("penzor.err.not_signed_in"):Se?.error||"upload")}},async txOp(y,C){await it("penzor:transfer",{id:y,op:C}),Le=Date.now(),await Pt()},async txAll(y){let C=y==="pause"?P=>ta(P):y==="resume"?P=>P.state==="paused":P=>P.state==="failed"||P.state==="canceled";for(let P of X.filter(C))await it("penzor:transfer",{id:P.id,op:y});y==="retry"&&(Y=[]),Le=Date.now(),await Pt()},async txClear(y){await it("penzor:transfers:clear",{which:y}),y==="all"&&(Y=[]),await Pt()},dismissNotice(y){Y=Y.filter(C=>C.id!==y),!X.length&&!Y.length&&(me="hidden"),a()},locate(y){if(y.kind==="down"){y.localPath&&se().revealHostPath?.(y.localPath);return}let C=on.get(y.targetId??"")??[];f={kind:"app",appId:ln},w=C,v="",L="",V={kind:"view"},H=null,Et(),y.fileId&&y.parentId===y.targetId&&(x=y.fileId,T=new Set([y.fileId])),a(),e.app?.openSpace?.(cn).then(()=>{e.openView?.(Sn.main),Do()}),pn()},async downloadMany(y){let C=y.filter(Z=>!Z.dir);if(C.length<=1){C[0]&&await qt.download(C[0]);return}let P=new Date,j=s("penzor.download.folder",{date:`${P.getFullYear()}-${String(P.getMonth()+1).padStart(2,"0")}-${String(P.getDate()).padStart(2,"0")}`}),$=`${Date.now()}`,ie=f,Se=O;for(let Z of C){if(O!==Se)break;await Lo(Z,{subdir:j,batch:$},ie)}},async trashMany(y){if(f.kind!=="app"||!Je()||!y.length)return;if(y.length===1){await qt.trash(y[0]);return}let C=await n("/files/batch/delete",{method:"POST",body:{ids:y.map(j=>j.key)},projectSource:f.appId});if(!C.ok){d(C);return}let P=(C.data?.results??[]).filter(j=>j.success===!1).length;c(P?s("penzor.toast.batchPartial",{n:P}):s("penzor.toast.trashedN",{n:y.length})),Et(),await ot()},async moveMany(y,C){if(f.kind!=="app"||!Je()||!y.length)return;V={kind:"view"};let P=y.map(ie=>ie.key).filter(ie=>ie!==C.id),j=await n("/files/batch/move",{method:"POST",body:{ids:P,parentId:C.id},projectSource:f.appId});if(!j.ok){d(j),a();return}let $=(j.data?.results??[]).filter(ie=>ie.success===!1).length;c($?s("penzor.toast.batchPartial",{n:$}):s("penzor.toast.movedN",{n:P.length,name:C.name})),Et(),await ot()},setVisible(y){Te=y},picker:{},refresh:ot,go(y){let C=Rd(y);if(!C)return;let P=lo(C)===lo(f);f=C,P||(v="",w=[],Et(),L="",V={kind:"view"},ee=!1),H=null,a(),e.openView?.(Sn.main),Do(),pn()},openDir(y){if(!(!y.dir||f.kind==="exports"||f.kind==="trash")){if(f.kind==="source"&&y.ref?.go){qt.go(y.ref.go);return}f.kind==="app"?w=[...w,{id:y.key,name:y.name}]:v=y.key,Et(),L="",V={kind:"view"},pn()}},up(y){if(f.kind==="app")w=w.slice(0,y??Math.max(0,w.length-1));else{let C=v?v.split("/"):[];v=C.slice(0,y??Math.max(0,C.length-1)).join("/")}Et(),V={kind:"view"},pn()},select(y,C){let P=xt()??[];if(y&&C?.range&&re()&&R&&P.some(j=>j.key===R)){let j=P.findIndex(ie=>ie.key===R),$=P.findIndex(ie=>ie.key===y.key);T=new Set(P.slice(Math.min(j,$),Math.max(j,$)+1).map(ie=>ie.key)),x=y.key}else y&&C?.toggle&&re()?(T.has(y.key)&&T.size>1?(T.delete(y.key),x===y.key&&(x=[...T].pop()??null)):(T.add(y.key),x=y.key),R=y.key):(x=y?.key??null,T=new Set(x?[x]:[]),R=x);K=null,V={kind:"view"},H=null,y&&!co(f)&&e.openView?.(Sn.info,{location:"right"}),Mt(),a()},setSort(y){M=y,a()},setQuery(y){L=y,a()},openMenu(y,C,P){P&&!T.has(P.key)&&(x=P.key,T=new Set([P.key]),R=P.key,Mt()),H={x:y,y:C,row:P},V={kind:"view"},a()},closeMenu(){H&&(H=null,a())},setSide(y){V=y,H=null,y.kind==="move"&&(S=null,qt.moveBrowse(y.at)),e.openView?.(Sn.info,{location:"right"}),a()},setConfirmEmpty(y){ee=y,a()},async download(y){y.dir||(H=null,await Lo(y))},async trash(y){if(f.kind!=="app"||!Je())return;let C=xt()??[],P=C.findIndex(ie=>ie.key===y.key),j=await n(`/files/${encodeURIComponent(y.key)}`,{method:"DELETE",projectSource:f.appId});if(!j.ok){d(j);return}c(s("penzor.toast.trashed",{name:y.name}));let $=C[P+1]??C[P-1];x=$&&$.key!==y.key?$.key:null,H=null,await ot()},async restore(y){if(!m||f.kind!=="trash"||!kt(y))return;let C=await n(`/trash/${encodeURIComponent(y.key)}/restore`,{method:"POST",body:{}});if(!C.ok){d(C);return}c(s("penzor.toast.restored",{name:y.name})),x=null,await ot()},async purge(y){if(!m||f.kind!=="trash"||!kt(y))return;let C=await n(`/trash/${encodeURIComponent(y.key)}`,{method:"DELETE"});if(V={kind:"view"},!C.ok){d(C),a();return}c(s("penzor.toast.purged",{name:y.name})),x=null,await ot()},async emptyTrash(){if(!m||!D())return;let y=await n("/trash?all=1",{method:"DELETE"});if(ee=!1,!y.ok){d(y),a();return}let C=(y.data?.results??[]).filter(P=>P.success===!1).length;c(C?s("penzor.toast.emptyPartial",{n:C}):s("penzor.toast.emptied")),x=null,await ot()},async rename(y,C){let P=C.trim();if(V={kind:"view"},!P||P===y.name){a();return}let j=f.kind==="exports"?await n(`/exports/${encodeURIComponent(y.key)}/rename`,{method:"PUT",body:{newFileName:P}}):f.kind==="app"&&Je()?await n(`/files/${encodeURIComponent(y.key)}/rename`,{method:"PATCH",body:{name:P},projectSource:f.appId}):null;if(j){if(!j.ok){d(j),a();return}c(s("penzor.toast.renamed",{name:P})),await ot()}},moveBrowse(y){if(f.kind!=="app"||!Je())return;V={kind:"move",at:y},S=null,a();let C=y[y.length-1]?.id,P=f.appId;n(`/files${C?`?parentId=${encodeURIComponent(C)}`:""}`,{projectSource:P}).then(j=>{V.kind!=="move"||V.at!==y||(S=j.ok?j.data.filter($=>$.fileType==="directory").map($=>({id:$.id,name:$.name})):[],a())})},async moveTo(y,C){if(f.kind!=="app"||!Je())return;if(V={kind:"view"},C.id===y.key){a();return}let P=await n(`/files/${encodeURIComponent(y.key)}/move`,{method:"PATCH",body:{parentId:C.id},projectSource:f.appId});if(!P.ok){d(P),a();return}c(s("penzor.toast.moved",{name:C.name})),x=null,await ot()},async restoreVersion(y,C){if(!Je())return;let P=await n(`/files/${encodeURIComponent(y.key)}/restore/${C.versionNumber}`,{method:"POST",body:{}});if(!P.ok){d(P);return}c(s("penzor.toast.versionRestored",{n:C.versionNumber})),await ot(),Mt()},async deleteExport(y){if(!m)return;let C=await n(`/exports/${encodeURIComponent(y.key)}`,{method:"DELETE"});if(V={kind:"view"},!C.ok){d(C),a();return}c(s("penzor.toast.purged",{name:y.name})),x=null,await ot()},signIn(){se().forsionLogin?.()},openSync(){e.app?.openSettings?.("sync/s-remote")},async focusVault(y){await e.app?.openSpace?.(cn),m||await ot(),qt.go(`sync:${y}`)},hasSync:()=>!!lt,content:()=>qn,syncState:Fe,syncBusy:y=>vt.has(y),async setSync(y,C){if(!lt||vt.has(y))return;vt.add(y),At.set(y,C),a();let P=await wt(()=>lt.set(y,C));vt.delete(y),At.delete(y),!Ct&&(P.ok||d(P.error||"sync"),un())},async resolveNotes(y){if(!lt||vt.has("resolve"))return;vt.add("resolve"),a();let C=await wt(()=>lt.resolveNotes(y));vt.delete("resolve"),ve=!1,!Ct&&(C.ok||d(C.error||"sync"),un())},confirmCloud:()=>ve,setConfirmCloud(y){ve=y,a()},enter(){},dispose(){Ct=!0,clearInterval(Vn),ft&&clearTimeout(ft),bt&&clearTimeout(bt),e.app?.setSpaceProgress?.(cn,null),yt&&e.app?.setSpaceDot?.(cn,!1),r.clear(),No?.(),dr?.(),aa?.()}},qn=null,It="",fn=async()=>{let y=se().cloudInvoke;if(!y){clearInterval(Vn);return}let C=await y($t.get).catch($=>({ok:!1,error:String($)}));if(Ct)return;!C?.ok&&/unavailable|not a Forsion Extend channel/i.test(C?.error??"")&&clearInterval(Vn);let P=C?.ok&&C.value?.available?C.value:null,j=P?JSON.stringify([wn(P),P.config.enabled,P.deviceId,P.devices]):"";qn=P,j!==It&&(It=j,a())},Vn=setInterval(()=>void fn(),5e3);fn();let No=e.subscribeLocale?.(()=>a()),aa=lt?.subscribe(un);En(),Pt();let dr=se().onAuthChanged?.(()=>{++E,++I,++O,m=null,k=null,z=null,b.clear(),Et(),H=null,V={kind:"view"},ee=!1,te=null,S=null,f={kind:"overview"},v="",w=[],L="",on.clear(),Y=[],X=[],me="hidden",Tt=null,he=0,bt&&(clearTimeout(bt),bt=null),e.app?.setSpaceProgress?.(cn,null),ve=!1,At.clear(),a(),ot()});return qt}var Vd=e=>e.kind==="content"?"penzor.source.readonly":e.kind==="sync"?"penzor.side.readonlySync":e.kind==="ama"?"penzor.side.readonlyAma":e.kind==="source"?e.source==="plugins"?"penzor.source.pluginNote":"penzor.source.readonly":null;function _h(e,t){for(var n in t)e[n]=t[n];return e}function jd(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var r in t)if(r!=="__source"&&e[r]!==t[r])return!0;return!1}function Wd(e,t){this.props=e,this.context=t}(Wd.prototype=new Yt).isPureReactComponent=!0,Wd.prototype.shouldComponentUpdate=function(e,t){return jd(this.props,e)||jd(this.state,t)};var Gd=fe.__b;fe.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Gd&&Gd(e)};var Fk=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;var Ch=fe.__e;fe.__e=function(e,t,n,r){if(e.then){for(var a,i=t;i=i.__;)if((a=i.__c)&&a.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k||[]),a.__c(e,t)}Ch(e,t,n,r)};var Kd=fe.unmount;function eu(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(r){typeof r.__c=="function"&&r.__c()}),e.__c.__H=null),(e=_h({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(r){return eu(r,t,n)})),e}function tu(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(r){return tu(r,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function Ui(){this.__u=0,this.o=null,this.__b=null}function nu(e){var t=e.__&&e.__.__c;return t&&t.__a&&t.__a(e)}function na(){this.i=null,this.l=null}fe.unmount=function(e){var t=e.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Kd&&Kd(e)},(Ui.prototype=new Yt).__c=function(e,t){var n=t.__c,r=this;r.o==null&&(r.o=[]),r.o.push(n);var a=nu(r.__v),i=!1,s=function(){i||r.__z||(i=!0,n.__R=null,a?a(c):c())};n.__R=s;var l=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var d=r.state.__a;r.__v.__k[0]=tu(d,d.__c.__P,d.__c.__O)}var g;for(r.setState({__a:r.__b=null});g=r.o.pop();)g.__P=l,g.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(s,s)},Ui.prototype.componentWillUnmount=function(){this.o=[]},Ui.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=eu(this.__b,n,r.__O=r.__P)}this.__b=null}var a=t.__a&&Zn(N,null,e.fallback);return a&&(a.__u&=-33),[Zn(N,null,t.__a?null:e.children),a]};var Xd=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};function Th(e){return this.getChildContext=function(){return e.context},e.children}function Ah(e){var t=this,n=e.h;if(t.componentWillUnmount=function(){He(null,t.v),t.v=null,t.h=null},t.h&&t.h!==n&&t.componentWillUnmount(),!t.v){for(var r=t.__v;r!==null&&!r.__m&&r.__!==null;)r=r.__;t.h=n,t.v={nodeType:1,parentNode:n,childNodes:[],__k:{__m:r.__m},contains:function(){return!0},namespaceURI:n.namespaceURI,insertBefore:function(a,i){this.childNodes.push(a),t.h.insertBefore(a,i)},removeChild:function(a){this.childNodes.splice(this.childNodes.indexOf(a)>>>1,1),t.h.removeChild(a)}}}He(Zn(Th,{context:t.context},e.__v),t.v)}function ou(e,t){var n=Zn(Ah,{__v:e,h:t});return n.containerInfo=t,n}(na.prototype=new Yt).__a=function(e){var t=this,n=nu(t.__v),r=t.l.get(e);return r[0]++,function(a){var i=function(){t.props.revealOrder?(r.push(a),Xd(t,e,r)):a()};n?n(i):i()}},na.prototype.render=function(e){this.i=null,this.l=new Map;var t=Xo(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},na.prototype.componentDidUpdate=na.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){Xd(e,n,t)})};var Eh=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,Ph=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Mh=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Ih=/[A-Z0-9]/g,Rh=typeof document<"u",Lh=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};Yt.prototype.isReactComponent=!0,["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(Yt.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Jd=fe.event;fe.event=function(e){return Jd&&(e=Jd(e)),e.persist=function(){},e.isPropagationStopped=function(){return this.cancelBubble},e.isDefaultPrevented=function(){return this.defaultPrevented},e.nativeEvent=e};var ru,Dh={configurable:!0,get:function(){return this.class}},Yd=fe.vnode;fe.vnode=function(e){typeof e.type=="string"&&(function(t){var n=t.props,r=t.type,a={},i=r.indexOf("-")==-1;for(var s in n){var l=n[s];if(!(s==="value"&&"defaultValue"in n&&l==null||Rh&&s==="children"&&r==="noscript"||s==="class"||s==="className")){var c=s.toLowerCase();s==="defaultValue"&&"value"in n&&n.value==null?s="value":s==="download"&&l===!0?l="":c==="translate"&&l==="no"?l=!1:c[0]==="o"&&c[1]==="n"?c==="ondoubleclick"?s="ondblclick":c!=="onchange"||r!=="input"&&r!=="textarea"||Lh(n.type)?c==="onfocus"?s="onfocusin":c==="onblur"?s="onfocusout":Mh.test(s)&&(s=c):c=s="oninput":i&&Ph.test(s)?s=s.replace(Ih,"-$&").toLowerCase():l===null&&(l=void 0),c==="oninput"&&a[s=c]&&(s="oninputCapture"),a[s]=l}}r=="select"&&(a.multiple&&Array.isArray(a.value)&&(a.value=Xo(n.children).forEach(function(d){d.props.selected=a.value.indexOf(d.props.value)!=-1})),a.defaultValue!=null&&(a.value=Xo(n.children).forEach(function(d){d.props.selected=a.multiple?a.defaultValue.indexOf(d.props.value)!=-1:a.defaultValue==d.props.value}))),n.class&&!n.className?(a.class=n.class,Object.defineProperty(a,"className",Dh)):n.className&&(a.class=a.className=n.className),t.props=a})(e),e.$$typeof=Eh,Yd&&Yd(e)};var Zd=fe.__r;fe.__r=function(e){Zd&&Zd(e),ru=e.__c};var Qd=fe.diffed;fe.diffed=function(e){Qd&&Qd(e);var t=e.props,n=e.__e;n!=null&&e.type==="textarea"&&"value"in t&&t.value!==n.value&&(n.value=t.value==null?"":t.value),ru=null};var au=`
|
|
1185
|
+
${Zd(e,t)}`,d=await s({prompt:c,send:!1});d?.ok?r(""):i(d?.error||e.t("guide.ask.unavailable"))};return o("div",{class:"fxg-pane",children:[o("p",{class:"fxg-muted",children:e.t("guide.ask.hint",{chapter:e.title(t)})}),o("textarea",{class:"fxg-input",rows:4,value:n,placeholder:e.t("guide.ask.placeholder"),onInput:c=>r(c.target.value)}),o("button",{type:"button",class:"btn sm",disabled:!s,onClick:()=>void l(),children:e.t("guide.ask.send")}),(!s||a)&&o("p",{class:"fxg-muted",children:a||e.t("guide.ask.unavailable")})]})}function Qd({g:e}){la(e);let[t,n]=C("progress");return o(ca,{g:e,kind:"side",children:[o("div",{class:"fxg-tabs",role:"tablist",children:["progress","ask"].map(r=>o("button",{type:"button",role:"tab","aria-selected":t===r,class:t===r?"is-on":"",onClick:()=>n(r),children:e.t(r==="progress"?"guide.progress":"guide.askTangu")},r))}),t==="progress"?o(iv,{g:e}):o(sv,{g:e})]})}function eu({g:e}){la(e);let t=e.companionChapter(),n=Mo(t,e.env())==="done",r=re(n);return J(()=>{if(n&&!r.current){let a=window.setTimeout(()=>e.ctx.closeView?.(an.companion),1500);return()=>window.clearTimeout(a)}r.current=n},[n]),o(ca,{g:e,kind:"companion",children:o("div",{class:"fxg-pane",children:[o("div",{class:"fxg-companion-head",children:[o("span",{class:"fxg-sub",children:e.t("guide.title")}),e.ctx.closeView&&o("button",{type:"button",class:"fxg-icon-btn","aria-label":e.t("guide.companion.close"),onClick:()=>e.ctx.closeView?.(an.companion),children:"\xD7"})]}),o("div",{class:"fxg-h",children:e.title(t)}),o("div",{class:"fxg-sub",children:e.t("guide.tasks")}),o(Xi,{g:e,chapter:t}),o("button",{type:"button",class:"fx-link fxg-back",onClick:()=>void e.openGuide(t.id),children:e.t("guide.companion.back")})]})})}function tu({g:e,letter:t}){la(e);let n=t?t.kind==="level"?t.level:"new":null,r=n&&(n==="new"||ia(n,e.env()))?rn(n):[];return o(ca,{g:e,kind:"letter",children:[r.map(a=>o("div",{class:"fxg-letter-chapter",children:[o("button",{type:"button",class:"fxg-letter-title",onClick:()=>void e.openGuide(a.id),children:e.title(a)}),o(Xi,{g:e,chapter:a})]},a.id)),o("button",{type:"button",class:"btn sm",onClick:()=>void e.openGuide(r[0]?.id??jn("welcome")?.id),children:e.t("guide.letter.open")})]})}function dv(e){return!!e&&typeof e.registerView=="function"&&typeof e.registerListSource=="function"&&typeof e.openView=="function"&&typeof e.achievements?.count=="function"&&typeof e.achievements.subscribe=="function"&&typeof e.app?.openSpace=="function"&&typeof e.ui?.mountMarkdownEditor=="function"}function nu(e,t=window){if(!dv(e)||t.tangu?.unitPage)return null;let n=t.tangu,r=Wd(e,{desktop:typeof n?.appVersion=="function"&&!n.mobile,appVersion:typeof n?.appVersion=="function"?n.appVersion().catch(()=>null):Promise.resolve(null)}),a=i=>s=>(Me(o(i,{g:r}),s),()=>{Me(null,s)});return e.registerView({id:an.reader,title:r.t("guide.title"),icon:"page",workspaceSource:Gi,mount:a(Yd)}),e.registerView({id:an.side,title:r.t("guide.progress"),icon:"list-view",mount:a(Qd)}),e.registerView({id:an.companion,title:r.t("guide.title"),icon:"todo",mount:a(eu)}),e.registerListSource({id:Gi,title:r.t("guide.title"),search:!0,items:i=>{let s=r.env(),l=i?.query?.trim().toLowerCase()??"",c=r.justUnlocked();return sa(r).flatMap(({level:d,chapters:g})=>g.map(u=>{let p=Mo(u,s);return{key:u.id,title:r.title(u),group:r.levelName(d),icon:p==="done"?"circle-check":p==="locked"?"lock":"circle",hint:d===c&&p!=="locked"?r.t("guide.justUnlocked"):void 0}})).filter(d=>!l||d.title.toLowerCase().includes(l))},subscribe:i=>r.subscribe(i),activeKey:()=>r.selected().id,open:i=>{r.select(i.key),e.openView(an.reader)}}),e.registerCommand?.({id:"open-guide",title:()=>r.t("guide.cmd.open"),keywords:"guide manual help tutorial levels \u4F7F\u7528\u6307\u5357 \u8BF4\u660E\u4E66 \u6559\u7A0B \u5E2E\u52A9 \u7B49\u7EA7 \u4EFB\u52A1",run:()=>{r.openGuide()}}),e.inbox?.registerCard({sender:()=>r.t("guide.title"),mount(i,s){return Me(o(tu,{g:r,letter:r.letter(s.id)}),i),()=>{Me(null,i)}}}),r}var uv=["uploads","ama","sync","agents","profile","apps","plugins","exports"],fr={uploads:"penzor.uploads",ama:"penzor.ledger.ama",sync:"penzor.ledger.sync",agents:"penzor.source.agents",profile:"penzor.source.profile",apps:"penzor.ledger.apps",plugins:"penzor.source.plugins",exports:"penzor.ledger.exports"},ou=e=>e==="uploads"?"app:penzor":e==="exports"?"exports":`source:${e}`,Gn=e=>Number.isFinite(Number(e))?Number(e):0,pn="penzor";var au=500;async function pv(e,t){let n=Math.min(20,Gn(t.totalPages));if(n<=1)return t.files;let r=await Promise.all(Array.from({length:n-1},(a,i)=>e(`/exports/list?pageSize=${au}&sortBy=date&sortOrder=desc&page=${i+2}`)));return[...t.files,...r.flatMap(a=>a.ok&&Array.isArray(a.data?.files)?a.data.files:[])]}async function iu(e){let[t,n,r,a,i,s,l,c,d]=await Promise.all([e("/remotesync/vaults"),e("/amadeus/vaults"),e("/storage/quota"),e("/storage/files-by-app"),e(`/exports/list?pageSize=${au}&sortBy=date&sortOrder=desc`),e("/trash?all=1"),e("/storage/ledger"),e("/storage/source-trash/ama"),e("/remotesync/content/devices")]),u=[t,n,r,a,i,s].every(m=>!m.ok&&m.status===401);return{snap:{contentDevices:d.ok&&Array.isArray(d.data?.devices)?d.data.devices:null,amaTrash:c.ok&&Array.isArray(c.data?.entries)?c.data.entries:null,ledger:l.ok&&l.data?.schemaVersion===1?l.data:null,sync:t.ok&&Array.isArray(t.data?.vaults)?{...t.data,vaults:t.data.vaults.filter(m=>m.vault!=="forsion-content")}:null,ama:n.ok&&Array.isArray(n.data?.vaults)?n.data.vaults.filter(m=>(m.role??"owner")==="owner").map(m=>({id:m.id,name:m.name,sizeBytes:Gn(m.sizeBytes)})):null,apps:r.ok&&a.ok&&Array.isArray(a.data?.apps)?{used:Gn(r.data?.used),quota:Gn(r.data?.quota),apps:a.data.apps,largest:a.data.largest??[]}:null,exports:i.ok&&Array.isArray(i.data?.files)?{files:await pv(e,i.data),total:Gn(i.data.total),totalBytes:Gn(i.data.totalBytes)}:null,trash:s.ok&&Array.isArray(s.data)?s.data:null,at:Date.now()},signedOut:u}}var fv={"ai-studio":"AI Studio","photo-studio":"Photo Studio",notebase:"Notebase",chat:"Forsion Chat",connect:"Forsion Connect","video-studio":"Video Studio",bluebird:"Bluebird",cnti:"CNTI"},Ji=e=>e?fv[e]??e.split(/[-_]/).filter(Boolean).map(t=>t[0].toUpperCase()+t.slice(1)).join(" "):"\u2014",mo=e=>e.kind==="content"?`content:${e.namespace}`:e.kind==="source"?`source:${e.source}`:e.kind==="sync"?`sync:${e.vault}`:e.kind==="ama"?`ama:${e.vaultId}`:e.kind==="app"?`app:${e.appId}`:e.kind==="overview"?"ov":e.kind,go=e=>e.kind==="overview"||e.kind==="sync-home";function su(e){if(e==="ov")return{kind:"overview"};if(e==="sync-home"||e==="exports"||e==="trash")return{kind:e};let t=e.indexOf(":"),n=t<0?e:e.slice(0,t),r=t<0?"":e.slice(t+1);return r?n==="source"&&uv.includes(r)?{kind:"source",source:r}:n==="content"&&/^(default|device-[A-Za-z0-9_-]{1,64})$/.test(r)?{kind:"content",namespace:r}:n==="sync"?{kind:"sync",vault:r}:n==="ama"?{kind:"ama",vaultId:r}:n==="app"?{kind:"app",appId:r}:null:null}var Ki=(e,t)=>t?t.config.enabled||t.config.revision>0:!!e?.contentDevices?.length;function lu(e,t,n,r=null){let a=m=>be(n,fr[m]),i=m=>pr(m,n),s=m=>{let f=e?.ledger?.sources.find(v=>v.id===m);return f?.status==="ready"?f.liveBytes+f.trashBytes:null},l=m=>{let f=s(m);return f==null?"\u2014":`${e?.ledgerStale?"~ ":""}${i(f)}`},c=Ki(e,r),d=[{key:"drive-root",title:t.drive,kind:"folder",icon:t.driveIcon},{key:"ov",title:t.overview,parent:"drive-root",icon:"layout"},{key:ou("uploads"),title:t.files,parent:"drive-root",icon:"folder",hint:l("uploads")}];if(c&&e?.contentDevices){d.push({key:"synced",title:t.synced,kind:"folder",icon:"cloud"},{key:"content:default",title:t.all,parent:"synced",icon:"cloud"});let m=r?.deviceId;m&&d.push({key:`content:device-${m}`,title:t.thisBackup,parent:"synced",icon:"lock"});for(let f of e.contentDevices.filter(v=>v.id!==m))d.push({key:`content:device-${f.id}`,title:f.name||`Forsion-${f.id.slice(0,8)}`,parent:"synced",icon:"link"})}let g=["ama","apps","plugins","exports",...c?[]:["agents","profile"]],u=g.reduce((m,f)=>m==null||s(f)==null?null:m+s(f),0);d.push({key:"by-app",title:t.byApp,kind:"folder",icon:"package",hint:u==null?"\u2014":i(u)});let p=(m,f,v=a(m))=>{let k=m==="ama"||m==="sync"||m==="apps",z=ou(m);if(d.push({key:k?z+":group":z,parent:f,title:v,icon:m==="sync"?"clock":"folder",...k?{kind:"folder"}:{},hint:l(m)}),k&&d.push({key:`source:${m}`,parent:z+":group",title:t.overview,icon:"layout"}),m==="sync")for(let x of e?.sync?.vaults??[])d.push({key:`sync:${x.vault}`,parent:z+":group",title:x.vault,icon:"database",hint:i(x.bytes)});if(m==="ama")for(let x of e?.ama??[])d.push({key:`ama:${x.id}`,parent:z+":group",title:x.name,icon:"page",hint:i(x.sizeBytes)});if(m==="apps")for(let x of e?.apps?.apps.filter(w=>w.appId!==pn&&w.files>0)??[])d.push({key:`app:${x.appId}`,parent:z+":group",title:Ji(x.appId),icon:"archive",hint:i(x.bytes)})};for(let m of g)p(m,"by-app");return p("sync","",c?t.legacy:a("sync")),d.push({key:"trash",title:t.trash,icon:"trash",hint:e?.trash?t.items(Yi(e.trash).length):"\u2014"}),d.map(m=>m.parent===""?(({parent:f,...v})=>v)(m):m)}function Yi(e){let t=new Map(e.map(a=>[a.id,a])),n=a=>{let i=a;for(let s=0;s<64&&i.parentId&&t.has(i.parentId);s++)i=t.get(i.parentId);return i},r=new Map;for(let a of e){let i=n(a),s=r.get(i.id)??{inner:0,innerBytes:0};i.id!==a.id&&s.inner++,s.innerBytes+=Gn(a.fileSize),r.set(i.id,s)}return e.filter(a=>!(a.parentId&&t.has(a.parentId))).map(a=>({...a,...r.get(a.id)}))}function Zi(e,t){let n=t?`${t}/`:"",r=new Map,a=[];for(let i of e){if(n&&!i.path.startsWith(n))continue;let s=i.path.slice(n.length),l=s.indexOf("/");if(l<0){a.push({key:i.path,name:s,dir:!1,size:i.size,mtime:i.mtime,col4:i.who??null,ref:i.ref});continue}let c=s.slice(0,l),d=n+c,g=r.get(d)??{key:d,name:c,dir:!0,size:0,mtime:null,count:0};g.size+=i.size,g.count=(g.count??0)+1,i.mtime!=null&&(g.mtime==null||i.mtime>g.mtime)&&(g.mtime=i.mtime),r.set(d,g)}return[...ua([...r.values()]),...ua(a)]}var ua=e=>e.sort((t,n)=>(n.mtime??-1)-(t.mtime??-1)||t.name.localeCompare(n.name)),cu=e=>[...ua(e.filter(t=>t.dir)),...ua(e.filter(t=>!t.dir))];function pr(e,t){let n=Math.max(0,Gn(e));if(n<1024)return`${n} B`;if(n<1024*1024)return`${Math.round(n/1024)} KB`;if(n<1024**3){let r=n/1048576;return`${r<100?Number(r.toFixed(1)):Math.round(r)} MB`}return`${Number((n/1024**3).toFixed(2))} GB`}function Qi(e,t,n){let r=pr(e,n),a=pr(t,n),i=a.slice(a.indexOf(" "));return`${r.endsWith(i)?r.slice(0,-i.length):r} / ${a}`}var mv=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ru=e=>String(e).padStart(2,"0");function sn(e,t,n=Date.now()){if(e==null||!Number.isFinite(e))return"\u2014";let r=new Date(e),a=new Date(n);a.setHours(0,0,0,0);let i=new Date(r);i.setHours(0,0,0,0);let s=Math.round((a.getTime()-i.getTime())/864e5),l=`${ru(r.getHours())}:${ru(r.getMinutes())}`;if(s===0)return t==="zh"?`\u4ECA\u5929 ${l}`:`Today ${l}`;if(s===1)return t==="zh"?`\u6628\u5929 ${l}`:`Yesterday ${l}`;let c=r.getFullYear()===a.getFullYear();return t==="zh"?`${c?"":`${r.getFullYear()} \u5E74 `}${r.getMonth()+1} \u6708 ${r.getDate()} \u65E5`:`${mv[r.getMonth()]} ${r.getDate()}${c?"":`, ${r.getFullYear()}`}`}function ho(e){if(e==null||e==="")return null;if(typeof e=="number")return e<1e12?e*1e3:e;let t=Number(e);if(Number.isFinite(t))return t<1e12?t*1e3:t;let n=Date.parse(String(e));return Number.isNaN(n)?null:n}var du=e=>[e.notes.on&&!e.notes.pending,e.agents.on,e.plugins.on].filter(Boolean).length;function es(e){let t=e.notes.last;return!!t&&t.ok===!1&&!(t.errors.length>0&&t.errors.every(n=>n.includes("already-running")))}var pa=e=>!!e&&e.signedIn&&(!!e.notes.pending||e.notes.on&&es(e)),gv=e=>/"code"\s*:\s*"QUOTA"/.test(e),uu=(e,t)=>e.notes.on&&!e.notes.pending&&e.notes.backend==="penzor"&&(t>0&&(e.notes.localBytes??0)>t||!!e.notes.last?.errors.some(gv));function mr(e){if(!e?.notes.running)return null;let t=e.notes.progress;return t&&t.total>0?Math.min(1,Math.max(0,t.done/t.total)):0}function pu(e,t){if(!e||!e.signedIn)return;let n=mr(e);if(n!=null)return n>0?be(t,"penzor.sync.running",{pct:Math.round(n*100)}):be(t,"penzor.sync.runningPlain");if(e.notes.pending)return be(t,"penzor.sync.waiting");let r=du(e);return r?be(t,"penzor.sync.onN",{n:r}):be(t,"penzor.sync.allOff")}var ts=e=>e.jobs.filter(t=>t.state==="failed"&&!e.jobs.some(n=>n.path===t.path&&n.at>t.at&&n.state==="done"));function An(e){if(!e.config.enabled)return{kind:"off"};if(e.paused)return{kind:"paused"};let t=e.jobs.filter(a=>a.state==="queued"||a.state==="active");if(t.length){let a=t.reduce((s,l)=>s+(l.size??0),0),i=t.reduce((s,l)=>s+l.done,0);return{kind:"run",pct:a>0?Math.min(99,Math.round(i/a*100)):0}}if(e.phase==="scanning"||e.phase==="syncing")return{kind:"scan"};let n=ts(e).length+(e.error?1:0);if(n)return{kind:"warn",n};let r=e.jobs.filter(a=>a.state==="done").map(a=>a.finishedAt??a.at);return{kind:"ok",at:r.length?Math.max(...r):null}}function fu(e,t){return e.kind==="off"?be(t,"penzor.cs.statusOff"):e.kind==="paused"?be(t,"penzor.cs.statusPaused"):e.kind==="run"?`${e.pct}%`:e.kind==="scan"?be(t,"penzor.sync.runningPlain"):e.kind==="warn"?be(t,"penzor.cs.statusWarn",{n:e.n}):be(t,"penzor.cs.statusOk")}function mu(e,t){let n=du(e);return e.notes.pending?be(t,"penzor.sync.badgeWaiting",{n}):n?be(t,"penzor.sync.onN",{n}):be(t,"penzor.sync.allOff")}function ns(e,t){let n=Math.max(0,Math.round(e.intervalMin)),r=n?n%60===0?be(t,"penzor.sync.everyHours",{n:n/60}):be(t,"penzor.sync.every",{n}):be(t,"penzor.sync.manual");return e.syncOnStart?`${r} \xB7 ${be(t,"penzor.sync.onStart")}`:r}function En(e,t,n=Date.now()){if(e==null||!Number.isFinite(e))return"\u2014";let r=Math.max(0,n-e);return r<6e4?be(t,"penzor.justNow"):r<36e5?be(t,"penzor.sync.minAgo",{n:Math.floor(r/6e4)}):r<6*36e5?be(t,"penzor.sync.hoursAgo",{n:Math.floor(r/36e5)}):sn(e,t,n)}function fa(e,t=!1){return t?"folder":/\.(png|jpe?g|gif|webp|heic|dng|svg|bmp|tiff?)$/i.test(e)?"image":/\.(md|txt|pdf|docx?|rtf)$/i.test(e)?"page":/\.db$/i.test(e)?"database":"attachment"}function gu(e,t){let n=null;for(let r of t)(!r.source||e===r.source||e.startsWith(r.source+"/"))&&(!n||r.source.length>n.source.length)&&(n=r);return n}var Vt={get:"penzor:sync:get",preview:"penzor:sync:preview",apply:"penzor:sync:apply",run:"penzor:sync:run",pause:"penzor:sync:pause",retry:"penzor:sync:retry",rename:"penzor:sync:rename",setup:"penzor:sync:setup"};var fn="forsion-penzor",Pn={main:"penzor",info:"penzor-info"},os="penzor-places",rs="forsion-extend.penzor.ready",hu="forsion-extend.penzor.focus",ma=e=>e.state==="active"||e.state==="queued",Lo=e=>e.ok?"":e.detail||e.code||e.transport||(e.status?`HTTP ${e.status}`:"offline"),hv=e=>e.slice(e.lastIndexOf("/")+1);function vu(e,t={}){let n=t.api??te,r=new Set,a=()=>{for(let y of[...r])try{y()}catch(A){console.error("[penzor] listener failed",A)}},i=()=>De(e.getLocale?.()),s=(y,A)=>be(i(),y,A),l=y=>pr(y,i()),c=y=>e.app?.notify?.(y),d=y=>c(s("penzor.toast.failed",{reason:typeof y=="string"?y:Lo(y)})),g="unknown",u=!1,p=null,m=null,f={kind:"overview"},v="",k=[],z=null,x=null,w=null,P="mtime",L="",U=null,H={kind:"view"},B=!1,G=null,_=null,E=0,D=0,I=0,ne=t.device??null,b=new Map,S=new Set,R=null,$=null,K=[],Y=[],de="hidden",ve=0,$e=!1,ge=0,Ee=!1,pt=null,Pe=!1,Xe=null,Gt=new Map,ft=null,tt=!oe().mobile&&typeof e.app?.sync?.get=="function"?e.app.sync:null,It=new Map,zt=new Set,ke=!1,St=!1,Le=1e4,Jn=4e3,mt=y=>{let A=P==="size"?(M,Z)=>Z.size-M.size:P==="name"?(M,Z)=>M.name.localeCompare(Z.name):null;return A?[...y.filter(M=>M.dir).sort(A),...y.filter(M=>!M.dir).sort(A)]:cu([...y])};async function Ze(){let y=++E,A=f;if(x=null,A.kind==="overview"||A.kind==="sync-home"){z=null;return}if(A.kind==="exports"){z=(m?.exports?.files??[]).map(V=>({key:V.fileId,name:V.fileName,dir:!1,size:V.size,mtime:ho(V.createdAt),col4:Xt(V.appId),ref:V}));return}if(A.kind==="trash"){z=Yi(m?.trash??[]).map(V=>({key:V.id,name:V.name,dir:V.fileType==="directory",size:V.fileType==="directory"?V.innerBytes:V.fileSize,mtime:ho(V.deletedAt),col4:V.parentName?`${Xt(V.appId)} / ${V.parentName}`:Xt(V.appId),count:V.fileType==="directory"?V.inner:void 0,ref:V}));return}if(z=null,a(),A.kind==="content"){let V=await n(`/remotesync/content/${encodeURIComponent(A.namespace)}`);if(y!==E)return;if(!V.ok){x=Lo(V),a();return}if(V.data.schemaVersion!==1||!Array.isArray(V.data.nodes)){x=s("penzor.unreachable");return}let le=V.data.nodes.filter(we=>!we.deleted),_e=le.filter(we=>we.kind==="file"&&we.version).map(we=>({path:we.path,size:we.size??0,mtime:we.mtime??null,ref:we}));b.set(mo(A),_e);let ae=we=>{let xr=0,Zn=null,yo=0;for(let Nn of _e)Nn.path.startsWith(we+"/")&&(xr+=Nn.size,yo++,Nn.mtime!=null&&(Zn==null||Nn.mtime>Zn)&&(Zn=Nn.mtime));return{size:xr,mtime:Zn,count:yo}};z=le.filter(we=>(we.path.includes("/")?we.path.slice(0,we.path.lastIndexOf("/")):"")===v).map(we=>we.kind==="folder"?{key:we.path,name:we.name,dir:!0,...ae(we.path),ref:we}:{key:we.path,name:we.name,dir:!1,size:we.size??0,mtime:we.mtime??null,ref:we});return}if(A.kind==="sync"||A.kind==="ama"){let V=mo(A),le=b.get(V);if(!le){if(A.kind==="sync"){let _e=await n(`/remotesync/vaults/${encodeURIComponent(A.vault)}/manifest`);if(y!==E)return;if(!_e.ok){x=Lo(_e),a();return}le=_e.data.files.map(ae=>({path:ae.path,size:ae.size,mtime:ho(ae.mtimeMs),who:ae.device??null,ref:ae}))}else{let _e=await n(`/amadeus/vaults/${encodeURIComponent(A.vaultId)}/tree`);if(y!==E)return;if(!_e.ok){x=Lo(_e),a();return}le=(_e.data.entries??[]).map(ae=>({path:ae.path,size:ae.size,mtime:ho(ae.updatedAt),ref:ae}))}b.set(V,le)}z=Zi(le,v);return}if(A.kind==="source"){let V=(_e,ae,we)=>({key:_e,name:ae,size:we,dir:!0,mtime:null,ref:{go:_e}});if(A.source==="sync"||A.source==="ama"||A.source==="apps"){if(!(A.source==="sync"?m?.sync:A.source==="ama"?m?.ama:m?.apps)){x=s("penzor.unreachable");return}z=A.source==="sync"?(m?.sync?.vaults??[]).map(ae=>V(`sync:${ae.vault}`,ae.vault,ae.bytes)):A.source==="ama"?(m?.ama??[]).map(ae=>V(`ama:${ae.id}`,ae.name,ae.sizeBytes)):(m?.apps?.apps??[]).filter(ae=>ae.appId!==pn&&ae.files>0).map(ae=>V(`app:${ae.appId}`,Xt(ae.appId),ae.bytes));return}let le=await n(`/storage/source-files/${A.source}`);if(y!==E)return;if(!le.ok){x=Lo(le),a();return}z=Zi(le.data.entries.map(_e=>({..._e,ref:_e})),v);return}let M=k[k.length-1]?.id,Z=await n(`/files${M?`?parentId=${encodeURIComponent(M)}`:""}`,{projectSource:A.appId});if(y===E){if(!Z.ok){x=Lo(Z),a();return}z=Z.data.map(V=>({key:V.id,name:V.displayName||V.name,dir:V.fileType==="directory",size:Number(V.fileSize)||0,mtime:ho(V.updatedAt),managed:V.managed===!0,ref:V}))}}let _t=()=>{if(!z)return null;let y=L.trim().toLowerCase(),A=y?z.filter(M=>M.name.toLowerCase().includes(y)):z;return mt(A)},vt=()=>{let y=_t()??[],A=new Set(y.map(M=>M.key));if(S=new Set([...S].filter(M=>A.has(M))),w&&A.has(w)){S.add(w);return}w=(y.find(M=>!M.dir)??y[0])?.key??null,S=new Set(w?[w]:[]),R=w,Nt()},Lt=()=>{w=null,S=new Set,R=null,$=null},Xt=y=>y===pn?s("penzor.uploads"):Ji(y),at=()=>f.kind==="app"&&f.appId===pn,In=y=>!!m?.apps&&m.apps.apps.find(A=>A.appId===y)?.canManage!==!1,Ct=()=>f.kind==="app"&&In(f.appId),Qe=y=>f.kind==="trash"?In(y.ref.appId):Ct()&&!y.managed,O=()=>!!m?.apps&&!!m.trash?.length&&m.trash.every(y=>In(y.appId)),se=()=>f.kind==="app"||f.kind==="sync"||f.kind==="ama"||f.kind==="content",ze=()=>f.kind==="app"?k[k.length-1]?.id??"ROOT":"ROOT",nt=()=>(_t()??[]).filter(y=>S.has(y.key)),dt=(y,A)=>{let M=oe().cloudInvoke;return M?M(y,A).catch(Z=>({ok:!1,error:String(Z?.message||Z)})):Promise.resolve({ok:!1,error:"no_bridge"})};function Je(y=500){pt||Pe||(pt=setTimeout(()=>{pt=null,Dt()},y))}async function Dt(){let y=D,A=await dt("penzor:transfers");if(y!==D||Pe)return;let M=new Map(K.map(ae=>[ae.id,ae.state]));A?.ok&&Array.isArray(A.items)&&(K=A.items);let Z=Date.now(),V=K.some(ma);K.some(ae=>ae.kind==="up"&&ae.state==="done"&&M.get(ae.id)!=="done")&&(ft&&clearTimeout(ft),ft=setTimeout(()=>{ft=null,it()},300)),V?(Xe==null&&(Xe=Z),ge=0,de==="hidden"&&(de="open",ve=Z),de==="open"&&!$e&&Z-ve>Le&&(de="pill")):Xe!=null&&(ln(Xe),Xe=null);let le=K.some(ae=>ae.state==="failed")||Y.length>0,_e=K.some(ae=>ae.state==="paused");!V&&!_e&&K.length&&!le&&de!=="hidden"&&(ge?Z-ge>Jn&&!$e&&(de="hidden",ge=0,Jt.txClear("finished")):(ge=Z,de==="pill"&&(de="open"))),!V&&le&&de==="pill"&&(de="open"),!K.length&&!Y.length&&(de="hidden"),Ln(),a(),(V||de!=="hidden"&&ge)&&Je()}function ln(y){let A=K.filter(le=>(le.finishedAt??0)>=y),M=A.filter(le=>le.kind==="up"&&le.state==="done"),Z=A.filter(le=>le.kind==="down"&&le.state==="done"),V=A.filter(le=>le.state==="failed");Ee||(V.length?c(s("penzor.toast.txFailed",{n:V.length})):M.length?c(M.length===1?s("penzor.toast.upDoneOne",{name:M[0].name}):s("penzor.toast.upDoneMany",{n:M.length})):Z.length&&c(Z.length===1?s("penzor.toast.downloaded",{name:Z[0].name}):s("penzor.toast.downDoneMany",{n:Z.length})))}function Ln(){let y=K.filter(ma),A=y.reduce((Z,V)=>Z+Math.max(V.size,V.done),0),M=y.length?A>0?Math.min(1,y.reduce((Z,V)=>Z+V.done,0)/A):0:null;e.app?.setSpaceProgress?.(fn,M??mr(tt?.get()??null))}function Dn(){if(!tt)return;let y=pa(tt.get());y!==St&&(St=y,e.app?.setSpaceDot?.(fn,y))}function hn(){tt?.get()?.notes.pending||(ke=!1),Ln(),Dn(),a()}let Ve=()=>{let y=tt?.get()??null;if(!y||!It.size)return y;let A=(M,Z)=>It.has(M)?{...Z,on:It.get(M)}:Z;return{...y,notes:A("notes",y.notes),agents:A("agents",y.agents),plugins:A("plugins",y.plugins)}},Tt=async y=>{try{return await y()??{ok:!1}}catch(A){return{ok:!1,error:String(A?.message||A)}}},bt=()=>{de="open",ve=Date.now(),ge=0};async function Nt(){G=null;let y=Uo();if(f.kind!=="app"||!y||y.dir){a();return}let A=y.key,M=await n(`/files/${encodeURIComponent(A)}/versions`);w===A&&(G=M.ok&&Array.isArray(M.data)?M.data.map(Z=>({versionNumber:Z.versionNumber,fileSize:Number(Z.fileSize)||0,createdAt:ho(Z.createdAt)})):[],a())}let Uo=()=>w?(z??[]).find(y=>y.key===w)??null:null;async function vn(){await Ze(),vt(),a()}async function it(){let y=++I;u=!0,p=null,a();let A=await oe().authStatus?.().catch(()=>null);if(y!==I)return;if(A&&!A.loggedIn){g="out",m=null,u=!1,a();return}let{snap:M,signedOut:Z}=await iu(n);if(y===I){if(u=!1,Z){g="out",m=null,a();return}g="in",!M.ledger&&m?.ledger&&(M.ledger=m.ledger,M.ledgerStale=!0),m=M,b.clear(),p=!M.ledger&&!M.sync&&!M.ama&&!M.apps&&!M.exports&&!M.trash?s("penzor.unreachable"):null,!go(f)&&f.kind!=="exports"&&f.kind!=="trash"&&f.kind!=="source"&&((f.kind==="content"?M.contentDevices!=null:f.kind==="sync"?M.sync?.vaults.some(le=>le.vault===f.vault):f.kind==="ama"?M.ama?.some(le=>le.id===f.vaultId):f.appId===pn?M.apps:M.apps?.apps.some(le=>le.appId===f.appId&&le.files>0))||(f={kind:"overview"},v="",k=[],Lt())),await vn()}}async function Ho(y,A={},M=f){let Z=M.kind==="content"?{path:`/remotesync/content/${encodeURIComponent(M.namespace)}/nodes/${encodeURIComponent(y.ref.id)}/content`,mode:"bytes"}:M.kind==="sync"?{path:`/remotesync/vaults/${encodeURIComponent(M.vault)}/file?path=${encodeURIComponent(y.key)}`,mode:"signed"}:M.kind==="ama"?y.ref.kind==="binary"?{path:`/amadeus/vaults/${encodeURIComponent(M.vaultId)}/asset?ref=${encodeURIComponent(y.key)}`,mode:"bytes"}:{path:`/amadeus/vaults/${encodeURIComponent(M.vaultId)}/file?path=${encodeURIComponent(y.key)}`,mode:"text"}:M.kind==="app"?{path:`/files/${encodeURIComponent(y.key)}/content`,mode:"bytes"}:M.kind==="source"&&y.ref?.downloadPath?{path:y.ref.downloadPath,mode:"bytes"}:M.kind==="exports"?{path:`/exports/${encodeURIComponent(y.key)}/url`,mode:"signed"}:null;if(!Z)return;let V=await dt("penzor:download",{...Z,name:hv(y.name),size:y.size,...A});if(!V?.ok){d(V?.error||"download");return}bt(),Je(0),a()}let qo=()=>{go(f)?e.closeView?.(Pn.info,{collapse:!0}):e.openView?.(Pn.info,{location:"right"})},Jt={ctx:e,locale:i,t:s,b:l,subscribe(y){return r.add(y),()=>{r.delete(y)}},auth:()=>g,loading:()=>u,error:()=>p,snap:()=>m,loc:()=>f,path:()=>v,appStack:()=>k,rows:_t,rowsError:()=>x,selected:Uo,sort:()=>P,query:()=>L,menu:()=>U,side:()=>H,confirmEmpty:()=>B,versions:()=>G,moveFolders:()=>_,thisDevice:()=>ne,setDevice(y){ne=y,a()},appLabel:Xt,canManageRow:Qe,canEmptyTrash:O,canManage:Ct,canWrite:at,canMulti:se,folderId:ze,selection:nt,isSelected:y=>S.has(y),selectAll(){if(!se())return;let y=_t()??[];S=new Set(y.map(A=>A.key)),!w&&y[0]&&(w=y[0].key),U=null,a()},newFolder:()=>$,startNewFolder(){if(!at())return;let y=s("penzor.newFolder.default"),A=new Set((z??[]).filter(Z=>Z.dir).map(Z=>Z.name)),M=y;for(let Z=1;A.has(M)&&Z<1e3;Z++)M=`${y} (${Z})`;$=M,U=null,a()},cancelNewFolder(){$!=null&&($=null,a())},async createFolder(y){let A=y.trim();if($=null,!A||!at()){a();return}a();let M=await n("/files",{method:"POST",body:{type:"directory",parentId:ze(),name:A},projectSource:pn});if(!M.ok){M.status===409?c(s("penzor.toast.folderExists",{name:A})):d(M);return}M.data?.id&&(w=M.data.id,S=new Set([M.data.id]),R=M.data.id),await vn()},transfers:()=>K,notices:()=>Y,async acknowledgeStorageNotice(){let y=m?.ledger?.rollout;if(!y||y.acknowledgedAt||m?.ledgerStale)return;let A=await n("/storage/notice/ack",{method:"POST",body:{revision:y.revision}});if(!A.ok){d(A);return}await it()},txRows(){if(!at())return[];let y=ze();return K.filter(A=>A.kind==="up"&&A.projectSource===pn&&A.parentId===y&&(ma(A)||A.state==="paused")).map(A=>({key:`tx:${A.id}`,id:A.id,name:A.name,size:A.size,done:A.done,state:A.state}))},card:()=>de,setCard(y){de=y,ve=Date.now(),y!=="hidden"&&Je(0),a()},holdCard(y){$e=y,ve=Date.now(),y||Je()},async upload(y,A){if(!at())return;let M=D,Z=A?.id??ze(),V=A?[...k,A]:[...k],le=await y;if(M!==D||Pe||!le.length)return;Gt.set(Z,V);let _e=await dt("penzor:upload",{...typeof le[0]=="string"?{paths:le}:{files:le},parentId:Z,projectSource:pn});if(!(M!==D||Pe)){if(_e?.ok){bt(),Je(0),a();return}if(_e?.error==="quota"){Y=[...Y,{id:String(Date.now()),kind:"quota",short:Number(_e.short)||0}],bt(),a();return}if(_e?.error==="too_many"){c(s("penzor.err.too_many",{n:Number(_e.max)||2e3}));return}_e?.error!=="no_files"&&d(_e?.error==="account_changed"?s("penzor.err.account_changed"):_e?.error==="not_signed_in"?s("penzor.err.not_signed_in"):_e?.error||"upload")}},async txOp(y,A){await dt("penzor:transfer",{id:y,op:A}),ve=Date.now(),await Dt()},async txAll(y){let A=y==="pause"?M=>ma(M):y==="resume"?M=>M.state==="paused":M=>M.state==="failed"||M.state==="canceled";for(let M of K.filter(A))await dt("penzor:transfer",{id:M.id,op:y});y==="retry"&&(Y=[]),ve=Date.now(),await Dt()},async txClear(y){await dt("penzor:transfers:clear",{which:y}),y==="all"&&(Y=[]),await Dt()},dismissNotice(y){Y=Y.filter(A=>A.id!==y),!K.length&&!Y.length&&(de="hidden"),a()},locate(y){if(y.kind==="down"){y.localPath&&oe().revealHostPath?.(y.localPath);return}let A=Gt.get(y.targetId??"")??[];f={kind:"app",appId:pn},k=A,v="",L="",H={kind:"view"},U=null,Lt(),y.fileId&&y.parentId===y.targetId&&(w=y.fileId,S=new Set([y.fileId])),a(),e.app?.openSpace?.(fn).then(()=>{e.openView?.(Pn.main),qo()}),vn()},async downloadMany(y){let A=y.filter(ae=>!ae.dir);if(A.length<=1){A[0]&&await Jt.download(A[0]);return}let M=new Date,Z=s("penzor.download.folder",{date:`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}-${String(M.getDate()).padStart(2,"0")}`}),V=`${Date.now()}`,le=f,_e=D;for(let ae of A){if(D!==_e)break;await Ho(ae,{subdir:Z,batch:V},le)}},async trashMany(y){if(f.kind!=="app"||!y.length||!y.every(Qe))return;if(y.length===1){await Jt.trash(y[0]);return}let A=await n("/files/batch/delete",{method:"POST",body:{ids:y.map(Z=>Z.key)},projectSource:f.appId});if(!A.ok){d(A);return}let M=(A.data?.results??[]).filter(Z=>Z.success===!1).length;c(M?s("penzor.toast.batchPartial",{n:M}):s("penzor.toast.trashedN",{n:y.length})),Lt(),await it()},async moveMany(y,A){if(f.kind!=="app"||!y.length||!y.every(Qe))return;H={kind:"view"};let M=y.map(le=>le.key).filter(le=>le!==A.id),Z=await n("/files/batch/move",{method:"POST",body:{ids:M,parentId:A.id},projectSource:f.appId});if(!Z.ok){d(Z),a();return}let V=(Z.data?.results??[]).filter(le=>le.success===!1).length;c(V?s("penzor.toast.batchPartial",{n:V}):s("penzor.toast.movedN",{n:M.length,name:A.name})),Lt(),await it()},setVisible(y){Ee=y},picker:{},refresh:it,go(y){let A=su(y);if(!A)return;let M=mo(A)===mo(f);f=A,M||(v="",k=[],Lt(),L="",H={kind:"view"},B=!1),U=null,a(),e.openView?.(Pn.main),qo(),vn()},openDir(y){if(!(!y.dir||f.kind==="exports"||f.kind==="trash")){if(f.kind==="source"&&y.ref?.go){Jt.go(y.ref.go);return}f.kind==="app"?k=[...k,{id:y.key,name:y.name}]:v=y.key,Lt(),L="",H={kind:"view"},vn()}},up(y){if(f.kind==="app")k=k.slice(0,y??Math.max(0,k.length-1));else{let A=v?v.split("/"):[];v=A.slice(0,y??Math.max(0,A.length-1)).join("/")}Lt(),H={kind:"view"},vn()},select(y,A){let M=_t()??[];if(y&&A?.range&&se()&&R&&M.some(Z=>Z.key===R)){let Z=M.findIndex(le=>le.key===R),V=M.findIndex(le=>le.key===y.key);S=new Set(M.slice(Math.min(Z,V),Math.max(Z,V)+1).map(le=>le.key)),w=y.key}else y&&A?.toggle&&se()?(S.has(y.key)&&S.size>1?(S.delete(y.key),w===y.key&&(w=[...S].pop()??null)):(S.add(y.key),w=y.key),R=y.key):(w=y?.key??null,S=new Set(w?[w]:[]),R=w);$=null,H={kind:"view"},U=null,y&&!go(f)&&e.openView?.(Pn.info,{location:"right"}),Nt(),a()},setSort(y){P=y,a()},setQuery(y){L=y,a()},openMenu(y,A,M){M&&!S.has(M.key)&&(w=M.key,S=new Set([M.key]),R=M.key,Nt()),U={x:y,y:A,row:M},H={kind:"view"},a()},closeMenu(){U&&(U=null,a())},setSide(y){H=y,U=null,y.kind==="move"&&(_=null,Jt.moveBrowse(y.at)),e.openView?.(Pn.info,{location:"right"}),a()},setConfirmEmpty(y){B=y,a()},async download(y){y.dir||(U=null,await Ho(y))},async trash(y){if(f.kind!=="app"||!Qe(y))return;let A=_t()??[],M=A.findIndex(le=>le.key===y.key),Z=await n(`/files/${encodeURIComponent(y.key)}`,{method:"DELETE",projectSource:f.appId});if(!Z.ok){d(Z);return}c(s("penzor.toast.trashed",{name:y.name}));let V=A[M+1]??A[M-1];w=V&&V.key!==y.key?V.key:null,U=null,await it()},async restore(y){if(!m||f.kind!=="trash"||!Qe(y))return;let A=await n(`/trash/${encodeURIComponent(y.key)}/restore`,{method:"POST",body:{}});if(!A.ok){d(A);return}c(s("penzor.toast.restored",{name:y.name})),w=null,await it()},async purge(y){if(!m||f.kind!=="trash"||!Qe(y))return;let A=await n(`/trash/${encodeURIComponent(y.key)}`,{method:"DELETE"});if(H={kind:"view"},!A.ok){d(A),a();return}c(s("penzor.toast.purged",{name:y.name})),w=null,await it()},async emptyTrash(){if(!m||!O())return;let y=await n("/trash?all=1",{method:"DELETE"});if(B=!1,!y.ok){d(y),a();return}let A=(y.data?.results??[]).filter(M=>M.success===!1).length;c(A?s("penzor.toast.emptyPartial",{n:A}):s("penzor.toast.emptied")),w=null,await it()},async rename(y,A){let M=A.trim();if(H={kind:"view"},!M||M===y.name){a();return}let Z=f.kind==="exports"?await n(`/exports/${encodeURIComponent(y.key)}/rename`,{method:"PUT",body:{newFileName:M}}):f.kind==="app"&&Qe(y)?await n(`/files/${encodeURIComponent(y.key)}/rename`,{method:"PATCH",body:{name:M},projectSource:f.appId}):null;if(Z){if(!Z.ok){d(Z),a();return}c(s("penzor.toast.renamed",{name:M})),await it()}},moveBrowse(y){if(f.kind!=="app"||!Ct())return;H={kind:"move",at:y},_=null,a();let A=y[y.length-1]?.id,M=f.appId;n(`/files${A?`?parentId=${encodeURIComponent(A)}`:""}`,{projectSource:M}).then(Z=>{H.kind!=="move"||H.at!==y||(_=Z.ok?Z.data.filter(V=>V.fileType==="directory").map(V=>({id:V.id,name:V.name})):[],a())})},async moveTo(y,A){if(f.kind!=="app"||!Qe(y))return;if(H={kind:"view"},A.id===y.key){a();return}let M=await n(`/files/${encodeURIComponent(y.key)}/move`,{method:"PATCH",body:{parentId:A.id},projectSource:f.appId});if(!M.ok){d(M),a();return}c(s("penzor.toast.moved",{name:A.name})),w=null,await it()},async restoreVersion(y,A){if(!Qe(y))return;let M=await n(`/files/${encodeURIComponent(y.key)}/restore/${A.versionNumber}`,{method:"POST",body:{}});if(!M.ok){d(M);return}c(s("penzor.toast.versionRestored",{n:A.versionNumber})),await it(),Nt()},async deleteExport(y){if(!m)return;let A=await n(`/exports/${encodeURIComponent(y.key)}`,{method:"DELETE"});if(H={kind:"view"},!A.ok){d(A),a();return}c(s("penzor.toast.purged",{name:y.name})),w=null,await it()},signIn(){oe().forsionLogin?.()},openSync(){e.app?.openSettings?.("sync/s-remote")},async focusVault(y){await e.app?.openSpace?.(fn),m||await it(),Jt.go(`sync:${y}`)},hasSync:()=>!!tt,content:()=>Kn,syncState:Ve,syncBusy:y=>zt.has(y),async setSync(y,A){if(!tt||zt.has(y))return;zt.add(y),It.set(y,A),a();let M=await Tt(()=>tt.set(y,A));zt.delete(y),It.delete(y),!Pe&&(M.ok||d(M.error||"sync"),hn())},async resolveNotes(y){if(!tt||zt.has("resolve"))return;zt.add("resolve"),a();let A=await Tt(()=>tt.resolveNotes(y));zt.delete("resolve"),ke=!1,!Pe&&(A.ok||d(A.error||"sync"),hn())},confirmCloud:()=>ke,setConfirmCloud(y){ke=y,a()},enter(){},dispose(){Pe=!0,clearInterval(Yn),pt&&clearTimeout(pt),ft&&clearTimeout(ft),e.app?.setSpaceProgress?.(fn,null),St&&e.app?.setSpaceDot?.(fn,!1),r.clear(),Wo?.(),yr?.(),xa?.()}},Kn=null,Ot="",bn=async()=>{let y=oe().cloudInvoke;if(!y){clearInterval(Yn);return}let A=await y(Vt.get).catch(V=>({ok:!1,error:String(V)}));if(Pe)return;!A?.ok&&/unavailable|not a Forsion Extend channel/i.test(A?.error??"")&&clearInterval(Yn);let M=A?.ok&&A.value?.available?A.value:null,Z=M?JSON.stringify([An(M),M.config.enabled,M.deviceId,M.devices]):"";Kn=M,Z!==Ot&&(Ot=Z,a())},Yn=setInterval(()=>void bn(),5e3);bn();let Wo=e.subscribeLocale?.(()=>a()),xa=tt?.subscribe(hn);Dn(),Dt();let yr=oe().onAuthChanged?.(()=>{++E,++I,++D,m=null,z=null,x=null,b.clear(),Lt(),U=null,H={kind:"view"},B=!1,G=null,_=null,f={kind:"overview"},v="",k=[],L="",Gt.clear(),Y=[],K=[],de="hidden",Xe=null,ge=0,ft&&(clearTimeout(ft),ft=null),e.app?.setSpaceProgress?.(fn,null),ke=!1,It.clear(),a(),it()});return Jt}var bu=e=>e.kind==="content"?"penzor.source.readonly":e.kind==="sync"?"penzor.side.readonlySync":e.kind==="ama"?"penzor.side.readonlyAma":e.kind==="source"?e.source==="plugins"?"penzor.source.pluginNote":"penzor.source.readonly":null;function bv(e,t){for(var n in t)e[n]=t[n];return e}function yu(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var r in t)if(r!=="__source"&&e[r]!==t[r])return!0;return!1}function xu(e,t){this.props=e,this.context=t}(xu.prototype=new en).isPureReactComponent=!0,xu.prototype.shouldComponentUpdate=function(e,t){return yu(this.props,e)||yu(this.state,t)};var ku=me.__b;me.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),ku&&ku(e)};var m0=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;var yv=me.__e;me.__e=function(e,t,n,r){if(e.then){for(var a,i=t;i=i.__;)if((a=i.__c)&&a.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k||[]),a.__c(e,t)}yv(e,t,n,r)};var wu=me.unmount;function Au(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(r){typeof r.__c=="function"&&r.__c()}),e.__c.__H=null),(e=bv({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(r){return Au(r,t,n)})),e}function Eu(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(r){return Eu(r,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function as(){this.__u=0,this.o=null,this.__b=null}function Pu(e){var t=e.__&&e.__.__c;return t&&t.__a&&t.__a(e)}function ga(){this.i=null,this.l=null}me.unmount=function(e){var t=e.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),wu&&wu(e)},(as.prototype=new en).__c=function(e,t){var n=t.__c,r=this;r.o==null&&(r.o=[]),r.o.push(n);var a=Pu(r.__v),i=!1,s=function(){i||r.__z||(i=!0,n.__R=null,a?a(c):c())};n.__R=s;var l=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var d=r.state.__a;r.__v.__k[0]=Eu(d,d.__c.__P,d.__c.__O)}var g;for(r.setState({__a:r.__b=null});g=r.o.pop();)g.__P=l,g.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(s,s)},as.prototype.componentWillUnmount=function(){this.o=[]},as.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=Au(this.__b,n,r.__O=r.__P)}this.__b=null}var a=t.__a&&ao(N,null,e.fallback);return a&&(a.__u&=-33),[ao(N,null,t.__a?null:e.children),a]};var zu=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};function xv(e){return this.getChildContext=function(){return e.context},e.children}function kv(e){var t=this,n=e.h;if(t.componentWillUnmount=function(){Me(null,t.v),t.v=null,t.h=null},t.h&&t.h!==n&&t.componentWillUnmount(),!t.v){for(var r=t.__v;r!==null&&!r.__m&&r.__!==null;)r=r.__;t.h=n,t.v={nodeType:1,parentNode:n,childNodes:[],__k:{__m:r.__m},contains:function(){return!0},namespaceURI:n.namespaceURI,insertBefore:function(a,i){this.childNodes.push(a),t.h.insertBefore(a,i)},removeChild:function(a){this.childNodes.splice(this.childNodes.indexOf(a)>>>1,1),t.h.removeChild(a)}}}Me(ao(xv,{context:t.context},e.__v),t.v)}function Mu(e,t){var n=ao(kv,{__v:e,h:t});return n.containerInfo=t,n}(ga.prototype=new en).__a=function(e){var t=this,n=Pu(t.__v),r=t.l.get(e);return r[0]++,function(a){var i=function(){t.props.revealOrder?(r.push(a),zu(t,e,r)):a()};n?n(i):i()}},ga.prototype.render=function(e){this.i=null,this.l=new Map;var t=or(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},ga.prototype.componentDidUpdate=ga.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){zu(e,n,t)})};var wv=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,zv=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Sv=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,_v=/[A-Z0-9]/g,Cv=typeof document<"u",Tv=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};en.prototype.isReactComponent=!0,["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(en.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Su=me.event;me.event=function(e){return Su&&(e=Su(e)),e.persist=function(){},e.isPropagationStopped=function(){return this.cancelBubble},e.isDefaultPrevented=function(){return this.defaultPrevented},e.nativeEvent=e};var Ru,Av={configurable:!0,get:function(){return this.class}},_u=me.vnode;me.vnode=function(e){typeof e.type=="string"&&(function(t){var n=t.props,r=t.type,a={},i=r.indexOf("-")==-1;for(var s in n){var l=n[s];if(!(s==="value"&&"defaultValue"in n&&l==null||Cv&&s==="children"&&r==="noscript"||s==="class"||s==="className")){var c=s.toLowerCase();s==="defaultValue"&&"value"in n&&n.value==null?s="value":s==="download"&&l===!0?l="":c==="translate"&&l==="no"?l=!1:c[0]==="o"&&c[1]==="n"?c==="ondoubleclick"?s="ondblclick":c!=="onchange"||r!=="input"&&r!=="textarea"||Tv(n.type)?c==="onfocus"?s="onfocusin":c==="onblur"?s="onfocusout":Sv.test(s)&&(s=c):c=s="oninput":i&&zv.test(s)?s=s.replace(_v,"-$&").toLowerCase():l===null&&(l=void 0),c==="oninput"&&a[s=c]&&(s="oninputCapture"),a[s]=l}}r=="select"&&(a.multiple&&Array.isArray(a.value)&&(a.value=or(n.children).forEach(function(d){d.props.selected=a.value.indexOf(d.props.value)!=-1})),a.defaultValue!=null&&(a.value=or(n.children).forEach(function(d){d.props.selected=a.multiple?a.defaultValue.indexOf(d.props.value)!=-1:a.defaultValue==d.props.value}))),n.class&&!n.className?(a.class=n.class,Object.defineProperty(a,"className",Av)):n.className&&(a.class=a.className=n.className),t.props=a})(e),e.$$typeof=wv,_u&&_u(e)};var Cu=me.__r;me.__r=function(e){Cu&&Cu(e),Ru=e.__c};var Tu=me.diffed;me.diffed=function(e){Tu&&Tu(e);var t=e.props,n=e.__e;n!=null&&e.type==="textarea"&&"value"in t&&t.value!==n.value&&(n.value=t.value==null?"":t.value),Ru=null};var Iu=`
|
|
1180
1186
|
.pz, .pz-side { color: var(--text); font-family: var(--font-ui); font-size: var(--ui-font-body); line-height: var(--ui-line-body); }
|
|
1181
1187
|
.pz { height: 100%; min-height: 0; display: flex; flex-direction: column; }
|
|
1182
1188
|
.pz-side { height: 100%; min-height: 0; overflow: auto; box-sizing: border-box; padding: 14px 16px; display: flex; flex-direction: column; gap: 12px; }
|
|
@@ -1387,7 +1393,7 @@ ${Sd(e,t)}`,d=await s({prompt:c,send:!1});d?.ok?r(""):i(d?.error||e.t("guide.ask
|
|
|
1387
1393
|
.pz-legacy > svg { color: var(--text-muted); }
|
|
1388
1394
|
.pz-legacy > span { flex: 1; min-width: 0; }
|
|
1389
1395
|
.pz-legacy small { display: block; margin-top: 2px; color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1390
|
-
`;function
|
|
1396
|
+
`;function Mn(e,t,n){return e.fetch?e.fetch(t,n):fetch(t,{...n,headers:{Authorization:`Bearer ${e.token}`,...n.headers}})}async function Do(e,t,n,r,a=6e4){let i=await(e.fetch??fetch)(e.base+n,{method:t,headers:{"Content-Type":"application/json","X-Project-Source":"connect",...e.token&&!e.fetch?{Authorization:`Bearer ${e.token}`}:{}},body:r===void 0?void 0:JSON.stringify(r),signal:AbortSignal.timeout(a)}),s=await i.json().catch(()=>({}));return{status:i.status,json:s}}function Rn(e,t){if(typeof t!="string"||!t.startsWith("/"))return null;let n=String(e||"").replace(/\/+$/,"").replace(/\/api$/,"");if(!n)return null;let r,a;try{r=new URL(n),a=new URL(n+"/api"+t)}catch{return null}return r.protocol!=="http:"&&r.protocol!=="https:"||a.origin!==r.origin||!a.pathname.startsWith("/api/")?null:a.toString()}var Lu=["bytes","signed","text"],Du=/^[A-Za-z0-9_-]{1,64}$/,Nu=/^[a-z0-9][a-z0-9-]{0,63}$/;function Ou(e){if(typeof e!="string")return null;let n=(e.split(/[\\/]/).pop()??"").replace(/[\u0000-\u001f<>:"|?*]/g,"").trim().slice(0,200);return n&&n!=="."&&n!==".."?n:null}var Ev={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".heic":"image/heic",".svg":"image/svg+xml",".pdf":"application/pdf",".txt":"text/plain",".md":"text/markdown",".json":"application/json",".csv":"text/csv",".mp4":"video/mp4",".mov":"video/quicktime",".mp3":"audio/mpeg",".zip":"application/zip",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation"};function is(e){let t=e.lastIndexOf(".");return Ev[t>0?e.slice(t).toLowerCase():""]??"application/octet-stream"}function Fu(e,t,n,r){let a=n.replace(/[^\x20-\x7e]/g,"_").replace(/["\\]/g,"_")||"file",i=encodeURIComponent(n).replace(/['()*]/g,l=>`%${l.charCodeAt(0).toString(16).toUpperCase()}`),s="";for(let[l,c]of Object.entries(t))s+=`--${e}\r
|
|
1391
1397
|
Content-Disposition: form-data; name="${l}"\r
|
|
1392
1398
|
\r
|
|
1393
1399
|
${c}\r
|
|
@@ -1397,7 +1403,7 @@ Content-Type: ${r}\r
|
|
|
1397
1403
|
\r
|
|
1398
1404
|
`,{head:s,tail:`\r
|
|
1399
1405
|
--${e}--\r
|
|
1400
|
-
`}}function uu(e,t){let n=e.filter(([l])=>t-l<=3e3);if(n.length<2)return 0;let[r,a]=n[0],[i,s]=n[n.length-1];return i>r?Math.max(0,(s-a)/(i-r)*1e3):0}function pu(e,t){let n=t??{};return e===401?"not_signed_in":n.code==="STORAGE_QUOTA_EXCEEDED"?"quota":n.code==="STORAGE_BUSY"||n.code==="STORAGE_RECONCILIATION_REQUIRED"?"storage_unavailable":n.code==="FILE_TOO_LARGE"||e===413?"too_large":typeof n.detail=="string"&&/quota exceeded/i.test(n.detail)?"quota":n.code==="STORAGE_NOT_CONFIGURED"?"storage_unavailable":`http_${e}`}var Oh=3,Bh=200,ji=32,Fh=e=>typeof e=="string"&&!!e&&e!=="."&&e!==".."&&!/[\\/]/.test(e);function Wi(e,t){return t?e.flatMap(n=>{let r=(n.webkitRelativePath||n.name).split("/");return r.slice(1).some(a=>a.startsWith("."))||r.length-1>ji?[]:[{file:n,relDir:r.slice(0,-1)}]}):e.map(n=>({file:n,relDir:[]}))}function fu(e){let t=Array.from(e.items??[]).filter(a=>a.kind==="file").map(a=>({entry:a.webkitGetAsEntry?.()??null,file:a.getAsFile()})),n=[],r=async(a,i)=>{if(i.length>ji)return!0;if(a.isFile){let c=await new Promise(d=>a.file(d,()=>d(null)));return c&&n.push({file:c,relDir:i}),n.length<=2e3}if(!a.isDirectory)return!0;let s=a.createReader(),l=[];for(;;){let c=await new Promise(d=>s.readEntries(d,()=>d([])));if(!c.length)break;l.push(...c)}l.sort((c,d)=>c.name<d.name?-1:c.name>d.name?1:0);for(let c of l)if(!c.name.startsWith(".")&&!await r(c,[...i,a.name]))return!1;return!0};return(async()=>{for(let a of t)if(a.entry){if(!await r(a.entry,[]))break}else a.file&&n.push({file:a.file,relDir:[]});return n})()}function mu(e,t=window,n={}){let r=[],a=new Map,i=!1,s=0,l=()=>Date.now(),c=()=>Array.from(t.crypto.getRandomValues(new Uint8Array(16)),S=>S.toString(16).padStart(2,"0")).join("");async function d(){let S=await e.getCloud();if(!S.token)throw new Error("not_signed_in");return S}async function g(S,E={}){let O=await d(),I=Cn(O.base,S);if(!I)throw new Error("bad_path");let ne=await _n(O,I,{method:E.method??"GET",headers:{...E.body!==void 0?{"Content-Type":"application/json"}:{},...E.projectSource?{"X-Project-Source":E.projectSource}:{}},body:E.body!==void 0?JSON.stringify(E.body):void 0,signal:AbortSignal.timeout(3e4)});return{status:ne.status,json:await ne.json().catch(()=>null)}}let u=S=>{let{attempt:E,relDir:O,abort:I,samples:ne,file:b,dl:T,...R}=S;return{...R,speed:S.state==="active"?uu(ne,l()):0}},p=S=>S.state==="active"||S.state==="queued"||S.state==="paused",m=(S,E,O=null)=>{S.state=E,S.error=O,S.abort=null,S.finishedAt=l(),S.samples=[];let I=r.filter(ne=>ne.state==="done"||ne.state==="canceled");for(let ne of I.slice(0,Math.max(0,I.length-Bh)))r.splice(r.indexOf(ne),1);v()},f=S=>{let E=String(S?.message||S);return["too_large","quota","not_signed_in","bad_response","popup_blocked","download_unavailable","download_failed"].includes(E)||E.startsWith("http_")?E:"network"};function v(){if(!i)for(let S of["up","down"]){let E=r.filter(O=>O.kind===S&&O.state==="active").length;for(let O of r){if(E>=Oh)break;if(O.kind!==S||O.state!=="queued")continue;E++,O.state="active",O.startedAt=l(),O.done=0,O.samples=[[l(),0]],O.abort=new AbortController;let I=O.abort.signal,ne=++O.attempt,b=()=>O.attempt===ne&&O.state==="active";(S==="up"?z(O,b,I):H(O,b,I)).catch(T=>{b()&&m(O,"failed",f(T))})}}}let w=(S,E)=>{S.done=E;let O=l(),I=S.samples[S.samples.length-1];for((!I||O-I[0]>=200)&&S.samples.push([O,E]);S.samples.length>2&&O-S.samples[0][0]>3500;)S.samples.shift()};function k(S){let E=s,O=()=>{if(i||E!==s)throw new Error("account_changed")};if(!S.relDir.length)return Promise.resolve(S.targetId);let I=a.get(S.batch);I||a.set(S.batch,I=new Map);let ne=I,b=T=>{if(T===0)return Promise.resolve(S.targetId);let R=S.relDir.slice(0,T).join("/"),K=ne.get(R);return K||(K=b(T-1).then(async X=>{O();let Y=S.relDir[T-1],me=await g("/files",{method:"POST",body:{type:"directory",parentId:X,name:Y},projectSource:S.projectSource});if(O(),me.status===201&&typeof me.json?.id=="string")return me.json.id;if(me.status===409){let Le=await g(`/files${X==="ROOT"?"":`?parentId=${encodeURIComponent(X)}`}`,{projectSource:S.projectSource}),je=Array.isArray(Le.json)?Le.json.find(he=>he?.fileType==="directory"&&he?.name===Y):null;if(je?.id)return String(je.id)}throw new Error(me.status===401?"not_signed_in":`http_${me.status}`)}),K.catch(()=>ne.delete(R)),ne.set(R,K)),K};return b(S.relDir.length)}async function z(S,E,O){let I=S.file;if(I.size>52428800)throw new Error("too_large");let ne=await k(S);if(!E())return;S.parentId=ne;let b=await d();if(!E())return;let T=Cn(b.base,"/files/upload");if(!T)throw new Error("bad_path");let R=`----penzor${c()}`,{head:K,tail:X}=du(R,{parentId:ne,autoRename:"true"},S.name,I.type||Hi(S.name)),Y=await _n(b,T,{method:"POST",headers:{"Content-Type":`multipart/form-data; boundary=${R}`,...S.projectSource?{"X-Project-Source":S.projectSource}:{}},body:new Blob([K,I,X]),signal:O}),me=await Y.json().catch(()=>null);E()&&(Y.status===201||Y.status===200?(S.fileId=typeof me?.id=="string"?me.id:null,w(S,S.size),m(S,"done")):m(S,"failed",pu(Y.status,me)))}async function x(S,E,O){E.size=Number(S.headers.get("content-length"))||E.size;let I=S.headers.get("content-type")||"";if(!S.body)return S.blob();let ne=S.body.getReader(),b=[],T=0;for(;;){let{done:R,value:K}=await ne.read();if(R)break;if(!O())throw ne.cancel().catch(()=>{}),new Error("aborted");b.push(K),T+=K.length,w(E,T)}return T>E.size&&(E.size=T),new Blob(b,{type:I})}let M=(S,E)=>{let O=URL.createObjectURL(S),I=t.document.createElement("a");I.href=O,I.download=E,t.document.body.appendChild(I),I.click(),I.remove(),setTimeout(()=>URL.revokeObjectURL(O),6e4)},L=S=>{let E=t.open("","_blank");return E?(E.opener=null,E.location.replace(S),!0):!1};async function H(S,E,O){let I=S.dl,ne=await d();if(!E())return;let b=Cn(ne.base,I.path);if(!b)throw new Error("bad_path");let T=await _n(ne,b,{signal:O});if(!T.ok)throw new Error(T.status===401?"not_signed_in":`http_${T.status}`);let R;if(I.mode==="bytes")R=await x(T,S,E);else{let K=await T.json().catch(()=>null);if(I.mode==="text"){if(typeof K?.content!="string")throw new Error("bad_response");R=new Blob([K.content],{type:Hi(I.name)}),S.size=R.size,w(S,R.size)}else{if(typeof K?.url!="string"||!/^https?:\/\//i.test(K.url))throw new Error("bad_response");let X=await fetch(K.url,{signal:O,credentials:"omit"}).catch(Y=>{if(O.aborted)throw Y;return null});if(!X){if(!E())return;if(n.openExternal)await n.openExternal(K.url);else if(!L(K.url))throw new Error("popup_blocked");if(!E())return;m(S,"done");return}if(!X.ok)throw new Error(`http_${X.status}`);R=await x(X,S,E)}}E()&&(n.saveDownload?await n.saveDownload(R,I.name):M(R,I.name),E()&&m(S,"done"))}let V=(S,E)=>{let O={projectSource:void 0,parentId:void 0,targetId:void 0,fileId:null,localPath:null,...S,id:c(),attempt:0,done:0,state:E?"failed":"queued",error:E??null,abort:null,samples:[],speed:0,startedAt:null,finishedAt:E?l():null};return r.push(O),O};e.handle("penzor:upload",async(S,E)=>{let O=s,I=E??{},ne=(Array.isArray(I.files)?I.files:[]).filter(Y=>!!Y&&Y.file instanceof Blob&&typeof Y.file.name=="string"&&Array.isArray(Y.relDir)&&Y.relDir.length<=ji&&Y.relDir.every(Fh)),b=typeof I.parentId=="string"&&su.test(I.parentId)?I.parentId:null,T=typeof I.projectSource=="string"&&lu.test(I.projectSource)?I.projectSource:null;if(!ne.length)return{ok:!1,error:"no_files"};if(!b||!T)return{ok:!1,error:"bad_target"};if(ne.length>2e3)return{ok:!1,error:"too_many",max:2e3};if(!(await e.getCloud()).token)return{ok:!1,error:"not_signed_in"};if(O!==s)return{ok:!1,error:"account_changed"};let R=ne.filter(Y=>Y.file.size<=52428800).reduce((Y,me)=>Y+me.file.size,0);try{let Y=await g("/storage/quota"),me=Number(Y.json?.used),Le=Number(Y.json?.quota);if(Y.status===200&&Le>0&&me+R>Le)return{ok:!1,error:"quota",short:me+R-Le}}catch{}if(O!==s)return{ok:!1,error:"account_changed"};if(i)return{ok:!1,error:"disposed"};let K=c(),X=ne.map(Y=>V({kind:"up",name:Y.file.name,size:Y.file.size,projectSource:T,parentId:Y.relDir.length?null:b,targetId:b,batch:K,relDir:Y.relDir,file:Y.file},Y.file.size>52428800?"too_large":void 0).id);return v(),{ok:!0,ids:X,batch:K}}),e.handle("penzor:download",async(S,E)=>{let O=s,I=E??{},ne=iu.includes(I.mode)?I.mode:null,b=cu(I.name);if(!ne)return{ok:!1,error:"bad_mode"};if(!b)return{ok:!1,error:"bad_name"};let T=await e.getCloud();if(O!==s)return{ok:!1,error:"account_changed"};if(typeof I.path!="string"||!Cn(T.base,I.path))return{ok:!1,error:"bad_path"};if(!T.token)return{ok:!1,error:"not_signed_in"};if(i)return{ok:!1,error:"disposed"};let R=V({kind:"down",name:b,size:Math.max(0,Number(I.size)||0),relDir:[],batch:typeof I.batch=="string"&&I.batch.length<=64?I.batch:c(),dl:{path:I.path,mode:ne,name:b}});return v(),{ok:!0,id:R.id}}),e.handle("penzor:transfers",()=>({ok:!0,items:r.map(u)})),e.handle("penzor:transfer",(S,E)=>{let O=E??{},I=r.find(b=>b.id===O.id);if(!I)return{ok:!1,error:"not_found"};let ne=()=>{I.abort?.abort(),I.abort=null,I.done=0,I.samples=[]};switch(O.op){case"pause":(I.state==="active"||I.state==="queued")&&(ne(),I.state="paused",v());break;case"resume":I.state==="paused"&&(I.state="queued",v());break;case"cancel":p(I)&&(ne(),m(I,"canceled"));break;case"retry":(I.state==="failed"||I.state==="canceled")&&(I.state="queued",I.error=null,I.finishedAt=null,I.done=0,v());break;case"dismiss":I.state!=="active"&&I.state!=="queued"&&r.splice(r.indexOf(I),1);break;default:return{ok:!1,error:"bad_op"}}return{ok:!0}}),e.handle("penzor:transfers:clear",(S,E)=>{let O=E?.which==="all";for(let I of[...r])(I.state==="done"||I.state==="canceled"||O&&I.state==="failed")&&r.splice(r.indexOf(I),1);return{ok:!0}});let ee=S=>{r.some(p)&&(S.preventDefault(),S.returnValue="")};t.addEventListener("beforeunload",ee);let te=()=>{s++;for(let S of r)S.state="canceled",S.abort?.abort();r.length=0,a.clear()};return{reset:te,dispose(){i=!0,t.removeEventListener("beforeunload",ee),te()}}}var Po=[{id:"notes",path:"Amadeus"},{id:"agents",path:"agents"},{id:"profile",path:"human"},{id:"plugins",path:"Plugins"}],Gi=new Set(["Amadeus","agents"]),lr=(e,t)=>Ud(t,e)?.target??"off",gu=(e,t)=>e===t||e.startsWith(t+"/"),$h=e=>Po.some(t=>gu(e,t.path)),Ki=e=>e.some(t=>t.id==="default")?Ji():"default",Ut=(e,t)=>e.enabled?lr(e.rules,t):"off";function hu(e,t,n){n==="off"&&(e=e.filter(i=>t?!i.source.startsWith(t+"/"):!i.source||$h(i.source)));let r=e.find(i=>i.source===t),a=e.filter(i=>i!==r);return t&&lr(a,t)===n?a:r?e.map(i=>i===r?{...i,target:n}:i):[...e,{id:t?Ji():Ki(e),source:t,target:n}]}function bu(e,t,n,r=!1){let a=e.rules;if(!e.enabled){let i=a.find(l=>!l.source),s=t?a.filter(l=>l.source&&gu(l.source,t)):[];a=[{id:i?.id??Ki(s),source:"",target:"off"},...s]}if(!t)for(let i of Po)a.some(s=>s.source===i.path)||(a=[...a,{id:Ji(),source:i.path,target:lr(a,i.path)}]);return Uh({...e,rules:hu(a,t,n)},r)}function Uh(e,t=!1){let n=r=>lr(e.rules,r)!=="off";return{...e,enabled:Po.some(r=>n(r.path))||e.rules.some(r=>r.source&&r.target!=="off")||t&&n("")}}function vu(e){let t=e.rules.some(n=>n.source==="")?e.rules:[{id:Ki(e.rules),source:"",target:"default"},...e.rules];for(let n of Po)lr(t,n.path)==="off"&&(t=hu(t,n.path,"default"));return{...e,enabled:!0,rules:t}}function yu(e,t){return e.rules.filter(n=>n.source.startsWith(t+"/")&&(!Gi.has(t)||n.source.split("/").length>2)).length}function Xi(e,t){let n=s=>new Map(s.rules.map(l=>[l.source,l.target])),r=n(e),a=n(t),i=e.enabled!==t.enabled?1:0;for(let s of new Set([...r.keys(),...a.keys()]))r.get(s)!==a.get(s)&&i++;return i}var Hh=0,Ji=()=>`rule-${Date.now().toString(36)}-${(Hh++).toString(36)}`;var xu={"user-round":'<circle cx="12" cy="8" r="5"/><path d="M20 21a8 8 0 0 0-16 0"/>',monitor:'<rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/>',history:'<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/><path d="M12 7v5l4 2"/>',more:'<circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/>',"cloud-off":'<path d="m2 2 20 20"/><path d="M5.782 5.782A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.307-.193"/><path d="M21.532 16.5A4.5 4.5 0 0 0 17.5 10h-1.79A7.008 7.008 0 0 0 10 5.07"/>',"cloud-check":'<path d="m17 15-5.5 5.5L9 18"/><path d="M5 17.743A7 7 0 1 1 15.71 10h1.79a4.5 4.5 0 0 1 1.5 8.742"/>',"tx-sync":'<path d="m17 2 4 4-4 4"/><path d="M3 11v-1a4 4 0 0 1 4-4h14"/><path d="m7 22-4-4 4-4"/><path d="M21 13v1a4 4 0 0 1-4 4H3"/>',search:'<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>',down:'<path d="m6 9 6 6 6-6"/>',right:'<path d="m9 18 6-6-6-6"/>',folder:'<path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',page:'<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/><path d="M10 9H8"/><path d="M16 13H8"/><path d="M16 17H8"/>',image:'<rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/>',database:'<ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5V19A9 3 0 0 0 21 19V5"/><path d="M3 12A9 3 0 0 0 21 12"/>',attachment:'<path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"/>',download:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/>',trash:'<path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/><line x1="10" x2="10" y1="11" y2="17"/><line x1="14" x2="14" y1="11" y2="17"/>',refresh:'<path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/><path d="M8 16H3v5"/>',cloud:'<path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"/>',archive:'<rect width="20" height="5" x="2" y="3" rx="1"/><path d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"/><path d="M10 12h4"/>',lock:'<rect width="18" height="11" x="3" y="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>',undo:'<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/>',pen:'<path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/>',move:'<path d="M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1"/><path d="M2 13h10"/><path d="m9 16 3-3-3-3"/>',book:'<path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/>',login:'<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" x2="3" y1="12" y2="12"/>',gear:'<circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/>',up:'<path d="m18 15-6-6-6 6"/>',upload:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" x2="12" y1="3" y2="15"/>',"folder-plus":'<path d="M12 10v6"/><path d="M9 13h6"/><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',"folder-open":'<path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"/>',pause:'<rect x="14" y="4" width="4" height="16" rx="1"/><rect x="6" y="4" width="4" height="16" rx="1"/>',play:'<polygon points="6 3 20 12 6 21 6 3"/>',x:'<path d="M18 6 6 18"/><path d="m6 6 12 12"/>',check:'<path d="M20 6 9 17l-5-5"/>',alert:'<circle cx="12" cy="12" r="10"/><line x1="12" x2="12" y1="8" y2="12"/><line x1="12" x2="12.01" y1="16" y2="16"/>',"tx-up":'<path d="m18 9-6-6-6 6"/><path d="M12 3v14"/><path d="M5 21h14"/>',"tx-down":'<path d="M12 17V3"/><path d="m6 11 6 6 6-6"/><path d="M19 21H5"/>',files:'<path d="M20 7h-3a2 2 0 0 1-2-2V2"/><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"/><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"/>',notebook:'<path d="M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4"/><path d="M2 6h4"/><path d="M2 10h4"/><path d="M2 14h4"/><path d="M2 18h4"/><path d="M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z"/>',bot:'<path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/>',puzzle:'<path d="M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z"/>',laptop:'<path d="M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z"/><path d="M20.054 15.987H3.946"/>',info:'<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>',penzor:'<path d="M3 18.5h13.5a4.25 4.25 0 0 0 0-8.5 4.75 4.75 0 0 0-9.5 0 2.5 2.5 0 0 0 5 0"/>'},cr=({p:e})=>o("div",{class:"pz-ov-kick pz-brand",children:[o(W,{n:"penzor"}),o("b",{children:e.t("penzor.title")}),e.locale()==="zh"&&o("span",{children:xe("en","penzor.title")})]}),W=({n:e})=>o("svg",{viewBox:"0 0 24 24","aria-hidden":"true",dangerouslySetInnerHTML:{__html:xu[e]??xu.attachment}});var ku=`
|
|
1406
|
+
`}}function Bu(e,t){let n=e.filter(([l])=>t-l<=3e3);if(n.length<2)return 0;let[r,a]=n[0],[i,s]=n[n.length-1];return i>r?Math.max(0,(s-a)/(i-r)*1e3):0}function $u(e,t){let n=t??{};return e===401?"not_signed_in":n.code==="STORAGE_QUOTA_EXCEEDED"?"quota":n.code==="STORAGE_BUSY"||n.code==="STORAGE_RECONCILIATION_REQUIRED"?"storage_unavailable":n.code==="FILE_TOO_LARGE"||e===413?"too_large":typeof n.detail=="string"&&/quota exceeded/i.test(n.detail)?"quota":n.code==="STORAGE_NOT_CONFIGURED"?"storage_unavailable":`http_${e}`}var Pv=3,Mv=200,cs=32,Rv=e=>typeof e=="string"&&!!e&&e!=="."&&e!==".."&&!/[\\/]/.test(e);function ds(e,t){return t?e.flatMap(n=>{let r=(n.webkitRelativePath||n.name).split("/");return r.slice(1).some(a=>a.startsWith("."))||r.length-1>cs?[]:[{file:n,relDir:r.slice(0,-1)}]}):e.map(n=>({file:n,relDir:[]}))}function Uu(e){let t=Array.from(e.items??[]).filter(a=>a.kind==="file").map(a=>({entry:a.webkitGetAsEntry?.()??null,file:a.getAsFile()})),n=[],r=async(a,i)=>{if(i.length>cs)return!0;if(a.isFile){let c=await new Promise(d=>a.file(d,()=>d(null)));return c&&n.push({file:c,relDir:i}),n.length<=2e3}if(!a.isDirectory)return!0;let s=a.createReader(),l=[];for(;;){let c=await new Promise(d=>s.readEntries(d,()=>d([])));if(!c.length)break;l.push(...c)}l.sort((c,d)=>c.name<d.name?-1:c.name>d.name?1:0);for(let c of l)if(!c.name.startsWith(".")&&!await r(c,[...i,a.name]))return!1;return!0};return(async()=>{for(let a of t)if(a.entry){if(!await r(a.entry,[]))break}else a.file&&n.push({file:a.file,relDir:[]});return n})()}function Hu(e,t=window,n={}){let r=[],a=new Map,i=!1,s=0,l=()=>Date.now(),c=()=>Array.from(t.crypto.getRandomValues(new Uint8Array(16)),_=>_.toString(16).padStart(2,"0")).join("");async function d(){let _=await e.getCloud();if(!_.token)throw new Error("not_signed_in");return _}async function g(_,E={}){let D=await d(),I=Rn(D.base,_);if(!I)throw new Error("bad_path");let ne=await Mn(D,I,{method:E.method??"GET",headers:{...E.body!==void 0?{"Content-Type":"application/json"}:{},...E.projectSource?{"X-Project-Source":E.projectSource}:{}},body:E.body!==void 0?JSON.stringify(E.body):void 0,signal:AbortSignal.timeout(3e4)});return{status:ne.status,json:await ne.json().catch(()=>null)}}let u=_=>{let{attempt:E,relDir:D,abort:I,samples:ne,file:b,dl:S,...R}=_;return{...R,speed:_.state==="active"?Bu(ne,l()):0}},p=_=>_.state==="active"||_.state==="queued"||_.state==="paused",m=(_,E,D=null)=>{_.state=E,_.error=D,_.abort=null,_.finishedAt=l(),_.samples=[];let I=r.filter(ne=>ne.state==="done"||ne.state==="canceled");for(let ne of I.slice(0,Math.max(0,I.length-Mv)))r.splice(r.indexOf(ne),1);v()},f=_=>{let E=String(_?.message||_);return["too_large","quota","not_signed_in","bad_response","popup_blocked","download_unavailable","download_failed"].includes(E)||E.startsWith("http_")?E:"network"};function v(){if(!i)for(let _ of["up","down"]){let E=r.filter(D=>D.kind===_&&D.state==="active").length;for(let D of r){if(E>=Pv)break;if(D.kind!==_||D.state!=="queued")continue;E++,D.state="active",D.startedAt=l(),D.done=0,D.samples=[[l(),0]],D.abort=new AbortController;let I=D.abort.signal,ne=++D.attempt,b=()=>D.attempt===ne&&D.state==="active";(_==="up"?x(D,b,I):U(D,b,I)).catch(S=>{b()&&m(D,"failed",f(S))})}}}let k=(_,E)=>{_.done=E;let D=l(),I=_.samples[_.samples.length-1];for((!I||D-I[0]>=200)&&_.samples.push([D,E]);_.samples.length>2&&D-_.samples[0][0]>3500;)_.samples.shift()};function z(_){let E=s,D=()=>{if(i||E!==s)throw new Error("account_changed")};if(!_.relDir.length)return Promise.resolve(_.targetId);let I=a.get(_.batch);I||a.set(_.batch,I=new Map);let ne=I,b=S=>{if(S===0)return Promise.resolve(_.targetId);let R=_.relDir.slice(0,S).join("/"),$=ne.get(R);return $||($=b(S-1).then(async K=>{D();let Y=_.relDir[S-1],de=await g("/files",{method:"POST",body:{type:"directory",parentId:K,name:Y},projectSource:_.projectSource});if(D(),de.status===201&&typeof de.json?.id=="string")return de.json.id;if(de.status===409){let ve=await g(`/files${K==="ROOT"?"":`?parentId=${encodeURIComponent(K)}`}`,{projectSource:_.projectSource}),$e=Array.isArray(ve.json)?ve.json.find(ge=>ge?.fileType==="directory"&&ge?.name===Y):null;if($e?.id)return String($e.id)}throw new Error(de.status===401?"not_signed_in":`http_${de.status}`)}),$.catch(()=>ne.delete(R)),ne.set(R,$)),$};return b(_.relDir.length)}async function x(_,E,D){let I=_.file;if(I.size>52428800)throw new Error("too_large");let ne=await z(_);if(!E())return;_.parentId=ne;let b=await d();if(!E())return;let S=Rn(b.base,"/files/upload");if(!S)throw new Error("bad_path");let R=`----penzor${c()}`,{head:$,tail:K}=Fu(R,{parentId:ne,autoRename:"true"},_.name,I.type||is(_.name)),Y=await Mn(b,S,{method:"POST",headers:{"Content-Type":`multipart/form-data; boundary=${R}`,..._.projectSource?{"X-Project-Source":_.projectSource}:{}},body:new Blob([$,I,K]),signal:D}),de=await Y.json().catch(()=>null);E()&&(Y.status===201||Y.status===200?(_.fileId=typeof de?.id=="string"?de.id:null,k(_,_.size),m(_,"done")):m(_,"failed",$u(Y.status,de)))}async function w(_,E,D){E.size=Number(_.headers.get("content-length"))||E.size;let I=_.headers.get("content-type")||"";if(!_.body)return _.blob();let ne=_.body.getReader(),b=[],S=0;for(;;){let{done:R,value:$}=await ne.read();if(R)break;if(!D())throw ne.cancel().catch(()=>{}),new Error("aborted");b.push($),S+=$.length,k(E,S)}return S>E.size&&(E.size=S),new Blob(b,{type:I})}let P=(_,E)=>{let D=URL.createObjectURL(_),I=t.document.createElement("a");I.href=D,I.download=E,t.document.body.appendChild(I),I.click(),I.remove(),setTimeout(()=>URL.revokeObjectURL(D),6e4)},L=_=>{let E=t.open("","_blank");return E?(E.opener=null,E.location.replace(_),!0):!1};async function U(_,E,D){let I=_.dl,ne=await d();if(!E())return;let b=Rn(ne.base,I.path);if(!b)throw new Error("bad_path");let S=await Mn(ne,b,{signal:D});if(!S.ok)throw new Error(S.status===401?"not_signed_in":`http_${S.status}`);let R;if(I.mode==="bytes")R=await w(S,_,E);else{let $=await S.json().catch(()=>null);if(I.mode==="text"){if(typeof $?.content!="string")throw new Error("bad_response");R=new Blob([$.content],{type:is(I.name)}),_.size=R.size,k(_,R.size)}else{if(typeof $?.url!="string"||!/^https?:\/\//i.test($.url))throw new Error("bad_response");let K=await fetch($.url,{signal:D,credentials:"omit"}).catch(Y=>{if(D.aborted)throw Y;return null});if(!K){if(!E())return;if(n.openExternal)await n.openExternal($.url);else if(!L($.url))throw new Error("popup_blocked");if(!E())return;m(_,"done");return}if(!K.ok)throw new Error(`http_${K.status}`);R=await w(K,_,E)}}E()&&(n.saveDownload?await n.saveDownload(R,I.name):P(R,I.name),E()&&m(_,"done"))}let H=(_,E)=>{let D={projectSource:void 0,parentId:void 0,targetId:void 0,fileId:null,localPath:null,..._,id:c(),attempt:0,done:0,state:E?"failed":"queued",error:E??null,abort:null,samples:[],speed:0,startedAt:null,finishedAt:E?l():null};return r.push(D),D};e.handle("penzor:upload",async(_,E)=>{let D=s,I=E??{},ne=(Array.isArray(I.files)?I.files:[]).filter(Y=>!!Y&&Y.file instanceof Blob&&typeof Y.file.name=="string"&&Array.isArray(Y.relDir)&&Y.relDir.length<=cs&&Y.relDir.every(Rv)),b=typeof I.parentId=="string"&&Du.test(I.parentId)?I.parentId:null,S=typeof I.projectSource=="string"&&Nu.test(I.projectSource)?I.projectSource:null;if(!ne.length)return{ok:!1,error:"no_files"};if(!b||!S)return{ok:!1,error:"bad_target"};if(ne.length>2e3)return{ok:!1,error:"too_many",max:2e3};if(!(await e.getCloud()).token)return{ok:!1,error:"not_signed_in"};if(D!==s)return{ok:!1,error:"account_changed"};let R=ne.filter(Y=>Y.file.size<=52428800).reduce((Y,de)=>Y+de.file.size,0);try{let Y=await g("/storage/quota"),de=Number(Y.json?.used),ve=Number(Y.json?.quota);if(Y.status===200&&ve>0&&de+R>ve)return{ok:!1,error:"quota",short:de+R-ve}}catch{}if(D!==s)return{ok:!1,error:"account_changed"};if(i)return{ok:!1,error:"disposed"};let $=c(),K=ne.map(Y=>H({kind:"up",name:Y.file.name,size:Y.file.size,projectSource:S,parentId:Y.relDir.length?null:b,targetId:b,batch:$,relDir:Y.relDir,file:Y.file},Y.file.size>52428800?"too_large":void 0).id);return v(),{ok:!0,ids:K,batch:$}}),e.handle("penzor:download",async(_,E)=>{let D=s,I=E??{},ne=Lu.includes(I.mode)?I.mode:null,b=Ou(I.name);if(!ne)return{ok:!1,error:"bad_mode"};if(!b)return{ok:!1,error:"bad_name"};let S=await e.getCloud();if(D!==s)return{ok:!1,error:"account_changed"};if(typeof I.path!="string"||!Rn(S.base,I.path))return{ok:!1,error:"bad_path"};if(!S.token)return{ok:!1,error:"not_signed_in"};if(i)return{ok:!1,error:"disposed"};let R=H({kind:"down",name:b,size:Math.max(0,Number(I.size)||0),relDir:[],batch:typeof I.batch=="string"&&I.batch.length<=64?I.batch:c(),dl:{path:I.path,mode:ne,name:b}});return v(),{ok:!0,id:R.id}}),e.handle("penzor:transfers",()=>({ok:!0,items:r.map(u)})),e.handle("penzor:transfer",(_,E)=>{let D=E??{},I=r.find(b=>b.id===D.id);if(!I)return{ok:!1,error:"not_found"};let ne=()=>{I.abort?.abort(),I.abort=null,I.done=0,I.samples=[]};switch(D.op){case"pause":(I.state==="active"||I.state==="queued")&&(ne(),I.state="paused",v());break;case"resume":I.state==="paused"&&(I.state="queued",v());break;case"cancel":p(I)&&(ne(),m(I,"canceled"));break;case"retry":(I.state==="failed"||I.state==="canceled")&&(I.state="queued",I.error=null,I.finishedAt=null,I.done=0,v());break;case"dismiss":I.state!=="active"&&I.state!=="queued"&&r.splice(r.indexOf(I),1);break;default:return{ok:!1,error:"bad_op"}}return{ok:!0}}),e.handle("penzor:transfers:clear",(_,E)=>{let D=E?.which==="all";for(let I of[...r])(I.state==="done"||I.state==="canceled"||D&&I.state==="failed")&&r.splice(r.indexOf(I),1);return{ok:!0}});let B=_=>{r.some(p)&&(_.preventDefault(),_.returnValue="")};t.addEventListener("beforeunload",B);let G=()=>{s++;for(let _ of r)_.state="canceled",_.abort?.abort();r.length=0,a.clear()};return{reset:G,dispose(){i=!0,t.removeEventListener("beforeunload",B),G()}}}var No=[{id:"notes",path:"Amadeus"},{id:"agents",path:"agents"},{id:"profile",path:"human"},{id:"plugins",path:"Plugins"}],us=new Set(["Amadeus","agents"]),gr=(e,t)=>gu(t,e)?.target??"off",qu=(e,t)=>e===t||e.startsWith(t+"/"),Iv=e=>No.some(t=>qu(e,t.path)),ps=e=>e.some(t=>t.id==="default")?ms():"default",jt=(e,t)=>e.enabled?gr(e.rules,t):"off";function Wu(e,t,n){n==="off"&&(e=e.filter(i=>t?!i.source.startsWith(t+"/"):!i.source||Iv(i.source)));let r=e.find(i=>i.source===t),a=e.filter(i=>i!==r);return t&&gr(a,t)===n?a:r?e.map(i=>i===r?{...i,target:n}:i):[...e,{id:t?ms():ps(e),source:t,target:n}]}function Vu(e,t,n,r=!1){let a=e.rules;if(!e.enabled){let i=a.find(l=>!l.source),s=t?a.filter(l=>l.source&&qu(l.source,t)):[];a=[{id:i?.id??ps(s),source:"",target:"off"},...s]}if(!t)for(let i of No)a.some(s=>s.source===i.path)||(a=[...a,{id:ms(),source:i.path,target:gr(a,i.path)}]);return Lv({...e,rules:Wu(a,t,n)},r)}function Lv(e,t=!1){let n=r=>gr(e.rules,r)!=="off";return{...e,enabled:No.some(r=>n(r.path))||e.rules.some(r=>r.source&&r.target!=="off")||t&&n("")}}function ju(e){let t=e.rules.some(n=>n.source==="")?e.rules:[{id:ps(e.rules),source:"",target:"default"},...e.rules];for(let n of No)gr(t,n.path)==="off"&&(t=Wu(t,n.path,"default"));return{...e,enabled:!0,rules:t}}function Gu(e,t){return e.rules.filter(n=>n.source.startsWith(t+"/")&&(!us.has(t)||n.source.split("/").length>2)).length}function fs(e,t){let n=s=>new Map(s.rules.map(l=>[l.source,l.target])),r=n(e),a=n(t),i=e.enabled!==t.enabled?1:0;for(let s of new Set([...r.keys(),...a.keys()]))r.get(s)!==a.get(s)&&i++;return i}var Dv=0,ms=()=>`rule-${Date.now().toString(36)}-${(Dv++).toString(36)}`;var Xu={globe:'<circle cx="12" cy="12" r="9"/><path d="M3 12h18"/><path d="M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18"/>',"user-round":'<circle cx="12" cy="8" r="5"/><path d="M20 21a8 8 0 0 0-16 0"/>',monitor:'<rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/>',history:'<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/><path d="M12 7v5l4 2"/>',more:'<circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/>',"cloud-off":'<path d="m2 2 20 20"/><path d="M5.782 5.782A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.307-.193"/><path d="M21.532 16.5A4.5 4.5 0 0 0 17.5 10h-1.79A7.008 7.008 0 0 0 10 5.07"/>',"cloud-check":'<path d="m17 15-5.5 5.5L9 18"/><path d="M5 17.743A7 7 0 1 1 15.71 10h1.79a4.5 4.5 0 0 1 1.5 8.742"/>',"tx-sync":'<path d="m17 2 4 4-4 4"/><path d="M3 11v-1a4 4 0 0 1 4-4h14"/><path d="m7 22-4-4 4-4"/><path d="M21 13v1a4 4 0 0 1-4 4H3"/>',search:'<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>',down:'<path d="m6 9 6 6 6-6"/>',right:'<path d="m9 18 6-6-6-6"/>',folder:'<path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',page:'<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/><path d="M10 9H8"/><path d="M16 13H8"/><path d="M16 17H8"/>',image:'<rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/>',database:'<ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5V19A9 3 0 0 0 21 19V5"/><path d="M3 12A9 3 0 0 0 21 12"/>',attachment:'<path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"/>',download:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/>',trash:'<path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/><line x1="10" x2="10" y1="11" y2="17"/><line x1="14" x2="14" y1="11" y2="17"/>',refresh:'<path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/><path d="M8 16H3v5"/>',cloud:'<path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"/>',archive:'<rect width="20" height="5" x="2" y="3" rx="1"/><path d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"/><path d="M10 12h4"/>',lock:'<rect width="18" height="11" x="3" y="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>',undo:'<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/>',pen:'<path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/>',move:'<path d="M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1"/><path d="M2 13h10"/><path d="m9 16 3-3-3-3"/>',book:'<path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/>',login:'<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" x2="3" y1="12" y2="12"/>',gear:'<circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/>',up:'<path d="m18 15-6-6-6 6"/>',upload:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" x2="12" y1="3" y2="15"/>',"folder-plus":'<path d="M12 10v6"/><path d="M9 13h6"/><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',"folder-open":'<path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"/>',pause:'<rect x="14" y="4" width="4" height="16" rx="1"/><rect x="6" y="4" width="4" height="16" rx="1"/>',play:'<polygon points="6 3 20 12 6 21 6 3"/>',x:'<path d="M18 6 6 18"/><path d="m6 6 12 12"/>',check:'<path d="M20 6 9 17l-5-5"/>',alert:'<circle cx="12" cy="12" r="10"/><line x1="12" x2="12" y1="8" y2="12"/><line x1="12" x2="12.01" y1="16" y2="16"/>',"tx-up":'<path d="m18 9-6-6-6 6"/><path d="M12 3v14"/><path d="M5 21h14"/>',"tx-down":'<path d="M12 17V3"/><path d="m6 11 6 6 6-6"/><path d="M19 21H5"/>',files:'<path d="M20 7h-3a2 2 0 0 1-2-2V2"/><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"/><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"/>',notebook:'<path d="M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4"/><path d="M2 6h4"/><path d="M2 10h4"/><path d="M2 14h4"/><path d="M2 18h4"/><path d="M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z"/>',bot:'<path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/>',puzzle:'<path d="M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z"/>',laptop:'<path d="M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z"/><path d="M20.054 15.987H3.946"/>',info:'<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>',penzor:'<path d="M3 18.5h13.5a4.25 4.25 0 0 0 0-8.5 4.75 4.75 0 0 0-9.5 0 2.5 2.5 0 0 0 5 0"/>'},hr=({p:e})=>o("div",{class:"pz-ov-kick pz-brand",children:[o(Q,{n:"penzor"}),o("b",{children:e.t("penzor.title")}),e.locale()==="zh"&&o("span",{children:be("en","penzor.title")})]}),Q=({n:e})=>o("svg",{viewBox:"0 0 24 24","aria-hidden":"true",dangerouslySetInnerHTML:{__html:Xu[e]??Xu.attachment}});var Ju=`
|
|
1401
1407
|
.pz-rules{max-width:960px}.pz-rules .pz-rule-head,.pz-rules .pz-rule-tools{display:flex;gap:12px;align-items:center;justify-content:space-between}
|
|
1402
1408
|
.pz-rules .pz-rule-head h1{margin:0}.pz-rules .pz-rule-meta{color:var(--text-muted);font-size:var(--ui-font-meta);margin:6px 0 16px}
|
|
1403
1409
|
.pz-rules .pz-rule-tools{margin-bottom:12px}.pz-rules .pz-rule-enable{display:flex;gap:8px;align-items:center;font-size:var(--ui-font-body)}.pz-rules input[type=checkbox]{accent-color:var(--signal-mark)}
|
|
@@ -1431,7 +1437,146 @@ Content-Type: ${r}\r
|
|
|
1431
1437
|
.pz-cs .pz-cs-log{margin-top:8px}.pz-cs .pz-cs-log .f{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 2px;border-top:var(--border-width) solid var(--border);font-size:var(--ui-font-body)}.pz-cs .pz-cs-log .f:first-child{border-top:0}.pz-cs .pz-cs-log .f>svg{color:var(--text-faint)}.pz-cs .pz-cs-log small{color:var(--text-muted);font-size:var(--ui-font-meta)}.pz-cs .pz-cs-log .f span{overflow-wrap:anywhere}
|
|
1432
1438
|
.pz-cs h3.pz-cs-sec{display:flex;align-items:center;gap:10px;margin:26px 0 0;font-size:var(--ui-font-heading);font-weight:600}
|
|
1433
1439
|
@media(max-width:720px){.pz-cs .pz-cs-child{padding-left:16px}.pz-cs .pz-cs-bar{flex-wrap:wrap}.pz-cs .pz-cs-bar .txt{flex-basis:calc(100% - 30px)}}
|
|
1434
|
-
`;async function dn(e,...t){let n=se().cloudInvoke;if(!n)throw Error("content_sync_unavailable");let r=await n(e,...t);if(!r?.ok)throw Error(r?.error??"content_sync_unavailable");return r.value}var Mo=e=>e instanceof Error?e.message:String(e),qh={notes:{icon:"notebook",title:"penzor.cat.notes",desc:"penzor.cat.notesDesc"},agents:{icon:"bot",title:"penzor.cat.agents",desc:"penzor.cat.agentsDesc"},profile:{icon:"user-round",title:"penzor.cat.profile",desc:"penzor.cat.profileDesc"},plugins:{icon:"puzzle",title:"penzor.cat.plugins",desc:"penzor.cat.pluginsDesc"}};function Yi({on:e,disabled:t,label:n,onToggle:r}){return o("button",{type:"button",role:"switch",class:`settings-switch${e?" active":""}`,"aria-checked":e,"aria-label":n,disabled:t,onClick:a=>{a.stopPropagation(),r(!e)},children:o("span",{})})}function wu({p:e,legacy:t}){let n=e.t,[r,a]=A(null),[i,s]=A(!0),[l,c]=A(null),[d,g]=A(null),[u,p]=A(0),[m,f]=A(!1),[v,w]=A(!1),[k,z]=A(null),[x,M]=A(!1),[L,H]=A(!1),[V,ee]=A(!1),[te,S]=A({}),[E,O]=A(null),[I,ne]=A(!1),[b,T]=A(null),[R,K]=A(null),X=ce(!0),Y=ce(!1),me=ce(null),Le=async()=>{try{let D=await dn($t.get);if(!D?.available){X.current&&s(!1);return}X.current&&(Y.current=!0,a(D),s(!0))}catch(D){X.current&&(!Y.current&&/unavailable|not a Forsion Extend channel/i.test(String(D))?s(!1):z(Mo(D)))}};oe(()=>{X.current=!0,Le();let D=setInterval(()=>void Le(),1e3);return()=>{X.current=!1,clearInterval(D)}},[]),oe(()=>{if(!E&&!I)return;let D=re=>{re instanceof KeyboardEvent&&re.key!=="Escape"||re.type==="mousedown"&&re.target?.closest?.(".pz-cs-menu")||(O(null),ne(!1))};return document.addEventListener("mousedown",D),document.addEventListener("keydown",D),()=>{document.removeEventListener("mousedown",D),document.removeEventListener("keydown",D)}},[E,I]);let je=!!r&&!r.config.enabled&&r.config.revision===0&&!L,he=Ot(()=>r&&je?vu(r.config):null,[je,r?.config.revision]),Te=r?l??he??r.config:null,ft=!!r&&!x&&(je||!!l&&Xi(r.config,l)>0),Ct=ft&&Te?JSON.stringify(Te)+"#"+u:"";if(oe(()=>{if(g(null),!Ct)return;let D=!0,re=setTimeout(()=>{dn($t.preview,Te).then(we=>{D&&X.current&&g(we)},we=>{!D||!X.current||(/config_changed/.test(Mo(we))?c(null):z(Mo(we)))})},400);return()=>{D=!1,clearTimeout(re)}},[Ct]),!i)return t;if(!r||!Te)return o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:k??n("penzor.loading")})});if(x)return o(Vh,{p:e,snap:r,refresh:Le,back:()=>M(!1)});let Tt=`device-${r.deviceId}`,on=r.devices.filter(D=>D.id!==r.deviceId),bt=(r.others?.files??0)>0,lt=D=>r.sources.find(re=>re.path===D),At=D=>r.sources.filter(re=>re.path.startsWith(D+"/")&&!re.path.slice(D.length+1).includes("/")),vt=D=>D==="default"?n("penzor.scope.all"):D===Tt?n("penzor.scope.self"):n("penzor.scope.with",{name:r.devices.find(re=>`device-${re.id}`===D)?.name??D.slice(7,15)}),ve=(D,re,we)=>{c(bu(Te,D,re,bt)),K({path:D,name:we,target:re}),O(null),z(null),f(!1)},yt=async D=>{w(!0),z(null);try{await D(),await Le()}catch(re){z(Mo(re))}finally{w(!1)}},Ae=()=>void yt(async()=>{try{await dn($t.apply,d.token)}catch(we){if(/preview_(changed|expired)/.test(Mo(we))){f(!0),p(Qe=>Qe+1);return}throw we}let D=Ut(Te,"Plugins")==="default",re=e.syncState()?.plugins;e.hasSync()&&re&&re.on!==D&&e.setSync("plugins",D),c(null),H(!1),f(!1)}),Hn=(D,re,we)=>{D.stopPropagation();let Qe=D.currentTarget.getBoundingClientRect(),it=me.current.getBoundingClientRect(),We=document.body.currentCSSZoom||1;O(E?.path===re?null:{path:re,name:we,x:(Qe.left-it.left)/We-4,y:(Qe.bottom-it.top)/We+4})},ct=({path:D,name:re})=>{let we=Ut(Te,D);return o("button",{type:"button",class:`pz-scope${we!=="default"?" is-alt":""}`,"aria-haspopup":"menu","aria-expanded":E?.path===D,onClick:Qe=>Hn(Qe,D,re),children:[o(W,{n:we==="default"?"cloud":we===Tt?"laptop":"monitor"}),vt(we),o(W,{n:"down"})]})},Xe=wn(r),xt=r.jobs.filter(D=>D.state==="queued"||D.state==="active"||D.state==="paused"),mt=Oi(r),Et=Xe.kind==="off"?o("span",{class:"pz-cs-status",children:[o(W,{n:"cloud-off"}),n("penzor.cs.statusOff")]}):Xe.kind==="paused"?o("span",{class:"pz-cs-status",children:[o(W,{n:"pause"}),n("penzor.cs.statusPaused")]}):Xe.kind==="run"?o("span",{class:"pz-cs-status is-ok",children:[o("span",{class:"pz-ring",style:`--p:${Xe.pct}`}),n("penzor.cs.statusRun",{pct:Xe.pct})]}):Xe.kind==="scan"?o("span",{class:"pz-cs-status is-ok",children:[o(W,{n:"refresh"}),n("penzor.cs.statusScan")]}):Xe.kind==="warn"?o("span",{class:"pz-cs-status is-warn",children:[o(W,{n:"alert"}),n("penzor.cs.statusWarn",{n:Xe.n})]}):o("span",{class:"pz-cs-status is-ok",children:[o(W,{n:"cloud-check"}),Xe.at?n("penzor.cs.statusOkAgo",{time:zn(Xe.at,e.locale())}):n("penzor.cs.statusOk")]}),Ht=()=>{let D=b;T(null),D!=null&&D.trim()!==r.deviceName&&yt(()=>dn($t.rename,D.trim()))},nt=xt.find(D=>D.state==="active")??xt[0],Tn=(D,re)=>{let we=qh[D],Qe=Ut(Te,re)!=="off",it=Gi.has(re)&&At(re).length>0,We=!!te[re]&&Qe,Pt=yu(Te,re),rn=lt(re),An=D==="notes"?rn?n("penzor.cat.files",{n:(rn.files??0).toLocaleString(),size:e.b(rn.size)}):"":D==="agents"?(()=>{let Fe=At(re),wt=Fe.filter(gt=>Ut(Te,gt.path)!=="off").length;return wt<Fe.length?n("penzor.cat.agentsSome",{n:Fe.length,m:wt}):n("penzor.cat.agentsN",{n:Fe.length})})():D==="profile"?n("penzor.cat.profileOn"):n("penzor.cat.pluginsN",{n:At(re).length}),En=o("b",{children:[n(we.title),it&&o("span",{class:"pz-cs-chev",children:o(W,{n:"right"})})]}),un=o("small",{children:Qe?o(N,{children:[o(ct,{path:re,name:n(we.title)}),An&&o(N,{children:[o("span",{class:"pz-sep",children:"\xB7"}),o("span",{children:An})]}),Pt>0&&o(N,{children:[o("span",{class:"pz-sep",children:"\xB7"}),o("button",{class:"pz-link",onClick:()=>M(!0),children:n("penzor.cat.custom",{n:Pt})})]})]}):n(we.desc)});return o(N,{children:[o("div",{class:`pz-sync-row${it&&Qe?" is-click":""}${We?" is-open":""}`,children:[it&&Qe?o("div",{class:"pz-sync-main",role:"button",tabIndex:0,"aria-expanded":We,onClick:()=>S({...te,[re]:!We}),onKeyDown:Fe=>{Fe.key==="Enter"&&S({...te,[re]:!We})},children:[o("span",{class:"pz-tile",children:o(W,{n:we.icon})}),o("span",{class:"pz-sync-txt",children:[En,un]})]}):o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(W,{n:we.icon})}),o("span",{class:"pz-sync-txt",children:[En,un]})]}),o(Yi,{on:Qe,label:n(we.title),disabled:v,onToggle:Fe=>ve(re,Fe?"default":"off",n(we.title))})]}),We&&At(re).map(Fe=>{let wt=Fe.path.slice(re.length+1),gt=Ut(Te,Fe.path)!=="off";return o("div",{class:"pz-cs-child",title:Fe.path,children:[o("span",{children:[o("b",{children:[wt,D==="notes"&&o("span",{class:"pz-cs-faint",children:n("penzor.cat.files",{n:(Fe.files??0).toLocaleString(),size:e.b(Fe.size)})})]}),gt?o(ct,{path:Fe.path,name:wt}):o("span",{class:"pz-cs-faint",children:n("penzor.cat.notSynced")})]}),o(Yi,{on:gt,label:wt,disabled:v,onToggle:Mt=>ve(Fe.path,Mt?Ut(Te,re):"off",wt)})]},Fe.path)})]},re)},Je=ft&&o("div",{class:"pz-cs-bar",role:"region","aria-label":n("penzor.rules.previewTitle"),children:[o(W,{n:"alert"}),o("span",{class:"txt",children:[je?d?n("penzor.cs.barFirst",{up:d.upload,down:d.download}):n("penzor.cs.firstTitle"):(()=>{let D=Xi(r.config,Te);return D===1&&R&&Ut(Te,R.path)===R.target&&Ut(r.config,R.path)!==R.target?n("penzor.cs.barOne",{name:R.name,scope:R.target==="off"?n("penzor.cs.offName"):vt(R.target)}):n("penzor.cs.barChanged",{n:D})})(),o("small",{children:m?n("penzor.cs.barRecount"):d?[je?n("penzor.cs.barSize",{size:e.b(d.bytes)}):n("penzor.cs.barCounts",{up:d.upload,down:d.download}),d.conflicts>0?n("penzor.cs.barConflicts",{n:d.conflicts}):"",je?n("penzor.cs.noDelete"):""].filter(Boolean).join(" \xB7 "):n("penzor.cs.barCounting")})]}),o("button",{class:"pz-btn",disabled:v,onClick:()=>{je&&H(!0),c(null),f(!1)},children:n(je?"penzor.cs.later":"penzor.cs.undo")}),o("button",{class:"pz-btn pri",disabled:v||!d||r.running,onClick:Ae,children:n(je?"penzor.cs.start":"penzor.cs.confirm")})]}),kt=D=>D.direction==="upload"?"tx-up":D.direction==="download"?"tx-down":"tx-sync";return o("div",{class:"pz-scroll",children:[o("style",{children:ku}),o("div",{class:"pz-col pz-cs",ref:me,children:[o(cr,{p:e}),o("div",{class:"pz-cs-head",children:[o("h1",{class:"pz-h1",children:n("penzor.sync.title")}),Et,o("span",{class:"grow"}),o("button",{class:"pz-btn",disabled:v||r.running||!r.config.enabled,onClick:()=>void yt(()=>dn($t.run)),children:[o(W,{n:"refresh"}),n("penzor.rules.run")]}),o("button",{class:"pz-btn","aria-label":n("penzor.cs.more"),"aria-haspopup":"menu",onClick:D=>{D.stopPropagation(),ne(!I)},children:o(W,{n:"more"})})]}),I&&o("div",{class:"pz-cs-menu",style:"right:0;top:64px",role:"menu",children:o("button",{class:"it",role:"menuitem",onClick:()=>{ne(!1),M(!0)},children:[o(W,{n:"gear"}),o("span",{children:o("b",{children:n("penzor.cs.advanced")})}),o("span",{})]})}),o("div",{class:"pz-cs-meta",children:[o("span",{class:"pz-cs-dev",children:[o(W,{n:"laptop"}),b!=null?o(N,{children:[n("penzor.cs.thisComputerLabel"),o("input",{value:b,maxLength:64,"aria-label":n("penzor.cs.rename"),ref:D=>D?.focus(),onInput:D=>T(D.currentTarget.value),onKeyDown:D=>{D.key==="Enter"&&Ht(),D.key==="Escape"&&T(null)},onBlur:Ht}),o("span",{class:"pz-cs-faint",children:n("penzor.cs.renameHint")})]}):o(N,{children:[n("penzor.cs.thisComputer",{name:r.deviceName}),o("button",{class:"pz-link","aria-label":n("penzor.cs.rename"),title:n("penzor.cs.rename"),onClick:()=>T(r.deviceName),children:o(W,{n:"pen"})})]})]}),o("span",{children:on.length?n("penzor.cs.othersN",{n:on.length,names:on.map(D=>D.name).join(e.locale()==="zh"?"\u3001":", ")}):n("penzor.cs.noOthers")}),o("button",{class:"pz-link",onClick:()=>ee(!V),children:[o(W,{n:"history"})," ",n("penzor.cs.log")]})]}),(k||r.error)&&o("p",{role:"alert",class:"pz-rule-error",style:"margin-top:14px",children:k??r.error}),je&&o("div",{class:"pz-sync-ask",children:[o("h4",{children:n("penzor.cs.firstTitle")}),o("p",{children:n("penzor.cs.firstBody")})]}),nt&&o("div",{class:"pz-cs-act",children:[o("div",{class:"row1",children:[o(W,{n:kt(nt)}),o("span",{class:"grow",children:[n(nt.direction==="download"?"penzor.cs.down":"penzor.cs.up",{name:nt.path.slice(nt.path.lastIndexOf("/")+1)}),nt.size!=null&&o("small",{children:[" ",e.b(nt.done)," / ",e.b(nt.size)]})]}),o("button",{class:"pz-btn",disabled:v,onClick:()=>void yt(()=>dn($t.pause,!r.paused)),children:[o(W,{n:r.paused?"play":"pause"}),n(r.paused?"penzor.rules.resume":"penzor.rules.pause")]})]}),Xe.kind==="run"&&o("div",{class:"pz-bar",children:o("span",{style:`width:${Xe.pct}%`})}),xt.length>1&&o("div",{class:"more",children:n("penzor.cs.waiting",{n:xt.length-1})})]}),mt.length>0&&!nt&&o("div",{class:"pz-cs-act is-warn",children:o("div",{class:"row1",children:[o(W,{n:"alert"}),o("span",{class:"grow",children:[n("penzor.cs.failedN",{n:mt.length}),o("small",{children:[" ",mt[0].error??""]})]}),o("button",{class:"pz-btn",disabled:v||r.running,onClick:()=>void yt(()=>dn($t.retry)),children:n("penzor.cs.retry")}),o("button",{class:"pz-btn",onClick:()=>ee(!0),children:n("penzor.cs.seeLog")})]})}),o("div",{class:"pz-sync-card",children:[Po.map(D=>Tn(D.id,D.path)),bt&&o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(W,{n:"folder"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:n("penzor.cat.others")}),o("small",{children:Ut(Te,"")!=="off"?o(N,{children:[o(ct,{path:"",name:n("penzor.cat.others")}),o("span",{class:"pz-sep",children:"\xB7"}),o("span",{children:n("penzor.cat.files",{n:r.others.files.toLocaleString(),size:e.b(r.others.size)})})]}):n("penzor.cat.othersDesc")})]})]}),o(Yi,{on:Ut(Te,"")!=="off",label:n("penzor.cat.others"),disabled:v,onToggle:D=>ve("",D?"default":"off",n("penzor.cat.others"))})]})]}),o("p",{class:"pz-cs-note",children:n("penzor.cs.note")}),V&&o(N,{children:[o("h3",{class:"pz-cs-sec",children:[n("penzor.cs.log"),o("span",{class:"grow"}),mt.length>0&&o("button",{class:"pz-btn",disabled:v||r.running,onClick:()=>void yt(()=>dn($t.retry)),children:n("penzor.cs.retry")})]}),o("div",{class:"pz-cs-log",children:r.jobs.length?r.jobs.slice(-30).reverse().map(D=>o("div",{class:"f",children:[o(W,{n:kt(D)}),o("span",{children:[D.path,D.error&&o("small",{children:[" \xB7 ",D.error]})]}),o("small",{children:[n(`penzor.rules.state.${D.state}`)," \xB7 ",zn(D.finishedAt??D.at,e.locale())]})]},D.id)):o("p",{class:"pz-cs-note",children:n("penzor.cs.logEmpty")})}),o("p",{class:"pz-cs-note",children:n("penzor.cs.logNote")})]}),Je,E&&o("div",{class:"pz-cs-menu",role:"menu",style:`left:${E.x}px;top:${E.y}px`,children:[o("div",{class:"cap",children:n("penzor.scope.menuTitle",{name:E.name})}),["default",Tt,...on.map(D=>`device-${D.id}`)].map((D,re)=>o(N,{children:[re===2&&o("hr",{}),o("button",{class:"it",role:"menuitemradio","aria-checked":Ut(Te,E.path)===D,onClick:()=>ve(E.path,D,E.name),children:[o(W,{n:D==="default"?"cloud":D===Tt?"laptop":"monitor"}),o("span",{children:[o("b",{children:vt(D)}),re<2&&o("small",{children:n(re===0?"penzor.scope.allDesc":"penzor.scope.selfDesc")})]}),Ut(Te,E.path)===D?o("span",{class:"tick",children:o(W,{n:"check"})}):o("span",{})]})]},D)),E.path==="human"&&o("div",{class:"cap",children:n("penzor.scope.calendarNote")}),o("div",{class:"cap",children:n("penzor.scope.menuFoot")})]})]})]})}function Vh({p:e,snap:t,refresh:n,back:r}){let a=e.t,[i,s]=A(null),[l,c]=A(null),[d,g]=A(!1),[u,p]=A(null),m=i??t.config,f=!!i,v=x=>x==="default"?a("penzor.rules.default"):x==="off"?a("penzor.rules.off"):t.devices.find(M=>"device-"+M.id===x)?.name??`${a("penzor.rules.device")} ${x.slice(7)}`,w=x=>{let M=structuredClone(m);x(M),s(M),c(null),p(null)},k=async x=>{g(!0),p(null);try{await x(),await n()}catch(M){p(Mo(M))}finally{g(!1)}},z=[...new Set(["default",`device-${t.deviceId}`,...t.devices.map(x=>`device-${x.id}`),...m.rules.map(x=>x.target),"off"])];return o("div",{class:"pz-scroll",children:[o("style",{children:ku}),o("div",{class:"pz-col pz-rules",children:[o("button",{class:"pz-link",onClick:r,children:["\u2190 ",a("penzor.cs.backSimple")]}),o("div",{class:"pz-rule-head",children:o("h1",{class:"pz-h1",children:a("penzor.cs.advanced")})}),o("p",{class:"pz-rule-meta",children:t.deviceName}),u&&o("p",{role:"alert",class:"pz-rule-error",children:u}),o("div",{class:"pz-rule-tools",children:[o("label",{class:"pz-rule-enable",children:[o("input",{type:"checkbox",checked:m.enabled,onChange:x=>w(M=>{M.enabled=x.currentTarget.checked})}),a("penzor.rules.enable")]}),o("button",{class:"pz-btn",onClick:()=>w(x=>x.rules.push({id:`rule-${crypto.randomUUID()}`,source:"",target:"default"})),children:a("penzor.rules.add")})]}),o("div",{class:"pz-rule-table",children:[o("div",{class:"pz-rule-row pz-rule-label",children:[o("span",{children:a("penzor.rules.source")}),o("span",{children:a("penzor.rules.destination")}),o("span",{})]}),m.rules.map((x,M)=>o("div",{class:"pz-rule-row",children:[o("input",{"aria-label":`${a("penzor.rules.source")} ${M+1}`,list:"pz-content-sources",placeholder:"Forsion",value:x.source,onInput:L=>w(H=>{H.rules[M].source=L.currentTarget.value,delete H.rules[M].sourceId})}),o("select",{"aria-label":`${a("penzor.rules.destination")} ${M+1}`,value:x.target,onChange:L=>w(H=>{H.rules[M].target=L.currentTarget.value}),children:z.map(L=>o("option",{value:L,children:v(L)},L))}),o("button",{class:"pz-btn","aria-label":`${a("penzor.rules.remove")} ${M+1}`,onClick:()=>w(L=>{L.rules.splice(M,1)}),children:"\xD7"})]},x.id))]}),o("datalist",{id:"pz-content-sources",children:t.sources.filter(x=>x.kind==="folder").map(x=>o("option",{value:x.path},x.path))}),o("p",{class:"pz-rule-note",children:[a("penzor.rules.inherit"),o("br",{}),a("penzor.rules.namespace"),o("br",{}),a("penzor.rules.human")]}),o("div",{class:"pz-rule-actions",children:[f&&o("button",{class:"pz-btn",onClick:()=>{s(null),c(null)},children:a("penzor.cancel")}),o("button",{class:"pz-btn pri",disabled:d||t.running,onClick:()=>void k(async()=>c(await dn($t.preview,m))),children:a("penzor.rules.preview")})]}),l&&o("div",{class:"pz-rule-preview",role:"region","aria-label":a("penzor.rules.previewTitle"),children:[o("h2",{children:a("penzor.rules.previewTitle")}),o("p",{children:a("penzor.rules.previewCounts",{up:l.upload,down:l.download,conflicts:l.conflicts})}),o("p",{class:"pz-rule-note",children:a("penzor.rules.retain")}),o("div",{class:"pz-rule-actions",children:[o("button",{class:"pz-btn",onClick:()=>c(null),children:a("penzor.rules.back")}),o("button",{class:"pz-btn pri",disabled:d,onClick:()=>void k(async()=>{await dn($t.apply,l.token),s(null),c(null)}),children:a("penzor.rules.apply")})]})]})]})]})}function _u(e){let[,t]=A(0);oe(()=>{let n=e.subscribe(()=>t(r=>r+1));return t(r=>r+1),n},[e])}function oa(e){return o("div",{ref:e.rootRef,class:`${e.side?"pz-side":"pz"}${e.extra?` ${e.extra}`:""}`,lang:e.p.locale()==="zh"?"zh-CN":"en",...e.on,children:[o("style",{children:au}),e.children]})}var Io=({pct:e,warn:t})=>o("div",{class:`pz-bar${t?" is-low":""}`,children:o("span",{style:{width:`${Math.max(0,Math.min(100,e)).toFixed(1)}%`}})});function Cu({p:e}){_u(e);let t=ce(null),n=ce(null);oe(()=>{e.enter(),e.refresh(),co(e.loc())&&e.ctx.closeView?.("penzor-info",{collapse:!0});let p=t.current;if(!p||typeof IntersectionObserver>"u")return;let m=!0;e.setVisible(!0);let f=new IntersectionObserver(v=>{let w=v.some(k=>k.isIntersecting);w&&!m&&(e.enter(),e.refresh()),m=w,e.setVisible(w)});return f.observe(p),()=>{f.disconnect(),e.setVisible(!1)}},[e]);let[r,a]=A(null),i=p=>Array.from(p.dataTransfer?.types??[]).includes("Files"),s=p=>{let m=p.target?.closest?.("tr[data-dir-id]");return m?{id:m.dataset.dirId,name:m.dataset.dirName??""}:null},l=()=>e.appStack()[e.appStack().length-1]?.name??e.t("penzor.drive"),c=e.canWrite()&&e.auth()==="in"?{onDragOver:p=>{if(!i(p))return;p.preventDefault(),p.stopPropagation(),p.dataTransfer&&(p.dataTransfer.dropEffect="copy");let m=s(p),f=m?.name||l();(r?.place!==f||r?.target?.id!==m?.id)&&a({place:f,target:m})},onDragLeave:p=>{t.current?.contains(p.relatedTarget)||a(null)},onDrop:p=>{if(!i(p))return;p.preventDefault(),p.stopPropagation();let m=s(p);a(null);let f=se().getPathForFile;if(!f){p.dataTransfer&&e.upload(fu(p.dataTransfer),m);return}let v=Array.from(p.dataTransfer?.files??[]).map(w=>{try{return f(w)}catch{return""}}).filter(Boolean);e.upload(v,m)}}:{};oe(()=>{e.canWrite()||a(null)},[e.canWrite()]);let d=e.t,g=e.auth(),u;return g==="out"?u=o(Tu,{p:e}):e.loc().kind==="sync-home"?u=o(wu,{p:e,legacy:o(Wh,{p:e})}):e.snap()?e.error()?u=o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:e.error()})}):e.loc().kind==="overview"?u=o(Xh,{p:e,upload:()=>{e.go("app:penzor"),n.current?.click()}}):u=o(Yh,{p:e,dropDir:r?.target?.id??null}):u=o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:e.error()??d("penzor.loading")})}),o(oa,{p:e,rootRef:t,extra:r?"pz-drop":"",on:c,children:[o("input",{class:"pz-root-upload",ref:n,type:"file",multiple:!0,hidden:!0,onChange:p=>{let m=p.currentTarget,f=se().getPathForFile,v=f?Array.from(m.files??[]).map(w=>f(w)).filter(Boolean):Wi(Array.from(m.files??[]),!1);e.go("app:penzor"),e.upload(v),m.value=""}}),u,r&&o("div",{class:"pz-dropbar",children:o("span",{children:[o(W,{n:"upload"}),d("penzor.drop.to",{place:r.place})]})}),e.menu()&&o(tb,{p:e}),o(sb,{p:e})]})}var jh={dropbox:"Dropbox",s3:"S3",webdav:"WebDAV"};function Zi({on:e,disabled:t,label:n,title:r,onToggle:a}){return o("button",{type:"button",role:"switch",class:`settings-switch${e?" active":""}`,"aria-checked":e,"aria-label":n,title:r,disabled:t,onClick:i=>{i.stopPropagation(),a(!e)},children:o("span",{})})}var Qi=({tone:e,text:t,title:n})=>o("span",{class:`pz-sync-state is-${e}`,title:n,children:[e!=="off"&&o("i",{}),t]});function Wh({p:e}){let t=e.t,n=e.syncState(),[r,a]=A(!1);if(!n)return o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:t("penzor.loading")})});if(!n.signedIn)return o(Tu,{p:e});let i=e.snap(),s=n.notes,l=t("penzor.ledger.sync"),c=s.maxBytes??i?.sync?.maxBytes??0,d=i?.sync?.maxFileBytes||50*1024*1024,g=s.vault?i?.sync?.vaults.find(S=>S.vault===s.vault)??null:null,u=Od(n,c),p=s.on?s.last?.skippedLarge??0:0,m=s.rootName?t("penzor.sync.notesNamed",{name:s.rootName}):t("penzor.sync.notesPlain"),f=()=>e.openSync(),v=()=>{if(s.pending)return{tone:"wait",text:t("penzor.sync.waiting")};if(!s.on)return{tone:"off",text:t("penzor.sync.off")};let S=sr(n);if(S!=null)return{tone:"ok",text:S>0?t("penzor.sync.running",{pct:Math.round(S*100)}):t("penzor.sync.runningPlain")};if(u)return{tone:"warn",text:t("penzor.sync.overQuota")};if(Ni(n))return{tone:"warn",text:t("penzor.sync.failed")};if(s.backend==="folder")return{tone:"ok",text:t("penzor.sync.toFolder")};let E=jh[s.backend];return E?{tone:"ok",text:t("penzor.sync.to",{name:E})}:s.last?{tone:"ok",text:s.localBytes!=null?t("penzor.sync.doneSize",{size:e.b(s.localBytes)}):t("penzor.sync.done")}:{tone:"ok",text:t("penzor.sync.firstPending")}},w={tone:"off",text:t("penzor.sync.off")},k=(S,E)=>E?`${S} \xB7 ${t("penzor.sync.metaLast",{time:zn(E,e.locale())})}`:S,z=()=>{let S=n.agents;if(!S.on)return w;if(S.running)return{tone:"ok",text:t("penzor.sync.runningPlain")};let E=t("penzor.sync.agentsN",{n:S.count});return S.last&&!S.last.ok?{tone:"warn",text:t("penzor.sync.failed"),title:S.last.error}:S.last&&S.last.conflicts>0?{tone:"warn",text:t("penzor.sync.conflictsN",{n:S.last.conflicts}),title:t("penzor.sync.conflictsHint")}:{tone:"ok",text:k(E,S.last?.at)}},x=()=>{let S=n.plugins;return S.on?(S.pending??0)>0?{tone:"wait",text:t("penzor.sync.pluginsPending",{n:S.pending})}:{tone:"ok",text:k(t("penzor.sync.pluginsN",{n:S.count}),S.lastAt)}:w},M=S=>E=>{e.setSync(S,E)},L=s.available===!1&&!s.on&&(s.backend==="off"||s.backend==="penzor"),H=[e.thisDevice()?t("penzor.sync.metaDevice",{name:e.thisDevice()}):null,s.on?s.last?t("penzor.sync.metaLast",{time:zn(s.last.at,e.locale())}):t("penzor.sync.metaNever"):null,s.on&&s.backend!=="off"?Bi(s,e.locale()):null].filter(S=>!!S),V=v(),ee=g?[...new Set([...g.devices,...g.device?[g.device]:[]])]:[],te=i?.ama?i.ama.reduce((S,E)=>S+E.sizeBytes,0):null;return o("div",{class:"pz-scroll",children:o("div",{class:"pz-col",children:[o(cr,{p:e}),o("div",{class:"pz-title pz-sync-head",children:[o("h1",{class:"pz-h1",children:t("penzor.sync.title")}),o("span",{class:"pz-badge",children:[o(W,{n:"check"}),$d(n,e.locale())]})]}),H.length>0&&o("div",{class:"pz-meta",children:H.map(S=>o("span",{children:S},S))}),s.pending&&o(Gh,{p:e,s:n}),u&&o("div",{class:"pz-sync-ask is-warn",role:"region",children:[o("h4",{children:s.localBytes!=null&&c>0?t("penzor.sync.quotaTitle",{size:e.b(s.localBytes),ledger:l,max:e.b(c)}):t("penzor.sync.quotaTitlePlain",{ledger:l})}),o("p",{children:[t("penzor.sync.quotaBody"),p>0&&` ${t("penzor.sync.quotaLarge",{size:e.b(d),n:p})}`]}),o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",onClick:()=>void On("membership").then(S=>{S||e.ctx.app?.notify?.(t("err.openFailed"))}),children:t("member.upgrade")}),g&&o("button",{class:"pz-btn",onClick:()=>e.go(`sync:${g.vault}`),children:t("penzor.sync.quotaSee")})]})]}),o("div",{class:"pz-sync-card",children:[o("div",{class:`pz-sync-row is-click${r?" is-open":""}`,children:[o("button",{type:"button",class:"pz-sync-main","aria-expanded":r,onClick:()=>a(!r),children:[o("span",{class:"pz-tile",children:o(W,{n:"notebook"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:m}),o("small",{children:t("penzor.sync.notesDesc")})]}),o(Qi,{...V})]}),o(Zi,{on:s.on&&!s.pending,label:m,disabled:!!s.pending||L||e.syncBusy("notes"),title:s.pending?t("penzor.sync.decideAbove"):void 0,onToggle:M("notes")})]}),r&&o("div",{class:"pz-sync-sub",children:[o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvSchedule")}),o("span",{children:Bi(s,e.locale())}),o("button",{class:"pz-link",onClick:f,children:t("penzor.sync.change")})]}),o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvDirection")}),o("span",{children:t(`penzor.sync.dir.${s.direction}`)}),o("button",{class:"pz-link",onClick:f,children:t("penzor.sync.change")})]}),p>0&&o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvSkipped")}),o("span",{children:t("penzor.sync.skippedN",{n:p,size:e.b(d)})}),o("span",{})]}),s.backend==="penzor"&&s.vault&&o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvWhere")}),o("span",{children:i?.sync&&c>0?t("penzor.sync.whereUsed",{ledger:l,vault:s.vault,used:e.b(i.sync.usedBytes),max:e.b(c)}):t("penzor.sync.where",{ledger:l,vault:s.vault})}),g?o("button",{class:"pz-link",onClick:()=>e.go(`sync:${g.vault}`),children:t("penzor.sync.open")}):o("span",{})]})]}),o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(W,{n:"bot"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:t("penzor.sync.agents")}),o("small",{children:t("penzor.sync.agentsDesc")})]}),o(Qi,{...z()})]}),o(Zi,{on:n.agents.on,label:t("penzor.sync.agents"),disabled:e.syncBusy("agents"),onToggle:M("agents")})]}),o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(W,{n:"puzzle"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:t("penzor.sync.plugins")}),o("small",{children:t("penzor.sync.pluginsDesc")})]}),o(Qi,{...x()})]}),o(Zi,{on:n.plugins.on,label:t("penzor.sync.plugins"),disabled:e.syncBusy("plugins"),onToggle:M("plugins")})]})]}),o("div",{class:"pz-h3",children:t("penzor.sync.devicesTitle")}),i?ee.length===0?o("p",{class:"pz-sync-none",children:t("penzor.sync.noDevices")}):o("div",{class:"pz-rows pz-sync-dev",children:ee.map(S=>o("div",{class:"row",children:[o(W,{n:"laptop"}),o("span",{class:"t",children:[S,S===e.thisDevice()&&o("em",{children:t("penzor.sync.thisOne")})]}),o("span",{class:"s",children:g?.device===S&&g.updatedAt?t("penzor.sync.lastWrite",{time:zn(Date.parse(g.updatedAt),e.locale())}):""})]},S))}):o("p",{class:"pz-sync-none",children:t("penzor.loading")}),o("div",{class:"pz-h3",children:t("penzor.sync.phoneTitle")}),o("div",{class:"pz-tip",children:[o(W,{n:"info"}),o("span",{children:te!=null?t("penzor.sync.phoneTip",{size:e.b(te)}):t("penzor.sync.phoneTipPlain")})]}),o("p",{class:"pz-note",children:[t("penzor.sync.foot"),o("button",{class:"pz-link",onClick:f,children:t("penzor.sync.footLink")})]})]})})}function Gh({p:e,s:t}){let n=e.t,r=t.notes.pending,a=e.syncBusy("resolve"),i=new Date,s=n("penzor.sync.backupName",{name:t.notes.rootName??n("penzor.sync.notesPlain"),date:`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`}),l=r.cloudDevice?n("penzor.sync.askCloud",{device:r.cloudDevice,files:r.cloudFiles.toLocaleString(),size:e.b(r.cloudBytes)}):n("penzor.sync.askCloudNoDevice",{files:r.cloudFiles.toLocaleString(),size:e.b(r.cloudBytes)});return o("div",{class:"pz-sync-ask",role:"region","aria-label":n("penzor.sync.askTitle"),children:[o("h4",{children:n("penzor.sync.askTitle")}),o("p",{children:[l," ",n("penzor.sync.askLocal",{local:r.localOnly.toLocaleString(),conflicts:r.conflicts.toLocaleString()})]}),e.confirmCloud()?o("div",{class:"pz-confirm",children:[o("span",{children:n("penzor.sync.askConfirm",{backup:s})}),o("button",{class:"pz-btn pri",disabled:a,onClick:()=>void e.resolveNotes("cloud"),children:n("penzor.sync.askConfirmGo")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>e.setConfirmCloud(!1),children:n("penzor.cancel")})]}):o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",disabled:a,onClick:()=>void e.resolveNotes("merge"),children:n("penzor.sync.askMerge")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>e.setConfirmCloud(!0),children:n("penzor.sync.askCloudBtn")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>void e.resolveNotes("skip"),children:n("penzor.sync.askSkip")})]}),o("p",{class:"pz-sync-explain",children:n("penzor.sync.askExplain",{backup:s})})]})}function Tu({p:e}){let t=e.t;return o("div",{class:"pz-scroll",children:o("div",{class:"pz-empty",children:[o("span",{class:"ic",children:o(W,{n:"cloud"})}),o("h2",{children:t("penzor.out.title")}),o("p",{children:t("penzor.out.lead")}),o("button",{class:"pz-btn pri",onClick:()=>e.signIn(),children:[o(W,{n:"login"}),t("penzor.out.signIn")]})]})})}function Kh({p:e}){let t=e.t,n=e.snap()?.ledger,r=e.snap()?.ledgerStale,a=!!n?.complete&&n.usage.usedBytes!=null;return o("div",{class:"pz-unified-quota",role:"status",children:[o("div",{class:"pz-total",children:[o("b",{children:a?e.b(n.usage.usedBytes):"\u2014"}),o("span",{children:n?t("penzor.ofMax",{max:e.b(n.quota.limitBytes)}):t("penzor.unified.unavailable")})]}),a&&(n.state==="warn"||n.state==="over"?o(Io,{pct:n.quota.limitBytes>0?n.usage.usedBytes/n.quota.limitBytes*100:100,warn:!0}):o(Jh,{p:e})),o("p",{class:"pz-note",children:r?t("penzor.unified.stale"):a?n.enforcement?t("penzor.unified.enforced"):n.phase==="grace"?t("penzor.unified.grace",{date:nn(Math.max(Date.parse(n.rollout?.graceUntil??""),Date.parse(n.rollout?.compatibilityUntil??"")||0),e.locale())}):n.state==="over"?t("penzor.unified.over"):n.state==="warn"?t("penzor.unified.warn"):`${t("penzor.unified.notice")} \xB7 ${t("penzor.unified.accounting",{trash:e.b(n.usage.trashBytes)})}`:t("penzor.unified.incomplete")}),n?.rollout&&!r&&o("div",{class:"pz-tip",children:[o("p",{children:t("penzor.unified.rolloutPolicy")}),!n.rollout.acknowledgedAt&&o("button",{class:"pz-btn",onClick:()=>void e.acknowledgeStorageNotice(),children:t("penzor.unified.ack")})]})]})}var ra=(e,t)=>t>0&&e/t>=.8;function Xh({p:e,upload:t}){let n=e.t,r=e.snap(),a=r?.ledger,i=e.content(),s=Ii(r,i),l=k=>{let z=a?.sources.find(x=>x.id===k);return z?.status==="ready"?z.liveBytes+z.trashBytes:null},c=k=>{let z=l(k);return z==null?n("penzor.unified.unavailable"):e.b(z)},d=k=>()=>e.go(k),g=(k,z,x,M,L)=>o("button",{class:`row${L?" is-warn":""}`,onClick:d(k),children:[o(W,{n:"folder"}),o("span",{class:"t",children:[z,o("em",{children:L??x})]}),o("span",{class:"s",children:M}),o(W,{n:"right"})]},k),u=r?.apps&&ra(r.apps.used,r.apps.quota)?n("penzor.quota.sourceLimit",{max:e.b(r.apps.quota),used:e.b(r.apps.used)}):void 0,p=r?.sync&&ra(r.sync.usedBytes,r.sync.maxBytes)?n("penzor.quota.sourceLimit",{max:e.b(r.sync.maxBytes),used:e.b(r.sync.usedBytes)}):void 0,m=i?wn(i):null,f=i?.deviceId,v=(r?.contentDevices??[]).filter(k=>k.id!==f),w=g("source:sync",n(s?"penzor.tree.legacy":"penzor.ledger.sync"),n(s?"penzor.ov.legacy":"penzor.ov.sync"),c("sync"),p);return o("div",{class:"pz-scroll",children:o("div",{class:"pz-col",children:[o(cr,{p:e}),o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:n("penzor.drive")}),o("button",{class:"pz-btn",onClick:t,children:[o(W,{n:"upload"}),n("penzor.unified.uploadTo")]})]}),o(Kh,{p:e}),o("div",{class:"pz-ov-group",children:n("penzor.ov.mine")}),o("div",{class:"pz-rows",children:g("app:penzor",n("penzor.uploads"),n("penzor.ov.uploads"),c("uploads"))}),o("div",{class:"pz-ov-group",children:n("penzor.ov.synced")}),o("div",{class:"pz-rows",children:s&&r?.contentDevices?o(N,{children:[g("content:default",n("penzor.scope.all"),m?.kind==="ok"&&m.at?n("penzor.ov.allLast",{time:zn(m.at,e.locale())}):n("penzor.ov.all"),""),f&&g(`content:device-${f}`,n("penzor.tree.thisBackup"),n("penzor.ov.self"),""),v.map(k=>g(`content:device-${k.id}`,k.name,n("penzor.ov.device"),""))]}):o(N,{children:[w,g("source:agents",n("penzor.source.agents"),n("penzor.ov.agents"),c("agents")),g("source:profile",n("penzor.source.profile"),n("penzor.ov.profile"),c("profile"))]})}),o("div",{class:"pz-ov-group",children:n("penzor.tree.byApp")}),o("div",{class:"pz-rows",children:[g("source:ama",n("penzor.ledger.ama"),n("penzor.ov.ama"),c("ama")),g("source:apps",n("penzor.ledger.apps"),n("penzor.ov.apps"),c("apps"),u),g("source:plugins",n("penzor.source.plugins"),n("penzor.ov.plugins"),c("plugins")),g("exports",n("penzor.ledger.exports"),n("penzor.ov.exports"),c("exports"))]}),s&&o(N,{children:[o("div",{class:"pz-ov-group",children:n("penzor.ov.stale")}),o("div",{class:"pz-rows is-stale",children:w})]}),o("p",{class:"pz-note",children:n("penzor.unified.policy")})]})})}function Jh({p:e}){let t=e.snap()?.ledger;if(!t?.complete||t.usage.usedBytes==null||t.quota.limitBytes<=0)return null;let n=e.t,r=s=>{let l=t.sources.find(c=>c.id===s);return l?.status==="ready"?l.liveBytes+l.trashBytes:0},a=[[n("penzor.ov.segNotes"),r("ama")],[n("penzor.ledger.apps"),r("apps")],[n("penzor.ov.segSync"),r("sync")],[n("penzor.uploads"),r("uploads")]];a.push([n("penzor.ov.segOther"),Math.max(0,t.usage.usedBytes-a.reduce((s,[,l])=>s+l,0))]);let i=a.filter(([,s])=>s>0);return o(N,{children:[o("div",{class:"pz-seg",role:"img","aria-label":i.map(([s,l])=>`${s} ${e.b(l)}`).join(", "),children:i.map(([s,l],c)=>o("span",{class:`c${c}`,style:{width:`${Math.max(.6,l/t.quota.limitBytes*100)}%`}},s))}),o("div",{class:"pz-legend",children:i.map(([s,l],c)=>o("span",{children:[o("i",{class:`c${c}`}),s," ",o("b",{children:e.b(l)})]},s))})]})}function Yh({p:e,dropDir:t}){let n=e.t,r=e.loc(),a=e.snap(),i=e.rows(),[s,l]=A(!1),[c,d]=A(null),g=ce(null),u=ce(null),p=ce(null),m=e.canWrite(),f=e.selection();oe(()=>(e.picker.files=()=>g.current?.click(),e.picker.folder=()=>u.current?.click(),()=>{e.picker.files=void 0,e.picker.folder=void 0}),[e]);let v=(b,T)=>{let R=b.currentTarget,K=se().getPathForFile,X=Array.from(R.files??[]);if(!K){R.value="",e.upload(Wi(X,T));return}let Y=X.map(Le=>{try{return K(Le)}catch{return""}}),me=Y.filter(Boolean);if(T){let Le=new Set;X.forEach((je,he)=>{let Te=je.webkitRelativePath??"",ft=Y[he];!Te||!ft||ft.length<Te.length||Le.add(ft.slice(0,ft.length-Te.length)+Te.split("/")[0])}),me=[...Le]}R.value="",e.upload(me)},w=(b,T)=>{e.select(T,{toggle:b.metaKey||b.ctrlKey,range:b.shiftKey}),p.current?.focus({preventScroll:!0})},k=b=>{if(b.target?.tagName!=="INPUT"){if((b.metaKey||b.ctrlKey)&&b.key.toLowerCase()==="a"&&e.canMulti())b.preventDefault(),e.selectAll();else if(b.key==="Escape"&&f.length>1){b.preventDefault();let T=e.selected();e.select(T)}}},z=r.kind==="sync"?n(e.content()?.config.enabled?"penzor.tree.legacy":"penzor.ledger.sync"):r.kind==="ama"?n("penzor.ledger.ama"):r.kind==="app"&&!e.canWrite()?n("penzor.ledger.apps"):null,x=r.kind==="content"?Au(e,r.namespace):r.kind==="sync"?r.vault:r.kind==="ama"?a.ama?.find(b=>b.id===r.vaultId)?.name??"":r.kind==="app"?e.appLabel(r.appId):r.kind==="source"?n(ir[r.source]):r.kind==="exports"?n("penzor.ledger.exports"):n("penzor.trash"),M=r.kind==="app"?e.appStack().map(b=>b.name):e.path()?e.path().split("/"):[],L=[...z?[{label:z,depth:null}]:[],{label:x,depth:0},...M.map((b,T)=>({label:b,depth:T+1}))],H=["mtime","size","name"],V=()=>e.setSort(H[(H.indexOf(e.sort())+1)%H.length]),ee=r.kind==="sync"?n("penzor.col.device"):r.kind==="trash"?n("penzor.col.origin"):r.kind==="exports"?n("penzor.col.app"):null,te=r.kind==="trash"?n("penzor.col.deleted"):n("penzor.col.mtime"),S=()=>{if(r.kind==="content"){let T=e.content()?wn(e.content()):null,R=e.content()?.deviceId,K=r.namespace==="default"?n("penzor.content.noteAll"):r.namespace===`device-${R}`?n("penzor.content.noteSelf"):n("penzor.content.noteDevice",{name:x});return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:x}),o("span",{class:"pz-badge",children:[o(W,{n:"cloud"}),T?.kind==="ok"&&T.at?n("penzor.content.badgeLast",{time:zn(T.at,e.locale())}):n("penzor.content.badge")]})]}),o("p",{class:"pz-note",children:K})]})}if(r.kind==="source")return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:n(ir[r.source])}),o("span",{class:"pz-badge",children:[o(W,{n:"lock"}),n("penzor.unified.readonly")]})]}),o("p",{class:"pz-note",children:n(r.source==="plugins"?"penzor.source.pluginNote":"penzor.source.readonly")})]});if(r.kind==="sync"){let T=a.sync?.vaults.find(X=>X.vault===r.vault);if(!T)return null;let R=!!e.thisDevice()&&T.devices.includes(e.thisDevice()),K=a.sync;return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:T.vault}),R&&!e.content()?.config.enabled&&o("span",{class:"pz-badge",children:[o(W,{n:"refresh"}),n("penzor.sync.thisDevice")]})]}),e.content()?.config.enabled&&o("div",{class:"pz-legacy",children:[o(W,{n:"history"}),o("span",{children:[n("penzor.legacy.title"),o("small",{children:n("penzor.legacy.body")})]}),o("button",{class:"pz-btn",onClick:()=>e.go("content:default"),children:n("penzor.legacy.go")})]}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(T.bytes),n:T.files.toLocaleString()})}),T.updatedAt&&o("span",{children:T.device?n("penzor.sync.last",{time:nn(Date.parse(T.updatedAt),e.locale()),device:T.device}):n("penzor.sync.lastNoDevice",{time:nn(Date.parse(T.updatedAt),e.locale())})}),T.devices.length>0&&o("span",{children:n("penzor.sync.devices",{n:T.devices.length})})]}),ra(K.usedBytes,K.maxBytes)&&o("div",{class:"pz-meter",children:[o(Io,{pct:K.usedBytes/K.maxBytes*100,warn:K.usedBytes/K.maxBytes>=.9}),o("span",{children:n("penzor.quota.sourceLimit",{max:e.b(K.maxBytes),used:e.b(K.usedBytes)})})]})]})}if(r.kind==="ama"){let T=a.ama?.find(R=>R.id===r.vaultId);return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:T?.name}),o("span",{class:"pz-badge",children:[o(W,{n:"cloud"}),"Amadeus Cloud"]})]}),o("div",{class:"pz-meta",children:[o("span",{children:e.b(T?.sizeBytes??0)}),o("span",{children:n("penzor.unified.counted")})]})]})}if(r.kind==="app"){let T=a.apps?.apps.find(K=>K.appId===r.appId),R=a.apps;return o(N,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:e.appLabel(r.appId)})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(T?.bytes??0),n:(T?.files??0).toLocaleString()})}),!e.canWrite()&&o("span",{children:n("penzor.apps.by",{app:e.appLabel(r.appId)})})]}),e.canWrite()&&o("div",{class:"pz-meta",children:a.ledger?.complete&&a.ledger.usage.usedBytes!=null?o(N,{children:[o("span",{children:n("penzor.drive.total",{used:e.b(a.ledger.usage.usedBytes),max:e.b(a.ledger.quota.limitBytes)})}),o("button",{class:"pz-link",onClick:()=>e.go("ov"),children:n("penzor.drive.seeAll")})]}):o("span",{children:n("penzor.unified.unavailable")})}),R&&ra(R.used,R.quota)&&o("div",{class:"pz-meter",children:[o(Io,{pct:R.used/R.quota*100,warn:R.used/R.quota>=.9}),o("span",{children:n("penzor.quota.sourceLimit",{max:e.b(R.quota),used:e.b(R.used)})})]})]})}if(r.kind==="exports")return o(N,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:n("penzor.ledger.exports")})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(a.exports?.totalBytes??0),n:(a.exports?.total??0).toLocaleString()})}),o("span",{children:n("penzor.card.expFoot")})]})]});let b=i??[];return o(N,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:n("penzor.trash")})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.trash.meta",{n:b.length,size:e.b((a.trash??[]).reduce((T,R)=>T+(Number(R.fileSize)||0),0))})}),o("span",{children:n("penzor.trash.note")})]}),e.confirmEmpty()&&o("div",{class:"pz-confirm",children:[o("span",{children:n("penzor.confirm.empty",{n:b.length})}),o("button",{class:"pz-btn danger solid",onClick:()=>void e.emptyTrash(),children:n("penzor.trash.emptyBtn")}),o("button",{class:"pz-btn",onClick:()=>e.setConfirmEmpty(!1),children:n("penzor.cancel")})]})]})},E=e.selected(),O=f.length>1,I=f.reduce((b,T)=>b+(T.dir?0:T.size),0),ne=e.txRows();return o(N,{children:[o("div",{class:"pz-top",children:[o("nav",{class:"pz-crumb",children:L.map((b,T)=>{let R=T===L.length-1,K=R?o("b",{children:b.label}):b.depth==null?o("span",{children:b.label}):o("button",{onClick:()=>e.up(b.depth),children:b.label});return o("span",{style:{display:"contents"},children:[K,!R&&o("i",{children:"\u203A"})]},T)})}),o("span",{class:"pz-sp"}),O?o(N,{children:[o("span",{class:"pz-selbar",children:n("penzor.sel.bar",{n:f.length,size:e.b(I)})}),f.some(b=>!b.dir)&&o("button",{class:"pz-btn",onClick:()=>void e.downloadMany(f),children:[o(W,{n:"download"}),n("penzor.act.download")]}),e.canManage()&&o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"move",at:[]}),children:[o(W,{n:"move"}),n("penzor.act.move")]}),e.canManage()&&o("button",{class:"pz-btn danger",onClick:()=>void e.trashMany(f),children:[o(W,{n:"trash"}),n("penzor.act.trash")]}),o("button",{class:"pz-ibtn",title:n("penzor.act.clearSel"),onClick:()=>e.select(E),children:o(W,{n:"x"})})]}):o(N,{children:[M.length>0&&o("button",{class:"pz-ibtn",title:n("penzor.act.up"),onClick:()=>e.up(),children:o(W,{n:"up"})}),r.kind==="source"&&(r.source==="agents"||r.source==="profile")&&o("button",{class:"pz-chip",onClick:()=>void e.ctx.app?.openSpace?.(r.source==="agents"?"agents":"calendar").then(b=>{b||e.ctx.app?.notify?.(n("penzor.source.entryUnavailable"))}),children:n(r.source==="agents"?"penzor.source.openAgents":"penzor.source.openCalendar")}),r.kind==="ama"&&o("button",{class:"pz-chip",onClick:()=>void e.ctx.app?.openSpace?.("amadeus"),children:[o(W,{n:"book"}),n("penzor.ama.open")]}),r.kind==="trash"&&e.canEmptyTrash()&&o("button",{class:"pz-btn danger",onClick:()=>e.setConfirmEmpty(!0),children:[o(W,{n:"trash"}),n("penzor.trash.emptyBtn")]}),m&&o("span",{class:"pz-split",children:[o("button",{class:"pz-btn pri",onClick:()=>e.picker.files?.(),children:[o(W,{n:"upload"}),n("penzor.act.upload")]}),o("button",{class:"pz-btn pri more",title:n("penzor.act.uploadMore"),"aria-label":n("penzor.act.uploadMore"),onClick:b=>{let T=b.currentTarget.getBoundingClientRect();d({x:T.right,y:T.bottom+4})},children:o(W,{n:"down"})})]}),m&&o("button",{class:"pz-ibtn",title:n("penzor.act.newFolder"),onClick:()=>e.startNewFolder(),children:o(W,{n:"folder-plus"})}),s||e.query()?o("input",{class:"pz-find",placeholder:n("penzor.search"),value:e.query(),autoFocus:!0,onInput:b=>e.setQuery(b.currentTarget.value),onKeyDown:b=>{b.key==="Escape"&&(e.setQuery(""),l(!1))},onBlur:()=>{e.query()||l(!1)}}):o("button",{class:"pz-ibtn",title:n("penzor.search"),onClick:()=>l(!0),children:o(W,{n:"search"})}),o("button",{class:"pz-chip",onClick:V,children:[r.kind==="trash"&&e.sort()==="mtime"?n("penzor.sort.deleted"):n(`penzor.sort.${e.sort()}`),o(W,{n:"down"})]})]})]}),m&&o(N,{children:[o("input",{ref:g,type:"file",multiple:!0,hidden:!0,onChange:b=>v(b,!1)}),o("input",{ref:u,type:"file",hidden:!0,webkitdirectory:!0,onChange:b=>v(b,!0)})]}),c&&o(Mu,{x:c.x,y:c.y,alignRight:!0,onClose:()=>d(null),items:[{id:"files",label:n("penzor.act.uploadFiles"),icon:"upload",run:()=>e.picker.files?.()},{id:"folder",label:n("penzor.act.uploadFolder"),icon:"folder",run:()=>e.picker.folder?.()}]}),o("div",{class:"pz-scroll",ref:p,tabIndex:-1,onKeyDown:k,onContextMenu:b=>{!m||b.target.closest("tr")||(b.preventDefault(),e.openMenu(b.clientX,b.clientY,null))},children:o("div",{class:"pz-col",children:[S(),e.rowsError()?o("p",{class:"pz-note",children:n("penzor.err",{reason:e.rowsError()})}):i?i.length===0&&!ne.length&&e.newFolder()==null?o("p",{class:"pz-note",children:e.query()?n("penzor.noMatch",{q:e.query()}):m&&!M.length?n("penzor.drive.empty"):n("penzor.folderEmpty")}):o("table",{class:"pz-table",children:[o("thead",{children:o("tr",{children:[o("th",{children:n("penzor.col.name")}),o("th",{class:"r",children:n("penzor.col.size")}),o("th",{children:te}),ee&&o("th",{children:ee})]})}),o("tbody",{children:[e.newFolder()!=null&&o(Qh,{p:e,cols:ee?4:3}),i.map((b,T)=>o(N,{children:[!b.dir&&(T===0||i[T-1].dir)&&ne.map(R=>o(Su,{p:e,x:R},R.key)),o("tr",{class:`${e.isSelected(b.key)?"sel":""}${t&&t===b.key?" drop":""}`,"data-dir-id":m&&b.dir?b.key:void 0,"data-dir-name":m&&b.dir?b.name:void 0,onMouseDown:R=>{R.shiftKey&&R.preventDefault()},onClick:R=>w(R,b),onDblClick:()=>{b.dir?e.openDir(b):e.download(b)},onContextMenu:R=>{R.preventDefault(),e.openMenu(R.clientX,R.clientY,b)},children:[o("td",{class:"n",children:o("span",{children:[o(W,{n:ea(b.name,b.dir)}),r.kind==="content"&&!M.length&&zu[b.name]?o(N,{children:[o("b",{children:n(zu[b.name])}),o("em",{class:"cnt",children:[b.name,(b.count??0)>0&&` \xB7 ${n("penzor.card.expSmall",{n:b.count.toLocaleString()})}`]})]}):o(N,{children:[o("b",{children:b.name}),b.count!=null&&b.count>0&&o("em",{class:"cnt",children:b.count.toLocaleString()})]})]})}),o("td",{class:"r",children:b.dir&&r.kind==="app"?"\u2014":e.b(b.size)}),o("td",{children:nn(b.mtime,e.locale())}),ee&&o("td",{class:b.col4?"":"dim",children:b.col4?b.col4===e.thisDevice()?n("penzor.side.thisDevice",{name:b.col4}):b.col4:"\u2014"})]})]},b.key)),(i.length===0||i[i.length-1].dir)&&ne.map(b=>o(Su,{p:e,x:b},b.key))]})]}):o("p",{class:"pz-note",children:n("penzor.loading")}),r.kind==="trash"&&!!e.snap()?.amaTrash?.length&&o(Zh,{p:e})]})})]})}function Au(e,t){return t==="default"?e.t("penzor.scope.all"):t===`device-${e.content()?.deviceId}`?e.t("penzor.tree.thisBackup"):e.snap()?.contentDevices?.find(r=>`device-${r.id}`===t)?.name||`Forsion-${t.slice(7,15)}`}var zu={Amadeus:"penzor.cat.notes",agents:"penzor.source.agents",human:"penzor.cat.profile",Plugins:"penzor.cat.plugins"};function Zh({p:e}){let t=e.snap()?.amaTrash;return o("section",{class:"pz-ama-trash",children:[o("h3",{class:"pz-h3",children:e.t("penzor.trash.ama")}),o("p",{class:"pz-note",children:e.t("penzor.trash.amaNote")}),t?t.length?o("table",{class:"pz-table",children:[o("thead",{children:o("tr",{children:[o("th",{children:e.t("penzor.col.name")}),o("th",{children:e.t("penzor.col.size")}),o("th",{children:e.t("penzor.trash.expires")})]})}),o("tbody",{children:t.map(n=>o("tr",{children:[o("td",{children:[n.vaultName," / ",n.path]}),o("td",{children:e.b(n.size)}),o("td",{children:nn(Date.parse(n.expiresAt),e.locale())})]},n.id))})]}):o("p",{class:"pz-note",children:e.t("penzor.folderEmpty")}):o("p",{class:"pz-note",children:e.t("penzor.unified.unavailable")})]})}function Qh({p:e,cols:t}){let[n,r]=A(e.newFolder()??""),a=ce(null),i=ce(!1);Yo(()=>{a.current?.focus(),a.current?.select()},[]);let s=()=>{i.current||(i.current=!0,e.createFolder(n))};return o("tr",{class:"sel",children:[o("td",{class:"n",children:o("span",{children:[o(W,{n:"folder-open"}),o("input",{ref:a,class:"pz-newname",value:n,onInput:l=>r(l.currentTarget.value),onKeyDown:l=>{l.key==="Enter"?s():l.key==="Escape"&&(i.current=!0,e.cancelNewFolder())},onBlur:s})]})}),o("td",{class:"r",children:"\u2014"}),o("td",{children:e.t("penzor.justNow")}),t>3&&o("td",{})]})}function Su({p:e,x:t}){let n=t.size>0?Math.min(100,Math.round(t.done/t.size*100)):0;return o("tr",{class:`pz-txrow ${t.state}`,title:t.state==="paused"?e.t("penzor.tx.paused"):void 0,children:[o("td",{class:"n",children:o("span",{children:[o(W,{n:ea(t.name)}),o("b",{children:t.name})]})}),o("td",{class:"r",children:t.state==="active"?Di(t.done,t.size,e.locale()):e.b(t.size)}),o("td",{children:t.state==="queued"?o("span",{class:"pz-inl",children:e.t("penzor.tx.queued")}):o("span",{class:"pz-inl",children:[o(Io,{pct:n}),t.state==="paused"?e.t("penzor.tx.pause"):`${n}%`]})})]})}function Eu(e,t){let n=e.t,r=e.loc().kind,a={id:"download",label:n("penzor.act.download"),icon:"download",run:()=>void e.download(t)};return r==="source"?t.dir||!t.ref?.downloadPath?[]:[a]:r==="app"&&!e.canManage()?t.dir?[]:[a]:r==="sync"||r==="ama"?t.dir?[]:[a]:r==="app"?[...t.dir?[]:[a],{id:"rename",label:n("penzor.act.rename"),icon:"pen",run:()=>{e.select(t),e.setSide({kind:"rename"})}},{id:"move",label:n("penzor.act.move"),icon:"move",run:()=>{e.select(t),e.setSide({kind:"move",at:[]})}},{id:"trash",label:n("penzor.act.trash"),icon:"trash",danger:!0,run:()=>void e.trash(t)}]:r==="exports"?[a,{id:"rename",label:n("penzor.act.rename"),icon:"pen",run:()=>{e.select(t),e.setSide({kind:"rename"})}},{id:"delete",label:n("penzor.act.delete"),icon:"trash",danger:!0,run:()=>{e.select(t),e.setSide({kind:"confirm",what:"deleteExport"})}}]:r==="trash"&&e.canManageRow(t)?[{id:"restore",label:n("penzor.act.restore"),icon:"undo",run:()=>void e.restore(t)},{id:"purge",label:n("penzor.act.purge"),icon:"trash",danger:!0,run:()=>{e.select(t),e.setSide({kind:"confirm",what:"purge"})}}]:[]}function eb(e,t){let n=e.t;if(!t)return e.canWrite()?[{id:"upload",label:n("penzor.act.uploadHere"),icon:"upload",run:()=>e.picker.files?.()},{id:"new-folder",label:n("penzor.act.newFolder"),icon:"folder-plus",run:()=>e.startNewFolder()}]:[];let r=e.selection();return r.length>1&&r.some(a=>a.key===t.key)?Pu(e,r):Eu(e,t)}function Pu(e,t){let n=e.t,r=e.loc().kind,a=t.filter(i=>!i.dir).length;return[...a?[{id:"download",label:n("penzor.sel.download",{n:a}),icon:"download",run:()=>void e.downloadMany(t)}]:[],...e.canManage()?[{id:"move",label:n("penzor.act.move"),icon:"move",run:()=>e.setSide({kind:"move",at:[]})},{id:"trash",label:n("penzor.act.trash"),icon:"trash",danger:!0,run:()=>void e.trashMany(t)}]:[]]}function Mu({x:e,y:t,items:n,onClose:r,alignRight:a}){let i=ce(null),[s,l]=A({x:e,y:t});return oe(()=>{let c=i.current;if(c){let u=c.getBoundingClientRect(),p=a?e-u.width:e;l({x:Math.max(8,Math.min(p,window.innerWidth-u.width-8)),y:t+u.height>window.innerHeight-8?Math.max(8,t-u.height):t})}let d=u=>{u.target instanceof Node&&c?.contains(u.target)||r()},g=u=>{u.key==="Escape"&&r()};return window.addEventListener("pointerdown",d,!0),window.addEventListener("keydown",g,!0),window.addEventListener("blur",r),window.addEventListener("wheel",r,{passive:!0}),()=>{window.removeEventListener("pointerdown",d,!0),window.removeEventListener("keydown",g,!0),window.removeEventListener("blur",r),window.removeEventListener("wheel",r)}},[e,t]),n.length?ou(o("div",{ref:i,class:"ctx-menu pz-menu",role:"menu",style:{left:`${s.x}px`,top:`${s.y}px`},children:n.map((c,d)=>o(N,{children:[c.danger&&d>0&&o("div",{class:"ctx-separator"}),o("button",{role:"menuitem",class:c.danger?"danger":"",onClick:()=>{r(),c.run()},children:[o(W,{n:c.icon}),c.label]})]},c.id))}),document.body):(queueMicrotask(r),null)}function tb({p:e}){let t=e.menu();return o(Mu,{x:t.x,y:t.y,items:eb(e,t.row),onClose:e.closeMenu})}function Iu({p:e}){_u(e);let t=e.t,n=e.loc(),r=e.selected();if(co(n)||!r)return o(oa,{p:e,side:!0,children:o("p",{class:"pz-side-none",children:t("penzor.side.none")})});let a=e.snap(),i=e.side(),s=e.selection();if(s.length>1)return o(ob,{p:e,sel:s});let l=n.kind==="content"?`${Au(e,n.namespace)} / ${r.key}`:n.kind==="sync"?`${n.vault} / ${r.key}`:n.kind==="ama"?`${a?.ama?.find(f=>f.id===n.vaultId)?.name??""} / ${r.key}`:n.kind==="app"?[e.appLabel(n.appId),...e.appStack().map(f=>f.name),r.name].join(" / "):n.kind==="source"?`${t(ir[n.source])} / ${r.key}`:n.kind==="exports"?`${t("penzor.ledger.exports")} / ${r.name}`:r.col4??"",c=r.dir?"":(r.name.match(/\.([A-Za-z0-9]{1,8})$/)?.[1]??"").toUpperCase(),d=n.kind==="trash"?t("penzor.side.inTrash",{size:e.b(r.size)}):r.dir?r.count!=null?t("penzor.side.folder",{n:r.count.toLocaleString()}):t("penzor.side.folderPlain"):[c,e.b(r.size)].filter(Boolean).join(" \xB7 "),g=n.kind==="trash"?[[t("penzor.side.origin"),l],[t("penzor.side.deletedAt"),nn(r.mtime,e.locale())]]:[[t("penzor.side.where"),l],[t("penzor.side.mtime"),nn(r.mtime,e.locale())]];n.kind==="sync"&&!r.dir&&g.push([t("penzor.side.device"),r.col4?r.col4===e.thisDevice()?t("penzor.side.thisDevice",{name:r.col4}):r.col4:"\u2014"]),n.kind==="app"&&!r.dir&&!e.canWrite()&&g.push([t("penzor.side.from"),e.appLabel(n.appId)]),n.kind==="exports"&&g.push([t("penzor.side.from"),r.col4??"\u2014"]);let u=n.kind==="app"&&!e.canManage()?"penzor.source.appNote":Vd(n),p=Eu(e,r),m=e.versions();return o(oa,{p:e,side:!0,children:[o("div",{class:"pz-thumb",children:o(W,{n:ea(r.name,r.dir)})}),i.kind==="rename"?o(nb,{p:e,row:r}):o("div",{class:"pz-fname",children:r.name}),o("div",{class:"pz-fsub",children:d}),i.kind==="confirm"?o("div",{class:"pz-confirm",style:{margin:0},children:[o("span",{children:t(i.what==="purge"?"penzor.confirm.purge":"penzor.confirm.deleteExport",{name:r.name})}),o("button",{class:"pz-btn danger solid",onClick:()=>void(i.what==="purge"?e.purge(r):e.deleteExport(r)),children:t(i.what==="purge"?"penzor.act.purge":"penzor.act.delete")}),o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"view"}),children:t("penzor.cancel")})]}):p.length>0&&o("div",{class:"pz-acts",children:p.filter(f=>f.id!=="move").map(f=>o("button",{class:`pz-btn${f.danger?" danger":""}${f.id==="restore"?" pri":""}`,onClick:()=>f.run(),children:[o(W,{n:f.icon}),f.id==="trash"?t("penzor.act.delete"):f.label]},f.id))}),i.kind==="move"&&o(Ru,{p:e,row:r,at:i.at}),o("dl",{class:"pz-dl",children:[g.map(([f,v])=>o(N,{children:[o("dt",{children:f}),o("dd",{children:v})]},f)),n.kind==="app"&&!r.dir&&o(N,{children:[o("dt",{children:t("penzor.side.versions")}),o("dd",{children:m==null?"\u2026":m.length?t("penzor.side.versionsN",{n:m.length}):t("penzor.side.versionsNone")})]})]}),e.canManage()&&!r.dir&&m&&m.length>0&&o("div",{class:"pz-vers",children:m.map(f=>o("div",{children:[o("span",{children:t("penzor.side.versionRow",{n:f.versionNumber,time:nn(f.createdAt,e.locale()),size:e.b(f.fileSize)})}),o("button",{class:"pz-link",onClick:()=>void e.restoreVersion(r,f),children:t("penzor.side.restoreVersion")})]},f.versionNumber))}),n.kind==="trash"&&r.dir&&(r.count??0)>0&&o("div",{class:"pz-tip",children:[o(W,{n:"undo"}),o("span",{children:t("penzor.side.inner",{n:r.count})})]}),n.kind==="exports"&&o("div",{class:"pz-tip",children:[o(W,{n:"trash"}),o("span",{children:t("penzor.side.exportNote")})]}),u&&o("div",{class:"pz-tip",children:[o(W,{n:"lock"}),o("span",{children:t(u,{vault:n.kind==="sync"?n.vault:""})})]})]})}function nb({p:e,row:t}){let[n,r]=A(t.name),a=ce(null),i=ce(!1),s=()=>{i.current||(i.current=!0,e.rename(t,n))};return oe(()=>{let l=a.current;if(!l)return;l.focus();let c=t.dir?-1:t.name.lastIndexOf(".");l.setSelectionRange(0,c>0?c:t.name.length)},[t.key]),o("input",{ref:a,class:"pz-input",value:n,onInput:l=>r(l.currentTarget.value),onKeyDown:l=>{l.key==="Enter"?s():l.key==="Escape"&&(i.current=!0,e.setSide({kind:"view"}))},onBlur:s})}function Ru({p:e,row:t,at:n}){let r=e.t,a=e.loc(),i=a.kind==="app"?e.appLabel(a.appId):"",s=e.selection(),l=s.length>1,c=new Set(l?s.map(u=>u.key):[t.key]),d=(e.moveFolders()??[]).filter(u=>!c.has(u.id)),g=n[n.length-1]??{id:"ROOT",name:r("penzor.move.root",{app:i})};return o("div",{class:"pz-tip",style:{flexDirection:"column"},children:[o("div",{class:"pz-sh",style:{margin:0},children:r("penzor.move.title")}),o("div",{class:"pz-pick",children:[n.length>0&&o("button",{onClick:()=>e.moveBrowse(n.slice(0,-1)),children:[o(W,{n:"up"}),n.length>1?n[n.length-2].name:r("penzor.move.root",{app:i})]}),e.moveFolders()==null?o("span",{children:"\u2026"}):d.length===0?o("span",{children:r("penzor.move.noFolders")}):d.map(u=>o("button",{onClick:()=>e.moveBrowse([...n,u]),children:[o(W,{n:"folder"}),u.name]},u.id))]}),o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",onClick:()=>void(l?e.moveMany(s,g):e.moveTo(t,g)),children:r("penzor.move.here")}),o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"view"}),children:r("penzor.cancel")})]})]})}function ob({p:e,sel:t}){let n=e.t,r=e.loc(),a=t.filter(u=>!u.dir),i=t.length-a.length,s=a.reduce((u,p)=>u+p.size,0),l=new Date,c=n("penzor.download.folder",{date:`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`}),d=r.kind==="app"?[e.appLabel(r.appId),...e.appStack().map(u=>u.name)].join(" / "):r.kind==="sync"?[r.vault,...e.path()?e.path().split("/"):[]].join(" / "):r.kind==="ama"?[e.snap()?.ama?.find(u=>u.id===r.vaultId)?.name??"",...e.path()?e.path().split("/"):[]].join(" / "):"",g=e.side();return o(oa,{p:e,side:!0,children:[o("div",{class:"pz-thumb",children:o(W,{n:"files"})}),o("div",{class:"pz-fname",children:n("penzor.sel.title",{n:t.length})}),o("div",{class:"pz-fsub",children:i?n("penzor.sel.subDirs",{size:e.b(s),files:a.length,dirs:i}):n("penzor.sel.sub",{size:e.b(s),files:a.length})}),o("div",{class:"pz-acts",children:Pu(e,t).map(u=>o("button",{class:`pz-btn${u.danger?" danger":""}`,onClick:()=>u.run(),children:[o(W,{n:u.icon}),u.id==="trash"?n("penzor.act.delete"):u.label]},u.id))}),g.kind==="move"&&o(Ru,{p:e,row:t[0],at:g.at}),o("dl",{class:"pz-dl",children:[o("dt",{children:n("penzor.side.where")}),o("dd",{children:d}),a.length>1&&o(N,{children:[o("dt",{children:n("penzor.sel.saveTo")}),o("dd",{children:n("penzor.sel.saveToValue",{folder:c})})]})]}),i>0&&a.length>0&&o("div",{class:"pz-tip",children:[o(W,{n:"folder"}),o("span",{children:n("penzor.sel.noDirs")})]})]})}var Lu=(e,t)=>t<60?e.t("penzor.tx.sec",{n:Math.max(1,Math.round(t))}):e.t("penzor.tx.min",{n:Math.ceil(t/60)}),rb=(e,t)=>t!=null&&Date.now()-t<6e4?e.t("penzor.justNow"):nn(t,e.locale()),ab=(e,t)=>{let n=t.error??"";return n==="too_large"?e.t("penzor.err.too_large",{size:e.b(t.size)}):n==="network"?e.t("penzor.err.network",{pct:t.size?Math.round(t.done/t.size*100):0}):n==="quota"||n==="account_changed"||n==="not_signed_in"||n==="gone"||n==="changed"||n==="storage_unavailable"||n==="popup_blocked"||n==="download_unavailable"||n==="download_failed"?e.t(`penzor.err.${n}`):e.t("penzor.err.other",{code:n||"?"})};function ib(e){let t=e.filter(l=>l.state==="active"||l.state==="queued"||l.state==="paused"),n=t.filter(l=>l.state!=="paused"),r=n.reduce((l,c)=>l+Math.max(c.size,c.done),0),a=n.reduce((l,c)=>l+c.done,0),i=n.reduce((l,c)=>l+c.speed,0),s=i>0?(r-a)/i:null;return{live:t,failed:e.filter(l=>l.state==="failed"),done:e.filter(l=>l.state==="done"),up:t.filter(l=>l.kind==="up").length,down:t.filter(l=>l.kind==="down").length,pct:r>0?Math.min(100,Math.round(a/r*100)):0,eta:s!=null&&s>=5?s:null}}function sb({p:e}){let t=e.t,n=e.card(),r=e.transfers(),a=e.notices();if(n==="hidden"||!r.length&&!a.length)return null;let i=ib(r),s=i.failed.length+a.length,l=t("penzor.tx.counts",{up:i.up,down:i.down}),c=i.live.length?t("penzor.tx.busy",{n:i.live.length}):s?t("penzor.tx.failedN",{n:s}):t("penzor.tx.allDone"),d=i.live.length?[l,i.eta!=null?t("penzor.tx.eta",{eta:Lu(e,i.eta)}):""].filter(Boolean).join(" \xB7 "):s?i.done.length?t("penzor.tx.restDone",{n:i.done.length}):"":t("penzor.tx.doneN",{n:i.done.length}),g={onMouseEnter:()=>e.holdCard(!0),onMouseLeave:()=>e.holdCard(!1)};if(n==="pill")return o("button",{class:"ui-popover pz-txpill",...g,onClick:()=>e.setCard("open"),title:t("penzor.tx.expand"),"aria-label":t("penzor.tx.expand"),children:[i.live.length?o("span",{class:"pz-ring",style:{"--p":i.pct}}):o(W,{n:s?"alert":"check"}),o("span",{children:i.live.length?t("penzor.tx.pill",{counts:l,pct:i.pct}):c}),o(W,{n:"up"})]});let u=f=>f.state==="failed"?0:f.state==="active"?1:f.state==="queued"||f.state==="paused"?2:3,p=[...r].filter(f=>f.state!=="canceled").sort((f,v)=>u(f)-u(v)||(u(f)===3?(v.finishedAt??0)-(f.finishedAt??0):0)),m=i.live.length>0&&i.live.every(f=>f.state==="paused");return o("div",{class:"ui-popover pz-txcard",role:"region","aria-label":c,...g,children:[o("div",{class:"pz-txhead",children:[o("b",{children:c}),o("span",{children:d}),o("i",{class:"sp"}),o("button",{class:"pz-ib",title:t("penzor.tx.collapse"),"aria-label":t("penzor.tx.collapse"),onClick:()=>e.setCard(i.live.length||s?"pill":"hidden"),children:o(W,{n:"down"})})]}),i.live.length>0&&o("div",{class:"pz-txall",children:o(Io,{pct:i.pct})}),o("div",{class:"pz-txlist",children:[a.map(f=>o("div",{class:"pz-txrow2 is-fail",children:[o(W,{n:"alert"}),o("span",{class:"nm",children:t("penzor.tx.quota",{size:e.b(f.short)})}),o("span",{class:"acts",children:o("button",{class:"pz-ib",title:t("penzor.tx.remove"),onClick:()=>e.dismissNotice(f.id),children:o(W,{n:"x"})})}),o("span",{class:"sub",children:[o("span",{class:"err",children:t("penzor.tx.quotaSub")}),o("button",{class:"pz-link",onClick:()=>{e.dismissNotice(f.id),e.go("trash")},children:t("penzor.tx.freeSpace")})]})]},f.id)),p.map(f=>o(lb,{p:e,x:f},f.id))]}),o("div",{class:"pz-txfoot",children:[i.live.length>0&&o("button",{onClick:()=>void e.txAll(m?"resume":"pause"),children:t(m?"penzor.tx.resumeAll":"penzor.tx.pauseAll")}),i.failed.length>0&&!i.live.length&&o("button",{onClick:()=>void e.txAll("retry"),children:t("penzor.tx.retryAll")}),i.done.length>0&&i.live.length>0&&o("button",{onClick:()=>void e.txClear("finished"),children:t("penzor.tx.clearDone")}),!i.live.length&&o("button",{onClick:()=>void e.txClear(s?"all":"finished"),children:t(s?"penzor.tx.clear":"penzor.tx.clearDone")})]})]})}function lb({p:e,x:t}){let n=e.t,r=t.size>0?Math.min(100,t.done/t.size*100):0,a=t.state==="done"?"check":t.state==="failed"?"alert":t.kind==="up"?"tx-up":"tx-down",i=(l,c,d)=>o("button",{class:"pz-ib",title:c,"aria-label":c,onClick:d,children:o(W,{n:l})}),s;if(t.state==="failed")s=o("span",{class:"err",children:ab(e,t)});else if(t.state==="done")s=o(N,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n(t.kind==="up"?"penzor.tx.uploaded":"penzor.tx.downloaded",{time:rb(e,t.finishedAt)})})]});else if(t.state==="queued")s=o(N,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n("penzor.tx.queued")})]});else if(t.state==="paused")s=o(N,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n("penzor.tx.paused")})]});else{let l=t.speed>0?(t.size-t.done)/t.speed:null;s=o(N,{children:[o("span",{children:Di(t.done,t.size,e.locale())}),t.speed>0&&o("span",{children:[e.b(t.speed),"/s"]}),l!=null&&l>=5&&o("span",{children:n("penzor.tx.left",{eta:Lu(e,l)})})]})}return o("div",{class:`pz-txrow2${t.state==="done"?" is-done":t.state==="failed"?" is-fail":""}`,children:[o(W,{n:a}),o("span",{class:"nm",title:t.name,children:t.name}),o("span",{class:"acts",children:[(t.state==="active"||t.state==="queued")&&i("pause",n("penzor.tx.pause"),()=>void e.txOp(t.id,"pause")),t.state==="paused"&&i("play",n("penzor.tx.resume"),()=>void e.txOp(t.id,"resume")),(t.state==="active"||t.state==="queued"||t.state==="paused")&&i("x",n("penzor.tx.cancel"),()=>void e.txOp(t.id,"cancel")),t.state==="failed"&&t.error!=="too_large"&&o("button",{class:"pz-link",onClick:()=>void e.txOp(t.id,"retry"),children:n("penzor.tx.retry")}),t.state==="failed"&&i("x",n("penzor.tx.remove"),()=>void e.txOp(t.id,"dismiss")),t.state==="done"&&(t.kind==="up"||t.localPath)&&o("button",{class:"pz-link",onClick:()=>e.locate(t),children:n(t.kind==="down"?"penzor.tx.reveal":"penzor.tx.locate")})]}),(t.state==="active"||t.state==="paused"||t.state==="queued")&&o(Io,{pct:r}),o("span",{class:"sub",children:s})]})}function cb(e,t){let n=bn(t.tangu);return!!e&&typeof e.registerView=="function"&&typeof e.registerListSource=="function"&&typeof e.openView=="function"&&typeof e.app?.openSpace=="function"&&typeof n?.cloudInvoke=="function"&&(!n.mobile||!!n.extendMobile)&&eo(n)}function Du(e,t=window){if(!cb(e,t))return null;let n=bn(t.tangu),r=qd(e);vn(n)||n.cloudInvoke("penzor:device").then(p=>{let m=p?.name;typeof m=="string"&&m&&r.setDevice(m)}).catch(()=>{});let a=p=>m=>(He(o(p,{p:r}),m),()=>{He(null,m)});e.registerView({id:Sn.main,title:r.t("penzor.title"),icon:"penzor",workspaceSource:Fi,mount:a(Cu)}),e.registerView({id:Sn.info,title:r.t("penzor.details"),icon:"page",mount:a(Iu)});let i=e.listCapabilities?.includes("tree")??!1,s=typeof e.app?.setSpaceProgress=="function"?"hard-drive":"archive",l=()=>({overview:r.t("penzor.overview"),drive:r.t("penzor.drive"),driveIcon:s,sync:r.t("penzor.ledger.sync"),ama:r.t("penzor.ledger.ama"),apps:r.t("penzor.ledger.apps"),exports:r.t("penzor.ledger.exports"),trash:r.t("penzor.trash"),items:p=>r.t("penzor.items",{n:p}),files:r.t("penzor.uploads"),synced:r.t("penzor.tree.synced"),all:r.t("penzor.scope.all"),thisBackup:r.t("penzor.tree.thisBackup"),byApp:r.t("penzor.tree.byApp"),legacy:r.t("penzor.tree.legacy")}),c=()=>{let p=r.content();if(p){let f=wn(p);return[{key:"sync-home",title:r.t("penzor.sync.title"),icon:"refresh",hint:Fd(f,r.locale()),...f.kind==="warn"?{unread:!0}:{}}]}if(!r.hasSync())return[];let m=r.syncState();return[{key:"sync-home",title:r.t("penzor.sync.title"),icon:"refresh",hint:Bd(m,r.locale()),...Qr(m)?{unread:!0}:{}}]};e.registerListSource({id:Fi,title:r.t("penzor.title"),search:!0,items:p=>{let m=[...c(),...Ld(r.snap(),l(),r.locale(),r.content())],f=p?.query?.trim().toLowerCase()??"";if(f)return m.filter(w=>w.kind!=="folder"&&w.title.toLowerCase().includes(f)).map(({parent:w,...k})=>k);if(i)return m;let v=new Map(m.filter(w=>w.kind==="folder").map(w=>[w.key,w.title]));return m.filter(w=>w.kind!=="folder").map(({parent:w,...k})=>({...k,group:w?v.get(w):void 0}))},subscribe:p=>r.subscribe(p),activeKey:()=>lo(r.loc()),open:p=>r.go(p.key),actions:[{id:"refresh",label:r.t("penzor.act.refresh"),icon:"refresh",primary:!0,run:()=>{r.refresh(),e.app?.sync?.refresh?.().catch(()=>{})}}],itemMenu:p=>{if(p.key.startsWith("sync:")){let m=p.key.slice(5);return[{id:"open-sync",label:r.t("penzor.act.openSync"),icon:"gear",run:()=>r.openSync()},{id:"copy-name",label:r.t("penzor.act.copyName"),icon:"copy",run:()=>{navigator.clipboard?.writeText(m).then(()=>e.app?.notify?.(r.t("penzor.toast.copied")))}}]}return p.key==="trash"&&r.canEmptyTrash()?[{id:"empty-trash",label:r.t("penzor.trash.emptyBtn"),icon:"trash",danger:!0,run:()=>{r.go("trash"),r.setConfirmEmpty(!0)}}]:[]}}),e.registerCommand?.({id:"open-penzor",title:()=>r.t("penzor.cmd.open"),keywords:"penzor cloud storage quota sync files trash drive upload \u84EC\u6D32\u4E91 \u4E91\u7A7A\u95F4 \u4E91\u76D8 \u7F51\u76D8 \u4E0A\u4F20 \u989D\u5EA6 \u540C\u6B65 \u56DE\u6536\u7AD9",run:()=>{e.app?.openSpace?.(cn)}});let d=p=>{if(!(p.key!==Hd||!p.newValue))try{let m=JSON.parse(p.newValue);m.page==="sync"&&r.hasSync()?e.app?.openSpace?.(cn).then(()=>r.go("sync-home")):typeof m.vault=="string"&&m.vault&&r.focusVault(m.vault)}catch{}},g=(()=>{try{return!new URLSearchParams(t.location.search).get("window")}catch{return!1}})();if(g){t.addEventListener("storage",d);try{t.localStorage.setItem($i,"1")}catch{}}let u=r.dispose;return r.dispose=()=>{if(g){t.removeEventListener("storage",d);try{t.localStorage.removeItem($i)}catch{}}u()},r}var db=new TextEncoder,Mw=new TextDecoder("utf-8",{ignoreBOM:!0}),Nu=e=>db.encode(e);function Ou(e){let t="";for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(t)}var ub=50*1024*1024,pb=new Set(["mode","type","source","name","summary","githubRepoUrl","npmPackage","version","readme","description","tags","minAppVersion","maxAppVersion","platforms"]);function fb(e){if(!e||typeof e!="object")return null;let t=e;if(t.id!==void 0&&(typeof t.id!="string"||!/^[a-zA-Z0-9_-]{1,128}$/.test(t.id))||!t.fields||typeof t.fields!="object"||Array.isArray(t.fields))return null;let n=new FormData,r=0;for(let[a,i]of Object.entries(t.fields)){if(!pb.has(a)||typeof i!="string"||(r+=i.length,r>25e4)||t.id&&!["mode","name","summary","version","readme","description","tags","minAppVersion","maxAppVersion","platforms"].includes(a))return null;n.append(a,i)}if(t.zip!==void 0){if(!t.zip||typeof t.zip.name!="string"||!/\.zip$/i.test(t.zip.name)||!(t.zip.data instanceof Uint8Array)||!t.zip.data.byteLength||t.zip.data.byteLength>ub)return null;n.append("zip",new Blob([new Uint8Array(t.zip.data)],{type:"application/zip"}),t.zip.name.replace(/[\\/]/g,"_").slice(-255))}return{path:`${t.id?`/market/mine/${t.id}/update`:"/market/submit"}${t.dryRun===!0?"?dryRun=1":""}`,body:n}}function Bu(e){e.handle("cloud:marketSubmit",async(t,n)=>{if(!e.isTrustedSender(t))return{status:0,error:"untrusted"};let r=fb(n);if(!r)return{status:400,json:{error:"invalid_request"}};let a=await e.getCloud();if(!a.token)return{status:401,error:"not_signed_in"};let i=Cn(a.base,r.path);if(!i)return{status:0,error:"no_cloud_url"};try{let s=await _n(a,i,{method:"POST",body:r.body,redirect:"error",signal:AbortSignal.timeout(12e4)});return{status:s.status,json:await s.json().catch(()=>null)}}catch(s){return{status:0,error:String(s?.message||s)}}})}async function Fu(e){if(!e.token)return"";try{let t=await Eo(e,"POST","/api/auth/handoff",{},5e3);if(t.status===200&&typeof t.json?.code=="string"&&t.json.code)return`code=${encodeURIComponent(t.json.code)}`;if((t.status===404||t.status===405)&&!e.fetch)return`token=${encodeURIComponent(e.token)}`}catch{}return""}var mb=["membership","credits","storefront"],gb=["monthly","quarterly","yearly"],hb=/^[A-Za-z0-9_-]{1,64}$/;function $u(e){let t={status:0,error:"untrusted"},n={ok:!1,error:"untrusted"};e.handle("auth:openAccountCenter",async(a,i)=>{if(!e.isTrustedSender(a))return n;let s=await e.getCloud(),l=s.base;if(!l)return{ok:!1};let c=i&&/^[a-z0-9-]+$/i.test(i)?`#${i}`:"",d=await Fu(s),g=`${l}/account${d?`?${d}`:""}${c}`;return s.signal?.throwIfAborted(),await e.openExternal(g),{ok:!0}}),e.handle("auth:openPayCenter",async(a,i,s,l)=>{if(!e.isTrustedSender(a))return n;if(i!==void 0&&!mb.includes(i))return{ok:!1,error:"invalid_tab"};if(s!==void 0&&(typeof s!="string"||!hb.test(s)))return{ok:!1,error:"invalid_plan"};if(l!==void 0&&!gb.includes(l))return{ok:!1,error:"invalid_period"};let c=(i??"membership")==="membership"&&s?`&plan=${encodeURIComponent(s)}${l?`&period=${l}`:""}`:"",d=await e.getCloud(),g=d.base;if(!g)return{ok:!1};let u=await Fu(d),p=`${g}/pay?tab=${i??"membership"}${c}${u?`&${u}`:""}&redirect=${encodeURIComponent(`${g}/account`)}`;return d.signal?.throwIfAborted(),await e.openExternal(p),{ok:!0}}),e.handle("profile:publicOrigin",async a=>{if(!e.isTrustedSender(a))return n;let{base:i}=await e.getCloud();if(!i)return{ok:!1};try{let s=await fetch(`${i}/account`,{redirect:"manual",signal:AbortSignal.timeout(4e3)});s.body?.cancel().catch(()=>{});let l=s.status>=300&&s.status<400?s.headers.get("location"):null;return l&&/^https?:\/\//i.test(l)?{ok:!0,origin:new URL(l).origin}:{ok:!1}}catch{return{ok:!1}}});let r=()=>e.getCloud();e.handle("account:quota",async a=>{if(!e.isTrustedSender(a))return t;let i=await r();if(!i.token)return{status:401,json:null};try{return await Eo(i,"GET","/api/token-quota/my",void 0,15e3)}catch(s){return{status:0,json:{detail:String(s?.message||s)}}}}),e.handle("account:useResetCard",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await r();if(!s.token)return{status:401,json:null};if(i!==void 0&&i!=="both")return{status:400,json:{error:"invalid_type",detail:`invalid reset card type: ${i}`}};let l=i??"both";try{return await Eo(s,"POST","/api/token-quota/reset-card/use",{type:l},15e3)}catch(c){return{status:0,json:{detail:String(c?.message||c)}}}}),e.handle("account:bgConvert",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await r();if(!s.token)return{status:401,json:null};if(!Number.isInteger(i)||i<1||i>100)return{status:400,json:{error:"invalid_percent"}};try{return await Eo(s,"POST","/api/token-quota/background/convert",{percent:i},15e3)}catch(l){return{status:0,json:{detail:String(l?.message||l)}}}}),e.handle("account:bgAutoMain",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await r();if(!s.token)return{status:401,json:null};if(typeof i!="boolean")return{status:400,json:{error:"invalid_request"}};try{return await Eo(s,"POST","/api/token-quota/background/auto-main",{enabled:i},15e3)}catch(l){return{status:0,json:{detail:String(l?.message||l)}}}}),e.handle("feedback:submit",async(a,i)=>{if(!e.isTrustedSender(a))return n;let s=await e.getCloud();if(!s.base||!s.token)return{ok:!1,error:"not-logged-in"};let l=(i?.description||"").trim();if(!l)return{ok:!1,error:"empty"};if(l.length>1e4)return{ok:!1,error:"description-too-long"};let c=[],d=!1;if(i?.sessionLogJson){let g=Nu(i.sessionLogJson);if(g.length>5*1024*1024)return{ok:!1,error:"attachment-too-large"};c.push({filename:i.sessionLogName||"tangu-session.json",mime_type:"application/json",size:g.length,data_base64:Ou(g)})}try{let g=await _n(s,`${s.base}/api/feedback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:l,attachments:c}),signal:AbortSignal.timeout(2e4)});if(!g.ok){let p=`HTTP ${g.status}`;try{p=(await g.json())?.detail||p}catch{}return{ok:!1,error:p}}return{ok:!0,id:(await g.json().catch(()=>({})))?.id??null,attachmentSkipped:d}}catch(g){return{ok:!1,error:g?.message||String(g)}}}),e.handle("cloud:fetch",async(a,i)=>{if(!e.isTrustedSender(a))return{status:0,error:"untrusted"};let s=i??{},l=typeof s.path=="string"?s.path:"",c=s.projectSource===void 0?null:s.projectSource;if(c!==null&&(typeof c!="string"||!/^[a-z0-9][a-z0-9-]{0,63}$/.test(c)))return{status:0,error:"bad_project_source"};let d=Math.min(12e4,Math.max(1e3,Number(s.timeoutMs)||15e3)),g=typeof s.method=="string"?s.method.toUpperCase():"GET";if(!/^(GET|POST|PUT|PATCH|DELETE)$/.test(g))return{status:0,error:"bad_method"};if(!l.startsWith("/"))return{status:0,error:"bad_path"};let u=await e.getCloud();if(!String(u.base||""))return{status:0,error:"no_cloud_url"};let p=Cn(u.base,l);if(!p)return{status:0,error:"bad_path"};if(!u.token)return{status:401,error:"not_signed_in"};let m=s.body!==void 0&&g!=="GET"&&g!=="DELETE",f=new AbortController,v=setTimeout(()=>f.abort(),d);try{let w=await _n(u,p,{method:g,headers:{...m?{"Content-Type":"application/json"}:{},...c?{"X-Project-Source":c}:{}},body:m?JSON.stringify(s.body):void 0,signal:f.signal});return{status:w.status,json:await w.json().catch(()=>null)}}catch(w){return{status:0,error:String(w?.message||w)}}finally{clearTimeout(v)}}),Bu(e)}var es={sender:"web"},bb=new Set(["auth:openAccountCenter","auth:openPayCenter"]),Uu=(e,t)=>new URL(typeof e=="string"&&e?e:t.location.origin,t.location.href).origin;function vb(e,t=window){let n=new Map,r=!!(t.tangu?.mobile&&t.tangu.extendMobile),a=0,i=!1,s=new AbortController,l=f=>{if(i||f!==a)throw new Error("account_changed")},c=[],d={async getCloud(){let f=a,v=s.signal,w=await e.status().catch(()=>null);return l(f),{base:Uu(w?.cloudUrl,t),token:w?.loggedIn?"session":"",signal:v,fetch:async(k,z)=>{l(f);let x=await e.request(k,{...z,signal:z.signal?AbortSignal.any([z.signal,v]):v});return l(f),x}}},handle:(f,v)=>{n.set(f,v)},async openExternal(f){if(r){if(!t.tangu?.openExternal)throw new Error("no_external_browser");await t.tangu.openExternal(f);return}let v=c.shift();v&&!v.closed?v.location.replace(f):t.open(f,"_blank","noopener,noreferrer")},isTrustedSender:()=>!0,log:f=>console.info("[forsion-extend]",f)};$u(d);let g=mu(d,t,{...r?{saveDownload:async(f,v)=>{if(!e.saveDownload)throw new Error("download_unavailable");let w=await e.saveDownload(f,v);if(!w.ok)throw new Error(w.error||"download_failed")},openExternal:f=>d.openExternal(f)}:{}}),u=t.tangu?.onAuthChanged?.(()=>{a++,s.abort(),s=new AbortController,g.reset();for(let f of c.splice(0))f.close()}),p=async(f,...v)=>{let w=n.get(f);if(!w)throw new Error(`No handler registered for '${f}'`);if(f==="penzor:transfers")return w(es,...v);let k=a;if(i)return{ok:!1,error:"disposed"};let z=M=>k===a&&!i?M:{ok:!1,error:"account_changed"};if(!bb.has(f)||r)return z(await w(es,...v));let x=t.open("","_blank");x&&(x.opener=null,c.push(x));try{return z(await w(es,...v))}finally{let M=x?c.indexOf(x):-1;M>=0&&(c.splice(M,1),x.close())}},m=t.tangu?.authStatus;return{...m?{authStatus:async()=>{let f=await m();return{...f,cloudUrl:f?.cloudUrl?Uu(f.cloudUrl,t):f?.cloudUrl}}}:{},cloudInvoke:p,cloudFetch:f=>p("cloud:fetch",f),openAccountCenter:r&&t.tangu?.openAccountCenter?f=>t.tangu.openAccountCenter(f):f=>p("auth:openAccountCenter",f),openExternal:async f=>{/^https?:\/\//i.test(f)&&(r?await d.openExternal(f):t.open(f,"_blank","noopener,noreferrer"))},dispose(){i=!0,a++,s.abort(),u?.();for(let f of c.splice(0))f.close();g.dispose()}}}function Hu(e,t=window){let n=t.tangu;if(!vn(n)||typeof e?.account?.request!="function"||typeof e.account.status!="function")return null;let{dispose:r,...a}=vb(e.account,t);return wl(a),r}var Un=e=>typeof e=="string"&&e.trim()?e.trim():null,po=e=>(Un(e)||"").replace(/^v(?=\d)/i,"");function yb(e,t){let n=i=>{let s=po(i).split("+")[0],l=s.indexOf("-");return{core:(l<0?s:s.slice(0,l)).split(".").map(d=>/^\d+$/.test(d)?Number(d):NaN),pre:l<0?[]:s.slice(l+1).split(".")}};if(!po(e)||!po(t))return null;let r=n(e),a=n(t);if(r.core.some(i=>!Number.isFinite(i))||a.core.some(i=>!Number.isFinite(i)))return null;for(let i=0;i<Math.max(r.core.length,a.core.length);i++){let s=(r.core[i]||0)-(a.core[i]||0);if(s)return s>0?1:-1}if(!r.pre.length||!a.pre.length)return r.pre.length===a.pre.length?0:r.pre.length?-1:1;for(let i=0;i<Math.max(r.pre.length,a.pre.length);i++){let s=r.pre[i],l=a.pre[i];if(s===void 0||l===void 0)return s===void 0?-1:1;if(s===l)continue;let c=/^\d+$/.test(s),d=/^\d+$/.test(l);return c&&d?Number(s)>Number(l)?1:-1:c!==d?c?-1:1:s>l?1:-1}return 0}var xb=2*6e4,kb=(e,t)=>{let n=Date.parse(String(e??"")),r=Date.parse(String(t??""));return Number.isFinite(n)&&Number.isFinite(r)&&n-r>xb};function qu(e){let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch{return null}return!t||typeof t!="object"||typeof t.itemId!="string"||typeof t.name!="string"?null:{itemId:t.itemId,name:t.name,type:Un(t.type)||void 0,source:Un(t.source)||void 0,mode:t.mode==="info"?"info":"package",from:Un(t.from),to:Un(t.to),tag:Un(t.tag),fields:Array.isArray(t.fields)?t.fields.filter(n=>typeof n=="string"):void 0,listed:t.listed===!0,submittedAt:Un(t.submittedAt)||void 0}}function Vu(e,t){let n={status:"review",note:null,storeVersion:e.from,listed:!!e.listed};if(!t)return n;let r=e.mode==="info",a=t.status==="approved",i=Un(t.version)??e.from,s=g=>!!g&&(r?g.kind==="info":g.kind!=="info"&&po(g.version)===po(e.to)),l=s(t.pendingUpdate)&&!kb(t.pendingUpdate?.submittedAt,e.submittedAt),c=s(t.rejectedUpdate)&&!t.pendingUpdate,d=(g,u=null)=>({status:g,note:u&&u.trim()?u.trim():null,storeVersion:i,listed:a});if(!a)return t.status==="rejected"?d("rejected",t.reviewNote||null):d("review");if(e.listed===!1)return d("approved");if(l)return d("review");if(c)return d("rejected",t.rejectedUpdate?.note||null);if(!r){let g=yb(t.version,e.to);return g!==null&&g>=0||(t.versions||[]).some(u=>po(u.version)===po(e.to))?d("approved"):d("rejected")}return d("approved")}var wb="store_submit_update",zb=`
|
|
1440
|
+
`;async function mn(e,...t){let n=oe().cloudInvoke;if(!n)throw Error("content_sync_unavailable");let r=await n(e,...t);if(!r?.ok)throw Error(r?.error??"content_sync_unavailable");return r.value}var Oo=e=>e instanceof Error?e.message:String(e),Nv={notes:{icon:"notebook",title:"penzor.cat.notes",desc:"penzor.cat.notesDesc"},agents:{icon:"bot",title:"penzor.cat.agents",desc:"penzor.cat.agentsDesc"},profile:{icon:"user-round",title:"penzor.cat.profile",desc:"penzor.cat.profileDesc"},plugins:{icon:"puzzle",title:"penzor.cat.plugins",desc:"penzor.cat.pluginsDesc"}};function gs({on:e,disabled:t,label:n,onToggle:r}){return o("button",{type:"button",role:"switch",class:`settings-switch${e?" active":""}`,"aria-checked":e,"aria-label":n,disabled:t,onClick:a=>{a.stopPropagation(),r(!e)},children:o("span",{})})}function Ku({p:e,legacy:t}){let n=e.t,[r,a]=C(null),[i,s]=C(!0),[l,c]=C(null),[d,g]=C(null),[u,p]=C(0),[m,f]=C(!1),[v,k]=C(!1),[z,x]=C(null),[w,P]=C(!1),[L,U]=C(!1),[H,B]=C(!1),[G,_]=C({}),[E,D]=C(null),[I,ne]=C(!1),[b,S]=C(null),[R,$]=C(null),K=re(!0),Y=re(!1),de=re(null),ve=async()=>{try{let O=await mn(Vt.get);if(!O?.available){K.current&&s(!1);return}K.current&&(Y.current=!0,a(O),s(!0))}catch(O){K.current&&(!Y.current&&/unavailable|not a Forsion Extend channel/i.test(String(O))?s(!1):x(Oo(O)))}};J(()=>{K.current=!0,ve();let O=setInterval(()=>void ve(),1e3);return()=>{K.current=!1,clearInterval(O)}},[]),J(()=>{if(!E&&!I)return;let O=se=>{se instanceof KeyboardEvent&&se.key!=="Escape"||se.type==="mousedown"&&se.target?.closest?.(".pz-cs-menu")||(D(null),ne(!1))};return document.addEventListener("mousedown",O),document.addEventListener("keydown",O),()=>{document.removeEventListener("mousedown",O),document.removeEventListener("keydown",O)}},[E,I]);let $e=!!r&&!r.config.enabled&&r.config.revision===0&&!L,ge=Ht(()=>r&&$e?ju(r.config):null,[$e,r?.config.revision]),Ee=r?l??ge??r.config:null,pt=!!r&&!w&&($e||!!l&&fs(r.config,l)>0),Pe=pt&&Ee?JSON.stringify(Ee)+"#"+u:"";if(J(()=>{if(g(null),!Pe)return;let O=!0,se=setTimeout(()=>{mn(Vt.preview,Ee).then(ze=>{O&&K.current&&g(ze)},ze=>{!O||!K.current||(/config_changed/.test(Oo(ze))?c(null):x(Oo(ze)))})},400);return()=>{O=!1,clearTimeout(se)}},[Pe]),!i)return t;if(!r||!Ee)return o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:z??n("penzor.loading")})});if(w)return o(Ov,{p:e,snap:r,refresh:ve,back:()=>P(!1)});let Xe=`device-${r.deviceId}`,Gt=r.devices.filter(O=>O.id!==r.deviceId),ft=(r.others?.files??0)>0,tt=O=>r.sources.find(se=>se.path===O),It=O=>r.sources.filter(se=>se.path.startsWith(O+"/")&&!se.path.slice(O.length+1).includes("/")),zt=O=>O==="default"?n("penzor.scope.all"):O===Xe?n("penzor.scope.self"):n("penzor.scope.with",{name:r.devices.find(se=>`device-${se.id}`===O)?.name??O.slice(7,15)}),ke=(O,se,ze)=>{c(Vu(Ee,O,se,ft)),$({path:O,name:ze,target:se}),D(null),x(null),f(!1)},St=async O=>{k(!0),x(null);try{await O(),await ve()}catch(se){x(Oo(se))}finally{k(!1)}},Le=()=>void St(async()=>{try{await mn(Vt.apply,d.token)}catch(ze){if(/preview_(changed|expired)/.test(Oo(ze))){f(!0),p(nt=>nt+1);return}throw ze}let O=jt(Ee,"Plugins")==="default",se=e.syncState()?.plugins;e.hasSync()&&se&&se.on!==O&&e.setSync("plugins",O),c(null),U(!1),f(!1)}),Jn=(O,se,ze)=>{O.stopPropagation();let nt=O.currentTarget.getBoundingClientRect(),dt=de.current.getBoundingClientRect(),Je=document.body.currentCSSZoom||1;D(E?.path===se?null:{path:se,name:ze,x:(nt.left-dt.left)/Je-4,y:(nt.bottom-dt.top)/Je+4})},mt=({path:O,name:se})=>{let ze=jt(Ee,O);return o("button",{type:"button",class:`pz-scope${ze!=="default"?" is-alt":""}`,"aria-haspopup":"menu","aria-expanded":E?.path===O,onClick:nt=>Jn(nt,O,se),children:[o(Q,{n:ze==="default"?"cloud":ze===Xe?"laptop":"monitor"}),zt(ze),o(Q,{n:"down"})]})},Ze=An(r),_t=r.jobs.filter(O=>O.state==="queued"||O.state==="active"||O.state==="paused"),vt=ts(r),Lt=Ze.kind==="off"?o("span",{class:"pz-cs-status",children:[o(Q,{n:"cloud-off"}),n("penzor.cs.statusOff")]}):Ze.kind==="paused"?o("span",{class:"pz-cs-status",children:[o(Q,{n:"pause"}),n("penzor.cs.statusPaused")]}):Ze.kind==="run"?o("span",{class:"pz-cs-status is-ok",children:[o("span",{class:"pz-ring",style:`--p:${Ze.pct}`}),n("penzor.cs.statusRun",{pct:Ze.pct})]}):Ze.kind==="scan"?o("span",{class:"pz-cs-status is-ok",children:[o(Q,{n:"refresh"}),n("penzor.cs.statusScan")]}):Ze.kind==="warn"?o("span",{class:"pz-cs-status is-warn",children:[o(Q,{n:"alert"}),n("penzor.cs.statusWarn",{n:Ze.n})]}):o("span",{class:"pz-cs-status is-ok",children:[o(Q,{n:"cloud-check"}),Ze.at?n("penzor.cs.statusOkAgo",{time:En(Ze.at,e.locale())}):n("penzor.cs.statusOk")]}),Xt=()=>{let O=b;S(null),O!=null&&O.trim()!==r.deviceName&&St(()=>mn(Vt.rename,O.trim()))},at=_t.find(O=>O.state==="active")??_t[0],In=(O,se)=>{let ze=Nv[O],nt=jt(Ee,se)!=="off",dt=us.has(se)&&It(se).length>0,Je=!!G[se]&&nt,Dt=Gu(Ee,se),ln=tt(se),Ln=O==="notes"?ln?n("penzor.cat.files",{n:(ln.files??0).toLocaleString(),size:e.b(ln.size)}):"":O==="agents"?(()=>{let Ve=It(se),Tt=Ve.filter(bt=>jt(Ee,bt.path)!=="off").length;return Tt<Ve.length?n("penzor.cat.agentsSome",{n:Ve.length,m:Tt}):n("penzor.cat.agentsN",{n:Ve.length})})():O==="profile"?n("penzor.cat.profileOn"):n("penzor.cat.pluginsN",{n:It(se).length}),Dn=o("b",{children:[n(ze.title),dt&&o("span",{class:"pz-cs-chev",children:o(Q,{n:"right"})})]}),hn=o("small",{children:nt?o(N,{children:[o(mt,{path:se,name:n(ze.title)}),Ln&&o(N,{children:[o("span",{class:"pz-sep",children:"\xB7"}),o("span",{children:Ln})]}),Dt>0&&o(N,{children:[o("span",{class:"pz-sep",children:"\xB7"}),o("button",{class:"pz-link",onClick:()=>P(!0),children:n("penzor.cat.custom",{n:Dt})})]})]}):n(ze.desc)});return o(N,{children:[o("div",{class:`pz-sync-row${dt&&nt?" is-click":""}${Je?" is-open":""}`,children:[dt&&nt?o("div",{class:"pz-sync-main",role:"button",tabIndex:0,"aria-expanded":Je,onClick:()=>_({...G,[se]:!Je}),onKeyDown:Ve=>{Ve.key==="Enter"&&_({...G,[se]:!Je})},children:[o("span",{class:"pz-tile",children:o(Q,{n:ze.icon})}),o("span",{class:"pz-sync-txt",children:[Dn,hn]})]}):o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(Q,{n:ze.icon})}),o("span",{class:"pz-sync-txt",children:[Dn,hn]})]}),o(gs,{on:nt,label:n(ze.title),disabled:v,onToggle:Ve=>ke(se,Ve?"default":"off",n(ze.title))})]}),Je&&It(se).map(Ve=>{let Tt=Ve.path.slice(se.length+1),bt=jt(Ee,Ve.path)!=="off";return o("div",{class:"pz-cs-child",title:Ve.path,children:[o("span",{children:[o("b",{children:[Tt,O==="notes"&&o("span",{class:"pz-cs-faint",children:n("penzor.cat.files",{n:(Ve.files??0).toLocaleString(),size:e.b(Ve.size)})})]}),bt?o(mt,{path:Ve.path,name:Tt}):o("span",{class:"pz-cs-faint",children:n("penzor.cat.notSynced")})]}),o(gs,{on:bt,label:Tt,disabled:v,onToggle:Nt=>ke(Ve.path,Nt?jt(Ee,se):"off",Tt)})]},Ve.path)})]},se)},Ct=pt&&o("div",{class:"pz-cs-bar",role:"region","aria-label":n("penzor.rules.previewTitle"),children:[o(Q,{n:"alert"}),o("span",{class:"txt",children:[$e?d?n("penzor.cs.barFirst",{up:d.upload,down:d.download}):n("penzor.cs.firstTitle"):(()=>{let O=fs(r.config,Ee);return O===1&&R&&jt(Ee,R.path)===R.target&&jt(r.config,R.path)!==R.target?n("penzor.cs.barOne",{name:R.name,scope:R.target==="off"?n("penzor.cs.offName"):zt(R.target)}):n("penzor.cs.barChanged",{n:O})})(),o("small",{children:m?n("penzor.cs.barRecount"):d?[$e?n("penzor.cs.barSize",{size:e.b(d.bytes)}):n("penzor.cs.barCounts",{up:d.upload,down:d.download}),d.conflicts>0?n("penzor.cs.barConflicts",{n:d.conflicts}):"",$e?n("penzor.cs.noDelete"):""].filter(Boolean).join(" \xB7 "):n("penzor.cs.barCounting")})]}),o("button",{class:"pz-btn",disabled:v,onClick:()=>{$e&&U(!0),c(null),f(!1)},children:n($e?"penzor.cs.later":"penzor.cs.undo")}),o("button",{class:"pz-btn pri",disabled:v||!d||r.running,onClick:Le,children:n($e?"penzor.cs.start":"penzor.cs.confirm")})]}),Qe=O=>O.direction==="upload"?"tx-up":O.direction==="download"?"tx-down":"tx-sync";return o("div",{class:"pz-scroll",children:[o("style",{children:Ju}),o("div",{class:"pz-col pz-cs",ref:de,children:[o(hr,{p:e}),o("div",{class:"pz-cs-head",children:[o("h1",{class:"pz-h1",children:n("penzor.sync.title")}),Lt,o("span",{class:"grow"}),o("button",{class:"pz-btn",disabled:v||r.running||!r.config.enabled,onClick:()=>void St(()=>mn(Vt.run)),children:[o(Q,{n:"refresh"}),n("penzor.rules.run")]}),o("button",{class:"pz-btn","aria-label":n("penzor.cs.more"),"aria-haspopup":"menu",onClick:O=>{O.stopPropagation(),ne(!I)},children:o(Q,{n:"more"})})]}),I&&o("div",{class:"pz-cs-menu",style:"right:0;top:64px",role:"menu",children:o("button",{class:"it",role:"menuitem",onClick:()=>{ne(!1),P(!0)},children:[o(Q,{n:"gear"}),o("span",{children:o("b",{children:n("penzor.cs.advanced")})}),o("span",{})]})}),o("div",{class:"pz-cs-meta",children:[o("span",{class:"pz-cs-dev",children:[o(Q,{n:"laptop"}),b!=null?o(N,{children:[n("penzor.cs.thisComputerLabel"),o("input",{value:b,maxLength:64,"aria-label":n("penzor.cs.rename"),ref:O=>O?.focus(),onInput:O=>S(O.currentTarget.value),onKeyDown:O=>{O.key==="Enter"&&Xt(),O.key==="Escape"&&S(null)},onBlur:Xt}),o("span",{class:"pz-cs-faint",children:n("penzor.cs.renameHint")})]}):o(N,{children:[n("penzor.cs.thisComputer",{name:r.deviceName}),o("button",{class:"pz-link","aria-label":n("penzor.cs.rename"),title:n("penzor.cs.rename"),onClick:()=>S(r.deviceName),children:o(Q,{n:"pen"})})]})]}),o("span",{children:Gt.length?n("penzor.cs.othersN",{n:Gt.length,names:Gt.map(O=>O.name).join(e.locale()==="zh"?"\u3001":", ")}):n("penzor.cs.noOthers")}),o("button",{class:"pz-link",onClick:()=>B(!H),children:[o(Q,{n:"history"})," ",n("penzor.cs.log")]})]}),(z||r.error)&&o("p",{role:"alert",class:"pz-rule-error",style:"margin-top:14px",children:z??r.error}),$e&&o("div",{class:"pz-sync-ask",children:[o("h4",{children:n("penzor.cs.firstTitle")}),o("p",{children:n("penzor.cs.firstBody")})]}),at&&o("div",{class:"pz-cs-act",children:[o("div",{class:"row1",children:[o(Q,{n:Qe(at)}),o("span",{class:"grow",children:[n(at.direction==="download"?"penzor.cs.down":"penzor.cs.up",{name:at.path.slice(at.path.lastIndexOf("/")+1)}),at.size!=null&&o("small",{children:[" ",e.b(at.done)," / ",e.b(at.size)]})]}),o("button",{class:"pz-btn",disabled:v,onClick:()=>void St(()=>mn(Vt.pause,!r.paused)),children:[o(Q,{n:r.paused?"play":"pause"}),n(r.paused?"penzor.rules.resume":"penzor.rules.pause")]})]}),Ze.kind==="run"&&o("div",{class:"pz-bar",children:o("span",{style:`width:${Ze.pct}%`})}),_t.length>1&&o("div",{class:"more",children:n("penzor.cs.waiting",{n:_t.length-1})})]}),vt.length>0&&!at&&o("div",{class:"pz-cs-act is-warn",children:o("div",{class:"row1",children:[o(Q,{n:"alert"}),o("span",{class:"grow",children:[n("penzor.cs.failedN",{n:vt.length}),o("small",{children:[" ",vt[0].error??""]})]}),o("button",{class:"pz-btn",disabled:v||r.running,onClick:()=>void St(()=>mn(Vt.retry)),children:n("penzor.cs.retry")}),o("button",{class:"pz-btn",onClick:()=>B(!0),children:n("penzor.cs.seeLog")})]})}),o("div",{class:"pz-sync-card",children:[No.map(O=>In(O.id,O.path)),ft&&o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(Q,{n:"folder"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:n("penzor.cat.others")}),o("small",{children:jt(Ee,"")!=="off"?o(N,{children:[o(mt,{path:"",name:n("penzor.cat.others")}),o("span",{class:"pz-sep",children:"\xB7"}),o("span",{children:n("penzor.cat.files",{n:r.others.files.toLocaleString(),size:e.b(r.others.size)})})]}):n("penzor.cat.othersDesc")})]})]}),o(gs,{on:jt(Ee,"")!=="off",label:n("penzor.cat.others"),disabled:v,onToggle:O=>ke("",O?"default":"off",n("penzor.cat.others"))})]})]}),o("p",{class:"pz-cs-note",children:n("penzor.cs.note")}),H&&o(N,{children:[o("h3",{class:"pz-cs-sec",children:[n("penzor.cs.log"),o("span",{class:"grow"}),vt.length>0&&o("button",{class:"pz-btn",disabled:v||r.running,onClick:()=>void St(()=>mn(Vt.retry)),children:n("penzor.cs.retry")})]}),o("div",{class:"pz-cs-log",children:r.jobs.length?r.jobs.slice(-30).reverse().map(O=>o("div",{class:"f",children:[o(Q,{n:Qe(O)}),o("span",{children:[O.path,O.error&&o("small",{children:[" \xB7 ",O.error]})]}),o("small",{children:[n(`penzor.rules.state.${O.state}`)," \xB7 ",En(O.finishedAt??O.at,e.locale())]})]},O.id)):o("p",{class:"pz-cs-note",children:n("penzor.cs.logEmpty")})}),o("p",{class:"pz-cs-note",children:n("penzor.cs.logNote")})]}),Ct,E&&o("div",{class:"pz-cs-menu",role:"menu",style:`left:${E.x}px;top:${E.y}px`,children:[o("div",{class:"cap",children:n("penzor.scope.menuTitle",{name:E.name})}),["default",Xe,...Gt.map(O=>`device-${O.id}`)].map((O,se)=>o(N,{children:[se===2&&o("hr",{}),o("button",{class:"it",role:"menuitemradio","aria-checked":jt(Ee,E.path)===O,onClick:()=>ke(E.path,O,E.name),children:[o(Q,{n:O==="default"?"cloud":O===Xe?"laptop":"monitor"}),o("span",{children:[o("b",{children:zt(O)}),se<2&&o("small",{children:n(se===0?"penzor.scope.allDesc":"penzor.scope.selfDesc")})]}),jt(Ee,E.path)===O?o("span",{class:"tick",children:o(Q,{n:"check"})}):o("span",{})]})]},O)),E.path==="human"&&o("div",{class:"cap",children:n("penzor.scope.calendarNote")}),o("div",{class:"cap",children:n("penzor.scope.menuFoot")})]})]})]})}function Ov({p:e,snap:t,refresh:n,back:r}){let a=e.t,[i,s]=C(null),[l,c]=C(null),[d,g]=C(!1),[u,p]=C(null),m=i??t.config,f=!!i,v=w=>w==="default"?a("penzor.rules.default"):w==="off"?a("penzor.rules.off"):t.devices.find(P=>"device-"+P.id===w)?.name??`${a("penzor.rules.device")} ${w.slice(7)}`,k=w=>{let P=structuredClone(m);w(P),s(P),c(null),p(null)},z=async w=>{g(!0),p(null);try{await w(),await n()}catch(P){p(Oo(P))}finally{g(!1)}},x=[...new Set(["default",`device-${t.deviceId}`,...t.devices.map(w=>`device-${w.id}`),...m.rules.map(w=>w.target),"off"])];return o("div",{class:"pz-scroll",children:[o("style",{children:Ju}),o("div",{class:"pz-col pz-rules",children:[o("button",{class:"pz-link",onClick:r,children:["\u2190 ",a("penzor.cs.backSimple")]}),o("div",{class:"pz-rule-head",children:o("h1",{class:"pz-h1",children:a("penzor.cs.advanced")})}),o("p",{class:"pz-rule-meta",children:t.deviceName}),u&&o("p",{role:"alert",class:"pz-rule-error",children:u}),o("div",{class:"pz-rule-tools",children:[o("label",{class:"pz-rule-enable",children:[o("input",{type:"checkbox",checked:m.enabled,onChange:w=>k(P=>{P.enabled=w.currentTarget.checked})}),a("penzor.rules.enable")]}),o("button",{class:"pz-btn",onClick:()=>k(w=>w.rules.push({id:`rule-${crypto.randomUUID()}`,source:"",target:"default"})),children:a("penzor.rules.add")})]}),o("div",{class:"pz-rule-table",children:[o("div",{class:"pz-rule-row pz-rule-label",children:[o("span",{children:a("penzor.rules.source")}),o("span",{children:a("penzor.rules.destination")}),o("span",{})]}),m.rules.map((w,P)=>o("div",{class:"pz-rule-row",children:[o("input",{"aria-label":`${a("penzor.rules.source")} ${P+1}`,list:"pz-content-sources",placeholder:"Forsion",value:w.source,onInput:L=>k(U=>{U.rules[P].source=L.currentTarget.value,delete U.rules[P].sourceId})}),o("select",{"aria-label":`${a("penzor.rules.destination")} ${P+1}`,value:w.target,onChange:L=>k(U=>{U.rules[P].target=L.currentTarget.value}),children:x.map(L=>o("option",{value:L,children:v(L)},L))}),o("button",{class:"pz-btn","aria-label":`${a("penzor.rules.remove")} ${P+1}`,onClick:()=>k(L=>{L.rules.splice(P,1)}),children:"\xD7"})]},w.id))]}),o("datalist",{id:"pz-content-sources",children:t.sources.filter(w=>w.kind==="folder").map(w=>o("option",{value:w.path},w.path))}),o("p",{class:"pz-rule-note",children:[a("penzor.rules.inherit"),o("br",{}),a("penzor.rules.namespace"),o("br",{}),a("penzor.rules.human")]}),o("div",{class:"pz-rule-actions",children:[f&&o("button",{class:"pz-btn",onClick:()=>{s(null),c(null)},children:a("penzor.cancel")}),o("button",{class:"pz-btn pri",disabled:d||t.running,onClick:()=>void z(async()=>c(await mn(Vt.preview,m))),children:a("penzor.rules.preview")})]}),l&&o("div",{class:"pz-rule-preview",role:"region","aria-label":a("penzor.rules.previewTitle"),children:[o("h2",{children:a("penzor.rules.previewTitle")}),o("p",{children:a("penzor.rules.previewCounts",{up:l.upload,down:l.download,conflicts:l.conflicts})}),o("p",{class:"pz-rule-note",children:a("penzor.rules.retain")}),o("div",{class:"pz-rule-actions",children:[o("button",{class:"pz-btn",onClick:()=>c(null),children:a("penzor.rules.back")}),o("button",{class:"pz-btn pri",disabled:d,onClick:()=>void z(async()=>{await mn(Vt.apply,l.token),s(null),c(null)}),children:a("penzor.rules.apply")})]})]})]})]})}function Qu(e){let[,t]=C(0);J(()=>{let n=e.subscribe(()=>t(r=>r+1));return t(r=>r+1),n},[e])}function ha(e){return o("div",{ref:e.rootRef,class:`${e.side?"pz-side":"pz"}${e.extra?` ${e.extra}`:""}`,lang:e.p.locale()==="zh"?"zh-CN":"en",...e.on,children:[o("style",{children:Iu}),e.children]})}var Fo=({pct:e,warn:t})=>o("div",{class:`pz-bar${t?" is-low":""}`,children:o("span",{style:{width:`${Math.max(0,Math.min(100,e)).toFixed(1)}%`}})});function ep({p:e}){Qu(e);let t=re(null),n=re(null);J(()=>{e.enter(),e.refresh(),go(e.loc())&&e.ctx.closeView?.("penzor-info",{collapse:!0});let p=t.current;if(!p||typeof IntersectionObserver>"u")return;let m=!0;e.setVisible(!0);let f=new IntersectionObserver(v=>{let k=v.some(z=>z.isIntersecting);k&&!m&&(e.enter(),e.refresh()),m=k,e.setVisible(k)});return f.observe(p),()=>{f.disconnect(),e.setVisible(!1)}},[e]);let[r,a]=C(null),i=p=>Array.from(p.dataTransfer?.types??[]).includes("Files"),s=p=>{let m=p.target?.closest?.("tr[data-dir-id]");return m?{id:m.dataset.dirId,name:m.dataset.dirName??""}:null},l=()=>e.appStack()[e.appStack().length-1]?.name??e.t("penzor.drive"),c=e.canWrite()&&e.auth()==="in"?{onDragOver:p=>{if(!i(p))return;p.preventDefault(),p.stopPropagation(),p.dataTransfer&&(p.dataTransfer.dropEffect="copy");let m=s(p),f=m?.name||l();(r?.place!==f||r?.target?.id!==m?.id)&&a({place:f,target:m})},onDragLeave:p=>{t.current?.contains(p.relatedTarget)||a(null)},onDrop:p=>{if(!i(p))return;p.preventDefault(),p.stopPropagation();let m=s(p);a(null);let f=oe().getPathForFile;if(!f){p.dataTransfer&&e.upload(Uu(p.dataTransfer),m);return}let v=Array.from(p.dataTransfer?.files??[]).map(k=>{try{return f(k)}catch{return""}}).filter(Boolean);e.upload(v,m)}}:{};J(()=>{e.canWrite()||a(null)},[e.canWrite()]);let d=e.t,g=e.auth(),u;return g==="out"?u=o(tp,{p:e}):e.loc().kind==="sync-home"?u=o(Ku,{p:e,legacy:o(Bv,{p:e})}):e.snap()?e.error()?u=o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:e.error()})}):e.loc().kind==="overview"?u=o(Hv,{p:e,upload:()=>{e.go("app:penzor"),n.current?.click()}}):u=o(Wv,{p:e,dropDir:r?.target?.id??null}):u=o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:e.error()??d("penzor.loading")})}),o(ha,{p:e,rootRef:t,extra:r?"pz-drop":"",on:c,children:[o("input",{class:"pz-root-upload",ref:n,type:"file",multiple:!0,hidden:!0,onChange:p=>{let m=p.currentTarget,f=oe().getPathForFile,v=f?Array.from(m.files??[]).map(k=>f(k)).filter(Boolean):ds(Array.from(m.files??[]),!1);e.go("app:penzor"),e.upload(v),m.value=""}}),u,r&&o("div",{class:"pz-dropbar",children:o("span",{children:[o(Q,{n:"upload"}),d("penzor.drop.to",{place:r.place})]})}),e.menu()&&o(Xv,{p:e}),o(eb,{p:e})]})}var Fv={dropbox:"Dropbox",s3:"S3",webdav:"WebDAV"};function hs({on:e,disabled:t,label:n,title:r,onToggle:a}){return o("button",{type:"button",role:"switch",class:`settings-switch${e?" active":""}`,"aria-checked":e,"aria-label":n,title:r,disabled:t,onClick:i=>{i.stopPropagation(),a(!e)},children:o("span",{})})}var vs=({tone:e,text:t,title:n})=>o("span",{class:`pz-sync-state is-${e}`,title:n,children:[e!=="off"&&o("i",{}),t]});function Bv({p:e}){let t=e.t,n=e.syncState(),[r,a]=C(!1);if(!n)return o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:t("penzor.loading")})});if(!n.signedIn)return o(tp,{p:e});let i=e.snap(),s=n.notes,l=t("penzor.ledger.sync"),c=s.maxBytes??i?.sync?.maxBytes??0,d=i?.sync?.maxFileBytes||50*1024*1024,g=s.vault?i?.sync?.vaults.find(_=>_.vault===s.vault)??null:null,u=uu(n,c),p=s.on?s.last?.skippedLarge??0:0,m=s.rootName?t("penzor.sync.notesNamed",{name:s.rootName}):t("penzor.sync.notesPlain"),f=()=>e.openSync(),v=()=>{if(s.pending)return{tone:"wait",text:t("penzor.sync.waiting")};if(!s.on)return{tone:"off",text:t("penzor.sync.off")};let _=mr(n);if(_!=null)return{tone:"ok",text:_>0?t("penzor.sync.running",{pct:Math.round(_*100)}):t("penzor.sync.runningPlain")};if(u)return{tone:"warn",text:t("penzor.sync.overQuota")};if(es(n))return{tone:"warn",text:t("penzor.sync.failed")};if(s.backend==="folder")return{tone:"ok",text:t("penzor.sync.toFolder")};let E=Fv[s.backend];return E?{tone:"ok",text:t("penzor.sync.to",{name:E})}:s.last?{tone:"ok",text:s.localBytes!=null?t("penzor.sync.doneSize",{size:e.b(s.localBytes)}):t("penzor.sync.done")}:{tone:"ok",text:t("penzor.sync.firstPending")}},k={tone:"off",text:t("penzor.sync.off")},z=(_,E)=>E?`${_} \xB7 ${t("penzor.sync.metaLast",{time:En(E,e.locale())})}`:_,x=()=>{let _=n.agents;if(!_.on)return k;if(_.running)return{tone:"ok",text:t("penzor.sync.runningPlain")};let E=t("penzor.sync.agentsN",{n:_.count});return _.last&&!_.last.ok?{tone:"warn",text:t("penzor.sync.failed"),title:_.last.error}:_.last&&_.last.conflicts>0?{tone:"warn",text:t("penzor.sync.conflictsN",{n:_.last.conflicts}),title:t("penzor.sync.conflictsHint")}:{tone:"ok",text:z(E,_.last?.at)}},w=()=>{let _=n.plugins;return _.on?(_.pending??0)>0?{tone:"wait",text:t("penzor.sync.pluginsPending",{n:_.pending})}:{tone:"ok",text:z(t("penzor.sync.pluginsN",{n:_.count}),_.lastAt)}:k},P=_=>E=>{e.setSync(_,E)},L=s.available===!1&&!s.on&&(s.backend==="off"||s.backend==="penzor"),U=[e.thisDevice()?t("penzor.sync.metaDevice",{name:e.thisDevice()}):null,s.on?s.last?t("penzor.sync.metaLast",{time:En(s.last.at,e.locale())}):t("penzor.sync.metaNever"):null,s.on&&s.backend!=="off"?ns(s,e.locale()):null].filter(_=>!!_),H=v(),B=g?[...new Set([...g.devices,...g.device?[g.device]:[]])]:[],G=i?.ama?i.ama.reduce((_,E)=>_+E.sizeBytes,0):null;return o("div",{class:"pz-scroll",children:o("div",{class:"pz-col",children:[o(hr,{p:e}),o("div",{class:"pz-title pz-sync-head",children:[o("h1",{class:"pz-h1",children:t("penzor.sync.title")}),o("span",{class:"pz-badge",children:[o(Q,{n:"check"}),mu(n,e.locale())]})]}),U.length>0&&o("div",{class:"pz-meta",children:U.map(_=>o("span",{children:_},_))}),s.pending&&o($v,{p:e,s:n}),u&&o("div",{class:"pz-sync-ask is-warn",role:"region",children:[o("h4",{children:s.localBytes!=null&&c>0?t("penzor.sync.quotaTitle",{size:e.b(s.localBytes),ledger:l,max:e.b(c)}):t("penzor.sync.quotaTitlePlain",{ledger:l})}),o("p",{children:[t("penzor.sync.quotaBody"),p>0&&` ${t("penzor.sync.quotaLarge",{size:e.b(d),n:p})}`]}),o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",onClick:()=>void Wn("membership").then(_=>{_||e.ctx.app?.notify?.(t("err.openFailed"))}),children:t("member.upgrade")}),g&&o("button",{class:"pz-btn",onClick:()=>e.go(`sync:${g.vault}`),children:t("penzor.sync.quotaSee")})]})]}),o("div",{class:"pz-sync-card",children:[o("div",{class:`pz-sync-row is-click${r?" is-open":""}`,children:[o("button",{type:"button",class:"pz-sync-main","aria-expanded":r,onClick:()=>a(!r),children:[o("span",{class:"pz-tile",children:o(Q,{n:"notebook"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:m}),o("small",{children:t("penzor.sync.notesDesc")})]}),o(vs,{...H})]}),o(hs,{on:s.on&&!s.pending,label:m,disabled:!!s.pending||L||e.syncBusy("notes"),title:s.pending?t("penzor.sync.decideAbove"):void 0,onToggle:P("notes")})]}),r&&o("div",{class:"pz-sync-sub",children:[o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvSchedule")}),o("span",{children:ns(s,e.locale())}),o("button",{class:"pz-link",onClick:f,children:t("penzor.sync.change")})]}),o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvDirection")}),o("span",{children:t(`penzor.sync.dir.${s.direction}`)}),o("button",{class:"pz-link",onClick:f,children:t("penzor.sync.change")})]}),p>0&&o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvSkipped")}),o("span",{children:t("penzor.sync.skippedN",{n:p,size:e.b(d)})}),o("span",{})]}),s.backend==="penzor"&&s.vault&&o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvWhere")}),o("span",{children:i?.sync&&c>0?t("penzor.sync.whereUsed",{ledger:l,vault:s.vault,used:e.b(i.sync.usedBytes),max:e.b(c)}):t("penzor.sync.where",{ledger:l,vault:s.vault})}),g?o("button",{class:"pz-link",onClick:()=>e.go(`sync:${g.vault}`),children:t("penzor.sync.open")}):o("span",{})]})]}),o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(Q,{n:"bot"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:t("penzor.sync.agents")}),o("small",{children:t("penzor.sync.agentsDesc")})]}),o(vs,{...x()})]}),o(hs,{on:n.agents.on,label:t("penzor.sync.agents"),disabled:e.syncBusy("agents"),onToggle:P("agents")})]}),o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(Q,{n:"puzzle"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:t("penzor.sync.plugins")}),o("small",{children:t("penzor.sync.pluginsDesc")})]}),o(vs,{...w()})]}),o(hs,{on:n.plugins.on,label:t("penzor.sync.plugins"),disabled:e.syncBusy("plugins"),onToggle:P("plugins")})]})]}),o("div",{class:"pz-h3",children:t("penzor.sync.devicesTitle")}),i?B.length===0?o("p",{class:"pz-sync-none",children:t("penzor.sync.noDevices")}):o("div",{class:"pz-rows pz-sync-dev",children:B.map(_=>o("div",{class:"row",children:[o(Q,{n:"laptop"}),o("span",{class:"t",children:[_,_===e.thisDevice()&&o("em",{children:t("penzor.sync.thisOne")})]}),o("span",{class:"s",children:g?.device===_&&g.updatedAt?t("penzor.sync.lastWrite",{time:En(Date.parse(g.updatedAt),e.locale())}):""})]},_))}):o("p",{class:"pz-sync-none",children:t("penzor.loading")}),o("div",{class:"pz-h3",children:t("penzor.sync.phoneTitle")}),o("div",{class:"pz-tip",children:[o(Q,{n:"info"}),o("span",{children:G!=null?t("penzor.sync.phoneTip",{size:e.b(G)}):t("penzor.sync.phoneTipPlain")})]}),o("p",{class:"pz-note",children:[t("penzor.sync.foot"),o("button",{class:"pz-link",onClick:f,children:t("penzor.sync.footLink")})]})]})})}function $v({p:e,s:t}){let n=e.t,r=t.notes.pending,a=e.syncBusy("resolve"),i=new Date,s=n("penzor.sync.backupName",{name:t.notes.rootName??n("penzor.sync.notesPlain"),date:`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`}),l=r.cloudDevice?n("penzor.sync.askCloud",{device:r.cloudDevice,files:r.cloudFiles.toLocaleString(),size:e.b(r.cloudBytes)}):n("penzor.sync.askCloudNoDevice",{files:r.cloudFiles.toLocaleString(),size:e.b(r.cloudBytes)});return o("div",{class:"pz-sync-ask",role:"region","aria-label":n("penzor.sync.askTitle"),children:[o("h4",{children:n("penzor.sync.askTitle")}),o("p",{children:[l," ",n("penzor.sync.askLocal",{local:r.localOnly.toLocaleString(),conflicts:r.conflicts.toLocaleString()})]}),e.confirmCloud()?o("div",{class:"pz-confirm",children:[o("span",{children:n("penzor.sync.askConfirm",{backup:s})}),o("button",{class:"pz-btn pri",disabled:a,onClick:()=>void e.resolveNotes("cloud"),children:n("penzor.sync.askConfirmGo")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>e.setConfirmCloud(!1),children:n("penzor.cancel")})]}):o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",disabled:a,onClick:()=>void e.resolveNotes("merge"),children:n("penzor.sync.askMerge")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>e.setConfirmCloud(!0),children:n("penzor.sync.askCloudBtn")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>void e.resolveNotes("skip"),children:n("penzor.sync.askSkip")})]}),o("p",{class:"pz-sync-explain",children:n("penzor.sync.askExplain",{backup:s})})]})}function tp({p:e}){let t=e.t;return o("div",{class:"pz-scroll",children:o("div",{class:"pz-empty",children:[o("span",{class:"ic",children:o(Q,{n:"cloud"})}),o("h2",{children:t("penzor.out.title")}),o("p",{children:t("penzor.out.lead")}),o("button",{class:"pz-btn pri",onClick:()=>e.signIn(),children:[o(Q,{n:"login"}),t("penzor.out.signIn")]})]})})}function Uv({p:e}){let t=e.t,n=e.snap()?.ledger,r=e.snap()?.ledgerStale,a=!!n?.complete&&n.usage.usedBytes!=null;return o("div",{class:"pz-unified-quota",role:"status",children:[o("div",{class:"pz-total",children:[o("b",{children:a?e.b(n.usage.usedBytes):"\u2014"}),o("span",{children:n?t("penzor.ofMax",{max:e.b(n.quota.limitBytes)}):t("penzor.unified.unavailable")})]}),a&&(n.state==="warn"||n.state==="over"?o(Fo,{pct:n.quota.limitBytes>0?n.usage.usedBytes/n.quota.limitBytes*100:100,warn:!0}):o(qv,{p:e})),o("p",{class:"pz-note",children:r?t("penzor.unified.stale"):a?n.enforcement?t("penzor.unified.enforced"):n.phase==="grace"?t("penzor.unified.grace",{date:sn(Math.max(Date.parse(n.rollout?.graceUntil??""),Date.parse(n.rollout?.compatibilityUntil??"")||0),e.locale())}):n.state==="over"?t("penzor.unified.over"):n.state==="warn"?t("penzor.unified.warn"):`${t("penzor.unified.notice")} \xB7 ${t("penzor.unified.accounting",{trash:e.b(n.usage.trashBytes)})}`:t("penzor.unified.incomplete")}),n?.rollout&&!r&&o("div",{class:"pz-tip",children:[o("p",{children:t("penzor.unified.rolloutPolicy")}),!n.rollout.acknowledgedAt&&o("button",{class:"pz-btn",onClick:()=>void e.acknowledgeStorageNotice(),children:t("penzor.unified.ack")})]})]})}var va=(e,t)=>t>0&&e/t>=.8;function Hv({p:e,upload:t}){let n=e.t,r=e.snap(),a=r?.ledger,i=e.content(),s=Ki(r,i),l=z=>{let x=a?.sources.find(w=>w.id===z);return x?.status==="ready"?x.liveBytes+x.trashBytes:null},c=z=>{let x=l(z);return x==null?n("penzor.unified.unavailable"):e.b(x)},d=z=>()=>e.go(z),g=(z,x,w,P,L)=>o("button",{class:`row${L?" is-warn":""}`,onClick:d(z),children:[o(Q,{n:"folder"}),o("span",{class:"t",children:[x,o("em",{children:L??w})]}),o("span",{class:"s",children:P}),o(Q,{n:"right"})]},z),u=r?.apps&&va(r.apps.used,r.apps.quota)?n("penzor.quota.sourceLimit",{max:e.b(r.apps.quota),used:e.b(r.apps.used)}):void 0,p=r?.sync&&va(r.sync.usedBytes,r.sync.maxBytes)?n("penzor.quota.sourceLimit",{max:e.b(r.sync.maxBytes),used:e.b(r.sync.usedBytes)}):void 0,m=i?An(i):null,f=i?.deviceId,v=(r?.contentDevices??[]).filter(z=>z.id!==f),k=g("source:sync",n(s?"penzor.tree.legacy":"penzor.ledger.sync"),n(s?"penzor.ov.legacy":"penzor.ov.sync"),c("sync"),p);return o("div",{class:"pz-scroll",children:o("div",{class:"pz-col",children:[o(hr,{p:e}),o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:n("penzor.drive")}),o("button",{class:"pz-btn",onClick:t,children:[o(Q,{n:"upload"}),n("penzor.unified.uploadTo")]})]}),o(Uv,{p:e}),o("div",{class:"pz-ov-group",children:n("penzor.ov.mine")}),o("div",{class:"pz-rows",children:g("app:penzor",n("penzor.uploads"),n("penzor.ov.uploads"),c("uploads"))}),o("div",{class:"pz-ov-group",children:n("penzor.ov.synced")}),o("div",{class:"pz-rows",children:s&&r?.contentDevices?o(N,{children:[g("content:default",n("penzor.scope.all"),m?.kind==="ok"&&m.at?n("penzor.ov.allLast",{time:En(m.at,e.locale())}):n("penzor.ov.all"),""),f&&g(`content:device-${f}`,n("penzor.tree.thisBackup"),n("penzor.ov.self"),""),v.map(z=>g(`content:device-${z.id}`,z.name,n("penzor.ov.device"),""))]}):o(N,{children:[k,g("source:agents",n("penzor.source.agents"),n("penzor.ov.agents"),c("agents")),g("source:profile",n("penzor.source.profile"),n("penzor.ov.profile"),c("profile"))]})}),o("div",{class:"pz-ov-group",children:n("penzor.tree.byApp")}),o("div",{class:"pz-rows",children:[g("source:ama",n("penzor.ledger.ama"),n("penzor.ov.ama"),c("ama")),g("source:apps",n("penzor.ledger.apps"),n("penzor.ov.apps"),c("apps"),u),g("source:plugins",n("penzor.source.plugins"),n("penzor.ov.plugins"),c("plugins")),g("exports",n("penzor.ledger.exports"),n("penzor.ov.exports"),c("exports"))]}),s&&o(N,{children:[o("div",{class:"pz-ov-group",children:n("penzor.ov.stale")}),o("div",{class:"pz-rows is-stale",children:k})]}),o("p",{class:"pz-note",children:n("penzor.unified.policy")})]})})}function qv({p:e}){let t=e.snap()?.ledger;if(!t?.complete||t.usage.usedBytes==null||t.quota.limitBytes<=0)return null;let n=e.t,r=s=>{let l=t.sources.find(c=>c.id===s);return l?.status==="ready"?l.liveBytes+l.trashBytes:0},a=[[n("penzor.ov.segNotes"),r("ama")],[n("penzor.ledger.apps"),r("apps")],[n("penzor.ov.segSync"),r("sync")],[n("penzor.uploads"),r("uploads")]];a.push([n("penzor.ov.segOther"),Math.max(0,t.usage.usedBytes-a.reduce((s,[,l])=>s+l,0))]);let i=a.filter(([,s])=>s>0);return o(N,{children:[o("div",{class:"pz-seg",role:"img","aria-label":i.map(([s,l])=>`${s} ${e.b(l)}`).join(", "),children:i.map(([s,l],c)=>o("span",{class:`c${c}`,style:{width:`${Math.max(.6,l/t.quota.limitBytes*100)}%`}},s))}),o("div",{class:"pz-legend",children:i.map(([s,l],c)=>o("span",{children:[o("i",{class:`c${c}`}),s," ",o("b",{children:e.b(l)})]},s))})]})}function Wv({p:e,dropDir:t}){let n=e.t,r=e.loc(),a=e.snap(),i=e.rows(),[s,l]=C(!1),[c,d]=C(null),g=re(null),u=re(null),p=re(null),m=e.canWrite(),f=e.selection();J(()=>(e.picker.files=()=>g.current?.click(),e.picker.folder=()=>u.current?.click(),()=>{e.picker.files=void 0,e.picker.folder=void 0}),[e]);let v=(b,S)=>{let R=b.currentTarget,$=oe().getPathForFile,K=Array.from(R.files??[]);if(!$){R.value="",e.upload(ds(K,S));return}let Y=K.map(ve=>{try{return $(ve)}catch{return""}}),de=Y.filter(Boolean);if(S){let ve=new Set;K.forEach(($e,ge)=>{let Ee=$e.webkitRelativePath??"",pt=Y[ge];!Ee||!pt||pt.length<Ee.length||ve.add(pt.slice(0,pt.length-Ee.length)+Ee.split("/")[0])}),de=[...ve]}R.value="",e.upload(de)},k=(b,S)=>{e.select(S,{toggle:b.metaKey||b.ctrlKey,range:b.shiftKey}),p.current?.focus({preventScroll:!0})},z=b=>{if(b.target?.tagName!=="INPUT"){if((b.metaKey||b.ctrlKey)&&b.key.toLowerCase()==="a"&&e.canMulti())b.preventDefault(),e.selectAll();else if(b.key==="Escape"&&f.length>1){b.preventDefault();let S=e.selected();e.select(S)}}},x=r.kind==="sync"?n(e.content()?.config.enabled?"penzor.tree.legacy":"penzor.ledger.sync"):r.kind==="ama"?n("penzor.ledger.ama"):r.kind==="app"&&!e.canWrite()?n("penzor.ledger.apps"):null,w=r.kind==="content"?np(e,r.namespace):r.kind==="sync"?r.vault:r.kind==="ama"?a.ama?.find(b=>b.id===r.vaultId)?.name??"":r.kind==="app"?e.appLabel(r.appId):r.kind==="source"?n(fr[r.source]):r.kind==="exports"?n("penzor.ledger.exports"):n("penzor.trash"),P=r.kind==="app"?e.appStack().map(b=>b.name):e.path()?e.path().split("/"):[],L=[...x?[{label:x,depth:null}]:[],{label:w,depth:0},...P.map((b,S)=>({label:b,depth:S+1}))],U=["mtime","size","name"],H=()=>e.setSort(U[(U.indexOf(e.sort())+1)%U.length]),B=r.kind==="sync"?n("penzor.col.device"):r.kind==="trash"?n("penzor.col.origin"):r.kind==="exports"?n("penzor.col.app"):null,G=r.kind==="trash"?n("penzor.col.deleted"):n("penzor.col.mtime"),_=()=>{if(r.kind==="content"){let S=e.content()?An(e.content()):null,R=e.content()?.deviceId,$=r.namespace==="default"?n("penzor.content.noteAll"):r.namespace===`device-${R}`?n("penzor.content.noteSelf"):n("penzor.content.noteDevice",{name:w});return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:w}),o("span",{class:"pz-badge",children:[o(Q,{n:"cloud"}),S?.kind==="ok"&&S.at?n("penzor.content.badgeLast",{time:En(S.at,e.locale())}):n("penzor.content.badge")]})]}),o("p",{class:"pz-note",children:$})]})}if(r.kind==="source")return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:n(fr[r.source])}),o("span",{class:"pz-badge",children:[o(Q,{n:"lock"}),n("penzor.unified.readonly")]})]}),o("p",{class:"pz-note",children:n(r.source==="plugins"?"penzor.source.pluginNote":"penzor.source.readonly")})]});if(r.kind==="sync"){let S=a.sync?.vaults.find(K=>K.vault===r.vault);if(!S)return null;let R=!!e.thisDevice()&&S.devices.includes(e.thisDevice()),$=a.sync;return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:S.vault}),R&&!e.content()?.config.enabled&&o("span",{class:"pz-badge",children:[o(Q,{n:"refresh"}),n("penzor.sync.thisDevice")]})]}),e.content()?.config.enabled&&o("div",{class:"pz-legacy",children:[o(Q,{n:"history"}),o("span",{children:[n("penzor.legacy.title"),o("small",{children:n("penzor.legacy.body")})]}),o("button",{class:"pz-btn",onClick:()=>e.go("content:default"),children:n("penzor.legacy.go")})]}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(S.bytes),n:S.files.toLocaleString()})}),S.updatedAt&&o("span",{children:S.device?n("penzor.sync.last",{time:sn(Date.parse(S.updatedAt),e.locale()),device:S.device}):n("penzor.sync.lastNoDevice",{time:sn(Date.parse(S.updatedAt),e.locale())})}),S.devices.length>0&&o("span",{children:n("penzor.sync.devices",{n:S.devices.length})})]}),va($.usedBytes,$.maxBytes)&&o("div",{class:"pz-meter",children:[o(Fo,{pct:$.usedBytes/$.maxBytes*100,warn:$.usedBytes/$.maxBytes>=.9}),o("span",{children:n("penzor.quota.sourceLimit",{max:e.b($.maxBytes),used:e.b($.usedBytes)})})]})]})}if(r.kind==="ama"){let S=a.ama?.find(R=>R.id===r.vaultId);return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:S?.name}),o("span",{class:"pz-badge",children:[o(Q,{n:"cloud"}),"Amadeus Cloud"]})]}),o("div",{class:"pz-meta",children:[o("span",{children:e.b(S?.sizeBytes??0)}),o("span",{children:n("penzor.unified.counted")})]})]})}if(r.kind==="app"){let S=a.apps?.apps.find($=>$.appId===r.appId),R=a.apps;return o(N,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:e.appLabel(r.appId)})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(S?.bytes??0),n:(S?.files??0).toLocaleString()})}),!e.canWrite()&&o("span",{children:n("penzor.apps.by",{app:e.appLabel(r.appId)})})]}),e.canWrite()&&o("div",{class:"pz-meta",children:a.ledger?.complete&&a.ledger.usage.usedBytes!=null?o(N,{children:[o("span",{children:n("penzor.drive.total",{used:e.b(a.ledger.usage.usedBytes),max:e.b(a.ledger.quota.limitBytes)})}),o("button",{class:"pz-link",onClick:()=>e.go("ov"),children:n("penzor.drive.seeAll")})]}):o("span",{children:n("penzor.unified.unavailable")})}),R&&va(R.used,R.quota)&&o("div",{class:"pz-meter",children:[o(Fo,{pct:R.used/R.quota*100,warn:R.used/R.quota>=.9}),o("span",{children:n("penzor.quota.sourceLimit",{max:e.b(R.quota),used:e.b(R.used)})})]})]})}if(r.kind==="exports")return o(N,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:n("penzor.ledger.exports")})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(a.exports?.totalBytes??0),n:(a.exports?.total??0).toLocaleString()})}),o("span",{children:n("penzor.card.expFoot")})]})]});let b=i??[];return o(N,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:n("penzor.trash")})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.trash.meta",{n:b.length,size:e.b((a.trash??[]).reduce((S,R)=>S+(Number(R.fileSize)||0),0))})}),o("span",{children:n("penzor.trash.note")})]}),e.confirmEmpty()&&o("div",{class:"pz-confirm",children:[o("span",{children:n("penzor.confirm.empty",{n:b.length})}),o("button",{class:"pz-btn danger solid",onClick:()=>void e.emptyTrash(),children:n("penzor.trash.emptyBtn")}),o("button",{class:"pz-btn",onClick:()=>e.setConfirmEmpty(!1),children:n("penzor.cancel")})]})]})},E=e.selected(),D=f.length>1,I=f.reduce((b,S)=>b+(S.dir?0:S.size),0),ne=e.txRows();return o(N,{children:[o("div",{class:"pz-top",children:[o("nav",{class:"pz-crumb",children:L.map((b,S)=>{let R=S===L.length-1,$=R?o("b",{children:b.label}):b.depth==null?o("span",{children:b.label}):o("button",{onClick:()=>e.up(b.depth),children:b.label});return o("span",{style:{display:"contents"},children:[$,!R&&o("i",{children:"\u203A"})]},S)})}),o("span",{class:"pz-sp"}),D?o(N,{children:[o("span",{class:"pz-selbar",children:n("penzor.sel.bar",{n:f.length,size:e.b(I)})}),f.some(b=>!b.dir)&&o("button",{class:"pz-btn",onClick:()=>void e.downloadMany(f),children:[o(Q,{n:"download"}),n("penzor.act.download")]}),f.every(e.canManageRow)&&o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"move",at:[]}),children:[o(Q,{n:"move"}),n("penzor.act.move")]}),f.every(e.canManageRow)&&o("button",{class:"pz-btn danger",onClick:()=>void e.trashMany(f),children:[o(Q,{n:"trash"}),n("penzor.act.trash")]}),o("button",{class:"pz-ibtn",title:n("penzor.act.clearSel"),onClick:()=>e.select(E),children:o(Q,{n:"x"})})]}):o(N,{children:[P.length>0&&o("button",{class:"pz-ibtn",title:n("penzor.act.up"),onClick:()=>e.up(),children:o(Q,{n:"up"})}),r.kind==="source"&&(r.source==="agents"||r.source==="profile")&&o("button",{class:"pz-chip",onClick:()=>void e.ctx.app?.openSpace?.(r.source==="agents"?"agents":"calendar").then(b=>{b||e.ctx.app?.notify?.(n("penzor.source.entryUnavailable"))}),children:n(r.source==="agents"?"penzor.source.openAgents":"penzor.source.openCalendar")}),r.kind==="ama"&&o("button",{class:"pz-chip",onClick:()=>void e.ctx.app?.openSpace?.("amadeus"),children:[o(Q,{n:"book"}),n("penzor.ama.open")]}),r.kind==="app"&&r.appId==="connect"&&e.ctx.app?.openSettings&&o("button",{class:"pz-chip",onClick:()=>e.ctx.app?.openSettings?.(dn("webpages")),children:[o(Q,{n:"globe"}),n("penzor.hosted.open")]}),r.kind==="trash"&&e.canEmptyTrash()&&o("button",{class:"pz-btn danger",onClick:()=>e.setConfirmEmpty(!0),children:[o(Q,{n:"trash"}),n("penzor.trash.emptyBtn")]}),m&&o("span",{class:"pz-split",children:[o("button",{class:"pz-btn pri",onClick:()=>e.picker.files?.(),children:[o(Q,{n:"upload"}),n("penzor.act.upload")]}),o("button",{class:"pz-btn pri more",title:n("penzor.act.uploadMore"),"aria-label":n("penzor.act.uploadMore"),onClick:b=>{let S=b.currentTarget.getBoundingClientRect();d({x:S.right,y:S.bottom+4})},children:o(Q,{n:"down"})})]}),m&&o("button",{class:"pz-ibtn",title:n("penzor.act.newFolder"),onClick:()=>e.startNewFolder(),children:o(Q,{n:"folder-plus"})}),s||e.query()?o("input",{class:"pz-find",placeholder:n("penzor.search"),value:e.query(),autoFocus:!0,onInput:b=>e.setQuery(b.currentTarget.value),onKeyDown:b=>{b.key==="Escape"&&(e.setQuery(""),l(!1))},onBlur:()=>{e.query()||l(!1)}}):o("button",{class:"pz-ibtn",title:n("penzor.search"),onClick:()=>l(!0),children:o(Q,{n:"search"})}),o("button",{class:"pz-chip",onClick:H,children:[r.kind==="trash"&&e.sort()==="mtime"?n("penzor.sort.deleted"):n(`penzor.sort.${e.sort()}`),o(Q,{n:"down"})]})]})]}),m&&o(N,{children:[o("input",{ref:g,type:"file",multiple:!0,hidden:!0,onChange:b=>v(b,!1)}),o("input",{ref:u,type:"file",hidden:!0,webkitdirectory:!0,onChange:b=>v(b,!0)})]}),c&&o(ap,{x:c.x,y:c.y,alignRight:!0,onClose:()=>d(null),items:[{id:"files",label:n("penzor.act.uploadFiles"),icon:"upload",run:()=>e.picker.files?.()},{id:"folder",label:n("penzor.act.uploadFolder"),icon:"folder",run:()=>e.picker.folder?.()}]}),o("div",{class:"pz-scroll",ref:p,tabIndex:-1,onKeyDown:z,onContextMenu:b=>{!m||b.target.closest("tr")||(b.preventDefault(),e.openMenu(b.clientX,b.clientY,null))},children:o("div",{class:"pz-col",children:[_(),e.rowsError()?o("p",{class:"pz-note",children:n("penzor.err",{reason:e.rowsError()})}):i?i.length===0&&!ne.length&&e.newFolder()==null?o("p",{class:"pz-note",children:e.query()?n("penzor.noMatch",{q:e.query()}):m&&!P.length?n("penzor.drive.empty"):n("penzor.folderEmpty")}):o("table",{class:"pz-table",children:[o("thead",{children:o("tr",{children:[o("th",{children:n("penzor.col.name")}),o("th",{class:"r",children:n("penzor.col.size")}),o("th",{children:G}),B&&o("th",{children:B})]})}),o("tbody",{children:[e.newFolder()!=null&&o(jv,{p:e,cols:B?4:3}),i.map((b,S)=>o(N,{children:[!b.dir&&(S===0||i[S-1].dir)&&ne.map(R=>o(Zu,{p:e,x:R},R.key)),o("tr",{class:`${e.isSelected(b.key)?"sel":""}${t&&t===b.key?" drop":""}`,"data-dir-id":m&&b.dir?b.key:void 0,"data-dir-name":m&&b.dir?b.name:void 0,onMouseDown:R=>{R.shiftKey&&R.preventDefault()},onClick:R=>k(R,b),onDblClick:()=>{b.dir?e.openDir(b):e.download(b)},onContextMenu:R=>{R.preventDefault(),e.openMenu(R.clientX,R.clientY,b)},children:[o("td",{class:"n",children:o("span",{children:[o(Q,{n:fa(b.name,b.dir)}),r.kind==="content"&&!P.length&&Yu[b.name]?o(N,{children:[o("b",{children:n(Yu[b.name])}),o("em",{class:"cnt",children:[b.name,(b.count??0)>0&&` \xB7 ${n("penzor.card.expSmall",{n:b.count.toLocaleString()})}`]})]}):o(N,{children:[o("b",{children:b.name}),b.count!=null&&b.count>0&&o("em",{class:"cnt",children:b.count.toLocaleString()})]})]})}),o("td",{class:"r",children:b.dir&&r.kind==="app"?"\u2014":e.b(b.size)}),o("td",{children:sn(b.mtime,e.locale())}),B&&o("td",{class:b.col4?"":"dim",children:b.col4?b.col4===e.thisDevice()?n("penzor.side.thisDevice",{name:b.col4}):b.col4:"\u2014"})]})]},b.key)),(i.length===0||i[i.length-1].dir)&&ne.map(b=>o(Zu,{p:e,x:b},b.key))]})]}):o("p",{class:"pz-note",children:n("penzor.loading")}),r.kind==="trash"&&!!e.snap()?.amaTrash?.length&&o(Vv,{p:e})]})})]})}function np(e,t){return t==="default"?e.t("penzor.scope.all"):t===`device-${e.content()?.deviceId}`?e.t("penzor.tree.thisBackup"):e.snap()?.contentDevices?.find(r=>`device-${r.id}`===t)?.name||`Forsion-${t.slice(7,15)}`}var Yu={Amadeus:"penzor.cat.notes",agents:"penzor.source.agents",human:"penzor.cat.profile",Plugins:"penzor.cat.plugins"};function Vv({p:e}){let t=e.snap()?.amaTrash;return o("section",{class:"pz-ama-trash",children:[o("h3",{class:"pz-h3",children:e.t("penzor.trash.ama")}),o("p",{class:"pz-note",children:e.t("penzor.trash.amaNote")}),t?t.length?o("table",{class:"pz-table",children:[o("thead",{children:o("tr",{children:[o("th",{children:e.t("penzor.col.name")}),o("th",{children:e.t("penzor.col.size")}),o("th",{children:e.t("penzor.trash.expires")})]})}),o("tbody",{children:t.map(n=>o("tr",{children:[o("td",{children:[n.vaultName," / ",n.path]}),o("td",{children:e.b(n.size)}),o("td",{children:sn(Date.parse(n.expiresAt),e.locale())})]},n.id))})]}):o("p",{class:"pz-note",children:e.t("penzor.folderEmpty")}):o("p",{class:"pz-note",children:e.t("penzor.unified.unavailable")})]})}function jv({p:e,cols:t}){let[n,r]=C(e.newFolder()??""),a=re(null),i=re(!1);qn(()=>{a.current?.focus(),a.current?.select()},[]);let s=()=>{i.current||(i.current=!0,e.createFolder(n))};return o("tr",{class:"sel",children:[o("td",{class:"n",children:o("span",{children:[o(Q,{n:"folder-open"}),o("input",{ref:a,class:"pz-newname",value:n,onInput:l=>r(l.currentTarget.value),onKeyDown:l=>{l.key==="Enter"?s():l.key==="Escape"&&(i.current=!0,e.cancelNewFolder())},onBlur:s})]})}),o("td",{class:"r",children:"\u2014"}),o("td",{children:e.t("penzor.justNow")}),t>3&&o("td",{})]})}function Zu({p:e,x:t}){let n=t.size>0?Math.min(100,Math.round(t.done/t.size*100)):0;return o("tr",{class:`pz-txrow ${t.state}`,title:t.state==="paused"?e.t("penzor.tx.paused"):void 0,children:[o("td",{class:"n",children:o("span",{children:[o(Q,{n:fa(t.name)}),o("b",{children:t.name})]})}),o("td",{class:"r",children:t.state==="active"?Qi(t.done,t.size,e.locale()):e.b(t.size)}),o("td",{children:t.state==="queued"?o("span",{class:"pz-inl",children:e.t("penzor.tx.queued")}):o("span",{class:"pz-inl",children:[o(Fo,{pct:n}),t.state==="paused"?e.t("penzor.tx.pause"):`${n}%`]})})]})}function op(e,t){let n=e.t,r=e.loc().kind,a={id:"download",label:n("penzor.act.download"),icon:"download",run:()=>void e.download(t)};return r==="source"?t.dir||!t.ref?.downloadPath?[]:[a]:r==="app"&&!e.canManageRow(t)?t.dir?[]:[a]:r==="sync"||r==="ama"?t.dir?[]:[a]:r==="app"?[...t.dir?[]:[a],{id:"rename",label:n("penzor.act.rename"),icon:"pen",run:()=>{e.select(t),e.setSide({kind:"rename"})}},{id:"move",label:n("penzor.act.move"),icon:"move",run:()=>{e.select(t),e.setSide({kind:"move",at:[]})}},{id:"trash",label:n("penzor.act.trash"),icon:"trash",danger:!0,run:()=>void e.trash(t)}]:r==="exports"?[a,{id:"rename",label:n("penzor.act.rename"),icon:"pen",run:()=>{e.select(t),e.setSide({kind:"rename"})}},{id:"delete",label:n("penzor.act.delete"),icon:"trash",danger:!0,run:()=>{e.select(t),e.setSide({kind:"confirm",what:"deleteExport"})}}]:r==="trash"&&e.canManageRow(t)?[{id:"restore",label:n("penzor.act.restore"),icon:"undo",run:()=>void e.restore(t)},{id:"purge",label:n("penzor.act.purge"),icon:"trash",danger:!0,run:()=>{e.select(t),e.setSide({kind:"confirm",what:"purge"})}}]:[]}function Gv(e,t){let n=e.t;if(!t)return e.canWrite()?[{id:"upload",label:n("penzor.act.uploadHere"),icon:"upload",run:()=>e.picker.files?.()},{id:"new-folder",label:n("penzor.act.newFolder"),icon:"folder-plus",run:()=>e.startNewFolder()}]:[];let r=e.selection();return r.length>1&&r.some(a=>a.key===t.key)?rp(e,r):op(e,t)}function rp(e,t){let n=e.t,r=e.loc().kind,a=t.filter(i=>!i.dir).length;return[...a?[{id:"download",label:n("penzor.sel.download",{n:a}),icon:"download",run:()=>void e.downloadMany(t)}]:[],...t.every(e.canManageRow)?[{id:"move",label:n("penzor.act.move"),icon:"move",run:()=>e.setSide({kind:"move",at:[]})},{id:"trash",label:n("penzor.act.trash"),icon:"trash",danger:!0,run:()=>void e.trashMany(t)}]:[]]}function ap({x:e,y:t,items:n,onClose:r,alignRight:a}){let i=re(null),[s,l]=C({x:e,y:t});return J(()=>{let c=i.current;if(c){let u=c.getBoundingClientRect(),p=a?e-u.width:e;l({x:Math.max(8,Math.min(p,window.innerWidth-u.width-8)),y:t+u.height>window.innerHeight-8?Math.max(8,t-u.height):t})}let d=u=>{u.target instanceof Node&&c?.contains(u.target)||r()},g=u=>{u.key==="Escape"&&r()};return window.addEventListener("pointerdown",d,!0),window.addEventListener("keydown",g,!0),window.addEventListener("blur",r),window.addEventListener("wheel",r,{passive:!0}),()=>{window.removeEventListener("pointerdown",d,!0),window.removeEventListener("keydown",g,!0),window.removeEventListener("blur",r),window.removeEventListener("wheel",r)}},[e,t]),n.length?Mu(o("div",{ref:i,class:"ctx-menu pz-menu",role:"menu",style:{left:`${s.x}px`,top:`${s.y}px`},children:n.map((c,d)=>o(N,{children:[c.danger&&d>0&&o("div",{class:"ctx-separator"}),o("button",{role:"menuitem",class:c.danger?"danger":"",onClick:()=>{r(),c.run()},children:[o(Q,{n:c.icon}),c.label]})]},c.id))}),document.body):(queueMicrotask(r),null)}function Xv({p:e}){let t=e.menu();return o(ap,{x:t.x,y:t.y,items:Gv(e,t.row),onClose:e.closeMenu})}function ip({p:e}){Qu(e);let t=e.t,n=e.loc(),r=e.selected();if(go(n)||!r)return o(ha,{p:e,side:!0,children:o("p",{class:"pz-side-none",children:t("penzor.side.none")})});let a=e.snap(),i=e.side(),s=e.selection();if(s.length>1)return o(Kv,{p:e,sel:s});let l=n.kind==="content"?`${np(e,n.namespace)} / ${r.key}`:n.kind==="sync"?`${n.vault} / ${r.key}`:n.kind==="ama"?`${a?.ama?.find(f=>f.id===n.vaultId)?.name??""} / ${r.key}`:n.kind==="app"?[e.appLabel(n.appId),...e.appStack().map(f=>f.name),r.name].join(" / "):n.kind==="source"?`${t(fr[n.source])} / ${r.key}`:n.kind==="exports"?`${t("penzor.ledger.exports")} / ${r.name}`:r.col4??"",c=r.dir?"":(r.name.match(/\.([A-Za-z0-9]{1,8})$/)?.[1]??"").toUpperCase(),d=n.kind==="trash"?t("penzor.side.inTrash",{size:e.b(r.size)}):r.dir?r.count!=null?t("penzor.side.folder",{n:r.count.toLocaleString()}):t("penzor.side.folderPlain"):[c,e.b(r.size)].filter(Boolean).join(" \xB7 "),g=n.kind==="trash"?[[t("penzor.side.origin"),l],[t("penzor.side.deletedAt"),sn(r.mtime,e.locale())]]:[[t("penzor.side.where"),l],[t("penzor.side.mtime"),sn(r.mtime,e.locale())]];n.kind==="sync"&&!r.dir&&g.push([t("penzor.side.device"),r.col4?r.col4===e.thisDevice()?t("penzor.side.thisDevice",{name:r.col4}):r.col4:"\u2014"]),n.kind==="app"&&!r.dir&&!e.canWrite()&&g.push([t("penzor.side.from"),e.appLabel(n.appId)]),n.kind==="exports"&&g.push([t("penzor.side.from"),r.col4??"\u2014"]);let u=n.kind==="app"&&!e.canManageRow(r)?r.managed?"penzor.hosted.note":"penzor.source.appNote":bu(n),p=op(e,r),m=e.versions();return o(ha,{p:e,side:!0,children:[o("div",{class:"pz-thumb",children:o(Q,{n:fa(r.name,r.dir)})}),i.kind==="rename"?o(Jv,{p:e,row:r}):o("div",{class:"pz-fname",children:r.name}),o("div",{class:"pz-fsub",children:d}),i.kind==="confirm"?o("div",{class:"pz-confirm",style:{margin:0},children:[o("span",{children:t(i.what==="purge"?"penzor.confirm.purge":"penzor.confirm.deleteExport",{name:r.name})}),o("button",{class:"pz-btn danger solid",onClick:()=>void(i.what==="purge"?e.purge(r):e.deleteExport(r)),children:t(i.what==="purge"?"penzor.act.purge":"penzor.act.delete")}),o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"view"}),children:t("penzor.cancel")})]}):p.length>0&&o("div",{class:"pz-acts",children:p.filter(f=>f.id!=="move").map(f=>o("button",{class:`pz-btn${f.danger?" danger":""}${f.id==="restore"?" pri":""}`,onClick:()=>f.run(),children:[o(Q,{n:f.icon}),f.id==="trash"?t("penzor.act.delete"):f.label]},f.id))}),i.kind==="move"&&o(sp,{p:e,row:r,at:i.at}),o("dl",{class:"pz-dl",children:[g.map(([f,v])=>o(N,{children:[o("dt",{children:f}),o("dd",{children:v})]},f)),n.kind==="app"&&!r.dir&&o(N,{children:[o("dt",{children:t("penzor.side.versions")}),o("dd",{children:m==null?"\u2026":m.length?t("penzor.side.versionsN",{n:m.length}):t("penzor.side.versionsNone")})]})]}),e.canManageRow(r)&&!r.dir&&m&&m.length>0&&o("div",{class:"pz-vers",children:m.map(f=>o("div",{children:[o("span",{children:t("penzor.side.versionRow",{n:f.versionNumber,time:sn(f.createdAt,e.locale()),size:e.b(f.fileSize)})}),o("button",{class:"pz-link",onClick:()=>void e.restoreVersion(r,f),children:t("penzor.side.restoreVersion")})]},f.versionNumber))}),n.kind==="trash"&&r.dir&&(r.count??0)>0&&o("div",{class:"pz-tip",children:[o(Q,{n:"undo"}),o("span",{children:t("penzor.side.inner",{n:r.count})})]}),n.kind==="exports"&&o("div",{class:"pz-tip",children:[o(Q,{n:"trash"}),o("span",{children:t("penzor.side.exportNote")})]}),u&&o("div",{class:"pz-tip",children:[o(Q,{n:"lock"}),o("span",{children:t(u,{vault:n.kind==="sync"?n.vault:""})})]})]})}function Jv({p:e,row:t}){let[n,r]=C(t.name),a=re(null),i=re(!1),s=()=>{i.current||(i.current=!0,e.rename(t,n))};return J(()=>{let l=a.current;if(!l)return;l.focus();let c=t.dir?-1:t.name.lastIndexOf(".");l.setSelectionRange(0,c>0?c:t.name.length)},[t.key]),o("input",{ref:a,class:"pz-input",value:n,onInput:l=>r(l.currentTarget.value),onKeyDown:l=>{l.key==="Enter"?s():l.key==="Escape"&&(i.current=!0,e.setSide({kind:"view"}))},onBlur:s})}function sp({p:e,row:t,at:n}){let r=e.t,a=e.loc(),i=a.kind==="app"?e.appLabel(a.appId):"",s=e.selection(),l=s.length>1,c=new Set(l?s.map(u=>u.key):[t.key]),d=(e.moveFolders()??[]).filter(u=>!c.has(u.id)),g=n[n.length-1]??{id:"ROOT",name:r("penzor.move.root",{app:i})};return o("div",{class:"pz-tip",style:{flexDirection:"column"},children:[o("div",{class:"pz-sh",style:{margin:0},children:r("penzor.move.title")}),o("div",{class:"pz-pick",children:[n.length>0&&o("button",{onClick:()=>e.moveBrowse(n.slice(0,-1)),children:[o(Q,{n:"up"}),n.length>1?n[n.length-2].name:r("penzor.move.root",{app:i})]}),e.moveFolders()==null?o("span",{children:"\u2026"}):d.length===0?o("span",{children:r("penzor.move.noFolders")}):d.map(u=>o("button",{onClick:()=>e.moveBrowse([...n,u]),children:[o(Q,{n:"folder"}),u.name]},u.id))]}),o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",onClick:()=>void(l?e.moveMany(s,g):e.moveTo(t,g)),children:r("penzor.move.here")}),o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"view"}),children:r("penzor.cancel")})]})]})}function Kv({p:e,sel:t}){let n=e.t,r=e.loc(),a=t.filter(u=>!u.dir),i=t.length-a.length,s=a.reduce((u,p)=>u+p.size,0),l=new Date,c=n("penzor.download.folder",{date:`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`}),d=r.kind==="app"?[e.appLabel(r.appId),...e.appStack().map(u=>u.name)].join(" / "):r.kind==="sync"?[r.vault,...e.path()?e.path().split("/"):[]].join(" / "):r.kind==="ama"?[e.snap()?.ama?.find(u=>u.id===r.vaultId)?.name??"",...e.path()?e.path().split("/"):[]].join(" / "):"",g=e.side();return o(ha,{p:e,side:!0,children:[o("div",{class:"pz-thumb",children:o(Q,{n:"files"})}),o("div",{class:"pz-fname",children:n("penzor.sel.title",{n:t.length})}),o("div",{class:"pz-fsub",children:i?n("penzor.sel.subDirs",{size:e.b(s),files:a.length,dirs:i}):n("penzor.sel.sub",{size:e.b(s),files:a.length})}),o("div",{class:"pz-acts",children:rp(e,t).map(u=>o("button",{class:`pz-btn${u.danger?" danger":""}`,onClick:()=>u.run(),children:[o(Q,{n:u.icon}),u.id==="trash"?n("penzor.act.delete"):u.label]},u.id))}),g.kind==="move"&&o(sp,{p:e,row:t[0],at:g.at}),o("dl",{class:"pz-dl",children:[o("dt",{children:n("penzor.side.where")}),o("dd",{children:d}),a.length>1&&o(N,{children:[o("dt",{children:n("penzor.sel.saveTo")}),o("dd",{children:n("penzor.sel.saveToValue",{folder:c})})]})]}),i>0&&a.length>0&&o("div",{class:"pz-tip",children:[o(Q,{n:"folder"}),o("span",{children:n("penzor.sel.noDirs")})]})]})}var lp=(e,t)=>t<60?e.t("penzor.tx.sec",{n:Math.max(1,Math.round(t))}):e.t("penzor.tx.min",{n:Math.ceil(t/60)}),Yv=(e,t)=>t!=null&&Date.now()-t<6e4?e.t("penzor.justNow"):sn(t,e.locale()),Zv=(e,t)=>{let n=t.error??"";return n==="too_large"?e.t("penzor.err.too_large",{size:e.b(t.size)}):n==="network"?e.t("penzor.err.network",{pct:t.size?Math.round(t.done/t.size*100):0}):n==="quota"||n==="account_changed"||n==="not_signed_in"||n==="gone"||n==="changed"||n==="storage_unavailable"||n==="popup_blocked"||n==="download_unavailable"||n==="download_failed"?e.t(`penzor.err.${n}`):e.t("penzor.err.other",{code:n||"?"})};function Qv(e){let t=e.filter(l=>l.state==="active"||l.state==="queued"||l.state==="paused"),n=t.filter(l=>l.state!=="paused"),r=n.reduce((l,c)=>l+Math.max(c.size,c.done),0),a=n.reduce((l,c)=>l+c.done,0),i=n.reduce((l,c)=>l+c.speed,0),s=i>0?(r-a)/i:null;return{live:t,failed:e.filter(l=>l.state==="failed"),done:e.filter(l=>l.state==="done"),up:t.filter(l=>l.kind==="up").length,down:t.filter(l=>l.kind==="down").length,pct:r>0?Math.min(100,Math.round(a/r*100)):0,eta:s!=null&&s>=5?s:null}}function eb({p:e}){let t=e.t,n=e.card(),r=e.transfers(),a=e.notices();if(n==="hidden"||!r.length&&!a.length)return null;let i=Qv(r),s=i.failed.length+a.length,l=t("penzor.tx.counts",{up:i.up,down:i.down}),c=i.live.length?t("penzor.tx.busy",{n:i.live.length}):s?t("penzor.tx.failedN",{n:s}):t("penzor.tx.allDone"),d=i.live.length?[l,i.eta!=null?t("penzor.tx.eta",{eta:lp(e,i.eta)}):""].filter(Boolean).join(" \xB7 "):s?i.done.length?t("penzor.tx.restDone",{n:i.done.length}):"":t("penzor.tx.doneN",{n:i.done.length}),g={onMouseEnter:()=>e.holdCard(!0),onMouseLeave:()=>e.holdCard(!1)};if(n==="pill")return o("button",{class:"ui-popover pz-txpill",...g,onClick:()=>e.setCard("open"),title:t("penzor.tx.expand"),"aria-label":t("penzor.tx.expand"),children:[i.live.length?o("span",{class:"pz-ring",style:{"--p":i.pct}}):o(Q,{n:s?"alert":"check"}),o("span",{children:i.live.length?t("penzor.tx.pill",{counts:l,pct:i.pct}):c}),o(Q,{n:"up"})]});let u=f=>f.state==="failed"?0:f.state==="active"?1:f.state==="queued"||f.state==="paused"?2:3,p=[...r].filter(f=>f.state!=="canceled").sort((f,v)=>u(f)-u(v)||(u(f)===3?(v.finishedAt??0)-(f.finishedAt??0):0)),m=i.live.length>0&&i.live.every(f=>f.state==="paused");return o("div",{class:"ui-popover pz-txcard",role:"region","aria-label":c,...g,children:[o("div",{class:"pz-txhead",children:[o("b",{children:c}),o("span",{children:d}),o("i",{class:"sp"}),o("button",{class:"pz-ib",title:t("penzor.tx.collapse"),"aria-label":t("penzor.tx.collapse"),onClick:()=>e.setCard(i.live.length||s?"pill":"hidden"),children:o(Q,{n:"down"})})]}),i.live.length>0&&o("div",{class:"pz-txall",children:o(Fo,{pct:i.pct})}),o("div",{class:"pz-txlist",children:[a.map(f=>o("div",{class:"pz-txrow2 is-fail",children:[o(Q,{n:"alert"}),o("span",{class:"nm",children:t("penzor.tx.quota",{size:e.b(f.short)})}),o("span",{class:"acts",children:o("button",{class:"pz-ib",title:t("penzor.tx.remove"),onClick:()=>e.dismissNotice(f.id),children:o(Q,{n:"x"})})}),o("span",{class:"sub",children:[o("span",{class:"err",children:t("penzor.tx.quotaSub")}),o("button",{class:"pz-link",onClick:()=>{e.dismissNotice(f.id),e.go("trash")},children:t("penzor.tx.freeSpace")})]})]},f.id)),p.map(f=>o(tb,{p:e,x:f},f.id))]}),o("div",{class:"pz-txfoot",children:[i.live.length>0&&o("button",{onClick:()=>void e.txAll(m?"resume":"pause"),children:t(m?"penzor.tx.resumeAll":"penzor.tx.pauseAll")}),i.failed.length>0&&!i.live.length&&o("button",{onClick:()=>void e.txAll("retry"),children:t("penzor.tx.retryAll")}),i.done.length>0&&i.live.length>0&&o("button",{onClick:()=>void e.txClear("finished"),children:t("penzor.tx.clearDone")}),!i.live.length&&o("button",{onClick:()=>void e.txClear(s?"all":"finished"),children:t(s?"penzor.tx.clear":"penzor.tx.clearDone")})]})]})}function tb({p:e,x:t}){let n=e.t,r=t.size>0?Math.min(100,t.done/t.size*100):0,a=t.state==="done"?"check":t.state==="failed"?"alert":t.kind==="up"?"tx-up":"tx-down",i=(l,c,d)=>o("button",{class:"pz-ib",title:c,"aria-label":c,onClick:d,children:o(Q,{n:l})}),s;if(t.state==="failed")s=o("span",{class:"err",children:Zv(e,t)});else if(t.state==="done")s=o(N,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n(t.kind==="up"?"penzor.tx.uploaded":"penzor.tx.downloaded",{time:Yv(e,t.finishedAt)})})]});else if(t.state==="queued")s=o(N,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n("penzor.tx.queued")})]});else if(t.state==="paused")s=o(N,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n("penzor.tx.paused")})]});else{let l=t.speed>0?(t.size-t.done)/t.speed:null;s=o(N,{children:[o("span",{children:Qi(t.done,t.size,e.locale())}),t.speed>0&&o("span",{children:[e.b(t.speed),"/s"]}),l!=null&&l>=5&&o("span",{children:n("penzor.tx.left",{eta:lp(e,l)})})]})}return o("div",{class:`pz-txrow2${t.state==="done"?" is-done":t.state==="failed"?" is-fail":""}`,children:[o(Q,{n:a}),o("span",{class:"nm",title:t.name,children:t.name}),o("span",{class:"acts",children:[(t.state==="active"||t.state==="queued")&&i("pause",n("penzor.tx.pause"),()=>void e.txOp(t.id,"pause")),t.state==="paused"&&i("play",n("penzor.tx.resume"),()=>void e.txOp(t.id,"resume")),(t.state==="active"||t.state==="queued"||t.state==="paused")&&i("x",n("penzor.tx.cancel"),()=>void e.txOp(t.id,"cancel")),t.state==="failed"&&t.error!=="too_large"&&o("button",{class:"pz-link",onClick:()=>void e.txOp(t.id,"retry"),children:n("penzor.tx.retry")}),t.state==="failed"&&i("x",n("penzor.tx.remove"),()=>void e.txOp(t.id,"dismiss")),t.state==="done"&&(t.kind==="up"||t.localPath)&&o("button",{class:"pz-link",onClick:()=>e.locate(t),children:n(t.kind==="down"?"penzor.tx.reveal":"penzor.tx.locate")})]}),(t.state==="active"||t.state==="paused"||t.state==="queued")&&o(Fo,{pct:r}),o("span",{class:"sub",children:s})]})}function nb(e,t){let n=nn(t.tangu);return!!e&&typeof e.registerView=="function"&&typeof e.registerListSource=="function"&&typeof e.openView=="function"&&typeof e.app?.openSpace=="function"&&typeof n?.cloudInvoke=="function"&&(!n.mobile||!!n.extendMobile)&&wn(n)}function cp(e,t=window){if(!nb(e,t))return null;let n=nn(t.tangu),r=vu(e);kn(n)||n.cloudInvoke("penzor:device").then(p=>{let m=p?.name;typeof m=="string"&&m&&r.setDevice(m)}).catch(()=>{});let a=p=>m=>(Me(o(p,{p:r}),m),()=>{Me(null,m)});e.registerView({id:Pn.main,title:r.t("penzor.title"),icon:"penzor",workspaceSource:os,mount:a(ep)}),e.registerView({id:Pn.info,title:r.t("penzor.details"),icon:"page",mount:a(ip)});let i=e.listCapabilities?.includes("tree")??!1,s=typeof e.app?.setSpaceProgress=="function"?"hard-drive":"archive",l=()=>({overview:r.t("penzor.overview"),drive:r.t("penzor.drive"),driveIcon:s,sync:r.t("penzor.ledger.sync"),ama:r.t("penzor.ledger.ama"),apps:r.t("penzor.ledger.apps"),exports:r.t("penzor.ledger.exports"),trash:r.t("penzor.trash"),items:p=>r.t("penzor.items",{n:p}),files:r.t("penzor.uploads"),synced:r.t("penzor.tree.synced"),all:r.t("penzor.scope.all"),thisBackup:r.t("penzor.tree.thisBackup"),byApp:r.t("penzor.tree.byApp"),legacy:r.t("penzor.tree.legacy")}),c=()=>{let p=r.content();if(p){let f=An(p);return[{key:"sync-home",title:r.t("penzor.sync.title"),icon:"refresh",hint:fu(f,r.locale()),...f.kind==="warn"?{unread:!0}:{}}]}if(!r.hasSync())return[];let m=r.syncState();return[{key:"sync-home",title:r.t("penzor.sync.title"),icon:"refresh",hint:pu(m,r.locale()),...pa(m)?{unread:!0}:{}}]};e.registerListSource({id:os,title:r.t("penzor.title"),search:!0,items:p=>{let m=[...c(),...lu(r.snap(),l(),r.locale(),r.content())],f=p?.query?.trim().toLowerCase()??"";if(f)return m.filter(k=>k.kind!=="folder"&&k.title.toLowerCase().includes(f)).map(({parent:k,...z})=>z);if(i)return m;let v=new Map(m.filter(k=>k.kind==="folder").map(k=>[k.key,k.title]));return m.filter(k=>k.kind!=="folder").map(({parent:k,...z})=>({...z,group:k?v.get(k):void 0}))},subscribe:p=>r.subscribe(p),activeKey:()=>mo(r.loc()),open:p=>r.go(p.key),actions:[{id:"refresh",label:r.t("penzor.act.refresh"),icon:"refresh",primary:!0,run:()=>{r.refresh(),e.app?.sync?.refresh?.().catch(()=>{})}}],itemMenu:p=>{if(p.key.startsWith("sync:")){let m=p.key.slice(5);return[{id:"open-sync",label:r.t("penzor.act.openSync"),icon:"gear",run:()=>r.openSync()},{id:"copy-name",label:r.t("penzor.act.copyName"),icon:"copy",run:()=>{navigator.clipboard?.writeText(m).then(()=>e.app?.notify?.(r.t("penzor.toast.copied")))}}]}return p.key==="trash"&&r.canEmptyTrash()?[{id:"empty-trash",label:r.t("penzor.trash.emptyBtn"),icon:"trash",danger:!0,run:()=>{r.go("trash"),r.setConfirmEmpty(!0)}}]:[]}}),e.registerCommand?.({id:"open-penzor",title:()=>r.t("penzor.cmd.open"),keywords:"penzor cloud storage quota sync files trash drive upload \u84EC\u6D32\u4E91 \u4E91\u7A7A\u95F4 \u4E91\u76D8 \u7F51\u76D8 \u4E0A\u4F20 \u989D\u5EA6 \u540C\u6B65 \u56DE\u6536\u7AD9",run:()=>{e.app?.openSpace?.(fn)}});let d=p=>{if(!(p.key!==hu||!p.newValue))try{let m=JSON.parse(p.newValue);m.page==="sync"&&r.hasSync()?e.app?.openSpace?.(fn).then(()=>r.go("sync-home")):typeof m.vault=="string"&&m.vault&&r.focusVault(m.vault)}catch{}},g=(()=>{try{return!new URLSearchParams(t.location.search).get("window")}catch{return!1}})();if(g){t.addEventListener("storage",d);try{t.localStorage.setItem(rs,"1")}catch{}}let u=r.dispose;return r.dispose=()=>{if(g){t.removeEventListener("storage",d);try{t.localStorage.removeItem(rs)}catch{}}u()},r}var ya="events",ba="forsion-extend.events.seen",dp="forsion-extend.events.last",up="forsion-extend.events.ping",ob=200,rb=3e4,gn=(e,t)=>e&&(e[t]||e.zh||e.en)||"",vr=(e,t)=>(e??[]).map(n=>gn(n.label,t)||n.kind).join(" \xB7 "),bs=(e,t)=>e.sort-t.sort||(e.endsAt??"~").localeCompare(t.endsAt??"~");function ab(e){let t=n=>n.kind==="notice";return{active:e.filter(n=>!t(n)&&(n.state==="live"||n.state==="claiming")).sort(bs),notices:e.filter(n=>t(n)&&n.state==="live").sort(bs),upcoming:e.filter(n=>n.state==="upcoming").sort(bs),ended:e.filter(n=>n.state==="ended"||t(n)&&n.state==="claiming").sort((n,r)=>(r.endsAt??"").localeCompare(n.endsAt??""))}}var Bo=(e,t)=>{let n=new Date(e),r=a=>String(a).padStart(2,"0");return`${r(n.getMonth()+1)}-${r(n.getDate())}${t?` ${r(n.getHours())}:${r(n.getMinutes())}`:""}`},ib=36e5;function ks(e,t,n){let r=(l,c)=>be(n,l,c);if(e.state==="upcoming")return{short:r("events.time.start",{date:Bo(e.startsAt,!1)}),long:r("events.time.start",{date:Bo(e.startsAt,!0)}),warn:!1};if(e.kind==="notice"){let l=r("events.time.published",{date:Bo(e.startsAt,!1)});return{short:l,long:l,warn:!1}}if(e.state==="claiming"&&e.claimUntil)return{short:r("events.time.claimShort",{date:Bo(e.claimUntil,!1)}),long:r("events.time.claim",{date:Bo(e.claimUntil,!0)}),warn:!1};if(e.state==="ended"||!e.endsAt){let l=e.endsAt?r("events.time.ended",{date:Bo(e.claimUntil??e.endsAt,!1)}):"";return{short:l,long:l,warn:!1}}let a=new Date(e.endsAt).getTime()-new Date(t).getTime(),i=Math.max(1,Math.ceil(a/ib));if(i<=24)return{short:r("events.left.hours",{n:i}),long:r("events.left.longHours",{h:i}),warn:!0};let s=Math.floor(i/24);return{short:r("events.left.days",{n:s}),long:r("events.left.long",{d:s,h:i%24}),warn:!1}}function pp(e,t){return e?/^(https:|data:image\/)/i.test(e)?e:e.startsWith("/")&&t?`${t.replace(/\/+$/,"")}${e}`:null:null}function ys(e,t){try{let n=localStorage.getItem(e);return n===null?t:JSON.parse(n)}catch{return t}}function xs(e,t){try{localStorage.setItem(e,t)}catch{}}var sb={not_live:"events.err.notLive",completed:"events.err.completed",grant_failed:"events.err.grantFailed"};function fp(e,t){let n=new Set,r=()=>{n.forEach(S=>S())},a=De(e.getLocale?.()),i="loading",s=null,l="",c=null,d=new Set(ys(ba,[])),g=!1,u=null,p=0,m,f=(S,R)=>be(a,S,R),v=()=>ab(s?.events??[]),k=S=>S.state==="live"&&!d.has(S.id),z=()=>{xs(up,String(Date.now()))},x=S=>{S&&Array.isArray(S.events)&&(s=S,i="ready")},w=S=>f(S.code&&sb[S.code]||"events.err.failed"),P=0,L=async S=>{S!==void 0&&(m=S||void 0),p=Date.now();let R=++P;if(!l)try{l=(await oe().authStatus?.())?.cloudUrl??""}catch{}let $=await te(m?`/events/feed?preview=${encodeURIComponent(m)}`:"/events/feed");R===P&&($.ok?x($.data):zn($)||$.status===401?(s=null,i="signedOut"):$.status===404?(s=null,i="unavailable"):s||(i="error"),r())},U=async S=>{if(!g){g=!0,u=null,r(),P++;try{await S()}finally{g=!1,P++,z(),r()}}},H=S=>U(async()=>{let R=await te(`/events/${encodeURIComponent(S.id)}/checkin`,{method:"POST",body:{}});if(!R.ok){u={ok:!1,text:w(R),backpack:!1};return}x(R.data.feed);let $=vr(R.data.reward,a);u={ok:!0,text:$?f("events.toast.checkin",{reward:$}):f("events.checkin.done"),backpack:!!$}}),B=(S,R)=>U(async()=>{let $=await te(`/events/${encodeURIComponent(S.id)}/tasks/claim`,{method:"POST",body:{ids:R}});if(!$.ok){u={ok:!1,text:w($),backpack:!1};return}x($.data.feed);let K=$.data.results.filter(ve=>ve.ok&&!ve.alreadyClaimed),Y=$.data.results.filter(ve=>!ve.ok).length,de=K.flatMap(ve=>ve.reward??[]);Y?u={ok:!1,text:f("events.toast.partial",{n:K.length,m:Y}),backpack:!1}:K.length&&(u={ok:!0,text:f("events.toast.claimed",{reward:vr(de,a)}),backpack:de.length>0})}),G=S=>{d.has(S)||(d=new Set([...d,S].slice(-ob)),xs(ba,JSON.stringify([...d])),z())},_=()=>{let S=v(),R=[...S.active,...S.notices],$=[...R,...S.upcoming,...S.ended],K=ys(dp,null);return $.find(Y=>Y.id===K)??R.find(Y=>Y.claimable>0||k(Y))??$[0]??null},E=e.subscribeLocale?.(S=>{a=De(S),r()}),D=S=>{S.key===ba&&(d=new Set(ys(ba,[])),r()),S.key===up&&L()},I=()=>{Date.now()-p>rb&&L()};window.addEventListener("storage",D),window.addEventListener("focus",I);let ne=oe().onAuthChanged?.(()=>{l="",s=null,L()}),b=t.fetchOnStart?setTimeout(()=>{L()},3e3):null;return{locale:()=>a,t:f,status:()=>i,feed:()=>s,origin:()=>l,groups:v,selected:()=>(s?.events??[]).find(S=>S.id===c)??_(),select:S=>{c=S,u=null,xs(dp,JSON.stringify(S)),G(S),r()},isNew:k,hasDot:()=>{let S=v();return[...S.active,...S.notices].some(R=>R.claimable>0||k(R))},active:()=>{let S=v();return i==="ready"&&S.active.length+S.notices.length>0},busy:()=>g,notice:()=>u,clearNotice:()=>{u=null,r()},refresh:L,checkin:H,claim:B,open:S=>{let R=S?{id:S}:void 0;e.openFloatingPanel?e.openFloatingPanel(ya,{title:f("events.title"),params:R,width:1040,height:720,minWidth:720,minHeight:520}):e.openView?.(ya,{location:"main",params:R})},subscribe:S=>(n.add(S),()=>{n.delete(S)}),dispose:()=>{b&&clearTimeout(b),E?.(),ne?.(),window.removeEventListener("storage",D),window.removeEventListener("focus",I),n.clear()}}}var mp=`
|
|
1441
|
+
.ev-root { --ev-sk: color-mix(in srgb, var(--text) 8%, var(--bg)); position: relative; container-type: inline-size; width: 100%; height: 100%; min-height: 0; background: var(--bg); color: var(--text); font-size: var(--ui-font-body); line-height: var(--ui-line-body); }
|
|
1442
|
+
.ev-root *, .ev-root *::before, .ev-root *::after { box-sizing: border-box; }
|
|
1443
|
+
.ev-root button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
|
|
1444
|
+
.ev-root small, .ev-root em { font-style: normal; font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); color: var(--text-faint); }
|
|
1445
|
+
.ev-root b, .ev-root strong { font-weight: 600; }
|
|
1446
|
+
.ev-root h3 { margin: 0; font-size: 24px; line-height: 32px; font-weight: 600; }
|
|
1447
|
+
.ev-root p { margin: 0; }
|
|
1448
|
+
.ev-body { display: grid; grid-template-columns: 220px minmax(0, 1fr); width: 100%; height: 100%; min-height: 0; }
|
|
1449
|
+
.ev-body.phone { grid-template-columns: minmax(0, 1fr); }
|
|
1450
|
+
.ev-main { position: relative; min-width: 0; min-height: 0; height: 100%; overflow: hidden; }
|
|
1451
|
+
.warn { color: var(--warning) !important; }
|
|
1452
|
+
|
|
1453
|
+
/* \u5DE6\u680F:\u58F3\u7167 .settings-nav,\u591A\u4E00\u679A\u7F29\u7565\u56FE\u548C\u5269\u4F59\u65F6\u95F4 */
|
|
1454
|
+
.ev-rail { display: flex; flex-direction: column; min-height: 0; height: 100%; padding: 12px 10px; background: var(--sidebar-bg); border-right: var(--border-width) solid var(--border); }
|
|
1455
|
+
.ev-body.phone .ev-rail { background: var(--bg); border-right: 0; }
|
|
1456
|
+
.ev-root .ev-back { display: flex; align-items: center; gap: 7px; width: 100%; padding: 6px 8px; border-radius: var(--radius-sm); color: var(--text-muted); }
|
|
1457
|
+
.ev-root .ev-back:hover { background: var(--overlay-light); color: var(--text); }
|
|
1458
|
+
.ev-brand { display: flex; align-items: center; gap: 10px; padding: 8px 8px 12px; }
|
|
1459
|
+
.ev-brand > div { display: flex; flex-direction: column; min-width: 0; }
|
|
1460
|
+
.ev-root .ev-brand small { font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); }
|
|
1461
|
+
.ev-bi { width: 32px; height: 32px; border-radius: var(--radius-md); display: grid; place-items: center; background: var(--bg-card); box-shadow: var(--card-shadow); color: var(--text-muted); flex: none; }
|
|
1462
|
+
.ev-list { flex: 1; min-height: 0; overflow: auto; display: flex; flex-direction: column; gap: 8px; }
|
|
1463
|
+
.ev-group { display: flex; flex-direction: column; gap: 2px; }
|
|
1464
|
+
.ev-gh { padding: 6px 10px 4px; font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); font-weight: 600; color: var(--text-faint); letter-spacing: .07em; }
|
|
1465
|
+
.ev-root .ev-ri { position: relative; display: flex; align-items: center; gap: 10px; width: 100%; padding: 6px 8px; border-radius: var(--radius-sm); text-align: left; }
|
|
1466
|
+
.ev-root .ev-ri:hover { background: var(--overlay-light); }
|
|
1467
|
+
.ev-root .ev-ri.on { background: var(--accent-wash); }
|
|
1468
|
+
.ev-th { position: relative; flex: none; width: 38px; height: 38px; border-radius: var(--radius-sm); overflow: hidden; }
|
|
1469
|
+
.ev-rt { min-width: 0; display: flex; flex-direction: column; }
|
|
1470
|
+
.ev-rt b { font-weight: 400; color: var(--text-light); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
1471
|
+
.ev-ri.on .ev-rt b { font-weight: 600; color: var(--text); }
|
|
1472
|
+
.ev-root .ev-rt em { font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); }
|
|
1473
|
+
.ev-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--danger); flex: none; margin-left: auto; }
|
|
1474
|
+
.ev-root .ev-foot { display: flex; align-items: center; gap: 6px; width: 100%; padding: 8px; border-radius: var(--radius-sm); color: var(--text-muted); font-size: var(--ui-font-meta); }
|
|
1475
|
+
.ev-root .ev-foot:hover { background: var(--overlay-light); }
|
|
1476
|
+
.ev-foot span { margin-left: auto; color: var(--text-faint); }
|
|
1477
|
+
|
|
1478
|
+
/* \u821E\u53F0 */
|
|
1479
|
+
.ev-stage { position: relative; width: 100%; height: 100%; overflow: hidden; }
|
|
1480
|
+
.ev-pic { position: absolute; inset: 0; }
|
|
1481
|
+
.ev-art { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
|
|
1482
|
+
.ev-art-empty { background: var(--ev-sk); }
|
|
1483
|
+
.ev-scrim { position: absolute; inset: 0; background: linear-gradient(to top, var(--bg) 12%, color-mix(in srgb, var(--bg) 70%, transparent) 36%, transparent 58%); }
|
|
1484
|
+
.ev-scrim.hi { background: linear-gradient(to top, var(--bg) 38%, color-mix(in srgb, var(--bg) 66%, transparent) 54%, transparent 72%); }
|
|
1485
|
+
.ev-hd { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; min-width: 0; }
|
|
1486
|
+
.ev-kind { display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 9px; border-radius: var(--radius-pill); background: var(--bg-card); color: var(--text-muted); font-size: var(--ui-font-caption); box-shadow: var(--card-shadow); }
|
|
1487
|
+
.ev-time { display: inline-flex; align-items: center; gap: 5px; font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); color: var(--text-muted); }
|
|
1488
|
+
.ev-summary { color: var(--text-muted); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
|
|
1489
|
+
.ev-left { position: absolute; left: 24px; bottom: 24px; width: 396px; max-width: calc(100% - 412px); display: flex; flex-direction: column; gap: 14px; }
|
|
1490
|
+
.ev-left.short { max-width: calc(100% - 482px); }
|
|
1491
|
+
.ev-left.wide { width: 460px; max-width: calc(100% - 48px); }
|
|
1492
|
+
.ev-card { position: absolute; top: 16px; right: 16px; bottom: 16px; width: 360px; display: flex; flex-direction: column; padding: 16px; background: var(--bg-card); border-radius: var(--radius-lg); box-shadow: var(--card-shadow); }
|
|
1493
|
+
.ev-card.narrow { width: 300px; }
|
|
1494
|
+
.ev-card.wide { width: 430px; }
|
|
1495
|
+
.ev-card-h { display: grid; grid-template-columns: 1fr auto; gap: 6px; padding-bottom: 8px; }
|
|
1496
|
+
.ev-card-h .ev-bar { grid-column: 1 / -1; }
|
|
1497
|
+
.ev-card-b { flex: 1; min-height: 0; overflow: auto; }
|
|
1498
|
+
.ev-card-f { padding-top: 12px; }
|
|
1499
|
+
.ev-root .ev-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 32px; padding: 0 14px; flex: none; border-radius: var(--radius-sm); border: var(--border-width) solid var(--border); background: var(--bg-card); color: var(--text); font-weight: 500; white-space: nowrap; }
|
|
1500
|
+
.ev-root .ev-btn:hover:not(:disabled) { background: var(--overlay-light); }
|
|
1501
|
+
.ev-root .ev-btn.pri { background: var(--action-fill); border-color: var(--action-fill); color: var(--on-action); font-weight: 600; }
|
|
1502
|
+
.ev-root .ev-btn.pri:hover:not(:disabled) { background: var(--action-fill-hover, var(--action-fill)); }
|
|
1503
|
+
.ev-root .ev-btn:disabled { opacity: .55; cursor: default; }
|
|
1504
|
+
.ev-root .ev-btn.sm { height: 26px; width: 56px; padding: 0; font-size: var(--ui-font-meta); }
|
|
1505
|
+
.ev-root .ev-btn.lg { height: 40px; width: 100%; font-size: var(--ui-font-heading); }
|
|
1506
|
+
.ev-root .ev-btn.wide { width: 100%; }
|
|
1507
|
+
.ev-bar { display: block; height: 4px; border-radius: 2px; background: var(--overlay-light); overflow: hidden; }
|
|
1508
|
+
.ev-bar i { display: block; height: 100%; border-radius: 2px; background: var(--accent-ink); }
|
|
1509
|
+
.ev-tiles { display: flex; gap: 8px; flex-wrap: wrap; }
|
|
1510
|
+
.ev-tile { width: 84px; min-height: 76px; padding: 10px 6px; border-radius: var(--radius-md); background: var(--bg-card); box-shadow: var(--card-shadow); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; color: var(--text-muted); font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); text-align: center; }
|
|
1511
|
+
.ev-tile b { color: var(--text); font-weight: 600; }
|
|
1512
|
+
|
|
1513
|
+
/* \u7B7E\u5230 */
|
|
1514
|
+
.ev-flow { position: absolute; left: 20px; right: 20px; bottom: 20px; display: flex; flex-direction: column; gap: 14px; }
|
|
1515
|
+
.ev-row { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; padding: 0 4px; }
|
|
1516
|
+
.ev-row .ev-hd { flex: 0 1 420px; }
|
|
1517
|
+
.ev-act { display: flex; align-items: center; gap: 12px; flex: none; }
|
|
1518
|
+
.ev-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; }
|
|
1519
|
+
.ev-day { height: 112px; border-radius: var(--radius-md); background: var(--bg-card); box-shadow: var(--card-shadow); display: flex; flex-direction: column; align-items: center; justify-content: space-between; padding: 10px 4px; text-align: center; }
|
|
1520
|
+
.ev-days.two .ev-day { height: 88px; padding: 6px 4px; }
|
|
1521
|
+
.ev-day b { font-size: var(--ui-font-meta); font-weight: 500; line-height: var(--ui-line-meta); }
|
|
1522
|
+
.ev-root .ev-day small { font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); }
|
|
1523
|
+
.ev-day-ic { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--overlay-medium); color: var(--text-muted); }
|
|
1524
|
+
.ev-day.done { opacity: .62; }
|
|
1525
|
+
.ev-day.done .ev-day-ic { color: var(--accent-ink); }
|
|
1526
|
+
.ev-day.today { box-shadow: 0 0 0 1.5px var(--signal), var(--card-shadow); }
|
|
1527
|
+
.ev-root .ev-day.today small { color: var(--signal); font-weight: 600; }
|
|
1528
|
+
.ev-day.big { background: var(--accent-tint); }
|
|
1529
|
+
|
|
1530
|
+
/* \u4EFB\u52A1 */
|
|
1531
|
+
.ev-task { display: flex; align-items: center; gap: 10px; padding: 10px 2px; border-bottom: var(--border-width) solid var(--border); }
|
|
1532
|
+
.ev-task:last-child { border-bottom-color: transparent; }
|
|
1533
|
+
.ev-task.muted { opacity: .55; }
|
|
1534
|
+
.ev-task-m { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
|
|
1535
|
+
.ev-task-m b { font-weight: 500; }
|
|
1536
|
+
.ev-root .ev-task-m em { font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); }
|
|
1537
|
+
.ev-task-m .ev-bar { margin-top: 5px; }
|
|
1538
|
+
.ev-task-e { display: flex; flex-direction: column; align-items: flex-end; gap: 1px; flex: none; max-width: 42%; }
|
|
1539
|
+
.ev-root .ev-task-e small { font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); font-variant-numeric: tabular-nums; }
|
|
1540
|
+
.ev-reward { max-width: 100%; font-size: var(--ui-font-caption); line-height: var(--ui-line-meta); padding: 0 7px; border-radius: var(--radius-pill); background: var(--overlay-light); color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
1541
|
+
.ev-got { width: 56px; flex: none; display: grid; place-items: center; color: var(--accent-ink); }
|
|
1542
|
+
|
|
1543
|
+
/* \u699C\u5355 */
|
|
1544
|
+
.ev-rank { display: flex; align-items: center; gap: 10px; height: 34px; font-variant-numeric: tabular-nums; border-bottom: var(--border-width) solid var(--border); }
|
|
1545
|
+
.ev-rank > span { width: 22px; color: var(--text-faint); font-size: var(--ui-font-meta); }
|
|
1546
|
+
.ev-root .ev-rank em { flex: 1; min-width: 0; color: var(--text); font-size: var(--ui-font-body); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
1547
|
+
.ev-rank > b { font-weight: 500; }
|
|
1548
|
+
.ev-rank.me { background: var(--accent-wash); border-radius: var(--radius-sm); border-bottom-color: transparent; padding: 0 8px; margin: 6px 0 0; }
|
|
1549
|
+
.ev-empty-line { padding: 10px; color: var(--text-faint); font-size: var(--ui-font-meta); }
|
|
1550
|
+
|
|
1551
|
+
/* \u53CD\u9988 / \u7A7A\u72B6\u6001 */
|
|
1552
|
+
.ev-notice { position: absolute; left: 50%; top: 12px; transform: translateX(-50%); z-index: 3; display: flex; align-items: center; gap: 8px; max-width: calc(100% - 32px); padding: 8px 12px; border-radius: var(--radius-md); background: var(--bg-card); box-shadow: var(--card-shadow); white-space: nowrap; }
|
|
1553
|
+
.ev-notice.bad { color: var(--danger); }
|
|
1554
|
+
.ev-notice span { overflow: hidden; text-overflow: ellipsis; }
|
|
1555
|
+
.ev-root .ev-notice button { font-weight: 600; color: var(--text); }
|
|
1556
|
+
.ev-root .ev-notice .ev-x { color: var(--text-faint); }
|
|
1557
|
+
.ev-msg { width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; color: var(--text-muted); }
|
|
1558
|
+
.ev-loading { width: 100%; height: 100%; }
|
|
1559
|
+
|
|
1560
|
+
/* \u7A84\u7A97:\u53F3\u4FA7\u5361\u79FB\u5230\u56FE\u4E0B\u9762,\u6574\u9875\u4E00\u8D77\u6EDA */
|
|
1561
|
+
@container (max-width: 899px) {
|
|
1562
|
+
.ev-stage { overflow: auto; display: flex; flex-direction: column; }
|
|
1563
|
+
.ev-pic { position: relative; inset: auto; flex: 0 0 200px; }
|
|
1564
|
+
.ev-scrim, .ev-scrim.hi { background: linear-gradient(to top, var(--bg) 4%, transparent 70%); }
|
|
1565
|
+
.ev-left, .ev-left.short, .ev-left.wide { position: static; width: auto; max-width: none; padding: 0 20px; margin-top: -32px; z-index: 1; }
|
|
1566
|
+
.ev-card, .ev-card.narrow, .ev-card.wide { position: static; width: auto; margin: 16px 20px 20px; flex: none; }
|
|
1567
|
+
.ev-flow { position: static; padding: 0 20px 20px; margin-top: -32px; z-index: 1; }
|
|
1568
|
+
.ev-days { grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); }
|
|
1569
|
+
}
|
|
1570
|
+
@container (max-width: 559px) {
|
|
1571
|
+
.ev-pic { flex-basis: 236px; }
|
|
1572
|
+
.ev-row { flex-direction: column; align-items: stretch; gap: 12px; }
|
|
1573
|
+
.ev-act { justify-content: space-between; }
|
|
1574
|
+
.ev-left, .ev-left.short, .ev-left.wide, .ev-flow { padding-inline: 16px; }
|
|
1575
|
+
.ev-card, .ev-card.narrow, .ev-card.wide { margin-inline: 16px; }
|
|
1576
|
+
.ev-rail { padding: 8px; }
|
|
1577
|
+
}
|
|
1578
|
+
.ev-root .ev-phone-back { position: absolute; z-index: 2; top: 12px; left: 12px; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: var(--bg-card); box-shadow: var(--card-shadow); color: var(--text-muted); }
|
|
1579
|
+
`;var lb={checkin:"checkin",tasks:"tasks",game:"gamepad",notice:"megaphone"},cb=560;function $o({ev:e,e:t}){let[n,r]=C(!1),a=pp(t.artUrl,e.origin());return J(()=>r(!1),[a]),!a||n?o("div",{class:"ev-art ev-art-empty"}):o("img",{class:"ev-art",src:a,alt:"",style:{objectPosition:`${t.focus.x*100}% ${t.focus.y*100}%`},onError:()=>r(!0)})}function br({ev:e,e:t}){let n=e.locale(),r=ks(t,e.feed()?.now??new Date().toISOString(),n);return o("div",{class:"ev-hd",children:[o("span",{class:"ev-kind",children:[o(W,{name:lb[t.kind],size:13}),e.t(`events.kind.${t.kind}`)]}),o("h3",{children:gn(t.title,n)}),r.long&&o("span",{class:`ev-time${r.warn?" warn":""}`,children:[o(W,{name:"clock",size:13}),r.long]}),o("p",{class:"ev-summary",children:gn(t.summary,n)})]})}function Ss({ev:e,items:t}){return t.length?o("div",{class:"ev-tiles","aria-label":e.t("events.rewards"),children:t.map((n,r)=>{let a=gn(n.label,e.locale())||n.kind,i=a.match(/^(.+?)\s*(×\d+)$/);return o("div",{class:"ev-tile",children:[o(W,{name:"gift",size:18}),i?o(N,{children:[o("b",{children:i[2]}),o("span",{children:i[1]})]}):o("b",{children:a})]},r)})}):null}function db({ev:e,e:t}){let n=t.checkin,r=e.locale();return o("div",{class:`ev-days${n.days>7?" two":""}`,children:Array.from({length:n.days},(a,i)=>{let s=i<n.signed,l=i===n.signed&&!n.signedToday&&t.state==="live";return o("div",{class:`ev-day${s?" done":""}${l?" today":""}${i===n.days-1?" big":""}`,children:[o("small",{children:l?e.t("events.checkin.today"):e.t("events.checkin.day",{n:i+1})}),o("span",{class:"ev-day-ic",children:o(W,{name:s?"check":"gift",size:15})}),o("b",{children:vr(n.rewards[i],r)})]},i)})})}function ub({ev:e,e:t}){let n=t.checkin,r=n.signed>=n.days,a=t.state==="live"&&!n.signedToday&&!r;return o("section",{class:`ev-stage ev-checkin${n.days>7?" two":""}`,children:[o("div",{class:"ev-pic",children:[o($o,{ev:e,e:t}),o("div",{class:"ev-scrim hi"})]}),o("div",{class:"ev-flow",children:[o("div",{class:"ev-row",children:[o(br,{ev:e,e:t}),o("div",{class:"ev-act",children:[o("small",{children:e.t("events.checkin.signed",{n:n.signed,total:n.days})}),o("button",{type:"button",class:"ev-btn pri",disabled:!a||e.busy(),onClick:()=>void e.checkin(t),children:r?e.t("events.checkin.finished"):n.signedToday?e.t("events.checkin.done"):e.t("events.checkin.do")})]})]}),o(db,{ev:e,e:t})]})]})}function pb({ev:e,ctx:t,view:n,e:r,x:a}){let i=e.locale(),s=a.progress>=a.goal,l=r.state==="live",c=Math.round(Math.min(a.progress,a.goal)/a.goal*100),d=()=>{a.jump&&t.app?.openLink?.(a.jump).then(g=>{g&&n?.close?.()})};return o("div",{class:`ev-task${a.claimed||!s&&!l?" muted":""}`,children:[o("div",{class:"ev-task-m",children:[o("b",{children:gn(a.title,i)}),o("em",{children:gn(a.desc,i)}),!a.claimed&&c>0&&c<100&&o("div",{class:"ev-bar",children:o("i",{style:{width:`${c}%`}})})]}),o("div",{class:"ev-task-e",children:[a.reward?.length?o("span",{class:"ev-reward",children:vr(a.reward,i)}):null,o("small",{children:`${gp(a.progress)}/${gp(a.goal)}`})]}),a.claimed?o("span",{class:"ev-got",title:e.t("events.tasks.claim"),children:o(W,{name:"check",size:15})}):s?o("button",{type:"button",class:"ev-btn pri sm",disabled:e.busy(),onClick:()=>void e.claim(r,[a.id]),children:e.t("events.tasks.claim")}):l&&a.jump&&t.app?.openLink?o("button",{type:"button",class:"ev-btn sm",onClick:d,children:e.t("events.tasks.go")}):o("span",{class:"ev-got"})]})}var gp=e=>e>=1e3?`${Math.round(e/100)/10}k`:String(e);function fb(e){let{ev:t,e:n}=e,r=n.tasks??[],a=r.filter(s=>s.progress>=s.goal&&!s.claimed),i=r.filter(s=>s.claimed).length;return o("section",{class:"ev-stage",children:[o("div",{class:"ev-pic",children:[o($o,{ev:t,e:n}),o("div",{class:"ev-scrim"})]}),o("div",{class:"ev-left",children:[o(br,{ev:t,e:n}),o(Ss,{ev:t,items:n.rewards})]}),o("div",{class:"ev-card",children:[o("div",{class:"ev-card-h",children:[o("b",{children:t.t("events.tasks.progress")}),o("small",{children:[i,"/",r.length]}),o("div",{class:"ev-bar",children:o("i",{style:{width:`${r.length?Math.round(i/r.length*100):0}%`}})})]}),o("div",{class:"ev-card-b",children:r.map(s=>o(pb,{...e,x:s},s.id))}),a.length>1&&o("div",{class:"ev-card-f",children:o("button",{type:"button",class:"ev-btn pri wide",disabled:e.ev.busy(),onClick:()=>void t.claim(n,a.map(s=>s.id)),children:t.t("events.tasks.claimAll",{n:a.length})})})]})]})}function mb(e){let[t,n]=C(!0);return J(()=>{let r=!0,a=window.amadeus?.listPlugins;return a?.().then(i=>{r&&n(i.some(s=>s.id===e))}).catch(()=>{}),()=>{r=!1}},[e]),t}function gb({ev:e,ctx:t,view:n,e:r}){let a=r.game,i=mb(a.pluginId),s=()=>{t.app?.openLink?.(`forsion://space/${a.spaceId}`).then(c=>{c&&n?.close?.()})},l=()=>{let c=oe().openFloatingPanel;c?c({id:"market",title:e.t("events.title"),builtin:"market",params:{q:a.marketSlug}}):t.app?.runCommand?.("open-market")};return o("section",{class:"ev-stage",children:[o("div",{class:"ev-pic",children:[o($o,{ev:e,e:r}),o("div",{class:"ev-scrim"})]}),o("div",{class:"ev-left",children:[o(br,{ev:e,e:r}),o(Ss,{ev:e,items:r.rewards})]}),o("div",{class:"ev-card narrow",children:[o("div",{class:"ev-card-h solo",children:o("b",{children:e.t("events.game.board")})}),o("div",{class:"ev-card-b",children:[a.leaderboard.length===0&&o("p",{class:"ev-empty-line",children:e.t("events.game.empty")}),a.leaderboard.map(c=>{let d=c.rank===a.me?.rank;return o("div",{class:`ev-rank${d?" me":""}`,children:[o("span",{children:c.rank}),o("em",{children:d?e.t("events.game.me"):c.name||e.t("events.game.anon")}),o("b",{children:c.score})]},c.rank)}),a.me&&!a.leaderboard.some(c=>c.rank===a.me?.rank)&&o("div",{class:"ev-rank me",children:[o("span",{children:a.me.rank}),o("em",{children:e.t("events.game.me")}),o("b",{children:a.me.score})]})]}),r.state==="live"&&o("div",{class:"ev-card-f",children:i?o("button",{type:"button",class:"ev-btn pri lg",onClick:s,children:[o(W,{name:"play",size:15}),e.t("events.game.enter")]}):o("button",{type:"button",class:"ev-btn lg",onClick:l,children:e.t("events.game.install")})})]})]})}function hb({ev:e,e:t}){let n=re(null),r=gn(t.body,e.locale());return J(()=>{let a=n.current;if(!a||!si())return;let i=Gr(a),s=document.createElement("style");s.textContent=Vr;let l=document.createElement("div");return l.className="doc",l.appendChild(ii(r,"markdown")),i.replaceChildren(s,l),i.addEventListener("click",_n),i.addEventListener("auxclick",_n),()=>{i.removeEventListener("click",_n),i.removeEventListener("auxclick",_n)}},[r]),o("div",{ref:n})}function vb({ev:e,ctx:t,view:n,e:r}){let a=()=>{let i=r.cta?.url;i&&(i.startsWith("forsion://")?t.app?.openLink?.(i).then(s=>{s&&n?.close?.()}):oe().openExternal?.(i))};return o("section",{class:"ev-stage",children:[o("div",{class:"ev-pic",children:[o($o,{ev:e,e:r}),o("div",{class:"ev-scrim"})]}),o("div",{class:"ev-left short",children:o(br,{ev:e,e:r})}),o("div",{class:"ev-card wide",children:[o("div",{class:"ev-card-b",children:o(hb,{ev:e,e:r})}),r.cta&&o("div",{class:"ev-card-f",children:o("button",{type:"button",class:"ev-btn wide",onClick:a,children:gn(r.cta.label,e.locale())||e.t("events.notice.more")})})]})]})}function ws({ev:e,e:t}){return o("section",{class:"ev-stage ev-plain",children:[o("div",{class:"ev-pic",children:[o($o,{ev:e,e:t}),o("div",{class:"ev-scrim hi"})]}),o("div",{class:"ev-left wide",children:[o(br,{ev:e,e:t}),o(Ss,{ev:e,items:t.rewards})]})]})}function bb(e){let{e:t}=e;return t.state==="upcoming"?o(ws,{...e}):t.kind==="checkin"&&t.checkin?t.state==="live"?o(ub,{...e}):o(ws,{...e}):t.kind==="tasks"?o(fb,{...e}):t.kind==="game"&&t.game?o(gb,{...e}):t.kind==="notice"?o(vb,{...e}):o(ws,{...e})}function yb({ev:e,e:t,on:n,select:r}){let a=e.locale(),i=ks(t,e.feed()?.now??new Date().toISOString(),a),s=t.state!=="ended"&&(t.claimable>0||e.isNew(t));return o("button",{type:"button",class:`ev-ri${n?" on":""}`,"aria-current":n?"true":void 0,onClick:r,children:[o("span",{class:"ev-th",children:o($o,{ev:e,e:t})}),o("span",{class:"ev-rt",children:[o("b",{children:gn(t.title,a)}),o("em",{class:i.warn?"warn":"",children:i.short})]}),s&&o("i",{class:"ev-dot","aria-label":e.t("events.dot")})]})}function xb({ev:e,view:t,pane:n,setPane:r,select:a,current:i}){let s=e.groups(),l=d=>o(yb,{ev:e,e:d,on:i?.id===d.id,select:()=>a(d)},d.id),c=(d,g)=>g.length?o("div",{class:"ev-group",children:[o("div",{class:"ev-gh",children:e.t(d)}),g.map(l)]}):null;return o("aside",{class:"ev-rail",children:[t?.surface==="floating"&&o("button",{type:"button",class:"ev-back",onClick:()=>t.close?.(),children:[o(W,{name:"arrowLeft",size:15}),e.t("events.back")]}),o("div",{class:"ev-brand",children:[o("span",{class:"ev-bi",children:o(W,{name:"gift",size:16})}),o("div",{children:[o("strong",{children:e.t("events.title")}),o("small",{children:e.t("events.count",{n:s.active.length})})]})]}),n==="list"?o("div",{class:"ev-list",children:[c("events.group.active",s.active),c("events.group.notice",s.notices),c("events.group.upcoming",s.upcoming)]}):o("div",{class:"ev-list",children:o("div",{class:"ev-group",children:[o("div",{class:"ev-gh",children:e.t("events.ended")}),s.ended.map(l),s.ended.length===0&&o("p",{class:"ev-empty-line",children:e.t("events.endedEmpty")})]})}),o("button",{type:"button",class:"ev-foot",onClick:()=>r(n==="list"?"ended":"list"),children:n==="list"?o(N,{children:[e.t("events.ended"),o("span",{children:s.ended.length}),o(W,{name:"chevron",size:14})]}):o(N,{children:[o(W,{name:"back",size:14}),e.t("events.list")]})})]})}function kb({ev:e,ctx:t}){let n=e.notice();if(!n)return null;let r=oe().openFloatingPanel,a=()=>{r?r({id:"settings",title:e.t("events.title"),builtin:"settings",params:{tab:dn("backpack")}}):t.app?.openSettings?.(dn("backpack"))};return o("div",{class:`ev-notice${n.ok?"":" bad"}`,role:"status",children:[o(W,{name:n.ok?"check":"alert",size:15}),o("span",{children:n.text}),n.backpack&&(r||t.app?.openSettings)&&o("button",{type:"button",onClick:a,children:e.t("events.toast.backpack")}),o("button",{type:"button",class:"ev-x","aria-label":"\xD7",onClick:()=>e.clearNotice(),children:o(W,{name:"x",size:14})})]})}function zs({ev:e,icon:t,text:n,action:r,run:a}){return o("div",{class:"ev-msg",children:[o(W,{name:t,size:20}),o("span",{children:n}),r&&o("button",{type:"button",class:"ev-btn pri",disabled:e.busy(),onClick:a,children:r})]})}function hp(e){let{ev:t,view:n}=e,r=re(null),[,a]=C(0),[i,s]=C(!1),[l,c]=C(!1),[d,g]=C("list");J(()=>t.subscribe(()=>a(v=>v+1)),[t]),J(()=>{let v=k=>{let z=typeof k?.id=="string"?k.id:"";t.refresh(k?.preview?z:"").then(()=>{z&&(t.select(z),c(!0))})};return v(n?.getParams?.()),n?.onParamsChanged?.(v)},[t,n]),J(()=>{let v=r.current;if(!v||typeof ResizeObserver>"u")return;let k=new ResizeObserver(()=>s(v.clientWidth<cb));return k.observe(v),()=>k.disconnect()},[]);let u=t.status(),p=t.selected();J(()=>{p&&u==="ready"&&t.isNew(p)&&t.select(p.id)},[p?.id,u]);let m=v=>{t.select(v.id),c(!0)},f;if(u==="signedOut")f=o(zs,{ev:t,icon:"lock",text:t.t("events.login.title"),action:t.t("events.login.do"),run:()=>void oe().forsionLogin?.()});else if(u==="error"||u==="unavailable")f=o(zs,{ev:t,icon:"alert",text:t.t("events.error"),action:t.t("events.retry"),run:()=>void t.refresh()});else if(u==="loading")f=o("div",{class:"ev-loading"});else if(!p)f=o(zs,{ev:t,icon:"gift",text:t.t("events.empty")});else{let v=!i||!l,k=!i||l;f=o("div",{class:`ev-body${i?" phone":""}`,children:[v&&o(xb,{...e,pane:d,setPane:g,select:m,current:i?null:p}),k&&o("div",{class:"ev-main",children:[i&&o("button",{type:"button",class:"ev-phone-back","aria-label":t.t("events.list"),onClick:()=>c(!1),children:o(W,{name:"back",size:17})}),o(bb,{...e,e:p},p.id),o(kb,{...e})]})]})}return o("div",{ref:r,class:"ev-root",children:[o("style",{children:mp}),f]})}var wb=()=>{let e=document.documentElement.dataset.window;return!e||e==="main"};function zb(e,t){let n=nn(t.tangu);return!!e&&typeof e.registerView=="function"&&typeof n?.cloudFetch=="function"&&wn(n)&&(!n.mobile||!!n.extendMobile)&&(typeof e.openFloatingPanel=="function"||typeof e.openView=="function")}function vp(e,t=window){if(!zb(e,t))return null;let n=wb(),r=fp(e,{fetchOnStart:n});e.registerView({id:ya,title:r.t("events.title"),icon:"gift",mount:(l,c)=>(Me(o(hp,{ev:r,ctx:e,view:c}),l),()=>{Me(null,l)})}),e.registerCommand?.({id:"events-open",title:()=>r.t("events.title"),keywords:"\u6D3B\u52A8 \u7B7E\u5230 \u4EFB\u52A1 \u9886\u5956 event events check-in quests",run:()=>r.open()});let a=e.app?.registerRibbonAction,i=n&&a?a({id:"events",icon:"gift",title:()=>r.t("events.title"),run:()=>r.open(),dot:{get:()=>r.hasDot(),subscribe:l=>r.subscribe(l),label:()=>r.t("events.dot")}}):null,s=r.dispose;return{...r,dispose:()=>{i?.(),s()}}}var Sb=new TextEncoder,Tz=new TextDecoder("utf-8",{ignoreBOM:!0}),bp=e=>Sb.encode(e);function yp(e){let t="";for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(t)}var _b=50*1024*1024,Cb=new Set(["mode","type","source","name","summary","githubRepoUrl","npmPackage","version","readme","description","tags","minAppVersion","maxAppVersion","platforms"]);function Tb(e){if(!e||typeof e!="object")return null;let t=e;if(t.id!==void 0&&(typeof t.id!="string"||!/^[a-zA-Z0-9_-]{1,128}$/.test(t.id))||!t.fields||typeof t.fields!="object"||Array.isArray(t.fields))return null;let n=new FormData,r=0;for(let[a,i]of Object.entries(t.fields)){if(!Cb.has(a)||typeof i!="string"||(r+=i.length,r>25e4)||t.id&&!["mode","name","summary","version","readme","description","tags","minAppVersion","maxAppVersion","platforms"].includes(a))return null;n.append(a,i)}if(t.zip!==void 0){if(!t.zip||typeof t.zip.name!="string"||!/\.zip$/i.test(t.zip.name)||!(t.zip.data instanceof Uint8Array)||!t.zip.data.byteLength||t.zip.data.byteLength>_b)return null;n.append("zip",new Blob([new Uint8Array(t.zip.data)],{type:"application/zip"}),t.zip.name.replace(/[\\/]/g,"_").slice(-255))}return{path:`${t.id?`/market/mine/${t.id}/update`:"/market/submit"}${t.dryRun===!0?"?dryRun=1":""}`,body:n}}function xp(e){e.handle("cloud:marketSubmit",async(t,n)=>{if(!e.isTrustedSender(t))return{status:0,error:"untrusted"};let r=Tb(n);if(!r)return{status:400,json:{error:"invalid_request"}};let a=await e.getCloud();if(!a.token)return{status:401,error:"not_signed_in"};let i=Rn(a.base,r.path);if(!i)return{status:0,error:"no_cloud_url"};try{let s=await Mn(a,i,{method:"POST",body:r.body,redirect:"error",signal:AbortSignal.timeout(12e4)});return{status:s.status,json:await s.json().catch(()=>null)}}catch(s){return{status:0,error:String(s?.message||s)}}})}async function kp(e){if(!e.token)return"";try{let t=await Do(e,"POST","/api/auth/handoff",{},5e3);if(t.status===200&&typeof t.json?.code=="string"&&t.json.code)return`code=${encodeURIComponent(t.json.code)}`;if((t.status===404||t.status===405)&&!e.fetch)return`token=${encodeURIComponent(e.token)}`}catch{}return""}var Ab=["membership","credits","storefront"],Eb=["monthly","quarterly","yearly"],Pb=/^[A-Za-z0-9_-]{1,64}$/;function wp(e){let t={status:0,error:"untrusted"},n={ok:!1,error:"untrusted"};e.handle("auth:openAccountCenter",async(a,i)=>{if(!e.isTrustedSender(a))return n;let s=await e.getCloud(),l=s.base;if(!l)return{ok:!1};let c=i&&/^[a-z0-9-]+$/i.test(i)?`#${i}`:"",d=await kp(s),g=`${l}/account${d?`?${d}`:""}${c}`;return s.signal?.throwIfAborted(),await e.openExternal(g),{ok:!0}}),e.handle("auth:openPayCenter",async(a,i,s,l)=>{if(!e.isTrustedSender(a))return n;if(i!==void 0&&!Ab.includes(i))return{ok:!1,error:"invalid_tab"};if(s!==void 0&&(typeof s!="string"||!Pb.test(s)))return{ok:!1,error:"invalid_plan"};if(l!==void 0&&!Eb.includes(l))return{ok:!1,error:"invalid_period"};let c=(i??"membership")==="membership"&&s?`&plan=${encodeURIComponent(s)}${l?`&period=${l}`:""}`:"",d=await e.getCloud(),g=d.base;if(!g)return{ok:!1};let u=await kp(d),p=`${g}/pay?tab=${i??"membership"}${c}${u?`&${u}`:""}&redirect=${encodeURIComponent(`${g}/account`)}`;return d.signal?.throwIfAborted(),await e.openExternal(p),{ok:!0}}),e.handle("profile:publicOrigin",async a=>{if(!e.isTrustedSender(a))return n;let{base:i}=await e.getCloud();if(!i)return{ok:!1};try{let s=await fetch(`${i}/account`,{redirect:"manual",signal:AbortSignal.timeout(4e3)});s.body?.cancel().catch(()=>{});let l=s.status>=300&&s.status<400?s.headers.get("location"):null;return l&&/^https?:\/\//i.test(l)?{ok:!0,origin:new URL(l).origin}:{ok:!1}}catch{return{ok:!1}}});let r=()=>e.getCloud();e.handle("account:quota",async a=>{if(!e.isTrustedSender(a))return t;let i=await r();if(!i.token)return{status:401,json:null};try{return await Do(i,"GET","/api/token-quota/my",void 0,15e3)}catch(s){return{status:0,json:{detail:String(s?.message||s)}}}}),e.handle("account:useResetCard",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await r();if(!s.token)return{status:401,json:null};if(i!==void 0&&i!=="both")return{status:400,json:{error:"invalid_type",detail:`invalid reset card type: ${i}`}};let l=i??"both";try{return await Do(s,"POST","/api/token-quota/reset-card/use",{type:l},15e3)}catch(c){return{status:0,json:{detail:String(c?.message||c)}}}}),e.handle("account:bgConvert",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await r();if(!s.token)return{status:401,json:null};if(!Number.isInteger(i)||i<1||i>100)return{status:400,json:{error:"invalid_percent"}};try{return await Do(s,"POST","/api/token-quota/background/convert",{percent:i},15e3)}catch(l){return{status:0,json:{detail:String(l?.message||l)}}}}),e.handle("account:bgAutoMain",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await r();if(!s.token)return{status:401,json:null};if(typeof i!="boolean")return{status:400,json:{error:"invalid_request"}};try{return await Do(s,"POST","/api/token-quota/background/auto-main",{enabled:i},15e3)}catch(l){return{status:0,json:{detail:String(l?.message||l)}}}}),e.handle("feedback:submit",async(a,i)=>{if(!e.isTrustedSender(a))return n;let s=await e.getCloud();if(!s.base||!s.token)return{ok:!1,error:"not-logged-in"};let l=(i?.description||"").trim();if(!l)return{ok:!1,error:"empty"};if(l.length>1e4)return{ok:!1,error:"description-too-long"};let c=[],d=!1;if(i?.sessionLogJson){let g=bp(i.sessionLogJson);if(g.length>5*1024*1024)return{ok:!1,error:"attachment-too-large"};c.push({filename:i.sessionLogName||"tangu-session.json",mime_type:"application/json",size:g.length,data_base64:yp(g)})}try{let g=await Mn(s,`${s.base}/api/feedback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:l,attachments:c}),signal:AbortSignal.timeout(2e4)});if(!g.ok){let p=`HTTP ${g.status}`;try{p=(await g.json())?.detail||p}catch{}return{ok:!1,error:p}}return{ok:!0,id:(await g.json().catch(()=>({})))?.id??null,attachmentSkipped:d}}catch(g){return{ok:!1,error:g?.message||String(g)}}}),e.handle("cloud:fetch",async(a,i)=>{if(!e.isTrustedSender(a))return{status:0,error:"untrusted"};let s=i??{},l=typeof s.path=="string"?s.path:"",c=s.projectSource===void 0?null:s.projectSource;if(c!==null&&(typeof c!="string"||!/^[a-z0-9][a-z0-9-]{0,63}$/.test(c)))return{status:0,error:"bad_project_source"};let d=Math.min(12e4,Math.max(1e3,Number(s.timeoutMs)||15e3)),g=typeof s.method=="string"?s.method.toUpperCase():"GET";if(!/^(GET|POST|PUT|PATCH|DELETE)$/.test(g))return{status:0,error:"bad_method"};if(!l.startsWith("/"))return{status:0,error:"bad_path"};let u=await e.getCloud();if(!String(u.base||""))return{status:0,error:"no_cloud_url"};let p=Rn(u.base,l);if(!p)return{status:0,error:"bad_path"};if(!u.token)return{status:401,error:"not_signed_in"};let m=s.body!==void 0&&g!=="GET"&&g!=="DELETE",f=new AbortController,v=setTimeout(()=>f.abort(),d);try{let k=await Mn(u,p,{method:g,headers:{...m?{"Content-Type":"application/json"}:{},...c?{"X-Project-Source":c}:{}},body:m?JSON.stringify(s.body):void 0,signal:f.signal});return{status:k.status,json:await k.json().catch(()=>null)}}catch(k){return{status:0,error:String(k?.message||k)}}finally{clearTimeout(v)}}),xp(e)}var _s={sender:"web"},Mb=new Set(["auth:openAccountCenter","auth:openPayCenter"]),zp=(e,t)=>new URL(typeof e=="string"&&e?e:t.location.origin,t.location.href).origin;function Rb(e,t=window){let n=new Map,r=!!(t.tangu?.mobile&&t.tangu.extendMobile),a=0,i=!1,s=new AbortController,l=f=>{if(i||f!==a)throw new Error("account_changed")},c=[],d={async getCloud(){let f=a,v=s.signal,k=await e.status().catch(()=>null);return l(f),{base:zp(k?.cloudUrl,t),token:k?.loggedIn?"session":"",signal:v,fetch:async(z,x)=>{l(f);let w=await e.request(z,{...x,signal:x.signal?AbortSignal.any([x.signal,v]):v});return l(f),w}}},handle:(f,v)=>{n.set(f,v)},async openExternal(f){if(r){if(!t.tangu?.openExternal)throw new Error("no_external_browser");await t.tangu.openExternal(f);return}let v=c.shift();v&&!v.closed?v.location.replace(f):t.open(f,"_blank","noopener,noreferrer")},isTrustedSender:()=>!0,log:f=>console.info("[forsion-extend]",f)};wp(d);let g=Hu(d,t,{...r?{saveDownload:async(f,v)=>{if(!e.saveDownload)throw new Error("download_unavailable");let k=await e.saveDownload(f,v);if(!k.ok)throw new Error(k.error||"download_failed")},openExternal:f=>d.openExternal(f)}:{}}),u=t.tangu?.onAuthChanged?.(()=>{a++,s.abort(),s=new AbortController,g.reset();for(let f of c.splice(0))f.close()}),p=async(f,...v)=>{let k=n.get(f);if(!k)throw new Error(`No handler registered for '${f}'`);if(f==="penzor:transfers")return k(_s,...v);let z=a;if(i)return{ok:!1,error:"disposed"};let x=P=>z===a&&!i?P:{ok:!1,error:"account_changed"};if(!Mb.has(f)||r)return x(await k(_s,...v));let w=t.open("","_blank");w&&(w.opener=null,c.push(w));try{return x(await k(_s,...v))}finally{let P=w?c.indexOf(w):-1;P>=0&&(c.splice(P,1),w.close())}},m=t.tangu?.authStatus;return{...m?{authStatus:async()=>{let f=await m();return{...f,cloudUrl:f?.cloudUrl?zp(f.cloudUrl,t):f?.cloudUrl}}}:{},cloudInvoke:p,cloudFetch:f=>p("cloud:fetch",f),openAccountCenter:r&&t.tangu?.openAccountCenter?f=>t.tangu.openAccountCenter(f):f=>p("auth:openAccountCenter",f),openExternal:async f=>{/^https?:\/\//i.test(f)&&(r?await d.openExternal(f):t.open(f,"_blank","noopener,noreferrer"))},dispose(){i=!0,a++,s.abort(),u?.();for(let f of c.splice(0))f.close();g.dispose()}}}function Sp(e,t=window){let n=t.tangu;if(!kn(n)||typeof e?.account?.request!="function"||typeof e.account.status!="function")return null;let{dispose:r,...a}=Rb(e.account,t);return Zl(a),r}var Xn=e=>typeof e=="string"&&e.trim()?e.trim():null,vo=e=>(Xn(e)||"").replace(/^v(?=\d)/i,"");function Ib(e,t){let n=i=>{let s=vo(i).split("+")[0],l=s.indexOf("-");return{core:(l<0?s:s.slice(0,l)).split(".").map(d=>/^\d+$/.test(d)?Number(d):NaN),pre:l<0?[]:s.slice(l+1).split(".")}};if(!vo(e)||!vo(t))return null;let r=n(e),a=n(t);if(r.core.some(i=>!Number.isFinite(i))||a.core.some(i=>!Number.isFinite(i)))return null;for(let i=0;i<Math.max(r.core.length,a.core.length);i++){let s=(r.core[i]||0)-(a.core[i]||0);if(s)return s>0?1:-1}if(!r.pre.length||!a.pre.length)return r.pre.length===a.pre.length?0:r.pre.length?-1:1;for(let i=0;i<Math.max(r.pre.length,a.pre.length);i++){let s=r.pre[i],l=a.pre[i];if(s===void 0||l===void 0)return s===void 0?-1:1;if(s===l)continue;let c=/^\d+$/.test(s),d=/^\d+$/.test(l);return c&&d?Number(s)>Number(l)?1:-1:c!==d?c?-1:1:s>l?1:-1}return 0}var Lb=2*6e4,Db=(e,t)=>{let n=Date.parse(String(e??"")),r=Date.parse(String(t??""));return Number.isFinite(n)&&Number.isFinite(r)&&n-r>Lb};function _p(e){let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch{return null}return!t||typeof t!="object"||typeof t.itemId!="string"||typeof t.name!="string"?null:{itemId:t.itemId,name:t.name,type:Xn(t.type)||void 0,source:Xn(t.source)||void 0,mode:t.mode==="info"?"info":"package",from:Xn(t.from),to:Xn(t.to),tag:Xn(t.tag),fields:Array.isArray(t.fields)?t.fields.filter(n=>typeof n=="string"):void 0,listed:t.listed===!0,submittedAt:Xn(t.submittedAt)||void 0}}function Cp(e,t){let n={status:"review",note:null,storeVersion:e.from,listed:!!e.listed};if(!t)return n;let r=e.mode==="info",a=t.status==="approved",i=Xn(t.version)??e.from,s=g=>!!g&&(r?g.kind==="info":g.kind!=="info"&&vo(g.version)===vo(e.to)),l=s(t.pendingUpdate)&&!Db(t.pendingUpdate?.submittedAt,e.submittedAt),c=s(t.rejectedUpdate)&&!t.pendingUpdate,d=(g,u=null)=>({status:g,note:u&&u.trim()?u.trim():null,storeVersion:i,listed:a});if(!a)return t.status==="rejected"?d("rejected",t.reviewNote||null):d("review");if(e.listed===!1)return d("approved");if(l)return d("review");if(c)return d("rejected",t.rejectedUpdate?.note||null);if(!r){let g=Ib(t.version,e.to);return g!==null&&g>=0||(t.versions||[]).some(u=>vo(u.version)===vo(e.to))?d("approved"):d("rejected")}return d("approved")}var Nb="store_submit_update",Ob=`
|
|
1435
1580
|
.fx-su { padding: 4px 2px 2px; color: var(--text); font-size: var(--ui-font-body); line-height: var(--ui-line-body); }
|
|
1436
1581
|
.fx-su .fx-su-top { display: flex; align-items: center; gap: 11px; min-width: 0; }
|
|
1437
1582
|
.fx-su .fx-su-ic { width: 32px; height: 32px; display: grid; place-items: center; flex-shrink: 0; border-radius: var(--radius-sm); background: var(--overlay-light); color: var(--text-light); }
|
|
@@ -1447,5 +1592,18 @@ Content-Type: ${r}\r
|
|
|
1447
1592
|
.fx-su .fx-su-meta { color: var(--text-faint); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1448
1593
|
.fx-su .fx-su-note { margin-top: 8px; padding: 8px 10px; border-radius: var(--radius-sm); background: var(--overlay-light); color: var(--text-light); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
1449
1594
|
.fx-su .fx-su-acts { display: flex; justify-content: flex-end; gap: 7px; margin-top: 10px; }
|
|
1450
|
-
`,
|
|
1595
|
+
`,Fb={plugin:"puzzle","amadeus-plugin":"puzzle",skill:"sparkles",agent:"bot",space:"grid",theme:"palette"},Bb=new Set(["plugin","amadeus-plugin","skill","agent","space","theme"]),Tp={name:"sub.name",summary:"sub.summary",description:"sub.description",tags:"sub.tags",minAppVersion:"sub.minAppVersion",maxAppVersion:"sub.maxAppVersion",platforms:"sub.platforms"},$b=e=>e==="github"?"su.source.github":e==="npm"?"su.source.npm":e==="zip"?"su.source.zip":null;function Ub(e){let{sub:t,view:n,t:r,locale:a,onOpenSubmission:i}=e,s=t.type&&Bb.has(t.type)?r(`sub.type.${t.type.replace("-","_")}`):null,l=$b(t.source),c=[s,l&&r(l)].filter(Boolean).join(" \xB7 "),d=n.status==="approved"?o("span",{class:"fx-su-pill is-ok",children:r("su.approved")}):n.status==="rejected"?o("span",{class:"fx-su-pill is-no",children:r("su.rejected")}):o("span",{class:"fx-su-pill",children:r("su.review")}),g=t.mode==="package"?t.source==="github"&&t.tag?r("su.viaGithub",{tag:t.tag}):t.source==="npm"&&t.to?r("su.viaNpm",{version:t.to}):"":"",u=(t.fields||[]).map(f=>Tp[f]?r(Tp[f]):f),p=t.submittedAt?Et(t.submittedAt,a):null,m=n.status==="review"?p?r("su.metaReview",{time:p}):r("su.metaReviewNoTime"):n.status==="approved"?t.mode==="info"?r("su.metaApprovedInfo"):r("su.metaApproved",{version:n.storeVersion||t.to||""}):n.listed&&n.storeVersion?r("su.metaRejected",{version:n.storeVersion}):r("su.metaRejectedUnlisted");return o("div",{class:"fx-su","data-fx-store-update":n.status,children:[o("style",{children:Ob}),o("div",{class:"fx-su-top",children:[o("span",{class:"fx-su-ic",children:o(W,{name:Fb[t.type||""]||"box",size:18})}),o("div",{class:"fx-su-id",children:[o("div",{class:"fx-su-name",children:t.name}),c&&o("div",{class:"fx-su-sub",children:c})]}),d]}),t.mode==="package"?o("div",{class:"fx-su-ver",children:[t.from&&o(N,{children:[o("span",{class:"fx-su-from",children:t.from}),o("span",{"aria-hidden":"true",children:"\u2192"})]}),o("span",{class:"fx-su-to",children:t.to}),g&&o("span",{class:"fx-su-meta",children:g})]}):o("div",{class:"fx-su-ver",children:[o("span",{class:"fx-su-to",children:r("su.infoOnly")}),!!u.length&&o("span",{class:"fx-su-meta",children:u.join(r("su.listSep"))})]}),o("div",{class:"fx-su-meta",children:m}),n.status==="rejected"&&n.note&&o("div",{class:"fx-su-note",children:n.note}),n.status!=="approved"&&i&&o("div",{class:"fx-su-acts",children:o("button",{type:"button",class:"btn sm",onClick:i,children:r("su.openSubmission")})})]})}function Hb(e){let{ctx:t,sub:n,call:r}=e,[a,i]=C(()=>De(t.getLocale?.())),s=(()=>{try{return r.state?.get()}catch{return}})(),[l,c]=C(s?.item??null);J(()=>{i(De(t.getLocale?.()));let u=t.subscribeLocale?.(p=>i(De(p)));return()=>{typeof u=="function"&&u()}},[t]),J(()=>{let u=!0;return te("/market/mine").then(p=>{if(!u||!p.ok)return;let m=(p.data?.items||[]).find(f=>f&&f.id===n.itemId)||null;if(m){c(m);try{r.state?.set({item:m})}catch{}}}),()=>{u=!1}},[n.itemId]);let d=t.app?.openSettings,g=typeof d=="function"?()=>{yd(n.itemId),d.call(t.app,dn("submission"))}:null;return o(Ub,{sub:n,view:Cp(n,l),t:Sn(a),locale:a,onOpenSubmission:g})}function Ap(e){return!e||typeof e.registerToolResultRenderer!="function"?!1:(e.registerToolResultRenderer({tool:Nb,title:()=>be(De(e.getLocale?.()),"su.title"),mount(t,n){let r=_p(n?.result);if(!r)throw new Error("store_submit_update: unexpected result shape");return Me(o(Hb,{ctx:e,sub:r,call:n}),t),()=>{Me(null,t)}}}),!0)}var Ep={unknown:{key:"wc.pill.published",tone:"neutral"},live:{key:"wc.pill.live",tone:"ok"},pending:{key:"wc.pill.review",tone:"neutral"},approved:{key:"wc.pill.listed",tone:"ok"},rejected:{key:"wc.pill.rejected",tone:"danger"},disabled:{key:"web.disabled",tone:"danger"},gone:{key:"wc.pill.gone",tone:"muted"}};function Ts(e){if(e===void 0)return"unknown";if(e===null)return"gone";if(e.status==="disabled")return"disabled";let t=e.listing_status;return t==="pending"||t==="approved"||t==="rejected"?t:"live"}var bo=e=>e!=="gone"&&e!=="disabled";function Pp(e){if(typeof e!="string"||!e.startsWith("Published"))return null;let t=e.split(`
|
|
1596
|
+
`,1)[0],n=/^Published "(.*)" at (\S*) \((.*)\)\.?$/.exec(t);return n?{name:n[1],url:/^https?:\/\//i.test(n[2])?n[2]:"",size:/(?:^|, )(\d+(?:\.\d+)? [KM]B)(?:,|$)/.exec(n[3])?.[1]??null}:{name:"",url:"",size:null}}function As(e,t,n){let r=e.publicBase?Eo(e.publicBase):t;return r&&e.handle?`${r}/apps/${e.handle}/${n}/`:""}var Cs=e=>{let t=Date.parse(String(e??""));return Number.isFinite(t)?t:0},Mp=e=>[...e].sort((t,n)=>Cs(n.updated_at)-Cs(t.updated_at)),qb=10*6e4,Rp=(e,t=Date.now())=>{let n=Cs(e);return n>0&&t-n<qb};var Wb="publish_web_page",Vb="forsion_account",Es=5,Dp=`
|
|
1597
|
+
.fx-wc { color: var(--text); font-size: var(--ui-font-body); line-height: var(--ui-line-body); }
|
|
1598
|
+
.fx-wc .fx-wc-form { display: grid; gap: 8px; margin-top: 10px; }
|
|
1599
|
+
.fx-wc .fx-wc-field { display: grid; gap: 6px; min-width: 0; color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1600
|
+
.fx-wc .fx-wc-field textarea { box-sizing: border-box; width: 100%; min-width: 0; padding: 8px 10px; border: var(--border-width) solid var(--border); border-radius: var(--radius-sm); background: var(--bg); color: var(--text); font-family: inherit; font-size: var(--ui-font-body); line-height: var(--ui-line-body); resize: vertical; }
|
|
1601
|
+
.fx-wc .fx-wc-field textarea:focus-visible { outline: var(--focus-ring) solid var(--accent-ink); outline-offset: 2px; }
|
|
1602
|
+
.fx-wc .fx-wc-field small { color: var(--text-faint); font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); }
|
|
1603
|
+
.fx-wc .fx-wc-acts { display: flex; flex-wrap: wrap; gap: 7px; }
|
|
1604
|
+
.fx-wc .fx-wc-msg { margin-top: 8px; color: var(--danger); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1605
|
+
.fx-wc .fx-wc-line { margin: 2px 0; color: var(--text-faint); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1606
|
+
.fx-wc .fx-wc-rows { display: grid; gap: 2px; }
|
|
1607
|
+
.fx-wc .fx-wc-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 8px; color: var(--text-faint); font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); }
|
|
1608
|
+
`,Ps=e=>e&&typeof e=="object"&&!Array.isArray(e)?e:null,Ip=e=>typeof e=="string"?e.trim():"";function Np(e){let[t,n]=C(()=>De(e.getLocale?.()));return J(()=>{n(De(e.getLocale?.()));let r=e.subscribeLocale?.(a=>n(De(a)));return()=>{typeof r=="function"&&r()}},[e]),t}function Op(e){let t=(()=>{try{return e.state?.get()}catch{return}})(),[n,r]=C(t?.data??null),[a,i]=C(t?.cloud??""),[s,l]=C(null),c=Ue(),d=re(0),g=re(a),u=tn(async()=>{let v=++d.current,k=await te("/connect/apps");if(!c.current||v!==d.current)return;if(!k.ok){l(k);return}let z=k.data||{},x=g.current;if(!z.publicBase&&!x){let w=await oe().authStatus?.().catch(()=>null);if(w?.cloudUrl&&(x=Eo(w.cloudUrl)),!c.current||v!==d.current)return}g.current=x,r(z),i(x),l(null);try{e.state?.set({data:z,cloud:x})}catch{}},[]),[p,m]=C(0),f=re(0);return J(()=>{u();let v=oe().onAuthChanged?.(()=>{d.current++,f.current++,m(f.current),r(null),l(null);try{e.state?.set(void 0)}catch{}u()});return()=>{typeof v=="function"&&v()}},[]),{data:n,fail:s,cloud:a,reload:u,gen:p,genRef:f}}function Fp(e,t){let n=re(null),r=re(null),a=re(null),i=re(t);return i.current=t,qn(()=>{if(n.current)return a.current=i.current,r.current=e.mountWebCard(n.current,i.current),()=>{let s=r.current;r.current=null,s?.dispose()}},[]),qn(()=>{!r.current||a.current===t||(a.current=t,r.current.update(t))}),n}function Bp(e){let t=oe().openExternal;if(t){t(e)?.catch(()=>{});return}try{window.open(e,"_blank","noopener,noreferrer")}catch{}}function $p(e,t,n,r){let a=Ep[t];return{status:{label:e(a.key),tone:a.tone},address:n?{text:n,icon:"globe",struck:t==="gone",muted:!bo(t)}:void 0,thumbnail:r&&bo(t)&&n?{url:n,version:r.updated_at}:null,placeholderIcon:"globe"}}function Up(e){let t=e.app?.openSettings;return typeof t=="function"?()=>t.call(e.app,dn("webpages")):null}var Hp=({a:e,t})=>e.error?o("div",{class:"fx-wc-msg",role:"alert",children:kt(e.error,t)}):null;function jb(e){let{ctx:t,call:n,slug:r,argName:a,pub:i}=e,s=Np(t),l=Sn(s),{data:c,cloud:d,reload:g,gen:u,genRef:p}=Op(n),m=pe(),f=Up(t),[v,k]=C(null),[z,x]=C(null),[w,P]=C("idle"),L=re(null),U=re(null);J(()=>()=>{L.current&&clearTimeout(L.current),U.current&&clearTimeout(U.current)},[]);let H=c?(c.apps||[]).find(Pe=>Pe?.slug===r)??null:void 0,B=Ts(H),G=c&&As(c,d,r)||i.url,_=m.pending,E=`/connect/apps/${encodeURIComponent(r)}`,D=(Pe,Xe,Gt,ft)=>void m.run(async()=>{if(p.current!==u)return;let tt=await te(Pe,{method:Xe,body:Gt});if(!tt.ok)return Re(tt);ft?.(),await g()}),I=()=>{L.current&&clearTimeout(L.current),L.current=null,x(null)};J(()=>{u&&(I(),k(null))},[u]);let ne=Pe=>{L.current&&clearTimeout(L.current),x(Pe),L.current=setTimeout(()=>{L.current=null,x(null)},Zr)},b=async()=>{let Pe=await Qr(G);P(Pe?"copied":"failed"),U.current&&clearTimeout(U.current),U.current=setTimeout(()=>P("idle"),1800)},S=H?.updated_at?Rp(H.updated_at)?l("wc.justPublished"):l("web.updated",{date:on(H.updated_at,s)}):"",R=H?Ii(H.total_bytes):i.size,$=[r,R,S,bo(B)?l("wc.anyone"):""].filter(Boolean).join(" \xB7 "),K=!G||!bo(B),Y=[{label:l("wc.open"),icon:"external-link",disabled:K,run:()=>Bp(G)},{label:l(w==="copied"?"common.copied":w==="failed"?"common.copyFailed":"web.copy"),icon:w==="copied"?"check":"copy",disabled:K,run:()=>void b()}],de=f?{label:l("wc.viewInPages"),icon:"settings",run:f}:null,ve=[];z?ve=[{label:l(z==="unpublish"?"web.unpublishConfirm":"web.listingDelistConfirm"),variant:"danger",disabled:_,run:()=>{I(),D(z==="unpublish"?E:`${E}/listing`,"DELETE")}},{label:l("common.cancel"),disabled:_,run:I}]:B==="live"?ve=[{label:l("web.listingApply"),icon:"upload",disabled:_||v!==null,run:()=>{m.clear(),k("")}}]:B==="pending"?ve=[{label:l("web.listingWithdraw"),disabled:_,run:()=>D(`${E}/listing`,"DELETE")}]:B==="rejected"?ve=[{label:l("web.listingReapply"),icon:"upload",disabled:_||v!==null,run:()=>{m.clear(),k(H?.listing_summary||"")}}]:(B==="disabled"||B==="gone")&&de&&(ve=[de]);let $e;if(B!=="unknown"){let Pe=[];B==="approved"&&Pe.push({label:l("web.listingDelist"),icon:"x",disabled:_,run:()=>ne("delist")}),de&&!ve.includes(de)&&Pe.push({label:de.label,icon:de.icon,run:de.run});let Xe=B==="gone"?[]:[{label:l("web.unpublish"),icon:"trash-2",danger:!0,disabled:_,run:()=>ne("unpublish")}];$e=[...Pe,...Pe.length&&Xe.length?[{separator:!0}]:[],...Xe],$e.length||($e=void 0)}let ge={layout:"card",name:H?.name||i.name||a||r,...$p(l,B,G,H),note:$,actions:Y,trailing:ve,menu:$e},Ee=Fp(t.ui,ge);return o("div",{class:"fx-wc","data-fx-web-card":B,"data-webpage":r,children:[o("style",{children:Dp}),o("div",{ref:Ee}),v!==null&&o("form",{class:"fx-wc-form",onSubmit:Pe=>{Pe.preventDefault();let Xe=(v||"").trim();Xe&&D(`${E}/listing`,"PUT",{summary:Xe},()=>k(null))},children:[o("label",{class:"fx-wc-field",children:[o("span",{children:l("web.listingSummary")}),o("textarea",{rows:2,maxLength:Ri,value:v,disabled:_,placeholder:l("web.listingSummaryPh"),onInput:Pe=>k(Pe.currentTarget.value)}),o("small",{children:l("web.listingHint")})]}),o("div",{class:"fx-wc-acts",children:[o("button",{type:"submit",class:"btn sm primary",disabled:_||!v.trim(),children:l("web.listingSubmit")}),o("button",{type:"button",class:"btn sm",disabled:_,onClick:()=>{k(null),m.clear()},children:l("common.cancel")})]})]}),o(Hp,{a:m,t:l})]})}function Gb(e){let t=Fp(e.ui,e.card);return o("div",{ref:t,"data-webpage":e.slug})}function Xb(e){let{ctx:t,call:n}=e,r=Np(t),a=Sn(r),{data:i,fail:s,cloud:l,reload:c,gen:d,genRef:g}=Op(n),u=pe(),p=Up(t),[m,f]=C(null),v=re(null);J(()=>()=>{v.current&&clearTimeout(v.current)},[]),J(()=>{d&&f(null)},[d]);let k=u.pending,z=(B,G)=>void u.run(async()=>{if(g.current!==d)return;let _=await te(B,{method:G});if(!_.ok)return Re(_);await c()}),x=B=>{let G=`/connect/apps/${encodeURIComponent(B.slug)}`,_=t.ui?.confirm;if(typeof _=="function"){_.call(t.ui,{title:a("wc.unpublishTitle",{name:B.name||B.slug}),body:a("wc.unpublishBody"),ok:a("web.unpublish"),cancel:a("common.cancel"),danger:!0}).then(E=>{E&&z(G,"DELETE")},()=>{});return}if(v.current&&clearTimeout(v.current),v.current=null,m===B.slug){f(null),z(G,"DELETE");return}f(B.slug),v.current=setTimeout(()=>{v.current=null,f(null)},Zr)},w=i?.apps||[],P=Mp(w).slice(0,Es),L=B=>{let G=Ts(B),_=i?As(i,l,B.slug):"",E=`/connect/apps/${encodeURIComponent(B.slug)}`,D=G==="pending"?{label:a("web.listingWithdraw"),disabled:k,run:()=>z(`${E}/listing`,"DELETE")}:G==="approved"?{label:a("web.listingDelist"),icon:"x",disabled:k,run:()=>z(`${E}/listing`,"DELETE")}:(G==="live"||G==="rejected")&&p?{label:a(G==="live"?"web.listingApply":"web.listingReapply"),icon:"upload",run:p}:null,I=m===B.slug,ne=$p(a,G,_,B);return{layout:"row",name:B.name||B.slug,...ne,status:I?{label:a("wc.unpublishAgain"),tone:"danger"}:ne.status,menu:[{label:a("wc.open"),icon:"external-link",disabled:!_||!bo(G),run:()=>Bp(_)},{label:a("web.copy"),icon:"copy",disabled:!_||!bo(G),run:()=>void Qr(_)},{separator:!0},...D?[D,{separator:!0}]:[],{label:a(I?"web.unpublishConfirm":"web.unpublish"),icon:"trash-2",danger:!0,disabled:k,run:()=>x(B)}]}},U=typeof i?.limit=="number"?a("web.used",{used:w.length,limit:i.limit}):a("wc.total",{n:w.length}),H=w.length>Es?` \xB7 ${a("wc.more",{n:w.length-Es})}`:"";return o("div",{class:"fx-wc","data-fx-web-pages":i?String(w.length):s?"error":"loading",children:[o("style",{children:Dp}),i?P.length?o("div",{class:"fx-wc-rows",children:P.map(B=>o(Gb,{ui:t.ui,card:L(B),slug:B.slug},B.slug))}):o("p",{class:"fx-wc-line",children:a("web.empty")}):o("p",{class:"fx-wc-line",children:s?kt(wt(s),a):a("common.loading")}),i&&o("div",{class:"fx-wc-foot",children:[o("span",{children:[U,H]}),p&&o("button",{type:"button",class:"btn sm",onClick:p,children:a("wc.manage")})]}),o(Hp,{a:u,t:a})]})}function Lp(e,t){try{Me(t,e)}catch(n){try{Me(null,e)}catch{}throw n}return()=>{Me(null,e)}}function qp(e){if(!e||typeof e.registerToolResultRenderer!="function"||typeof e.ui?.mountWebCard!="function")return!1;let t=n=>()=>be(De(e.getLocale?.()),n);return e.registerToolResultRenderer({tool:Wb,title:t("wc.title"),match:n=>{let r=Ps(n?.args);return!!r&&r.action!=="unpublish"},mount(n,r){let a=Ps(r?.args),i=Ip(a?.slug).toLowerCase(),s=Pp(r?.result);if(!a||a.action==="unpublish"||!i||!s)throw new Error("publish_web_page: unexpected result shape");return Lp(n,o(jb,{ctx:e,call:r,slug:i,argName:Ip(a.name),pub:s}))}}),e.registerToolResultRenderer({tool:Vb,title:t("web.title"),match:n=>Ps(n?.args)?.section==="web_pages",mount(n,r){if(typeof r?.result!="string"||!r.result.startsWith("Published web pages:"))throw new Error("forsion_account web_pages: unexpected result shape");return Lp(n,o(Xb,{ctx:e,call:r}))}}),!0}var Wp;if(typeof ctx<"u"){let e=Sp(ctx);Od(ctx),Nd(ctx),Ap(ctx),qp(ctx);let t=oc(ctx),n=nu(ctx),r=cp(ctx),a=vp(ctx);(t||n||r||a||e)&&(Wp=()=>{t?.dispose(),n?.dispose(),r?.dispose(),a?.dispose(),e?.()})}return lf(Jb);})();
|
|
1451
1609
|
return __fxExtend.dispose;
|