vendor: 4,697 bytes, line 1
1import"./jsx-runtime-C5Zd082J.js";import{b as He,_ as Ze,R as Xe,s as et,d as tt}from"./i18nInstance-BGFcVfWK.js";import{_ as P}from"./preload-helper-BXl3LOEh.js";function je(n,e){this.v=n,this.k=e}function O(n,e,t,o){var s=Object.defineProperty;try{s({},"",{})}catch{s=0}O=function(a,i,l,u){function d(p,c){O(a,p,function(h){return this._invoke(p,c,h)})}i?s?s(a,i,{value:l,enumerable:!u,configurable:!u,writable:!u}):a[i]=l:(d("next",0),d("throw",1),d("return",2))},O(n,e,t,o)}function be(){var n,e,t=typeof Symbol=="function"?Symbol:{},o=t.iterator||"@@iterator",s=t.toStringTag||"@@toStringTag";function r(h,f,w,y){var R=f&&f.prototype instanceof i?f:i,A=Object.create(R.prototype);return O(A,"_invoke",(function(F,v,$){var x,g,S,q=0,B=$||[],T=!1,E={p:0,n:0,v:n,a:H,f:H.bind(n,4),d:function(k,M){return x=k,g=0,S=n,E.n=M,a}};function H(L,k){for(g=L,S=k,e=0;!T&&q&&!M&&e<B.length;e++){var M,C=B[e],I=E.p,_=C[2];L>3?(M=_===k)&&(S=C[(g=C[4])?5:(g=3,3)],C[4]=C[5]=n):C[0]<=I&&((M=L<2&&I<C[1])?(g=0,E.v=k,E.n=C[1]):I<_&&(M=L<3||C[0]>k||k>_)&&(C[4]=L,C[5]=k,E.n=_,g=0))}if(M||L>1)return a;throw T=!0,k}return function(L,k,M){if(q>1)throw TypeError("Generator is already running");for(T&&k===1&&H(k,M),g=k,S=M;(e=g<2?n:S)||!T;){x||(g?g<3?(g>1&&(E.n=-1),H(g,S)):E.n=S:E.v=S);try{if(q=2,x){if(g||(L="next"),e=x[L]){if(!(e=e.call(x,S)))throw TypeError("iterator result is not an object");if(!e.done)return e;S=e.value,g<2&&(g=0)}else g===1&&(e=x.return)&&e.call(x),g<2&&(S=TypeError("The iterator does not provide a '"+L+"' method"),g=1);x=n}else if((e=(T=E.n<0)?S:F.call(v,E))!==a)break}catch(C){x=n,g=1,S=C}finally{q=1}}return{value:e,done:T}}})(h,w,y),!0),A}var a={};function i(){}function l(){}function u(){}e=Object.getPrototypeOf;var d=[][o]?e(e([][o]())):(O(e={},o,function(){return this}),e),p=u.prototype=i.prototype=Object.create(d);function c(h){return Object.setPrototypeOf?Object.setPrototypeOf(h,u):(h.__proto__=u,O(h,s,"GeneratorFunction")),h.prototype=Object.create(p),h}return l.prototype=u,O(p,"constructor",u),O(u,"constructor",l),l.displayName="GeneratorFunction",O(u,s,"GeneratorFunction"),O(p),O(p,s,"Generator"),O(p,o,function(){return this}),O(p,"toString",function(){return"[object Generator]"}),(be=function(){return{w:r,m:c}})()}function ne(n,e){function t(s,r,a,i){try{var l=n[s](r),u=l.value;return u instanceof je?e.resolve(u.v).then(function(d){t("next",d,a,i)},function(d){t("throw",d,a,i)}):e.resolve(u).then(function(d){l.value=d,a(l)},function(d){return t("throw",d,a,i)})}catch(d){i(d)}}var o;this.next||(O(ne.prototype),O(ne.prototype,typeof Symbol=="function"&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),O(this,"_invoke",function(s,r,a){function i(){return new e(function(l,u){t(s,a,l,u)})}return o=o?o.then(i,i):i()},!0)}function ze(n,e,t,o,s){return new ne(be().w(n,e,t,o),s||Promise)}function ot(n,e,t,o,s){var r=ze(n,e,t,o,s);return r.next().then(function(a){return a.done?a.value:r.next()})}function nt(n){var e=Object(n),t=[];for(var o in e)t.unshift(o);return function s(){for(;t.length;)if((o=t.pop())in e)return s.value=o,s.done=!1,s;return s.done=!0,s}}function xe(n){if(n!=null){var e=n[typeof Symbol=="function"&&Symbol.iterator||"@@iterator"],t=0;if(e)return e.call(n);if(typeof n.next=="function")return n;if(!isNaN(n.length))return{next:function(){return n&&t>=n.length&&(n=void 0),{value:n&&n[t++],done:!n}}}}throw new TypeError(He(n)+" is not iterable")}function G(){var n=be(),e=n.m(G),t=(Object.getPrototypeOf?Object.getPrototypeOf(e):e.__proto__).constructor;function o(a){var i=typeof a=="function"&&a.constructor;return!!i&&(i===t||(i.displayName||i.name)==="GeneratorFunction")}var s={throw:1,return:2,break:3,continue:3};function r(a){var i,l;return function(u){i||(i={stop:function(){return l(u.a,2)},catch:function(){return u.v},abrupt:function(p,c){return l(u.a,s[p],c)},delegateYield:function(p,c,h){return i.resultName=c,l(u.d,xe(p),h)},finish:function(p){return l(u.f,p)}},l=function(p,c,h){u.p=i.prev,u.n=i.next;try{return p(c,h)}finally{i.next=u.n}}),i.resultName&&(i[i.resultName]=u.v,i.resultName=void 0),i.sent=u.v,i.next=u.n;try{return a.call(this,i)}finally{u.p=i.prev,u.n=i.next}}}return(G=function(){return{wrap:function(l,u,d,p){return n.w(r(l),u,d,p&&p.reverse())},isGeneratorFunction:o,mark:n.m,awrap:function(l,u){return new je(l,u)},AsyncIterator:ne,async:function(l,u,d,p,c){return(o(u)?ze:ot)(r(l),u,d,p,c)},keys:nt,values:xe}})()}function ke(n,e,t,o,s,r,a){try{var i=n[r](a),l=i.value}catch(u){return void t(u)}i.done?e(l):Promise.resolve(l).then(o,s)}function Ve(n){return function(){var e=this,t=arguments;return new Promise(function(o,s){var r=n.apply(e,t);function a(l){ke(r,o,s,a,i,"next",l)}
1function i(l){ke(r,o,s,a,i,"throw",l)}a(void 0)})}}var X=Ze({},Xe),st=X.version,de=X.render,rt=X.unmountComponentAtNode,ue;try{var at=Number((st||"").split(".")[0]);at>=18&&(ue=X.createRoot)}catch{}function Ae(n){var e=X.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;e&&He(e)==="object"&&(e.usingClientEntryPoint=n)}var se="__rc_react_root__";function it(n,e){Ae(!0);var t=e[se]||ue(e);Ae(!1),t.render(n),e[se]=t}function lt(n,e){de?.(n,e)}function ut(n,e){if(ue){it(n,e);return}lt(n,e)}function ct(n){return fe.apply(this,arguments)}function fe(){return fe=Ve(G().mark(function n(e){return G().wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return o.abrupt("return",Promise.resolve().then(function(){var s;(s=e[se])===null||s===void 0||s.unmount(),delete e[se]}));case 1:case"end":return o.stop()}},n)})),fe.apply(this,arguments)}function dt(n){rt(n)}function pt(n){return ge.apply(this,arguments)}function ge(){return ge=Ve(G().mark(function n(e){return G().wrap(function(o){for(;;)switch(o.prev=o.next){case 0:if(ue===void 0){o.next=2;break}return o.abrupt("return",ct(e));case 2:dt(e);case 3:case"end":return o.stop()}},n)})),ge.apply(this,arguments)}const ht=(n,e)=>(ut(n,e),()=>pt(e));let Se=ht;function ui(n){return n&&(Se=n),Se}const mt={type:"3rdParty",init(n){et(n.options.react),tt(n)}},m=n=>typeof n=="string",J=()=>{let n,e;const t=new Promise((o,s)=>{n=o,e=s});return t.resolve=n,t.reject=e,t},Le=n=>n==null?"":""+n,ft=(n,e,t)=>{n.forEach(o=>{e[o]&&(t[o]=e[o])})},gt=/###/g,Ie=n=>n&&n.indexOf("###")>-1?n.replace(gt,"."):n,Ce=n=>!n||m(n),Y=(n,e,t)=>{const o=m(e)?e.split("."):e;let s=0;for(;s<o.length-1;){if(Ce(n))return{};const r=Ie(o[s]);!n[r]&&t&&(n[r]=new t),Object.prototype.hasOwnProperty.call(n,r)?n=n[r]:n={},++s}return Ce(n)?{}:{obj:n,k:Ie(o[s])}},Pe=(n,e,t)=>{const{obj:o,k:s}=Y(n,e,Object);if(o!==void 0||e.length===1){o[s]=t;return}let r=e[e.length-1],a=e.slice(0,e.length-1),i=Y(n,a,Object);for(;i.obj===void 0&&a.length;)r=`${a[a.length-1]}.${r}`,a=a.slice(0,a.length-1),i=Y(n,a,Object),i&&i.obj&&typeof i.obj[`${i.k}.${r}`]<"u"&&(i.obj=void 0);i.obj[`${i.k}.${r}`]=t},yt=(n,e,t,o)=>{const{obj:s,k:r}=Y(n,e,Object);s[r]=s[r]||[],s[r].push(t)},re=(n,e)=>{const{obj:t,k:o}=Y(n,e);if(t)return t[o]},bt=(n,e,t)=>{const o=re(n,t);return o!==void 0?o:re(e,t)},Ke=(n,e,t)=>{for(const o in e)o!=="__proto__"&&o!=="constructor"&&(o in n?m(n[o])||n[o]instanceof String||m(e[o])||e[o]instanceof String?t&&(n[o]=e[o]):Ke(n[o],e[o],t):n[o]=e[o]);return n},j=n=>n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var wt={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const vt=n=>m(n)?n.replace(/[&<>"'\/]/g,e=>wt[e]):n;class xt{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const t=this.regExpMap.get(e);if(t!==void 0)return t;const o=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,o),this.regExpQueue.push(e),o}}const kt=[" ",",","?","!",";"],At=new xt(20),St=(n,e,t)=>{e=e||"",t=t||"";const o=kt.filter(a=>e.indexOf(a)<0&&t.indexOf(a)<0);if(o.length===0)return!0;const s=At.getRegExp(`(${o.map(a=>a==="?"?"\\?":a).join("|")})`);let r=!s.test(n);if(!r){const a=n.indexOf(t);a>0&&!s.test(n.substring(0,a))&&(r=!0)}return r},ye=function(n,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!n)return;if(n[e])return n[e];const o=e.split(t);let s=n;for(let r=0;r<o.length;){if(!s||typeof s!="object")return;let a,i="";for(let l=r;l<o.length;++l)if(l!==r&&(i+=t),i+=o[l],a=s[i],a!==void 0){if(["string","number","boolean"].indexOf(typeof a)>-1&&l<o.length-1)continue;r+=l-r+1;break}s=a}return s},ae=n=>n&&n.replace("_","-"),Lt={type:"logger",log(n){this.output("log",n)},warn(n){this.output("warn",n)},error(n){this.output("error",n)},output(n,e){console&&console[n]&&console[n].apply(console,e)}};class ie{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.init(e,t)}init(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=e||Lt,this.options=t,this.debug=t.debug}log(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"log","",!0)}warn(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"warn","",!0)}error(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"error","")}deprecate(){for(var e=arguments.length,t=new Array(e),o=0;o<e;o++)t[o]=arguments[o];return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}forward(e,t,o,s){return s&&!this.debug?null:(m(e[0])&&(e[0]=`${o}${this.prefix} ${e[0]}`),this.logger[t](e))}create(e){return new ie(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return e=e||this.options,e.prefix=e.prefix||this.prefix,new ie(this.logger,e)}}var N=new ie;class ce{constructor(){this.observers={}}on(e,t){return e.split(" ").forEach(o=>
vendor: 3,393 bytes, line 1
1{this.observers[o]||(this.observers[o]=new Map);const s=this.observers[o].get(t)||0;this.observers[o].set(t,s+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}emit(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),s=1;s<t;s++)o[s-1]=arguments[s];this.observers[e]&&Array.from(this.observers[e].entries()).forEach(a=>{let[i,l]=a;for(let u=0;u<l;u++)i(...o)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(a=>{let[i,l]=a;for(let u=0;u<l;u++)i.apply(i,[e,...o])})}}class Oe extends ce{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}removeNamespaces(e){const t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,o){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const r=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,a=s.ignoreJSONStructure!==void 0?s.ignoreJSONStructure:this.options.ignoreJSONStructure;let i;e.indexOf(".")>-1?i=e.split("."):(i=[e,t],o&&(Array.isArray(o)?i.push(...o):m(o)&&r?i.push(...o.split(r)):i.push(o)));const l=re(this.data,i);return!l&&!t&&!o&&e.indexOf(".")>-1&&(e=i[0],t=i[1],o=i.slice(2).join(".")),l||!a||!m(o)?l:ye(this.data&&this.data[e]&&this.data[e][t],o,r)}addResource(e,t,o,s){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const a=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator;let i=[e,t];o&&(i=i.concat(a?o.split(a):o)),e.indexOf(".")>-1&&(i=e.split("."),s=t,t=i[1]),this.addNamespaces(t),Pe(this.data,i,s),r.silent||this.emit("added",e,t,o,s)}addResources(e,t,o){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const r in o)(m(o[r])||Array.isArray(o[r]))&&this.addResource(e,t,r,o[r],{silent:!0});s.silent||this.emit("added",e,t,o)}addResourceBundle(e,t,o,s,r){let a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1,skipCopy:!1},i=[e,t];e.indexOf(".")>-1&&(i=e.split("."),s=o,o=t,t=i[1]),this.addNamespaces(t);let l=re(this.data,i)||{};a.skipCopy||(o=JSON.parse(JSON.stringify(o))),s?Ke(l,o,r):l={...l,...o},Pe(this.data,i,l),a.silent||this.emit("added",e,t,o)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||(t=this.options.defaultNS),this.options.compatibilityAPI==="v1"?{...this.getResource(e,t)}:this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(s=>t[s]&&Object.keys(t[s]).length>0)}toJSON(){return this.data}}var Ge={processors:{},addPostProcessor(n){this.processors[n.name]=n},handle(n,e,t,o,s){return n.forEach(r=>{this.processors[r]&&(e=this.processors[r].process(e,t,o,s))}),e}};const Re={};class le extends ce{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),ft(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","
1i18nFormat","utils"],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=N.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(e==null)return!1;const o=this.resolve(e,t);return o&&o.res!==void 0}extractFromKey(e,t){let o=t.nsSeparator!==void 0?t.nsSeparator:this.options.nsSeparator;o===void 0&&(o=":");const s=t.keySeparator!==void 0?t.keySeparator:this.options.keySeparator;let r=t.ns||this.options.defaultNS||[];const a=o&&e.indexOf(o)>-1,i=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!St(e,o,s);if(a&&!i){const l=e.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:e,namespaces:m(r)?[r]:r};const u=e.split(o);(o!==s||o===s&&this.options.ns.indexOf(u[0])>-1)&&(r=u.shift()),e=u.join(s)}return{key:e,namespaces:m(r)?[r]:r}}translate(e,t,o){if(typeof t!="object"&&this.options.overloadTranslationOptionHandler&&(t=this.options.overloadTranslationOptionHandler(arguments)),typeof t=="object"&&(t={...t}),t||(t={}),e==null)return"";Array.isArray(e)||(e=[String(e)]);const s=t.returnDetails!==void 0?t.returnDetails:this.options.returnDetails,r=t.keySeparator!==void 0?t.keySeparator:this.options.keySeparator,{key:a,namespaces:i}=this.extractFromKey(e[e.length-1],t),l=i[i.length-1],u=t.lng||this.language,d=t.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(u&&u.toLowerCase()==="cimode"){if(d){const v=t.nsSeparator||this.options.nsSeparator;return s?{res:`${l}${v}${a}`,usedKey:a,exactUsedKey:a,usedLng:u,usedNS:l,usedParams:this.getUsedParamsDetails(t)}:`${l}${v}${a}`}return s?{res:a,usedKey:a,exactUsedKey:a,usedLng:u,usedNS:l,usedParams:this.getUsedParamsDetails(t)}:a}const p=this.resolve(e,t);let c=p&&p.res;const h=p&&p.usedKey||a,f=p&&p.exactUsedKey||a,w=Object.prototype.toString.apply(c),y=["[object Number]","[object Function]","[object RegExp]"],R=t.joinArrays!==void 0?t.joinArrays:this.options.joinArrays,A=!this.i18nFormat||this.i18nFormat.handleAsObject,F=!m(c)&&typeof c!="boolean"&&typeof c!="number";if(A&&c&&F&&y.indexOf(w)<0&&!(m(R)&&Array.isArray(c))){if(!t.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const v=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,c,{...t,ns:i}):`key '${a} (${this.language})' returned an object instead of string.`;return s?(p.res=v,p.usedParams=this.getUsedParamsDetails(t),p):v}if(r){const v=Array.isArray(c),$=v?[]:{},x=v?f:h;for(const g in c)if(Object.prototype.hasOwnProperty.call(c,g)){const S=`${x}${r}${g}`;$[g]=this.translate(S,{...t,joinArrays:!1,ns:i}),$[g]===S&&($[g]=c[g])}c=$}}else if(A&&m(R)&&Array.isArray(c))c=c.join(R),c&&(c=this.extendTranslation(c,e,t,o));else{let v=!1,$=!1;const x=t.count!==void 0&&!m(t.count),g=le.hasDefaultValue(t),S=x?this.pluralResolver.getSuffix(u,t.count,t):"",q=t.ordinal&&x?this.pluralResolver.getSuffix(u,t.count,{ordinal:!1}):"",B=x&&!t.ordinal&&t.count===0&&this.pluralResolver.shouldUseIntlApi(),T=B&&t[`defaultValue${this.options.pluralSeparator}zero`]||t[`defaultValue${S}`]||t[`defaultValue${q}`]||t.defaultValue;!this.isValidLookup(c)&&g&&(v=!0,c=T),this.isValidLookup(c)||($=!0,c=a);const H=(t.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&$?void 0:c,L=g&&T!==c&&this.options.updateMissing;if($||v||L){if(this.logger.log(L?"updateKey":"missingKey",u,l,a,L?T:c),r){const I=this.resolve(a,{...t,keySeparator:!1});I&&I.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let k=[];const M=this.languageUtils.getFallbackCodes(this.options.fallbackLng,t.lng||this.language);if(this.options.saveMissingTo==="fallback"&&M&&M[0])for(let I=0;I<M.length;I++)k.push(M[I]);else this.options.saveMissingTo==="all"?k=this.languageUtils.toResolveHierarchy(t.lng||this.language):k.push(t.lng||this.language);const C=(I,_,W)=>{const ve=g&&W!==c?W:H;this.options.missingKeyHandler?this.options.missingKeyHandler(I,l,_,ve,L,t):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(I,l,_,ve,L,t),this.emit
vendor: 8,690 bytes, line 1
1("missingKey",I,l,_,c)};this.options.saveMissing&&(this.options.saveMissingPlurals&&x?k.forEach(I=>{const _=this.pluralResolver.getSuffixes(I,t);B&&t[`defaultValue${this.options.pluralSeparator}zero`]&&_.indexOf(`${this.options.pluralSeparator}zero`)<0&&_.push(`${this.options.pluralSeparator}zero`),_.forEach(W=>{C([I],a+W,t[`defaultValue${W}`]||T)})}):C(k,a,T))}c=this.extendTranslation(c,e,t,p,o),$&&c===a&&this.options.appendNamespaceToMissingKey&&(c=`${l}:${a}`),($||v)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?c=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${a}`:a,v?c:void 0):c=this.options.parseMissingKeyHandler(c))}return s?(p.res=c,p.usedParams=this.getUsedParamsDetails(t),p):c}extendTranslation(e,t,o,s,r){var a=this;if(this.i18nFormat&&this.i18nFormat.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...o},o.lng||this.language||s.usedLng,s.usedNS,s.usedKey,{resolved:s});else if(!o.skipInterpolation){o.interpolation&&this.interpolator.init({...o,interpolation:{...this.options.interpolation,...o.interpolation}});const u=m(e)&&(o&&o.interpolation&&o.interpolation.skipOnVariables!==void 0?o.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let d;if(u){const c=e.match(this.interpolator.nestingRegexp);d=c&&c.length}let p=o.replace&&!m(o.replace)?o.replace:o;if(this.options.interpolation.defaultVariables&&(p={...this.options.interpolation.defaultVariables,...p}),e=this.interpolator.interpolate(e,p,o.lng||this.language||s.usedLng,o),u){const c=e.match(this.interpolator.nestingRegexp),h=c&&c.length;d<h&&(o.nest=!1)}!o.lng&&this.options.compatibilityAPI!=="v1"&&s&&s.res&&(o.lng=this.language||s.usedLng),o.nest!==!1&&(e=this.interpolator.nest(e,function(){for(var c=arguments.length,h=new Array(c),f=0;f<c;f++)h[f]=arguments[f];return r&&r[0]===h[0]&&!o.context?(a.logger.warn(`It seems you are nesting recursively key: ${h[0]} in key: ${t[0]}`),null):a.translate(...h,t)},o)),o.interpolation&&this.interpolator.reset()}const i=o.postProcess||this.options.postProcess,l=m(i)?[i]:i;return e!=null&&l&&l.length&&o.applyPostProcessor!==!1&&(e=Ge.handle(l,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...s,usedParams:this.getUsedParamsDetails(o)},...o}:o,this)),e}resolve(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o,s,r,a,i;return m(e)&&(e=[e]),e.forEach(l=>{if(this.isValidLookup(o))return;const u=this.extractFromKey(l,t),d=u.key;s=d;let p=u.namespaces;this.options.fallbackNS&&(p=p.concat(this.options.fallbackNS));const c=t.count!==void 0&&!m(t.count),h=c&&!t.ordinal&&t.count===0&&this.pluralResolver.shouldUseIntlApi(),f=t.context!==void 0&&(m(t.context)||typeof t.context=="number")&&t.context!=="",w=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);p.forEach(y=>{this.isValidLookup(o)||(i=y,!Re[`${w[0]}-${y}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(i)&&(Re[`${w[0]}-${y}`]=!0,this.logger.warn(`key "${s}" for languages "${w.join(", ")}" won't get resolved as namespace "${i}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),w.forEach(R=>{if(this.isValidLookup(o))return;a=R;const A=[d];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(A,d,R,y,t);else{let v;c&&(v=this.pluralResolver.getSuffix(R,t.count,t));const $=`${this.options.pluralSeparator}zero`,x=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(c&&(A.push(d+v),t.ordinal&&v.indexOf(x)===0&&A.push(d+v.replace(x,this.options.pluralSeparator)),h&&A.push(d+$)),f){const g=`${d}${this.options.contextSeparator}${t.context}`;A.push(g),c&&(A.push(g+v),t.ordinal&&v.indexOf(x)===0&&A.push(g+v.replace(x,this.options.pluralSeparator)),h&&A.push(g+$))}}let F;for(;F=A.pop();)this.isValidLookup(o)||(r=F,o=this.getResource(R,y,F,t))}))})}),{res:o,usedKey:s,exactUsedKey:r,usedLng:a,usedNS:i}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e==="")}getResource(e,t,o){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,o,s):this.resourceStore.getResource(e,t,o,s)}getUsedParamsDetails(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],o=e.replace&&!m(e.replace);let s=o?e.replace:e;if(o&&typeof e.count<"u"&&(s.count=e.count),this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),!o){s={...s};for(const r of t)delete s[r]}return s}static hasDefaultValue(e){const t="defaultValue";for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&t===o.substring(0,t.length)&&e[o]!==void 0)return!0;return!1}}const pe=n=>n.charAt(0).toUpperCase()+n.slice(1);class $e{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=N.create("languageUtils")}getScriptPartFromCode(e){if(e=ae(e),!e||e.indexOf("-")<0)return null;const t=e.split("-");return t.length===2||(t.pop(),t[t.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(t.join("-"))}getLanguagePartFromCode(e){if(e=ae(e),!e||e.indexOf("-")<0)return e;const t=e.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(m(e)&&e.indexOf("-")>-1){if(typeof Intl<"u"&&typeof Intl.getCanonicalLocales<"u")try{let s=Intl.getCanonicalLocales(e)[0];if(s&&this.options.lowerCaseLng&&(s=s.toLowerCase()),s)return s}catch{}const t=["hans","hant","latn","cyrl","cans","mong","arab"];let o=e.split("-");return this.options.lowerCaseLng?o=o.map(s=>s.toLowerCase()):o.length===2?(o[0]=o[0].toLowerCase(),o[1]=o[1].toUpperCase(),t.indexOf(o[1].toLowerCase())>-1&&(o[1]=pe(o[1].toLowerCase()))):o.length===3&&(o[0]=o[0].toLowerCase(),o[1].length===2&&(o[1]=o[1].toUpperCase()),o[0]!=="sgn"&&o[2].length===2&&(o[2]=o[2].toUpperCase()),t.indexOf(o[1].toLowerCase())>-1&&(o[1]=pe(o[1].toLowerCase())),t.indexOf(o[2].toLowerCase())>-1&&(o[2]=pe(o[2].toLowerCase()))),o.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(o=>{if(t)return;const s=this.formatLanguageCode(o);(!this.options.supportedLngs||this.isSupportedCode(s))&&(t=s)}),!t&&this.options.supportedLngs&&e.forEach(o=>{if(t)return;const s=this.getLanguagePartFromCode(o);if(this.isSupportedCode(s))return t=s;t=this.options.supportedLngs.find(r=>{if(r===s)return r;if(!(r.indexOf("-")<0&&s.indexOf("-")<0)&&(r.indexOf("-")>0&&s.indexOf("-")<0&&r.substring(0,r.indexOf("-"))===s||r.indexOf(s)===0&&s.length>1))return r})}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t}getFallbackCodes(e,t){if(!e)return[];if(typeof e=="function"&&(e=e(t)),m(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let o=e[t];return o||(o=e[this.getScriptPartFromCode(t)]),o||(o=e[this.formatLanguageCode(t)]),o||(o=e[this.getLanguagePartFromCode(t)]),o||(o=e.default),o||[]}toResolveHierarchy(e,t){const o=this.getFallbackCodes(t||this.options.fallbackLng||[],e),s=[],r=a=>{a&&(this.isSupportedCode(a)?s.push(a):this.logger.warn(`rejecting language code not found in supportedLngs: ${a}`))};return m(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&r(this.formatLanguageCode(e)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&r(this.getScriptPartFromCode(e)),this.options.load!=="currentOnly"&&r(this.getLanguagePartFromCode(e))):m(e)&&r(this.formatLanguageCode(e)),o.forEach(a=>{s.indexOf(a)<0&&r(this.formatLanguageCode(a))}),s}}let It=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","
1sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],Ct={1:n=>+(n>1),2:n=>+(n!=1),3:n=>0,4:n=>n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2,5:n=>n==0?0:n==1?1:n==2?2:n%100>=3&&n%100<=10?3:n%100>=11?4:5,6:n=>n==1?0:n>=2&&n<=4?1:2,7:n=>n==1?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2,8:n=>n==1?0:n==2?1:n!=8&&n!=11?2:3,9:n=>+(n>=2),10:n=>n==1?0:n==2?1:n<7?2:n<11?3:4,11:n=>n==1||n==11?0:n==2||n==12?1:n>2&&n<20?2:3,12:n=>+(n%10!=1||n%100==11),13:n=>+(n!==0),14:n=>n==1?0:n==2?1:n==3?2:3,15:n=>n%10==1&&n%100!=11?0:n%10>=2&&(n%100<10||n%100>=20)?1:2,16:n=>n%10==1&&n%100!=11?0:n!==0?1:2,17:n=>n==1||n%10==1&&n%100!=11?0:1,18:n=>n==0?0:n==1?1:2,19:n=>n==1?0:n==0||n%100>1&&n%100<11?1:n%100>10&&n%100<20?2:3,20:n=>n==1?0:n==0||n%100>0&&n%100<20?1:2,21:n=>n%100==1?1:n%100==2?2:n%100==3||n%100==4?3:0,22:n=>n==1?0:n==2?1:(n<0||n>10)&&n%10==0?2:3};const Pt=["v1","v2","v3"],Ot=["v4"],Me={zero:0,one:1,two:2,few:3,many:4,other:5},Rt=()=>{const n={};return It.forEach(e=>{e.lngs.forEach(t=>{n[t]={numbers:e.nr,plurals:Ct[e.fc]}})}),n};class $t{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=e,this.options=t,this.logger=N.create("pluralResolver"),(!this.options.compatibilityJSON||Ot.includes(this.options.compatibilityJSON))&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=Rt(),this.pluralRulesCache={}}addRule(e,t){this.rules[e]=t}clearCache(){this.pluralRulesCache={}}getRule(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi()){const o=ae(e==="dev"?"en":e),s=t.ordinal?"ordinal":"cardinal",r=JSON.stringify({cleanedCode:o,type:s});if(r in this.pluralRulesCache)return this.pluralRulesCache[r];let a;try{a=new Intl.PluralRules(o,{type:s})}catch{if(!e.match(/-|_/))return;const l=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(l,t)}return this.pluralRulesCache[r]=a,a}return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}needsPlural(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const o=this.getRule(e,t);return this.shouldUseIntlApi()?o&&o.resolvedOptions().pluralCategories.length>1:o&&o.numbers.length>1}getPluralFormsOfKey(e,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(e,o).map(s=>`${t}${s}`)}getSuffixes(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const o=this.getRule(e,t);return o?this.shouldUseIntlApi()?o.resolvedOptions().pluralCategories.sort((s,r)=>Me[s]-Me[r]).map(s=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${s}`):o.numbers.map(s=>this.getSuffix(e,s,t)):[]}getSuffix(e,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const s=this.getRule(e,o);return s?this.shouldUseIntlApi()?`${this.options.prepend}${o.ordinal?`ordinal${this.options.prepend}`:""}${s.select(t)}`:this.getSuffixRetroCompatible(s,t):(this.logger.warn(`no plural rule found for: ${e}`),"")}getSuffixRetroCompatible(e,t){const o=e.noAbs?e.plurals(t):e.plurals(Math.abs(t));let s=e.numbers[o];this.options.simplifyPluralSuffix&&e.numbers.length===2&&e.numbers[
vendor: 24,377 bytes, line 1
10]===1&&(s===2?s="plural":s===1&&(s=""));const r=()=>this.options.prepend&&s.toString()?this.options.prepend+s.toString():s.toString();return this.options.compatibilityJSON==="v1"?s===1?"":typeof s=="number"?`_plural_${s.toString()}`:r():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&e.numbers.length===2&&e.numbers[0]===1?r():this.options.prepend&&o.toString()?this.options.prepend+o.toString():o.toString()}shouldUseIntlApi(){return!Pt.includes(this.options.compatibilityJSON)}}const Te=function(n,e,t){let o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,r=bt(n,e,t);return!r&&s&&m(t)&&(r=ye(n,t,o),r===void 0&&(r=ye(e,t,o))),r},he=n=>n.replace(/\$/g,"$$$$");class Mt{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=N.create("interpolator"),this.options=e,this.format=e.interpolation&&e.interpolation.format||(t=>t),this.init(e)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});const{escape:t,escapeValue:o,useRawValueToEscape:s,prefix:r,prefixEscaped:a,suffix:i,suffixEscaped:l,formatSeparator:u,unescapeSuffix:d,unescapePrefix:p,nestingPrefix:c,nestingPrefixEscaped:h,nestingSuffix:f,nestingSuffixEscaped:w,nestingOptionsSeparator:y,maxReplaces:R,alwaysFormat:A}=e.interpolation;this.escape=t!==void 0?t:vt,this.escapeValue=o!==void 0?o:!0,this.useRawValueToEscape=s!==void 0?s:!1,this.prefix=r?j(r):a||"{{",this.suffix=i?j(i):l||"}}",this.formatSeparator=u||",",this.unescapePrefix=d?"":p||"-",this.unescapeSuffix=this.unescapePrefix?"":d||"",this.nestingPrefix=c?j(c):h||j("$t("),this.nestingSuffix=f?j(f):w||j(")"),this.nestingOptionsSeparator=y||",",this.maxReplaces=R||1e3,this.alwaysFormat=A!==void 0?A:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(t,o)=>t&&t.source===o?(t.lastIndex=0,t):new RegExp(o,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(e,t,o,s){let r,a,i;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=h=>{if(h.indexOf(this.formatSeparator)<0){const R=Te(t,l,h,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(R,void 0,o,{...s,...t,interpolationkey:h}):R}const f=h.split(this.formatSeparator),w=f.shift().trim(),y=f.join(this.formatSeparator).trim();return this.format(Te(t,l,w,this.options.keySeparator,this.options.ignoreJSONStructure),y,o,{...s,...t,interpolationkey:w})};this.resetRegExp();const d=s&&s.missingInterpolationHandler||this.options.missingInterpolationHandler,p=s&&s.interpolation&&s.interpolation.skipOnVariables!==void 0?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:h=>he(h)},{regex:this.regexp,safeValue:h=>this.escapeValue?he(this.escape(h)):he(h)}].forEach(h=>{for(i=0;r=h.regex.exec(e);){const f=r[1].trim();if(a=u(f),a===void 0)if(typeof d=="function"){const y=d(e,r,s);a=m(y)?y:""}else if(s&&Object.prototype.hasOwnProperty.call(s,f))a="";else if(p){a=r[0];continue}else this.logger.warn(`missed to pass in variable ${f} for interpolating ${e}`),a="";else!m(a)&&!this.useRawValueToEscape&&(a=Le(a));const w=h.safeValue(a);if(e=e.replace(r[0],w),p?(h.regex.lastIndex+=a.length,h.regex.lastIndex-=r[0].length):h.regex.lastIndex=0,i++,i>=this.maxReplaces)break}}),e}nest(e,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},s,r,a;const i=(l,u)=>{const d=this.nestingOptionsSeparator;if(l.indexOf(d)<0)return l;const p=l.split(new RegExp(`${d}[ ]*{`));let c=`{${p[1]}`;l=p[0],c=this.interpolate(c,a);const h=c.match(/'/g),f=c.match(/"/g);(h&&h.length%2===0&&!f||f.length%2!==0)&&(c=c.replace(/'/g,'"'));try{a=JSON.parse(c),u&&(a={...u,...a})}catch(w){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,w),`${l}${d}${c}`}return a.defaultValue&&a.defaultValue.indexOf(this.prefix)>-1&&delete a.defaultValue,l};for(;s=this.nestingRegexp.exec(e);){let l=[];a={...o},a=a.replace&&!m(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let u=!1;if(s[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(s[1])){const d=s[1].split(this.formatSeparator).map(p=>p.trim());s[1]=d.shift(),l=d,u=!0}if(r=t(i.call(this,s[1].trim(),a),a),r&&s[0]===e&&!m(r))return r;m(r)||(r=Le(r)),r||(this.logger.warn(`missed to resolve ${s[1]} for nesting ${e}`),r=""),u&&(r=l.reduce((d,p)=>this.format(d,p,o.lng,{...o,interpolationkey:s[1].trim()}),r.trim())),e=e.replace(s[0],r),this.regexp.lastIndex=0}return e}}const Tt=n=>{let e=n.toLowerCase().trim();const t={};if(n.indexOf("(")>-1){const o=n.split("(");e=o[0].toLowerCase().trim();const s=o[1].substring(0,o[1].length-1);e==="currency"&&s.indexOf(":")<0?t.currency||(t.currency=s.trim()):e==="relativetime"&&s.indexOf(":")<0?t.range||(t.range=s.trim()):s.split(";").forEach(a=>{if(a){const[i,...l]=a.split(":"),u=l.join(":").trim().replace(/^'+|'+$/g,""),d=i.trim();t[d]||(t[d]=u),u==="false"&&(t[d]=!1),u==="true"&&(t[d]=!0),isNaN(u)||(t[d]=parseInt(u,10))}})}return{formatName:e,formatOptions:t}},z=n=>{const e={};return(t,o,s)=>{let r=s;s&&s.interpolationkey&&s.formatParams&&s.formatParams[s.interpolationkey]&&s[s.interpolationkey]&&(r={...r,[s.interpolationkey]:void 0});const a=o+JSON.stringify(r);let i=e[a];return i||(i=n(ae(o),s),e[a]=i),i(t)}};class _t{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=N.create("formatter"),this.options=e,this.formats={number:z((t,o)=>{const s=new Intl.NumberFormat(t,{...o});return r=>s.format(r)}),currency:z((t,o)=>{const s=new Intl.NumberFormat(t,{...o,style:"currency"});return r=>s.format(r)}),datetime:z((t,o)=>{const s=new Intl.DateTimeFormat(t,{...o});return r=>s.format(r)}),relativetime:z((t,o)=>{const s=new Intl.RelativeTimeFormat(t,{...o});return r=>s.format(r,o.range||"day")}),list:z((t,o)=>{const s=new Intl.ListFormat(t,{...o});return r=>s.format(r)})},this.init(e)}init(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};this.formatSeparator=t.interpolation.formatSeparator||","}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=z(t)}format(e,t,o){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const r=t.split(this.formatSeparator);if(r.length>1&&r[0].indexOf("(")>1&&r[0].indexOf(")")<0&&r.find(i=>i.indexOf(")")>-1)){const i=r.findIndex(l=>l.indexOf(")")>-1);r[0]=[r[0],...r.splice(1,i)].join(this.formatSeparator)}return r.reduce((i,l)=>{const{formatName:u,formatOptions:d}=Tt(l);if(this.formats[u]){let p=i;try{const c=s&&s.formatParams&&s.formatParams[s.interpolationkey]||{},h=c.locale||c.lng||s.locale||s.lng||o;p=this.formats[u](i,h,{...d,...s,...c})}catch(c){this.logger.warn(c)}return p}else this.logger.warn(`there was no format function for ${u}`);return i},e)}}const Et=(n,e)=>{n.pending[e]!==void 0&&(delete n.pending[e],n.pendingCount--)};class Nt extends ce{constructor(e,t,o){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=e,this.store=t,this.services=o,this.languageUtils=o.languageUtils,this.options=s,this.logger=N.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=s.maxParallelReads||10,this.readingCalls=0,this.maxRetries=s.maxRetries>=0?s.maxRetries:5,this.retryTimeout=s.retryTimeout>=1?s.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(o,s.backend,s)}queueLoad(e,t,o,s){const r={},a={},i={},l={};return e.forEach(u=>{let d=!0;t.forEach(p=>{const c=`${u}|${p}`;!o.reload&&this.store.hasResourceBundle(u,p)?this.state[c]=2:this.state[c]<0||(this.state[c]===1?a[c]===void 0&&(a[c]=!0):(this.state[c]=1,d=!1,a[c]===void 0&&(a[c]=!0),r[c]===void 0&&(r[c]=!0),l[p]===void 0&&(l[p]=!0)))}),d||(i[u]=!0)}),(Object.keys(r).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:s}),{toLoad:Object.keys(r),pending:Object.keys(a),toLoadLanguages:Object.keys(i),toLoadNamespaces:Object.keys(l)}}loaded(e,t,o){const s=e.split("|"),r=s[0],a=s[1];t&&this.emit("failedLoading",r,a,t),!t&&o&&this.store.addResourceBundle(r,a,o,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&o&&(this.state[e]=0);const i={};this.queue.forEach(l=>{yt(l.loaded,[r],a),Et(l,e),t&&l.errors.push(t),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(u=>{i[u]||(i[u]={});const d=l.loaded[u];d.length&&d.forEach(p=>{i[u][p]===void 0&&(i[u][p]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",i),this.queue=this.queue.filter(l=>!l.done)}read(e,t,o){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,a=arguments.length>5?arguments[5]:void 0;if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:o,tried:s,wait:r,callback:a});return}this.readingCalls++;const i=(u,d)=>{if(this.readingCalls--,this.waitingReads.length>0){const p=this.waitingReads.shift();this.read(p.lng,p.ns,p.fcName,p.tried,p.wait,p.callback)}if(u&&d&&s<this.maxRetries){setTimeout(()=>{this.read.call(this,e,t,o,s+1,r*2,a)},r);return}a(u,d)},l=this.backend[o].bind(this.backend);if(l.length===2){try{const u=l(e,t);u&&typeof u.then=="function"?u.then(d=>i(null,d)).catch(i):i(null,u)}catch(u){i(u)}return}return l(e,t,i)}prepareLoading(e,t){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},s=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),s&&s();m(e)&&(e=this.languageUtils.toResolveHierarchy(e)),m(t)&&(t=[t]);const r=this.queueLoad(e,t,o,s);if(!r.toLoad.length)return r.pending.length||s(),null;r.toLoad.forEach(a=>{this.loadOne(a)})}load(e,t,o){this.prepareLoading(e,t,{},o)}reload(e,t,o){this.prepareLoading(e,t,{reload:!0},o)}loadOne(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const o=e.split("|"),s=o[0],r=o[1];this.read(s,r,"read",void 0,void 0,(a,i)=>{a&&this.logger.warn(`${t}loading namespace ${r} for language ${s} failed`,a),!a&&i&&this.logger.log(`${t}loaded namespace ${r} for language ${s}`,i),this.loaded(e,a,i)})}saveMissing(e,t,o,s,r){let a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},i=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${o}" as the namespace "${t}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(o==null||o==="")){if(this.backend&&this.backend.create){const l={...a,isUpdate:r},u=this.backend.create.bind(this.backend);if(u.length<6)try{let d;u.length===5?d=u(e,t,o,s,l):d=u(e,t,o,s),d&&typeof d.then=="function"?d.then(p=>i(null,p)).catch(i):i(null,d)}catch(d){i(d)}else u(e,t,o,s,i,l)}!e||!e[0]||this.store.addResource(e[0],t,o,s)}}}const _e=()=>({debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:n=>{let e={};if(typeof n[1]=="object"&&(e=n[1]),m(n[1])&&(e.defaultValue=n[1]),m(n[2])&&(e.tDescription=n[2]),typeof n[2]=="object"||typeof n[3]=="object"){const t=n[3]||n[2];Object.keys(t).forEach(o=>{e[o]=t[o]})}return e},interpolation:{escapeValue:!0,format:n=>n,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}),Ee=n=>(m(n.ns)&&(n.ns=[n.ns]),m(n.fallbackLng)&&(n.fallbackLng=[n.fallbackLng]),m(n.fallbackNS)&&(n.fallbackNS=[n.fallbackNS]),n.supportedLngs&&n.supportedLngs.indexOf("cimode")<0&&(n.supportedLngs=n.supportedLngs.concat(["cimode"])),n),te=()=>{},Dt=n=>{Object.getOwnPropertyNames(Object.getPrototypeOf(n)).forEach(t=>{typeof n[t]=="function"&&(n[t]=n[t].bind(n))})};class Z extends ce{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;if(super(),this.options=Ee(e),this.services={},this.logger=N,this.modules={external:[]},Dt(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initImmediate)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},o=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,typeof t=="function"&&(o=t,t={}),!t.defaultNS&&t.defaultNS!==!1&&t.ns&&(m(t.ns)?t.defaultNS=t.ns:t.ns.indexOf("translation")<0&&(t.defaultNS=t.ns[0]));const s=_e();this.options={...s,...this.options,...Ee(t)},this.options.compatibilityAPI!=="v1"&&(this.options.interpolation={...s.interpolation,...this.options.interpolation}),t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator);const r=d=>d?typeof d=="function"?new d:d:null;if(!this.options.isClone){this.modules.logger?N.init(r(this.modules.logger),this.options):N.init(null,this.options);let d;this.modules.formatter?d=this.modules.formatter:typeof Intl<"u"&&(d=_t);const p=new $e(this.options);this.store=new Oe(this.options.resources,this.options);const c=this.services;c.logger=N,c.resourceStore=this.store,c.languageUtils=p,c.pluralResolver=new $t(p,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),d&&(!this.options.interpolation.format||this.options.interpolation.format===s.interpolation.format)&&(c.formatter=r(d),c.formatter.init(c,this.options),this.options.interpolation.format=c.formatter.format.bind(c.formatter)),c.interpolator=new Mt(this.options),c.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},c.backendConnector=new Nt(r(this.modules.backend),c.resourceStore,c,this.options),c.backendConnector.on("*",function(h){for(var f=arguments.length,w=new Array(f>1?f-1:0),y=1;y<f;y++)w[y-1]=arguments[y];e.emit(h,...w)}),this.modules.languageDetector&&(c.languageDetector=r(this.modules.languageDetector),c.languageDetector.init&&c.languageDetector.init(c,this.options.detection,this.options)),this.modules.i18nFormat&&(c.i18nFormat=r(this.modules.i18nFormat),c.i18nFormat.init&&c.i18nFormat.init(this)),this.translator=new le(this.services,this.options),this.translator.on("*",function(h){for(var f=arguments.length,w=new Array(f>1?f-1:0),y=1;y<f;y++)w[y-1]=arguments[y];e.emit(h,...w)}),this.modules.external.forEach(h=>{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,o||(o=te),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const d=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);d.length>0&&d[0]!=="dev"&&(this.options.lng=d[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(d=>{this[d]=function(){return e.store[d](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(d=>{this[d]=function(){return e.store[d](...arguments),e}});const l=J(),u=()=>{const d=(p,c)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),l.resolve(c),o(p,c)};if(this.languages&&this.options.compatibilityAPI!=="v1"&&!this.isInitialized)return d(null,this.t.bind(this));this.changeLanguage(this.options.lng,d)};return this.options.resources||!this.options.initImmediate?u():setTimeout(u,0),l}loadResources(e){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:te;const s=m(e)?e:this.language;if(typeof e=="function"&&(o=e),!this.options.resources||this.options.partialBundledLanguages){if(s&&s.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return o();const r=[],a=i=>{if(!i||i==="cimode")return;this.services.languageUtils.toResolveHierarchy(i).forEach(u=>{u!=="cimode"&&r.indexOf(u)<0&&r.push(u)})};s?a(s):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>a(l)),this.options.preload&&this.options.preload.forEach(i=>a(i)),this.services.backendConnector.load(r,this.options.ns,i=>{!i&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),o(i)})}else o(null)}reloadResources(e,t,o){const s=J();return typeof e=="function"&&(o=e,e=void 0),typeof t=="function"&&(o=t,t=void 0),e||(e=this.languages),t||(t=this.options.ns),o||(o=te),this.services.backendConnector.reload(e,t,r=>{s.resolve(),o(r)}),s}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return e.type==="backend"&&(this.modules.backend=e),(e.type==="logger"||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type==="languageDetector"&&(this.modules.languageDetector=e),e.type==="i18nFormat"&&(this.modules.i18nFormat=e),e.type==="postProcessor"&&Ge.addPostProcessor(e),e.type==="formatter"&&(this.modules.formatter=e),e.type==="3rdParty"&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&!(["cimode","dev"].indexOf(e)>-1))for(let t=0;t<this.languages.length;t++){const o=this.languages[t];if(!(["cimode","dev"].indexOf(o)>-1)&&this.store.hasLanguageSomeTranslations(o)){this.resolvedLanguage=o;break}}}changeLanguage(e,t){var o=this;this.isLanguageChangingTo=e;const s=J();this.emit("languageChanging",e);const r=l=>{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},a=(l,u)=>{u?(r(u),this.translator.changeLanguage(u),this.isLanguageChangingTo=void 0,this.emit("languageChanged",u),this.logger.log("languageChanged",u)):this.isLanguageChangingTo=void 0,s.resolve(function(){return o.t(...arguments)}),t&&t(l,function(){return o.t(...arguments)})},i=l=>{!e&&!l&&this.services.languageDetector&&(l=[]);const u=m(l)?l:this.services.languageUtils.getBestMatchFromCodes(l);u&&(this.language||r(u),this.translator.language||this.translator.changeLanguage(u),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(u)),this.loadResources(u,d=>{a(d,u)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?i(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(i):this.services.languageDetector.detect(i):i(e),s}getFixedT(e,t,o){var s=this;const r=function(a,i){let l;if(typeof i!="object"){for(var u=arguments.length,d=new Array(u>2?u-2:0),p=2;p<u;p++)d[p-2]=arguments[p];l=s.options.overloadTranslationOptionHandler([a,i].concat(d))}else l={...i};l.lng=l.lng||r.lng,l.lngs=l.lngs||r.lngs,l.ns=l.ns||r.ns,l.keyPrefix!==""&&(l.keyPrefix=l.keyPrefix||o||r.keyPrefix);const c=s.options.keySeparator||".";let h;return l.keyPrefix&&Array.isArray(a)?h=a.map(f=>`${l.keyPrefix}${c}${f}`):h=l.keyPrefix?`${l.keyPrefix}${c}${a}`:a,s.t(h,l)};return m(e)?r.lng=e:r.lngs=e,r.ns=t,r.keyPrefix=o,r}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const o=t.lng||this.resolvedLanguage||this.languages[0],s=this.options?this.options.fallbackLng:!1,r=this.languages[this.languages.length-1];if(o.toLowerCase()==="cimode")return!0;const a=(i,l)=>{const u=this.services.backendConnector.state[`${i}|${l}`];return u===-1||u===0||u===2};if(t.precheck){const i=t.precheck(this,a);if(i!==void 0)return i}return!!(this.hasResourceBundle(o,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(o,e)&&(!s||a(r,e)))}loadNamespaces(e,t){const o=J();return this.options.ns?(m(e)&&(e=[e]),e.forEach(s=>{this.options.ns.indexOf(s)<0&&this.options.ns.push(s)}),this.loadResources(s=>{o.resolve(),t&&t(s)}),o):(t&&t(),Promise.resolve())}loadLanguages(e,t){const o=J();m(e)&&(e=[e]);const s=this.options.preload||[],r=e.filter(a=>s.indexOf(a)<0&&this.services.languageUtils.isSupportedCode(a));return r.length?(this.options.preload=s.concat(r),this.loadResources(a=>{o.resolve(),t&&t(a)}),o):(t&&t(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!e)return"rtl";const t=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],o=this.services&&this.services.languageUtils||new $e(_e());return t.indexOf(o.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return new Z(e,t)}cloneInstance(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:te;const o=e.forkResourceStore;o&&delete e.forkResourceStore;const s={...this.options,...e,isClone:!0},r=new Z(s);return(e.debug!==void 0||e.prefix!==void 0)&&(r.logger=r.logger.clone(e)),["store","services","language"].forEach(i=>{r[i]=this[i]}),r.services={...this.services},r.services.utils={hasLoadedNamespace:r.hasLoadedNamespace.bind(r)},o&&(r.store=new Oe(this.store.data,s),r.services.resourceStore=r.store),r.translator=new le(r.services,s),r.translator.on("*",function(i){for(var l=arguments.length,u=new Array(l>1?l-1:0),d=1;d<l;d++)u[d-1]=arguments[d];r.emit(i,...u)}),r.init(s,t),r.translator.options=s,r.translator.backendConnector.services.utils={hasLoadedNamespace:r.hasLoadedNamespace.bind(r)},r}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const b=Z.createInstance();b.createInstance=Z.createInstance;b.createInstance;b.dir;b.init;b.loadResources;b.reloadResources;b.use;b.changeLanguage;b.getFixedT;b.t;b.exists;b.setDefaultNamespace;b.hasLoadedNamespace;b.loadNamespaces;b.loadLanguages;const{slice:Ft,forEach:Ut}=[];function qt(n){return Ut.call(Ft.call(arguments,1),e=>{if(e)for(const t in e)n[t]===void 0&&(n[t]=e[t])}),n}
1function Ht(n){return typeof n!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(t=>t.test(n))}const Ne=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,jt=function(n,e){const o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},s=encodeURIComponent(e);let r=`${n}=${s}`;if(o.maxAge>0){const a=o.maxAge-0;if(Number.isNaN(a))throw new Error("maxAge should be a Number");r+=`; Max-Age=${Math.floor(a)}`}if(o.domain){if(!Ne.test(o.domain))throw new TypeError("option domain is invalid");r+=`; Domain=${o.domain}`}if(o.path){if(!Ne.test(o.path))throw new TypeError("option path is invalid");r+=`; Path=${o.path}`}if(o.expires){if(typeof o.expires.toUTCString!="function")throw new TypeError("option expires is invalid");r+=`; Expires=${o.expires.toUTCString()}`}if(o.httpOnly&&(r+="; HttpOnly"),o.secure&&(r+="; Secure"),o.sameSite)switch(typeof o.sameSite=="string"?o.sameSite.toLowerCase():o.sameSite){case!0:r+="; SameSite=Strict";break;case"lax":r+="; SameSite=Lax";break;case"strict":r+="; SameSite=Strict";break;case"none":r+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return o.partitioned&&(r+="; Partitioned"),r},De={create(n,e,t,o){let s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};t&&(s.expires=new Date,s.expires.setTime(s.expires.getTime()+t*60*1e3)),o&&(s.domain=o),document.cookie=jt(n,e,s)},read(n){const e=`${n}=`,t=document.cookie.split(";");for(let o=0;o<t.length;o++){let s=t[o];for(;s.charAt(0)===" ";)s=s.substring(1,s.length);if(s.indexOf(e)===0)return s.substring(e.length,s.length)}return null},remove(n,e){this.create(n,"",-1,e)}};var zt={name:"cookie",lookup(n){let{lookupCookie:e}=n;if(e&&typeof document<"u")return De.read(e)||void 0},cacheUserLanguage(n,e){let{lookupCookie:t,cookieMinutes:o,cookieDomain:s,cookieOptions:r}=e;t&&typeof document<"u"&&De.create(t,n,o,s,r)}},Vt={name:"querystring",lookup(n){let{lookupQuerystring:e}=n,t;if(typeof window<"u"){let{search:o}=window.location;!window.location.search&&window.location.hash?.indexOf("?")>-1&&(o=window.location.hash.substring(window.location.hash.indexOf("?")));const r=o.substring(1).split("&");for(let a=0;a<r.length;a++){const i=r[a].indexOf("=");i>0&&r[a].substring(0,i)===e&&(t=r[a].substring(i+1))}}return t}},Kt={name:"hash",lookup(n){let{lookupHash:e,lookupFromHashIndex:t}=n,o;if(typeof window<"u"){const{hash:s}=window.location;if(s&&s.length>2){const r=s.substring(1);if(e){const a=r.split("&");for(let i=0;i<a.length;i++){const l=a[i].indexOf("=");l>0&&a[i].substring(0,l)===e&&(o=a[i].substring(l+1))}}if(o)return o;if(!o&&t>-1){const a=s.match(/\/([a-zA-Z-]*)/g);return Array.isArray(a)?a[typeof t=="number"?t:0]?.replace("/",""):void 0}}}return o}};let V=null;const Fe=()=>{if(V!==null)return V;try{if(V=typeof window<"u"&&window.localStorage!==null,!V)return!1;const n="i18next.translate.boo";window.localStorage.setItem(n,"foo"),window.localStorage.removeItem(n)}catch{V=!1}return V};var Gt={name:"localStorage",lookup(n){let{lookupLocalStorage:e}=n;if(e&&Fe())return window.localStorage.getItem(e)||void 0},cacheUserLanguage(n,e){let{lookupLocalStorage:t}=e;t&&Fe()&&window.localStorage.setItem(t,n)}};let K=null;const Ue=()=>{if(K!==null)return K;try{if(K=typeof window<"u"&&window.sessionStorage!==null,!K)return!1;const n="i18next.translate.boo";window.sessionStorage.setItem(n,"foo"),window.sessionStorage.removeItem(n)}catch{K=!1}return K};var Bt={name:"sessionStorage",lookup(n){let{lookupSessionStorage:e}=n;if(e&&Ue())return window.sessionStorage.getItem(e)||void 0},cacheUserLanguage(n,e){let{lookupSessionStorage:t}=e;t&&Ue()&&window.sessionStorage.setItem(t,n)}},Wt={name:"navigator",lookup(n){const e=[];if(typeof navigator<"u"){const{languages:t,userLanguage:o,language:s}=navigator;if(t)for(let r=0;r<t.length;r++)e.push(t[r]);o&&e.push(o),s&&e.push(s)}return e.length>0?e:void 0}},Jt={name:"htmlTag",lookup(n){let{htmlTag:e}=n,t;const o=e||(typeof document<"u"?document.documentElement:null);return o&&typeof o.getAttribute=="function"&&(t=o.getAttribute("lang")),t}},Yt={name:"path",lookup(n){let{lookupFromPathIndex:e}=n;if(typeof window>"u")return;const t=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(t)?t[typeof e=="number"?e:0]?.replace("/",""):void 0}},Qt={name:"subdomain",lookup(n){let{lookupFromSubdomainIndex:e}=n;const t=typeof e=="number"?e+1:1,o=typeof window<"u"&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(o)return o[t]}};let Be=!1;try{document.cookie,Be=!0}catch{}const We=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];Be||We.splice(1,1);const Zt=()=>({order:We,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:n=>n});class Je{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(e,t)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=qt(t,this.options||{},Zt()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=s=>s.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=o,this.addDetector(zt),this.addDetector(Vt),this.addDetector(Gt),this.addDetector(Bt),this.addDetector(Wt),this.addDetector(Jt),this.addDetector(Yt),this.addDetector(Qt),this.addDetector(Kt)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>
vendor: 3,851 bytes, line 1
10&&arguments[0]!==void 0?arguments[0]:this.options.order,t=[];return e.forEach(o=>{if(this.detectors[o]){let s=this.detectors[o].lookup(this.options);s&&typeof s=="string"&&(s=[s]),s&&(t=t.concat(s))}}),t=t.filter(o=>o!=null&&!Ht(o)).map(o=>this.options.convertDetectedLanguage(o)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?t:t.length>0?t[0]:null}cacheUserLanguage(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;t&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||t.forEach(o=>{this.detectors[o]&&this.detectors[o].cacheUserLanguage(e,this.options)}))}}Je.type="languageDetector";const Xt="The Unified Gateway for AI Models",eo="Apps Using AIHubMix",to="User",oo="Channel",no="Redemption",so="Logs",ro="Settings",ao="Sign in",io="Sign up",lo="Sign out",uo="Enterprise",co="Dashboard",po="Unit",ho="Reset",mo="OR",fo="username",go="Password",yo="yes",bo="no",wo="modify",vo="Connect Customer",xo="Model",ko="Input",Ao="Output",So="API Key",Lo="Status",Io="enabled",Co="enable",Po="disabled",Oo="disable",Ro="expired",$o="exhausted",Mo="uncertain",To="Actions",_o="edit",Eo="copy",No="sort",Do="from {{start}} to {{end}} items",Fo="submit",Uo="cancel",qo="Recharge",Ho="consume",jo="manage",zo="system",Vo="type",Ko="All",Go="Email",Bo="Linked",Wo="Search",Jo="Reset",Yo="operation failed, redirecting to the login page...",Qo="An error occurred, retrying for the {{count}} time...",Zo="unlimited",Xo="Spend",en="usage trend",tn="distribution",on="Date",nn="start time-end time",sn="today",rn="Trending",an="Featured",ln="Total ",un="Export XLSX",cn="available",dn="Init",pn="Alipay",hn="Stripe",mn="Exchange",fn="Model Authors",gn="rank",yn="Categories",bn="Price",wn="desc",vn="Feedback",xn="Privacy Policy",kn="Terms",An="Capabilities",Sn="Supported Parameters",Ln="API Formats",In="Released",Cn="Categories",Pn="Output Modalities",On="Docs",Rn="add",$n="Notice",Mn="Notes",Tn="Authorize",_n="Deny",En="Allow",Nn="Refresh",Dn="Providers",Fn="Pricing",Un="Specifications",qn="Performance",Hn="Peak",jn="Compare",zn="Comparisons",Vn="Update",Kn="Copied",Gn="Capabilities",Bn="Context length",Wn="Not documented by the vendor",Jn="Model",Yn="Modalities",Qn="Throughput",Zn="Latency",Xn="Input",es="Output",ts="tokens",os="requests",ns="Total",ss="Usage",rs="Tokens",as="Requests",is="Models",ls="free",us="Reasoning",cs="Tools",ds="Vision",ps="Clear",hs="Resets",ms="daily",fs="Apps",gs="Recommended",ys="Deprecating",bs="Retired",ws="Retirements",vs="Active",xs="Author",ks="All",As="Status",Ss="Announced",Ls="Replacement",D={slogan:Xt,"site Name":"AI HUB MIX","slogan desc 1":"Access leading AI models through one unified, OpenAI-compatible API.","start to use":"Get API Key","doc entrance":"View Docs","feature 1":"One API for Any Model","feature 1 desc":"Connect to all major AI models including ChatGPT, Claude, Gemini, DeepSeek, Qwen. All available in consistent format.","price entrance":"All Models >","feature 2":"OpenAI-Compatible API","feature 2 desc":"As an official partner of Azure, AWS, Google Cloud, we integrate official APIs and proprietary services for enterprise-grade reliability and unlimited throughput.","feature 3":"Higher Availability","feature 3 desc":"Automatically route across healthy providers and fall back when one is unavailable.","Model usage":"Model Rankings","Featured Apps":"Featured Apps",Partner:eo,"Partner desc":"Discover apps using AIHubMix. Eligible usage receives 10% off, excluding Claude models.","Partner off":"View All Apps","Earn with Your App":"Integrate AIHubMix and Get 10% Off",User:to,Channel:oo,Redemption:no,"Usage statistics":"Dashboard","Balance/Top-up":"Credits","API keys":"API Keys",Log:so,Setting:ro,Login:ao,Register:io,"Signed in as":"Signed in as",Logout:lo,"Model/Price"
1:"Models","App Store":"Apps",Enterprise:uo,Console:co,"Usage tutorial":"Docs",Unit:po,"call times":"Requests","Last week":"Last week","Last month":"Last month",Reset:ho,"forgot password?":"Forgot password?","no account?":"no account?","had account?":"already have an account?",OR:mo,"Sign in with Github":"Continue with Github","Sign in with Google":"Continue with Google",username:fo,"username placeholder":"Please enter your usernameï¼shortest 3 digits, longest 12 digits!",password:go,"password placeholder":"Please enter your password! shortest 8 digits, longest 20 digits","sign in success notice":"Sign in success!","sign in failed notice":"Not logged in or login has expired, please log in again!","reset password notice":"Please change the default password immediately!","typeof amount error notice":"The credit only accepts positive integers!","pay failed notice":"Payment failed!","pay success notice":"Payment success!","order close notice":"Order closed!","account balance":"Available credits","balance remind":"Balance Alert","balance remind desc":"Set Up Low Balance Email Alerts to Ease Your Concerns","close remind":"Turn Off Balance Alerts",yes:yo,no:bo,modify:wo,"close remind notice":"are you sure you no longer receive balance reminder emails?","balance remind notice":"when the balance is less than ${{threshold}}, notify {{email}}","set balance remind":"set balance remind","remind threshold":"low balance threshold","remind threshold placeholder":"please enter the correct amount","remind email":"remind email","remind email placeholder":"please enter your email address","recharge online":"Pay as you go","recharge quota":"Add to credit balance","custom recharge":"Custom","custom recharge placeholder":"minimum $1, integers only","recharge amount placeholder":"please enter an integer amount","Payable amount":"Payable amount:","alipay pay":"Alipay Pay","alipay pay notice":"Alipay scan to complete payment","stripe pay":"Stripe Pay",invoice:vo,"quota notice":"Invoice / Enterprise Customization","exchange quota":"Redeem Promo Code","exchange code":"Code","exchange success notice":"Success!","exchange code placeholder":"please enter the code","exchange code tooltip":"After successful payment, do not leave the current page, wait for about 10 seconds, the page will display the card password, which is the exchange code",model:xo,input:ko,output:Ao,"search model":"Search models...","model price table":"Supported Models","operation success":"operation success!","key name":"Key name",key:So,status:Lo,enabled:Io,enable:Co,disabled:Po,disable:Oo,expired:Ro,exhausted:$o,uncertain:Mo,"used quota":"Usage","remain quota":"Remaining limit","created time":"Created","expired time":"Expires","expired time placeholder":"default no limit","invalid time format":"invalid time format!",operation:To,edit:_o,delete:"delete","add key":"Create API key","delete confirm":"delete data","delete noice":"Are you sure you want to delete the key named {{name}}?",copy:Eo,"copy success":"copy success!","my key":"My Key","go recharge":"Add credits","key name placeholder":"Search API keys...",sort:No,"sort by remain quota":"sort by remain credit","sort by used quota":"sort by used credit",pagination:Do,"create key":"Create API key","create key success":"create key success, copy key on the list!","update key":"Update key","update key success":"update key success!","never expired":"never expired","one month later expired":"one month later expired","one day later expired":"one day later expired","one hour later expired":"one hour later expired","one minute later expired":"one minute later expired","quota setting notice":"Note: Newbies are advised to choose unlimited credit. The credit of the key is only used to limit the maximum credit usage of the key itself, and the actual usage is subject to the remaining quota limit of the account.","quota limit":"quota limit","quota limit placeholder":"please enter the credit limit","cancel quote unlimited":"cancel credit unlimited","set quote unlimited":"set credit unlimited","higher option":"This is an advanced option, newbies do not operate","model range":"model range","model range placeholder":"default no limit","model range tooltip":"limit the model that the current key can use","IP limit":"IP limit","IP limit placeholder":"please enter the IP limit","IP limit tooltip":"used to limit the specific user IP, newbies are not recommended to set",submit:Fo,cancel:Uo,"log detail":"log detail",recharge:qo,consume:Ho,manage:jo,system:zo,type:Vo,all:Ko,"max nums":"Export XLSX (up to 10,000 rows)","model name":"Model","model price":"Pricing","cached tokens":"Cached prompt tokens","quota change":"Amount","start time":"Start time","end time":"End time","personal setting":"Personal Setting","user name":"User Name","display name":"display name",email:Go,"bind email address":"Link Email Address","bind email address placeholder":"please enter the email address","go bind":"Bind Now",binded:Bo,"go update":"Update","send captcha":"send captcha","captcha placeholder":"please enter the captcha","log off account":"Log Off Account","go log off":"Log Off","log off notice":"Are you sure you want to log off?","log off confirm":"please enter your username to confirm log off!","account name placeholder":"please enter your username","token copied":"token has been copied to the clipboard","invite code copied":"invite code has been copied to clipboard","system token copied":"system token has been copied to clipboard","log off confirm notice":"You are deleting your account, all data will be cleared and cannot be recovered","log off success":"Logged out successfully!","bind wechat success":"bind wechat success!","captcha send success":"captcha send success, please check your email","bind email success":"bind email success!","common setting":"common setting","common setting desc":"This token is for system management purposes and is not used for LLM requests.","generate token":"generate system access token","copy invite code":"Invite Link","account setting":"account setting","avaliable models":"Avaliable Models","update user":"update user","user update success":"user update success!","new username":"username","new username placeholder":"please enter the new usernameï¼shortest 3 digits, longest 12 digits","display name placeholder":"please enter the display name","binded Github account":"Linked Github account","binded Google account":"Linked Google account","binded email account":"Linked email account","binded account placeholder":"read-only, users need to bind through the relevant binding button on the personal settings page, cannot be modified directly",search:Wo,reset:Jo,"page not exist":"Page not found","page not exist desc":"The page youâre looking for doesnât exist or may have moved.","back to home":"Back to home","no permission":"no permission","no permission desc":"You do not have permission to access this page. Please contact the administrator to open the permission.","bind success":"Linked
1success","login success":"login success",redirecting:Yo,retrying:Qo,"params error":"params error","connect server error":"Unable to connect to the server normally!",unlimited:Zo,"statistics title":"Activity",expense:Xo,"expense desc":"Total spend","usage token":"Token volume","usage token desc":"Total prompt and completion tokens","call times desc":"API requests",trend:en,distribution:tn,hour:on,"user id":"user id","user id placeholder":"please enter the user id",period:nn,today:sn,"last 7 days":"last 7 days","last 30 days":"last 30 days","Past 30 Days":"Past 30 Days","week rank":"Past Week","month rank":"Past Month",trending:rn,manual:an,total:ln,"usage detail":"Activity",download:un,"last half a year":"last half a year","recharge record":"Transactions","recharge time":"Date",available:cn,init:dn,alipay:pn,stripe:hn,exchange:mn,"data delay":"Data may be delayed by 1 minute","model filter":"Filter",developer:fn,"total models":"{{total}} models","entered passwords differ!":"the two passwords entered are inconsistent!","register success":"register success!","password reset":"password reset","password sub title":"Please enter your email address, we will send you a password reset email","send email text":"send email","send email retry":"s retry","reset password email":"email address","reset password email placeholder":"please enter the email address!","reset password email confirm":"please enter the correct email address!","reset password email success":"password reset email sent successfully!","reset password confirm":"password reset confirm","reset password confirm desc":"submit to complete password reset","new password":"new password","get new password":"get new password","new password success":"reset password complete","back login":"back to login","new password copied":"new password has been copied to the clipboard: ",rank:gn,feature:yn,"unlimit quota":"unlimit quota","limit quota":"limit quota","advanced settings":"advanced settings","model info":"model info",price:bn,"params count":"params count","context length":"Context length","model params":"model params","param name":"param name",desc:wn,"default value":"example value",Feedback:vn,Privacy:xn,Terms:kn,"Input name":"Input","Output name":"Output","Context name":"Context","Latency name":"TTFT","Throughput name":"Throughput",features:An,Features:Sn,Endpoints:Ln,Released:In,"Throughput (TPS)":"Throughput (tok/s)",tags:Cn,types:Pn,"Model Details":"Model Details",usage:On,"try in playground":"Try in Playground","media async tasks note":"These /ai/v1 media endpoints run as async tasks. Enable Async Tasks for your account first, or task creation returns 403 async_not_enabled.","async tasks guide":"Async Tasks guide",add:Rn,"remind off":"off","remind on":"on",notice:$n,"surfing cost":"Web search","unuser title":"Let's Get You a Code","unuser desc":"Sign in or sign up to generate an App Code and unlock 10% off.","unuser btn":"Sign in","not now":"Not now","user title":"Your 10% off code is ready!","user desc":"Your App Code is now activeâcheck the pre-filled code snippet below to get started right away.","user btn":"Got it","get code":"Generate App Code","get code desc":"Integrate AIHubMix as a model provider and include your App Code in each request. Open-source apps and apps where users bring their own API key can qualify by offering AIHubMix as a provider. Closed-source apps must clearly disclose that model requests are powered by AIHubMix. AIHubMix may revoke the discount or suspend accounts that do not meet these requirements or misuse the program.","get code notice":"Sign in or sign up to generate an App Code.","app name":"App name","app url":"App URL","app name placeholder":"Please enter the app name","app url placeholder":"Please enter the app domain","apps notice":"Apps that integrate AIHubMix as the model provider are eligible for","app url tooltip":"Ensure it is your valid product domain",remark:Mn,"10% off":"10% off","learn more":"Learn More",authorize:Tn,"authorize app":"Authorize {{appName}}","authorize account login":"authorize to use your account info","permissions granted":"Permissions to be granted:","no special permissions":"No special permissions","user basic
1info":"User basic information (username, email)","user balance info":"User balance information",deny:_n,allow:En,"contact developer":"For more information, please contact the app developer","missing parameters":"Missing required parameters","app info fetch failed":"Failed to fetch app information","authorization request failed":"Authorization request failed",refresh:Nn,"column settings":"Column Settings","go generate":"Generate","Pricing Details":"Pricing","Image Generation":"Image Generation","Input Modalities":"Input Modalities","Output Modalities":"Output Modalities",Providers:Dn,Pricing:Fn,"Quick Start":"Try this model",Attributes:Un,"More Models":"More Models","API Usage Examples":"API Usage Examples","model data api":"Models API",Performance:qn,"Performance for":"Performance for","No data available":"No results","Smart Routing":"LLM Router","router hero title":"Not every request needs the biggest, priciest model","router hero sub":"Smart routing selects the best model for every request in real time â cutting costs significantly without compromising task quality. Cache-friendly by design: each session automatically sticks to the same model, so prompt caches are never lost.","router hero session":"No extra setup required: session identifiers from popular agents like Claude Code, Codex, and OpenCode are recognized automatically. For precise control over session scope, add this to your request:","router hero note":"Scores span {{groups}} major categories and {{dims}} sub-dimensions, normalized from a blend of internal evaluations and public leaderboards.","router hero doc":"API reference","router copy":"Copy","router copied":"Copied","router code sync":"Routing strategy","router code comment default":"bare auto = auto:cost_optimized (default)","router code comment strategy":"{{name}} strategy","router strat eyebrow":"Routing strategies","router strat title":"Model coverage across the four routing strategies","router default tag":"Default","router weight quality":"Quality","router weight cost":"Cost","router weight latency":"Speed","router strat cost_optimized":"Cost first","router strat cost_optimized desc":"Meets the bar, costs the least.","router strat balanced":"Balanced","router strat balanced desc":"Capability, cost and latency in balance.","router strat quality_first":"Quality first","router strat quality_first desc":"Strongest model first.","router strat latency_critical":"Latency first","router strat latency_critical desc":"Fastest response first.","router col model":"Model","router col score":"Normalized score","router col price":"Input / Output","router col latency":"Time to First Token","router best tag":"Current pick","router sort route":'Weighted by "{{name}}"',"router sort score":"Sorted by score","router sort price":"Sorted by price","router sort latency":"Sorted by Time to First Token","router source note":"Sources: internal evals and public leaderboards, jointly normalized.","router group text":"Text","router group vision":"Vision","router group code_webdev":"Web Development","router group search":"Search","router group document":"Document Analysis","router dim text_overall":"Overall","router dim text_coding":"Coding","router dim text_math":"Math","router dim text_instruction_following":"Instruction Following","router dim text_longer_query":"Long Queries","router dim text_language_chinese":"Language ⺠Chinese","router dim text_language_english":"Language ⺠English","router dim text_occupational_software_it":"Occupational ⺠Software & IT","router dim text_occupational_mathematical":"Occupational ⺠Mathematics","router dim text_occupational_legal":"Occupational ⺠Legal & Government","router dim text_occupational_medicine":"Occupational ⺠Medicine & Healthcare","router dim vision_overall":"Overall","router dim vision_ocr":"Vision Text Understanding","router dim vision_diagram":"Diagrams","router dim vision_homework":"Homework Help","router dim vision_chinese":"Chinese","router dim vision_english":"English","router dim code_webdev_overall":"Overall","router dim code_webdev_html":"HTML","router dim code_webdev_react":"React","router dim code_image_to_webdev_overall":"Image to Web","router dim search_overall":"Overall","router dim document_overall":"Overall","router card sub":"AIHubMix LLM Router","router card desc":"AIHubMix's in-house automatic model router. Not every request needs the strongest, most expensive model â drawing on internal evals and public leaderboards, we bring together a range of today's mainstream models of varying capability and route each request automatically through a small model we trained. Set model to auto and requests are dispatched to the right model based on their content, lowering cost. Currently in beta; we keep updating and improving it.","router card fee":"Charged at the actual routed model's price â routing itself is free.","router card cta":"Learn about the LLM Router","up to {{off}}% off":"up to {{off}}% off","{{off}}% off":"{{off}}% off","Uptime is the percentage of requests that succeeded over the past 72 hours. AIHubMix continuously monitors every provider and automatically retries with the next-best provider when one returns an error or responds too slowly.":"Uptime is the percentage of requests that succeeded over the past 72 hours. AIHubMix continuously monitors every provider and automatically retries with the next-best provider when one returns an error or responds too slowly.","Throughput is how fast the model writes (tokens per second, higher is better).":"Throughput is how fast the model writes (tokens per second, higher is better).","Latency is total round-trip time (lower is better).":"Latency is total round-trip time (lower is better).",Peak:Hn,"Off-peak":"Off-peak","Active hours":"Active hours","Other hours":"Other hours",Compare:jn,Comparisons:zn,"Add model":"Add model","Data snapshot":"Data snapshot",Update:Vn,Copied:Kn,"Copy link":"Copy link","requests this week":"requests this week","Pick a second model to start comparing.":"Pick a second model to start comparing.","Pick two models above, or start from one of the comparisons below.":"Select at least two models, or choose a popular comparison below.","What a comparison shows":"What a comparison shows","Every comparison puts 2 to 4 models side by side on the same objective metrics.":"Every comparison puts 2 to 4 models side by side on the same objective metrics.","Pricing per million input and output tokens, with any active discount applied.":"Pricing per million input and output tokens, with any active discount applied.","Context window and maximum output length.":"Context length and maximum output length.","Latency and throughput, as rolling averages measured on AIHubMix.":"Time to First Token and throughput, as rolling averages measured on AIHubMix.","Arena scores, where the model has been rated.":"LMArena benchmarks, where the model has been rated.","Real usage on AIHubMix: weekly requests and token trends.":"Real usage on AIHubMix: weekly requests and token trends.","A monthly cost estimate for your own request volume.":"A monthly cost estimate for your own request volume.","How it works":"How
1it works","Add models with the picker above. The URL holds your selection, so a comparison can be shared or bookmarked.":"Add models with the picker above. The URL holds your selection, so a comparison can be shared or bookmarked.","Figures are a cached snapshot; the page states when it was taken and refreshes on demand.":"Figures are a cached snapshot; the page states when it was taken and refreshes on demand.","Every model on AIHubMix is callable through one API key and one base URL, so a price you compare here is the price you actually pay.":"Every model on AIHubMix is callable through one API key and one base URL, so a price you compare here is the price you actually pay.","Specs & Pricing":"Pricing & Specifications","Input price":"Input /M","Output price":"Output /M","Cache read":"Cache read /M","Context window":"Context length","Max output":"Max output","Latency (first token)":"Time to First Token","Usage on AIHubMix":"Activity","last 3 days":"Past 3 Days","Requests / day":"Requests / day","Tokens / day":"Tokens / day","Live Performance":"Performance","Arena Scores":"LMArena Benchmarks","Cost Calculator":"Cost calculator","Estimate your monthly bill for the same workload on each model.":"Estimate your monthly bill for the same workload on each model.","Avg input tokens / request":"Avg input tokens / request","Avg output tokens / request":"Avg output tokens / request","Popular Comparisons":"Popular comparisons","Related model match-ups readers also look at.":"Related model match-ups readers also look at.","Which is cheaper":"Which is cheaper","Which responds faster?":"Which responds faster?","Compare pricing, specs, live performance and arena scores side by side. Up to 4 models.":"Compare pricing, specifications, performance, and benchmarks for up to four models.","Prices are per million tokens. Latency and throughput are rolling averages measured on AIHubMix.":"Prices are per million tokens. Time to First Token and throughput are rolling averages measured on AIHubMix.","Daily traffic served through AIHubMix â how demand for each model is trending.":"Daily traffic served through AIHubMix â how demand for each model is trending.","Measured on real AIHubMix traffic, hourly buckets. Gaps mean no traffic in that hour.":"Measured on real AIHubMix traffic, hourly buckets. Gaps mean no traffic in that hour.","LMArena ratings by capability (Bradley-Terry, commonly called Elo). Higher is better.":"LMArena ratings by capability (Bradley-Terry, commonly called Elo). Higher is better.","No published ratings for":"No published ratings for","Monthly = daily à 30. Discounted rates applied where a promotion is active.":"Monthly = daily à 30. Discounted rates applied where a promotion is active.","Promotional prices show the discounted rate; see each model page for promotion windows.":"Promotional prices show the discounted rate; see each model page for promotion windows.",Capabilities:Gn,Context:Bn,capabilityUndocumented:Wn,"Max Output":"Max output","Latency (s)":"TTFT (s)","mirror warning title":"You have been redirected to the official AIHubMix site","mirror warning desc":"{{host}} is not an official AIHubMix domain. Anything you type there â passwords, API keys, payment details â passes through whoever runs it. Our only official site is aihubmix.com.","mirror warning desc generic":"The site you came from is not an official AIHubMix domain. Anything you type there â passwords, API keys, payment details â passes through whoever runs it. Our only official site is aihubmix.com.","Not published in the catalog":"Not published in the catalog","mod text":"text","mod vision":"vision","mod audio":"audio","mod video":"video","mod file":"file","mod pdf":"PDF","Takes {{mods}}. Output modality not published.":"Takes {{mods}}. Output modality not published.","Takes {{in}}, returns {{out}}.":"Takes {{in}}, returns {{out}}.","Official spec, verified {{date}}. The gateway route is configured at {{ctx}}.":"Official spec, verified {{date}}. The gateway route is configured at {{ctx}}.","Copy model ID {{id}}":"Copy model ID {{id}}",Model:Jn,Modalities:Yn,"col context":"Context","col cache read":"Cache read","Cac
1he write":"Cache write",Throughput:Qn,Latency:Zn,Input:Xn,Output:es,"{{count}} more models_one":"{{count}} more model","{{count}} more models_other":"{{count}} more models","Daily {{noun}} for {{dev}} models over the last {{days}} days, stacked by model, up to {{top}} per day.":"Daily {{noun}} for {{dev}} models over the last {{days}} days, stacked by model, up to {{top}} per day.",tokens:ts,requests:os,"Chart legend":"Chart legend",Total:ns,Usage:ss,"Measure usage by":"Measure usage by","By tokens":"By tokens","By requests":"By requests","Last {{days}} days":"Last {{days}} days","date range to":"to",Tokens:rs,Requests:as,"Models in use":"Models in use","of {{total}}":"of {{total}}","Tokens per day, stacked by model":"Tokens per day, stacked by model","Requests per day, stacked by model":"Requests per day, stacked by model","Which models that traffic went to":"Which models that traffic went to","Share of {{total}} tokens.":"Share of {{total}} tokens.","Share of {{total}} requests.":"Share of {{total}} requests.","{{count}} models with traffic report no token counts and cannot be ranked here":"{{count}} models with traffic report no token counts and cannot be ranked here","tok missing including":", including ","tok missing and":" and ","tok missing tail":" â they are in the request view.","usage views disagree note":"The two views disagree on purpose: a model can take a large share of the calls and a small share of the tokens â many short requests â or the reverse. Which one matters depends on whether your cost is driven by call volume or by prompt length. Measured on AIHubMix over the last {{days}} days, counting the {{count}} model IDs listed on this page; traffic routed through upstream-specific IDs that are not in the public catalog is not included.",Models:is,"Model Authors":"Model Authors","{{dev}} Models":"{{dev}} Models","models unit_one":"model","models unit_other":"models","authors unit_one":"model author","authors unit_other":"model authors","General models":"General models",free:ls,"to start":"to start","General models from":"General models from","input unit":"input","Up to":"Up to","context unit":"context","Official site":"Official site","All {{count}} {{dev}} Models":"All {{count}} {{dev}} Models","Open in model list":"Open in model list",Reasoning:us,Tools:cs,"Structured output":"Structured output",Vision:ds,"1M+ context":"1M+ context","Cache discount":"Cache discount",Clear:ps,"{{shown}} of {{total}} models":"{{shown}} of {{total}} models","provider table caption":"{{dev}} models on AIHubMix with input and output modalities, context length, maximum output, price per million tokens including cache read and cache write rates, and measured throughput and latency.","Show first {{count}}":"Show first {{count}}","Show all {{count}} models":"Show all {{count}} models","provider table footnote":"Prices are USD per million tokens; cache read and cache write are the rates for prompt-cache hits and for writing a prompt into the cache. Throughput and latency are measured on AIHubMix â the same figures the model detail page shows â not vendor claims. A dash means the catalog does not publish that field for that model, which is not the same as the model not supporting it.","Common Comparisons":"Common Comparisons","{{dev}} on AIHubMix":"{{dev}} on AIHubMix","Other Model Authors":"Other Model Authors","Start calling {{dev}} in one line":"Start calling {{dev}} in one line","One key, one endpoint, {{models}} models across {{devs}} model authors.":"One key, one endpoint, {{models}} models across {{devs}} model authors.","Get API key":"Get API key","Read the docs":"Read the docs","Free models":"Free models","Free AI Models":"Free AI Models","fm lead base":"Free models are for experimenting, learning and shipping without a bill â AIHubMix covers the inference cost for all {{count}} models on this page, and every model answers all three protocols: Chat Completions, Messages and Responses","fm lead trial":". Every account starts with {{trial}} trial calls, no credit card","fm lead topup":", and a ${{usd}} top-up switches you to permanent daily quotas.","fm lead end":".","Every model":"Every model","/M input & output":"/M input & output","Updated {{date}}":"Updated {{date}}","Model authors with free models":"Model authors with free models","{{name}} models on AIHubMix":"{{name}} models on AIHubMix","Before your first top-up":"Before your first top-up","No credit card required, and trial calls never expire.":"No credit card required, and trial calls never expire.","Trial
1calls":"Trial calls","total, all free models":"total, all free models","After a one-time ${{usd}} top-up":"After a one-time ${{usd}} top-up","fm paid lane desc":"Top up once â any amount from ${{usd}} â and every free model switches to daily quotas with no expiry, reset every day.","/day unit":"/day","/min unit":"/min",Resets:hs,daily:ms,"fm tok missing":"{{count}} models with traffic report no token counts and are only in the request view.","All {{count}} Free Models":"All {{count}} Free Models","fm table caption":"All free models on AIHubMix, in catalog order, with developer, input and output modalities, context length and the rate limit each model allows on a topped-up account.","Rate limit":"Rate limit","Paid version":"Paid version","Compare {{a}} with {{b}}":"Compare {{a}} with {{b}}","vs paid":"vs paid","fm table note base":"Rate limit shows the daily and per-minute request caps for topped-up accounts. Some models carry a higher request weight â one call counts as several requests â which is why their caps are lower.","fm table note pool":" All free models share one pool of {{tokens}} tokens per day.","fm table note trial":" Before your first top-up, the {{trial}} trial calls apply instead.","fm table note tail":"Context âââ means the value is not published in the catalog. Modalities read input â output â the same fact the developer pages show; a missing output side means the catalog does not publish it, not that the model returns nothing.","How to Start":"How to Start","Create an account":"Create an account","Email or OAuth, no credit card required.":"Email or OAuth, no credit card required.","{{trial}} trial calls are available immediately.":"{{trial}} trial calls are available immediately.","Create an API key":"Create an API key","One key works for every model on the platform, free and paid alike.":"One key works for every model on the platform, free and paid alike.","Open the API keys page":"Open the API keys page","Call a free model":"Call a free model","fm step3 pre":"Point any OpenAI-compatible client â Cursor, Cline, Cherry Studio, LiteLLM â at the gateway and pick a ","fm step3 post":" model ID.","API protocol":"API protocol","Free Models on AIHubMix":"Free Models on AIHubMix","Keep Exploring":"Keep Exploring","All Models":"All Models","fm explore models desc":"The full catalog â {{count}} models across chat, image, video and audio, with per-token pricing.","Browse all models":"Browse all models","LLM Router":"LLM Router","fm router desc pre":"Fill in ","fm router desc post":" as the model ID and the gateway routes each request to the optimal model by cost and quality.","Try the router":"Try the router",Apps:fs,"fm apps desc":"Ready-to-use apps in the AIHubMix app store â and model discounts beyond the free catalog.","Browse the app store":"Browse the app store",Recommended:gs,"Switch version":"Switch version","Model versions":"Model versions","AI Model Authors":"AI Model Authors","authors index stats":"{{providers}} model authors, {{models}} models, one API key.","authors index desc":"Every model author page lists its full catalog with per-token pricing, context windows and measured throughput.","All model authors":"All model authors","calls 30d":"calls · 30d","See all model authors":"See all model authors","Retired models":"Retired models",Deprecating:ys,Retired:bs,Retirements:ws,"Model Retirements":"Model Retirements","mr lead":"Models get retired when the upstream provider shuts them down or replaces them. Everything scheduled and everything already gone is listed here, with the date calls stop working and what to move to.","scheduled for retirement":"scheduled for retirement","already retired":"already retired","Browse all {{count}} models":"Browse all {{count}} models",Active:vs,"Fully supported. No retirement date announced.":"Fully supported. No retirement date announced.","Still callable, but a retirement date is set. Migrate before that date.":"Still callable, but a retirement date is set. Migrate before that date.","No longer callable. Requests return":"No longer callable. Requests return","Filter by author":"Filter by author",Author:xs,All:ks,"Upcoming retirements":"Upcoming retirements","Still callable â migrate before the retirement date":"Still callable â migrate before the retirement date","Detail pages stay online â requests return an error":"Detail pages stay online â requests return an error","mr dash note":"â means the replacement is not published in our catalog.","No retirements for this author.":"No retirements for this author.",Status:As,Announced:Ss,"Retirement date":"Retirement date",Replacement:Ls},Is="ä¸ä¸ªæ¥å£ï¼æ 鿍¡å",Cs="æå»º AI å
±èµ¢çæ",Ps="ç¨æ·",Os="æ¸ é",Rs="å
æ¢",$s="æ¥å¿",Ms="æç设置",Ts="ç»å½",_s="注å",Es="éåºç»å½",Ns="ä¼ä¸å®å¶",Ds="æ§å¶å°",Fs="ç»è®¡åä½",Us="éç½®",qs="æè
",Hs="ç¨æ·å",js="å¯ç ",zs="æ¯",Vs="å¦",Ks="ä¿®æ¹",Gs="è系客æ",Bs="模å",Ws="è¾å
¥",Js="è¾åº",Ys="Key",Qs="ç¶æ",Zs="å·²å¯ç¨",Xs="å¯ç¨",er="å·²ç¦ç¨",tr="ç¦ç¨",or="å·²è¿æ",nr="å·²èå°½",sr="æªç¥",rr="æä½",ar="ç¼è¾",ir="å¤å¶",lr="æåºæ¹å¼",ur="第 {{start}} - {{end}} æ¡",cr="æäº¤",dr="åæ¶",pr="å
å¼",hr="æ¶è´¹",mr="管ç",fr="ç³»ç»",gr="ç±»å",yr="å
¨é¨",br="é®ç®±",wr="å·²ç»å®",vr="æ¥è¯¢",xr="éç½®",kr="æä½å¤±è´¥ï¼éå®åè³ç»å½çé¢ä¸...",Ar="åºç°é误ï¼
1第 {{count}} 次éè¯ä¸...",Sr="æ éå¶",Lr="è±è´¹",Ir="使ç¨è¶å¿",Cr="åå¸å æ¯",Pr="æ¶é´",Or="èµ·å§æ¶é´",Rr="ä»å¤©",$r="è¶å¿æ¦",Mr="æå¨éæ©",Tr="æ»",_r="Excel",Er="å¯ç¨",Nr="åå§å",Dr="æ¯ä»å®",Fr="Stripe",Ur="å
æ¢",qr="å¼åè
",Hr="æå",jr="æ ç¾",zr="ä»·æ ¼",Vr="æè¿°",Kr="åé¦",Gr="éç§",Br="æ¡æ¬¾",Wr="ç¹æ§",Jr="æ ç¾",Yr="ç±»å",Qr="API ææ¡£",Zr="æ·»å ",Xr="å
¬å",ea="夿³¨",ta="ææ",oa="æç»",na="ææ",sa="å·æ°",ra="æä¾å",aa="å®ä»·",ia="模å屿§",la="æ§è½",ua="åæ°",ca="ç±»å",da="åå¼",pa="说æ",ha="å·²åºå¼",ma="æªéªè¯",fa="é«å³°æ¶æ®µ",ga="对æ¯",ya="模å对æ¯",ba="æ´æ°",wa="å·²å¤å¶",va="è½å",xa="ä¸ä¸æ",ka="ååæªæ æ³¨",Aa="模å",Sa="模æ",La="ååé",Ia="å叿¶é´",Ca="å»¶è¿",Pa="è¾å
¥",Oa="è¾åº",Ra="token",$a="请æ±",Ma="æ»è®¡",Ta="ç¨é",_a="Token",Ea="è¯·æ±æ°",Na="模å广åº",Da="å
è´¹",Fa="æ¨ç",Ua="å·¥å
·è°ç¨",qa="è§è§",Ha="æ¸
é¤",ja="éç½®å¨æ",za="æ¯å¤©",Va="åºç¨",Ka="æ¨è",Ga="å³å°ä¸çº¿",Ba="å·²ä¸çº¿",Wa="ä¸çº¿å
¬ç¤º",Ja="å¨å®",Ya="åå",Qa="å
¨é¨",Za="ç¶æ",Xa="å
¬ç¤ºæ¥",ei="æ¿ä»£æ¨¡å",oe={slogan:Is,"site Name":"AI HUB MIX","slogan desc 1":"ä¸ç«å¼å¯¹æ¥åç§å¤§æ¨¡åã让å¼åæ´æºè½ãæ´é«æã","start to use":"ç«å³ä½éª","doc entrance":"ææ¡£","feature 1":"ä¸»æµæ¨¡åå
¨è¦ç","feature 1 desc":"è¿æ¥å
æ¬ ChatGPTãClaudeãGeminiãDeepSeekãQwen å¨å
çææä¸»æµ AI 模åãå
¨é¨ä»¥ç»ä¸æ ¼å¼æä¾ã","price entrance":"å
¨é¨æ¨¡å >","feature 2":"ç»ä¸æ¥å£ï¼æ¨¡åè½»æ¾å","feature 2 desc":"ä½ä¸º AzureãAWSãGoogle Cloud ç宿¹åä½ä¼ä¼´ï¼æä»¬éæå®æ¹ API å䏿æå¡ï¼æä¾ä¼ä¸çº§å¯é æ§åæ éååéã","feature 3":"æ éå¹¶åï¼æ°¸è¿å¨çº¿","feature 3 desc":"æå»ºå¨è·¨è¡ä¸éªè¯ç¨³å®ç髿§è½åºç¡è®¾æ½ä¹ä¸ã","Model usage":"æ¨¡åæ¦å",Partner:Cs,"Featured Apps":"æå»º AI å
±èµ¢çæ","Partner desc":"ç²¾éçæä¼ä¼´åºç¨ï¼ç«äº«æææ¨¡åï¼é¤ claude ç³»åæ¨¡åå¤ï¼ 10% 伿 ââæç»æ¥å
¥ä¸ï¼æ¬¢è¿æä¸ºä¸ä¸ä¸ªï¼","Partner off":"è·å 10% 伿 ","Earn with Your App":"éæ Aihubmixï¼ç«äº« 10% 伿 ",User:Ps,Channel:Os,Redemption:Rs,"Usage statistics":"ç¨é","Balance/Top-up":"å
å¼","API keys":"ç§é¥",Log:$s,Setting:Ms,Login:Ts,Register:_s,"Signed in as":"å½åç»å½è´¦å·",Logout:Es,"Model/Price"
1:"模å广åº","App Store":"åºç¨å¸åº",Enterprise:Ns,Console:Ds,"Usage tutorial":"ææ¡£",Unit:Fs,"call times":"è¯·æ±æ¬¡æ°","Last week":"è¿å»ä¸å¨","Last month":"è¿å»ä¸æ",Reset:Us,"forgot password?":"å¿è®°å¯ç ?","no account?":"没æè´¦å·?","had account?":"å·²æè´¦æ·ï¼",OR:qs,"Sign in with Github":"ä½¿ç¨ Github ç»å½","Sign in with Google":"ä½¿ç¨ Google ç»å½",username:Hs,"username placeholder":"请è¾å
¥ç¨æ·åï¼æç3ä½ï¼æé¿12ä½!",password:js,"password placeholder":"请è¾å
¥å¯ç ï¼æç8ä½ï¼æé¿20ä½","sign in success notice":"ç»å½æåï¼","sign in failed notice":"æªç»å½æç»å½å·²è¿æï¼è¯·éæ°ç»å½ï¼","reset password notice":"请ç«å»ä¿®æ¹é»è®¤å¯ç ï¼","typeof amount error notice":"é¢åº¦åªæ¥åæ£æ´æ°ï¼","pay failed notice":"æ¯ä»å¤±è´¥ï¼","pay success notice":"æ¯ä»æåï¼","order close notice":"订åå·²å
³éï¼","account balance":"ä½é¢","balance remind":"ä½é¢æé","balance remind desc":"å¼å¯é®ç®±çæ§ï¼èµ¶èµ°é¢åº¦ç¦è","close remind":"å
³éä½é¢æé",yes:zs,no:Vs,modify:Ks,"close remind notice":"确认ä¸åæ¥æ¶ä½é¢æéé®ä»¶ï¼","balance remind notice":"é¢åº¦ä½äº ${{threshold}} æ¶ï¼éç¥ {{email}}","set balance remind":"设置ä½é¢æé","remind threshold":"ä½é¢éå¼","remind threshold placeholder":"请è¾å
¥æ£ç¡®çéé¢","remind email":"éç¥é®ç®±","remind email placeholder":"请è¾å
¥é®ç®±å°å","recharge online":"å¨çº¿å
å¼","recharge quota":"å
å¼é¢åº¦","custom recharge":"èªå®ä¹","custom recharge placeholder":"æä½1å
ï¼ä»
æ¯ææ´æ°","recharge amount placeholder":"请è¾å
¥æ´æ°éé¢","Payable amount":"ç»è´¦ï¼","alipay pay":"æ¯ä»å®æ¯ä»","alipay pay notice":"æ¯ä»å®æ«ä¸æ«å®æä»æ¬¾","stripe pay":"Stripeæ¯ä»",invoice:Gs,"quota notice":"éè¦å票 / ä¼ä¸å®å¶","exchange quota":"å
æ¢é¢åº¦","exchange code":"å
æ¢ç ","exchange success notice":"å
æ¢æåï¼","exchange code placeholder":"请è¾å
¥å
å¼å
æ¢ç ","exchange code tooltip":"æ¯ä»æååï¼ä¸è¦ç¦»å¼å½å页é¢ï¼çå¾
10ç§å·¦å³ï¼é¡µé¢å°±ä¼å±å¡å¯å³æ¯å
æ¢ç ",model:Bs,input:Ws,output:Js,"search model":"æç´¢æ¨¡å","model price table":"åå°æ£è´¹è¡¨","operation success":"æä½æå!","key name":"Key åç§°",key:Ys,status:Qs,enabled:Zs,enable:Xs,disabled:er,disable:tr,expired:or,exhausted:nr,uncertain:sr,"used quota":"å·²ç¨","remain quota":"å©ä½é¢åº¦","created time":"å建æ¶é´","expired time":"è¿ææ¶é´","expired time placeholder":"é»è®¤ä¸éå¶","invalid time format":"è¿ææ¶é´æ ¼å¼é误ï¼",operation:rr,edit:ar,delete:"å é¤","add key":"å建 Key","delete confirm":"å 餿°æ®","delete noice":"ä½ ç¡®è®¤å é¤å称为 {{name}}
1 çkey?",copy:ir,"copy success":"å¤å¶æå!","my key":"æç Key","go recharge":"å»å å¼","key name placeholder":"请è¾å ¥",sort:lr,"sort by remain quota":"æå©ä½é¢åº¦","sort by used quota":"æå·²ç¨é¢åº¦",pagination:ur,"create key":"å建Key","create key success":"å建Keyæå, ç¹å»å¤å¶è·åKeyï¼","update key":"æ´æ°Key","update key success":"æ´æ°Keyæåï¼","never expired":"æ°¸ä¸","one month later expired":"ä¸ä¸ªæåè¿æ","one day later expired":"ä¸å¤©åè¿æ","one hour later expired":"ä¸å°æ¶åè¿æ","one minute later expired":"ä¸åéåè¿æ","quota setting notice":"注æï¼æ°æå»ºè®®éæ©æ éé¢åº¦ï¼Keyçé¢åº¦ä» ç¨äºéå¶Keyæ¬èº«çæå¤§é¢åº¦ä½¿ç¨éï¼å®é ç使ç¨åå°è´¦æ·çå©ä½é¢åº¦éå¶ã","quota limit":"é¢åº¦éå¶","quota limit placeholder":"请è¾å ¥éå¶é¢åº¦","cancel quote unlimited":"åæ¶æ éé¢åº¦","set quote unlimited":"设为æ éé¢åº¦","higher option":"æ¤é«çº§éé¡¹ï¼æ°æå¿æä½","model range":"模åèå´","model range placeholder":"é»è®¤ä¸éå¶","model range tooltip":"éå¶å½åKeyå¯ç¨ç模å","IP limit":"IPéå¶","IP limit placeholder":"å¦ï¼192.168.0.0/24","IP limit tooltip":"ç¨äºéå¶ç¹å®çç¨æ·IPï¼æ°æä¸å»ºè®®è®¾ç½®",submit:cr,cancel:dr,"log detail":"æ¥å¿æç»",recharge:pr,consume:hr,manage:mr,system:fr,type:gr,all:yr,"max nums":"Excel(ä¸é 10000)","model name":"模ååç§°","model price":"åä»·","cached tokens":"ç¼å Tokens","quota change":"é¢åº¦åå¨","start time":"å¼å§æ¶é´","end time":"ç»ææ¶é´","personal setting":"æç","user name":"ç¨æ·å","display name":"æ¾ç¤ºåç§°",email:br,"bind email address":"ç»å®é®ç®±å°å","bind email address placeholder":"请è¾å ¥é®ç®±å°å","go bind":"ç»å®",binded:wr,"go update":"æ´æ°","send captcha":"è·åéªè¯ç ","captcha placeholder":"请è¾å ¥éªè¯ç ","log off account":"注éè´¦å·","go log off":"注é","log off notice":"æ¨æ£å¨å é¤èªå·±ç叿·ï¼å°æ¸ ç©ºæææ°æ®ä¸ä¸å¯æ¢å¤","log off confirm":"è¾å ¥ä½ çè´¦æ·å {{username}} 以确认å é¤","account name placeholder":"请è¾å ¥è´¦æ·å","token copied":"令çå·²é置并已å¤å¶å°åªè´´æ¿","invite code copied":"éè¯·é¾æ¥å·²å¤å¶å°åªåæ¿","system token copied":"ç³»ç»ä»¤çå·²å¤å¶å°åªè´´æ¿","log off confirm notice":"请è¾å ¥ä½ çè´¦æ·å以确认å é¤ï¼","log off success":"éåºæåï¼","bind wechat success":"ç»å®å¾®ä¿¡æåï¼","captcha send success":"éªè¯ç åéæåï¼è¯·æ£æ¥é®ç®±","bind email success":"ç»å®é®ç®±æåï¼","common setting":"éç¨è®¾ç½®","common setting desc":"注æï¼æ¤å¤çæç令çç¨äºç³»ç»ç®¡çï¼èéç¨äºè¯·æ± OpenAI ç¸å ³çæå¡ï¼è¯·ç¥æã","generate token":"çæç³»ç»è®¿é®ä»¤ç","copy invite code":"éè¯·é¾æ¥","account setting":"è´¦æ·è®¾ç½®","avaliable models":"å¯ç¨æ¨¡å","update user":"æ´æ°ç¨æ·ä¿¡æ¯","user update success":"ç¨æ·ä¿¡æ¯æ´æ°æåï¼","new username":"æ°ç¨æ·å","new username placeholder":"请è¾å ¥æ°ç¨æ·åï¼æç3ä½,æé¿12ä½","display name placeholder":"请è¾å ¥æ¾ç¤ºåç§°","binded Github account":"å·²ç»å®ç Github è´¦å·","binded Google account":"å·²ç»å®ç Google è´¦å·","binded email account":"å·²ç»å®çé®ç®±è´¦å·","binded account placeholder":"æ¤é¡¹åªè¯»ï¼éè¦ç¨æ·éè¿ä¸ªäººè®¾ç½®é¡µé¢çç¸å ³ç»å®æé®è¿è¡ç»å®ï¼ä¸å¯ç´æ¥ä¿®æ¹",search:vr,reset:xr,"page not exist":"页é¢ä¸åå¨","page not exist desc":"è¯·æ£æ¥ä½ çæµè§å¨å°åæ¯å¦æ£ç¡®","back to home":"è¿åé¦é¡µ","no permission":"没ææéè®¿é®æ¤é¡µé¢","no permission desc":"请è系管çåå¼éæé","bind success":"ç»å®æå","login success":"ç»å½æå",redirecting:kr,retrying:Ar,"params error":"åæ°å¼å¸¸","connect server error":"æ æ³æ£å¸¸è¿æ¥è³æå¡å¨ï¼",unlimited:Sr,"statistics title":"API 使ç¨ç»è®¡",expense:Lr,"expense desc":"累计æ¶è´¹éé¢","usage token":"Token æ¶è","usage token desc":"è¾å ¥+è¾åºTokens","call times desc":"APIè°ç¨æ»æ¬¡æ°",trend:Ir,distribution:Cr,hour:Pr,"user id":"ç¨æ·ID","user id placeholder":"请è¾å ¥ç¨æ·ID",period:Or,today:Rr,"last 7 days":"æè¿ä¸å¨","last 30 days":"æè¿ä¸æ","week rank":"卿è¡","month rank":"ææè¡",trending:$r,manual:Mr,total:Tr,"usage detail":"è°ç¨è®°å½",download:_r,"last half a year":"æè¿åå¹´","recharge record":"å å¼è®°å½","recharge time":"å 弿¶é´",available:Er,init:Nr,alipay:Dr,stripe:Fr,exchange:Ur,"data delay":"æ°æ®å¯è½æ1åéå»¶è¿","model filter":"çé",developer:qr,"total models":"å ¨é¨ï¼{{total}} 模å","entered passwords differ!":"两次è¾å ¥çå¯ç ä¸ä¸è´ï¼","register success":"注åæåï¼","password reset":"å¯ç éç½®","password sub title":"请è¾å ¥æ¨çé®ç®±å°åï¼æä»¬å°åéä¸å°éç½®å¯ç çé®ä»¶","send email text":"åéé®ä»¶","send email retry":"s åéè¯","reset password email":"é®ç®±å°å","reset password email placeholder":"请è¾å ¥é®ç®±å°å!","reset password email confirm":"请è¾å ¥æ£ç¡®çé®ç®±å°å!","reset password email success":"éç½®é®ä»¶åéæåï¼è¯·æ£æ¥é®ç®±ï¼","reset password confirm":"å¯ç é置确认","reset password confirm desc":"æäº¤å®æå¯ç éç½®","new password":"æ°å¯ç ","get new password":"è·åæ°å¯ç ","new password success":"å¯ç éç½®å®æ","back login":"è¿åç»å½","new password copied":"æ°å¯ç å·²å¤å¶å°åªè´´æ¿ï¼",rank:Hr,feature:jr,"unlimit quota":"æ éé¢åº¦","limit quota":"éå¶é¢åº¦","advanced settings":"é«çº§è®¾ç½®","model info":"模åä¿¡æ¯",price:zr,"params count":"åæ°é","context length":"ä¸ä¸æé¿åº¦","model params":"模ååæ°","param name":"åæ°å",desc:Vr,"default value":"示ä¾å¼",Feedback:Kr,Privacy:Gr,Terms:Br,"Input name":"è¾å ¥","Output name":"è¾åº","Context name":"ä¸ä¸æ","Latency name":"å»¶è¿","Throughput name":"ååç",features:Wr,tags:Jr,types:Yr,"Model Details":"模å详æ ",usage:Qr,"try in playground":"å¨ Playground è¯ç¨","media async tasks note":"è¿äº /ai/v1 åªä½æ¥å£æå¼æ¥ä»»å¡æ§è¡ï¼è¯·å 为账å·å¼éã弿¥ä»»å¡ãï¼å¦åå建任å¡ä¼è¿å 403 async_not_enabledã","async tasks guide":"弿¥ä»»å¡ææ¡£",add:Zr,"remind off":"å ³é","remind on":"å¼å¯",notice:Xr,"surfing cost":"æç´¢è´¹ç¨","unuser title":"çæä¸å± Code","unuser desc":"请ç»å½ææ³¨åï¼çæä¸å± Code å¹¶è§£é 10% 伿 ","unuser btn":"å»ç»å½","not now":"æä¸éè¦","user title":"ä½ ç 10% 伿 ç 已就绪ï¼","user desc":"ä¸å±æ¨èç å·²æ¿æ´»ï¼ä»£ç 示ä¾å·²èªå¨å¡«å ãç°å¨å°±ç¨ä¸æ¹ä»£ç å¿«éæ¥å ¥å§ã","user btn":"ç¥éäº","get code":"è·å Code","get code desc":`1. å¨ä½ çåºç¨ä¸éæ AIhubmix ä½ä¸ºæ¨¡åä¾åºåï¼å¹¶å¨è¯·æ±å¤´ä¸å¢å åºç¨ Codeï¼ 22. è·å¾ 10% 伿 æ¡ä»¶ï¼å¼æºæè éè¦ç¨æ·èªè¡å¡«å模å key çåºç¨ï¼åªéè¦æ AIhubmix ä½ä¸ºæ¨¡åä¾åºåï¼ç¨æ·ç´æ¥å¡«å key å³å¯ä½¿ç¨ï¼
33. éæºé¡¹ç®åªéå¨åºç¨ä¸æè¯´ææ¨¡åæä¾æ¥èª AIhubmix å³å¯ï¼ 44. AIhubmix 坹伿 æ´»å¨ææç»è§£éæï¼ææå¯¹ä¸ç¬¦åæ¡ä»¶çåºç¨åæ¶ä¼æ æå¯¹æ¶æé»æ¼æ´çè´¦æ·è¿è¡å°ç¦ã`,"get code notice":"请ç»å½ææ³¨åï¼çæä¸å± Code å¹¶è§£é 10% 伿 ","app name":"åºç¨åç§°","app url":"åºç¨åå","app name placeholder":"请è¾å ¥åºç¨åç§°","app url placeholder":"请è¾å ¥åºç¨åå","apps notice":"å·²éæ AIHubmix 为模åä¾åºåï¼æææ¨¡åï¼é¤ claude ç³»åæ¨¡åå¤ï¼è¯·æ±è®¡è´¹","app url tooltip":"ç¡®ä¿æ¯æ¨çææäº§ååå",remark:ea,"10% off":"10% 伿 ","learn more":"æ´å¤è¯¦æ ",authorize:ta,"authorize app":"ææ {{appName}}","authorize account login":"ææä½¿ç¨ä½ çå¸å·ä¿¡æ¯","permissions granted":"è·å¾ä»¥ä¸æéï¼","no special permissions":"æ ç¹æ®æé","user basic info":"ç¨æ·åºæ¬ä¿¡æ¯ï¼ç¨æ·åãé®ç®±ï¼","user balance info":"ç¨æ·ä½é¢ä¿¡æ¯",deny:oa,allow:na,"contact developer":"æ´å¤ä¿¡æ¯è¯·èç³»åºç¨å¼åè ","missing parameters":"缺å°å¿ è¦åæ°","app info fetch failed":"åºç¨ä¿¡æ¯è·å失败","authorization request failed":"ææè¯·æ±å¤±è´¥",refresh:sa,"column settings":"å设置","go generate":"çæ","Pricing Details":"ä»·æ ¼è¯¦æ ","Image Generation":"å¾åçæ","Input Modalities":"è¾å ¥æ¨¡æ","Output Modalities":"è¾åºæ¨¡æ",Providers:ra,Pricing:aa,"Quick Start":"å¿«éå¼å§",Attributes:ia,"More Models":"æ´å¤æ¨¡å","API Usage Examples":"æ¥å£è°ç¨ç¤ºä¾","model data api":"æ¨¡åæ°æ®æ¥å£",Performance:la,"Performance for":"æ§è½å¯¹æ¯","No data available":"ææ æ°æ®","Smart Routing":"æºè½è·¯ç±","router hero title":"并䏿¯æ¯ä¸æ¬¡è¯·æ±ï¼é½éè¦æå¼ºæè´µç模å","router hero sub":"æºè½è·¯ç±ä¸ºæ¯ä¸ªè¯·æ±å®æ¶éåºæä½³æ¨¡åï¼å¨ä¸å½±åä»»å¡è´¨éçåæä¸å¤§å¹ é使æ¬ï¼æ¨¡åç¼åæ¯æï¼åä¸ä¼è¯èªå¨ä¿æå䏿¨¡åï¼é¿å ç¼å丢失ã","router hero session":"æ éé¢å¤æ¹é ï¼Claude CodeãCodexãOpenCode çä¸»æµ Agent çä¼è¯æ è¯ä¼è¢«èªå¨è¯å«ãéè¦ç²¾ç¡®æ§å¶ä¼è¯èå´æ¶ï¼å¯å¨è¯·æ±ä¸æ·»å ï¼","router hero note":"è¯åè¦ç {{groups}} 大类ã{{dims}} 个åç»´åº¦ï¼æ¥èªå 鍿µè¯ä¸å¤é¨å ¬å¼æ¦åç综åå½ä¸åã","router hero doc":"æ¥å£ææ¡£","router copy":"å¤å¶","router copied":"å·²å¤å¶","router code sync":"è·¯ç±çç¥","router code comment default":"ä¸å¸¦åç¼ = auto:cost_optimizedï¼é»è®¤ï¼","router code comment strategy":"çç¥ï¼{{name}}","router strat eyebrow":"è·¯ç±çç¥","router strat title":"å大路ç±çç¥å¯¹åºç模åèå´","router default tag":"é»è®¤","router weight quality":"è½å","router weight cost":"ææ¬","router weight latency":"å»¶è¿","router strat cost_optimized":"ææ¬ä¼å ","router strat cost_optimized desc":"è½åè¾¾æ å°±éæä¾¿å®ã","router strat balanced":"åè¡¡","router strat balanced desc":"è½å / ææ¬ / å»¶è¿å ¼é¡¾ã","router strat quality_first":"è´¨éä¼å ","router strat quality_first desc":"ä¼å éè½åæå¼ºã","router strat latency_critical":"é度ä¼å ","router strat latency_critical desc":"ä¼å éååºæå¿«ã","router col model":"模å","router col score":"å½ä¸ååæ°","router col price":"è¾å ¥ / è¾åºä»·æ ¼","router col latency":"é¦åå»¶è¿","router best tag":"å½åé¦é","router sort route":"æã{{name}}ãçç¥å ææåº","router sort score":"æåæ°æåº","router sort price":"æä»·æ ¼æåº","router sort latency":"æå»¶è¿æåº","router source note":"æ°æ®æ¥æºï¼å 鍿µè¯ä¸å¤é¨å ¬å¼æ¦åï¼ç»¼åå½ä¸åã","router group text":"ææ¬","router group vision":"è§è§","router group code_webdev":"Web å¼å","router group search":"èç½æç´¢","router group document":"ææ¡£åæ","router dim text_overall":"æ»ä½","router dim text_coding":"ç¼ç¨","router dim text_math":"æ°å¦","router dim text_instruction_following":"æä»¤éµå¾ª","router dim text_longer_query":"é¿æ¥è¯¢","router dim text_language_chinese":"è¯è¨ âº ä¸æ","router dim text_language_english":"è¯è¨ âº è±æ","router dim text_occupational_software_it":"èä¸ âº è½¯ä»¶ / IT","router dim text_occupational_mathematical":"èä¸ âº æ°ç","router dim text_occupational_legal":"èä¸ âº æ³å¾ / æ¿
4å¡","router dim text_occupational_medicine":"èä¸ âº å»ç / å¥åº·","router dim vision_overall":"æ»ä½","router dim vision_ocr":"è§è§æåçè§£","router dim vision_diagram":"å¾è¡¨","router dim vision_homework":"ä½ä¸","router dim vision_chinese":"䏿","router dim vision_english":"è±æ","router dim code_webdev_overall":"æ»ä½","router dim code_webdev_html":"HTML","router dim code_webdev_react":"React","router dim code_image_to_webdev_overall":"å¾å转 Web","router dim search_overall":"æ»ä½","router dim document_overall":"æ»ä½","router card sub":"AIHubMix æºè½è·¯ç±","router card desc":"AIHubmix èªç çæ¨¡åèªå¨è·¯ç±å¨ãæä»¬è®¤ä¸ºä¸æ¯ææè¯·æ±é½éè¦æå¼ºãæè´µç模åââç½å
³ç»¼åå
鍿µè¯ä¸å
¬å¼æ¦åï¼è¦çå½å䏿¹ä¸»æµãè½ååå¼ç模åï¼éè¿æä»¬è®ç»çå°æ¨¡åè¿è¡èªå¨è·¯ç±ãè¯·æ±æ¶æ model 填为 autoï¼å³å¯æè¯·æ±å
容èªå¨åé
åéçæ¨¡åï¼éä½è¯·æ±ææ¬ãç®å为 beta çæ¬ï¼æä»¬ä¼æç»æ´æ°ä¼åã","router card fee":"æå®é
å½ä¸æ¨¡åçåä»·è®¡è´¹ï¼æºè½è·¯ç±æ¬èº«ä¸é¢å¤æ¶è´¹ã","router card cta":"äºè§£æºè½è·¯ç±","Request Parameters":"请æ±åæ°",Parameter:ua,Type:ca,Values:da,Description:pa,Deprecated:ha,"Not supported on this model":"该模åä¸ä¸æ¯æ",Unverified:ma,"up to {{off}}% off":"æé«ç«å {{off}}%","{{off}}% off":"ç«å {{off}}%","Uptime is the percentage of requests that succeeded over the past 72 hours. AIHubMix continuously monitors every provider and automatically retries with the next-best provider when one returns an error or responds too slowly.":"Uptime æè¿å» 72 å°æ¶å
è¯·æ±æåçç¾åæ¯ãAIHubMix æç»çæ§æ¯ä¸ªä¾åºåï¼å½æä¸ªä¾åºåè¿åé误æååºè¿æ
¢æ¶ï¼ä¼èªå¨åæ¢å°æ¬¡ä¼ä¾åºåéè¯ã","Throughput is how fast the model writes (tokens per second, higher is better).":"Throughput ææ¨¡åçè¾åºéåº¦ï¼æ¯ç§ token æ°ï¼è¶é«è¶å¥½ï¼ã","Latency is total round-trip time (lower is better).":"Latency æè¯·æ±çæ»å¾è¿èæ¶ï¼è¶ä½è¶å¥½ï¼ã",Peak:fa,"Off-peak":"ç©ºé²æ¶æ®µ","Active hours":"çææ¶æ®µ","Other hours":"å
¶ä½æ¶æ®µ",Compare:ga,Comparisons:ya,"Add model":"æ·»å æ¨¡å","Data snapshot":"æ°æ®å¿«ç
§",Update:ba,Copied:wa,"Copy link":"å¤å¶é¾æ¥","requests this week":"次æ¬å¨è°ç¨","Pick a second model to start comparing.":"éæ©ç¬¬äºä¸ªæ¨¡åå¼å§å¯¹æ¯ã","Pick two models above, or start from one of the comparisons below.":"å¨ä¸æ¹éæ©ä¸¤ä¸ªæ¨¡åï¼æä»ä¸é¢ççé¨å¯¹æ¯å¼å§ã","What a comparison shows":"对æ¯é¡µå±ç¤ºä»ä¹","Every comparison puts 2 to 4 models side by side on the same objective metrics.":"æ¯ä¸ªå¯¹æ¯æ 2 å° 4 ä¸ªæ¨¡åæ¾å¨åä¸ç»å®¢è§ææ ä¸å¹¶æå±ç¤ºã","Pricing per million input and output tokens, with any active discount applied.":"æ¯ç¾ä¸è¾å
¥ / è¾åº token çä»·æ ¼ï¼å·²è®¡å
¥æ£å¨çæçææ£ã","Context window and maximum output length.":"ä¸ä¸æçªå£ä¸æå¤§è¾åºé¿åº¦ã","Latency and throughput, as rolling averages measured on AIHubMix.":"å»¶è¿ä¸ååï¼å AIHubMix 宿µçæ»å¨å¹³åå¼ã","Arena scores, where the model has been rated.":"Arena æ¦ååï¼è¯¥æ¨¡å已被è¯åæ¶å±ç¤ºï¼ã","Real usage on AIHubMix: weekly requests and token trends.":"AIHubMix ä¸ççå®ç¨éï¼å¨è°ç¨æ¬¡æ°ä¸ token è¶å¿ã","A monthly cost estimate for your own request volume.":"æä½ èªå·±ç请æ±éä¼°ç®çæåº¦ææ¬ã","How it works":"æä¹ç¨","Add models with the picker above. The URL holds your selection, so a comparison can be shared or bookmarked.":"ç¨ä¸æ¹éæ©å¨æ·»å 模åãURL ä¼è®°ä½ä½ çéæ©ï¼å¯¹æ¯ç»æå¯ä»¥ç´æ¥åäº«ææ¶èã","Figures are a cached snapshot; the page states when it was taken and refreshes on demand.":"页颿°å¼æ¯ç¼åå¿«ç
§ï¼é¡µå
æ æ³¨äºå¿«ç
§æ¶é´ï¼å¯éæ¶æå¨å·æ°ä¸ºææ°æ°æ®ã","Every model on AIHubMix is callable through one API key and one base URL, so a price you compare here is the price you actually pay.":"AIHubMix ä¸æææ¨¡åå
±ç¨ä¸ä¸ª API key åä¸ä¸ª base URLï¼å æ¤è¿éæ¯åºæ¥çä»·æ ¼å°±æ¯ä½ å®é
æ¯ä»çä»·æ ¼ã","Specs & Pricing":"è§æ ¼ä¸ä»·æ ¼","Input price":"è¾å
¥ä»·æ ¼","Output price":"è¾åºä»·æ ¼","Cache read":"ç¼å读å","Context window":"ä¸ä¸æçªå£","Max output":"æå¤§è¾åº","Latency (first token)":"é¦åå»¶è¿","Usage on AIHubMix":"AIHubMix ç¨é","last 3 days":"è¿ 3 天","Requests / day":"æ¯æ¥è°ç¨æ¬¡æ°","Tokens / day":"æ¯æ¥ Token ç¨é","Live Performance":"宿¶æ§è½","Arena Scores":"Arena è¯å","Cost Calculator":"ææ¬ä¼°ç®","Estimate your monthly bill for the same workload on each model.":"ä¼°ç®åä¸å·¥ä½è´è½½å¨å模åä¸çæ¯æè´¹ç¨ã","Avg input tokens / request":"å¹³åæ¯æ¬¡è¾å
¥ Token","Avg output tokens / request":"å¹³åæ¯æ¬¡è¾åº Token","Popular Comparisons":"çé¨å¯¹æ¯","Related model match-ups readers also look at.":"大家ä¹å¨ççæ¨¡å对æ¯ç»åã","Which is cheaper":"åªä¸ªæ´ä¾¿å®","Which responds faster?":"åªä¸ªååºæ´å¿«ï¼","Compare pricing, specs, live performance and arena scores side by side. Up to 4 models.":"å¹¶æå¯¹æ¯ä»·æ ¼ãè§æ ¼ã宿¶æ§è½ä¸ Arena è¯åï¼æå¤ 4 个模åã","Prices are per million tokens. Latency and throughput are rolling averages measured on AIHubMix.":"ä»·æ ¼ææ¯ç¾ä¸ Token 计ãå»¶è¿ä¸åå为 AIHubMix 宿µæ»å¨åå¼ã","Daily traffic served through AIHubMix â how demand for each model is trending.":"AIHubMix æ¯æ¥ç宿µéââ忍¡åéæ±è¶å¿ã","Measured on real AIHubMix traffic, hourly buckets. Gaps mean no traffic in that hour.":"åºäº AIHubMix ç宿µéï¼å°æ¶ç²åº¦ï¼æçº¿è¡¨ç¤ºè¯¥å°æ¶æ æµéã","LMArena ratings by capability (Bradley-Terry, commonly called Elo). Higher is better.":"æè½å维度ç LMArena è¯åï¼Bradley-Terryï¼ä¿ç§° Eloï¼ï¼åæ°è¶é«è¶å¥½ã","No published ratings for":"ææ æ¦åæ°æ®ï¼","Monthly = daily à 30. Discounted rates applied where a promotion is active.":"æè´¹ç¨ = æ¥ç¨é à 30ï¼ä¿éçææ¶ææå价计ç®ã","Promotional prices show the discounted rate; see each model page for promotion windows.":"ä¿é价为æåä»·ï¼ä¿éæ¶æ®µè§å模å详æ
页ã",Capabilities:va,Context:xa,capabilityUndocumented:ka,"Max Output":"æå¤§è¾åº","mirror warning title":"å·²ä¸ºä½ è·³è½¬å° AIHubMix 宿¹ç«ç¹","mirror warning desc":"{{host}}
4 䏿¯ AIHubMix ç宿¹ååãå¨é£éè¾å
¥çä»»ä½å
容ââå¯ç ãAPI å¯é¥ãæ¯ä»ä¿¡æ¯ââé½ä¼ç»è¿å¯¹æ¹çæå¡å¨ãæä»¬å¯ä¸ç宿¹ç«ç¹æ¯ aihubmix.comã","mirror warning desc generic":"ä½ æ¥èªçç«ç¹ä¸æ¯ AIHubMix ç宿¹ååãå¨é£éè¾å
¥çä»»ä½å
容ââå¯ç ãAPI å¯é¥ãæ¯ä»ä¿¡æ¯ââé½ä¼ç»è¿å¯¹æ¹çæå¡å¨ãæä»¬å¯ä¸ç宿¹ç«ç¹æ¯ aihubmix.comã","Not published in the catalog":"ç®å½ä¸æªå
¬å¸è¯¥å¼","mod text":"ææ¬","mod vision":"è§è§","mod audio":"é³é¢","mod video":"è§é¢","mod file":"æä»¶","mod pdf":"PDF","Takes {{mods}}. Output modality not published.":"è¾å
¥ {{mods}}ãè¾åºæ¨¡ææªå
¬å¸ã","Takes {{in}}, returns {{out}}.":"è¾å
¥ {{in}}ï¼è¾åº {{out}}ã","Official spec, verified {{date}}. The gateway route is configured at {{ctx}}.":"宿¹è§æ ¼ï¼{{date}} æ ¸éªãç½å
³è·¯ç±é
置为 {{ctx}}ã","Copy model ID {{id}}":"å¤å¶æ¨¡å ID {{id}}",Model:Aa,Modalities:Sa,"col context":"ä¸ä¸æ","col cache read":"ç¼å读","Cache write":"ç¼åå",Throughput:La,Released:Ia,Latency:Ca,Input:Pa,Output:Oa,"{{count}} more models_other":"å
¶ä½ {{count}} 个模å","Daily {{noun}} for {{dev}} models over the last {{days}} days, stacked by model, up to {{top}} per day.":"{{dev}} 模åè¿ {{days}} å¤©çæ¯æ¥{{noun}}ï¼ææ¨¡åå å ï¼ï¼åæ¥æé« {{top}}ã",tokens:Ra,requests:$a,"Chart legend":"å¾ä¾",Total:Ma,Usage:Ta,"Measure usage by":"ç¨éç»è®¡ç»´åº¦","By tokens":"æ token","By requests":"æè¯·æ±æ°","Last {{days}} days":"è¿ {{days}} 天","date range to":"è³",Tokens:_a,Requests:Ea,"Models in use":"å¨ç¨æ¨¡å","of {{total}}":"/ å
± {{total}} 个","Tokens per day, stacked by model":"æ¯æ¥ tokenï¼ææ¨¡åå å ï¼","Requests per day, stacked by model":"æ¯æ¥è¯·æ±æ°ï¼ææ¨¡åå å ï¼","Which models that traffic went to":"æµéæµåäºåªäºæ¨¡å","Share of {{total}} tokens.":"å {{total}} token ç份é¢ã","Share of {{total}} requests.":"å {{total}} 次请æ±ç份é¢ã","{{count}} models with traffic report no token counts and cannot be ranked here":"{{count}} ä¸ªææµéçæ¨¡åæªä¸æ¥ token æ°ï¼æ æ³è¿å
¥æ¤æå","tok missing including":"ï¼å
æ¬ ","tok missing and":" å ","tok missing tail":"ââå®ä»¬å¨âæè¯·æ±æ°âè§å¾ä¸ã","usage views disagree note":"两个è§å¾ä¸ä¸è´æ¯ææä¸ºä¹ï¼ä¸ä¸ªæ¨¡åå¯è½å è°ç¨æ¬¡æ°ç大头ãå´åªå token çä¸å°é¨åââ大éç请æ±ââåä¹äº¦ç¶ãåªä¸ªè§å¾æ´éè¦ï¼åå³äºä½ çææ¬ç±è°ç¨é驱å¨è¿æ¯ç±æç¤ºè¯é¿åº¦é©±å¨ã以ä¸ä¸º AIHubMix è¿ {{days}} 天宿µï¼ç»è®¡æ¬é¡µååºç {{count}} 个模å IDï¼ç»ç±å
¬å¼ç®å½ä¹å¤ç䏿¸¸ä¸ç¨ ID çæµéä¸è®¡å
¥ã",Models:Na,"Model Authors":"模åå¼åå","{{dev}} Models":"{{dev}} 模å","models unit_other":"个模å","authors unit_other":"å®¶å¼åå","General models":"éç¨æ¨¡å",free:Da,"to start":"èµ·æ¥","General models from":"éç¨æ¨¡åä½è³","input unit":"è¾å
¥","Up to":"æé«","context unit":"ä¸ä¸æ","Official site":"å®ç½","All {{count}} {{dev}} Models":"{{dev}} å
¨é¨ {{count}} 个模å","Open in model list":"卿¨¡ååè¡¨ä¸æå¼",Reasoning:Fa,Tools:Ua,"Structured output":"ç»æåè¾åº",Vision:qa,"1M+ context":"1M+ ä¸ä¸æ","Cache discount":"ç¼åææ£",Clear:Ha,"{{shown}} of {{total}} models":"{{total}} 个模å䏿¾ç¤º {{shown}} 个","provider table caption":"{{dev}} å¨ AIHubMix ä¸ç模åï¼è¾å
¥/è¾åºæ¨¡æãä¸ä¸æé¿åº¦ãæå¤§è¾åºãæ¯ç¾ä¸ token ä»·æ ¼ï¼å«ç¼å读/åè´¹çï¼ï¼ä»¥å宿µååä¸å»¶è¿ã","Show first {{count}}":"æ¶èµ·å°å {{count}} 个","Show all {{count}} models":"å±å¼å
¨é¨ {{count}} 个模å","provider table footnote":"ä»·æ ¼ä¸ºæ¯ç¾ä¸ token çç¾å
ä»·ï¼ç¼å读/ç¼ååå嫿¯æç¤ºè¯ç¼åå½ä¸ä¸åå
¥ç¼åçè´¹çãååä¸å»¶è¿ä¸º AIHubMix 宿µââ䏿¨¡å详æ
页å±ç¤ºçæ¯åä¸ç»æ°åââå¹¶éåå宣称å¼ãâââ表示ç®å½æªå
¬å¸è¯¥æ¨¡åçè¿ä¸å段ï¼ä¸çäºæ¨¡å䏿¯æã","Common Comparisons":"常è§å¯¹æ¯","{{dev}} on AIHubMix":"AIHubMix ä¸ç {{dev}}","Other Model Authors":"å
¶ä»å¼åå","Start calling {{dev}} in one line":"ä¸è¡ä»£ç å¼å§è°ç¨ {{dev}}","One key, one endpoint, {{models}} models across {{devs}} model authors.":"ä¸ä¸ªå¯é¥ãä¸ä¸ªç«¯ç¹ï¼{{devs}} å®¶å¼ååç {{models}} 个模åã","Get API key":"è·å API å¯é¥","Read the docs":"æ¥çææ¡£","Free models":"å
费模å","Free AI Models":"å
è´¹ AI 模å","fm lead base":"å
费模åçæä¹ï¼æ¯è®©å®éªãå¦ä¹ åä¸çº¿ä¸å¿
ä»è´¦åå¼å§ââæ¬é¡µ {{count}} 个模åçæ¨çææ¬ç± AIHubMix æ¿æ
ï¼ä¸æ¯ä¸ªæ¨¡åé½åæ¶æ¯æ Chat Completionsã
4MessagesãResponses ä¸ç§åè®®","fm lead trial":"ãæ³¨åå³å¾ {{trial}} 次è¯ç¨è°ç¨ï¼æ éä¿¡ç¨å¡","fm lead topup":"ï¼å
å¼ ${{usd}} å转为永ä¹
æ¯æ¥é
é¢ã","fm lead end":"ã","Every model":"æ¯ä¸ªæ¨¡å齿¯","/M input & output":"/M è¾å
¥ & è¾åº","Updated {{date}}":"æ´æ°äº {{date}}","Model authors with free models":"æä¾å
费模åçå¼åå","{{name}} models on AIHubMix":"AIHubMix ä¸ç {{name}} 模å","Before your first top-up":"é¦å
ä¹å","No credit card required, and trial calls never expire.":"æ éä¿¡ç¨å¡ï¼è¯ç¨è°ç¨æ°¸ä¸è¿æã","Trial calls":"è¯ç¨è°ç¨","total, all free models":"æ»è®¡ï¼å
¨é¨å
费模åå
±äº«","After a one-time ${{usd}} top-up":"å
å¼ ${{usd}} ä¹å","fm paid lane desc":"åªéå
å¼ä¸æ¬¡ââéé¢ ${{usd}} èµ·ââææå
费模åå³åæ¢ä¸ºæ¯æ¥é
é¢ï¼æ°¸ä¸è¿æãæ¯å¤©éç½®ã","/day unit":"/天","/min unit":"/åé",Resets:ja,daily:za,"fm tok missing":"{{count}} ä¸ªææµéçæ¨¡åæªä¸æ¥ token æ°ï¼ä»
åºç°å¨âæè¯·æ±æ°âè§å¾ä¸ã","All {{count}} Free Models":"å
¨é¨ {{count}} 个å
费模å","fm table caption":"AIHubMix ä¸çå
¨é¨å
费模åï¼æç®å½é¡ºåºï¼ï¼å¼ååãè¾å
¥/è¾åºæ¨¡æãä¸ä¸æé¿åº¦ï¼ä»¥åå
å¼åè´¦æ·ä¸å模åçéçä¸éã","Rate limit":"éçä¸é","Paid version":"ä»è´¹çæ¬","Compare {{a}} with {{b}}":"å¯¹æ¯ {{a}} ä¸ {{b}}","vs paid":"对æ¯ä»è´¹ç","fm table note base":"éçä¸éå±ç¤ºçæ¯å
å¼åè´¦æ·çæ¯æ¥ä¸æ¯åé请æ±ä¸éãé¨å模åè¯·æ±æéæ´é«ââ䏿¬¡è°ç¨è®¡ä¸ºå¤æ¬¡è¯·æ±ââæä»¥ä¸éæ´ä½ã","fm table note pool":" å
¨é¨å
费模åå
±äº«æ¯å¤© {{tokens}} token çæ»æ± ã","fm table note trial":" é¦å
ä¹åæ {{trial}} 次è¯ç¨è°ç¨è®¡ã","fm table note tail":"ä¸ä¸æä¸ºâââ表示ç®å½æªå
¬å¸è¯¥å¼ãæ¨¡ææ è¾å
¥ â è¾åº 读ââä¸å¼åå页å±ç¤ºåä¸äºå®ï¼ç¼ºå°è¾åºä¾§è¡¨ç¤ºç®å½æªå
¬å¸ï¼ä¸ä»£è¡¨æ¨¡å没æè¾åºã","How to Start":"å¦ä½å¼å§","Create an account":"注åè´¦å·","Email or OAuth, no credit card required.":"é®ç®±æ OAuth ç»å½ï¼æ éä¿¡ç¨å¡ã","{{trial}} trial calls are available immediately.":"{{trial}} 次è¯ç¨è°ç¨å³å»å¯ç¨ã","Create an API key":"å建 API å¯é¥","One key works for every model on the platform, free and paid alike.":"ä¸ä¸ªå¯é¥å³å¯è°ç¨å¹³å°ä¸æææ¨¡åï¼å
è´¹ä¸ä»è´¹ä¸è§åä»ã","Open the API keys page":"æå¼ API å¯é¥é¡µ","Call a free model":"è°ç¨å
费模å","fm step3 pre":"æä»»æ OpenAI å
¼å®¹å®¢æ·ç«¯ââCursorãClineãCherry StudioãLiteLLMââæåç½å
³ï¼éæ©ä¸ä¸ª ","fm step3 post":" 模å ID å³å¯ã","API protocol":"API åè®®","Free Models on AIHubMix":"AIHubMix ä¸çå
费模å","Keep Exploring":"ç»§ç»æ¢ç´¢","All Models":"å
¨é¨æ¨¡å","fm explore models desc":"宿´ç®å½ââ{{count}} 个模åï¼è¦ç对è¯ãå¾åãè§é¢ä¸é³é¢ï¼æ token 计价ã","Browse all models":"æµè§å
¨é¨æ¨¡å","LLM Router":"LLM Router","fm router desc pre":"ææ¨¡å ID å¡«æ ","fm router desc post":"ï¼ç½å
³ä¼æææ¬ä¸è´¨éææ¯æ¬¡è¯·æ±è·¯ç±å°æä¼æ¨¡åã","Try the router":"è¯è¯è·¯ç±",Apps:Va,"fm apps desc":"AIHubMix åºç¨ååºéå¼ç®±å³ç¨çåºç¨ââ以åå
è´¹ç®å½ä¹å¤çæ¨¡åææ£ã","Browse the app store":"ééåºç¨ååº",Recommended:Ka,"Switch version":"åæ¢çæ¬","Model versions":"模åçæ¬","AI Model Authors":"AI 模åå¼åå","authors index stats":"{{providers}} å®¶å¼ååã{{models}} 个模å,ä¸ä¸ª API Keyã","authors index desc":"æ¯ä¸ªå¼åå页é½ååºå
¶å
¨é¨æ¨¡å:æ token 计价ãä¸ä¸æçªå£ä¸å®æµååã","All model authors":"å
¨é¨å¼åå","calls 30d":"次è°ç¨ · 30 天","See all model authors":"æ¥çå
¨é¨å¼åå","Retired models":"å·²ä¸çº¿æ¨¡å",Deprecating:Ga,Retired:Ba,Retirements:Wa,"Model Retirements":"模åä¸çº¿å
¬ç¤º","mr lead":"模åä¼å 䏿¸¸åååæææ¿æ¢èä¸çº¿ãå·²ææåå·²ä¸çº¿ç模åå
¨é¨åå¨è¿éï¼éè°ç¨åæ¢çæ¥æåæ¨èçæ¿ä»£æ¨¡åã","scheduled for retirement":"个模åå·²ææä¸çº¿","already retired":"个模åå·²ä¸çº¿","Browse all {{count}} models":"æµè§å
¨é¨ {{count}} 个模å",Active:Ja,"Fully supported. No retirement date announced.":"æ£å¸¸æä¾ï¼æªå
¬å¸ä¸çº¿æ¥æã","Still callable, but a retirement date is set. Migrate before that date.":"ä»å¯è°ç¨ï¼ä½å·²å®ä¸çº¿æ¥æï¼è¯·å¨è¯¥æ¥æå宿è¿ç§»ã","No longer callable. Requests return":"ä¸åå¯è°ç¨ï¼è¯·æ±è¿å","Filter by author":"æååçé",Author:Ya,All:Qa,"Upcoming retirements":"å³å°ä¸çº¿","Still callable â migrate before the retirement date":"ä»å¯è°ç¨ââ请å¨ä¸çº¿æ¥æå宿è¿ç§»","Detail pages stay online â requests return an error":"详æ
页ä¿çï¼ä½è°ç¨ä¼ç´æ¥æ¥é","mr dash note":"â 表示æ¬ç«ç®å½ä¸æ²¡æå¯¹åºçæ¿ä»£æ¨¡åã","No retirements for this author.":"该ååæ²¡æä¸çº¿æ¨¡åã",Status:Za,Announced:Xa,"Retirement date":"ä¸çº¿æ¥",Replacement:ei}
4,qe={zh:"zh","zh-CN":"zh","zh-hans":"zh","zh-hans-cn":"zh","zh-TW":"zh-TW","zh-HK":"zh-TW","zh-tw":"zh-TW","zh-hant":"zh-TW","zh-hant-tw":"zh-TW",en:"en","en-US":"en","en-GB":"en","en-AU":"en","en-CA":"en","en-NZ":"en","en-IE":"en","en-ZA":"en",ja:"ja",ko:"ko",de:"de",es:"es",fr:"fr",pt:"pt",ru:"ru",tr:"tr",pl:"pl",nl:"nl",it:"it",vi:"vi",uk:"uk",bg:"bg"},ee=async n=>{const e=qe[n]||qe[String(n||"").split("-")[0]]||n;if(!b.hasResourceBundle(n,"translation"))try{let t;switch(e){case"zh-TW":t=await P(()=>import("./zh-TW-DeXKFggQ.js"),[]);break;case"ja":t=await P(()=>import("./ja-Dne5AhFZ.js"),[]);break;case"ko":t=await P(()=>import("./ko-CJR1D-U1.js"),[]);break;case"de":t=await P(()=>import("./de-B2Svfd0-.js"),[]);break;case"es":t=await P(()=>import("./es-BaHZBcWC.js"),[]);break;case"fr":t=await P(()=>import("./fr-CXPCEXZO.js"),[]);break;case"pt":t=await P(()=>import("./pt-BBilbWtJ.js"),[]);break;case"ru":t=await P(()=>import("./ru-DQ1S2Mc9.js"),[]);break;case"tr":t=await P(()=>import("./tr-IA76tsO3.js"),[]);break;case"pl":t=await P(()=>import("./pl-CpWu-cs7.js"),[]);break;case"nl":t=await P(()=>import("./nl-B7qSTY5B.js"),[]);break;case"it":t=await P(()=>import("./it-DTyteECB.js"),[]);break;case"vi":t=await P(()=>import("./vi-D4cw0KbT.js"),[]);break;case"uk":t=await P(()=>import("./uk-3NOaXRf0.js"),[]);break;case"bg":t=await P(()=>import("./bg-DnpS-Qmc.js"),[]);break;default:return}t&&b.addResourceBundle(n,"translation",t.default)}catch(t){console.warn(`Failed to load language: ${n}`,t)}},ti={name:"navigatorEnForZh",lookup(){if(typeof navigator>"u")return;const n=navigator.languages&&navigator.languages.length?navigator.languages:[navigator.language||navigator.userLanguage],e=(n[0]||"").toLowerCase();if(e)return e.startsWith("zh")?"en":n[0]},cacheUserLanguage(){}},Ye=new Je;Ye.addDetector(ti);function oi(n){if(!n||n==="localhost"||/^[\d.]+$|[:[\]]/.test(n))return;const e=n.split(".");return e.length<2?void 0:"."+e.slice(-2).join(".")}const U=typeof window<"u"?oi(window.location.hostname):void 0,ni=3600*24*365;function Qe(n){document.cookie=`i18nextLng=${n}; path=/; max-age=${ni}`+(U?`; domain=${U}`:"")+"; SameSite=Lax"}function si(){document.cookie="i18nextLng=; path=/; max-age=0",U&&(document.cookie=`i18nextLng=; path=/; max-age=0; domain=${U}`)}let Q=null;if(typeof document<"u"){const n=document.cookie.match(/(?:^|;\s*)i18nextLng=([^;]*)/);Q=n&&n[1]?n[1]:null,U&&(document.cookie="i18nextLng=; path=/; max-age=0",Q&&Qe(Q))}const we=typeof window<"u"&&typeof document<"u"&&!!window.__reactRouterContext,ri=we&&document.documentElement.lang||"en";we&&window.addEventListener("load",()=>{setTimeout(()=>{Q?Qe(Q):si();const n=b.services.languageDetector?b.services.languageDetector.detect():void 0,e=Array.isArray(n)?n[0]:n;Promise.resolve(e?ee(e):void 0).then(()=>{P(async()=>{const{startTransition:t}=await import("./jsx-runtime-C5Zd082J.js").then(o=>o.R);return{startTransition:t}},[]).then(({startTransition:t})=>{t(()=>{b.changeLanguage(e||void 0)})})})},0)},{once:!0});b.use(Ye).use(mt).init({...we?{lng:ri}:{},resources:{zh:{translation:oe},"zh-CN":{translation:oe},"zh-hans":{translation:oe},"zh-hans-cn":{translation:oe},en:{translation:D},"en-US":{translation:D},"en-GB":{translation:D},"en-AU":{translation:D},"en-CA":{translation:D},"en-NZ":{translation:D},"en-IE":{translation:D},"en-ZA":{translation:D}},detection:{lookupQuerystring:"lang",lookupLocalStorage:"i18nextLng",lookupCookie:"i18nextLng",caches:["cookie"],cookieMinutes:525600,...U?{cookieDomain:U}:{},order:["querystring","cookie","navigatorEnForZh","htmlTag"]},fallbackLng:"en",interpolation:{escapeValue:!1}});b.on("languageChanged",n=>{ee(n)});const ci=n=>{ee(n)},di=async n=>{try{await ee(n)}catch{}return b.changeLanguage(n)},me=b.language;me&&!["zh","zh-CN","zh-hans","zh-hans-cn","en","en-US","en-GB","en-AU","en-CA","en-NZ","en-IE","en-ZA"].includes(me)&&ee(me);export{Ve as _,G as a,di as c,b as i,ci as p,ui as u};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.