billion-context 0.1.210 → 0.1.211
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/dsh-native.js +1 -1
- package/dist/agent/omp-native.js +1 -1
- package/dist/agent/omp.js +1 -1
- package/dist/agent/opencode-native.js +11 -11
- package/dist/agent/opencode.js +1 -1
- package/dist/agent/pi-native.js +11 -11
- package/dist/agent/pi.js +1 -1
- package/dist/build-info.json +1 -1
- package/dist/claude-mcp-entry.js +1 -1
- package/dist/claude-native-bootstrap.js +1 -1
- package/dist/index.js +11 -11
- package/dist/kimi/bootstrap-hook.js +1 -1
- package/dist/kimi/native-mcp.js +1 -1
- package/dist/zcode/bootstrap-hook.js +1 -1
- package/dist/zcode/mcp-entry.js +1 -1
- package/package.json +1 -1
- package/website/blog/posts/2026-11-01_frequent-compression.md +13 -0
- package/website/blog/posts/2026-11-01_frequent-compression.zh.md +12 -0
package/dist/agent/dsh-native.js
CHANGED
|
@@ -126,7 +126,7 @@ ${pendingInterceptorsFormatter.format(pending)}`.trim())}};module.exports=MockAg
|
|
|
126
126
|
${value}`}break;case"retry":if(isASCIINumber(value)){event[field]=value}break;case"id":if(isValidLastEventId(value)){event[field]=value}break;case"event":if(value.length>0){event[field]=value}break}}processEvent(event){if(event.retry&&isASCIINumber(event.retry)){this.state.reconnectionTime=parseInt(event.retry,10)}if(event.id!==void 0&&isValidLastEventId(event.id)){this.state.lastEventId=event.id}if(event.data!==void 0){this.push({type:event.event||"message",options:{data:event.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}};module.exports={EventSourceStream}}});var require_eventsource=__commonJS({"node_modules/undici/lib/web/eventsource/eventsource.js"(exports,module){"use strict";var{pipeline}=__require("stream");var{fetching}=require_fetch();var{makeRequest}=require_request2();var{webidl}=require_webidl();var{EventSourceStream}=require_eventsource_stream();var{parseMIMEType}=require_data_url();var{createFastMessageEvent}=require_events();var{isNetworkError}=require_response();var{kEnumerableProperty}=require_util();var{environmentSettingsObject}=require_util2();var experimentalWarned=false;var defaultReconnectionTime=3e3;var CONNECTING=0;var OPEN=1;var CLOSED=2;var ANONYMOUS="anonymous";var USE_CREDENTIALS="use-credentials";var EventSource=class _EventSource extends EventTarget{#events={open:null,error:null,message:null};#url;#withCredentials=false;#readyState=CONNECTING;#request=null;#controller=null;#dispatcher;#state;constructor(url,eventSourceInitDict={}){super();webidl.util.markAsUncloneable(this);const prefix="EventSource constructor";webidl.argumentLengthCheck(arguments,1,prefix);if(!experimentalWarned){experimentalWarned=true;process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})}url=webidl.converters.USVString(url);eventSourceInitDict=webidl.converters.EventSourceInitDict(eventSourceInitDict,prefix,"eventSourceInitDict");this.#dispatcher=eventSourceInitDict.node.dispatcher||eventSourceInitDict.dispatcher;this.#state={lastEventId:"",reconnectionTime:eventSourceInitDict.node.reconnectionTime};const settings=environmentSettingsObject;let urlRecord;try{urlRecord=new URL(url,settings.settingsObject.baseUrl);this.#state.origin=urlRecord.origin}catch(e){throw new DOMException(e,"SyntaxError")}this.#url=urlRecord.href;let corsAttributeState=ANONYMOUS;if(eventSourceInitDict.withCredentials===true){corsAttributeState=USE_CREDENTIALS;this.#withCredentials=true}const initRequest={redirect:"follow",keepalive:true,mode:"cors",credentials:corsAttributeState==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};initRequest.client=environmentSettingsObject.settingsObject;initRequest.headersList=[["accept",{name:"accept",value:"text/event-stream"}]];initRequest.cache="no-store";initRequest.initiator="other";initRequest.urlList=[new URL(this.#url)];this.#request=makeRequest(initRequest);this.#connect()}get readyState(){return this.#readyState}get url(){return this.#url}get withCredentials(){return this.#withCredentials}#connect(){if(this.#readyState===CLOSED)return;this.#readyState=CONNECTING;const fetchParams={request:this.#request,dispatcher:this.#dispatcher};const processEventSourceEndOfBody=response=>{if(!isNetworkError(response)){return this.#reconnect()}};fetchParams.processResponseEndOfBody=processEventSourceEndOfBody;fetchParams.processResponse=response=>{if(isNetworkError(response)){if(response.aborted){this.close();this.dispatchEvent(new Event("error"));return}else{this.#reconnect();return}}const contentType=response.headersList.get("content-type",true);const mimeType=contentType!==null?parseMIMEType(contentType):"failure";const contentTypeValid=mimeType!=="failure"&&mimeType.essence==="text/event-stream";if(response.status!==200||contentTypeValid===false){this.close();this.dispatchEvent(new Event("error"));return}this.#readyState=OPEN;this.dispatchEvent(new Event("open"));this.#state.origin=response.urlList[response.urlList.length-1].origin;const eventSourceStream=new EventSourceStream({eventSourceSettings:this.#state,push:event=>{this.dispatchEvent(createFastMessageEvent(event.type,event.options))}});pipeline(response.body.stream,eventSourceStream,error=>{if(error?.aborted===false){this.close();this.dispatchEvent(new Event("error"))}})};this.#controller=fetching(fetchParams)}#reconnect(){if(this.#readyState===CLOSED)return;this.#readyState=CONNECTING;this.dispatchEvent(new Event("error"));setTimeout(()=>{if(this.#readyState!==CONNECTING)return;if(this.#state.lastEventId.length){this.#request.headersList.set("last-event-id",this.#state.lastEventId,true)}this.#connect()},this.#state.reconnectionTime)?.unref()}close(){webidl.brandCheck(this,_EventSource);if(this.#readyState===CLOSED)return;this.#readyState=CLOSED;this.#controller.abort();this.#request=null}get onopen(){return this.#events.open}set onopen(fn){if(this.#events.open){this.removeEventListener("open",this.#events.open)}const listener=webidl.converters.EventHandlerNonNull(fn);if(listener!==null){this.addEventListener("open",listener);this.#events.open=fn}else{this.#events.open=null}}get onmessage(){return this.#events.message}set onmessage(fn){if(this.#events.message){this.removeEventListener("message",this.#events.message)}const listener=webidl.converters.EventHandlerNonNull(fn);if(listener!==null){this.addEventListener("message",listener);this.#events.message=fn}else{this.#events.message=null}}get onerror(){return this.#events.error}set onerror(fn){if(this.#events.error){this.removeEventListener("error",this.#events.error)}const listener=webidl.converters.EventHandlerNonNull(fn);if(listener!==null){this.addEventListener("error",listener);this.#events.error=fn}else{this.#events.error=null}}};var constantsPropertyDescriptors={CONNECTING:{__proto__:null,configurable:false,enumerable:true,value:CONNECTING,writable:false},OPEN:{__proto__:null,configurable:false,enumerable:true,value:OPEN,writable:false},CLOSED:{__proto__:null,configurable:false,enumerable:true,value:CLOSED,writable:false}};Object.defineProperties(EventSource,constantsPropertyDescriptors);Object.defineProperties(EventSource.prototype,constantsPropertyDescriptors);Object.defineProperties(EventSource.prototype,{close:kEnumerableProperty,onerror:kEnumerableProperty,onmessage:kEnumerableProperty,onopen:kEnumerableProperty,readyState:kEnumerableProperty,url:kEnumerableProperty,withCredentials:kEnumerableProperty});webidl.converters.EventSourceInitDict=webidl.dictionaryConverter([{key:"withCredentials",converter:webidl.converters.boolean,defaultValue:()=>false},{key:"dispatcher",converter:webidl.converters.any},{key:"node",converter:webidl.dictionaryConverter([{key:"reconnectionTime",converter:webidl.converters["unsigned long"],defaultValue:()=>defaultReconnectionTime},{key:"dispatcher",converter:webidl.converters.any}]),defaultValue:()=>({})}]);module.exports={EventSource,defaultReconnectionTime}}});var require_undici=__commonJS({"node_modules/undici/index.js"(exports,module){"use strict";var Client=require_client();var Dispatcher=require_dispatcher();var Pool2=require_pool();var BalancedPool=require_balanced_pool();var RoundRobinPool=require_round_robin_pool();var Agent2=require_agent();var ProxyAgent2=require_proxy_agent();var Socks5ProxyAgent=require_socks5_proxy_agent();var EnvHttpProxyAgent=require_env_http_proxy_agent();var RetryAgent=require_retry_agent();var H2CClient=require_h2c_client();var errors=require_errors();var util=require_util();var{InvalidArgumentError}=errors;var api=require_api();var buildConnector=require_connect();var MockClient=require_mock_client();var{MockCallHistory,MockCallHistoryLog}=require_mock_call_history();var MockAgent=require_mock_agent();var MockPool=require_mock_pool();var SnapshotAgent=require_snapshot_agent();var mockErrors=require_mock_errors();var RetryHandler=require_retry_handler();var{getGlobalDispatcher,setGlobalDispatcher}=require_global2();var DecoratorHandler=require_decorator_handler();var RedirectHandler=require_redirect_handler();Object.assign(Dispatcher.prototype,api);module.exports.Dispatcher=Dispatcher;module.exports.Client=Client;module.exports.Pool=Pool2;module.exports.BalancedPool=BalancedPool;module.exports.RoundRobinPool=RoundRobinPool;module.exports.Agent=Agent2;module.exports.ProxyAgent=ProxyAgent2;module.exports.Socks5ProxyAgent=Socks5ProxyAgent;module.exports.EnvHttpProxyAgent=EnvHttpProxyAgent;module.exports.RetryAgent=RetryAgent;module.exports.H2CClient=H2CClient;module.exports.RetryHandler=RetryHandler;module.exports.DecoratorHandler=DecoratorHandler;module.exports.RedirectHandler=RedirectHandler;module.exports.interceptors={redirect:require_redirect(),responseError:require_response_error(),retry:require_retry(),dump:require_dump(),dns:require_dns(),cache:require_cache2(),decompress:require_decompress(),deduplicate:require_deduplicate()};module.exports.cacheStores={MemoryCacheStore:require_memory_cache_store()};var SqliteCacheStore=require_sqlite_cache_store();module.exports.cacheStores.SqliteCacheStore=SqliteCacheStore;module.exports.buildConnector=buildConnector;module.exports.errors=errors;module.exports.util={parseHeaders:util.parseHeaders,headerNameToString:util.headerNameToString};function makeDispatcher(fn){return(url,opts,handler)=>{if(typeof opts==="function"){handler=opts;opts=null}if(!url||typeof url!=="string"&&typeof url!=="object"&&!(url instanceof URL)){throw new InvalidArgumentError("invalid url")}if(opts!=null&&typeof opts!=="object"){throw new InvalidArgumentError("invalid opts")}if(opts&&opts.path!=null){if(typeof opts.path!=="string"){throw new InvalidArgumentError("invalid opts.path")}let path30=opts.path;if(!opts.path.startsWith("/")){path30=`/${path30}`}url=new URL(util.parseOrigin(url).origin+path30)}else{if(!opts){opts=typeof url==="object"?url:{}}url=util.parseURL(url)}const{agent,dispatcher=getGlobalDispatcher()}=opts;if(agent){throw new InvalidArgumentError("unsupported opts.agent. Did you mean opts.client?")}return fn.call(dispatcher,{...opts,origin:url.origin,path:url.search?`${url.pathname}${url.search}`:url.pathname,method:opts.method||(opts.body?"PUT":"GET")},handler)}}module.exports.setGlobalDispatcher=setGlobalDispatcher;module.exports.getGlobalDispatcher=getGlobalDispatcher;var fetchImpl=require_fetch().fetch;var currentFilename=typeof __filename!=="undefined"?__filename:void 0;function appendFetchStackTrace(err2,filename){if(!err2||typeof err2!=="object"){return}const stack=typeof err2.stack==="string"?err2.stack:"";const normalizedFilename=filename.replace(/\\/g,"/");if(stack&&(stack.includes(filename)||stack.includes(normalizedFilename))){return}const capture2={};Error.captureStackTrace(capture2,appendFetchStackTrace);if(!capture2.stack){return}const captureLines=capture2.stack.split("\n").slice(1).join("\n");err2.stack=stack?`${stack}
|
|
127
127
|
${captureLines}`:capture2.stack}module.exports.fetch=function fetch2(init,options=void 0){return fetchImpl(init,options).catch(err2=>{if(currentFilename){appendFetchStackTrace(err2,currentFilename)}else if(err2&&typeof err2==="object"){Error.captureStackTrace(err2,module.exports.fetch)}throw err2})};module.exports.Headers=require_headers().Headers;module.exports.Response=require_response().Response;module.exports.Request=require_request2().Request;module.exports.FormData=require_formdata().FormData;var{setGlobalOrigin,getGlobalOrigin}=require_global();module.exports.setGlobalOrigin=setGlobalOrigin;module.exports.getGlobalOrigin=getGlobalOrigin;var{CacheStorage}=require_cachestorage();var{kConstruct}=require_symbols();module.exports.caches=new CacheStorage(kConstruct);var{deleteCookie,getCookies,getSetCookies,setCookie,parseCookie}=require_cookies();module.exports.deleteCookie=deleteCookie;module.exports.getCookies=getCookies;module.exports.getSetCookies=getSetCookies;module.exports.setCookie=setCookie;module.exports.parseCookie=parseCookie;var{parseMIMEType,serializeAMimeType}=require_data_url();module.exports.parseMIMEType=parseMIMEType;module.exports.serializeAMimeType=serializeAMimeType;var{CloseEvent,ErrorEvent,MessageEvent}=require_events();var{WebSocket,ping}=require_websocket();module.exports.WebSocket=WebSocket;module.exports.CloseEvent=CloseEvent;module.exports.ErrorEvent=ErrorEvent;module.exports.MessageEvent=MessageEvent;module.exports.ping=ping;module.exports.WebSocketStream=require_websocketstream().WebSocketStream;module.exports.WebSocketError=require_websocketerror().WebSocketError;module.exports.request=makeDispatcher(api.request);module.exports.stream=makeDispatcher(api.stream);module.exports.pipeline=makeDispatcher(api.pipeline);module.exports.connect=makeDispatcher(api.connect);module.exports.upgrade=makeDispatcher(api.upgrade);module.exports.MockClient=MockClient;module.exports.MockCallHistory=MockCallHistory;module.exports.MockCallHistoryLog=MockCallHistoryLog;module.exports.MockPool=MockPool;module.exports.MockAgent=MockAgent;module.exports.SnapshotAgent=SnapshotAgent;module.exports.mockErrors=mockErrors;var{EventSource}=require_eventsource();module.exports.EventSource=EventSource;function install(){globalThis.fetch=module.exports.fetch;globalThis.Headers=module.exports.Headers;globalThis.Response=module.exports.Response;globalThis.Request=module.exports.Request;globalThis.FormData=module.exports.FormData;globalThis.WebSocket=module.exports.WebSocket;globalThis.CloseEvent=module.exports.CloseEvent;globalThis.ErrorEvent=module.exports.ErrorEvent;globalThis.MessageEvent=module.exports.MessageEvent;globalThis.EventSource=module.exports.EventSource}module.exports.install=install}});import{AsyncLocalStorage as AsyncLocalStorage2}from"async_hooks";var transports;var init_fetch_transport=__esm({"src/fetch-transport.ts"(){"use strict";transports=new AsyncLocalStorage2}});var init_upstream_fail=__esm({"src/upstream-fail.ts"(){"use strict"}});import{createHash as createHash2}from"crypto";function hashId(s3){return createHash2("sha256").update(s3,"utf8").digest("hex").slice(0,16)}var BILI_PASSTHROUGH_HEADER,MIN_ASSUMED_WINDOW_TOKENS;var init_util=__esm({"src/util.ts"(){"use strict";BILI_PASSTHROUGH_HEADER="x-bili-passthrough";MIN_ASSUMED_WINDOW_TOKENS=1e6}});var DEFAULT_MITM_DOMAINS;var init_mitm_domains=__esm({"src/mitm-domains.ts"(){"use strict";DEFAULT_MITM_DOMAINS=["api.anthropic.com","api.openai.com","chatgpt.com"]}});var init_compat_roles=__esm({"src/compat-roles.ts"(){"use strict";init_config()}});var init_compat_drop=__esm({"src/compat-drop.ts"(){"use strict";init_config()}});var init_private_host=__esm({"src/private-host.ts"(){"use strict"}});var SUMMARY_DEFAULT_BUDGET;var init_external_summary_settings=__esm({"src/external-summary-settings.ts"(){"use strict";init_logger();init_private_host();init_knobs();SUMMARY_DEFAULT_BUDGET={totalTimeoutMs:5e4,targetTimeoutMs:25e3,maxSummaryBytes:64*1024}}});var registry_snapshot_default;var init_registry_snapshot=__esm({"src/registry-snapshot.json"(){registry_snapshot_default={fetchedAt:"2026-09-26T13:43:04.017Z",count:428,models:{"bytedance-seed/seed-2.0-pro":{id:"bytedance-seed/seed-2.0-pro",name:"Seed 2.0 Pro",description:"Flagship ByteDance Seed 2.0 model for complex multimodal reasoning and long-horizon agent workflows",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-14",last_updated:"2026-02-14",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:128e3}},"bytedance-seed/seed-2.1-pro":{id:"bytedance-seed/seed-2.1-pro",name:"Seed 2.1 Pro",description:"Flagship ByteDance Seed 2.1 model for complex multimodal reasoning, coding, and agents",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-23",last_updated:"2026-06-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:256e3}},"bytedance-seed/seed-2.1-turbo":{id:"bytedance-seed/seed-2.1-turbo",name:"Seed 2.1 Turbo",description:"Faster ByteDance Seed 2.1 model for multimodal reasoning and latency-sensitive agent workflows",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-23",last_updated:"2026-06-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:256e3}},"bytedance-seed/seed-evolving":{id:"bytedance-seed/seed-evolving",name:"Seed Evolving",description:"Rolling ByteDance Seed model for rapidly updated reasoning, coding, and agent capabilities",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-23",last_updated:"2026-06-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:256e3}},"bytedance-seed/seed-2.0-lite":{id:"bytedance-seed/seed-2.0-lite",name:"Seed 2.0 Lite",description:"Cost-efficient ByteDance Seed 2.0 model for production chat, analysis, and structured generation",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-14",last_updated:"2026-02-14",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:32e3}},"bytedance-seed/seed-1-6-flash":{id:"bytedance-seed/seed-1-6-flash",name:"Seed 1.6 Flash",description:"Low-latency ByteDance Seed model for high-throughput chat, extraction, and lightweight tool use",family:"seed",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-08-28",last_updated:"2025-08-28",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:256e3,output:32e3}},"bytedance-seed/seed-1-8":{id:"bytedance-seed/seed-1-8",name:"Seed 1.8",description:"ByteDance Seed model for multimodal reasoning, long-context analysis, and agent workflows",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-12-28",last_updated:"2025-12-28",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:256e3,output:64e3}},"bytedance-seed/seed-1-6":{id:"bytedance-seed/seed-1-6",name:"Seed 1.6",description:"ByteDance Seed model for long-context reasoning, instruction following, and tool-assisted tasks",family:"seed",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-10-15",last_updated:"2025-10-15",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:256e3,output:64e3}},"bytedance-seed/seed-1-6-vision":{id:"bytedance-seed/seed-1-6-vision",name:"Seed 1.6 Vision",description:"ByteDance Seed multimodal model for image understanding, visual reasoning, and tool-assisted tasks",family:"seed",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-08-15",last_updated:"2025-08-15",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:256e3,output:32e3}},"bytedance-seed/seed-2.0-mini":{id:"bytedance-seed/seed-2.0-mini",name:"Seed 2.0 Mini",description:"Lightweight ByteDance Seed 2.0 model for low-latency multimodal reasoning and high-volume tasks",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-14",last_updated:"2026-02-14",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:32e3}},"bytedance-seed/seed-character":{id:"bytedance-seed/seed-character",name:"Seed Character",description:"ByteDance Seed model optimized for character-driven dialogue and consistent conversational behavior",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-23",last_updated:"2026-06-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:256e3,output:256e3}},"bytedance-seed/seed-2.0-code":{id:"bytedance-seed/seed-2.0-code",name:"Seed 2.0 Code",description:"ByteDance Seed coding model for multimodal software engineering and long-running agents",family:"seed",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-14",last_updated:"2026-02-14",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:262144,output:131072}},"swiss-ai/apertus-8b":{id:"swiss-ai/apertus-8b",name:"Apertus 8B",description:"Fully open 8B multilingual LLM supporting 1800+ languages with 65K context. Trained on compliant open data. Apache 2.0, EU AI Act compliant.",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-09",release_date:"2025-09-02",last_updated:"2025-09-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:65536,output:8192},license:"Apache-2.0",links:[{label:"Paper",url:"https://arxiv.org/abs/2509.14233",type:"paper"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/swiss-ai/Apertus-8B-Instruct-2509"}]},"swiss-ai/apertus-70b":{id:"swiss-ai/apertus-70b",name:"Apertus 70B",description:"Fully open 70B multilingual LLM supporting 1800+ languages with 65K context. Trained on 15T tokens of compliant open data. Apache 2.0, EU AI Act compliant.",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-09",release_date:"2025-09-02",last_updated:"2025-09-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:65536,output:8192},license:"Apache-2.0",links:[{label:"Paper",url:"https://arxiv.org/abs/2509.14233",type:"paper"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/swiss-ai/Apertus-70B-Instruct-2509"}]},"poolside/laguna-xs.2":{id:"poolside/laguna-xs.2",name:"Laguna XS.2",description:"Agentic coding model from Poolside in the XS size class for local deployment",family:"laguna",attachment:false,reasoning:true,tool_call:true,structured_output:false,temperature:true,release_date:"2026-04-28",last_updated:"2026-06-13",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:32768}},"poolside/laguna-s-2.1":{id:"poolside/laguna-s-2.1",name:"Laguna S 2.1",description:"Agentic coding model from Poolside in the XS size class for local deployment",family:"laguna",attachment:false,reasoning:true,tool_call:true,structured_output:false,temperature:true,release_date:"2026-07-21",last_updated:"2026-07-21",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1048576,output:32768}},"poolside/laguna-xs-2.1":{id:"poolside/laguna-xs-2.1",name:"Laguna XS 2.1",description:"Agentic coding model from Poolside in the XS size class for local deployment",family:"laguna",attachment:false,reasoning:true,tool_call:true,structured_output:false,temperature:true,release_date:"2026-07-02",last_updated:"2026-07-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:32768},benchmarks:[{name:"SWE-Bench Verified",score:70.9,metric:"resolved",harness:"Harbor",source:"https://poolside.ai/blog/introducing-laguna-xs-2-1",date:"2026-07-02"},{name:"SWE-Bench Multilingual",score:63.1,metric:"resolve rate",harness:"Harbor",source:"https://poolside.ai/blog/introducing-laguna-xs-2-1",date:"2026-07-02"},{name:"SWE-Bench Pro",score:47.6,metric:"resolve rate",harness:"Harbor",source:"https://poolside.ai/blog/introducing-laguna-xs-2-1",date:"2026-07-02"},{name:"Terminal-Bench",score:37.5,metric:"success rate",harness:"Harbor",version:"2.0",source:"https://poolside.ai/blog/introducing-laguna-xs-2-1",date:"2026-07-02"}]},"poolside/laguna-m.1":{id:"poolside/laguna-m.1",name:"Laguna M.1",description:"Poolside's open-weight model for agentic coding and long-horizon work",family:"laguna",attachment:false,reasoning:true,tool_call:true,structured_output:false,temperature:true,release_date:"2026-04-28",last_updated:"2026-06-13",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:32768}},"anthropic/claude-haiku-4-5":{id:"anthropic/claude-haiku-4-5",name:"Claude Haiku 4.5 (latest)",description:"Fast Claude lane for lightweight agents, office tasks, and responsive chat",family:"claude-haiku",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-02-28",release_date:"2025-10-15",last_updated:"2025-10-15",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3},benchmarks:[{name:"SWE-Bench Pro",score:39.45,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"anthropic/claude-opus-4-0":{id:"anthropic/claude-opus-4-0",name:"Claude Opus 4 (latest)",description:"Flagship Claude model for deep reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-05-22",last_updated:"2025-05-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:32e3},benchmarks:[{name:"Aider Polyglot",score:72,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-25"}]},"anthropic/claude-3-7-sonnet-20250219":{id:"anthropic/claude-3-7-sonnet-20250219",name:"Claude Sonnet 3.7",description:"Balanced Claude model for coding, analysis, agent workflows, and cost control",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-10-31",release_date:"2025-02-19",last_updated:"2025-02-19",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3},benchmarks:[{name:"Aider Polyglot",score:64.9,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-02-24"}]},"anthropic/claude-opus-4-5":{id:"anthropic/claude-opus-4-5",name:"Claude Opus 4.5 (latest)",description:"Flagship Claude model for deep reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-05",release_date:"2025-11-24",last_updated:"2025-11-24",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3}},"anthropic/claude-3-5-sonnet-20241022":{id:"anthropic/claude-3-5-sonnet-20241022",name:"Claude Sonnet 3.5 v2",description:"Balanced Claude model for coding, analysis, agent workflows, and cost control",family:"claude-sonnet",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-04-30",release_date:"2024-10-22",last_updated:"2024-10-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:8192},benchmarks:[{name:"Aider Polyglot",score:51.6,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-01-17"}]},"anthropic/claude-sonnet-4-5":{id:"anthropic/claude-sonnet-4-5",name:"Claude Sonnet 4.5 (latest)",description:"Balanced Claude model for coding, analysis, agent workflows, and cost control",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-07-31",release_date:"2025-09-29",last_updated:"2025-09-29",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3},benchmarks:[{name:"SWE-Bench Pro",score:43.6,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"anthropic/claude-opus-5-5":{id:"anthropic/claude-opus-5-5",name:"Claude Opus 5.5",description:"Claude model for long-running agentic coding and knowledge work",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-06",release_date:"2026-09-22",last_updated:"2026-09-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"Terminal-Bench",score:66.4,metric:"score",variant:"xhigh effort; production safeguards with fallback",version:"4.0",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"FrontierCode",score:54.4,metric:"score",variant:"max effort; production safeguards with fallback",dataset:"Main",version:"1.1",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"CursorBench",score:57.8,metric:"score",variant:"max effort; production safeguards with fallback",version:"4.0",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"GDPval-AA",score:1846,metric:"Elo",variant:"max effort; production safeguards with fallback",version:"2.1",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"AutomationBench",score:40,metric:"pass rate",variant:"max effort; production safeguards; no fallback",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"Humanity's Last Exam",score:67.7,metric:"score",variant:"max effort; with tools; production safeguards with fallback",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"Terminal-Bench-Science",score:58.7,metric:"score",variant:"max effort; production safeguards with fallback",version:"0.1",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"OSWorld",score:81.8,metric:"partial score",variant:"max effort; production safeguards with fallback",version:"2.0",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"},{name:"Chartography",score:89,metric:"score",variant:"max effort; with tools; production safeguards with fallback",source:"https://www.anthropic.com/claude-opus-5-5",date:"2026-09-22"}]},"anthropic/claude-opus-4-20250514":{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4",description:"Flagship Claude model for deep reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-05-22",last_updated:"2025-05-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:32e3},benchmarks:[{name:"Aider Polyglot",score:72,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-25"}]},"anthropic/claude-fable-5-1":{id:"anthropic/claude-fable-5-1",name:"Claude Fable 5.1",description:"Claude model for demanding reasoning and long-horizon agentic work",family:"claude-fable",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-06",release_date:"2026-09-01",last_updated:"2026-09-01",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"Terminal-Bench-Science",score:52.6,metric:"score",variant:"production safeguards with fallback",version:"0.1",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"Terminal-Bench",score:55.8,metric:"score",variant:"production safeguards with fallback",version:"4.0",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"GDPval-AA",score:1853,metric:"Elo",variant:"production safeguards with fallback",version:"2",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"OSWorld",score:77.9,metric:"partial score",variant:"production safeguards; interventions score zero; no fallback",dataset:"August 2026 task release",version:"2.0",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"OSWorld",score:41.7,metric:"strict success rate",variant:"production safeguards; interventions score zero; no fallback",dataset:"August 2026 task release",version:"2.0",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"Humanity's Last Exam",score:60.9,metric:"score",variant:"without tools; production safeguards with fallback",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"Humanity's Last Exam",score:65,metric:"score",variant:"with tools; production safeguards with fallback",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"AutomationBench",score:31.4,metric:"pass rate",variant:"production safeguards with fallback",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"},{name:"CursorBench",score:73.4,metric:"score",variant:"max effort; production safeguards with fallback",version:"3.2.0",source:"https://www.anthropic.com/claude-fable-and-mythos-5-1",date:"2026-09-01"}]},"anthropic/claude-mythos-5":{id:"anthropic/claude-mythos-5",name:"Claude Mythos 5",description:"Restricted Claude model for advanced cybersecurity and biology research workflows",family:"claude-mythos",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-01-31",release_date:"2026-06-09",last_updated:"2026-06-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3}},"anthropic/claude-opus-4-1-20250805":{id:"anthropic/claude-opus-4-1-20250805",name:"Claude Opus 4.1",description:"Flagship Claude model for deep reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-08-05",last_updated:"2025-08-05",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:32e3}},"anthropic/claude-opus-4-5-20251101":{id:"anthropic/claude-opus-4-5-20251101",name:"Claude Opus 4.5",description:"Flagship Claude model for deep reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-05",release_date:"2025-11-01",last_updated:"2025-11-01",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3},benchmarks:[{name:"SWE-Bench Pro",score:45.89,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"anthropic/claude-opus-4-1":{id:"anthropic/claude-opus-4-1",name:"Claude Opus 4.1 (latest)",description:"Flagship Claude model for deep reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-08-05",last_updated:"2025-08-05",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:32e3}},"anthropic/claude-sonnet-4-0":{id:"anthropic/claude-sonnet-4-0",name:"Claude Sonnet 4 (latest)",description:"Balanced Claude model for coding, analysis, agent workflows, and cost control",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-05-22",last_updated:"2025-05-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3},benchmarks:[{name:"Aider Polyglot",score:61.3,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-24"},{name:"SWE-Bench Pro",score:42.7,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"anthropic/claude-opus-5":{id:"anthropic/claude-opus-5",name:"Claude Opus 5",description:"Strongest Claude Opus model for coding, agents, and professional work",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-05",release_date:"2026-07-24",last_updated:"2026-07-24",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Verified",score:96,metric:"resolved",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"SWE-Bench Pro",score:79.2,metric:"resolve rate",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"SWE-Bench Multilingual",score:89.5,metric:"resolve rate",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"SWE-Bench Multimodal",score:59.4,metric:"resolve rate",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"DeepSWE",score:68.8,metric:"resolve rate",version:"1.1",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"FrontierCode",score:53.4,metric:"mean@5",variant:"medium effort",dataset:"Main",version:"1.1",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"Frontier-Bench",score:43.3,metric:"mean reward",harness:"mini-SWE-agent",variant:"max effort",version:"v0.1",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"BrowseComp",score:90.8,metric:"accuracy",variant:"single agent",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"Humanity's Last Exam",score:56.3,metric:"accuracy",variant:"no tools",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"Humanity's Last Exam",score:64.7,metric:"accuracy",variant:"with tools",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"DeepSearchQA",score:95,metric:"F1",variant:"max effort",source:"https://www.anthropic.com/news/claude-opus-5",date:"2026-07-24"},{name:"OSWorld",score:70.6,metric:"success rate",version:"2.0",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"GDPval-AA",score:1861,metric:"Elo",variant:"max effort",version:"v2",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"AA-Briefcase",score:1720,metric:"Elo",variant:"max effort",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"AutomationBench",score:26,metric:"success rate",variant:"max effort",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"ARC-AGI-1",score:97.5,metric:"accuracy",variant:"max effort",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"ARC-AGI-2",score:90.4,metric:"accuracy",variant:"max effort",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"ARC-AGI-3",score:30.2,metric:"RHAE",variant:"high effort",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"},{name:"HealthBench Professional",score:59.8,metric:"score",variant:"max effort",source:"https://www.anthropic.com/claude-opus-5-system-card",date:"2026-07-24"}]},"anthropic/claude-fable-5":{id:"anthropic/claude-fable-5",name:"Claude Fable 5",description:"Claude model for creative writing, analysis, and controlled agent workflows",family:"claude-fable",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-01-31",release_date:"2026-06-09",last_updated:"2026-06-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:80.3,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"SWE-Bench Verified",score:95,metric:"resolved",source:"https://benchlm.ai/benchmarks/sweVerified"},{name:"Terminal-Bench",score:88,metric:"success rate",version:"2.1",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"Humanity's Last Exam",score:59,metric:"accuracy",variant:"no tools",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"Humanity's Last Exam",score:64.5,metric:"accuracy",variant:"with tools",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"OSWorld-Verified",score:85,metric:"success rate",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"FrontierCode",score:29.3,metric:"pass rate",variant:"high effort",dataset:"Diamond",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"GDPval-AA",score:1932,metric:"Elo",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"AutomationBench",score:17.4,metric:"success rate",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"}]},"anthropic/claude-opus-4-8":{id:"anthropic/claude-opus-4-8",name:"Claude Opus 4.8",description:"Top Claude Opus tier for the hardest reasoning, coding, and long-horizon agents",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-01",release_date:"2026-05-28",last_updated:"2026-05-28",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:69.2,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"Terminal-Bench",score:74.6,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"SWE-Bench Verified",score:88.6,metric:"resolved",source:"https://benchlm.ai/benchmarks/sweVerified"},{name:"Humanity's Last Exam",score:49.8,metric:"accuracy",variant:"no tools",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"Humanity's Last Exam",score:57.9,metric:"accuracy",variant:"with tools",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"OSWorld-Verified",score:83.4,metric:"success rate",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"},{name:"FrontierCode",score:13.4,metric:"pass rate",variant:"high effort",dataset:"Diamond",source:"https://www.anthropic.com/news/claude-fable-5-mythos-5",date:"2026-06-09"}]},"anthropic/claude-sonnet-4-5-20250929":{id:"anthropic/claude-sonnet-4-5-20250929",name:"Claude Sonnet 4.5",description:"Balanced Claude model for coding, analysis, agent workflows, and cost control",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-07-31",release_date:"2025-09-29",last_updated:"2025-09-29",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3}},"anthropic/claude-sonnet-5":{id:"anthropic/claude-sonnet-5",name:"Claude Sonnet 5",description:"Everyday Claude agent model for coding, planning, browsing, and general work",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-01-31",release_date:"2026-06-30",last_updated:"2026-06-30",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Verified",score:85.2,metric:"resolved",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"SWE-Bench Pro",score:63.2,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"SWE-Bench Multilingual",score:78.3,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"Terminal-Bench",score:80.4,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"OSWorld-Verified",score:81.2,metric:"success rate",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"BrowseComp",score:84.7,metric:"accuracy",variant:"single agent",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"FrontierCode",score:38.8,metric:"pass rate",version:"v1",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"}]},"anthropic/claude-opus-4-6":{id:"anthropic/claude-opus-4-6",name:"Claude Opus 4.6",description:"High-end Claude for difficult coding, planning, and slower expert reasoning",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-05-31",release_date:"2026-02-05",last_updated:"2026-03-13",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:51.9,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"},{name:"SWE-Atlas Codebase QnA",score:33.3,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Codebase QnA",score:30,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:35.58,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:36.67,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"SWE-Atlas Test Writing",score:36.08,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"Artificial Analysis Coding Agent Index",score:51.3,metric:"average pass@1",harness:"Claude Code",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:71.9,metric:"pass@1",harness:"Claude Code",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:11.8,metric:"pass@1",harness:"Claude Code",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:70.2,metric:"pass@1",harness:"Claude Code",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"}]},"anthropic/claude-haiku-4-5-20251001":{id:"anthropic/claude-haiku-4-5-20251001",name:"Claude Haiku 4.5",description:"Fast Claude model for responsive assistance, classification, and lightweight agents",family:"claude-haiku",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-02-28",release_date:"2025-10-15",last_updated:"2025-10-15",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3}},"anthropic/claude-sonnet-4-6":{id:"anthropic/claude-sonnet-4-6",name:"Claude Sonnet 4.6",description:"Claude workhorse for coding agents, careful analysis, and production cost control",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-08-31",release_date:"2026-02-17",last_updated:"2026-03-13",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:64e3},benchmarks:[{name:"SWE-Atlas Codebase QnA",score:31.2,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:32.21,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:31.76,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"Artificial Analysis Coding Agent Index",score:49.4,metric:"average pass@1",harness:"Claude Code",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:70.3,metric:"pass@1",harness:"Claude Code",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:14.9,metric:"pass@1",harness:"Claude Code",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:63.1,metric:"pass@1",harness:"Claude Code",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:67,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"Humanity's Last Exam",score:34.6,metric:"accuracy",variant:"no tools",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"Humanity's Last Exam",score:46.8,metric:"accuracy",variant:"with tools",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"},{name:"OSWorld-Verified",score:78.5,metric:"success rate",source:"https://www.anthropic.com/news/claude-sonnet-5",date:"2026-06-30"}]},"anthropic/claude-3-haiku-20240307":{id:"anthropic/claude-3-haiku-20240307",name:"Claude Haiku 3",description:"Legacy model retained for compatibility with older integrations",family:"claude-haiku",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2023-08-31",release_date:"2024-03-13",last_updated:"2024-03-13",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:4096}},"anthropic/claude-sonnet-4-20250514":{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4",description:"Balanced Claude model for coding, analysis, agent workflows, and cost control",family:"claude-sonnet",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-05-22",last_updated:"2025-05-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:64e3},benchmarks:[{name:"Aider Polyglot",score:61.3,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-24"}]},"anthropic/claude-3-5-haiku-20241022":{id:"anthropic/claude-3-5-haiku-20241022",name:"Claude Haiku 3.5",description:"Fast Claude model for responsive assistance, classification, and lightweight agents",family:"claude-haiku",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-07-31",release_date:"2024-10-22",last_updated:"2024-10-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:8192},benchmarks:[{name:"Aider Polyglot",score:28,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2024-12-21"}]},"anthropic/claude-opus-4-7":{id:"anthropic/claude-opus-4-7",name:"Claude Opus 4.7",description:"Stronger Opus tier for advanced software work and high-stakes reasoning",family:"claude-opus",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2026-01-31",release_date:"2026-04-16",last_updated:"2026-04-16",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:64.3,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"Terminal-Bench",score:66.1,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"SWE-Atlas Refactoring",score:48.57,metric:"score",harness:"Claude Code",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"Artificial Analysis Coding Agent Index",score:66.6,metric:"average pass@1",harness:"Claude Code",variant:"max",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:81,metric:"pass@1",harness:"Claude Code",variant:"max",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:44.9,metric:"pass@1",harness:"Claude Code",variant:"max",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:73.8,metric:"pass@1",harness:"Claude Code",variant:"max",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Artificial Analysis Coding Agent Index",score:61.2,metric:"average pass@1",harness:"Cursor CLI",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:78.4,metric:"pass@1",harness:"Cursor CLI",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:34.4,metric:"pass@1",harness:"Cursor CLI",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:70.6,metric:"pass@1",harness:"Cursor CLI",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Artificial Analysis Coding Agent Index",score:59.9,metric:"average pass@1",harness:"Claude Code",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:71.7,metric:"pass@1",harness:"Claude Code",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:36.4,metric:"pass@1",harness:"Claude Code",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:71.4,metric:"pass@1",harness:"Claude Code",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"GPQA Diamond",score:94.2,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:46.9,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:54.7,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"OSWorld-Verified",score:78,metric:"success rate",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"}]},"nex-agi/nex-n2-pro":{id:"nex-agi/nex-n2-pro",name:"Nex-N2-Pro",description:"Open agentic MoE model (397B total, 17B active) for coding, tool use, and research workflows",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-02",last_updated:"2026-06-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/nex-agi/Nex-N2-Pro"}]},"cohere/command-r-08-2024":{id:"cohere/command-r-08-2024",name:"Command R",description:"Cohere retrieval model for long-context chat and enterprise RAG workflows",family:"command-r",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2024-08-30",last_updated:"2024-08-30",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-r-08-2024"}]},"cohere/north-mini-code-1-0":{id:"cohere/north-mini-code-1-0",name:"North Mini Code",description:"Cohere coding model for practical software engineering and agentic edits",family:"north",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-09-23",release_date:"2026-06-09",last_updated:"2026-06-09",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:64e3},benchmarks:[{name:"SWE-Bench Verified",score:67.6,metric:"resolved",harness:"SWE-agent",source:"https://huggingface.co/CohereLabs/North-Mini-Code-1.0",date:"2026-06-09"},{name:"SWE-Bench Pro",score:40.2,metric:"resolve rate",harness:"SWE-agent",source:"https://huggingface.co/CohereLabs/North-Mini-Code-1.0",date:"2026-06-09"},{name:"Artificial Analysis Intelligence Index",score:27.6,metric:"index score",source:"https://artificialanalysis.ai/articles/north-mini-code-cohere-s-small-coding-focused-moe-model",date:"2026-06-09"},{name:"Artificial Analysis Coding Index",score:33.4,metric:"index score",source:"https://artificialanalysis.ai/articles/north-mini-code-cohere-s-small-coding-focused-moe-model",date:"2026-06-09"},{name:"GDPval-AA",score:14,metric:"win rate",source:"https://artificialanalysis.ai/articles/north-mini-code-cohere-s-small-coding-focused-moe-model",date:"2026-06-09"},{name:"\u03C4\xB2-Bench Telecom",score:37,metric:"success rate",source:"https://artificialanalysis.ai/articles/north-mini-code-cohere-s-small-coding-focused-moe-model",date:"2026-06-09"}]},"cohere/command-a-translate-08-2025":{id:"cohere/command-a-translate-08-2025",name:"Command A Translate",description:"Translation model for multilingual conversion, localization, and cross-language workflows",family:"command-a",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2025-08-28",last_updated:"2025-08-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:8e3,output:8e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-a-translate-08-2025"}]},"cohere/c4ai-aya-expanse-8b":{id:"cohere/c4ai-aya-expanse-8b",name:"Aya Expanse 8B",description:"Compact open multilingual model optimized for generation across 23 languages",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2024-10-24",last_updated:"2024-10-24",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:8e3,output:4e3},license:"CC-BY-NC-4.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/aya-expanse-8b"}]},"cohere/command-r7b-arabic-02-2025":{id:"cohere/command-r7b-arabic-02-2025",name:"Command R7B Arabic",description:"Open Command R model optimized for Arabic enterprise chat, RAG, and cultural knowledge",family:"command-r",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2025-02-27",last_updated:"2025-02-27",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-r7b-arabic-02-2025"}]},"cohere/command-a-plus-05-2026":{id:"cohere/command-a-plus-05-2026",name:"Command A Plus",description:"Cohere's stronger command model for multilingual agents and enterprise workflows",family:"command-a",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-04-01",release_date:"2026-05-20",last_updated:"2026-06-09",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:64e3}},"cohere/command-a-03-2025":{id:"cohere/command-a-03-2025",name:"Command A",description:"Cohere command model for multilingual enterprise agents, tools, and chat",family:"command-a",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2025-03-13",last_updated:"2025-03-13",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:8e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-a-03-2025"}],benchmarks:[{name:"Aider Polyglot",score:12,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-03-14"}]},"cohere/c4ai-aya-vision-8b":{id:"cohere/c4ai-aya-vision-8b",name:"Aya Vision 8B",description:"Compact open multilingual vision model for OCR and visual question answering",attachment:true,reasoning:false,tool_call:false,temperature:true,release_date:"2025-03-04",last_updated:"2025-05-14",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:16e3,output:4e3},license:"CC-BY-NC-4.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/aya-vision-8b"}]},"cohere/c4ai-aya-vision-32b":{id:"cohere/c4ai-aya-vision-32b",name:"Aya Vision 32B",description:"Open multilingual vision model for OCR, visual reasoning, and image question answering",attachment:true,reasoning:false,tool_call:false,temperature:true,release_date:"2025-03-04",last_updated:"2025-05-14",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:16e3,output:4e3},license:"CC-BY-NC-4.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/aya-vision-32b"}]},"cohere/command-r7b-12-2024":{id:"cohere/command-r7b-12-2024",name:"Command R7B",description:"Cohere retrieval model for long-context chat and enterprise RAG workflows",family:"command-r",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2024-12-02",last_updated:"2024-12-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-r7b-12-2024"}]},"cohere/command-r-plus-08-2024":{id:"cohere/command-r-plus-08-2024",name:"Command R+",description:"Cohere's RAG workhorse for long-context enterprise search and tool use",family:"command-r",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2024-08-30",last_updated:"2024-08-30",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-r-plus-08-2024"}]},"cohere/command-a-vision-07-2025":{id:"cohere/command-a-vision-07-2025",name:"Command A Vision",description:"Cohere vision model for multilingual document analysis, OCR, and image understanding",family:"command-a",attachment:true,reasoning:false,tool_call:false,temperature:true,knowledge:"2024-06-01",release_date:"2025-07-31",last_updated:"2025-07-31",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:8e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-a-vision-07-2025"}]},"cohere/command-a-reasoning-08-2025":{id:"cohere/command-a-reasoning-08-2025",name:"Command A Reasoning",description:"Cohere reasoning model for multilingual enterprise agents, tools, and complex workflows",family:"command-a",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-06-01",release_date:"2025-08-21",last_updated:"2025-08-21",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:32e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/c4ai-command-a-reasoning-08-2025"}]},"cohere/c4ai-aya-expanse-32b":{id:"cohere/c4ai-aya-expanse-32b",name:"Aya Expanse 32B",description:"Open multilingual model optimized for generation across 23 languages",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2024-10-24",last_updated:"2024-10-24",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4e3},license:"CC-BY-NC-4.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/CohereLabs/aya-expanse-32b"}]},"deepseek/deepseek-v4-flash-0731":{id:"deepseek/deepseek-v4-flash-0731",name:"DeepSeek V4 Flash 0731",description:"Official DeepSeek V4 Flash release with enhanced agentic capabilities and integrated DSpark speculative decoding",family:"deepseek-flash",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-05",release_date:"2026-07-31",last_updated:"2026-07-31",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},license:"MIT",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-0731"}],benchmarks:[{name:"Terminal-Bench",score:82.7,metric:"pass@1",variant:"max",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-0731"},{name:"NL2Repo",score:54.2,metric:"resolve rate",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"CyberGym",score:76.7,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"DeepSWE",score:54.4,metric:"resolve rate",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"Toolathlon-Verified",score:70.3,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"Agents' Last Exam",score:25.2,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"AutomationBench",score:25.1,metric:"success rate",variant:"max effort",dataset:"public",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"DSBench-FullStack",score:68.7,metric:"score",variant:"max effort",dataset:"internal",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"},{name:"DSBench-Hard",score:59.6,metric:"score",variant:"max effort",dataset:"internal",source:"https://api-docs.deepseek.com/updates/",date:"2026-07-31"}]},"deepseek/deepseek-v3-0324":{id:"deepseek/deepseek-v3-0324",name:"DeepSeek V3 0324",description:"March 2025 checkpoint of DeepSeek-V3 with improved reasoning and coding",family:"deepseek",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2025-03-24",last_updated:"2025-03-24",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:163840,output:163840},weights:[{label:"Model weights",url:"https://huggingface.co/deepseek-ai/DeepSeek-V3-0324",format:"safetensors"}]},"deepseek/deepseek-v4-flash-0423":{id:"deepseek/deepseek-v4-flash-0423",name:"DeepSeek V4 Flash 0423",description:"Initial DeepSeek V4 Flash snapshot for economical reasoning, coding, and million-token agent workloads",family:"deepseek-flash",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-05",release_date:"2026-04-23",last_updated:"2026-04-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},license:"MIT",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"}]},"deepseek/deepseek-v4.1-flash":{id:"deepseek/deepseek-v4.1-flash",name:"DeepSeek V4.1 Flash",description:"DeepSeek V4.1 Flash model for reasoning and agentic coding",family:"deepseek-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-05",release_date:"2026-09-10",last_updated:"2026-09-10",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},license:"MIT",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"}],benchmarks:[{name:"GPQA Diamond",score:90.9,metric:"pass@1",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"MathArena Apex",score:65.6,metric:"pass@1",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Humanity's Last Exam",score:36.8,metric:"pass@1",variant:"reasoning_effort=100",dataset:"full set",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Humanity's Last Exam",score:39.1,metric:"pass@1",variant:"reasoning_effort=100",dataset:"text-only subset",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Codeforces",score:3471,metric:"rating",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:90.6,metric:"pass@1",harness:"DeepSeek Harness minimal mode",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:30,metric:"pass@1",harness:"DeepSeek Harness minimal mode",variant:"reasoning_effort=100",version:"3.0",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:31.2,metric:"pass@1",harness:"DeepSeek Harness minimal mode",variant:"reasoning_effort=100",version:"4.0",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:74.2,metric:"resolved",harness:"mini-swe-agent",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"ProgramBench",score:20.3,metric:"almost@1",harness:"DeepSeek Harness minimal mode",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"NL2Repo",score:64,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"CyberGym",score:88.1,metric:"pass@1",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"ExploitGym",score:15.3,metric:"pass@1",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"AutomationBench",score:54.8,metric:"pass@1",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Agents' Last Exam",score:31.8,metric:"pass@1",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"SEC-Bench Pro",score:62.8,metric:"pass@1",harness:"Claude Code",variant:"reasoning_effort=100",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Humanity's Last Exam",score:63.9,metric:"pass@1",variant:"reasoning_effort=100; with tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Chartography",score:78.9,metric:"pass@1",harness:"Claude Code",variant:"reasoning_effort=100; with tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"BabyVision",score:89.6,metric:"pass@1",harness:"Claude Code",variant:"reasoning_effort=100; with tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"ZeroBench",score:49,metric:"pass@5",harness:"Claude Code",variant:"reasoning_effort=100; with tools",dataset:"main",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:69.8,metric:"resolved",harness:"Claude Code",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:88,metric:"pass@1",harness:"Claude Code",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:65.6,metric:"resolved",harness:"Codex",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:84.1,metric:"pass@1",harness:"Codex",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:65.5,metric:"resolved",harness:"OpenCode",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:85,metric:"pass@1",harness:"OpenCode",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:66.2,metric:"resolved",harness:"Pi",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:86.1,metric:"pass@1",harness:"Pi",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:90.3,metric:"pass@1",harness:"mini-swe-agent",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:72.6,metric:"resolved",harness:"DeepSeek Harness minimal mode",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:70.5,metric:"resolved",harness:"DeepSeek Harness standard mode",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:85.8,metric:"pass@1",harness:"DeepSeek Harness standard mode",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"DeepSWE",score:67.6,metric:"resolved",harness:"DeepSeek Harness PTC mode",variant:"reasoning_effort=100",version:"1.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"},{name:"Terminal-Bench",score:85.8,metric:"pass@1",harness:"DeepSeek Harness PTC mode",variant:"reasoning_effort=100",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash"}]},"deepseek/deepseek-v4-flash-vision-exp":{id:"deepseek/deepseek-v4-flash-vision-exp",name:"DeepSeek V4 Flash Vision Exp",description:"Experimental multimodal DeepSeek V4 Flash model for image understanding, coding, and agentic work",family:"deepseek-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-21",last_updated:"2026-09-01",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},license:"MIT",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"}],benchmarks:[{name:"Terminal-Bench",score:83.9,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"NL2Repo",score:57.7,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"CyberGym",score:75.3,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"DeepSWE",score:59.3,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"Toolathlon-Verified",score:75.9,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"DSBench-Hard",score:63.6,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",dataset:"internal",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"AutomationBench",score:25.7,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",dataset:"public",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"ApexBench",score:36.5,metric:"pass@1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"Agents' Last Exam",score:27.3,metric:"score",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"Chartography",score:64.3,metric:"score",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"},{name:"ZeroBench",score:35,metric:"pass@5",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp"}]},"deepseek/deepseek-v3":{id:"deepseek/deepseek-v3",name:"DeepSeek-V3",description:"Open DeepSeek MoE chat model for coding, math, and general reasoning",family:"deepseek",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2024-12-26",last_updated:"2024-12-26",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},license:"DeepSeek Model License",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V3"}]},"deepseek/deepseek-ocr-2":{id:"deepseek/deepseek-ocr-2",name:"DeepSeek OCR 2",description:"High-accuracy OCR model for extracting text from documents, screenshots, receipts, and natural scenes",attachment:true,reasoning:false,tool_call:false,release_date:"2026-01-27",last_updated:"2026-01-27",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:8192,output:8192}},"deepseek/deepseek-chat":{id:"deepseek/deepseek-chat",name:"DeepSeek Chat",description:"DeepSeek chat model for instruction following, coding, and analysis",family:"deepseek",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-09",release_date:"2025-12-01",last_updated:"2026-02-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V3.2"}],benchmarks:[{name:"Aider Polyglot",score:70.2,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-10-03"}]},"deepseek/deepseek-v4-pro-0813":{id:"deepseek/deepseek-v4-pro-0813",name:"DeepSeek V4 Pro 0813",description:"DeepSeek V4 Pro snapshot with million-token context and support for thinking and non-thinking modes",family:"deepseek-thinking",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-12",last_updated:"2026-08-22",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},license:"MIT",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"}],benchmarks:[{name:"Humanity's Last Exam",score:42.7,metric:"score",variant:"without tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"Humanity's Last Exam",score:60,metric:"score",variant:"with tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"Terminal-Bench",score:87.9,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",version:"2.1",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"NL2Repo",score:61.5,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"CyberGym",score:83.3,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"DeepSWE",score:62.7,metric:"score",harness:"DeepSeek Harness minimal mode",variant:"max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"Toolathlon-Verified",score:74.1,metric:"score",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"Agents' Last Exam",score:25.7,metric:"score",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"AutomationBench",score:31.8,metric:"score",dataset:"public",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"DSBench-FullStack",score:71.1,metric:"score",dataset:"internal",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"},{name:"DSBench-Hard",score:67.2,metric:"score",dataset:"internal",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-0813"}]},"deepseek/deepseek-v4-pro-0423":{id:"deepseek/deepseek-v4-pro-0423",name:"DeepSeek V4 Pro 0423",description:"DeepSeek V4 Pro initial snapshot with million-token context and support for thinking and non-thinking modes",family:"deepseek-thinking",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-05",release_date:"2026-04-23",last_updated:"2026-04-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3}},"deepseek/deepseek-reasoner":{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner",description:"DeepSeek reasoning model for multi-step analysis, math, coding, and tools",family:"deepseek-thinking",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-09",release_date:"2025-12-01",last_updated:"2026-02-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V3.2"}],benchmarks:[{name:"Aider Polyglot",score:74.2,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-10-03"}]},"deepseek/deepseek-r1-distill-qwen-32b":{id:"deepseek/deepseek-r1-distill-qwen-32b",name:"DeepSeek-R1-Distill-Qwen-32B",description:"R1 reasoning distilled into Qwen 2.5 32B for efficient open-weight step-by-step problem solving",family:"deepseek-thinking",attachment:false,reasoning:true,tool_call:false,temperature:true,release_date:"2025-01-20",last_updated:"2025-01-20",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"}]},"deepseek/deepseek-v3.1":{id:"deepseek/deepseek-v3.1",name:"DeepSeek-V3.1",description:"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes",family:"deepseek",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-08-21",last_updated:"2025-08-21",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},license:"MIT License",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V3.1"}]},"deepseek/deepseek-r1":{id:"deepseek/deepseek-r1",name:"DeepSeek-R1",description:"Classic open reasoning model for transparent math, coding, and deliberate problem solving",family:"deepseek-thinking",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-07",release_date:"2025-01-20",last_updated:"2025-05-29",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-R1"}],benchmarks:[{name:"Aider Polyglot",score:56.9,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-01-20"},{name:"Artificial Analysis Coding Index",score:15.9,metric:"index",source:"https://openrouter.ai/deepseek/deepseek-r1/benchmarks",date:"2026-03-11"},{name:"SciCode",score:35.7,metric:"percent correct",source:"https://openrouter.ai/deepseek/deepseek-r1/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:6.1,metric:"success rate",source:"https://openrouter.ai/deepseek/deepseek-r1/benchmarks",date:"2026-03-11"}]},"deepseek/deepseek-v4-pro":{id:"deepseek/deepseek-v4-pro",name:"DeepSeek V4 Pro",description:"Open MoE flagship with million-token context for coding and long agent runs",family:"deepseek-thinking",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-05",release_date:"2026-04-24",last_updated:"2026-04-24",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"}],benchmarks:[{name:"SWE-Bench Verified",score:80.6,metric:"resolved",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Artificial Analysis Coding Agent Index",score:50.1,metric:"average pass@1",harness:"Claude Code",variant:"high",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:67.8,metric:"pass@1",harness:"Claude Code",variant:"high",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:18,metric:"pass@1",harness:"Claude Code",variant:"high",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:64.7,metric:"pass@1",harness:"Claude Code",variant:"high",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"MMLU-Pro",score:87.5,metric:"EM",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"SimpleQA-Verified",score:57.9,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Chinese SimpleQA",score:84.4,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"GPQA Diamond",score:90.1,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Humanity's Last Exam",score:37.7,metric:"pass@1",variant:"preview checkpoint; max effort; without tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"LiveCodeBench",score:93.5,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Codeforces",score:3206,metric:"rating",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"HMMT",score:95.2,metric:"pass@1",variant:"preview checkpoint; max effort",dataset:"February 2026",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"IMOAnswerBench",score:89.8,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"MathArena Apex",score:38.3,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"MathArena Apex Shortlist",score:90.2,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"MRCR",score:83.5,metric:"MMR",variant:"preview checkpoint; max effort",dataset:"1M context",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"CorpusQA",score:62,metric:"accuracy",variant:"preview checkpoint; max effort",dataset:"1M context",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Terminal-Bench",score:67.9,metric:"accuracy",variant:"preview checkpoint; max effort",version:"2.0",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"SWE-Bench Pro",score:55.4,metric:"resolved",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"SWE-Bench Multilingual",score:76.2,metric:"resolved",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"BrowseComp",score:83.4,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Humanity's Last Exam",score:48.2,metric:"pass@1",variant:"preview checkpoint; max effort; with tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"MCP Atlas",score:73.6,metric:"pass@1",variant:"preview checkpoint; max effort",dataset:"public",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"GDPval-AA",score:1554,metric:"Elo",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"},{name:"Toolathlon",score:51.8,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"}]},"deepseek/deepseek-v3.2":{id:"deepseek/deepseek-v3.2",name:"DeepSeek V3.2",description:"Hybrid-reasoning DeepSeek model with thinking and non-thinking modes, sparse attention, and tool-use",family:"deepseek",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-07",release_date:"2025-12-01",last_updated:"2025-12-01",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:64e3},license:"MIT License",weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V3.2"}]},"deepseek/deepseek-v4-flash":{id:"deepseek/deepseek-v4-flash",name:"DeepSeek V4 Flash",description:"Fast DeepSeek V4 lane for economical reasoning, coding, and long-context work",family:"deepseek-flash",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-05",release_date:"2026-04-24",last_updated:"2026-04-24",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:384e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"}],benchmarks:[{name:"SWE-Bench Verified",score:79,metric:"resolved",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"MMLU-Pro",score:86.2,metric:"EM",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"SimpleQA-Verified",score:34.1,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"Chinese SimpleQA",score:78.9,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"GPQA Diamond",score:88.1,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"Humanity's Last Exam",score:34.8,metric:"pass@1",variant:"preview checkpoint; max effort; without tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"LiveCodeBench",score:91.6,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"Codeforces",score:3052,metric:"rating",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"HMMT",score:94.8,metric:"pass@1",variant:"preview checkpoint; max effort",dataset:"February 2026",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"IMOAnswerBench",score:88.4,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"MathArena Apex",score:33,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"MathArena Apex Shortlist",score:85.7,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"MRCR",score:78.7,metric:"MMR",variant:"preview checkpoint; max effort",dataset:"1M context",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"CorpusQA",score:60.5,metric:"accuracy",variant:"preview checkpoint; max effort",dataset:"1M context",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"Terminal-Bench",score:56.9,metric:"accuracy",variant:"preview checkpoint; max effort",version:"2.0",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"SWE-Bench Pro",score:52.6,metric:"resolved",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"SWE-Bench Multilingual",score:73.3,metric:"resolved",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"BrowseComp",score:73.2,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"Humanity's Last Exam",score:45.1,metric:"pass@1",variant:"preview checkpoint; max effort; with tools",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"MCP Atlas",score:69,metric:"pass@1",variant:"preview checkpoint; max effort",dataset:"public",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"GDPval-AA",score:1395,metric:"Elo",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"},{name:"Toolathlon",score:47.8,metric:"pass@1",variant:"preview checkpoint; max effort",source:"https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash"}]},"quiverai/arrow-2":{id:"quiverai/arrow-2",name:"Arrow 2",description:"Fast SVG generation model for creation, vectorization, editing, and animation",attachment:true,reasoning:true,tool_call:true,release_date:"2026-09-16",last_updated:"2026-09-16",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:131072,output:65536}},"quiverai/arrow-2-telos":{id:"quiverai/arrow-2-telos",name:"Arrow 2 Telos",description:"High-fidelity SVG generation model for complex vector work and long-context refinement",attachment:true,reasoning:true,tool_call:true,release_date:"2026-09-16",last_updated:"2026-09-16",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:105e4,output:65536}},"unbiased/pareto":{id:"unbiased/pareto",name:"Pareto",description:"Blended multimodal model that runs multiple language models in parallel and returns a synthesized answer",attachment:true,reasoning:false,tool_call:true,structured_output:false,temperature:true,release_date:"2026-09-17",last_updated:"2026-09-17",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:262144,output:131072}},"openbmb/minicpm5-2b":{id:"openbmb/minicpm5-2b",name:"MiniCPM5-2B",description:"Dense 2B-class open-source model for on-device and resource-constrained use, with native long-context support, tool calling, and agentic tasks",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-09-06",last_updated:"2026-09-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},license:"apache-2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/openbmb/MiniCPM5-2B"}]},"openbmb/minicpm5-1b":{id:"openbmb/minicpm5-1b",name:"MiniCPM5-1B",description:"Dense 1B-class open-source model for on-device and resource-constrained use, with native long-context support, Think / No Think chat modes, and tool calling",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-05-19",last_updated:"2026-05-19",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},license:"apache-2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/openbmb/MiniCPM5-1B"}]},"tencent/hy3-preview":{id:"tencent/hy3-preview",name:"Hy3 preview",description:"Tencent Hy reasoning model for coding, instruction following, and agent tasks",family:"Hy",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-04-20",last_updated:"2026-04-20",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:64e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/tencent/Hy3-preview"}],benchmarks:[{name:"SWE-Bench Verified",score:74.4,metric:"resolved",source:"https://huggingface.co/tencent/Hy3-preview"}]},"tencent/hy3":{id:"tencent/hy3",name:"Hy3",description:"Tencent Hy reasoning model for coding, instruction following, and agent tasks",family:"Hy",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-07-06",last_updated:"2026-07-06",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,input:192e3,output:128e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/tencent/Hy3"}],benchmarks:[{name:"SWE-Bench Verified",score:78,metric:"resolved",source:"https://huggingface.co/tencent/Hy3"},{name:"SWE-Bench Multilingual",score:75.8,metric:"score",harness:"SWE-agent",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"SWE-Bench Pro",score:57.9,metric:"score",harness:"SWE-agent",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"Terminal-Bench",score:71.7,metric:"score",harness:"Terminus 2",variant:"highest reasoning effort; 4h timeout; 500 episodes",version:"2.1",source:"https://huggingface.co/tencent/Hy3"},{name:"NL2Repo",score:45.6,metric:"score",harness:"Claude Code",variant:"highest reasoning effort; 250 turns; 12000s timeout",source:"https://huggingface.co/tencent/Hy3"},{name:"DeepSWE",score:28,metric:"score",harness:"mini-swe-agent",variant:"highest reasoning effort; 2h timeout",source:"https://huggingface.co/tencent/Hy3"},{name:"BrowseComp",score:84.2,metric:"score",harness:"Tencent internal search harness",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"WideSearch",score:76.4,metric:"score",harness:"Tencent internal search harness",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"DeepSearchQA",score:91,metric:"score",harness:"Tencent internal search harness",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"MCP Atlas",score:79.1,metric:"score",harness:"Scale AI",variant:"highest reasoning effort; April 2026; 100 tool calls",dataset:"500 public tasks",source:"https://huggingface.co/tencent/Hy3"},{name:"Toolathlon",score:48.5,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"APEX-Agents",score:25.6,metric:"pass@1",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"ClawEval",score:68.5,metric:"pass@3",harness:"Tencent internal harness",variant:"highest reasoning effort",dataset:"105 queries",version:"20260325",source:"https://huggingface.co/tencent/Hy3"},{name:"WildClawBench",score:53.6,metric:"score",harness:"OpenClaw",variant:"highest reasoning effort",dataset:"35 text-only tasks",source:"https://huggingface.co/tencent/Hy3"},{name:"SkillsBench",score:55.3,metric:"average over 3 runs",harness:"Claude Code",variant:"highest reasoning effort",dataset:"79 text-only tasks",source:"https://huggingface.co/tencent/Hy3"},{name:"Humanity's Last Exam",score:53.2,metric:"score",variant:"highest reasoning effort; with tools",dataset:"text-only",source:"https://huggingface.co/tencent/Hy3"},{name:"Humanity's Last Exam",score:37,metric:"score",variant:"highest reasoning effort; without tools",dataset:"text-only",source:"https://huggingface.co/tencent/Hy3"},{name:"GPQA Diamond",score:90.4,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"FrontierScience",score:21.3,metric:"score",variant:"highest reasoning effort; research",source:"https://huggingface.co/tencent/Hy3"},{name:"FrontierScience",score:74.8,metric:"score",variant:"highest reasoning effort; olympiad",source:"https://huggingface.co/tencent/Hy3"},{name:"USAMO",score:72,metric:"score",variant:"highest reasoning effort",version:"2026",source:"https://huggingface.co/tencent/Hy3"},{name:"MathArena Apex",score:38.7,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"ArxivMath",score:52.2,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"HorizonMath",score:7.1,metric:"pass@12",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"PHYBench",score:77.4,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"CMT Benchmark",score:37.8,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"IMOAnswerBench",score:90,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"SuperChem",score:54.9,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"CL-bench",score:23.8,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"CL-bench-life",score:17,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"},{name:"AA-LCR",score:73.4,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/tencent/Hy3"}]},"tencent/hy4-preview":{id:"tencent/hy4-preview",name:"Hy4 preview",description:"A next-generation productivity model with significantly enhanced Agent and complex task execution capabilities.",family:"Hy",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-08-28",last_updated:"2026-08-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1024e3,output:64e3}},"ai21/jamba-large":{id:"ai21/jamba-large",name:"Jamba Large",description:"AI21's hybrid SSM-Transformer long-context model for enterprise agents and grounded generation",family:"jamba",attachment:false,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-08-22",release_date:"2025-07-01",last_updated:"2025-07-01",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/ai21labs/AI21-Jamba-Large-1.6"}]},"ai21/jamba-mini":{id:"ai21/jamba-mini",name:"Jamba Mini",description:"AI21's efficient, lightweight hybrid SSM-Transformer model for a wide range of tasks",family:"jamba",attachment:false,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-08-22",release_date:"2026-01-01",last_updated:"2026-01-01",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/ai21labs/AI21-Jamba-Mini-1.6"}]},"thinkingmachines/inkling-small":{id:"thinkingmachines/inkling-small",name:"Inkling Small",description:"Multimodal MoE reasoning model (276B total, 12B active) for text, image, and audio",family:"ling",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-07-30",last_updated:"2026-07-30",modalities:{input:["text","image","audio"],output:["text"]},open_weights:true,limit:{context:1048576,output:1048576},license:"Apache-2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/thinkingmachines/Inkling-Small"}]},"thinkingmachines/inkling":{id:"thinkingmachines/inkling",name:"Inkling",description:"Multimodal MoE reasoning model (975B total, 41B active) for text, image, and audio",family:"ling",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-07-15",last_updated:"2026-07-15",modalities:{input:["text","image","audio"],output:["text"]},open_weights:true,limit:{context:1048576,output:1048576},license:"Apache-2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/thinkingmachines/Inkling"}]},"sarvam/sarvam-30b":{id:"sarvam/sarvam-30b",name:"Sarvam 30B",description:"Efficient Indian-language reasoning model for chat, coding, and multilingual work",family:"sarvam",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-02-18",last_updated:"2026-02-18",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3}},"sarvam/sarvam-105b":{id:"sarvam/sarvam-105b",name:"Sarvam 105B",description:"Flagship Indian-language reasoning model for enterprise multilingual applications",family:"sarvam",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-09-01",last_updated:"2025-09-01",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072}},"meituan/longcat-2.0":{id:"meituan/longcat-2.0",name:"LongCat-2.0",description:"Meituan LongCat-2.0, a reasoning model with tool calling and a 1M-token context window",family:"longcat",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-30",last_updated:"2026-06-30",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072},benchmarks:[{name:"SWE-Bench Pro",score:59.5,metric:"resolve rate",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"},{name:"SWE-Bench Multilingual",score:77.3,metric:"resolve rate",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"},{name:"Terminal-Bench",score:70.8,metric:"success rate",version:"2.1",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"},{name:"GPQA Diamond",score:88.9,metric:"accuracy",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"},{name:"BrowseComp",score:79.9,metric:"accuracy",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"},{name:"IFEval",score:90,metric:"accuracy",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"},{name:"FORTE",score:73.2,metric:"success rate",source:"https://github.com/meituan-longcat/longcat-2.0",date:"2026-06-30"}]},"meituan/longcat-2.5-preview":{id:"meituan/longcat-2.5-preview",name:"LongCat-2.5-Preview",description:"Meituan's multimodal reasoning model for coding and agent tasks, with image understanding and a 1M-token context window",family:"longcat",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-09-25",last_updated:"2026-09-25",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072}},"perplexity/sonar-pro":{id:"perplexity/sonar-pro",name:"Sonar Pro",description:"Deeper Sonar search model with broader retrieval and stronger synthesis",family:"sonar-pro",attachment:true,reasoning:false,tool_call:false,temperature:true,knowledge:"2025-09-01",release_date:"2024-01-01",last_updated:"2025-09-01",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e5,output:8192},benchmarks:[{name:"SciCode",score:22.6,metric:"percent correct",source:"https://openrouter.ai/perplexity/sonar-pro/benchmarks",date:"2026-03-11"}]},"perplexity/sonar-deep-research":{id:"perplexity/sonar-deep-research",name:"Sonar Deep Research",description:"Sonar search model for autonomous research and citation-backed long-form reports",family:"sonar",attachment:false,reasoning:true,tool_call:false,temperature:false,knowledge:"2025-01",release_date:"2025-02-01",last_updated:"2025-09-01",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:128e3,output:32768}},"perplexity/sonar":{id:"perplexity/sonar",name:"Sonar",description:"Fast web-grounded Sonar for current answers, citations, and lightweight retrieval",family:"sonar",attachment:false,reasoning:false,tool_call:false,temperature:true,knowledge:"2025-09-01",release_date:"2024-01-01",last_updated:"2025-09-01",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:128e3,output:4096},benchmarks:[{name:"SciCode",score:22.9,metric:"percent correct",source:"https://openrouter.ai/perplexity/sonar/benchmarks",date:"2026-03-11"}]},"perplexity/sonar-reasoning-pro":{id:"perplexity/sonar-reasoning-pro",name:"Sonar Reasoning Pro",description:"Web-grounded Sonar for multi-step research questions that need cited reasoning",family:"sonar-reasoning",attachment:true,reasoning:true,tool_call:false,temperature:true,knowledge:"2025-09-01",release_date:"2024-01-01",last_updated:"2025-09-01",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:4096}},"meta/muse-spark-1.3":{id:"meta/muse-spark-1.3",name:"Muse Spark 1.3",description:"Muse Spark 1.3 is a multimodal reasoning model from Meta for long-running agentic, multi-agent, and coding workflows. It improves long-horizon agent collaboration, instruction following, and coding efficiency relative to Muse Spark 1.2.",family:"muse",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-09-02",last_updated:"2026-09-02",modalities:{input:["text","image","video","pdf","audio"],output:["text"]},open_weights:false,limit:{context:1048576,output:131072},benchmarks:[{name:"GDPval-AA",score:1754,metric:"Elo",harness:"Stirrup",variant:"max effort",version:"2",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"JobBench",score:64.9,metric:"mean rubric score",harness:"OpenCode",variant:"max effort",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"OSWorld",score:66.9,metric:"mean partial score",harness:"Meta internal evaluation framework",variant:"max effort",dataset:"08.08",version:"2.0",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"OSWorld",score:32,metric:"binary completion rate",harness:"Meta internal evaluation framework",variant:"max effort",dataset:"08.08",version:"2.0",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"DeepSearchQA",score:90.3,metric:"F1",harness:"Meta browser harness",variant:"max effort",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"Agentic IF Index",score:57.8,metric:"score",variant:"max effort",dataset:"Meta internal",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"AutomationBench",score:49.6,metric:"pass@1",variant:"max effort",dataset:"public v3 task set",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"MRCR",score:98.5,metric:"mean sequence-match ratio",variant:"max effort",dataset:"8-needle, 256K-512K",version:"2",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"MRCR",score:98.1,metric:"mean sequence-match ratio",variant:"max effort",dataset:"8-needle, 512K-1M",version:"2",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"DeepSWE",score:75.4,metric:"pass@1",harness:"mini-swe-agent",variant:"max effort",version:"1.1",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"SWE-Atlas Codebase QnA",score:59.4,metric:"pass@1",harness:"mini-swe-agent",variant:"max effort",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"Terminal-Bench",score:88.8,metric:"pass@1",harness:"Muse Code",variant:"max effort",version:"2.1",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"}]},"meta/muse-glimmer-30b":{id:"meta/muse-glimmer-30b",name:"Muse Glimmer 30B",description:"Muse Glimmer is a 30-billion-parameter open-weight multimodal model from Meta Superintelligence Labs, distilled from Muse Spark for always-on local agents, tool use, coding, and image understanding.",family:"muse",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-01-04",release_date:"2026-08-10",last_updated:"2026-08-10",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},license:"Apache 2.0",links:[{label:"Announcement",url:"https://research.meta.ai/blog/introducing-muse-glimmer-open-agentic-model",type:"announcement"},{label:"Model card",url:"https://huggingface.co/meta-models/Muse-Glimmer-30B",type:"model_card"},{label:"Developer docs",url:"https://developer.meta.com/ai/models/muse-glimmer/",type:"docs"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-models/Muse-Glimmer-30B"}],benchmarks:[{name:"MCP Atlas",score:75.5,metric:"success rate",variant:"public",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"DeepSearch QA",score:74.6,source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"SWE-Bench Pro",score:51.2,metric:"resolve rate",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"SWE-Bench Verified",score:76,metric:"resolve rate",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"Terminal-Bench",score:51.7,metric:"success rate",variant:"with terminus2",version:"2.1",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"OSWorld-Verified",score:65.9,metric:"success rate",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"AIME 2026",score:94.7,metric:"accuracy",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"GPQA Diamond",score:83.5,metric:"accuracy",variant:"AA",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"},{name:"CharXiv Reasoning",score:78.8,metric:"accuracy",source:"https://huggingface.co/meta-models/Muse-Glimmer-30B",date:"2026-08-10"}]},"meta/llama-4-maverick-17b-instruct":{id:"meta/llama-4-maverick-17b-instruct",name:"Llama 4 Maverick 17B Instruct",description:"Open multimodal Llama for strong reasoning with efficient everyday serving",family:"llama",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-04-05",last_updated:"2025-04-05",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:1e6,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-4-Maverick-17B-128E-Instruct"}],benchmarks:[{name:"Aider Polyglot",score:15.6,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-04-06"},{name:"SWE-Bench Pro",score:5.24,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"meta/muse-spark-1.1":{id:"meta/muse-spark-1.1",name:"Muse Spark 1.1",description:"Muse Spark is a natively multimodal reasoning model with support for tool-use, visual chain of thought, and multi-agent orchestration.",family:"muse",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-08",last_updated:"2026-07-09",modalities:{input:["text","image","pdf","video"],output:["text"]},open_weights:false,limit:{context:1048576,output:131072},benchmarks:[{name:"SWE-Bench Pro",score:61.5,metric:"resolve rate",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"Terminal-Bench",score:80,metric:"success rate",version:"2.1",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"DeepSWE",score:53.3,metric:"resolve rate",version:"1.1",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"MCP Atlas",score:88.1,metric:"success rate",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"JobBench",score:54.7,metric:"success rate",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"Toolathlon-Verified",score:75.6,metric:"success rate",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"Humanity's Last Exam",score:62.1,metric:"accuracy",variant:"with tools",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"OSWorld-Verified",score:80.8,metric:"success rate",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"Finance Agent",score:57.2,metric:"accuracy",version:"v2",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"CharXiv Reasoning",score:88.4,metric:"accuracy",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"},{name:"BabyVision",score:76.3,metric:"accuracy",source:"https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/",date:"2026-07-09"}]},"meta/llama-4-scout-17b-instruct":{id:"meta/llama-4-scout-17b-instruct",name:"Llama 4 Scout 17B Instruct",description:"Open Llama with long-context vision for efficient multimodal agents",family:"llama",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-04-05",last_updated:"2025-04-05",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:1e7,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-4-Scout-17B-16E-Instruct"}]},"meta/llama-3.3-70b-instruct":{id:"meta/llama-3.3-70b-instruct",name:"Llama-3.3-70B-Instruct",description:"Popular open Llama workhorse for multilingual chat, coding, and self-hosting",family:"llama",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2023-12",release_date:"2024-12-06",last_updated:"2024-12-06",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-3.3-70B-Instruct"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:10.7,metric:"index",source:"https://openrouter.ai/meta-llama/llama-3.3-70b-instruct/benchmarks",date:"2026-03-11"},{name:"SciCode",score:26,metric:"percent correct",source:"https://openrouter.ai/meta-llama/llama-3.3-70b-instruct/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:3,metric:"success rate",source:"https://openrouter.ai/meta-llama/llama-3.3-70b-instruct/benchmarks",date:"2026-03-11"}]},"meta/muse-spark-1.2":{id:"meta/muse-spark-1.2",name:"Muse Spark 1.2",description:"Muse Spark 1.2 is a coding-focused update to Muse Spark 1.1 with improvements in code generation, complex debugging, codebase understanding, and end-to-end developer workflows.",family:"muse",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-05",last_updated:"2026-08-05",modalities:{input:["text","image","video","pdf","audio"],output:["text"]},open_weights:false,limit:{context:1048576,output:131072},benchmarks:[{name:"GDPval-AA",score:1615,metric:"Elo",harness:"Stirrup",variant:"xhigh effort",version:"2",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"JobBench",score:61.6,metric:"mean rubric score",harness:"OpenCode",variant:"xhigh effort",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"OSWorld",score:47.6,metric:"mean partial score",harness:"Meta internal evaluation framework",variant:"xhigh effort",dataset:"06.24",version:"2.0",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"OSWorld",score:17.9,metric:"binary completion rate",harness:"Meta internal evaluation framework",variant:"xhigh effort",dataset:"06.24",version:"2.0",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"DeepSearchQA",score:85.9,metric:"F1",harness:"Meta browser harness",variant:"xhigh effort",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"Agentic IF Index",score:46.2,metric:"score",variant:"xhigh effort",dataset:"Meta internal",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"AutomationBench",score:38.2,metric:"pass@1",variant:"xhigh effort",dataset:"public v3 task set",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"MRCR",score:66.3,metric:"mean sequence-match ratio",variant:"xhigh effort",dataset:"8-needle, 256K-512K",version:"2",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"MRCR",score:55.5,metric:"mean sequence-match ratio",variant:"xhigh effort",dataset:"8-needle, 512K-1M",version:"2",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"DeepSWE",score:55,metric:"pass@1",harness:"mini-swe-agent",variant:"xhigh effort",version:"1.1",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"SWE-Atlas Codebase QnA",score:46.2,metric:"pass@1",harness:"mini-swe-agent",variant:"xhigh effort",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"Terminal-Bench",score:82.9,metric:"pass@1",harness:"Muse Code",variant:"xhigh effort",version:"2.1",source:"https://research.meta.ai/blog/introducing-muse-spark-1-3",date:"2026-09-02"},{name:"DeepSWE",score:59.3,metric:"pass@1",harness:"Muse Code",variant:"xhigh effort",version:"1.1",source:"https://research.meta.ai/blog/introducing-muse-code-and-muse-spark-1-2",date:"2026-08-05"},{name:"MCP Atlas",score:90.3,metric:"pass rate",harness:"Scale AI",variant:"xhigh effort",source:"https://research.meta.ai/blog/introducing-muse-code-and-muse-spark-1-2",date:"2026-08-05"}]},"meta/llama-guard-3-8b":{id:"meta/llama-guard-3-8b",name:"Llama-Guard-3-8B",description:"Llama 3.1-based safety classifier for moderating prompts and model responses",family:"llama",attachment:false,reasoning:false,tool_call:false,temperature:true,knowledge:"2023-12",release_date:"2024-07-23",last_updated:"2024-07-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-Guard-3-8B"}]},"meta/llama-3.1-8b-instruct":{id:"meta/llama-3.1-8b-instruct",name:"Llama-3.1-8B-Instruct",description:"Compact open Llama model for lightweight chat, drafting, and self-hosting",family:"llama",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2023-12",release_date:"2024-07-23",last_updated:"2024-07-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct"}]},"meta/llama-3.2-1b":{id:"meta/llama-3.2-1b",name:"Llama-3.2-1B",description:"Compact open Llama base model for lightweight and on-device use",family:"llama",attachment:false,reasoning:false,tool_call:false,temperature:true,knowledge:"2023-12",release_date:"2024-09-25",last_updated:"2024-09-25",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},license:"Llama 3.2 Community License",weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-3.2-1B"}]},"meta/llama-3.2-11b-vision-instruct":{id:"meta/llama-3.2-11b-vision-instruct",name:"Llama-3.2-11B-Vision-Instruct",description:"Open multimodal Llama model for image understanding, captioning, and visual QA",family:"llama",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2023-12",release_date:"2024-09-25",last_updated:"2024-09-25",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-3.2-11B-Vision-Instruct"}]},"meta/llama-3.2-3b":{id:"meta/llama-3.2-3b",name:"Llama-3.2-3B",description:"Small open Llama base model for lightweight text generation and self-hosting",family:"llama",attachment:false,reasoning:false,tool_call:false,temperature:true,knowledge:"2023-12",release_date:"2024-09-25",last_updated:"2024-09-25",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},license:"Llama 3.2 Community License",weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-3.2-3B"}]},"meta/llama-3.1-70b-instruct":{id:"meta/llama-3.1-70b-instruct",name:"Llama-3.1-70B-Instruct",description:"Open Llama instruction model for multilingual chat, reasoning, and coding",family:"llama",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2023-12",release_date:"2024-07-23",last_updated:"2024-07-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/meta-llama/Llama-3.1-70B-Instruct"}]},"arcee-ai/trinity-large-preview":{id:"arcee-ai/trinity-large-preview",name:"Trinity Large Preview",description:"Lightly post-trained 398B MoE chat model for creative work, long-context prompts, and tool-using agents",family:"trinity",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2026-01-27",last_updated:"2026-05-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:524288,output:262144},license:"OpenMDW-1.1",links:[{label:"Model card",url:"https://huggingface.co/arcee-ai/Trinity-Large-Preview",type:"model_card"},{label:"Announcement",url:"https://www.arcee.ai/blog/trinity-large",type:"announcement"},{label:"License",url:"https://huggingface.co/arcee-ai/Trinity-Large-Preview/blob/main/LICENSE",type:"license"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/arcee-ai/Trinity-Large-Preview",format:"safetensors"}]},"arcee-ai/trinity-large-thinking":{id:"arcee-ai/trinity-large-thinking",name:"Trinity Large Thinking",description:"Reasoning-optimized 398B MoE agent model with extended thinking for long-horizon and multi-turn tool use",family:"trinity",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-04-01",last_updated:"2026-05-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:524288,output:262144},license:"OpenMDW-1.1",links:[{label:"Model card",url:"https://huggingface.co/arcee-ai/Trinity-Large-Thinking",type:"model_card"},{label:"Announcement",url:"https://www.arcee.ai/blog/trinity-large-thinking",type:"announcement"},{label:"License",url:"https://huggingface.co/arcee-ai/Trinity-Large-Thinking/blob/main/LICENSE",type:"license"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/arcee-ai/Trinity-Large-Thinking",format:"safetensors"}]},"arcee-ai/trinity-mini":{id:"arcee-ai/trinity-mini",name:"Trinity Mini",description:"Reasoning-tuned 26B MoE model with 3B active parameters for agents, tools, and multi-step workloads",family:"trinity",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-12-01",last_updated:"2026-05-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},license:"OpenMDW-1.1",links:[{label:"Model card",url:"https://huggingface.co/arcee-ai/Trinity-Mini",type:"model_card"},{label:"Announcement",url:"https://www.arcee.ai/blog/the-trinity-manifesto",type:"announcement"},{label:"License",url:"https://huggingface.co/arcee-ai/Trinity-Mini/blob/main/LICENSE",type:"license"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/arcee-ai/Trinity-Mini",format:"safetensors"}]},"arcee-ai/trinity-nano-preview":{id:"arcee-ai/trinity-nano-preview",name:"Trinity Nano Preview",description:"Experimental chat-tuned 6B MoE model with 1B active parameters for low-resource chat and instruction following",family:"trinity",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2025-12-01",last_updated:"2026-05-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},license:"OpenMDW-1.1",links:[{label:"Model card",url:"https://huggingface.co/arcee-ai/Trinity-Nano-Preview",type:"model_card"},{label:"Announcement",url:"https://www.arcee.ai/blog/the-trinity-manifesto",type:"announcement"},{label:"License",url:"https://huggingface.co/arcee-ai/Trinity-Nano-Preview/blob/main/LICENSE",type:"license"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/arcee-ai/Trinity-Nano-Preview",format:"safetensors"}]},"alibaba/qwen-flash":{id:"alibaba/qwen-flash",name:"Qwen Flash",description:"Efficient Qwen model for fast chat, extraction, and high-volume workloads",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2025-07-28",last_updated:"2025-07-28",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1e6,output:32768}},"alibaba/qwen3.5-flash":{id:"alibaba/qwen3.5-flash",name:"Qwen3.5 Flash",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-23",last_updated:"2026-02-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"alibaba/qwen3-vl-235b-a22b-instruct":{id:"alibaba/qwen3-vl-235b-a22b-instruct",name:"Qwen3 VL 235B A22B Instruct",description:"Qwen vision-language instruct model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-09-23",last_updated:"2025-09-23",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-VL-235B-A22B-Instruct"}]},"alibaba/qwen3.7-max":{id:"alibaba/qwen3.7-max",name:"Qwen3.7 Max",description:"Qwen frontier model tuned for agent frameworks, coding assistants, and long tasks",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-05-21",last_updated:"2026-05-21",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536},benchmarks:[{name:"SWE-Bench Verified",score:80.4,metric:"resolved",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"SWE-Bench Pro",score:60.6,metric:"resolve rate",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"SWE-Bench Multilingual",score:78.3,metric:"resolve rate",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"Terminal-Bench",score:69.7,metric:"success rate",harness:"Terminus-2",version:"2.0",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"GPQA Diamond",score:92.4,metric:"accuracy",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"Humanity's Last Exam",score:41.4,metric:"accuracy",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"SciCode",score:53.5,source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"MCP Atlas",score:76.4,metric:"success rate",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"},{name:"NL2Repo",score:47.2,harness:"Claude Code",source:"https://qwen.ai/blog?id=qwen3.7",date:"2026-05-19"}]},"alibaba/qwq-plus":{id:"alibaba/qwq-plus",name:"QwQ Plus",description:"Qwen reasoning model for deliberate problem solving, math, and coding",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2025-03-05",last_updated:"2025-03-05",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:131072,output:8192}},"alibaba/qwen3.8-27b":{id:"alibaba/qwen3.8-27b",name:"Qwen3.8 27B",description:"Dense 27B vision-language model for coding, agent tasks, and image and video understanding",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-14",last_updated:"2026-08-14",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.8-27B"}],benchmarks:[{name:"SWE-bench Pro",score:61.7,metric:"resolved",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"Terminal-Bench",score:73,metric:"score",harness:"Terminus",version:"2.1",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"NL2Repo",score:42.3,metric:"score",harness:"Claude Code",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"DeepSWE",score:42.2,metric:"score",harness:"Claude Code",version:"1.1",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"QwenSWEBench",score:79,metric:"avg@3",harness:"Claude Code",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"CoWorkBench",score:70.7,metric:"score",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"JobBench",score:33.4,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"Agents' Last Exam",score:20.4,metric:"pass@1",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"Agents' Last Exam",score:42.9,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"IFBench",score:79.5,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"GPQA Diamond",score:89.2,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"Humanity's Last Exam",score:30.8,metric:"score",variant:"without tools; GPT-4o judge",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"LiveCodeBench",score:90.3,metric:"score",version:"6",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"OSWorld-Verified",score:84.3,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"WebArena-Verified",score:64.8,metric:"score",harness:"OSWorld scaffold; official WebArena-Verified grader",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"AndroidWorld",score:81.9,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"SWE-MM",score:38.6,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"RealWorldQA",score:85.9,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"ERQA",score:65.5,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"RecreationBench",score:47.1,metric:"score",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"ClawEval-MM",score:57.4,metric:"pass@3",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"ClawEval-MM",score:56.9,metric:"average score",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"Vision2Web",score:62.9,metric:"score",harness:"Claude Code",variant:"gpt-5.4-2026-03-05 judge",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"MathVision",score:90,metric:"score",variant:"without code interpreter",dataset:"corrected annotations",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"MathVision",score:94.6,metric:"score",variant:"with code interpreter",dataset:"corrected annotations",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"BabyVision",score:65.7,metric:"score",variant:"without code interpreter",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"BabyVision",score:85.6,metric:"score",variant:"with code interpreter",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"CharXiv Reasoning",score:83.7,metric:"score",variant:"without code interpreter",dataset:"corrected annotations",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"CharXiv Reasoning",score:90.2,metric:"score",variant:"with code interpreter",dataset:"corrected annotations",source:"https://huggingface.co/Qwen/Qwen3.8-27B"},{name:"OmniDocBench",score:91.1,metric:"score",version:"1.5",source:"https://huggingface.co/Qwen/Qwen3.8-27B"}]},"alibaba/qwq-32b":{id:"alibaba/qwq-32b",name:"QwQ 32B",description:"Open reasoning model from the Qwen team for math, coding, and step-by-step problem solving",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2025-03-05",last_updated:"2025-03-05",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/QwQ-32B"}]},"alibaba/qwen2-5-vl-72b-instruct":{id:"alibaba/qwen2-5-vl-72b-instruct",name:"Qwen2.5-VL 72B Instruct",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2024-09",last_updated:"2024-09",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen2.5-VL-72B-Instruct"}]},"alibaba/qwen3-vl-235b-a22b-thinking":{id:"alibaba/qwen3-vl-235b-a22b-thinking",name:"Qwen3 VL 235B A22B Thinking",description:"Qwen vision-language thinking model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-03-31",release_date:"2025-09-23",last_updated:"2025-09-23",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-VL-235B-A22B-Thinking"}]},"alibaba/qwen3.8-2.4t-a95b":{id:"alibaba/qwen3.8-2.4t-a95b",name:"Qwen3.8 2.4T A95B",description:"Open-weight sparse MoE (2.4T total, 95B active), the open-weight twin of Qwen3.8 Max for coding, research, complex reasoning, and agentic workflows",family:"qwen",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-12",last_updated:"2026-08-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:131072},license:"qwen3.8-max",weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"}]},"alibaba/qwen3-vl-plus":{id:"alibaba/qwen3-vl-plus",name:"Qwen3-VL Plus",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-09-23",last_updated:"2025-09-23",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:262144,output:32768}},"alibaba/qwen3.5-27b":{id:"alibaba/qwen3.5-27b",name:"Qwen3.5 27B",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-23",last_updated:"2026-02-23",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.5-27B"}],benchmarks:[{name:"SWE-Bench Verified",score:72.4,metric:"resolved",source:"https://huggingface.co/Qwen/Qwen3.5-27B"}]},"alibaba/qwen3-235b-a22b-instruct-2507":{id:"alibaba/qwen3-235b-a22b-instruct-2507",name:"Qwen3 235B-A22B Instruct 2507",description:"Updated large open Qwen3 MoE instruct model for multilingual chat, coding, and tool use",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2025-07-21",last_updated:"2025-07-21",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:16384},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-235B-A22B-Instruct-2507"}]},"alibaba/qwen-max":{id:"alibaba/qwen-max",name:"Qwen Max",description:"Flagship Qwen model for complex reasoning, coding, and agentic workflows",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2024-04-03",last_updated:"2025-01-25",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:32768,output:8192},benchmarks:[{name:"Aider Polyglot",score:21.8,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-01-28"}]},"alibaba/qwen3-next-80b-a3b-thinking":{id:"alibaba/qwen3-next-80b-a3b-thinking",name:"Qwen3-Next 80B-A3B (Thinking)",description:"Efficient Qwen thinking model for local reasoning, math, and coding agents",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-09",last_updated:"2025-09",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-Next-80B-A3B-Thinking"}]},"alibaba/qwen3.8-max":{id:"alibaba/qwen3.8-max",name:"Qwen3.8 Max",description:"2.4-trillion-parameter MoE flagship for coding, professional work, multimodal understanding, and long-horizon agentic workflows",family:"qwen",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-08-03",last_updated:"2026-08-03",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072},benchmarks:[{name:"Terminal-Bench",score:86.6,metric:"avg@10",harness:"Claude Code",variant:"5h timeout",version:"2.1",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"SWE-Bench Pro",score:67.7,metric:"resolved",harness:"Claude Code",dataset:"Qwen refined and corrected task set",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"DeepSWE",score:56.6,metric:"score",harness:"Claude Code",version:"1.1",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"NL2Repo",score:55.9,metric:"score",harness:"Claude Code",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"FrontierSWE",score:73.5,metric:"dominance score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B",date:"2026-08-03"},{name:"MLS-Bench-Lite",score:41,metric:"score",harness:"Claude Code",variant:"5h timeout",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"PaperBench",score:93,metric:"score",harness:"BasicAgent",variant:"Code-Dev; 3 runs; 12h timeout; Opus 4.6 judge",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"AndroidBench",score:75.1,metric:"avg@3",dataset:"95 public tasks",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"QwenSWEBench",score:80.7,metric:"avg@3",harness:"Claude Code",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"QwenQoderBench",score:58.4,metric:"avg@5",harness:"Claude Code",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"QwenReactBench",score:1724,metric:"Elo",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"QwenSVGBench",score:1713,metric:"Elo",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"CoWorkBench",score:74.8,metric:"score",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"WorkSpaceBench",score:67.7,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"JobBench",score:53.4,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"SkillsBench",score:70.2,metric:"avg@3",harness:"OpenCode",dataset:"87 tasks",version:"1.1",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"Agents' Last Exam",score:27,metric:"pass@1",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"Agents' Last Exam",score:52.4,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"AutomationBench",score:27.3,metric:"pass@1",dataset:"600 public tasks",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"Toolathlon-Verified",score:72.5,metric:"pass@1",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"WideSearch",score:81.9,metric:"average item F1",harness:"Qwen-Agent",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"Humanity's Last Exam",score:56.2,metric:"score",variant:"with tools",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"Humanity's Last Exam",score:43.6,metric:"score",variant:"without tools",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"GPQA Diamond",score:92.6,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"IFBench",score:82.8,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"$OneMillion-Bench",score:52.5,metric:"expert score",variant:"gemini-3.1-pro-preview judge",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"HealthBench",score:60.2,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"PLawBench",score:73.2,metric:"score",variant:"gemini-3.1-pro-preview judge",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"PRBench",score:57.6,metric:"score",variant:"legal",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"PRBench",score:58.3,metric:"score",variant:"finance",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"MRCR",score:92.9,metric:"score",dataset:"256K; 8-needle",version:"2",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"},{name:"LongBench",score:66.3,metric:"score",version:"2",source:"https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B"}]},"alibaba/qwen3-coder-next":{id:"alibaba/qwen3-coder-next",name:"Qwen3 Coder Next",description:"Open-weight Qwen coding model for agents, repository edits, and multi-turn tool use",family:"qwen",attachment:false,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-09",release_date:"2026-02-03",last_updated:"2026-02-03",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-Coder-Next"}]},"alibaba/qwen3.5-plus":{id:"alibaba/qwen3.5-plus",name:"Qwen3.5 Plus",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2026-02-16",last_updated:"2026-02-16",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"alibaba/qwen3.8-max-preview":{id:"alibaba/qwen3.8-max-preview",name:"Qwen3.8 Max Preview",description:"Preview Qwen flagship for million-token multimodal reasoning and long-horizon agentic workflows",family:"qwen",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-07-19",last_updated:"2026-07-19",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072},benchmarks:[{name:"Terminal-Bench",score:86.6,metric:"accuracy",variant:"xhigh",version:"2.1",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"SWE-Bench Pro",score:67.7,metric:"resolve rate",harness:"Claude Code",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"DeepSWE",score:56.6,metric:"resolve rate",harness:"Claude Code",variant:"xhigh",version:"1.1",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"NL2Repo",score:55.9,metric:"resolve rate",harness:"Claude Code",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"FrontierSWE",score:73.5,metric:"dominance score",harness:"Claude Code",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"MLS-Bench-Lite",score:41,metric:"score",harness:"Claude Code",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"AutomationBench",score:27.3,metric:"pass@1",variant:"xhigh",dataset:"600-task public subset",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"Toolathlon Verified",score:72.5,metric:"pass@1",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"WideSearch",score:81.9,metric:"F1",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"Humanity's Last Exam",score:56.2,metric:"accuracy",variant:"xhigh, with tools",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"GPQA Diamond",score:92.6,metric:"accuracy",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"Humanity's Last Exam",score:43.6,metric:"accuracy",variant:"xhigh, no tools",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"IFBench",score:82.8,metric:"score",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"OSWorld-Verified",score:86.1,metric:"success rate",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"},{name:"MMMU Pro",score:82.3,metric:"accuracy",variant:"xhigh",source:"https://www.alibabacloud.com/blog/qwen3-8-max-a-new-bar-for-coding-and-cowork_603421",date:"2026-08-03"}]},"alibaba/qwen3-32b":{id:"alibaba/qwen3-32b",name:"Qwen3 32B",description:"Dense open Qwen model for self-hosted chat, reasoning, and coding",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-04",last_updated:"2025-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-32B"}],benchmarks:[{name:"Aider Polyglot",score:40,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-08"}]},"alibaba/qwen-plus":{id:"alibaba/qwen-plus",name:"Qwen Plus",description:"Qwen instruction model for multilingual chat, reasoning, and tool use",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2024-01-25",last_updated:"2025-09-11",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1e6,output:32768}},"alibaba/qwen3.7-flash":{id:"alibaba/qwen3.7-flash",name:"Qwen3.7 Flash",description:"Lightweight multimodal Qwen model for high-throughput text, image, and video tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-07-15",last_updated:"2026-07-15",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,input:991e3,output:65536}},"alibaba/qwen3-max":{id:"alibaba/qwen3-max",name:"Qwen3 Max",description:"Flagship Qwen3 model for coding agents, complex reasoning, and tool use",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-09-23",last_updated:"2025-09-23",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:262144,output:65536},benchmarks:[{name:"Artificial Analysis Coding Index",score:26.4,metric:"index",source:"https://openrouter.ai/qwen/qwen3-max/benchmarks",date:"2026-05-30"},{name:"SciCode",score:38.3,metric:"percent correct",source:"https://openrouter.ai/qwen/qwen3-max/benchmarks",date:"2026-05-30"},{name:"Terminal-Bench Hard",score:20.5,metric:"success rate",source:"https://openrouter.ai/qwen/qwen3-max/benchmarks",date:"2026-05-30"}]},"alibaba/qwen3-coder-480b-a35b-instruct":{id:"alibaba/qwen3-coder-480b-a35b-instruct",name:"Qwen3-Coder 480B-A35B Instruct",description:"Open Qwen coding heavyweight for repository reasoning and agentic engineering",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-04",last_updated:"2025-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct"}],benchmarks:[{name:"SWE-Bench Pro",score:38.7,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"alibaba/qwen-turbo":{id:"alibaba/qwen-turbo",name:"Qwen Turbo",description:"Efficient Qwen model for fast chat, extraction, and high-volume workloads",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2024-11-01",last_updated:"2025-04-28",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1e6,output:16384}},"alibaba/qwen3-coder-30b-a3b-instruct":{id:"alibaba/qwen3-coder-30b-a3b-instruct",name:"Qwen3-Coder 30B-A3B Instruct",description:"Smaller Qwen coder for efficient local agents and repo-level fixes",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-04",last_updated:"2025-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-Coder-30B-A3B-Instruct"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:19.4,metric:"index",source:"https://openrouter.ai/qwen/qwen3-coder-30b-a3b-instruct/benchmarks",date:"2026-06-02"},{name:"SciCode",score:27.8,metric:"percent correct",source:"https://openrouter.ai/qwen/qwen3-coder-30b-a3b-instruct/benchmarks",date:"2026-06-02"},{name:"Terminal-Bench Hard",score:15.2,metric:"success rate",source:"https://openrouter.ai/qwen/qwen3-coder-30b-a3b-instruct/benchmarks",date:"2026-06-02"}]},"alibaba/qwen3.8-omni-flash":{id:"alibaba/qwen3.8-omni-flash",name:"Qwen3.8 Omni Flash",description:"Qwen omni model for text, vision, audio, and multimodal agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,release_date:"2026-09-17",last_updated:"2026-09-17",modalities:{input:["text","image","audio","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072}},"alibaba/qwen-vl-max":{id:"alibaba/qwen-vl-max",name:"Qwen-VL Max",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2024-04-08",last_updated:"2025-08-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:131072,output:8192}},"alibaba/qwen3-235b-a22b":{id:"alibaba/qwen3-235b-a22b",name:"Qwen3 235B-A22B",description:"Large open Qwen MoE for multilingual reasoning, coding, and tool use",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-04",last_updated:"2025-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-235B-A22B"}],benchmarks:[{name:"Aider Polyglot",score:59.6,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-09"},{name:"SWE-Bench Pro",score:21.41,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"alibaba/qwen3.5-122b-a10b":{id:"alibaba/qwen3.5-122b-a10b",name:"Qwen3.5 122B-A10B",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-23",last_updated:"2026-02-23",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.5-122B-A10B"}],benchmarks:[{name:"SWE-Bench Verified",score:72,metric:"resolved",source:"https://huggingface.co/Qwen/Qwen3.5-122B-A10B"}]},"alibaba/qwen3.6-35b-a3b":{id:"alibaba/qwen3.6-35b-a3b",name:"Qwen3.6 35B-A3B",description:"Open multimodal Qwen MoE for local agents that need vision, audio, and code",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-17",last_updated:"2026-04-17",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.6-35B-A3B"}],benchmarks:[{name:"SWE-Bench Verified",score:73.4,metric:"resolved",source:"https://huggingface.co/Qwen/Qwen3.6-35B-A3B"}]},"alibaba/qwen3-next-80b-a3b-instruct":{id:"alibaba/qwen3-next-80b-a3b-instruct",name:"Qwen3-Next 80B-A3B Instruct",description:"Qwen instruction model for multilingual chat, reasoning, and tool use",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-09",last_updated:"2025-09",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-Next-80B-A3B-Instruct"}]},"alibaba/qwen-vl-plus":{id:"alibaba/qwen-vl-plus",name:"Qwen-VL Plus",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2024-01-25",last_updated:"2025-08-15",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:131072,output:8192}},"alibaba/qwen3.6-flash":{id:"alibaba/qwen3.6-flash",name:"Qwen3.6 Flash",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen3.6",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-27",last_updated:"2026-04-27",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"alibaba/qwen3-coder-flash":{id:"alibaba/qwen3-coder-flash",name:"Qwen3 Coder Flash",description:"Qwen coding model for software agents, repository edits, and code reasoning",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-07-28",last_updated:"2025-07-28",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"alibaba/qwen3-coder-plus":{id:"alibaba/qwen3-coder-plus",name:"Qwen3 Coder Plus",description:"Hosted Qwen coder for software agents, repo edits, and long-context code",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-07-23",last_updated:"2025-07-23",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536}},"alibaba/qwen3.5-9b":{id:"alibaba/qwen3.5-9b",name:"Qwen3.5 9B",description:"Qwen instruction model for multilingual chat, reasoning, and tool use",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-23",last_updated:"2026-02-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.5-9B"}]},"alibaba/qwen3.8-max-prime":{id:"alibaba/qwen3.8-max-prime",name:"Qwen 3.8 Max Prime",description:"High-throughput edition of Qwen3.8 Max for coding, professional work, multimodal understanding, and long-running agent workflows",family:"qwen3.8-max",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-09-23",last_updated:"2026-09-23",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072}},"alibaba/qwen3.8-flash":{id:"alibaba/qwen3.8-flash",name:"Qwen3.8 Flash",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,release_date:"2026-08-26",last_updated:"2026-08-26",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072}},"alibaba/qwen3.8-flash-next":{id:"alibaba/qwen3.8-flash-next",name:"Qwen3.8 Flash Next",description:"Open-weight experimental preview of the Qwen4 architecture: hybrid-attention MoE (125B total, 6B active) with vision encoder for coding, agent tasks, and image and video understanding",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-27",last_updated:"2026-08-27",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:131072},license:"qwen-community-1.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"}],benchmarks:[{name:"DeepSWE",score:58.7,metric:"score",harness:"mini-swe-agent",version:"1.1",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"SWE-Bench Pro",score:62.5,metric:"score",harness:"Claude Code",dataset:"Qwen refined and corrected task set",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"SWE-Bench Multilingual",score:81,metric:"score",harness:"mini-swe-agent",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"NL2Repo",score:48.1,metric:"score",harness:"Claude Code",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"CoWorkBench",score:73.9,metric:"score",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"JobBench",score:55.7,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"Agents' Last Exam",score:24.3,metric:"pass@1",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"Agents' Last Exam",score:51.2,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"Toolathlon-Verified",score:73.5,metric:"pass@1",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"IFBench",score:81.3,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"GPQA Diamond",score:91.7,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"Humanity's Last Exam",score:35.9,metric:"score",variant:"without tools; GPT-4o judge",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"LiveCodeBench",score:91.9,metric:"score",version:"6",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"ClawEval-MM",score:64.4,metric:"pass@3",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"ClawEval-MM",score:60.4,metric:"average score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"RecreationBench",score:49.9,metric:"score",dataset:"internal",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"AndroidWorld",score:84.5,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"OSWorld",score:19.4,metric:"binary completion rate",version:"2.0",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"OSWorld",score:52.3,metric:"partial score",version:"2.0",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"Vision2Web",score:64,metric:"score",harness:"Claude Code",variant:"gpt-5.4-2026-03-05 judge",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"ERQA",score:72.3,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"LVBench",score:76.6,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"RealWorldQA",score:88.5,metric:"score",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"MathVision",score:90.6,metric:"score",variant:"without code interpreter",dataset:"corrected annotations",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"MathVision",score:95.7,metric:"score",variant:"with code interpreter",dataset:"corrected annotations",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"CharXiv Reasoning",score:84.6,metric:"score",variant:"without code interpreter",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"},{name:"CharXiv Reasoning",score:90.6,metric:"score",variant:"with code interpreter",source:"https://huggingface.co/Qwen/Qwen3.8-Flash-Next"}]},"alibaba/qwen3.5-35b-a3b":{id:"alibaba/qwen3.5-35b-a3b",name:"Qwen3.5 35B-A3B",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-23",last_updated:"2026-02-23",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.5-35B-A3B"}]},"alibaba/qwen3.6-max-preview":{id:"alibaba/qwen3.6-max-preview",name:"Qwen3.6 Max Preview",description:"Flagship Qwen model for complex reasoning, coding, and agentic workflows",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2026-04-20",last_updated:"2026-04-20",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:262144,output:65536}},"alibaba/qwen3-30b-a3b":{id:"alibaba/qwen3-30b-a3b",name:"Qwen3 30B A3B",description:"Sparse MoE Qwen model with 3B active parameters for efficient chat and reasoning",family:"qwen",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-04-28",last_updated:"2025-04-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3-30B-A3B"}]},"alibaba/qwen3.5-397b-a17b":{id:"alibaba/qwen3.5-397b-a17b",name:"Qwen3.5 397B-A17B",description:"Large open Qwen multimodal MoE for visual agents and long technical tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-02-15",last_updated:"2026-02-15",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.5-397B-A17B"}],benchmarks:[{name:"SWE-Bench Verified",score:76.4,metric:"resolved",source:"https://huggingface.co/Qwen/Qwen3.5-397B-A17B"}]},"alibaba/qwen-omni-turbo":{id:"alibaba/qwen-omni-turbo",name:"Qwen-Omni Turbo",description:"Qwen omni model for text, vision, audio, and multimodal agent tasks",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-04",release_date:"2025-01-19",last_updated:"2025-03-26",modalities:{input:["text","image","audio","video"],output:["text","audio"]},open_weights:false,limit:{context:32768,output:2048}},"alibaba/qwen2.5-coder-32b-instruct":{id:"alibaba/qwen2.5-coder-32b-instruct",name:"Qwen2.5-Coder-32B-Instruct",description:"Open coding-focused Qwen model for code generation, repair, and repository reasoning",family:"qwen",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2024-11-12",last_updated:"2024-11-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen2.5-Coder-32B-Instruct"}]},"alibaba/qwen3.6-27b":{id:"alibaba/qwen3.6-27b",name:"Qwen3.6 27B",description:"Qwen vision-language model for visual reasoning, documents, and agent tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-22",last_updated:"2026-04-22",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen3.6-27B"}],benchmarks:[{name:"SWE-Bench Verified",score:77.2,metric:"resolved",source:"https://huggingface.co/Qwen/Qwen3.6-27B"}]},"alibaba/qwen3.6-plus":{id:"alibaba/qwen3.6-plus",name:"Qwen3.6 Plus",description:"Earlier Qwen multimodal workhorse for million-token agent and document tasks",family:"qwen",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2026-04-02",last_updated:"2026-04-02",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"alibaba/qwen2.5-coder-0.5b":{id:"alibaba/qwen2.5-coder-0.5b",name:"Qwen2.5-Coder-0.5B",description:"Tiny open Qwen code model for lightweight completion and on-device coding",family:"qwen",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2024-11-12",last_updated:"2024-11-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:32768,output:8192},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/Qwen/Qwen2.5-Coder-0.5B"}]},"alibaba/qwen3.7-plus":{id:"alibaba/qwen3.7-plus",name:"Qwen3.7 Plus",description:"Multimodal Qwen workhorse for long-context agents, visual inputs, and coding",family:"qwen",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2026-06-02",last_updated:"2026-06-02",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,output:64e3}},"alibaba/qwen3.8-max-0902":{id:"alibaba/qwen3.8-max-0902",name:"Qwen3.8 Max 0902",description:"2026-09-02 upgraded snapshot of Qwen3.8 Max with stronger coding, collaborative agents, and multimodal document understanding",family:"qwen",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-09-02",last_updated:"2026-09-02",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:131072}},"mixedbread/toast-1":{id:"mixedbread/toast-1",name:"Toast 1",description:"Specialized search model for knowledge-intensive questions, multi-step retrieval, and evidence synthesis",attachment:false,reasoning:false,tool_call:true,release_date:"2026-08-13",last_updated:"2026-08-13",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:131e3,output:4e3}},"vispark/vision-large":{id:"vispark/vision-large",name:"Vision Large",description:"Most capable Vision model for complex reasoning, detailed media analysis, and structured output over a 1M-token context window.",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2024-05-15",last_updated:"2026-09",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"vispark/vision-small":{id:"vispark/vision-small",name:"Vision Small",description:"Fast, low-cost multimodal model for understanding text, images, audio, video, and PDFs, with tool calling and a 1M-token context window.",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2024-05-15",last_updated:"2026-09",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"vispark/vision-medium":{id:"vispark/vision-medium",name:"Vision Medium",description:"Balanced multimodal model pairing a 1M-token context window with deeper reasoning for analysis, content creation, and tool use across text, image, audio, video, and PDF inputs.",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2024-05-15",last_updated:"2026-09",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"motif-technologies/motif-3":{id:"motif-technologies/motif-3",name:"Motif 3",description:"Motif 3 is a large-scale, decoder-only Mixture-of-Experts (MoE) language model with 314 billion total parameters and 13.2 billion parameters activated per token.",family:"motif",attachment:false,reasoning:true,tool_call:true,structured_output:false,temperature:true,release_date:"2026-08-07",last_updated:"2026-08-07",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},license:"MIT",weights:[{label:"Model weights",url:"https://huggingface.co/Motif-Technologies/Motif-3",format:"safetensors"}]},"trendyol/asure-12b":{id:"trendyol/asure-12b",name:"Trendyol Asure 12B",description:"Turkish-language multimodal instruct model built on Gemma 3 12B for e-commerce text, chat, and image-text tasks",family:"gemma",attachment:true,reasoning:false,tool_call:false,temperature:true,release_date:"2026-02-19",last_updated:"2026-02-20",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072},license:"Gemma",weights:[{label:"Hugging Face",url:"https://huggingface.co/Trendyol/Trendyol-LLM-Asure-12B"}]},"upstage/solar-pro4":{id:"upstage/solar-pro4",name:"Solar Pro 4",description:"Upstage's flagship model, specialized for agentic use",family:"solar-pro",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-02",release_date:"2026-08-06",last_updated:"2026-08-06",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:524288,output:131072}},"upstage/solar-pro3":{id:"upstage/solar-pro3",name:"Solar Pro 3",description:"Flagship model for demanding analysis, coding, and production agent workflows",family:"solar-pro",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03",release_date:"2026-01",last_updated:"2026-01",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:131072,output:8192}},"upstage/solar-pro2":{id:"upstage/solar-pro2",name:"Solar Pro 2",description:"Flagship model for demanding analysis, coding, and production agent workflows",family:"solar-pro",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-03",release_date:"2025-05-20",last_updated:"2025-05-20",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:65536,output:8192}},"google/gemini-2.5-flash-tts":{id:"google/gemini-2.5-flash-tts",name:"Gemini 2.5 Flash TTS",description:"Speech generation model for controllable voice, narration, and audio delivery",family:"gemini-flash",attachment:false,reasoning:false,tool_call:false,temperature:true,knowledge:"2025-01",release_date:"2025-09-30",last_updated:"2025-12-10",modalities:{input:["text"],output:["audio"]},open_weights:false,limit:{context:32768,output:16384}},"google/gemini-flash-latest":{id:"google/gemini-flash-latest",name:"Gemini Flash Latest",description:"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-03",release_date:"2026-08-13",last_updated:"2026-08-13",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536}},"google/gemma-4-31b-it":{id:"google/gemma-4-31b-it",name:"Gemma 4 31B IT",description:"Largest Gemma 4 instruction model for open, self-hosted chat and reasoning",family:"gemma",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-02",last_updated:"2026-04-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-4-31B-it"}]},"google/gemini-omni-flash-preview":{id:"google/gemini-omni-flash-preview",name:"Gemini Omni Flash Preview",description:"Video generation and editing model for fast, conversational text- and image-to-video workflows",family:"gemini",attachment:true,reasoning:true,tool_call:false,release_date:"2026-06-30",last_updated:"2026-06-30",modalities:{input:["text","image","video"],output:["video"]},open_weights:false,limit:{context:1048576,output:57920},benchmarks:[{name:"LMArena Text-to-Video Arena",score:1527,metric:"Elo",source:"https://venturebeat.com/technology/googles-gemini-omni-flash-hits-the-api-turning-enterprise-video-production-into-a-conversation",date:"2026-06-30"}]},"google/gemini-3.1-flash-image-preview":{id:"google/gemini-3.1-flash-image-preview",name:"Nano Banana 2 Preview",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"gemini-flash",attachment:true,reasoning:true,tool_call:false,temperature:true,knowledge:"2025-01",release_date:"2026-02-26",last_updated:"2026-02-26",modalities:{input:["text","image","pdf"],output:["text","image"]},open_weights:false,limit:{context:65536,output:65536}},"google/veo-3.1-lite-generate-preview":{id:"google/veo-3.1-lite-generate-preview",name:"Veo 3.1 Lite Preview",description:"Video model for prompt-guided generation, editing, and motion workflows",family:"veo",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-03-31",last_updated:"2026-03-31",modalities:{input:["text","image"],output:["video"]},open_weights:false,limit:{context:1024,output:0}},"google/lyria-3-pro-preview":{id:"google/lyria-3-pro-preview",name:"Lyria 3 Pro Preview",description:"Music generation model for full-length songs from text or images with vocals and structure",family:"lyria",attachment:true,reasoning:false,tool_call:false,structured_output:false,temperature:true,release_date:"2026-03-25",last_updated:"2026-03-25",modalities:{input:["text","image"],output:["text","audio"]},open_weights:false,limit:{context:131072,output:8192}},"google/gemini-3.1-flash-tts-preview":{id:"google/gemini-3.1-flash-tts-preview",name:"Gemini 3.1 Flash TTS Preview",description:"Low-latency speech generation with steerable prompts and expressive audio tags",family:"gemini-flash",attachment:false,reasoning:false,tool_call:false,temperature:true,knowledge:"2025-01",release_date:"2026-04-15",last_updated:"2026-04-15",modalities:{input:["text"],output:["audio"]},open_weights:false,limit:{context:8192,output:16384}},"google/gemini-3.5-transcribe-live":{id:"google/gemini-3.5-transcribe-live",name:"Gemini 3.5 Transcribe Live",description:"Speech transcription model for accurate audio-to-text and captioning workflows",family:"gemini",attachment:false,reasoning:false,tool_call:false,release_date:"2026-08-26",last_updated:"2026-08-26",modalities:{input:["audio"],output:["text"]},open_weights:false,limit:{context:0,output:0}},"google/gemma-3-27b-it":{id:"google/gemma-3-27b-it",name:"Gemma 3 27B IT",description:"Largest open Gemma 3 instruction model for multilingual text generation and visual understanding",family:"gemma",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-03-12",last_updated:"2025-03-12",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-3-27b-it"}]},"google/gemini-3-pro-preview":{id:"google/gemini-3-pro-preview",name:"Gemini 3 Pro Preview",description:"Preview Gemini flagship for complex reasoning, coding, and rich multimodal prompts",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2025-11-18",last_updated:"2025-11-18",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"SWE-Bench Pro",score:43.3,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"google/gemini-2.5-flash-image":{id:"google/gemini-2.5-flash-image",name:"Nano Banana",description:"Nano Banana image model for fast generation, edits, and character-consistent assets",family:"gemini-flash",attachment:true,reasoning:true,tool_call:false,temperature:true,knowledge:"2024-06",release_date:"2025-08-26",last_updated:"2025-08-26",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:32768,output:32768}},"google/gemini-flash-lite-latest":{id:"google/gemini-flash-lite-latest",name:"Gemini Flash-Lite Latest",description:"Fast Gemini model balancing multimodal reasoning, tool use, and cost",family:"gemini-flash-lite",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-03",release_date:"2026-07-21",last_updated:"2026-07-21",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536}},"google/gemini-embedding-2":{id:"google/gemini-embedding-2",name:"Gemini Embedding 2",description:"Multimodal embedding model mapping text, images, video, audio, and PDFs into a unified embedding space",family:"gemini",attachment:true,reasoning:false,tool_call:false,temperature:false,knowledge:"2025-11",release_date:"2026-04-22",last_updated:"2026-04-22",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:8192,output:3072}},"google/gemini-3.6-flash":{id:"google/gemini-3.6-flash",name:"Gemini 3.6 Flash",description:"Fast Gemini model balancing multimodal reasoning, tool use, and cost",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-03",release_date:"2026-07-21",last_updated:"2026-07-21",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"SWE-Bench Pro",score:58.7,metric:"resolve rate",harness:"Antigravity",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"DeepSWE",score:49,metric:"resolve rate",variant:"high reasoning",version:"1.1",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"Terminal-Bench",score:78,metric:"accuracy",harness:"Terminus 2",version:"2.1",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"MLE-Bench",score:63.9,metric:"average position score",dataset:"Partial 30",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"GDPval-AA",score:1421,metric:"Elo",version:"v2",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"OSWorld-Verified",score:83,metric:"success rate",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"CharXiv Reasoning",score:85.2,metric:"accuracy",variant:"no tools",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"CharXiv Reasoning",score:89.4,metric:"accuracy",variant:"with tools",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"GDM-MRCR",score:91.8,metric:"accuracy",variant:"128k average, 8-needle",version:"v2",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"},{name:"GDM-MRCR",score:54,metric:"accuracy",variant:"1M pointwise, 8-needle",version:"v2",source:"https://deepmind.google/models/evals-methodology/gemini-3-6-flash/",date:"2026-07-21"}]},"google/gemini-2.0-flash":{id:"google/gemini-2.0-flash",name:"Gemini 2.0 Flash",description:"Earlier Gemini Flash workhorse for responsive multimodal apps and tool use",family:"gemini-flash",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-06",release_date:"2024-12-11",last_updated:"2024-12-11",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:8192}},"google/gemini-robotics-er-1.6-preview":{id:"google/gemini-robotics-er-1.6-preview",name:"Gemini Robotics-ER 1.6 Preview",description:"Vision-language model for embodied reasoning: spatial understanding, task planning, and physical-world agentic robotics",family:"gemini",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-04-14",last_updated:"2026-04-14",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:false,limit:{context:131072,output:65536}},"google/gemma-4-26b-a4b-it":{id:"google/gemma-4-26b-a4b-it",name:"Gemma 4 26B A4B IT",description:"Open Gemma instruction model for efficient chat and self-hosted deployments",family:"gemma",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-02",last_updated:"2026-04-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-4-26B-A4B-it"}]},"google/gemini-3-pro-image-preview":{id:"google/gemini-3-pro-image-preview",name:"Nano Banana Pro Preview",description:"Nano Banana Pro for higher-fidelity image generation and design-heavy edits",family:"gemini-pro",attachment:true,reasoning:true,tool_call:false,temperature:true,knowledge:"2025-01",release_date:"2025-11-20",last_updated:"2025-11-20",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:65536,output:32768}},"google/gemini-3.5-flash-lite":{id:"google/gemini-3.5-flash-lite",name:"Gemini 3.5 Flash Lite",description:"Fast Gemini model balancing multimodal reasoning, tool use, and cost",family:"gemini-flash-lite",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-03",release_date:"2026-07-21",last_updated:"2026-07-21",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"SWE-Bench Pro",score:54.2,metric:"resolve rate",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"Terminal-Bench",score:54,metric:"accuracy",harness:"Terminus 2",version:"2.1",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"MLE-Bench",score:39.2,metric:"average position score",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"GDPval-AA",score:1140,metric:"Elo",version:"v2",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"OSWorld-Verified",score:74,metric:"success rate",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"CharXiv Reasoning",score:74.5,metric:"accuracy",variant:"no tools",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"CharXiv Reasoning",score:76.5,metric:"accuracy",variant:"with tools",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"GDM-MRCR",score:72.2,metric:"accuracy",variant:"128k average, 8-needle",version:"v2",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"},{name:"GDM-MRCR",score:21.3,metric:"accuracy",variant:"1M pointwise, 8-needle",version:"v2",source:"https://deepmind.google/models/model-cards/gemini-3-5-flash-lite/",date:"2026-07-21"}]},"google/gemini-2.0-flash-lite":{id:"google/gemini-2.0-flash-lite",name:"Gemini 2.0 Flash-Lite",description:"Low-latency Gemini model for high-volume multimodal and agent workloads",family:"gemini-flash-lite",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-06",release_date:"2024-12-11",last_updated:"2024-12-11",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:8192}},"google/gemini-3.1-flash-image":{id:"google/gemini-3.1-flash-image",name:"Nano Banana 2",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"gemini-flash",attachment:true,reasoning:true,tool_call:false,temperature:true,knowledge:"2025-01",release_date:"2026-05-28",last_updated:"2026-05-28",modalities:{input:["text","image","video","pdf"],output:["text","image"]},open_weights:false,limit:{context:131072,output:32768}},"google/lyria-3-clip-preview":{id:"google/lyria-3-clip-preview",name:"Lyria 3 Clip Preview",description:"Music generation model for short 30-second clips, loops, and previews from text or image prompts",family:"lyria",attachment:true,reasoning:false,tool_call:false,structured_output:false,temperature:true,release_date:"2026-03-25",last_updated:"2026-03-25",modalities:{input:["text","image"],output:["text","audio"]},open_weights:false,limit:{context:131072,output:65536}},"google/gemini-3.1-pro-preview":{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview",description:"Reasoning-first Gemini preview for agentic coding and complex problem solving",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-02-19",last_updated:"2026-02-19",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"SWE-Bench Pro",score:54.2,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"Terminal-Bench",score:70.3,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"SWE-Bench Pro",score:46.1,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"},{name:"SWE-Atlas Codebase QnA",score:13.5,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:33.81,metric:"score",harness:"Gemini CLI",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:29.84,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"Artificial Analysis Coding Agent Index",score:43,metric:"average pass@1",harness:"Gemini CLI",variant:"high",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:45.6,metric:"pass@1",harness:"Gemini CLI",variant:"high",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:15.1,metric:"pass@1",harness:"Gemini CLI",variant:"high",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:68.3,metric:"pass@1",harness:"Gemini CLI",variant:"high",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"GPQA Diamond",score:94.3,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:44.4,metric:"accuracy",dataset:"full set, text + MM",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"ARC-AGI-2",score:77.1,metric:"accuracy",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"MMMU Pro",score:80.5,metric:"accuracy",variant:"no tools",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"MCP Atlas",score:78.2,metric:"success rate",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"OSWorld-Verified",score:76.2,metric:"success rate",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"CharXiv Reasoning",score:83.3,metric:"accuracy",variant:"no tools",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"GDPval-AA",score:1314,metric:"Elo",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"}]},"google/gemma-3-12b-it":{id:"google/gemma-3-12b-it",name:"Gemma 3 12B IT",description:"Open multimodal Gemma instruction model for multilingual text generation and image understanding",family:"gemma",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-03-12",last_updated:"2025-03-12",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-3-12b-it"}]},"google/gemini-2.5-computer-use-preview-10-2025":{id:"google/gemini-2.5-computer-use-preview-10-2025",name:"Gemini 2.5 Computer Use Preview",description:"Specialized Gemini 2.5 model for browser-control agents that automate UI tasks",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-01",release_date:"2025-10-07",last_updated:"2025-10-07",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:64e3}},"google/gemini-3.5-flash":{id:"google/gemini-3.5-flash",name:"Gemini 3.5 Flash",description:"Fast Gemini model balancing multimodal reasoning, tool use, and cost",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-05-19",last_updated:"2026-05-19",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"Terminal-Bench",score:76.2,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"SWE-Bench Pro",score:55.1,metric:"resolve rate",variant:"single attempt",dataset:"public",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"MCP Atlas",score:83.6,metric:"success rate",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"Toolathlon",score:56.5,metric:"success rate",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"OSWorld-Verified",score:78.4,metric:"success rate",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"MMMU Pro",score:83.6,metric:"accuracy",variant:"no tools",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"CharXiv Reasoning",score:84.2,metric:"accuracy",variant:"no tools",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"Humanity's Last Exam",score:40.2,metric:"accuracy",dataset:"full set, text + MM",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"ARC-AGI-2",score:72.1,metric:"accuracy",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"},{name:"GDPval-AA",score:1656,metric:"Elo",source:"https://deepmind.google/models/gemini/flash/",date:"2026-05-19"}]},"google/gemini-2.5-pro":{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro",description:"Google's proven reasoning model for coding, math, and multimodal analysis",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2025-06-17",last_updated:"2025-06-17",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"Aider Polyglot",score:83.1,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-06-06"},{name:"Artificial Analysis Coding Index",score:32,metric:"index",source:"https://openrouter.ai/google/gemini-2.5-pro/benchmarks",date:"2026-06-02"},{name:"SciCode",score:42.8,metric:"percent correct",source:"https://openrouter.ai/google/gemini-2.5-pro/benchmarks",date:"2026-06-02"},{name:"Terminal-Bench Hard",score:26.5,metric:"success rate",source:"https://openrouter.ai/google/gemini-2.5-pro/benchmarks",date:"2026-06-02"}]},"google/gemini-3-pro-image":{id:"google/gemini-3-pro-image",name:"Nano Banana Pro",description:"Nano Banana Pro for higher-fidelity image generation and design-heavy edits",family:"gemini-pro",attachment:true,reasoning:true,tool_call:false,temperature:true,knowledge:"2025-01",release_date:"2026-05-28",last_updated:"2026-05-28",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:65536,output:32768}},"google/gemini-2.5-flash":{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash",description:"Fast Gemini workhorse for multimodal apps where latency and price matter",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2025-06-17",last_updated:"2025-06-17",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"Aider Polyglot",score:55.1,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-05-25"},{name:"Artificial Analysis Coding Index",score:22.2,metric:"index",source:"https://openrouter.ai/google/gemini-2.5-flash/benchmarks",date:"2026-06-02"},{name:"SciCode",score:39.4,metric:"percent correct",source:"https://openrouter.ai/google/gemini-2.5-flash/benchmarks",date:"2026-06-02"},{name:"Terminal-Bench Hard",score:13.6,metric:"success rate",source:"https://openrouter.ai/google/gemini-2.5-flash/benchmarks",date:"2026-06-02"}]},"google/gemini-3.1-flash-lite-image":{id:"google/gemini-3.1-flash-lite-image",name:"Nano Banana 2 Lite",description:"Fastest, most cost-efficient Gemini image model for high-volume 1K generation and editing",family:"gemini-flash-lite",attachment:true,reasoning:true,tool_call:true,structured_output:false,temperature:true,knowledge:"2025-01",release_date:"2026-06-30",last_updated:"2026-06-30",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:65536,output:4096}},"google/deep-research-preview-04-2026":{id:"google/deep-research-preview-04-2026",name:"Gemini Deep Research Preview",description:"Agentic model for autonomous multi-step research, synthesis, and cited reports",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2025-01",release_date:"2026-04-21",last_updated:"2026-04-21",modalities:{input:["text","image","video","audio","pdf"],output:["text","image"]},open_weights:false,limit:{context:1048576,output:65536}},"google/deep-research-max-preview-04-2026":{id:"google/deep-research-max-preview-04-2026",name:"Deep Research Max Preview",description:"Maximum-comprehensiveness agentic researcher for multi-step investigation, synthesis, and cited reports",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2025-01",release_date:"2026-04-21",last_updated:"2026-04-21",modalities:{input:["text","image","video","audio","pdf"],output:["text","image"]},open_weights:false,limit:{context:1048576,output:65536}},"google/veo-3.1-fast-generate-preview":{id:"google/veo-3.1-fast-generate-preview",name:"Veo 3.1 Fast Preview",description:"Video model for prompt-guided generation, editing, and motion workflows",family:"veo",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2025-10-15",last_updated:"2026-01-01",modalities:{input:["text","image","video"],output:["video"]},open_weights:false,limit:{context:1024,output:0}},"google/gemma-4-12b-it":{id:"google/gemma-4-12b-it",name:"Gemma 4 12B IT",description:"Compact Gemma 4 instruction model for open, self-hosted chat and reasoning",family:"gemma",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-09",last_updated:"2026-06-09",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-4-12B-it"}]},"google/gemini-3.7-flash":{id:"google/gemini-3.7-flash",name:"Gemini 3.7 Flash",description:"High-efficiency Gemini model for agentic workflows, coding, and multimodal reasoning",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-03",release_date:"2026-08-13",last_updated:"2026-08-13",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"FrontierCode",score:43.6,metric:"score",version:"1.1 Main",source:"https://deepmind.google/models/model-cards/gemini-3-7-flash/",date:"2026-08-13"},{name:"DeepSWE",score:65.3,metric:"resolve rate",version:"1.1",source:"https://deepmind.google/models/model-cards/gemini-3-7-flash/",date:"2026-08-13"},{name:"Terminal-Bench",score:85.8,metric:"accuracy",version:"2.1",source:"https://deepmind.google/models/model-cards/gemini-3-7-flash/",date:"2026-08-13"},{name:"AutomationBench",score:30.4,metric:"accuracy",dataset:"private set",source:"https://deepmind.google/models/model-cards/gemini-3-7-flash/",date:"2026-08-13"},{name:"GDP.pdf",score:34,metric:"accuracy",source:"https://deepmind.google/models/model-cards/gemini-3-7-flash/",date:"2026-08-13"},{name:"GDM-MRCR",score:97,metric:"accuracy",variant:"128k average, 8-needle",version:"v2",source:"https://deepmind.google/models/model-cards/gemini-3-7-flash/",date:"2026-08-13"}]},"google/gemma-4-E2B-it":{id:"google/gemma-4-E2B-it",name:"Gemma 4 E2B IT",description:"Open Gemma instruction model for efficient chat and self-hosted deployments",family:"gemma",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-02",last_updated:"2026-04-02",modalities:{input:["text","image","audio"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-4-E2B-it"}]},"google/veo-3.1-generate-preview":{id:"google/veo-3.1-generate-preview",name:"Veo 3.1 Preview",description:"Video model for prompt-guided generation, editing, and motion workflows",family:"veo",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2025-10-15",last_updated:"2026-01",modalities:{input:["text","image"],output:["video"]},open_weights:false,limit:{context:1024,output:1}},"google/gemini-3.1-pro-preview-customtools":{id:"google/gemini-3.1-pro-preview-customtools",name:"Gemini 3.1 Pro Preview Custom Tools",description:"Advanced Gemini model for complex reasoning, coding, and multimodal analysis",family:"gemini-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-02-19",last_updated:"2026-02-19",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536}},"google/gemini-3-flash-preview":{id:"google/gemini-3-flash-preview",name:"Gemini 3 Flash Preview",description:"New Gemini flash lane bringing frontier-style multimodal reasoning to cheaper runs",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2025-12-17",last_updated:"2025-12-17",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"SWE-Bench Pro",score:34.63,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"},{name:"SWE-Atlas Codebase QnA",score:8.2,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:10,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:30.3,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"}]},"google/gemini-3.8-flash":{id:"google/gemini-3.8-flash",name:"Gemini 3.8 Flash",description:"Google's most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-09-02",last_updated:"2026-09-02",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"DeepSWE",score:73.7,metric:"pass@1",harness:"mini-swe-agent",variant:"high thinking",version:"1.1",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"GDPval-AA",score:1545,metric:"Elo",version:"2",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"Finance Agent",score:61.4,metric:"pass@1",version:"2",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"Harvey Legal Agent Benchmark",score:10,metric:"all-pass rate",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"Terminal-Bench",score:89.4,metric:"pass@1",harness:"Terminus 2",version:"2.1",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"Terminal-Bench",score:19.1,metric:"pass@1",version:"4.0",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"GDP.PDF",score:35,metric:"all-pass rate",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"CharXiv Reasoning",score:86.2,metric:"pass@1",variant:"without tools",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"LVBench",score:87.8,metric:"pass@1",variant:"agentic",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"LVBench",score:87.1,metric:"pass@1",variant:"static; 1024 frames; without tools",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"HLE-Verified",score:54.9,metric:"accuracy",dataset:"1811 verified and revised items",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"OSWorld",score:59,metric:"partial score",harness:"Gemini CUA",variant:"batched tool calls; best of 3 runs; 500 steps",dataset:"before 2026-08-08 patch",version:"2.0",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"BioMysteryBench",score:88.8,metric:"pass@1",variant:"with tools",dataset:"human-solvable",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"BioMysteryBench",score:56.5,metric:"pass@1",variant:"with tools",dataset:"human-difficult",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"},{name:"LAB-Bench",score:86.2,metric:"macro-average",variant:"with tools",dataset:"11 subtasks",version:"2",source:"https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/"}]},"google/gemini-3.5-live-translate-preview":{id:"google/gemini-3.5-live-translate-preview",name:"Gemini 3.5 Live Translate Preview",description:"Low-latency audio-to-audio model for real-time speech translation across 70+ languages",family:"gemini-pro",attachment:false,reasoning:false,tool_call:false,temperature:false,knowledge:"2025-01",release_date:"2026-06-09",last_updated:"2026-06-09",modalities:{input:["audio"],output:["audio","text"]},open_weights:false,limit:{context:131072,output:65536}},"google/gemma-3-4b-it":{id:"google/gemma-3-4b-it",name:"Gemma 3 4B IT",description:"Open multimodal Gemma instruction model for efficient text generation and image understanding",family:"gemma",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-03-12",last_updated:"2025-03-12",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-3-4b-it"}]},"google/gemini-2.5-flash-lite":{id:"google/gemini-2.5-flash-lite",name:"Gemini 2.5 Flash-Lite",description:"Lean Gemini 2.5 lane for cheap multimodal traffic and quick agents",family:"gemini-flash-lite",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2025-06-17",last_updated:"2025-06-17",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536},benchmarks:[{name:"Artificial Analysis Coding Index",score:9.5,metric:"index",source:"https://openrouter.ai/google/gemini-2.5-flash-lite/benchmarks",date:"2026-03-11"},{name:"SciCode",score:19.3,metric:"percent correct",source:"https://openrouter.ai/google/gemini-2.5-flash-lite/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:4.5,metric:"success rate",source:"https://openrouter.ai/google/gemini-2.5-flash-lite/benchmarks",date:"2026-03-11"}]},"google/gemini-2.5-pro-tts":{id:"google/gemini-2.5-pro-tts",name:"Gemini 2.5 Pro TTS",description:"Speech generation model for controllable voice, narration, and audio delivery",family:"gemini-pro",attachment:false,reasoning:false,tool_call:false,temperature:false,knowledge:"2025-01",release_date:"2025-09-30",last_updated:"2025-12-10",modalities:{input:["text"],output:["audio"]},open_weights:false,limit:{context:32768,output:16384}},"google/gemini-embedding-001":{id:"google/gemini-embedding-001",name:"Gemini Embedding 001",description:"Embedding model for semantic search, retrieval, clustering, and ranking pipelines",family:"gemini",attachment:false,reasoning:false,tool_call:false,temperature:false,knowledge:"2025-05",release_date:"2025-05-20",last_updated:"2025-05-20",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:2048,output:1}},"google/gemma-4-E4B-it":{id:"google/gemma-4-E4B-it",name:"Gemma 4 E4B IT",description:"Open Gemma instruction model for efficient chat and self-hosted deployments",family:"gemma",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-02",last_updated:"2026-04-02",modalities:{input:["text","image","audio"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},weights:[{label:"Hugging Face",url:"https://huggingface.co/google/gemma-4-E4B-it"}]},"google/gemini-3.1-flash-lite-preview":{id:"google/gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview",description:"Low-latency Gemini model for high-volume multimodal and agent workloads",family:"gemini-flash-lite",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-03-03",last_updated:"2026-03-03",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536}},"google/gemini-3.1-flash-live-preview":{id:"google/gemini-3.1-flash-live-preview",name:"Gemini 3.1 Flash Live Preview",description:"High-quality, low-latency Live API model for real-time dialogue and voice-first AI applications",family:"gemini-flash",attachment:true,reasoning:true,tool_call:true,structured_output:false,temperature:true,knowledge:"2025-01",release_date:"2026-03-26",last_updated:"2026-03-26",modalities:{input:["text","image","video","audio"],output:["text","audio"]},open_weights:false,limit:{context:131072,output:65536}},"google/gemini-3.1-flash-lite":{id:"google/gemini-3.1-flash-lite",name:"Gemini 3.1 Flash Lite",description:"Low-latency Gemini model for high-volume multimodal and agent workloads",family:"gemini-flash-lite",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-05-07",last_updated:"2026-05-07",modalities:{input:["text","image","video","audio","pdf"],output:["text"]},open_weights:false,limit:{context:1048576,output:65536}},"writer/palmyra-x4":{id:"writer/palmyra-x4",name:"Palmyra X4",description:"Enterprise language model for workflow automation, coding, data analysis, and tool use",family:"palmyra",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2024-10-09",last_updated:"2025-04-28",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:128e3,output:4096}},"writer/palmyra-x5":{id:"writer/palmyra-x5",name:"Palmyra X5",description:"Reasoning model for deliberate analysis, multi-step problem solving, and tool use",family:"palmyra",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2025-04-28",last_updated:"2025-04-28",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:1e6,output:8192}},"aisingapore/gemma-sea-lion-v4-27b-it":{id:"aisingapore/gemma-sea-lion-v4-27b-it",name:"Gemma-SEA-LION-v4-27B-IT",description:"Gemma 3 27B tuned by AI Singapore for Southeast Asian languages and instruction following",family:"gemma",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2025-09-23",last_updated:"2025-09-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/aisingapore/Gemma-SEA-LION-v4-27B-IT"}]},"xai/grok-4.7":{id:"xai/grok-4.7",name:"Grok 4.7",description:"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects",family:"grok",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-05",release_date:"2026-09-21",last_updated:"2026-09-21",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:5e5,output:5e5},benchmarks:[{name:"CursorBench",score:46.3,metric:"score",variant:"xhigh effort",version:"4.0",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"DeepSWE",score:71,metric:"score",variant:"high effort",version:"1.1",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"EEBench",score:64,metric:"score",variant:"xhigh effort",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"AA-Briefcase",score:1657,metric:"Elo",variant:"xhigh effort",version:"1.1",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"Terminal-Bench",score:37.6,metric:"score",variant:"xhigh effort",version:"4.0",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"Harvey Legal Agent Benchmark",score:19.6,metric:"score",variant:"xhigh effort",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"HealthBench",score:56.7,metric:"score",variant:"xhigh effort; professional",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"GDPval",score:1695,metric:"Elo",variant:"xhigh effort",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"}]},"xai/grok-4.1-fast-reasoning":{id:"xai/grok-4.1-fast-reasoning",name:"Grok 4.1 Fast (Reasoning)",description:"xAI's fast agentic tool-calling model with a 2M context window and built-in reasoning",family:"grok",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-11-19",last_updated:"2025-11-19",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e6,output:3e4}},"xai/grok-4.3":{id:"xai/grok-4.3",name:"Grok 4.3",description:"xAI's default Grok for chat, coding, agentic tools, and lower hallucination risk",family:"grok",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-17",last_updated:"2026-04-17",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:3e4},benchmarks:[{name:"Artificial Analysis Intelligence Index",score:53,metric:"index score",version:"4.0",source:"https://artificialanalysis.ai/articles/xai-launches-grok-4-3-with-improved-agentic-performance-and-lower-pricing",date:"2026-04-30"},{name:"GDPval-AA",score:1500,metric:"Elo",source:"https://artificialanalysis.ai/articles/xai-launches-grok-4-3-with-improved-agentic-performance-and-lower-pricing",date:"2026-04-30"},{name:"\u03C4\xB2-Bench Telecom",score:98,metric:"success rate",source:"https://artificialanalysis.ai/articles/xai-launches-grok-4-3-with-improved-agentic-performance-and-lower-pricing",date:"2026-04-30"},{name:"IFBench",score:81,metric:"accuracy",source:"https://artificialanalysis.ai/articles/xai-launches-grok-4-3-with-improved-agentic-performance-and-lower-pricing",date:"2026-04-30"}]},"xai/grok-4.20-0309-reasoning":{id:"xai/grok-4.20-0309-reasoning",name:"Grok 4.20 (Reasoning)",description:"Reasoning Grok for document-heavy analysis and long-horizon tool use",family:"grok",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-03-09",last_updated:"2026-03-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:3e4}},"xai/grok-imagine-video-1.5":{id:"xai/grok-imagine-video-1.5",name:"Grok Imagine Video 1.5",description:"Video model for image-to-video generation, editing, and extension workflows",family:"grok",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-05-30",last_updated:"2026-05-30",modalities:{input:["text","image","video"],output:["video"]},open_weights:false,limit:{context:1024,output:0}},"xai/grok-4.5":{id:"xai/grok-4.5",name:"Grok 4.5",description:"xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk",family:"grok",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-07-08",last_updated:"2026-07-08",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:5e5,output:5e5},benchmarks:[{name:"SWE-Bench Pro",score:64.7,metric:"resolve rate",source:"https://x.ai/news/grok-4-5",date:"2026-07-08"},{name:"SWE-Bench Multilingual",score:78,metric:"resolve rate",source:"https://x.ai/news/grok-4-5",date:"2026-07-08"},{name:"Terminal-Bench",score:83.3,metric:"success rate",version:"2.1",source:"https://x.ai/news/grok-4-5",date:"2026-07-08"},{name:"DeepSWE",score:62,metric:"resolve rate",version:"1.0",source:"https://x.ai/news/grok-4-5",date:"2026-07-08"},{name:"DeepSWE",score:53,metric:"resolve rate",harness:"mini-swe-agent",version:"1.1",source:"https://x.ai/news/grok-4-5",date:"2026-07-08"},{name:"SWE Marathon",score:29,metric:"pass@1",source:"https://x.ai/news/grok-4-5",date:"2026-07-08"}]},"xai/grok-voice-tts-1.0":{id:"xai/grok-voice-tts-1.0",name:"Grok Voice TTS 1.0",description:"Convert text into spoken audio with a single API call. The API supports a rich set of expressive voices, inline speech tags for fine-grained delivery control, and output formats from high-fidelity MP3 to telephony-optimized \u03BC-law.",attachment:false,reasoning:false,tool_call:false,temperature:false,release_date:"2026-07-31",last_updated:"2026-07-31",modalities:{input:["text"],output:["audio"]},open_weights:false,limit:{context:15e3,output:15e3}},"xai/grok-imagine-image-2.0":{id:"xai/grok-imagine-image-2.0",name:"Grok Imagine Image 2.0",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"grok",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-08-07",last_updated:"2026-08-07",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:8e3,output:0}},"xai/grok-voice-stt-1.0":{id:"xai/grok-voice-stt-1.0",name:"Grok Voice STT 1.0",description:"Grok Voice STT 1.0 is xAI's speech-to-text model. It supports transcription with word-level timestamps, optional speaker diarization, and multichannel audio.",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-08-04",last_updated:"2026-08-04",modalities:{input:["audio"],output:["text"]},open_weights:false,limit:{context:15e3,output:15e3}},"xai/grok-4.20-0309-non-reasoning":{id:"xai/grok-4.20-0309-non-reasoning",name:"Grok 4.20 (Non-Reasoning)",description:"Grok model for agentic tool use, reasoning, coding, and live assistance",family:"grok",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2026-03-09",last_updated:"2026-03-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:3e4}},"xai/grok-imagine-image-quality":{id:"xai/grok-imagine-image-quality",name:"Grok Imagine Image Quality",description:"Higher-fidelity Grok Imagine image model for prompt-driven generation, editing, and visual design workflows",family:"grok",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-04-03",last_updated:"2026-04-03",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:16e3,output:0}},"xai/grok-build-0.1":{id:"xai/grok-build-0.1",name:"Grok Build 0.1",description:"Fast Grok coding model tuned for agentic engineering and iterative edits",family:"grok-build",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-16",last_updated:"2026-04-16",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:256e3,output:256e3}},"xai/grok-4.1-fast":{id:"xai/grok-4.1-fast",name:"Grok 4.1 Fast",description:"xAI's fast agentic tool-calling model with a 2M context window; non-reasoning variant for low-latency responses",family:"grok",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-11-19",last_updated:"2025-11-19",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e6,output:3e4}},"xai/grok-4.6":{id:"xai/grok-4.6",name:"Grok 4.6",description:"xAI's frontier model for long-running agents, coding, knowledge work, and visual projects",family:"grok",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2026-02-01",release_date:"2026-08-12",last_updated:"2026-08-12",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:5e5,output:5e5},benchmarks:[{name:"CursorBench",score:40.4,metric:"score",variant:"high effort",version:"4.0",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"DeepSWE",score:65.2,metric:"score",variant:"high effort",version:"1.1",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"EEBench",score:53,metric:"score",variant:"high effort",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"AA-Briefcase",score:1546,metric:"Elo",variant:"high effort",version:"1.1",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"Terminal-Bench",score:20.3,metric:"score",variant:"high effort",version:"4.0",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"Harvey Legal Agent Benchmark",score:15.8,metric:"score",variant:"high effort",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"HealthBench",score:48.5,metric:"score",variant:"high effort; professional",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"},{name:"GDPval",score:1605,metric:"Elo",variant:"high effort",source:"https://x.ai/news/grok-4-7",date:"2026-09-21"}]},"ibm/granite-4-h-micro":{id:"ibm/granite-4-h-micro",name:"Granite-4.0-H-Micro",description:"Compact open-weight hybrid Granite model for lightweight enterprise chat and tool calling",family:"granite",attachment:false,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-10-02",last_updated:"2025-10-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/ibm-granite/granite-4.0-h-micro"}]},"ibm/granite-4-h-small":{id:"ibm/granite-4-h-small",name:"Granite-4.0-H-Small",description:"Open-weight hybrid model for enterprise chat, coding, retrieval-augmented generation, and tool-calling workloads",family:"granite",attachment:false,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-10-02",last_updated:"2025-10-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/ibm-granite/granite-4.0-h-small"}]},"deepreinforce/ornith-1.0-397b":{id:"deepreinforce/ornith-1.0-397b",name:"Ornith 1.0 397B",description:"Large coding-reasoning model for agentic software tasks and RL search",family:"ornith",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-25",last_updated:"2026-06-25",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144},license:"MIT",links:[{label:"Model card",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B",type:"model_card"},{label:"Announcement",url:"https://deep-reinforce.com/ornith_1_0.html",type:"announcement"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{label:"Hugging Face (FP8)",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B-FP8",quantization:"fp8"}],benchmarks:[{name:"SWE-Bench Verified",score:82.4,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{name:"SWE-Bench Pro",score:62.2,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{name:"SWE-Bench Multilingual",score:78.9,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{name:"Terminal-Bench 2.1",score:77.5,metric:"percent",variant:"Terminus-2",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{name:"Terminal-Bench 2.1",score:78.2,metric:"percent",variant:"Claude Code",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{name:"NL2Repo",score:48.2,metric:"percent",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"},{name:"Claw-eval",score:77.1,metric:"percent",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B"}]},"deepreinforce/ornith-1.5-35b-a3b":{id:"deepreinforce/ornith-1.5-35b-a3b",name:"Ornith 1.5 35B A3B",description:"Mixture-of-experts coding-reasoning model for agentic software tasks, tool use, and image understanding",family:"ornith",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-18",last_updated:"2026-08-23",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144},license:"MIT",links:[{label:"Model card",url:"https://huggingface.co/ornith-ai/Ornith-1.5-35B-A3B",type:"model_card"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/ornith-ai/Ornith-1.5-35B-A3B"}]},"deepreinforce/ornith-1.0-35b":{id:"deepreinforce/ornith-1.0-35b",name:"Ornith 1.0 35B",description:"Large coding-reasoning model for agentic software tasks and RL search",family:"ornith",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-25",last_updated:"2026-06-25",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144},license:"MIT",links:[{label:"Model card",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B",type:"model_card"},{label:"Announcement",url:"https://deep-reinforce.com/ornith_1_0.html",type:"announcement"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"}],benchmarks:[{name:"SWE-Bench Verified",score:75.6,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"},{name:"SWE-Bench Pro",score:50.4,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"},{name:"SWE-Bench Multilingual",score:69.3,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"},{name:"Terminal-Bench 2.1",score:64.2,metric:"percent",variant:"Terminus-2",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"},{name:"Terminal-Bench 2.1",score:62.8,metric:"percent",variant:"Claude Code",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"},{name:"NL2Repo",score:34.6,metric:"percent",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"},{name:"Claw-eval",score:69.8,metric:"percent",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-35B"}]},"deepreinforce/ornith-1.0-31b":{id:"deepreinforce/ornith-1.0-31b",name:"Ornith 1.0 31B",description:"Open coding-reasoning model for repository tasks and self-improving agents",family:"ornith",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-25",last_updated:"2026-06-25",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144},license:"MIT",links:[{label:"Announcement",url:"https://deep-reinforce.com/ornith_1_0.html",type:"announcement"}]},"deepreinforce/ornith-1.0-9b":{id:"deepreinforce/ornith-1.0-9b",name:"Ornith 1.0 9B",description:"Open coding-reasoning model for repository tasks and self-improving agents",family:"ornith",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-25",last_updated:"2026-06-25",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144},license:"MIT",links:[{label:"Model card",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B",type:"model_card"},{label:"Announcement",url:"https://deep-reinforce.com/ornith_1_0.html",type:"announcement"}],weights:[{label:"Hugging Face",url:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"}],benchmarks:[{name:"SWE-Bench Verified",score:69.4,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"},{name:"SWE-Bench Pro",score:42.9,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"},{name:"SWE-Bench Multilingual",score:52,metric:"percent resolved",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"},{name:"Terminal-Bench 2.1",score:43.1,metric:"percent",variant:"Terminus-2",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"},{name:"Terminal-Bench 2.1",score:40.6,metric:"percent",variant:"Claude Code",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"},{name:"NL2Repo",score:27.2,metric:"percent",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"},{name:"Claw-eval",score:63.1,metric:"percent",source:"https://huggingface.co/deepreinforce-ai/Ornith-1.0-9B"}]},"sakana/fugu-ultra":{id:"sakana/fugu-ultra",name:"Fugu Ultra",description:"Quality-first multi-agent model for hard research, analysis, and competitions",family:"fugu",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,release_date:"2026-06-15",last_updated:"2026-06-15",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:1e6},links:[{label:"Official model catalog",url:"https://raw.githubusercontent.com/SakanaAI/fugu/refs/heads/main/configs/files/fugu.json",type:"docs"}],benchmarks:[{name:"SWE Bench Pro",score:73.7,source:"https://console.sakana.ai/models"},{name:"Terminal Bench 2.1",score:82.1,source:"https://console.sakana.ai/models"},{name:"LiveCodeBench",score:93.2,source:"https://console.sakana.ai/models"},{name:"LiveCodeBench Pro",score:90.8,source:"https://console.sakana.ai/models"},{name:"Humanity\u2019s Last Exam",score:50,source:"https://console.sakana.ai/models"},{name:"CharXiv Reasoning",score:86.6,source:"https://console.sakana.ai/models"},{name:"GPQA Diamond",score:95.5,source:"https://console.sakana.ai/models"},{name:"SciCode",score:58.7,source:"https://console.sakana.ai/models"},{name:"\u03C43 Banking",score:20.6,source:"https://console.sakana.ai/models"},{name:"Long Context Reasoning",score:73.3,source:"https://console.sakana.ai/models"},{name:"MRCRv2",score:93.6,source:"https://console.sakana.ai/models"},{name:"CTI-REALM",score:69.4,source:"https://console.sakana.ai/models"}]},"sakana/sakana-namazu":{id:"sakana/sakana-namazu",name:"Sakana Namazu",description:"Japanese-specialized reasoning model based on Kimi K2.6 and tuned for Japanese language, culture, and business workflows",family:"sakana-namazu",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-03",last_updated:"2026-08-03",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:262144,output:65536},links:[{label:"Official product page",url:"https://sakana.ai/namazu/",type:"announcement"},{label:"Official model documentation",url:"https://console.sakana.ai/models?model=sakana-namazu",type:"docs"}],benchmarks:[{name:"AIME26",score:96.67,source:"https://console.sakana.ai/models?model=sakana-namazu"},{name:"MMLU-Pro",score:90.33,source:"https://console.sakana.ai/models?model=sakana-namazu"},{name:"LiveCodeBench v6",score:90.33,source:"https://console.sakana.ai/models?model=sakana-namazu"},{name:"JFBench",score:37.4,source:"https://console.sakana.ai/models?model=sakana-namazu"},{name:"Translation",score:52.2,source:"https://console.sakana.ai/models?model=sakana-namazu"},{name:"FairPoliticsQA",score:56.3,source:"https://console.sakana.ai/models?model=sakana-namazu"}]},"sakana/fugu":{id:"sakana/fugu",name:"Fugu",description:"Multi-agent model for routing expert agents across complex analytical tasks",family:"fugu",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,release_date:"2026-06-15",last_updated:"2026-06-15",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:1e6},links:[{label:"Official model catalog",url:"https://raw.githubusercontent.com/SakanaAI/fugu/refs/heads/main/configs/files/fugu.json",type:"docs"}],benchmarks:[{name:"SWE Bench Pro",score:59,source:"https://console.sakana.ai/models"},{name:"Terminal Bench 2.1",score:80.2,source:"https://console.sakana.ai/models"},{name:"LiveCodeBench",score:92.9,source:"https://console.sakana.ai/models"},{name:"LiveCodeBench Pro",score:87.8,source:"https://console.sakana.ai/models"},{name:"Humanity\u2019s Last Exam",score:47.2,source:"https://console.sakana.ai/models"},{name:"CharXiv Reasoning",score:85.1,source:"https://console.sakana.ai/models"},{name:"GPQA Diamond",score:95.5,source:"https://console.sakana.ai/models"},{name:"SciCode",score:60.1,source:"https://console.sakana.ai/models"},{name:"\u03C43 Banking",score:21.7,source:"https://console.sakana.ai/models"},{name:"Long Context Reasoning",score:74.7,source:"https://console.sakana.ai/models"},{name:"MRCRv2",score:86.6,source:"https://console.sakana.ai/models"},{name:"CTI-REALM",score:67.5,source:"https://console.sakana.ai/models"}]},"inclusionai/ling-3.0-flash-fin":{id:"inclusionai/ling-3.0-flash-fin",name:"Ling 3.0 Flash Fin",description:"Finance-enhanced model for financial research, multi-step investment workflows, and long-horizon planning and execution",family:"ling",attachment:false,reasoning:true,tool_call:true,release_date:"2026-08-27",last_updated:"2026-08-27",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:262144,output:32768},benchmarks:[{name:"FinFIRST",score:52.85,metric:"score",harness:"ReAct with web search, visit, and Python",variant:"highest reasoning effort",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"FinSearchComp Verified",score:77.04,metric:"score",harness:"ReAct with web search, visit, and Python",variant:"highest reasoning effort",dataset:"expert-validated internal set",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"FinCRAFT",score:51.74,metric:"score",variant:"highest reasoning effort",dataset:"internal",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"Finance Agent",score:69.19,metric:"strict-pass",variant:"highest reasoning effort; 10 runs",version:"1.1",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"Finance Agent",score:59.81,metric:"strict-pass",variant:"highest reasoning effort; 20 runs",version:"2",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"APEX-Agents",score:29.17,metric:"score",variant:"highest reasoning effort",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"SpreadsheetBench",score:86.5,metric:"score",harness:"Claude Code 2.1.173",variant:"highest reasoning effort; temperature=0.6; 120 turns; 3h timeout",version:"1",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"SpreadsheetBench",score:21.81,metric:"score",harness:"Claude Code 2.1.173",variant:"highest reasoning effort; temperature=0.6; 300 turns; 3h timeout",version:"2",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"},{name:"tau3-bench",score:41,metric:"score",variant:"highest reasoning effort; banking",source:"https://huggingface.co/inclusionAI/Ling-3.0-flash-Fin"}]},"moonshotai/kimi-k3":{id:"moonshotai/kimi-k3",name:"Kimi K3",description:"Multimodal Kimi model with 1M context and toggleable max-effort thinking for long-horizon agent work",family:"kimi-k3",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,release_date:"2026-07-16",last_updated:"2026-07-16",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},benchmarks:[{name:"DeepSWE",score:67.5,metric:"resolve rate",harness:"Kimi Code",variant:"max effort",version:"1.1",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"Terminal-Bench",score:88.3,metric:"accuracy",harness:"Kimi Code",variant:"max effort",version:"2.1",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"FrontierSWE",score:81.2,metric:"dominance score",harness:"Kimi Code",variant:"max effort",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"Program Bench",score:77.8,metric:"score",harness:"Kimi Code",variant:"max effort",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"SWE Marathon",score:42,metric:"resolve rate",harness:"Claude Code",variant:"max effort",version:"1.1",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"GDPval-AA",score:1668,metric:"Elo",variant:"max effort",version:"v2",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"AA-Briefcase",score:1548,metric:"Elo",variant:"max effort",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"AutomationBench",score:30.8,metric:"success rate",variant:"max effort",dataset:"600-task public subset",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"JobBench",score:52.9,metric:"score",variant:"max effort",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"SpreadsheetBench",score:34.8,metric:"score",harness:"Claude Code",variant:"max effort",version:"2",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"BrowseComp",score:91.2,metric:"accuracy",variant:"max effort, context compaction",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"CharXiv Reasoning",score:91.3,metric:"accuracy",variant:"max effort, with tools",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"},{name:"ZeroBench",score:41,metric:"pass@5",variant:"max effort, with tools",source:"https://www.kimi.com/blog/kimi-k3",date:"2026-07-16"}]},"moonshotai/kimi-k2.7-code-highspeed":{id:"moonshotai/kimi-k2.7-code-highspeed",name:"Kimi K2.7 Code Highspeed",description:"Lower-latency Kimi Code variant for interactive edits and coding-agent loops",family:"kimi-k2",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-01",release_date:"2026-06-12",last_updated:"2026-06-12",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/moonshotai/Kimi-K2.7-Code"}]},"moonshotai/kimi-k2.6":{id:"moonshotai/kimi-k2.6",name:"Kimi K2.6",description:"Multimodal Kimi workhorse for agent loops, coding tasks, and visual context",family:"kimi-k2",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-01",release_date:"2026-04-21",last_updated:"2026-04-21",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/moonshotai/Kimi-K2.6"}],benchmarks:[{name:"SWE-Bench Verified",score:80.2,metric:"resolved",source:"https://huggingface.co/moonshotai/Kimi-K2.6"},{name:"Artificial Analysis Coding Agent Index",score:50.5,metric:"average pass@1",harness:"Claude Code",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:59.8,metric:"pass@1",harness:"Claude Code",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:27.3,metric:"pass@1",harness:"Claude Code",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:64.3,metric:"pass@1",harness:"Claude Code",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"}]},"moonshotai/kimi-k2-thinking":{id:"moonshotai/kimi-k2-thinking",name:"Kimi K2 Thinking",description:"Thinking Kimi model for slower research passes, planning, and hard technical questions",family:"kimi-thinking",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-11-06",last_updated:"2025-11-06",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/moonshotai/Kimi-K2-Thinking"}],benchmarks:[{name:"SWE-Bench Verified",score:71.3,metric:"resolved",source:"https://huggingface.co/moonshotai/Kimi-K2-Thinking"}]},"moonshotai/kimi-k2.5":{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5",description:"Earlier Kimi frontier model for long-context agents, coding, and multimodal work",family:"kimi-k2",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-01",release_date:"2026-01",last_updated:"2026-01",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/moonshotai/Kimi-K2.5"}],benchmarks:[{name:"SWE-Bench Verified",score:70.8,metric:"resolved",source:"https://www.swebench.com/"},{name:"SWE-Atlas Codebase QnA",score:13.1,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:20.95,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:25.77,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"}]},"moonshotai/kimi-k2-thinking-turbo":{id:"moonshotai/kimi-k2-thinking-turbo",name:"Kimi K2 Thinking Turbo",description:"Kimi reasoning model for long-horizon research, planning, and tool use",family:"kimi-thinking",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-08",release_date:"2025-11-06",last_updated:"2025-11-06",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/moonshotai/Kimi-K2-Thinking"}]},"moonshotai/kimi-k2.8-preview":{id:"moonshotai/kimi-k2.8-preview",name:"Kimi K2.8 Preview",description:"Kimi coding model with more efficient thinking and up to 1M context, available through Kimi Code",family:"kimi-k2",attachment:true,reasoning:true,tool_call:true,release_date:"2026-09-11",last_updated:"2026-09-11",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1048576}},"moonshotai/kimi-k2.7-code":{id:"moonshotai/kimi-k2.7-code",name:"Kimi K2.7 Code",description:"Coding-focused Kimi model, stronger on long-horizon repo work with less overthinking",family:"kimi-k2",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-01",release_date:"2026-06-12",last_updated:"2026-06-12",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/moonshotai/Kimi-K2.7-Code"}],benchmarks:[{name:"Kimi Code Bench",score:62,harness:"Kimi Code CLI",version:"v2",source:"https://huggingface.co/moonshotai/Kimi-K2.7-Code",date:"2026-06-12"},{name:"Program Bench",score:53.6,harness:"Kimi Code CLI",source:"https://huggingface.co/moonshotai/Kimi-K2.7-Code",date:"2026-06-12"},{name:"MLS Bench Lite",score:35.1,harness:"Kimi Code CLI",source:"https://huggingface.co/moonshotai/Kimi-K2.7-Code",date:"2026-06-12"},{name:"MCP Atlas",score:76,metric:"success rate",harness:"Kimi Code CLI",source:"https://huggingface.co/moonshotai/Kimi-K2.7-Code",date:"2026-06-12"},{name:"MCP Mark Verified",score:81.1,metric:"success rate",harness:"Kimi Code CLI",source:"https://huggingface.co/moonshotai/Kimi-K2.7-Code",date:"2026-06-12"},{name:"Kimi Claw 24/7 Bench",score:46.9,harness:"Kimi Code CLI",source:"https://huggingface.co/moonshotai/Kimi-K2.7-Code",date:"2026-06-12"}]},"nvidia/nemotron-3-nano-30b-a3b":{id:"nvidia/nemotron-3-nano-30b-a3b",name:"Nemotron 3 Nano 30B A3B",description:"Small Nemotron 3 MoE for efficient coding, math, and long-context agents",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-12-15",last_updated:"2025-12-15",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144}},"nvidia/llama-nemotron-embed-vl-1b-v2":{id:"nvidia/llama-nemotron-embed-vl-1b-v2",name:"Llama Nemotron Embed VL 1B v2",description:"Embedding model for semantic search, retrieval, clustering, and ranking pipelines",family:"nemotron",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-02-10",last_updated:"2026-02-10",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:32768,output:2048}},"nvidia/nemotron-3.5-lightning":{id:"nvidia/nemotron-3.5-lightning",name:"Nemotron 3.5 Lightning 30B A3B",description:"Fast NVIDIA Nemotron MoE for reliable agentic tasks across enterprise workloads",family:"nemotron",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-11",last_updated:"2026-08-11",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},benchmarks:[{name:"MMLU-Pro",score:81.94,metric:"score",harness:"NeMo Gym / NeMo Evaluator SDK",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"AA-Omniscience",score:17.5,metric:"score",harness:"NeMo Gym / NeMo Evaluator SDK",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"SciCode",score:32.6,metric:"score",harness:"NeMo Gym / NeMo Evaluator SDK",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"PinchBench",score:85.37,metric:"score",harness:"NeMo Gym / NeMo Evaluator SDK",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"BrowseComp",score:36.97,metric:"score",harness:"NeMo Gym / NeMo Evaluator SDK",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"AA-LCR",score:52,metric:"score",harness:"NeMo Gym / NeMo Evaluator SDK",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"GPQA Diamond",score:75.44,metric:"accuracy",variant:"BF16; reasoning; no tools",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"Humanity's Last Exam",score:11.72,metric:"accuracy",variant:"BF16; reasoning; no tools",dataset:"text-only",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"SWE-Bench Verified",score:51.56,metric:"accuracy",harness:"NeMo Evaluator",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"SWE-Bench Multilingual",score:39.33,metric:"accuracy",harness:"NeMo Evaluator",variant:"BF16; reasoning",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"Terminal-Bench",score:24.58,metric:"accuracy",harness:"NeMo Evaluator",variant:"BF16; reasoning",version:"2.1",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"tau3-bench",score:9.28,metric:"score",variant:"BF16; reasoning; banking",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"GDPval-AA",score:832,metric:"Elo",variant:"BF16; reasoning",version:"2",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"},{name:"IFBench",score:71.88,metric:"accuracy",variant:"BF16; reasoning; loose",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"}]},"nvidia/nemotron-voicechat":{id:"nvidia/nemotron-voicechat",name:"Nemotron VoiceChat",description:"Nemotron multimodal model for visual reasoning and agentic AI workflows",family:"nemotron",attachment:true,reasoning:false,tool_call:true,temperature:true,release_date:"2026-03-16",last_updated:"2026-03-16",modalities:{input:["text","audio"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"nvidia/nemotron-nano-9b-v2":{id:"nvidia/nemotron-nano-9b-v2",name:"Nemotron Nano 9B v2",description:"Compact Nemotron model for efficient reasoning and deployable AI agents",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-08-18",last_updated:"2025-08-18",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072}},"nvidia/mistral-nemotron":{id:"nvidia/mistral-nemotron",name:"Mistral Nemotron",description:"Mistral model for multilingual chat, reasoning, and tool-assisted workflows",family:"nemotron",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2025-06-11",last_updated:"2025-06-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"nvidia/nemotron-3-super-120b-a12b":{id:"nvidia/nemotron-3-super-120b-a12b",name:"Nemotron 3 Super 120B A12B",description:"Nemotron middle tier for collaborative agents and high-volume reasoning workloads",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-03-11",last_updated:"2026-03-11",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144}},"nvidia/nemotron-content-safety-reasoning-4b":{id:"nvidia/nemotron-content-safety-reasoning-4b",name:"Nemotron Content Safety Reasoning 4B",description:"Safety model for policy screening, moderation, and risk-aware routing workflows",family:"nemotron",attachment:false,reasoning:true,tool_call:false,temperature:false,release_date:"2026-01-22",last_updated:"2026-01-22",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096}},"nvidia/llama-3.1-nemotron-safety-guard-8b-v3":{id:"nvidia/llama-3.1-nemotron-safety-guard-8b-v3",name:"Llama 3.1 Nemotron Safety Guard 8B v3",description:"Safety model for policy screening, moderation, and risk-aware routing workflows",family:"nemotron",attachment:false,reasoning:false,tool_call:false,temperature:false,release_date:"2025-10-28",last_updated:"2025-10-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096}},"nvidia/nemotron-3-ultra-550b-a55b":{id:"nvidia/nemotron-3-ultra-550b-a55b",name:"Nemotron 3 Ultra 550B A55B",description:"Largest Nemotron 3 model for maximum open-weight reasoning and agent accuracy",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-04",last_updated:"2026-06-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:128e3},benchmarks:[{name:"SWE-Bench Verified",score:70.7,metric:"resolved",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"SWE-Bench Multilingual",score:67.7,metric:"resolve rate",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"Terminal-Bench",score:56.4,metric:"success rate",version:"2.1",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"GPQA",score:87,metric:"accuracy",variant:"no tools",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"Humanity's Last Exam",score:26.7,metric:"accuracy",variant:"no tools",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"Humanity's Last Exam",score:37.4,metric:"accuracy",variant:"with tools",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"LiveCodeBench",score:89,metric:"pass@1",version:"v6",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"MMLU-Pro",score:86.8,metric:"accuracy",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"BrowseComp",score:44.4,metric:"accuracy",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"IFBench",score:81.7,metric:"accuracy",variant:"prompt loose",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"},{name:"GDPval",score:46.7,metric:"wins or ties",source:"https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16",date:"2026-06-04"}]},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning":{id:"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning",name:"Nemotron 3 Nano Omni 30B A3B Reasoning",description:"Open Nemotron omni model combining reasoning with text, vision, and audio",family:"nemotron",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-04-28",last_updated:"2026-04-28",modalities:{input:["text","image","video","audio"],output:["text"]},open_weights:true,limit:{context:256e3,output:65536}},"nvidia/nemotron-cascade-2-30b-a3b":{id:"nvidia/nemotron-cascade-2-30b-a3b",name:"Nemotron Cascade 2 30B A3B",description:"Nemotron model for efficient reasoning, coding, and specialized AI agents",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-03-24",last_updated:"2026-04-09",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:32768}},"nvidia/llama-nemotron-rerank-vl-1b-v2":{id:"nvidia/llama-nemotron-rerank-vl-1b-v2",name:"Llama Nemotron Rerank VL 1B v2",description:"Reranking model for improving retrieval quality in search and recommendation systems",family:"nemotron",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-03-31",last_updated:"2026-03-31",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096}},"nvidia/nemotron-mini-4b-instruct":{id:"nvidia/nemotron-mini-4b-instruct",name:"Nemotron Mini 4B Instruct",description:"Compact Nemotron model for efficient reasoning and deployable AI agents",family:"nemotron",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2024-08-21",last_updated:"2024-08-26",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"nvidia/llama-3.1-nemotron-ultra-253b":{id:"nvidia/llama-3.1-nemotron-ultra-253b",name:"Llama 3.1 Nemotron Ultra 253B",description:"Flagship Nemotron model for high-throughput reasoning and complex agents",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-04-07",last_updated:"2025-04-07",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"nvidia/nemotron-3-content-safety":{id:"nvidia/nemotron-3-content-safety",name:"Nemotron 3 Content Safety",description:"Safety model for policy screening, moderation, and risk-aware routing workflows",family:"nemotron",attachment:false,reasoning:false,tool_call:false,temperature:false,release_date:"2026-04-16",last_updated:"2026-04-16",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096}},"nvidia/llama-3.3-nemotron-super-49b-v1":{id:"nvidia/llama-3.3-nemotron-super-49b-v1",name:"Llama 3.3 Nemotron Super 49B v1",description:"Nemotron model for efficient reasoning, coding, and specialized AI agents",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-04-07",last_updated:"2025-04-07",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072}},"nvidia/nemotron-nano-12b-v2-vl":{id:"nvidia/nemotron-nano-12b-v2-vl",name:"Nemotron Nano 12B v2 VL",description:"Nemotron multimodal model for visual reasoning and agentic AI workflows",family:"nemotron",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2025-10-28",last_updated:"2025-10-28",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3}},"nvidia/nemotron-3.5-content-safety":{id:"nvidia/nemotron-3.5-content-safety",name:"Nemotron 3.5 Content Safety",description:"Safety model for policy screening, moderation, and risk-aware routing workflows",family:"nemotron",attachment:true,reasoning:true,tool_call:false,temperature:true,release_date:"2026-06-04",last_updated:"2026-06-04",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"nvidia/llama-3.3-nemotron-super-49b-v1.5":{id:"nvidia/llama-3.3-nemotron-super-49b-v1.5",name:"Llama 3.3 Nemotron Super 49B v1.5",description:"Nemotron model for efficient reasoning, coding, and specialized AI agents",family:"nemotron",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-07-25",last_updated:"2025-07-25",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072}},"nvidia/llama-3.1-nemotron-70b-instruct":{id:"nvidia/llama-3.1-nemotron-70b-instruct",name:"Llama 3.1 Nemotron 70B Instruct",description:"Nemotron model for efficient reasoning, coding, and specialized AI agents",family:"nemotron",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2025-04-15",last_updated:"2025-04-15",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"xiaomi/mimo-v2.6-pro":{id:"xiaomi/mimo-v2.6-pro",name:"MiMo-V2.6-Pro",description:"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution",family:"mimo",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-09-22",last_updated:"2026-09-22",modalities:{input:["text","image","audio","video"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Pro-RL"}],benchmarks:[{name:"DeepSWE",score:71.9,metric:"score",variant:"MiMo-V2.6 Pro comparison column",version:"1.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ProgramBench",score:26.5,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo Code Bench",score:63.2,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"AutomationBench",score:53.1,metric:"score",variant:"MiMo-V2.6 Pro comparison column",version:"1.0.6",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Toolathlon-Verified",score:76.9,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"GDPval-AA",score:1673,metric:"Elo",variant:"MiMo-V2.6 Pro comparison column",version:"2.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Agents' Last Exam",score:31.6,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Terminal-Bench",score:34.9,metric:"score",variant:"MiMo-V2.6 Pro comparison column",version:"4.0",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Terminal-Bench",score:89.9,metric:"score",variant:"MiMo-V2.6 Pro comparison column",version:"2.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"OSWorld-Verified",score:82,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"JobBench",score:62,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"CyberGym",score:94,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo Cyber Bench",score:80.2,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ExploitGym",score:17.8,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ExploitBench",score:47.9,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"SEC-Bench Pro",score:66.3,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo VisualCoding",score:72.3,metric:"score",variant:"MiMo-V2.6 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"}]},"xiaomi/mimo-v2-flash":{id:"xiaomi/mimo-v2-flash",name:"MiMo-V2-Flash",description:"MiMo flash model for fast multimodal assistance and agent workflows",family:"mimo",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-12-01",release_date:"2025-12-16",last_updated:"2026-02-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:65536},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2-Flash"}]},"xiaomi/mimo-v2.5":{id:"xiaomi/mimo-v2.5",name:"MiMo-V2.5",description:"Open MiMo model for multimodal coding agents and long-context automation",family:"mimo",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-12",release_date:"2026-04-22",last_updated:"2026-04-22",modalities:{input:["text","image","audio","video"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"}],benchmarks:[{name:"MiMo Coding Bench",score:71.8,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"Claw-Eval",score:62.3,metric:"score",variant:"text",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"Terminal-Bench",score:65.8,metric:"score",version:"2.0",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"SWE-Bench Pro",score:56.1,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"CharXiv Reasoning",score:81,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"MMMU-Pro",score:77.9,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"HR-Bench",score:88.5,metric:"score",variant:"4K",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"OmniDocBench",score:87.2,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"Claw-Eval",score:23.8,metric:"score",variant:"multimodal",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"Video-MME",score:87.7,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"DailyOmni",score:83.5,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"},{name:"VideoHolmes",score:64,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5"}]},"xiaomi/mimo-v2-omni":{id:"xiaomi/mimo-v2-omni",name:"MiMo-V2-Omni",description:"MiMo omni model for text, image, video, audio, and agents",family:"mimo",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-12",release_date:"2026-03-18",last_updated:"2026-03-18",modalities:{input:["text","image","audio","video","pdf"],output:["text"]},open_weights:false,limit:{context:262144,output:131072}},"xiaomi/mimo-v2.6-pro-ultraspeed":{id:"xiaomi/mimo-v2.6-pro-ultraspeed",name:"MiMo-V2.6-Pro-UltraSpeed",description:"MiMo pro model for strong multimodal reasoning and agent execution",family:"mimo",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-09-21",last_updated:"2026-09-21",modalities:{input:["text","image","audio","video"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Pro-RL"}]},"xiaomi/mimo-v2-pro":{id:"xiaomi/mimo-v2-pro",name:"MiMo-V2-Pro",description:"Earlier MiMo Pro model for multimodal agents, reasoning, and code tasks",family:"mimo",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-12",release_date:"2026-03-18",last_updated:"2026-03-18",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:1048576,output:131072}},"xiaomi/mimo-v2.5-pro":{id:"xiaomi/mimo-v2.5-pro",name:"MiMo-V2.5-Pro",description:"Stronger MiMo Pro tier for multimodal reasoning and coding-agent execution",family:"mimo",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-12",release_date:"2026-04-22",last_updated:"2026-04-22",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5-Pro"}],benchmarks:[{name:"SWE-Bench Verified",score:78.9,metric:"resolved",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5-Pro"},{name:"SWE-Bench Pro",score:57.2,metric:"resolve rate",source:"https://mimo.xiaomi.com/mimo-v2-5-pro/",date:"2026-04-22"},{name:"GPQA Diamond",score:86.6,metric:"accuracy",source:"https://mimo.xiaomi.com/mimo-v2-5-pro/",date:"2026-04-22"},{name:"DeepSWE",score:19,metric:"score",variant:"MiMo-V2.5 Pro comparison column",version:"1.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ProgramBench",score:12.5,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo Code Bench",score:40.4,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"AutomationBench",score:16,metric:"score",variant:"MiMo-V2.5 Pro comparison column",version:"1.0.6",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Toolathlon-Verified",score:49.1,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"GDPval-AA",score:1107,metric:"Elo",variant:"MiMo-V2.5 Pro comparison column",version:"2.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Agents' Last Exam",score:13.2,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Terminal-Bench",score:1.5,metric:"score",variant:"MiMo-V2.5 Pro comparison column",version:"4.0",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Terminal-Bench",score:65.2,metric:"score",variant:"MiMo-V2.5 Pro comparison column",version:"2.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"JobBench",score:25,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"CyberGym",score:40,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo Cyber Bench",score:0,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ExploitGym",score:.2,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ExploitBench",score:16.6,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"SEC-Bench Pro",score:17.7,metric:"score",variant:"MiMo-V2.5 Pro comparison column",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"}]},"xiaomi/mimo-v2.6-flash":{id:"xiaomi/mimo-v2.6-flash",name:"MiMo-V2.6-Flash",description:"MiMo Flash model for multimodal coding agents and long-context automation",family:"mimo",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-09-22",last_updated:"2026-09-22",modalities:{input:["text","image","audio","video"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"}],benchmarks:[{name:"DeepSWE",score:67.9,metric:"score",version:"1.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ProgramBench",score:26,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo Code Bench",score:61.2,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"AutomationBench",score:52.3,metric:"score",version:"1.0.6",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Toolathlon-Verified",score:73.6,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Agents' Last Exam",score:27.6,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Terminal-Bench",score:28.8,metric:"score",version:"4.0",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"Terminal-Bench",score:87.6,metric:"score",version:"2.1",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"OSWorld-Verified",score:80.8,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"JobBench",score:61.2,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"CyberGym",score:95.1,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo Cyber Bench",score:77.2,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ExploitGym",score:6,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"ExploitBench",score:25.3,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"SEC-Bench Pro",score:47.5,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"},{name:"MiMo VisualCoding",score:71.5,metric:"score",source:"https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL"}]},"xiaomi/mimo-v2.5-pro-ultraspeed":{id:"xiaomi/mimo-v2.5-pro-ultraspeed",name:"MiMo-V2.5-Pro-UltraSpeed",description:"MiMo pro model for strong multimodal reasoning and agent execution",family:"mimo",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2024-12",release_date:"2026-06-08",last_updated:"2026-06-09",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1048576,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/XiaomiMiMo/MiMo-V2.5-Pro-FP4-DFlash"}]},"minimax/MiniMax-M3":{id:"minimax/MiniMax-M3",name:"MiniMax-M3",description:"MiniMax multimodal model for long-context coding, perception, and agent planning",family:"minimax",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-06-01",last_updated:"2026-06-01",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:1048576,output:512e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M3"}],benchmarks:[{name:"SWE-Bench Verified",score:80.5,metric:"resolved",harness:"Claude Code",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"SWE-Bench Pro",score:59,metric:"resolve rate",harness:"Claude Code",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"Terminal-Bench",score:66,metric:"success rate",version:"2.1",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"BrowseComp",score:83.52,metric:"accuracy",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"MCP Atlas",score:74.2,metric:"success rate",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"OSWorld-Verified",score:70.06,metric:"success rate",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"}]},"minimax/MiniMax-M2.1":{id:"minimax/MiniMax-M2.1",name:"MiniMax-M2.1",description:"Earlier MiniMax agent model for practical coding and productivity tasks",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-12-23",last_updated:"2025-12-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M2.1"}],benchmarks:[{name:"SWE-Bench Verified",score:74,metric:"resolved",source:"https://huggingface.co/MiniMaxAI/MiniMax-M2.1"},{name:"SWE-Bench Pro",score:36.81,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"minimax/image-01":{id:"minimax/image-01",name:"MiniMax image-01",description:"MiniMax text-to-image generation model with reference-image support",family:"minimax",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2025-02-15",last_updated:"2026-08-25",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:0,output:0}},"minimax/MiniMax-M2-Her":{id:"minimax/MiniMax-M2-Her",name:"MiniMax-M2 Her",description:"MiniMax M2 variant tuned for conversational and character-driven agent interactions",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-01-23",last_updated:"2026-01-23",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:65536,output:2048}},"minimax/MiniMax-M2.5":{id:"minimax/MiniMax-M2.5",name:"MiniMax-M2.5",description:"Prior MiniMax coding model for agent workflows, office edits, and automation",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-02-12",last_updated:"2026-02-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M2.5"}],benchmarks:[{name:"SWE-Bench Verified",score:75.8,metric:"resolved",source:"https://www.swebench.com/"},{name:"SWE-Atlas Codebase QnA",score:10.3,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:19.52,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:18.6,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"}]},"minimax/MiniMax-M2.7":{id:"minimax/MiniMax-M2.7",name:"MiniMax-M2.7",description:"Open MiniMax flagship for coding agents, office automation, and complex environments",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-03-18",last_updated:"2026-03-18",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M2.7"}],benchmarks:[{name:"SWE-Bench Verified",score:79.9,metric:"resolved",harness:"Claude Code",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"SWE-Bench Pro",score:56.2,metric:"resolve rate",harness:"Claude Code",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"},{name:"Terminal-Bench",score:51.1,metric:"success rate",version:"2.1",source:"https://www.minimax.io/blog/minimax-m3",date:"2026-06-01"}]},"minimax/MiniMax-M2.7-highspeed":{id:"minimax/MiniMax-M2.7-highspeed",name:"MiniMax-M2.7-highspeed",description:"Low-latency M2.7 variant for interactive coding plans and agent loops",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-03-18",last_updated:"2026-03-18",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M2.7"}]},"minimax/MiniMax-M2":{id:"minimax/MiniMax-M2",name:"MiniMax-M2",description:"Efficient open MiniMax model built for coding agents and tool-heavy workflows",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-10-27",last_updated:"2025-10-27",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M2"}],benchmarks:[{name:"SWE-Bench Verified",score:69.4,metric:"resolved",source:"https://huggingface.co/MiniMaxAI/MiniMax-M2"}]},"minimax/MiniMax-M2.5-highspeed":{id:"minimax/MiniMax-M2.5-highspeed",name:"MiniMax-M2.5-highspeed",description:"High-speed MiniMax model for low-latency coding and agent workflows",family:"minimax",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-02-13",last_updated:"2026-02-13",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/MiniMaxAI/MiniMax-M2.5"}]},"stepfun/step-5-preview":{id:"stepfun/step-5-preview",name:"Step 5 Preview",description:"StepFun's next-generation flagship base model for coding and professional knowledge work, with native text, image, and video input and a 1M-token context window",attachment:true,reasoning:true,tool_call:true,structured_output:true,release_date:"2026-09-16",last_updated:"2026-09-20",modalities:{input:["text","image","video"],output:["text"]},open_weights:false,limit:{context:1e6,input:1e6,output:1e6}},"stepfun/step-3.5-flash-2603":{id:"stepfun/step-3.5-flash-2603",name:"Step 3.5 Flash 2603",description:"StepFun flash model for efficient multimodal reasoning, coding, and tool use",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-01",release_date:"2026-04-02",last_updated:"2026-04-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,input:256e3,output:256e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/stepfun-ai/Step-3.5-Flash"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:34.6,metric:"index",source:"https://openrouter.ai/stepfun/step-3.5-flash/benchmarks",date:"2026-06-02"},{name:"SciCode",score:38.5,metric:"percent correct",source:"https://openrouter.ai/stepfun/step-3.5-flash/benchmarks",date:"2026-06-02"},{name:"Terminal-Bench Hard",score:32.6,metric:"success rate",source:"https://openrouter.ai/stepfun/step-3.5-flash/benchmarks",date:"2026-06-02"}]},"stepfun/step-3.5-flash":{id:"stepfun/step-3.5-flash",name:"Step 3.5 Flash",description:"StepFun flash lane for quick multimodal reasoning and coding assistance",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-01",release_date:"2026-01-29",last_updated:"2026-02-13",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,input:256e3,output:256e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/stepfun-ai/Step-3.5-Flash"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:31.6,metric:"index",source:"https://openrouter.ai/stepfun/step-3.5-flash/benchmarks",date:"2026-06-02"},{name:"SciCode",score:40.4,metric:"percent correct",source:"https://openrouter.ai/stepfun/step-3.5-flash/benchmarks",date:"2026-06-02"},{name:"Terminal-Bench Hard",score:27.3,metric:"success rate",source:"https://openrouter.ai/stepfun/step-3.5-flash/benchmarks",date:"2026-06-02"},{name:"SWE-Bench Verified",score:74.4,metric:"resolved",source:"https://arxiv.org/abs/2602.10604"}]},"stepfun/step-3.7-flash":{id:"stepfun/step-3.7-flash",name:"Step 3.7 Flash",description:"Newer StepFun flash model for faster agents, coding, and multimodal prompts",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2026-03-01",release_date:"2026-05-29",last_updated:"2026-05-29",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:256e3,input:256e3,output:256e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/stepfun-ai/Step-3.7-Flash"}],benchmarks:[{name:"SWE-Bench Pro",score:56.3,metric:"resolve rate",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"SWE-Bench Verified",score:76.5,metric:"resolved",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"Terminal-Bench",score:59.6,metric:"success rate",version:"2.1",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"Humanity's Last Exam",score:47.2,metric:"accuracy",variant:"with tools",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"BrowseComp",score:75.8,metric:"accuracy",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"Toolathlon",score:49.5,metric:"success rate",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"GDPval",score:45.8,metric:"wins or ties",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"ClawEval",score:67.1,metric:"pass^3",version:"1.1",source:"https://static.stepfun.com/blog/step-3.7-flash/",date:"2026-05-29"},{name:"Artificial Analysis Coding Index",score:37.1,metric:"index",source:"https://openrouter.ai/stepfun/step-3.7-flash/benchmarks",date:"2026-06-15"},{name:"SciCode",score:40,metric:"percent correct",source:"https://openrouter.ai/stepfun/step-3.7-flash/benchmarks",date:"2026-06-15"},{name:"Terminal-Bench Hard",score:35.6,metric:"success rate",source:"https://openrouter.ai/stepfun/step-3.7-flash/benchmarks",date:"2026-06-15"}]},"sdaia/allam-2-7b":{id:"sdaia/allam-2-7b",name:"ALLaM-2-7b",description:"ALLaM-2-7b instruction tuned model by SDAIA",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2025-01-23",last_updated:"2025-01-23",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:4096,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/ALLaM-AI/ALLaM-2.0-7B-Instruct"}]},"zhipuai/glm-4.6v":{id:"zhipuai/glm-4.6v",name:"GLM-4.6V",description:"GLM vision model for visual reasoning, documents, and multimodal agents",family:"glm",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-12-08",last_updated:"2025-12-08",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:128e3,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.6V"}]},"zhipuai/glm-4.5":{id:"zhipuai/glm-4.5",name:"GLM-4.5",description:"Hybrid-reasoning GLM release that made the 4.5 line broadly useful",family:"glm",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-07-28",last_updated:"2025-07-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:98304},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.5"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:26.3,metric:"index",source:"https://openrouter.ai/z-ai/glm-4.5/benchmarks",date:"2026-03-11"},{name:"SciCode",score:34.8,metric:"percent correct",source:"https://openrouter.ai/z-ai/glm-4.5/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:22,metric:"success rate",source:"https://openrouter.ai/z-ai/glm-4.5/benchmarks",date:"2026-03-11"}]},"zhipuai/glm-5v-turbo":{id:"zhipuai/glm-5v-turbo",name:"GLM-5V-Turbo",description:"Fast GLM vision model for screenshots, documents, and multimodal agent tasks",family:"glm",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2026-04-01",last_updated:"2026-04-01",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:131072}},"zhipuai/glm-5.3-flash":{id:"zhipuai/glm-5.3-flash",name:"GLM-5.3-Flash",description:"Native multimodal GLM model for efficient coding and long-horizon agent tasks",family:"glm-flash",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-26",last_updated:"2026-08-26",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:true,limit:{context:1e6,output:131072},benchmarks:[{name:"Terminal-Bench",score:84.3,metric:"pass@1",harness:"Claude Code 2.1.207",variant:"max effort",version:"2.1",source:"https://huggingface.co/zai-org/GLM-5.3-Flash"},{name:"DeepSWE",score:63.4,metric:"resolved",harness:"mini-swe-agent",variant:"max effort",version:"1.1",source:"https://huggingface.co/zai-org/GLM-5.3-Flash"},{name:"Agents' Last Exam",score:26.3,metric:"score",variant:"max effort",source:"https://huggingface.co/zai-org/GLM-5.3-Flash"},{name:"AutomationBench",score:48.8,metric:"pass@1",variant:"max effort",version:"1.0.6",source:"https://huggingface.co/zai-org/GLM-5.3-Flash"},{name:"Humanity's Last Exam",score:55.3,metric:"accuracy",variant:"max effort; with tools",dataset:"full set",source:"https://huggingface.co/zai-org/GLM-5.3-Flash"},{name:"GDPval-AA",score:1773,metric:"Elo",variant:"max effort",version:"2",source:"https://huggingface.co/zai-org/GLM-5.3-Flash"}]},"zhipuai/glm-4.6":{id:"zhipuai/glm-4.6",name:"GLM-4.6",description:"Late GLM-4 workhorse for coding agents, reasoning, and structured tasks",family:"glm",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-09-30",last_updated:"2025-09-30",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.6"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:29.5,metric:"index",source:"https://openrouter.ai/z-ai/glm-4.6/benchmarks",date:"2026-05-22"},{name:"SciCode",score:38.4,metric:"percent correct",source:"https://openrouter.ai/z-ai/glm-4.6/benchmarks",date:"2026-05-22"},{name:"Terminal-Bench Hard",score:25,metric:"success rate",source:"https://openrouter.ai/z-ai/glm-4.6/benchmarks",date:"2026-05-22"},{name:"SWE-Bench Pro",score:9.67,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"zhipuai/glm-5":{id:"zhipuai/glm-5",name:"GLM-5",description:"General GLM flagship for coding, analysis, and tool-heavy engineering workflows",family:"glm",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2026-02-12",last_updated:"2026-02-12",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-5"}],benchmarks:[{name:"SWE-Bench Verified",score:72.8,metric:"resolved",source:"https://www.swebench.com/"},{name:"SWE-Atlas Codebase QnA",score:20.5,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:24.24,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:28.74,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"}]},"zhipuai/glm-4.6v-flash":{id:"zhipuai/glm-4.6v-flash",name:"GLM-4.6V-Flash",description:"Lightweight GLM vision model for visual reasoning, documents, and multimodal agents",family:"glm-flash",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2025-12-08",last_updated:"2025-12-08",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:128e3,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.6V-Flash"}]},"zhipuai/glm-4.5v":{id:"zhipuai/glm-4.5v",name:"GLM-4.5V",description:"GLM vision model for visual reasoning, documents, and multimodal agents",family:"glm",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-08-11",last_updated:"2025-08-11",modalities:{input:["text","image","video"],output:["text"]},open_weights:true,limit:{context:64e3,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.5V"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:10.9,metric:"index",source:"https://openrouter.ai/z-ai/glm-4.5v/benchmarks",date:"2026-04-29"},{name:"SciCode",score:22.1,metric:"percent correct",source:"https://openrouter.ai/z-ai/glm-4.5v/benchmarks",date:"2026-04-29"},{name:"Terminal-Bench Hard",score:5.3,metric:"success rate",source:"https://openrouter.ai/z-ai/glm-4.5v/benchmarks",date:"2026-04-29"}]},"zhipuai/glm-4.7-flash":{id:"zhipuai/glm-4.7-flash",name:"GLM-4.7-Flash",description:"Budget GLM lane for fast coding help, routing, and everyday automation",family:"glm-flash",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2026-01-19",last_updated:"2026-01-19",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:2e5,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.7-Flash"}],benchmarks:[{name:"SWE-Bench Verified",score:59.2,metric:"resolved",source:"https://huggingface.co/zai-org/GLM-4.7-Flash"}]},"zhipuai/glm-4.7":{id:"zhipuai/glm-4.7",name:"GLM-4.7",description:"Mature GLM model for dependable coding, reasoning, and structured agent tasks",family:"glm",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-12-22",last_updated:"2025-12-22",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:204800,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.7"}],benchmarks:[{name:"SWE-Bench Verified",score:73.8,metric:"resolved",source:"https://huggingface.co/zai-org/GLM-4.7"},{name:"Terminal Bench 2.0",score:33.4,metric:"score",source:"https://huggingface.co/zai-org/GLM-4.7"}]},"zhipuai/glm-4.5-flash":{id:"zhipuai/glm-4.5-flash",name:"GLM-4.5-Flash",description:"Efficient GLM model for fast reasoning, coding, and agent workflows",family:"glm-flash",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-07-28",last_updated:"2025-07-28",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:131072,output:98304}},"zhipuai/glm-5.2":{id:"zhipuai/glm-5.2",name:"GLM-5.2",description:"Open flagship GLM for long-horizon coding agents and million-token context work",family:"glm",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-06-13",last_updated:"2026-06-13",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-5.2"}],benchmarks:[{name:"SWE-Bench Pro",score:62.1,metric:"resolve rate",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"Terminal-Bench",score:82.7,metric:"success rate",harness:"Claude Code",version:"2.1",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"FrontierSWE",score:74.4,metric:"dominance",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"Humanity's Last Exam",score:40.5,metric:"accuracy",dataset:"text-only subset",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"Humanity's Last Exam",score:54.7,metric:"accuracy",variant:"with tools",dataset:"text-only subset",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"CritPt",score:20.9,metric:"accuracy",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"AIME",score:99.2,metric:"accuracy",version:"2026",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"HMMT",score:94.4,metric:"accuracy",version:"November 2025",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"HMMT",score:92.5,metric:"accuracy",version:"February 2026",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"IMOAnswerBench",score:91,metric:"accuracy",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"GPQA Diamond",score:91.2,metric:"accuracy",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"NL2Repo",score:48.9,metric:"resolve rate",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"DeepSWE",score:46.2,metric:"resolve rate",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"Program Bench",score:63.7,metric:"score",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"Terminal-Bench",score:81,metric:"success rate",harness:"Terminus 2",version:"2.1",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"PostTrainBench",score:34.3,metric:"score",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"SWE Marathon",score:13,metric:"resolve rate",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"MCP Atlas",score:76.8,metric:"score",dataset:"public subset",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"},{name:"Tool-Decathlon",score:48.2,metric:"score",source:"https://z.ai/blog/glm-5.2",date:"2026-06-16"}]},"zhipuai/glm-5.1":{id:"zhipuai/glm-5.1",name:"GLM-5.1",description:"Strong GLM coding model for agentic engineering, terminals, and repository generation",family:"glm",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-07",last_updated:"2026-04-07",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:2e5,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-5.1"}],benchmarks:[{name:"Artificial Analysis Coding Agent Index",score:52.7,metric:"average pass@1",harness:"Claude Code",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:73.2,metric:"pass@1",harness:"Claude Code",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:19.8,metric:"pass@1",harness:"Claude Code",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:65.1,metric:"pass@1",harness:"Claude Code",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"}]},"zhipuai/glm-4.7-flashx":{id:"zhipuai/glm-4.7-flashx",name:"GLM-4.7-FlashX",description:"Efficient GLM model for fast reasoning, coding, and agent workflows",family:"glm-flash",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2026-01-19",last_updated:"2026-01-19",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:2e5,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.7-Flash"}]},"zhipuai/glm-5-turbo":{id:"zhipuai/glm-5-turbo",name:"GLM-5-Turbo",description:"Faster GLM-5 lane for coding agents that need lower latency",family:"glm",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-03-16",last_updated:"2026-03-16",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:2e5,output:131072}},"zhipuai/glm-image":{id:"zhipuai/glm-image",name:"GLM-Image",description:"GLM-Image is an image generation model adopts a hybrid autoregressive + diffusion decoder architecture. In general image generation quality, GLM\u2011Image aligns with mainstream latent diffusion approaches, but it shows significant advantages in text-rendering and knowledge\u2011intensive generation scenarios. It performs especially well in tasks requiring precise semantic understanding and complex information expression, while maintaining strong capabilities in high\u2011fidelity and fine\u2011grained detail generation. In addition to text\u2011to\u2011image generation, GLM\u2011Image also supports a rich set of image\u2011to\u2011image tasks including image editing, style transfer, identity\u2011preserving generation, and multi\u2011subject consistency.",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-01-19",last_updated:"2026-01-19",modalities:{input:["text","image"],output:["image"]},open_weights:true,limit:{context:10240,output:0},license:"MIT",weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-Image"}]},"zhipuai/glm-4.5-air":{id:"zhipuai/glm-4.5-air",name:"GLM-4.5-Air",description:"Lighter GLM-4.5 variant for fast coding assistance and cheaper agents",family:"glm-air",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-04",release_date:"2025-07-28",last_updated:"2025-07-28",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:98304},weights:[{label:"Hugging Face",url:"https://huggingface.co/zai-org/GLM-4.5-Air"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:23.8,metric:"index",source:"https://openrouter.ai/z-ai/glm-4.5-air/benchmarks",date:"2026-05-30"},{name:"SciCode",score:30.6,metric:"percent correct",source:"https://openrouter.ai/z-ai/glm-4.5-air/benchmarks",date:"2026-05-30"},{name:"Terminal-Bench Hard",score:20.5,metric:"success rate",source:"https://openrouter.ai/z-ai/glm-4.5-air/benchmarks",date:"2026-05-30"}]},"zhipuai/glm-5.3":{id:"zhipuai/glm-5.3",name:"GLM-5.3",description:"Flagship GLM model for long-horizon coding, agents, and complex project delivery",family:"glm",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-08-14",last_updated:"2026-08-14",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:1e6,output:131072},benchmarks:[{name:"Terminal-Bench",score:88.2,metric:"pass@1",harness:"Claude Code 2.1.207",variant:"max effort",version:"2.1",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"Terminal-Bench",score:28.3,metric:"avg@3",harness:"Claude Code 2.1.207",variant:"max effort",version:"3.0",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"DeepSWE",score:66.9,metric:"resolved",harness:"mini-swe-agent",variant:"max effort; 6h timeout; 400K context",version:"1.1",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"NL2Repo",score:58,metric:"score",variant:"max effort",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"ProgramBench",score:19,metric:"almost solved",variant:"max effort",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"FrontierSWE",score:78.1,metric:"dominance score",variant:"max effort",source:"https://huggingface.co/zai-org/GLM-5.3",date:"2026-08-14"},{name:"SWE-Marathon",score:42.5,metric:"score",harness:"Claude Code 2.1.207",variant:"max effort; modified anti-cheat checks",version:"1.1",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"PostTrainBench",score:39.8,metric:"weighted average",harness:"Claude Code 2.1.207",variant:"max effort; 3 runs; modified external-API checks",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"CyberGym",score:84.5,metric:"pass@1",harness:"Claude Code 2.1.207",variant:"max effort",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"ExploitGym",score:105,metric:"tasks solved",harness:"Claude Code 2.1.207",variant:"max effort; 2h rescaled timeout",dataset:"869 tasks",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"ExploitGym",score:130,metric:"tasks solved",harness:"Claude Code 2.1.207",variant:"max effort; 6h rescaled timeout",dataset:"869 tasks",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"ExploitBench",score:54.4,metric:"average coverage",harness:"Claude Code 2.1.207",variant:"max effort; union over 3 revisions",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"Toolathlon-Verified",score:73,metric:"pass@1",variant:"max effort",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"AutomationBench",score:48.2,metric:"pass@1",variant:"max effort",version:"1.0.6",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"Agents' Last Exam",score:28.5,metric:"score",harness:"Claude Code 2.1.207",variant:"max effort; CLI",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"Humanity's Last Exam",score:62.5,metric:"accuracy",variant:"max effort; with tools",source:"https://huggingface.co/zai-org/GLM-5.3"},{name:"GDPval-AA",score:1769,metric:"Elo",variant:"max effort",version:"2",source:"https://huggingface.co/zai-org/GLM-5.3"}]},"amazon/nova-premier":{id:"amazon/nova-premier",name:"Nova Premier",description:"Multimodal model for complex analysis, long-context understanding, tool use, and model distillation",family:"nova",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-10",release_date:"2025-04-30",last_updated:"2025-04-30",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:1e4}},"amazon/nova-micro":{id:"amazon/nova-micro",name:"Nova Micro",description:"Efficient model for low-latency assistance, extraction, and routine automation",family:"nova-micro",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-10",release_date:"2024-12-03",last_updated:"2024-12-03",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:128e3,output:1e4}},"amazon/nova-pro":{id:"amazon/nova-pro",name:"Nova Pro",description:"Flagship model for demanding analysis, coding, and production agent workflows",family:"nova-pro",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-10",release_date:"2024-12-03",last_updated:"2024-12-03",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:3e5,output:1e4}},"amazon/nova-lite":{id:"amazon/nova-lite",name:"Nova Lite",description:"Efficient model for low-latency assistance, extraction, and routine automation",family:"nova-lite",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-10",release_date:"2024-12-03",last_updated:"2024-12-03",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:3e5,output:1e4}},"amazon/nova-2-lite":{id:"amazon/nova-2-lite",name:"Nova 2 Lite",description:"Multimodal reasoning model for visual analysis, planning, and tool use",family:"nova",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-10",release_date:"2025-12-02",last_updated:"2025-12-01",modalities:{input:["text","image","video","pdf"],output:["text"]},open_weights:false,limit:{context:1e6,output:65536}},"mistral/codestral-latest":{id:"mistral/codestral-latest",name:"Codestral (latest)",description:"Mistral code model for completions, refactors, and developer IDE workflows",family:"codestral",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-10",release_date:"2024-05-29",last_updated:"2025-01-04",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:256e3,output:4096},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Codestral-22B-v0.1"}],benchmarks:[{name:"Aider Polyglot",score:11.1,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-01-13"}]},"mistral/mistral-large-2411":{id:"mistral/mistral-large-2411",name:"Mistral Large 2.1",description:"Flagship Mistral model for advanced reasoning, coding, and multilingual work",family:"mistral-large",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-11",release_date:"2024-11-18",last_updated:"2024-11-18",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Large-Instruct-2411"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:13.8,metric:"index",source:"https://openrouter.ai/mistralai/mistral-large-2407/benchmarks",date:"2026-03-11"},{name:"SciCode",score:29.2,metric:"percent correct",source:"https://openrouter.ai/mistralai/mistral-large-2407/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:6.1,metric:"success rate",source:"https://openrouter.ai/mistralai/mistral-large-2407/benchmarks",date:"2026-03-11"}]},"mistral/mistral-nemo":{id:"mistral/mistral-nemo",name:"Mistral Nemo",description:"Efficient Mistral-NVIDIA open model for multilingual chat and local deployment",family:"mistral-nemo",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-07",release_date:"2024-07-01",last_updated:"2024-07-01",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Nemo-Instruct-2407"}]},"mistral/mistral-large-latest":{id:"mistral/mistral-large-latest",name:"Mistral Large (latest)",description:"Flagship Mistral model for advanced reasoning, coding, and multilingual work",family:"mistral-large",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-11",release_date:"2024-11-01",last_updated:"2025-12-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Large-3-675B-Instruct-2512"}]},"mistral/mistral-small-latest":{id:"mistral/mistral-small-latest",name:"Mistral Small (latest)",description:"Efficient Mistral model for fast chat, extraction, and production assistants",family:"mistral-small",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-06",release_date:"2026-03-16",last_updated:"2026-03-16",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:256e3,output:256e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Small-4-119B-2603"}]},"mistral/ministral-3b":{id:"mistral/ministral-3b",name:"Ministral 3B",description:"Compact Mistral model for edge, latency-sensitive, and cost-efficient workloads",family:"ministral",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-03",release_date:"2024-10-16",last_updated:"2024-10-16",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:8192}},"mistral/devstral-medium-latest":{id:"mistral/devstral-medium-latest",name:"Devstral 2 (latest)",description:"Mistral coding agent model for repository tasks and software engineering workflows",family:"devstral",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-12",release_date:"2025-12-02",last_updated:"2025-12-02",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Devstral-2-123B-Instruct-2512"}]},"mistral/voxtral-mini-3b-2507":{id:"mistral/voxtral-mini-3b-2507",name:"Voxtral Mini 3B 2507",description:"Open audio-language model for speech transcription, audio understanding, and voice-driven tool use",family:"voxtral",attachment:true,reasoning:false,tool_call:true,temperature:true,release_date:"2025-07-15",last_updated:"2025-07-15",modalities:{input:["text","audio"],output:["text"]},open_weights:true,limit:{context:32768,output:32768},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Voxtral-Mini-3B-2507"}]},"mistral/devstral-2512":{id:"mistral/devstral-2512",name:"Devstral 2",description:"Mistral's coding-agent model for repository work, terminal tasks, and software fixes",family:"devstral",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-12",release_date:"2025-12-09",last_updated:"2025-12-09",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Devstral-2-123B-Instruct-2512"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:23.7,metric:"index",source:"https://openrouter.ai/mistralai/devstral-2512/benchmarks",date:"2026-05-31"},{name:"SciCode",score:33.1,metric:"percent correct",source:"https://openrouter.ai/mistralai/devstral-2512/benchmarks",date:"2026-05-31"},{name:"Terminal-Bench Hard",score:18.9,metric:"success rate",source:"https://openrouter.ai/mistralai/devstral-2512/benchmarks",date:"2026-05-31"}]},"mistral/mistral-medium-2505":{id:"mistral/mistral-medium-2505",name:"Mistral Medium 3",description:"Mistral model for multilingual chat, reasoning, and tool-assisted workflows",family:"mistral-medium",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-05",release_date:"2025-05-07",last_updated:"2025-05-07",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:131072,output:131072},benchmarks:[{name:"Artificial Analysis Coding Index",score:13.6,metric:"index",source:"https://openrouter.ai/mistralai/mistral-medium-3/benchmarks",date:"2026-05-30"},{name:"SciCode",score:33.1,metric:"percent correct",source:"https://openrouter.ai/mistralai/mistral-medium-3/benchmarks",date:"2026-05-30"},{name:"Terminal-Bench Hard",score:3.8,metric:"success rate",source:"https://openrouter.ai/mistralai/mistral-medium-3/benchmarks",date:"2026-05-30"}]},"mistral/magistral-medium-latest":{id:"mistral/magistral-medium-latest",name:"Magistral Medium (latest)",description:"Mistral reasoning model for transparent analysis, math, and complex decisions",family:"magistral-medium",attachment:false,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-06",release_date:"2025-03-17",last_updated:"2025-03-20",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384}},"mistral/magistral-small-2506":{id:"mistral/magistral-small-2506",name:"Magistral Small",description:"Open Mistral reasoning model for transparent step-by-step problem solving",family:"magistral",attachment:false,reasoning:true,tool_call:true,temperature:true,release_date:"2025-06-10",last_updated:"2025-06-10",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Magistral-Small-2506"}]},"mistral/mistral-small-3-1-24b-instruct-2503":{id:"mistral/mistral-small-3-1-24b-instruct-2503",name:"Mistral Small 3.1 24B",description:"Efficient multimodal model for instruction following, coding, reasoning, and function calling",family:"mistral-small",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-06",release_date:"2025-03-17",last_updated:"2025-03-17",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Small-3.1-24B-Instruct-2503"}]},"mistral/ministral-3-14b-instruct-2512":{id:"mistral/ministral-3-14b-instruct-2512",name:"Ministral 3 14B",description:"Open vision-language model for efficient local deployment, instruction following, and tool use",family:"ministral",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-12-02",last_updated:"2025-12-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Ministral-3-14B-Instruct-2512"}]},"mistral/pixtral-12b":{id:"mistral/pixtral-12b",name:"Pixtral 12B",description:"Mistral vision-language model for image understanding and multimodal chat",family:"pixtral",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-09",release_date:"2024-09-01",last_updated:"2024-09-01",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Pixtral-12B-2409"}]},"mistral/codestral-22b-v0.1":{id:"mistral/codestral-22b-v0.1",name:"Codestral-22B-v0.1",description:"Open Mistral code model for fill-in-the-middle and 80+ programming languages",family:"codestral",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2024-05-29",last_updated:"2024-05-29",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:32768,output:8192},license:"Mistral AI Non-Production License",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Codestral-22B-v0.1"}]},"mistral/mistral-embed":{id:"mistral/mistral-embed",name:"Mistral Embed",description:"Embedding model for semantic search, retrieval, clustering, and ranking pipelines",family:"mistral-embed",attachment:false,reasoning:false,tool_call:false,temperature:false,release_date:"2023-12-11",last_updated:"2023-12-11",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:8e3,output:3072}},"mistral/magistral-small-2509":{id:"mistral/magistral-small-2509",name:"Magistral Small 1.2",description:"Open multimodal reasoning model for transparent analysis of text and images",family:"magistral",attachment:true,reasoning:true,tool_call:true,temperature:true,release_date:"2025-09-18",last_updated:"2025-09-18",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Magistral-Small-2509"}]},"mistral/devstral-small-2":{id:"mistral/devstral-small-2",name:"Devstral Small 2",description:"Compact multimodal coding model for repository exploration, file editing, and software agents",family:"devstral",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-12",release_date:"2025-12-09",last_updated:"2025-12-09",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},license:"Apache-2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Devstral-Small-2-24B-Instruct-2512"}]},"mistral/mistral-small-2603":{id:"mistral/mistral-small-2603",name:"Mistral Small 4",description:"Fast Mistral production model for chat, extraction, and cost-sensitive agents",family:"mistral-small",attachment:true,reasoning:true,tool_call:true,temperature:true,knowledge:"2025-06",release_date:"2026-03-16",last_updated:"2026-03-16",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:256e3,output:256e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Small-4-119B-2603"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:24.3,metric:"index",source:"https://openrouter.ai/mistralai/mistral-small-2603/benchmarks",date:"2026-06-01"},{name:"SciCode",score:38,metric:"percent correct",source:"https://openrouter.ai/mistralai/mistral-small-2603/benchmarks",date:"2026-06-01"},{name:"Terminal-Bench Hard",score:17.4,metric:"success rate",source:"https://openrouter.ai/mistralai/mistral-small-2603/benchmarks",date:"2026-06-01"}]},"mistral/ministral-3-3b-instruct-2512":{id:"mistral/ministral-3-3b-instruct-2512",name:"Ministral 3 3B",description:"Compact open vision-language model for edge deployment, instruction following, and tool use",family:"ministral",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-12-02",last_updated:"2025-12-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Ministral-3-3B-Instruct-2512"}]},"mistral/devstral-medium-2507":{id:"mistral/devstral-medium-2507",name:"Devstral Medium",description:"Mistral coding agent model for repository tasks and software engineering workflows",family:"devstral",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-05",release_date:"2025-07-10",last_updated:"2025-07-10",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:128e3,output:128e3},benchmarks:[{name:"SWE-Bench Verified",score:61.6,metric:"resolved",source:"https://mistral.ai/news/devstral-2507",date:"2025-07-10"}]},"mistral/voxtral-small-24b-2507":{id:"mistral/voxtral-small-24b-2507",name:"Voxtral Small 24B 2507",description:"Open audio-language model for speech transcription, audio understanding, and voice-driven tool use",family:"voxtral",attachment:true,reasoning:false,tool_call:true,temperature:true,release_date:"2025-07-15",last_updated:"2025-07-15",modalities:{input:["text","audio"],output:["text"]},open_weights:true,limit:{context:32768,output:32768},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Voxtral-Small-24B-2507"}]},"mistral/pixtral-large-2502":{id:"mistral/pixtral-large-2502",name:"Pixtral Large (25.02)",description:"Mistral vision-language model for image understanding and multimodal chat",family:"pixtral",attachment:true,reasoning:false,tool_call:true,temperature:true,release_date:"2025-04-08",last_updated:"2025-04-08",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:8192}},"mistral/ministral-3-8b-instruct-2512":{id:"mistral/ministral-3-8b-instruct-2512",name:"Ministral 3 8B",description:"Compact open vision-language model for edge deployment, instruction following, and tool use",family:"ministral",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,release_date:"2025-12-02",last_updated:"2025-12-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},license:"Apache 2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Ministral-3-8B-Instruct-2512"}]},"mistral/mistral-large-2512":{id:"mistral/mistral-large-2512",name:"Mistral Large 3",description:"Mistral's largest general model for enterprise agents, coding, and multilingual reasoning",family:"mistral-large",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-11",release_date:"2025-12-02",last_updated:"2025-12-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Large-3-675B-Instruct-2512"}],benchmarks:[{name:"Artificial Analysis Coding Index",score:22.7,metric:"index",source:"https://openrouter.ai/mistralai/mistral-large-2512/benchmarks",date:"2026-06-04"},{name:"SciCode",score:36.2,metric:"percent correct",source:"https://openrouter.ai/mistralai/mistral-large-2512/benchmarks",date:"2026-06-04"},{name:"Terminal-Bench Hard",score:15.9,metric:"success rate",source:"https://openrouter.ai/mistralai/mistral-large-2512/benchmarks",date:"2026-06-04"}]},"mistral/devstral-small-2507":{id:"mistral/devstral-small-2507",name:"Devstral Small",description:"Mistral coding agent model for repository tasks and software engineering workflows",family:"devstral",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-05",release_date:"2025-07-10",last_updated:"2025-07-10",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Devstral-Small-2507"}],benchmarks:[{name:"SWE-Bench Verified",score:53.6,metric:"resolved",source:"https://mistral.ai/news/devstral-2507",date:"2025-07-10"}]},"mistral/pixtral-large-latest":{id:"mistral/pixtral-large-latest",name:"Pixtral Large (latest)",description:"Mistral's larger vision model for document-heavy image understanding and chat",family:"pixtral",attachment:true,reasoning:false,tool_call:true,temperature:true,knowledge:"2024-11",release_date:"2024-11-01",last_updated:"2024-11-04",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:128e3},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Pixtral-Large-Instruct-2411"}]},"mistral/voxtral-small-latest":{id:"mistral/voxtral-small-latest",name:"Voxtral Small (latest)",description:"Instruct model with native audio input for speech understanding and tool use",family:"voxtral",attachment:true,reasoning:false,tool_call:true,temperature:true,release_date:"2025-07-15",last_updated:"2025-07-15",modalities:{input:["text","audio"],output:["text"]},open_weights:true,limit:{context:32e3,output:32e3}},"mistral/mistral-small-2506":{id:"mistral/mistral-small-2506",name:"Mistral Small 3.2",description:"Efficient Mistral model for fast chat, extraction, and production assistants",family:"mistral-small",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2025-03",release_date:"2025-06-20",last_updated:"2025-06-20",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:128e3,output:16384},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Small-3.2-24B-Instruct-2506"}]},"mistral/ministral-14b":{id:"mistral/ministral-14b",name:"Ministral 14B",description:"Compact multimodal Mistral model for local assistants, edge agents, and efficient tool use",family:"ministral",attachment:true,reasoning:false,tool_call:true,temperature:true,release_date:"2025-12-02",last_updated:"2025-12-02",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},license:"Apache-2.0",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Ministral-3-14B-Instruct-2512"}]},"mistral/mistral-medium-2604":{id:"mistral/mistral-medium-2604",name:"Mistral Medium 3.5",description:"Balanced Mistral model for enterprise assistants, multilingual work, and tools",family:"mistral-medium",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-29",last_updated:"2026-04-29",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Medium-3.5-128B"}],benchmarks:[{name:"SWE-Bench Verified",score:77.6,metric:"resolved",source:"https://huggingface.co/mistralai/Mistral-Medium-3.5-128B"},{name:"\u03C4\xB3-Telecom",score:91.4,metric:"accuracy",variant:"public preview",source:"https://mistral.ai/news/vibe-remote-agents-mistral-medium-3-5/",date:"2026-05-22"}]},"mistral/ministral-8b-instruct-2410":{id:"mistral/ministral-8b-instruct-2410",name:"Ministral 8B Instruct",description:"Efficient open Mistral edge model for on-device chat and function calling",family:"ministral",attachment:false,reasoning:false,tool_call:true,temperature:true,release_date:"2024-10-16",last_updated:"2024-10-16",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:8192},license:"Mistral Research License",weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Ministral-8B-Instruct-2410"}]},"mistral/mistral-medium-latest":{id:"mistral/mistral-medium-latest",name:"Mistral Medium (latest)",description:"Balanced Mistral model for enterprise assistants, multilingual work, and tools",family:"mistral-medium",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2026-04-29",last_updated:"2026-04-29",modalities:{input:["text","image"],output:["text"]},open_weights:true,limit:{context:262144,output:262144},weights:[{label:"Hugging Face",url:"https://huggingface.co/mistralai/Mistral-Medium-3.5-128B"}],benchmarks:[{name:"SWE-Bench Verified",score:77.6,metric:"resolved",source:"https://huggingface.co/mistralai/Mistral-Medium-3.5-128B"}]},"vivgrid/viv-fast":{id:"vivgrid/viv-fast",name:"Viv Fast",description:"Fast coding model",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-09",release_date:"2026-09-21",last_updated:"2026-09-21",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:1e6,output:256e3},links:[{label:"Model docs",url:"https://docs.vivgrid.com/models/viv-fast"}]},"openai/gpt-5.4":{id:"openai/gpt-5.4",name:"GPT-5.4",description:"Agent-ready GPT for coding and computer-use workflows at a lower cost",family:"gpt",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-08-31",release_date:"2026-03-05",last_updated:"2026-03-05",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:59.1,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"},{name:"SWE-Atlas Codebase QnA",score:40.8,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Codebase QnA",score:36.3,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:44.29,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:44.36,metric:"score",harness:"Codex CLI",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"SWE-Atlas Test Writing",score:40,metric:"score",harness:"Mini-SWE-Agent",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"Artificial Analysis Coding Agent Index",score:53.6,metric:"average pass@1",harness:"Codex",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:72.4,metric:"pass@1",harness:"Codex",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:18.4,metric:"pass@1",harness:"Codex",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:69.8,metric:"pass@1",harness:"Codex",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Artificial Analysis Coding Agent Index",score:52.2,metric:"average pass@1",harness:"Cursor CLI",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:72.9,metric:"pass@1",harness:"Cursor CLI",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:18.9,metric:"pass@1",harness:"Cursor CLI",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:64.7,metric:"pass@1",harness:"Cursor CLI",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:75.1,metric:"success rate",version:"2.0",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GPQA Diamond",score:92.8,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:39.8,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:52.1,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"OSWorld-Verified",score:75,metric:"success rate",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"BrowseComp",score:82.7,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GDPval",score:83,metric:"wins or ties",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"ARC-AGI-2",score:73.3,metric:"accuracy",variant:"Verified",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:47.6,metric:"accuracy",dataset:"Tier 1-3",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:27.1,metric:"accuracy",dataset:"Tier 4",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"MMMU Pro",score:81.2,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"}]},"openai/gpt-5.4-pro":{id:"openai/gpt-5.4-pro",name:"GPT-5.4 Pro",description:"More exact GPT-5.4 tier for demanding professional reasoning and agent tasks",family:"gpt-pro",attachment:true,reasoning:true,tool_call:true,structured_output:false,temperature:false,knowledge:"2025-08-31",release_date:"2026-03-05",last_updated:"2026-03-05",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"GPQA Diamond",score:94.4,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:42.7,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:58.7,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"BrowseComp",score:89.3,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GDPval",score:82,metric:"wins or ties",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:50,metric:"accuracy",dataset:"Tier 1-3",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:38,metric:"accuracy",dataset:"Tier 4",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"ARC-AGI-1",score:94.5,metric:"accuracy",variant:"Verified",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"ARC-AGI-2",score:83.3,metric:"accuracy",variant:"Verified",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FinanceAgent",score:61.5,metric:"accuracy",version:"1.1",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GeneBench",score:25.6,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"}]},"openai/gpt-oss-safeguard-120b":{id:"openai/gpt-oss-safeguard-120b",name:"GPT OSS Safeguard 120B",description:"Safety model for policy screening, moderation, and risk-aware routing workflows",family:"gpt-oss",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-10-29",last_updated:"2025-10-29",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/openai/gpt-oss-safeguard-120b"}]},"openai/gpt-3.5-turbo":{id:"openai/gpt-3.5-turbo",name:"GPT-3.5-turbo",description:"Compact GPT model for low-latency assistance and high-volume workloads",family:"gpt",attachment:false,reasoning:false,tool_call:false,structured_output:false,temperature:true,knowledge:"2021-09-01",release_date:"2023-03-01",last_updated:"2023-11-06",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:16385,output:4096},benchmarks:[{name:"Artificial Analysis Coding Index",score:10.7,metric:"index",source:"https://openrouter.ai/openai/gpt-3.5-turbo/benchmarks",date:"2026-03-11"}]},"openai/gpt-5.5-pro":{id:"openai/gpt-5.5-pro",name:"GPT-5.5 Pro",description:"Highest-accuracy GPT-5.5 tier for slower, precision-heavy reasoning and coding",family:"gpt-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-12-01",release_date:"2026-04-23",last_updated:"2026-04-23",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"BrowseComp",score:90.1,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:43.1,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:57.2,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:52.4,metric:"accuracy",dataset:"Tier 1-3",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:39.6,metric:"accuracy",dataset:"Tier 4",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GDPval",score:82.3,metric:"wins or ties",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GeneBench",score:33.2,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"}]},"openai/gpt-5.4-nano":{id:"openai/gpt-5.4-nano",name:"GPT-5.4 nano",description:"Cheapest GPT-5.4 lane for simple routing, extraction, and bulk automation",family:"gpt-nano",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-08-31",release_date:"2026-03-17",last_updated:"2026-03-17",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:52.4,metric:"resolve rate",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Terminal-Bench",score:46.3,metric:"accuracy",variant:"reasoning effort xhigh",version:"2.0",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"MCP Atlas",score:56.1,metric:"score",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Toolathlon",score:35.5,metric:"score",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"\u03C4\xB2-Bench Telecom",score:92.5,metric:"accuracy",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"GPQA Diamond",score:82.8,metric:"accuracy",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Humanity's Last Exam",score:37.7,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Humanity's Last Exam",score:24.3,metric:"accuracy",variant:"without tools",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OSWorld-Verified",score:39,metric:"success rate",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"MMMU Pro",score:69.5,metric:"accuracy",variant:"with Python",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"MMMU Pro",score:66.1,metric:"accuracy",variant:"without tools",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OmniDocBench",score:.2419,metric:"overall edit distance",variant:"reasoning effort none",version:"1.5",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OpenAI MRCR",score:44.2,metric:"accuracy",variant:"8-needle, 64K-128K",version:"v2",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OpenAI MRCR",score:33.1,metric:"accuracy",variant:"8-needle, 128K-256K",version:"v2",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Graphwalks",score:73.4,metric:"accuracy",variant:"BFS, 0-128K",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Graphwalks",score:50.8,metric:"accuracy",variant:"parents, 0-128K",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"}]},"openai/gpt-realtime-2.1":{id:"openai/gpt-realtime-2.1",name:"GPT-Realtime-2.1",description:"Realtime speech-to-speech model with configurable reasoning, tool use, and robust voice-agent behavior",family:"gpt",attachment:true,reasoning:true,tool_call:true,structured_output:false,temperature:false,knowledge:"2024-09-30",release_date:"2026-07-06",last_updated:"2026-07-06",modalities:{input:["text","audio","image"],output:["text","audio"]},open_weights:false,limit:{context:128e3,input:96e3,output:32e3}},"openai/gpt-4o-2024-05-13":{id:"openai/gpt-4o-2024-05-13",name:"GPT-4o (2024-05-13)",description:"GPT model for general reasoning, writing, coding, and tool-assisted tasks",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2023-09",release_date:"2024-05-13",last_updated:"2024-05-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:4096},benchmarks:[{name:"Artificial Analysis Coding Index",score:24.2,metric:"index",source:"https://openrouter.ai/openai/gpt-4o-2024-05-13/benchmarks",date:"2026-03-11"},{name:"SciCode",score:30.9,metric:"percent correct",source:"https://openrouter.ai/openai/gpt-4o-2024-05-13/benchmarks",date:"2026-03-11"}]},"openai/gpt-5.2-codex":{id:"openai/gpt-5.2-codex",name:"GPT-5.2 Codex",description:"Code-specialist GPT for repository edits, reviews, and long-running software agents",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-08-31",release_date:"2025-12-11",last_updated:"2025-12-11",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:41.04,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"openai/gpt-5.1-codex":{id:"openai/gpt-5.1-codex",name:"GPT-5.1 Codex",description:"Codex GPT for repository edits, code review, and practical software agents",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-11-13",last_updated:"2025-11-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-4o":{id:"openai/gpt-4o",name:"GPT-4o",description:"Omni-era GPT for multimodal chat, practical coding, and general assistants",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2023-09",release_date:"2024-05-13",last_updated:"2024-08-06",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384},benchmarks:[{name:"Aider Polyglot",score:23.1,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2024-12-30"}]},"openai/whisper-large-v3":{id:"openai/whisper-large-v3",name:"Whisper 3 Large",description:"Open Whisper checkpoint for robust multilingual transcription and captioning",family:"whisper",attachment:false,reasoning:false,tool_call:false,release_date:"2024-10-01",last_updated:"2024-10-01",modalities:{input:["audio"],output:["text"]},open_weights:true,limit:{context:448,output:4096}},"openai/gpt-5-codex":{id:"openai/gpt-5-codex",name:"GPT-5-Codex",description:"Coding-optimized GPT model for repository edits, reviews, and agentic software work",family:"gpt-codex",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-09-15",last_updated:"2025-09-15",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"Artificial Analysis Coding Index",score:38.9,metric:"index",source:"https://openrouter.ai/openai/gpt-5-codex/benchmarks",date:"2026-06-01"},{name:"SciCode",score:40.9,metric:"percent correct",source:"https://openrouter.ai/openai/gpt-5-codex/benchmarks",date:"2026-06-01"},{name:"Terminal-Bench Hard",score:37.9,metric:"success rate",source:"https://openrouter.ai/openai/gpt-5-codex/benchmarks",date:"2026-06-01"}]},"openai/gpt-5-mini":{id:"openai/gpt-5-mini",name:"GPT-5 Mini",description:"Small GPT-5 for responsive agents, coding help, and everyday automation",family:"gpt-mini",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-05-30",release_date:"2025-08-07",last_updated:"2025-08-07",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-image-2":{id:"openai/gpt-image-2",name:"GPT-Image-2",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"gpt-image",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-04-21",last_updated:"2026-04-21",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:0,output:0}},"openai/gpt-6-astra-fast":{id:"openai/gpt-6-astra-fast",name:"GPT-6 Astra (Fast)",description:"Fast variant of GPT-6 Astra for low-latency assistance and high-volume workloads.",family:"gpt-astra",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,release_date:"2026-09-04",last_updated:"2026-09-04",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3}},"openai/gpt-5.2-pro":{id:"openai/gpt-5.2-pro",name:"GPT-5.2 Pro",description:"Higher-accuracy GPT-5.2 variant for tougher reasoning and review workflows",family:"gpt-pro",attachment:true,reasoning:true,tool_call:true,structured_output:false,temperature:false,knowledge:"2025-08-31",release_date:"2025-12-11",last_updated:"2025-12-11",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/o4-mini":{id:"openai/o4-mini",name:"o4-mini",description:"Fast o-series model for compact reasoning, coding, and tool use",family:"o-mini",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-05",release_date:"2025-04-16",last_updated:"2025-04-16",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5},benchmarks:[{name:"Aider Polyglot",score:72,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-04-16"}]},"openai/o3-mini":{id:"openai/o3-mini",name:"o3-mini",description:"Smaller o-series reasoner for economical coding, math, and planning tasks",family:"o-mini",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-05",release_date:"2024-12-20",last_updated:"2025-01-29",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5},benchmarks:[{name:"Aider Polyglot",score:60.4,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-01-31"}]},"openai/gpt-4":{id:"openai/gpt-4",name:"GPT-4",description:"GPT model for general reasoning, writing, coding, and tool-assisted tasks",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:false,temperature:true,knowledge:"2023-11",release_date:"2023-11-06",last_updated:"2024-04-09",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:8192,output:8192},benchmarks:[{name:"Artificial Analysis Coding Index",score:13.1,metric:"index",source:"https://openrouter.ai/openai/gpt-4/benchmarks",date:"2026-03-11"}]},"openai/gpt-5.3-codex":{id:"openai/gpt-5.3-codex",name:"GPT-5.3 Codex",description:"Coding-optimized GPT model for repository edits, reviews, and agentic software work",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-08-31",release_date:"2026-02-05",last_updated:"2026-02-05",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"SWE-Atlas Codebase QnA",score:32.6,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:42.38,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:38.98,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-tw"}]},"openai/gpt-4.1-nano":{id:"openai/gpt-4.1-nano",name:"GPT-4.1 nano",description:"Tiny GPT-4.1 option for classification, routing, and very high-volume tasks",family:"gpt-nano",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-04",release_date:"2025-04-14",last_updated:"2025-04-14",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:1047576,output:32768},benchmarks:[{name:"Aider Polyglot",score:8.9,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-04-14"}]},"openai/o3-deep-research":{id:"openai/o3-deep-research",name:"o3-deep-research",description:"Research model for long-horizon investigation, synthesis, and analytical reports",family:"o",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2024-05",release_date:"2024-06-26",last_updated:"2024-06-26",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5}},"openai/gpt-5-nano":{id:"openai/gpt-5-nano",name:"GPT-5 Nano",description:"Tiny GPT-5 lane for routing, extraction, classification, and bulk jobs",family:"gpt-nano",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-05-30",release_date:"2025-08-07",last_updated:"2025-08-07",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-5.2-chat-latest":{id:"openai/gpt-5.2-chat-latest",name:"GPT-5.2 Chat",description:"Chat-tuned GPT model for conversational assistance, writing, and tool workflows",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-08-31",release_date:"2025-12-11",last_updated:"2025-12-11",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384}},"openai/gpt-5.1-chat-latest":{id:"openai/gpt-5.1-chat-latest",name:"GPT-5.1 Chat",description:"Chat-tuned GPT-5.1 for polished assistants, writing, and product conversations",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-11-13",last_updated:"2025-11-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384}},"openai/gpt-image-2.5-flare":{id:"openai/gpt-image-2.5-flare",name:"GPT Image 2.5 Flare",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"gpt-image",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-09-08",last_updated:"2026-09-08",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:0,output:0}},"openai/o1":{id:"openai/o1",name:"o1",description:"O-series reasoning model for hard analysis, math, coding, and planning",family:"o",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2023-09",release_date:"2024-12-05",last_updated:"2024-12-05",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5},benchmarks:[{name:"Aider Polyglot",score:61.7,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2024-12-21"}]},"openai/gpt-5.5-instant":{id:"openai/gpt-5.5-instant",name:"GPT-5.5 Instant",description:"Compact GPT model for low-latency assistance and high-volume workloads",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-12-01",release_date:"2026-05-05",last_updated:"2026-05-28",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-5-pro":{id:"openai/gpt-5-pro",name:"GPT-5 Pro",description:"Higher-accuracy GPT-5 tier for tough analysis, coding reviews, and planning",family:"gpt-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-10-06",last_updated:"2025-10-06",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:272e3}},"openai/gpt-5.3-codex-spark":{id:"openai/gpt-5.3-codex-spark",name:"GPT-5.3 Codex Spark",description:"Coding-optimized GPT model for repository edits, reviews, and agentic software work",family:"gpt-codex-spark",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-08-31",release_date:"2026-02-05",last_updated:"2026-02-05",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:128e3,input:1e5,output:32e3}},"openai/gpt-5-chat-latest":{id:"openai/gpt-5-chat-latest",name:"GPT-5 Chat (latest)",description:"Chat-tuned GPT model for conversational assistance, writing, and tool workflows",family:"gpt-codex",attachment:true,reasoning:true,tool_call:false,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-08-07",last_updated:"2025-08-07",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-4o-2024-08-06":{id:"openai/gpt-4o-2024-08-06",name:"GPT-4o (2024-08-06)",description:"GPT model for general reasoning, writing, coding, and tool-assisted tasks",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2023-09",release_date:"2024-08-06",last_updated:"2024-08-06",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384},benchmarks:[{name:"Aider Polyglot",score:23.1,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2024-12-30"},{name:"Artificial Analysis Coding Index",score:16.6,metric:"index",source:"https://openrouter.ai/openai/gpt-4o-2024-08-06/benchmarks",date:"2026-03-11"},{name:"SciCode",score:33.1,metric:"percent correct",source:"https://openrouter.ai/openai/gpt-4o-2024-08-06/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:8.3,metric:"success rate",source:"https://openrouter.ai/openai/gpt-4o-2024-08-06/benchmarks",date:"2026-03-11"}]},"openai/gpt-6-astra":{id:"openai/gpt-6-astra",name:"GPT-6 Astra",description:"GPT-6 Astra is OpenAI's most capable model for complex reasoning, coding, computer use, research, and document creation.",family:"gpt-astra",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-04-30",release_date:"2026-09-04",last_updated:"2026-09-04",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"Agents' Last Exam",score:59.3,source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"OSWorld",score:72.6,metric:"partial score",dataset:"V2-Offline (v2026.08.08)",version:"2.0",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"ScreenSpot-Pro",score:92.7,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"AutomationBench",score:41.4,metric:"success rate",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"BenchCAD",score:95.9,metric:"geometric overlap",variant:"with tools",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"BrowseComp",score:91.5,metric:"accuracy",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"Terminal-Bench",score:57.9,metric:"success rate",version:"4.0",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"DeepSWE",score:74.1,metric:"resolve rate",version:"1.1",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"FrontierCode",score:64.5,metric:"score",dataset:"Extended",version:"1.1",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"Terminal-Bench Science",score:64.6,metric:"success rate",version:"0.1",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"FrontierMath",score:97.6,metric:"accuracy",dataset:"Tier 4",version:"v2",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"GPQA Diamond",score:96,metric:"accuracy",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"Humanity's Last Exam",score:57.2,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"ExploitBench",score:100,metric:"success rate",variant:"without production safeguards",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"SRE-Bench",score:88,metric:"success rate",variant:"single attempt",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"ARC-AGI-3",score:99.9,metric:"RHAE",harness:"Responses API",source:"https://openai.com/index/gpt-6-astra/",date:"2026-09-03"},{name:"Artificial Analysis Intelligence Index",score:61,metric:"index score",variant:"max",version:"4.1.1",source:"https://artificialanalysis.ai/articles/benchmarking-gpt-6-astra",date:"2026-09-03"},{name:"Artificial Analysis Coding Agent Index",score:67,metric:"index score",harness:"Codex",variant:"max",version:"1.4",source:"https://artificialanalysis.ai/articles/benchmarking-gpt-6-astra",date:"2026-09-03"}]},"openai/gpt-5.1":{id:"openai/gpt-5.1",name:"GPT-5.1",description:"Sharper GPT-5 generation for coding, product work, and tool-assisted tasks",family:"gpt",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-09-30",release_date:"2025-11-13",last_updated:"2025-11-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-4o-mini":{id:"openai/gpt-4o-mini",name:"GPT-4o mini",description:"Small omni GPT for cheap multimodal assistance and production-scale traffic",family:"gpt-mini",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2023-09",release_date:"2024-07-18",last_updated:"2024-07-18",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384},benchmarks:[{name:"Aider Polyglot",score:3.6,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2024-12-21"},{name:"SciCode",score:22.9,metric:"percent correct",source:"https://openrouter.ai/openai/gpt-4o-mini/benchmarks",date:"2026-03-11"}]},"openai/o3-pro":{id:"openai/o3-pro",name:"o3-pro",description:"High-effort o3 tier for difficult technical reasoning and careful answers",family:"o-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-05",release_date:"2025-06-10",last_updated:"2025-06-10",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5},benchmarks:[{name:"Aider Polyglot",score:84.9,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-06-28"}]},"openai/gpt-oss-20b":{id:"openai/gpt-oss-20b",name:"GPT OSS 20B",description:"Open GPT reasoning model for self-hosted agents and controllable deployments",family:"gpt-oss",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-08-05",last_updated:"2025-08-05",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/openai/gpt-oss-20b"}]},"openai/gpt-oss-safeguard-20b":{id:"openai/gpt-oss-safeguard-20b",name:"GPT OSS Safeguard 20B",description:"Safety model for policy screening, moderation, and risk-aware routing workflows",family:"gpt-oss",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-10-29",last_updated:"2025-10-29",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:131072},weights:[{label:"Hugging Face",url:"https://huggingface.co/openai/gpt-oss-safeguard-20b"}]},"openai/gpt-image-2.5-sunburst":{id:"openai/gpt-image-2.5-sunburst",name:"GPT Image 2.5 Sunburst",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"gpt-image",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2026-09-08",last_updated:"2026-09-08",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:0,output:0}},"openai/gpt-image-1":{id:"openai/gpt-image-1",name:"GPT-Image-1",description:"OpenAI image model for production generation, edits, and brand-safe visual workflows",family:"gpt-image",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2025-04-24",last_updated:"2025-04-24",modalities:{input:["text","image"],output:["image"]},open_weights:false,limit:{context:0,output:0}},"openai/gpt-5.4-mini":{id:"openai/gpt-5.4-mini",name:"GPT-5.4 mini",description:"Strong small GPT for coding subagents, quick tool use, and high-volume work",family:"gpt-mini",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-08-31",release_date:"2026-03-17",last_updated:"2026-03-17",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:54.4,metric:"resolve rate",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Terminal-Bench",score:60,metric:"accuracy",variant:"reasoning effort xhigh",version:"2.0",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"MCP Atlas",score:57.7,metric:"score",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Toolathlon",score:42.9,metric:"score",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"\u03C4\xB2-Bench Telecom",score:93.4,metric:"accuracy",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"GPQA Diamond",score:88,metric:"accuracy",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Humanity's Last Exam",score:41.5,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Humanity's Last Exam",score:28.2,metric:"accuracy",variant:"without tools",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OSWorld-Verified",score:72.1,metric:"success rate",variant:"reasoning effort xhigh",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"MMMU Pro",score:78,metric:"accuracy",variant:"with Python",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"MMMU Pro",score:76.6,metric:"accuracy",variant:"without tools",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OmniDocBench",score:.1263,metric:"overall edit distance",variant:"reasoning effort none",version:"1.5",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OpenAI MRCR",score:47.7,metric:"accuracy",variant:"8-needle, 64K-128K",version:"v2",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"OpenAI MRCR",score:33.6,metric:"accuracy",variant:"8-needle, 128K-256K",version:"v2",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Graphwalks",score:76.3,metric:"accuracy",variant:"BFS, 0-128K",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"},{name:"Graphwalks",score:71.5,metric:"accuracy",variant:"parents, 0-128K",source:"https://openai.com/index/introducing-gpt-5-4-mini-and-nano/",date:"2026-03-17"}]},"openai/gpt-5.6-luna":{id:"openai/gpt-5.6-luna",name:"GPT-5.6 Luna",description:"Cost-efficient GPT-5.6 model for fast, high-volume workloads",family:"gpt-luna",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-02-16",release_date:"2026-07-09",last_updated:"2026-07-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:62.7,metric:"resolve rate",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Terminal-Bench",score:84.7,metric:"success rate",version:"2.1",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"DeepSWE",score:67.2,metric:"resolve rate",version:"1.1",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"GPQA Diamond",score:92.3,metric:"accuracy",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"FrontierMath",score:78.6,metric:"accuracy",dataset:"Tier 1-3",version:"v2",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"BrowseComp",score:83.3,metric:"accuracy",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"OSWorld",score:45.6,metric:"success rate",version:"2.0",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"MMMU Pro",score:78.4,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Agents' Last Exam",score:50.3,source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Toolathlon",score:53.4,metric:"success rate",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Artificial Analysis Intelligence Index",score:51.2,metric:"index score",variant:"max",version:"4.1",source:"https://artificialanalysis.ai/articles/gpt-5-6-has-landed",date:"2026-07-09"},{name:"Artificial Analysis Coding Agent Index",score:74.6,metric:"index score",harness:"Codex",variant:"max",version:"1.1",source:"https://artificialanalysis.ai/articles/gpt-5-6-has-landed",date:"2026-07-09"}]},"openai/gpt-5.1-codex-max":{id:"openai/gpt-5.1-codex-max",name:"GPT-5.1 Codex Max",description:"Coding-optimized GPT model for repository edits, reviews, and agentic software work",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-11-13",last_updated:"2025-11-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/gpt-5.2":{id:"openai/gpt-5.2",name:"GPT-5.2",description:"Reliable GPT generation for broad coding, writing, and tool-assisted product work",family:"gpt",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-08-31",release_date:"2025-12-11",last_updated:"2025-12-11",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:29.94,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"openai/gpt-5.5":{id:"openai/gpt-5.5",name:"GPT-5.5",description:"Default frontier GPT for coding, computer use, research, and knowledge work",family:"gpt",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2025-12-01",release_date:"2026-04-23",last_updated:"2026-04-23",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:58.6,metric:"resolve rate",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"Terminal-Bench",score:78.2,metric:"success rate",harness:"Terminus-2",version:"2.1",source:"https://www.anthropic.com/news/claude-opus-4-8",date:"2026-05-28"},{name:"SWE-Atlas Codebase QnA",score:45.43,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-qna"},{name:"SWE-Atlas Refactoring",score:44.79,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-refactoring"},{name:"SWE-Atlas Test Writing",score:42.59,metric:"score",harness:"Codex",source:"https://labs.scale.com/leaderboard/sweatlas-tw"},{name:"Artificial Analysis Coding Agent Index",score:65.3,metric:"average pass@1",harness:"Codex",variant:"xhigh",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:80.8,metric:"pass@1",harness:"Codex",variant:"xhigh",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:30.9,metric:"pass@1",harness:"Codex",variant:"xhigh",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:84.1,metric:"pass@1",harness:"Codex",variant:"xhigh",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Artificial Analysis Coding Agent Index",score:60.4,metric:"average pass@1",harness:"Codex",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:79.1,metric:"pass@1",harness:"Codex",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:26.2,metric:"pass@1",harness:"Codex",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:75.8,metric:"pass@1",harness:"Codex",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Artificial Analysis Coding Agent Index",score:57.8,metric:"average pass@1",harness:"Cursor CLI",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Atlas Codebase QnA",score:75,metric:"pass@1",harness:"Cursor CLI",variant:"medium",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"SWE-Bench Pro",score:24.9,metric:"pass@1",harness:"Cursor CLI",variant:"medium",dataset:"hard-aa",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:73.4,metric:"pass@1",harness:"Cursor CLI",variant:"medium",version:"2.1",source:"https://artificialanalysis.ai/agents/coding-agents"},{name:"Terminal-Bench",score:82.7,metric:"success rate",version:"2.0",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GPQA Diamond",score:93.6,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:41.4,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Humanity's Last Exam",score:52.2,metric:"accuracy",variant:"with tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"OSWorld-Verified",score:78.7,metric:"success rate",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"BrowseComp",score:84.4,metric:"accuracy",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"MMMU Pro",score:81.2,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"ARC-AGI-2",score:85,metric:"accuracy",variant:"Verified",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:51.7,metric:"accuracy",dataset:"Tier 1-3",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"FrontierMath",score:35.4,metric:"accuracy",dataset:"Tier 4",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"GDPval",score:84.9,metric:"wins or ties",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"MCP Atlas",score:75.3,metric:"success rate",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"Toolathlon",score:55.6,metric:"success rate",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"},{name:"\u03C4\xB2-Bench Telecom",score:98,metric:"success rate",variant:"original prompts",source:"https://openai.com/index/introducing-gpt-5-5/",date:"2026-04-23"}]},"openai/o4-mini-deep-research":{id:"openai/o4-mini-deep-research",name:"o4-mini-deep-research",description:"Research model for long-horizon investigation, synthesis, and analytical reports",family:"o-mini",attachment:true,reasoning:true,tool_call:true,temperature:false,knowledge:"2024-05",release_date:"2024-06-26",last_updated:"2024-06-26",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5}},"openai/gpt-4.1":{id:"openai/gpt-4.1",name:"GPT-4.1",description:"Long-lived GPT workhorse for coding, instruction following, and production apps",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-04",release_date:"2025-04-14",last_updated:"2025-04-14",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1047576,output:32768},benchmarks:[{name:"Aider Polyglot",score:52.4,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-04-14"}]},"openai/gpt-4o-2024-11-20":{id:"openai/gpt-4o-2024-11-20",name:"GPT-4o (2024-11-20)",description:"GPT model for general reasoning, writing, coding, and tool-assisted tasks",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2023-09",release_date:"2024-11-20",last_updated:"2024-11-20",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384},benchmarks:[{name:"Aider Polyglot",score:18.2,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2024-12-30"},{name:"Artificial Analysis Coding Index",score:16.7,metric:"index",source:"https://openrouter.ai/openai/gpt-4o-2024-11-20/benchmarks",date:"2026-03-11"},{name:"SciCode",score:33.3,metric:"percent correct",source:"https://openrouter.ai/openai/gpt-4o-2024-11-20/benchmarks",date:"2026-03-11"},{name:"Terminal-Bench Hard",score:8.3,metric:"success rate",source:"https://openrouter.ai/openai/gpt-4o-2024-11-20/benchmarks",date:"2026-03-11"}]},"openai/whisper-large-v3-turbo":{id:"openai/whisper-large-v3-turbo",name:"Whisper Large v3 Turbo",description:"Speech transcription model for accurate audio-to-text and captioning workflows",family:"whisper",attachment:false,reasoning:false,tool_call:false,release_date:"2024-10-01",last_updated:"2024-10-01",modalities:{input:["audio"],output:["text"]},open_weights:true,limit:{context:448,output:448}},"openai/gpt-4.1-mini":{id:"openai/gpt-4.1-mini",name:"GPT-4.1 mini",description:"Affordable GPT-4.1 lane for fast coding help and structured extraction",family:"gpt-mini",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2024-04",release_date:"2025-04-14",last_updated:"2025-04-14",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:1047576,output:32768},benchmarks:[{name:"Aider Polyglot",score:32.4,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-04-14"}]},"openai/gpt-6-luna":{id:"openai/gpt-6-luna",name:"GPT-6 Luna",description:"OpenAI's most efficient model for focused, high-volume tasks",family:"gpt-luna",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-05-18",release_date:"2026-09-22",last_updated:"2026-09-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"DeepSWE",score:66.6,metric:"score",variant:"max effort",version:"1.1",source:"https://openai.com/index/introducing-gpt-6-sol-and-luna/",date:"2026-09-22"}]},"openai/gpt-5.3-chat-latest":{id:"openai/gpt-5.3-chat-latest",name:"GPT-5.3 Chat (latest)",description:"Chat-tuned GPT model for conversational assistance, writing, and tool workflows",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-08-31",release_date:"2026-03-03",last_updated:"2026-03-03",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:16384}},"openai/gpt-image-1.5":{id:"openai/gpt-image-1.5",name:"GPT-Image-1.5",description:"Image model for prompt-driven generation, editing, and visual design workflows",family:"gpt-image",attachment:true,reasoning:false,tool_call:false,temperature:false,release_date:"2025-11-25",last_updated:"2025-11-25",modalities:{input:["text","image"],output:["text","image"]},open_weights:false,limit:{context:0,output:0}},"openai/gpt-5.6-terra":{id:"openai/gpt-5.6-terra",name:"GPT-5.6 Terra",description:"Balanced GPT-5.6 model for capable, cost-efficient everyday work",family:"gpt-terra",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-02-16",release_date:"2026-07-09",last_updated:"2026-07-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:63.4,metric:"resolve rate",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Terminal-Bench",score:87.4,metric:"success rate",version:"2.1",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"DeepSWE",score:69.6,metric:"resolve rate",version:"1.1",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"GPQA Diamond",score:92.9,metric:"accuracy",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"FrontierMath",score:84.9,metric:"accuracy",dataset:"Tier 1-3",version:"v2",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"BrowseComp",score:87.5,metric:"accuracy",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"OSWorld",score:50.2,metric:"success rate",version:"2.0",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"MMMU Pro",score:80.7,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Agents' Last Exam",score:50.4,source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Toolathlon",score:53.1,metric:"success rate",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Artificial Analysis Intelligence Index",score:55,metric:"index score",variant:"max",version:"4.1",source:"https://artificialanalysis.ai/articles/gpt-5-6-has-landed",date:"2026-07-09"},{name:"Artificial Analysis Coding Agent Index",score:77.4,metric:"index score",harness:"Codex",variant:"max",version:"1.1",source:"https://artificialanalysis.ai/articles/gpt-5-6-has-landed",date:"2026-07-09"}]},"openai/gpt-4-turbo":{id:"openai/gpt-4-turbo",name:"GPT-4 Turbo",description:"Compact GPT model for low-latency assistance and high-volume workloads",family:"gpt",attachment:true,reasoning:false,tool_call:true,structured_output:false,temperature:true,knowledge:"2023-12",release_date:"2023-11-06",last_updated:"2024-04-09",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:128e3,output:4096},benchmarks:[{name:"Artificial Analysis Coding Index",score:21.5,metric:"index",source:"https://openrouter.ai/openai/gpt-4-turbo/benchmarks",date:"2026-03-11"},{name:"SciCode",score:31.9,metric:"percent correct",source:"https://openrouter.ai/openai/gpt-4-turbo/benchmarks",date:"2026-03-11"}]},"openai/gpt-oss-120b":{id:"openai/gpt-oss-120b",name:"GPT OSS 120B",description:"Open GPT reasoning model for self-hosted agents and controllable deployments",family:"gpt-oss",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,release_date:"2025-08-05",last_updated:"2025-08-05",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:131072,output:32768},weights:[{label:"Hugging Face",url:"https://huggingface.co/openai/gpt-oss-120b"}]},"openai/gpt-5.1-codex-mini":{id:"openai/gpt-5.1-codex-mini",name:"GPT-5.1 Codex mini",description:"Coding-optimized GPT model for repository edits, reviews, and agentic software work",family:"gpt-codex",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-11-13",last_updated:"2025-11-13",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3}},"openai/o3":{id:"openai/o3",name:"o3",description:"Deliberate o-series reasoner for hard math, coding, and multi-step analysis",family:"o",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-05",release_date:"2025-04-16",last_updated:"2025-04-16",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5},benchmarks:[{name:"Aider Polyglot",score:81.3,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-06-25"}]},"openai/gpt-5":{id:"openai/gpt-5",name:"GPT-5",description:"Original GPT-5 workhorse for reasoning, coding, writing, and tool workflows",family:"gpt",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2024-09-30",release_date:"2025-08-07",last_updated:"2025-08-07",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:4e5,input:272e3,output:128e3},benchmarks:[{name:"Aider Polyglot",score:88,metric:"percent correct",source:"https://aider.chat/docs/leaderboards/",date:"2025-08-23"},{name:"SWE-Bench Pro",score:41.78,metric:"resolve rate",dataset:"public",source:"https://labs.scale.com/leaderboard/swe_bench_pro_public"}]},"openai/gpt-5.6-sol":{id:"openai/gpt-5.6-sol",name:"GPT-5.6 Sol",description:"Frontier GPT-5.6 model for complex professional work, coding, and agentic workflows",family:"gpt-sol",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-02-16",release_date:"2026-07-09",last_updated:"2026-07-09",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"SWE-Bench Pro",score:64.6,metric:"resolve rate",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Terminal-Bench",score:88.8,metric:"success rate",version:"2.1",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"DeepSWE",score:72.7,metric:"resolve rate",version:"1.1",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"GPQA Diamond",score:94.6,metric:"accuracy",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"FrontierMath",score:89,metric:"accuracy",dataset:"Tier 1-3",version:"v2",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"BrowseComp",score:90.4,metric:"accuracy",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"OSWorld",score:62.6,metric:"success rate",version:"2.0",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"MMMU Pro",score:83,metric:"accuracy",variant:"no tools",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Agents' Last Exam",score:52.7,source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Toolathlon",score:58,metric:"success rate",source:"https://openai.com/index/gpt-5-6/",date:"2026-07-09"},{name:"Artificial Analysis Intelligence Index",score:58.9,metric:"index score",variant:"max",version:"4.1",source:"https://artificialanalysis.ai/articles/gpt-5-6-has-landed",date:"2026-07-09"},{name:"Artificial Analysis Coding Agent Index",score:80,metric:"index score",harness:"Codex",variant:"max",version:"1.1",source:"https://artificialanalysis.ai/articles/gpt-5-6-has-landed",date:"2026-07-09"}]},"openai/gpt-realtime-whisper":{id:"openai/gpt-realtime-whisper",name:"GPT Realtime Whisper",description:"Streaming speech-to-text model for low-latency transcript deltas from live audio",family:"whisper",attachment:false,reasoning:false,tool_call:false,temperature:true,release_date:"2026-05-07",last_updated:"2026-05-07",modalities:{input:["audio"],output:["text"]},open_weights:false,limit:{context:16e3,output:2e3}},"openai/gpt-6-sol":{id:"openai/gpt-6-sol",name:"GPT-6 Sol",description:"OpenAI model for complex coding and agentic workflows",family:"gpt-sol",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2026-04-20",release_date:"2026-09-22",last_updated:"2026-09-22",modalities:{input:["text","image","pdf"],output:["text"]},open_weights:false,limit:{context:105e4,input:922e3,output:128e3},benchmarks:[{name:"DeepSWE",score:68.8,metric:"score",variant:"max effort",version:"1.1",source:"https://openai.com/index/introducing-gpt-6-sol-and-luna/",date:"2026-09-22"},{name:"AutomationBench",score:33.2,metric:"score",variant:"xhigh effort",version:"1.0.6",source:"https://openai.com/index/introducing-gpt-6-sol-and-luna/",date:"2026-09-22"},{name:"Agents' Last Exam",score:56.4,metric:"score",variant:"max effort",version:"1",source:"https://openai.com/index/introducing-gpt-6-sol-and-luna/",date:"2026-09-22"},{name:"OSWorld",score:60.5,metric:"partial reward",variant:"xhigh effort",dataset:"offline v2026.08.08",version:"2.0",source:"https://openai.com/index/introducing-gpt-6-sol-and-luna/",date:"2026-09-22"}]},"openai/o1-pro":{id:"openai/o1-pro",name:"o1-pro",description:"O-series reasoning model for hard analysis, math, coding, and planning",family:"o-pro",attachment:true,reasoning:true,tool_call:true,structured_output:true,temperature:false,knowledge:"2023-09",release_date:"2025-03-19",last_updated:"2025-03-19",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:2e5,output:1e5}},"microsoft/mai-code-1-flash":{id:"microsoft/mai-code-1-flash",name:"MAI-Code-1-Flash",description:"Microsoft coding model built for fast, efficient assistance in everyday developer workflows",family:"mai",attachment:false,reasoning:true,tool_call:true,structured_output:true,temperature:true,knowledge:"2025-12",release_date:"2026-06-02",last_updated:"2026-06-08",modalities:{input:["text"],output:["text"]},open_weights:false,limit:{context:256e3,output:128e3},links:[{label:"Model card",url:"https://microsoft.ai/pdf/MAI-Code-1-Flash-Model-Card.PDF",type:"model_card"},{label:"Announcement",url:"https://microsoft.ai/news/introducingmai-code-1-flash/",type:"announcement"}],benchmarks:[{name:"SWE-Bench Pro",score:51.2,metric:"resolve rate",harness:"GitHub Copilot",source:"https://microsoft.ai/news/introducingmai-code-1-flash/",date:"2026-06-02"},{name:"SWE-Bench Verified",score:71.6,metric:"resolved",source:"https://llm-stats.com/benchmarks/swe-bench-verified"},{name:"Terminal-Bench",score:54.8,metric:"success rate",version:"2.0",source:"https://llm-stats.com/benchmarks/terminal-bench-2"},{name:"GPQA Diamond",score:84.6,metric:"accuracy",source:"https://llm-stats.com/benchmarks/gpqa"}]},"microsoft/mai-code-1.1-flash":{id:"microsoft/mai-code-1.1-flash",name:"MAI-Code-1.1-Flash",description:"Microsoft coding model with native vision support, optimized for fast and efficient software development",family:"mai",attachment:true,reasoning:true,tool_call:true,structured_output:true,release_date:"2026-08-11",last_updated:"2026-08-11",modalities:{input:["text","image"],output:["text"]},open_weights:false,limit:{context:256e3,output:128e3},links:[{label:"Announcement",url:"https://microsoft.ai/news/mai-code-1-1-flash-br-better-faster-at-a-quarter-of-the-cost/",type:"announcement"}]},"microsoft/phi-4-mini":{id:"microsoft/phi-4-mini",name:"Phi-4-mini",description:"Compact Microsoft instruction model tuned for efficient coding assistance, reasoning, and low-latency agent tasks",family:"phi",attachment:false,reasoning:false,tool_call:true,temperature:true,knowledge:"2023-10",release_date:"2024-12-11",last_updated:"2024-12-11",modalities:{input:["text"],output:["text"]},open_weights:true,limit:{context:128e3,output:4096},links:[{label:"Weights",url:"https://huggingface.co/microsoft/Phi-4-mini-instruct",type:"weights"}],benchmarks:[{name:"MMLU",score:67.3,metric:"accuracy",source:"https://huggingface.co/microsoft/Phi-4-mini-instruct/resolve/main/README.md"}]}},costs:{"deepinfra/tencent/Hy3":{input:.13,output:.53,cache_read:.033},"deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo":{input:.1,output:.32},"deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct":{input:.1,output:.3},"deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{input:.2,output:.8},"deepinfra/XiaomiMiMo/MiMo-V2.6-Pro":{input:.435,output:.87,cache_read:.0036},"deepinfra/XiaomiMiMo/MiMo-V2.5-Pro":{input:1,output:3,cache_read:.2},"deepinfra/XiaomiMiMo/MiMo-V2.6-Flash":{input:.14,output:.28,cache_read:.0028},"deepinfra/XiaomiMiMo/MiMo-V2.5":{input:.14,output:.28,cache_read:.0028},"deepinfra/thinkingmachines/Inkling-Small":{input:.45,output:1.2,cache_read:.1},"deepinfra/thinkingmachines/Inkling":{input:.95,output:4.05,cache_read:.16},"deepinfra/google/gemma-3-27b-it":{input:.08,output:.16},"deepinfra/google/gemma-3-12b-it":{input:.05,output:.15},"deepinfra/google/gemma-3-4b-it":{input:.05,output:.1},"deepinfra/google/gemma-4-31B-it":{input:.13,output:.38},"deepinfra/google/gemma-4-26B-A4B-it":{input:.07,output:.34},"deepinfra/google/gemma-4-E4B-it":{input:.02,output:.1},"deepinfra/Qwen/Qwen3-VL-235B-A22B-Instruct":{input:.2,output:.88,cache_read:.11},"deepinfra/Qwen/Qwen3.8-27B":{input:.2,output:2.5,cache_read:.05},"deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct":{input:.09,output:1.1},"deepinfra/Qwen/Qwen3.7-Max":{input:2.5,output:7.5,cache_read:.5,tiers:[{input:5,output:15,cache_read:1,tier:{type:"context",size:32e3}},{input:6.25,output:18.5,cache_read:1.25,tier:{type:"context",size:128e3}}]},"deepinfra/Qwen/Qwen3.8-Max":{input:1.65,output:4.951,cache_read:.206},"deepinfra/Qwen/Qwen3.5-27B":{input:.26,output:2.6},"deepinfra/Qwen/Qwen3.6-35B-A3B":{input:.1,output:.95},"deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo":{input:.3,output:1,cache_read:.1},"deepinfra/Qwen/Qwen3-Max":{input:1.2,output:6,cache_read:.24,tiers:[{input:2.4,output:12,cache_read:.48,tier:{type:"context",size:32e3}},{input:3,output:15,cache_read:.6,tier:{type:"context",size:128e3}}]},"deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.09,output:.55},"deepinfra/Qwen/Qwen3.8-Flash":{input:.113,output:.382,cache_read:.0141},"deepinfra/Qwen/Qwen3-32B":{input:.08,output:.28},"deepinfra/Qwen/Qwen3.5-35B-A3B":{input:.14,output:1,cache_read:.05},"deepinfra/Qwen/Qwen3.5-122B-A10B":{input:.29,output:2.4},"deepinfra/Qwen/Qwen3.5-9B":{input:.1,output:.15},"deepinfra/Qwen/Qwen3.5-397B-A17B":{input:.45,output:3,cache_read:.22},"deepinfra/Qwen/Qwen3.8-2.4T-A95B":{input:2,output:6,cache_read:.2},"deepinfra/Qwen/Qwen3-30B-A3B":{input:.12,output:.5},"deepinfra/Qwen/Qwen3.6-27B":{input:.32,output:3.2},"deepinfra/deepseek-ai/DeepSeek-V3.1":{input:.25,output:.95,cache_read:.13},"deepinfra/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.06,output:.18,cache_read:.015},"deepinfra/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.3,output:2.6,cache_read:.1},"deepinfra/deepseek-ai/DeepSeek-V4.1-Flash":{input:.2,output:.6,cache_read:.006},"deepinfra/deepseek-ai/DeepSeek-V4-Flash":{input:.09,output:.18,cache_read:.018},"deepinfra/deepseek-ai/DeepSeek-V4-Pro":{input:1.3,output:2.6,cache_read:.1},"deepinfra/deepseek-ai/DeepSeek-V3.2":{input:.26,output:.38,cache_read:.13},"deepinfra/deepseek-ai/DeepSeek-R1-0528":{input:.5,output:2.15,cache_read:.35},"deepinfra/deepseek-ai/DeepSeek-V3":{input:.32,output:.89},"deepinfra/deepseek-ai/DeepSeek-V3-0324":{input:.24,output:.9,cache_read:.135},"deepinfra/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{input:.44,output:1.32,cache_read:.014},"deepinfra/stepfun-ai/Step-3.7-Flash":{input:.2,output:1.15,cache_read:.04},"deepinfra/MiniMaxAI/MiniMax-M3":{input:.28,output:1.1,cache_read:.056},"deepinfra/MiniMaxAI/MiniMax-M2.5":{input:.15,output:1.15,cache_read:.03},"deepinfra/MiniMaxAI/MiniMax-M2.7":{input:.25,output:1,cache_read:.05},"deepinfra/moonshotai/Kimi-K2.6":{input:.75,output:3.5,cache_read:.15},"deepinfra/moonshotai/Kimi-K3":{input:2.85,output:14.25,cache_read:.285},"deepinfra/moonshotai/Kimi-K2.7-Code":{input:.68,output:3.4,cache_read:.136},"deepinfra/moonshotai/Kimi-K2.5":{input:.45,output:2.25,cache_read:.07},"deepinfra/zai-org/GLM-5.1":{input:1.05,output:3.5,cache_read:.205},"deepinfra/zai-org/GLM-5.2":{input:.75,output:2.4,cache_read:.14},"deepinfra/zai-org/GLM-4.7":{input:.4,output:1.75,cache_read:.08},"deepinfra/zai-org/GLM-5":{input:.6,output:2.08,cache_read:.12},"deepinfra/zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.03},"deepinfra/zai-org/GLM-4.6":{input:.5,output:2,cache_read:.1},"deepinfra/zai-org/GLM-4.7-Flash":{input:.06,output:.4,cache_read:.01},"deepinfra/zai-org/GLM-5.3":{input:.9,output:4,cache_read:.2},"deepinfra/nvidia/Nemotron-3-Nano-30B-A3B":{input:.05,output:.2,cache_read:.025},"deepinfra/nvidia/Llama-3.3-Nemotron-Super-49B-v1.5":{input:.4,output:.4},"deepinfra/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning":{input:.2,output:.8},"deepinfra/ByteDance/Seed-2.0-code":{input:.5,output:3,cache_read:.1,tiers:[{input:1,output:6,cache_read:.2,tier:{type:"context",size:128e3}}]},"deepinfra/ByteDance/Seed-2.0-pro":{input:.5,output:3,cache_read:.1,tiers:[{input:1,output:6,cache_read:.2,tier:{type:"context",size:128e3}}]},"deepinfra/ByteDance/Seed-2.0-mini":{input:.1,output:.4,cache_read:.02,tiers:[{input:.2,output:.8,cache_read:.2,tier:{type:"context",size:128e3}}]},"deepinfra/openai/gpt-oss-20b":{input:.03,output:.14},"deepinfra/openai/gpt-oss-120b":{input:.037,output:.17},"perplexity-agent/anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1},"perplexity-agent/anthropic/claude-opus-4-5":{input:5,output:25,cache_read:.5},"perplexity-agent/anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3},"perplexity-agent/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5},"perplexity-agent/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3},"perplexity-agent/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5},"perplexity-agent/deepseek/deepseek-v4-flash-0731":{input:.13,output:.26,cache_read:.028},"perplexity-agent/perplexity/sonar":{input:.25,output:2.5,cache_read:.0625},"perplexity-agent/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"perplexity-agent/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"perplexity-agent/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"perplexity-agent/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,tiers:[{input:.5,output:3,cache_read:.05,tier:{type:"context",size:2e5}}],context_over_200k:{input:.5,output:3,cache_read:.05}},"perplexity-agent/xai/grok-4-1-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"perplexity-agent/xai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"perplexity-agent/nvidia/nemotron-3-super-120b-a12b":{input:.25,output:2.5},"perplexity-agent/moonshot-ai/kimi-k3":{input:3,output:15,cache_read:.3},"perplexity-agent/moonshot-ai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"perplexity-agent/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25},"perplexity-agent/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"perplexity-agent/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"perplexity-agent/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"perplexity-agent/openai/gpt-5.5":{input:5,output:30,cache_read:.5},"bailing/Ring-1T":{input:.57,output:2.29},"bailing/Ling-1T":{input:.57,output:2.29},"poe/cerebras/llama-3.1-8b-cs":{input:.1,output:.1},"poe/cerebras/gpt-oss-120b-cs":{input:.35,output:.75},"poe/empiriolabs/deepseek-v4-pro-el":{input:1.67,output:3.33},"poe/empiriolabs/deepseek-v4-flash-el":{input:.14,output:.28},"poe/anthropic/claude-haiku-3.5":{input:.68,output:3.4,cache_read:.068,cache_write:.85},"poe/anthropic/claude-opus-4.1":{input:13,output:64,cache_read:1.3,cache_write:16},"poe/anthropic/claude-opus-4.5":{input:4.3,output:21,cache_read:.43,cache_write:5.3},"poe/anthropic/claude-opus-4.6":{input:4.3,output:21,cache_read:.43,cache_write:5.3},"poe/anthropic/claude-sonnet-3.5-june":{input:2.6,output:13,cache_read:.26,cache_write:3.2},"poe/anthropic/claude-opus-4.7":{input:4.3,output:21,cache_read:.43,cache_write:5.4},"poe/anthropic/claude-haiku-3":{input:.21,output:1.1,cache_read:.021,cache_write:.26},"poe/anthropic/claude-opus-4.8":{input:4.2929,output:21.4646},"poe/anthropic/claude-sonnet-3.7":{input:2.6,output:13,cache_read:.26,cache_write:3.2},"poe/anthropic/claude-haiku-4.5":{input:.85,output:4.3,cache_read:.085,cache_write:1.1},"poe/anthropic/claude-sonnet-4.5":{input:2.6,output:13,cache_read:.26,cache_write:3.2},"poe/anthropic/claude-sonnet-4":{input:2.6,output:13,cache_read:.26,cache_write:3.2},"poe/anthropic/claude-sonnet-3.5":{input:2.6,output:13,cache_read:.26,cache_write:3.2},"poe/anthropic/claude-sonnet-4.6":{input:2.6,output:13,cache_read:.26,cache_write:3.2},"poe/anthropic/claude-opus-4":{input:13,output:64,cache_read:1.3,cache_write:16},"poe/novita/glm-5":{input:1,output:3.2,cache_read:.2},"poe/novita/kimi-k2.6":{input:.96,output:4.04,cache_read:.16},"poe/novita/kimi-k2.5":{input:.6,output:3,cache_read:.1},"poe/novita/deepseek-v3.2":{input:.27,output:.4,cache_read:.13},"poe/google/gemini-deep-research":{input:1.6,output:9.6},"poe/google/nano-banana":{input:.21,output:1.8,cache_read:.021},"poe/google/gemini-2.0-flash":{input:.1,output:.42},"poe/google/nano-banana-pro":{input:2,output:12,cache_read:.2},"poe/google/gemini-2.0-flash-lite":{input:.052,output:.21},"poe/google/gemini-3-flash":{input:.4,output:2.4,cache_read:.04},"poe/google/gemini-3.5-flash":{input:1.5152,output:9.0909,cache_read:.1515},"poe/google/gemini-2.5-pro":{input:.87,output:7,cache_read:.087},"poe/google/gemini-2.5-flash":{input:.21,output:1.8,cache_read:.021},"poe/google/gemini-3-pro":{input:1.6,output:9.6,cache_read:.16},"poe/google/gemini-2.5-flash-lite":{input:.07,output:.28},"poe/google/gemini-3.1-pro":{input:2,output:12,cache_read:.2},"poe/google/gemini-3.1-flash-lite":{input:.25,output:1.5},"poe/xai/grok-3":{input:3,output:15,cache_read:.75},"poe/xai/grok-4.20-multi-agent":{input:2,output:6,cache_read:.2},"poe/xai/grok-4":{input:3,output:15,cache_read:.75},"poe/xai/grok-4-fast-reasoning":{input:.2,output:.5,cache_read:.05},"poe/xai/grok-4-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"poe/xai/grok-3-mini":{input:.3,output:.5,cache_read:.075},"poe/xai/grok-code-fast-1":{input:.2,output:1.5,cache_read:.02},"poe/openai/gpt-5.4":{input:2.2,output:14,cache_read:.22},"poe/openai/gpt-5.4-pro":{input:27,output:160},"poe/openai/gpt-3.5-turbo":{input:.45,output:1.4},"poe/openai/gpt-5.5-pro":{input:27.2727,output:163.6364},"poe/openai/gpt-5.4-nano":{input:.18,output:1.1,cache_read:.018},"poe/openai/gpt-5.2-codex":{input:1.6,output:13,cache_read:.16},"poe/openai/gpt-5.1-codex":{input:1.1,output:9,cache_read:.11},"poe/openai/gpt-4o-search":{input:2.2,output:9},"poe/openai/gpt-5-codex":{input:1.1,output:9},"poe/openai/gpt-5-mini":{input:.22,output:1.8,cache_read:.022},"poe/openai/gpt-image-2":{input:5.0505,output:32.3232,cache_read:1.2626},"poe/openai/gpt-5.2-pro":{input:19,output:150},"poe/openai/o4-mini":{input:.99,output:4,cache_read:.25},"poe/openai/o3-mini":{input:.99,output:4},"poe/openai/gpt-5.3-codex":{input:1.6,output:13,cache_read:.16},"poe/openai/gpt-4.1-nano":{input:.09,output:.36,cache_read:.022},"poe/openai/o3-deep-research":{input:9,output:36,cache_read:2.2},"poe/openai/gpt-5-nano":{input:.045,output:.36,cache_read:.0045},"poe/openai/gpt-5.2-instant":{input:1.6,output:13,cache_read:.16},"poe/openai/o1":{input:14,output:54},"poe/openai/chatgpt-4o-latest":{input:4.5,output:14},"poe/openai/gpt-5-pro":{input:14,output:110},"poe/openai/gpt-3.5-turbo-instruct":{input:1.4,output:1.8},"poe/openai/gpt-5.1":{input:1.1,output:9,cache_read:.11},"poe/openai/gpt-5-chat":{input:1.1,output:9,cache_read:.11},"poe/openai/gpt-4o-mini":{input:.14,output:.54,cache_read:.068},"poe/openai/o3-pro":{input:18,output:72},"poe/openai/gpt-5.3-instant":{input:1.6,output:13,cache_read:.16},"poe/openai/gpt-4o-aug":{input:2.2,output:9,cache_read:1.1},"poe/openai/o3-mini-high":{input:.99,output:4},"poe/openai/gpt-5.1-instant":{input:1.1,output:9,cache_read:.11},"poe/openai/gpt-5.4-mini":{input:.68,output:4,cache_read:.068},"poe/openai/gpt-5.1-codex-max":{input:1.1,output:9,cache_read:.11},"poe/openai/gpt-5.2":{input:1.6,output:13,cache_read:.16},"poe/openai/gpt-5.5":{input:4.5455,output:27.2727,cache_read:.4545},"poe/openai/o4-mini-deep-research":{input:1.8,output:7.2,cache_read:.45},"poe/openai/gpt-4.1":{input:1.8,output:7.2,cache_read:.45},"poe/openai/gpt-4-classic-0314":{input:27,output:54},"poe/openai/gpt-4-classic":{input:27,output:54},"poe/openai/gpt-4o-mini-search":{input:.14,output:.54},"poe/openai/gpt-3.5-turbo-raw":{input:.45,output:1.4},"poe/openai/gpt-4.1-mini":{input:.36,output:1.4,cache_read:.09},"poe/openai/gpt-4-turbo":{input:9,output:27},"poe/openai/gpt-5.1-codex-mini":{input:.22,output:1.8,cache_read:.022},"poe/openai/o3":{input:1.8,output:7.2,cache_read:.45},"poe/openai/gpt-5":{input:1.1,output:9,cache_read:.11},"poe/openai/o1-pro":{input:140,output:540},"cerebras/qwen-3.8-27b":{input:.99,output:1.49},"cerebras/gpt-oss-120b":{input:.35,output:.75},"groq/llama-3.3-70b-versatile":{input:.59,output:.79},"groq/llama-3.1-8b-instant":{input:.05,output:.08},"groq/meta-llama/llama-prompt-guard-2-86m":{input:.04,output:.04},"groq/meta-llama/llama-prompt-guard-2-22m":{input:.03,output:.03},"groq/qwen/qwen3.8-27b":{input:.8,output:4},"groq/qwen/qwen3.6-27b":{input:.6,output:3,cache_read:.3},"groq/openai/gpt-oss-20b":{input:.075,output:.3,cache_read:.0375},"groq/openai/gpt-oss-safeguard-20b":{input:.075,output:.3},"groq/openai/gpt-oss-120b":{input:.15,output:.6,cache_read:.075},"zai/glm-4.6v":{input:.3,output:.9},"zai/glm-4.5":{input:.6,output:2.2,cache_read:.11,cache_write:0},"zai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24,cache_write:0},"zai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03,cache_write:0},"zai/glm-4.6":{input:.6,output:2.2,cache_read:.11,cache_write:0},"zai/glm-5":{input:1,output:3.2,cache_read:.2,cache_write:0},"zai/glm-4.5v":{input:.6,output:1.8},"zai/glm-5.3-flashx":{input:.37,output:1.25,cache_read:.075,cache_write:0},"zai/glm-4.7":{input:.6,output:2.2,cache_read:.11,cache_write:0},"zai/glm-5.2":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"zai/glm-5.1":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"zai/glm-4.7-flashx":{input:.07,output:.4,cache_read:.01,cache_write:0},"zai/glm-5-turbo":{input:1.2,output:4,cache_read:.24,cache_write:0},"zai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03,cache_write:0},"zai/glm-5.3":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"empiriolabs/qwen3-8-max-0902":{input:2,output:6,cache_read:2},"empiriolabs/qwen3-6-plus":{input:.5,output:3,cache_read:.5,tiers:[{input:2,output:6,cache_read:2,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:2}},"empiriolabs/qwen3-6-27b":{input:.412564,output:2.475384,cache_read:.412564},"empiriolabs/glm-5-3-flash":{input:.075,output:.25,cache_read:.075},"empiriolabs/kimi-k2-7-code":{input:.95,output:4,cache_read:.95},"empiriolabs/seed-2-0-lite":{input:.31,output:2.5,cache_read:.31,tiers:[{input:.62,output:5,cache_read:.62,tier:{type:"context",size:128e3}}]},"empiriolabs/deepseek-v4-flash-0731":{input:.424,output:1.272,cache_read:.424},"empiriolabs/mimo-v2-5":{input:.7,output:1.4,cache_read:.014},"empiriolabs/seed-2-0-mini":{input:.12,output:.5,cache_read:.12,tiers:[{input:.24,output:1,cache_read:.24,tier:{type:"context",size:128e3}}]},"empiriolabs/muse-glimmer-30b":{input:.2,output:.8,cache_read:.05},"empiriolabs/kimi-k3":{input:3,output:15,cache_read:3},"empiriolabs/mimo-v2-6-pro":{input:.435,output:.87,cache_read:.435},"empiriolabs/qwen3-7-max":{input:2.5,output:7.5,cache_read:2.5},"empiriolabs/step-3-5-flash":{input:.1,output:.3,cache_read:.02},"empiriolabs/qwen3-8-max":{input:2,output:6,cache_read:2},"empiriolabs/deepseek-v3-2":{input:.57,output:1.71,cache_read:.57},"empiriolabs/minimax-m2-7-highspeed":{input:.3,output:1.2,cache_read:.03},"empiriolabs/mimo-v2-5-pro":{input:2.175,output:4.35,cache_read:.018},"empiriolabs/qwen3-max":{input:1.08,output:5.52,cache_read:1.08,tiers:[{input:2.16,output:11.04,cache_read:2.16,tier:{type:"context",size:32e3}},{input:2.7,output:13.8,cache_read:2.7,tier:{type:"context",size:128e3}}]},"empiriolabs/seed-2-0-pro":{input:.63,output:3.79,cache_read:.63,tiers:[{input:1.26,output:7.58,cache_read:1.26,tier:{type:"context",size:128e3}}]},"empiriolabs/qwen3-5-4b":{input:.04,output:.07,cache_read:.02},"empiriolabs/step-5-preview":{input:1,output:2.7,cache_read:.05},"empiriolabs/qwen3-5-27b":{input:.086,output:.688,cache_read:.086,tiers:[{input:.258,output:2.064,cache_read:.258,tier:{type:"context",size:128e3}}]},"empiriolabs/seed-2-1-turbo":{input:.63,output:3.13,cache_read:.63},"empiriolabs/fugu-ultra-v1-0":{input:7.5,output:45,cache_read:1.5,tiers:[{input:15,output:67.5,cache_read:3,tier:{type:"context",size:272e3}}],context_over_200k:{input:15,output:67.5,cache_read:3}},"empiriolabs/qwen3-5-122b-a10b":{input:.115,output:.917,cache_read:.115,tiers:[{input:.287,output:2.294,cache_read:.287,tier:{type:"context",size:128e3}}]},"empiriolabs/qwen3-5-flash":{input:.09,output:.368,cache_read:.09},"empiriolabs/mimo-v2-6-pro-ultraspeed":{input:4.35,output:8.7,cache_read:4.35},"empiriolabs/glm-5-2":{input:1.4,output:4.4,cache_read:1.4},"empiriolabs/mimo-v2-6-flash":{input:.14,output:.28,cache_read:.14},"empiriolabs/muse-spark-1-2":{input:1.25,output:4.25,cache_read:1},"empiriolabs/qwen3-7-flash":{input:.03,output:.13,cache_read:.006,tiers:[{input:.1,output:.4,cache_read:.02,tier:{type:"context",size:32e3}},{input:.2,output:.8,cache_read:.04,tier:{type:"context",size:256e3}}]},"empiriolabs/minimax-m2-7":{input:.15,output:.6,cache_read:.03},"empiriolabs/qwen3-6-35b-a3b":{input:.07,output:.42,cache_read:.035},"empiriolabs/qwen3-5-9b":{input:.09,output:.13,cache_read:.045},"empiriolabs/step-3-5-flash-2603":{input:.1,output:.3,cache_read:.02},"empiriolabs/qwen3-5-35b-a3b":{input:.057,output:.459,cache_read:.057,tiers:[{input:.229,output:1.835,cache_read:.229,tier:{type:"context",size:128e3}}]},"empiriolabs/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:1.32},"empiriolabs/kimi-k2-6":{input:.8939,output:3.7131,cache_read:.1788},"empiriolabs/minimax-m3":{input:.225,output:.9,cache_read:.045,tiers:[{input:.45,output:1.8,cache_read:.09,tier:{type:"context",size:512e3}}],context_over_200k:{input:.45,output:1.8,cache_read:.09}},"empiriolabs/glm-5-3":{input:1.4,output:4.4,cache_read:1.4},"empiriolabs/fugu-ultra-v1-1":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"empiriolabs/kimi-k2-7-code-highspeed":{input:1.9,output:8,cache_read:1.9},"empiriolabs/deepseek-v4-1-flash":{input:.3,output:1.2,cache_read:.3},"empiriolabs/qwen3-7-plus":{input:.4,output:1.6,cache_read:.4,tiers:[{input:1.2,output:4.8,cache_read:1.2,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.2,output:4.8,cache_read:1.2}},"empiriolabs/glm-5-1":{input:.825,output:3.301,cache_read:.165,tiers:[{input:1.1,output:3.851,cache_read:.22,tier:{type:"context",size:32e3}}]},"empiriolabs/fugu-ultra-v2-0":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"empiriolabs/mistral-small-4":{input:.15,output:.6,cache_read:.15},"empiriolabs/qwen3-8-omni-flash":{input:.3,output:.94,cache_read:.3},"empiriolabs/qwen3-5-plus":{input:.36,output:2.21,cache_read:.36,tiers:[{input:1.08,output:6.62,cache_read:1.08,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.08,output:6.62,cache_read:1.08}},"empiriolabs/muse-spark-1-3":{input:1.25,output:4.25,cache_read:1},"empiriolabs/deepseek-v4-pro":{input:1.65,output:3.3,cache_read:1.65},"empiriolabs/qwen3-8-flash":{input:.16,output:.47,cache_read:.16},"empiriolabs/qwen3-6-flash":{input:.25,output:1.5,cache_read:.25,tiers:[{input:1,output:4,cache_read:1,tier:{type:"context",size:256e3}}],context_over_200k:{input:1,output:4,cache_read:1}},"empiriolabs/seed-2-0-code":{input:.4,output:2.4,cache_read:.4,tiers:[{input:.8,output:4.8,cache_read:.8,tier:{type:"context",size:128e3}}]},"empiriolabs/qwen3-8-27b":{input:.17,output:.5,cache_read:.08},"empiriolabs/muse-spark-1-1":{input:1.25,output:4.25,cache_read:1},"empiriolabs/qwen3-6-max-preview":{input:1.31,output:7.88,cache_read:1.31,tiers:[{input:1.97,output:11.82,cache_read:1.97,tier:{type:"context",size:128e3}}]},"empiriolabs/step-3-7-flash":{input:.2,output:1.15,cache_read:.04},"empiriolabs/qwen3-5-397b-a17b":{input:.172,output:1.032,cache_read:.172,tiers:[{input:.43,output:2.58,cache_read:.43,tier:{type:"context",size:128e3}}]},"empiriolabs/gemma-4-26b-a4b":{input:.05,output:.29,cache_read:.025},"empiriolabs/deepseek-v4-flash":{input:.14,output:.28,cache_read:.14},"cloudflare-workers-ai/@cf/meta/llama-3.3-70b-instruct-fp8-fast":{input:.293,output:2.253},"cloudflare-workers-ai/@cf/meta/llama-guard-3-8b":{input:.484,output:.03},"cloudflare-workers-ai/@cf/meta/llama-3.1-8b-instruct-fp8":{input:.152,output:.287},"cloudflare-workers-ai/@cf/meta/llama-3.2-11b-vision-instruct":{input:.0485,output:.676},"cloudflare-workers-ai/@cf/meta/llama-3.2-1b-instruct":{input:.027,output:.201},"cloudflare-workers-ai/@cf/meta/llama-4-scout-17b-16e-instruct":{input:.27,output:.85},"cloudflare-workers-ai/@cf/meta/llama-3.2-3b-instruct":{input:.0509,output:.335},"cloudflare-workers-ai/@cf/google/gemma-4-26b-a4b-it":{input:.1,output:.3},"cloudflare-workers-ai/@cf/aisingapore/gemma-sea-lion-v4-27b-it":{input:.351,output:.555},"cloudflare-workers-ai/@cf/ibm-granite/granite-4.0-h-micro":{input:.017,output:.112},"cloudflare-workers-ai/@cf/deepseek-ai/deepseek-v4-flash-0731":{input:.44,output:1.32,cache_read:.014},"cloudflare-workers-ai/@cf/deepseek-ai/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"cloudflare-workers-ai/@cf/deepseek-ai/deepseek-r1-distill-qwen-32b":{input:.497,output:4.881},"cloudflare-workers-ai/@cf/mistralai/mistral-small-3.1-24b-instruct":{input:.351,output:.555},"cloudflare-workers-ai/@cf/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"cloudflare-workers-ai/@cf/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"cloudflare-workers-ai/@cf/zai-org/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"cloudflare-workers-ai/@cf/zai-org/glm-4.7-flash":{input:.0605,output:.4},"cloudflare-workers-ai/@cf/zai-org/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"cloudflare-workers-ai/@cf/zai-org/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"cloudflare-workers-ai/@cf/nvidia/nemotron-3-120b-a12b":{input:.5,output:1.5},"cloudflare-workers-ai/@cf/qwen/qwen3.8-27b":{input:.45,output:3.2,cache_read:.05},"cloudflare-workers-ai/@cf/qwen/qwq-32b":{input:.66,output:1},"cloudflare-workers-ai/@cf/qwen/qwen3-30b-a3b-fp8":{input:.0509,output:.335},"cloudflare-workers-ai/@cf/qwen/qwen2.5-coder-32b-instruct":{input:.66,output:1},"cloudflare-workers-ai/@cf/openai/gpt-oss-20b":{input:.2,output:.3},"cloudflare-workers-ai/@cf/openai/gpt-oss-120b":{input:.35,output:.75},"nano-gpt/deepseek-reasoner-cheaper":{input:.4,output:1.7,cache_read:.2},"nano-gpt/doubao-seed-2-0-lite-260215":{input:.1462,output:.8738,cache_read:.0731},"nano-gpt/doubao-seed-2-0-mini-260215":{input:.0493,output:.4845,cache_read:.02465},"nano-gpt/fastgpt":{input:7.5,output:7.5},"nano-gpt/doubao-seed-2-0-pro-260215":{input:.782,output:3.876,cache_read:.391},"nano-gpt/ernie-5.0-thinking-preview":{input:1,output:3.5,cache_read:.5},"nano-gpt/gemini-2.5-flash-lite-preview-09-2025-thinking":{input:.1,output:.4,cache_read:.01},"nano-gpt/gemma-4-12b-it-station-keeper":{input:.05,output:.25,cache_read:.025},"nano-gpt/glm-4-air-0111":{input:.1394,output:.1394,cache_read:.0697},"nano-gpt/glm-4.1v-thinking-flashx":{input:.3,output:.3,cache_read:.15},"nano-gpt/deepseek-v3-0324":{input:.2,output:.77,cache_read:.135},"nano-gpt/venice-uncensored":{input:.4,output:1.8,cache_read:.4},"nano-gpt/Gemma-4-31B-MeroMero-v2:thinking":{input:.1,output:.45,cache_read:.05},"nano-gpt/gemini-2.0-pro-reasoner":{input:1.292,output:4.998,cache_read:.323},"nano-gpt/Meta-Llama-3-1-8B-Instruct-FP8":{input:.02,output:.03,cache_read:.01},"nano-gpt/glm-4-plus-0111":{input:9.996,output:9.996,cache_read:4.998},"nano-gpt/holo3-35b-a3b:thinking":{input:.25,output:1.8,cache_read:.125},"nano-gpt/gemma-4-26b-a4b-it-moonlight":{input:.12,output:.38,cache_read:.06},"nano-gpt/phi-4-mini-instruct":{input:.17,output:.68,cache_read:.085},"nano-gpt/auto-model-premium":{input:9.996,output:19.992,cache_read:4.998},"nano-gpt/gemma-4-31b-it-darkidol":{input:.1,output:.45,cache_read:.05},"nano-gpt/gemini-2.5-flash-lite-preview-06-17":{input:.15,output:.6,cache_read:.015},"nano-gpt/gemini-2.5-flash-preview-09-2025":{input:.3,output:2.5,cache_read:.03},"nano-gpt/gemma-4-26b-a4b-it-opusdistill":{input:.12,output:.38,cache_read:.06},"nano-gpt/auto-model-standard":{input:9.996,output:19.992,cache_read:4.998},"nano-gpt/longcat-2.0":{input:.75,output:3,cache_read:.015},"nano-gpt/gemini-2.5-pro-preview-03-25":{input:2.5,output:10,cache_read:.25},"nano-gpt/agnes-3.0-flash":{input:.05,output:.15,cache_read:.005},"nano-gpt/Gemma-4-31B-Queen":{input:.306,output:.306,cache_read:.153},"nano-gpt/qvq-max":{input:1.2,output:4.8,cache_read:.6},"nano-gpt/asi1-mini":{input:1,output:1,cache_read:.5},"nano-gpt/gemini-2.5-pro-exp-03-25":{input:2.5,output:10,cache_read:.25},"nano-gpt/gemma-4-31b-it-isometry":{input:.1,output:.45,cache_read:.05},"nano-gpt/celeris-1":{input:2,output:6,cache_read:1},"nano-gpt/gemini-3-pro-image-preview":{input:2,output:12,cache_read:.2},"nano-gpt/gemma-4-26b-a4b-it-darksoul":{input:.12,output:.38,cache_read:.06},"nano-gpt/glm-4.1v-thinking-flash":{input:.3,output:.3,cache_read:.15},"nano-gpt/Gemma-4-31B-GarnetV2":{input:.306,output:.306,cache_read:.153},"nano-gpt/gemini-2.5-flash-nothinking":{input:.3,output:2.5,cache_read:.03},"nano-gpt/Gemma-4-31B-MeroMero-v2":{input:.1,output:.45,cache_read:.05},"nano-gpt/holo3-35b-a3b":{input:.25,output:1.8,cache_read:.125},"nano-gpt/claw-medium":{input:1,output:3.2,cache_read:.2},"nano-gpt/gemma-4-26b-a4b-it-shadowsiren":{input:.12,output:.38,cache_read:.06},"nano-gpt/gemini-2.0-pro-exp-02-05":{input:1.989,output:7.956,cache_read:.49725},"nano-gpt/claw-high":{input:1,output:3.2,cache_read:.2},"nano-gpt/deepseek-chat":{input:.1,output:.425,cache_read:.05},"nano-gpt/Gemma-4-26B-A4B-MeroMero:thinking":{input:.12,output:.38,cache_read:.06},"nano-gpt/claw-low":{input:1,output:3.2,cache_read:.2,cache_write:.08333},"nano-gpt/doubao-1.5-pro-32k":{input:.1343,output:.3349,cache_read:.06715},"nano-gpt/doubao-seed-2-0-code-preview-260215":{input:.782,output:3.893,cache_read:.391},"nano-gpt/hermes-low":{input:1,output:3.2,cache_read:.2,cache_write:.08333},"nano-gpt/gemma-4-31b-it-gemsicle":{input:.1,output:.45,cache_read:.05},"nano-gpt/mercury-coder-small":{input:.25,output:1,cache_read:.125},"nano-gpt/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,cache_write:.375},"nano-gpt/ernie-x1.1-preview":{input:.15,output:.6,cache_read:.075},"nano-gpt/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"nano-gpt/hermes-high":{input:1,output:3.2,cache_read:.2},"nano-gpt/gemini-2.5-flash-preview-05-20":{input:.15,output:.6,cache_read:.015},"nano-gpt/glm-4-long":{input:.2006,output:.2006,cache_read:.1003},"nano-gpt/pokee-isaac":{input:.15,output:1,cache_read:.075},"nano-gpt/MiniMax-M1":{input:.1394,output:1.3328,cache_read:.0697},"nano-gpt/Gemma-4-31B-Claude-4.6-Opus-Reasoning-Distilled":{input:.306,output:.306,cache_read:.0306},"nano-gpt/Qwen3.5-27B-BlueStar-v3-Derestricted":{input:.306,output:.306,cache_read:.153},"nano-gpt/gemma-4-31b-it-novelist":{input:.1,output:.45,cache_read:.05},"nano-gpt/ernie-5.1:thinking":{input:.75,output:3,cache_read:.75},"nano-gpt/gemma-4-12b-it-semancer":{input:.05,output:.25,cache_read:.025},"nano-gpt/mistral-code-latest":{input:.3,output:.9,cache_read:.15},"nano-gpt/Qwen3.5-27B-Queen-Derestricted":{input:.306,output:.306,cache_read:.153},"nano-gpt/gemma-4-31b-it-fabled":{input:.1,output:.45,cache_read:.05},"nano-gpt/Gemma-4-26B-A4B-MeroMero":{input:.12,output:.38,cache_read:.06},"nano-gpt/Gemma-4-31B-Cognitive-Unshackled":{input:.306,output:.306,cache_read:.153},"nano-gpt/universal-summarizer":{input:30,output:30},"nano-gpt/gemma-4-12b-it":{input:.05,output:.25,cache_read:.025},"nano-gpt/gemini-exp-1206":{input:1.258,output:4.998,cache_read:.629},"nano-gpt/gemini-2.5-flash-preview-09-2025-thinking":{input:.3,output:2.5,cache_read:.03},"nano-gpt/doubao-1.5-pro-256k":{input:.799,output:1.445,cache_read:.3995},"nano-gpt/gemma-4-31b-it-garnet":{input:.1,output:.45,cache_read:.05},"nano-gpt/gemini-2.5-pro-preview-05-06":{input:2.5,output:10,cache_read:.25},"nano-gpt/mercury-2":{input:.25,output:.75,cache_read:.025},"nano-gpt/command-a-reasoning-08-2025":{input:2.5,output:10,cache_read:1.25},"nano-gpt/longcat-2.0:thinking":{input:.75,output:3,cache_read:.015},"nano-gpt/deepseek-r1-sambanova":{input:4.998,output:6.987,cache_read:2.499},"nano-gpt/gemini-2.5-flash-preview-04-17":{input:.15,output:.6,cache_read:.015},"nano-gpt/deepseek-reasoner":{input:.4,output:1.7,cache_read:.2},"nano-gpt/gemini-2.5-flash-lite-preview-09-2025":{input:.1,output:.4,cache_read:.01},"nano-gpt/gemini-2.5-flash-preview-04-17:thinking":{input:.15,output:3.5,cache_read:.015},"nano-gpt/deepseek-r1":{input:.4,output:1.7,cache_read:.2},"nano-gpt/gemini-2.5-pro-preview-06-05":{input:2.5,output:10,cache_read:.25},"nano-gpt/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01},"nano-gpt/deepseek-chat-cheaper":{input:.1,output:.425,cache_read:.05},"nano-gpt/GLM-4.6-Derestricted-v5":{input:.4,output:1.5,cache_read:.2},"nano-gpt/doubao-1.5-vision-pro-32k":{input:.459,output:1.377,cache_read:.2295},"nano-gpt/glm-z1-airx":{input:.7,output:.7,cache_read:.35},"nano-gpt/auto-model-basic":{input:9.996,output:19.992,cache_read:4.998},"nano-gpt/qwen3-vl-235b-a22b-instruct-original":{input:.3,output:1.9,cache_read:.15},"nano-gpt/gemma-4-26b-a4b-it-luminous":{input:.12,output:.38,cache_read:.06},"nano-gpt/sarvam-105b":{input:.054,output:.2124,cache_read:.0336},"nano-gpt/gemma-4-31b-it-gembrain":{input:.1,output:.45,cache_read:.05},"nano-gpt/phi-4-multimodal-instruct":{input:.07,output:.11,cache_read:.035},"nano-gpt/gemini-2.5-flash-preview-05-20:thinking":{input:.15,output:3.5,cache_read:.015},"nano-gpt/gemma-4-26b-a4b-it-musica":{input:.12,output:.38,cache_read:.06},"nano-gpt/gemma-4-26b-a4b-it-chimerax":{input:.12,output:.38,cache_read:.06},"nano-gpt/hermes-medium":{input:1,output:3.2,cache_read:.2},"nano-gpt/doubao-seed-1-6-250615":{input:.204,output:.51,cache_read:.102},"nano-gpt/Gemma-4-31B-DarkIdol":{input:.306,output:.306,cache_read:.153},"nano-gpt/ernie-5.1":{input:.75,output:3,cache_read:.75},"nano-gpt/doubao-seed-1-6-flash-250615":{input:.0374,output:.374,cache_read:.0187},"nano-gpt/mistral-code-agent-latest":{input:.4,output:2,cache_read:.2},"nano-gpt/kimi-k2-instruct-fast":{input:.4,output:1.8,cache_read:.2},"nano-gpt/featherless-ai/Qwerky-72B":{input:.5,output:.5,cache_read:.25},"nano-gpt/stealth/space-bunny-alpha":{input:.05,output:.15},"nano-gpt/unsloth/gemma-3-27b-it":{input:.2992,output:.2992,cache_read:.1496},"nano-gpt/unsloth/gemma-3-12b-it":{input:.272,output:.272,cache_read:.136},"nano-gpt/unsloth/gemma-3-4b-it":{input:.2006,output:.2006,cache_read:.1003},"nano-gpt/bytedance-seed/seed-2.0-lite":{input:.25,output:2,cache_read:.125},"nano-gpt/bytedance-seed/seed-2-1-turbo":{input:.5,output:2.5,cache_read:.25},"nano-gpt/bytedance-seed/seed-2.0-code":{input:.5,output:3,cache_read:.25},"nano-gpt/poolside/laguna-s-2.1:thinking":{input:.1,output:.2,cache_read:.01},"nano-gpt/poolside/laguna-s-2.1":{input:.1,output:.2,cache_read:.01},"nano-gpt/abliteration-ai/abliterated-model-large-v2":{input:3,output:5,cache_read:.3},"nano-gpt/abliteration-ai/abliterated-model":{input:1,output:3,cache_read:.1},"nano-gpt/abliteration-ai/abliterated-model-large":{input:3,output:5,cache_read:.3},"nano-gpt/prism-ml/ternary-bonsai-2-27b":{input:.075,output:.5,cache_read:.0375},"nano-gpt/anthropic/claude-opus-4.5:thinking":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-sonnet-4.5:thinking":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-4.6:thinking:low":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-opus-4.1":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-sonnet-4:thinking:64000":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-latest":{input:4,output:20,cache_read:.2,cache_write:5},"nano-gpt/anthropic/claude-opus-4.1:thinking:1024":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-haiku-latest":{input:1,output:5,cache_read:.1},"nano-gpt/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-sonnet-4:thinking:8192":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-sonnet-4:thinking:1024":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-4.6:thinking":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-sonnet-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/anthropic/claude-opus-4.6:thinking:medium":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1},"nano-gpt/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"nano-gpt/anthropic/claude-fable-latest":{input:10,output:50,cache_read:.25,cache_write:12.5},"nano-gpt/anthropic/claude-sonnet-4:thinking:32768":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"nano-gpt/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-4.1:thinking:8192":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-haiku-4.5:thinking":{input:1,output:5,cache_read:.1},"nano-gpt/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"nano-gpt/anthropic/claude-opus-4:thinking:1024":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-opus-4.8:thinking":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-sonnet-4":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/anthropic/claude-sonnet-4.6:thinking":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-4:thinking:32768":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-opus-4.6:thinking:max":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-sonnet-5:thinking":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-4.7:thinking":{input:5,output:25,cache_read:.5},"nano-gpt/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"nano-gpt/anthropic/claude-opus-4.1:thinking":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-sonnet-4:thinking":{input:3,output:15,cache_read:.3},"nano-gpt/anthropic/claude-opus-4:thinking":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-opus-4:thinking:8192":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-opus-4":{input:15,output:75,cache_read:1.5},"nano-gpt/anthropic/claude-opus-4.1:thinking:32768":{input:15,output:75,cache_read:1.5},"nano-gpt/cohere/command-r-plus-08-2024":{input:2.856,output:14.246,cache_read:1.428},"nano-gpt/deepseek/deepseek-v4-flash:thinking":{input:.14,output:.28,cache_read:.0028},"nano-gpt/deepseek/deepseek-v4-flash-0731":{input:.05,output:.16,cache_read:.013},"nano-gpt/deepseek/deepseek-v4.1-flash":{input:.13,output:.52,cache_read:.006},"nano-gpt/deepseek/deepseek-v4.1-flash:thinking":{input:.13,output:.52,cache_read:.006},"nano-gpt/deepseek/deepseek-v4-flash-vision-exp":{input:.22,output:.66,cache_read:.007},"nano-gpt/deepseek/deepseek-v3.2:thinking":{input:.28,output:.42,cache_read:.14},"nano-gpt/deepseek/deepseek-latest":{input:1.1,output:2.5,cache_read:.04},"nano-gpt/deepseek/deepseek-v4-pro:thinking":{input:1.1,output:2.2,cache_read:.11},"nano-gpt/deepseek/deepseek-v4-pro-0813:thinking":{input:1.1,output:2.5,cache_read:.04},"nano-gpt/deepseek/deepseek-v4-pro-0813":{input:1.1,output:2.5,cache_read:.04},"nano-gpt/deepseek/deepseek-v4-flash-0731:thinking":{input:.05,output:.16,cache_read:.013},"nano-gpt/deepseek/deepseek-v4-pro":{input:1.1,output:2.2,cache_read:.11},"nano-gpt/deepseek/deepseek-v4-flash-latest":{input:.05,output:.16,cache_read:.013},"nano-gpt/deepseek/deepseek-v3.2":{input:.28,output:.42,cache_read:.14},"nano-gpt/deepseek/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"nano-gpt/baseten/Kimi-K2-Instruct-FP4":{input:.4,output:1.8,cache_read:.2},"nano-gpt/unbiased/pareto":{input:2.5,output:7.5,cache_read:.25},"nano-gpt/lightonai/LightOnOCR-2-1B":{input:.1785,output:.3465},"nano-gpt/abacusai/Dracarys-72B-Instruct":{input:.493,output:.493,cache_read:.2465},"nano-gpt/shisa-ai/shisa-v2.1-llama3.3-70b":{input:.5,output:.5,cache_read:.25},"nano-gpt/shisa-ai/shisa-v2-llama3.3-70b":{input:.5,output:.5,cache_read:.25},"nano-gpt/Steelskull/L3.3-MS-Nevoria-70b":{input:.493,output:.493,cache_read:.2465},"nano-gpt/Steelskull/L3.3-Cu-Mai-R1-70b":{input:.493,output:.493,cache_read:.2465},"nano-gpt/Steelskull/L3.3-Nevoria-R1-70b":{input:.493,output:.493,cache_read:.2465},"nano-gpt/Steelskull/L3.3-Electra-R1-70b":{input:.69989,output:.69989,cache_read:.349945},"nano-gpt/tencent/hy3":{input:.066,output:.26,cache_read:.029},"nano-gpt/tencent/hy4-preview":{input:.834,output:2.501,cache_read:.042},"nano-gpt/anthracite-org/magnum-v4-72b":{input:2.006,output:2.992,cache_read:1.003},"nano-gpt/anthracite-org/magnum-v2-72b":{input:2.006,output:2.992,cache_read:1.003},"nano-gpt/meta-llama/llama-4-scout":{input:.085,output:.46,cache_read:.0425},"nano-gpt/meta-llama/llama-4-maverick":{input:.15,output:.6,cache_read:.075},"nano-gpt/meta-llama/llama-3.3-70b-instruct":{input:.05,output:.23,cache_read:.025},"nano-gpt/meta-llama/llama-3.1-8b-instruct":{input:.0544,output:.085,cache_read:.0272},"nano-gpt/meta-llama/llama-3.2-3b-instruct":{input:.0306,output:.0493,cache_read:.0153},"nano-gpt/LLM360/K2-Think":{input:.17,output:.68,cache_read:.085},"nano-gpt/deepcogito/cogito-v1-preview-qwen-32B":{input:1.8,output:1.8,cache_read:.9},"nano-gpt/GalrionSoftworks/MN-LooseCannon-12B-v1":{input:.493,output:.493,cache_read:.2465},"nano-gpt/meganova-ai/manta-mini-1.0":{input:.02,output:.16,cache_read:.01},"nano-gpt/meganova-ai/manta-flash-1.0":{input:.02,output:.16,cache_read:.01},"nano-gpt/meganova-ai/manta-pro-1.0":{input:.06,output:.5,cache_read:.03},"nano-gpt/perceptron/perceptron-mk1":{input:.15,output:1.5,cache_read:.075},"nano-gpt/perceptron/perceptron-mk1.5":{input:.15,output:1.5},"nano-gpt/z-ai/glm-4.6v":{input:.3,output:.9,cache_read:.15},"nano-gpt/z-ai/glm-4.6-original":{input:.35,output:1.4,cache_read:.175},"nano-gpt/z-ai/glm-4.5":{input:.3,output:1.3,cache_read:.15},"nano-gpt/z-ai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"nano-gpt/z-ai/glm-5.3-flash":{input:.075,output:.25,cache_read:.015},"nano-gpt/z-ai/glm-5.3-flash-uncensored":{input:.2,output:.8,cache_read:.1},"nano-gpt/z-ai/glm-4.6":{input:.35,output:1.4,cache_read:.175},"nano-gpt/z-ai/glm-4.7-flash:thinking":{input:.07,output:.4,cache_read:.035},"nano-gpt/z-ai/glm-5-original:thinking":{input:1,output:3.2,cache_read:.2},"nano-gpt/z-ai/glm-5.3:thinking":{input:1,output:3.2,cache_read:.2},"nano-gpt/z-ai/glm-5":{input:.5,output:2.55,cache_read:.13},"nano-gpt/z-ai/GLM-4.5-Air":{input:.12,output:.8,cache_read:.06},"nano-gpt/z-ai/glm-4.5v":{input:.6,output:1.8,cache_read:.3},"nano-gpt/z-ai/GLM-4.6-turbo:thinking":{input:1,output:3,cache_read:.5},"nano-gpt/z-ai/glm-4.7:thinking":{input:.2,output:.8,cache_read:.1},"nano-gpt/z-ai/glm-5.1:thinking":{input:.75,output:2.6,cache_read:.15},"nano-gpt/z-ai/glm-4.6v-original":{input:.6,output:.9,cache_read:.3},"nano-gpt/z-ai/glm-5v-turbo:thinking":{input:1.2,output:4,cache_read:.24},"nano-gpt/z-ai/GLM-4.6-turbo":{input:1,output:3,cache_read:.5},"nano-gpt/z-ai/GLM-4.5-Air:thinking":{input:.12,output:.8,cache_read:.06},"nano-gpt/z-ai/glm-5.2:thinking":{input:.42,output:1.32,cache_read:.078},"nano-gpt/z-ai/glm-4.7-flash":{input:.07,output:.4,cache_read:.035},"nano-gpt/z-ai/glm-4.7":{input:.2,output:.8,cache_read:.1},"nano-gpt/z-ai/glm-5:thinking":{input:.5,output:2.55,cache_read:.13},"nano-gpt/z-ai/glm-5.2":{input:.42,output:1.32,cache_read:.078},"nano-gpt/z-ai/GLM-4.5:thinking":{input:.3,output:1.3,cache_read:.15},"nano-gpt/z-ai/glm-5.1":{input:.75,output:2.6,cache_read:.15},"nano-gpt/z-ai/glm-4.6:thinking":{input:.35,output:1.4,cache_read:.175},"nano-gpt/z-ai/glm-4.5v:thinking":{input:.6,output:1.8,cache_read:.3},"nano-gpt/z-ai/glm-4.7-original":{input:.6,output:2.2,cache_read:.11},"nano-gpt/z-ai/glm-5-original":{input:1,output:3.2,cache_read:.2},"nano-gpt/z-ai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"nano-gpt/z-ai/glm-4.7-original:thinking":{input:.6,output:2.2,cache_read:.11},"nano-gpt/z-ai/glm-5.3":{input:1,output:3.2,cache_read:.2},"nano-gpt/z-ai/glm-5.3-flash-cybersecurity":{input:.15,output:.5,cache_read:.075},"nano-gpt/z-ai/glm-latest":{input:1,output:3.2,cache_read:.2},"nano-gpt/inference-net/schematron-v2-small":{input:.05,output:.23,cache_read:.025},"nano-gpt/inference-net/schematron-v2-turbo":{input:.03,output:.15,cache_read:.015},"nano-gpt/thinkingmachines/inkling:thinking":{input:1,output:4.05,cache_read:.17},"nano-gpt/thinkingmachines/Inkling-Small":{input:.5,output:1.2,cache_read:.1},"nano-gpt/thinkingmachines/inkling":{input:1,output:4.05,cache_read:.17},"nano-gpt/thinkingmachines/Inkling-Small:thinking":{input:.5,output:1.2,cache_read:.1},"nano-gpt/meta/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"nano-gpt/meta/muse-glimmer-30b":{input:.35,output:1.5,cache_read:.04},"nano-gpt/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"nano-gpt/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"nano-gpt/meta/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"nano-gpt/meta/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"nano-gpt/mlabonne/NeuralDaredevil-8B-abliterated":{input:.44,output:.44,cache_read:.22},"nano-gpt/NeverSleep/Lumimaid-v0.2-70B":{input:1,output:1.5,cache_read:.5},"nano-gpt/nanogpt/coding-router:low":{input:.14,output:.28,cache_read:.028},"nano-gpt/nanogpt/coding-router:medium":{input:.14,output:.28,cache_read:.028},"nano-gpt/nanogpt/coding-router":{input:1.1,output:2.2,cache_read:.11},"nano-gpt/nanogpt/coding-router:max":{input:5,output:30,cache_read:.5},"nano-gpt/nanogpt/coding-router:high":{input:1.1,output:2.2,cache_read:.11},"nano-gpt/LatitudeGames/Wayfarer-Large-70B-Llama-3.3":{input:.7,output:.7,cache_read:.35},"nano-gpt/VongolaChouko/Starcannon-Unleashed-12B-v1.0":{input:.493,output:.493,cache_read:.2465},"nano-gpt/arcee-ai/trinity-large-thinking":{input:.25,output:.9,cache_read:.125},"nano-gpt/x-ai/grok-4.20-multi-agent":{input:2,output:6,cache_read:1},"nano-gpt/x-ai/grok-latest":{input:1.6,output:4.8,cache_read:.4},"nano-gpt/x-ai/grok-4.7":{input:1.6,output:4.8,cache_read:.4},"nano-gpt/x-ai/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"nano-gpt/x-ai/grok-4.5":{input:2,output:6,cache_read:.5},"nano-gpt/x-ai/grok-build-0.1":{input:1,output:2,cache_read:.2},"nano-gpt/x-ai/grok-4.20":{input:2,output:6,cache_read:1},"nano-gpt/x-ai/grok-4.6":{input:2,output:6,cache_read:.5},"nano-gpt/Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B":{input:.493,output:.493,cache_read:.2465},"nano-gpt/Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B":{input:.493,output:.493,cache_read:.2465},"nano-gpt/upstage/solar-pro-3":{input:.15,output:.6,cache_read:.015},"nano-gpt/upstage/solar-pro4":{input:.03,output:.12,cache_read:.006},"nano-gpt/upstage/solar-mini4:thinking":{input:.05,output:.2,cache_read:.005},"nano-gpt/upstage/solar-pro4:thinking":{input:.03,output:.12,cache_read:.006},"nano-gpt/upstage/solar-mini4":{input:.05,output:.2,cache_read:.005},"nano-gpt/bytedance/doubao-seed-2.1-turbo":{input:.5,output:2.5,cache_read:.25},"nano-gpt/bytedance/doubao-seed-2.1-pro":{input:1,output:5,cache_read:.5},"nano-gpt/bytedance/doubao-seed-character":{input:.1179,output:.2947,cache_read:.0236,cache_write:.0025},"nano-gpt/liquid/lfm-2.5-2.6b":{input:.1,output:.2,cache_read:.05},"nano-gpt/google/gemini-flash-latest":{input:.75,output:3.75,cache_read:.075,cache_write:.041667},"nano-gpt/google/gemma-4-31b-it":{input:.1,output:.45,cache_read:.05},"nano-gpt/google/gemini-3.1-pro-preview-low":{input:2,output:12,cache_read:.2,cache_write:.375},"nano-gpt/google/gemini-3.5-flash-thinking":{input:1.5,output:9,cache_read:.15,cache_write:.083333},"nano-gpt/google/gemma-4-26b-a4b-it:thinking":{input:.13,output:.4,cache_read:.065},"nano-gpt/google/gemini-flash-lite-latest":{input:.3,output:2.5,cache_read:.03,cache_write:.08333},"nano-gpt/google/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.041667},"nano-gpt/google/diffusiongemma":{input:.05,output:.15,cache_read:.025},"nano-gpt/google/gemma-4-26b-a4b-it":{input:.12,output:.38,cache_read:.06},"nano-gpt/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.08333},"nano-gpt/google/gemma-4-31b-it:thinking":{input:.1,output:.35,cache_read:.05},"nano-gpt/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,cache_write:.375},"nano-gpt/google/gemini-3.1-pro-preview-high":{input:2,output:12,cache_read:.2,cache_write:.375},"nano-gpt/google/gemma4-31b-splituntied":{input:.1,output:.3,cache_read:.05},"nano-gpt/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.083333},"nano-gpt/google/gemma-4-26b-a4b-it-cybersecurity":{input:.1056,output:.3344,cache_read:.0528},"nano-gpt/google/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.041667},"nano-gpt/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,cache_write:.375},"nano-gpt/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"nano-gpt/google/gemini-pro-latest":{input:2,output:12,cache_read:.2,cache_write:.375},"nano-gpt/google/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.041667},"nano-gpt/google/gemini-3-flash-preview-thinking":{input:.5,output:3,cache_read:.05},"nano-gpt/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:.08333},"nano-gpt/TEE/gemma-4-31b-it":{input:.15,output:.46,cache_read:.075},"nano-gpt/TEE/qwen3.8-27b":{input:.4,output:3,cache_read:.15},"nano-gpt/TEE/nemotron-3.5-lightning":{input:.08,output:.2,cache_read:.04},"nano-gpt/TEE/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"nano-gpt/TEE/qwen3.5-27b":{input:.3,output:2.4,cache_read:.15},"nano-gpt/TEE/muse-glimmer-30b":{input:.35,output:1.5,cache_read:.04},"nano-gpt/TEE/kimi-k3":{input:3,output:15,cache_read:1.5},"nano-gpt/TEE/deepseek-v4.1-flash":{input:.65,output:1.45,cache_read:.13},"nano-gpt/TEE/llama3-3-70b":{input:1.75,output:2.75,cache_read:1.75},"nano-gpt/TEE/kimi-k2.6":{input:1.5,output:5.25,cache_read:.375},"nano-gpt/TEE/qwen3.8-27b-uncensored":{input:.3,output:1.5},"nano-gpt/TEE/gemma-4-26b-a4b-uncensored":{input:.15,output:.7,cache_read:.075},"nano-gpt/TEE/gemma4-31b:thinking":{input:.4,output:1,cache_read:.4},"nano-gpt/TEE/gemma4-31b":{input:.4,output:1,cache_read:.4},"nano-gpt/TEE/qwen3.6-35b-a3b":{input:.2,output:1.27,cache_read:.1},"nano-gpt/TEE/glm-5.2:thinking":{input:1.4,output:4.4,cache_read:.7},"nano-gpt/TEE/qwen3.5-397b-a17b":{input:.55,output:3.5,cache_read:.275},"nano-gpt/TEE/glm-5.2":{input:1.4,output:4.4,cache_read:.7},"nano-gpt/TEE/glm-5.1-thinking":{input:1.5,output:5.25,cache_read:.3},"nano-gpt/TEE/glm-5.1":{input:1.5,output:5.25,cache_read:.3},"nano-gpt/TEE/qwen2.5-vl-72b-instruct":{input:.7,output:.7,cache_read:.35},"nano-gpt/TEE/qwen3.6-27b":{input:.32,output:2.7,cache_read:.16},"nano-gpt/TEE/deepseek-v3.2":{input:.5,output:1,cache_read:.25},"nano-gpt/TEE/gpt-oss-120b":{input:2,output:2,cache_read:2},"nano-gpt/TEE/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"nano-gpt/TEE/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"nano-gpt/EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2":{input:.799,output:.799,cache_read:.3995},"nano-gpt/EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0":{input:2.006,output:2.006,cache_read:1.003},"nano-gpt/EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2":{input:.799,output:.799,cache_read:.3995},"nano-gpt/EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1":{input:2.006,output:2.006,cache_read:1.003},"nano-gpt/nothingiisreal/L3.1-70B-Celeste-V0.1-BF16":{input:.493,output:.493,cache_read:.2465},"nano-gpt/MarinaraSpaghetti/NemoMix-Unleashed-12B":{input:.493,output:.493,cache_read:.2465},"nano-gpt/pamanseau/OpenReasoning-Nemotron-32B":{input:.1,output:.4,cache_read:.05},"nano-gpt/huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated":{input:1.4,output:1.4,cache_read:.7},"nano-gpt/huihui-ai/Qwen2.5-32B-Instruct-abliterated":{input:.7,output:.7,cache_read:.35},"nano-gpt/huihui-ai/Llama-3.3-70B-Instruct-abliterated":{input:.7,output:.7,cache_read:.35},"nano-gpt/huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated":{input:.7,output:.7,cache_read:.35},"nano-gpt/Gryphe/MythoMax-L2-13b":{input:.1003,output:.1003,cache_read:.05015},"nano-gpt/ibm-granite/granite-4.2-8b":{input:.1,output:.15,cache_read:.05},"nano-gpt/TheDrummer/skyfall-36b-v2":{input:.55,output:.8,cache_read:.25},"nano-gpt/TheDrummer/Artemis-v1.1":{input:.1,output:.45,cache_read:.05},"nano-gpt/TheDrummer/Anubis-70B-v1":{input:.31,output:.31,cache_read:.155},"nano-gpt/TheDrummer/Anubis-70B-v1.1":{input:.31,output:.31,cache_read:.155},"nano-gpt/TheDrummer/Cydonia-24B-v4.3":{input:.12,output:.15,cache_read:.06},"nano-gpt/TheDrummer/Magidonia-24B-v4.3":{input:.1003,output:.1207,cache_read:.05015},"nano-gpt/TheDrummer/Cydonia-24B-v4.1":{input:.35,output:.55,cache_read:.16},"nano-gpt/TheDrummer/UnslopNemo-12B-v4.1":{input:.493,output:.493,cache_read:.2465},"nano-gpt/TheDrummer/Cydonia-24B-v2":{input:.1003,output:.1207,cache_read:.05015},"nano-gpt/TheDrummer/Rocinante-12B-v1.1":{input:.408,output:.595,cache_read:.204},"nano-gpt/TheDrummer/Cydonia-24B-v4":{input:.2006,output:.2414,cache_read:.1003},"nano-gpt/deepseek-ai/DeepSeek-V3.1":{input:.2,output:.7,cache_read:.1},"nano-gpt/deepseek-ai/deepseek-v3.2-exp-thinking":{input:.28,output:.42,cache_read:.14},"nano-gpt/deepseek-ai/DeepSeek-R1-0528":{input:.4,output:1.7,cache_read:.2},"nano-gpt/deepseek-ai/DeepSeek-V3.1-Terminus":{input:.25,output:.7,cache_read:.125},"nano-gpt/deepseek-ai/deepseek-v3.2-exp":{input:.28,output:.42,cache_read:.14},"nano-gpt/deepseek-ai/DeepSeek-V3.1:thinking":{input:.2,output:.7,cache_read:.1},"nano-gpt/deepseek-ai/DeepSeek-V3.1-Terminus:thinking":{input:.25,output:.7,cache_read:.125},"nano-gpt/stepfun-ai/step-3.5-flash-2603":{input:.1,output:.3,cache_read:.05},"nano-gpt/stepfun-ai/step-3.5-flash":{input:.1,output:.3,cache_read:.05},"nano-gpt/MiniMaxAI/MiniMax-M1-80k":{input:.6052,output:2.4225,cache_read:.3026},"nano-gpt/mistralai/ministral-8b-2512":{input:.15,output:.15,cache_read:.075},"nano-gpt/mistralai/mistral-small-4-119b-2603:thinking":{input:.4,output:1.4,cache_read:.2},"nano-gpt/mistralai/mistral-medium-3.5":{input:1.5,output:7.5,cache_read:.75},"nano-gpt/mistralai/mistral-small-24b-instruct-2501":{input:.1155,output:.3465},"nano-gpt/mistralai/mixtral-8x22b-instruct-v0.1":{input:2,output:6,cache_read:.2},"nano-gpt/mistralai/mistral-saba":{input:.1989,output:.595,cache_read:.09945},"nano-gpt/mistralai/mistral-medium-3.1":{input:.4,output:2,cache_read:.2},"nano-gpt/mistralai/mistral-small-3.2-24b-instruct":{input:.2,output:.4,cache_read:.1},"nano-gpt/mistralai/mistral-small-4-119b-2603":{input:.4,output:1.4,cache_read:.2},"nano-gpt/mistralai/mistral-large":{input:2.006,output:6.001,cache_read:.2},"nano-gpt/mistralai/mistral-medium-3.5:thinking":{input:1.5,output:7.5,cache_read:.75},"nano-gpt/mistralai/devstral-small-2505":{input:.06,output:.06,cache_read:.03},"nano-gpt/mistralai/devstral-2-123b-instruct-2512":{input:.4,output:1.4,cache_read:.2},"nano-gpt/mistralai/mistral-medium-3":{input:.4,output:2,cache_read:.2},"nano-gpt/mistralai/ministral-14b-instruct-2512":{input:.1,output:.4,cache_read:.05},"nano-gpt/mistralai/ministral-14b-2512":{input:.2,output:.2,cache_read:.1},"nano-gpt/mistralai/mistral-small-3.1-24b-instruct":{input:.1,output:.3,cache_read:.05},"nano-gpt/mistralai/ministral-3b-2512":{input:.1,output:.1,cache_read:.05},"nano-gpt/mistralai/mistral-nemo-instruct-2407":{input:.1003,output:.1207,cache_read:.05015},"nano-gpt/mistralai/codestral-2508":{input:.3,output:.9,cache_read:.15},"nano-gpt/sakana/fugu-max":{input:2,output:6,cache_read:.25},"nano-gpt/sakana/fugu-ultra":{input:5,output:30,cache_read:.5},"nano-gpt/sakana/fugu-ultra-v1.1":{input:5,output:30,cache_read:.5},"nano-gpt/inclusionai/ling-3.0-flash":{input:.075,output:.22,cache_read:.015},"nano-gpt/inclusionai/ling-3.0-flash-vl":{input:.06,output:.18,cache_read:.012},"nano-gpt/inclusionai/ling-3.0-flash:thinking":{input:.075,output:.22,cache_read:.015},"nano-gpt/moonshotai/kimi-k3":{input:2,output:10,cache_read:.2},"nano-gpt/moonshotai/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.32},"nano-gpt/moonshotai/kimi-k2.6":{input:.5,output:2.6,cache_read:.125},"nano-gpt/moonshotai/kimi-k2.5:thinking":{input:.3,output:1.9,cache_read:.15},"nano-gpt/moonshotai/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.15},"nano-gpt/moonshotai/kimi-k2.5":{input:.3,output:1.9,cache_read:.15},"nano-gpt/moonshotai/kimi-k2-instruct":{input:.4,output:1.8,cache_read:.2},"nano-gpt/moonshotai/kimi-k2.6:thinking":{input:.5,output:2.6,cache_read:.125},"nano-gpt/moonshotai/kimi-k2-instruct-0711":{input:.4,output:1.8,cache_read:.2},"nano-gpt/moonshotai/kimi-latest":{input:2,output:10,cache_read:.2},"nano-gpt/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"nano-gpt/moonshotai/Kimi-K2-Instruct-0905":{input:.4,output:1.8,cache_read:.2},"nano-gpt/THUDM/GLM-Z1-9B-0414":{input:.2,output:.2,cache_read:.1},"nano-gpt/THUDM/GLM-4-9B-0414":{input:.2,output:.2,cache_read:.1},"nano-gpt/THUDM/GLM-4-32B-0414":{input:.2,output:.2,cache_read:.1},"nano-gpt/nvidia/nemotron-3-nano-30b-a3b":{input:.17,output:.68,cache_read:.085},"nano-gpt/nvidia/nemotron-3.5-lightning":{input:.05,output:.2,cache_read:.01},"nano-gpt/nvidia/Llama-3.3-Nemotron-Super-49B-v1":{input:.15,output:.15,cache_read:.075},"nano-gpt/nvidia/nemotron-3-super-120b-a12b":{input:.05,output:.25,cache_read:.025},"nano-gpt/nvidia/nemotron-3-ultra-550b-a55b":{input:.5,output:2.5,cache_read:.25},"nano-gpt/nvidia/nemotron-3-super-120b-a12b:thinking":{input:.05,output:.25,cache_read:.025},"nano-gpt/nvidia/nemotron-3-ultra-550b-a55b:thinking":{input:.5,output:2.5,cache_read:.25},"nano-gpt/nvidia/nemotron-3.5-content-safety":{input:.05,output:.15,cache_read:.025},"nano-gpt/nvidia/Llama-3.1-Nemotron-70B-Instruct-HF":{input:.357,output:.408,cache_read:.1785},"nano-gpt/nvidia/nemotron-3.5-lightning:thinking":{input:.05,output:.2,cache_read:.01},"nano-gpt/xiaomi/mimo-v2.5-pro:thinking":{input:.435,output:.87,cache_read:.0036,cache_write:0},"nano-gpt/xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036,cache_write:0},"nano-gpt/xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.0028,cache_write:0},"nano-gpt/xiaomi/mimo-v2.6-pro-ultraspeed":{input:4.35,output:8.7,cache_read:.036,cache_write:0},"nano-gpt/xiaomi/mimo-v2.5:thinking":{input:.14,output:.28,cache_read:.0028,cache_write:0},"nano-gpt/xiaomi/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036,cache_write:0},"nano-gpt/xiaomi/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028,cache_write:0},"nano-gpt/xiaomi/mimo-v2.6-flash-uncensored":{input:.5,output:1.5,cache_read:.275},"nano-gpt/undi95/remm-slerp-l2-13b":{input:.799,output:1.207,cache_read:.3995},"nano-gpt/Salesforce/Llama-xLAM-2-70b-fc-r":{input:2.5,output:2.5,cache_read:1.25},"nano-gpt/minimax/minimax-latest":{input:.3,output:1.2,cache_read:.06},"nano-gpt/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.15},"nano-gpt/minimax/minimax-m2.7-turbo":{input:.6,output:2.4,cache_read:.3},"nano-gpt/minimax/minimax-01":{input:.1394,output:1.122,cache_read:.0697},"nano-gpt/minimax/minimax-m2-her":{input:.302,output:1.207,cache_read:.151},"nano-gpt/minimax/minimax-m2.7":{input:.315,output:1.26,cache_read:.1575},"nano-gpt/minimax/minimax-m3:thinking":{input:.3,output:1.2,cache_read:.06},"nano-gpt/minimax/minimax-m3":{input:.3,output:1.2,cache_read:.06},"nano-gpt/minimax/minimax-m2.1":{input:.33,output:1.32,cache_read:.165},"nano-gpt/minimax/minimax-m2":{input:.17,output:1.53,cache_read:.085},"nano-gpt/inflatebot/MN-12B-Mag-Mell-R1":{input:.493,output:.493,cache_read:.2465},"nano-gpt/kitani/clover-1-150b":{input:.15,output:.8},"nano-gpt/soob3123/GrayLine-Qwen3-8B":{input:.3,output:.3,cache_read:.15},"nano-gpt/soob3123/Veiled-Calla-12B":{input:.3,output:.3,cache_read:.15},"nano-gpt/soob3123/amoral-gemma3-27B-v2":{input:.3,output:.3,cache_read:.15},"nano-gpt/stepfun/step-5-preview":{input:1,output:2.7,cache_read:.05},"nano-gpt/stepfun/step-3.7-flash:thinking":{input:.2,output:1.15,cache_read:.04},"nano-gpt/Sao10K/L3.1-70B-Hanami-x1":{input:.493,output:.493,cache_read:.2465},"nano-gpt/Sao10K/L3.1-70B-Euryale-v2.2":{input:.306,output:.357,cache_read:.153},"nano-gpt/Sao10K/L3.3-70B-Euryale-v2.3":{input:.493,output:.493,cache_read:.2465},"nano-gpt/Sao10K/L3-8B-Stheno-v3.2":{input:.2006,output:.2006,cache_read:.1003},"nano-gpt/inception/mercury-2.5-preview":{input:.04,output:.15,cache_read:.004},"nano-gpt/ornith-ai/ornith-1.5-35b-a3b":{input:.1,output:.4,cache_read:.05},"nano-gpt/ornith-ai/ornith-1.5-35b-a3b:thinking":{input:.1,output:.4,cache_read:.05},"nano-gpt/amazon/nova-lite-v1":{input:.0595,output:.238,cache_read:.02975},"nano-gpt/amazon/nova-2-lite-v1":{input:.51,output:4.25,cache_read:.255},"nano-gpt/amazon/nova-pro-v1":{input:.799,output:3.196,cache_read:.3995},"nano-gpt/Doctor-Shotgun/MS3.2-24B-Magnum-Diamond":{input:.493,output:.493,cache_read:.2465},"nano-gpt/aion-labs/aion-2.0":{input:.8,output:1.6,cache_read:.2},"nano-gpt/aion-labs/aion-rp-llama-3.1-8b":{input:.8,output:1.6,cache_read:.4},"nano-gpt/aion-labs/aion-3.0":{input:3,output:6,cache_read:.75},"nano-gpt/aion-labs/aion-3.5":{input:3,output:6,cache_read:.75},"nano-gpt/aion-labs/aion-3.5-mini":{input:.7,output:1.4,cache_read:.18},"nano-gpt/aion-labs/aion-3.0-mini":{input:.7,output:1.4,cache_read:.18},"nano-gpt/qwen/qwen3.5-flash":{input:.1,output:.4,cache_read:.05},"nano-gpt/qwen/qwen3.8-max:thinking":{input:2,output:6,cache_read:.25,cache_write:2.5},"nano-gpt/qwen/qwen3-vl-235b-a22b-instruct":{input:.3,output:1.9,cache_read:.15},"nano-gpt/qwen/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"nano-gpt/qwen/qwen3.8-27b":{input:.15,output:.7,cache_read:.04},"nano-gpt/qwen/qwen3-vl-235b-a22b-thinking":{input:.5,output:6,cache_read:.25},"nano-gpt/qwen/qwen3.5-27b":{input:.27,output:2.16,cache_read:.135},"nano-gpt/qwen/qwen3.7-flash:thinking":{input:.03,output:.13,cache_read:.006,cache_write:.038},"nano-gpt/qwen/qwen3-235b-a22b-instruct-2507":{input:.13,output:.5,cache_read:.065},"nano-gpt/qwen/qwen-max":{input:1.5997,output:6.392,cache_read:.79985},"nano-gpt/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:.65,cache_read:.075},"nano-gpt/qwen/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"nano-gpt/qwen/qwen3-coder-next":{input:.2,output:1.5,cache_read:.1},"nano-gpt/qwen/qwen3-coder":{input:.13,output:.5,cache_read:.065},"nano-gpt/qwen/qwen3.5-35b-a3b:thinking":{input:.225,output:1.8,cache_read:.1125},"nano-gpt/qwen/qwen3.5-plus":{input:.4,output:2.4,cache_read:.04},"nano-gpt/qwen/qwen3-32b":{input:.1,output:.3,cache_read:.05},"nano-gpt/qwen/qwen-plus":{input:.3995,output:1.2002,cache_read:.19975},"nano-gpt/qwen/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.038},"nano-gpt/qwen/qwen3-max":{input:1.2002,output:6.001,cache_read:.6001},"nano-gpt/qwen/qwen3.8-27b-obliterated:thinking":{input:.25,output:1.5,cache_read:.2},"nano-gpt/qwen/qwen-turbo":{input:.04998,output:.2006,cache_read:.02499},"nano-gpt/qwen/qwen3-coder-30b-a3b-instruct":{input:.1,output:.4,cache_read:.05},"nano-gpt/qwen/qwen3.8-27b:thinking":{input:.15,output:.7,cache_read:.04},"nano-gpt/qwen/qwen3.8-27b-obliterated":{input:.25,output:1.5,cache_read:.2},"nano-gpt/qwen/qwen3.8-omni-flash":{input:.15,output:.47,cache_read:.016},"nano-gpt/qwen/qwen3.8-27b-uncensored":{input:.15,output:1.2,cache_read:.125},"nano-gpt/qwen/qwen3.7-max:thinking":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"nano-gpt/qwen/qwen3-235b-a22b":{input:.3,output:.5,cache_read:.15},"nano-gpt/qwen/qwen3.5-122b-a10b":{input:.437,output:3.496,cache_read:.103788},"nano-gpt/qwen/qwen3.8-27b-uncensored:thinking":{input:.15,output:1.2,cache_read:.125},"nano-gpt/qwen/qwen3.6-35b-a3b":{input:.112,output:.8,cache_read:.056},"nano-gpt/qwen/qwen3-next-80b-a3b-instruct":{input:.15,output:.65,cache_read:.075},"nano-gpt/qwen/qwen3-max-2026-01-23":{input:1.2002,output:6.001,cache_read:.6001},"nano-gpt/qwen/qwen3.8-27b-fable":{input:.25,output:1.5,cache_read:.125},"nano-gpt/qwen/qwen3.8-27b-hemmingway":{input:.25,output:1.5,cache_read:.125},"nano-gpt/qwen/qwen3.6-flash":{input:.19,output:1.16,cache_read:.02,cache_write:.24},"nano-gpt/qwen/qwen3-coder-flash":{input:.3,output:1.5,cache_read:.15},"nano-gpt/qwen/qwen3.5-plus:thinking":{input:.4,output:2.4,cache_read:.04},"nano-gpt/qwen/qwen3-coder-plus":{input:1,output:5,cache_read:.5},"nano-gpt/qwen/qwen3.5-9b":{input:.05,output:.15,cache_read:.025},"nano-gpt/qwen/qwen3.5-122b-a10b:thinking":{input:.437,output:3.496,cache_read:.103788},"nano-gpt/qwen/qwen3.5-397b-a17b:thinking":{input:.6,output:3.6,cache_read:.3},"nano-gpt/qwen/qwen3.8-max-prime":{input:4,output:12,cache_read:.5},"nano-gpt/qwen/qwen3.8-flash":{input:.14,output:.42,cache_read:.016,cache_write:.2},"nano-gpt/qwen/qwen3.8-27b-cybersecurity":{input:.1,output:.6,cache_read:.05},"nano-gpt/qwen/qwen-long":{input:.1003,output:.408,cache_read:.05015},"nano-gpt/qwen/qwen3.5-35b-a3b":{input:.225,output:1.8,cache_read:.1125},"nano-gpt/qwen/qwen3.6-max-preview":{input:1.04,output:6.24,cache_read:.52},"nano-gpt/qwen/qwen3-30b-a3b":{input:.1,output:.3,cache_read:.05},"nano-gpt/qwen/qwen3.5-397b-a17b":{input:.6,output:3.6,cache_read:.3},"nano-gpt/qwen/qwen3-8b":{input:.47,output:.47,cache_read:.235},"nano-gpt/qwen/qwen3.5-27b:thinking":{input:.27,output:2.16,cache_read:.135},"nano-gpt/qwen/qwen3.8-27b-queen":{input:.25,output:1.5,cache_read:.125},"nano-gpt/qwen/qwen3-30b-a3b-instruct-2507":{input:.2,output:.5,cache_read:.1},"nano-gpt/qwen/qwen2.5-coder-32b-instruct":{input:.2006,output:.2006,cache_read:.1003},"nano-gpt/qwen/qwen3.7-plus:thinking":{input:.4,output:1.6,cache_read:.08,cache_write:.5},"nano-gpt/qwen/qwen-2.5-72b-instruct":{input:.357,output:.408,cache_read:.1785},"nano-gpt/qwen/qwen3.6-35b-a3b:thinking":{input:.112,output:.8,cache_read:.056},"nano-gpt/qwen/qwen3.6-27b":{input:.203,output:2.24,cache_read:.1015},"nano-gpt/qwen/qwen3.6-plus":{input:.325,output:1.95,cache_read:.0325,cache_write:.40625},"nano-gpt/qwen/qwen3.6-27b:thinking":{input:.203,output:2.24,cache_read:.1015},"nano-gpt/qwen/qwen3-14b":{input:.08,output:.24,cache_read:.04},"nano-gpt/qwen/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5},"nano-gpt/qwen/qwen3.5-flash:thinking":{input:.1,output:.4,cache_read:.05},"nano-gpt/qwen/qwen3.8-max-0902":{input:2,output:6,cache_read:.17,cache_write:2.5},"nano-gpt/failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5":{input:.7,output:.7,cache_read:.35},"nano-gpt/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25},"nano-gpt/openai/gpt-3.5-turbo":{input:.5,output:1.5},"nano-gpt/openai/gpt-terra-latest":{input:2,output:12,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-6-astra-pro":{input:10,output:50,cache_read:1,cache_write:12.5},"nano-gpt/openai/o3-pro-2025-06-10":{input:22,output:88,cache_read:11},"nano-gpt/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"nano-gpt/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"nano-gpt/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"nano-gpt/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"nano-gpt/openai/gpt-chat-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-5.6-sol-pro":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"nano-gpt/openai/o4-mini":{input:1.1,output:4.4,cache_read:.55},"nano-gpt/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"nano-gpt/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"nano-gpt/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"nano-gpt/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"nano-gpt/openai/o1":{input:15,output:60,cache_read:7.5},"nano-gpt/openai/gpt-latest":{input:10,output:50,cache_read:1,cache_write:12.5},"nano-gpt/openai/gpt-5-pro":{input:15,output:120,cache_read:1.5},"nano-gpt/openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"nano-gpt/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"nano-gpt/openai/gpt-luna-latest":{input:.1,output:.5,cache_read:.01,cache_write:.125},"nano-gpt/openai/gpt-5.6-luna-pro":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"nano-gpt/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"nano-gpt/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"nano-gpt/openai/gpt-oss-20b":{input:.2,output:.3},"nano-gpt/openai/gpt-oss-safeguard-20b":{input:.075,output:.3},"nano-gpt/openai/o3-mini-high":{input:1.1,output:4.4,cache_read:.55},"nano-gpt/openai/gpt-sol-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-6-sol-pro":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-astra-latest":{input:10,output:50,cache_read:1,cache_write:12.5},"nano-gpt/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"nano-gpt/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"nano-gpt/openai/gpt-5.1-codex-max":{input:2.5,output:20,cache_read:.25},"nano-gpt/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"nano-gpt/openai/gpt-5.5":{input:5,output:30,cache_read:.5},"nano-gpt/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"nano-gpt/openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"nano-gpt/openai/o3-mini-low":{input:1.1,output:4.4,cache_read:.55},"nano-gpt/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"nano-gpt/openai/gpt-5.6-terra-pro":{input:2,output:12,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125},"nano-gpt/openai/o4-mini-high":{input:1.1,output:4.4,cache_read:.55},"nano-gpt/openai/gpt-6-luna-pro":{input:.1,output:.5,cache_read:.01,cache_write:.125},"nano-gpt/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-4-turbo":{input:10,output:30},"nano-gpt/openai/gpt-oss-120b":{input:.35,output:.75},"nano-gpt/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"nano-gpt/openai/o3":{input:2,output:8,cache_read:1},"nano-gpt/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"nano-gpt/openai/gpt-5.6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/openai/gpt-5.1-2025-11-13":{input:1.25,output:10,cache_read:.125},"nano-gpt/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"nano-gpt/openai/o1-pro":{input:150,output:600,cache_read:75},"nano-gpt/microsoft/wizardlm-2-8x22b":{input:.493,output:.493,cache_read:.2465},"nano-gpt/NousResearch/hermes-3-llama-3.1-70b":{input:.408,output:.408,cache_read:.204},"nano-gpt/NousResearch/hermes-4-405b":{input:.3,output:1.2,cache_read:.15},"nano-gpt/NousResearch/hermes-4-405b:thinking":{input:.3,output:1.2,cache_read:.15},"nano-gpt/ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0":{input:.5,output:.5,cache_read:.25},"abliteration-ai/abliterated-model-large-v2":{input:5,output:5,cache_read:.5},"abliteration-ai/abliterated-model":{input:3,output:3,cache_read:.3},"abliteration-ai/abliterated-model-large":{input:5,output:5,cache_read:.5},"crof/gemma-4-31b-it":{input:.1,output:.3,cache_read:.02},"crof/qwen3.8-27b":{input:.2,output:1.5,cache_read:.03},"crof/kimi-k3-eco":{input:1,output:4,cache_read:.1},"crof/glm-5.3-flash":{input:.07,output:.22,cache_read:.01},"crof/deepseek-v4-flash-0731":{input:.08,output:.1,cache_read:.003},"crof/kimi-k3":{input:2,output:8,cache_read:.25},"crof/deepseek-v4-flash-vision-exp":{input:.08,output:.2,cache_read:.007},"crof/kimi-k2.6":{input:.5,output:1.99,cache_read:.05},"crof/greg-2-super":{input:1.5,output:5,cache_read:.25},"crof/deepseek-v4-pro-0813":{input:.35,output:.8,cache_read:.01},"crof/mimo-v2.5-pro":{input:.4,output:.8,cache_read:.003,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"crof/greg-rp":{input:.1,output:.3,cache_read:.02},"crof/qwen3.5-9b":{input:.04,output:.15,cache_read:.008},"crof/qwen3.5-397b-a17b":{input:.35,output:1.75,cache_read:.07},"crof/glm-5.2":{input:.3,output:1.05,cache_read:.05},"crof/glm-5.1":{input:.45,output:2.15,cache_read:.08,cache_write:0},"crof/deepseek-v4-pro":{input:.35,output:.8,cache_read:.003},"crof/qwen3.6-27b":{input:.2,output:1.5,cache_read:.04},"crof/greg-2-ultra":{input:3,output:10,cache_read:.5},"crof/deepseek-v3.2":{input:.18,output:.35,cache_read:.04},"crof/glm-5.3":{input:.4,output:1.4,cache_read:.06},"crof/kimi-k2.7-code":{input:.55,output:2.25,cache_read:.05},"crof/greg-1-mini":{input:.07,output:.15,cache_read:.01},"crof/deepseek-v4-flash":{input:.12,output:.21,cache_read:.003},"cloudferro-sherlock/meta-llama/Llama-3.3-70B-Instruct":{input:2.92,output:2.92},"cloudferro-sherlock/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2},"cloudferro-sherlock/openai/gpt-oss-120b":{input:2.92,output:2.92},"cloudferro-sherlock/speakleash/Bielik-11B-v2.6-Instruct":{input:.67,output:.67},"cloudferro-sherlock/speakleash/Bielik-11B-v3.0-Instruct":{input:.67,output:.67},"anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"anthropic/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"anthropic/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"anthropic/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"anthropic/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"anthropic/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"anthropic/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"tinfoil/gpt-oss-safeguard-120b":{input:.15,output:.6},"tinfoil/glm-5-3-flash":{input:.4,output:1.25,cache_read:.1},"tinfoil/kimi-k3":{input:4,output:20,cache_read:.8},"tinfoil/llama3-3-70b":{input:1.75,output:2.75},"tinfoil/gemma4-31b":{input:.4,output:1},"tinfoil/glm-5-3":{input:1.8,output:5.75,cache_read:.45},"tinfoil/deepseek-v4-1-flash":{input:.65,output:1.45,cache_read:.13},"tinfoil/nomic-embed-text":{input:.05,output:0},"tinfoil/gpt-oss-120b":{input:.15,output:.6},"cohere/command-r-08-2024":{input:.15,output:.6},"cohere/command-a-translate-08-2025":{input:2.5,output:10},"cohere/command-r7b-arabic-02-2025":{input:.0375,output:.15},"cohere/command-a-plus-05-2026":{input:2.5,output:10},"cohere/command-a-03-2025":{input:2.5,output:10},"cohere/command-r7b-12-2024":{input:.0375,output:.15},"cohere/command-r-plus-08-2024":{input:2.5,output:10},"cohere/command-a-vision-07-2025":{input:2.5,output:10},"cohere/command-a-reasoning-08-2025":{input:2.5,output:10},"deepseek/deepseek-v4-flash-vision-exp":{input:.15,output:.6,reasoning:.6,cache_read:.003},"deepseek/deepseek-flash":{input:.15,output:.6,reasoning:.6,cache_read:.003},"deepseek/deepseek-v4-pro":{input:.435,output:.87,reasoning:.87,cache_read:.003625},"deepseek/deepseek-v4-flash":{input:.15,output:.6,reasoning:.6,cache_read:.003},"baseten/thinkingmachines/inkling-small":{input:.5,output:1.2,cache_read:.1},"baseten/thinkingmachines/inkling":{input:1,output:4.05},"baseten/deepseek-ai/DeepSeek-V3.1":{input:.5,output:1.5},"baseten/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.13,output:.26,cache_read:.028},"baseten/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96},"baseten/deepseek-ai/DeepSeek-V4.1-Flash":{input:.3,output:1.2,cache_read:.03},"baseten/deepseek-ai/DeepSeek-V4-Pro":{input:1.74,output:3.48,cache_read:.145},"baseten/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2},"baseten/moonshotai/Kimi-K2.6":{input:.95,output:4,cache_read:.16},"baseten/moonshotai/Kimi-K3":{input:3,output:15},"baseten/moonshotai/Kimi-K2.7-Code":{input:.95,output:4,cache_read:.16},"baseten/moonshotai/Kimi-K2.5":{input:.6,output:3,cache_read:.12},"baseten/zai-org/GLM-5.1":{input:1.3,output:4.3,cache_read:.26},"baseten/zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:.3},"baseten/zai-org/GLM-4.7":{input:.6,output:2.2,cache_read:.12},"baseten/zai-org/GLM-5.2-Fast":{input:2.1,output:6.6,cache_read:.21},"baseten/zai-org/GLM-5.3-Fast":{input:2.1,output:6.6},"baseten/zai-org/GLM-5":{input:.95,output:3.15,cache_read:.2},"baseten/zai-org/GLM-5.3-Flash":{input:.15,output:.5},"baseten/zai-org/GLM-5.3":{input:1.4,output:4.4,cache_read:.14},"baseten/nvidia/Nemotron-120B-A12B":{input:.3,output:.75,cache_read:.06},"baseten/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B":{input:.6,output:2.4,cache_read:.12},"baseten/openai/gpt-oss-120b":{input:.1,output:.5},"nearai/anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"nearai/anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"nearai/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"nearai/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"nearai/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"nearai/black-forest-labs/FLUX.2-klein-4B":{input:1,output:1},"nearai/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"nearai/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"nearai/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"nearai/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,input_audio:.3},"nearai/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"nearai/Qwen/Qwen3-Reranker-0.6B":{input:.01,output:.01},"nearai/Qwen/Qwen3-VL-30B-A3B-Instruct":{input:.15,output:.55},"nearai/Qwen/Qwen3-Embedding-0.6B":{input:.01,output:.01},"nearai/Qwen/Qwen3.6-35B-A3B-FP8":{input:.17,output:1.1,cache_read:.056},"nearai/zai-org/GLM-5.1-FP8":{input:1.4,output:4.4},"nearai/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"nearai/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"nearai/openai/whisper-large-v3":{input:.01,output:.01},"nearai/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"nearai/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"nearai/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"nearai/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"nearai/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"nearai/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"nearai/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"nearai/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"nearai/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"nearai/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"nearai/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"nearai/openai/o3":{input:2,output:8,cache_read:.5},"nearai/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"wandb/JetBrains/Mellum2-12B-A2.5B-Instruct":{input:.05,output:.1,cache_read:.05},"wandb/meta-llama/Llama-3.1-70B-Instruct":{input:.8,output:.8,cache_read:.8},"wandb/meta-llama/Llama-3.1-8B-Instruct":{input:.22,output:.22,cache_read:.22},"wandb/meta-llama/Llama-3.3-70B-Instruct":{input:.71,output:.71,cache_read:.71},"wandb/google/gemma-4-31B-it":{input:.1,output:.34,cache_read:.1},"wandb/google/gemma-4-26B-A4B-it":{input:.1,output:.3,cache_read:.05},"wandb/Qwen/Qwen3.8-27B":{input:.4,output:3,cache_read:.15},"wandb/Qwen/Qwen3-30B-A3B-Instruct-2507":{input:.1,output:.3,cache_read:.1},"wandb/Qwen/Qwen3.6-35B-A3B":{input:.25,output:1.25,cache_read:.25},"wandb/Qwen/Qwen3.5-35B-A3B":{input:.25,output:1.25,cache_read:.25},"wandb/Qwen/Qwen3.6-27B":{input:.6,output:3.6,cache_read:.12},"wandb/ibm-granite/granite-4.2-8b":{input:.1,output:.15,cache_read:.05},"wandb/ibm-granite/granite-4.1-8b":{input:.05,output:.1,cache_read:.05},"wandb/deepseek-ai/DeepSeek-V3.1":{input:.55,output:1.65,cache_read:.55},"wandb/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.13,output:.28,cache_read:.07},"wandb/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.31,output:3.96,cache_read:.044},"wandb/deepseek-ai/DeepSeek-V4.1-Flash":{input:.2,output:.65,cache_read:.03},"wandb/deepseek-ai/DeepSeek-V4-Flash":{input:.14,output:.28,cache_read:.07},"wandb/deepseek-ai/DeepSeek-V4-Pro":{input:1.15,output:2.55,cache_read:.2},"wandb/MiniMaxAI/MiniMax-M3":{input:.23,output:.96,cache_read:.05},"wandb/moonshotai/Kimi-K2.6":{input:.65,output:3.41,cache_read:.15},"wandb/moonshotai/Kimi-K2.7-Code":{input:.71,output:3.5,cache_read:.15},"wandb/zai-org/GLM-5.2":{input:.76,output:2.42,cache_read:.14},"wandb/zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.05},"wandb/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B":{input:.07,output:.2,cache_read:.04},"wandb/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B":{input:.5,output:2.15,cache_read:.1},"wandb/openai/gpt-oss-20b":{input:.03,output:.13,cache_read:.03},"wandb/openai/gpt-oss-120b":{input:.03,output:.17,cache_read:.03},"wandb/OpenPipe/Qwen3-14B-Instruct":{input:.05,output:.22,cache_read:.05},"subconscious/subconscious/tim-qwen3.6-27b":{input:.3,output:3,cache_read:.15},"subconscious/subconscious/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"databricks/databricks-claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"databricks/databricks-gpt-5-6-terra":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"databricks/databricks-kimi-k2-7-code":{input:.95,output:4,cache_read:.19},"databricks/databricks-glm-5-2":{input:1.4,output:4.4,cache_read:.26},"databricks/databricks-gemini-3-1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"databricks/databricks-gpt-5-mini":{input:.25,output:2,cache_read:.025},"databricks/databricks-gemini-3-flash":{input:.5,output:3,cache_read:.05,input_audio:1},"databricks/databricks-claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"databricks/databricks-gpt-oss-20b":{input:.05,output:.2},"databricks/databricks-gpt-5-4-mini":{input:.75,output:4.5,cache_read:.075},"databricks/databricks-gemini-3-pro":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"databricks/databricks-gpt-5-2":{input:1.75,output:14,cache_read:.175},"databricks/databricks-claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"databricks/databricks-gemini-3-1-pro":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"databricks/databricks-claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"databricks/databricks-gpt-5-6-sol":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"databricks/databricks-claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"databricks/databricks-gpt-oss-120b":{input:.072,output:.28},"databricks/databricks-gemini-2-5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"databricks/databricks-gemini-2-5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"databricks/databricks-claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"databricks/databricks-gpt-5-4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"databricks/databricks-gpt-5-4-nano":{input:.2,output:1.25,cache_read:.02},"databricks/databricks-claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"databricks/databricks-gpt-5-6-luna":{input:1,output:6,cache_read:.1,tiers:[{input:2,output:9,cache_read:.2,tier:{type:"context",size:272e3}}],context_over_200k:{input:2,output:9,cache_read:.2}},"databricks/databricks-claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75},"databricks/databricks-gpt-5-1":{input:1.25,output:10,cache_read:.125},"databricks/databricks-gpt-5-nano":{input:.05,output:.4,cache_read:.005},"databricks/databricks-gpt-5":{input:1.25,output:10,cache_read:.125},"databricks/databricks-gpt-5-5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"umans-ai/umans-glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"umans-ai/umans-flash":{input:.15,output:1,cache_read:.05},"umans-ai/umans-deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"umans-ai/umans-deepseek-v4-flash-0731":{input:.14,output:.28,cache_read:.028},"umans-ai/umans-kimi-k3":{input:3,output:15,cache_read:.3},"umans-ai/umans-coder":{input:.15,output:.5,cache_read:.03},"siliconflow/ByteDance-Seed/Seed-OSS-36B-Instruct":{input:.21,output:.57},"siliconflow/nex-agi/Nex-N2-Pro":{input:.5,output:2.5,cache_read:.25},"siliconflow/tencent/Hunyuan-A13B-Instruct":{input:.14,output:.57},"siliconflow/tencent/Hy3":{input:.132,output:.528,cache_read:.033},"siliconflow/meituan-longcat/LongCat-2.0":{input:.75,output:2.95,cache_read:.015},"siliconflow/google/gemma-4-12B-it":{input:.1,output:.3},"siliconflow/google/gemma-4-31B-it":{input:.13,output:.4},"siliconflow/google/gemma-4-26B-A4B-it":{input:.12,output:.4},"siliconflow/Qwen/Qwen3-VL-30B-A3B-Instruct":{input:.29,output:1},"siliconflow/Qwen/Qwen3-VL-8B-Instruct":{input:.18,output:.68},"siliconflow/Qwen/Qwen3-VL-32B-Thinking":{input:.2,output:1.5},"siliconflow/Qwen/Qwen3-30B-A3B-Instruct-2507":{input:.09,output:.3},"siliconflow/Qwen/Qwen3.5-27B":{input:.25,output:2},"siliconflow/Qwen/Qwen3.6-35B-A3B":{input:.2,output:1.6},"siliconflow/Qwen/Qwen3-14B":{input:.07,output:.28},"siliconflow/Qwen/Qwen3-VL-30B-A3B-Thinking":{input:.29,output:1},"siliconflow/Qwen/Qwen3-8B":{input:.06,output:.06},"siliconflow/Qwen/Qwen2.5-72B-Instruct":{input:.59,output:.59},"siliconflow/Qwen/Qwen3-32B":{input:.14,output:.57},"siliconflow/Qwen/Qwen3-Coder-30B-A3B-Instruct":{input:.07,output:.28},"siliconflow/Qwen/Qwen2.5-7B-Instruct":{input:.05,output:.05},"siliconflow/Qwen/Qwen3.5-35B-A3B":{input:.24,output:1.8},"siliconflow/Qwen/Qwen3.5-122B-A10B":{input:.26,output:2.08},"siliconflow/Qwen/Qwen3.5-9B":{input:.1,output:.15},"siliconflow/Qwen/Qwen3.5-397B-A17B":{input:.39,output:2.34},"siliconflow/Qwen/Qwen3.8-2.4T-A95B":{input:2,output:6,cache_read:.25},"siliconflow/Qwen/Qwen3-VL-32B-Instruct":{input:.2,output:.6},"siliconflow/Qwen/Qwen3-Coder-480B-A35B-Instruct":{input:.25,output:1},"siliconflow/Qwen/Qwen3.6-27B":{input:.3,output:3.2},"siliconflow/deepseek-ai/DeepSeek-V3.1":{input:.27,output:1},"siliconflow/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.22,output:.66,cache_read:.014},"siliconflow/deepseek-ai/DeepSeek-R1":{input:.5,output:2.18},"siliconflow/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96,cache_read:.044},"siliconflow/deepseek-ai/DeepSeek-V4-Flash":{input:.13,output:.28,cache_read:.028},"siliconflow/deepseek-ai/DeepSeek-V4-Pro":{input:1.50162,output:3.135,cache_read:.135},"siliconflow/deepseek-ai/DeepSeek-V3.2":{input:.27,output:.42,cache_read:.135},"siliconflow/deepseek-ai/DeepSeek-V3":{input:.25,output:1},"siliconflow/deepseek-ai/DeepSeek-V3.1-Terminus":{input:.27,output:1},"siliconflow/deepseek-ai/DeepSeek-V3.2-Exp":{input:.27,output:.41},"siliconflow/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{input:.44,output:1.32,cache_read:.028},"siliconflow/stepfun-ai/Step-3.5-Flash":{input:.1,output:.3},"siliconflow/MiniMaxAI/MiniMax-M3":{input:.3,output:1.2,cache_read:.06},"siliconflow/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.03},"siliconflow/inclusionAI/Ling-flash-2.0":{input:.14,output:.57},"siliconflow/moonshotai/Kimi-K2.6":{input:.77,output:3.4,cache_read:.14},"siliconflow/moonshotai/Kimi-K3":{input:2.7,output:13.5,cache_read:.27},"siliconflow/moonshotai/Kimi-K2.7-Code":{input:.85916,output:3.8,cache_read:.17993},"siliconflow/moonshotai/Kimi-K2.5":{input:.45,output:2.25,cache_read:.07},"siliconflow/zai-org/GLM-5.1":{input:1.19,output:3.74,cache_read:.6,cache_write:0},"siliconflow/zai-org/GLM-5.2":{input:1.302,output:4.092,cache_read:.26,cache_write:0},"siliconflow/zai-org/GLM-4.5-Air":{input:.14,output:.86},"siliconflow/zai-org/GLM-5":{input:.95,output:2.55,cache_read:.2},"siliconflow/zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.03,cache_write:0},"siliconflow/zai-org/GLM-5V-Turbo":{input:1.2,output:4,cache_read:.24,cache_write:0},"siliconflow/zai-org/GLM-5.3":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"siliconflow/openai/gpt-oss-20b":{input:.04,output:.18},"siliconflow/openai/gpt-oss-120b":{input:.05,output:.45},"alibaba-coding-plan/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"alibaba-coding-plan/qwen3.6-flash":{input:.1875,output:1.125,cache_write:.234375},"lilac/google/gemma-4-31b-it":{input:.11,output:.35},"lilac/minimaxai/minimax-m3":{input:.28,output:1.1,cache_read:.05},"lilac/moonshotai/kimi-k2.6":{input:.7,output:3.5,cache_read:.2},"lilac/zai-org/glm-5.2":{input:.9,output:3,cache_read:.27},"moonshotai-cn/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"moonshotai-cn/kimi-k2.6":{input:.95,output:4,cache_read:.16},"moonshotai-cn/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"moonshotai-cn/kimi-k3":{input:3,output:15,cache_read:.3},"bothub/glm-5.3-flash":{input:.12,output:.44},"bothub/deepseek-v4-flash-0731":{input:.1,output:.28},"bothub/deepseek-v4-pro-0813":{input:1.61,output:4.84},"bothub/gpt-5.6-luna":{input:.06,output:.37},"bothub/muse-spark-1.3-contributor":{input:.1,output:.2},"bothub/glm-5.3":{input:1.72,output:5.41},"privatemode-ai/glm-flash-latest":{input:.8897,output:4.4718,cache_read:.0924},"privatemode-ai/glm-5.3-flash":{input:.8897,output:4.4718,cache_read:.0924},"privatemode-ai/whisper-large-v3":{input:.01618,output:0},"privatemode-ai/kimi-k2.6":{input:1.791,output:8.9436,cache_read:.1733},"privatemode-ai/deepseek-ocr-2":{input:.8897,output:1.4675,cache_read:.0924},"privatemode-ai/qwen3-embedding-4b":{input:.1502,output:0},"privatemode-ai/voxtral-mini-3b":{input:.00462,output:0},"privatemode-ai/kimi-latest":{input:1.791,output:8.9436,cache_read:.1733},"privatemode-ai/gpt-oss-120b":{input:.4969,output:1.9644,cache_read:.0462},"privatemode-ai/glm-5.3":{input:1.791,output:8.9436,cache_read:.1733},"privatemode-ai/glm-latest":{input:1.791,output:8.9436,cache_read:.1733},"llmgateway-providers/consensusprotocol/gemma-4-31b-it":{input:.1,output:.25,cache_read:.01},"llmgateway-providers/consensusprotocol/Qwen3.8-27B":{input:.08,output:.35,cache_read:.05},"llmgateway-providers/consensusprotocol/glm-5.3-flash":{input:.1,output:.25,cache_read:.02},"llmgateway-providers/consensusprotocol/deepseek-v4.1-flash":{input:.2,output:.6,cache_read:.005},"llmgateway-providers/consensusprotocol/gpt-oss-20b":{input:.04,output:.19,cache_read:.01},"llmgateway-providers/consensusprotocol/deepseek-v4-flash":{input:.05,output:.1,cache_read:.01},"llmgateway-providers/deepinfra/gemma-4-31b-it":{input:.13,output:.38},"llmgateway-providers/deepinfra/qwen3-vl-235b-a22b-instruct":{input:.2,output:.88,cache_read:.11},"llmgateway-providers/deepinfra/mimo-v2.5":{input:.4,output:2,cache_read:.08,tiers:[{input:.8,output:4,cache_read:.16,tier:{type:"context",size:256e3}}],context_over_200k:{input:.8,output:4,cache_read:.16}},"llmgateway-providers/deepinfra/qwen3.8-27b":{input:.2,output:2.5,cache_read:.05},"llmgateway-providers/deepinfra/nemotron-3.5-lightning":{input:.08,output:.2},"llmgateway-providers/deepinfra/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.2},"llmgateway-providers/deepinfra/muse-glimmer-30b":{input:.3,output:1.2,cache_read:.04},"llmgateway-providers/deepinfra/deepseek-v4.1-flash":{input:.2,output:.6,cache_read:.006},"llmgateway-providers/deepinfra/ling-3.0-flash":{input:.06,output:.18,cache_read:.012},"llmgateway-providers/deepinfra/qwen3-vl-30b-a3b-instruct":{input:.15,output:.6},"llmgateway-providers/deepinfra/gemma-4-26b-a4b-it":{input:.07,output:.34},"llmgateway-providers/deepinfra/nemotron-3-ultra-550b":{input:.5,output:2.2,cache_read:.1},"llmgateway-providers/deepinfra/inkling-small":{input:.45,output:1.2,cache_read:.1},"llmgateway-providers/deepinfra/mimo-v2.5-pro":{input:1,output:3,cache_read:.2,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"llmgateway-providers/deepinfra/qwen3.5-9b":{input:.1,output:.15},"llmgateway-providers/deepinfra/inkling":{input:.95,output:4.05,cache_read:.16},"llmgateway-providers/deepinfra/hy3":{input:.14,output:.58,cache_read:.035},"llmgateway-providers/deepinfra/glm-5.1":{input:1.05,output:3.5,cache_read:.205},"llmgateway-providers/deepinfra/deepseek-v4-pro":{input:1.3,output:2.6,cache_read:.1},"llmgateway-providers/deepinfra/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"llmgateway-providers/deepinfra/deepseek-v3.2":{input:.26,output:.38,cache_read:.13},"llmgateway-providers/deepinfra/glm-5.3":{input:1.2,output:4,cache_read:.2},"llmgateway-providers/deepinfra/deepseek-v4-flash":{input:.08,output:.18,cache_read:.016},"llmgateway-providers/cerebras/gemma-4-31b-it":{input:.99,output:1.49},"llmgateway-providers/cerebras/qwen3-235b-a22b-instruct-2507":{input:.6,output:1.2},"llmgateway-providers/cerebras/llama-3.3-70b-instruct":{input:.85,output:1.2},"llmgateway-providers/cerebras/glm-4.7":{input:2.25,output:2.75},"llmgateway-providers/cerebras/gpt-oss-120b":{input:.35,output:.75},"llmgateway-providers/groq/gpt-oss-20b":{input:.1,output:.5},"llmgateway-providers/groq/gpt-oss-120b":{input:.15,output:.75},"llmgateway-providers/scx-ai-gp/glm-5.3-flash":{input:.088,output:.25,cache_read:.025},"llmgateway-providers/scx-ai-gp/glm-5.2-fast":{input:2.2,output:6.5,cache_read:.45},"llmgateway-providers/scx-ai-gp/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"llmgateway-providers/scx-ai-gp/kimi-k3":{input:3.5,output:18,cache_read:.35},"llmgateway-providers/scx-ai-gp/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.01},"llmgateway-providers/scx-ai-gp/glm-5.2":{input:.88,output:2.55,cache_read:.16},"llmgateway-providers/scx-ai-gp/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/scx-ai-gp/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"llmgateway-providers/zai/glm-4.6v":{input:.3,output:.9,cache_read:.05},"llmgateway-providers/zai/glm-4.5":{input:.6,output:2.2,cache_read:.11},"llmgateway-providers/zai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"llmgateway-providers/zai/glm-4.6":{input:.6,output:2.2,cache_read:.11},"llmgateway-providers/zai/glm-4.5-x":{input:2.2,output:8.9,cache_read:.45},"llmgateway-providers/zai/glm-5":{input:1,output:3.2,cache_read:.2},"llmgateway-providers/zai/glm-4.5-airx":{input:1.1,output:4.5,cache_read:.22},"llmgateway-providers/zai/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"llmgateway-providers/zai/glm-4-32b-0414-128k":{input:.1,output:.1},"llmgateway-providers/zai/glm-4.6v-flashx":{input:.04,output:.4,cache_read:.004},"llmgateway-providers/zai/glm-4.7":{input:.6,output:2.2,cache_read:.11},"llmgateway-providers/zai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/zai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/zai/glm-4.7-flashx":{input:.07,output:.4,cache_read:.01},"llmgateway-providers/zai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03},"llmgateway-providers/zai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/aws-bedrock/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"llmgateway-providers/aws-bedrock/llama-4-maverick-17b-instruct":{input:.24,output:.97},"llmgateway-providers/aws-bedrock/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway-providers/aws-bedrock/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"llmgateway-providers/aws-bedrock/llama-4-scout-17b-instruct":{input:.17,output:.66},"llmgateway-providers/aws-bedrock/claude-opus-4-1-20250805":{input:15,output:75,cache_read:1.5,cache_write:18.75},"llmgateway-providers/aws-bedrock/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/aws-bedrock/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/aws-bedrock/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway-providers/aws-bedrock/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/aws-bedrock/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway-providers/aws-bedrock/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway-providers/aws-bedrock/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/aws-bedrock/grok-4-3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/aws-bedrock/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"llmgateway-providers/aws-bedrock/grok-4-6":{input:2,output:6,cache_read:.5},"llmgateway-providers/aws-bedrock/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway-providers/aws-bedrock/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/aws-bedrock/llama-3.1-70b-instruct":{input:.72,output:.72},"llmgateway-providers/google-ai-studio/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway-providers/google-ai-studio/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.08333},"llmgateway-providers/google-ai-studio/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"llmgateway-providers/google-ai-studio/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.08333},"llmgateway-providers/google-ai-studio/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"llmgateway-providers/google-ai-studio/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"llmgateway-providers/google-ai-studio/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway-providers/google-ai-studio/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"llmgateway-providers/google-ai-studio/gemini-pro-latest":{input:2,output:12,cache_read:.2},"llmgateway-providers/google-ai-studio/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway-providers/google-ai-studio/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01},"llmgateway-providers/google-ai-studio/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:.08333},"llmgateway-providers/anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"llmgateway-providers/anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway-providers/anthropic/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"llmgateway-providers/anthropic/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"llmgateway-providers/anthropic/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway-providers/anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/anthropic/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway-providers/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway-providers/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/anthropic/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"llmgateway-providers/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway-providers/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/deepseek/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"llmgateway-providers/deepseek/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"llmgateway-providers/runpod/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/runware/gemma-4-31b-it":{input:.102,output:.297,cache_read:.012},"llmgateway-providers/runware/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"llmgateway-providers/runware/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/runware/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.01},"llmgateway-providers/runware/kimi-k2.6":{input:.6,output:3.05,cache_read:.13},"llmgateway-providers/runware/glm-5.2":{input:.8,output:2.55,cache_read:.16},"llmgateway-providers/runware/deepseek-v4-pro":{input:.961,output:1.922,cache_read:.079},"llmgateway-providers/runware/gpt-oss-120b":{input:.032,output:.14,cache_read:.032},"llmgateway-providers/runware/glm-5.3":{input:1.2,output:4,cache_read:.2},"llmgateway-providers/runware/deepseek-v4-flash":{input:.076,output:.153,cache_read:.014},"llmgateway-providers/tencent/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"llmgateway-providers/tencent/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/tencent/glm-5":{input:1,output:3.2,cache_read:.2},"llmgateway-providers/tencent/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"llmgateway-providers/tencent/kimi-k2.6":{input:.858,output:3.566,cache_read:.145},"llmgateway-providers/tencent/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"llmgateway-providers/tencent/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"llmgateway-providers/tencent/minimax-m3":{input:.3,output:1.2,cache_read:.06},"llmgateway-providers/tencent/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/tencent/hy3":{input:.132,output:.528,cache_read:.033},"llmgateway-providers/tencent/hy-mt2-plus":{input:.074,output:.295},"llmgateway-providers/tencent/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/tencent/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"llmgateway-providers/tencent/deepseek-v4-pro":{input:.435,output:.87,cache_read:.00363},"llmgateway-providers/tencent/hy4-preview":{input:.834,output:2.501,cache_read:.042},"llmgateway-providers/tencent/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"llmgateway-providers/tencent/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"llmgateway-providers/meta-contributor/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"llmgateway-providers/meta-contributor/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"llmgateway-providers/novita/glm-4.6v":{input:.3,output:.9,cache_read:.055},"llmgateway-providers/novita/gemma-4-31b-it":{input:.14,output:.4},"llmgateway-providers/novita/qwen3-vl-235b-a22b-instruct":{input:.3,output:1.5},"llmgateway-providers/novita/qwen3.7-max":{input:1.25,output:3.75,cache_read:.25},"llmgateway-providers/novita/mimo-v2.5":{input:.168,output:.336,cache_read:.0034,tiers:[{input:.8,output:4,cache_read:.16,tier:{type:"context",size:256e3}}],context_over_200k:{input:.8,output:4,cache_read:.16}},"llmgateway-providers/novita/qwen3.8-27b":{input:.42,output:3,cache_read:.085},"llmgateway-providers/novita/qwen3-vl-235b-a22b-thinking":{input:.98,output:3.95},"llmgateway-providers/novita/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25},"llmgateway-providers/novita/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"llmgateway-providers/novita/glm-4.6":{input:.55,output:2.2,cache_read:.11},"llmgateway-providers/novita/qwen3-235b-a22b-instruct-2507":{input:.09,output:.58},"llmgateway-providers/novita/qwen3.8-max":{input:2,output:6,cache_read:.25},"llmgateway-providers/novita/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/novita/llama-4-maverick-17b-instruct":{input:.27,output:.85},"llmgateway-providers/novita/glm-5":{input:1,output:3.2,cache_read:.2},"llmgateway-providers/novita/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"llmgateway-providers/novita/minimax-m2.5":{input:.3,output:1.2,cache_read:.03},"llmgateway-providers/novita/kimi-k2.6":{input:.8,output:3.4,cache_read:.16},"llmgateway-providers/novita/qwen3-max":{input:.845,output:3.38},"llmgateway-providers/novita/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"llmgateway-providers/novita/llama-4-scout-17b-instruct":{input:.18,output:.59},"llmgateway-providers/novita/qwen3-235b-a22b-fp8":{input:.2,output:.8},"llmgateway-providers/novita/qwen3-coder-480b-a35b-instruct":{input:.38,output:1.55},"llmgateway-providers/novita/qwen3-coder-30b-a3b-instruct":{input:.07,output:.27},"llmgateway-providers/novita/ling-3.0-flash":{input:.06,output:.18,cache_read:.012},"llmgateway-providers/novita/qwen3-vl-30b-a3b-instruct":{input:.2,output:.7},"llmgateway-providers/novita/gemma-4-26b-a4b-it":{input:.13,output:.4},"llmgateway-providers/novita/llama-3-70b-instruct":{input:.51,output:.74},"llmgateway-providers/novita/qwen3-235b-a22b-thinking-2507":{input:.3,output:3},"llmgateway-providers/novita/llama-3.3-70b-instruct":{input:.135,output:.4},"llmgateway-providers/novita/qwen3.6-35b-a3b":{input:.248,output:1.485},"llmgateway-providers/novita/qwen3-next-80b-a3b-instruct":{input:.15,output:1.5},"llmgateway-providers/novita/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"llmgateway-providers/novita/mimo-v2.5-pro":{input:.522,output:1.044,cache_read:.0043,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"llmgateway-providers/novita/glm-4.7":{input:.6,output:2.2,cache_read:.11},"llmgateway-providers/novita/qwen3.8-flash":{input:.15,output:.47,cache_read:.016},"llmgateway-providers/novita/qwen35-397b-a17b":{input:.6,output:3.6},"llmgateway-providers/novita/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/novita/ernie-4.5-vl-424b-a47b":{input:.42,output:1.25},"llmgateway-providers/novita/hy3":{input:.14,output:.58,cache_read:.035},"llmgateway-providers/novita/kimi-k2":{input:.57,output:2.3},"llmgateway-providers/novita/glm-5.1":{input:1.38,output:4.4,cache_read:.26},"llmgateway-providers/novita/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"llmgateway-providers/novita/llama-3.2-3b-instruct":{input:.03,output:.05},"llmgateway-providers/novita/deepseek-v3.2":{input:.269,output:.4,cache_read:.1345},"llmgateway-providers/novita/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/novita/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"llmgateway-providers/novita/minimax-m2.1":{input:.3,output:1.2,cache_read:.03},"llmgateway-providers/novita/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"llmgateway-providers/embercloud/glm-4.5":{input:.6,output:2.2,cache_read:.11},"llmgateway-providers/embercloud/qwen3-coder-next":{input:.108,output:.675,cache_read:.06},"llmgateway-providers/embercloud/glm-5":{input:.72,output:2.3,cache_read:.144},"llmgateway-providers/embercloud/kimi-k2.5":{input:.405,output:1.98,cache_read:.225},"llmgateway-providers/embercloud/glm-4.7-flash":{input:.06,output:.4,cache_read:.01},"llmgateway-providers/embercloud/glm-4.7":{input:.38,output:1.98,cache_read:.19},"llmgateway-providers/embercloud/glm-5.2":{input:1.26,output:3.96,cache_read:.234},"llmgateway-providers/embercloud/glm-5.1":{input:.931,output:2.93,cache_read:.173},"llmgateway-providers/embercloud/glm-4.5-air":{input:.13,output:.85,cache_read:.025},"llmgateway-providers/perplexity/sonar-pro":{input:3,output:15},"llmgateway-providers/perplexity/sonar":{input:1,output:1},"llmgateway-providers/perplexity/sonar-reasoning-pro":{input:2,output:8},"llmgateway-providers/azure-ai-foundry/grok-4-1-fast-reasoning":{input:.2,output:.5},"llmgateway-providers/azure-ai-foundry/grok-4-1-fast-non-reasoning":{input:.2,output:.5},"llmgateway-providers/azure-ai-foundry/grok-4-3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/meta/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"llmgateway-providers/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"llmgateway-providers/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"llmgateway-providers/azure/gpt-5.4":{input:2.5,output:15,cache_read:.25},"llmgateway-providers/azure/gpt-5.4-pro":{input:30,output:180},"llmgateway-providers/azure/gpt-3.5-turbo":{input:.5,output:1.5},"llmgateway-providers/azure/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"llmgateway-providers/azure/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"llmgateway-providers/azure/gpt-5.1-codex":{input:1.25,output:10},"llmgateway-providers/azure/gpt-4o":{input:2.5,output:10,cache_read:1.25},"llmgateway-providers/azure/gpt-5-mini":{input:.25,output:2,cache_read:.025},"llmgateway-providers/azure/gpt-5.2-pro":{input:21,output:168},"llmgateway-providers/azure/o4-mini":{input:1.1,output:4.4,cache_read:.275},"llmgateway-providers/azure/o3-mini":{input:1.1,output:4.4,cache_read:.55},"llmgateway-providers/azure/gpt-4":{input:30,output:60},"llmgateway-providers/azure/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"llmgateway-providers/azure/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"llmgateway-providers/azure/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"llmgateway-providers/azure/o1":{input:15,output:60,cache_read:7.5},"llmgateway-providers/azure/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway-providers/azure/gpt-5.1":{input:1.25,output:10,cache_read:.125},"llmgateway-providers/azure/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"llmgateway-providers/azure/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"llmgateway-providers/azure/gpt-5.2":{input:1.75,output:14,cache_read:.175},"llmgateway-providers/azure/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"llmgateway-providers/azure/gpt-4.1":{input:2,output:8,cache_read:.5},"llmgateway-providers/azure/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"llmgateway-providers/azure/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125},"llmgateway-providers/azure/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"llmgateway-providers/azure/gpt-4-turbo":{input:10,output:30},"llmgateway-providers/azure/gpt-oss-120b":{input:.15,output:.6},"llmgateway-providers/azure/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"llmgateway-providers/azure/o3":{input:2,output:8,cache_read:.5},"llmgateway-providers/azure/gpt-5":{input:1.25,output:10,cache_read:.125},"llmgateway-providers/azure/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5},"llmgateway-providers/azure/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway-providers/alibaba/qwen-flash":{input:.05,output:.4,cache_read:.01,cache_write:.0625},"llmgateway-providers/alibaba/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"llmgateway-providers/alibaba/qwen-coder-plus":{input:.502,output:1.004},"llmgateway-providers/alibaba/qwen3-vl-plus":{input:.2,output:1.6,cache_read:.04,cache_write:.25},"llmgateway-providers/alibaba/qwen-max":{input:1.6,output:6.4},"llmgateway-providers/alibaba/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"llmgateway-providers/alibaba/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/alibaba/glm-5":{input:.573,output:2.58},"llmgateway-providers/alibaba/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.03},"llmgateway-providers/alibaba/qwen-plus":{input:.4,output:1.2,cache_read:.08,cache_write:.5},"llmgateway-providers/alibaba/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.0375},"llmgateway-providers/alibaba/qwen3-max":{input:1.2,output:6,cache_read:.24,cache_write:1.5},"llmgateway-providers/alibaba/qwen3-vl-flash":{input:.05,output:.4,cache_read:.01},"llmgateway-providers/alibaba/kimi-k2.5":{input:.574,output:3.011},"llmgateway-providers/alibaba/qwen3.6-35b-a3b":{input:.375,output:2.25},"llmgateway-providers/alibaba/qwen3.6-flash":{input:.25,output:1.5,cache_read:.05,cache_write:.3125},"llmgateway-providers/alibaba/qwen3-coder-flash":{input:.3,output:1.5,cache_read:.06,cache_write:.375},"llmgateway-providers/alibaba/qwen3-coder-plus":{input:1,output:5,cache_read:.2,cache_write:1.25},"llmgateway-providers/alibaba/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"llmgateway-providers/alibaba/qwen35-397b-a17b":{input:.6,output:3.6},"llmgateway-providers/alibaba/qwen3.6-max-preview":{input:1.3,output:7.8,cache_read:.13},"llmgateway-providers/alibaba/glm-5.2":{input:1.4,output:4.4,cache_read:.28},"llmgateway-providers/alibaba/qwen-omni-turbo":{input:.2,output:.8},"llmgateway-providers/alibaba/deepseek-v4-pro":{input:2.4,output:4.8,cache_read:.2},"llmgateway-providers/alibaba/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"llmgateway-providers/alibaba/qwen-plus-latest":{input:.4,output:1.2,cache_read:.08,cache_write:.5},"llmgateway-providers/alibaba/glm-5.3":{input:1.4,output:4.4,cache_read:.28},"llmgateway-providers/alibaba/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5},"llmgateway-providers/alibaba/deepseek-v4-flash":{input:.2,output:.4,cache_read:.04},"llmgateway-providers/baidu/glm-5":{input:1,output:3.2,cache_read:.2},"llmgateway-providers/baidu/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"llmgateway-providers/baidu/kimi-k2.6":{input:.95,output:4,cache_read:.16},"llmgateway-providers/baidu/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/baidu/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/baidu/deepseek-v4-pro":{input:1.32,output:3.96,cache_read:.042},"llmgateway-providers/baidu/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/baidu/deepseek-v4-flash":{input:.44,output:1.32,cache_read:.014},"llmgateway-providers/gonka24/glm-5.3-flash":{input:.15,output:.3,cache_read:.035},"llmgateway-providers/gonka24/minimax-m2.7":{input:.08,output:.32,cache_read:.017},"llmgateway-providers/gonka24/deepseek-v4-flash":{input:.065,output:.116,cache_read:.012},"llmgateway-providers/bytedance/seed-1-6-flash-250715":{input:.07,output:.3,cache_read:.015},"llmgateway-providers/bytedance/seed-1-6-250915":{input:.25,output:2,cache_read:.05},"llmgateway-providers/bytedance/seed-1-8-251228":{input:.25,output:2,cache_read:.05},"llmgateway-providers/bytedance/glm-4.7":{input:.6,output:2.2,cache_read:.11},"llmgateway-providers/bytedance/seed-1-6-250615":{input:.25,output:2,cache_read:.05},"llmgateway-providers/bytedance/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/bytedance/deepseek-v4-pro":{input:1.32,output:3.96,cache_read:.044},"llmgateway-providers/bytedance/deepseek-v3.2":{input:.28,output:.42,cache_read:.056},"llmgateway-providers/bytedance/gpt-oss-120b":{input:.1,output:.5,cache_read:.02},"llmgateway-providers/bytedance/deepseek-v4-flash":{input:.44,output:1.32,cache_read:.014},"llmgateway-providers/xai/grok-4-5":{input:2,output:6,cache_read:.3},"llmgateway-providers/xai/grok-build-0-1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4}},"llmgateway-providers/xai/grok-4":{input:3,output:15,cache_read:.75},"llmgateway-providers/xai/grok-4-20-beta-0309-non-reasoning":{input:2,output:6,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/xai/grok-4-3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/xai/grok-4-20-beta-0309-reasoning":{input:2,output:6,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/xai/grok-4-6":{input:2,output:6,cache_read:.5},"llmgateway-providers/xai/grok-4-7":{input:2,output:6,cache_read:.5},"llmgateway-providers/ranoai/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"llmgateway-providers/canopywave/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/canopywave/kimi-k2.6":{input:.95,output:4,cache_read:.16},"llmgateway-providers/canopywave/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/canopywave/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.01},"llmgateway-providers/canopywave/deepseek-v4-flash":{input:.14,output:.28,cache_read:.03},"llmgateway-providers/fireworks/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/fireworks/deepseek-v4.1-flash":{input:.22,output:.66,cache_read:.007},"llmgateway-providers/fireworks/kimi-k3-fast":{input:4.5,output:22.5,cache_read:.45},"llmgateway-providers/fireworks/deepseek-v4-pro":{input:1.32,output:3.96,cache_read:.044},"llmgateway-providers/fireworks/deepseek-v4-flash":{input:.22,output:.66,cache_read:.007},"llmgateway-providers/sakana/fugu-max":{input:2,output:6,cache_read:.25},"llmgateway-providers/sakana/fugu-ultra-v2.0":{input:5,output:30,cache_read:.5},"llmgateway-providers/sakana/fugu-ultra":{input:5,output:30,cache_read:.5},"llmgateway-providers/scx-ai/gemma-4-31b-it":{input:.3,output:.91},"llmgateway-providers/scx-ai/llama-4-maverick-17b-instruct":{input:.53,output:1.62},"llmgateway-providers/scx-ai/qwen3-32b":{input:.36,output:.87},"llmgateway-providers/scx-ai/minimax-m2.7":{input:.48,output:1.79,cache_read:.05},"llmgateway-providers/scx-ai/gpt-oss-120b":{input:.17,output:.55},"llmgateway-providers/together-ai/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25},"llmgateway-providers/together-ai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"llmgateway-providers/together-ai/muse-glimmer-30b":{input:.35,output:1.5,cache_read:.04},"llmgateway-providers/together-ai/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/together-ai/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"llmgateway-providers/together-ai/inkling":{input:1,output:4.05,cache_read:.17},"llmgateway-providers/together-ai/glm-4.7":{input:.45,output:2},"llmgateway-providers/together-ai/minimax-m3":{input:.3,output:1.2,cache_read:.06},"llmgateway-providers/together-ai/deepseek-v4-pro":{input:1.32,output:3.96,cache_read:.13},"llmgateway-providers/together-ai/gpt-oss-120b":{input:.15,output:.6},"llmgateway-providers/together-ai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"llmgateway-providers/together-ai/deepseek-v4-flash":{input:.14,output:.28,cache_read:.03},"llmgateway-providers/xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"llmgateway-providers/xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.0028,tiers:[{input:.8,output:4,cache_read:.16,tier:{type:"context",size:256e3}}],context_over_200k:{input:.8,output:4,cache_read:.16}},"llmgateway-providers/xiaomi/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"llmgateway-providers/xiaomi/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"llmgateway-providers/quartz/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"llmgateway-providers/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03},"llmgateway-providers/minimax/minimax-m2.1-lightning":{input:.12,output:.48},"llmgateway-providers/minimax/minimax-text-01":{input:.2,output:1.1},"llmgateway-providers/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"llmgateway-providers/minimax/minimax-m3":{input:.6,output:2.4,cache_read:.12},"llmgateway-providers/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06},"llmgateway-providers/minimax/minimax-m2.5-highspeed":{input:.6,output:2.4,cache_read:.03},"llmgateway-providers/minimax/minimax-m2.1":{input:.27,output:1.1},"llmgateway-providers/minimax/minimax-m2":{input:.2,output:1,cache_read:.03},"llmgateway-providers/inference.net/llama-3.2-11b-instruct":{input:.07,output:.33},"llmgateway-providers/azure-anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/azure-anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway-providers/azure-anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/azure-anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway-providers/azure-anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/azure-anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway-providers/mistral/mistral-large-latest":{input:4,output:12},"llmgateway-providers/mistral/ministral-8b-2512":{input:.15,output:.15},"llmgateway-providers/mistral/devstral-2512":{input:.4,output:2},"llmgateway-providers/mistral/mistral-large-2512":{input:.5,output:1.5},"llmgateway-providers/mistral/ministral-14b-2512":{input:.2,output:.2},"llmgateway-providers/mistral/mistral-small-2506":{input:.1,output:.3},"llmgateway-providers/mistral/ministral-3b-2512":{input:.1,output:.1},"llmgateway-providers/mistral/codestral-2508":{input:.3,output:.9},"llmgateway-providers/vertex-anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1},"llmgateway-providers/vertex-anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3},"llmgateway-providers/vertex-anthropic/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5},"llmgateway-providers/vertex-anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway-providers/vertex-anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5},"llmgateway-providers/vertex-anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3},"llmgateway-providers/vertex-anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5},"llmgateway-providers/vertex-openai/qwen3-235b-a22b-instruct-2507":{input:.22,output:.88},"llmgateway-providers/vertex-openai/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"llmgateway-providers/vertex-openai/glm-5":{input:1,output:3.2,cache_read:.1},"llmgateway-providers/vertex-openai/qwen3-coder-480b-a35b-instruct":{input:.22,output:1.8,cache_read:.022},"llmgateway-providers/vertex-openai/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.06},"llmgateway-providers/vertex-openai/qwen3-next-80b-a3b-instruct":{input:.15,output:1.2},"llmgateway-providers/vertex-openai/glm-4.7":{input:.6,output:2.2},"llmgateway-providers/vertex-openai/grok-4-20-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/vertex-openai/grok-4-6":{input:2,output:6,cache_read:.5},"llmgateway-providers/vertex-openai/grok-4-20-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway-providers/vertex-openai/deepseek-v3.2":{input:.56,output:1.68,cache_read:.056},"llmgateway-providers/google-vertex/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway-providers/google-vertex/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.08333},"llmgateway-providers/google-vertex/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"llmgateway-providers/google-vertex/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.08333},"llmgateway-providers/google-vertex/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"llmgateway-providers/google-vertex/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"llmgateway-providers/google-vertex/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway-providers/google-vertex/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"llmgateway-providers/google-vertex/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway-providers/google-vertex/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01},"llmgateway-providers/google-vertex/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:.08333},"llmgateway-providers/aws-mantle/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway-providers/aws-mantle/gpt-5.6-luna":{input:.22,output:1.32,cache_read:.022,cache_write:.275},"llmgateway-providers/aws-mantle/gpt-5.6-terra":{input:2.2,output:13.2,cache_read:.22,cache_write:2.75},"llmgateway-providers/aws-mantle/gpt-5.6-sol":{input:4.4,output:22,cache_read:.44,cache_write:5.5},"llmgateway-providers/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25},"llmgateway-providers/openai/gpt-5.4-pro":{input:30,output:180},"llmgateway-providers/openai/gpt-3.5-turbo":{input:.5,output:1.5},"llmgateway-providers/openai/gpt-4o-transcribe":{input:2.5,output:10},"llmgateway-providers/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"llmgateway-providers/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"llmgateway-providers/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"llmgateway-providers/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"llmgateway-providers/openai/gpt-5.2-pro":{input:21,output:168},"llmgateway-providers/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"llmgateway-providers/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"llmgateway-providers/openai/gpt-4":{input:30,output:60},"llmgateway-providers/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"llmgateway-providers/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"llmgateway-providers/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"llmgateway-providers/openai/o1":{input:15,output:60,cache_read:7.5},"llmgateway-providers/openai/gpt-5-pro":{input:15,output:120},"llmgateway-providers/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway-providers/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"llmgateway-providers/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"llmgateway-providers/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"llmgateway-providers/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"llmgateway-providers/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"llmgateway-providers/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"llmgateway-providers/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"llmgateway-providers/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"llmgateway-providers/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125},"llmgateway-providers/openai/gpt-4o-mini-transcribe":{input:1.25,output:5},"llmgateway-providers/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"llmgateway-providers/openai/gpt-4-turbo":{input:10,output:30},"llmgateway-providers/openai/o3":{input:2,output:8,cache_read:.5},"llmgateway-providers/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"llmgateway-providers/openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5},"llmgateway-providers/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway-providers/moonshot/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway-providers/moonshot/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"llmgateway-providers/moonshot/kimi-k2.6":{input:.95,output:4,cache_read:.16},"llmgateway-providers/moonshot/kimi-k2.5":{input:.6,output:3,cache_read:.1},"llmgateway-providers/moonshot/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"above/mimo-v2.6-pro":{input:.5077,output:1.0154,cache_read:.0042},"above/glm-5.3-flash":{input:.165,output:.55,cache_read:.0319},"above/glm-5.2-fast":{input:2.31,output:7.26,cache_read:.231},"above/qwen3.8-max":{input:2.2,output:6.6,cache_read:.275},"above/deepseek-v4.1-flash":{input:.165,output:.66,reasoning:.66,cache_read:.0033},"above/mimo-v2.6-pro-ultraspeed":{input:5.0769,output:10.1538,cache_read:.0423},"above/mimo-v2.6-flash":{input:.1692,output:.3385,cache_read:.0034},"above/glm-5.2":{input:1.54,output:4.84,cache_read:.154},"above/deepseek-v4-pro":{input:.726,output:2.178,reasoning:2.178,cache_read:.0242},"above/deepseek-v4-flash":{input:.165,output:.66,reasoning:.66,cache_read:.0033},"kilo/sao10k/l3-lunaris-8b":{input:.04,output:.05},"kilo/sao10k/l3.3-euryale-70b":{input:.65,output:.75},"kilo/sao10k/l3.1-euryale-70b":{input:.85,output:.85},"kilo/kwaipilot/kat-coder-pro-v2.5":{input:.74,output:2.96,cache_read:.15},"kilo/stealth/claude-opus-4.6":{input:4,output:20,reasoning:0,cache_read:.4,cache_write:5},"kilo/stealth/claude-opus-4.7":{input:4,output:20,reasoning:0,cache_read:.4,cache_write:5},"kilo/stealth/claude-opus-4.8":{input:4,output:20,reasoning:0,cache_read:.4,cache_write:5},"kilo/stealth/claude-sonnet-4.6":{input:2.4,output:12,reasoning:0,cache_read:.24,cache_write:3},"kilo/stealth/qwen3.6-plus":{input:.25,output:1.5,reasoning:0,cache_read:.025,cache_write:.3125},"kilo/bytedance-seed/seed-1.6-flash":{input:.075,output:.3},"kilo/bytedance-seed/seed-2.0-lite":{input:.25,output:2},"kilo/bytedance-seed/seed-2-1-turbo":{input:.5,output:2.5},"kilo/bytedance-seed/seed-2.0-mini":{input:.1,output:.4},"kilo/bytedance-seed/seed-2.0-code":{input:.5,output:3},"kilo/bytedance-seed/seed-1.6":{input:.25,output:2},"kilo/~moonshotai/kimi-latest":{input:1.0301,output:9.043,cache_read:.3},"kilo/poolside/laguna-s-2.1":{input:.1,output:.2,cache_read:.01},"kilo/poolside/laguna-xs-2.1":{input:.1,output:.2,cache_read:.05},"kilo/prism-ml/ternary-bonsai-2-27b":{input:.075,output:.5},"kilo/anthropic/claude-opus-4.1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"kilo/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"kilo/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25},"kilo/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"kilo/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"kilo/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"kilo/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"kilo/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"kilo/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75},"kilo/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"kilo/anthropic/claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75},"kilo/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"kilo/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75},"kilo/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"kilo/cohere/command-r-08-2024":{input:.15,output:.6},"kilo/cohere/command-a-plus":{input:.3,output:1.5,cache_read:.15},"kilo/cohere/command-a":{input:2.5,output:10},"kilo/cohere/command-r7b-12-2024":{input:.0375,output:.15},"kilo/cohere/command-r-plus-08-2024":{input:2.5,output:10},"kilo/deepseek/deepseek-chat-v3.1":{input:.27,output:1,cache_read:.135},"kilo/deepseek/deepseek-v4-flash-0731":{input:.44,output:1.32,cache_read:.028},"kilo/deepseek/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"kilo/deepseek/deepseek-v4-flash-vision-exp":{input:.44,output:1.32,cache_read:.028},"kilo/deepseek/deepseek-r1-distill-llama-70b":{input:.8,output:.8},"kilo/deepseek/deepseek-v3.1-terminus":{input:.27,output:1,cache_read:.135},"kilo/deepseek/deepseek-chat":{input:.32,output:.89},"kilo/deepseek/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"kilo/deepseek/deepseek-v3.2-exp":{input:.27,output:.41},"kilo/deepseek/deepseek-chat-v3-0324":{input:.25,output:1},"kilo/deepseek/deepseek-r1":{input:.7,output:2.5},"kilo/deepseek/deepseek-v4-pro":{input:1.6,output:3.2,cache_read:.135},"kilo/deepseek/deepseek-r1-0528":{input:.7,output:2.5,cache_read:.35},"kilo/deepseek/deepseek-v3.2":{input:.269,output:.4,cache_read:.1345},"kilo/deepseek/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"kilo/unbiased/pareto":{input:2.5,output:7.5,cache_read:.25},"kilo/tencent/hy3-preview":{input:.18,output:.6,cache_read:.06},"kilo/tencent/hunyuan-a13b-instruct":{input:.14,output:.57},"kilo/tencent/hy-mt2-30b-a3b":{input:.074,output:.295},"kilo/tencent/hy-mt2-1.8b":{input:.044,output:.177},"kilo/tencent/hy3":{input:.13,output:.53,cache_read:.033},"kilo/tencent/hy-mt2-7b":{input:.074,output:.295},"kilo/tencent/hy4-preview":{input:.834,output:2.501,cache_read:.042},"kilo/anthracite-org/magnum-v4-72b":{input:2.5,output:5},"kilo/meta-llama/llama-4-scout":{input:.1,output:.3},"kilo/meta-llama/llama-guard-4-12b":{input:.18,output:.18},"kilo/meta-llama/llama-4-maverick":{input:.1875,output:.6525},"kilo/meta-llama/llama-3.3-70b-instruct":{input:.1,output:.32},"kilo/meta-llama/llama-3.1-8b-instruct":{input:.02,output:.04},"kilo/meta-llama/llama-3.2-1b-instruct":{input:.027,output:.201},"kilo/meta-llama/llama-3.2-3b-instruct":{input:.05,output:.33},"kilo/meta-llama/llama-3.1-70b-instruct":{input:.4,output:.4},"kilo/~google/gemini-flash-latest":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"kilo/~google/gemini-pro-latest":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375},"kilo/perceptron/perceptron-mk1":{input:.15,output:1.5},"kilo/perceptron/perceptron-mk1.5":{input:.15,output:1.5},"kilo/z-ai/glm-4.6v":{input:.3,output:.9,cache_read:.055},"kilo/z-ai/glm-4.5":{input:.6,output:2.2,cache_read:.11},"kilo/z-ai/glm-5.3-prime":{input:2.8,output:8.8,cache_read:.56},"kilo/z-ai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"kilo/z-ai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"kilo/z-ai/glm-4.6":{input:.43,output:1.75,cache_read:.08},"kilo/z-ai/glm-5":{input:.6,output:1.92,cache_read:.12},"kilo/z-ai/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"kilo/z-ai/glm-5.3-flashx":{input:.37,output:1.25,cache_read:.09},"kilo/z-ai/glm-4.7-flash":{input:.0605,output:.4},"kilo/z-ai/glm-4.7":{input:.6,output:2.2,cache_read:.11},"kilo/z-ai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"kilo/z-ai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"kilo/z-ai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"kilo/z-ai/glm-4.5-air":{input:.13,output:.85,cache_read:.025},"kilo/z-ai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"kilo/inference-net/schematron-v2-small":{input:.05,output:.23,cache_read:.05},"kilo/inference-net/schematron-v2-turbo":{input:.03,output:.15,cache_read:.03},"kilo/thinkingmachines/inkling-small":{input:.45,output:1.2,cache_read:.1},"kilo/thinkingmachines/inkling":{input:.95,output:4.05,cache_read:.16},"kilo/meituan/longcat-2.0":{input:.75,output:3,cache_read:.015},"kilo/perplexity/sonar-pro":{input:3,output:15},"kilo/perplexity/sonar-deep-research":{input:2,output:8,reasoning:3},"kilo/perplexity/sonar":{input:1,output:1},"kilo/perplexity/sonar-reasoning-pro":{input:2,output:8},"kilo/perplexity/sonar-pro-search":{input:3,output:15},"kilo/meta/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"kilo/meta/muse-glimmer-30b":{input:.3,output:1.1,cache_read:.04},"kilo/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"kilo/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"kilo/meta/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"kilo/meta/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"kilo/nousresearch/hermes-3-llama-3.1-70b":{input:.7,output:.7},"kilo/nousresearch/hermes-3-llama-3.1-405b":{input:1,output:1},"kilo/nousresearch/hermes-4-405b":{input:1,output:3},"kilo/~z-ai/glm-flash-latest":{input:.04,output:.5,cache_read:.015},"kilo/~z-ai/glm-latest":{input:.3794,output:1.1924,cache_read:.07046},"kilo/arcee-ai/trinity-large-thinking":{input:.25,output:.8,cache_read:.06},"kilo/~openai/gpt-terra-latest":{input:2,output:12,cache_read:.2,cache_write:2.5},"kilo/~openai/gpt-luna-latest":{input:.1,output:.5,cache_read:.01,cache_write:.125},"kilo/~openai/gpt-sol-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"kilo/~openai/gpt-astra-latest":{input:10,output:50,cache_read:1,cache_write:12.5},"kilo/~openai/gpt-mini-latest":{input:.75,output:4.5,cache_read:.075},"kilo/cognitivecomputations/dolphin-mistral-24b-venice-edition":{input:.2,output:.9},"kilo/thedrummer/skyfall-36b-v2":{input:.55,output:.8,cache_read:.25},"kilo/thedrummer/unslopnemo-12b":{input:.4,output:.4},"kilo/thedrummer/cydonia-24b-v4.1":{input:.3,output:.5,cache_read:.15},"kilo/baidu/ernie-4.5-vl-424b-a47b":{input:.42,output:1.25},"kilo/x-ai/grok-4.20-multi-agent":{input:1.25,output:2.5,cache_read:.2},"kilo/x-ai/grok-4.7":{input:1.6,output:4.8,cache_read:.4},"kilo/x-ai/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"kilo/x-ai/grok-4.5":{input:2,output:6,cache_read:.3},"kilo/x-ai/grok-build-0.1":{input:1,output:2,cache_read:.2},"kilo/x-ai/grok-4.20":{input:1.25,output:2.5,cache_read:.2},"kilo/x-ai/grok-4.6":{input:2,output:6,cache_read:.5},"kilo/~anthropic/claude-opus-latest":{input:4,output:20,cache_read:.2,cache_write:5},"kilo/~anthropic/claude-haiku-latest":{input:1,output:5,cache_read:.1,cache_write:1.25},"kilo/~anthropic/claude-sonnet-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"kilo/~anthropic/claude-fable-latest":{input:10,output:50,cache_read:.25,cache_write:12.5},"kilo/upstage/solar-pro-3":{input:.15,output:.6,cache_read:.015},"kilo/upstage/solar-pro4":{input:.3,output:1.2,cache_read:.06},"kilo/upstage/solar-mini4":{input:.1,output:.4,cache_read:.01},"kilo/~deepseek/deepseek-flash-latest":{input:.035,output:.29,cache_read:.001},"kilo/~deepseek/deepseek-pro-latest":{input:.24948,output:.74844,cache_read:.007938},"kilo/~deepseek/deepseek-v4-flash-latest":{input:.021,output:.32,cache_read:.016},"kilo/~x-ai/grok-latest":{input:1.6,output:4.8,cache_read:.4},"kilo/bytedance/ui-tars-1.5-7b":{input:.1,output:.2,cache_read:.1},"kilo/google/gemma-4-31b-it":{input:.08,output:.3,cache_read:.05},"kilo/google/gemini-3.1-flash-image-preview":{input:.5,output:3},"kilo/google/gemma-3-27b-it":{input:.08,output:.16},"kilo/google/gemini-2.5-flash-image":{input:.15,output:1.25,cache_read:.015,cache_write:.041667},"kilo/google/gemma-2-27b-it":{input:.65,output:.65},"kilo/google/gemini-3.6-flash":{input:.375,output:1.875,reasoning:1.875,cache_read:.0375,cache_write:.020833},"kilo/google/gemma-4-26b-a4b-it":{input:.042,output:.22},"kilo/google/gemini-3-pro-image-preview":{input:1,output:6,reasoning:6,cache_read:.1,cache_write:.1875},"kilo/google/gemini-3.5-flash-lite":{input:.15,output:1.25,reasoning:1.25,cache_read:.015,cache_write:.041667},"kilo/google/gemini-3.1-flash-image":{input:.5,output:3},"kilo/google/gemini-3.1-pro-preview":{input:1,output:6,reasoning:6,cache_read:.1,cache_write:.1875},"kilo/google/gemma-3-12b-it":{input:.05,output:.15},"kilo/google/gemini-3.5-flash":{input:.75,output:4.5,reasoning:4.5,cache_read:.075,cache_write:.041667},"kilo/google/gemini-2.5-pro":{input:1.25,output:10,reasoning:10,cache_read:.125,cache_write:.375},"kilo/google/gemini-3-pro-image":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375},"kilo/google/gemini-2.5-flash":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333},"kilo/google/gemini-3.1-flash-lite-image":{input:.25,output:1.5},"kilo/google/gemini-3.7-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"kilo/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375},"kilo/google/gemini-3-flash-preview":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.041667},"kilo/google/gemini-3.8-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"kilo/google/gemma-3-4b-it":{input:.05,output:.1},"kilo/google/gemini-2.5-flash-lite":{input:.1,output:.4,reasoning:.4,cache_read:.01,cache_write:.083333},"kilo/google/gemini-2.5-pro-preview":{input:1.25,output:10,reasoning:10,cache_read:.125,cache_write:.375},"kilo/google/gemini-3.1-flash-lite-preview":{input:.125,output:.75,reasoning:.75,cache_read:.0125,cache_write:.041667},"kilo/google/gemini-3.1-flash-lite":{input:.125,output:.75,reasoning:.75,cache_read:.0125,cache_write:.041667},"kilo/writer/palmyra-x5":{input:.6,output:6},"kilo/ibm-granite/granite-4.0-h-micro":{input:.017,output:.112},"kilo/ibm-granite/granite-4.2-8b":{input:.06,output:.25,cache_read:.015},"kilo/fireworks/ember-1":{input:3,output:15,cache_read:.3},"kilo/mistralai/mistral-nemo":{input:.15,output:.15,cache_read:.015},"kilo/mistralai/ministral-8b-2512":{input:.15,output:.15,cache_read:.015},"kilo/mistralai/mistral-small-24b-instruct-2501":{input:.05,output:.08},"kilo/mistralai/devstral-2512":{input:.4,output:2,cache_read:.04},"kilo/mistralai/mistral-saba":{input:.2,output:.6,cache_read:.02},"kilo/mistralai/mistral-medium-3-5":{input:1.5,output:7.5},"kilo/mistralai/mistral-medium-3.1":{input:.4,output:2,cache_read:.04},"kilo/mistralai/mistral-small-3.2-24b-instruct":{input:.1,output:.3,cache_read:.01},"kilo/mistralai/mistral-large":{input:2,output:6,cache_read:.2},"kilo/mistralai/mistral-small-2603":{input:.15,output:.6,cache_read:.015},"kilo/mistralai/mistral-medium-3":{input:.4,output:2,cache_read:.04},"kilo/mistralai/voxtral-small-24b-2507":{input:.1,output:.3,cache_read:.01},"kilo/mistralai/mistral-large-2512":{input:.5,output:1.5,cache_read:.05},"kilo/mistralai/mistral-large-2407":{input:2,output:6,cache_read:.2},"kilo/mistralai/ministral-14b-2512":{input:.2,output:.2,cache_read:.02},"kilo/mistralai/mistral-small-3.1-24b-instruct":{input:.351,output:.555},"kilo/mistralai/ministral-3b-2512":{input:.1,output:.1,cache_read:.01},"kilo/mistralai/mixtral-8x22b-instruct":{input:2,output:6,cache_read:.2},"kilo/mistralai/codestral-2508":{input:.3,output:.9,cache_read:.03},"kilo/sakana/fugu-max":{input:2,output:6,cache_read:.25},"kilo/sakana/fugu-ultra-v2":{input:5,output:30,cache_read:.5},"kilo/sakana/fugu-ultra":{input:5,output:30,cache_read:.5},"kilo/sakana/sakana-namazu":{input:.95,output:4,cache_read:.15},"kilo/inclusionai/ling-3.0-flash":{input:.06,output:.18,cache_read:.012},"kilo/inclusionai/ling-3.0-flash-vl":{input:.075,output:.22,cache_read:.015},"kilo/inclusionai/ling-3.0-flash-fin":{input:.06,output:.18,cache_read:.012},"kilo/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"kilo/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"kilo/moonshotai/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.15},"kilo/moonshotai/kimi-k2.5":{input:.6,output:3},"kilo/moonshotai/kimi-k2-0905":{input:.6,output:2.5},"kilo/moonshotai/kimi-k2":{input:.57,output:2.3},"kilo/moonshotai/kimi-k2.7-code":{input:.6562,output:3.3,cache_read:.18},"kilo/kilo-auto/small":{input:.05,output:.4,reasoning:0,cache_read:.005},"kilo/kilo-auto/efficient":{input:.325,output:1.95,reasoning:0,cache_read:.0325,cache_write:.40625},"kilo/kilo-auto/frontier":{input:5,output:25,reasoning:0,cache_read:.5,cache_write:6.25},"kilo/kilo-auto/balanced":{input:.325,output:1.95,reasoning:0,cache_read:.0325,cache_write:.40625},"kilo/rekaai/reka-flash-3":{input:.1,output:.2},"kilo/rekaai/reka-edge":{input:.1,output:.1},"kilo/nvidia/nemotron-3-nano-30b-a3b":{input:.05,output:.2,cache_read:.03},"kilo/nvidia/nemotron-3.5-lightning":{input:.065,output:.18},"kilo/nvidia/nemotron-3-super-120b-a12b":{input:.08,output:.45},"kilo/nvidia/nemotron-3-ultra-550b-a55b":{input:.5,output:2.2,cache_read:.1},"kilo/nvidia/nemotron-3.5-content-safety":{input:.2,output:.2},"kilo/xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.004},"kilo/xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.003,tiers:[{input:.8,output:4,cache_read:.16,tier:{type:"context",size:256e3}}],context_over_200k:{input:.8,output:4,cache_read:.16}},"kilo/xiaomi/mimo-v2.6-pro-ultraspeed":{input:4.35,output:8.7,cache_read:.036},"kilo/xiaomi/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.004,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"kilo/xiaomi/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"kilo/undi95/remm-slerp-l2-13b":{input:.35,output:.65},"kilo/gryphe/mythomax-l2-13b":{input:.08,output:.11},"kilo/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03},"kilo/minimax/minimax-01":{input:.2,output:1.1},"kilo/minimax/minimax-m2-her":{input:.3,output:1.2,cache_read:.03},"kilo/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"kilo/minimax/minimax-m1":{input:.4,output:2.2},"kilo/minimax/minimax-m3":{input:.3,output:1.2,cache_read:.06},"kilo/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03},"kilo/minimax/minimax-m2":{input:.3,output:1.2},"kilo/mancer/weaver":{input:.4,output:.75},"kilo/stepfun/step-3.5-flash":{input:.1,output:.3},"kilo/stepfun/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"kilo/inception/mercury-2.5":{input:.2,output:.75,cache_read:.02},"kilo/inception/mercury-2":{input:.25,output:.75,cache_read:.025},"kilo/amazon/nova-lite-v1":{input:.06,output:.24},"kilo/amazon/nova-2-lite-v1":{input:.3,output:2.5},"kilo/amazon/nova-pro-v1":{input:.8,output:3.2},"kilo/amazon/nova-premier-v1":{input:2.5,output:12.5,cache_read:.625},"kilo/amazon/nova-micro-v1":{input:.035,output:.14},"kilo/relace/relace-search":{input:1,output:3},"kilo/relace/relace-apply-3":{input:.85,output:1.25},"kilo/aion-labs/aion-2.0":{input:.8,output:1.6,cache_read:.2},"kilo/aion-labs/aion-rp-llama-3.1-8b":{input:.8,output:1.6},"kilo/aion-labs/aion-3.0":{input:3,output:6,cache_read:.75},"kilo/aion-labs/aion-3.5":{input:3,output:6,cache_read:.75},"kilo/aion-labs/aion-3.5-mini":{input:.7,output:1.4,cache_read:.18},"kilo/aion-labs/aion-3.0-mini":{input:.7,output:1.4,cache_read:.18},"kilo/qwen/qwen3-235b-a22b-2507":{input:.1495,output:.598},"kilo/qwen/qwen3-vl-235b-a22b-instruct":{input:.26,output:1.04},"kilo/qwen/qwen3.7-max":{input:1.475,output:4.425,cache_read:.295,cache_write:1.84375},"kilo/qwen/qwen3.8-27b":{input:.425,output:2.55,cache_read:.085,cache_write:.53125},"kilo/qwen/qwen3-vl-235b-a22b-thinking":{input:.4,output:4},"kilo/qwen/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25,cache_write:2.5},"kilo/qwen/qwen3.5-27b":{input:.195,output:1.56},"kilo/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"kilo/qwen/qwen3-coder-next":{input:.3,output:1.5},"kilo/qwen/qwen3-coder":{input:.975,output:4.875},"kilo/qwen/qwen3-32b":{input:.08,output:.28},"kilo/qwen/qwen-plus":{input:.26,output:.78,cache_read:.052,cache_write:.325},"kilo/qwen/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.038},"kilo/qwen/qwen3-max":{input:.78,output:3.9,cache_read:.156,cache_write:.975},"kilo/qwen/qwen3-coder-30b-a3b-instruct":{input:.2925,output:1.4625},"kilo/qwen/qwen3.8-omni-flash":{input:.15,output:.47,cache_read:.016},"kilo/qwen/qwen3-vl-30b-a3b-instruct":{input:.13,output:.52},"kilo/qwen/qwen3-235b-a22b-thinking-2507":{input:.23,output:2.3},"kilo/qwen/qwen3-235b-a22b":{input:.455,output:1.82},"kilo/qwen/qwen3.5-122b-a10b":{input:.26,output:2.08},"kilo/qwen/qwen-plus-2025-07-28":{input:.26,output:.78},"kilo/qwen/qwen3.6-35b-a3b":{input:.15,output:1,cache_read:.05},"kilo/qwen/qwen3-next-80b-a3b-instruct":{input:.0975,output:.78},"kilo/qwen/qwen3-vl-30b-a3b-thinking":{input:.2,output:2.4},"kilo/qwen/qwen3.6-flash":{input:.1875,output:1.125,cache_write:.234375},"kilo/qwen/qwen3-coder-flash":{input:.195,output:.975,cache_read:.039,cache_write:.24375},"kilo/qwen/qwen-2.5-coder-32b-instruct":{input:.66,output:1},"kilo/qwen/qwen3.5-flash-02-23":{input:.065,output:.26},"kilo/qwen/qwen3-max-thinking":{input:.78,output:3.9},"kilo/qwen/qwen3-coder-plus":{input:.65,output:3.25,cache_read:.13,cache_write:.8125},"kilo/qwen/qwen3.5-9b":{input:.1,output:.15},"kilo/qwen/qwen3.8-max-prime":{input:4,output:12,cache_read:.5},"kilo/qwen/qwen3.5-plus-20260420":{input:.3,output:1.8,cache_write:.375},"kilo/qwen/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"kilo/qwen/qwen3.5-35b-a3b":{input:.1625,output:1.3},"kilo/qwen/qwen3.6-max-preview":{input:1.027,output:6.162,cache_write:1.28375},"kilo/qwen/qwen3-30b-a3b":{input:.13,output:.52},"kilo/qwen/qwen3.5-397b-a17b":{input:.39,output:2.34},"kilo/qwen/qwen3-8b":{input:.117,output:.455},"kilo/qwen/qwen3-vl-32b-instruct":{input:.104,output:.416},"kilo/qwen/qwen3-vl-8b-instruct":{input:.117,output:.455},"kilo/qwen/qwen3-30b-a3b-instruct-2507":{input:.13,output:.52},"kilo/qwen/qwen2.5-vl-72b-instruct":{input:.8,output:1,cache_read:.4},"kilo/qwen/qwen-2.5-7b-instruct":{input:.1,output:.2},"kilo/qwen/qwen3.5-plus-02-15":{input:.26,output:1.56},"kilo/qwen/qwen-2.5-72b-instruct":{input:.36,output:.4},"kilo/qwen/qwen3-30b-a3b-thinking-2507":{input:.2,output:2.4},"kilo/qwen/qwen3.6-27b":{input:.45,output:2.7},"kilo/qwen/qwen3.6-plus":{input:.325,output:1.95,cache_write:.40625},"kilo/qwen/qwen3-14b":{input:.2275,output:.91},"kilo/qwen/qwen3-vl-8b-thinking":{input:.18,output:2.1},"kilo/qwen/qwen3.7-plus":{input:.32,output:1.28,cache_read:.064,cache_write:.4},"kilo/qwen/qwen3.8-max-0902":{input:2,output:6,cache_read:.25,cache_write:2.5},"kilo/morph/morph-v3-large":{input:.9,output:1.9},"kilo/morph/morph-v3-fast":{input:.8,output:1.2},"kilo/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25},"kilo/openai/gpt-5.4-image-2":{input:8,output:15,cache_read:2},"kilo/openai/gpt-5.4-pro":{input:30,output:180},"kilo/openai/gpt-audio":{input:2.5,output:10},"kilo/openai/gpt-3.5-turbo":{input:.5,output:1.5},"kilo/openai/gpt-6-astra-pro":{input:10,output:50,cache_read:1,cache_write:12.5},"kilo/openai/gpt-5.5-pro":{input:30,output:180},"kilo/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"kilo/openai/gpt-4o-2024-05-13":{input:5,output:15},"kilo/openai/gpt-4o-mini-2024-07-18":{input:.15,output:.6,cache_read:.075},"kilo/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"kilo/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.13},"kilo/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"kilo/openai/gpt-chat-latest":{input:5,output:30,cache_read:.5},"kilo/openai/gpt-audio-mini":{input:.6,output:2.4},"kilo/openai/gpt-5.6-sol-pro":{input:4,output:20,cache_read:.4,cache_write:5},"kilo/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"kilo/openai/gpt-5.2-pro":{input:21,output:168},"kilo/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"kilo/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"kilo/openai/gpt-4":{input:30,output:60},"kilo/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"kilo/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"kilo/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"kilo/openai/o1":{input:15,output:60,cache_read:7.5},"kilo/openai/gpt-5-pro":{input:15,output:120},"kilo/openai/gpt-3.5-turbo-instruct":{input:1.5,output:2},"kilo/openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"kilo/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"kilo/openai/gpt-5.6-luna-pro":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"kilo/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"kilo/openai/gpt-5-image-mini":{input:2.5,output:2,cache_read:.25},"kilo/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"kilo/openai/o3-pro":{input:20,output:80},"kilo/openai/gpt-oss-20b":{input:.018,output:.09},"kilo/openai/gpt-oss-safeguard-20b":{input:.075,output:.3,cache_read:.0375},"kilo/openai/o3-mini-high":{input:1.1,output:4.4,cache_read:.55},"kilo/openai/gpt-3.5-turbo-16k":{input:3,output:4},"kilo/openai/gpt-5.2-chat":{input:1.75,output:14,cache_read:.175},"kilo/openai/gpt-6-sol-pro":{input:2,output:10,cache_read:.2,cache_write:2.5},"kilo/openai/gpt-5-image":{input:10,output:10,cache_read:1.25},"kilo/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"kilo/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"kilo/openai/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"kilo/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"kilo/openai/gpt-5.5":{input:5,output:30,cache_read:.5},"kilo/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"kilo/openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"kilo/openai/gpt-3.5-turbo-0613":{input:1,output:2},"kilo/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"kilo/openai/gpt-5.6-terra-pro":{input:2,output:12,cache_read:.2,cache_write:2.5},"kilo/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125},"kilo/openai/o4-mini-high":{input:1.1,output:4.4,cache_read:.275},"kilo/openai/gpt-6-luna-pro":{input:.1,output:.5,cache_read:.01,cache_write:.125},"kilo/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"kilo/openai/gpt-4-turbo":{input:10,output:30},"kilo/openai/gpt-oss-120b":{input:.03,output:.17,cache_read:.03},"kilo/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.03},"kilo/openai/o3":{input:2,output:8,cache_read:.5},"kilo/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"kilo/openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5},"kilo/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"kilo/openai/o1-pro":{input:150,output:600},"kilo/microsoft/phi-4":{input:.07,output:.14},"kilo/microsoft/wizardlm-2-8x22b":{input:.62,output:.62},"venice/qwen-3-8-2-4t-a95b":{input:2.5,output:7.5,cache_read:.3125},"venice/openai-gpt-56-luna":{input:.25,output:1.5,cache_read:.025,cache_write:.3125,tiers:[{input:.5,output:2.25,cache_read:.05,cache_write:.625,tier:{type:"context",size:272e3}}],context_over_200k:{input:.5,output:2.25,cache_read:.05,cache_write:.625}},"venice/grok-4-5":{input:2.27,output:6.8,cache_read:.34,tiers:[{input:4.53,output:13.6,cache_read:.68,tier:{type:"context",size:2e5}}],context_over_200k:{input:4.53,output:13.6,cache_read:.68}},"venice/aion-labs-aion-3-5":{input:3.75,output:7.5,cache_read:.9375},"venice/kimi-k3-fast-api":{input:4.5,output:22.5,cache_read:.45},"venice/qwen3-6-27b":{input:.325,output:3.25},"venice/hermes-3-llama-3.1-405b":{input:1.1,output:3},"venice/kimi-k2-7-code":{input:.75,output:3.5,cache_read:.16},"venice/google-gemma-3-27b-it":{input:.12,output:.2},"venice/qwen-3-7-max":{input:2.7,output:8.05,cache_read:.27,cache_write:3.35},"venice/qwen-3-8-max":{input:2.5,output:7.5,cache_read:.3125,cache_write:3.125},"venice/deepseek-v4-flash-0731":{input:.175,output:.35,cache_read:.035},"venice/venice-uncensored-role-play":{input:.5,output:2},"venice/grok-build-0-1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4}},"venice/qwen3-235b-a22b-instruct-2507":{input:.15,output:.75},"venice/openai-gpt-6-luna":{input:.125,output:.625,cache_read:.0125,cache_write:.15625,tiers:[{input:.25,output:.9375,cache_read:.025,cache_write:.3125,tier:{type:"context",size:272e3}}],context_over_200k:{input:.25,output:.9375,cache_read:.025,cache_write:.3125}},"venice/kimi-k3":{input:3.75,output:18.75,cache_read:.375},"venice/openai-gpt-54-mini":{input:.9375,output:5.625,cache_read:.09375},"venice/qwen-3-8-flash":{input:.14,output:.49,cache_read:.014},"venice/olafangensan-glm-4.7-flash-heretic":{input:.07,output:.4,cache_read:.035},"venice/deepseek-v4-flash-0731-fast":{input:.35,output:.7,cache_read:.0875},"venice/claude-opus-4-5":{input:6,output:30,cache_read:.6,cache_write:7.5},"venice/zai-org-glm-5-2":{input:1.4,output:4.4,cache_read:.26},"venice/claude-opus-4-8-fast":{input:12,output:60,cache_read:1.2,cache_write:15},"venice/z-ai-glm-5-turbo":{input:1.2,output:4,cache_read:.24},"venice/zai-org-glm-4.6":{input:.43,output:1.75,cache_read:.08},"venice/openai-gpt-54-pro":{input:37.5,output:225,tiers:[{input:75,output:337.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:75,output:337.5}},"venice/aion-labs-aion-3-0":{input:3.75,output:7.5,cache_read:.9375},"venice/claude-sonnet-4-5":{input:3.75,output:18.75,cache_read:.375,cache_write:4.69},"venice/claude-opus-5-5":{input:4.8,output:24,cache_read:.24,cache_write:6},"venice/kimi-k2-5":{input:.56,output:3.5,cache_read:.22},"venice/claude-fable-5-1":{input:12,output:60,cache_read:.3,cache_write:15},"venice/gemini-3-7-flash":{input:.9375,output:4.6875,cache_read:.09375},"venice/grok-4-20":{input:1.42,output:2.83,cache_read:.23,tiers:[{input:2.83,output:5.67,cache_read:.45,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.83,output:5.67,cache_read:.45}},"venice/openai-gpt-56-sol-pro":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"venice/seed-2-1-turbo":{input:.625,output:3.125,cache_read:.125},"venice/z-ai-glm-5v-turbo":{input:1.5,output:5,cache_read:.3},"venice/openai-gpt-55-pro":{input:37.5,output:225},"venice/qwen-3-7-plus":{input:.5,output:2,cache_read:.05,cache_write:.625,tiers:[{input:1.5,output:6,cache_read:.15,cache_write:1.875,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.5,output:6,cache_read:.15,cache_write:1.875}},"venice/qwen3-235b-a22b-thinking-2507":{input:.45,output:3.5},"venice/zai-org-glm-4.7-flash":{input:.06,output:.4,cache_read:.01},"venice/claude-opus-5":{input:6,output:30,cache_read:.6,cache_write:7.5},"venice/openai-gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"venice/minimax-m27":{input:.375,output:1.5,cache_read:.06875},"venice/mercury-2-5":{input:.04999999999999999,output:.18749999999999994,cache_read:.004999999999999999},"venice/qwen3-next-80b":{input:.35,output:1.9},"venice/minimax-m25":{input:.27,output:.95,cache_read:.03},"venice/qwen3-6-35b-a3b":{input:.1,output:1},"venice/grok-4-20-multi-agent":{input:1.42,output:2.83,cache_read:.23,tiers:[{input:2.83,output:5.67,cache_read:.45,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.83,output:5.67,cache_read:.45}},"venice/zai-org-glm-4.7":{input:.55,output:2.65,cache_read:.11},"venice/qwen3-5-9b":{input:.1,output:.15},"venice/qwen3-vl-235b-a22b":{input:.21,output:1.9,cache_read:.1},"venice/claude-fable-5":{input:12,output:60,cache_read:1.2,cache_write:15},"venice/qwen3-5-35b-a3b":{input:.3125,output:1.25,cache_read:.15625},"venice/deepseek-v4-pro-0813":{input:1.65,output:4.95,cache_read:.165},"venice/openai-gpt-56-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:6.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:6.25}},"venice/llama-3.3-70b":{input:.7,output:2.8},"venice/openai-gpt-4o-mini-2024-07-18":{input:.1875,output:.75,cache_read:.09375},"venice/mistral-small-3-2-24b-instruct":{input:.09375,output:.25},"venice/inkling":{input:1.25,output:5.0625,cache_read:.2125},"venice/z-ai-glm-5-3":{input:1.75,output:5.5,cache_read:.325},"venice/google-gemma-4-26b-a4b-it":{input:.13,output:.4,cache_read:.05},"venice/kimi-k2-6":{input:.75,output:3.5,cache_read:.16},"venice/openai-gpt-6-astra-pro":{input:12.5,output:62.5,cache_read:1.25,cache_write:15.625,tiers:[{input:25,output:93.75,cache_read:2.5,cache_write:31.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:25,output:93.75,cache_read:2.5,cache_write:31.25}},"venice/openai-gpt-54":{input:3.13,output:18.8,cache_read:.313},"venice/gemma-4-uncensored":{input:.1625,output:.5},"venice/claude-opus-4-8":{input:6,output:30,cache_read:.6,cache_write:7.5},"venice/minimax-m3-preview":{input:.3,output:1.2,cache_read:.06},"venice/openai-gpt-oss-120b":{input:.07,output:.3},"venice/claude-sonnet-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"venice/deepseek-v4-1-flash":{input:.375,output:1.5,cache_read:.0075},"venice/gemini-3-8-flash":{input:.9375,output:4.6875,cache_read:.09375},"venice/qwen-3-6-plus":{input:.625,output:3.75,cache_read:.0625,cache_write:.78,tiers:[{input:2.5,output:7.5,cache_read:.0625,cache_write:.78,tier:{type:"context",size:256e3}}],context_over_200k:{input:2.5,output:7.5,cache_read:.0625,cache_write:.78}},"venice/claude-opus-4-6":{input:6,output:30,cache_read:.6,cache_write:7.5},"venice/openai-gpt-6-sol":{input:2.5,output:12.5,cache_read:.25,cache_write:3.125,tiers:[{input:5,output:18.75,cache_read:.5,cache_write:6.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:18.75,cache_read:.5,cache_write:6.25}},"venice/qwen-3-8-27b":{input:.45,output:3.2},"venice/openai-gpt-53-codex":{input:2.19,output:17.5,cache_read:.219},"venice/aion-labs-aion-3-0-mini":{input:.875,output:1.75,cache_read:.225},"venice/grok-4-3":{input:1.42,output:2.83,cache_read:.23,tiers:[{input:2.83,output:5.67,cache_read:.45,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.83,output:5.67,cache_read:.45}},"venice/aion-labs-aion-3-5-mini":{input:.875,output:1.75,cache_read:.225},"venice/openai-gpt-56-terra-pro":{input:2.5,output:15,cache_read:.25,cache_write:3.125,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:6.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:6.25}},"venice/gemini-3-flash-preview":{input:.7,output:3.75,cache_read:.07},"venice/mercury-2":{input:.3125,output:.9375,cache_read:.03125},"venice/grok-4-6":{input:2.27,output:6.8,cache_read:.57,tiers:[{input:4.53,output:13.6,cache_read:1.13,tier:{type:"context",size:2e5}}],context_over_200k:{input:4.53,output:13.6,cache_read:1.13}},"venice/zai-org-glm-5-1":{input:1.54,output:4.84,cache_read:.286},"venice/xiaomi-mimo-v2-5":{input:.4,output:2,cache_read:.08},"venice/openai-gpt-4o-2024-11-20":{input:3.125,output:12.5},"venice/openai-gpt-52":{input:2.19,output:17.5,cache_read:.219},"venice/gemini-3-6-flash":{input:.9375,output:4.6875,cache_read:.09375},"venice/gemini-3-1-pro-preview":{input:2.5,output:15,cache_read:.5,cache_write:.5,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:.5}},"venice/deepseek-v4-pro":{input:1.65,output:3.301,cache_read:.33},"venice/claude-sonnet-4-6":{input:3.6,output:18,cache_read:.36,cache_write:4.5},"venice/claude-opus-5-fast":{input:12,output:60,cache_read:1.2,cache_write:15},"venice/openai-gpt-55":{input:6.25,output:37.5,cache_read:.625,tiers:[{input:12.5,output:56.25,cache_read:1.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:12.5,output:56.25,cache_read:1.25}},"venice/openai-gpt-56-sol":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"venice/qwen3-coder-480b-a35b-instruct-turbo":{input:.35,output:1.5,cache_read:.04},"venice/z-ai-glm-5-3-flash":{input:.15,output:.5,cache_read:.03},"venice/zai-org-glm-5":{input:1,output:3.2,cache_read:.2},"venice/grok-4-7":{input:2.27,output:6.8,cache_read:.57,tiers:[{input:4.53,output:13.6,cache_read:1.13,tier:{type:"context",size:2e5}}],context_over_200k:{input:4.53,output:13.6,cache_read:1.13}},"venice/deepseek-v3.2":{input:.33,output:.48,cache_read:.16},"venice/gemini-3-5-flash-lite":{input:.375,output:3.125,cache_read:.0375},"venice/gemini-3-5-flash":{input:1.55,output:9.45,cache_read:.155,cache_write:.086},"venice/google-gemma-4-31b-it":{input:.12,output:.36,cache_read:.09},"venice/claude-opus-4-7":{input:6,output:30,cache_read:.6,cache_write:7.5},"venice/venice-uncensored-1-2":{input:.2,output:.9},"venice/qwen3-5-397b-a17b":{input:.75,output:4.5},"venice/llama-3.2-3b":{input:.15,output:.6},"venice/openai-gpt-56-luna-pro":{input:.25,output:1.5,cache_read:.025,cache_write:.3125,tiers:[{input:.5,output:2.25,cache_read:.05,cache_write:.625,tier:{type:"context",size:272e3}}],context_over_200k:{input:.5,output:2.25,cache_read:.05,cache_write:.625}},"venice/nvidia-nemotron-3-ultra-550b-a55b":{input:.625,output:3.125,cache_read:.1875},"venice/deepseek-v4-flash":{input:.138,output:.275,cache_read:.028},"venice/nvidia-nemotron-3-nano-30b-a3b":{input:.075,output:.3},"ai21/jamba-large":{input:2,output:8},"ai21/jamba-mini":{input:.2,output:.4},"inference/meta/llama-3.1-8b-instruct":{input:.025,output:.025},"inference/meta/llama-3.2-11b-vision-instruct":{input:.055,output:.055},"inference/meta/llama-3.2-1b-instruct":{input:.01,output:.01},"inference/meta/llama-3.2-3b-instruct":{input:.02,output:.02},"inference/google/gemma-3":{input:.15,output:.3},"inference/osmosis/osmosis-structure-0.6b":{input:.1,output:.5},"inference/mistral/mistral-nemo-12b-instruct":{input:.038,output:.1},"inference/qwen/qwen3-embedding-4b":{input:.01,output:0},"inference/qwen/qwen-2.5-7b-vision-instruct":{input:.2,output:.2},"thinkingmachines/thinkingmachines/Inkling:peft:262144":{input:3.74,output:9.36,cache_read:.748},"thinkingmachines/thinkingmachines/Inkling":{input:1.87,output:4.68,cache_read:.374},"melious/glm-5.3-flash":{input:.11592,output:.46368,cache_read:.023184},"melious/deepseek-v4-flash-0731":{input:.11592,output:.2898,cache_read:.023184},"melious/kimi-k3":{input:3.1878,output:15.939,cache_read:.788256},"melious/glm-5":{input:1.10124,output:3.36168,cache_read:.266616},"melious/deepseek-v4.1-flash":{input:.23184,output:1.1592,cache_read:.011592},"melious/kimi-k2.6":{input:.81144,output:4.0572,cache_read:.266616},"melious/kimi-k2.5":{input:.5796,output:2.95596,cache_read:.139104},"melious/glm-5.1":{input:1.50696,output:4.6368,cache_read:.370944},"melious/deepseek-r1-0528":{input:.69552,output:2.78208,cache_read:.185472},"melious/deepseek-v3.2":{input:.34776,output:.5796,cache_read:.092736},"melious/glm-5.3":{input:1.1592,output:3.4776,cache_read:.23184},"melious/kimi-k2.7-code":{input:.81144,output:3.4776,cache_read:.220248},"berget/google/gemma-4-31B-it":{input:.275,output:.55},"berget/Qwen/Qwen3.8-27B-FP8":{input:.46,output:3.48},"berget/mistralai/Mistral-Small-3.2-24B-Instruct-2506":{input:.33,output:.33},"berget/moonshotai/Kimi-K3":{input:3,output:15},"berget/zai-org/GLM-5.2":{input:1.54,output:4.84},"berget/zai-org/GLM-5.3-Flash":{input:.29,output:.58},"abacus/gpt-5.4":{input:2.5,output:15,cache_read:.25},"abacus/grok-4-1-fast-non-reasoning":{input:.2,output:.5},"abacus/qwen3.7-max":{input:2.5,output:7.5},"abacus/gemini-3.1-flash-image-preview":{input:.5,output:3},"abacus/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"abacus/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"abacus/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"abacus/gemini-2.5-flash-image":{input:.3,output:30},"abacus/gpt-4o":{input:2.5,output:10,cache_read:1.25},"abacus/qwen3.8-max":{input:2,output:6},"abacus/gpt-5-codex":{input:1.25,output:10,cache_read:.125},"abacus/gpt-5-mini":{input:.25,output:2,cache_read:.025},"abacus/claude-3-7-sonnet-20250219":{input:3,output:15},"abacus/qwen-2.5-coder-32b":{input:.79,output:.79},"abacus/o4-mini":{input:1.1,output:4.4},"abacus/o3-mini":{input:1.1,output:4.4,cache_read:.55},"abacus/gpt-5.3-codex":{input:1.75,output:14,cache_read:.18},"abacus/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"abacus/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"abacus/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"abacus/gpt-5.2-chat-latest":{input:1.75,output:14},"abacus/gpt-5.1-chat-latest":{input:1.25,output:10},"abacus/qwen3-max":{input:1.2,output:6},"abacus/claude-opus-4-20250514":{input:15,output:75},"abacus/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15},"abacus/kimi-k2-turbo-preview":{input:.15,output:8},"abacus/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"abacus/grok-4-fast-non-reasoning":{input:.2,output:.5},"abacus/claude-opus-4-1-20250805":{input:15,output:75},"abacus/claude-opus-4-5-20251101":{input:5,output:25},"abacus/gemini-3-pro-image-preview":{input:2,output:12,cache_read:.2},"abacus/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"abacus/gemini-3.1-flash-image":{input:.5,output:3},"abacus/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2},"abacus/grok-4.5":{input:2,output:6},"abacus/kimi-k2.5":{input:.6,output:3},"abacus/gpt-5.1":{input:1.25,output:10,cache_read:.125},"abacus/llama-3.3-70b-versatile":{input:.59,output:.79},"abacus/claude-opus-5":{input:5,output:25},"abacus/mimo-v2-pro":{input:1,output:3,cache_read:.2},"abacus/gpt-4o-mini":{input:.15,output:.6},"abacus/o3-pro":{input:20,output:40},"abacus/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15},"abacus/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125},"abacus/gemini-3-pro-image":{input:2,output:12,cache_read:.2},"abacus/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"abacus/claude-fable-5":{input:10,output:50},"abacus/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"abacus/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"abacus/gpt-5.6-luna":{input:1,output:6,cache_read:.1},"abacus/gpt-5.1-codex-max":{input:1.25,output:10},"abacus/gpt-5.2":{input:1.75,output:14,cache_read:.175},"abacus/claude-opus-4-8":{input:5,output:25},"abacus/grok-code-fast-1":{input:.2,output:1.5},"abacus/gpt-5.5":{input:5,output:30,cache_read:.5},"abacus/claude-sonnet-4-5-20250929":{input:3,output:15},"abacus/gpt-4.1":{input:2,output:8,cache_read:.5},"abacus/claude-sonnet-5":{input:3,output:15},"abacus/claude-opus-4-6":{input:5,output:25},"abacus/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"abacus/gpt-5.3-codex-xhigh":{input:1.75,output:14},"abacus/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"abacus/gpt-4o-2024-11-20":{input:2.5,output:10},"abacus/claude-haiku-4-5-20251001":{input:1,output:5},"abacus/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"abacus/claude-sonnet-4-6":{input:3,output:15},"abacus/gpt-5.3-chat-latest":{input:1.75,output:14},"abacus/claude-sonnet-4-20250514":{input:3,output:15},"abacus/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25},"abacus/o3":{input:2,output:8,cache_read:.5},"abacus/claude-opus-4-7":{input:5,output:25},"abacus/gpt-5":{input:1.25,output:10,cache_read:.125},"abacus/grok-4.6":{input:2,output:6,cache_read:.5},"abacus/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,cache_read:.025,cache_write:1},"abacus/route-llm":{input:3,output:15},"abacus/grok-4-0709":{input:3,output:15},"abacus/gpt-5.6-sol":{input:5,output:30,cache_read:.5},"abacus/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025},"abacus/deepseek/deepseek-v3.1":{input:.55,output:1.66},"abacus/meta-llama/Meta-Llama-3.3-70B-Instruct":{input:.59,output:.79},"abacus/meta-llama/Meta-Llama-3.1-8B-Instruct":{input:.02,output:.05},"abacus/meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":{input:3.5,output:3.5},"abacus/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{input:.14,output:.59},"abacus/thinkingmachines/Inkling":{input:3.74,output:9.36,cache_read:.748},"abacus/google/gemma-4-31b-it":{input:.14,output:.4},"abacus/Qwen/QwQ-32B":{input:.4,output:.4},"abacus/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.13,output:.6},"abacus/Qwen/Qwen2.5-72B-Instruct":{input:.11,output:.38},"abacus/Qwen/Qwen3-32B":{input:.09,output:.29},"abacus/Qwen/Qwen3-Coder-480B-A35B-Instruct":{input:.29,output:1.2},"abacus/Qwen/Qwen3.6-27B":{input:.32,output:3.2},"abacus/deepseek-ai/DeepSeek-R1":{input:3,output:7},"abacus/deepseek-ai/DeepSeek-V4-Flash":{input:.14,output:.28,cache_read:.03},"abacus/deepseek-ai/DeepSeek-V4-Pro":{input:1.74,output:3.48,cache_read:.15},"abacus/deepseek-ai/DeepSeek-V3.2":{input:.27,output:.4},"abacus/deepseek-ai/DeepSeek-V3.1-Terminus":{input:.27,output:1},"abacus/MiniMaxAI/MiniMax-M3":{input:.3,output:1.2},"abacus/MiniMaxAI/MiniMax-M2.7":{input:.3,output:1.2},"abacus/moonshotai/Kimi-K2.6":{input:.95,output:4,cache_read:.19},"abacus/moonshotai/Kimi-K3":{input:3,output:15,cache_read:.3},"abacus/moonshotai/Kimi-K2.7-Code":{input:.95,output:4,cache_read:.19},"abacus/zai-org/GLM-5.1":{input:1.4,output:4.4,cache_read:.26},"abacus/zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:.26},"abacus/zai-org/GLM-4.7":{input:.6,output:2.2},"abacus/zai-org/GLM-5":{input:1,output:3.2},"abacus/zai-org/GLM-4.6":{input:.6,output:2.2},"abacus/zai-org/GLM-4.5":{input:.6,output:2.2},"abacus/openai/gpt-oss-120b":{input:.08,output:.44},"novita-ai/kwaipilot/kat-coder-pro":{input:.3,output:1.2,cache_read:.06},"novita-ai/deepseek/deepseek-prover-v2-671b":{input:.7,output:2.5},"novita-ai/deepseek/deepseek-r1-distill-qwen-14b":{input:.15,output:.15},"novita-ai/deepseek/deepseek-v3-0324":{input:.27,output:1.12,cache_read:.135},"novita-ai/deepseek/deepseek-r1-distill-llama-70b":{input:.8,output:.8},"novita-ai/deepseek/deepseek-v3-turbo":{input:.4,output:1.3},"novita-ai/deepseek/deepseek-r1-0528-qwen3-8b":{input:.06,output:.09},"novita-ai/deepseek/deepseek-v3.1-terminus":{input:.27,output:1,cache_read:.135},"novita-ai/deepseek/deepseek-ocr-2":{input:.03,output:.03},"novita-ai/deepseek/deepseek-ocr":{input:.03,output:.03},"novita-ai/deepseek/deepseek-r1-turbo":{input:.7,output:2.5},"novita-ai/deepseek/deepseek-v3.2-exp":{input:.27,output:.41},"novita-ai/deepseek/deepseek-r1-distill-qwen-32b":{input:.3,output:.3},"novita-ai/deepseek/deepseek-v3.1":{input:.27,output:1,cache_read:.135},"novita-ai/deepseek/deepseek-v4-pro":{input:1.6,output:3.2,cache_read:.135},"novita-ai/deepseek/deepseek-r1-0528":{input:.7,output:2.5,cache_read:.35},"novita-ai/deepseek/deepseek-v3.2":{input:.269,output:.4,cache_read:.1345},"novita-ai/deepseek/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"novita-ai/meta-llama/llama-4-maverick-17b-128e-instruct-fp8":{input:.27,output:.85},"novita-ai/meta-llama/llama-3-70b-instruct":{input:.51,output:.74},"novita-ai/meta-llama/llama-3.3-70b-instruct":{input:.135,output:.4},"novita-ai/meta-llama/llama-3.1-8b-instruct":{input:.02,output:.05},"novita-ai/meta-llama/llama-4-scout-17b-16e-instruct":{input:.18,output:.59},"novita-ai/meta-llama/llama-3.2-3b-instruct":{input:.03,output:.05},"novita-ai/meta-llama/llama-3-8b-instruct":{input:.04,output:.04},"novita-ai/nousresearch/hermes-2-pro-llama-3-8b":{input:.14,output:.14},"novita-ai/xiaomimimo/mimo-v2-flash":{input:.1,output:.3,cache_read:.3},"novita-ai/xiaomimimo/mimo-v2-pro":{input:2,output:6,cache_read:.4,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"novita-ai/xiaomimimo/mimo-v2.5-pro":{input:.522,output:1.044,cache_read:.0043,tiers:[{input:.522,output:1.044,cache_read:.0043,tier:{type:"context",size:256e3}}],context_over_200k:{input:.522,output:1.044,cache_read:.0043}},"novita-ai/baidu/ernie-4.5-vl-28b-a3b":{input:.14,output:.56},"novita-ai/baidu/ernie-4.5-vl-28b-a3b-thinking":{input:.39,output:.39},"novita-ai/baidu/ernie-4.5-21B-a3b-thinking":{input:.07,output:.28},"novita-ai/baidu/ernie-4.5-21B-a3b":{input:.07,output:.28},"novita-ai/baidu/ernie-4.5-vl-424b-a47b":{input:.42,output:1.25},"novita-ai/baidu/ernie-4.5-300b-a47b-paddle":{input:.28,output:1.1},"novita-ai/google/gemma-4-31b-it":{input:.14,output:.4},"novita-ai/google/gemma-3-27b-it":{input:.119,output:.2},"novita-ai/google/gemma-4-26b-a4b-it":{input:.13,output:.4},"novita-ai/google/gemma-3-12b-it":{input:.05,output:.1},"novita-ai/minimaxai/minimax-m1-80k":{input:.55,output:2.2},"novita-ai/mistralai/mistral-nemo":{input:.04,output:.17},"novita-ai/inclusionai/ring-2.6-1t":{input:.3,output:2.5,cache_read:.06},"novita-ai/inclusionai/ling-2.6-1t":{input:.3,output:2.5,cache_read:.06},"novita-ai/inclusionai/ling-2.6-flash":{input:.1,output:.3,cache_read:.02},"novita-ai/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"novita-ai/moonshotai/kimi-k2.6":{input:.8,output:3.4,cache_read:.16},"novita-ai/moonshotai/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.15},"novita-ai/moonshotai/kimi-k2.5":{input:.6,output:3,cache_read:.1},"novita-ai/moonshotai/kimi-k2-instruct":{input:.57,output:2.3},"novita-ai/moonshotai/kimi-k2-0905":{input:.6,output:2.5},"novita-ai/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"novita-ai/zai-org/glm-4.6v":{input:.3,output:.9,cache_read:.055},"novita-ai/zai-org/glm-4.5":{input:.6,output:2.2,cache_read:.11},"novita-ai/zai-org/glm-4.6":{input:.55,output:2.2,cache_read:.11},"novita-ai/zai-org/glm-5":{input:1,output:3.2,cache_read:.2},"novita-ai/zai-org/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"novita-ai/zai-org/glm-4.7-flash":{input:.07,output:.4,cache_read:.01},"novita-ai/zai-org/glm-4.7":{input:.6,output:2.2,cache_read:.11},"novita-ai/zai-org/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"novita-ai/zai-org/glm-5.1":{input:1.38,output:4.4,cache_read:.26},"novita-ai/zai-org/autoglm-phone-9b-multilingual":{input:.035,output:.138},"novita-ai/zai-org/glm-4.5-air":{input:.13,output:.85,cache_read:.025},"novita-ai/gryphe/mythomax-l2-13b":{input:.09,output:.09},"novita-ai/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03},"novita-ai/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"novita-ai/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"novita-ai/minimax/minimax-m2.5-highspeed":{input:.6,output:2.4,cache_read:.03},"novita-ai/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03},"novita-ai/minimax/minimax-m2":{input:.3,output:1.2,cache_read:.03},"novita-ai/paddlepaddle/paddleocr-vl":{input:.02,output:.02},"novita-ai/qwen/qwen3-vl-235b-a22b-instruct":{input:.3,output:1.5},"novita-ai/qwen/qwen3.7-max":{input:1.25,output:3.75,cache_read:.25,cache_write:1.5625},"novita-ai/qwen/qwen3-vl-235b-a22b-thinking":{input:.98,output:3.95},"novita-ai/qwen/qwen3.5-27b":{input:.3,output:2.4},"novita-ai/qwen/qwen3-235b-a22b-instruct-2507":{input:.09,output:.58},"novita-ai/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:1.5},"novita-ai/qwen/qwen3-coder-next":{input:.2,output:1.5},"novita-ai/qwen/qwen3-omni-30b-a3b-instruct":{input:.25,output:.97,input_audio:2.2,output_audio:1.788},"novita-ai/qwen/qwen3-omni-30b-a3b-thinking":{input:.25,output:.97,input_audio:2.2,output_audio:1.788},"novita-ai/qwen/qwen3-max":{input:2.11,output:8.45},"novita-ai/qwen/qwen3-235b-a22b-fp8":{input:.2,output:.8},"novita-ai/qwen/qwen3-coder-480b-a35b-instruct":{input:.38,output:1.55},"novita-ai/qwen/qwen3-coder-30b-a3b-instruct":{input:.07,output:.27},"novita-ai/qwen/qwen3-vl-30b-a3b-instruct":{input:.2,output:.7},"novita-ai/qwen/qwen3-235b-a22b-thinking-2507":{input:.3,output:3},"novita-ai/qwen/qwen2.5-7b-instruct":{input:.07,output:.07},"novita-ai/qwen/qwen3.5-122b-a10b":{input:.4,output:3.2},"novita-ai/qwen/qwen3-30b-a3b-fp8":{input:.09,output:.45},"novita-ai/qwen/qwen3-next-80b-a3b-instruct":{input:.15,output:1.5},"novita-ai/qwen/qwen3-vl-30b-a3b-thinking":{input:.2,output:1},"novita-ai/qwen/qwen-mt-plus":{input:.25,output:.75},"novita-ai/qwen/qwen3-32b-fp8":{input:.1,output:.45},"novita-ai/qwen/qwen3-8b-fp8":{input:.035,output:.138},"novita-ai/qwen/qwen3.5-35b-a3b":{input:.25,output:2},"novita-ai/qwen/qwen3.5-397b-a17b":{input:.6,output:3.6},"novita-ai/qwen/qwen3-vl-8b-instruct":{input:.08,output:.5},"novita-ai/qwen/qwen2.5-vl-72b-instruct":{input:.8,output:.8},"novita-ai/qwen/qwen-2.5-72b-instruct":{input:.38,output:.4},"novita-ai/qwen/qwen3-4b-fp8":{input:.03,output:.03},"novita-ai/baichuan/baichuan-m2-32b":{input:.07,output:.07},"novita-ai/openai/gpt-oss-20b":{input:.04,output:.15},"novita-ai/openai/gpt-oss-120b":{input:.05,output:.25},"novita-ai/microsoft/wizardlm-2-8x22b":{input:.62,output:.62},"novita-ai/sao10K/l3-70b-euryale-v2.1":{input:1.48,output:1.48},"novita-ai/sao10K/L3-8B-stheno-v3.2":{input:.05,output:.05},"novita-ai/sao10K/l3-8b-lunaris":{input:.05,output:.05},"novita-ai/sao10K/l31-70b-euryale-v2.2":{input:1.48,output:1.48},"302ai/grok-4-1-fast-reasoning":{input:.2,output:.5},"302ai/glm-4.6v":{input:.145,output:.43},"302ai/gpt-5.4":{input:2.5,output:15,cache_read:.25,cache_write:0,tiers:[{input:5,output:22.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5}},"302ai/glm-4.5":{input:.286,output:1.142},"302ai/claude-haiku-4-5":{input:1,output:5},"302ai/qwen3.7-max":{input:1.8,output:5.3},"302ai/gemini-3.1-flash-image-preview":{input:.5,output:60},"302ai/MiniMax-M3":{input:.72,output:2.88},"302ai/gpt-5.4-nano":{input:.2,output:1.25},"302ai/gemini-3.5-flash-thinking":{input:1.5,output:9},"302ai/gemini-3-pro-preview":{input:2,output:12},"302ai/glm-5v-turbo":{input:.72,output:3.2},"302ai/gemini-2.5-flash-image":{input:.3,output:30},"302ai/gpt-4o":{input:2.5,output:10},"302ai/glm-5.3-flash":{input:.075,output:.25},"302ai/glm-4.6":{input:.286,output:1.142},"302ai/qwen3-235b-a22b-instruct-2507":{input:.29,output:1.143},"302ai/qwen3.8-max":{input:2.16,output:6.36},"302ai/kimi-k3":{input:3,output:15},"302ai/gpt-5.6-sol-pro":{input:5,output:30},"302ai/gpt-5-mini":{input:.25,output:2},"302ai/qwen3.5-plus":{input:.12,output:.69},"302ai/claude-sonnet-4-6-thinking":{input:3,output:15},"302ai/glm-5":{input:.6,output:2.6},"302ai/gpt-4.1-nano":{input:.1,output:.4},"302ai/grok-4-fast-reasoning":{input:.2,output:.5},"302ai/kimi-k2.6":{input:.95,output:4},"302ai/gpt-5.2-chat-latest":{input:1.75,output:14},"302ai/gpt-5.1-chat-latest":{input:1.25,output:10},"302ai/MiniMax-M2.1":{input:.3,output:1.2},"302ai/gemini-2.5-flash-preview-09-2025":{input:.3,output:2.5},"302ai/glm-4.5v":{input:.29,output:.86},"302ai/claude-fable-5-1":{input:10,output:50},"302ai/gemini-3.6-flash":{input:1.5,output:7.5},"302ai/claude-opus-5-thinking":{input:5,output:25},"302ai/qwen3-coder-480b-a35b-instruct":{input:.86,output:3.43},"302ai/doubao-seed-1-6-vision-250815":{input:.114,output:1.143},"302ai/claude-sonnet-4-5-20250929-thinking":{input:3,output:15},"302ai/grok-4.3":{input:1.25,output:2.5},"302ai/kimi-k2-thinking":{input:.575,output:2.3},"302ai/grok-4-fast-non-reasoning":{input:.2,output:.5},"302ai/grok-4.20-beta-0309-reasoning":{input:2,output:6},"302ai/claude-opus-4-1-20250805":{input:15,output:75},"302ai/gpt-5-pro":{input:15,output:120},"302ai/claude-opus-4-5-20251101":{input:5,output:25},"302ai/gemini-3-pro-image-preview":{input:2,output:120},"302ai/gemini-3.5-flash-lite":{input:.3,output:2.5},"302ai/gemini-2.0-flash-lite":{input:.075,output:.3},"302ai/qwen3-235b-a22b":{input:.29,output:2.86},"302ai/gpt-6-astra":{input:10,output:50},"302ai/gemini-3.1-pro-preview":{input:2,output:12},"302ai/grok-4.5":{input:2,output:6},"302ai/gpt-5.6-luna-pro":{input:.2,output:1.2},"302ai/kimi-k2.5":{input:.66,output:3.3},"302ai/gpt-5.1":{input:1.25,output:10},"302ai/claude-opus-5":{input:5,output:25},"302ai/qwen3.7-max-2026-06-08":{input:1.8,output:5.3},"302ai/qwen3.6-35b-a3b":{input:.283,output:1.705},"302ai/kimi-k2-0905-preview":{input:.632,output:2.53},"302ai/deepseek-flash":{input:.15,output:.6,cache_read:.003},"302ai/gemini-3.5-flash":{input:1.5,output:9},"302ai/gemini-2.5-pro":{input:1.25,output:10},"302ai/qwen3.6-flash":{input:.188,output:1.133},"302ai/gemini-2.5-flash":{input:.3,output:2.5},"302ai/claude-fable-5":{input:10,output:50},"302ai/doubao-seed-1-6-thinking-250715":{input:.121,output:1.21},"302ai/gpt-5-thinking":{input:1.25,output:10},"302ai/MiniMax-M1":{input:.132,output:1.254},"302ai/MiniMax-M2.5":{input:.3,output:1.2},"302ai/gpt-5.4-mini":{input:.75,output:4.5},"302ai/glm-4.7":{input:.286,output:1.142},"302ai/gpt-5.6-luna":{input:.2,output:1.2},"302ai/MiniMax-M2.7":{input:.3,output:1.2},"302ai/qwen3.8-flash":{input:.18,output:.564},"302ai/gpt-5.2":{input:1.75,output:14},"302ai/deepseek-v3.2-thinking":{input:.29,output:.43},"302ai/claude-opus-4-8":{input:5,output:25},"302ai/gpt-5.5":{input:5,output:30},"302ai/claude-sonnet-4-5-20250929":{input:3,output:15},"302ai/gpt-4.1":{input:2,output:8},"302ai/claude-sonnet-5":{input:2,output:10},"302ai/qwen3.5-35b-a3b":{input:.06,output:.46},"302ai/qwen3-30b-a3b":{input:.11,output:1.08},"302ai/gemini-3.7-flash":{input:.75,output:3.75},"302ai/glm-5.2":{input:1.4,output:4.4},"302ai/gemini-2.5-flash-nothink":{input:.3,output:2.5},"302ai/doubao-seed-1-8-251215":{input:.114,output:.286},"302ai/claude-opus-4-1-20250805-thinking":{input:15,output:75},"302ai/glm-5.1":{input:1.4,output:4.4},"302ai/gemini-3-flash-preview":{input:.5,output:3},"302ai/claude-haiku-4-5-20251001":{input:1,output:5},"302ai/mistral-large-2512":{input:1.1,output:3.3},"302ai/MiniMax-M2":{input:.33,output:1.32},"302ai/gemini-2.5-flash-lite-preview-09-2025":{input:.1,output:.4},"302ai/gpt-4.1-mini":{input:.4,output:1.6},"302ai/gpt-5.6-terra-pro":{input:2,output:12},"302ai/gemini-3.8-flash":{input:.75,output:3.75},"302ai/ministral-14b-2512":{input:.33,output:.33},"302ai/glm-5-turbo":{input:.72,output:3.2},"302ai/grok-4.1":{input:2,output:10},"302ai/claude-sonnet-4-6":{input:3,output:15},"302ai/gpt-5.3-chat-latest":{input:1.75,output:14},"302ai/qwen3.6-plus":{input:.3,output:1.8},"302ai/gpt-5.6-terra":{input:2,output:12},"302ai/deepseek-v3.2":{input:.29,output:.43},"302ai/claude-opus-4-7-thinking":{input:5,output:25},"302ai/o3":{input:2,output:8},"302ai/glm-5.3":{input:1.4,output:4.4},"302ai/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"302ai/kimi-k2.7-code":{input:.95,output:4},"302ai/gpt-5":{input:1.25,output:10},"302ai/grok-4.6":{input:2,output:6},"302ai/gemini-3.1-flash-lite-preview":{input:.25,output:1.5},"302ai/qwen3-max-2025-09-23":{input:.86,output:3.43},"302ai/qwen3.7-plus":{input:.285,output:1.15},"302ai/gpt-5.6-sol":{input:5,output:30},"302ai/gemini-3.1-flash-lite":{input:.25,output:1.5},"openrouter/sao10k/l3-lunaris-8b":{input:.04,output:.05},"openrouter/sao10k/l3.3-euryale-70b":{input:.65,output:.75},"openrouter/sao10k/l3.1-euryale-70b":{input:.85,output:.85},"openrouter/kwaipilot/kat-coder-pro-v2.5":{input:.74,output:2.96,cache_read:.15},"openrouter/bytedance-seed/seed-1.6-flash":{input:.075,output:.3,tiers:[{input:.1,output:.8,tier:{type:"context",size:128e3}}]},"openrouter/bytedance-seed/seed-2.0-lite":{input:.25,output:2,tiers:[{input:.5,output:4,tier:{type:"context",size:128e3}}]},"openrouter/bytedance-seed/seed-2-1-turbo":{input:.5,output:2.5},"openrouter/bytedance-seed/seed-2.0-mini":{input:.1,output:.4,tiers:[{input:.2,output:.8,tier:{type:"context",size:128e3}}]},"openrouter/bytedance-seed/seed-2.0-code":{input:.5,output:3,tiers:[{input:1,output:6,tier:{type:"context",size:128e3}}]},"openrouter/bytedance-seed/seed-1.6":{input:.25,output:2,tiers:[{input:.5,output:4,tier:{type:"context",size:128e3}}]},"openrouter/~moonshotai/kimi-latest":{input:1.0301,output:9.043,cache_read:.3},"openrouter/poolside/laguna-s-2.1":{input:.09,output:.18,cache_read:.009},"openrouter/poolside/laguna-xs-2.1":{input:.06,output:.12,cache_read:.03},"openrouter/prism-ml/ternary-bonsai-2-27b":{input:.075,output:.5},"openrouter/anthropic/claude-opus-4.1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"openrouter/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"openrouter/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"openrouter/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"openrouter/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"openrouter/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"openrouter/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"openrouter/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"openrouter/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"openrouter/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"openrouter/anthropic/claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"openrouter/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"openrouter/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"openrouter/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"openrouter/cohere/command-r-08-2024":{input:.15,output:.6},"openrouter/cohere/command-a-plus":{input:.3,output:1.5,cache_read:.15},"openrouter/cohere/command-a":{input:2.5,output:10},"openrouter/cohere/command-r7b-12-2024":{input:.0375,output:.15},"openrouter/cohere/command-r-plus-08-2024":{input:2.5,output:10},"openrouter/deepseek/deepseek-chat-v3.1":{input:.25,output:.95,cache_read:.13},"openrouter/deepseek/deepseek-v4-flash-0731":{input:.021,output:.32,cache_read:.016},"openrouter/deepseek/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"openrouter/deepseek/deepseek-v4-flash-vision-exp":{input:.22,output:.66,cache_read:.007},"openrouter/deepseek/deepseek-r1-distill-llama-70b":{input:.8,output:.8},"openrouter/deepseek/deepseek-v3.1-terminus":{input:.27,output:1,cache_read:.135},"openrouter/deepseek/deepseek-chat":{input:.32,output:.89},"openrouter/deepseek/deepseek-v4-pro-0813":{input:.264,output:.792,cache_read:.0088},"openrouter/deepseek/deepseek-v3.2-exp":{input:.27,output:.41},"openrouter/deepseek/deepseek-chat-v3-0324":{input:.25,output:1},"openrouter/deepseek/deepseek-r1":{input:.7,output:2.5},"openrouter/deepseek/deepseek-v4-pro":{input:.348,output:.696,cache_read:.029},"openrouter/deepseek/deepseek-r1-0528":{input:.5,output:2.15,cache_read:.35},"openrouter/deepseek/deepseek-v3.2":{input:.269,output:.4,cache_read:.1345},"openrouter/deepseek/deepseek-v4-flash":{input:.04704,output:.09408,cache_read:.009408},"openrouter/unbiased/pareto":{input:2.5,output:7.5,cache_read:.25},"openrouter/tencent/hy3-preview":{input:.18,output:.6,cache_read:.06},"openrouter/tencent/hunyuan-a13b-instruct":{input:.14,output:.57},"openrouter/tencent/hy-mt2-30b-a3b":{input:.074,output:.295},"openrouter/tencent/hy-mt2-1.8b":{input:.044,output:.177},"openrouter/tencent/hy3":{input:.132,output:.528,cache_read:.033},"openrouter/tencent/hy-mt2-7b":{input:.074,output:.295},"openrouter/tencent/hy4-preview":{input:.834,output:2.501,cache_read:.042},"openrouter/anthracite-org/magnum-v4-72b":{input:2.5,output:5},"openrouter/meta-llama/llama-4-scout":{input:.1,output:.3},"openrouter/meta-llama/llama-guard-4-12b":{input:.18,output:.18},"openrouter/meta-llama/llama-4-maverick":{input:.1875,output:.6525},"openrouter/meta-llama/llama-3.3-70b-instruct":{input:.1,output:.32},"openrouter/meta-llama/llama-3.1-8b-instruct":{input:.05,output:.08,cache_read:.025},"openrouter/meta-llama/llama-3.2-1b-instruct":{input:.027,output:.201},"openrouter/meta-llama/llama-3.2-3b-instruct":{input:.05,output:.33},"openrouter/meta-llama/llama-3.1-70b-instruct":{input:.4,output:.4},"openrouter/~google/gemini-flash-latest":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"openrouter/~google/gemini-pro-latest":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"openrouter/perceptron/perceptron-mk1":{input:.15,output:1.5},"openrouter/perceptron/perceptron-mk1.5":{input:.15,output:1.5},"openrouter/z-ai/glm-4.6v":{input:.3,output:.9,cache_read:.055},"openrouter/z-ai/glm-4.5":{input:.6,output:2.2,cache_read:.11},"openrouter/z-ai/glm-5.3-prime":{input:2.8,output:8.8,cache_read:.56},"openrouter/z-ai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"openrouter/z-ai/glm-5.3-flash":{input:.04,output:.5,cache_read:.015},"openrouter/z-ai/glm-4.6":{input:.43,output:1.75,cache_read:.08},"openrouter/z-ai/glm-5":{input:.6,output:1.92,cache_read:.12},"openrouter/z-ai/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"openrouter/z-ai/glm-5.3-flashx":{input:.37,output:1.25,cache_read:.09},"openrouter/z-ai/glm-4.7-flash":{input:.0605,output:.4},"openrouter/z-ai/glm-4.7":{input:.6,output:2.2,cache_read:.11},"openrouter/z-ai/glm-5.2":{input:.6496,output:2.0416,cache_read:.12064},"openrouter/z-ai/glm-5.1":{input:.9646,output:3.0316,cache_read:.17914},"openrouter/z-ai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"openrouter/z-ai/glm-4.5-air":{input:.13,output:.85,cache_read:.025},"openrouter/z-ai/glm-5.3":{input:.3794,output:1.1924,cache_read:.07046},"openrouter/inference-net/schematron-v2-small":{input:.05,output:.23,cache_read:.05},"openrouter/inference-net/schematron-v2-turbo":{input:.03,output:.15,cache_read:.03},"openrouter/thinkingmachines/inkling-small":{input:.45,output:1.2,cache_read:.1},"openrouter/thinkingmachines/inkling":{input:1,output:4.05,cache_read:.17},"openrouter/meituan/longcat-2.0":{input:.3,output:1.2,cache_read:.006},"openrouter/perplexity/sonar-pro":{input:3,output:15},"openrouter/perplexity/sonar-deep-research":{input:2,output:8,reasoning:3},"openrouter/perplexity/sonar":{input:1,output:1},"openrouter/perplexity/sonar-reasoning-pro":{input:2,output:8},"openrouter/perplexity/sonar-pro-search":{input:3,output:15},"openrouter/meta/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"openrouter/meta/muse-glimmer-30b":{input:.3,output:1.2,cache_read:.04},"openrouter/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"openrouter/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"openrouter/meta/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"openrouter/meta/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"openrouter/nousresearch/hermes-3-llama-3.1-70b":{input:.7,output:.7},"openrouter/nousresearch/hermes-3-llama-3.1-405b":{input:1,output:1},"openrouter/nousresearch/hermes-4-405b":{input:1,output:3},"openrouter/~z-ai/glm-flash-latest":{input:.04,output:.5,cache_read:.015},"openrouter/~z-ai/glm-latest":{input:.3794,output:1.1924,cache_read:.07046},"openrouter/arcee-ai/trinity-large-thinking":{input:.25,output:.8,cache_read:.06},"openrouter/~openai/gpt-terra-latest":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"openrouter/~openai/gpt-luna-latest":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"openrouter/~openai/gpt-sol-latest":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"openrouter/~openai/gpt-astra-latest":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"openrouter/~openai/gpt-mini-latest":{input:.75,output:4.5,cache_read:.075},"openrouter/cognitivecomputations/dolphin-mistral-24b-venice-edition":{input:.2,output:.9},"openrouter/thedrummer/skyfall-36b-v2":{input:.55,output:.8,cache_read:.25},"openrouter/thedrummer/unslopnemo-12b":{input:.4,output:.4},"openrouter/thedrummer/cydonia-24b-v4.1":{input:.3,output:.5,cache_read:.15},"openrouter/baidu/ernie-4.5-vl-424b-a47b":{input:.42,output:1.25},"openrouter/x-ai/grok-4.20-multi-agent":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"openrouter/x-ai/grok-4.7":{input:1.6,output:4.8,cache_read:.4,tiers:[{input:3.2,output:9.6,cache_read:.8,tier:{type:"context",size:2e5}}],context_over_200k:{input:3.2,output:9.6,cache_read:.8}},"openrouter/x-ai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"openrouter/x-ai/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6}},"openrouter/x-ai/grok-build-0.1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4}},"openrouter/x-ai/grok-4.20":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"openrouter/x-ai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"openrouter/~anthropic/claude-opus-latest":{input:4,output:20,cache_read:.2,cache_write:5},"openrouter/~anthropic/claude-haiku-latest":{input:1,output:5,cache_read:.1,cache_write:1.25},"openrouter/~anthropic/claude-sonnet-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"openrouter/~anthropic/claude-fable-latest":{input:10,output:50,cache_read:.25,cache_write:12.5},"openrouter/upstage/solar-pro-3":{input:.15,output:.6,cache_read:.015},"openrouter/upstage/solar-pro4":{input:.09,output:.36,cache_read:.018},"openrouter/upstage/solar-mini4":{input:.05,output:.2,cache_read:.005},"openrouter/~deepseek/deepseek-flash-latest":{input:.035,output:.29,cache_read:.001},"openrouter/~deepseek/deepseek-pro-latest":{input:.24948,output:.74844,cache_read:.007938},"openrouter/~deepseek/deepseek-v4-flash-latest":{input:.021,output:.32,cache_read:.016},"openrouter/~x-ai/grok-latest":{input:1.6,output:4.8,cache_read:.4,tiers:[{input:3.2,output:9.6,cache_read:.8,tier:{type:"context",size:2e5}}],context_over_200k:{input:3.2,output:9.6,cache_read:.8}},"openrouter/bytedance/ui-tars-1.5-7b":{input:.1,output:.2,cache_read:.1},"openrouter/google/gemma-4-31b-it":{input:.09,output:.34,cache_read:.05},"openrouter/google/gemini-3.1-flash-image-preview":{input:.5,output:3},"openrouter/google/gemma-3-27b-it":{input:.08,output:.45,cache_read:.04},"openrouter/google/gemini-2.5-flash-image":{input:.3,output:2.5,cache_read:.03,cache_write:.083333},"openrouter/google/gemma-2-27b-it":{input:.65,output:.65},"openrouter/google/gemini-3.6-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"openrouter/google/gemma-4-26b-a4b-it":{input:.0675,output:.225,cache_read:.0375},"openrouter/google/gemini-3-pro-image-preview":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375},"openrouter/google/gemini-3.5-flash-lite":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333},"openrouter/google/gemini-3.1-flash-image":{input:.5,output:3},"openrouter/google/gemini-3.1-pro-preview":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"openrouter/google/gemma-3-12b-it":{input:.05,output:.15},"openrouter/google/gemini-3.5-flash":{input:1.5,output:9,reasoning:9,cache_read:.15,cache_write:.083333},"openrouter/google/gemini-2.5-pro":{input:1.25,output:10,reasoning:10,cache_read:.125,cache_write:.375,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"openrouter/google/gemini-3-pro-image":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375},"openrouter/google/gemini-2.5-flash":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333},"openrouter/google/gemini-3.1-flash-lite-image":{input:.25,output:1.5},"openrouter/google/gemini-3.7-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"openrouter/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"openrouter/google/gemini-3-flash-preview":{input:.5,output:3,reasoning:3,cache_read:.05,cache_write:.083333},"openrouter/google/gemini-3.8-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667},"openrouter/google/gemma-3-4b-it":{input:.05,output:.1},"openrouter/google/gemini-2.5-flash-lite":{input:.1,output:.4,reasoning:.4,cache_read:.01,cache_write:.083333},"openrouter/google/gemini-2.5-pro-preview":{input:1.25,output:10,reasoning:10,cache_read:.125,cache_write:.375,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"openrouter/google/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333},"openrouter/google/gemini-3.1-flash-lite":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333},"openrouter/writer/palmyra-x5":{input:.6,output:6},"openrouter/ibm-granite/granite-4.0-h-micro":{input:.017,output:.112},"openrouter/ibm-granite/granite-4.2-8b":{input:.06,output:.25,cache_read:.015},"openrouter/fireworks/ember-1":{input:3,output:15,cache_read:.3},"openrouter/mistralai/mistral-nemo":{input:.019,output:.03},"openrouter/mistralai/ministral-8b-2512":{input:.15,output:.15,cache_read:.015},"openrouter/mistralai/mistral-small-24b-instruct-2501":{input:.05,output:.08},"openrouter/mistralai/devstral-2512":{input:.4,output:2,cache_read:.04},"openrouter/mistralai/mistral-saba":{input:.2,output:.6,cache_read:.02},"openrouter/mistralai/mistral-medium-3-5":{input:1.5,output:7.5},"openrouter/mistralai/mistral-medium-3.1":{input:.4,output:2,cache_read:.04},"openrouter/mistralai/mistral-small-3.2-24b-instruct":{input:.09375,output:.25},"openrouter/mistralai/mistral-large":{input:2,output:6,cache_read:.2},"openrouter/mistralai/mistral-small-2603":{input:.15,output:.6,cache_read:.015},"openrouter/mistralai/mistral-medium-3":{input:.4,output:2,cache_read:.04},"openrouter/mistralai/voxtral-small-24b-2507":{input:.1,output:.3,cache_read:.01},"openrouter/mistralai/mistral-large-2512":{input:.5,output:1.5,cache_read:.05},"openrouter/mistralai/mistral-large-2407":{input:2,output:6,cache_read:.2},"openrouter/mistralai/ministral-14b-2512":{input:.2,output:.2,cache_read:.02},"openrouter/mistralai/mistral-small-3.1-24b-instruct":{input:.351,output:.555},"openrouter/mistralai/ministral-3b-2512":{input:.1,output:.1,cache_read:.01},"openrouter/mistralai/mixtral-8x22b-instruct":{input:2,output:6,cache_read:.2},"openrouter/mistralai/codestral-2508":{input:.3,output:.9,cache_read:.03},"openrouter/sakana/fugu-max":{input:2,output:6,cache_read:.25},"openrouter/sakana/fugu-ultra-v2":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"openrouter/sakana/fugu-ultra":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"openrouter/sakana/sakana-namazu":{input:.95,output:4,cache_read:.15},"openrouter/inclusionai/ling-3.0-flash":{input:.021,output:.063,cache_read:.0042},"openrouter/inclusionai/ling-3.0-flash-vl":{input:.021,output:.0616,cache_read:.0042},"openrouter/inclusionai/ling-3.0-flash-fin":{input:.06,output:.18,cache_read:.012},"openrouter/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"openrouter/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"openrouter/moonshotai/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.15},"openrouter/moonshotai/kimi-k2.5":{input:.45,output:2.25,cache_read:.07},"openrouter/moonshotai/kimi-k2-0905":{input:.6,output:2.5},"openrouter/moonshotai/kimi-k2":{input:.57,output:2.3},"openrouter/moonshotai/kimi-k2.7-code":{input:.6562,output:3.3,cache_read:.18},"openrouter/rekaai/reka-flash-3":{input:.1,output:.2},"openrouter/rekaai/reka-edge":{input:.1,output:.1},"openrouter/nvidia/nemotron-3-nano-30b-a3b":{input:.05,output:.2,cache_read:.03},"openrouter/nvidia/nemotron-3.5-lightning":{input:.08,output:.2,cache_read:.04},"openrouter/nvidia/nemotron-3-super-120b-a12b":{input:.08,output:.45},"openrouter/nvidia/nemotron-3-ultra-550b-a55b":{input:.6,output:2.4,cache_read:.12},"openrouter/nvidia/nemotron-3.5-content-safety":{input:.2,output:.2},"openrouter/xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"openrouter/xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.0028},"openrouter/xiaomi/mimo-v2.6-pro-ultraspeed":{input:4.35,output:8.7,cache_read:.036},"openrouter/xiaomi/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036},"openrouter/xiaomi/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"openrouter/undi95/remm-slerp-l2-13b":{input:.35,output:.65},"openrouter/gryphe/mythomax-l2-13b":{input:.08,output:.11},"openrouter/minimax/minimax-m2.5":{input:.27,output:1.08,cache_read:.027},"openrouter/minimax/minimax-01":{input:.2,output:1.1},"openrouter/minimax/minimax-m2-her":{input:.3,output:1.2,cache_read:.03},"openrouter/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"openrouter/minimax/minimax-m1":{input:.4,output:2.2},"openrouter/minimax/minimax-m3":{input:.3,output:1.2,cache_read:.06},"openrouter/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03},"openrouter/minimax/minimax-m2":{input:.3,output:1.2},"openrouter/mancer/weaver":{input:.4,output:.75},"openrouter/stepfun/step-3.5-flash":{input:.1,output:.3},"openrouter/stepfun/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"openrouter/inception/mercury-2.5":{input:.04,output:.15,cache_read:.004},"openrouter/inception/mercury-2":{input:.25,output:.75,cache_read:.025},"openrouter/amazon/nova-lite-v1":{input:.06,output:.24},"openrouter/amazon/nova-2-lite-v1":{input:.3,output:2.5},"openrouter/amazon/nova-pro-v1":{input:.8,output:3.2},"openrouter/amazon/nova-premier-v1":{input:2.5,output:12.5,cache_read:.625},"openrouter/amazon/nova-micro-v1":{input:.035,output:.14},"openrouter/relace/relace-search":{input:1,output:3},"openrouter/relace/relace-apply-3":{input:.85,output:1.25},"openrouter/aion-labs/aion-2.0":{input:.8,output:1.6,cache_read:.2},"openrouter/aion-labs/aion-rp-llama-3.1-8b":{input:.8,output:1.6},"openrouter/aion-labs/aion-3.0":{input:3,output:6,cache_read:.75},"openrouter/aion-labs/aion-3.5":{input:3,output:6,cache_read:.75},"openrouter/aion-labs/aion-3.5-mini":{input:.7,output:1.4,cache_read:.18},"openrouter/aion-labs/aion-3.0-mini":{input:.7,output:1.4,cache_read:.18},"openrouter/qwen/qwen3-235b-a22b-2507":{input:.0875,output:.35,cache_read:.0175},"openrouter/qwen/qwen3-vl-235b-a22b-instruct":{input:.21,output:1.9,cache_read:.1},"openrouter/qwen/qwen3.7-max":{input:1.475,output:4.425,cache_read:.295,cache_write:1.84375},"openrouter/qwen/qwen3.8-27b":{input:.42,output:3,cache_read:.085},"openrouter/qwen/qwen3-vl-235b-a22b-thinking":{input:.4,output:4},"openrouter/qwen/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25},"openrouter/qwen/qwen3.5-27b":{input:.195,output:1.56},"openrouter/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"openrouter/qwen/qwen3-coder-next":{input:.12,output:.8,cache_read:.07},"openrouter/qwen/qwen3-coder":{input:.3,output:1,cache_read:.1},"openrouter/qwen/qwen3-32b":{input:.08,output:.28},"openrouter/qwen/qwen-plus":{input:.26,output:.78,cache_read:.052,cache_write:.325,tiers:[{input:.78,output:2.34,cache_read:.156,cache_write:.975,tier:{type:"context",size:256e3}}],context_over_200k:{input:.78,output:2.34,cache_read:.156,cache_write:.975}},"openrouter/qwen/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.038,tiers:[{input:.1,output:.4,cache_read:.02,cache_write:.125,tier:{type:"context",size:32e3}},{input:.2,output:.8,cache_read:.04,cache_write:.25,tier:{type:"context",size:256e3}}]},"openrouter/qwen/qwen3-max":{input:.78,output:3.9,cache_read:.156,cache_write:.975,tiers:[{input:1.56,output:7.8,cache_read:.312,cache_write:1.95,tier:{type:"context",size:32e3}},{input:1.95,output:9.75,cache_read:.39,cache_write:2.4375,tier:{type:"context",size:128e3}}]},"openrouter/qwen/qwen3-coder-30b-a3b-instruct":{input:.07,output:.28},"openrouter/qwen/qwen3.8-omni-flash":{input:.15,output:.47,cache_read:.016},"openrouter/qwen/qwen3-vl-30b-a3b-instruct":{input:.15,output:.6},"openrouter/qwen/qwen3-235b-a22b-thinking-2507":{input:.23,output:2.3},"openrouter/qwen/qwen3-235b-a22b":{input:.455,output:1.82},"openrouter/qwen/qwen3.5-122b-a10b":{input:.26,output:2.08},"openrouter/qwen/qwen-plus-2025-07-28":{input:.26,output:.78,tiers:[{input:.78,output:2.34,tier:{type:"context",size:256e3}}],context_over_200k:{input:.78,output:2.34}},"openrouter/qwen/qwen3.6-35b-a3b":{input:.15,output:1,cache_read:.05},"openrouter/qwen/qwen3-next-80b-a3b-instruct":{input:.1,output:1.1,cache_read:.07},"openrouter/qwen/qwen3-vl-30b-a3b-thinking":{input:.2,output:2.4},"openrouter/qwen/qwen3.6-flash":{input:.1875,output:1.125,cache_write:.234375,tiers:[{input:.75,output:3,cache_write:.9375,tier:{type:"context",size:256e3}}],context_over_200k:{input:.75,output:3,cache_write:.9375}},"openrouter/qwen/qwen3-coder-flash":{input:.195,output:.975,cache_read:.039,cache_write:.24375,tiers:[{input:.325,output:1.625,cache_read:.065,cache_write:.40625,tier:{type:"context",size:32e3}},{input:.52,output:2.6,cache_read:.104,cache_write:.65,tier:{type:"context",size:128e3}}]},"openrouter/qwen/qwen-2.5-coder-32b-instruct":{input:.66,output:1},"openrouter/qwen/qwen3.5-flash-02-23":{input:.065,output:.26},"openrouter/qwen/qwen3-max-thinking":{input:.78,output:3.9,tiers:[{input:1.56,output:7.8,tier:{type:"context",size:32e3}},{input:1.95,output:9.75,tier:{type:"context",size:128e3}}]},"openrouter/qwen/qwen3-coder-plus":{input:.65,output:3.25,cache_read:.13,cache_write:.8125,tiers:[{input:1.17,output:5.85,cache_read:.234,cache_write:1.4625,tier:{type:"context",size:32e3}},{input:1.95,output:9.75,cache_read:.39,cache_write:2.4375,tier:{type:"context",size:128e3}}]},"openrouter/qwen/qwen3.5-9b":{input:.1,output:.15},"openrouter/qwen/qwen3.8-max-prime":{input:4,output:12,cache_read:.5},"openrouter/qwen/qwen3.5-plus-20260420":{input:.3,output:1.8,cache_write:.375,tiers:[{input:.375,output:2.25,cache_write:.46875,tier:{type:"context",size:256e3}}],context_over_200k:{input:.375,output:2.25,cache_write:.46875}},"openrouter/qwen/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"openrouter/qwen/qwen3.5-35b-a3b":{input:.3125,output:1.25,cache_read:.15625},"openrouter/qwen/qwen3.6-max-preview":{input:1.027,output:6.162,cache_write:1.28375,tiers:[{input:1.58,output:9.48,cache_write:1.975,tier:{type:"context",size:128e3}}]},"openrouter/qwen/qwen3-30b-a3b":{input:.12,output:.5},"openrouter/qwen/qwen3.5-397b-a17b":{input:.55,output:3.5,cache_read:.225},"openrouter/qwen/qwen3-8b":{input:.117,output:.455},"openrouter/qwen/qwen3-vl-32b-instruct":{input:.104,output:.416},"openrouter/qwen/qwen3-vl-8b-instruct":{input:.117,output:.455},"openrouter/qwen/qwen3-30b-a3b-instruct-2507":{input:.1,output:.3},"openrouter/qwen/qwen2.5-vl-72b-instruct":{input:.8,output:1,cache_read:.4},"openrouter/qwen/qwen-2.5-7b-instruct":{input:.1,output:.2},"openrouter/qwen/qwen3.5-plus-02-15":{input:.26,output:1.56,tiers:[{input:.325,output:1.95,tier:{type:"context",size:256e3}}],context_over_200k:{input:.325,output:1.95}},"openrouter/qwen/qwen-2.5-72b-instruct":{input:.36,output:.4},"openrouter/qwen/qwen3-30b-a3b-thinking-2507":{input:.2,output:2.4},"openrouter/qwen/qwen3.6-27b":{input:.32,output:3.2},"openrouter/qwen/qwen3.6-plus":{input:.325,output:1.95,cache_write:.40625,tiers:[{input:1.3,output:3.9,cache_write:1.625,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.3,output:3.9,cache_write:1.625}},"openrouter/qwen/qwen3-14b":{input:.12,output:.24},"openrouter/qwen/qwen3-vl-8b-thinking":{input:.18,output:2.1},"openrouter/qwen/qwen3.7-plus":{input:.32,output:1.28,cache_read:.064,cache_write:.4,tiers:[{input:.96,output:3.84,cache_read:.192,cache_write:1.2,tier:{type:"context",size:256e3}}],context_over_200k:{input:.96,output:3.84,cache_read:.192,cache_write:1.2}},"openrouter/qwen/qwen3.8-max-0902":{input:2,output:6,cache_read:.25,cache_write:2.5},"openrouter/morph/morph-v3-large":{input:.9,output:1.9},"openrouter/morph/morph-v3-fast":{input:.8,output:1.2},"openrouter/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"openrouter/openai/gpt-5.4-image-2":{input:8,output:15,cache_read:2},"openrouter/openai/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"openrouter/openai/gpt-audio":{input:2.5,output:10},"openrouter/openai/gpt-3.5-turbo":{input:.5,output:1.5},"openrouter/openai/gpt-6-astra-pro":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"openrouter/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"openrouter/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"openrouter/openai/gpt-4o-2024-05-13":{input:5,output:15},"openrouter/openai/gpt-4o-mini-2024-07-18":{input:.15,output:.6,cache_read:.075},"openrouter/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"openrouter/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.13},"openrouter/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"openrouter/openai/gpt-chat-latest":{input:5,output:30,cache_read:.5},"openrouter/openai/gpt-audio-mini":{input:.6,output:2.4},"openrouter/openai/gpt-5.6-sol-pro":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"openrouter/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"openrouter/openai/gpt-5.2-pro":{input:21,output:168},"openrouter/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"openrouter/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"openrouter/openai/gpt-4":{input:30,output:60},"openrouter/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"openrouter/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"openrouter/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"openrouter/openai/o1":{input:15,output:60,cache_read:7.5},"openrouter/openai/gpt-5-pro":{input:15,output:120},"openrouter/openai/gpt-3.5-turbo-instruct":{input:1.5,output:2},"openrouter/openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"openrouter/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"openrouter/openai/gpt-5.6-luna-pro":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"openrouter/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"openrouter/openai/gpt-5-image-mini":{input:2.5,output:2,cache_read:.25},"openrouter/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"openrouter/openai/o3-pro":{input:20,output:80},"openrouter/openai/gpt-oss-20b":{input:.018,output:.09},"openrouter/openai/gpt-oss-safeguard-20b":{input:.075,output:.3,cache_read:.0375},"openrouter/openai/o3-mini-high":{input:1.1,output:4.4,cache_read:.55},"openrouter/openai/gpt-3.5-turbo-16k":{input:3,output:4},"openrouter/openai/gpt-5.2-chat":{input:1.75,output:14,cache_read:.175},"openrouter/openai/gpt-6-sol-pro":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"openrouter/openai/gpt-5-image":{input:10,output:10,cache_read:1.25},"openrouter/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"openrouter/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"openrouter/openai/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"openrouter/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"openrouter/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"openrouter/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"openrouter/openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"openrouter/openai/gpt-3.5-turbo-0613":{input:1,output:2},"openrouter/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"openrouter/openai/gpt-5.6-terra-pro":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"openrouter/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"openrouter/openai/o4-mini-high":{input:1.1,output:4.4,cache_read:.275},"openrouter/openai/gpt-6-luna-pro":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"openrouter/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"openrouter/openai/gpt-4-turbo":{input:10,output:30},"openrouter/openai/gpt-oss-120b":{input:.15,output:.6,cache_read:.075},"openrouter/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.03},"openrouter/openai/o3":{input:2,output:8,cache_read:.5},"openrouter/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"openrouter/openai/gpt-5.6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"openrouter/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"openrouter/openai/o1-pro":{input:150,output:600},"openrouter/microsoft/phi-4":{input:.07,output:.14},"openrouter/microsoft/wizardlm-2-8x22b":{input:.62,output:.62},"perplexity/sonar-pro":{input:3,output:15},"perplexity/sonar-deep-research":{input:2,output:8,reasoning:3},"perplexity/sonar":{input:1,output:1},"perplexity/sonar-reasoning-pro":{input:2,output:8},"iteracompute/deepseek/deepseek-v4-flash-0731":{input:.34,output:1.05,cache_read:.035},"iteracompute/deepseek/deepseek-v4-pro-0813":{input:1.1,output:3.3,cache_read:.11},"iteracompute/z-ai/glm-5.3-flash":{input:.14,output:.49,cache_read:.03},"iteracompute/z-ai/glm-5.3":{input:1.2,output:3.5,cache_read:.26},"iteracompute/moonshotai/kimi-k3":{input:3,output:14.9,cache_read:.29},"iteracompute/minimax/minimax-m3":{input:.29,output:1.2,cache_read:.08},"iteracompute/ornith-ai/ornith-1.5-35b-a3b":{input:.3,output:3,cache_read:.03},"iteracompute/qwen/qwen3.8-27b":{input:.3,output:2.5,cache_read:.03},"iteracompute/qwen/qwen3.8-2.4t-a95b":{input:1.95,output:5.95,cache_read:.2},"meta/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"meta/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"meta/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"cline-pass/cline-pass/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"cline-pass/cline-pass/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"cline-pass/cline-pass/mimo-v2.5":{input:.14,output:.28,cache_read:.0028},"cline-pass/cline-pass/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"cline-pass/cline-pass/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"cline-pass/cline-pass/kimi-k3":{input:3,output:15,cache_read:.3},"cline-pass/cline-pass/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"cline-pass/cline-pass/kimi-k2.6":{input:.95,output:4,cache_read:.16},"cline-pass/cline-pass/mimo-v2.5-pro":{input:1.74,output:3.48,cache_read:.0145},"cline-pass/cline-pass/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"cline-pass/cline-pass/minimax-m3":{input:.3,output:1.2,cache_read:.06},"cline-pass/cline-pass/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"cline-pass/cline-pass/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.0145},"cline-pass/cline-pass/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"cline-pass/cline-pass/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"cline-pass/cline-pass/qwen3.7-plus":{input:.4,output:1.6,cache_read:.04,cache_write:.5,tiers:[{input:1.2,output:4.8,cache_read:.12,cache_write:1.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.2,output:4.8,cache_read:.12,cache_write:1.5}},"cline-pass/cline-pass/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"modal/thinkingmachines/Inkling-NVFP4":{input:1.2,output:5,cache_read:.27},"modal/Qwen/Qwen3.8-2.4T-A95B":{input:2,output:6,cache_read:.25},"modal/moonshotai/Kimi-K3":{input:3,output:15,reasoning:15,cache_read:.3},"modal/zai-org/GLM-5.3-Flash":{input:.45,output:1.5,cache_read:.09},"coralbricks/glm-5.3-fp4":{input:1.12,output:4.4,cache_read:0,cache_write:1.68},"coralbricks/glm-5.3-flash-fp4":{input:.15,output:.5,cache_read:0,cache_write:.23},"coralbricks/gpt-oss-120b":{input:.12,output:.6,cache_read:0,cache_write:.18},"coralbricks/deepseek-v4.1-flash-fast-fp4":{input:.3,output:1.2,cache_read:0,cache_write:.09},"routing-run/nemotron-3-ultra":{input:.1,output:.1},"routing-run/kimi-k2.6":{input:.275,output:1.1},"routing-run/qwen3.5-9b":{input:.16,output:.48},"routing-run/gpt-5.6-luna":{input:.7,output:4.2},"routing-run/claude-opus-4-8":{input:5,output:25},"routing-run/glm-5.2-nitro":{input:.8,output:2.4},"routing-run/glm-5.2":{input:.8,output:2.4},"routing-run/kimi-k2.6-nitro":{input:.275,output:1.1},"routing-run/deepseek-v4-pro":{input:.348,output:.696},"routing-run/claude-sonnet-4-6":{input:3,output:15},"routing-run/kimi-k2.7-code-nitro":{input:.275,output:1.1},"routing-run/gpt-5.6-terra":{input:1.5,output:9},"routing-run/kimi-k2.7-code":{input:.275,output:1.1},"routing-run/gpt-5.6-sol":{input:2.5,output:15},"routing-run/deepseek-v4-flash":{input:.112,output:.224},"echo/echo":{input:10,output:50},"neuralwatt/glm-5.2-short-fast":{input:1.45,output:4.5,cache_read:.145},"neuralwatt/kimi-k3-flex":{input:1.95,output:9.75,cache_read:.195},"neuralwatt/deepseek-v4-flash-flex":{input:.091,output:.182,cache_read:.0182},"neuralwatt/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"neuralwatt/glm-5.2-short-flex":{input:.9425,output:2.925,cache_read:.09425},"neuralwatt/qwen3.6-35b":{input:.29,output:1.15,cache_read:.029},"neuralwatt/glm-5.2-fast":{input:1.45,output:4.5,cache_read:.145},"neuralwatt/kimi-k3":{input:3,output:15,cache_read:.3},"neuralwatt/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.015},"neuralwatt/kimi-k3-fast":{input:3,output:15,cache_read:.3},"neuralwatt/qwen3.6-35b-flex":{input:.1885,output:.7475,cache_read:.01885},"neuralwatt/qwen-3.8-27b":{input:.45,output:3.2,cache_read:.25},"neuralwatt/glm-5.2-short":{input:1.45,output:4.5,cache_read:.145},"neuralwatt/glm-5.3-flash-flex":{input:.0975,output:.325,cache_read:.0195},"neuralwatt/qwen3.6-35b-fast":{input:.29,output:1.15,cache_read:.029},"neuralwatt/glm-5.2-flex":{input:.9425,output:2.925,cache_read:.09425},"neuralwatt/deepseek-v4-flash-speed":{input:.14,output:.28,cache_read:.028},"neuralwatt/glm-5.2":{input:1.45,output:4.5,cache_read:.145},"neuralwatt/glm-5.2-short-fast-flex":{input:.9425,output:2.925,cache_read:.09425},"neuralwatt/kimi-k2.7-code-fast":{input:.95,output:4,cache_read:.095},"neuralwatt/gemma-4-31b":{input:.144,output:.42,cache_read:.0144},"neuralwatt/glm-5.3-flex":{input:.9425,output:2.925,cache_read:.09425},"neuralwatt/deepseek-v4-pro":{input:1,output:3,cache_read:.1},"neuralwatt/qwen-3.8-27b-flex":{input:.2925,output:2.08,cache_read:.1625},"neuralwatt/kimi-k2.7-code-flex":{input:.6175,output:2.6,cache_read:.06175},"neuralwatt/glm-5.3":{input:1.45,output:4.5,cache_read:.145},"neuralwatt/kimi-k2.7-code":{input:.95,output:4,cache_read:.095},"neuralwatt/deepseek-v4.1-flash-flex":{input:.0975,output:.39,cache_read:.00975},"neuralwatt/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"infer/infer/gpt-6-astra:official":{input:12.5,output:62.5,cache_read:1.25,cache_write:15.625},"infer/infer/gpt-5.6-sol:official":{input:2.5,output:12.5,cache_read:.25,cache_write:3.125},"azure/grok-4-1-fast-reasoning":{input:.2,output:.5,cache_read:.05},"azure/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"azure/deepseek-v3.2-speciale":{input:.58,output:1.68},"azure/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"azure/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"azure/grok-4-1-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"azure/phi-4-reasoning":{input:.125,output:.5},"azure/text-embedding-3-small":{input:.02,output:0},"azure/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"azure/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"azure/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"azure/gpt-4o":{input:2.5,output:10,cache_read:1.25},"azure/ministral-3b":{input:.04,output:.04},"azure/gpt-chat-latest":{input:5,output:30,cache_read:.5},"azure/gpt-5-codex":{input:1.25,output:10,cache_read:.13},"azure/gpt-5-mini":{input:.25,output:2,cache_read:.03},"azure/gpt-image-2":{input:5,output:30,cache_read:1.25},"azure/o4-mini":{input:1.1,output:4.4,cache_read:.275},"azure/llama-4-maverick-17b-128e-instruct-fp8":{input:.25,output:1},"azure/o3-mini":{input:1.1,output:4.4,cache_read:.55},"azure/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure/text-embedding-ada-002":{input:.1,output:0},"azure/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"azure/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"azure/gpt-5-nano":{input:.05,output:.4,cache_read:.01},"azure/phi-4-multimodal":{input:.08,output:.32,input_audio:4},"azure/kimi-k2.6":{input:.95,output:4},"azure/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"azure/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"azure/gpt-image-2.5-flare":{input:5,output:30,cache_read:1.25},"azure/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"azure/mistral-medium-2505":{input:.4,output:2},"azure/cohere-embed-v3-multilingual":{input:.1,output:0},"azure/o1":{input:15,output:60,cache_read:7.5},"azure/codex-mini":{input:1.5,output:6,cache_read:.375},"azure/phi-4-reasoning-plus":{input:.125,output:.5},"azure/claude-mythos-5":{input:10,output:50,cache_read:1,cache_write:12.5},"azure/gpt-5-pro":{input:15,output:120},"azure/gpt-3.5-turbo-instruct":{input:1.5,output:2},"azure/gpt-3.5-turbo-0125":{input:.5,output:1.5},"azure/text-embedding-3-large":{input:.13,output:0},"azure/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"azure/cohere-embed-v-4-0":{input:.12,output:0},"azure/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"azure/codestral-2501":{input:.3,output:.9},"azure/kimi-k2.5":{input:.6,output:3},"azure/gpt-5.1":{input:1.25,output:10,cache_read:.125},"azure/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure/llama-3.3-70b-instruct":{input:.71,output:.71},"azure/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"azure/cohere-command-a":{input:2.5,output:10},"azure/cohere-embed-v3-english":{input:.1,output:0},"azure/model-router":{input:.14,output:0},"azure/gpt-image-2.5-sunburst":{input:5,output:30,cache_read:1.25},"azure/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"azure/gpt-image-1":{input:5,output:40,cache_read:1.25},"azure/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"azure/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"azure/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"azure/gpt-5.2":{input:1.75,output:14,cache_read:.125},"azure/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"azure/phi-4":{input:.125,output:.5},"azure/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"azure/mistral-small-2503":{input:.1,output:.3},"azure/phi-4-mini-reasoning":{input:.075,output:.3},"azure/gpt-4.1":{input:2,output:8,cache_read:.5},"azure/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"azure/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"azure/gpt-4-turbo-vision":{input:10,output:30},"azure/grok-4-20-non-reasoning":{input:2,output:6},"azure/gpt-3.5-turbo-1106":{input:1,output:2},"azure/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"azure/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"azure/deepseek-r1":{input:1.35,output:5.4},"azure/deepseek-v4-pro":{input:1.74,output:3.48},"azure/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"azure/llama-4-scout-17b-16e-instruct":{input:.2,output:.78},"azure/gpt-image-1.5":{input:5,output:32,cache_read:1.25},"azure/grok-4-20-reasoning":{input:2,output:6},"azure/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"azure/deepseek-v3.2":{input:.58,output:1.68},"azure/gpt-4-turbo":{input:10,output:30},"azure/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"azure/o3":{input:2,output:8,cache_read:.5},"azure/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"azure/gpt-5":{input:1.25,output:10,cache_read:.13},"azure/gpt-5.6-sol":{input:4,output:20,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:45,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1,cache_write:12.5}},"azure/phi-4-mini":{input:.075,output:.3},"azure/deepseek-v4-flash":{input:.19,output:.51},"azure/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"freemodel/gpt-5.4":{input:2.5,output:15,cache_read:.25,cache_write:2.5},"freemodel/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175,cache_write:1.75},"freemodel/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"freemodel/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075,cache_write:.75},"freemodel/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"freemodel/gpt-5.5":{input:5,output:30,cache_read:.5,cache_write:5},"freemodel/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"freemodel/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"freemodel/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"freemodel/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure-cognitive-services/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"azure-cognitive-services/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"azure-cognitive-services/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"azure-cognitive-services/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"azure-cognitive-services/gpt-chat-latest":{input:5,output:30,cache_read:.5},"azure-cognitive-services/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure-cognitive-services/kimi-k2.6":{input:.95,output:4},"azure-cognitive-services/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"azure-cognitive-services/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"azure-cognitive-services/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"azure-cognitive-services/claude-mythos-5":{input:10,output:50,cache_read:1,cache_write:12.5},"azure-cognitive-services/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"azure-cognitive-services/kimi-k2.5":{input:.6,output:3},"azure-cognitive-services/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure-cognitive-services/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"azure-cognitive-services/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"azure-cognitive-services/gpt-5.6-luna":{input:1,output:6,cache_read:.1,cache_write:1.25,tiers:[{input:2,output:9,cache_read:.2,cache_write:2.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:2,output:9,cache_read:.2,cache_write:2.5}},"azure-cognitive-services/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"azure-cognitive-services/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"azure-cognitive-services/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"azure-cognitive-services/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"azure-cognitive-services/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:6.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:6.25}},"azure-cognitive-services/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"azure-cognitive-services/gpt-5.6-sol":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"azure-cognitive-services/phi-4-mini":{input:.075,output:.3},"azure-cognitive-services/gpt-5":{input:1.25,output:10,cache_read:.13},"azure-cognitive-services/o3":{input:2,output:8,cache_read:.5},"azure-cognitive-services/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"azure-cognitive-services/gpt-4-turbo":{input:10,output:30},"azure-cognitive-services/deepseek-v3.2":{input:.58,output:1.68},"azure-cognitive-services/llama-4-scout-17b-16e-instruct":{input:.2,output:.78},"azure-cognitive-services/deepseek-r1":{input:1.35,output:5.4},"azure-cognitive-services/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"azure-cognitive-services/gpt-3.5-turbo-1106":{input:1,output:2},"azure-cognitive-services/gpt-4-turbo-vision":{input:10,output:30},"azure-cognitive-services/gpt-4.1":{input:2,output:8,cache_read:.5},"azure-cognitive-services/phi-4-mini-reasoning":{input:.075,output:.3},"azure-cognitive-services/mistral-small-2503":{input:.1,output:.3},"azure-cognitive-services/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"azure-cognitive-services/phi-4":{input:.125,output:.5},"azure-cognitive-services/gpt-5.2":{input:1.75,output:14,cache_read:.125},"azure-cognitive-services/model-router":{input:.14,output:0},"azure-cognitive-services/cohere-embed-v3-english":{input:.1,output:0},"azure-cognitive-services/cohere-command-a":{input:2.5,output:10},"azure-cognitive-services/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"azure-cognitive-services/llama-3.3-70b-instruct":{input:.71,output:.71},"azure-cognitive-services/gpt-5.1":{input:1.25,output:10,cache_read:.125},"azure-cognitive-services/codestral-2501":{input:.3,output:.9},"azure-cognitive-services/cohere-embed-v-4-0":{input:.12,output:0},"azure-cognitive-services/text-embedding-3-large":{input:.13,output:0},"azure-cognitive-services/gpt-3.5-turbo-0125":{input:.5,output:1.5},"azure-cognitive-services/gpt-3.5-turbo-instruct":{input:1.5,output:2},"azure-cognitive-services/gpt-5-pro":{input:15,output:120},"azure-cognitive-services/phi-4-reasoning-plus":{input:.125,output:.5},"azure-cognitive-services/codex-mini":{input:1.5,output:6,cache_read:.375},"azure-cognitive-services/o1":{input:15,output:60,cache_read:7.5},"azure-cognitive-services/cohere-embed-v3-multilingual":{input:.1,output:0},"azure-cognitive-services/mistral-medium-2505":{input:.4,output:2},"azure-cognitive-services/phi-4-multimodal":{input:.08,output:.32,input_audio:4},"azure-cognitive-services/gpt-5-nano":{input:.05,output:.4,cache_read:.01},"azure-cognitive-services/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"azure-cognitive-services/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"azure-cognitive-services/text-embedding-ada-002":{input:.1,output:0},"azure-cognitive-services/o3-mini":{input:1.1,output:4.4,cache_read:.55},"azure-cognitive-services/llama-4-maverick-17b-128e-instruct-fp8":{input:.25,output:1},"azure-cognitive-services/o4-mini":{input:1.1,output:4.4,cache_read:.275},"azure-cognitive-services/gpt-5-mini":{input:.25,output:2,cache_read:.03},"azure-cognitive-services/gpt-5-codex":{input:1.25,output:10,cache_read:.13},"azure-cognitive-services/ministral-3b":{input:.04,output:.04},"azure-cognitive-services/gpt-4o":{input:2.5,output:10,cache_read:1.25},"azure-cognitive-services/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"azure-cognitive-services/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"azure-cognitive-services/text-embedding-3-small":{input:.02,output:0},"azure-cognitive-services/phi-4-reasoning":{input:.125,output:.5},"azure-cognitive-services/deepseek-v3.2-speciale":{input:.58,output:1.68},"moark/GLM-4.7":{input:3.5,output:14},"moark/MiniMax-M2.1":{input:2.1,output:8.4,cache_read:2.1,cache_write:8.4},"qihang-ai/gpt-5.2-codex":{input:.14,output:1.14},"qihang-ai/gemini-3-pro-preview":{input:.57,output:3.43},"qihang-ai/gpt-5-mini":{input:.04,output:.29},"qihang-ai/claude-opus-4-5-20251101":{input:.71,output:3.57},"qihang-ai/gemini-2.5-flash":{input:.09,output:.71,tiers:[{input:.09,output:.71,tier:{type:"context",size:2e5}}],context_over_200k:{input:.09,output:.71}},"qihang-ai/gpt-5.2":{input:.25,output:2},"qihang-ai/claude-sonnet-4-5-20250929":{input:.43,output:2.14},"qihang-ai/gemini-3-flash-preview":{input:.07,output:.43,tiers:[{input:.07,output:.43,tier:{type:"context",size:2e5}}],context_over_200k:{input:.07,output:.43}},"qihang-ai/claude-haiku-4-5-20251001":{input:.14,output:.71},"ai-router/gpt-5.4":{input:2.5,output:15,cache_read:.25},"ai-router/gpt-5.6-luna":{input:1,output:6,cache_read:.1,cache_write:1.25},"ai-router/gpt-5.5":{input:5,output:30,cache_read:.5},"ai-router/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125},"ai-router/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25},"llmtr/muse-glimmer-30b-tr":{input:2,output:5,cache_read:.5},"llmtr/magibu-11b-v8":{input:.1,output:.5},"llmtr/gemma-4":{input:2,output:5,cache_read:.5},"llmtr/trendyol-asure-12b":{input:.1,output:.5,cache_read:.025},"llmtr/medgemma-4b":{input:3,output:5},"llmtr/qwen3-6-35b":{input:5,output:10},"llmtr/publicai/apertus-70b-instruct":{input:.82,output:2.92},"llmtr/publicai/apertus-8b-instruct":{input:.1,output:.2},"llmtr/thinkingmachines/inkling-small":{input:.58,output:1.44},"llmtr/thinkingmachines/inkling":{input:1.87,output:4.68},"llmtr/perplexity/sonar-deep-research":{input:2,output:8,reasoning:3},"llmtr/meta/muse-spark-1.2-contributor":{input:.1,output:.2},"llmtr/upstage/solar-pro4":{input:.03,output:.12},"llmtr/upstage/solar-pro3":{input:.15,output:.6},"llmtr/upstage/solar-pro2":{input:.15,output:.6},"llmtr/google/gemini-2.5-flash-lite":{input:.1,output:.1},"llmtr/mimo/mimo-v2.5":{input:.14,output:.28},"llmtr/mimo/mimo-v2.5-pro":{input:.435,output:.87},"llmtr/sakana/fugu-ultra":{input:5,output:30},"llmtr/mistral/voxtral-small-latest":{input:.1,output:.3},"llmtr/qwen/qwen-flash":{input:.05,output:.4},"llmtr/qwen/qwen3-vl-plus":{input:.2,output:1.6},"llmtr/qwen/qwen3.5-plus":{input:.4,output:2.4},"llmtr/qwen/qwen-plus":{input:.4,output:1.2},"llmtr/qwen/qwen3-max":{input:1.2,output:6},"llmtr/qwen/qwen3.6-flash":{input:.25,output:1.5},"llmtr/qwen/qwen3-coder-flash":{input:.3,output:1.5},"llmtr/qwen/qwen3-coder-plus":{input:1,output:5},"llmtr/qwen/qwen3.5-397b-a17b":{input:.6,output:3.6},"llmtr/qwen/qwen3.6-plus":{input:.5,output:3},"llmtr/qwen/qwen3.7-plus":{input:.4,output:1.6},"alibaba/qwen-flash":{input:.05,output:.4},"alibaba/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"alibaba/qwen2-5-32b-instruct":{input:.7,output:2.8},"alibaba/qwq-plus":{input:.8,output:2.4},"alibaba/qwen2-5-vl-72b-instruct":{input:2.8,output:8.4},"alibaba/qwen3-vl-plus":{input:.2,output:1.6,reasoning:4.8},"alibaba/qwen3.5-27b":{input:.3,output:2.4},"alibaba/deepseek-v4-flash-0731":{input:.2,output:.4,cache_read:.04},"alibaba/qwen-max":{input:1.6,output:6.4},"alibaba/qwen3-next-80b-a3b-thinking":{input:.5,output:6},"alibaba/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"alibaba/kimi-k3":{input:3,output:15,cache_read:.3},"alibaba/qwen-plus-character-ja":{input:.5,output:1.4},"alibaba/qwen3.5-plus":{input:.4,output:2.4,reasoning:2.4},"alibaba/qwen3-livetranslate-flash-realtime":{input:10,output:10,input_audio:10,output_audio:38},"alibaba/qwen2-5-72b-instruct":{input:1.4,output:5.6},"alibaba/qwen3-32b":{input:.7,output:2.8,reasoning:8.4},"alibaba/qwen-plus":{input:.4,output:1.2,reasoning:4},"alibaba/qwen3-max":{input:1.2,output:6},"alibaba/qwen-omni-turbo-realtime":{input:.27,output:1.07,input_audio:4.44,output_audio:8.89},"alibaba/qwen3-coder-480b-a35b-instruct":{input:1.5,output:7.5,tiers:[{input:2.7,output:13.5,tier:{type:"context",size:32e3}},{input:4.5,output:22.5,tier:{type:"context",size:128e3}}]},"alibaba/qwen-turbo":{input:.05,output:.2,reasoning:.5},"alibaba/qwen3-coder-30b-a3b-instruct":{input:.45,output:2.25,tiers:[{input:.75,output:3.75,tier:{type:"context",size:32e3}},{input:1.2,output:6,tier:{type:"context",size:128e3}}]},"alibaba/qvq-max":{input:1.2,output:4.8},"alibaba/qwen2-5-7b-instruct":{input:.175,output:.7},"alibaba/qwen3-omni-flash":{input:.43,output:1.66,input_audio:3.81,output_audio:15.11},"alibaba/qwen-vl-max":{input:.8,output:3.2},"alibaba/qwen3-235b-a22b":{input:.7,output:2.8,reasoning:8.4},"alibaba/qwen3-vl-30b-a3b":{input:.2,output:.8,reasoning:2.4},"alibaba/qwen3.5-122b-a10b":{input:.4,output:3.2},"alibaba/qwen3.6-35b-a3b":{input:.248,output:1.485},"alibaba/qwen3-next-80b-a3b-instruct":{input:.5,output:2},"alibaba/qwen-vl-plus":{input:.21,output:.63},"alibaba/qwen3.6-flash":{input:.1875,output:1.125,cache_write:.234375},"alibaba/qwen3-coder-flash":{input:.3,output:1.5},"alibaba/qwen2-5-omni-7b":{input:.1,output:.4,input_audio:6.76},"alibaba/qwen-mt-plus":{input:2.46,output:7.37},"alibaba/qwen3-vl-235b-a22b":{input:.7,output:2.8,reasoning:8.4},"alibaba/qwen3-coder-plus":{input:1,output:5},"alibaba/qwen2-5-14b-instruct":{input:.35,output:1.4},"alibaba/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"alibaba/qwen2-5-vl-7b-instruct":{input:.35,output:1.05},"alibaba/qwen3.5-35b-a3b":{input:.25,output:2},"alibaba/qwen3.6-max-preview":{input:1.3,output:7.8,cache_read:.13,cache_write:1.625},"alibaba/qwen-mt-turbo":{input:.16,output:.49},"alibaba/qwen3.5-397b-a17b":{input:.6,output:3.6},"alibaba/qwen3-8b":{input:.18,output:.7,reasoning:2.1},"alibaba/glm-5.2":{input:1.4,output:4.4,cache_read:.28,cache_write:0},"alibaba/qwen-omni-turbo":{input:.07,output:.27,input_audio:4.44,output_audio:8.89},"alibaba/qwen3-omni-flash-realtime":{input:.52,output:1.99,input_audio:4.57,output_audio:18.13},"alibaba/qwen3-asr-flash":{input:.035,output:.035},"alibaba/qwen3.6-27b":{input:.6,output:3.6},"alibaba/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"alibaba/qwen3-14b":{input:.35,output:1.4,reasoning:4.2},"alibaba/qwen3.7-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"alibaba/qwen-vl-ocr":{input:.72,output:.72},"auriko/qwen-3.6-plus":{input:.5,output:3,cache_read:.1,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"auriko/minimax-m2-7-highspeed":{input:.6,output:2.4,cache_write:.375},"auriko/kimi-k2.6":{input:.95,output:4,cache_read:.16},"auriko/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"auriko/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"auriko/kimi-k2.5":{input:.5,output:2.8},"auriko/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"auriko/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"auriko/minimax-m2-7":{input:.3,output:1.2,cache_write:.375},"auriko/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"auriko/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"auriko/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"auriko/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"auriko/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"auriko/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"zenmux/anthropic/claude-opus-4.1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"zenmux/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"zenmux/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25},"zenmux/anthropic/claude-3.5-haiku":{input:.8,output:4,cache_read:.08,cache_write:1},"zenmux/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"zenmux/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"zenmux/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"zenmux/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"zenmux/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75},"zenmux/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"zenmux/anthropic/claude-3.7-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"zenmux/anthropic/claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75},"zenmux/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:4},"zenmux/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75},"zenmux/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"zenmux/anthropic/claude-opus-4":{input:15,output:75,cache_read:1.5,cache_write:18.75},"zenmux/deepseek/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"zenmux/deepseek/deepseek-chat":{input:.28,output:.42,cache_read:.03},"zenmux/deepseek/deepseek-v3.2-exp":{input:.22,output:.33},"zenmux/deepseek/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"zenmux/deepseek/deepseek-v3.2":{input:.28,output:.43},"zenmux/deepseek/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"zenmux/tencent/hy3-preview":{input:.172,output:.572,cache_read:.058,cache_write:0},"zenmux/z-ai/glm-4.6v":{input:.1456,output:.4367,cache_read:.0291,tiers:[{input:.2911,output:.8734,cache_read:.0582,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-4.5":{input:.2911,output:1.1645,cache_read:.0582,tiers:[{input:.5823,output:2.3291,cache_read:.1165,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-5v-turbo":{input:.726,output:3.1946,cache_read:.1743,tiers:[{input:1.0165,output:3.7754,cache_read:.2614,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"zenmux/z-ai/glm-4.6":{input:.2911,output:1.1645,cache_read:.0582,tiers:[{input:.5823,output:2.3291,cache_read:.1165,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-5":{input:.58,output:2.6,cache_read:.14,tiers:[{input:.87,output:3.18,cache_read:.22,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-4.6v-flash":{input:.0218,output:.2184,cache_read:.0044,tiers:[{input:.0437,output:.4367,cache_read:.0044,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-5.3-flashx":{input:.375,output:1.25,cache_read:.075},"zenmux/z-ai/glm-4.7":{input:.2911,output:1.1645,cache_read:.0582,tiers:[{input:.5823,output:2.3291,cache_read:.1165,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-5.2":{input:.98,output:3.08,cache_read:.182},"zenmux/z-ai/glm-5.1":{input:.8781,output:3.5126,cache_read:.1903,tiers:[{input:1.1709,output:4.098,cache_read:.2927,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-4.7-flashx":{input:.0728,output:.4367,cache_read:.0146},"zenmux/z-ai/glm-5-turbo":{input:.73,output:3.19,cache_read:.174,tiers:[{input:1.02,output:3.77,cache_read:.261,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-4.5-air":{input:.1165,output:.2911,cache_read:.0233,tiers:[{input:.1747,output:1.1645,cache_read:.0349,tier:{type:"context",size:32e3}}]},"zenmux/z-ai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"zenmux/kuaishou/kat-coder-pro-v2":{input:.3,output:1.2,cache_read:.06},"zenmux/baidu/ernie-5.0-thinking-preview":{input:.84,output:3.37},"zenmux/x-ai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"zenmux/x-ai/grok-4.5":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"zenmux/x-ai/grok-build-0.1":{input:1,output:2,cache_read:.2},"zenmux/x-ai/grok-4.2-fast":{input:2,output:6,cache_read:.2,tiers:[{input:4,output:12,cache_read:.2,tier:{type:"context",size:128e3}}]},"zenmux/x-ai/grok-4.2-fast-non-reasoning":{input:2,output:6,cache_read:.2,tiers:[{input:4,output:12,cache_read:.2,tier:{type:"context",size:128e3}}]},"zenmux/x-ai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"zenmux/volcengine/doubao-seed-2.0-mini":{input:.03,output:.28,cache_read:.01,cache_write:.0024},"zenmux/volcengine/doubao-seed-2.0-lite":{input:.09,output:.51,cache_read:.02,cache_write:.0024},"zenmux/volcengine/doubao-seed-code":{input:.17,output:1.12,cache_read:.03},"zenmux/volcengine/doubao-seed-2.0-pro":{input:.45,output:2.24,cache_read:.09,cache_write:.0024},"zenmux/volcengine/doubao-seed-1.8":{input:.11,output:.28,cache_read:.02,cache_write:.0024},"zenmux/volcengine/doubao-seed-2.0-code":{input:.9,output:4.48},"zenmux/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,cache_write:4.5},"zenmux/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15},"zenmux/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.31,cache_write:4.5},"zenmux/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.07,cache_write:1},"zenmux/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,cache_write:1},"zenmux/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.03,cache_write:1},"zenmux/google/gemini-3.1-flash-lite-preview":{input:.25,output:1.5},"zenmux/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025},"zenmux/sapiens-ai/agnes-1.5-lite":{input:.12,output:.6},"zenmux/sapiens-ai/agnes-1.5-pro":{input:.16,output:.8},"zenmux/inclusionai/ring-2.6-1t":{input:.3,output:2.5,cache_read:.06},"zenmux/inclusionai/ring-1t":{input:.56,output:2.24,cache_read:.11},"zenmux/inclusionai/ling-1t":{input:.56,output:2.24,cache_read:.11},"zenmux/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"zenmux/moonshotai/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"zenmux/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"zenmux/moonshotai/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.15},"zenmux/moonshotai/kimi-k2.5":{input:.58,output:3.02,cache_read:.1},"zenmux/moonshotai/kimi-k2-0905":{input:.6,output:2.5,cache_read:.15},"zenmux/moonshotai/kimi-k2-thinking-turbo":{input:1.15,output:8,cache_read:.15},"zenmux/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.16},"zenmux/xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"zenmux/xiaomi/mimo-v2-flash":{input:.1,output:.3,cache_read:.01},"zenmux/xiaomi/mimo-v2.5":{input:.4,output:2,cache_read:.08,tiers:[{input:.8,output:4,cache_read:.16,tier:{type:"context",size:256e3}}],context_over_200k:{input:.8,output:4,cache_read:.16}},"zenmux/xiaomi/mimo-v2-omni":{input:.4,output:2,cache_read:.08},"zenmux/xiaomi/mimo-v2-pro":{input:1,output:3,cache_read:.2,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"zenmux/xiaomi/mimo-v2.5-pro":{input:1,output:3,cache_read:.2,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"zenmux/minimax/minimax-m2.5-lightning":{input:.6,output:4.8,cache_read:.06,cache_write:.75},"zenmux/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"zenmux/minimax/minimax-m2.7":{input:.3055,output:1.2219},"zenmux/minimax/minimax-m3":{input:.6,output:2.4},"zenmux/minimax/minimax-m2.7-highspeed":{input:.611,output:2.4439},"zenmux/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03,cache_write:.38},"zenmux/minimax/minimax-m2":{input:.3,output:1.2,cache_read:.03,cache_write:.38},"zenmux/stepfun/step-3":{input:.21,output:.57},"zenmux/stepfun/step-3.5-flash":{input:.1,output:.3},"zenmux/stepfun/step-3.7-flash":{input:.2,output:1.15},"zenmux/qwen/qwen3.5-flash":{input:.1,output:.4},"zenmux/qwen/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"zenmux/qwen/qwen3.5-plus":{input:.8,output:4.8},"zenmux/qwen/qwen3-max":{input:1.2,output:6},"zenmux/qwen/qwen3-coder-plus":{input:1,output:5,cache_read:.1,cache_write:1.25},"zenmux/qwen/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"zenmux/qwen/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5,tiers:[{input:1.2,output:4.8,cache_read:.24,cache_write:1.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.2,output:4.8,cache_read:.24,cache_write:1.5}},"zenmux/openai/gpt-5.4":{input:3.75,output:18.75},"zenmux/openai/gpt-5.4-pro":{input:45,output:225},"zenmux/openai/gpt-5.3-chat":{input:1.75,output:14},"zenmux/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"zenmux/openai/gpt-5.4-nano":{input:.2,output:1.25},"zenmux/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.17},"zenmux/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.12},"zenmux/openai/gpt-5-codex":{input:1.25,output:10,cache_read:.12},"zenmux/openai/gpt-5.2-pro":{input:21,output:168},"zenmux/openai/gpt-5.3-codex":{input:1.75,output:14},"zenmux/openai/gpt-5.5-instant":{input:5,output:30,cache_read:.5},"zenmux/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"zenmux/openai/gpt-5.1":{input:1.25,output:10,cache_read:.12},"zenmux/openai/gpt-5.4-mini":{input:.75,output:4.5},"zenmux/openai/gpt-5.6-luna":{input:1,output:6,cache_read:.1,cache_write:1.25,tiers:[{input:2,output:9,cache_read:.2,cache_write:2.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:2,output:9,cache_read:.2,cache_write:2.5}},"zenmux/openai/gpt-5.2":{input:1.75,output:14,cache_read:.17},"zenmux/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"zenmux/openai/gpt-5.1-chat":{input:1.25,output:10,cache_read:.12},"zenmux/openai/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:6.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:6.25}},"zenmux/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.03},"zenmux/openai/gpt-5":{input:1.25,output:10,cache_read:.12},"zenmux/openai/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:45,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1,cache_write:12.5}},"zenmux/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"unorouter/gpt-5.4":{input:1.8,output:10.8},"unorouter/kimi-k2.6":{input:1.2675,output:5.3368},"unorouter/minimax-m2.7":{input:.819,output:3.276},"unorouter/gemini-3.5-flash":{input:.1857,output:1.1142},"unorouter/gpt-5.2":{input:1.05,output:8.4},"unorouter/claude-opus-4-8":{input:.425,output:2.125},"unorouter/gpt-5.5":{input:.1875,output:1.125},"unorouter/claude-sonnet-5":{input:1.44,output:7.2},"unorouter/glm-5.2":{input:1.6001,output:5.0288},"unorouter/claude-haiku-4-5-20251001":{input:1.2,output:6},"unorouter/deepseek-v4-pro":{input:.8999,output:1.7999},"unorouter/deepseek-v4-flash":{input:.0625,output:.125},"salad-cloud/qwen3.6-35b-a3b":{input:.09,output:.6},"vispark/vispark/vision-large":{input:7.37,output:22.11},"vispark/vispark/vision-small":{input:1.05,output:3.16},"vispark/vispark/vision-medium":{input:4.21,output:12.63},"siliconflow-cn/ByteDance-Seed/Seed-OSS-36B-Instruct":{input:.21,output:.57},"siliconflow-cn/tencent/Hunyuan-A13B-Instruct":{input:.14,output:.57},"siliconflow-cn/Qwen/Qwen3.5-27B":{input:.26,output:2.09},"siliconflow-cn/Qwen/Qwen3.6-35B-A3B":{input:.23,output:1.86},"siliconflow-cn/Qwen/Qwen3-235B-A22B-Thinking-2507":{input:.13,output:.6},"siliconflow-cn/Qwen/Qwen3-14B":{input:.07,output:.28},"siliconflow-cn/Qwen/Qwen3-8B":{input:.06,output:.06},"siliconflow-cn/Qwen/Qwen3-32B":{input:.14,output:.57},"siliconflow-cn/Qwen/Qwen3.5-35B-A3B":{input:.23,output:1.86},"siliconflow-cn/Qwen/Qwen3.5-122B-A10B":{input:.29,output:2.32},"siliconflow-cn/Qwen/Qwen3.5-9B":{input:.22,output:1.74},"siliconflow-cn/Qwen/Qwen3.5-397B-A17B":{input:.29,output:1.74},"siliconflow-cn/Qwen/Qwen3-Coder-480B-A35B-Instruct":{input:.25,output:1},"siliconflow-cn/Qwen/Qwen3-VL-32B-Instruct":{input:.2,output:.6},"siliconflow-cn/Qwen/Qwen2.5-7B-Instruct":{input:.05,output:.05},"siliconflow-cn/Qwen/Qwen3-Coder-30B-A3B-Instruct":{input:.07,output:.28},"siliconflow-cn/Qwen/Qwen2.5-72B-Instruct":{input:.59,output:.59},"siliconflow-cn/Qwen/Qwen3-VL-30B-A3B-Thinking":{input:.29,output:1},"siliconflow-cn/Qwen/Qwen3-30B-A3B-Instruct-2507":{input:.09,output:.3},"siliconflow-cn/Qwen/Qwen3-VL-32B-Thinking":{input:.2,output:1.5},"siliconflow-cn/Qwen/Qwen3-VL-8B-Instruct":{input:.18,output:.68},"siliconflow-cn/Qwen/Qwen3-VL-30B-A3B-Instruct":{input:.29,output:1},"siliconflow-cn/deepseek-ai/DeepSeek-R1":{input:.5,output:2.18},"siliconflow-cn/deepseek-ai/DeepSeek-V4-Flash":{input:.14,output:.28,cache_read:.003},"siliconflow-cn/deepseek-ai/DeepSeek-V4-Pro":{input:1.74,output:3.48,cache_read:.145},"siliconflow-cn/deepseek-ai/DeepSeek-V3.2":{input:.27,output:.42},"siliconflow-cn/deepseek-ai/DeepSeek-V3.1-Terminus":{input:.27,output:1},"siliconflow-cn/deepseek-ai/DeepSeek-V3":{input:.25,output:1},"siliconflow-cn/stepfun-ai/Step-3.5-Flash":{input:.1,output:.3},"siliconflow-cn/inclusionAI/Ling-flash-2.0":{input:.14,output:.57},"siliconflow-cn/zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"siliconflow-cn/zai-org/GLM-4.5-Air":{input:.14,output:.86},"siliconflow-cn/Pro/deepseek-ai/DeepSeek-R1":{input:.5,output:2.18},"siliconflow-cn/Pro/deepseek-ai/DeepSeek-V3.2":{input:.27,output:.42},"siliconflow-cn/Pro/deepseek-ai/DeepSeek-V3":{input:.25,output:1},"siliconflow-cn/Pro/deepseek-ai/DeepSeek-V3.1-Terminus":{input:.27,output:1},"siliconflow-cn/Pro/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.22},"siliconflow-cn/Pro/moonshotai/Kimi-K2.6":{input:.95,output:4,cache_read:.16},"siliconflow-cn/Pro/moonshotai/Kimi-K2.5":{input:.45,output:2.25,cache_read:.07},"siliconflow-cn/Pro/zai-org/GLM-5.1":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"siliconflow-cn/Pro/zai-org/GLM-5":{input:1,output:3.2},"regolo-ai/qwen3.8-27b":{input:.58,output:2.42},"regolo-ai/qwen3.5-122b":{input:.9,output:3.6},"regolo-ai/qwen3-coder-next":{input:.3,output:1.2},"regolo-ai/apertus-70b":{input:.46,output:2.42},"regolo-ai/glm5.2":{input:2.31,output:6},"regolo-ai/qwen3-reranker-4b":{input:.12,output:.12},"regolo-ai/llama-3.3-70b-instruct":{input:.6,output:2.7},"regolo-ai/gemma4-31b":{input:.46,output:2.42},"regolo-ai/brick-complexity-pro":{input:.12,output:.46},"regolo-ai/gpt-oss-20b":{input:.4,output:1.8},"regolo-ai/qwen3.5-9b":{input:.15,output:.6},"regolo-ai/qwen3-embedding-8b":{input:.1,output:.1},"regolo-ai/mistral-small-4-119b":{input:.75,output:3},"regolo-ai/qwen-image":{input:.5,output:2},"regolo-ai/gpt-oss-120b":{input:1,output:4.2},"inceptron/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.13,output:.28,cache_read:.03,cache_write:0},"inceptron/moonshotai/Kimi-K2.6":{input:.53,output:3.39,cache_read:.17,cache_write:0},"inceptron/moonshotai/Kimi-K2.7-Code":{input:.66,output:3.4,cache_read:.18,cache_write:0},"inceptron/zai-org/GLM-5.2":{input:.71,output:2.35,cache_read:.12,cache_write:0},"upstage/solar-pro4":{input:.3,output:1.2,cache_read:.06},"upstage/solar-pro3":{input:.25,output:.25},"upstage/solar-mini":{input:.15,output:.15},"upstage/solar-pro2":{input:.25,output:.25},"vultr/XiaomiMiMo/MiMo-V2.5-Pro":{input:.55,output:1.65},"vultr/Qwen/Qwen3.5-397B-A17B":{input:.3,output:2},"vultr/Qwen/Qwen3.6-27B":{input:.3,output:2},"vultr/deepseek-ai/DeepSeek-V4-Flash":{input:.3,output:1},"vultr/MiniMaxAI/MiniMax-M2.7":{input:.3,output:1.2},"vultr/moonshotai/Kimi-K2.6":{input:.3,output:1.2},"vultr/zai-org/GLM-5.2-FP8":{input:.85,output:3.1},"vultr/nvidia/DeepSeek-V3.2-NVFP4":{input:.55,output:1.65},"vultr/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16":{input:.13,output:.38},"vultr/nvidia/Nemotron-Cascade-2-30B-A3B":{input:.15,output:.6},"huggingface/tencent/Hy3":{input:.14,output:.58},"huggingface/tencent/Hy4-preview":{input:.834,output:2.501},"huggingface/meta-llama/Llama-3.1-8B-Instruct":{input:.06,output:.06},"huggingface/meta-llama/Llama-3.3-70B-Instruct":{input:.59,output:.79},"huggingface/XiaomiMiMo/MiMo-V2-Flash":{input:.1,output:.3},"huggingface/XiaomiMiMo/MiMo-V2.5-Pro":{input:1,output:3},"huggingface/XiaomiMiMo/MiMo-V2.5":{input:.4,output:2},"huggingface/thinkingmachines/Inkling-Small":{input:.5,output:1.2},"huggingface/thinkingmachines/Inkling":{input:1,output:4.05},"huggingface/google/gemma-3-27b-it":{input:.08,output:.16},"huggingface/google/gemma-3-12b-it":{input:.05,output:.15},"huggingface/google/gemma-3-4b-it":{input:.05,output:.1},"huggingface/google/gemma-4-31B-it":{input:.14,output:.4},"huggingface/google/gemma-4-26B-A4B-it":{input:.13,output:.4},"huggingface/Qwen/Qwen3-VL-235B-A22B-Instruct":{input:.3,output:1.5},"huggingface/Qwen/Qwen3.8-27B":{input:.4,output:3},"huggingface/Qwen/Qwen3-Next-80B-A3B-Instruct":{input:.25,output:1},"huggingface/Qwen/Qwen2.5-Coder-32B-Instruct":{input:.06,output:.2},"huggingface/Qwen/Qwen3-Coder-Next":{input:.2,output:1.5},"huggingface/Qwen/Qwen3-VL-235B-A22B-Thinking":{input:.98,output:3.95},"huggingface/Qwen/Qwen3.5-27B":{input:.3,output:2.4},"huggingface/Qwen/Qwen3-Next-80B-A3B-Thinking":{input:.3,output:2},"huggingface/Qwen/Qwen3.6-35B-A3B":{input:.15,output:.95},"huggingface/Qwen/Qwen3-235B-A22B-Thinking-2507":{input:.3,output:3},"huggingface/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.855,output:2.565},"huggingface/Qwen/Qwen3-235B-A22B":{input:.2,output:.8},"huggingface/Qwen/Qwen3-32B":{input:.29,output:.59},"huggingface/Qwen/Qwen3-Coder-30B-A3B-Instruct":{input:.07,output:.26},"huggingface/Qwen/Qwen3-Embedding-8B":{input:.01,output:0},"huggingface/Qwen/Qwen3.5-35B-A3B":{input:.25,output:2},"huggingface/Qwen/Qwen3.5-122B-A10B":{input:.4,output:3.2},"huggingface/Qwen/Qwen3.5-9B":{input:.17,output:.25},"huggingface/Qwen/Qwen3.5-397B-A17B":{input:.6,output:3.6},"huggingface/Qwen/Qwen3-Embedding-4B":{input:.01,output:0},"huggingface/Qwen/Qwen3.8-2.4T-A95B":{input:2.5,output:6.25},"huggingface/Qwen/Qwen3-30B-A3B":{input:.12,output:.5},"huggingface/Qwen/Qwen3-Coder-480B-A35B-Instruct":{input:2,output:2},"huggingface/Qwen/Qwen3.6-27B":{input:.47,output:3.19},"huggingface/deepseek-ai/DeepSeek-V3.1":{input:.27,output:1},"huggingface/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.14,output:.28},"huggingface/deepseek-ai/DeepSeek-R1":{input:.7,output:2.5},"huggingface/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96},"huggingface/deepseek-ai/DeepSeek-V4.1-Flash":{input:.3,output:1.2},"huggingface/deepseek-ai/DeepSeek-V4-Flash":{input:.14,output:.28},"huggingface/deepseek-ai/DeepSeek-V4-Pro":{input:.435,output:.87,cache_read:.003625},"huggingface/deepseek-ai/DeepSeek-V3.2":{input:.28,output:.4},"huggingface/deepseek-ai/DeepSeek-R1-0528":{input:3,output:5},"huggingface/deepseek-ai/DeepSeek-V3":{input:.4,output:1.3},"huggingface/deepseek-ai/DeepSeek-V3-0324":{input:.27,output:1.12},"huggingface/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp":{input:.44,output:1.32},"huggingface/stepfun-ai/Step-3.7-Flash":{input:.2,output:1.15},"huggingface/stepfun-ai/Step-3.5-Flash":{input:.1,output:.3},"huggingface/MiniMaxAI/MiniMax-M3":{input:.3,output:1.2},"huggingface/MiniMaxAI/MiniMax-M2.1":{input:.3,output:1.2},"huggingface/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.03},"huggingface/MiniMaxAI/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06},"huggingface/MiniMaxAI/MiniMax-M2":{input:.3,output:1.2},"huggingface/moonshotai/Kimi-K2.6":{input:.95,output:4,cache_read:.16},"huggingface/moonshotai/Kimi-K3":{input:3,output:15},"huggingface/moonshotai/Kimi-K2-Instruct":{input:1,output:3},"huggingface/moonshotai/Kimi-K2.7-Code":{input:.95,output:4},"huggingface/moonshotai/Kimi-K2.5":{input:.6,output:3,cache_read:.1},"huggingface/moonshotai/Kimi-K2-Thinking":{input:.6,output:2.5,cache_read:.15},"huggingface/moonshotai/Kimi-K2-Instruct-0905":{input:1,output:3},"huggingface/zai-org/GLM-4.6V-Flash":{input:.3,output:.9},"huggingface/zai-org/GLM-5.1":{input:1,output:3.2,cache_read:.2},"huggingface/zai-org/GLM-5.2":{input:1.4,output:4.4},"huggingface/zai-org/GLM-4.5-Air":{input:.13,output:.85},"huggingface/zai-org/GLM-4.7":{input:.6,output:2.2,cache_read:.11},"huggingface/zai-org/GLM-5":{input:1,output:3.2,cache_read:.2},"huggingface/zai-org/GLM-5.3-Flash":{input:.15,output:.5},"huggingface/zai-org/GLM-4.5V":{input:.6,output:1.8},"huggingface/zai-org/GLM-4.6":{input:.55,output:2.2},"huggingface/zai-org/GLM-5.3":{input:1.4,output:4.4},"huggingface/zai-org/GLM-4.5":{input:.6,output:2.2},"huggingface/openai/gpt-oss-20b":{input:.1,output:.5},"huggingface/openai/gpt-oss-120b":{input:.25,output:.69},"volcengine/glm-5-3-flash-260828":{input:.11875,output:.41563,cache_read:.03414},"volcengine/doubao-seed-1-6-251015":{input:.11875,output:1.18747,cache_read:.02375,tiers:[{input:.17812,output:2.37494,cache_read:.02375,tier:{type:"context",size:32e3}},{input:.35624,output:3.56241,cache_read:.02375,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-2-0-pro-260215":{input:.47499,output:2.37494,cache_read:.095,tiers:[{input:.71248,output:3.56241,cache_read:.1425,tier:{type:"context",size:32e3}},{input:1.42496,output:7.12482,cache_read:.28499,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-2-0-lite-260428":{input:.08906,output:.53436,cache_read:.01781,tiers:[{input:.13359,output:.80154,cache_read:.02672,tier:{type:"context",size:32e3}},{input:.26718,output:1.60308,cache_read:.05344,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-2-1-pro-260628":{input:.8906,output:4.45301,cache_read:.17812},"volcengine/doubao-seed-1-6-vision-250815":{input:.11875,output:1.18747,cache_read:.02375,tiers:[{input:.17812,output:2.37494,cache_read:.02375,tier:{type:"context",size:32e3}},{input:.35624,output:3.56241,cache_read:.02375,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-2-0-mini-260428":{input:.02969,output:.29687,cache_read:.00594,tiers:[{input:.05937,output:.59374,cache_read:.01187,tier:{type:"context",size:32e3}},{input:.11875,output:1.18747,cache_read:.02375,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-2-0-code-preview-260215":{input:.47499,output:2.37494,cache_read:.095,tiers:[{input:.71248,output:3.56241,cache_read:.1425,tier:{type:"context",size:32e3}},{input:1.42496,output:7.12482,cache_read:.28499,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-2-1-turbo-260628":{input:.4453,output:2.22651,cache_read:.08906},"volcengine/glm-5-2-260617":{input:1.18747,output:4.15615,cache_read:.29687},"volcengine/doubao-seed-1-8-251228":{input:.11875,output:1.18747,cache_read:.02375,tiers:[{input:.17812,output:2.37494,cache_read:.02375,tier:{type:"context",size:32e3}},{input:.35624,output:3.56241,cache_read:.02375,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-evolving":{input:.8906,output:4.45301,cache_read:.17812},"volcengine/doubao-seed-1-6-flash-250828":{input:.02227,output:.22265,cache_read:.00445,tiers:[{input:.04453,output:.4453,cache_read:.00445,tier:{type:"context",size:32e3}},{input:.08906,output:.8906,cache_read:.00445,tier:{type:"context",size:128e3}}]},"volcengine/doubao-seed-character-260628":{input:.11875,output:.29687,cache_read:.02375,tiers:[{input:.17812,output:.8906,cache_read:.02375,tier:{type:"context",size:32e3}}]},"volcengine/deepseek-v4-pro-ga-260813":{input:1.3359,output:4.00771,cache_read:.04453},"volcengine/deepseek-v4-flash-ga-260731":{input:.4453,output:1.3359,cache_read:.01484},"impossibl/cerebras/gpt-oss-120b":{input:.35,output:.75},"impossibl/groq/gpt-oss-20b":{input:.075,output:.3,cache_read:.0375},"impossibl/groq/gpt-oss-120b":{input:.15,output:.6,cache_read:.075},"impossibl/zai/glm-4.5":{input:.6,output:2.2,cache_read:.11},"impossibl/zai/glm-4.6":{input:.6,output:2.2,cache_read:.11},"impossibl/zai/glm-5":{input:1,output:3.2,cache_read:.2},"impossibl/zai/glm-4.7":{input:.6,output:2.2,cache_read:.11},"impossibl/zai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"impossibl/zai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"impossibl/zai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"impossibl/zai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03},"impossibl/anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"impossibl/anthropic/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"impossibl/anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"impossibl/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"impossibl/anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"impossibl/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"impossibl/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"impossibl/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"impossibl/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"impossibl/deepseek/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.145},"impossibl/deepseek/deepseek-v4-flash":{input:.19,output:.51,cache_read:.028},"impossibl/thinkingmachines/inkling":{input:1.87,output:4.68,cache_read:.374},"impossibl/google/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15},"impossibl/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"impossibl/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"impossibl/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15},"impossibl/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"impossibl/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"impossibl/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01},"impossibl/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025},"impossibl/xai/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"impossibl/xai/grok-4.20-0309-reasoning":{input:1.25,output:2.5,cache_read:.2},"impossibl/xai/grok-4.5":{input:2,output:6,cache_read:.3},"impossibl/xai/grok-4.20-0309-non-reasoning":{input:1.25,output:2.5,cache_read:.2},"impossibl/xai/grok-build-0.1":{input:1,output:2,cache_read:.2},"impossibl/fireworks/gpt-oss-20b":{input:.07,output:.3,cache_read:.035},"impossibl/fireworks/glm-5.2":{input:1.4,output:4.4,cache_read:.14},"impossibl/fireworks/gpt-oss-120b":{input:.15,output:.6,cache_read:.015},"impossibl/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"impossibl/xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.003},"impossibl/qwen/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5},"impossibl/qwen/qwen3.8-max-preview":{input:2.5,output:7.5},"impossibl/qwen/qwen3.6-flash":{input:.25,output:1.5,cache_read:.05,tiers:[{input:1,output:4,cache_read:.2,tier:{type:"context",size:262144}}],context_over_200k:{input:1,output:4,cache_read:.2}},"impossibl/qwen/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,tiers:[{input:1.2,output:4.8,cache_read:.24,tier:{type:"context",size:262144}}],context_over_200k:{input:1.2,output:4.8,cache_read:.24}},"impossibl/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"impossibl/openai/gpt-5.4-pro":{input:30,output:180,cache_read:3,tiers:[{input:60,output:270,cache_read:3,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270,cache_read:3}},"impossibl/openai/gpt-3.5-turbo":{input:.5,output:1.5},"impossibl/openai/gpt-5.5-pro":{input:30,output:180,cache_read:3,tiers:[{input:60,output:270,cache_read:3,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270,cache_read:3}},"impossibl/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"impossibl/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"impossibl/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"impossibl/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"impossibl/openai/gpt-5-codex":{input:1.25,output:10,cache_read:.125},"impossibl/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"impossibl/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"impossibl/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"impossibl/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"impossibl/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"impossibl/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"impossibl/openai/o1":{input:15,output:60,cache_read:7.5},"impossibl/openai/gpt-5-pro":{input:15,output:120},"impossibl/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"impossibl/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"impossibl/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"impossibl/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"impossibl/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"impossibl/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"impossibl/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"impossibl/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"impossibl/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"impossibl/openai/gpt-4-turbo":{input:10,output:30},"impossibl/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"impossibl/openai/o3":{input:2,output:8,cache_read:.5},"impossibl/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"impossibl/openai/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:45,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1,cache_write:12.5}},"xpersona/gpt-5.4":{input:.75,output:6,reasoning:6,cache_read:.075},"xpersona/claude-haiku-4-5":{input:.6,output:3.7,reasoning:3.7,cache_read:.06},"xpersona/xpersona-frieren-coder":{input:1.5,output:6,reasoning:6,cache_read:.15},"xpersona/gpt-5.6":{input:1.5,output:12,reasoning:12,cache_read:.15},"xpersona/xpersona-gpt-5.5":{input:3,output:18,reasoning:18,cache_read:.3},"xpersona/gemini-3.5-flash":{input:1.55,output:12.2,reasoning:12.2,cache_read:.155},"xpersona/claude-fable-5":{input:3,output:18.5,reasoning:18.5,cache_read:.3},"xpersona/gpt-5.4-mini":{input:.375,output:4,reasoning:4,cache_read:.0375},"xpersona/claude-opus-4-8":{input:1.5,output:9.25,reasoning:9.25,cache_read:.15},"xpersona/gpt-5.5":{input:1.5,output:12,reasoning:12,cache_read:.15},"xpersona/claude-sonnet-4-6":{input:.9,output:5.55,reasoning:5.55,cache_read:.09},"xpersona/gpt-5.6-terra":{input:1.5,output:2,reasoning:2,cache_read:.15},"xpersona/gpt-5.6-sol":{input:1.5,output:12,reasoning:12,cache_read:.15},"qiniu-ai/mimo-v2-flash":{input:.1,output:.3,cache_read:.01},"qiniu-ai/xiaomi/mimo-v2-flash":{input:.1,output:.3,cache_read:.01},"google/gemini-flash-latest":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google/gemini-omni-flash-preview":{input:1.5,output:17.5},"google/gemini-3.1-flash-image-preview":{input:.5,output:60},"google/gemini-3.1-flash-tts-preview":{input:1,output:20},"google/gemini-2.5-flash-image":{input:.3,output:30,cache_read:.075},"google/gemini-flash-lite-latest":{input:.3,output:2.5,cache_read:.03},"google/gemini-embedding-2":{input:.2,output:0,input_audio:6.5},"google/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google/gemini-3-pro-image-preview":{input:2,output:120},"google/gemini-2.5-pro-preview-tts":{input:1,output:20},"google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"google/gemini-3.1-flash-image":{input:.5,output:60},"google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"google/gemini-2.5-computer-use-preview-10-2025":{input:1.25,output:10,tiers:[{input:2.5,output:15,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15}},"google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"google/gemini-3-pro-image":{input:2,output:120},"google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"google/gemini-2.5-flash-preview-tts":{input:.5,output:10},"google/gemini-3.1-flash-lite-image":{input:.25,output:30},"google/deep-research-preview-04-2026":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"google/deep-research-max-preview-04-2026":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"google/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,input_audio:1},"google/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google/gemini-3.5-live-translate-preview":{input:3.5,output:21,input_audio:3.5,output_audio:21},"google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,input_audio:.3},"google/gemini-embedding-001":{input:.15,output:0},"google/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"google/gemini-3.1-flash-live-preview":{input:.75,output:4.5,input_audio:3,output_audio:12},"google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"vancine/MiniMax-M3":{input:.24,output:.96,cache_read:.048},"vancine/glm-5.3-flash":{input:.12,output:.4,cache_read:.024},"vancine/qwen3.8-max":{input:1.6,output:4.8,cache_read:.2},"vancine/kimi-k3":{input:2.4,output:12,cache_read:.24},"vancine/deepseek-v4.1-flash":{input:.24,output:.96,cache_read:.0048},"vancine/qwen3.8-flash":{input:.12,output:.38,cache_read:.013},"vancine/hy4-preview":{input:.67,output:2,cache_read:.034},"vancine/glm-5.3":{input:1.12,output:3.52,cache_read:.208},"zhipuai-coding-plan/glm-4.6v":{input:.3,output:.9},"lucidquery/lucidquery-agi-01-frontier":{input:4.5,output:22},"lucidquery/lucidquery-nexus-coder":{input:2,output:5},"lucidquery/lucidnova-rf1-100b":{input:2,output:5},"lucidquery/lucidquery-agi-01-swift":{input:2.5,output:15},"gmicloud/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5},"gmicloud/anthropic/claude-opus-4.7":{input:4.5,output:22.5,cache_read:.45},"gmicloud/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5},"gmicloud/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3},"gmicloud/Qwen/Qwen3.7-Max":{input:2.5,output:7.5,cache_read:.25,cache_write:3.125},"gmicloud/deepseek-ai/DeepSeek-V4-Flash":{input:.112,output:.224,cache_read:.022},"gmicloud/deepseek-ai/DeepSeek-V4-Pro":{input:1.392,output:2.784,cache_read:.116},"gmicloud/MiniMaxAI/MiniMax-M3":{input:.6,output:2.4,cache_read:.12,tiers:[{input:1.2,output:4.8,cache_read:.24,tier:{type:"context",size:512e3}}],context_over_200k:{input:1.2,output:4.8,cache_read:.24}},"gmicloud/MiniMaxAI/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06},"gmicloud/moonshotai/Kimi-K2.6":{input:.855,output:3.6,cache_read:.144},"gmicloud/moonshotai/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"gmicloud/zai-org/GLM-5.2-FP8":{input:.979,output:3.08,cache_read:.182},"gmicloud/zai-org/GLM-5-FP8":{input:.6,output:1.92,cache_read:.12},"gmicloud/zai-org/GLM-5.1-FP8":{input:.98,output:3.08,cache_read:.182},"gmicloud/openai/gpt-5.5":{input:5,output:30,cache_read:.5},"oci/xai.grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"oci/xai.grok-4.20-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"oci/meta.llama-3.3-70b-instruct":{input:.72,output:.72},"oci/meta.llama-4-scout-17b-16e-instruct":{input:.72,output:.72},"oci/xai.grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"oci/meta.llama-4-maverick-17b-128e-instruct-fp8":{input:.72,output:.72},"oci/openai.gpt-oss-120b":{input:.15,output:.6},"oci/openai.gpt-oss-20b":{input:.07,output:.3},"oci/xai.grok-4.20-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"cloudflare-ai-gateway/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"cloudflare-ai-gateway/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25},"cloudflare-ai-gateway/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"cloudflare-ai-gateway/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"cloudflare-ai-gateway/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"cloudflare-ai-gateway/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"cloudflare-ai-gateway/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"cloudflare-ai-gateway/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75},"cloudflare-ai-gateway/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"cloudflare-ai-gateway/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"cloudflare-ai-gateway/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75},"cloudflare-ai-gateway/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"cloudflare-ai-gateway/deepseek/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.145},"cloudflare-ai-gateway/unbiased/pareto":{input:2.5,output:7.5,cache_read:.25},"cloudflare-ai-gateway/alibaba/qwen3.7-max":{input:1.25,output:3.75,cache_read:.25},"cloudflare-ai-gateway/alibaba/qwen3.8-max":{input:2,output:6,cache_read:.25},"cloudflare-ai-gateway/alibaba/qwen3-max":{input:1.2,output:6},"cloudflare-ai-gateway/alibaba/qwen3.5-397b-a17b":{input:.6,output:3.6},"cloudflare-ai-gateway/alibaba/qwen3.7-plus":{input:.32,output:1.28,cache_read:.064},"cloudflare-ai-gateway/xai/grok-4.7":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"cloudflare-ai-gateway/xai/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"cloudflare-ai-gateway/xai/grok-4.20-0309-reasoning":{input:2,output:6,cache_read:.2},"cloudflare-ai-gateway/xai/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6}},"cloudflare-ai-gateway/xai/grok-4.20-0309-non-reasoning":{input:2,output:6,cache_read:.2},"cloudflare-ai-gateway/xai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"cloudflare-ai-gateway/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"cloudflare-ai-gateway/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25},"cloudflare-ai-gateway/openai/gpt-5.4-pro":{input:30,output:180},"cloudflare-ai-gateway/openai/gpt-5.5-pro":{input:30,output:180},"cloudflare-ai-gateway/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"cloudflare-ai-gateway/openai/gpt-4o":{input:1.25,output:5,cache_read:.625},"cloudflare-ai-gateway/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"cloudflare-ai-gateway/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"cloudflare-ai-gateway/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"cloudflare-ai-gateway/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"cloudflare-ai-gateway/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"cloudflare-ai-gateway/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"cloudflare-ai-gateway/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"cloudflare-ai-gateway/openai/gpt-4o-mini":{input:.075,output:.3,cache_read:.0375},"cloudflare-ai-gateway/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"cloudflare-ai-gateway/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"cloudflare-ai-gateway/openai/gpt-5.5":{input:5,output:30},"cloudflare-ai-gateway/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"cloudflare-ai-gateway/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"cloudflare-ai-gateway/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"cloudflare-ai-gateway/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"cloudflare-ai-gateway/openai/o3":{input:2,output:8,cache_read:.5},"cloudflare-ai-gateway/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"cloudflare-ai-gateway/openai/gpt-5.6-sol":{input:2,output:10,cache_read:.25,cache_write:3.125},"cloudflare-ai-gateway/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"clarifai/minimaxai/chat-completion/models/MiniMax-M2_5-high-throughput":{input:.3,output:1.2},"clarifai/clarifai/main/models/mm-poly-8b":{input:.658,output:1.11},"clarifai/deepseek-ai/deepseek-ocr/models/DeepSeek-OCR":{input:.2,output:.7},"clarifai/mistralai/completion/models/Ministral-3-3B-Reasoning-2512":{input:1.039,output:.54825},"clarifai/mistralai/completion/models/Ministral-3-14B-Reasoning-2512":{input:2.5,output:1.7},"clarifai/moonshotai/chat-completion/models/Kimi-K2_6":{input:.95,output:4},"clarifai/arcee_ai/AFM/models/trinity-mini":{input:.045,output:.15},"clarifai/qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct":{input:.11458,output:.74812},"clarifai/qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507":{input:.3,output:.5},"clarifai/qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507":{input:.36,output:1.3},"clarifai/openai/chat-completion/models/gpt-oss-120b-high-throughput":{input:.09,output:.36},"clarifai/openai/chat-completion/models/gpt-oss-20b":{input:.045,output:.18},"aiand/motif-technologies/motif-3":{input:.5,output:2,cache_read:.2},"aiand/google/gemma-4-31b-it":{input:.2,output:.5,cache_read:.05},"aiand/deepseek-ai/deepseek-v4-pro":{input:1,output:2.5,cache_read:.25},"aiand/deepseek-ai/deepseek-v4-flash":{input:.15,output:.25,cache_read:.08},"aiand/moonshotai/kimi-k3":{input:3,output:12.5,cache_read:.5},"aiand/moonshotai/kimi-k2.7-code":{input:.75,output:3.5,cache_read:.2},"aiand/zai-org/glm-5.2":{input:1,output:4,cache_read:.3},"aiand/zai-org/glm-5.3":{input:1,output:4,cache_read:.3},"aiand/qwen/qwen3.8-27b":{input:.4,output:3,cache_read:.2},"aiand/qwen/qwen3.6-27b":{input:.32,output:3.2,cache_read:.2},"aiand/openai/gpt-oss-120b":{input:.15,output:.6,cache_read:.08},"frogbot/grok-4-1-fast-reasoning":{input:.2,output:.5,cache_read:.05},"frogbot/gpt-5-4-mini":{input:.75,output:4.5,cache_read:.075},"frogbot/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"frogbot/grok-4-1-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"frogbot/gpt-4o":{input:2.5,output:10,cache_read:1.25},"frogbot/minimax-m2-5":{input:.3,output:1.2,cache_read:.03},"frogbot/gpt-5-4-nano":{input:.2,output:1.25,cache_read:.02},"frogbot/kimi-k2.5":{input:.6,output:3,cache_read:.1},"frogbot/gpt-oss-20b":{input:.07,output:.2},"frogbot/gemini-2.5-pro":{input:1.25,output:10,cache_read:.31},"frogbot/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.075},"frogbot/minimax-m2-7":{input:.3,output:1.2,cache_read:.06},"frogbot/kimi-k2-6":{input:.95,output:4,cache_read:.16},"frogbot/grok-code-fast-1":{input:.2,output:1.5,cache_read:.02},"frogbot/qwen-3-6-plus":{input:.5,output:3,cache_read:.1},"frogbot/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"frogbot/grok-4-3":{input:1.25,output:2.5,cache_read:.2},"frogbot/gpt-5-5":{input:2.5,output:15,cache_read:.25},"frogbot/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"frogbot/gemini-3-1-pro-preview":{input:2,output:12,cache_read:.2},"frogbot/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.14},"frogbot/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"frogbot/gpt-5-3-codex":{input:1.75,output:14,cache_read:.175},"frogbot/gpt-oss-120b":{input:.15,output:.6},"frogbot/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"frogbot/zai-glm-5-1":{input:1.4,output:4.4,cache_read:.26},"stackit/google/gemma-3-27b-it":{input:.53,output:.76},"stackit/intfloat/e5-mistral-7b-instruct":{input:.02,output:.02},"stackit/Qwen/Qwen3-VL-235B-A22B-Instruct-FP8":{input:1.76,output:2.05},"stackit/Qwen/Qwen3-VL-Embedding-8B":{input:.09,output:.09},"stackit/Qwen/Qwen3.6-27B":{input:.53,output:.76},"stackit/cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic":{input:.53,output:.76},"stackit/openai/gpt-oss-20b":{input:.18,output:.29},"stackit/openai/gpt-oss-120b":{input:.53,output:.76},"crusoe/zai/GLM-5.1":{input:1.2,output:4.4,cache_read:.25},"crusoe/zai/GLM-5.2":{input:1.4,output:4.4,cache_read:.26},"crusoe/meta-llama/Llama-3.3-70B-Instruct":{input:.25,output:.75,cache_read:.13},"crusoe/google/gemma-4-31b-it":{input:.14,output:.4,cache_read:.14},"crusoe/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.22,output:.8,cache_read:.11},"crusoe/deepseek-ai/DeepSeek-V3-0324":{input:.5,output:1.5,cache_read:.25},"crusoe/moonshotai/Kimi-K2.6":{input:.7,output:3.5,cache_read:.35},"crusoe/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B":{input:.05,output:.2,cache_read:.03},"crusoe/nvidia/Nemotron-3-Nano-Omni-Reasoning-30B-A3B":{input:.3,output:1.83,cache_read:.3,input_audio:.5},"crusoe/nvidia/NVIDIA-Nemotron-3-Super-120B-A12B":{input:.3,output:2.4,cache_read:.15},"crusoe/openai/gpt-oss-120b":{input:.05,output:.2,cache_read:.05},"jiekou/grok-4-1-fast-reasoning":{input:.18,output:.45},"jiekou/grok-4-1-fast-non-reasoning":{input:.18,output:.45},"jiekou/gpt-5.2-codex":{input:1.75,output:14},"jiekou/gpt-5.1-codex":{input:1.125,output:9},"jiekou/gemini-3-pro-preview":{input:1.8,output:10.8},"jiekou/gpt-5-codex":{input:1.125,output:9},"jiekou/gpt-5-mini":{input:.225,output:1.8},"jiekou/gpt-5.2-pro":{input:18.9,output:151.2},"jiekou/o4-mini":{input:1.1,output:4.4},"jiekou/o3-mini":{input:1.1,output:4.4},"jiekou/grok-4-fast-reasoning":{input:.18,output:.45},"jiekou/gpt-5-nano":{input:.045,output:.36},"jiekou/gemini-2.5-flash-lite-preview-06-17":{input:.09,output:.36},"jiekou/claude-opus-4-20250514":{input:13.5,output:67.5},"jiekou/grok-4-fast-non-reasoning":{input:.18,output:.45},"jiekou/claude-opus-4-1-20250805":{input:13.5,output:67.5},"jiekou/gpt-5-pro":{input:13.5,output:108},"jiekou/gpt-5-chat-latest":{input:1.125,output:9},"jiekou/claude-opus-4-5-20251101":{input:4.5,output:22.5},"jiekou/gpt-5.1":{input:1.125,output:9},"jiekou/gemini-2.5-pro":{input:1.125,output:9},"jiekou/gemini-2.5-flash":{input:.27,output:2.25},"jiekou/gemini-2.5-flash-preview-05-20":{input:.135,output:3.15},"jiekou/gpt-5.1-codex-max":{input:1.125,output:9},"jiekou/gpt-5.2":{input:1.575,output:12.6},"jiekou/grok-code-fast-1":{input:.18,output:1.35},"jiekou/claude-sonnet-4-5-20250929":{input:2.7,output:13.5},"jiekou/claude-opus-4-6":{input:5,output:25},"jiekou/gemini-3-flash-preview":{input:.5,output:3},"jiekou/claude-haiku-4-5-20251001":{input:.9,output:4.5},"jiekou/gemini-2.5-flash-lite-preview-09-2025":{input:.09,output:.36},"jiekou/gemini-2.5-pro-preview-06-05":{input:1.125,output:9},"jiekou/gemini-2.5-flash-lite":{input:.09,output:.36},"jiekou/claude-sonnet-4-20250514":{input:2.7,output:13.5},"jiekou/gpt-5.1-codex-mini":{input:.225,output:1.8},"jiekou/o3":{input:10,output:40},"jiekou/grok-4-0709":{input:2.7,output:13.5},"jiekou/deepseek/deepseek-v3-0324":{input:.28,output:1.14},"jiekou/deepseek/deepseek-v3.1":{input:.27,output:1},"jiekou/deepseek/deepseek-r1-0528":{input:.7,output:2.5},"jiekou/baidu/ernie-4.5-vl-424b-a47b":{input:.42,output:1.25},"jiekou/baidu/ernie-4.5-300b-a47b-paddle":{input:.28,output:1.1},"jiekou/minimaxai/minimax-m1-80k":{input:.55,output:2.2},"jiekou/moonshotai/kimi-k2.5":{input:.6,output:3},"jiekou/moonshotai/kimi-k2-instruct":{input:.57,output:2.3},"jiekou/moonshotai/kimi-k2-0905":{input:.6,output:2.5},"jiekou/zai-org/glm-4.5":{input:.6,output:2.2},"jiekou/zai-org/glm-4.5v":{input:.6,output:1.8},"jiekou/zai-org/glm-4.7-flash":{input:.07,output:.4},"jiekou/zai-org/glm-4.7":{input:.6,output:2.2},"jiekou/minimax/minimax-m2.1":{input:.3,output:1.2},"jiekou/qwen/qwen3-235b-a22b-instruct-2507":{input:.15,output:.8},"jiekou/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:1.5},"jiekou/qwen/qwen3-coder-next":{input:.2,output:1.5},"jiekou/qwen/qwen3-235b-a22b-fp8":{input:.2,output:.8},"jiekou/qwen/qwen3-coder-480b-a35b-instruct":{input:.29,output:1.2},"jiekou/qwen/qwen3-235b-a22b-thinking-2507":{input:.3,output:3},"jiekou/qwen/qwen3-30b-a3b-fp8":{input:.09,output:.45},"jiekou/qwen/qwen3-next-80b-a3b-instruct":{input:.15,output:1.5},"jiekou/qwen/qwen3-32b-fp8":{input:.1,output:.45},"ollama-cloud/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"ollama-cloud/nemotron-3-ultra":{input:.1,output:3,cache_read:.1},"ollama-cloud/kimi-k3":{input:3,output:15,cache_read:.3},"ollama-cloud/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"ollama-cloud/kimi-k2.6":{input:.95,output:4,cache_read:.16},"ollama-cloud/qwen3.5:397b":{input:.6,output:3.6},"ollama-cloud/gpt-oss:20b":{input:.07,output:.3,cache_read:.035},"ollama-cloud/gpt-oss:120b":{input:.15,output:.6,cache_read:.014},"ollama-cloud/nemotron-3-nano:30b":{input:.06,output:.24},"ollama-cloud/mistral-large-3:675b":{input:.5,output:1.5},"ollama-cloud/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"ollama-cloud/deepseek-v4-pro:0813":{input:.66,output:1.98,cache_read:.022},"ollama-cloud/minimax-m3":{input:.6,output:2.4,cache_read:.12},"ollama-cloud/deepseek-v4-flash:0731":{input:.22,output:.66,cache_read:.007},"ollama-cloud/gemma4:31b":{input:.14,output:.4,cache_read:.05},"ollama-cloud/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"ollama-cloud/glm-5.1":{input:1,output:3.2,cache_read:.2},"ollama-cloud/deepseek-v4-pro":{input:.66,output:1.98,cache_read:.022},"ollama-cloud/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"ollama-cloud/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"ollama-cloud/nemotron-3-super":{input:.015,output:.6,cache_read:.015},"ollama-cloud/deepseek-v4-flash":{input:.22,output:.66,cache_read:.007},"tencent-tokenhub/hy4-preview":{input:.834,output:2.501,cache_read:.042},"watsonx/meta-llama/llama-4-maverick-17b-128e-instruct-fp8":{input:.371,output:1.484},"watsonx/meta-llama/llama-3-3-70b-instruct":{input:.7526,output:.7526},"watsonx/ibm/granite-4-h-small":{input:.0636,output:.265},"watsonx/mistralai/mistral-small-3-1-24b-instruct-2503":{input:.106,output:.318},"watsonx/openai/gpt-oss-120b":{input:.159,output:.636},"ambient/deepseek/deepseek-v4-flash-0731":{input:.08,output:.18,cache_read:.016,cache_write:0},"ambient/deepseek/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028,cache_write:0},"ambient/z-ai/glm-5.2":{input:.6,output:2,cache_read:.15,cache_write:0},"ambient/ambient/large":{input:.6,output:2,cache_read:.15,cache_write:0},"ambient/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.2,cache_write:0},"ambient/moonshotai/kimi-k2.7-code":{input:.69,output:3.49,cache_read:.14,cache_write:0},"ambient/zai-org/GLM-5.2-FP8":{input:1.2,output:4.2,cache_read:.26,cache_write:0},"ambient/zai-org/GLM-5.1-FP8":{input:1.4,output:4.4,cache_read:0,cache_write:0},"ambient/xiaomi/mimo-v2.5":{input:.4,output:2,cache_read:.08,cache_write:0},"ambient/stepfun/step-3.7-flash":{input:.19,output:1.14,cache_read:.03,cache_write:0},"xai/grok-4.7":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"xai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"xai/grok-4.20-0309-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"xai/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6}},"xai/grok-4.20-0309-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"xai/grok-build-0.1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4}},"xai/grok-4.20-multi-agent-0309":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"xai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"nebius/google/gemma-3-27b-it":{input:.1,output:.3,cache_read:.01,cache_write:.125},"nebius/Qwen/Qwen3-30B-A3B-Instruct-2507":{input:.1,output:.3,cache_read:.01,cache_write:.125},"nebius/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.2,output:.6},"nebius/Qwen/Qwen3-Embedding-8B":{input:.01,output:0},"nebius/Qwen/Qwen3.5-397B-A17B":{input:.6,output:3.6,cache_read:.06,cache_write:.75},"nebius/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.14,output:.28,cache_read:.14},"nebius/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96,cache_read:1.32},"nebius/deepseek-ai/DeepSeek-V4.1-Flash":{input:.3,output:1.2,cache_read:.3},"nebius/deepseek-ai/DeepSeek-V4-Pro":{input:1.75,output:3.5,cache_read:.15},"nebius/MiniMaxAI/MiniMax-M3":{input:.3,output:1.2},"nebius/moonshotai/Kimi-K3":{input:3,output:15,cache_read:3},"nebius/moonshotai/Kimi-K2.7-Code":{input:.95,output:4},"nebius/zai-org/GLM-5.2":{input:1.4,output:4.4},"nebius/zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.15},"nebius/zai-org/GLM-5.3":{input:1.4,output:4.4,cache_read:1.4},"nebius/nvidia/nemotron-3-super-120b-a12b":{input:.3,output:.9},"nebius/nvidia/Nemotron-3_5-Lightning":{input:.06,output:.24,cache_read:.06},"nebius/nvidia/Nemotron-3-Ultra-550b-a55b":{input:1,output:3,cache_read:1},"nebius/openai/gpt-oss-120b":{input:.15,output:.6,reasoning:.6,cache_read:.015,cache_write:.18},"nebius/NousResearch/Hermes-4-405B":{input:1,output:3,reasoning:3,cache_read:.1,cache_write:1.25},"minimax-cn/MiniMax-M3":{input:.3,output:1.2,cache_read:.06,tiers:[{input:.6,output:2.4,cache_read:.12,tier:{type:"context",size:512e3}}],context_over_200k:{input:.6,output:2.4,cache_read:.12}},"minimax-cn/MiniMax-M2.1":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"minimax-cn/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"minimax-cn/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"minimax-cn/MiniMax-M2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"minimax-cn/MiniMax-M2":{input:.3,output:1.2},"minimax-cn/MiniMax-M2.5-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"scaleway/deepseek-v4-flash-0731":{input:.468,output:.936,reasoning:.936,cache_read:.0936},"scaleway/qwen3-235b-a22b-instruct-2507":{input:.75,output:2.25,reasoning:8.4},"scaleway/whisper-large-v3":{input:.003,output:0},"scaleway/bge-multilingual-gemma2":{input:.1,output:0},"scaleway/qwen3-coder-30b-a3b-instruct":{input:.2,output:.8},"scaleway/gemma-4-26b-a4b-it":{input:.25,output:.5},"scaleway/llama-3.3-70b-instruct":{input:.9,output:.9},"scaleway/qwen3.6-35b-a3b":{input:.25,output:1.5},"scaleway/pixtral-12b-2409":{input:.2,output:.2},"scaleway/qwen3-embedding-8b":{input:.1,output:0},"scaleway/mistral-medium-3.5-128b":{input:1.5,output:7.5},"scaleway/qwen3.5-397b-a17b":{input:.6,output:3.6},"scaleway/glm-5.2":{input:1.8,output:5.5},"scaleway/mistral-small-3.2-24b-instruct-2506":{input:.15,output:.35},"scaleway/gpt-oss-120b":{input:.15,output:.6},"vercel/interfaze/interfaze-beta":{input:1.5,output:3.5},"vercel/zai/glm-4.5":{input:.6,output:2.2,cache_read:.11},"vercel/zai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"vercel/zai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"vercel/zai/glm-4.6":{input:.6,output:2.2,cache_read:.11},"vercel/zai/glm-5.2-fast":{input:2.1,output:6.6,cache_read:.21},"vercel/zai/glm-5":{input:1,output:3.2},"vercel/zai/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"vercel/zai/glm-5.3-flashx":{input:.37,output:1.25,cache_read:.075},"vercel/zai/glm-4.7-flash":{input:.07,output:.4},"vercel/zai/glm-4.7":{input:.6,output:2.2,cache_read:.12},"vercel/zai/glm-5.2":{input:.8,output:2.55,cache_read:.16},"vercel/zai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"vercel/zai/glm-4.7-flashx":{input:.06,output:.4,cache_read:.01},"vercel/zai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"vercel/zai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03},"vercel/zai/glm-5.3":{input:1.4,output:4.4,cache_read:.14},"vercel/zai/glm-5.3-fast":{input:2.1,output:6.6,cache_read:.21},"vercel/spacexai/grok-4.20-multi-agent":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-4.20-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-4.7":{input:1.2,output:3.6,cache_read:.3,tiers:[{input:2.4,output:7.2,cache_read:.6,tier:{type:"context",size:200001}}],context_over_200k:{input:2.4,output:7.2,cache_read:.6}},"vercel/spacexai/grok-4.20-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-4.1-fast-reasoning":{input:.2,output:.5,cache_read:.05},"vercel/spacexai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:200001}}],context_over_200k:{input:4,output:12,cache_read:.6}},"vercel/spacexai/grok-4.20-multi-agent-beta":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-4.20-non-reasoning-beta":{input:1.25,output:2.5,cache_read:.4,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-build-0.1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2,output:4,cache_read:.4}},"vercel/spacexai/grok-4.1-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"vercel/spacexai/grok-4.20-reasoning-beta":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"vercel/spacexai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:200001}}],context_over_200k:{input:4,output:12,cache_read:1}},"vercel/poolside/laguna-s-2.1":{input:.1,output:.2,cache_read:.01},"vercel/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"vercel/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25},"vercel/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"vercel/anthropic/claude-3-haiku":{input:.25,output:1.25,cache_read:.03,cache_write:.3},"vercel/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"vercel/anthropic/claude-opus-5.5-fast":{input:8,output:40,cache_read:.4,cache_write:10},"vercel/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"vercel/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"vercel/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"vercel/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"vercel/anthropic/claude-opus-4.8-fast":{input:10,output:50,cache_read:1,cache_write:12.5},"vercel/anthropic/claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:200001}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"vercel/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"vercel/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"vercel/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"vercel/anthropic/claude-opus-5-fast":{input:10,output:50,cache_read:1,cache_write:12.5},"vercel/anthropic/claude-opus-4":{input:15,output:75,cache_read:1.5,cache_write:18.75},"vercel/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75},"vercel/cohere/command-a":{input:2.5,output:10},"vercel/deepseek/deepseek-v4-flash-0731":{input:.076,output:.153,cache_read:.014},"vercel/deepseek/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.007},"vercel/deepseek/deepseek-v4-flash-vision-exp":{input:.22,output:.66,cache_read:.007},"vercel/deepseek/deepseek-v3.1-terminus":{input:.27,output:1,cache_read:.135},"vercel/deepseek/deepseek-v4-pro-0813":{input:.66,output:1.98,cache_read:.066},"vercel/deepseek/deepseek-v3.2-thinking":{input:.62,output:1.85},"vercel/deepseek/deepseek-v3.1":{input:.25,output:.95,cache_read:.13},"vercel/deepseek/deepseek-v4-pro":{input:.66,output:1.98,cache_read:.022},"vercel/deepseek/deepseek-v3.2":{input:.62,output:1.85},"vercel/deepseek/deepseek-v4-flash":{input:.13,output:.26,cache_read:.028},"vercel/deepseek/deepseek-r1":{input:1.35,output:5.4},"vercel/quiverai/arrow-2":{input:4,output:20,cache_read:.4,cache_write:5},"vercel/quiverai/arrow-2-telos":{input:6,output:30,cache_read:.6,cache_write:7.5},"vercel/tencent/hy-mt2-lite":{input:.044,output:.177},"vercel/tencent/hy3":{input:.14,output:.58,cache_read:.035},"vercel/tencent/hy-mt2-plus":{input:.074,output:.295},"vercel/tencent/hy-mt2-pro":{input:.074,output:.295},"vercel/tencent/hy4-preview":{input:.834,output:2.501,cache_read:.042},"vercel/inference-net/schematron-v2-small":{input:.05,output:.23,cache_read:.05},"vercel/inference-net/schematron-v2-turbo":{input:.03,output:.15,cache_read:.03},"vercel/thinkingmachines/inkling-small":{input:.5,output:1.2,cache_read:.1},"vercel/thinkingmachines/inkling":{input:1,output:4.05,cache_read:.17},"vercel/meta/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"vercel/meta/muse-glimmer-30b":{input:.35,output:1.5,cache_read:.04},"vercel/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"vercel/meta/llama-3.1-8b":{input:.22,output:.22},"vercel/meta/llama-3.1-70b":{input:.72,output:.72},"vercel/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"vercel/meta/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"vercel/meta/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"vercel/arcee-ai/trinity-large-thinking":{input:.25,output:.9},"vercel/alibaba/qwen3.5-flash":{input:.1,output:.4,cache_read:.01,cache_write:.125},"vercel/alibaba/qwen-3-32b":{input:.16,output:.64},"vercel/alibaba/qwen3-vl-235b-a22b-instruct":{input:.4,output:1.6},"vercel/alibaba/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"vercel/alibaba/qwen3.8-27b":{input:.5,output:3,cache_read:.1,cache_write:.625},"vercel/alibaba/qwen3-vl-thinking":{input:.4,output:4},"vercel/alibaba/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25},"vercel/alibaba/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"vercel/alibaba/qwen3.8-max":{input:2,output:6,cache_read:.25},"vercel/alibaba/qwen3-coder-next":{input:.5,output:1.2},"vercel/alibaba/qwen3-vl-instruct":{input:.4,output:1.6},"vercel/alibaba/qwen3-coder":{input:1.5,output:7.5,cache_read:.3,tiers:[{input:2.7,output:13.5,cache_read:.54,tier:{type:"context",size:32001}},{input:4.5,output:22.5,cache_read:.9,tier:{type:"context",size:128001}}]},"vercel/alibaba/qwen3.5-plus":{input:.4,output:2.5,cache_read:.04,cache_write:.5,tiers:[{input:.5,output:3,cache_read:.05,cache_write:.625,tier:{type:"context",size:256001}}],context_over_200k:{input:.5,output:3,cache_read:.05,cache_write:.625}},"vercel/alibaba/qwen-3.6-max-preview":{input:1.3,output:7.8,cache_read:.13,cache_write:1.625,tiers:[{input:2,output:12,cache_read:.2,cache_write:2.5,tier:{type:"context",size:128e3}}]},"vercel/alibaba/qwen-3-14b":{input:.12,output:.24},"vercel/alibaba/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.038,tiers:[{input:.1,output:.4,cache_read:.02,cache_write:.125,tier:{type:"context",size:32e3}},{input:.2,output:.8,cache_read:.04,cache_write:.25,tier:{type:"context",size:256e3}}]},"vercel/alibaba/qwen3-max":{input:1.2,output:6,cache_read:.24,tiers:[{input:2.4,output:12,cache_read:.48,tier:{type:"context",size:32001}},{input:3,output:15,cache_read:.6,tier:{type:"context",size:128001}}]},"vercel/alibaba/qwen-3-30b":{input:.12,output:.5},"vercel/alibaba/qwen3.8-omni-flash":{input:.15,output:.47,cache_read:.016},"vercel/alibaba/qwen3-coder-30b-a3b":{input:.15,output:.6},"vercel/alibaba/qwen3-max-preview":{input:1.2,output:6,cache_read:.24,tiers:[{input:2.4,output:12,cache_read:.48,tier:{type:"context",size:32001}},{input:3,output:15,cache_read:.6,tier:{type:"context",size:128001}}]},"vercel/alibaba/qwen3-next-80b-a3b-instruct":{input:.15,output:1.2},"vercel/alibaba/qwen3-max-thinking":{input:1.2,output:6,cache_read:.24,tiers:[{input:2.4,output:12,cache_read:.48,tier:{type:"context",size:32001}},{input:3,output:15,cache_read:.6,tier:{type:"context",size:128001}}]},"vercel/alibaba/qwen3-coder-plus":{input:1,output:5,cache_read:.2,tiers:[{input:1.8,output:9,cache_read:.36,tier:{type:"context",size:32001}},{input:3,output:15,cache_read:.6,tier:{type:"context",size:128001}},{input:6,output:60,cache_read:1.2,tier:{type:"context",size:256001}}]},"vercel/alibaba/qwen3.8-max-prime":{input:4,output:12,cache_read:.5},"vercel/alibaba/qwen3-235b-a22b-thinking":{input:.4,output:4},"vercel/alibaba/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"vercel/alibaba/qwen3.6-27b":{input:.6,output:3.6},"vercel/alibaba/qwen-3-235b":{input:.22,output:.88},"vercel/alibaba/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"vercel/alibaba/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5,tiers:[{input:1.2,output:4.8,cache_read:.24,cache_write:1.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.2,output:4.8,cache_read:.24,cache_write:1.5}},"vercel/alibaba/qwen3.8-max-0902":{input:2,output:6,cache_read:.25,cache_write:2.5},"vercel/mixedbread/toast-1":{input:.3,output:.72,cache_read:.036},"vercel/bytedance/seed-1.8":{input:.25,output:2,cache_read:.05,tiers:[{input:.5,output:4,cache_read:.05,tier:{type:"context",size:128001}}]},"vercel/bytedance/seed-2.1-turbo":{input:.5,output:2.5,cache_read:.1},"vercel/bytedance/seed-1.6":{input:.25,output:2,cache_read:.05,tiers:[{input:.5,output:4,cache_read:.05,tier:{type:"context",size:128001}}]},"vercel/google/gemma-4-31b-it":{input:.14,output:.4},"vercel/google/gemini-omni-flash-preview":{input:1.5,output:9},"vercel/google/gemini-3.1-flash-image-preview":{input:.5,output:3,cache_read:.05},"vercel/google/gemini-2.5-flash-image":{input:.3,output:2.5,cache_read:.03},"vercel/google/gemini-3.8-flash-lite-tts":{input:.5,output:6,cache_read:.125},"vercel/google/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075},"vercel/google/gemma-4-26b-a4b-it":{input:.15,output:.6,cache_read:.015},"vercel/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"vercel/google/gemini-3.1-flash-image":{input:.5,output:3,cache_read:.05},"vercel/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:200001}}],context_over_200k:{input:4,output:18,cache_read:.4}},"vercel/google/gemini-3-flash":{input:.5,output:3,cache_read:.05},"vercel/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15},"vercel/google/gemini-3-pro-image":{input:2,output:12,cache_read:.2},"vercel/google/gemini-3.8-live":{input:.75,output:4.5},"vercel/google/gemini-3.1-flash-lite-image":{input:.25,output:1.5,cache_read:.03},"vercel/google/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"vercel/google/gemini-3.5-transcribe":{input:2,output:12},"vercel/google/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075},"vercel/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01},"vercel/google/gemini-3.8-flash-tts":{input:.5,output:9,cache_read:.125},"vercel/google/gemini-3.8-live-extended-thinking":{input:.75,output:4.5},"vercel/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.03},"vercel/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"vercel/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"vercel/sakana/fugu-max":{input:2,output:6,cache_read:.25},"vercel/sakana/fugu-ultra-v2":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272001}}],context_over_200k:{input:10,output:45,cache_read:1}},"vercel/sakana/namazu":{input:.95,output:4,cache_read:.15},"vercel/sakana/fugu-ultra":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272001}}],context_over_200k:{input:10,output:45,cache_read:1}},"vercel/inclusionai/ling-3.0-flash":{input:.021,output:.063,cache_read:.0042},"vercel/inclusionai/ling-3.0-flash-vl":{input:.075,output:.22,cache_read:.015},"vercel/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"vercel/moonshotai/kimi-k3-fast":{input:4.5,output:22.5,cache_read:.45},"vercel/moonshotai/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"vercel/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"vercel/moonshotai/kimi-k2-thinking":{input:.47,output:2,cache_read:.141},"vercel/moonshotai/kimi-k2.5":{input:.6,output:3},"vercel/moonshotai/kimi-k2":{input:.57,output:2.3},"vercel/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.16},"vercel/nvidia/nemotron-3-nano-30b-a3b":{input:.05,output:.2,cache_read:.025},"vercel/nvidia/nemotron-3.5-lightning":{input:.05,output:.2,cache_read:.01},"vercel/nvidia/nemotron-nano-9b-v2":{input:.06,output:.23},"vercel/nvidia/nemotron-3-super-120b-a12b":{input:.15,output:.65},"vercel/nvidia/nemotron-3-ultra-550b-a55b":{input:.6,output:2.4,cache_read:.12},"vercel/nvidia/nemotron-nano-12b-v2-vl":{input:.2,output:.6},"vercel/xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"vercel/xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.0028},"vercel/xiaomi/mimo-v2.6-pro-ultraspeed":{input:4.35,output:8.7,cache_read:.036},"vercel/xiaomi/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036},"vercel/xiaomi/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"vercel/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"vercel/minimax/minimax-m2.1-lightning":{input:.3,output:2.4,cache_read:.03,cache_write:.375},"vercel/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"vercel/minimax/minimax-m3":{input:.3,output:1.2,cache_read:.06},"vercel/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"vercel/minimax/minimax-m2.5-highspeed":{input:.6,output:2.4,cache_read:.03,cache_write:.375},"vercel/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"vercel/minimax/minimax-m2":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"vercel/stepfun/step-5-preview":{input:1,output:2.7,cache_read:.05},"vercel/stepfun/step-3.5-flash":{input:.09,output:.3,cache_read:.02},"vercel/stepfun/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"vercel/inception/mercury-coder-small":{input:.25,output:1},"vercel/inception/mercury-2.5":{input:.04,output:.15,cache_read:.004},"vercel/inception/mercury-2":{input:.25,output:.75,cache_read:.024999999999999998},"vercel/amazon/nova-2-lite":{input:.3,output:2.5,cache_read:.075},"vercel/amazon/nova-lite":{input:.06,output:.24,cache_read:.015,cache_write:.06},"vercel/amazon/nova-pro":{input:.8,output:3.2,cache_read:.2,cache_write:.8},"vercel/amazon/nova-micro":{input:.035,output:.14,cache_read:.00875,cache_write:.035},"vercel/mistral/mistral-nemo":{input:.04,output:.17},"vercel/mistral/mistral-medium-3.5":{input:1.5,output:7.5,cache_read:.15},"vercel/mistral/mistral-small":{input:.15,output:.6,cache_read:.015},"vercel/mistral/mistral-large-3":{input:.5,output:1.5,cache_read:.05},"vercel/mistral/ministral-14b":{input:.2,output:.2,cache_read:.02},"vercel/mistral/codestral":{input:.3,output:.9},"vercel/mistral/ministral-8b":{input:.1,output:.1},"vercel/mistral/ministral-3b":{input:.04,output:.04},"vercel/morph/morph-v3-fast":{input:.8,output:1.2},"vercel/morph/morph-v3-large":{input:.9,output:1.9},"vercel/openai/gpt-4.1-mini-fast":{input:.7,output:2.8,cache_read:.175},"vercel/openai/o3-fast":{input:3.5,output:14,cache_read:.875},"vercel/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"vercel/openai/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"vercel/openai/gpt-oss-safeguard-120b":{input:.15,output:.6},"vercel/openai/gpt-3.5-turbo":{input:.5,output:1.5},"vercel/openai/gpt-5.2-fast":{input:3.5,output:28,cache_read:.35},"vercel/openai/gpt-4o-transcribe":{input:2.5,output:10},"vercel/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"vercel/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"vercel/openai/gpt-realtime-2.1":{input:4,output:24,cache_read:.4},"vercel/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"vercel/openai/gpt-4o-fast":{input:4.25,output:17,cache_read:2.125},"vercel/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.13},"vercel/openai/gpt-realtime-1.5":{input:4,output:16,cache_read:.4},"vercel/openai/gpt-4.1-nano-fast":{input:.2,output:.8,cache_read:.05},"vercel/openai/gpt-5-codex":{input:1.25,output:10,cache_read:.13},"vercel/openai/gpt-image-2":{input:5,output:30,cache_read:1.25},"vercel/openai/gpt-5.6-luna-fast":{input:.4,output:2.4,cache_read:.04,cache_write:.5,tiers:[{input:.8,output:3.6,cache_read:.08,cache_write:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:.8,output:3.6,cache_read:.08,cache_write:1}},"vercel/openai/gpt-6-astra-fast":{input:20,output:100,cache_read:2,cache_write:25,tiers:[{input:40,output:150,cache_read:4,cache_write:50,tier:{type:"context",size:272001}}],context_over_200k:{input:40,output:150,cache_read:4,cache_write:50}},"vercel/openai/gpt-5.2-pro":{input:21,output:168},"vercel/openai/gpt-5.1-thinking-fast":{input:2.5,output:20,cache_read:.25},"vercel/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"vercel/openai/gpt-5.3-codex-fast":{input:3.5,output:28,cache_read:.35},"vercel/openai/gpt-5.5-fast":{input:12.5,output:75,cache_read:1.25},"vercel/openai/gpt-image-2.5-flare":{input:5,output:30,cache_read:1.25},"vercel/openai/gpt-5.4-fast":{input:5,output:30,cache_read:.5},"vercel/openai/gpt-5.6-sol-fast":{input:8,output:40,cache_read:.8,cache_write:10,tiers:[{input:16,output:60,cache_read:1.6,cache_write:20,tier:{type:"context",size:272e3}}],context_over_200k:{input:16,output:60,cache_read:1.6,cache_write:20}},"vercel/openai/o4-mini-fast":{input:2,output:8,cache_read:.5},"vercel/openai/gpt-5-pro":{input:15,output:120},"vercel/openai/gpt-5.1-thinking":{input:1.25,output:10,cache_read:.125},"vercel/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272001}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"vercel/openai/gpt-5.4-mini-fast":{input:1.5,output:9,cache_read:.15},"vercel/openai/gpt-realtime-mini":{input:.6,output:2.4,cache_read:.06},"vercel/openai/gpt-5-mini-fast":{input:.45,output:3.6,cache_read:.045},"vercel/openai/o3-pro":{input:20,output:80},"vercel/openai/gpt-oss-20b":{input:.03,output:.14},"vercel/openai/gpt-oss-safeguard-20b":{input:.07,output:.2},"vercel/openai/gpt-image-2.5-sunburst":{input:5,output:30,cache_read:1.25},"vercel/openai/gpt-5.6-terra-fast":{input:4,output:24,cache_read:.4,cache_write:5,tiers:[{input:8,output:36,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:36,cache_read:.8,cache_write:10}},"vercel/openai/gpt-image-1":{input:5,output:40,cache_read:1.25},"vercel/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"vercel/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"vercel/openai/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"vercel/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"vercel/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"vercel/openai/gpt-6-sol-fast":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272001}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"vercel/openai/gpt-6-luna-fast":{input:.2,output:1,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.5,cache_read:.04,cache_write:.5,tier:{type:"context",size:272001}}],context_over_200k:{input:.4,output:1.5,cache_read:.04,cache_write:.5}},"vercel/openai/gpt-5-fast":{input:2.5,output:20,cache_read:.25},"vercel/openai/gpt-realtime-2":{input:4,output:24,cache_read:.4},"vercel/openai/gpt-4.1-fast":{input:3.5,output:14,cache_read:.875},"vercel/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272001}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"vercel/openai/gpt-image-1-mini":{input:2,output:8,cache_read:.2},"vercel/openai/gpt-4o-mini-transcribe":{input:1.25,output:5},"vercel/openai/gpt-image-1.5":{input:5,output:32,cache_read:1.25},"vercel/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"vercel/openai/gpt-oss-120b":{input:.1,output:.5,cache_read:.1},"vercel/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.03},"vercel/openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"vercel/openai/gpt-4o-mini-fast":{input:.25,output:1,cache_read:.125},"vercel/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272001}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"vercel/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"vercel/openai/o3":{input:2,output:8,cache_read:.5},"vercel/openai/gpt-4-turbo":{input:10,output:30},"vercel/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"vercel/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"vercel/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"vercel/openai/o1":{input:15,output:60,cache_read:7.5},"vercel/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"vercel/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"vercel/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"vercel/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"vercel/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"vercel/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"ebcloud/Kimi-K2.6":{input:.9286,output:3.8571},"ebcloud/GLM-5.1":{input:.8571,output:3.4286},"ebcloud/DeepSeek-V4-Flash":{input:.143,output:.2857},"ebcloud/DeepSeek-V4-Pro":{input:.4286,output:.8571},"greenpt/glm-5.2-honey-ultra":{input:1.254,output:5.016,cache_read:.3135},"greenpt/glm-5.2-ponytail-lite":{input:1.254,output:5.016,cache_read:.3135},"greenpt/gemma-3-27b-it":{input:.342,output:.684},"greenpt/glm-5.3-flash":{input:.127754,output:.511016,cache_read:.0255508},"greenpt/deepseek-v4-flash-0731":{input:.1596,output:.399,cache_read:.0456},"greenpt/qwen3-235b-a22b-instruct-2507":{input:1.026,output:3.078},"greenpt/kimi-k3":{input:3.762,output:18.81,cache_read:.9405},"greenpt/deepseek-v4.1-flash":{input:.255552,output:1.27776,cache_read:.0127776},"greenpt/minimax-m2.5":{input:.1938,output:1.129,cache_read:.0627},"greenpt/kimi-k2.6":{input:.7524,output:4.275,cache_read:.2508},"greenpt/green-s":{input:.00437,output:0},"greenpt/green-l":{input:.285,output:.912},"greenpt/qwen3-coder-30b-a3b-instruct":{input:.285,output:1.083},"greenpt/llama-3.3-70b-instruct":{input:1.254,output:1.254},"greenpt/gemma4":{input:.57,output:1.71},"greenpt/qwen3.6-35b-a3b":{input:.342,output:2.052},"greenpt/pixtral-12b-2409":{input:.285,output:.285},"greenpt/glm-5.2-honey":{input:1.254,output:5.016,cache_read:.3135},"greenpt/holo2-30b-a3b":{input:.399,output:.969},"greenpt/green-r-raw":{input:.399,output:1.083},"greenpt/green-s-pro":{input:.00437,output:0},"greenpt/devstral-2-123b-instruct-2512":{input:.57,output:2.736},"greenpt/mistral-medium-3.5-128b":{input:2.052,output:10.26},"greenpt/qwen3.5-397b-a17b":{input:.798,output:4.959},"greenpt/glm-5.2":{input:1.254,output:5.016,cache_read:.3135},"greenpt/voxtral-small-24b-2507":{input:.228,output:.513},"greenpt/green-l-raw":{input:.285,output:.912},"greenpt/glm-5.2-ponytail-ultra":{input:1.254,output:5.016,cache_read:.3135},"greenpt/green-r":{input:.399,output:1.083},"greenpt/glm-5.1":{input:1.756,output:5.518},"greenpt/mistral-small-3.2-24b-instruct-2506":{input:.228,output:.456},"greenpt/glm-5.2-caveman":{input:1.254,output:5.016,cache_read:.3135},"greenpt/kimi-k2.6-fast":{input:1.655,output:8.778},"greenpt/gpt-oss-120b":{input:.228,output:.798},"greenpt/glm-5.3":{input:1.27754,output:5.11016,cache_read:.319385},"greenpt/glm-5.2-caveman-ultra":{input:1.254,output:5.016,cache_read:.3135},"greenpt/kimi-k2.7-code":{input:.9006,output:4.389,cache_read:.1881},"greenpt/glm-5.2-ponytail":{input:1.254,output:5.016,cache_read:.3135},"greenpt/glm-5.2-honey-lite":{input:1.254,output:5.016,cache_read:.3135},"greenpt/glm-5.2-caveman-lite":{input:1.254,output:5.016,cache_read:.3135},"mixlayer/qwen/qwen3.5-27b":{input:.3,output:2.4},"mixlayer/qwen/qwen3.5-122b-a10b":{input:.4,output:3.2},"mixlayer/qwen/qwen3.5-9b":{input:.1,output:.4},"mixlayer/qwen/qwen3.5-35b-a3b":{input:.25,output:1.3},"mixlayer/qwen/qwen3.5-397b-a17b":{input:.6,output:3.6},"hyper/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5},"hyper/qwen3.8-27b":{input:.5,output:3,cache_read:.1},"hyper/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25},"hyper/glm-5.3-flash":{input:.16332,output:.5444,cache_read:.031575},"hyper/deepseek-v4-flash-0731":{input:.44,output:1.32,cache_read:.044},"hyper/qwen3.8-max":{input:2,output:6,cache_read:.25},"hyper/kimi-k3":{input:3.2664,output:16.332,cache_read:.32664},"hyper/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.03},"hyper/qwen3.7-flash":{input:.2,output:.8,cache_read:.04},"hyper/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.3},"hyper/gemma-4-26b-a4b-it":{input:.098,output:.334,cache_read:.049},"hyper/minimax-m2.7":{input:.484,output:1.852,cache_read:.242},"hyper/deepseek-v4-pro-0813":{input:1.437216,output:4.311648,cache_read:.047907},"hyper/inkling":{input:1.0888,output:4.40964,cache_read:.185096},"hyper/minimax-m3":{input:.32664,output:1.30656,cache_read:.064239},"hyper/qwen3.8-flash":{input:.15,output:.47,cache_read:.016},"hyper/glm-5.2":{input:1.52432,output:4.79072,cache_read:.152432},"hyper/deepseek-v4-pro":{input:2.4,output:4.8,cache_read:.2},"hyper/gpt-oss-120b":{input:.178,output:.68,cache_read:.089},"hyper/glm-5.3":{input:1.52432,output:4.79072,cache_read:.283088},"hyper/kimi-k2.7-code":{input:1.03436,output:4.3552,cache_read:.206872},"hyper/qwen3.7-plus":{input:1.2,output:4.8,cache_read:.24},"hyper/deepseek-v4-flash":{input:.2,output:.4,cache_read:.04},"jalapeno/Qwen3-VL-235B-A22B-Instruct":{input:.3,output:1.5},"jalapeno/MiniMax-M3":{input:.3,output:1.2},"jalapeno/Qwen3-Next-80B-A3B-Instruct":{input:.15,output:1.5},"jalapeno/GLM-5.1":{input:1.38,output:4.4},"jalapeno/Hy3":{input:.14,output:.58},"jalapeno/GLM-5.2":{input:1.4,output:4.4},"jalapeno/Qwen3-VL-235B-A22B-Thinking":{input:.98,output:3.95},"jalapeno/Qwen3.5-27B":{input:.3,output:2.4},"jalapeno/Kimi-K3":{input:3,output:15},"jalapeno/Qwen3-Next-80B-A3B-Thinking":{input:.15,output:1.5},"jalapeno/DeepSeek-V4-Flash":{input:.14,output:.28},"jalapeno/DeepSeek-V4-Pro":{input:1.6,output:3.38},"jalapeno/Qwen3.5-35B-A3B":{input:.25,output:2},"jalapeno/Qwen3.5-122B-A10B":{input:.4,output:3.2},"jalapeno/Qwen3.5-397B-A17B":{input:.6,output:3.6},"jalapeno/Kimi-K2.7-Code":{input:.95,output:4},"jalapeno/Kimi-K2.5":{input:.6,output:3},"dinference/glm-5":{input:.75,output:2.4},"dinference/minimax-m2.5":{input:.22,output:.88},"dinference/glm-4.7":{input:.45,output:1.65},"dinference/glm-5.2":{input:1.25,output:3.89},"dinference/glm-5.1":{input:1.25,output:3.89},"dinference/gpt-oss-120b":{input:.0675,output:.27},"neosmith/neosmith.neolite":{input:.6,output:2.4,cache_read:.08,cache_write:0},"neosmith/neosmith.intelligent-maestro":{input:2.4,output:12,cache_read:.35,cache_write:0},"neosmith/neosmith.intelligent-pro":{input:1.81,output:8.39,cache_read:.3,cache_write:0},"neosmith/neosmith.intelligent-basic":{input:1.17,output:4.37,cache_read:.22,cache_write:0},"fireworks-ai/accounts/fireworks/models/kimi-k2p6":{input:.95,output:4,cache_read:.16},"fireworks-ai/accounts/fireworks/models/nemotron-3-ultra-nvfp4":{input:.6,output:2.4,cache_read:.12},"fireworks-ai/accounts/fireworks/models/deepseek-v4-flash-0731":{input:.22,output:.66,cache_read:.007},"fireworks-ai/accounts/fireworks/models/muse-glimmer-30b":{input:.35,output:1.5,cache_read:.04},"fireworks-ai/accounts/fireworks/models/kimi-k3":{input:3,output:15,cache_read:.3},"fireworks-ai/accounts/fireworks/models/qwen3p8-2p4t-a95b":{input:2,output:6,cache_read:.25},"fireworks-ai/accounts/fireworks/models/ember-1":{input:3,output:15,cache_read:.3},"fireworks-ai/accounts/fireworks/models/deepseek-v4-flash-vision-exp":{input:.22,output:.66,cache_read:.007},"fireworks-ai/accounts/fireworks/models/deepseek-v4p1-flash":{input:.22,output:.66,cache_read:.007},"fireworks-ai/accounts/fireworks/models/qwen3p7-plus":{input:.4,output:1.6,cache_read:.08},"fireworks-ai/accounts/fireworks/models/glm-5p3":{input:1.4,output:4.4,cache_read:.26},"fireworks-ai/accounts/fireworks/models/minimax-m2p7":{input:1.2,output:1.2,cache_read:.6},"fireworks-ai/accounts/fireworks/models/nemotron-lightning-3p5-30b-a3b":{input:.05,output:.2,cache_read:.01},"fireworks-ai/accounts/fireworks/models/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"fireworks-ai/accounts/fireworks/models/inkling":{input:1,output:4.05,cache_read:.17},"fireworks-ai/accounts/fireworks/models/glm-5p2":{input:1.4,output:4.4,cache_read:.14},"fireworks-ai/accounts/fireworks/models/minimax-m3":{input:.3,output:1.2,cache_read:.06},"fireworks-ai/accounts/fireworks/models/kimi-k2p7-code":{input:.95,output:4,cache_read:.19},"fireworks-ai/accounts/fireworks/models/glm-5p3-flash":{input:.15,output:.5,cache_read:.03},"fireworks-ai/accounts/fireworks/models/deepseek-v4-pro":{input:1.2,output:1.2,cache_read:.6},"fireworks-ai/accounts/fireworks/models/gpt-oss-120b":{input:.15,output:.6,cache_read:.015},"fireworks-ai/accounts/fireworks/models/qwen3p8-max":{input:2,output:6,cache_read:.25},"fireworks-ai/accounts/fireworks/routers/minimax-latest":{input:.3,output:1.2,cache_read:.06},"fireworks-ai/accounts/fireworks/routers/glm-flash-latest":{input:.15,output:.5,cache_read:.03},"fireworks-ai/accounts/fireworks/routers/glm-fast-latest":{input:2.1,output:6.6,cache_read:.39},"fireworks-ai/accounts/fireworks/routers/kimi-k3-fast":{input:4.5,output:22.5,cache_read:.45},"fireworks-ai/accounts/fireworks/routers/glm-5p3-fast":{input:2.1,output:6.6,cache_read:.39},"fireworks-ai/accounts/fireworks/routers/kimi-fast-latest":{input:4.5,output:22.5,cache_read:.45},"fireworks-ai/accounts/fireworks/routers/qwen-max-latest":{input:2,output:6,cache_read:.25},"fireworks-ai/accounts/fireworks/routers/kimi-latest":{input:3,output:15,cache_read:.3},"fireworks-ai/accounts/fireworks/routers/deepseek-flash-latest":{input:.22,output:.66,cache_read:.007},"fireworks-ai/accounts/fireworks/routers/glm-5p2-fast":{input:2.1,output:6.6,cache_read:.21},"fireworks-ai/accounts/fireworks/routers/glm-latest":{input:1.4,output:4.4,cache_read:.26},"stepfun-ai/step-5-preview":{input:1,output:2.7,cache_read:.05},"stepfun-ai/step-3.7-flash":{input:.185,output:1.11,cache_read:.037},"stepfun-ai/step-3.5-flash":{input:.1,output:.3,cache_read:.02},"stepfun-ai/step-2-16k":{input:5.21,output:16.44,cache_read:1.04},"stepfun-ai/step-3.5-flash-2603":{input:.1,output:.3,cache_read:.02},"stepfun-ai/step-1-32k":{input:2.05,output:9.59,cache_read:.41},"fastrouter/anthropic/claude-opus-4.1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"fastrouter/anthropic/claude-opus-4.8":{input:5,output:25},"fastrouter/anthropic/claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75},"fastrouter/anthropic/claude-sonnet-4.6":{input:3,output:15},"fastrouter/deepseek/deepseek-v4-pro":{input:1.74,output:3.48},"fastrouter/z-ai/glm-5":{input:.95,output:3.15},"fastrouter/z-ai/glm-5.1":{input:1.05,output:3.5},"fastrouter/sarvam/sarvam-30b":{input:.02,output:.1},"fastrouter/sarvam/sarvam-105b":{input:.04,output:.16},"fastrouter/x-ai/grok-4":{input:3,output:15,cache_read:.75,cache_write:15},"fastrouter/x-ai/grok-4.3":{input:1.25,output:2.5},"fastrouter/x-ai/grok-build-0.1":{input:1,output:2},"fastrouter/google/gemma-4-31b-it":{input:.13,output:.38},"fastrouter/google/gemini-3.1-flash-image-preview":{input:.5,output:3},"fastrouter/google/gemini-3-pro-image-preview":{input:2,output:12},"fastrouter/google/gemini-3.1-pro-preview":{input:2,output:12},"fastrouter/google/gemini-3.5-flash":{input:1.5,output:9},"fastrouter/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.31},"fastrouter/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.0375},"fastrouter/deepseek-ai/deepseek-r1-distill-llama-70b":{input:.03,output:.14},"fastrouter/moonshotai/kimi-k2.6":{input:.75,output:3.5},"fastrouter/moonshotai/kimi-k2":{input:.55,output:2.2},"fastrouter/minimax/minimax-m2.7":{input:.3,output:1.2},"fastrouter/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4},"fastrouter/qwen/qwen3-coder":{input:.3,output:1.2},"fastrouter/openai/gpt-5.5-pro":{input:30,output:180},"fastrouter/openai/gpt-5.4-nano":{input:.2,output:1.25},"fastrouter/openai/gpt-realtime-1.5":{input:4,output:16},"fastrouter/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"fastrouter/openai/gpt-5.3-codex":{input:1.75,output:14},"fastrouter/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"fastrouter/openai/gpt-oss-20b":{input:.05,output:.2},"fastrouter/openai/gpt-5.4-mini":{input:.75,output:4.5},"fastrouter/openai/gpt-5.5":{input:5,output:30},"fastrouter/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"fastrouter/openai/gpt-oss-120b":{input:.15,output:.6},"fastrouter/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"orcarouter/grok/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"orcarouter/grok/grok-4.5":{input:2,output:6,cache_read:.5},"orcarouter/grok/grok-4.6":{input:2,output:6,cache_read:.5},"orcarouter/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"orcarouter/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25},"orcarouter/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"orcarouter/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"orcarouter/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"orcarouter/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:10},"orcarouter/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75},"orcarouter/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"orcarouter/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"orcarouter/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75},"orcarouter/deepseek/deepseek-v4-flash-0731":{input:.147,output:.295,cache_read:.02},"orcarouter/deepseek/deepseek-v4-flash-vision-exp":{input:.147,output:.295,cache_read:.02},"orcarouter/deepseek/deepseek-chat":{input:.147,output:.295,cache_read:.02},"orcarouter/deepseek/deepseek-v4-pro-0813":{input:.442,output:.884,cache_read:.06},"orcarouter/deepseek/deepseek-reasoner":{input:.147,output:.295,cache_read:.028},"orcarouter/deepseek/deepseek-v4-pro":{input:.442,output:.884,cache_read:.06},"orcarouter/deepseek/deepseek-v4-flash":{input:.147,output:.295,cache_read:.02},"orcarouter/tencent/hy3":{input:.18,output:.59,cache_read:.059},"orcarouter/z-ai/glm-4.5":{input:.6,output:2.2,cache_read:.11,cache_write:0},"orcarouter/z-ai/glm-5.3-flash":{input:.075,output:.25},"orcarouter/z-ai/glm-4.6":{input:.6,output:2.2,cache_read:.11,cache_write:0},"orcarouter/z-ai/glm-5":{input:1,output:3.2,cache_read:.26,cache_write:0},"orcarouter/z-ai/glm-4.7":{input:.6,output:2.2,cache_read:.11,cache_write:0},"orcarouter/z-ai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"orcarouter/z-ai/glm-5.1":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"orcarouter/z-ai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03,cache_write:0},"orcarouter/z-ai/glm-5.3":{input:1.26,output:3.96,cache_read:.234},"orcarouter/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"orcarouter/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"orcarouter/google/gemini-flash-latest":{input:.5,output:3,cache_read:.1},"orcarouter/google/gemma-4-31b-it":{input:.13,output:.38,cache_read:.02},"orcarouter/google/gemini-flash-lite-latest":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"orcarouter/google/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15},"orcarouter/google/gemini-robotics-er-1.6-preview":{input:1,output:5},"orcarouter/google/gemma-4-26b-a4b-it":{input:.06,output:.33,cache_read:.0075},"orcarouter/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"orcarouter/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,input_audio:2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"orcarouter/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.08333,input_audio:3},"orcarouter/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"orcarouter/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"orcarouter/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"orcarouter/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,input_audio:1},"orcarouter/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,input_audio:.3},"orcarouter/google/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"orcarouter/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"orcarouter/kimi/kimi-k3":{input:3.3,output:16.5,cache_read:.33},"orcarouter/kimi/kimi-k2.6":{input:.95,output:4,cache_read:.16},"orcarouter/kimi/kimi-k2.5":{input:.6,output:3,cache_read:.1,cache_write:0},"orcarouter/kimi/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"orcarouter/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"orcarouter/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"orcarouter/minimax/minimax-m3":{input:.3,output:1.2,cache_read:.06},"orcarouter/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"orcarouter/minimax/minimax-m2.5-highspeed":{input:.6,output:2.4,cache_read:.03,cache_write:.375},"orcarouter/qwen/qwen3.5-flash":{input:.1,output:.4},"orcarouter/qwen/qwen3-vl-235b-a22b-instruct":{input:.4,output:1.6},"orcarouter/qwen/qwen3.7-max":{input:1.25,output:3.75,cache_read:.25,cache_write:1.563},"orcarouter/qwen/qwen3.8-27b":{input:.33,output:2.4},"orcarouter/qwen/qwen3-vl-235b-a22b-thinking":{input:.4,output:4},"orcarouter/qwen/qwen3.5-27b":{input:.086,output:.688},"orcarouter/qwen/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"orcarouter/qwen/qwen3.5-plus":{input:.115,output:.688,reasoning:2.4},"orcarouter/qwen/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.038},"orcarouter/qwen/qwen3-max":{input:.359,output:1.434},"orcarouter/qwen/qwen3.5-122b-a10b":{input:.115,output:.917},"orcarouter/qwen/qwen3.6-35b-a3b":{input:.248,output:1.485},"orcarouter/qwen/qwen3.6-flash":{input:.25,output:1.5},"orcarouter/qwen/qwen3.5-35b-a3b":{input:.057,output:.459},"orcarouter/qwen/qwen3.5-397b-a17b":{input:.172,output:1.032},"orcarouter/qwen/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"orcarouter/qwen/qwen3.7-plus":{input:.35,output:1.42,cache_read:.071},"orcarouter/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"orcarouter/openai/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"orcarouter/openai/gpt-3.5-turbo":{input:.5,output:1.5,cache_read:0},"orcarouter/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"orcarouter/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"orcarouter/openai/gpt-4o-2024-05-13":{input:5,output:15},"orcarouter/openai/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"orcarouter/openai/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"orcarouter/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"orcarouter/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"orcarouter/openai/gpt-5.2-pro":{input:21,output:168},"orcarouter/openai/gpt-4":{input:30,output:60},"orcarouter/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"orcarouter/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"orcarouter/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"orcarouter/openai/gpt-5.2-chat-latest":{input:1.75,output:14,cache_read:.175},"orcarouter/openai/gpt-5.1-chat-latest":{input:1.25,output:10,cache_read:.125},"orcarouter/openai/gpt-5-pro":{input:15,output:120},"orcarouter/openai/gpt-5-chat-latest":{input:1.25,output:10,cache_read:.125},"orcarouter/openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"orcarouter/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"orcarouter/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"orcarouter/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"orcarouter/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"orcarouter/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"orcarouter/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"orcarouter/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"orcarouter/openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"orcarouter/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"orcarouter/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"orcarouter/openai/gpt-4-turbo":{input:10,output:30},"orcarouter/openai/gpt-oss-120b":{input:.03,output:.17},"orcarouter/openai/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"orcarouter/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"orcarouter/openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5},"friendli/google/gemma-4-31B-it":{input:.14,output:.4},"friendli/deepseek-ai/DeepSeek-V3.2":{input:.5,output:1.5,cache_read:.25},"friendli/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.06},"friendli/zai-org/GLM-5.1":{input:1.4,output:4.4,cache_read:.26},"friendli/zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:.26},"friendli/zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.03},"friendli/zai-org/GLM-5.3":{input:1.26,output:3.96,cache_read:.234},"inco/kimi-k3:fast":{input:6,output:30},"inco/glm-5.3:fast":{input:2.8,output:8.8},"inco/glm-5.3-flash:fast":{input:.15,output:.5},"inco/minimax-m3":{input:.3,output:1.2},"inco/deepseek-v4.1-flash:fast":{input:.6,output:2.4},"inco/minimax-m3:fast":{input:.6,output:2.4},"inco/glm-5.3":{input:1.4,output:4.4},"sakana/fugu-ultra":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"sakana/fugu-ultra-20260615":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"sakana/sakana-namazu":{input:.95,output:4,cache_read:.15},"scx-ai/GLM-5.2":{input:.55,output:1.784,cache_read:.111},"scx-ai/Qwen3.8-Max":{input:1.815,output:5.4461,cache_read:.17,cache_write:2.5},"scx-ai/MiniMax-M2.7":{input:.48,output:1.79,cache_read:.05},"scx-ai/gpt-oss-120b":{input:.17,output:.55},"zenifra/alibaba/qwen3.6-35b-a3b":{input:.19,output:.48},"google-vertex-anthropic/claude-opus-4-8@default":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"google-vertex-anthropic/claude-sonnet-4-5@20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"google-vertex-anthropic/claude-opus-4-6@default":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"google-vertex-anthropic/claude-opus-4@20250514":{input:15,output:75,cache_read:1.5,cache_write:18.75},"google-vertex-anthropic/claude-opus-5-5@default":{input:4,output:20,cache_read:.2,cache_write:5},"google-vertex-anthropic/claude-opus-5@default":{input:5,output:25,cache_read:.5,cache_write:6.25},"google-vertex-anthropic/claude-sonnet-4-6@default":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"google-vertex-anthropic/claude-haiku-4-5@20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"google-vertex-anthropic/claude-opus-4-1@20250805":{input:15,output:75,cache_read:1.5,cache_write:18.75},"google-vertex-anthropic/claude-opus-4-5@20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"google-vertex-anthropic/claude-opus-4-7@default":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"google-vertex-anthropic/claude-fable-5-1@default":{input:10,output:50,cache_read:.25,cache_write:12.5},"google-vertex-anthropic/claude-fable-5@default":{input:10,output:50,cache_read:1,cache_write:12.5},"google-vertex-anthropic/claude-sonnet-4@20250514":{input:3,output:15,cache_read:.3,cache_write:3.75},"google-vertex-anthropic/claude-sonnet-5@default":{input:2,output:10,cache_read:.2,cache_write:2.5},"moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"moonshotai/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"ainetcafe/Kimi-K3":{input:2.1,output:10.5,cache_read:.3},"wallaby/moonshotai/kimi-k3":{input:2.7,output:13.5,cache_read:.27},"ofox/bailian/qwen-flash":{input:.022,output:.22,cache_read:.0043,cache_write:.027},"ofox/bailian/qwen3.5-flash":{input:.1,output:.4,cache_read:.01,cache_write:.125},"ofox/bailian/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"ofox/bailian/qwen3.8-27b":{input:.45,output:3.2,cache_read:.05,cache_write:.5625},"ofox/bailian/qwen3.5-27b":{input:.29,output:2.05,cache_read:.29},"ofox/bailian/qwen-max":{input:.35,output:1.38,cache_read:.069},"ofox/bailian/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"ofox/bailian/qwen3-coder-next":{input:.2,output:1.5},"ofox/bailian/qwen3.5-plus":{input:.4,output:2.4,cache_read:.04,cache_write:.4},"ofox/bailian/qwen-plus":{input:.12,output:.29,cache_read:.023},"ofox/bailian/qwen3-max":{input:.36,output:1.43,cache_read:.072},"ofox/bailian/qwen-turbo":{input:.05,output:.09,cache_read:.0086},"ofox/bailian/qwen-vl-max":{input:.23,output:.58,cache_read:.046},"ofox/bailian/qwen3.5-122b-a10b":{input:.29,output:2.29,cache_read:.29},"ofox/bailian/qwen3.6-flash":{input:.25,output:1.5,cache_read:.025,cache_write:.31},"ofox/bailian/qwen3-coder-flash":{input:.5,output:2.5,cache_read:.06,cache_write:.27},"ofox/bailian/qwen3-coder-plus":{input:1.8,output:9,cache_read:.2,cache_write:1},"ofox/bailian/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"ofox/bailian/qwen3.5-35b-a3b":{input:.29,output:1.83,cache_read:.29},"ofox/bailian/qwen3.6-max-preview":{input:2.15,output:12.86,cache_read:.2,cache_write:1.17},"ofox/bailian/qwen3.5-397b-a17b":{input:.55,output:3.5,cache_read:.55},"ofox/bailian/qwen3.6-27b":{input:.6,output:3.6},"ofox/bailian/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625},"ofox/bailian/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5},"ofox/bailian/qwen3.8-max-0902":{input:2,output:6,cache_read:.25,cache_write:2.5},"ofox/anthropic/claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"ofox/anthropic/claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25},"ofox/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"ofox/anthropic/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"ofox/anthropic/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"ofox/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"ofox/anthropic/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"ofox/anthropic/claude-sonnet-4.5":{input:3,output:15,cache_read:.3,cache_write:3.75},"ofox/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"ofox/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"ofox/anthropic/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75},"ofox/anthropic/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"ofox/deepseek/deepseek-v4-flash-0731":{input:.308,output:.924,cache_read:.0098},"ofox/deepseek/deepseek-v4-flash-0423":{input:.19,output:.51,cache_read:.028},"ofox/deepseek/deepseek-v4.1-flash":{input:.21,output:.84,cache_read:.0042},"ofox/deepseek/deepseek-v4-flash-vision-exp":{input:.44,output:1.32,cache_read:.014},"ofox/deepseek/deepseek-v4-pro-0813":{input:.924,output:2.772,cache_read:.0308},"ofox/deepseek/deepseek-v4-pro-0423":{input:1.32,output:3.96,cache_read:.15},"ofox/deepseek/deepseek-v4-pro":{input:1.32,output:3.96,cache_read:.044},"ofox/deepseek/deepseek-v3.2":{input:.29,output:.43,cache_read:.06},"ofox/deepseek/deepseek-v4-flash":{input:.44,output:1.32,cache_read:.014},"ofox/z-ai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"ofox/z-ai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"ofox/z-ai/glm-4.6":{input:.6,output:2.2,cache_read:.11},"ofox/z-ai/glm-5":{input:1,output:3.2,cache_read:.2},"ofox/z-ai/glm-4.7":{input:.4,output:2.2,cache_read:.11},"ofox/z-ai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"ofox/z-ai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"ofox/z-ai/glm-4.7-flashx":{input:.072,output:.4,cache_read:.01},"ofox/z-ai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"ofox/z-ai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"ofox/x-ai/grok-4.7":{input:2,output:6,cache_read:.5},"ofox/x-ai/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"ofox/x-ai/grok-4.5":{input:2,output:6,cache_read:.3},"ofox/x-ai/grok-4.20":{input:4,output:12,cache_read:.4},"ofox/x-ai/grok-4.1-fast":{input:.2,output:.5,cache_read:.05},"ofox/x-ai/grok-4.6":{input:2,output:6,cache_read:.5},"ofox/volcengine/doubao-seed-2.0-mini":{input:.06,output:.56,cache_read:.02,cache_write:.0024},"ofox/volcengine/doubao-seed-1-6-flash":{input:.03,output:.22,cache_read:.0043},"ofox/volcengine/doubao-seed-2.0-lite":{input:.13,output:.76,cache_read:.03,cache_write:.0024},"ofox/volcengine/doubao-seed-1-8":{input:.12,output:.29,cache_read:.023},"ofox/volcengine/doubao-seed-1-6":{input:.12,output:.29,cache_read:.023},"ofox/volcengine/doubao-seed-2.0-pro":{input:.67,output:3.36,cache_read:.14,cache_write:.0024},"ofox/volcengine/doubao-seed-1-6-vision":{input:.12,output:1.15,cache_read:.023},"ofox/volcengine/doubao-seed-2.1-turbo":{input:.3536,output:1.7696,cache_read:.068,cache_write:.0019},"ofox/volcengine/doubao-seed-2.1-pro":{input:.7072,output:3.536,cache_read:.1416,cache_write:.002},"ofox/volcengine/doubao-seed-character":{input:.177,output:.884,cache_read:.024,cache_write:.0025},"ofox/volcengine/doubao-seed-evolving":{input:.884,output:4.42,cache_read:.177,cache_write:.0025},"ofox/volcengine/doubao-seed-2.0-code":{input:.67,output:3.36,cache_read:.14,cache_write:.0024},"ofox/google/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.0415,input_audio:1.5},"ofox/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.083},"ofox/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,cache_write:4.5},"ofox/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.083,input_audio:3},"ofox/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,cache_write:4.5},"ofox/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,cache_write:1,input_audio:1},"ofox/google/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.0415,input_audio:1.5},"ofox/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,cache_write:1},"ofox/google/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.0415,input_audio:.75},"ofox/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,cache_write:1,input_audio:.3},"ofox/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:1,input_audio:.5},"ofox/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"ofox/moonshotai/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"ofox/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"ofox/moonshotai/kimi-k2.5":{input:.6,output:3,cache_read:.1},"ofox/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"ofox/minimax/minimax-m2.5-lightning":{input:.3,output:2.4,cache_read:.03,cache_write:.375},"ofox/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"ofox/minimax/minimax-m2.1-lightning":{input:.3,output:2.4,cache_read:.03,cache_write:.375},"ofox/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"ofox/minimax/minimax-m3":{input:.6,output:2.4,cache_read:.12},"ofox/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"ofox/minimax/m2-her":{input:.3,output:1.2},"ofox/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"ofox/minimax/minimax-m2":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"ofox/qwen/qwen-flash":{input:.022,output:.22,cache_read:.0043,cache_write:.027},"ofox/qwen/qwen3.5-flash":{input:.1,output:.4,cache_read:.01,cache_write:.125},"ofox/qwen/qwen3.7-max":{input:1.71,output:5.14,cache_read:.17,cache_write:2.14},"ofox/qwen/qwen3.8-27b":{input:.5,output:1.71,cache_read:.043,cache_write:.63},"ofox/qwen/qwen3.5-27b":{input:.29,output:2.05,cache_read:.29},"ofox/qwen/qwen-max":{input:.35,output:1.38,cache_read:.069},"ofox/qwen/qwen3.8-max":{input:1.71,output:5.14,cache_read:.17,cache_write:2.14},"ofox/qwen/qwen3-coder-next":{input:.2,output:1.5},"ofox/qwen/qwen3.5-plus":{input:.4,output:2.4,cache_read:.04,cache_write:.4},"ofox/qwen/qwen-plus":{input:.12,output:.29,cache_read:.023},"ofox/qwen/qwen3-max":{input:.36,output:1.43,cache_read:.072},"ofox/qwen/qwen-turbo":{input:.043,output:.09,cache_read:.0086},"ofox/qwen/qwen-vl-max":{input:.23,output:.58,cache_read:.023},"ofox/qwen/qwen3.5-122b-a10b":{input:.29,output:2.29,cache_read:.29},"ofox/qwen/qwen3.6-flash":{input:.25,output:1.5,cache_read:.025,cache_write:.31},"ofox/qwen/qwen3-coder-flash":{input:.5,output:2.5,cache_read:.06,cache_write:.27},"ofox/qwen/qwen3-coder-plus":{input:1.8,output:9,cache_read:.2,cache_write:1},"ofox/qwen/qwen3.8-flash":{input:.11,output:.39,cache_read:.011,cache_write:.14},"ofox/qwen/qwen3.5-35b-a3b":{input:.29,output:1.83,cache_read:.29},"ofox/qwen/qwen3.6-max-preview":{input:2.15,output:12.86,cache_read:.2,cache_write:1.17},"ofox/qwen/qwen3.5-397b-a17b":{input:.55,output:3.5,cache_read:.55},"ofox/qwen/qwen3.6-27b":{input:.43,output:2.57},"ofox/qwen/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625},"ofox/qwen/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5},"ofox/qwen/qwen3.8-max-0902":{input:1.71,output:5.14,cache_read:.17,cache_write:2.14},"ofox/openai/gpt-5.4":{input:2,output:12,cache_read:.2},"ofox/openai/gpt-5.4-pro":{input:24,output:144},"ofox/openai/gpt-5.4-nano":{input:.16,output:1,cache_read:.016},"ofox/openai/gpt-5.2-codex":{input:1.4,output:11.2,cache_read:.144},"ofox/openai/gpt-4o":{input:2,output:8,cache_read:1},"ofox/openai/gpt-5-mini":{input:.2,output:1.6,cache_read:.024},"ofox/openai/gpt-5.3-codex":{input:1.4,output:11.2,cache_read:.144},"ofox/openai/gpt-5-nano":{input:.04,output:.32,cache_read:.008},"ofox/openai/gpt-6-astra":{input:8,output:40,cache_read:.8,cache_write:10},"ofox/openai/gpt-5.1":{input:1,output:8,cache_read:.104},"ofox/openai/gpt-4o-mini":{input:.12,output:.48,cache_read:.06},"ofox/openai/gpt-5.4-mini":{input:.6,output:3.6,cache_read:.06},"ofox/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"ofox/openai/gpt-5.1-codex-max":{input:1,output:8,cache_read:.104},"ofox/openai/gpt-5.2":{input:1.4,output:11.2,cache_read:.144},"ofox/openai/gpt-5.5":{input:4,output:24,cache_read:.4},"ofox/openai/gpt-4.1":{input:1.6,output:6.4,cache_read:.4},"ofox/openai/gpt-4.1-mini":{input:.32,output:1.28,cache_read:.08},"ofox/openai/gpt-6-luna":{input:.08,output:.4,cache_read:.008,cache_write:.1},"ofox/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"ofox/openai/gpt-5.1-codex-mini":{input:.2,output:1.6,cache_read:.024},"ofox/openai/gpt-5":{input:1,output:8,cache_read:.104},"ofox/openai/gpt-5.6-sol":{input:2.5,output:15,cache_read:.25,cache_write:3.125},"ofox/openai/gpt-6-sol":{input:1.6,output:8,cache_read:.16,cache_write:2},"neon/gpt-5-4-mini":{input:.75,output:4.5,cache_read:.075},"neon/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"neon/gpt-5-6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"neon/glm-5-3-flash":{input:.15,output:.5,cache_read:.03},"neon/gpt-5-6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"neon/kimi-k3":{input:3,output:15,cache_read:.3},"neon/llama-4-maverick":{input:.5,output:1.5},"neon/gpt-5-mini":{input:.25,output:2,cache_read:.025},"neon/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"neon/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"neon/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"neon/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"neon/gpt-5-4-nano":{input:.2,output:1.25,cache_read:.02},"neon/gpt-5-6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:45,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1,cache_write:12.5}},"neon/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"neon/gpt-5-5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"neon/gemini-3-1-pro":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"neon/glm-5-2":{input:1.4,output:4.4,cache_read:.26},"neon/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"neon/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"neon/qwen3-next-80b-a3b-instruct":{input:.15,output:1.2},"neon/gemini-3-flash":{input:.5,output:3,cache_read:.05,input_audio:1},"neon/gpt-oss-20b":{input:.07,output:.3},"neon/gpt-5-4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"neon/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"neon/inkling":{input:1,output:4.05,cache_read:.17},"neon/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"neon/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"neon/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"neon/gemini-3-1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"neon/gpt-5-5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"neon/grok-4-6":{input:2,output:6,cache_read:.5},"neon/qwen35-122b-a10b":{input:.22,output:2.2},"neon/gemini-3-6-flash":{input:1.5,output:7.5,cache_read:.15,input_audio:1.5},"neon/meta-llama-3-3-70b-instruct":{input:.5,output:1.5},"neon/gpt-5-2":{input:1.75,output:14,cache_read:.175},"neon/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"neon/gpt-5-3-codex":{input:1.75,output:14,cache_read:.175},"neon/gemma-3-12b":{input:.15,output:.5},"neon/gemini-3-5-flash-lite":{input:.3,output:2.5,cache_read:.03},"neon/gemini-3-5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"neon/gpt-5-1":{input:1.25,output:10,cache_read:.125},"neon/gpt-oss-120b":{input:.15,output:.6},"neon/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"neon/gpt-5":{input:1.25,output:10,cache_read:.125},"neon/meta-llama-3-1-8b-instruct":{input:.15,output:.45},"aihubmix/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"aihubmix/mimo-v2.6-pro":{input:.48,output:.96,cache_read:.00384},"aihubmix/qwen3.7-max":{input:1.69,output:5.07,cache_read:.169,cache_write:2.1125},"aihubmix/muse-spark-1.3":{input:1.375,output:4.675,cache_read:.165},"aihubmix/deep-deepseek-v4-pro":{input:.478,output:.956,cache_read:.004302},"aihubmix/grok-4.7":{input:2.2,output:6.6,cache_read:.55,tiers:[{input:4.4,output:13.2,cache_read:1.1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4.4,output:13.2,cache_read:1.1}},"aihubmix/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.5},"aihubmix/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"aihubmix/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"aihubmix/glm-5v-turbo":{input:.7042,output:3.09848,cache_read:.169008},"aihubmix/glm-5.3-flash":{input:.11268,output:.39438,cache_read:.02817},"aihubmix/deepseek-v4-flash-0731":{input:.142,output:.284,cache_read:.0284},"aihubmix/qwen3.8-max":{input:1.69,output:5.07,cache_read:.169,cache_write:2.1125},"aihubmix/kimi-k3":{input:3,output:15,cache_read:.3},"aihubmix/doubao-seed-2-0-lite-260428":{input:.08,output:.51,cache_read:.01692,input_audio:1.269,tiers:[{input:.13,output:.76,cache_read:.02536,input_audio:1.902,tier:{type:"context",size:32e3}},{input:.25,output:1.52,cache_read:.05072,input_audio:3.804,tier:{type:"context",size:128e3}}]},"aihubmix/claude-sonnet-4-6-think":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"aihubmix/deepseek-v4-flash-0731-fast":{input:.28,output:1.4,cache_read:.07},"aihubmix/hy3-preview":{input:.17,output:.566661,cache_read:.051},"aihubmix/alicloud-deepseek-v4-pro":{input:1.69,output:3.38,cache_read:.13},"aihubmix/zai-glm-5.1":{input:.845,output:3.38,cache_read:.183112},"aihubmix/deepseek-v4.1-flash":{input:.155,output:.62,cache_read:.0031},"aihubmix/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"aihubmix/coding-minimax-m2.7-highspeed":{input:.2,output:.2},"aihubmix/muse-spark-1.1":{input:1.375,output:4.675},"aihubmix/deepseek-v4-flash-vision-exp":{input:.155,output:.62,cache_read:.0031},"aihubmix/kimi-k2.7-code-highspeed":{input:1.9,output:7.999,cache_read:.32167},"aihubmix/qwen3.7-flash":{input:.0282,output:.1128,cache_read:.00564,cache_write:.03525},"aihubmix/kimi-k2.6":{input:.95,output:4,cache_read:.16},"aihubmix/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"aihubmix/claude-opus-4-8-think":{input:5,output:25,cache_read:.5,cache_write:6.25},"aihubmix/doubao-seed-2-0-pro":{input:.48,output:2.41,cache_read:.09644,tiers:[{input:.72,output:3.62,cache_read:.144656,tier:{type:"context",size:32e3}},{input:1.45,output:7.23,cache_read:.28932,tier:{type:"context",size:128e3}}]},"aihubmix/xiaomi-mimo-v2.5":{input:.44,output:2.2,cache_read:.088,tiers:[{input:.88,output:4.4,cache_read:.176,tier:{type:"context",size:256e3}}],context_over_200k:{input:.88,output:4.4,cache_read:.176}},"aihubmix/claude-fable-5-1":{input:11,output:55,cache_read:.275,cache_write:13.75},"aihubmix/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15},"aihubmix/step-5-preview":{input:1.08,output:3.0888,cache_read:.054},"aihubmix/longcat-2.0":{input:.7746,output:3.0984,cache_read:.015492},"aihubmix/mimo-v2.6-pro-ultraspeed":{input:4.8,output:9.6,cache_read:.0384},"aihubmix/doubao-seed-2-0-code-preview":{input:.48,output:2.41,cache_read:.09644,tiers:[{input:.72,output:3.62,cache_read:.144656,tier:{type:"context",size:32e3}},{input:1.45,output:7.23,cache_read:.28932,tier:{type:"context",size:128e3}}]},"aihubmix/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"aihubmix/qwen3.8-omni-flash":{input:.1126,output:.380025,cache_read:.014075,cache_write:.175937},"aihubmix/doubao-seed-2-0-mini-260428":{input:.03,output:.28,cache_read:.00564,input_audio:.423,tiers:[{input:.06,output:.56,cache_read:.01128,input_audio:.846,tier:{type:"context",size:32e3}},{input:.11,output:1.13,cache_read:.02256,input_audio:1.692,tier:{type:"context",size:128e3}}]},"aihubmix/gemini-3.5-flash-lite":{input:.3,output:2.499999,cache_read:.03},"aihubmix/gemini-3.1-flash-image":{input:.5,output:3},"aihubmix/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"aihubmix/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"aihubmix/grok-4.5":{input:2,output:6,cache_read:.5},"aihubmix/kimi-k2.5":{input:.6,output:3,cache_read:.1},"aihubmix/gpt-5.1":{input:1.25,output:10,cache_read:.13},"aihubmix/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"aihubmix/coding-minimax-m2.7":{input:.2,output:.2},"aihubmix/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"aihubmix/gemini-3.5-flash":{input:1.5,output:9,cache_read:1.5},"aihubmix/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"aihubmix/deep-deepseek-v4-flash":{input:.154,output:.308,cache_read:.0308},"aihubmix/qwen3.6-flash":{input:.17,output:1.01,cache_read:.0169,cache_write:.21125,tiers:[{input:.68,output:4.06,cache_read:.0676,cache_write:.845,tier:{type:"context",size:256e3}}],context_over_200k:{input:.68,output:4.06,cache_read:.0676,cache_write:.845}},"aihubmix/coding-glm-5.1":{input:.06,output:.22,cache_read:.013},"aihubmix/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"aihubmix/claude-fable-5":{input:11,output:55,cache_read:1.1,cache_write:13.75},"aihubmix/deepseek-v4-pro-0813":{input:.6918,output:2.0754,cache_read:.023058},"aihubmix/muse-spark-1.2":{input:1.375,output:4.675},"aihubmix/gemini-3.1-flash-lite-image":{input:.25,output:1.5,cache_read:.025},"aihubmix/mimo-v2.6-flash":{input:.155,output:.31,cache_read:.0031},"aihubmix/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"aihubmix/minimax-m3":{input:.288,output:1.152},"aihubmix/gpt-5.6-luna":{input:1,output:6,cache_read:.1,cache_write:1.25},"aihubmix/qwen3.8-flash":{input:.1126,output:.380025,cache_read:.014075,cache_write:.175937},"aihubmix/claude-opus-4-6-think":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"aihubmix/coding-xiaomi-mimo-v2.5":{input:.08,output:.4,cache_read:.016,tiers:[{input:.16,output:.8,cache_read:.032,tier:{type:"context",size:256e3}}],context_over_200k:{input:.16,output:.8,cache_read:.032}},"aihubmix/gpt-5.2":{input:1.75,output:14,cache_read:.175},"aihubmix/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"aihubmix/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"aihubmix/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"aihubmix/qwen3.6-max-preview":{input:1.27,output:7.61,cache_read:.1268,cache_write:1.585,tiers:[{input:2.11,output:12.67,cache_read:.2112,cache_write:2.64,tier:{type:"context",size:128e3}}]},"aihubmix/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"aihubmix/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"aihubmix/glm-5.2":{input:1.1268,output:3.9438,cache_read:.2817},"aihubmix/hy3":{input:.1562,output:.6248,cache_read:.03905},"aihubmix/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"aihubmix/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,tiers:[{input:.5,output:3,cache_read:.05,tier:{type:"context",size:2e5}}],context_over_200k:{input:.5,output:3,cache_read:.05}},"aihubmix/grok-build-0.1":{input:1,output:2,cache_read:.2},"aihubmix/claude-opus-4-7-think":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"aihubmix/alicloud-deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"aihubmix/coding-xiaomi-mimo-v2.5-pro":{input:.2,output:.6,cache_read:.04,tiers:[{input:.4,output:1.2,cache_read:.08,tier:{type:"context",size:256e3}}],context_over_200k:{input:.4,output:1.2,cache_read:.08}},"aihubmix/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075},"aihubmix/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"aihubmix/step-3.7-flash":{input:.22,output:1.32,cache_read:.044},"aihubmix/alicloud-glm-5.1":{input:.84,output:3.38,cache_read:.169,cache_write:1.05625},"aihubmix/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"aihubmix/qwen3.6-plus":{input:.28,output:1.69,cache_read:.0282,cache_write:.3525,tiers:[{input:1.13,output:6.77,cache_read:.1128,cache_write:1.41,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.13,output:6.77,cache_read:.1128,cache_write:1.41}},"aihubmix/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125},"aihubmix/hy4-preview":{input:.845,output:2.535,cache_read:.04225},"aihubmix/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"aihubmix/glm-5.3":{input:1.1268,output:3.9438,cache_read:.2817},"aihubmix/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"aihubmix/kimi-k2.7-code":{input:.95,output:3.9995,cache_read:.160835},"aihubmix/grok-4.6":{input:2,output:6,cache_read:.5},"aihubmix/xiaomi-mimo-v2.5-pro":{input:1.1,output:3.3,cache_read:.22,tiers:[{input:2.2,output:6.6,cache_read:.44,tier:{type:"context",size:256e3}}],context_over_200k:{input:2.2,output:6.6,cache_read:.44}},"aihubmix/qwen3.7-plus":{input:.282,output:1.128,cache_read:.0564,cache_write:.3525},"aihubmix/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25},"aihubmix/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"aihubmix/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:1},"merge-gateway/zai/glm-4.5":{input:.6,output:2.2,cache_read:.11,cache_write:0},"merge-gateway/zai/glm-5.3-flash":{input:.015,output:.05,cache_read:.003},"merge-gateway/zai/glm-4.6":{input:.6,output:2.2,cache_read:.11,cache_write:0},"merge-gateway/zai/glm-5":{input:1,output:3.2,cache_read:.2,cache_write:0},"merge-gateway/zai/glm-4.5v":{input:.6,output:1.8,cache_read:.11,cache_write:0},"merge-gateway/zai/glm-4.7-flash":{input:.07,output:.4},"merge-gateway/zai/glm-4.7":{input:.6,output:2.2,cache_read:.11,cache_write:0},"merge-gateway/zai/glm-5.2":{input:1.05,output:3.3,cache_read:.195},"merge-gateway/zai/glm-5.1":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"merge-gateway/zai/glm-4.7-flashx":{input:.07,output:.4,cache_read:.01,cache_write:0},"merge-gateway/zai/glm-5-turbo":{input:1.2,output:4,cache_read:.24,cache_write:0},"merge-gateway/zai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03,cache_write:0},"merge-gateway/zai/glm-5.3":{input:.7,output:2.2,cache_read:.13},"merge-gateway/anthropic/claude-3-7-sonnet-20250219":{input:3,output:15,cache_read:.3,cache_write:3.75},"merge-gateway/anthropic/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"merge-gateway/anthropic/claude-opus-4-20250514":{input:15,output:75,cache_read:1.5,cache_write:18.75},"merge-gateway/anthropic/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"merge-gateway/anthropic/claude-opus-4-1-20250805":{input:15,output:75,cache_read:1.5,cache_write:18.75},"merge-gateway/anthropic/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"merge-gateway/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"merge-gateway/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"merge-gateway/anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"merge-gateway/anthropic/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"merge-gateway/anthropic/claude-sonnet-5":{input:3,output:15,cache_read:.2,cache_write:2.5},"merge-gateway/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"merge-gateway/anthropic/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"merge-gateway/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"merge-gateway/anthropic/claude-sonnet-4-20250514":{input:3,output:15,cache_read:.3,cache_write:3.75},"merge-gateway/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"merge-gateway/cohere/command-r-08-2024":{input:.15,output:.6},"merge-gateway/cohere/command-a-03-2025":{input:2.5,output:10},"merge-gateway/cohere/command-r7b-12-2024":{input:.0375,output:.15},"merge-gateway/cohere/command-r-plus-08-2024":{input:2.5,output:10},"merge-gateway/deepseek/deepseek-v4-flash-0731":{input:.035,output:.07,cache_read:.007},"merge-gateway/deepseek/deepseek-v4-flash-0423":{input:.139,output:.278},"merge-gateway/deepseek/deepseek-v4-flash-0731-fast":{input:.28,output:.56,cache_read:.07},"merge-gateway/deepseek/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"merge-gateway/deepseek/deepseek-v3":{input:.58,output:1.68},"merge-gateway/deepseek/deepseek-v4-pro-0813":{input:1.74,output:3.48,cache_read:.003625},"merge-gateway/deepseek/deepseek-v4-pro-0423":{input:1.65,output:3.3},"merge-gateway/deepseek/deepseek-v3.1":{input:.5,output:1.5},"merge-gateway/deepseek/deepseek-r1":{input:1.35,output:5.4},"merge-gateway/deepseek/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.145},"merge-gateway/deepseek/deepseek-v3.2":{input:.28,output:.45,cache_read:.14},"merge-gateway/deepseek/deepseek-v4-flash":{input:.035,output:.07,cache_read:.007},"merge-gateway/thinkingmachines/inkling":{input:1,output:4.05,cache_read:.17},"merge-gateway/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"merge-gateway/meta/llama-3.3-70b-instruct":{input:.22,output:.5,cache_read:.11},"merge-gateway/meta/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"merge-gateway/meta/llama-3.1-8b-instruct":{input:.22,output:.22},"merge-gateway/meta/llama-3.1-70b-instruct":{input:.99,output:.99},"merge-gateway/bytedance/dola-seed-2.0-code-preview":{input:.5,output:3},"merge-gateway/bytedance/dola-seed-2.0-code":{input:.4,output:2.4},"merge-gateway/bytedance/dola-seed-2.0-mini":{input:.1,output:.4},"merge-gateway/bytedance/dola-seed-2.0-lite":{input:.25,output:2},"merge-gateway/bytedance/dola-seed-2.0-pro":{input:.5,output:3},"merge-gateway/google/gemini-flash-latest":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"merge-gateway/google/gemma-4-31b-it":{input:.14,output:.4},"merge-gateway/google/gemma-3-27b-it":{input:.08,output:.45,cache_read:.04},"merge-gateway/google/gemini-3-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"merge-gateway/google/gemini-2.5-flash-image":{input:.3,output:2.5},"merge-gateway/google/gemini-flash-lite-latest":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"merge-gateway/google/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15},"merge-gateway/google/gemma-4-26b-a4b-it":{input:.13,output:.4},"merge-gateway/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"merge-gateway/google/gemini-3.1-flash-image":{input:.5,output:3},"merge-gateway/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"merge-gateway/google/gemma-3-12b-it":{input:.09,output:.29},"merge-gateway/google/gemini-2.5-computer-use-preview-10-2025":{input:1.25,output:10},"merge-gateway/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"merge-gateway/google/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"merge-gateway/google/gemini-3-pro-image":{input:2,output:12},"merge-gateway/google/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"merge-gateway/google/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"merge-gateway/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"merge-gateway/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,input_audio:1},"merge-gateway/google/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075},"merge-gateway/google/gemma-3-4b-it":{input:.04,output:.08},"merge-gateway/google/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,input_audio:.3},"merge-gateway/google/gemini-embedding-001":{input:.15,output:0},"merge-gateway/google/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"merge-gateway/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"merge-gateway/writer/palmyra-x4":{input:2.5,output:10},"merge-gateway/writer/palmyra-x5":{input:.6,output:6},"merge-gateway/xai/grok-4.7":{input:2,output:6,cache_read:.5},"merge-gateway/xai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"merge-gateway/xai/grok-4.20-0309-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"merge-gateway/xai/grok-4.5":{input:2,output:6,cache_read:.5},"merge-gateway/xai/grok-4.20-0309-non-reasoning":{input:1.25,output:2.5,cache_read:.2},"merge-gateway/xai/grok-build-0.1":{input:1,output:2,cache_read:.2},"merge-gateway/xai/grok-4.6":{input:2,output:6,cache_read:.5},"merge-gateway/sakana/fugu-ultra":{input:5,output:30,cache_read:.5},"merge-gateway/sakana/sakana-namazu":{input:.95,output:4,cache_read:.15},"merge-gateway/moonshotai/kimi-k2-thinking":{input:.6,output:2.5},"merge-gateway/nvidia/nemotron-nano-9b-v2":{input:.06,output:.23},"merge-gateway/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"merge-gateway/minimax/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"merge-gateway/minimax/minimax-m3":{input:.3,output:1.2,cache_read:.06},"merge-gateway/minimax/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"merge-gateway/minimax/minimax-m2.5-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"merge-gateway/minimax/minimax-m2.1":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"merge-gateway/minimax/minimax-m2":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"merge-gateway/mistral/codestral-latest":{input:.3,output:.9},"merge-gateway/mistral/mistral-large-2411":{input:2,output:6},"merge-gateway/mistral/mistral-large-latest":{input:.5,output:1.5},"merge-gateway/mistral/mistral-small-latest":{input:.15,output:.6},"merge-gateway/mistral/devstral-medium-latest":{input:.4,output:2},"merge-gateway/mistral/devstral-2512":{input:.4,output:2,cache_read:.04},"merge-gateway/mistral/mistral-medium-2505":{input:.4,output:2,cache_read:.04},"merge-gateway/mistral/magistral-medium-latest":{input:2,output:5},"merge-gateway/mistral/devstral-medium-2507":{input:.4,output:2},"merge-gateway/mistral/mistral-large-2512":{input:.5,output:1.5,cache_read:.05},"merge-gateway/mistral/devstral-small-2507":{input:.1,output:.3},"merge-gateway/mistral/pixtral-large-latest":{input:2,output:6},"merge-gateway/mistral/mistral-medium-latest":{input:.4,output:2},"merge-gateway/qwen/qwen-flash":{input:.022,output:.216,cache_read:.0044},"merge-gateway/qwen/qwen3.5-flash":{input:.029,output:.287,cache_read:.0058},"merge-gateway/qwen/qwen3-vl-235b-a22b-instruct":{input:.287,output:1.147,cache_read:.15785},"merge-gateway/qwen/qwen3.7-max":{input:.825,output:2.4755,cache_read:.165},"merge-gateway/qwen/qwen3-vl-235b-a22b-thinking":{input:.287,output:2.867,cache_read:.0574},"merge-gateway/qwen/qwen3.8-2.4t-a95b":{input:2.5,output:6.25,cache_read:.5},"merge-gateway/qwen/qwen3-vl-plus":{input:.143,output:1.434,cache_read:.0286},"merge-gateway/qwen/qwen3.5-27b":{input:.086,output:.688,cache_read:.0172},"merge-gateway/qwen/qwen3-235b-a22b-instruct-2507":{input:.1,output:.6,cache_read:.05},"merge-gateway/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"merge-gateway/qwen/qwen3.8-max":{input:2,output:6,cache_read:.25},"merge-gateway/qwen/qwen3-coder-next":{input:.15,output:.8,cache_read:.075},"merge-gateway/qwen/qwen3.5-plus":{input:.115,output:.688,cache_read:.023},"merge-gateway/qwen/qwen3-32b":{input:.15,output:.6},"merge-gateway/qwen/qwen-plus":{input:.115,output:.287,cache_read:.023},"merge-gateway/qwen/qwen3-max":{input:.359,output:1.434,cache_read:.0718},"merge-gateway/qwen/qwen3-coder-480b-a35b-instruct":{input:.22,output:1.8},"merge-gateway/qwen/qwen3-235b-a22b":{input:.287,output:1.147,cache_read:.0574},"merge-gateway/qwen/qwen3.5-122b-a10b":{input:.115,output:.917,cache_read:.023},"merge-gateway/qwen/qwen3.6-35b-a3b":{input:.248,output:1.485,cache_read:.0496},"merge-gateway/qwen/qwen3-next-80b-a3b-instruct":{input:.144,output:.574,cache_read:.0288},"merge-gateway/qwen/qwen3.6-flash":{input:.165,output:.99,cache_read:.033},"merge-gateway/qwen/qwen3-coder-flash":{input:.144,output:.574,cache_read:.0288},"merge-gateway/qwen/qwen3-coder-plus":{input:.574,output:2.294,cache_read:.1148},"merge-gateway/qwen/qwen3.5-9b":{input:.09,output:.13},"merge-gateway/qwen/qwen3.5-35b-a3b":{input:.057,output:.459,cache_read:.020357},"merge-gateway/qwen/qwen3.6-max-preview":{input:1.31,output:7.88},"merge-gateway/qwen/qwen3-30b-a3b":{input:.108,output:1.076,cache_read:.0216},"merge-gateway/qwen/qwen3.5-397b-a17b":{input:.172,output:1.032,cache_read:.0344},"merge-gateway/qwen/qwen3.6-27b":{input:.289,output:2.4},"merge-gateway/qwen/qwen3.6-plus":{input:.276,output:1.651,cache_read:.0552},"merge-gateway/qwen/qwen3.7-plus":{input:.4,output:1.6},"merge-gateway/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"merge-gateway/openai/gpt-oss-safeguard-120b":{input:.15,output:.6},"merge-gateway/openai/gpt-3.5-turbo":{input:.5,output:1.5},"merge-gateway/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"merge-gateway/openai/gpt-4o-2024-05-13":{input:5,output:15},"merge-gateway/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"merge-gateway/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"merge-gateway/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"merge-gateway/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"merge-gateway/openai/gpt-4":{input:30,output:60},"merge-gateway/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"merge-gateway/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"merge-gateway/openai/gpt-5.2-chat-latest":{input:1.75,output:14,cache_read:.175},"merge-gateway/openai/gpt-5.1-chat-latest":{input:1.25,output:10,cache_read:.125},"merge-gateway/openai/o1":{input:15,output:60,cache_read:7.5},"merge-gateway/openai/gpt-5-chat-latest":{input:1.25,output:10,cache_read:.125},"merge-gateway/openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"merge-gateway/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"merge-gateway/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"merge-gateway/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"merge-gateway/openai/gpt-oss-20b":{input:.04,output:.2,cache_read:.02},"merge-gateway/openai/gpt-oss-safeguard-20b":{input:.07,output:.2,cache_read:0,cache_write:0},"merge-gateway/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"merge-gateway/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"merge-gateway/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"merge-gateway/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"merge-gateway/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"merge-gateway/openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"merge-gateway/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"merge-gateway/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125},"merge-gateway/openai/gpt-5.3-chat-latest":{input:1.75,output:14,cache_read:.175},"merge-gateway/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"merge-gateway/openai/gpt-4-turbo":{input:10,output:30},"merge-gateway/openai/gpt-oss-120b":{input:.09,output:.36},"merge-gateway/openai/o3":{input:2,output:8,cache_read:.5},"merge-gateway/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"merge-gateway/openai/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:5},"merge-gateway/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"merge-gateway/moonshot/kimi-k3":{input:2.9,output:14,cache_read:.3},"merge-gateway/moonshot/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"merge-gateway/moonshot/kimi-k2.6":{input:.95,output:4,cache_read:.16},"merge-gateway/moonshot/kimi-k2.5":{input:.6,output:3,cache_read:.1},"merge-gateway/moonshot/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"opper/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"opper/claude-haiku-4-5":{input:1.1,output:5.5,cache_read:.11,cache_write:1.375},"opper/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"opper/gemma-4-31b-it":{input:.46488,output:2.44062},"opper/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"opper/qwen3.8-27b":{input:.5811,output:3},"opper/gpt-5.5-pro":{input:30,output:180},"opper/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"opper/qwen3.8-2.4t-a95b":{input:2.5,output:6,cache_read:.63},"opper/glm-5.3-flash":{input:.2,output:.5,cache_read:.07},"opper/qwen3.8-max":{input:2,output:6,cache_read:.25},"opper/kimi-k3":{input:3,output:15},"opper/qwen3-coder-next":{input:.5811,output:2.3244},"opper/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"opper/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"opper/claude-sonnet-4-5":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125,tiers:[{input:6.6,output:24.75,cache_read:.66,cache_write:8.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:6.6,output:24.75,cache_read:.66,cache_write:8.25}},"opper/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"opper/devstral-2512":{input:.4,output:2},"opper/sonar-pro":{input:3,output:15},"opper/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"opper/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"opper/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"opper/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"opper/grok-4.5":{input:2,output:6,cache_read:.5},"opper/claude-opus-5":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"opper/qwen3.6-35b-a3b":{input:.248,output:1.485},"opper/gpt-oss-20b":{input:.11622,output:.488124},"opper/minimax-m2.7":{input:.69732,output:2.78928},"opper/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15},"opper/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"opper/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"opper/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"opper/minimax-m3":{input:.6,output:2.4,cache_read:.12,tiers:[{input:1.2,output:4.8,cache_read:.24,tier:{type:"context",size:524288}}],context_over_200k:{input:1.2,output:4.8,cache_read:.24}},"opper/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"opper/mistral-small-2603":{input:.5811,output:2.44062},"opper/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"opper/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"opper/claude-sonnet-5":{input:2.2,output:11,cache_read:.22,cache_write:2.75},"opper/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"opper/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"opper/glm-5.2":{input:1.62708,output:5.811},"opper/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"opper/grok-build-0.1":{input:1,output:2,cache_read:.2},"opper/sonar":{input:1,output:1},"opper/mistral-large-2512":{input:.5,output:1.5},"opper/gemini-3.8-flash":{input:.825,output:4.125,cache_read:.0825},"opper/deepseek-v4-pro":{input:1.78812,output:3.57624},"opper/claude-sonnet-4-6":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"opper/gpt-5.3-chat-latest":{input:1.75,output:14,cache_read:.175},"opper/sonar-reasoning-pro":{input:2,output:8},"opper/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"opper/gpt-oss-120b":{input:1.1622,output:4.88124},"opper/glm-5.3":{input:1.75,output:4.6488,cache_read:.44},"opper/claude-opus-4-7":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"opper/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"opper/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:45,cache_read:1,cache_write:12.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1,cache_write:12.5}},"opper/deepseek-v4-flash":{input:.25,output:.66},"nvidia/deepseek-ai/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"nvidia/deepseek-ai/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"nvidia/nvidia/nemotron-3-super-120b-a12b":{input:.2,output:.8},"nvidia/nvidia/nemotron-3-ultra-550b-a55b":{input:.5,output:2.5,cache_read:.15},"pioneer/gpt-5.4":{input:2.5,output:15,cache_read:.25,cache_write:2.5},"pioneer/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"pioneer/qwen3.7-max":{input:1.25,output:3.75,cache_read:.25,cache_write:1.5625},"pioneer/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02,cache_write:.2},"pioneer/gpt-4o":{input:2.5,output:10,cache_read:1.25,cache_write:2.5},"pioneer/ministral-3b":{input:.1,output:.1,cache_read:.1,cache_write:.1},"pioneer/magistral-medium":{input:2,output:5,cache_read:2,cache_write:2},"pioneer/gpt-5-mini":{input:.25,output:2,cache_read:.025,cache_write:.25},"pioneer/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"pioneer/claude-3-7-sonnet-latest":{input:3,output:15,cache_read:.3,cache_write:3.75},"pioneer/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175,cache_write:1.75},"pioneer/gpt-4.1-nano":{input:.1,output:.4,cache_read:.05,cache_write:.1},"pioneer/mistral-medium-3.5":{input:1.5,output:7.5,cache_read:1.5,cache_write:1.5},"pioneer/gpt-5-nano":{input:.05,output:.4,cache_read:.005,cache_write:.05},"pioneer/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"pioneer/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15,cache_write:1.5},"pioneer/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.3},"pioneer/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"pioneer/grok-4.5":{input:2,output:6,cache_read:.5,cache_write:2},"pioneer/gpt-5.1":{input:1.25,output:10,cache_read:.125,cache_write:1.25},"pioneer/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"pioneer/gpt-4o-mini":{input:.15,output:.6,cache_read:.075,cache_write:.15},"pioneer/gemini-3-flash":{input:.5,output:3,cache_read:.05,cache_write:.083333},"pioneer/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.083333},"pioneer/qwen3.6-flash":{input:.1875,output:1.125,cache_read:.0375,cache_write:.234375},"pioneer/mistral-large-3":{input:.5,output:1.5,cache_read:.5,cache_write:.5},"pioneer/claude-fable-5":{input:11,output:55,cache_read:1.1,cache_write:13.75},"pioneer/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075,cache_write:.75},"pioneer/gpt-5.6-luna":{input:1,output:6,cache_read:.1,cache_write:1.25},"pioneer/devstral-small-2":{input:.1,output:.3,cache_read:.1,cache_write:.1},"pioneer/devstral-2":{input:.4,output:2,cache_read:.4,cache_write:.4},"pioneer/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"pioneer/gpt-5.5":{input:5,output:30,cache_read:.5,cache_write:5},"pioneer/gpt-4.1":{input:2,output:8,cache_read:1,cache_write:2},"pioneer/mistral-medium":{input:.4,output:2,cache_read:.4,cache_write:.4},"pioneer/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"pioneer/qwen3.6-max-preview":{input:1.04,output:6.24,cache_read:.208,cache_write:1.3},"pioneer/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"pioneer/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.2,cache_write:.4},"pioneer/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"pioneer/claude-opus-5-fast":{input:10,output:50,cache_read:1,cache_write:12.5},"pioneer/qwen3.6-plus":{input:.325,output:1.95,cache_read:.065,cache_write:.40625},"pioneer/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125},"pioneer/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"pioneer/ministral-14b":{input:.2,output:.2,cache_read:.2,cache_write:.2},"pioneer/gemini-3.1-pro":{input:2,output:12,cache_read:.2,cache_write:.375},"pioneer/qwen3.7-plus":{input:.32,output:1.28,cache_read:.064,cache_write:.4},"pioneer/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25},"pioneer/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.03,cache_write:.25},"pioneer/poolside/laguna-s-2.1":{input:.1,output:.2,cache_read:.01,cache_write:.1},"pioneer/meta-llama/Llama-3.2-1B-Instruct":{input:.1,output:.201,cache_read:.1,cache_write:.1},"pioneer/meta-llama/Llama-3.2-3B-Instruct":{input:.1,output:.335,cache_read:.1,cache_write:.1},"pioneer/meta-llama/Llama-3.1-8B-Instruct":{input:.2,output:.2,cache_read:.2,cache_write:.2},"pioneer/meta-llama/Llama-3.2-3B":{input:.1,output:.1,cache_read:.1,cache_write:.1},"pioneer/meta-llama/Llama-3.2-1B":{input:.1,output:.1,cache_read:.1,cache_write:.1},"pioneer/meta-llama/Llama-3.3-70B-Instruct":{input:.9,output:.9,cache_read:.9,cache_write:.9},"pioneer/XiaomiMiMo/MiMo-V2.5-Pro":{input:.435,output:.87,cache_read:.0036,cache_write:.435},"pioneer/XiaomiMiMo/MiMo-V2.5":{input:.14,output:.28,cache_read:.0028,cache_write:.14},"pioneer/thinkingmachines/inkling-small":{input:.5,output:1.2,cache_read:.1,cache_write:.5},"pioneer/meta/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15,cache_write:1.25},"pioneer/HuggingFaceTB/SmolLM3-3B-Base":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/google/diffusiongemma-26B-A4B-it":{input:.5,output:.5,cache_read:.5,cache_write:.5},"pioneer/google/gemma-4-12B-it":{input:.25,output:.25,cache_read:.25,cache_write:.25},"pioneer/google/gemma-4-E2B-it":{input:.1,output:.1,cache_read:.1,cache_write:.1},"pioneer/google/gemma-3-4b-pt":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/google/gemma-4-31B-it":{input:.5,output:.5,cache_read:.5,cache_write:.5},"pioneer/google/gemma-4-E4B-it":{input:.2,output:.2,cache_read:.2,cache_write:.2},"pioneer/Qwen/Qwen3-4B-Instruct-2507":{input:.2,output:.2,cache_read:.2,cache_write:.2},"pioneer/Qwen/Qwen2.5-Coder-0.5B":{input:.1,output:.1,cache_read:.1,cache_write:.1},"pioneer/Qwen/Qwen3-1.7B-Base":{input:.1,output:.1,cache_read:.1,cache_write:.1},"pioneer/Qwen/Qwen3.6-35B-A3B":{input:.14,output:1,cache_read:.028,cache_write:.175},"pioneer/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:1.2,output:1.2,cache_read:1.2,cache_write:1.2},"pioneer/Qwen/Qwen3-8B":{input:.2,output:.2,cache_read:.2,cache_write:.2},"pioneer/Qwen/Qwen3-4B-Base":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/Qwen/Qwen3-32B":{input:.9,output:.9,cache_read:.9,cache_write:.9},"pioneer/Qwen/Qwen3.5-9B":{input:.3,output:.3,cache_read:.3,cache_write:.3},"pioneer/Qwen/Qwen3.6-27B":{input:.6,output:.6,cache_read:.6,cache_write:.6},"pioneer/LiquidAI/LFM2-24B-A2B":{input:.03,output:.12,cache_read:.03,cache_write:.03},"pioneer/deepseek-ai/DeepSeek-V3.1":{input:.56,output:1.68,cache_read:.56,cache_write:.56},"pioneer/deepseek-ai/DeepSeek-V4-Flash":{input:.1,output:.2,cache_read:.0197,cache_write:.1},"pioneer/deepseek-ai/DeepSeek-V4-Pro":{input:.435,output:.87,cache_read:.003625,cache_write:.435},"pioneer/deepseek-ai/DeepSeek-V3":{input:.27,output:1.12,cache_read:.135,cache_write:.27},"pioneer/MiniMaxAI/MiniMax-M3":{input:.3,output:1.2,cache_read:.06,cache_write:.3},"pioneer/MiniMaxAI/MiniMax-M2.7":{input:.279,output:1.2,cache_read:.279,cache_write:.279},"pioneer/mistralai/Mistral-Small-4-119B-2603":{input:.15,output:.6,cache_read:.015,cache_write:.15},"pioneer/mistralai/Pixtral-12B-2409":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/mistralai/Mistral-Nemo-Instruct-2407":{input:.02,output:.03,cache_read:.02,cache_write:.02},"pioneer/mistralai/Magistral-Small-2506":{input:.5,output:1.5,cache_read:.5,cache_write:.5},"pioneer/mistralai/Ministral-8B-Instruct-2410":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/mistralai/Codestral-22B-v0.1":{input:.3,output:.9,cache_read:.3,cache_write:.3},"pioneer/mistralai/Mistral-7B-Instruct-v0.3":{input:.2,output:.2,cache_read:.2,cache_write:.2},"pioneer/sakana/fugu-ultra":{input:5,output:30,cache_read:.5,cache_write:5},"pioneer/moonshotai/Kimi-K2.6":{input:.95,output:4,cache_read:.34,cache_write:.95},"pioneer/moonshotai/Kimi-K3":{input:3,output:15,cache_read:.3,cache_write:3},"pioneer/moonshotai/Kimi-K3-Fast":{input:4.5,output:22.5,cache_read:.45,cache_write:4.5},"pioneer/moonshotai/Kimi-K2.7-Code":{input:.95,output:4,cache_read:.19,cache_write:.95},"pioneer/zai-org/GLM-5.1":{input:.98,output:3.08,cache_read:.182,cache_write:.98},"pioneer/zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:.26,cache_write:1.4},"pioneer/zai-org/GLM-5.2-Fast":{input:2.1,output:6.6,cache_read:.21,cache_write:2.1},"pioneer/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16":{input:.05,output:.2,cache_read:.05,cache_write:.05},"pioneer/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16":{input:.5,output:.5,cache_read:.5,cache_write:.5},"pioneer/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16":{input:.5,output:2.5,cache_read:.15,cache_write:.5},"pioneer/nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8":{input:.09,output:.45,cache_read:.09,cache_write:.09},"pioneer/fastino/gliner2-multi-v1":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliner2-privacy-filter-PII-multi":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliner2.5-multi-v1":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliguard-LLMGuardrails-300M":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliner2-large-v1":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliner2-base-v1":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliguard-PII-multi":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/fastino/gliner2-multi-large-v1":{input:.15,output:.15,cache_read:.15,cache_write:.15},"pioneer/openai/gpt-oss-20b":{input:.07,output:.3,cache_read:.035,cache_write:.07},"pioneer/openai/gpt-oss-120b":{input:.15,output:.6,cache_read:.015,cache_write:.15},"xiaomi/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"xiaomi/mimo-v2-flash":{input:.14,output:.28,cache_read:.0028},"xiaomi/mimo-v2.5":{input:.14,output:.28,cache_read:.0028},"xiaomi/mimo-v2-omni":{input:.14,output:.28,cache_read:.0028},"xiaomi/mimo-v2.6-pro-ultraspeed":{input:4.35,output:8.7,cache_read:.036},"xiaomi/mimo-v2-pro":{input:.435,output:.87,cache_read:.0036},"xiaomi/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036},"xiaomi/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"xiaomi/mimo-v2.5-pro-ultraspeed":{input:1.305,output:2.61,cache_read:.0108},"minimax/MiniMax-M3":{input:.3,output:1.2,cache_read:.06,tiers:[{input:.6,output:2.4,cache_read:.12,tier:{type:"context",size:512e3}}],context_over_200k:{input:.6,output:2.4,cache_read:.12}},"minimax/MiniMax-M2.1":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"minimax/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"minimax/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"minimax/MiniMax-M2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"minimax/MiniMax-M2":{input:.3,output:1.2},"minimax/MiniMax-M2.5-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"github-copilot/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"github-copilot/grok-4.7":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"github-copilot/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"github-copilot/claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"github-copilot/kimi-k3":{input:3,output:15,cache_read:.3},"github-copilot/gpt-5-mini":{input:.25,output:2,cache_read:.025},"github-copilot/claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"github-copilot/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"github-copilot/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075},"github-copilot/mai-code-1-flash-picker":{input:.75,output:4.5,cache_read:.075},"github-copilot/mai-code-1.1-flash":{input:.2,output:1.2,cache_read:.02},"github-copilot/claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"github-copilot/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"github-copilot/grok-4.5":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"github-copilot/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"github-copilot/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"github-copilot/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"github-copilot/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"github-copilot/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"github-copilot/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"github-copilot/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"github-copilot/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"github-copilot/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"github-copilot/claude-sonnet-4.6":{input:3,output:15,cache_read:.3,cache_write:3.75},"github-copilot/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075},"github-copilot/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"github-copilot/claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5},"github-copilot/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"github-copilot/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"github-copilot/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"github-copilot/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"github-copilot/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"opencode-go/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.003625},"opencode-go/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"opencode-go/mimo-v2.5":{input:.14,output:.28,cache_read:.0028},"opencode-go/grok-4.7":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"opencode-go/mimo-v2-omni":{input:.4,output:2,cache_read:.08},"opencode-go/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"opencode-go/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"opencode-go/kimi-k3":{input:3,output:15,cache_read:.3},"opencode-go/qwen3.5-plus":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"opencode-go/glm-5":{input:1,output:3.2,cache_read:.2},"opencode-go/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"opencode-go/minimax-m2.5":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"opencode-go/deepseek-v4-flash-vision-exp":{input:.15,output:.6,cache_read:.003},"opencode-go/kimi-k2.6":{input:.95,output:4,cache_read:.16},"opencode-go/longcat-2.0":{input:.3,output:1.2,cache_read:.006},"opencode-go/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6}},"opencode-go/kimi-k2.5":{input:.6,output:3,cache_read:.1},"opencode-go/mimo-v2-pro":{input:1,output:3,cache_read:.2,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"opencode-go/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375},"opencode-go/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.003625},"opencode-go/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"opencode-go/minimax-m3":{input:.3,output:1.2,cache_read:.06,tiers:[{input:.6,output:2.4,cache_read:.12,tier:{type:"context",size:512e3}}],context_over_200k:{input:.6,output:2.4,cache_read:.12}},"opencode-go/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"opencode-go/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"opencode-go/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"opencode-go/hy3":{input:.14,output:.58,cache_read:.035},"opencode-go/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"opencode-go/omen-alpha":{input:.2,output:.66,cache_read:.04},"opencode-go/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"opencode-go/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"opencode-go/deepseek-v4-pro":{input:.66,output:1.98,cache_read:.022},"opencode-go/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"opencode-go/hy4-preview":{input:.834,output:2.501,cache_read:.042},"opencode-go/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"opencode-go/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"opencode-go/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"opencode-go/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"opencode-go/qwen3.7-plus":{input:.4,output:1.6,cache_read:.04,cache_write:.5,tiers:[{input:1.2,output:4.8,cache_read:.12,cache_write:1.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.2,output:4.8,cache_read:.12,cache_write:1.5}},"opencode-go/deepseek-v4-flash":{input:.15,output:.6,cache_read:.003},"openreason/deepseek-ai/deepseek-v4-flash-0731":{input:.1371,output:.2743},"openreason/moonshotai/kimi-k2.7-code":{input:1.0022,output:4.22},"openreason/openai/gpt-oss-120b":{input:.1055,output:.422},"aki-io/qwen3.8-27b":{input:.3,output:2.2,cache_read:.1},"aki-io/deepseek-v4-flash-0731-284b":{input:.2,output:.5,cache_read:.1},"aki-io/qwen3.6-35b":{input:.15,output:.5},"aki-io/glm5.3-754b":{input:1,output:3.5,cache_read:.25},"aki-io/mistral4-119b":{input:.2,output:.6},"aki-io/gpt-oss-120b":{input:.15,output:.55},"aki-io/gemma4-26b":{input:.1,output:.5},"tensorx/deepseek/deepseek-v4-flash-0731":{input:.25,output:.3,cache_read:.06},"tensorx/deepseek/deepseek-v4.1-flash":{input:.5,output:1.5,cache_read:.13},"tensorx/deepseek/deepseek-v4-pro-0813":{input:2,output:4,cache_read:.5},"tensorx/deepseek/deepseek-v4-pro":{input:1.75,output:3.5,cache_read:.4375,cache_write:2.185},"tensorx/deepseek/deepseek-r1-0528":{input:.66,output:2.6,cache_read:.165,cache_write:.825},"tensorx/deepseek/deepseek-v3.2":{input:.3,output:.5,cache_read:.075,cache_write:.375},"tensorx/z-ai/glm-5v-turbo":{input:1.2,output:4,cache_read:.3,cache_write:1.5},"tensorx/z-ai/glm-5.3-flash":{input:.2,output:.5,cache_read:.05},"tensorx/z-ai/glm-5":{input:1,output:3.2,cache_read:.25,cache_write:1.25},"tensorx/z-ai/glm-5.2":{input:1.5,output:4.5,cache_read:.375},"tensorx/z-ai/glm-5.1":{input:1.4,output:4.4,cache_read:.35,cache_write:1.75},"tensorx/z-ai/glm-5-turbo":{input:1.2,output:4,cache_read:.3,cache_write:1.5},"tensorx/z-ai/glm-5.3":{input:1.75,output:4.5,cache_read:.44},"tensorx/moonshotai/kimi-k3":{input:3,output:15,cache_read:.75},"tensorx/moonshotai/kimi-k2.6":{input:1,output:4,cache_read:.25,cache_write:1.25},"tensorx/moonshotai/kimi-k2.5":{input:.5,output:2.8,cache_read:.125,cache_write:.625},"tensorx/moonshotai/kimi-k2.7-code":{input:1.25,output:4.5,cache_read:.3125},"tensorx/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.075,cache_write:.375},"tensorx/minimax/minimax-m3":{input:.4,output:2,cache_read:.1},"tensorx/qwen/qwen3-235b-a22b-2507":{input:.072,output:.464,cache_read:.018,cache_write:.09},"tensorx/qwen/qwen3.8-27b":{input:.4,output:2.4,cache_read:.1},"tensorx/qwen/qwen3.8-2.4t-a95b":{input:2.5,output:6,cache_read:.63},"tensorx/qwen/qwen3.5-122b-a10b":{input:.5,output:3.5,cache_read:.125,cache_write:.625},"tensorx/qwen/qwen3.5-9b":{input:.15,output:.2,cache_read:.0375,cache_write:.1875},"tensorx/qwen/qwen3.8-flash-next":{input:.2,output:.5,cache_read:.05},"longcat/LongCat-2.0":{input:.75,output:2.95,cache_read:.015},"chutes/Nemotron-3-Nano-Omni-30B-TEE":{input:.0245,output:.0978,cache_read:.0024499999999999995},"chutes/unsloth/Mistral-Nemo-Instruct-2407-TEE":{input:.0245,output:.0978,cache_read:.0024499999999999995},"chutes/google/gemma-4-31B-turbo-TEE":{input:.12,output:.37,cache_read:.011999999999999997},"chutes/Qwen/Qwen3-32B-TEE":{input:.104,output:.416,cache_read:.010399999999999998},"chutes/Qwen/Qwen3.6-27B-TEE":{input:.3,output:2,cache_read:.029999999999999992},"chutes/Qwen/Qwen3-235B-A22B-Thinking-2507-TEE":{input:.2989,output:1.1957,cache_read:.029889999999999993},"chutes/Qwen/Qwen3.8-27B-TEE":{input:.24,output:2.2,cache_read:.023999999999999994},"chutes/Qwen/Qwen3.5-397B-A17B-TEE":{input:.45,output:3,cache_read:.04499999999999999},"chutes/deepseek-ai/DeepSeek-V4-Flash-0731-TEE":{input:.44,output:1.32,cache_read:.04399999999999999},"chutes/deepseek-ai/DeepSeek-V3.2-TEE":{input:1,output:1,cache_read:.09999999999999998},"chutes/moonshotai/Kimi-K3-TEE":{input:3,output:15,cache_read:.29999999999999993},"chutes/moonshotai/Kimi-K2.6-TEE":{input:.5,output:2.85,cache_read:.04999999999999999},"chutes/zai-org/GLM-5.2-TEE":{input:1.25,output:3.95,cache_read:.12499999999999997},"chutes/zai-org/GLM-5.1-TEE":{input:.98,output:3.08,cache_read:.09799999999999998},"edenai/deepinfra/nemotron-3-ultra-550b-a55b":{input:.5,output:2.2,cache_read:.1},"edenai/deepinfra/meta-models/Muse-Glimmer-30B":{input:.3,output:1.2,cache_read:.04},"edenai/deepinfra/tencent/Hy3":{input:.13,output:.53,cache_read:.033},"edenai/deepinfra/tencent/Hy4-preview":{input:.834,output:2.501,cache_read:.042},"edenai/deepinfra/meta-llama/Llama-Guard-3-8B":{input:.055,output:.055},"edenai/deepinfra/meta-llama/Llama-3.2-11B-Vision-Instruct":{input:.345,output:.345},"edenai/deepinfra/meta-llama/Llama-3.3-70B-Instruct":{input:.1,output:.32},"edenai/deepinfra/thinkingmachines/Inkling-Small":{input:.45,output:1.2,cache_read:.1},"edenai/deepinfra/thinkingmachines/Inkling":{input:.95,output:4.05,cache_read:.16},"edenai/deepinfra/google/gemma-3-27b-it":{input:.08,output:.16},"edenai/deepinfra/google/gemma-3-12b-it":{input:.05,output:.15},"edenai/deepinfra/google/gemma-3-4b-it":{input:.05,output:.1},"edenai/deepinfra/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.06,output:.18,cache_read:.015},"edenai/deepinfra/deepseek-ai/DeepSeek-R1":{input:.7,output:2.4},"edenai/deepinfra/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.3,output:2.6,cache_read:.1},"edenai/deepinfra/deepseek-ai/DeepSeek-V4.1-Flash":{input:.2,output:.6,cache_read:.006},"edenai/deepinfra/deepseek-ai/DeepSeek-V3":{input:.32,output:.89},"edenai/deepinfra/deepseek-ai/DeepSeek-V3-0324":{input:.24,output:.9,cache_read:.135},"edenai/deepinfra/stepfun-ai/Step-3.7-Flash":{input:.2,output:1.15,cache_read:.04},"edenai/deepinfra/stepfun-ai/Step-3.5-Flash":{input:.09,output:.3,cache_read:.02},"edenai/deepinfra/moonshotai/Kimi-K2.5":{input:.45,output:2.25,cache_read:.07},"edenai/deepinfra/zai-org/GLM-4.7-Flash":{input:.06,output:.4,cache_read:.01},"edenai/deepinfra/nvidia/Nemotron-3-Nano-30B-A3B":{input:.05,output:.2,cache_read:.025},"edenai/deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct":{input:.6,output:.6},"edenai/deepinfra/ByteDance/Seed-2.0-code":{input:.5,output:3,cache_read:.1},"edenai/deepinfra/ByteDance/Seed-2.0-mini":{input:.1,output:.4,cache_read:.02},"edenai/deepinfra/openai/gpt-oss-20b":{input:.03,output:.14},"edenai/deepinfra/openai/gpt-oss-120b":{input:.037,output:.17},"edenai/cerebras/gpt-oss-120b":{input:.35,output:.75,cache_read:.35},"edenai/groq/openai/gpt-oss-20b":{input:.075,output:.3,cache_read:.0375},"edenai/groq/openai/gpt-oss-safeguard-20b":{input:.075,output:.3,cache_read:.0375},"edenai/groq/openai/gpt-oss-120b":{input:.15,output:.6,cache_read:.075},"edenai/zai/glm-4.6v":{input:.3,output:.9,cache_read:.05},"edenai/zai/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"edenai/zai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"edenai/zai/glm-4.6":{input:.6,output:2.2,cache_read:.11},"edenai/zai/glm-5":{input:1,output:3.2,cache_read:.2},"edenai/zai/glm-4.7":{input:.6,output:2.2,cache_read:.11},"edenai/zai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"edenai/zai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"edenai/zai/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"edenai/zai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"edenai/anthropic/claude-opus-latest":{input:4,output:20,cache_read:.2,cache_write:5},"edenai/anthropic/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"edenai/anthropic/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"edenai/anthropic/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"edenai/anthropic/claude-sonnet-latest":{input:2,output:10,cache_read:.2,cache_write:2.5},"edenai/anthropic/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"edenai/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"edenai/anthropic/claude-fable-latest":{input:10,output:50,cache_read:.25,cache_write:12.5},"edenai/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"edenai/anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"edenai/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"edenai/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"edenai/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"edenai/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"edenai/cohere/command-r-08-2024":{input:.15,output:.6},"edenai/cohere/command-a-03-2025":{input:2.5,output:10},"edenai/cohere/command-r7b-12-2024":{input:.0375,output:.15},"edenai/cohere/command-r-plus-08-2024":{input:2.5,output:10},"edenai/cohere/c4ai-aya-expanse-32b":{input:.5,output:1.5},"edenai/deepseek/deepseek-v4-flash-vision-exp":{input:.15,output:.6,cache_read:.003},"edenai/deepseek/deepseek-chat":{input:.15,output:.6,cache_read:.003},"edenai/deepseek/deepseek-v4-pro":{input:.66,output:1.98,cache_read:.022},"edenai/deepseek/deepseek-v4-flash":{input:.15,output:.6,cache_read:.003},"edenai/databricks/databricks-inkling":{input:1,output:4.05,cache_read:.1,cache_write:1.00002},"edenai/databricks/databricks-gpt-oss-20b":{input:.07,output:.30002,cache_read:.007,cache_write:.07},"edenai/databricks/databricks-deepseek-v4-flash-0731":{input:.14,output:.28,cache_read:.014,cache_write:.14},"edenai/databricks/databricks-gpt-oss-120b@eu":{input:.15001,output:.59997,cache_read:.015001,cache_write:.15001},"edenai/databricks/databricks-gpt-oss-120b":{input:.15001,output:.59997,cache_read:.015001,cache_write:.15001},"edenai/databricks/databricks-deepseek-v4-pro-0813":{input:1.32,output:3.959999,cache_read:.132,cache_write:1.31999},"edenai/databricks/databricks-gpt-oss-20b@eu":{input:.07,output:.30002,cache_read:.007,cache_write:.07},"edenai/together_ai/meta-models/Muse-Glimmer-30B":{input:.35,output:1.5,cache_read:.04},"edenai/together_ai/thinkingmachines/Inkling":{input:1,output:4.05,cache_read:.17},"edenai/together_ai/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.14,output:.28,cache_read:.03},"edenai/together_ai/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96,cache_read:.13},"edenai/together_ai/deepseek-ai/DeepSeek-V4.1-Flash":{input:.3,output:1.2,cache_read:.006},"edenai/together_ai/openai/gpt-oss-120b":{input:.15,output:.6},"edenai/azure/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"edenai/azure/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"edenai/azure/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"edenai/azure/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"edenai/flexai/Step-3.7-Flash":{input:.2,output:1.15,cache_read:.03},"edenai/flexai/DeepSeek-V4-Flash-0731":{input:.06,output:.18,cache_read:.009},"edenai/flexai/Muse-Glimmer-30B":{input:.3,output:1.2,cache_read:.045},"edenai/flexai/gpt-oss-20b":{input:.02,output:.1,cache_read:.003},"edenai/flexai/gpt-oss-120b":{input:.03,output:.17,cache_read:.0045},"edenai/google/gemini-flash-latest":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/google/gemini-3.1-flash-image-preview":{input:.5,output:3},"edenai/google/gemini-2.5-flash-image":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333,input_audio:1},"edenai/google/gemini-3.6-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/google/gemini-3-pro-image-preview":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2},"edenai/google/gemini-3.5-flash-lite":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333,input_audio:.3},"edenai/google/gemini-3.1-flash-image":{input:.5,output:3},"edenai/google/gemini-3.1-pro-preview":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"edenai/google/gemini-3.5-flash":{input:1.5,output:9,reasoning:9,cache_read:.15,cache_write:.083333,input_audio:3},"edenai/google/gemini-3-pro-image":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2},"edenai/google/gemini-3.1-flash-lite-image":{input:.25,output:1.5},"edenai/google/deep-research-preview-04-2026":{input:2,output:12},"edenai/google/deep-research-max-preview-04-2026":{input:2,output:12},"edenai/google/gemini-3.7-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"edenai/google/gemini-3-flash-preview":{input:.5,output:3,reasoning:3,cache_read:.05,cache_write:.083333,input_audio:1},"edenai/google/gemini-pro-latest":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"edenai/google/gemini-3.8-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/google/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333,input_audio:.5},"edenai/google/gemini-3.1-flash-lite":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333,input_audio:.5},"edenai/xai/grok-latest":{input:2,output:6,cache_read:.5,tiers:[{input:3.2,output:9.6,cache_read:.8,tier:{type:"context",size:2e5}}],context_over_200k:{input:3.2,output:9.6,cache_read:.8}},"edenai/xai/grok-4.7":{input:2,output:6,cache_read:.5,tiers:[{input:3.2,output:9.6,cache_read:.8,tier:{type:"context",size:2e5}}],context_over_200k:{input:3.2,output:9.6,cache_read:.8}},"edenai/xai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"edenai/xai/grok-4.20-0309-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"edenai/xai/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6}},"edenai/xai/grok-4.20-0309-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"edenai/xai/grok-build-0.1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4}},"edenai/xai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"edenai/nebius/google/gemma-3-27b-it":{input:.1,output:.3,cache_read:.1},"edenai/nebius/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.14,output:.28,cache_read:.14},"edenai/nebius/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96,cache_read:1.32},"edenai/nebius/deepseek-ai/DeepSeek-V4.1-Flash":{input:.3,output:1.2,cache_read:.3},"edenai/nebius/nvidia/nemotron-3-super-120b-a12b":{input:.3,output:.9,cache_read:.3},"edenai/nebius/nvidia/Nemotron-3-Ultra-550b-a55b":{input:1,output:3,cache_read:1},"edenai/nebius/openai/gpt-oss-120b":{input:.15,output:.6,cache_read:.15},"edenai/scaleway/gemma-3-27b-it":{input:.287125,output:.57425},"edenai/scaleway/deepseek-v4-flash-0731":{input:.45612,output:.91224,cache_read:.091224},"edenai/scaleway/llama-3.3-70b-instruct":{input:1.02627,output:1.02627},"edenai/scaleway/gpt-oss-120b":{input:.171045,output:.68418},"edenai/ionos/meta-llama/Llama-3.3-70B-Instruct":{input:.741195,output:.741195},"edenai/ionos/openai/gpt-oss-120b":{input:.171045,output:.741195},"edenai/vertex/gemini-flash-latest":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-2.5-flash-image":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333,input_audio:1},"edenai/vertex/gemini-3.1-flash-lite@eu":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333,input_audio:.5},"edenai/vertex/gemini-3.5-flash-lite@eu":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333,input_audio:.3},"edenai/vertex/gemini-3.6-flash@eu":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.6-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.5-flash-lite":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333,input_audio:.3},"edenai/vertex/gemini-3.1-flash-image":{input:.5,output:3},"edenai/vertex/gemini-3.1-pro-preview":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2,tiers:[{input:4,output:18,cache_read:.4,cache_write:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:.25}},"edenai/vertex/gemini-3.5-flash":{input:1.5,output:9,reasoning:9,cache_read:.15,cache_write:.083333,input_audio:3},"edenai/vertex/gemini-3-pro-image":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2},"edenai/vertex/gemini-3.7-flash@us":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.7-flash@eu":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.1-flash-lite-image":{input:.25,output:1.5},"edenai/vertex/gemini-3.8-flash@eu":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.7-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.6-flash@us":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.5-flash-lite@us":{input:.3,output:2.5,reasoning:2.5,cache_read:.03,cache_write:.083333,input_audio:.3},"edenai/vertex/gemini-3-flash-preview":{input:.5,output:3,reasoning:3,cache_read:.05,cache_write:.083333,input_audio:1},"edenai/vertex/gemini-3.1-flash-lite@us":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333,input_audio:.5},"edenai/vertex/gemini-pro-latest":{input:2,output:12,reasoning:12,cache_read:.2,cache_write:.375,input_audio:2,tiers:[{input:4,output:18,cache_read:.4,cache_write:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:.25}},"edenai/vertex/gemini-3.8-flash":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.5-flash@eu":{input:1.5,output:9,reasoning:9,cache_read:.15,cache_write:.083333,input_audio:3},"edenai/vertex/gemini-3.8-flash@us":{input:.75,output:3.75,reasoning:3.75,cache_read:.075,cache_write:.041667,input_audio:.75},"edenai/vertex/gemini-3.5-flash@us":{input:1.5,output:9,reasoning:9,cache_read:.15,cache_write:.083333,input_audio:3},"edenai/vertex/gemini-3.1-flash-lite":{input:.25,output:1.5,reasoning:1.5,cache_read:.025,cache_write:.083333,input_audio:.5},"edenai/perplexityai/sonar-pro":{input:3,output:15},"edenai/perplexityai/sonar-deep-research":{input:2,output:8,reasoning:3},"edenai/perplexityai/sonar":{input:1,output:1},"edenai/perplexityai/sonar-reasoning-pro":{input:2,output:8},"edenai/cloudflare/@cf/meta/llama-guard-3-8b":{input:.484,output:.03},"edenai/cloudflare/@cf/aisingapore/gemma-sea-lion-v4-27b-it":{input:.351,output:.555},"edenai/cloudflare/@cf/deepseek-ai/deepseek-v4-flash-0731":{input:.44,output:1.32,cache_read:.014},"edenai/cloudflare/@cf/deepseek-ai/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"edenai/cloudflare/@cf/zai-org/glm-4.7-flash":{input:.0605,output:.4},"edenai/cloudflare/@cf/qwen/qwen2.5-coder-32b-instruct":{input:.66,output:1},"edenai/cloudflare/@cf/openai/gpt-oss-20b":{input:.2,output:.3},"edenai/cloudflare/@cf/openai/gpt-oss-120b":{input:.35,output:.75},"edenai/minimax/MiniMax-M3":{input:.3,output:1.2,cache_read:.06},"edenai/minimax/MiniMax-M2.1":{input:.3,output:1.2,cache_read:.03},"edenai/minimax/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.03},"edenai/minimax/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06},"edenai/minimax/MiniMax-M2":{input:.3,output:1.2},"edenai/tensorx/deepseek/deepseek-v4-flash-0731":{input:.25,output:.3,cache_read:.0625},"edenai/tensorx/deepseek/deepseek-v4.1-flash":{input:.5,output:1.5,cache_read:.125},"edenai/tensorx/deepseek/deepseek-v4-pro-0813":{input:2,output:4,cache_read:.5},"edenai/tensorx/moonshotai/kimi-k2.5":{input:.5,output:2.8,cache_read:.125},"edenai/amazon/google.gemma-3-12b-it":{input:.09,output:.29},"edenai/amazon/google.gemma-3-4b-it":{input:.04,output:.08},"edenai/amazon/openai.gpt-oss-safeguard-20b@us":{input:.07,output:.2},"edenai/amazon/openai.gpt-oss-safeguard-20b":{input:.07,output:.2},"edenai/amazon/amazon.nova-lite-v1:0@us":{input:.06,output:.24,cache_read:.015},"edenai/amazon/mistral.voxtral-mini-3b-2507@us":{input:.04,output:.04},"edenai/amazon/amazon.nova-micro-v1:0":{input:.035,output:.14,cache_read:.00875},"edenai/amazon/amazon.nova-pro-v1:0":{input:.8,output:3.2,cache_read:.2},"edenai/amazon/mistral.voxtral-small-24b-2507":{input:.1,output:.3},"edenai/amazon/amazon.nova-lite-v1:0":{input:.06,output:.24,cache_read:.015},"edenai/amazon/mistral.voxtral-small-24b-2507@us":{input:.1,output:.3},"edenai/amazon/google.gemma-3-12b-it@us":{input:.09,output:.29},"edenai/amazon/google.gemma-3-27b-it":{input:.23,output:.38},"edenai/amazon/google.gemma-3-27b-it@us":{input:.23,output:.38},"edenai/amazon/mistral.pixtral-large-2502-v1:0":{input:2,output:6},"edenai/amazon/amazon.nova-micro-v1:0@us":{input:.035,output:.14,cache_read:.00875},"edenai/amazon/zai.glm-4.7-flash@us":{input:.07,output:.4},"edenai/amazon/moonshotai.kimi-k2.5":{input:.6,output:3},"edenai/amazon/amazon.nova-pro-v1:0@us":{input:.8,output:3.2,cache_read:.2},"edenai/amazon/mistral.pixtral-large-2502-v1:0@us":{input:2,output:6},"edenai/amazon/zai.glm-4.7-flash":{input:.07,output:.4},"edenai/amazon/moonshot.kimi-k2-thinking":{input:.6,output:2.5},"edenai/amazon/google.gemma-3-4b-it@us":{input:.04,output:.08},"edenai/amazon/mistral.voxtral-mini-3b-2507":{input:.04,output:.04},"edenai/ovhcloud/gpt-oss-20b":{input:.05,output:.18},"edenai/ovhcloud/gpt-oss-120b":{input:.09,output:.47},"edenai/fireworks_ai/gpt-oss-120b":{input:.15,output:.6,cache_read:.014},"edenai/fireworks_ai/accounts/fireworks/models/deepseek-v4-flash-0731":{input:.22,output:.66,cache_read:.007},"edenai/fireworks_ai/accounts/fireworks/models/muse-glimmer-30b":{input:.35,output:1.5,cache_read:.04},"edenai/fireworks_ai/accounts/fireworks/models/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"edenai/fireworks_ai/accounts/fireworks/models/inkling":{input:1,output:4.05,cache_read:.17},"edenai/mistral/codestral-latest":{input:.3,output:.9,cache_read:.03},"edenai/mistral/mistral-large-latest":{input:2,output:6,cache_read:.2},"edenai/mistral/mistral-small-latest":{input:.15,output:.6,cache_read:.015},"edenai/mistral/devstral-medium-latest":{input:.4,output:2},"edenai/mistral/devstral-2512":{input:.4,output:2,cache_read:.04},"edenai/mistral/mistral-medium-2505":{input:.4,output:2},"edenai/mistral/magistral-medium-latest":{input:1.5,output:7.5,cache_read:.15},"edenai/mistral/mistral-small-2603":{input:.15,output:.6,cache_read:.015},"edenai/mistral/mistral-large-2512":{input:.5,output:1.5,cache_read:.05},"edenai/mistral/voxtral-small-latest":{input:.1,output:.4,cache_read:.01},"edenai/mistral/mistral-medium-2604":{input:1.5,output:7.5,cache_read:.15},"edenai/mistral/mistral-medium-latest":{input:1.5,output:7.5,cache_read:.15},"edenai/qwen/qwen3-vl-235b-a22b-instruct":{input:.4,output:1.6},"edenai/qwen/qwq-plus":{input:.8,output:2.4},"edenai/qwen/qwen3.8-27b":{input:.5,output:3,cache_read:.1,cache_write:.625},"edenai/qwen/qwen3-vl-235b-a22b-thinking":{input:.4,output:4},"edenai/qwen/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25,cache_write:2.5},"edenai/qwen/deepseek-v4-flash-0731":{input:.22,output:.66,cache_read:.022},"edenai/qwen/qwen3-235b-a22b-instruct-2507":{input:.23,output:.92},"edenai/qwen/qwen-max":{input:1.6,output:6.4,cache_read:.32},"edenai/qwen/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"edenai/qwen/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"edenai/qwen/qwen3-coder-next":{input:.3,output:1.5},"edenai/qwen/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.015},"edenai/qwen/qwen3-coder-next@eu":{input:.3,output:1.5},"edenai/qwen/qwen3-max":{input:1.2,output:6,cache_read:.24,cache_write:1.5},"edenai/qwen/qwen3-coder-480b-a35b-instruct":{input:1.5,output:7.5},"edenai/qwen/qwen3-coder-30b-a3b-instruct":{input:.45,output:2.25},"edenai/qwen/qwen-vl-max":{input:.8,output:3.2,cache_read:.16},"edenai/qwen/qwen3-max@eu":{input:1.2,output:6,cache_read:.24,cache_write:1.5},"edenai/qwen/qwen3-next-80b-a3b-instruct":{input:.15,output:1.2},"edenai/qwen/qwen-vl-plus":{input:.21,output:.63,cache_read:.042},"edenai/qwen/qwen3-coder-flash":{input:.3,output:1.5,cache_read:.06,cache_write:.375},"edenai/qwen/deepseek-v4-pro-0813":{input:.66,output:1.98,cache_read:.066},"edenai/qwen/qwen3-coder-plus":{input:1,output:5,cache_read:.2,cache_write:1.25},"edenai/qwen/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"edenai/qwen/qwen3.8-max-0902":{input:2,output:6,cache_read:.25,cache_write:2.5},"edenai/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"edenai/openai/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"edenai/openai/gpt-3.5-turbo":{input:.5,output:1.5},"edenai/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"edenai/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"edenai/openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"edenai/openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"edenai/openai/gpt-5.2-pro":{input:21,output:168},"edenai/openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"edenai/openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"edenai/openai/gpt-4":{input:30,output:60},"edenai/openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"edenai/openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"edenai/openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"edenai/openai/o1":{input:15,output:60,cache_read:7.5},"edenai/openai/gpt-latest":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"edenai/openai/gpt-5-pro":{input:15,output:120},"edenai/openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"edenai/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"edenai/openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"edenai/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"edenai/openai/o3-pro":{input:20,output:80},"edenai/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"edenai/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"edenai/openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"edenai/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"edenai/openai/gpt-4.1":{input:2,output:8,cache_read:.5},"edenai/openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"edenai/openai/gpt-mini-latest":{input:.75,output:4.5,cache_read:.075},"edenai/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"edenai/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"edenai/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"edenai/openai/gpt-4-turbo":{input:10,output:30},"edenai/openai/o3":{input:2,output:8,cache_read:.5},"edenai/openai/gpt-5":{input:1.25,output:10,cache_read:.125},"edenai/openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"edenai/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"edenai/openai/o1-pro":{input:150,output:600},"edenai/openai/gpt-pro-latest":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"edenai/infomaniak/mistralai/Ministral-3-14B-Instruct-2512":{input:.34209,output:.45612},"edenai/moonshot/kimi-k3":{input:3,output:15,cache_read:.3},"edenai/moonshot/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"edenai/moonshot/kimi-k2.6":{input:.95,output:4,cache_read:.16},"edenai/moonshot/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"stepfun/step-1-32k":{input:2.05,output:9.59,cache_read:.41},"stepfun/step-5-preview":{input:.959,output:2.741,cache_read:.048},"stepfun/step-3.5-flash-2603":{input:.1,output:.3,cache_read:.02},"stepfun/step-2-16k":{input:5.21,output:16.44,cache_read:1.04},"stepfun/step-3.5-flash":{input:.1,output:.3,cache_read:.02},"stepfun/step-3.7-flash":{input:.185,output:1.11,cache_read:.037},"hpc-ai/anthropic/claude-opus-4.7":{input:5,output:25,cache_read:.5},"hpc-ai/deepseek/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.145},"hpc-ai/deepseek/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"hpc-ai/moonshotai/kimi-k2.5":{input:.6,output:3,cache_read:.1},"hpc-ai/moonshotai/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"hpc-ai/zai-org/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"hpc-ai/zai-org/glm-5.1":{input:.615,output:2.46,cache_read:.133},"hpc-ai/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03},"hpc-ai/openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"v0/v0-1.5-lg":{input:15,output:75},"v0/v0-1.5-md":{input:3,output:15},"v0/v0-1.0-md":{input:3,output:15},"tempr/anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"tempr/anthropic/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"tempr/anthropic/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"tempr/anthropic/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"tempr/anthropic/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"tempr/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"tempr/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"tempr/anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"tempr/anthropic/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"tempr/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"tempr/anthropic/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"tempr/anthropic/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"tempr/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"tempr/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"tempr/google/gemini-flash-latest":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"tempr/google/gemini-flash-lite-latest":{input:.3,output:2.5,cache_read:.03},"tempr/google/gemini-embedding-2":{input:.2,output:0},"tempr/google/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"tempr/google/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"tempr/google/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"tempr/google/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"tempr/google/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"tempr/google/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"tempr/google/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,input_audio:1},"tempr/google/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"tempr/google/gemini-embedding-001":{input:.15,output:0},"tempr/google/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"tempr/mistral/mistral-large-latest":{input:.5,output:1.5},"tempr/mistral/mistral-small-latest":{input:.15,output:.6},"tempr/mistral/zai-glm-5-2":{input:1.4,output:4.4,cache_read:.14},"tempr/mistral/mistral-embed":{input:.1,output:0},"tempr/mistral/mistral-small-2603":{input:.15,output:.6},"tempr/mistral/mistral-large-2512":{input:.5,output:1.5},"tempr/mistral/voxtral-small-latest":{input:.1,output:.3},"tempr/mistral/zai-glm-5-3":{input:1.4,output:4.4,cache_read:.14},"tempr/mistral/mistral-medium-2604":{input:1.5,output:7.5},"tempr/mistral/mistral-medium-latest":{input:1.5,output:7.5},"inception/mercury-edit-2":{input:.25,output:.75,cache_read:.025},"inception/mercury-2.5":{input:.04,output:.15,cache_read:.004},"inception/mercury-2":{input:.25,output:.75,cache_read:.025},"modelis/gemini-2.5-pro":{input:1.25,output:10},"modelis/gemini-2.5-flash":{input:.3,output:2.5},"modelis/claude-fable-5":{input:10,output:50},"modelis/claude-opus-4-8":{input:5,output:25},"modelis/deepseek-v4-pro":{input:.435,output:.87},"modelis/claude-sonnet-4-6":{input:3,output:15},"modelis/deepseek-v4-flash":{input:.0983,output:.1966},"modelis/qwen/qwen3.7-max":{input:3,output:9},"modelis/qwen/qwen3.7-plus":{input:.768,output:3.072},"opencode/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"opencode/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"opencode/gpt-5.4-pro":{input:30,output:180,cache_read:30},"opencode/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"opencode/gpt-5.5-pro":{input:30,output:180,cache_read:30},"opencode/grok-4.7":{input:1.4,output:4.2,cache_read:.35,tiers:[{input:2.8,output:8.4,cache_read:.7,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.8,output:8.4,cache_read:.7}},"opencode/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"opencode/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"opencode/gpt-5.1-codex":{input:1.07,output:8.5,cache_read:.107},"opencode/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"opencode/glm-4.6":{input:.6,output:2.2,cache_read:.1},"opencode/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"opencode/kimi-k3":{input:3,output:15,cache_read:.3},"opencode/gpt-5-codex":{input:1.07,output:8.5,cache_read:.107},"opencode/qwen3-coder":{input:.45,output:1.8},"opencode/qwen3.5-plus":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"opencode/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"opencode/glm-5":{input:1,output:3.2,cache_read:.2},"opencode/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"opencode/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"opencode/minimax-m2.5":{input:.3,output:1.2,cache_read:.06},"opencode/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"opencode/deepseek-v4-flash-vision-exp":{input:.14,output:.28,cache_read:.028},"opencode/kimi-k2.6":{input:.95,output:4,cache_read:.16},"opencode/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"opencode/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"opencode/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"opencode/gemini-3.6-flash":{input:1.5,output:7.5,cache_read:.15,input_audio:1.5},"opencode/kimi-k2-thinking":{input:.4,output:2.5,cache_read:.4},"opencode/gpt-5.3-codex-spark":{input:1.75,output:14,cache_read:.175},"opencode/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"opencode/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"opencode/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"opencode/grok-4.5":{input:2,output:6,cache_read:.3,tiers:[{input:4,output:12,cache_read:.6,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6}},"opencode/kimi-k2.5":{input:.6,output:3,cache_read:.08},"opencode/gpt-5.1":{input:1.07,output:8.5,cache_read:.107},"opencode/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"opencode/claude-3-5-haiku":{input:.8,output:4,cache_read:.08,cache_write:1},"opencode/gemini-3-flash":{input:.5,output:3,cache_read:.05},"opencode/minimax-m2.7":{input:.3,output:1.2,cache_read:.06},"opencode/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"opencode/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"opencode/gemini-3-pro":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"opencode/claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"opencode/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"opencode/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"opencode/glm-4.7":{input:.6,output:2.2,cache_read:.1},"opencode/minimax-m3":{input:.3,output:1.2,cache_read:.06},"opencode/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"opencode/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"opencode/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"opencode/gpt-5.2":{input:1.75,output:14,cache_read:.175},"opencode/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"opencode/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"opencode/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"opencode/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"opencode/gemini-3.7-flash":{input:1.5,output:7.5,cache_read:.15,input_audio:1.5},"opencode/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"opencode/kimi-k2":{input:.4,output:2.5,cache_read:.4},"opencode/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"opencode/grok-build-0.1":{input:1,output:2,cache_read:.2},"opencode/gemini-3.8-flash":{input:1.5,output:7.5,cache_read:.15,input_audio:1.5},"opencode/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"opencode/deepseek-v4-pro":{input:1.74,output:3.84,cache_read:.145},"opencode/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"opencode/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625},"opencode/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:6.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:6.25}},"opencode/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"opencode/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"opencode/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"opencode/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"opencode/gpt-5":{input:1.07,output:8.5,cache_read:.107},"opencode/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"opencode/gemini-3.1-pro":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"opencode/minimax-m2.1":{input:.3,output:1.2,cache_read:.1},"opencode/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"opencode/deepseek-v4-flash":{input:.14,output:.28,cache_read:.028},"opencode/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"wafer.ai/Kimi-K2.6":{input:1.14,output:4.8,cache_read:.19,cache_write:0},"wafer.ai/MiniMax-M3":{input:.33,output:1.32,cache_read:.07,cache_write:0,tiers:[{input:.66,output:2.64,cache_read:.13,cache_write:0,tier:{type:"context",size:512e3}}],context_over_200k:{input:.66,output:2.64,cache_read:.13,cache_write:0}},"wafer.ai/GLM-5.1":{input:1,output:3.2,cache_read:.1,cache_write:0},"wafer.ai/GLM-5.2":{input:1.2,output:4.1,cache_read:.2,cache_write:0},"wafer.ai/glm5.2-fast":{input:3,output:10.25,cache_read:.5,cache_write:0},"zhipuai/glm-5v-turbo":{input:5,output:22,cache_read:1.2,cache_write:0},"zhipuai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03,cache_write:0},"zhipuai/glm-5":{input:1,output:3.2,cache_read:.2,cache_write:0},"zhipuai/glm-5.3-flashx":{input:.37,output:1.25,cache_read:.075,cache_write:0},"zhipuai/glm-5.2":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"zhipuai/glm-5.1":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"zhipuai/glm-5.3":{input:1.4,output:4.4,cache_read:.26,cache_write:0},"zhipuai/glm-4.5-air":{input:.2,output:1.1,cache_read:.03,cache_write:0},"zhipuai/glm-4.7-flashx":{input:.07,output:.4,cache_read:.01,cache_write:0},"zhipuai/glm-4.7":{input:.6,output:2.2,cache_read:.11,cache_write:0},"zhipuai/glm-4.5v":{input:.6,output:1.8},"zhipuai/glm-4.6":{input:.6,output:2.2,cache_read:.11,cache_write:0},"zhipuai/glm-4.5":{input:.6,output:2.2,cache_read:.11,cache_write:0},"zhipuai/glm-4.6v":{input:.3,output:.9},"meganova/meta-llama/Llama-3.3-70B-Instruct":{input:.1,output:.3},"meganova/XiaomiMiMo/MiMo-V2-Flash":{input:.1,output:.3},"meganova/Qwen/Qwen3.5-Plus":{input:.4,output:2.4,reasoning:2.4},"meganova/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.09,output:.6},"meganova/Qwen/Qwen2.5-VL-32B-Instruct":{input:.2,output:.6},"meganova/deepseek-ai/DeepSeek-V3.1":{input:.27,output:1},"meganova/deepseek-ai/DeepSeek-V3.2":{input:.26,output:.38},"meganova/deepseek-ai/DeepSeek-R1-0528":{input:.5,output:2.15},"meganova/deepseek-ai/DeepSeek-V3-0324":{input:.25,output:.88},"meganova/deepseek-ai/DeepSeek-V3.2-Exp":{input:.27,output:.4},"meganova/MiniMaxAI/MiniMax-M2.1":{input:.28,output:1.2},"meganova/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2},"meganova/mistralai/Mistral-Nemo-Instruct-2407":{input:.02,output:.04},"meganova/moonshotai/Kimi-K2.5":{input:.45,output:2.8},"meganova/moonshotai/Kimi-K2-Thinking":{input:.6,output:2.6},"meganova/zai-org/GLM-4.7":{input:.2,output:.8},"meganova/zai-org/GLM-5":{input:.8,output:2.56},"meganova/zai-org/GLM-4.6":{input:.45,output:1.9},"ovhcloud/qwen3.8-27b":{input:.47,output:3.19},"ovhcloud/mistral-7b-instruct-v0.3":{input:.11,output:.11},"ovhcloud/qwen3-coder-30b-a3b-instruct":{input:.07,output:.26},"ovhcloud/gpt-oss-20b":{input:.05,output:.18},"ovhcloud/qwen3.5-9b":{input:.12,output:.18},"ovhcloud/meta-llama-3_3-70b-instruct":{input:.74,output:.74},"ovhcloud/qwen3.5-397b-a17b":{input:.71,output:4.25},"ovhcloud/qwen2.5-vl-72b-instruct":{input:1.01,output:1.01},"ovhcloud/qwen3.6-27b":{input:.47,output:3.19},"ovhcloud/mistral-small-3.2-24b-instruct-2506":{input:.1,output:.31},"ovhcloud/gpt-oss-120b":{input:.09,output:.47},"ovhcloud/mistral-nemo-instruct-2407":{input:.14,output:.14},"requesty/ring-2.6-1t":{input:.3,output:2.5},"requesty/gpt-5.4":{input:2.75,output:16.5,cache_read:.275},"requesty/nemotron-3-ultra-nvfp4":{input:.6,output:2.4,cache_read:.12},"requesty/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"requesty/gpt-5.4-pro":{input:30,output:180,cache_read:30},"requesty/claude-opus-5@eu":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"requesty/ling-2.6-1t":{input:.3,output:2.5},"requesty/gpt-4o-mini@eu":{input:.165,output:.66,cache_read:.0825},"requesty/qwen3.7-max":{input:2.5,output:7.5,cache_read:.25,cache_write:3.125},"requesty/mimo-v2.5":{input:.14,output:.28,cache_read:.0028},"requesty/gpt-5.5-pro":{input:30,output:180},"requesty/mistral-medium-3-5@eu":{input:1.65,output:8.25,cache_read:1.65},"requesty/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"requesty/gpt-5@eu":{input:1.375,output:11,cache_read:.1375},"requesty/deepseek-v4-flash-0731@eu":{input:.28,output:.56,cache_read:.07},"requesty/seed-2.0-pro":{input:.5,output:3,cache_read:.1},"requesty/kimi-k3@eu":{input:3,output:15,cache_read:.45},"requesty/seed-1.8":{input:.25,output:2,cache_read:.05},"requesty/glm-5.3-flash":{input:.2,output:.6,cache_read:.07},"requesty/qwen3.5-27b":{input:.26,output:2.6},"requesty/mistral-medium-latest@eu":{input:.44,output:2.2,cache_read:.44},"requesty/glm-5.2-fast":{input:2.1,output:6.6,cache_read:.21},"requesty/deepseek-v4-flash-0731":{input:.28,output:.56,cache_read:.07},"requesty/deepseek-v4-pro-0813@eu":{input:1.75,output:3.5,cache_read:.44},"requesty/inkling-256k":{input:1.87,output:4.68,cache_read:.374},"requesty/claude-opus-4-8@eu":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"requesty/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"requesty/kimi-k3":{input:3,output:15,cache_read:.45},"requesty/claude-fable-5@eu":{input:11,output:55,cache_read:1.1,cache_write:13.75},"requesty/nemotron-3-nano-omni@eu":{input:.06,output:.24,cache_read:.06},"requesty/gpt-4.1@eu":{input:2.2,output:8.8,cache_read:.55},"requesty/gemini-3.1-flash-lite@eu":{input:.275,output:1.65,cache_read:.0275,cache_write:.091663},"requesty/nvidia-nemotron-3-super-120b-a12b":{input:.1,output:.5},"requesty/gemini-3.5-flash-lite@eu":{input:.33,output:2.75,cache_read:.033},"requesty/claude-opus-4-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"requesty/kimi-k2.7-code@eu":{input:1.25,output:4.5,cache_read:.31},"requesty/deepseek-v4.1-flash":{input:.5,output:1.5,cache_read:.05},"requesty/glm-5.1@eu":{input:1.4,output:4.4,cache_read:1.4},"requesty/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"requesty/claude-haiku-4-5@eu":{input:1.1,output:5.5,cache_read:.11,cache_write:1.375},"requesty/claude-sonnet-4-5@eu":{input:3.3,output:16.5,cache_read:.3,cache_write:4.125,tiers:[{input:6.6,output:24.75,cache_read:.6,cache_write:8.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:6.6,output:24.75,cache_read:.6,cache_write:8.25}},"requesty/kimi-k2.6":{input:.95,output:4,cache_read:.16},"requesty/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"requesty/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"requesty/claude-sonnet-4-6@eu":{input:3.3,output:16.5,cache_read:.3,cache_write:4.125},"requesty/gemini-3.6-flash":{input:1.5,output:7,cache_read:.15},"requesty/gpt-5.5@eu":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"requesty/claude-opus-5-5@eu":{input:4.4,output:22,cache_read:.22,cache_write:5.5},"requesty/gpt-5-mini@eu":{input:.275,output:2.2,cache_read:.0275},"requesty/mistral-medium-3-5":{input:1.65,output:8.25,cache_read:1.65},"requesty/grok-4.3":{input:1.25,output:2.5,cache_read:.2,cache_write:1.25,tiers:[{input:2.5,output:5,cache_read:.4,cache_write:2.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4,cache_write:2.5}},"requesty/gemma-4-26b-a4b-it":{input:.07,output:.34,cache_read:.07},"requesty/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"requesty/gpt-5.4@eu":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"requesty/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"requesty/grok-4.2-beta":{input:2,output:6,cache_read:.2,cache_write:2,tiers:[{input:4,output:12,cache_read:.4,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.4,cache_write:4}},"requesty/gemini-3.1-flash-image":{input:.5,output:2},"requesty/nemotron-lightning-3.5-30b-a3b":{input:.05,output:.2,cache_read:.01},"requesty/gpt-5-nano@eu":{input:.055,output:.44,cache_read:.0055},"requesty/gpt-6-astra":{input:10,output:50,cache_read:1,tiers:[{input:20,output:75,cache_read:2,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2}},"requesty/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,cache_write:4.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:9,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:9}},"requesty/grok-4.5":{input:2,output:6,cache_read:.5,cache_write:2,tiers:[{input:4,output:12,cache_read:1,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1,cache_write:4}},"requesty/seed-2.0-mini":{input:.1,output:.4,cache_read:.02},"requesty/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"requesty/kimi-k2.6@eu":{input:.95,output:4,cache_read:.95},"requesty/qwen3.5-2b":{input:.02,output:.1},"requesty/fugu-ultra":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"requesty/minimax-m2.7":{input:.3,output:1.2,cache_read:.06,cache_write:1.2},"requesty/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:1.583},"requesty/ling-2.6-flash":{input:.1,output:.3},"requesty/gemini-3-pro-image":{input:2,output:12,cache_read:.2,cache_write:4.5},"requesty/gemini-3.7-flash@eu":{input:.825,output:4.125,cache_read:.0825},"requesty/claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"requesty/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"requesty/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"requesty/gpt-4.1-nano@eu":{input:.11,output:.44,cache_read:.0275},"requesty/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036},"requesty/gpt-5.1@eu":{input:1.375,output:11,cache_read:.1375},"requesty/gemini-2.5-flash-lite@eu":{input:.1,output:.4,cache_read:.01,cache_write:.18333},"requesty/nemotron-3-nano-omni":{input:.06,output:.24,cache_read:.06},"requesty/claude-sonnet-4@eu":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"requesty/inkling":{input:1.87,output:4.68,cache_read:.374},"requesty/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"requesty/deepseek-v4.1-flash@eu":{input:.5,output:1.5,cache_read:.05},"requesty/minimax-m3":{input:.3,output:1.2,cache_read:.06},"requesty/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,tiers:[{input:.4,output:1.8,cache_read:.04,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04}},"requesty/qwen3.8-2.4T-A95B@eu":{input:2.5,output:6,cache_read:.63},"requesty/qwen3.8-flash":{input:.16,output:.47,cache_read:.016,cache_write:.2},"requesty/qwen3.8-flash-next":{input:.2,output:.5,cache_read:.05},"requesty/qwen3.8-flash-next@eu":{input:.2,output:.5,cache_read:.05},"requesty/mistral-small-2603":{input:.165,output:.66,cache_read:.165},"requesty/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"requesty/gpt-5.5":{input:5.5,output:33,cache_read:.55},"requesty/claude-sonnet-5@eu":{input:2.2,output:11,cache_read:.22,cache_write:2.75},"requesty/gemini-3.8-flash@eu":{input:.825,output:4.125,cache_read:.0825},"requesty/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"requesty/qwen3.5-35b-a3b":{input:.14,output:1,cache_read:.05},"requesty/glm-5.3@eu":{input:1.2,output:4.2,cache_read:.26},"requesty/gemini-2.5-flash@eu":{input:.3,output:2.5,cache_read:.075,cache_write:.55},"requesty/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"requesty/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"requesty/glm-5.2":{input:.8,output:2.55,cache_read:.16},"requesty/hy3":{input:.14,output:.58,cache_read:.035},"requesty/glm-5.2@eu":{input:1.2,output:4.2,cache_read:.26},"requesty/gpt-5.6-sol@eu":{input:4.4,output:22,cache_read:.44},"requesty/seed-2.0-code":{input:.5,output:3,cache_read:.1},"requesty/devstral-latest@eu":{input:.44,output:2.2,cache_read:.44},"requesty/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"requesty/gemini-2.5-pro@eu":{input:1.25,output:10,cache_read:.31,cache_write:2.375,tiers:[{input:2.5,output:15,cache_read:.62,cache_write:4.75,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.62,cache_write:4.75}},"requesty/gpt-5.6-terra@eu":{input:2.2,output:13.2,cache_read:.22},"requesty/grok-build-0.1":{input:1,output:2,cache_read:.1},"requesty/glm-5.3-flash@eu":{input:.2,output:.6,cache_read:.07},"requesty/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:1.2},"requesty/deepseek-v4-pro@eu":{input:1.75,output:3.5,cache_read:.44},"requesty/devstral-latest":{input:.44,output:2.2,cache_read:.44},"requesty/o4-mini@eu":{input:1.21,output:4.84,cache_read:.3025},"requesty/mistral-small-2603@eu":{input:.165,output:.66,cache_read:.165},"requesty/qwen3.8-2.4T-A95B":{input:2,output:6,cache_read:.2},"requesty/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075},"requesty/gemini-3.5-flash@eu":{input:1.65,output:9.9,cache_read:.165,cache_write:1.7413},"requesty/gpt-6-luna":{input:.1,output:.5,cache_read:.01,tiers:[{input:.2,output:.75,cache_read:.02,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02}},"requesty/deepseek-v4-pro":{input:1.32,output:3.96,cache_read:.044},"requesty/nvidia-nemotron-3-ultra":{input:.5,output:2.5},"requesty/claude-fable-5.1@eu":{input:11,output:55,cache_read:.275,cache_write:13.75},"requesty/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"requesty/gpt-6-luna@eu":{input:.12,output:.6,cache_read:.012,tiers:[{input:.24,output:.9,cache_read:.024,tier:{type:"context",size:272e3}}],context_over_200k:{input:.24,output:.9,cache_read:.024}},"requesty/claude-opus-4-6@eu":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"requesty/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"requesty/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625},"requesty/gpt-5.6-luna@eu":{input:.22,output:1.32,cache_read:.022},"requesty/claude-opus-4-7@eu":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"requesty/gpt-5.6-terra":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4}},"requesty/kat-coder-pro":{input:.3,output:1.2},"requesty/gpt-6-sol@eu":{input:2.4,output:12,cache_read:.24,tiers:[{input:4.8,output:18,cache_read:.48,tier:{type:"context",size:272e3}}],context_over_200k:{input:4.8,output:18,cache_read:.48}},"requesty/glm-5.3":{input:1.2,output:4.2,cache_read:.26},"requesty/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"requesty/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"requesty/grok-4.6":{input:2,output:6,cache_read:.5,cache_write:2,tiers:[{input:4,output:12,cache_read:1,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1,cache_write:4}},"requesty/minimax-m3@eu":{input:.4,output:2,cache_read:.1},"requesty/qwen3.7-plus":{input:.32,output:1.28,cache_read:.032,cache_write:.4},"requesty/gpt-4.1-mini@eu":{input:.44,output:1.76,cache_read:.11},"requesty/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"requesty/claude-opus-4-5@eu":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"requesty/deepseek-v4-flash":{input:.28,output:.56,cache_read:.07},"requesty/mistral-medium-latest":{input:.44,output:2.2,cache_read:.44},"requesty/gpt-6-sol":{input:2,output:10,cache_read:.2,tiers:[{input:4,output:15,cache_read:.4,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4}},"requesty/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:.08333},"mistral/open-mistral-nemo":{input:.15,output:.15},"mistral/codestral-latest":{input:.3,output:.9},"mistral/mistral-large-2411":{input:2,output:6},"mistral/mistral-nemo":{input:.15,output:.15},"mistral/mistral-medium-2508":{input:.4,output:2},"mistral/mistral-large-latest":{input:.5,output:1.5},"mistral/mistral-small-latest":{input:.15,output:.6},"mistral/zai-glm-5-2":{input:1.4,output:4.4,cache_read:.14},"mistral/ministral-8b-latest":{input:.1,output:.1},"mistral/devstral-medium-latest":{input:.4,output:2},"mistral/open-mixtral-8x22b":{input:2,output:6},"mistral/devstral-2512":{input:.4,output:2},"mistral/mistral-medium-2505":{input:.4,output:2},"mistral/magistral-medium-latest":{input:2,output:5},"mistral/pixtral-12b":{input:.15,output:.15},"mistral/mistral-embed":{input:.1,output:0},"mistral/devstral-small-2505":{input:.1,output:.3},"mistral/mistral-small-2603":{input:.15,output:.6},"mistral/devstral-medium-2507":{input:.4,output:2},"mistral/magistral-small":{input:.5,output:1.5},"mistral/mistral-large-2512":{input:.5,output:1.5},"mistral/devstral-latest":{input:.4,output:2},"mistral/devstral-small-2507":{input:.1,output:.3},"mistral/pixtral-large-latest":{input:2,output:6},"mistral/voxtral-small-latest":{input:.1,output:.3},"mistral/open-mixtral-8x7b":{input:.7,output:.7},"mistral/mistral-small-2506":{input:.1,output:.3},"mistral/zai-glm-5-3":{input:1.4,output:4.4,cache_read:.14},"mistral/mistral-medium-2604":{input:1.5,output:7.5},"mistral/open-mistral-7b":{input:.25,output:.25},"mistral/ministral-3b-latest":{input:.04,output:.04},"mistral/mistral-medium-latest":{input:1.5,output:7.5},"amazon-bedrock/google.gemma-3-12b-it":{input:.09,output:.29},"amazon-bedrock/google.gemma-3-4b-it":{input:.04,output:.08},"amazon-bedrock/eu.anthropic.claude-fable-5":{input:11,output:55,cache_read:1.1,cache_write:13.75},"amazon-bedrock/qwen.qwen3-coder-480b-a35b-v1:0":{input:.45,output:1.8},"amazon-bedrock/google.gemma-4-31b":{input:.14,output:.4},"amazon-bedrock/us.writer.palmyra-x5-v1:0":{input:.6,output:6},"amazon-bedrock/google.gemma-4-e2b":{input:.04,output:.08},"amazon-bedrock/us.anthropic.claude-opus-4-7":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/global.openai.gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"amazon-bedrock/eu.amazon.nova-lite-v1:0":{input:.069,output:.276,cache_read:.01725,cache_write:.069},"amazon-bedrock/global.anthropic.claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"amazon-bedrock/deepseek.r1-v1:0":{input:1.35,output:5.4},"amazon-bedrock/openai.gpt-oss-safeguard-20b":{input:.07,output:.2},"amazon-bedrock/anthropic.claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"amazon-bedrock/global.anthropic.claude-haiku-4-5-20251001-v1:0":{input:1,output:5,cache_read:.1,cache_write:1.25},"amazon-bedrock/eu.amazon.nova-2-lite-v1:0":{input:.374,output:3.157,cache_read:.0935,cache_write:.374},"amazon-bedrock/us.amazon.nova-pro-v1:0":{input:.8,output:3.2,cache_read:.2,cache_write:.8},"amazon-bedrock/jp.anthropic.claude-opus-5-5":{input:4.4,output:22,cache_read:.22,cache_write:5.5},"amazon-bedrock/openai.gpt-5.6-luna":{input:.22,output:1.32,cache_read:.022,cache_write:.275,tiers:[{input:.44,output:1.98,cache_read:.044,cache_write:.55,tier:{type:"context",size:272e3}}],context_over_200k:{input:.44,output:1.98,cache_read:.044,cache_write:.55}},"amazon-bedrock/us.meta.llama4-maverick-17b-instruct-v1:0":{input:.24,output:.97},"amazon-bedrock/apac.amazon.nova-micro-v1:0":{input:.037,output:.148,cache_read:.00925,cache_write:.037},"amazon-bedrock/eu.anthropic.claude-sonnet-4-20250514-v1:0":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/eu.anthropic.claude-opus-4-5-20251101-v1:0":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/global.openai.gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"amazon-bedrock/qwen.qwen3-coder-30b-a3b-v1:0":{input:.15,output:.6},"amazon-bedrock/us.amazon.nova-premier-v1:0":{input:2.5,output:12.5,cache_read:.625,cache_write:2.5},"amazon-bedrock/anthropic.claude-sonnet-4-6":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/meta.llama3-1-70b-instruct-v1:0":{input:.72,output:.72},"amazon-bedrock/us.writer.palmyra-x4-v1:0":{input:2.5,output:10},"amazon-bedrock/apac.amazon.nova-pro-v1:0":{input:.84,output:3.36,cache_read:.21,cache_write:.84},"amazon-bedrock/global.anthropic.claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"amazon-bedrock/us.anthropic.claude-sonnet-5":{input:2.2,output:11,cache_read:.22,cache_write:2.75},"amazon-bedrock/amazon.nova-micro-v1:0":{input:.035,output:.14,cache_read:.00875,cache_write:.035},"amazon-bedrock/minimax.minimax-m2.5":{input:.3,output:1.2},"amazon-bedrock/xai.grok-4.3":{input:1.25,output:2.5,cache_read:.2},"amazon-bedrock/us.amazon.nova-lite-v1:0":{input:.06,output:.24,cache_read:.015,cache_write:.06},"amazon-bedrock/amazon.nova-pro-v1:0":{input:.8,output:3.2,cache_read:.2,cache_write:.8},"amazon-bedrock/qwen.qwen3-32b-v1:0":{input:.15,output:.6},"amazon-bedrock/openai.gpt-5.5":{input:5.5,output:33,cache_read:.55},"amazon-bedrock/mistral.voxtral-small-24b-2507":{input:.1,output:.3},"amazon-bedrock/global.amazon.nova-2-lite-v1:0":{input:.3,output:2.5,cache_read:.075,cache_write:.3},"amazon-bedrock/us.openai.gpt-5.6-terra":{input:2.2,output:13.2,cache_read:.22,cache_write:2.75,tiers:[{input:4.4,output:19.8,cache_read:.44,cache_write:5.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4.4,output:19.8,cache_read:.44,cache_write:5.5}},"amazon-bedrock/mistral.devstral-2-123b":{input:.4,output:2},"amazon-bedrock/us.xai.grok-4.6":{input:2.2,output:6.6,cache_read:.55},"amazon-bedrock/jp.anthropic.claude-sonnet-4-5-20250929-v1:0":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/anthropic.claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"amazon-bedrock/anthropic.claude-sonnet-4-5-20250929-v1:0":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/jp.anthropic.claude-opus-4-8":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/us.openai.gpt-5.6-luna":{input:.22,output:1.32,cache_read:.022,cache_write:.275,tiers:[{input:.44,output:1.98,cache_read:.044,cache_write:.55,tier:{type:"context",size:272e3}}],context_over_200k:{input:.44,output:1.98,cache_read:.044,cache_write:.55}},"amazon-bedrock/us.anthropic.claude-sonnet-4-5-20250929-v1:0":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/au.anthropic.claude-opus-5":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/nvidia.nemotron-nano-12b-v2":{input:.2,output:.6},"amazon-bedrock/us.amazon.nova-2-lite-v1:0":{input:.33,output:2.75,cache_read:.0825,cache_write:.33},"amazon-bedrock/us.openai.gpt-6-astra":{input:11,output:55,cache_read:1.1,cache_write:13.75,tiers:[{input:22,output:82.5,cache_read:2.2,cache_write:27.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:22,output:82.5,cache_read:2.2,cache_write:27.5}},"amazon-bedrock/openai.gpt-5.6-terra":{input:2.2,output:13.2,cache_read:.22,cache_write:2.75,tiers:[{input:4.4,output:19.8,cache_read:.44,cache_write:5.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4.4,output:19.8,cache_read:.44,cache_write:5.5}},"amazon-bedrock/anthropic.claude-opus-4-6-v1":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/us.anthropic.claude-opus-4-1-20250805-v1:0":{input:15,output:75,cache_read:1.5,cache_write:18.75},"amazon-bedrock/us.meta.llama3-1-8b-instruct-v1:0":{input:.22,output:.22},"amazon-bedrock/eu.anthropic.claude-haiku-4-5-20251001-v1:0":{input:1.1,output:5.5,cache_read:.11,cache_write:1.375},"amazon-bedrock/global.anthropic.claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/apac.anthropic.claude-sonnet-4-20250514-v1:0":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/deepseek.v3.2":{input:.62,output:1.85},"amazon-bedrock/qwen.qwen3-235b-a22b-2507-v1:0":{input:.22,output:.88},"amazon-bedrock/amazon.nova-lite-v1:0":{input:.06,output:.24,cache_read:.015,cache_write:.06},"amazon-bedrock/global.anthropic.claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/openai.gpt-oss-20b-1:0":{input:.07,output:.3},"amazon-bedrock/anthropic.claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/meta.llama3-3-70b-instruct-v1:0":{input:.72,output:.72},"amazon-bedrock/minimax.minimax-m2":{input:.3,output:1.2},"amazon-bedrock/mistral.mistral-large-3-675b-instruct":{input:.5,output:1.5},"amazon-bedrock/in.openai.gpt-5.6-luna":{input:.22,output:1.32,cache_read:.022,cache_write:.275,tiers:[{input:.44,output:1.98,cache_read:.044,cache_write:.55,tier:{type:"context",size:272e3}}],context_over_200k:{input:.44,output:1.98,cache_read:.044,cache_write:.55}},"amazon-bedrock/eu.anthropic.claude-opus-4-8":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/global.anthropic.claude-sonnet-4-5-20250929-v1:0":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/zai.glm-4.7":{input:.6,output:2.2},"amazon-bedrock/au.anthropic.claude-sonnet-4-5-20250929-v1:0":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/eu.anthropic.claude-opus-5-5":{input:4.4,output:22,cache_read:.22,cache_write:5.5},"amazon-bedrock/global.anthropic.claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/jp.anthropic.claude-sonnet-4-6":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/google.gemma-3-27b-it":{input:.23,output:.38},"amazon-bedrock/eu.anthropic.claude-opus-4-6-v1":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/us.anthropic.claude-opus-5-5":{input:4.4,output:22,cache_read:.22,cache_write:5.5},"amazon-bedrock/us.anthropic.claude-opus-5":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/us.openai.gpt-5.6-sol":{input:4.4,output:22,cache_read:.44,cache_write:5.5,tiers:[{input:8.8,output:33,cache_read:.88,cache_write:11,tier:{type:"context",size:272e3}}],context_over_200k:{input:8.8,output:33,cache_read:.88,cache_write:11}},"amazon-bedrock/us.moonshotai.kimi-k3":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/anthropic.claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"amazon-bedrock/mistral.magistral-small-2509":{input:.5,output:1.5},"amazon-bedrock/mistral.pixtral-large-2502-v1:0":{input:2,output:6},"amazon-bedrock/anthropic.claude-opus-4-5-20251101-v1:0":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/nvidia.nemotron-nano-9b-v2":{input:.06,output:.23},"amazon-bedrock/eu.amazon.nova-micro-v1:0":{input:.04,output:.16,cache_read:.01,cache_write:.04},"amazon-bedrock/zai.glm-5":{input:1,output:3.2},"amazon-bedrock/us.meta.llama3-1-70b-instruct-v1:0":{input:.72,output:.72},"amazon-bedrock/jp.anthropic.claude-haiku-4-5-20251001-v1:0":{input:1.1,output:5.5,cache_read:.11,cache_write:1.375},"amazon-bedrock/nvidia.nemotron-nano-3-30b":{input:.06,output:.24},"amazon-bedrock/mistral.ministral-3-3b-instruct":{input:.1,output:.1},"amazon-bedrock/us.openai.gpt-6-luna":{input:.11,output:.55,cache_read:.011,cache_write:.1375,tiers:[{input:.22,output:.825,cache_read:.022,cache_write:.275,tier:{type:"context",size:272e3}}],context_over_200k:{input:.22,output:.825,cache_read:.022,cache_write:.275}},"amazon-bedrock/global.openai.gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"amazon-bedrock/google.gemma-4-26b-a4b":{input:.13,output:.4},"amazon-bedrock/xai.grok-4.6":{input:2.2,output:6.6,cache_read:.55},"amazon-bedrock/global.xai.grok-4.6":{input:2,output:6,cache_read:.5},"amazon-bedrock/au.anthropic.claude-opus-4-6-v1":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/qwen.qwen3-vl-235b-a22b":{input:.53,output:2.66},"amazon-bedrock/anthropic.claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"amazon-bedrock/jp.anthropic.claude-sonnet-5":{input:2.2,output:11,cache_read:.22,cache_write:2.75},"amazon-bedrock/qwen.qwen3-coder-next":{input:.5,output:1.2},"amazon-bedrock/anthropic.claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/au.anthropic.claude-sonnet-5":{input:2.2,output:11,cache_read:.22,cache_write:2.75},"amazon-bedrock/meta.llama4-scout-17b-instruct-v1:0":{input:.17,output:.66},"amazon-bedrock/openai.gpt-oss-safeguard-120b":{input:.15,output:.6},"amazon-bedrock/us.meta.llama3-3-70b-instruct-v1:0":{input:.72,output:.72},"amazon-bedrock/global.openai.gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"amazon-bedrock/au.anthropic.claude-sonnet-4-6":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/openai.gpt-oss-120b":{input:.15,output:.6},"amazon-bedrock/deepseek.v3-v1:0":{input:.58,output:1.68},"amazon-bedrock/moonshotai.kimi-k2.5":{input:.6,output:3},"amazon-bedrock/eu.anthropic.claude-sonnet-4-6":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/us-gov.openai.gpt-oss-120b-1:0":{input:.18,output:.72},"amazon-bedrock/us.anthropic.claude-fable-5":{input:11,output:55,cache_read:1.1,cache_write:13.75},"amazon-bedrock/openai.gpt-6-sol":{input:2.2,output:11,cache_read:.22,cache_write:2.75,tiers:[{input:4.4,output:16.5,cache_read:.44,cache_write:5.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4.4,output:16.5,cache_read:.44,cache_write:5.5}},"amazon-bedrock/us.deepseek.r1-v1:0":{input:1.35,output:5.4},"amazon-bedrock/eu.anthropic.claude-opus-5":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/ca.amazon.nova-lite-v1:0":{input:.064,output:.256,cache_read:.016,cache_write:.064},"amazon-bedrock/us.openai.gpt-6-sol":{input:2.2,output:11,cache_read:.22,cache_write:2.75,tiers:[{input:4.4,output:16.5,cache_read:.44,cache_write:5.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4.4,output:16.5,cache_read:.44,cache_write:5.5}},"amazon-bedrock/au.anthropic.claude-opus-4-7":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/us.meta.llama4-scout-17b-instruct-v1:0":{input:.17,output:.66},"amazon-bedrock/global.anthropic.claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"amazon-bedrock/global.anthropic.claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"amazon-bedrock/apac.amazon.nova-lite-v1:0":{input:.063,output:.252,cache_read:.01575,cache_write:.063},"amazon-bedrock/us.anthropic.claude-opus-4-8":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/nvidia.nemotron-super-3-120b":{input:.15,output:.65},"amazon-bedrock/global.openai.gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"amazon-bedrock/us-gov.openai.gpt-oss-20b-1:0":{input:.084,output:.36},"amazon-bedrock/us.anthropic.claude-opus-4-6-v1":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/meta.llama3-1-8b-instruct-v1:0":{input:.22,output:.22},"amazon-bedrock/writer.palmyra-x5-v1:0":{input:.6,output:6},"amazon-bedrock/anthropic.claude-opus-4-1-20250805-v1:0":{input:15,output:75,cache_read:1.5,cache_write:18.75},"amazon-bedrock/us.anthropic.claude-sonnet-4-6":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/global.anthropic.claude-opus-4-6-v1":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/eu.anthropic.claude-sonnet-4-5-20250929-v1:0":{input:3.3,output:16.5,cache_read:.33,cache_write:4.125},"amazon-bedrock/jp.anthropic.claude-opus-4-7":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/au.anthropic.claude-opus-5-5":{input:4.4,output:22,cache_read:.22,cache_write:5.5},"amazon-bedrock/openai.gpt-6-luna":{input:.11,output:.55,cache_read:.011,cache_write:.1375,tiers:[{input:.22,output:.825,cache_read:.022,cache_write:.275,tier:{type:"context",size:272e3}}],context_over_200k:{input:.22,output:.825,cache_read:.022,cache_write:.275}},"amazon-bedrock/writer.palmyra-x4-v1:0":{input:2.5,output:10},"amazon-bedrock/global.anthropic.claude-opus-4-5-20251101-v1:0":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/anthropic.claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/anthropic.claude-haiku-4-5-20251001-v1:0":{input:1,output:5,cache_read:.1,cache_write:1.25},"amazon-bedrock/eu.anthropic.claude-sonnet-5":{input:2.2,output:11,cache_read:.22,cache_write:2.75},"amazon-bedrock/zai.glm-4.7-flash":{input:.07,output:.4},"amazon-bedrock/moonshot.kimi-k2-thinking":{input:.6,output:2.5},"amazon-bedrock/eu.amazon.nova-pro-v1:0":{input:.92,output:3.68,cache_read:.23,cache_write:.92},"amazon-bedrock/global.openai.gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"amazon-bedrock/openai.gpt-6-astra":{input:11,output:55,cache_read:1.1,cache_write:13.75,tiers:[{input:22,output:82.5,cache_read:2.2,cache_write:27.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:22,output:82.5,cache_read:2.2,cache_write:27.5}},"amazon-bedrock/us.anthropic.claude-haiku-4-5-20251001-v1:0":{input:1.1,output:5.5,cache_read:.11,cache_write:1.375},"amazon-bedrock/meta.llama4-maverick-17b-instruct-v1:0":{input:.24,output:.97},"amazon-bedrock/qwen.qwen3-next-80b-a3b":{input:.15,output:1.2},"amazon-bedrock/eu.mistral.pixtral-large-2502-v1:0":{input:2,output:6},"amazon-bedrock/au.anthropic.claude-opus-4-8":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/us.anthropic.claude-fable-5-1":{input:11,output:55,cache_read:.275,cache_write:13.75},"amazon-bedrock/global.moonshotai.kimi-k3":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/in.openai.gpt-5.6-terra":{input:2.2,output:13.2,cache_read:.22,cache_write:2.75,tiers:[{input:4.4,output:19.8,cache_read:.44,cache_write:5.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4.4,output:19.8,cache_read:.44,cache_write:5.5}},"amazon-bedrock/openai.gpt-oss-20b":{input:.07,output:.3},"amazon-bedrock/mistral.ministral-3-14b-instruct":{input:.2,output:.2},"amazon-bedrock/au.anthropic.claude-haiku-4-5-20251001-v1:0":{input:1.1,output:5.5,cache_read:.11,cache_write:1.375},"amazon-bedrock/openai.gpt-5.6-sol":{input:4.4,output:22,cache_read:.44,cache_write:5.5,tiers:[{input:8.8,output:33,cache_read:.88,cache_write:11,tier:{type:"context",size:272e3}}],context_over_200k:{input:8.8,output:33,cache_read:.88,cache_write:11}},"amazon-bedrock/minimax.minimax-m2.1":{input:.3,output:1.2},"amazon-bedrock/us.anthropic.claude-opus-4-5-20251101-v1:0":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/eu.anthropic.claude-opus-4-7":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/jp.amazon.nova-2-lite-v1:0":{input:.396,output:3.311,cache_read:.099,cache_write:.396},"amazon-bedrock/us.mistral.pixtral-large-2502-v1:0":{input:2,output:6},"amazon-bedrock/jp.anthropic.claude-opus-5":{input:5.5,output:27.5,cache_read:.55,cache_write:6.875},"amazon-bedrock/global.anthropic.claude-sonnet-4-20250514-v1:0":{input:3,output:15,cache_read:.3,cache_write:3.75},"amazon-bedrock/global.anthropic.claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"amazon-bedrock/openai.gpt-5.4":{input:2.75,output:16.5,cache_read:.275},"amazon-bedrock/mistral.voxtral-mini-3b-2507":{input:.04,output:.04},"amazon-bedrock/openai.gpt-oss-120b-1:0":{input:.15,output:.6},"amazon-bedrock/amazon.nova-2-lite-v1:0":{input:.33,output:2.75,cache_read:.0825,cache_write:.33},"amazon-bedrock/us.amazon.nova-micro-v1:0":{input:.035,output:.14,cache_read:.00875,cache_write:.035},"amazon-bedrock/mistral.ministral-3-8b-instruct":{input:.15,output:.15},"synthetic/hf:moonshotai/Kimi-K3":{input:3,output:15,cache_read:.45},"synthetic/hf:moonshotai/Kimi-K2.7-Code":{input:.95,output:4,cache_read:.95},"synthetic/hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4":{input:.3,output:1,cache_read:.3},"synthetic/hf:zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:1.4},"synthetic/hf:zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.04},"synthetic/hf:zai-org/GLM-4.7-Flash":{input:.1,output:.5,cache_read:.1},"synthetic/hf:deepseek-ai/DeepSeek-V4.1-Flash":{input:.6,output:1.2,cache_read:.03},"synthetic/hf:Qwen/Qwen3.6-27B":{input:.45,output:3.6,cache_read:.45},"synthetic/hf:openai/gpt-oss-120b":{input:.1,output:.1,cache_read:.1},"synthetic/hf:MiniMaxAI/MiniMax-M3":{input:.6,output:1.2,cache_read:.6},"llmgateway/grok-4-1-fast-reasoning":{input:.2,output:.5,cache_read:.05},"llmgateway/glm-4.6v":{input:.3,output:.9,cache_read:.05},"llmgateway/qwen-flash":{input:.05,output:.4,cache_read:.01,cache_write:.0625},"llmgateway/gpt-5.4":{input:2.5,output:15,cache_read:.25},"llmgateway/glm-4.5":{input:.6,output:2.2,cache_read:.11,cache_write:0},"llmgateway/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"llmgateway/gpt-5.4-pro":{input:30,output:180},"llmgateway/mimo-v2.6-pro":{input:.435,output:.87,cache_read:.0036},"llmgateway/gemma-4-31b-it":{input:.1,output:.25,cache_read:.01},"llmgateway/grok-4-5":{input:2,output:6,cache_read:.3},"llmgateway/gpt-3.5-turbo":{input:.5,output:1.5,cache_read:0},"llmgateway/grok-4-1-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"llmgateway/qwen3-vl-235b-a22b-instruct":{input:.2,output:.88,cache_read:.11},"llmgateway/seed-1-6-flash-250715":{input:.07,output:.3,cache_read:.015},"llmgateway/qwen3.7-max":{input:1.25,output:3.75,cache_read:.25,cache_write:3.125},"llmgateway/muse-spark-1.3":{input:1.25,output:4.25,cache_read:.15},"llmgateway/Qwen3.8-27B":{input:.08,output:.35,cache_read:.05},"llmgateway/gpt-4o-transcribe":{input:2.5,output:10},"llmgateway/mimo-v2.5":{input:.14,output:.28,cache_read:.0028,tiers:[{input:.8,output:4,cache_read:.16,tier:{type:"context",size:256e3}}],context_over_200k:{input:.8,output:4,cache_read:.16}},"llmgateway/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"llmgateway/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"llmgateway/mistral-large-latest":{input:4,output:12},"llmgateway/nemotron-3.5-lightning":{input:.08,output:.2},"llmgateway/qwen3-vl-235b-a22b-thinking":{input:.98,output:3.95},"llmgateway/qwen3.8-2.4t-a95b":{input:2,output:6,cache_read:.25},"llmgateway/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"llmgateway/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"llmgateway/qwen-coder-plus":{input:.502,output:1.004},"llmgateway/glm-5v-turbo":{input:1.2,output:4,cache_read:.24},"llmgateway/gpt-4o":{input:2.5,output:10,cache_read:1.25},"llmgateway/qwen3-vl-plus":{input:.2,output:1.6,reasoning:4.8,cache_read:.04,cache_write:.25},"llmgateway/glm-5.3-flash":{input:.088,output:.25,cache_read:.025},"llmgateway/fugu-max":{input:2,output:6,cache_read:.25},"llmgateway/ministral-8b-2512":{input:.15,output:.15},"llmgateway/glm-4.6":{input:.55,output:2.2,cache_read:.11,cache_write:0},"llmgateway/glm-5.2-fast":{input:2.2,output:6.5,cache_read:.45},"llmgateway/muse-glimmer-30b":{input:.3,output:1.2,cache_read:.04},"llmgateway/grok-build-0-1":{input:1,output:2,cache_read:.2,tiers:[{input:2,output:4,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4}},"llmgateway/qwen3-235b-a22b-instruct-2507":{input:.09,output:.58},"llmgateway/qwen-max":{input:1.6,output:6.4},"llmgateway/qwen3-next-80b-a3b-thinking":{input:.15,output:1.2},"llmgateway/qwen3.8-max":{input:2,output:6,cache_read:.25,cache_write:2.5},"llmgateway/kimi-k3":{input:3,output:15,cache_read:.3},"llmgateway/qwen3-coder-next":{input:.108,output:.675,cache_read:.06},"llmgateway/glm-4.5-x":{input:2.2,output:8.9,cache_read:.45},"llmgateway/grok-4":{input:3,output:15,cache_read:.75},"llmgateway/gpt-5-mini":{input:.25,output:2,cache_read:.025},"llmgateway/llama-4-maverick-17b-instruct":{input:.27,output:.85},"llmgateway/gpt-5.2-pro":{input:21,output:168},"llmgateway/o4-mini":{input:1.1,output:4.4,cache_read:.275},"llmgateway/o3-mini":{input:1.1,output:4.4,cache_read:.55},"llmgateway/glm-5":{input:.72,output:2.3,cache_read:.144,cache_write:0},"llmgateway/fugu-ultra-v2.0":{input:5,output:30,cache_read:.5},"llmgateway/gpt-4":{input:30,output:60},"llmgateway/deepseek-v4.1-flash":{input:.15,output:.6,cache_read:.003},"llmgateway/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"llmgateway/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"llmgateway/minimax-m2.5":{input:.3,output:1.2,cache_read:.03,cache_write:.375},"llmgateway/kimi-k3-fast":{input:4.5,output:22.5,cache_read:.45},"llmgateway/qwen3-32b":{input:.36,output:.87,reasoning:8.4},"llmgateway/muse-spark-1.1":{input:1.25,output:4.25,cache_read:.15},"llmgateway/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"llmgateway/qwen-plus":{input:.4,output:1.2,reasoning:4,cache_read:.08,cache_write:.5},"llmgateway/kimi-k2.7-code-highspeed":{input:1.9,output:8,cache_read:.38},"llmgateway/qwen3.7-flash":{input:.03,output:.13,cache_read:.006,cache_write:.0375},"llmgateway/kimi-k2.6":{input:.6,output:3.05,cache_read:.13},"llmgateway/minimax-m2.1-lightning":{input:.12,output:.48},"llmgateway/claude-sonnet-4-5":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway/qwen3-max":{input:.845,output:3.38,cache_read:.6,cache_write:3.75},"llmgateway/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"llmgateway/glm-4.5-airx":{input:1.1,output:4.5,cache_read:.22},"llmgateway/glm-4.5v":{input:.6,output:1.8,cache_read:.11},"llmgateway/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"llmgateway/devstral-2512":{input:.4,output:2},"llmgateway/llama-4-scout-17b-instruct":{input:.18,output:.59},"llmgateway/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway/qwen3-235b-a22b-fp8":{input:.2,output:.8},"llmgateway/o1":{input:15,output:60,cache_read:7.5},"llmgateway/glm-4-32b-0414-128k":{input:.1,output:.1},"llmgateway/qwen3-coder-480b-a35b-instruct":{input:.38,output:1.55},"llmgateway/qwen3-coder-30b-a3b-instruct":{input:.07,output:.27},"llmgateway/sonar-pro":{input:3,output:15},"llmgateway/ling-3.0-flash":{input:.06,output:.18,cache_read:.012},"llmgateway/kimi-k2-thinking":{input:.6,output:2.5,cache_read:.06},"llmgateway/claude-opus-4-1-20250805":{input:15,output:75,cache_read:1.5,cache_write:18.75},"llmgateway/gpt-5-pro":{input:15,output:120},"llmgateway/qwen3-vl-30b-a3b-instruct":{input:.15,output:.6},"llmgateway/seed-1-6-250915":{input:.25,output:2,cache_read:.05},"llmgateway/gemma-4-26b-a4b-it":{input:.07,output:.34},"llmgateway/claude-opus-4-5-20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.08333},"llmgateway/llama-3-70b-instruct":{input:.51,output:.74},"llmgateway/qwen3-vl-flash":{input:.05,output:.4,cache_read:.01},"llmgateway/qwen3-235b-a22b-thinking-2507":{input:.3,output:3},"llmgateway/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway/minimax-text-01":{input:.2,output:1.1},"llmgateway/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"llmgateway/glm-4.6v-flashx":{input:.04,output:.4,cache_read:.004},"llmgateway/grok-4-20-beta-0309-non-reasoning":{input:2,output:6,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway/kimi-k2.5":{input:.405,output:1.98,cache_read:.225},"llmgateway/gpt-5.1":{input:1.25,output:10,cache_read:.125},"llmgateway/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway/llama-3.3-70b-instruct":{input:.135,output:.4},"llmgateway/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"llmgateway/qwen3.6-35b-a3b":{input:.248,output:1.485},"llmgateway/qwen3-next-80b-a3b-instruct":{input:.15,output:1.2},"llmgateway/fugu-ultra":{input:5,output:30,cache_read:.5},"llmgateway/gpt-oss-20b":{input:.04,output:.19,cache_read:.01},"llmgateway/minimax-m2.7":{input:.08,output:.32,cache_read:.017,cache_write:.375},"llmgateway/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:.08333},"llmgateway/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"llmgateway/qwen3.6-flash":{input:.25,output:1.5,cache_read:.05,cache_write:.3125},"llmgateway/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03},"llmgateway/qwen3-coder-flash":{input:.3,output:1.5,cache_read:.06,cache_write:.375},"llmgateway/nemotron-3-ultra-550b":{input:.5,output:2.2,cache_read:.1},"llmgateway/llama-3.2-11b-instruct":{input:.07,output:.33},"llmgateway/inkling-small":{input:.45,output:1.2,cache_read:.1},"llmgateway/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"llmgateway/mimo-v2.5-pro":{input:.435,output:.87,cache_read:.0036,tiers:[{input:2,output:6,cache_read:.4,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.4}},"llmgateway/qwen3-coder-plus":{input:1,output:5,cache_read:.2,cache_write:1.25},"llmgateway/glm-4.7-flash":{input:.06,output:.4,cache_read:.01,cache_write:0},"llmgateway/qwen3.5-9b":{input:.1,output:.15},"llmgateway/inkling":{input:.95,output:4.05,cache_read:.16},"llmgateway/muse-spark-1.2":{input:1.25,output:4.25,cache_read:.15},"llmgateway/mimo-v2.6-flash":{input:.14,output:.28,cache_read:.0028},"llmgateway/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"llmgateway/seed-1-8-251228":{input:.25,output:2,cache_read:.05},"llmgateway/glm-4.7":{input:.38,output:1.98,cache_read:.19,cache_write:0},"llmgateway/minimax-m3":{input:.3,output:1.2,cache_read:.06},"llmgateway/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25},"llmgateway/qwen3.8-flash":{input:.15,output:.47,cache_read:.016,cache_write:.2},"llmgateway/gpt-5.2":{input:1.75,output:14,cache_read:.175},"llmgateway/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway/seed-1-6-250615":{input:.25,output:2,cache_read:.05},"llmgateway/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"llmgateway/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway/qwen35-397b-a17b":{input:.6,output:3.6},"llmgateway/gpt-4.1":{input:2,output:8,cache_read:.5},"llmgateway/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway/qwen3.6-max-preview":{input:1.3,output:7.8,cache_read:.13,cache_write:1.625},"llmgateway/claude-opus-4-6":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway/glm-5.2":{input:.8,output:2.55,cache_read:.16,cache_write:0},"llmgateway/ernie-4.5-vl-424b-a47b":{input:.42,output:1.25},"llmgateway/hy3":{input:.132,output:.528,cache_read:.033},"llmgateway/kimi-k2":{input:.57,output:2.3,cache_read:.5},"llmgateway/qwen-omni-turbo":{input:.2,output:.8},"llmgateway/hy-mt2-plus":{input:.074,output:.295},"llmgateway/grok-4-3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway/glm-5.1":{input:.931,output:2.93,cache_read:.173,cache_write:0},"llmgateway/grok-4-20-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05},"llmgateway/grok-4-20-beta-0309-reasoning":{input:2,output:6,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway/minimax-m2.7-highspeed":{input:.6,output:2.4,cache_read:.06,cache_write:.375},"llmgateway/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"llmgateway/glm-4.7-flashx":{input:.07,output:.4,cache_read:.01,cache_write:0},"llmgateway/muse-spark-1.2-contributor":{input:.1,output:.2,cache_read:.002},"llmgateway/sonar":{input:1,output:1},"llmgateway/mistral-large-2512":{input:.5,output:1.5},"llmgateway/grok-4-6":{input:2,output:6,cache_read:.5},"llmgateway/gemini-pro-latest":{input:2,output:12,cache_read:.2},"llmgateway/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"llmgateway/minimax-m2.5-highspeed":{input:.6,output:2.4,cache_read:.03,cache_write:.375},"llmgateway/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.08333},"llmgateway/ministral-14b-2512":{input:.2,output:.2},"llmgateway/glm-5-turbo":{input:1.2,output:4,cache_read:.24},"llmgateway/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125},"llmgateway/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"llmgateway/step-3.7-flash":{input:.2,output:1.15,cache_read:.04},"llmgateway/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01},"llmgateway/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"llmgateway/gpt-4o-mini-transcribe":{input:1.25,output:5},"llmgateway/sonar-reasoning-pro":{input:2,output:8},"llmgateway/llama-3.2-3b-instruct":{input:.03,output:.05},"llmgateway/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"llmgateway/mistral-small-2506":{input:.1,output:.3},"llmgateway/grok-4-20-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"llmgateway/grok-4-7":{input:2,output:6,cache_read:.5},"llmgateway/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5},"llmgateway/deepseek-v3.2":{input:.26,output:.38,cache_read:.13},"llmgateway/gpt-4-turbo":{input:10,output:30},"llmgateway/hy4-preview":{input:.834,output:2.501,cache_read:.042},"llmgateway/muse-spark-1.3-contributor":{input:.1,output:.2,cache_read:.002},"llmgateway/glm-4.5-air":{input:.13,output:.85,cache_read:.025,cache_write:0},"llmgateway/qwen-plus-latest":{input:.4,output:1.2,cache_read:.08,cache_write:.5},"llmgateway/gpt-oss-120b":{input:.032,output:.14,cache_read:.032},"llmgateway/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.025},"llmgateway/ministral-3b-2512":{input:.1,output:.1},"llmgateway/o3":{input:2,output:8,cache_read:.5},"llmgateway/glm-5.3":{input:1.2,output:4,cache_read:.2},"llmgateway/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"llmgateway/kimi-k2.7-code":{input:.95,output:4,cache_read:.19},"llmgateway/gpt-5":{input:1.25,output:10,cache_read:.125},"llmgateway/qwen3.7-plus":{input:.4,output:1.6,cache_read:.08,cache_write:.5},"llmgateway/minimax-m2.1":{input:.27,output:1.1},"llmgateway/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5},"llmgateway/llama-3.1-70b-instruct":{input:.72,output:.72},"llmgateway/minimax-m2":{input:.2,output:1,cache_read:.03},"llmgateway/codestral-2508":{input:.3,output:.9},"llmgateway/deepseek-v4-flash":{input:.05,output:.1,cache_read:.01},"llmgateway/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5},"llmgateway/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,cache_write:.08333},"sap-ai-core/anthropic--claude-4-opus":{input:15,output:75,cache_read:1.5,cache_write:18.75},"sap-ai-core/gpt-5.4":{input:2.5,output:15,cache_read:.25},"sap-ai-core/nvidia--llama-3.2-nv-embedqa-1b":{input:.07,output:0},"sap-ai-core/text-embedding-3-small":{input:.02,output:0},"sap-ai-core/sap-abap-1":{input:.48,output:1.7},"sap-ai-core/anthropic--claude-4.8-opus":{input:5,output:25,cache_read:.5,cache_write:6.25},"sap-ai-core/gpt-5-mini":{input:.25,output:2,cache_read:.025},"sap-ai-core/anthropic--claude-3-haiku":{input:.25,output:1.25,cache_read:.03,cache_write:.3},"sap-ai-core/gpt-4.1-nano":{input:.08,output:.26},"sap-ai-core/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"sap-ai-core/anthropic--claude-4.5-haiku":{input:1,output:5,cache_read:.1,cache_write:1.25},"sap-ai-core/anthropic--claude-4.7-opus":{input:5,output:25,cache_read:.5,cache_write:6.25},"sap-ai-core/amazon--nova-pro":{input:.56,output:2.13},"sap-ai-core/amazon--nova-lite":{input:.3,output:2.37},"sap-ai-core/sonar-pro":{input:3,output:15},"sap-ai-core/anthropic--claude-3.5-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"sap-ai-core/text-embedding-3-large":{input:.09,output:0},"sap-ai-core/amazon--nova-micro":{input:.03,output:.1},"sap-ai-core/anthropic--claude-4.5-opus":{input:5,output:25,cache_read:.5,cache_write:6.25},"sap-ai-core/anthropic--claude-4-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"sap-ai-core/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"sap-ai-core/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125},"sap-ai-core/anthropic--claude-3-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"sap-ai-core/sonar-deep-research":{input:2,output:8,reasoning:3},"sap-ai-core/mistralai--mistral-small":{input:.07,output:.28},"sap-ai-core/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"sap-ai-core/anthropic--claude-3.7-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"sap-ai-core/gpt-5.6-luna":{input:1,output:6,cache_read:.1,tiers:[{input:2,output:9,cache_read:.2,tier:{type:"context",size:272e3}}],context_over_200k:{input:2,output:9,cache_read:.2}},"sap-ai-core/gpt-5.2":{input:1.25,output:9.44,cache_read:.12},"sap-ai-core/gpt-5.5":{input:5,output:30,cache_read:.5},"sap-ai-core/anthropic--claude-4.6-opus":{input:5,output:25,cache_read:.5,cache_write:6.25},"sap-ai-core/mistralai--mistral-medium-instruct":{input:.36,output:1.22},"sap-ai-core/gpt-4.1":{input:2,output:8,cache_read:.32},"sap-ai-core/anthropic--claude-3-opus":{input:15,output:75,cache_read:1.5,cache_write:18.75},"sap-ai-core/anthropic--claude-4.6-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"sap-ai-core/sonar":{input:1,output:1},"sap-ai-core/amazon--titan-embed-text":{input:.14,output:0},"sap-ai-core/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"sap-ai-core/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,input_audio:.3},"sap-ai-core/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"sap-ai-core/gpt-5":{input:1.25,output:10,cache_read:.125},"sap-ai-core/anthropic--claude-4.5-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"sap-ai-core/gpt-5.6-sol":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"sap-ai-core/cohere--command-a-reasoning":{input:.63,output:5.05},"sap-ai-core/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"vivgrid/viv-fast":{input:.13,output:.4,cache_read:.05},"vivgrid/gpt-5.4":{input:2.5,output:15,cache_read:.25},"vivgrid/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"vivgrid/gpt-5.2-codex":{input:1.75,output:14,cache_read:.175},"vivgrid/gpt-5.1-codex":{input:1.25,output:10,cache_read:.125},"vivgrid/glm-5.3-flash":{input:.15,output:.5,cache_read:.04},"vivgrid/kimi-k3":{input:3,output:15,cache_read:.3},"vivgrid/gpt-5-mini":{input:.25,output:2,cache_read:.03},"vivgrid/deepseek-v4.1-flash":{input:.31,output:1.23,cache_read:.01},"vivgrid/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"vivgrid/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"vivgrid/claude-fable-5-1":{input:10,output:50,cache_read:.5,cache_write:12.5},"vivgrid/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"vivgrid/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"vivgrid/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"vivgrid/claude-fable-5":{input:10,output:50,cache_read:1.25,cache_write:12.5},"vivgrid/deepseek-v4-pro-0813":{input:1.35,output:3,reasoning:3,cache_read:.05},"vivgrid/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"vivgrid/gpt-5.6-luna":{input:1,output:6,cache_read:.1,cache_write:1.25},"vivgrid/gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"vivgrid/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"vivgrid/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"vivgrid/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075},"vivgrid/glm-5.2":{input:1.2,output:4.2,cache_read:.3},"vivgrid/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.15},"vivgrid/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"vivgrid/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"vivgrid/gpt-5.6-terra":{input:2.5,output:15,cache_read:.25,cache_write:3.125},"vivgrid/deepseek-v3.2":{input:.28,output:.42},"vivgrid/glm-5.3":{input:1.2,output:4.2,cache_read:.26},"vivgrid/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,cache_read:.025,cache_write:1},"vivgrid/gpt-5.6-sol":{input:5,output:30,cache_read:.5,cache_write:6.25},"vivgrid/deepseek-v4-flash":{input:.15,output:.3,reasoning:.3,cache_read:.03},"vivgrid/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"klokintegration/Kloker-Integration-Developer":{input:.23,output:1.16},"klokintegration/Kloker":{input:.23,output:1.16},"klokintegration/Kloker-Integration-Architect":{input:.23,output:1.16},"google-vertex/claude-opus-4-8@default":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"google-vertex/gemini-2.5-flash-tts":{input:.5,output:10},"google-vertex/gemini-flash-latest":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"google-vertex/claude-sonnet-4-5@20250929":{input:3,output:15,cache_read:.3,cache_write:3.75},"google-vertex/gemini-2.5-flash-image":{input:.3,output:30},"google-vertex/claude-opus-4-6@default":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"google-vertex/claude-opus-4@20250514":{input:15,output:75,cache_read:1.5,cache_write:18.75},"google-vertex/gemini-flash-lite-latest":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"google-vertex/claude-opus-5-5@default":{input:4,output:20,cache_read:.2,cache_write:5},"google-vertex/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google-vertex/claude-opus-5@default":{input:5,output:25,cache_read:.5,cache_write:6.25},"google-vertex/claude-sonnet-4-6@default":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"google-vertex/claude-haiku-4-5@20251001":{input:1,output:5,cache_read:.1,cache_write:1.25},"google-vertex/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03},"google-vertex/gemini-3.1-flash-image":{input:.5,output:60,cache_read:.05},"google-vertex/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"google-vertex/claude-opus-4-1@20250805":{input:15,output:75,cache_read:1.5,cache_write:18.75},"google-vertex/claude-opus-4-5@20251101":{input:5,output:25,cache_read:.5,cache_write:6.25},"google-vertex/claude-opus-4-7@default":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"google-vertex/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,input_audio:1.5},"google-vertex/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,tiers:[{input:2.5,output:15,cache_read:.25,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25}},"google-vertex/gemini-3-pro-image":{input:2,output:120,cache_read:.2},"google-vertex/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,input_audio:1},"google-vertex/claude-fable-5-1@default":{input:10,output:50,cache_read:.25,cache_write:12.5},"google-vertex/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google-vertex/gemini-3.1-pro-preview-customtools":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4}},"google-vertex/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,input_audio:1},"google-vertex/claude-fable-5@default":{input:10,output:50,cache_read:1,cache_write:12.5},"google-vertex/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,input_audio:.75},"google-vertex/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,input_audio:.3},"google-vertex/gemini-2.5-pro-tts":{input:1,output:20},"google-vertex/gemini-embedding-001":{input:.15,output:0},"google-vertex/claude-sonnet-4@20250514":{input:3,output:15,cache_read:.3,cache_write:3.75},"google-vertex/gemini-3.1-flash-lite-preview":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"google-vertex/claude-sonnet-5@default":{input:2,output:10,cache_read:.2,cache_write:2.5},"google-vertex/gemini-3.1-flash-lite":{input:.25,output:1.5,cache_read:.025,input_audio:.5},"google-vertex/meta/llama-4-maverick-17b-128e-instruct-maas":{input:.35,output:1.15},"google-vertex/meta/llama-3.3-70b-instruct-maas":{input:.72,output:.72},"google-vertex/xai/grok-4.20-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"google-vertex/xai/grok-4.20-non-reasoning":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"google-vertex/xai/grok-4.1-fast-reasoning":{input:.2,output:.5,cache_read:.05},"google-vertex/xai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,tiers:[{input:2.5,output:5,cache_read:.4,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4}},"google-vertex/xai/grok-4.1-fast-non-reasoning":{input:.2,output:.5,cache_read:.05},"google-vertex/xai/grok-4.6":{input:2,output:6,cache_read:.5,tiers:[{input:4,output:12,cache_read:1,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1}},"google-vertex/deepseek-ai/deepseek-v3.1-maas":{input:.6,output:1.7,cache_read:.06},"google-vertex/deepseek-ai/deepseek-v3.2-maas":{input:.56,output:1.68,cache_read:.056},"google-vertex/moonshotai/kimi-k2-thinking-maas":{input:.6,output:2.5,cache_read:.06},"google-vertex/zai-org/glm-5-maas":{input:1,output:3.2,cache_read:.1},"google-vertex/zai-org/glm-4.7-maas":{input:.6,output:2.2,cache_read:.06},"google-vertex/zai-org/glm-5.2-maas":{input:1.4,output:4.4,cache_read:.14},"google-vertex/qwen/qwen3-235b-a22b-instruct-2507-maas":{input:.22,output:.88},"google-vertex/openai/gpt-oss-20b-maas":{input:.07,output:.25,cache_read:.007},"google-vertex/openai/gpt-oss-120b-maas":{input:.09,output:.36},"evroc/google/gemma-4-26B-A4B-it":{input:.144,output:.575},"evroc/intfloat/multilingual-e5-large-instruct":{input:.114,output:.114},"evroc/Qwen/Qwen3.8-27B":{input:.87,output:3.5},"evroc/Qwen/Qwen3-Reranker-4B":{input:.0575,output:0},"evroc/Qwen/Qwen3.6-35B-A3B":{input:.345,output:1.38},"evroc/Qwen/Qwen3-Embedding-8B":{input:.115,output:.115},"evroc/mistralai/Mistral-Medium-3.5-128B":{input:1.725,output:6.9},"evroc/mistralai/Voxtral-Small-24B-2507":{input:.0023,output:.0023,output_audio:2.3},"evroc/moonshotai/Kimi-K2.6":{input:1.4375,output:5.75},"evroc/zai-org/GLM-5.2":{input:1.4375,output:5.75},"evroc/nvidia/Llama-3.3-70B-Instruct-FP8":{input:1.15,output:1.15},"evroc/KBLab/kb-whisper-large":{input:.0023,output:.0023,output_audio:2.3},"evroc/evroc/roc":{input:2.875,output:11.516},"evroc/openai/whisper-large-v3":{input:.0023,output:.0023,output_audio:2.3},"evroc/openai/whisper-large-v3-turbo":{input:.0023,output:.0023,output_audio:2.3},"evroc/openai/gpt-oss-120b":{input:.23,output:.92},"tokengo/deepseek/deepseek-v3.1":{input:.19,output:.71,cache_read:.06},"tokengo/deepseek/deepseek-v4-pro":{input:.435,output:.87},"tokengo/deepseek/deepseek-v3.2":{input:.2174,output:.326,cache_read:.06},"tokengo/deepseek/deepseek-v4-flash":{input:.098,output:.196,cache_read:.028},"tokengo/z-ai/glm-5.3-flash":{input:.075,output:.025,cache_read:.015},"tokengo/z-ai/glm-5":{input:.89,output:3.2647,cache_read:.2226},"tokengo/z-ai/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"tokengo/z-ai/glm-5.1":{input:1.4,output:4.4,cache_read:.26},"tokengo/z-ai/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"tokengo/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"tokengo/moonshotai/kimi-k2.6":{input:.95,output:4,cache_read:.16},"tokengo/minimax/minimax-m2.5":{input:.3,output:1.2,cache_read:.03},"tokengo/qwen/qwen3.5-397b-a17b":{input:.4,output:2.65,cache_read:.2},"submodel/Qwen/Qwen3-235B-A22B-Thinking-2507":{input:.2,output:.6},"submodel/Qwen/Qwen3-235B-A22B-Instruct-2507":{input:.2,output:.3},"submodel/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{input:.2,output:.8},"submodel/deepseek-ai/DeepSeek-V3.1":{input:.2,output:.8},"submodel/deepseek-ai/DeepSeek-R1-0528":{input:.5,output:2.15},"submodel/deepseek-ai/DeepSeek-V3-0324":{input:.2,output:.8},"submodel/zai-org/GLM-4.5-FP8":{input:.2,output:.8},"submodel/zai-org/GLM-4.5-Air":{input:.1,output:.5},"submodel/openai/gpt-oss-120b":{input:.1,output:.5},"kosmik/qwen/qwen3.8-27b":{input:.35,output:2.2,cache_read:.09},"tencent-token-plan/hy4-preview":{input:.834,output:2.501,cache_read:.042},"togetherai/meta-llama/Llama-3.3-70B-Instruct-Turbo":{input:1.04,output:1.04},"togetherai/meta-llama/Meta-Llama-3-8B-Instruct-Lite":{input:.14,output:.14},"togetherai/pearl-ai/gemma-4-31b-it":{input:.28,output:.86},"togetherai/deepcogito/cogito-v2-1-671b":{input:1.25,output:1.25},"togetherai/thinkingmachines/Inkling":{input:1,output:4.05,cache_read:.17},"togetherai/essentialai/Rnj-1-Instruct":{input:.15,output:.15},"togetherai/google/gemma-3n-E4B-it":{input:.06,output:.12},"togetherai/google/gemma-4-31B-it":{input:.39,output:.97},"togetherai/Qwen/Qwen3.7-Max":{input:1.25,output:3.75,cache_read:.125},"togetherai/Qwen/Qwen2.5-7B-Instruct-Turbo":{input:.3,output:.3},"togetherai/Qwen/Qwen3-Coder-Next-FP8":{input:.5,output:1.2},"togetherai/Qwen/Qwen3-235B-A22B-Instruct-2507-tput":{input:.2,output:.6},"togetherai/Qwen/Qwen3.5-9B":{input:.17,output:.25},"togetherai/Qwen/Qwen3.5-397B-A17B":{input:.6,output:3.6,cache_read:.35},"togetherai/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{input:2,output:2},"togetherai/Qwen/Qwen3.6-Plus":{input:.5,output:3},"togetherai/LiquidAI/LFM2-24B-A2B":{input:.03,output:.12},"togetherai/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.14,output:.28,cache_read:.03},"togetherai/deepseek-ai/DeepSeek-R1":{input:3,output:7},"togetherai/deepseek-ai/DeepSeek-V4-Pro-0813":{input:1.32,output:3.96,cache_read:.13},"togetherai/deepseek-ai/DeepSeek-V4.1-Flash":{input:.3,output:1.2,cache_read:.006},"togetherai/deepseek-ai/DeepSeek-V3-1":{input:.6,output:1.7},"togetherai/deepseek-ai/DeepSeek-V4-Pro":{input:1.74,output:3.48,cache_read:.2},"togetherai/deepseek-ai/DeepSeek-V3":{input:1.25,output:1.25},"togetherai/MiniMaxAI/MiniMax-M3":{input:.3,output:1.2,cache_read:.06},"togetherai/MiniMaxAI/MiniMax-M2.5":{input:.3,output:1.2,cache_read:.06},"togetherai/MiniMaxAI/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06},"togetherai/moonshotai/Kimi-K2.6":{input:1.2,output:4.5,cache_read:.2},"togetherai/moonshotai/Kimi-K3":{input:3,output:15,cache_read:.3},"togetherai/moonshotai/Kimi-K2.7-Code":{input:.95,output:4,cache_read:.19},"togetherai/moonshotai/Kimi-K2.5":{input:.5,output:2.8},"togetherai/zai-org/GLM-5.1":{input:1.4,output:4.4,cache_read:.26},"togetherai/zai-org/GLM-5.2":{input:1.4,output:4.4,cache_read:.26},"togetherai/zai-org/GLM-5":{input:1,output:3.2},"togetherai/zai-org/GLM-5.3-Flash":{input:.15,output:.5,cache_read:.03},"togetherai/zai-org/GLM-5.3":{input:1.4,output:4.4,cache_read:.26},"togetherai/nvidia/nemotron-3-ultra-550b-a55b":{input:.6,output:3.6,cache_read:.2},"togetherai/openai/gpt-oss-20b":{input:.05,output:.2},"togetherai/openai/gpt-oss-120b":{input:.15,output:.6},"helicone/grok-4-1-fast-reasoning":{input:.19999999999999998,output:.5,cache_read:.049999999999999996},"helicone/grok-3":{input:3,output:15,cache_read:.75},"helicone/llama-4-scout":{input:.08,output:.3},"helicone/llama-guard-4":{input:.21,output:.21},"helicone/mistral-large-2411":{input:2,output:6},"helicone/grok-4-1-fast-non-reasoning":{input:.19999999999999998,output:.5,cache_read:.049999999999999996},"helicone/qwen3-vl-235b-a22b-instruct":{input:.3,output:1.5},"helicone/mistral-nemo":{input:20,output:40},"helicone/gpt-5.1-codex":{input:1.25,output:10,cache_read:.12500000000000003},"helicone/gemini-3-pro-preview":{input:2,output:12,cache_read:.19999999999999998},"helicone/gpt-4o":{input:2.5,output:10,cache_read:1.25},"helicone/gpt-4.1-mini-2025-04-14":{input:.39999999999999997,output:1.5999999999999999,cache_read:.09999999999999999},"helicone/glm-4.6":{input:.44999999999999996,output:1.5},"helicone/claude-3.5-haiku":{input:.7999999999999999,output:4,cache_read:.08,cache_write:1},"helicone/o1-mini":{input:1.1,output:4.4,cache_read:.55},"helicone/grok-4":{input:3,output:15,cache_read:.75},"helicone/gpt-5-codex":{input:1.25,output:10,cache_read:.12500000000000003},"helicone/llama-4-maverick":{input:.15,output:.6},"helicone/qwen3-coder":{input:.22,output:.95},"helicone/gpt-5-mini":{input:.25,output:2,cache_read:.024999999999999998},"helicone/o4-mini":{input:1.1,output:4.4,cache_read:.275},"helicone/o3-mini":{input:1.1,output:4.4,cache_read:.55},"helicone/kimi-k2-0711":{input:.5700000000000001,output:2.3},"helicone/gpt-4.1-nano":{input:.09999999999999999,output:.39999999999999997,cache_read:.024999999999999998},"helicone/grok-4-fast-reasoning":{input:.19999999999999998,output:.5,cache_read:.049999999999999996},"helicone/qwen3-32b":{input:.29,output:.59},"helicone/gpt-5-nano":{input:.049999999999999996,output:.39999999999999997,cache_read:.005},"helicone/claude-3.5-sonnet-v2":{input:3,output:15,cache_read:.30000000000000004,cache_write:3.75},"helicone/gpt-5.1-chat-latest":{input:1.25,output:10,cache_read:.12500000000000003},"helicone/claude-4.5-sonnet":{input:3,output:15,cache_read:.30000000000000004,cache_write:3.75},"helicone/deepseek-tng-r1t2-chimera":{input:.3,output:1.2},"helicone/deepseek-v3":{input:.56,output:1.68,cache_read:.07},"helicone/deepseek-r1-distill-llama-70b":{input:.03,output:.13},"helicone/o1":{input:15,output:60,cache_read:7.5},"helicone/mistral-small":{input:.075,output:.2},"helicone/chatgpt-4o-latest":{input:5,output:20,cache_read:2.5},"helicone/qwen3-coder-30b-a3b-instruct":{input:.09999999999999999,output:.3},"helicone/sonar-pro":{input:3,output:15},"helicone/kimi-k2-thinking":{input:.48,output:2},"helicone/grok-4-fast-non-reasoning":{input:.19999999999999998,output:.5,cache_read:.049999999999999996},"helicone/claude-opus-4-1-20250805":{input:15,output:75,cache_read:1.5,cache_write:18.75},"helicone/gpt-5-pro":{input:15,output:120},"helicone/gpt-5-chat-latest":{input:1.25,output:10,cache_read:.12500000000000003},"helicone/deepseek-v3.1-terminus":{input:.27,output:1,cache_read:.21600000000000003},"helicone/claude-opus-4-1":{input:15,output:75,cache_read:1.5,cache_write:18.75},"helicone/gpt-5.1":{input:1.25,output:10,cache_read:.12500000000000003},"helicone/llama-3.3-70b-versatile":{input:.59,output:.7899999999999999},"helicone/llama-3.3-70b-instruct":{input:.13,output:.39},"helicone/grok-3-mini":{input:.3,output:.5,cache_read:.075},"helicone/gemma-3-12b-it":{input:.049999999999999996,output:.09999999999999999},"helicone/qwen2.5-coder-7b-fast":{input:.03,output:.09},"helicone/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"helicone/qwen3-next-80b-a3b-instruct":{input:.14,output:1.4},"helicone/o3-pro":{input:20,output:80},"helicone/gpt-oss-20b":{input:.049999999999999996,output:.19999999999999998},"helicone/gemini-2.5-pro":{input:1.25,output:10,cache_read:.3125,cache_write:1.25},"helicone/sonar-deep-research":{input:2,output:8},"helicone/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.075,cache_write:.3},"helicone/claude-4.5-haiku":{input:1,output:5,cache_read:.09999999999999999,cache_write:1.25},"helicone/gemma2-9b-it":{input:.01,output:.03},"helicone/claude-3.7-sonnet":{input:3,output:15,cache_read:.30000000000000004,cache_write:3.75},"helicone/hermes-2-pro-llama-3-8b":{input:.14,output:.14},"helicone/claude-sonnet-4":{input:3,output:15,cache_read:.30000000000000004,cache_write:3.75},"helicone/qwen3-235b-a22b-thinking":{input:.3,output:2.9000000000000004},"helicone/grok-code-fast-1":{input:.19999999999999998,output:1.5,cache_read:.02},"helicone/claude-sonnet-4-5-20250929":{input:3,output:15,cache_read:.30000000000000004,cache_write:3.75},"helicone/gpt-4.1":{input:2,output:8,cache_read:.5},"helicone/qwen3-30b-a3b":{input:.08,output:.29},"helicone/kimi-k2-0905":{input:.5,output:2,cache_read:.39999999999999997},"helicone/llama-3.1-8b-instruct":{input:.02,output:.049999999999999996},"helicone/llama-3.1-8b-instruct-turbo":{input:.02,output:.03},"helicone/llama-prompt-guard-2-86m":{input:.01,output:.01},"helicone/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.09999999999999999,cache_write:1.25},"helicone/sonar":{input:1,output:1},"helicone/deepseek-reasoner":{input:.56,output:1.68,cache_read:.07},"helicone/gpt-4.1-mini":{input:.39999999999999997,output:1.5999999999999999,cache_read:.09999999999999999},"helicone/ernie-4.5-21b-a3b-thinking":{input:.07,output:.28},"helicone/claude-4.5-opus":{input:5,output:25,cache_read:.5,cache_write:6.25},"helicone/gemini-2.5-flash-lite":{input:.09999999999999999,output:.39999999999999997,cache_read:.024999999999999998,cache_write:.09999999999999999},"helicone/claude-3-haiku-20240307":{input:.25,output:1.25,cache_read:.03,cache_write:.3},"helicone/sonar-reasoning-pro":{input:2,output:8},"helicone/deepseek-v3.2":{input:.27,output:.41},"helicone/llama-prompt-guard-2-22m":{input:.01,output:.01},"helicone/gpt-oss-120b":{input:.04,output:.16},"helicone/gpt-5.1-codex-mini":{input:.25,output:2,cache_read:.024999999999999998},"helicone/o3":{input:2,output:8,cache_read:.5},"helicone/gpt-5":{input:1.25,output:10,cache_read:.12500000000000003},"helicone/llama-3.1-8b-instant":{input:.049999999999999996,output:.08},"helicone/sonar-reasoning":{input:1,output:5},"helicone/claude-opus-4":{input:15,output:75,cache_read:1.5,cache_write:18.75},"cortecs/gpt-5.4":{input:2.898,output:15.453,cache_read:.242},"cortecs/claude-haiku-4-5":{input:.996,output:4.982,cache_read:.099,cache_write:1.186},"cortecs/gpt-oss-safeguard-120b":{input:.179,output:.697},"cortecs/gemma-4-31b-it":{input:.223,output:.39},"cortecs/qwen3.8-27b":{input:.1,output:.4,cache_read:.04},"cortecs/gemma-3-27b-it":{input:.099,output:.299},"cortecs/qwen3.8-2.4t-a95b":{input:2.5,output:6,cache_read:.625},"cortecs/mistral-large-2402":{input:4.284,output:12.952},"cortecs/glm-5v-turbo":{input:1.186,output:3.955,cache_read:.296,cache_write:1.544},"cortecs/gpt-4o":{input:2.659,output:10.635,cache_read:1.33},"cortecs/glm-5.3-flash":{input:.1,output:.35,cache_read:.018},"cortecs/ministral-8b-2512":{input:.179,output:.179,cache_read:.017},"cortecs/deepseek-v4-flash-0731":{input:.09,output:.17,cache_read:.014},"cortecs/mistral-7b-instruct-v0.2":{input:.159,output:.219},"cortecs/qwen3-235b-a22b-instruct-2507":{input:.069,output:.455,cache_read:.018},"cortecs/kimi-k3":{input:3,output:14.999},"cortecs/qwen3-coder-next":{input:.167,output:.891},"cortecs/nova-lite-v1":{input:.069,output:.275},"cortecs/apertus-70b":{input:1.393,output:2.228},"cortecs/gpt-5-mini":{input:.279,output:2.192,cache_read:.056},"cortecs/glm-5":{input:.988,output:3.164,cache_read:.247},"cortecs/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.075},"cortecs/gpt-4.1-nano":{input:.111,output:.434,cache_read:.056},"cortecs/minimax-m2.5":{input:.296,output:1.186,cache_read:.075},"cortecs/qwen3-32b":{input:.179,output:.697},"cortecs/mistral-medium-3.5":{input:1.532,output:7.843,cache_read:.154},"cortecs/gpt-5-nano":{input:.06,output:.439,cache_read:.019},"cortecs/claude-4-6-sonnet":{input:3.196,output:15.94,cache_read:.32,cache_write:3.999},"cortecs/kimi-k2.6":{input:.475,output:2.97,cache_read:.1},"cortecs/claude-4-5-sonnet":{input:2.989,output:14.945,cache_read:.326,cache_write:4.078},"cortecs/devstral-2512":{input:.478,output:2.392,cache_read:.045},"cortecs/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.038},"cortecs/mistral-7b-instruct-v0.3":{input:.111,output:.111},"cortecs/qwen3-coder-30b-a3b-instruct":{input:.067,output:.245,cache_read:.014},"cortecs/mixtral-8x7B-instruct-v0.1":{input:.488,output:.758},"cortecs/gemma-4-26b-a4b-it":{input:.111,output:.557},"cortecs/gemini-3.5-flash-lite":{input:.33,output:2.749,cache_read:.033},"cortecs/voxtral-small-2507":{input:.123,output:.368,cache_read:.012},"cortecs/qwen3.5-122b-a10b":{input:.495,output:3.46,cache_read:.124},"cortecs/kimi-k2.5":{input:.495,output:2.768,cache_read:.124},"cortecs/gpt-5.1":{input:1.375,output:10.96,cache_read:.156},"cortecs/claude-opus-5":{input:5.5,output:27.498,cache_read:.55,cache_write:6.874},"cortecs/llama-3.3-70b-instruct":{input:.724,output:.724},"cortecs/gpt-4o-mini":{input:.159,output:.638,cache_read:.081},"cortecs/qwen3.6-35b-a3b":{input:.167,output:.557},"cortecs/pixtral-12b-2409":{input:.223,output:.223},"cortecs/gpt-oss-20b":{input:.045,output:.167},"cortecs/minimax-m2.7":{input:.668,output:2.674},"cortecs/gemini-3.5-flash":{input:1.649,output:9.899,cache_read:.165,cache_write:1},"cortecs/gemini-2.5-pro":{input:1.495,output:9.964,cache_read:.242,cache_write:.434},"cortecs/hermes-4-405b":{input:.996,output:2.989},"cortecs/gemini-2.5-flash":{input:.299,output:2.491,cache_read:.029,cache_write:.097},"cortecs/qwen3-vl-235b-a22b":{input:.617,output:3.119,cache_read:.052},"cortecs/deepseek-v4-pro-0813":{input:2,output:3.999,cache_read:.5},"cortecs/glm-4.7-flash":{input:.08,output:.478},"cortecs/qwen3.5-9b":{input:.111,output:.167},"cortecs/claude-opus4-6":{input:5.313,output:26.561,cache_read:.531,cache_write:6.645},"cortecs/claude-sonnet-4":{input:2.898,output:14.493,cache_read:.29,cache_write:3.624},"cortecs/minimax-m3":{input:.3,output:1.2,cache_read:.06},"cortecs/gpt-5.6-luna":{input:.219,output:1.32,cache_read:.022,cache_write:.275},"cortecs/qwen3.8-flash-next":{input:.201,output:.5,cache_read:.05},"cortecs/mistral-small-2603":{input:.156,output:.625,cache_read:.016},"cortecs/nemotron-nano-v2-12b":{input:.24,output:.707},"cortecs/mistral-small-2503":{input:.111,output:.334},"cortecs/gpt-4.1":{input:2.192,output:8.769,cache_read:.546},"cortecs/claude-sonnet-5":{input:2.2,output:11,cache_read:.219,cache_write:2.749},"cortecs/qwen3.5-397b-a17b":{input:.668,output:4.01},"cortecs/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.038},"cortecs/glm-5.2":{input:.9,output:3.24,cache_read:.189},"cortecs/pixtral-large-2502":{input:1.993,output:5.978},"cortecs/claude-opus4-7":{input:5.437,output:27.186,cache_read:.544,cache_write:6.797},"cortecs/minicpm-v-4.5":{input:.651,output:1.097},"cortecs/llama-3.1-8b-instruct":{input:.167,output:.167},"cortecs/glm-5.1":{input:1.384,output:4.348,cache_read:.346},"cortecs/qwen3-30b-a3b-instruct-2507":{input:.099,output:.299},"cortecs/qwen2.5-vl-72b-instruct":{input:1.014,output:1.014},"cortecs/mistral-large-2512":{input:.613,output:1.838,cache_read:.061},"cortecs/gpt-4.1-mini":{input:.434,output:1.704,cache_read:.134},"cortecs/gemini-3.8-flash":{input:.825,output:4.125,cache_read:.082,cache_write:.084},"cortecs/ministral-14b-2512":{input:.24,output:.24,cache_read:.022},"cortecs/glm-5-turbo":{input:1.186,output:3.955,cache_read:.296,cache_write:1.544},"cortecs/gpt-6-luna":{input:.12,output:.6,cache_read:.012,cache_write:.15},"cortecs/deepseek-v4-pro":{input:1.7,output:3.4,cache_read:.15},"cortecs/claude-opus-5.5":{input:4.399,output:21.998,cache_read:.219,cache_write:5.5},"cortecs/qwen3.6-27b":{input:.446,output:3.008},"cortecs/claude-opus4-8":{input:5.437,output:27.186,cache_read:.544,cache_write:6.797},"cortecs/mistral-small-3.2-24b-instruct-2506":{input:.1,output:.312},"cortecs/deepseek-r1-0528":{input:.652,output:2.57,cache_read:.163},"cortecs/gpt-5.6-terra":{input:2.2,output:13.199,cache_read:.219,cache_write:2.749},"cortecs/deepseek-v3.2":{input:.296,output:.495,cache_read:.075},"cortecs/nova-2-lite":{input:.373,output:3.144},"cortecs/nova-pro-v1":{input:.918,output:3.671},"cortecs/gpt-oss-120b":{input:.089,output:.446,cache_read:.01},"cortecs/ministral-3b-2512":{input:.123,output:.123,cache_read:.012},"cortecs/claude-opus4-5":{input:5.313,output:26.568,cache_read:.531,cache_write:6.645},"cortecs/glm-5.3":{input:.873,output:3.306,cache_read:.221},"cortecs/kimi-k2.7-code":{input:.656,output:3.3,cache_read:.18},"cortecs/gpt-5":{input:1.375,output:10.96,cache_read:.156},"cortecs/minimax-m2.1":{input:.359,output:1.435},"cortecs/gpt-5.6-sol":{input:4.399,output:21.998,cache_read:.44,cache_write:5.5},"cortecs/mistral-nemo-instruct-2407":{input:.145,output:.145,cache_read:.014},"cortecs/minimax-m2":{input:.349,output:1.405},"cortecs/nova-micro-v1":{input:.04,output:.159},"cortecs/codestral-2508":{input:.368,output:1.103,cache_read:.037},"cortecs/gpt-6-sol":{input:2.4,output:11.999,cache_read:.24,cache_write:3},"cortecs/nvidia-nemotron-3-nano-30b-a3b":{input:.06,output:.24},"cortecs/gemini-3.1-flash-lite":{input:.272,output:1.631,cache_read:.025,cache_write:.082},"agnes/agnes-2.5-pro-alpha":{input:.45,output:.9,cache_read:.0038},"daoxe/gpt-5.4":{input:2.5,output:15,cache_read:.25},"daoxe/grok-4.3":{input:1.25,output:2.5,cache_read:.2},"daoxe/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2},"daoxe/grok-4.5":{input:2,output:6,cache_read:.5},"daoxe/kimi-k2.5":{input:.6,output:3,cache_read:.1},"daoxe/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"daoxe/gpt-5.5":{input:5,output:30,cache_read:.5},"daoxe/claude-haiku-4-5-20251001":{input:1,output:5,cache_read:.1,cache_write:5},"daoxe/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"morph/morph-v3-large":{input:.9,output:1.9},"morph/morph-v3-fast":{input:.8,output:1.2},"morph/auto":{input:.85,output:1.55},"openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"openai/gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"openai/gpt-3.5-turbo":{input:.5,output:1.5,cache_read:0},"openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"openai/text-embedding-3-small":{input:.02,output:0},"openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"openai/gpt-realtime-2.1":{input:4,output:24,cache_read:.4,input_audio:32,output_audio:64},"openai/gpt-4o-2024-05-13":{input:5,output:15},"openai/gpt-4o":{input:2.5,output:10,cache_read:1.25},"openai/gpt-5-mini":{input:.25,output:2,cache_read:.025},"openai/gpt-image-2":{input:5,output:30,cache_read:1.25},"openai/gpt-5.2-pro":{input:21,output:168},"openai/o4-mini":{input:1.1,output:4.4,cache_read:.275},"openai/o3-mini":{input:1.1,output:4.4,cache_read:.55},"openai/text-embedding-ada-002":{input:.1,output:0},"openai/gpt-4":{input:30,output:60},"openai/gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"openai/gpt-4.1-nano":{input:.1,output:.4,cache_read:.025},"openai/gpt-5-nano":{input:.05,output:.4,cache_read:.005},"openai/gpt-5.6":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"openai/gpt-5.2-chat-latest":{input:1.75,output:14,cache_read:.175},"openai/o1":{input:15,output:60,cache_read:7.5},"openai/gpt-5-pro":{input:15,output:120},"openai/gpt-5.3-codex-spark":{input:1.75,output:14,cache_read:.175},"openai/text-embedding-3-large":{input:.13,output:0},"openai/gpt-4o-2024-08-06":{input:2.5,output:10,cache_read:1.25},"openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"openai/gpt-5.1":{input:1.25,output:10,cache_read:.125},"openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"openai/o3-pro":{input:20,output:80},"openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"openai/gpt-5.2":{input:1.75,output:14,cache_read:.175},"openai/gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"openai/gpt-4.1":{input:2,output:8,cache_read:.5},"openai/gpt-4o-2024-11-20":{input:2.5,output:10,cache_read:1.25},"openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"openai/gpt-5.3-chat-latest":{input:1.75,output:14,cache_read:.175},"openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"openai/gpt-4-turbo":{input:10,output:30},"openai/o3":{input:2,output:8,cache_read:.5},"openai/gpt-5":{input:1.25,output:10,cache_read:.125},"openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"openai/o1-pro":{input:150,output:600},"alibaba-coding-plan-cn/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"alibaba-coding-plan-cn/qwen3.6-flash":{input:.1875,output:1.125,cache_write:.234375},"io-net/meta-llama/Llama-3.2-90B-Vision-Instruct":{input:.35,output:.4,cache_read:.175,cache_write:.7},"io-net/meta-llama/Llama-3.3-70B-Instruct":{input:.13,output:.38,cache_read:.065,cache_write:.26},"io-net/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{input:.15,output:.6,cache_read:.075,cache_write:.3},"io-net/Qwen/Qwen3-Next-80B-A3B-Instruct":{input:.1,output:.8,cache_read:.05,cache_write:.2},"io-net/Qwen/Qwen3-235B-A22B-Thinking-2507":{input:.11,output:.6,cache_read:.055,cache_write:.22},"io-net/Qwen/Qwen2.5-VL-32B-Instruct":{input:.05,output:.22,cache_read:.025,cache_write:.1},"io-net/deepseek-ai/DeepSeek-R1-0528":{input:2,output:8.75,cache_read:1,cache_write:4},"io-net/mistralai/Mistral-Nemo-Instruct-2407":{input:.02,output:.04,cache_read:.01,cache_write:.04},"io-net/mistralai/Magistral-Small-2506":{input:.5,output:1.5,cache_read:.25,cache_write:1},"io-net/mistralai/Devstral-Small-2505":{input:.05,output:.22,cache_read:.025,cache_write:.1},"io-net/mistralai/Mistral-Large-Instruct-2411":{input:2,output:6,cache_read:1,cache_write:4},"io-net/Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar":{input:.22,output:.95,cache_read:.11,cache_write:.44},"io-net/moonshotai/Kimi-K2-Thinking":{input:.55,output:2.25,cache_read:.275,cache_write:1.1},"io-net/moonshotai/Kimi-K2-Instruct-0905":{input:.39,output:1.9,cache_read:.195,cache_write:.78},"io-net/zai-org/GLM-4.6":{input:.4,output:1.75,cache_read:.2,cache_write:.8},"io-net/openai/gpt-oss-20b":{input:.03,output:.14,cache_read:.015,cache_write:.06},"io-net/openai/gpt-oss-120b":{input:.04,output:.4,cache_read:.02,cache_write:.08},"infomaniak/bge_multilingual_gemma2":{input:.08,output:0},"infomaniak/swiss-ai/Apertus-v1.5-70B":{input:.87,output:3.1},"infomaniak/google/gemma-4-31B-it":{input:.25,output:.5},"infomaniak/Qwen/Qwen3.5-122B-A10B-FP8":{input:.5,output:3.97},"infomaniak/Qwen/Qwen3.5-397B-A17B-FP8":{input:.99,output:4.46},"infomaniak/mistralai/Mistral-Small-4-119B-2603":{input:.25,output:.93},"infomaniak/mistralai/Ministral-3-14B-Instruct-2512":{input:.37,output:.5},"infomaniak/moonshotai/Kimi-K2.6":{input:.74,output:3.72},"infomaniak/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8":{input:.06,output:.25},"llmtech/nvidia/Qwen3.8-27B-NVFP4":{input:.25,output:2.09,cache_read:.04},"crossmodel/anthropic/claude-haiku-4-5":{input:1,output:5,cache_read:.1,cache_write:1.25},"crossmodel/anthropic/claude-opus-5-5":{input:4,output:20,cache_read:.2,cache_write:5},"crossmodel/anthropic/claude-fable-5-1":{input:10,output:50,cache_read:.25,cache_write:12.5},"crossmodel/anthropic/claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"crossmodel/anthropic/claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"crossmodel/anthropic/claude-opus-4-8":{input:5,output:25,cache_read:.5,cache_write:6.25},"crossmodel/anthropic/claude-sonnet-5":{input:2,output:10,cache_read:.2,cache_write:2.5},"crossmodel/anthropic/claude-sonnet-4-6":{input:3,output:15,cache_read:.3,cache_write:3.75},"crossmodel/anthropic/claude-opus-4-7":{input:5,output:25,cache_read:.5,cache_write:6.25},"crossmodel/deepseek/deepseek-v4.1-flash":{input:.27,output:1.08,cache_read:.0054,cache_write:.27},"crossmodel/deepseek/deepseek-v4-flash-vision-exp":{input:.27,output:1.08,cache_read:.0054,cache_write:.27},"crossmodel/deepseek/deepseek-v4-pro":{input:1.215,output:3.645,cache_read:.0405,cache_write:1.215},"crossmodel/deepseek/deepseek-v4-flash":{input:.27,output:1.08,cache_read:.0054,cache_write:.27},"crossmodel/tencent/hy3":{input:.16,output:.64,cache_read:.04,cache_write:.16},"crossmodel/tencent/hy4-preview":{input:.96,output:2.88,cache_read:.048,cache_write:.96},"crossmodel/z-ai/glm-5.3-flash":{input:.15,output:.5,cache_read:.03,cache_write:.15},"crossmodel/z-ai/glm-5":{input:.6,output:3,cache_read:.16,cache_write:.6,tiers:[{input:.8,output:3.4,cache_read:.2,cache_write:.8,tier:{type:"context",size:32e3}}]},"crossmodel/z-ai/glm-4.7":{input:.47,output:2.16,cache_read:.1,cache_write:.47,tiers:[{input:.62,output:2.47,cache_read:.13,cache_write:.62,tier:{type:"context",size:32e3}}]},"crossmodel/z-ai/glm-5.2":{input:1.2,output:4.4,cache_read:.3,cache_write:1.2},"crossmodel/z-ai/glm-5.1":{input:1,output:3.8,cache_read:.2,cache_write:1,tiers:[{input:1.2,output:4.4,cache_read:.3,cache_write:1.2,tier:{type:"context",size:32e3}}]},"crossmodel/z-ai/glm-5-turbo":{input:.9,output:3.7,cache_read:.18,cache_write:.9,tiers:[{input:1.1,output:4.3,cache_read:.27,cache_write:1.1,tier:{type:"context",size:32e3}}]},"crossmodel/z-ai/glm-5.3":{input:1.2,output:4.4,cache_read:.3,cache_write:1.2},"crossmodel/x-ai/grok-4.7":{input:2,output:6,cache_read:.5,cache_write:2,tiers:[{input:4,output:12,cache_read:1,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1,cache_write:4}},"crossmodel/x-ai/grok-4.3":{input:1.25,output:2.5,cache_read:.2,cache_write:1.25,tiers:[{input:2.5,output:5,cache_read:.4,cache_write:2.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:5,cache_read:.4,cache_write:2.5}},"crossmodel/x-ai/grok-4.5":{input:2,output:6,cache_read:.3,cache_write:2,tiers:[{input:4,output:12,cache_read:.6,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:.6,cache_write:4}},"crossmodel/x-ai/grok-build-0.1":{input:1,output:2,cache_read:.2,cache_write:1,tiers:[{input:2,output:4,cache_read:.4,cache_write:2,tier:{type:"context",size:2e5}}],context_over_200k:{input:2,output:4,cache_read:.4,cache_write:2}},"crossmodel/x-ai/grok-4.6":{input:2,output:6,cache_read:.5,cache_write:2,tiers:[{input:4,output:12,cache_read:1,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:12,cache_read:1,cache_write:4}},"crossmodel/xiaomi/mimo-v2.6-pro":{input:.47,output:.94,cache_read:.005,cache_write:.47},"crossmodel/xiaomi/mimo-v2.5":{input:.16,output:.32,cache_read:.004,cache_write:.16},"crossmodel/xiaomi/mimo-v2.5-pro":{input:.47,output:.94,cache_read:.005,cache_write:.47},"crossmodel/xiaomi/mimo-v2.6-flash":{input:.16,output:.32,cache_read:.004,cache_write:.16},"crossmodel/minimax/minimax-m2.7":{input:.33,output:1.32,cache_read:.066,cache_write:.42},"crossmodel/minimax/minimax-m3":{input:.33,output:1.32,cache_read:.066,cache_write:.33,tiers:[{input:.66,output:2.63,cache_read:.132,cache_write:.66,tier:{type:"context",size:512e3}}],context_over_200k:{input:.66,output:2.63,cache_read:.132,cache_write:.66}},"crossmodel/gemini/gemini-3.6-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.75},"crossmodel/gemini/gemini-3.5-flash-lite":{input:.3,output:2.5,cache_read:.03,cache_write:.3},"crossmodel/gemini/gemini-3.1-pro-preview":{input:2,output:12,cache_read:.2,cache_write:2,tiers:[{input:4,output:18,cache_read:.4,cache_write:4,tier:{type:"context",size:2e5}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:4}},"crossmodel/gemini/gemini-3.5-flash":{input:1.5,output:9,cache_read:.15,cache_write:1.5},"crossmodel/gemini/gemini-2.5-pro":{input:1.25,output:10,cache_read:.125,cache_write:1.25,tiers:[{input:2.5,output:15,cache_read:.25,cache_write:2.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:2.5,output:15,cache_read:.25,cache_write:2.5}},"crossmodel/gemini/gemini-2.5-flash":{input:.3,output:2.5,cache_read:.03,cache_write:.3},"crossmodel/gemini/gemini-3.7-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.75},"crossmodel/gemini/gemini-3-flash-preview":{input:.5,output:3,cache_read:.05,cache_write:.5},"crossmodel/gemini/gemini-3.8-flash":{input:.75,output:3.75,cache_read:.075,cache_write:.75},"crossmodel/gemini/gemini-2.5-flash-lite":{input:.1,output:.4,cache_read:.01,cache_write:.1},"crossmodel/qwen/qwen3.7-max":{input:1.88,output:5.63,cache_read:.375,cache_write:2.35},"crossmodel/qwen/qwen3.8-max":{input:1.88,output:5.63,cache_read:.23,cache_write:2.35},"crossmodel/qwen/qwen3.7-flash":{input:.04,output:.13,cache_read:.01,cache_write:.04,tiers:[{input:.1,output:.37,cache_read:.02,cache_write:.12,tier:{type:"context",size:32e3}},{input:.19,output:.74,cache_read:.04,cache_write:.24,tier:{type:"context",size:256e3}}]},"crossmodel/qwen/qwen3.8-omni-flash":{input:.13,output:.43,cache_read:.016,cache_write:.13},"crossmodel/qwen/qwen3.6-flash":{input:.19,output:1.13,cache_read:.019,cache_write:.24,tiers:[{input:.75,output:4.5,cache_read:.075,cache_write:.94,tier:{type:"context",size:256e3}}],context_over_200k:{input:.75,output:4.5,cache_read:.075,cache_write:.94}},"crossmodel/qwen/qwen3.8-flash":{input:.13,output:.43,cache_read:.016,cache_write:.2},"crossmodel/qwen/qwen3.6-plus":{input:.32,output:1.88,cache_read:.032,cache_write:.4,tiers:[{input:1.25,output:7.5,cache_read:.124,cache_write:1.57,tier:{type:"context",size:256e3}}],context_over_200k:{input:1.25,output:7.5,cache_read:.124,cache_write:1.57}},"crossmodel/qwen/qwen3.7-plus":{input:.32,output:1.25,cache_read:.032,cache_write:.4,tiers:[{input:.96,output:3.75,cache_read:.096,cache_write:1.2,tier:{type:"context",size:256e3}}],context_over_200k:{input:.96,output:3.75,cache_read:.096,cache_write:1.2}},"crossmodel/openai/gpt-5.4":{input:2.5,output:15,cache_read:.25,cache_write:2.5,tiers:[{input:5,output:22.5,cache_read:.5,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5,cache_write:5}},"crossmodel/openai/gpt-5.5-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"crossmodel/openai/gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02,cache_write:.2},"crossmodel/openai/gpt-6-astra":{input:10,output:50,cache_read:1,cache_write:12.5,tiers:[{input:20,output:75,cache_read:2,cache_write:25,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2,cache_write:25}},"crossmodel/openai/gpt-4o-mini":{input:.15,output:.6,cache_read:.075,cache_write:.15},"crossmodel/openai/gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075,cache_write:.75},"crossmodel/openai/gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,cache_write:.25,tiers:[{input:.4,output:1.8,cache_read:.04,cache_write:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04,cache_write:.5}},"crossmodel/openai/gpt-5.5":{input:5,output:30,cache_read:.5,cache_write:5,tiers:[{input:10,output:45,cache_read:1,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1,cache_write:10}},"crossmodel/openai/gpt-6-luna":{input:.1,output:.5,cache_read:.01,cache_write:.125,tiers:[{input:.2,output:.75,cache_read:.02,cache_write:.25,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02,cache_write:.25}},"crossmodel/openai/gpt-5.6-terra":{input:2,output:12,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:18,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4,cache_write:5}},"crossmodel/openai/gpt-5.6-sol":{input:4,output:20,cache_read:.4,cache_write:5,tiers:[{input:8,output:30,cache_read:.8,cache_write:10,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8,cache_write:10}},"crossmodel/openai/gpt-6-sol":{input:2,output:10,cache_read:.2,cache_write:2.5,tiers:[{input:4,output:15,cache_read:.4,cache_write:5,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4,cache_write:5}},"crossmodel/moonshot/kimi-k3":{input:3,output:15,cache_read:.3,cache_write:3},"crossmodel/moonshot/kimi-k2.6":{input:1,output:4.16,cache_read:.18,cache_write:1},"crossmodel/moonshot/kimi-k2.7-code":{input:1,output:4.16,cache_read:.18,cache_write:1},"arcee/trinity-large-thinking":{input:.25,output:.8,cache_read:.06},"arcee/deepseek/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"arcee/deepseek/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.2},"arcee/deepseek/deepseek-v4-flash-latest":{input:.14,output:.28,cache_read:.028},"arcee/thinkingmachines/inkling-small":{input:.5,output:1.2,cache_read:.1},"arcee/moonshotai/kimi-k3":{input:3,output:15,cache_read:.3},"arcee/zai-org/glm-5.2":{input:1.4,output:4.4,cache_read:.26},"drun/public/deepseek-v3":{input:.28,output:1.1},"drun/public/minimax-m25":{input:.29,output:1.16},"drun/public/deepseek-r1":{input:.55,output:2.2},"amd/DeepSeek-V4.1-Flash":{input:.14,output:.28,cache_read:.0028},"amd/DeepSeek-V4-Flash":{input:.14,output:.28,cache_read:.0028},"amd/Qwen3.8-Flash-Next":{input:.15,output:.47,cache_read:.016},"amd/MiniCPM5-2B":{input:.124,output:.7425,cache_read:.124},"amd/DeepSeek-V4-Flash-Vision-Exp":{input:.14,output:.28,cache_read:.0028},"claudinio/claudinio":{input:.5,output:2,cache_read:.15},"claudinio/claudius":{input:3,output:8,cache_read:.9},"runinfra/Inferact/Qwen3.8-2.4T-A95B-NVFP4":{input:2,output:6,cache_read:.2},"runinfra/Qwen/Qwen3.8-27B":{input:.1,output:.4,cache_read:.01},"runinfra/deepseek-ai/DeepSeek-V4-Flash-0731":{input:.13,output:.27,cache_read:.01},"runinfra/deepseek-ai/DeepSeek-V4-Pro-0813":{input:.6,output:1.9,cache_read:.03},"runinfra/zai-org/GLM-5.3-Flash":{input:.1,output:.4,cache_read:.01},"runinfra/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16":{input:.05,output:.15,cache_read:.01},"runinfra/ornith-ai/Ornith-1.5-35B-A3B":{input:.1,output:.4,cache_read:.01},"digitalocean/deepseek-3.2":{input:.5,output:1.6,cache_read:.15},"digitalocean/openai-gpt-5.5":{input:5,output:30,cache_read:.5,tiers:[{input:10,output:45,cache_read:1,tier:{type:"context",size:272e3}}],context_over_200k:{input:10,output:45,cache_read:1}},"digitalocean/openai-gpt-5.2-pro":{input:21,output:168},"digitalocean/all-mini-lm-l6-v2":{input:.009,output:0},"digitalocean/multi-qa-mpnet-base-dot-v1":{input:.009,output:0},"digitalocean/openai-gpt-image-1":{input:5,output:40,cache_read:1.25},"digitalocean/anthropic-claude-3-opus":{input:15,output:75,cache_read:1.5,cache_write:18.75},"digitalocean/anthropic-claude-4.6-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"digitalocean/anthropic-claude-haiku-4.5":{input:1,output:5,cache_read:.1,cache_write:1.25},"digitalocean/glm-5.3-flash":{input:.15,output:.5,cache_read:.03},"digitalocean/openai-o1":{input:15,output:60,cache_read:7.5},"digitalocean/deepseek-v4-flash-0731":{input:.14,output:.28,cache_read:.028},"digitalocean/anthropic-claude-opus-4.7":{input:5,output:25,cache_read:.5,cache_write:6.25},"digitalocean/stable-diffusion-3.5-large":{input:.08,output:0},"digitalocean/openai-gpt-6-luna":{input:.1,output:.5,cache_read:.01,tiers:[{input:.2,output:.75,cache_read:.02,tier:{type:"context",size:272e3}}],context_over_200k:{input:.2,output:.75,cache_read:.02}},"digitalocean/qwen3.8-max":{input:2,output:6,cache_read:.2},"digitalocean/kimi-k3":{input:3,output:15,cache_read:.3},"digitalocean/anthropic-claude-opus-5.5":{input:4,output:20,cache_read:.2,cache_write:5,tiers:[{input:8,output:30,cache_read:.4,cache_write:10,tier:{type:"context",size:2e5}}],context_over_200k:{input:8,output:30,cache_read:.4,cache_write:10}},"digitalocean/llama-4-maverick":{input:.25,output:.87},"digitalocean/openai-o3-mini":{input:1.1,output:4.4,cache_read:.55},"digitalocean/glm-5":{input:1,output:3.2,cache_read:.2},"digitalocean/deepseek-v4.1-flash":{input:.3,output:1.2,cache_read:.006},"digitalocean/minimax-m2.5":{input:.3,output:1.2,cache_read:.06},"digitalocean/anthropic-claude-4.1-opus":{input:15,output:75,cache_read:1.5,cache_write:18.75},"digitalocean/wan2-2-t2v-a14b":{input:.6,output:0},"digitalocean/openai-gpt-4o":{input:2.5,output:10,cache_read:1.25},"digitalocean/anthropic-claude-4.5-haiku":{input:1,output:5,cache_read:1,cache_write:1.25},"digitalocean/anthropic-claude-fable-5.1":{input:10,output:50,cache_read:.25,cache_write:12.5},"digitalocean/kimi-k2.6":{input:.95,output:4,cache_read:.19},"digitalocean/deepseek-r1-distill-llama-70b":{input:.99,output:.99},"digitalocean/openai-gpt-5-nano":{input:.05,output:.4,cache_read:.005},"digitalocean/qwen3-embedding-0.6b":{input:.04,output:0},"digitalocean/openai-o3":{input:2,output:8,cache_read:.5},"digitalocean/openai-gpt-5":{input:1.25,output:10,cache_read:.125},"digitalocean/openai-gpt-4.1":{input:2,output:8,cache_read:.5},"digitalocean/openai-gpt-5.1-codex-max":{input:1.25,output:10,cache_read:.125},"digitalocean/anthropic-claude-3.5-haiku":{input:.8,output:4,cache_read:.08,cache_write:1},"digitalocean/anthropic-claude-3.5-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"digitalocean/kimi-k2.5":{input:.5,output:2.7,cache_read:.203},"digitalocean/anthropic-claude-opus-4":{input:15,output:75,cache_read:1.5,cache_write:18.75},"digitalocean/openai-gpt-6-astra":{input:10,output:50,cache_read:1,tiers:[{input:20,output:75,cache_read:2,tier:{type:"context",size:272e3}}],context_over_200k:{input:20,output:75,cache_read:2}},"digitalocean/openai-gpt-image-2":{input:8,output:30},"digitalocean/openai-gpt-image-1.5":{input:5,output:10,cache_read:1},"digitalocean/openai-gpt-4o-mini":{input:.15,output:.6,cache_read:.075},"digitalocean/qwen3-coder-flash":{input:.45,output:1.7,cache_read:.09},"digitalocean/deepseek-4-flash":{input:.14,output:.28,cache_read:.028},"digitalocean/nemotron-3-ultra-550b":{input:.9,output:1.7},"digitalocean/openai-gpt-5.2":{input:1.75,output:14,cache_read:.175},"digitalocean/nvidia-nemotron-3-super-120b":{input:.3,output:.65,cache_read:.06},"digitalocean/deepseek-v4-pro-0813":{input:1.32,output:3.96,cache_read:.044},"digitalocean/mimo-v2.5-pro":{input:.8,output:3,cache_read:.16},"digitalocean/mistral-3-14B":{input:.2,output:.2},"digitalocean/anthropic-claude-opus-5":{input:5,output:25,cache_read:.5,cache_write:6.25},"digitalocean/nemotron-3-nano-omni":{input:.5,output:.9},"digitalocean/arcee-trinity-large-thinking":{input:.25,output:.9,cache_read:.06},"digitalocean/anthropic-claude-5-sonnet":{input:2,output:10,cache_read:.2,cache_write:2.5},"digitalocean/openai-gpt-5.4-pro":{input:30,output:180,tiers:[{input:60,output:270,tier:{type:"context",size:272e3}}],context_over_200k:{input:60,output:270}},"digitalocean/llama3-8b-instruct":{input:.198,output:.198},"digitalocean/llama3.3-70b-instruct":{input:.65,output:.65},"digitalocean/openai-gpt-oss-120b":{input:.1,output:.7,cache_read:.02},"digitalocean/alibaba-qwen3-32b":{input:.25,output:.55},"digitalocean/openai-gpt-5.3-codex":{input:1.75,output:14,cache_read:.175},"digitalocean/qwen3.5-397b-a17b":{input:.55,output:3.5,cache_read:.111},"digitalocean/anthropic-claude-3.7-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75},"digitalocean/anthropic-claude-opus-4.8":{input:5,output:25,cache_read:.5,cache_write:6.25},"digitalocean/openai-gpt-5.6-luna":{input:.2,output:1.2,cache_read:.02,tiers:[{input:.4,output:1.8,cache_read:.04,tier:{type:"context",size:272e3}}],context_over_200k:{input:.4,output:1.8,cache_read:.04}},"digitalocean/glm-5.2":{input:1.4,output:4.4,cache_read:.21},"digitalocean/openai-gpt-6-sol":{input:2,output:10,cache_read:.2,tiers:[{input:4,output:15,cache_read:.4,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:15,cache_read:.4}},"digitalocean/anthropic-claude-4.5-sonnet":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.6,cache_write:7.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.6,cache_write:7.5}},"digitalocean/bge-m3":{input:.02,output:0},"digitalocean/openai-gpt-5.6-sol":{input:4,output:20,cache_read:.4,tiers:[{input:8,output:30,cache_read:.8,tier:{type:"context",size:272e3}}],context_over_200k:{input:8,output:30,cache_read:.8}},"digitalocean/glm-5.1":{input:1.3,output:4.3,cache_read:.26},"digitalocean/openai-gpt-5.4-nano":{input:.2,output:1.25,cache_read:.02},"digitalocean/bge-reranker-v2-m3":{input:.01,output:0},"digitalocean/nemotron-nano-12b-v2-vl":{input:.2,output:.6},"digitalocean/openai-gpt-5.4-mini":{input:.75,output:4.5,cache_read:.075},"digitalocean/openai-gpt-5-mini":{input:.25,output:2,cache_read:.025},"digitalocean/anthropic-claude-opus-4.6":{input:5,output:25,cache_read:.5,cache_write:6.25,tiers:[{input:10,output:37.5,cache_read:1,cache_write:12.5,tier:{type:"context",size:2e5}}],context_over_200k:{input:10,output:37.5,cache_read:1,cache_write:12.5}},"digitalocean/e5-large-v2":{input:.02,output:0},"digitalocean/anthropic-claude-opus-4.5":{input:5,output:25,cache_read:.5,cache_write:6.25},"digitalocean/deepseek-v4-pro":{input:1.74,output:3.48,cache_read:.348},"digitalocean/gemma-4-31B-it":{input:.18,output:.5,cache_read:.036},"digitalocean/openai-gpt-5.6-terra":{input:2,output:12,cache_read:.2,tiers:[{input:4,output:18,cache_read:.4,tier:{type:"context",size:272e3}}],context_over_200k:{input:4,output:18,cache_read:.4}},"digitalocean/glm-5.3":{input:1.4,output:4.4,cache_read:.26},"digitalocean/gte-large-en-v1.5":{input:.09,output:0},"digitalocean/anthropic-claude-fable-5":{input:10,output:50,cache_read:1,cache_write:12.5},"digitalocean/openai-gpt-oss-20b":{input:.05,output:.45},"digitalocean/openai-gpt-5.4":{input:2.5,output:15,cache_read:.25,tiers:[{input:5,output:22.5,cache_read:.5,tier:{type:"context",size:272e3}}],context_over_200k:{input:5,output:22.5,cache_read:.5}},"digitalocean/mistral-nemo-instruct-2407":{input:.3,output:.3},"digitalocean/anthropic-claude-sonnet-4":{input:3,output:15,cache_read:.3,cache_write:3.75,tiers:[{input:6,output:22.5,cache_read:.3,cache_write:3.75,tier:{type:"context",size:2e5}}],context_over_200k:{input:6,output:22.5,cache_read:.3,cache_write:3.75}},"aixy/openai/gpt-4.1-mini":{input:.4,output:1.6,cache_read:.1},"alibaba-cn/qwen-flash":{input:.022,output:.216},"alibaba-cn/qwen3.5-flash":{input:.029,output:.287,reasoning:.287,tiers:[{input:.115,output:1.147,reasoning:1.147,tier:{type:"context",size:128e3}},{input:.172,output:1.72,reasoning:1.72,tier:{type:"context",size:256e3}}]},"alibaba-cn/qwen2-5-coder-32b-instruct":{input:.287,output:.861},"alibaba-cn/deepseek-v3-2-exp":{input:.287,output:.431},"alibaba-cn/deepseek-r1-distill-qwen-14b":{input:.144,output:.431},"alibaba-cn/qwen-math-plus":{input:.574,output:1.721},"alibaba-cn/qwen-deep-research":{input:7.742,output:23.367},"alibaba-cn/qwen3.7-max":{input:2.5,output:7.5,cache_read:.5,cache_write:3.125},"alibaba-cn/qwen2-5-32b-instruct":{input:.287,output:.861},"alibaba-cn/qwq-plus":{input:.23,output:.574},"alibaba-cn/qwq-32b":{input:.287,output:.861},"alibaba-cn/qwen2-5-vl-72b-instruct":{input:2.294,output:6.881},"alibaba-cn/deepseek-v3-1":{input:.574,output:1.721},"alibaba-cn/qwen3-vl-plus":{input:.143353,output:1.433525,reasoning:4.300576},"alibaba-cn/qwen-plus-character":{input:.115,output:.287},"alibaba-cn/qwen-max":{input:.345,output:1.377},"alibaba-cn/qwen3-next-80b-a3b-thinking":{input:.144,output:1.434},"alibaba-cn/qwen3.8-max":{input:1.77744,output:5.33231,cache_read:.22218,cache_write:2.22179},"alibaba-cn/kimi-k3":{input:2.827,output:14.133,cache_read:.283},"alibaba-cn/qwen2-5-math-7b-instruct":{input:.144,output:.287},"alibaba-cn/qwen3.5-plus":{input:.115,output:.688,reasoning:.688,tiers:[{input:.287,output:1.72,reasoning:1.72,tier:{type:"context",size:128e3}},{input:.573,output:3.44,reasoning:3.44,tier:{type:"context",size:256e3}}]},"alibaba-cn/qwen2-5-72b-instruct":{input:.574,output:1.721},"alibaba-cn/glm-5":{input:.573,output:2.58,tiers:[{input:.86,output:3.154,tier:{type:"context",size:32e3}}]},"alibaba-cn/deepseek-v4.1-flash":{input:.29754,output:1.19015,cache_read:.01488},"alibaba-cn/qwen3-32b":{input:.287,output:1.147,reasoning:2.868},"alibaba-cn/qwen2-5-coder-7b-instruct":{input:.144,output:.287},"alibaba-cn/qwen-plus":{input:.115,output:.287,reasoning:1.147,cache_read:.012,cache_write:.144},"alibaba-cn/qwen3.7-flash":{input:.02962,output:.1185,cache_read:.002962,cache_write:.03703,tiers:[{input:.08887,output:.35549,cache_read:.008887,cache_write:.11109,tier:{type:"context",size:32e3}},{input:.17774,output:.71098,cache_read:.017774,cache_write:.22218,tier:{type:"context",size:256e3}}]},"alibaba-cn/kimi-k2.6":{input:.929,output:3.858},"alibaba-cn/qwen3-max":{input:.359,output:1.434,reasoning:1.434,tiers:[{input:.574,output:2.294,reasoning:2.294,tier:{type:"context",size:32e3}},{input:1.004,output:4.014,reasoning:4.014,tier:{type:"context",size:128e3}}]},"alibaba-cn/qwen-omni-turbo-realtime":{input:.23,output:.918,input_audio:3.584,output_audio:7.168},"alibaba-cn/deepseek-v3":{input:.287,output:1.147},"alibaba-cn/deepseek-r1-distill-llama-70b":{input:.287,output:.861},"alibaba-cn/qwen3-coder-480b-a35b-instruct":{input:.861,output:3.441,tiers:[{input:1.291,output:5.161,tier:{type:"context",size:32e3}},{input:2.151,output:8.602,tier:{type:"context",size:128e3}}]},"alibaba-cn/qwen-turbo":{input:.044,output:.087,reasoning:.431},"alibaba-cn/deepseek-r1-distill-qwen-7b":{input:.072,output:.144},"alibaba-cn/qwen2-5-math-72b-instruct":{input:.574,output:1.721},"alibaba-cn/qwen3-coder-30b-a3b-instruct":{input:.216,output:.861,tiers:[{input:.323,output:1.291,tier:{type:"context",size:32e3}},{input:.538,output:2.151,tier:{type:"context",size:128e3}}]},"alibaba-cn/qwen-doc-turbo":{input:.087,output:.144},"alibaba-cn/kimi-k2-thinking":{input:.574,output:2.294},"alibaba-cn/qvq-max":{input:1.147,output:4.588},"alibaba-cn/qwen2-5-7b-instruct":{input:.072,output:.144},"alibaba-cn/qwen3-omni-flash":{input:.058,output:.23,input_audio:3.584,output_audio:7.168},"alibaba-cn/qwen-vl-max":{input:.23,output:.574},"alibaba-cn/qwen3-235b-a22b":{input:.287,output:1.147,reasoning:2.868},"alibaba-cn/qwen3-vl-30b-a3b":{input:.108,output:.431,reasoning:1.076},"alibaba-cn/kimi-k2.5":{input:.574,output:2.411},"alibaba-cn/qwen3-next-80b-a3b-instruct":{input:.144,output:.574},"alibaba-cn/qwen-vl-plus":{input:.115,output:.287},"alibaba-cn/qwen3.6-flash":{input:.1875,output:1.125,cache_write:.234375},"alibaba-cn/qwen3-coder-flash":{input:.144,output:.574},"alibaba-cn/qwen2-5-omni-7b":{input:.087,output:.345,input_audio:5.448},"alibaba-cn/qwen-mt-plus":{input:.259,output:.775},"alibaba-cn/tongyi-intent-detect-v3":{input:.058,output:.144},"alibaba-cn/qwen3-vl-235b-a22b":{input:.286705,output:1.14682,reasoning:2.867051},"alibaba-cn/qwen3-coder-plus":{input:.574,output:2.296,tiers:[{input:.861,output:3.444,tier:{type:"context",size:32e3}},{input:1.435,output:5.74,tier:{type:"context",size:128e3}},{input:2.87,output:28.7,tier:{type:"context",size:256e3}}]},"alibaba-cn/moonshot-kimi-k2-instruct":{input:.574,output:2.294},"alibaba-cn/MiniMax-M2.5":{input:.3,output:1.2},"alibaba-cn/qwen2-5-14b-instruct":{input:.144,output:.431},"alibaba-cn/qwen3.8-flash":{input:.11875,output:.40073,cache_read:.01187,cache_write:.14844},"alibaba-cn/qwen2-5-vl-7b-instruct":{input:.287,output:.717},"alibaba-cn/qwen-math-turbo":{input:.287,output:.861},"alibaba-cn/qwen-long":{input:.072,output:.287},"alibaba-cn/qwen3.6-max-preview":{input:1.32,output:7.9,cache_read:.132},"alibaba-cn/qwen-mt-turbo":{input:.101,output:.28},"alibaba-cn/qwen3.5-397b-a17b":{input:.172,output:1.032,reasoning:1.032,tiers:[{input:.43,output:2.58,reasoning:2.58,tier:{type:"context",size:128e3}}]},"alibaba-cn/qwen3-8b":{input:.072,output:.287,reasoning:.717},"alibaba-cn/glm-5.2":{input:1.1,output:3.851,cache_read:.275,cache_write:0},"alibaba-cn/qwen-omni-turbo":{input:.058,output:.23,input_audio:3.584,output_audio:7.168},"alibaba-cn/glm-5.1":{input:.825,output:3.301,cache_read:.17,tiers:[{input:1.1,output:3.851,tier:{type:"context",size:32e3}}]},"alibaba-cn/qwen3-omni-flash-realtime":{input:.23,output:.918,input_audio:3.584,output_audio:7.168},"alibaba-cn/qwen3-asr-flash":{input:.032,output:.032},"alibaba-cn/deepseek-r1-distill-qwen-32b":{input:.287,output:.861},"alibaba-cn/deepseek-r1":{input:.574,output:2.294},"alibaba-cn/deepseek-v4-pro":{input:.435,output:.87,cache_read:.003625},"alibaba-cn/deepseek-r1-0528":{input:.574,output:2.294},"alibaba-cn/qwen3.6-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:256e3}}],context_over_200k:{input:2,output:6,cache_read:.2,cache_write:2.5}},"alibaba-cn/qwen3-14b":{input:.144,output:.574,reasoning:1.434},"alibaba-cn/glm-5.3":{input:1.1,output:3.851,cache_read:.275,cache_write:0},"alibaba-cn/qwen3.7-plus":{input:.5,output:3,cache_read:.05,cache_write:.625,tiers:[{input:2,output:6,cache_read:.2,cache_write:2.5,tier:{type:"context",size:128e3}}]},"alibaba-cn/deepseek-v4-flash":{input:.14,output:.28,cache_read:.0028},"alibaba-cn/qwen-vl-ocr":{input:.043,output:.072},"alibaba-cn/siliconflow/deepseek-v3-0324":{input:.25,output:1},"alibaba-cn/siliconflow/deepseek-v3.1-terminus":{input:.27,output:1},"alibaba-cn/siliconflow/deepseek-r1-0528":{input:.5,output:2.18},"alibaba-cn/siliconflow/deepseek-v3.2":{input:.27,output:.42},"alibaba-cn/kimi/kimi-k2.5":{input:.6,output:3,cache_read:.1},"alibaba-cn/MiniMax/MiniMax-M2.7":{input:.3,output:1.2,cache_read:.06,cache_write:.375}}}}});import{readFile,writeFile,mkdir}from"fs/promises";import{existsSync,statSync as statSync2}from"fs";import path9 from"path";function bundledSnapshotRegistry(){if(snapshotReg)return snapshotReg;const snap=registry_snapshot_default;if(!snap||typeof snap!=="object"||!snap.models||typeof snap.models!=="object")return null;snapshotReg=snap.models;snapshotCosts=sanitizeCosts(snap.costs);const ts2=typeof snap.fetchedAt==="string"?Date.parse(snap.fetchedAt):NaN;snapshotMs=Number.isFinite(ts2)?ts2:0;return snapshotReg}function sanitizeCosts(raw){if(!raw||typeof raw!=="object"||Array.isArray(raw))return null;const out={};let any=false;for(const[key,value]of Object.entries(raw)){if(!value||typeof value!=="object"||Array.isArray(value))continue;const input=value.input;if(typeof input!=="number"||!Number.isFinite(input)||input<=0)continue;out[key]=value;any=true}return any?out:null}var TTL_MS,cache,costCache,snapshotReg,snapshotCosts,snapshotMs;var init_registry=__esm({"src/registry.ts"(){"use strict";init_paths();init_logger();init_upstream_proxy();init_fetch_util();init_registry_snapshot();TTL_MS=24*60*60*1e3;cache=null;costCache=null;snapshotReg=null;snapshotCosts=null;snapshotMs=0;{const seed=bundledSnapshotRegistry();if(seed&&!cache){cache=seed;costCache=snapshotCosts}}}});var init_billing=__esm({"src/billing.ts"(){"use strict";init_registry()}});import{readFileSync as readFileSync2,existsSync as existsSync2,mkdirSync as mkdirSync3,writeFileSync}from"fs";import{createHash as createHash3}from"crypto";import{dirname}from"path";function passthroughState(env){const filePassthrough=loadConfigFile().passthrough===true;if(env.ACP_PASSTHROUGH!==void 0)return{enabled:env.ACP_PASSTHROUGH==="1",source:"env"};return{enabled:filePassthrough,source:filePassthrough?"file":null}}function resolveRecordedMitmDomains(passed,env=process.env){const fileConfig=loadConfigFile();const enabled=(env.BILI_MITM??(fileConfig.mitm?.enabled===false?"0":"1"))!=="0";if(!enabled)return[];const effective=passed&&passed.length>0?passed.join(","):env.BILI_MITM_DOMAINS;return dedupeDomains([...fileConfig.mitm?.domains??[],...splitCsv(effective)])}function resolveRecordedPassthrough(flag,env=process.env){return flag||passthroughState(env).enabled}function splitCsv(value){if(!value)return[];return value.split(",").map(s3=>s3.trim()).filter(s3=>s3.length>0)}function dedupeDomains(list){const seen=new Set;const out=[];for(const d of list){if(!seen.has(d)){seen.add(d);out.push(d)}}return out}function warnUnknownTopLevelKeys(obj){const unknown=Object.keys(obj).filter(key=>!KNOWN_TOP_LEVEL_KEYS.has(key)&&key!=="allowDshCompaction");if(unknown.length===0)return;const signature=[...unknown].sort().join("\0");if(seenUnknownTopLevelKeySignatures.has(signature))return;seenUnknownTopLevelKeySignatures.add(signature);const misplaced=unknown.filter(key=>COMPRESS_SETTING_FIELDS.has(key));const hint=misplaced.length>0?` \u2014 ${misplaced.map(k2=>`"${k2}" belongs under "compress" (did you mean "compress.${k2}"?)`).join("; ")}`:"";log("warn",`[acp-config] ignoring unknown top-level config key(s): ${unknown.join(", ")}${hint}`)}function parseBiliConfig(raw){try{return JSON.parse(raw)}catch{const errors=[];const value=parse2(raw,errors,{allowTrailingComma:true});if(errors.length===0)return value;const first=errors[0];throw new SyntaxError(`invalid JSON/JSONC at ${lineColumnOf(raw,first.offset)}: ${printParseErrorCode(first.error)}`)}}function lineColumnOf(text,offset){let line=1;let column=1;for(let i=0;i<offset&&i<text.length;i++){if(text.charAt(i)==="\n"){line++;column=1}else column++}return`line ${line} column ${column}`}function loadConfigFile(){const path30=configFile();let raw;let value;try{raw=readFileSync2(path30,"utf8").replace(/^\uFEFF/,"");const cached=configFileCache;if(cached&&cached.raw===raw)return cached.value;const parsed=parseBiliConfig(raw);if(parsed&&typeof parsed==="object"&&!Array.isArray(parsed)){const obj=parsed;warnRemovedDshAllowKey(obj);warnUnknownTopLevelKeys(obj);warnInertResignPassthrough(obj);warnInertStripImages(obj);warnInertRemovedCompressKeys(obj);value=obj}else{value={}}}catch(e){if(e.code!=="ENOENT"){log("error",`[acp-config] failed to parse ${path30}: ${String(e)}`)}if(raw!==void 0)value={}}if(raw===void 0||value===void 0)return{};configFileCache={raw,value};return value}function warnRemovedDshAllowKey(obj){const hits=[];if(Object.prototype.hasOwnProperty.call(obj,"allowDshCompaction")&&obj.allowDshCompaction!==null&&obj.allowDshCompaction!==void 0){hits.push('top-level "allowDshCompaction"')}const d=obj.dsh;if(d!==null&&typeof d==="object"&&!Array.isArray(d)){const live=new Set(["authoredCompaction","contextTab","contextTabLabel"]);for(const key of Object.keys(d))if(!live.has(key))hits.push(`dsh.${key}`)}hits.sort();const sig=hits.join(",");if(sig===""||sig===removedDshAllowKeySignature)return;removedDshAllowKeySignature=sig;log("warn",`[acp-config] ${hits.join(", ")} was removed (#3651, superseding #2028) \u2014 value(s) ignored: dsh native compaction is now refused unconditionally by the wire guard on every lane. Delete it from your config to silence this.`)}function resolveResignSettings(env=process.env,provider={},scheme=RESIGN_BUILTIN_SCHEME){const key=scheme.trim().toLowerCase();const file=loadConfigFile().resign?.[key]??{};const providerBlock=provider?.[key]??{};const enabled=env.BILI_RESIGN!==void 0?env.BILI_RESIGN!=="0":providerBlock.enabled!==void 0?providerBlock.enabled:file.enabled!==false;const passthrough=env.BILI_RESIGN_PASSTHROUGH!==void 0?env.BILI_RESIGN_PASSTHROUGH==="1"||env.BILI_RESIGN_PASSTHROUGH==="true":providerBlock.passthrough!==void 0?providerBlock.passthrough:file.passthrough===true;const credentialRef=env.BILI_CODEARTS_REF?.trim()||providerBlock.credentialRef||file.credentialRef||void 0;return{enabled,passthrough,credentialRef}}function warnInertStripImages(obj){const compress=obj.compress;if(!compress||typeof compress!=="object"||Array.isArray(compress))return;const hit=["stripImages","stripImagesKeepRecent"].filter(k2=>compress[k2]!==void 0);const sig=hit.join(",");if(sig===""||sig===seenInertStripImagesSignature)return;seenInertStripImagesSignature=sig;log("warn",`[acp-config] compress.${hit.join("/compress.")} is INERT \u2014 compress.stripImages was removed: media now folds by default (#2640) and decompress({ imageRef }) recovers folded pixels; nothing is stripped from the wire anymore. Remove the key(s) from the config.`)}function warnInertRemovedCompressKeys(obj){const hits=[];const scanBlock=(block,pathPrefix)=>{if(!block||typeof block!=="object"||Array.isArray(block))return;for(const key of INERT_REMOVED_COMPRESS_KEYS){if(block[key]!==void 0)hits.push(`${pathPrefix}.${key}`)}};scanBlock(obj.compress,"compress");const providers=obj.providers;if(providers&&typeof providers==="object"&&!Array.isArray(providers)){for(const[url,entry]of Object.entries(providers)){if(!entry||typeof entry!=="object"||Array.isArray(entry))continue;const p2=entry;scanBlock(p2.compress,`providers["${url}"].compress`);const models=p2.models;if(models&&typeof models==="object"&&!Array.isArray(models)){for(const[model,mEntry]of Object.entries(models)){if(!mEntry||typeof mEntry!=="object"||Array.isArray(mEntry))continue;scanBlock(mEntry.compress,`providers["${url}"].models["${model}"].compress`)}}}}hits.sort();const sig=hits.join(",");if(sig===""||sig===seenInertRemovedCompressKeysSignature)return;seenInertRemovedCompressKeysSignature=sig;log("warn",`[acp-config] ${hits.join(", ")} is INERT \u2014 compress.imageCompression was removed and no longer does anything at any level (image pre-compression + image_full restore channel, #3266). Remove it from the config; images pass through byte-identical.`)}function warnInertResignPassthrough(obj){const inert=[];const consider=(map,providerBlockFor)=>{if(!map||typeof map!=="object"||Array.isArray(map))return;for(const[key,val]of Object.entries(map)){if(key===RESIGN_BUILTIN_SCHEME)continue;const block=val!==null&&typeof val==="object"&&!Array.isArray(val)?val:{};if(block["passthrough"]!==true)continue;const fileBlock=(obj.resign??{})[key];const providerBlock=providerBlockFor(key);const enabled=process.env.BILI_RESIGN!==void 0?process.env.BILI_RESIGN!=="0":providerBlock?.enabled!==void 0?providerBlock.enabled:fileBlock?.enabled!==false;if(enabled)inert.push(key)}};consider(obj.resign,()=>void 0);const providers=obj.providers;if(providers&&typeof providers==="object"&&!Array.isArray(providers)){for(const entry of Object.values(providers)){if(!entry||typeof entry!=="object"||Array.isArray(entry))continue;const pmap=entry.resign;if(pmap===void 0)continue;consider(pmap,key=>(pmap??{})[key])}}inert.sort();const sig=inert.join(",");if(sig===""||sig===inertResignPassthroughSignature)return;inertResignPassthroughSignature=sig;const list=inert.map(k2=>`resign["${k2}"].passthrough`).join(", ");log("warn",`[acp-config] ${list}=true is INERT \u2014 since the #2090 compress-or-refuse contract, unsigned pass-through exists ONLY for the built-in scheme "${RESIGN_BUILTIN_SCHEME}"; those signed requests stay REFUSED until bili ships a re-signer for them. Restore pre-resign handling with resign["<scheme>"].enabled=false or BILI_RESIGN=0 (the upstream will then reject the rewritten bodies).`)}function resolveZonePortBase(env=process.env){const fromEnv=Number.parseInt(env.BILI_ZONE_PORT??"",10);if(Number.isInteger(fromEnv)&&fromEnv>0&&fromEnv<65536)return fromEnv;return ZONE_PORT_BASE}function resolveNativeAttachExternal(env=process.env){const fromEnv=(env.BILI_NATIVE_ATTACH_EXTERNAL??"").trim().toLowerCase();if(fromEnv==="1"||fromEnv==="true")return true;if(fromEnv==="0"||fromEnv==="false")return false;return loadConfigFile().native?.attachExternal===true}function resolveNativeAttachLanePriority(){const raw=loadConfigFile().native?.attachLanePriority;if(!Array.isArray(raw))return[];const out=[];for(const item of raw){if(typeof item!=="string")continue;const t=item.trim();if(t.length>0&&!out.includes(t))out.push(t)}return out}function adminRelayEnabled(){return loadConfigFile().security?.adminRelay===true}function resolveNativeAttachPolicy(env=process.env){const norm=v2=>(v2??"").trim().toLowerCase();const fromEnv=norm(env.BILI_NATIVE_ATTACH_POLICY);if(fromEnv==="global-fallback"||fromEnv==="global")return"global-fallback";if(fromEnv==="own-lane"||fromEnv==="ownlane"||fromEnv==="strict")return"own-lane";const file=norm(loadConfigFile().native?.attachPolicy);if(file==="global-fallback"||file==="global")return"global-fallback";return"own-lane"}function resolveNativeAttachUrl(env=process.env){const fromEnv=(env.BILI_MCP_PROXY??"").trim();if(fromEnv.length>0)return fromEnv;const file=(loadConfigFile().native?.attachUrl??"").trim();return file.length>0?file:void 0}var KNOWN_TOP_LEVEL_KEYS,COMPRESS_SETTING_FIELDS,seenUnknownTopLevelKeySignatures,configFileCache,removedDshAllowKeySignature,RESIGN_BUILTIN_SCHEME,inertResignPassthroughSignature,seenInertStripImagesSignature,INERT_REMOVED_COMPRESS_KEYS,seenInertRemovedCompressKeysSignature,ZONE_PORT_BASE;var init_config=__esm({"src/config.ts"(){"use strict";init_main();init_paths();init_logger();init_upstream_proxy();init_log_mask();init_util();init_mitm_domains();init_compat_roles();init_compat_drop();init_external_summary_settings();init_billing();KNOWN_TOP_LEVEL_KEYS=new Set(["port","host","upstream","providersPath","providers","proxy","modelContextLimit","sessionHeader","log","debug","dumpSse","passthrough","autoUpdate","autoRestartOnUpdate","updateTag","advisoryCheck","advisoryUrl","releaseNotesCheck","releaseNotesUrl","upstreamProxy","upstreamProxyMode","logFile","compress","promptCache","mitm","maskHosts","subagentSplit","forkAdoption","affinitySimhash","resumeInheritance","chainContentDetection","chainEgressStamp","stableSystemAnchor","rollout","dsh","compat","imageBilling","imageTokenCap","claude","native","resign","pi","storage","security","billing","network","persist","sessions","plugin","update","diagnostics","fakeCompletion","codexCompact","ccrRetrievalTtlMs","decompressTmpCap","autoModeForge","imageRescale","guardrails","cacheKeepalive"]);COMPRESS_SETTING_FIELDS=new Set(["modelContextLimit","maxContextLimit","emergencyThresholdPercent","nudgeGrowthTokens","minPressureBenefitTokens","tierNudgeTokens","nudgeModelDecided","nudgeDecisionMaxTokens","preserveRecentMessages","preserveRecentTokens","minCompressRange","minCompressRangeChars","outputHeadroomMaxPct","tiers","protectedLatestTools","protectedTools","neverPreserveRecentTools","preserveRecentTools","visibilityMarkers","messageTimestamps","rules","injectTool","injectNudge","acknowledgePromptsRisk","absorb","ccr","search","prompts","promptPack","reasoningGuard","outputSteering","priceProfile","reconcile","streamSummary","externalSummary","maxSummaryLength","minSummaryLength"]);seenUnknownTopLevelKeySignatures=new Set;configFileCache=null;removedDshAllowKeySignature="";RESIGN_BUILTIN_SCHEME="sdk-hmac-sha256";inertResignPassthroughSignature=null;seenInertStripImagesSignature="";INERT_REMOVED_COMPRESS_KEYS=["imageCompression"];seenInertRemovedCompressKeysSignature="";ZONE_PORT_BASE=18787}});var init_duration=__esm({"src/duration.ts"(){"use strict"}});import{createHash as createHash4}from"crypto";var MIN_MEDIA_URL_SPLIT_BYTES,MEDIA_URL_MARKER_RE;var init_identity=__esm({"src/storage/identity.ts"(){"use strict";MIN_MEDIA_URL_SPLIT_BYTES=2048;MEDIA_URL_MARKER_RE=new RegExp(`data:([a-zA-Z0-9.+\\/-]+);base64,([A-Za-z0-9+/=]{${MIN_MEDIA_URL_SPLIT_BYTES},})`,"g")}});function storagePragmas(walJournalSizeLimitBytes){return["PRAGMA journal_mode = WAL","PRAGMA synchronous = NORMAL","PRAGMA busy_timeout = 5000","PRAGMA foreign_keys = ON",`PRAGMA journal_size_limit = ${walJournalSizeLimitBytes}`,"PRAGMA auto_vacuum = INCREMENTAL"]}var WAL_JOURNAL_SIZE_LIMIT,STORAGE_PRAGMAS;var init_schema=__esm({"src/storage/schema.ts"(){"use strict";init_identity();init_logger();WAL_JOURNAL_SIZE_LIMIT=8*1024*1024;STORAGE_PRAGMAS=storagePragmas(WAL_JOURNAL_SIZE_LIMIT)}});import path10 from"path";function tNumLoose(envName,fileValue){const envRaw=process.env[envName];if(envRaw!==void 0&&envRaw!=="")return Number(envRaw);return typeof fileValue==="number"&&Number.isFinite(fileValue)?fileValue:NaN}function tInt(envName,fileValue){const envRaw=process.env[envName];if(envRaw!==void 0)return Number.parseInt(envRaw,10);return typeof fileValue==="number"&&Number.isFinite(fileValue)?fileValue:NaN}function limitsDecodedBytes(){const v2=tInt("BILI_DECODED_BODY_BYTES",loadConfigFile().network?.decodedBodyBytes);return Number.isFinite(v2)&&v2>0?Math.floor(v2):DEFAULT_LIMITS_DECODED_BYTES}function maxSessions(){const envRaw=process.env.BILI_MAX_SESSIONS;const v2=envRaw!==void 0?Number.parseInt(envRaw,10):(()=>{const f2=loadConfigFile().sessions?.max;return typeof f2==="number"&&Number.isFinite(f2)?f2:NaN})();return Math.max(1,v2||256)}function sessionResidentMaxBytes(){const v2=tInt("BILI_SESSION_RESIDENT_MAX_BYTES",loadConfigFile().sessions?.residentMaxBytes);return Number.isFinite(v2)&&v2>=0?Math.floor(v2):512*1024*1024}function updateRegistryBase(){const envRaw=process.env.BILI_UPDATE_REGISTRY;if(envRaw!==void 0&&envRaw.trim().length>0)return envRaw.trim();const f2=loadConfigFile().update?.registry;return typeof f2==="string"&&f2.trim().length>0?f2.trim():void 0}function updateCheckIntervalMs(){const v2=tNumLoose("BILI_UPDATE_CHECK_INTERVAL_MS",loadConfigFile().update?.checkIntervalMs);return Number.isFinite(v2)&&v2>0?Math.floor(v2):3*60*1e3}function dshContextTabEnabled(){const envRaw=process.env.BILI_DSH_CONTEXT_TAB;if(envRaw!==void 0)return!(envRaw.trim()==="0"||envRaw.trim().toLowerCase()==="false");return loadConfigFile().dsh?.contextTab!==false}function dshContextTabLabel(){const f2=loadConfigFile().dsh?.contextTabLabel;const s3=typeof f2==="string"?f2.trim():"";return s3.length>0?s3:void 0}var DEFAULT_LIMITS_RECEIVE_BYTES,DEFAULT_LIMITS_DECODED_BYTES,DEFAULT_LIMITS_OUTBOUND_BYTES,DEFAULT_WS_OUTBOUND_BYTES,DEFAULT_HTTP_OUTBOUND_BYTES;var init_knobs=__esm({"src/knobs.ts"(){"use strict";init_paths();init_config();init_duration();init_fetch_util();init_upstream_proxy();init_schema();DEFAULT_LIMITS_RECEIVE_BYTES=5*1024*1024*1024;DEFAULT_LIMITS_DECODED_BYTES=10*1024*1024*1024;DEFAULT_LIMITS_OUTBOUND_BYTES=5*1024*1024*1024;DEFAULT_WS_OUTBOUND_BYTES=10*1024*1024;DEFAULT_HTTP_OUTBOUND_BYTES=10*1024*1024}});import{readFileSync as readFileSync3,statSync as statSync3}from"fs";import*as tls from"tls";var init_upstream_ca=__esm({"src/upstream-ca.ts"(){"use strict";init_logger();init_knobs()}});var MAX_REQUEST_BYTES,MAX_DECODED_REQUEST_BYTES,DecodedRequestBusyError;var init_request_body_budget=__esm({"src/request-body-budget.ts"(){"use strict";init_knobs();MAX_REQUEST_BYTES=100*1024*1024;MAX_DECODED_REQUEST_BYTES=2*MAX_REQUEST_BYTES;DecodedRequestBusyError=class extends Error{constructor(){super("large decoded request budget is busy; retry after an active request finishes");this.name="DecodedRequestBusyError"}}}});var import_undici,UPSTREAM_TIMEOUT_MS;var init_fetch_util=__esm({"src/fetch-util.ts"(){"use strict";import_undici=__toESM(require_undici(),1);init_fetch_transport();init_upstream_fail();init_upstream_ca();init_knobs();init_request_body_budget();init_request_body_budget();UPSTREAM_TIMEOUT_MS=12*60*1e3}});import{execFileSync as execFileSync2}from"child_process";import net from"net";import tls2 from"tls";var import_undici2;var init_upstream_proxy=__esm({"src/upstream-proxy.ts"(){"use strict";import_undici2=__toESM(require_undici(),1);init_logger();init_log_mask();init_fetch_util();init_upstream_fail();init_upstream_ca();init_knobs()}});import{readFile as readFile2,writeFile as writeFile2,mkdir as mkdir2,rename,unlink}from"fs/promises";import path11 from"path";var STAGGER_MIN_DELAY_DEFAULT_MS,STAGGER_MAX_DELAY_DEFAULT_MS,POLICY_STALE_CAP_MS,DELAY_SANITY_CAP_MS,PUBLISHED_VERSIONS_TTL_MS,STAGGER_PRUNE_MS;var init_update_policy=__esm({"src/update-policy.ts"(){"use strict";init_paths();init_logger();init_upstream_proxy();init_duration();STAGGER_MIN_DELAY_DEFAULT_MS=15*6e4;STAGGER_MAX_DELAY_DEFAULT_MS=48*36e5;POLICY_STALE_CAP_MS=30*864e5;DELAY_SANITY_CAP_MS=366*864e5;PUBLISHED_VERSIONS_TTL_MS=10*6e4;STAGGER_PRUNE_MS=7*864e5}});import{readFile as readFile3,writeFile as writeFile3,mkdir as mkdir3,access,constants,rm,cp,unlink as unlink2,lstat,stat,rename as rename2,mkdtemp,readdir}from"fs/promises";import{execFile as execFile3,spawn}from"child_process";import{realpathSync}from"fs";import crypto from"crypto";import path12 from"path";import os4 from"os";import{fileURLToPath as fileURLToPath2}from"url";function normalizeRegistryBase(raw){const v2=raw?.trim();if(!v2)return"https://registry.npmjs.org";return v2.replace(/\/+$/,"")}function isVersionNewer(latest,current){const next=parseSemVer(latest);const prev=parseSemVer(current);if(!next||!prev)return false;for(let i=0;i<3;i++){const a=next.parts[i]??0;const b2=prev.parts[i]??0;if(a!==b2)return a>b2}if(!next.pre.length&&prev.pre.length)return true;if(next.pre.length&&!prev.pre.length)return false;for(let i=0;i<Math.max(next.pre.length,prev.pre.length);i++){const a=next.pre[i];const b2=prev.pre[i];if(a===void 0)return false;if(b2===void 0)return true;if(a===b2)continue;const aNumber=/^\d+$/.test(a)?Number(a):void 0;const bNumber=/^\d+$/.test(b2)?Number(b2):void 0;if(aNumber!==void 0&&bNumber!==void 0)return aNumber>bNumber;if(aNumber!==void 0)return false;if(bNumber!==void 0)return true;return a>b2}return false}function parseSemVer(version){const match=version.match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+.+)?$/);if(!match)return void 0;return{parts:[Number(match[1]),Number(match[2]),Number(match[3])],pre:match[4]?.split(".")??[]}}var REGISTRY_BASE,CHECK_INTERVAL_MS,THROTTLE_FILE,OWNER_THROTTLE_FILE,LOCK_FILE,OWNER_LANE_CHECK_BASE_MS,OWNER_LANE_CHECK_JITTER_MS,LOCK_MAX_AGE_MS,UPDATE_TMP_MAX_AGE_MS,BACKOFF_BASE_MS,BACKOFF_CAP_MS,BACKOFF_STATE_FILE,BACKOFF_PRUNE_MS,LAST_INSTALL_FILE,PI_LANE_HINT;var init_update=__esm({"src/update.ts"(){"use strict";init_index_min();init_text_safe();init_paths();init_logger();init_dsh_channel();init_dsh_ledger();init_pi_channel();init_client_config();init_upstream_proxy();init_knobs();init_update_policy();REGISTRY_BASE=normalizeRegistryBase(updateRegistryBase());CHECK_INTERVAL_MS=updateCheckIntervalMs();THROTTLE_FILE=path12.join(cacheDir(),".update-check");OWNER_THROTTLE_FILE=path12.join(cacheDir(),".owner-update-check");LOCK_FILE=path12.join(cacheDir(),".update-lock");OWNER_LANE_CHECK_BASE_MS=10*60*1e3;OWNER_LANE_CHECK_JITTER_MS=5*60*1e3;LOCK_MAX_AGE_MS=30*60*1e3;UPDATE_TMP_MAX_AGE_MS=60*60*1e3;BACKOFF_BASE_MS=5*60*1e3;BACKOFF_CAP_MS=6*60*60*1e3;BACKOFF_STATE_FILE=path12.join(cacheDir(),".install-backoff.json");BACKOFF_PRUNE_MS=7*24*60*60*1e3;LAST_INSTALL_FILE=path12.join(cacheDir(),".last-install.json");PI_LANE_HINT=`run \`pi update --extension ${PI_NPM_SPEC}\` from a shell where \`pi\` resolves (or point BILI_PI_BIN at pi's executable)`}});var require_forge=__commonJS({"node_modules/node-forge/lib/forge.js"(exports,module){"use strict";module.exports={options:{usePureJavaScript:false}}}});var require_baseN=__commonJS({"node_modules/node-forge/lib/baseN.js"(exports,module){"use strict";var api={};module.exports=api;var _reverseAlphabets={};api.encode=function(input,alphabet,maxline){if(typeof alphabet!=="string"){throw new TypeError('"alphabet" must be a string.')}if(maxline!==void 0&&typeof maxline!=="number"){throw new TypeError('"maxline" must be a number.')}var output="";if(!(input instanceof Uint8Array)){output=_encodeWithByteBuffer(input,alphabet)}else{var i=0;var base=alphabet.length;var first=alphabet.charAt(0);var digits=[0];for(i=0;i<input.length;++i){for(var j2=0,carry=input[i];j2<digits.length;++j2){carry+=digits[j2]<<8;digits[j2]=carry%base;carry=carry/base|0}while(carry>0){digits.push(carry%base);carry=carry/base|0}}for(i=0;input[i]===0&&i<input.length-1;++i){output+=first}for(i=digits.length-1;i>=0;--i){output+=alphabet[digits[i]]}}if(maxline){var regex=new RegExp(".{1,"+maxline+"}","g");output=output.match(regex).join("\r\n")}return output};api.decode=function(input,alphabet){if(typeof input!=="string"){throw new TypeError('"input" must be a string.')}if(typeof alphabet!=="string"){throw new TypeError('"alphabet" must be a string.')}var table=_reverseAlphabets[alphabet];if(!table){table=_reverseAlphabets[alphabet]=[];for(var i=0;i<alphabet.length;++i){table[alphabet.charCodeAt(i)]=i}}input=input.replace(/\s/g,"");var base=alphabet.length;var first=alphabet.charAt(0);var bytes=[0];for(var i=0;i<input.length;i++){var value=table[input.charCodeAt(i)];if(value===void 0){return}for(var j2=0,carry=value;j2<bytes.length;++j2){carry+=bytes[j2]*base;bytes[j2]=carry&255;carry>>=8}while(carry>0){bytes.push(carry&255);carry>>=8}}for(var k2=0;input[k2]===first&&k2<input.length-1;++k2){bytes.push(0)}if(typeof Buffer!=="undefined"){return Buffer.from(bytes.reverse())}return new Uint8Array(bytes.reverse())};function _encodeWithByteBuffer(input,alphabet){var i=0;var base=alphabet.length;var first=alphabet.charAt(0);var digits=[0];for(i=0;i<input.length();++i){for(var j2=0,carry=input.at(i);j2<digits.length;++j2){carry+=digits[j2]<<8;digits[j2]=carry%base;carry=carry/base|0}while(carry>0){digits.push(carry%base);carry=carry/base|0}}var output="";for(i=0;input.at(i)===0&&i<input.length()-1;++i){output+=first}for(i=digits.length-1;i>=0;--i){output+=alphabet[digits[i]]}return output}}});var require_util7=__commonJS({"node_modules/node-forge/lib/util.js"(exports,module){"use strict";var forge2=require_forge();var baseN=require_baseN();var util=module.exports=forge2.util=forge2.util||{};(function(){if(typeof process!=="undefined"&&process.nextTick&&!process.browser){util.nextTick=process.nextTick;if(typeof setImmediate==="function"){util.setImmediate=setImmediate}else{util.setImmediate=util.nextTick}return}if(typeof setImmediate==="function"){util.setImmediate=function(){return setImmediate.apply(void 0,arguments)};util.nextTick=function(callback){return setImmediate(callback)};return}util.setImmediate=function(callback){setTimeout(callback,0)};if(typeof window!=="undefined"&&typeof window.postMessage==="function"){let handler2=function(event){if(event.source===window&&event.data===msg){event.stopPropagation();var copy=callbacks.slice();callbacks.length=0;copy.forEach(function(callback){callback()})}};var handler=handler2;var msg="forge.setImmediate";var callbacks=[];util.setImmediate=function(callback){callbacks.push(callback);if(callbacks.length===1){window.postMessage(msg,"*")}};window.addEventListener("message",handler2,true)}if(typeof MutationObserver!=="undefined"){var now=Date.now();var attr=true;var div=document.createElement("div");var callbacks=[];new MutationObserver(function(){var copy=callbacks.slice();callbacks.length=0;copy.forEach(function(callback){callback()})}).observe(div,{attributes:true});var oldSetImmediate=util.setImmediate;util.setImmediate=function(callback){if(Date.now()-now>15){now=Date.now();oldSetImmediate(callback)}else{callbacks.push(callback);if(callbacks.length===1){div.setAttribute("a",attr=!attr)}}}}util.nextTick=util.setImmediate})();util.isNodejs=typeof process!=="undefined"&&process.versions&&process.versions.node;util.globalScope=(function(){if(util.isNodejs){return global}return typeof self==="undefined"?window:self})();util.isArray=Array.isArray||function(x){return Object.prototype.toString.call(x)==="[object Array]"};util.isArrayBuffer=function(x){return typeof ArrayBuffer!=="undefined"&&x instanceof ArrayBuffer};util.isArrayBufferView=function(x){return x&&util.isArrayBuffer(x.buffer)&&x.byteLength!==void 0};function _checkBitsParam(n){if(!(n===8||n===16||n===24||n===32)){throw new Error("Only 8, 16, 24, or 32 bits supported: "+n)}}util.ByteBuffer=ByteStringBuffer;function ByteStringBuffer(b2){this.data="";this.read=0;if(typeof b2==="string"){this.data=b2}else if(util.isArrayBuffer(b2)||util.isArrayBufferView(b2)){if(typeof Buffer!=="undefined"&&b2 instanceof Buffer){this.data=b2.toString("binary")}else{var arr=new Uint8Array(b2);try{this.data=String.fromCharCode.apply(null,arr)}catch(e){for(var i=0;i<arr.length;++i){this.putByte(arr[i])}}}}else if(b2 instanceof ByteStringBuffer||typeof b2==="object"&&typeof b2.data==="string"&&typeof b2.read==="number"){this.data=b2.data;this.read=b2.read}this._constructedStringLength=0}util.ByteStringBuffer=ByteStringBuffer;var _MAX_CONSTRUCTED_STRING_LENGTH=4096;util.ByteStringBuffer.prototype._optimizeConstructedString=function(x){this._constructedStringLength+=x;if(this._constructedStringLength>_MAX_CONSTRUCTED_STRING_LENGTH){this.data.substr(0,1);this._constructedStringLength=0}};util.ByteStringBuffer.prototype.length=function(){return this.data.length-this.read};util.ByteStringBuffer.prototype.isEmpty=function(){return this.length()<=0};util.ByteStringBuffer.prototype.putByte=function(b2){return this.putBytes(String.fromCharCode(b2))};util.ByteStringBuffer.prototype.fillWithByte=function(b2,n){b2=String.fromCharCode(b2);var d=this.data;while(n>0){if(n&1){d+=b2}n>>>=1;if(n>0){b2+=b2}}this.data=d;this._optimizeConstructedString(n);return this};util.ByteStringBuffer.prototype.putBytes=function(bytes){this.data+=bytes;this._optimizeConstructedString(bytes.length);return this};util.ByteStringBuffer.prototype.putString=function(str){return this.putBytes(util.encodeUtf8(str))};util.ByteStringBuffer.prototype.putInt16=function(i){return this.putBytes(String.fromCharCode(i>>8&255)+String.fromCharCode(i&255))};util.ByteStringBuffer.prototype.putInt24=function(i){return this.putBytes(String.fromCharCode(i>>16&255)+String.fromCharCode(i>>8&255)+String.fromCharCode(i&255))};util.ByteStringBuffer.prototype.putInt32=function(i){return this.putBytes(String.fromCharCode(i>>24&255)+String.fromCharCode(i>>16&255)+String.fromCharCode(i>>8&255)+String.fromCharCode(i&255))};util.ByteStringBuffer.prototype.putInt16Le=function(i){return this.putBytes(String.fromCharCode(i&255)+String.fromCharCode(i>>8&255))};util.ByteStringBuffer.prototype.putInt24Le=function(i){return this.putBytes(String.fromCharCode(i&255)+String.fromCharCode(i>>8&255)+String.fromCharCode(i>>16&255))};util.ByteStringBuffer.prototype.putInt32Le=function(i){return this.putBytes(String.fromCharCode(i&255)+String.fromCharCode(i>>8&255)+String.fromCharCode(i>>16&255)+String.fromCharCode(i>>24&255))};util.ByteStringBuffer.prototype.putInt=function(i,n){_checkBitsParam(n);var bytes="";do{n-=8;bytes+=String.fromCharCode(i>>n&255)}while(n>0);return this.putBytes(bytes)};util.ByteStringBuffer.prototype.putSignedInt=function(i,n){if(i<0){i+=2<<n-1}return this.putInt(i,n)};util.ByteStringBuffer.prototype.putBuffer=function(buffer){return this.putBytes(buffer.getBytes())};util.ByteStringBuffer.prototype.getByte=function(){return this.data.charCodeAt(this.read++)};util.ByteStringBuffer.prototype.getInt16=function(){var rval=this.data.charCodeAt(this.read)<<8^this.data.charCodeAt(this.read+1);this.read+=2;return rval};util.ByteStringBuffer.prototype.getInt24=function(){var rval=this.data.charCodeAt(this.read)<<16^this.data.charCodeAt(this.read+1)<<8^this.data.charCodeAt(this.read+2);this.read+=3;return rval};util.ByteStringBuffer.prototype.getInt32=function(){var rval=this.data.charCodeAt(this.read)<<24^this.data.charCodeAt(this.read+1)<<16^this.data.charCodeAt(this.read+2)<<8^this.data.charCodeAt(this.read+3);this.read+=4;return rval};util.ByteStringBuffer.prototype.getInt16Le=function(){var rval=this.data.charCodeAt(this.read)^this.data.charCodeAt(this.read+1)<<8;this.read+=2;return rval};util.ByteStringBuffer.prototype.getInt24Le=function(){var rval=this.data.charCodeAt(this.read)^this.data.charCodeAt(this.read+1)<<8^this.data.charCodeAt(this.read+2)<<16;this.read+=3;return rval};util.ByteStringBuffer.prototype.getInt32Le=function(){var rval=this.data.charCodeAt(this.read)^this.data.charCodeAt(this.read+1)<<8^this.data.charCodeAt(this.read+2)<<16^this.data.charCodeAt(this.read+3)<<24;this.read+=4;return rval};util.ByteStringBuffer.prototype.getInt=function(n){_checkBitsParam(n);var rval=0;do{rval=(rval<<8)+this.data.charCodeAt(this.read++);n-=8}while(n>0);return rval};util.ByteStringBuffer.prototype.getSignedInt=function(n){var x=this.getInt(n);var max=2<<n-2;if(x>=max){x-=max<<1}return x};util.ByteStringBuffer.prototype.getBytes=function(count){var rval;if(count){count=Math.min(this.length(),count);rval=this.data.slice(this.read,this.read+count);this.read+=count}else if(count===0){rval=""}else{rval=this.read===0?this.data:this.data.slice(this.read);this.clear()}return rval};util.ByteStringBuffer.prototype.bytes=function(count){return typeof count==="undefined"?this.data.slice(this.read):this.data.slice(this.read,this.read+count)};util.ByteStringBuffer.prototype.at=function(i){return this.data.charCodeAt(this.read+i)};util.ByteStringBuffer.prototype.setAt=function(i,b2){this.data=this.data.substr(0,this.read+i)+String.fromCharCode(b2)+this.data.substr(this.read+i+1);return this};util.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)};util.ByteStringBuffer.prototype.copy=function(){var c=util.createBuffer(this.data);c.read=this.read;return c};util.ByteStringBuffer.prototype.compact=function(){if(this.read>0){this.data=this.data.slice(this.read);this.read=0}return this};util.ByteStringBuffer.prototype.clear=function(){this.data="";this.read=0;return this};util.ByteStringBuffer.prototype.truncate=function(count){var len=Math.max(0,this.length()-count);this.data=this.data.substr(this.read,len);this.read=0;return this};util.ByteStringBuffer.prototype.toHex=function(){var rval="";for(var i=this.read;i<this.data.length;++i){var b2=this.data.charCodeAt(i);if(b2<16){rval+="0"}rval+=b2.toString(16)}return rval};util.ByteStringBuffer.prototype.toString=function(){return util.decodeUtf8(this.bytes())};function DataBuffer(b2,options){options=options||{};this.read=options.readOffset||0;this.growSize=options.growSize||1024;var isArrayBuffer=util.isArrayBuffer(b2);var isArrayBufferView=util.isArrayBufferView(b2);if(isArrayBuffer||isArrayBufferView){if(isArrayBuffer){this.data=new DataView(b2)}else{this.data=new DataView(b2.buffer,b2.byteOffset,b2.byteLength)}this.write="writeOffset"in options?options.writeOffset:this.data.byteLength;return}this.data=new DataView(new ArrayBuffer(0));this.write=0;if(b2!==null&&b2!==void 0){this.putBytes(b2)}if("writeOffset"in options){this.write=options.writeOffset}}util.DataBuffer=DataBuffer;util.DataBuffer.prototype.length=function(){return this.write-this.read};util.DataBuffer.prototype.isEmpty=function(){return this.length()<=0};util.DataBuffer.prototype.accommodate=function(amount,growSize){if(this.length()>=amount){return this}growSize=Math.max(growSize||this.growSize,amount);var src=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength);var dst=new Uint8Array(this.length()+growSize);dst.set(src);this.data=new DataView(dst.buffer);return this};util.DataBuffer.prototype.putByte=function(b2){this.accommodate(1);this.data.setUint8(this.write++,b2);return this};util.DataBuffer.prototype.fillWithByte=function(b2,n){this.accommodate(n);for(var i=0;i<n;++i){this.data.setUint8(b2)}return this};util.DataBuffer.prototype.putBytes=function(bytes,encoding){if(util.isArrayBufferView(bytes)){var src=new Uint8Array(bytes.buffer,bytes.byteOffset,bytes.byteLength);var len=src.byteLength-src.byteOffset;this.accommodate(len);var dst=new Uint8Array(this.data.buffer,this.write);dst.set(src);this.write+=len;return this}if(util.isArrayBuffer(bytes)){var src=new Uint8Array(bytes);this.accommodate(src.byteLength);var dst=new Uint8Array(this.data.buffer);dst.set(src,this.write);this.write+=src.byteLength;return this}if(bytes instanceof util.DataBuffer||typeof bytes==="object"&&typeof bytes.read==="number"&&typeof bytes.write==="number"&&util.isArrayBufferView(bytes.data)){var src=new Uint8Array(bytes.data.byteLength,bytes.read,bytes.length());this.accommodate(src.byteLength);var dst=new Uint8Array(bytes.data.byteLength,this.write);dst.set(src);this.write+=src.byteLength;return this}if(bytes instanceof util.ByteStringBuffer){bytes=bytes.data;encoding="binary"}encoding=encoding||"binary";if(typeof bytes==="string"){var view;if(encoding==="hex"){this.accommodate(Math.ceil(bytes.length/2));view=new Uint8Array(this.data.buffer,this.write);this.write+=util.binary.hex.decode(bytes,view,this.write);return this}if(encoding==="base64"){this.accommodate(Math.ceil(bytes.length/4)*3);view=new Uint8Array(this.data.buffer,this.write);this.write+=util.binary.base64.decode(bytes,view,this.write);return this}if(encoding==="utf8"){bytes=util.encodeUtf8(bytes);encoding="binary"}if(encoding==="binary"||encoding==="raw"){this.accommodate(bytes.length);view=new Uint8Array(this.data.buffer,this.write);this.write+=util.binary.raw.decode(view);return this}if(encoding==="utf16"){this.accommodate(bytes.length*2);view=new Uint16Array(this.data.buffer,this.write);this.write+=util.text.utf16.encode(view);return this}throw new Error("Invalid encoding: "+encoding)}throw Error("Invalid parameter: "+bytes)};util.DataBuffer.prototype.putBuffer=function(buffer){this.putBytes(buffer);buffer.clear();return this};util.DataBuffer.prototype.putString=function(str){return this.putBytes(str,"utf16")};util.DataBuffer.prototype.putInt16=function(i){this.accommodate(2);this.data.setInt16(this.write,i);this.write+=2;return this};util.DataBuffer.prototype.putInt24=function(i){this.accommodate(3);this.data.setInt16(this.write,i>>8&65535);this.data.setInt8(this.write,i>>16&255);this.write+=3;return this};util.DataBuffer.prototype.putInt32=function(i){this.accommodate(4);this.data.setInt32(this.write,i);this.write+=4;return this};util.DataBuffer.prototype.putInt16Le=function(i){this.accommodate(2);this.data.setInt16(this.write,i,true);this.write+=2;return this};util.DataBuffer.prototype.putInt24Le=function(i){this.accommodate(3);this.data.setInt8(this.write,i>>16&255);this.data.setInt16(this.write,i>>8&65535,true);this.write+=3;return this};util.DataBuffer.prototype.putInt32Le=function(i){this.accommodate(4);this.data.setInt32(this.write,i,true);this.write+=4;return this};util.DataBuffer.prototype.putInt=function(i,n){_checkBitsParam(n);this.accommodate(n/8);do{n-=8;this.data.setInt8(this.write++,i>>n&255)}while(n>0);return this};util.DataBuffer.prototype.putSignedInt=function(i,n){_checkBitsParam(n);this.accommodate(n/8);if(i<0){i+=2<<n-1}return this.putInt(i,n)};util.DataBuffer.prototype.getByte=function(){return this.data.getInt8(this.read++)};util.DataBuffer.prototype.getInt16=function(){var rval=this.data.getInt16(this.read);this.read+=2;return rval};util.DataBuffer.prototype.getInt24=function(){var rval=this.data.getInt16(this.read)<<8^this.data.getInt8(this.read+2);this.read+=3;return rval};util.DataBuffer.prototype.getInt32=function(){var rval=this.data.getInt32(this.read);this.read+=4;return rval};util.DataBuffer.prototype.getInt16Le=function(){var rval=this.data.getInt16(this.read,true);this.read+=2;return rval};util.DataBuffer.prototype.getInt24Le=function(){var rval=this.data.getInt8(this.read)^this.data.getInt16(this.read+1,true)<<8;this.read+=3;return rval};util.DataBuffer.prototype.getInt32Le=function(){var rval=this.data.getInt32(this.read,true);this.read+=4;return rval};util.DataBuffer.prototype.getInt=function(n){_checkBitsParam(n);var rval=0;do{rval=(rval<<8)+this.data.getInt8(this.read++);n-=8}while(n>0);return rval};util.DataBuffer.prototype.getSignedInt=function(n){var x=this.getInt(n);var max=2<<n-2;if(x>=max){x-=max<<1}return x};util.DataBuffer.prototype.getBytes=function(count){var rval;if(count){count=Math.min(this.length(),count);rval=this.data.slice(this.read,this.read+count);this.read+=count}else if(count===0){rval=""}else{rval=this.read===0?this.data:this.data.slice(this.read);this.clear()}return rval};util.DataBuffer.prototype.bytes=function(count){return typeof count==="undefined"?this.data.slice(this.read):this.data.slice(this.read,this.read+count)};util.DataBuffer.prototype.at=function(i){return this.data.getUint8(this.read+i)};util.DataBuffer.prototype.setAt=function(i,b2){this.data.setUint8(i,b2);return this};util.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)};util.DataBuffer.prototype.copy=function(){return new util.DataBuffer(this)};util.DataBuffer.prototype.compact=function(){if(this.read>0){var src=new Uint8Array(this.data.buffer,this.read);var dst=new Uint8Array(src.byteLength);dst.set(src);this.data=new DataView(dst);this.write-=this.read;this.read=0}return this};util.DataBuffer.prototype.clear=function(){this.data=new DataView(new ArrayBuffer(0));this.read=this.write=0;return this};util.DataBuffer.prototype.truncate=function(count){this.write=Math.max(0,this.length()-count);this.read=Math.min(this.read,this.write);return this};util.DataBuffer.prototype.toHex=function(){var rval="";for(var i=this.read;i<this.data.byteLength;++i){var b2=this.data.getUint8(i);if(b2<16){rval+="0"}rval+=b2.toString(16)}return rval};util.DataBuffer.prototype.toString=function(encoding){var view=new Uint8Array(this.data,this.read,this.length());encoding=encoding||"utf8";if(encoding==="binary"||encoding==="raw"){return util.binary.raw.encode(view)}if(encoding==="hex"){return util.binary.hex.encode(view)}if(encoding==="base64"){return util.binary.base64.encode(view)}if(encoding==="utf8"){return util.text.utf8.decode(view)}if(encoding==="utf16"){return util.text.utf16.decode(view)}throw new Error("Invalid encoding: "+encoding)};util.createBuffer=function(input,encoding){encoding=encoding||"raw";if(input!==void 0&&encoding==="utf8"){input=util.encodeUtf8(input)}return new util.ByteBuffer(input)};util.fillString=function(c,n){var s3="";while(n>0){if(n&1){s3+=c}n>>>=1;if(n>0){c+=c}}return s3};util.xorBytes=function(s1,s22,n){var s3="";var b2="";var t="";var i=0;var c=0;for(;n>0;--n,++i){b2=s1.charCodeAt(i)^s22.charCodeAt(i);if(c>=10){s3+=t;t="";c=0}t+=String.fromCharCode(b2);++c}s3+=t;return s3};util.hexToBytes=function(hex){var rval="";var i=0;if(hex.length&true){i=1;rval+=String.fromCharCode(parseInt(hex[0],16))}for(;i<hex.length;i+=2){rval+=String.fromCharCode(parseInt(hex.substr(i,2),16))}return rval};util.bytesToHex=function(bytes){return util.createBuffer(bytes).toHex()};util.int32ToBytes=function(i){return String.fromCharCode(i>>24&255)+String.fromCharCode(i>>16&255)+String.fromCharCode(i>>8&255)+String.fromCharCode(i&255)};var _base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var _base64Idx=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];var _base58="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";util.encode64=function(input,maxline){var line="";var output="";var chr1,chr2,chr3;var i=0;while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);line+=_base64.charAt(chr1>>2);line+=_base64.charAt((chr1&3)<<4|chr2>>4);if(isNaN(chr2)){line+="=="}else{line+=_base64.charAt((chr2&15)<<2|chr3>>6);line+=isNaN(chr3)?"=":_base64.charAt(chr3&63)}if(maxline&&line.length>maxline){output+=line.substr(0,maxline)+"\r\n";line=line.substr(maxline)}}output+=line;return output};util.decode64=function(input){input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");var output="";var enc1,enc2,enc3,enc4;var i=0;while(i<input.length){enc1=_base64Idx[input.charCodeAt(i++)-43];enc2=_base64Idx[input.charCodeAt(i++)-43];enc3=_base64Idx[input.charCodeAt(i++)-43];enc4=_base64Idx[input.charCodeAt(i++)-43];output+=String.fromCharCode(enc1<<2|enc2>>4);if(enc3!==64){output+=String.fromCharCode((enc2&15)<<4|enc3>>2);if(enc4!==64){output+=String.fromCharCode((enc3&3)<<6|enc4)}}}return output};util.encodeUtf8=function(str){return unescape(encodeURIComponent(str))};util.decodeUtf8=function(str){return decodeURIComponent(escape(str))};util.binary={raw:{},hex:{},base64:{},base58:{},baseN:{encode:baseN.encode,decode:baseN.decode}};util.binary.raw.encode=function(bytes){return String.fromCharCode.apply(null,bytes)};util.binary.raw.decode=function(str,output,offset){var out=output;if(!out){out=new Uint8Array(str.length)}offset=offset||0;var j2=offset;for(var i=0;i<str.length;++i){out[j2++]=str.charCodeAt(i)}return output?j2-offset:out};util.binary.hex.encode=util.bytesToHex;util.binary.hex.decode=function(hex,output,offset){var out=output;if(!out){out=new Uint8Array(Math.ceil(hex.length/2))}offset=offset||0;var i=0,j2=offset;if(hex.length&1){i=1;out[j2++]=parseInt(hex[0],16)}for(;i<hex.length;i+=2){out[j2++]=parseInt(hex.substr(i,2),16)}return output?j2-offset:out};util.binary.base64.encode=function(input,maxline){var line="";var output="";var chr1,chr2,chr3;var i=0;while(i<input.byteLength){chr1=input[i++];chr2=input[i++];chr3=input[i++];line+=_base64.charAt(chr1>>2);line+=_base64.charAt((chr1&3)<<4|chr2>>4);if(isNaN(chr2)){line+="=="}else{line+=_base64.charAt((chr2&15)<<2|chr3>>6);line+=isNaN(chr3)?"=":_base64.charAt(chr3&63)}if(maxline&&line.length>maxline){output+=line.substr(0,maxline)+"\r\n";line=line.substr(maxline)}}output+=line;return output};util.binary.base64.decode=function(input,output,offset){var out=output;if(!out){out=new Uint8Array(Math.ceil(input.length/4)*3)}input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");offset=offset||0;var enc1,enc2,enc3,enc4;var i=0,j2=offset;while(i<input.length){enc1=_base64Idx[input.charCodeAt(i++)-43];enc2=_base64Idx[input.charCodeAt(i++)-43];enc3=_base64Idx[input.charCodeAt(i++)-43];enc4=_base64Idx[input.charCodeAt(i++)-43];out[j2++]=enc1<<2|enc2>>4;if(enc3!==64){out[j2++]=(enc2&15)<<4|enc3>>2;if(enc4!==64){out[j2++]=(enc3&3)<<6|enc4}}}return output?j2-offset:out.subarray(0,j2)};util.binary.base58.encode=function(input,maxline){return util.binary.baseN.encode(input,_base58,maxline)};util.binary.base58.decode=function(input,maxline){return util.binary.baseN.decode(input,_base58,maxline)};util.text={utf8:{},utf16:{}};util.text.utf8.encode=function(str,output,offset){str=util.encodeUtf8(str);var out=output;if(!out){out=new Uint8Array(str.length)}offset=offset||0;var j2=offset;for(var i=0;i<str.length;++i){out[j2++]=str.charCodeAt(i)}return output?j2-offset:out};util.text.utf8.decode=function(bytes){return util.decodeUtf8(String.fromCharCode.apply(null,bytes))};util.text.utf16.encode=function(str,output,offset){var out=output;if(!out){out=new Uint8Array(str.length*2)}var view=new Uint16Array(out.buffer);offset=offset||0;var j2=offset;var k2=offset;for(var i=0;i<str.length;++i){view[k2++]=str.charCodeAt(i);j2+=2}return output?j2-offset:out};util.text.utf16.decode=function(bytes){return String.fromCharCode.apply(null,new Uint16Array(bytes.buffer))};util.deflate=function(api,bytes,raw){bytes=util.decode64(api.deflate(util.encode64(bytes)).rval);if(raw){var start=2;var flg=bytes.charCodeAt(1);if(flg&32){start=6}bytes=bytes.substring(start,bytes.length-4)}return bytes};util.inflate=function(api,bytes,raw){var rval=api.inflate(util.encode64(bytes)).rval;return rval===null?null:util.decode64(rval)};var _setStorageObject=function(api,id,obj){if(!api){throw new Error("WebStorage not available.")}var rval;if(obj===null){rval=api.removeItem(id)}else{obj=util.encode64(JSON.stringify(obj));rval=api.setItem(id,obj)}if(typeof rval!=="undefined"&&rval.rval!==true){var error=new Error(rval.error.message);error.id=rval.error.id;error.name=rval.error.name;throw error}};var _getStorageObject=function(api,id){if(!api){throw new Error("WebStorage not available.")}var rval=api.getItem(id);if(api.init){if(rval.rval===null){if(rval.error){var error=new Error(rval.error.message);error.id=rval.error.id;error.name=rval.error.name;throw error}rval=null}else{rval=rval.rval}}if(rval!==null){rval=JSON.parse(util.decode64(rval))}return rval};var _setItem=function(api,id,key,data){var obj=_getStorageObject(api,id);if(obj===null){obj={}}obj[key]=data;_setStorageObject(api,id,obj)};var _getItem=function(api,id,key){var rval=_getStorageObject(api,id);if(rval!==null){rval=key in rval?rval[key]:null}return rval};var _removeItem=function(api,id,key){var obj=_getStorageObject(api,id);if(obj!==null&&key in obj){delete obj[key];var empty=true;for(var prop in obj){empty=false;break}if(empty){obj=null}_setStorageObject(api,id,obj)}};var _clearItems=function(api,id){_setStorageObject(api,id,null)};var _callStorageFunction=function(func,args,location){var rval=null;if(typeof location==="undefined"){location=["web","flash"]}var type;var done=false;var exception=null;for(var idx in location){type=location[idx];try{if(type==="flash"||type==="both"){if(args[0]===null){throw new Error("Flash local storage not available.")}rval=func.apply(this,args);done=type==="flash"}if(type==="web"||type==="both"){args[0]=localStorage;rval=func.apply(this,args);done=true}}catch(ex){exception=ex}if(done){break}}if(!done){throw exception}return rval};util.setItem=function(api,id,key,data,location){_callStorageFunction(_setItem,arguments,location)};util.getItem=function(api,id,key,location){return _callStorageFunction(_getItem,arguments,location)};util.removeItem=function(api,id,key,location){_callStorageFunction(_removeItem,arguments,location)};util.clearItems=function(api,id,location){_callStorageFunction(_clearItems,arguments,location)};util.isEmpty=function(obj){for(var prop in obj){if(obj.hasOwnProperty(prop)){return false}}return true};util.format=function(format2){var re2=/%./g;var match;var part;var argi=0;var parts=[];var last=0;while(match=re2.exec(format2)){part=format2.substring(last,re2.lastIndex-2);if(part.length>0){parts.push(part)}last=re2.lastIndex;var code=match[0][1];switch(code){case"s":case"o":if(argi<arguments.length){parts.push(arguments[argi+++1])}else{parts.push("<?>")}break;case"%":parts.push("%");break;default:parts.push("<%"+code+"?>")}}parts.push(format2.substring(last));return parts.join("")};util.formatNumber=function(number,decimals,dec_point,thousands_sep){var n=number,c=isNaN(decimals=Math.abs(decimals))?2:decimals;var d=dec_point===void 0?",":dec_point;var t=thousands_sep===void 0?".":thousands_sep,s3=n<0?"-":"";var i=parseInt(n=Math.abs(+n||0).toFixed(c),10)+"";var j2=i.length>3?i.length%3:0;return s3+(j2?i.substr(0,j2)+t:"")+i.substr(j2).replace(/(\d{3})(?=\d)/g,"$1"+t)+(c?d+Math.abs(n-i).toFixed(c).slice(2):"")};util.formatSize=function(size){if(size>=1073741824){size=util.formatNumber(size/1073741824,2,".","")+" GiB"}else if(size>=1048576){size=util.formatNumber(size/1048576,2,".","")+" MiB"}else if(size>=1024){size=util.formatNumber(size/1024,0)+" KiB"}else{size=util.formatNumber(size,0)+" bytes"}return size};util.bytesFromIP=function(ip){if(ip.indexOf(".")!==-1){return util.bytesFromIPv4(ip)}if(ip.indexOf(":")!==-1){return util.bytesFromIPv6(ip)}return null};util.bytesFromIPv4=function(ip){ip=ip.split(".");if(ip.length!==4){return null}var b2=util.createBuffer();for(var i=0;i<ip.length;++i){var num=parseInt(ip[i],10);if(isNaN(num)){return null}b2.putByte(num)}return b2.getBytes()};util.bytesFromIPv6=function(ip){var blanks=0;ip=ip.split(":").filter(function(e){if(e.length===0)++blanks;return true});var zeros=(8-ip.length+blanks)*2;var b2=util.createBuffer();for(var i=0;i<8;++i){if(!ip[i]||ip[i].length===0){b2.fillWithByte(0,zeros);zeros=0;continue}var bytes=util.hexToBytes(ip[i]);if(bytes.length<2){b2.putByte(0)}b2.putBytes(bytes)}return b2.getBytes()};util.bytesToIP=function(bytes){if(bytes.length===4){return util.bytesToIPv4(bytes)}if(bytes.length===16){return util.bytesToIPv6(bytes)}return null};util.bytesToIPv4=function(bytes){if(bytes.length!==4){return null}var ip=[];for(var i=0;i<bytes.length;++i){ip.push(bytes.charCodeAt(i))}return ip.join(".")};util.bytesToIPv6=function(bytes){if(bytes.length!==16){return null}var ip=[];var zeroGroups=[];var zeroMaxGroup=0;for(var i=0;i<bytes.length;i+=2){var hex=util.bytesToHex(bytes[i]+bytes[i+1]);while(hex[0]==="0"&&hex!=="0"){hex=hex.substr(1)}if(hex==="0"){var last=zeroGroups[zeroGroups.length-1];var idx=ip.length;if(!last||idx!==last.end+1){zeroGroups.push({start:idx,end:idx})}else{last.end=idx;if(last.end-last.start>zeroGroups[zeroMaxGroup].end-zeroGroups[zeroMaxGroup].start){zeroMaxGroup=zeroGroups.length-1}}}ip.push(hex)}if(zeroGroups.length>0){var group=zeroGroups[zeroMaxGroup];if(group.end-group.start>0){ip.splice(group.start,group.end-group.start+1,"");if(group.start===0){ip.unshift("")}if(group.end===7){ip.push("")}}}return ip.join(":")};util.estimateCores=function(options,callback){if(typeof options==="function"){callback=options;options={}}options=options||{};if("cores"in util&&!options.update){return callback(null,util.cores)}if(typeof navigator!=="undefined"&&"hardwareConcurrency"in navigator&&navigator.hardwareConcurrency>0){util.cores=navigator.hardwareConcurrency;return callback(null,util.cores)}if(typeof Worker==="undefined"){util.cores=1;return callback(null,util.cores)}if(typeof Blob==="undefined"){util.cores=2;return callback(null,util.cores)}var blobUrl=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(e){var st2=Date.now();var et2=st2+4;while(Date.now()<et2);self.postMessage({st:st2,et:et2})})}.toString(),")()"],{type:"application/javascript"}));sample([],5,16);function sample(max,samples,numWorkers){if(samples===0){var avg=Math.floor(max.reduce(function(avg2,x){return avg2+x},0)/max.length);util.cores=Math.max(1,avg);URL.revokeObjectURL(blobUrl);return callback(null,util.cores)}map(numWorkers,function(err2,results){max.push(reduce(numWorkers,results));sample(max,samples-1,numWorkers)})}function map(numWorkers,callback2){var workers=[];var results=[];for(var i=0;i<numWorkers;++i){var worker=new Worker(blobUrl);worker.addEventListener("message",function(e){results.push(e.data);if(results.length===numWorkers){for(var i2=0;i2<numWorkers;++i2){workers[i2].terminate()}callback2(null,results)}});workers.push(worker)}for(var i=0;i<numWorkers;++i){workers[i].postMessage(i)}}function reduce(numWorkers,results){var overlaps=[];for(var n=0;n<numWorkers;++n){var r1=results[n];var overlap=overlaps[n]=[];for(var i=0;i<numWorkers;++i){if(n===i){continue}var r2=results[i];if(r1.st>r2.st&&r1.st<r2.et||r2.st>r1.st&&r2.st<r1.et){overlap.push(i)}}}return overlaps.reduce(function(max,overlap2){return Math.max(max,overlap2.length)},0)}}}});var require_cipher=__commonJS({"node_modules/node-forge/lib/cipher.js"(exports,module){"use strict";var forge2=require_forge();require_util7();module.exports=forge2.cipher=forge2.cipher||{};forge2.cipher.algorithms=forge2.cipher.algorithms||{};forge2.cipher.createCipher=function(algorithm,key){var api=algorithm;if(typeof api==="string"){api=forge2.cipher.getAlgorithm(api);if(api){api=api()}}if(!api){throw new Error("Unsupported algorithm: "+algorithm)}return new forge2.cipher.BlockCipher({algorithm:api,key,decrypt:false})};forge2.cipher.createDecipher=function(algorithm,key){var api=algorithm;if(typeof api==="string"){api=forge2.cipher.getAlgorithm(api);if(api){api=api()}}if(!api){throw new Error("Unsupported algorithm: "+algorithm)}return new forge2.cipher.BlockCipher({algorithm:api,key,decrypt:true})};forge2.cipher.registerAlgorithm=function(name2,algorithm){name2=name2.toUpperCase();forge2.cipher.algorithms[name2]=algorithm};forge2.cipher.getAlgorithm=function(name2){name2=name2.toUpperCase();if(name2 in forge2.cipher.algorithms){return forge2.cipher.algorithms[name2]}return null};var BlockCipher=forge2.cipher.BlockCipher=function(options){this.algorithm=options.algorithm;this.mode=this.algorithm.mode;this.blockSize=this.mode.blockSize;this._finish=false;this._input=null;this.output=null;this._op=options.decrypt?this.mode.decrypt:this.mode.encrypt;this._decrypt=options.decrypt;this.algorithm.initialize(options)};BlockCipher.prototype.start=function(options){options=options||{};var opts={};for(var key in options){opts[key]=options[key]}opts.decrypt=this._decrypt;this._finish=false;this._input=forge2.util.createBuffer();this.output=options.output||forge2.util.createBuffer();this.mode.start(opts)};BlockCipher.prototype.update=function(input){if(input){this._input.putBuffer(input)}while(!this._op.call(this.mode,this._input,this.output,this._finish)&&!this._finish){}this._input.compact()};BlockCipher.prototype.finish=function(pad){if(pad&&(this.mode.name==="ECB"||this.mode.name==="CBC")){this.mode.pad=function(input){return pad(this.blockSize,input,false)};this.mode.unpad=function(output){return pad(this.blockSize,output,true)}}var options={};options.decrypt=this._decrypt;options.overflow=this._input.length()%this.blockSize;if(!this._decrypt&&this.mode.pad){if(!this.mode.pad(this._input,options)){return false}}this._finish=true;this.update();if(this._decrypt&&this.mode.unpad){if(!this.mode.unpad(this.output,options)){return false}}if(this.mode.afterFinish){if(!this.mode.afterFinish(this.output,options)){return false}}return true}}});var require_cipherModes=__commonJS({"node_modules/node-forge/lib/cipherModes.js"(exports,module){"use strict";var forge2=require_forge();require_util7();forge2.cipher=forge2.cipher||{};var modes=module.exports=forge2.cipher.modes=forge2.cipher.modes||{};modes.ecb=function(options){options=options||{};this.name="ECB";this.cipher=options.cipher;this.blockSize=options.blockSize||16;this._ints=this.blockSize/4;this._inBlock=new Array(this._ints);this._outBlock=new Array(this._ints)};modes.ecb.prototype.start=function(options){};modes.ecb.prototype.encrypt=function(input,output,finish){if(input.length()<this.blockSize&&!(finish&&input.length()>0)){return true}for(var i=0;i<this._ints;++i){this._inBlock[i]=input.getInt32()}this.cipher.encrypt(this._inBlock,this._outBlock);for(var i=0;i<this._ints;++i){output.putInt32(this._outBlock[i])}};modes.ecb.prototype.decrypt=function(input,output,finish){if(input.length()<this.blockSize&&!(finish&&input.length()>0)){return true}for(var i=0;i<this._ints;++i){this._inBlock[i]=input.getInt32()}this.cipher.decrypt(this._inBlock,this._outBlock);for(var i=0;i<this._ints;++i){output.putInt32(this._outBlock[i])}};modes.ecb.prototype.pad=function(input,options){var padding=input.length()===this.blockSize?this.blockSize:this.blockSize-input.length();input.fillWithByte(padding,padding);return true};modes.ecb.prototype.unpad=function(output,options){if(options.overflow>0){return false}var len=output.length();var count=output.at(len-1);if(count>this.blockSize<<2){return false}output.truncate(count);return true};modes.cbc=function(options){options=options||{};this.name="CBC";this.cipher=options.cipher;this.blockSize=options.blockSize||16;this._ints=this.blockSize/4;this._inBlock=new Array(this._ints);this._outBlock=new Array(this._ints)};modes.cbc.prototype.start=function(options){if(options.iv===null){if(!this._prev){throw new Error("Invalid IV parameter.")}this._iv=this._prev.slice(0)}else if(!("iv"in options)){throw new Error("Invalid IV parameter.")}else{this._iv=transformIV(options.iv,this.blockSize);this._prev=this._iv.slice(0)}};modes.cbc.prototype.encrypt=function(input,output,finish){if(input.length()<this.blockSize&&!(finish&&input.length()>0)){return true}for(var i=0;i<this._ints;++i){this._inBlock[i]=this._prev[i]^input.getInt32()}this.cipher.encrypt(this._inBlock,this._outBlock);for(var i=0;i<this._ints;++i){output.putInt32(this._outBlock[i])}this._prev=this._outBlock};modes.cbc.prototype.decrypt=function(input,output,finish){if(input.length()<this.blockSize&&!(finish&&input.length()>0)){return true}for(var i=0;i<this._ints;++i){this._inBlock[i]=input.getInt32()}this.cipher.decrypt(this._inBlock,this._outBlock);for(var i=0;i<this._ints;++i){output.putInt32(this._prev[i]^this._outBlock[i])}this._prev=this._inBlock.slice(0)};modes.cbc.prototype.pad=function(input,options){var padding=input.length()===this.blockSize?this.blockSize:this.blockSize-input.length();input.fillWithByte(padding,padding);return true};modes.cbc.prototype.unpad=function(output,options){if(options.overflow>0){return false}var len=output.length();var count=output.at(len-1);if(count>this.blockSize<<2){return false}output.truncate(count);return true};modes.cfb=function(options){options=options||{};this.name="CFB";this.cipher=options.cipher;this.blockSize=options.blockSize||16;this._ints=this.blockSize/4;this._inBlock=null;this._outBlock=new Array(this._ints);this._partialBlock=new Array(this._ints);this._partialOutput=forge2.util.createBuffer();this._partialBytes=0};modes.cfb.prototype.start=function(options){if(!("iv"in options)){throw new Error("Invalid IV parameter.")}this._iv=transformIV(options.iv,this.blockSize);this._inBlock=this._iv.slice(0);this._partialBytes=0};modes.cfb.prototype.encrypt=function(input,output,finish){var inputLength=input.length();if(inputLength===0){return true}this.cipher.encrypt(this._inBlock,this._outBlock);if(this._partialBytes===0&&inputLength>=this.blockSize){for(var i=0;i<this._ints;++i){this._inBlock[i]=input.getInt32()^this._outBlock[i];output.putInt32(this._inBlock[i])}return}var partialBytes=(this.blockSize-inputLength)%this.blockSize;if(partialBytes>0){partialBytes=this.blockSize-partialBytes}this._partialOutput.clear();for(var i=0;i<this._ints;++i){this._partialBlock[i]=input.getInt32()^this._outBlock[i];this._partialOutput.putInt32(this._partialBlock[i])}if(partialBytes>0){input.read-=this.blockSize}else{for(var i=0;i<this._ints;++i){this._inBlock[i]=this._partialBlock[i]}}if(this._partialBytes>0){this._partialOutput.getBytes(this._partialBytes)}if(partialBytes>0&&!finish){output.putBytes(this._partialOutput.getBytes(partialBytes-this._partialBytes));this._partialBytes=partialBytes;return true}output.putBytes(this._partialOutput.getBytes(inputLength-this._partialBytes));this._partialBytes=0};modes.cfb.prototype.decrypt=function(input,output,finish){var inputLength=input.length();if(inputLength===0){return true}this.cipher.encrypt(this._inBlock,this._outBlock);if(this._partialBytes===0&&inputLength>=this.blockSize){for(var i=0;i<this._ints;++i){this._inBlock[i]=input.getInt32();output.putInt32(this._inBlock[i]^this._outBlock[i])}return}var partialBytes=(this.blockSize-inputLength)%this.blockSize;if(partialBytes>0){partialBytes=this.blockSize-partialBytes}this._partialOutput.clear();for(var i=0;i<this._ints;++i){this._partialBlock[i]=input.getInt32();this._partialOutput.putInt32(this._partialBlock[i]^this._outBlock[i])}if(partialBytes>0){input.read-=this.blockSize}else{for(var i=0;i<this._ints;++i){this._inBlock[i]=this._partialBlock[i]}}if(this._partialBytes>0){this._partialOutput.getBytes(this._partialBytes)}if(partialBytes>0&&!finish){output.putBytes(this._partialOutput.getBytes(partialBytes-this._partialBytes));this._partialBytes=partialBytes;return true}output.putBytes(this._partialOutput.getBytes(inputLength-this._partialBytes));this._partialBytes=0};modes.ofb=function(options){options=options||{};this.name="OFB";this.cipher=options.cipher;this.blockSize=options.blockSize||16;this._ints=this.blockSize/4;this._inBlock=null;this._outBlock=new Array(this._ints);this._partialOutput=forge2.util.createBuffer();this._partialBytes=0};modes.ofb.prototype.start=function(options){if(!("iv"in options)){throw new Error("Invalid IV parameter.")}this._iv=transformIV(options.iv,this.blockSize);this._inBlock=this._iv.slice(0);this._partialBytes=0};modes.ofb.prototype.encrypt=function(input,output,finish){var inputLength=input.length();if(input.length()===0){return true}this.cipher.encrypt(this._inBlock,this._outBlock);if(this._partialBytes===0&&inputLength>=this.blockSize){for(var i=0;i<this._ints;++i){output.putInt32(input.getInt32()^this._outBlock[i]);this._inBlock[i]=this._outBlock[i]}return}var partialBytes=(this.blockSize-inputLength)%this.blockSize;if(partialBytes>0){partialBytes=this.blockSize-partialBytes}this._partialOutput.clear();for(var i=0;i<this._ints;++i){this._partialOutput.putInt32(input.getInt32()^this._outBlock[i])}if(partialBytes>0){input.read-=this.blockSize}else{for(var i=0;i<this._ints;++i){this._inBlock[i]=this._outBlock[i]}}if(this._partialBytes>0){this._partialOutput.getBytes(this._partialBytes)}if(partialBytes>0&&!finish){output.putBytes(this._partialOutput.getBytes(partialBytes-this._partialBytes));this._partialBytes=partialBytes;return true}output.putBytes(this._partialOutput.getBytes(inputLength-this._partialBytes));this._partialBytes=0};modes.ofb.prototype.decrypt=modes.ofb.prototype.encrypt;modes.ctr=function(options){options=options||{};this.name="CTR";this.cipher=options.cipher;this.blockSize=options.blockSize||16;this._ints=this.blockSize/4;this._inBlock=null;this._outBlock=new Array(this._ints);this._partialOutput=forge2.util.createBuffer();this._partialBytes=0};modes.ctr.prototype.start=function(options){if(!("iv"in options)){throw new Error("Invalid IV parameter.")}this._iv=transformIV(options.iv,this.blockSize);this._inBlock=this._iv.slice(0);this._partialBytes=0};modes.ctr.prototype.encrypt=function(input,output,finish){var inputLength=input.length();if(inputLength===0){return true}this.cipher.encrypt(this._inBlock,this._outBlock);if(this._partialBytes===0&&inputLength>=this.blockSize){for(var i=0;i<this._ints;++i){output.putInt32(input.getInt32()^this._outBlock[i])}}else{var partialBytes=(this.blockSize-inputLength)%this.blockSize;if(partialBytes>0){partialBytes=this.blockSize-partialBytes}this._partialOutput.clear();for(var i=0;i<this._ints;++i){this._partialOutput.putInt32(input.getInt32()^this._outBlock[i])}if(partialBytes>0){input.read-=this.blockSize}if(this._partialBytes>0){this._partialOutput.getBytes(this._partialBytes)}if(partialBytes>0&&!finish){output.putBytes(this._partialOutput.getBytes(partialBytes-this._partialBytes));this._partialBytes=partialBytes;return true}output.putBytes(this._partialOutput.getBytes(inputLength-this._partialBytes));this._partialBytes=0}inc32(this._inBlock)};modes.ctr.prototype.decrypt=modes.ctr.prototype.encrypt;modes.gcm=function(options){options=options||{};this.name="GCM";this.cipher=options.cipher;this.blockSize=options.blockSize||16;this._ints=this.blockSize/4;this._inBlock=new Array(this._ints);this._outBlock=new Array(this._ints);this._partialOutput=forge2.util.createBuffer();this._partialBytes=0;this._R=3774873600};modes.gcm.prototype.start=function(options){if(!("iv"in options)){throw new Error("Invalid IV parameter.")}var iv=forge2.util.createBuffer(options.iv);this._cipherLength=0;var additionalData;if("additionalData"in options){additionalData=forge2.util.createBuffer(options.additionalData)}else{additionalData=forge2.util.createBuffer()}if("tagLength"in options){this._tagLength=options.tagLength}else{this._tagLength=128}this._tag=null;if(options.decrypt){this._tag=forge2.util.createBuffer(options.tag).getBytes();if(this._tag.length!==this._tagLength/8){throw new Error("Authentication tag does not match tag length.")}}this._hashBlock=new Array(this._ints);this.tag=null;this._hashSubkey=new Array(this._ints);this.cipher.encrypt([0,0,0,0],this._hashSubkey);this.componentBits=4;this._m=this.generateHashTable(this._hashSubkey,this.componentBits);var ivLength=iv.length();if(ivLength===12){this._j0=[iv.getInt32(),iv.getInt32(),iv.getInt32(),1]}else{this._j0=[0,0,0,0];while(iv.length()>0){this._j0=this.ghash(this._hashSubkey,this._j0,[iv.getInt32(),iv.getInt32(),iv.getInt32(),iv.getInt32()])}this._j0=this.ghash(this._hashSubkey,this._j0,[0,0].concat(from64To32(ivLength*8)))}this._inBlock=this._j0.slice(0);inc32(this._inBlock);this._partialBytes=0;additionalData=forge2.util.createBuffer(additionalData);this._aDataLength=from64To32(additionalData.length()*8);var overflow=additionalData.length()%this.blockSize;if(overflow){additionalData.fillWithByte(0,this.blockSize-overflow)}this._s=[0,0,0,0];while(additionalData.length()>0){this._s=this.ghash(this._hashSubkey,this._s,[additionalData.getInt32(),additionalData.getInt32(),additionalData.getInt32(),additionalData.getInt32()])}};modes.gcm.prototype.encrypt=function(input,output,finish){var inputLength=input.length();if(inputLength===0){return true}this.cipher.encrypt(this._inBlock,this._outBlock);if(this._partialBytes===0&&inputLength>=this.blockSize){for(var i=0;i<this._ints;++i){output.putInt32(this._outBlock[i]^=input.getInt32())}this._cipherLength+=this.blockSize}else{var partialBytes=(this.blockSize-inputLength)%this.blockSize;if(partialBytes>0){partialBytes=this.blockSize-partialBytes}this._partialOutput.clear();for(var i=0;i<this._ints;++i){this._partialOutput.putInt32(input.getInt32()^this._outBlock[i])}if(partialBytes<=0||finish){if(finish){var overflow=inputLength%this.blockSize;this._cipherLength+=overflow;this._partialOutput.truncate(this.blockSize-overflow)}else{this._cipherLength+=this.blockSize}for(var i=0;i<this._ints;++i){this._outBlock[i]=this._partialOutput.getInt32()}this._partialOutput.read-=this.blockSize}if(this._partialBytes>0){this._partialOutput.getBytes(this._partialBytes)}if(partialBytes>0&&!finish){input.read-=this.blockSize;output.putBytes(this._partialOutput.getBytes(partialBytes-this._partialBytes));this._partialBytes=partialBytes;return true}output.putBytes(this._partialOutput.getBytes(inputLength-this._partialBytes));this._partialBytes=0}this._s=this.ghash(this._hashSubkey,this._s,this._outBlock);inc32(this._inBlock)};modes.gcm.prototype.decrypt=function(input,output,finish){var inputLength=input.length();if(inputLength<this.blockSize&&!(finish&&inputLength>0)){return true}this.cipher.encrypt(this._inBlock,this._outBlock);inc32(this._inBlock);this._hashBlock[0]=input.getInt32();this._hashBlock[1]=input.getInt32();this._hashBlock[2]=input.getInt32();this._hashBlock[3]=input.getInt32();this._s=this.ghash(this._hashSubkey,this._s,this._hashBlock);for(var i=0;i<this._ints;++i){output.putInt32(this._outBlock[i]^this._hashBlock[i])}if(inputLength<this.blockSize){this._cipherLength+=inputLength%this.blockSize}else{this._cipherLength+=this.blockSize}};modes.gcm.prototype.afterFinish=function(output,options){var rval=true;if(options.decrypt&&options.overflow){output.truncate(this.blockSize-options.overflow)}this.tag=forge2.util.createBuffer();var lengths=this._aDataLength.concat(from64To32(this._cipherLength*8));this._s=this.ghash(this._hashSubkey,this._s,lengths);var tag=[];this.cipher.encrypt(this._j0,tag);for(var i=0;i<this._ints;++i){this.tag.putInt32(this._s[i]^tag[i])}this.tag.truncate(this.tag.length()%(this._tagLength/8));if(options.decrypt&&this.tag.bytes()!==this._tag){rval=false}return rval};modes.gcm.prototype.multiply=function(x,y){var z_i=[0,0,0,0];var v_i=y.slice(0);for(var i=0;i<128;++i){var x_i=x[i/32|0]&1<<31-i%32;if(x_i){z_i[0]^=v_i[0];z_i[1]^=v_i[1];z_i[2]^=v_i[2];z_i[3]^=v_i[3]}this.pow(v_i,v_i)}return z_i};modes.gcm.prototype.pow=function(x,out){var lsb=x[3]&1;for(var i=3;i>0;--i){out[i]=x[i]>>>1|(x[i-1]&1)<<31}out[0]=x[0]>>>1;if(lsb){out[0]^=this._R}};modes.gcm.prototype.tableMultiply=function(x){var z2=[0,0,0,0];for(var i=0;i<32;++i){var idx=i/8|0;var x_i=x[idx]>>>(7-i%8)*4&15;var ah=this._m[i][x_i];z2[0]^=ah[0];z2[1]^=ah[1];z2[2]^=ah[2];z2[3]^=ah[3]}return z2};modes.gcm.prototype.ghash=function(h,y,x){y[0]^=x[0];y[1]^=x[1];y[2]^=x[2];y[3]^=x[3];return this.tableMultiply(y)};modes.gcm.prototype.generateHashTable=function(h,bits){var multiplier=8/bits;var perInt=4*multiplier;var size=16*multiplier;var m2=new Array(size);for(var i=0;i<size;++i){var tmp=[0,0,0,0];var idx=i/perInt|0;var shft=(perInt-1-i%perInt)*bits;tmp[idx]=1<<bits-1<<shft;m2[i]=this.generateSubHashTable(this.multiply(tmp,h),bits)}return m2};modes.gcm.prototype.generateSubHashTable=function(mid,bits){var size=1<<bits;var half=size>>>1;var m2=new Array(size);m2[half]=mid.slice(0);var i=half>>>1;while(i>0){this.pow(m2[2*i],m2[i]=[]);i>>=1}i=2;while(i<half){for(var j2=1;j2<i;++j2){var m_i=m2[i];var m_j=m2[j2];m2[i+j2]=[m_i[0]^m_j[0],m_i[1]^m_j[1],m_i[2]^m_j[2],m_i[3]^m_j[3]]}i*=2}m2[0]=[0,0,0,0];for(i=half+1;i<size;++i){var c=m2[i^half];m2[i]=[mid[0]^c[0],mid[1]^c[1],mid[2]^c[2],mid[3]^c[3]]}return m2};function transformIV(iv,blockSize){if(typeof iv==="string"){iv=forge2.util.createBuffer(iv)}if(forge2.util.isArray(iv)&&iv.length>4){var tmp=iv;iv=forge2.util.createBuffer();for(var i=0;i<tmp.length;++i){iv.putByte(tmp[i])}}if(iv.length()<blockSize){throw new Error("Invalid IV length; got "+iv.length()+" bytes and expected "+blockSize+" bytes.")}if(!forge2.util.isArray(iv)){var ints=[];var blocks=blockSize/4;for(var i=0;i<blocks;++i){ints.push(iv.getInt32())}iv=ints}return iv}function inc32(block){block[block.length-1]=block[block.length-1]+1&4294967295}function from64To32(num){return[num/4294967296|0,num&4294967295]}}});var require_aes=__commonJS({"node_modules/node-forge/lib/aes.js"(exports,module){"use strict";var forge2=require_forge();require_cipher();require_cipherModes();require_util7();module.exports=forge2.aes=forge2.aes||{};forge2.aes.startEncrypting=function(key,iv,output,mode){var cipher=_createCipher({key,output,decrypt:false,mode});cipher.start(iv);return cipher};forge2.aes.createEncryptionCipher=function(key,mode){return _createCipher({key,output:null,decrypt:false,mode})};forge2.aes.startDecrypting=function(key,iv,output,mode){var cipher=_createCipher({key,output,decrypt:true,mode});cipher.start(iv);return cipher};forge2.aes.createDecryptionCipher=function(key,mode){return _createCipher({key,output:null,decrypt:true,mode})};forge2.aes.Algorithm=function(name2,mode){if(!init){initialize()}var self2=this;self2.name=name2;self2.mode=new mode({blockSize:16,cipher:{encrypt:function(inBlock,outBlock){return _updateBlock(self2._w,inBlock,outBlock,false)},decrypt:function(inBlock,outBlock){return _updateBlock(self2._w,inBlock,outBlock,true)}}});self2._init=false};forge2.aes.Algorithm.prototype.initialize=function(options){if(this._init){return}var key=options.key;var tmp;if(typeof key==="string"&&(key.length===16||key.length===24||key.length===32)){key=forge2.util.createBuffer(key)}else if(forge2.util.isArray(key)&&(key.length===16||key.length===24||key.length===32)){tmp=key;key=forge2.util.createBuffer();for(var i=0;i<tmp.length;++i){key.putByte(tmp[i])}}if(!forge2.util.isArray(key)){tmp=key;key=[];var len=tmp.length();if(len===16||len===24||len===32){len=len>>>2;for(var i=0;i<len;++i){key.push(tmp.getInt32())}}}if(!forge2.util.isArray(key)||!(key.length===4||key.length===6||key.length===8)){throw new Error("Invalid key parameter.")}var mode=this.mode.name;var encryptOp=["CFB","OFB","CTR","GCM"].indexOf(mode)!==-1;this._w=_expandKey(key,options.decrypt&&!encryptOp);this._init=true};forge2.aes._expandKey=function(key,decrypt){if(!init){initialize()}return _expandKey(key,decrypt)};forge2.aes._updateBlock=_updateBlock;registerAlgorithm("AES-ECB",forge2.cipher.modes.ecb);registerAlgorithm("AES-CBC",forge2.cipher.modes.cbc);registerAlgorithm("AES-CFB",forge2.cipher.modes.cfb);registerAlgorithm("AES-OFB",forge2.cipher.modes.ofb);registerAlgorithm("AES-CTR",forge2.cipher.modes.ctr);registerAlgorithm("AES-GCM",forge2.cipher.modes.gcm);function registerAlgorithm(name2,mode){var factory=function(){return new forge2.aes.Algorithm(name2,mode)};forge2.cipher.registerAlgorithm(name2,factory)}var init=false;var Nb=4;var sbox;var isbox;var rcon;var mix;var imix;function initialize(){init=true;rcon=[0,1,2,4,8,16,32,64,128,27,54];var xtime=new Array(256);for(var i=0;i<128;++i){xtime[i]=i<<1;xtime[i+128]=i+128<<1^283}sbox=new Array(256);isbox=new Array(256);mix=new Array(4);imix=new Array(4);for(var i=0;i<4;++i){mix[i]=new Array(256);imix[i]=new Array(256)}var e=0,ei2=0,e2,e4,e8,sx,sx2,me2,ime;for(var i=0;i<256;++i){sx=ei2^ei2<<1^ei2<<2^ei2<<3^ei2<<4;sx=sx>>8^sx&255^99;sbox[e]=sx;isbox[sx]=e;sx2=xtime[sx];e2=xtime[e];e4=xtime[e2];e8=xtime[e4];me2=sx2<<24^sx<<16^sx<<8^(sx^sx2);ime=(e2^e4^e8)<<24^(e^e8)<<16^(e^e4^e8)<<8^(e^e2^e8);for(var n=0;n<4;++n){mix[n][e]=me2;imix[n][sx]=ime;me2=me2<<24|me2>>>8;ime=ime<<24|ime>>>8}if(e===0){e=ei2=1}else{e=e2^xtime[xtime[xtime[e2^e8]]];ei2^=xtime[xtime[ei2]]}}}function _expandKey(key,decrypt){var w2=key.slice(0);var temp,iNk=1;var Nk=w2.length;var Nr1=Nk+6+1;var end=Nb*Nr1;for(var i=Nk;i<end;++i){temp=w2[i-1];if(i%Nk===0){temp=sbox[temp>>>16&255]<<24^sbox[temp>>>8&255]<<16^sbox[temp&255]<<8^sbox[temp>>>24]^rcon[iNk]<<24;iNk++}else if(Nk>6&&i%Nk===4){temp=sbox[temp>>>24]<<24^sbox[temp>>>16&255]<<16^sbox[temp>>>8&255]<<8^sbox[temp&255]}w2[i]=w2[i-Nk]^temp}if(decrypt){var tmp;var m0=imix[0];var m1=imix[1];var m2=imix[2];var m3=imix[3];var wnew=w2.slice(0);end=w2.length;for(var i=0,wi2=end-Nb;i<end;i+=Nb,wi2-=Nb){if(i===0||i===end-Nb){wnew[i]=w2[wi2];wnew[i+1]=w2[wi2+3];wnew[i+2]=w2[wi2+2];wnew[i+3]=w2[wi2+1]}else{for(var n=0;n<Nb;++n){tmp=w2[wi2+n];wnew[i+(3&-n)]=m0[sbox[tmp>>>24]]^m1[sbox[tmp>>>16&255]]^m2[sbox[tmp>>>8&255]]^m3[sbox[tmp&255]]}}}w2=wnew}return w2}function _updateBlock(w2,input,output,decrypt){var Nr2=w2.length/4-1;var m0,m1,m2,m3,sub;if(decrypt){m0=imix[0];m1=imix[1];m2=imix[2];m3=imix[3];sub=isbox}else{m0=mix[0];m1=mix[1];m2=mix[2];m3=mix[3];sub=sbox}var a,b2,c,d,a2,b22,c2;a=input[0]^w2[0];b2=input[decrypt?3:1]^w2[1];c=input[2]^w2[2];d=input[decrypt?1:3]^w2[3];var i=3;for(var round=1;round<Nr2;++round){a2=m0[a>>>24]^m1[b2>>>16&255]^m2[c>>>8&255]^m3[d&255]^w2[++i];b22=m0[b2>>>24]^m1[c>>>16&255]^m2[d>>>8&255]^m3[a&255]^w2[++i];c2=m0[c>>>24]^m1[d>>>16&255]^m2[a>>>8&255]^m3[b2&255]^w2[++i];d=m0[d>>>24]^m1[a>>>16&255]^m2[b2>>>8&255]^m3[c&255]^w2[++i];a=a2;b2=b22;c=c2}output[0]=sub[a>>>24]<<24^sub[b2>>>16&255]<<16^sub[c>>>8&255]<<8^sub[d&255]^w2[++i];output[decrypt?3:1]=sub[b2>>>24]<<24^sub[c>>>16&255]<<16^sub[d>>>8&255]<<8^sub[a&255]^w2[++i];output[2]=sub[c>>>24]<<24^sub[d>>>16&255]<<16^sub[a>>>8&255]<<8^sub[b2&255]^w2[++i];output[decrypt?1:3]=sub[d>>>24]<<24^sub[a>>>16&255]<<16^sub[b2>>>8&255]<<8^sub[c&255]^w2[++i]}function _createCipher(options){options=options||{};var mode=(options.mode||"CBC").toUpperCase();var algorithm="AES-"+mode;var cipher;if(options.decrypt){cipher=forge2.cipher.createDecipher(algorithm,options.key)}else{cipher=forge2.cipher.createCipher(algorithm,options.key)}var start=cipher.start;cipher.start=function(iv,options2){var output=null;if(options2 instanceof forge2.util.ByteBuffer){output=options2;options2={}}options2=options2||{};options2.output=output;options2.iv=iv;start.call(cipher,options2)};return cipher}}});var require_oids=__commonJS({"node_modules/node-forge/lib/oids.js"(exports,module){"use strict";var forge2=require_forge();forge2.pki=forge2.pki||{};var oids=module.exports=forge2.pki.oids=forge2.oids=forge2.oids||{};function _IN(id,name2){oids[id]=name2;oids[name2]=id}function _I_(id,name2){oids[id]=name2}_IN("1.2.840.113549.1.1.1","rsaEncryption");_IN("1.2.840.113549.1.1.4","md5WithRSAEncryption");_IN("1.2.840.113549.1.1.5","sha1WithRSAEncryption");_IN("1.2.840.113549.1.1.7","RSAES-OAEP");_IN("1.2.840.113549.1.1.8","mgf1");_IN("1.2.840.113549.1.1.9","pSpecified");_IN("1.2.840.113549.1.1.10","RSASSA-PSS");_IN("1.2.840.113549.1.1.11","sha256WithRSAEncryption");_IN("1.2.840.113549.1.1.12","sha384WithRSAEncryption");_IN("1.2.840.113549.1.1.13","sha512WithRSAEncryption");_IN("1.3.101.112","EdDSA25519");_IN("1.2.840.10040.4.3","dsa-with-sha1");_IN("1.3.14.3.2.7","desCBC");_IN("1.3.14.3.2.26","sha1");_IN("1.3.14.3.2.29","sha1WithRSASignature");_IN("2.16.840.1.101.3.4.2.1","sha256");_IN("2.16.840.1.101.3.4.2.2","sha384");_IN("2.16.840.1.101.3.4.2.3","sha512");_IN("2.16.840.1.101.3.4.2.4","sha224");_IN("2.16.840.1.101.3.4.2.5","sha512-224");_IN("2.16.840.1.101.3.4.2.6","sha512-256");_IN("1.2.840.113549.2.2","md2");_IN("1.2.840.113549.2.5","md5");_IN("1.2.840.113549.1.7.1","data");_IN("1.2.840.113549.1.7.2","signedData");_IN("1.2.840.113549.1.7.3","envelopedData");_IN("1.2.840.113549.1.7.4","signedAndEnvelopedData");_IN("1.2.840.113549.1.7.5","digestedData");_IN("1.2.840.113549.1.7.6","encryptedData");_IN("1.2.840.113549.1.9.1","emailAddress");_IN("1.2.840.113549.1.9.2","unstructuredName");_IN("1.2.840.113549.1.9.3","contentType");_IN("1.2.840.113549.1.9.4","messageDigest");_IN("1.2.840.113549.1.9.5","signingTime");_IN("1.2.840.113549.1.9.6","counterSignature");_IN("1.2.840.113549.1.9.7","challengePassword");_IN("1.2.840.113549.1.9.8","unstructuredAddress");_IN("1.2.840.113549.1.9.14","extensionRequest");_IN("1.2.840.113549.1.9.20","friendlyName");_IN("1.2.840.113549.1.9.21","localKeyId");_IN("1.2.840.113549.1.9.22.1","x509Certificate");_IN("1.2.840.113549.1.12.10.1.1","keyBag");_IN("1.2.840.113549.1.12.10.1.2","pkcs8ShroudedKeyBag");_IN("1.2.840.113549.1.12.10.1.3","certBag");_IN("1.2.840.113549.1.12.10.1.4","crlBag");_IN("1.2.840.113549.1.12.10.1.5","secretBag");_IN("1.2.840.113549.1.12.10.1.6","safeContentsBag");_IN("1.2.840.113549.1.5.13","pkcs5PBES2");_IN("1.2.840.113549.1.5.12","pkcs5PBKDF2");_IN("1.2.840.113549.1.12.1.1","pbeWithSHAAnd128BitRC4");_IN("1.2.840.113549.1.12.1.2","pbeWithSHAAnd40BitRC4");_IN("1.2.840.113549.1.12.1.3","pbeWithSHAAnd3-KeyTripleDES-CBC");_IN("1.2.840.113549.1.12.1.4","pbeWithSHAAnd2-KeyTripleDES-CBC");_IN("1.2.840.113549.1.12.1.5","pbeWithSHAAnd128BitRC2-CBC");_IN("1.2.840.113549.1.12.1.6","pbewithSHAAnd40BitRC2-CBC");_IN("1.2.840.113549.2.7","hmacWithSHA1");_IN("1.2.840.113549.2.8","hmacWithSHA224");_IN("1.2.840.113549.2.9","hmacWithSHA256");_IN("1.2.840.113549.2.10","hmacWithSHA384");_IN("1.2.840.113549.2.11","hmacWithSHA512");_IN("1.2.840.113549.3.7","des-EDE3-CBC");_IN("2.16.840.1.101.3.4.1.2","aes128-CBC");_IN("2.16.840.1.101.3.4.1.22","aes192-CBC");_IN("2.16.840.1.101.3.4.1.42","aes256-CBC");_IN("2.5.4.3","commonName");_IN("2.5.4.4","surname");_IN("2.5.4.5","serialNumber");_IN("2.5.4.6","countryName");_IN("2.5.4.7","localityName");_IN("2.5.4.8","stateOrProvinceName");_IN("2.5.4.9","streetAddress");_IN("2.5.4.10","organizationName");_IN("2.5.4.11","organizationalUnitName");_IN("2.5.4.12","title");_IN("2.5.4.13","description");_IN("2.5.4.15","businessCategory");_IN("2.5.4.17","postalCode");_IN("2.5.4.42","givenName");_IN("2.5.4.65","pseudonym");_IN("1.3.6.1.4.1.311.60.2.1.2","jurisdictionOfIncorporationStateOrProvinceName");_IN("1.3.6.1.4.1.311.60.2.1.3","jurisdictionOfIncorporationCountryName");_IN("2.16.840.1.113730.1.1","nsCertType");_IN("2.16.840.1.113730.1.13","nsComment");_I_("2.5.29.1","authorityKeyIdentifier");_I_("2.5.29.2","keyAttributes");_I_("2.5.29.3","certificatePolicies");_I_("2.5.29.4","keyUsageRestriction");_I_("2.5.29.5","policyMapping");_I_("2.5.29.6","subtreesConstraint");_I_("2.5.29.7","subjectAltName");_I_("2.5.29.8","issuerAltName");_I_("2.5.29.9","subjectDirectoryAttributes");_I_("2.5.29.10","basicConstraints");_I_("2.5.29.11","nameConstraints");_I_("2.5.29.12","policyConstraints");_I_("2.5.29.13","basicConstraints");_IN("2.5.29.14","subjectKeyIdentifier");_IN("2.5.29.15","keyUsage");_I_("2.5.29.16","privateKeyUsagePeriod");_IN("2.5.29.17","subjectAltName");_IN("2.5.29.18","issuerAltName");_IN("2.5.29.19","basicConstraints");_I_("2.5.29.20","cRLNumber");_I_("2.5.29.21","cRLReason");_I_("2.5.29.22","expirationDate");_I_("2.5.29.23","instructionCode");_I_("2.5.29.24","invalidityDate");_I_("2.5.29.25","cRLDistributionPoints");_I_("2.5.29.26","issuingDistributionPoint");_I_("2.5.29.27","deltaCRLIndicator");_I_("2.5.29.28","issuingDistributionPoint");_I_("2.5.29.29","certificateIssuer");_I_("2.5.29.30","nameConstraints");_IN("2.5.29.31","cRLDistributionPoints");_IN("2.5.29.32","certificatePolicies");_I_("2.5.29.33","policyMappings");_I_("2.5.29.34","policyConstraints");_IN("2.5.29.35","authorityKeyIdentifier");_I_("2.5.29.36","policyConstraints");_IN("2.5.29.37","extKeyUsage");_I_("2.5.29.46","freshestCRL");_I_("2.5.29.54","inhibitAnyPolicy");_IN("1.3.6.1.4.1.11129.2.4.2","timestampList");_IN("1.3.6.1.5.5.7.1.1","authorityInfoAccess");_IN("1.3.6.1.5.5.7.3.1","serverAuth");_IN("1.3.6.1.5.5.7.3.2","clientAuth");_IN("1.3.6.1.5.5.7.3.3","codeSigning");_IN("1.3.6.1.5.5.7.3.4","emailProtection");_IN("1.3.6.1.5.5.7.3.8","timeStamping")}});var require_asn1=__commonJS({"node_modules/node-forge/lib/asn1.js"(exports,module){"use strict";var forge2=require_forge();require_util7();require_oids();var asn1=module.exports=forge2.asn1=forge2.asn1||{};asn1.Class={UNIVERSAL:0,APPLICATION:64,CONTEXT_SPECIFIC:128,PRIVATE:192};asn1.Type={NONE:0,BOOLEAN:1,INTEGER:2,BITSTRING:3,OCTETSTRING:4,NULL:5,OID:6,ODESC:7,EXTERNAL:8,REAL:9,ENUMERATED:10,EMBEDDED:11,UTF8:12,ROID:13,SEQUENCE:16,SET:17,PRINTABLESTRING:19,IA5STRING:22,UTCTIME:23,GENERALIZEDTIME:24,BMPSTRING:30};asn1.maxDepth=256;asn1.create=function(tagClass,type,constructed,value,options){if(forge2.util.isArray(value)){var tmp=[];for(var i=0;i<value.length;++i){if(value[i]!==void 0){tmp.push(value[i])}}value=tmp}var obj={tagClass,type,constructed,composed:constructed||forge2.util.isArray(value),value};if(options&&"bitStringContents"in options){obj.bitStringContents=options.bitStringContents;obj.original=asn1.copy(obj)}return obj};asn1.copy=function(obj,options){var copy;if(forge2.util.isArray(obj)){copy=[];for(var i=0;i<obj.length;++i){copy.push(asn1.copy(obj[i],options))}return copy}if(typeof obj==="string"){return obj}copy={tagClass:obj.tagClass,type:obj.type,constructed:obj.constructed,composed:obj.composed,value:asn1.copy(obj.value,options)};if(options&&!options.excludeBitStringContents){copy.bitStringContents=obj.bitStringContents}return copy};asn1.equals=function(obj1,obj2,options){if(forge2.util.isArray(obj1)){if(!forge2.util.isArray(obj2)){return false}if(obj1.length!==obj2.length){return false}for(var i=0;i<obj1.length;++i){if(!asn1.equals(obj1[i],obj2[i])){return false}}return true}if(typeof obj1!==typeof obj2){return false}if(typeof obj1==="string"){return obj1===obj2}var equal=obj1.tagClass===obj2.tagClass&&obj1.type===obj2.type&&obj1.constructed===obj2.constructed&&obj1.composed===obj2.composed&&asn1.equals(obj1.value,obj2.value);if(options&&options.includeBitStringContents){equal=equal&&obj1.bitStringContents===obj2.bitStringContents}return equal};asn1.getBerValueLength=function(b2){var b22=b2.getByte();if(b22===128){return void 0}var length;var longForm=b22&128;if(!longForm){length=b22}else{length=b2.getInt((b22&127)<<3)}return length};function _checkBufferLength(bytes,remaining,n){if(n>remaining){var error=new Error("Too few bytes to parse DER.");error.available=bytes.length();error.remaining=remaining;error.requested=n;throw error}}var _getValueLength=function(bytes,remaining){var b2=bytes.getByte();remaining--;if(b2===128){return void 0}var length;var longForm=b2&128;if(!longForm){length=b2}else{var longFormBytes=b2&127;_checkBufferLength(bytes,remaining,longFormBytes);length=bytes.getInt(longFormBytes<<3)}if(length<0){throw new Error("Negative length: "+length)}return length};asn1.fromDer=function(bytes,options){if(options===void 0){options={strict:true,parseAllBytes:true,decodeBitStrings:true}}if(typeof options==="boolean"){options={strict:options,parseAllBytes:true,decodeBitStrings:true}}if(!("strict"in options)){options.strict=true}if(!("parseAllBytes"in options)){options.parseAllBytes=true}if(!("decodeBitStrings"in options)){options.decodeBitStrings=true}if(!("maxDepth"in options)){options.maxDepth=asn1.maxDepth}if(typeof bytes==="string"){bytes=forge2.util.createBuffer(bytes)}var byteCount=bytes.length();var value=_fromDer(bytes,bytes.length(),0,options);if(options.parseAllBytes&&bytes.length()!==0){var error=new Error("Unparsed DER bytes remain after ASN.1 parsing.");error.byteCount=byteCount;error.remaining=bytes.length();throw error}return value};function _fromDer(bytes,remaining,depth,options){if(depth>=options.maxDepth){throw new Error("ASN.1 parsing error: Max depth exceeded.")}var start;_checkBufferLength(bytes,remaining,2);var b1=bytes.getByte();remaining--;var tagClass=b1&192;var type=b1&31;start=bytes.length();var length=_getValueLength(bytes,remaining);remaining-=start-bytes.length();if(length!==void 0&&length>remaining){if(options.strict){var error=new Error("Too few bytes to read ASN.1 value.");error.available=bytes.length();error.remaining=remaining;error.requested=length;throw error}length=remaining}var value;var bitStringContents;var constructed=(b1&32)===32;if(constructed){value=[];if(length===void 0){for(;;){_checkBufferLength(bytes,remaining,2);if(bytes.bytes(2)===String.fromCharCode(0,0)){bytes.getBytes(2);remaining-=2;break}start=bytes.length();value.push(_fromDer(bytes,remaining,depth+1,options));remaining-=start-bytes.length()}}else{while(length>0){start=bytes.length();value.push(_fromDer(bytes,length,depth+1,options));remaining-=start-bytes.length();length-=start-bytes.length()}}}if(value===void 0&&tagClass===asn1.Class.UNIVERSAL&&type===asn1.Type.BITSTRING){bitStringContents=bytes.bytes(length)}if(value===void 0&&options.decodeBitStrings&&tagClass===asn1.Class.UNIVERSAL&&type===asn1.Type.BITSTRING&&length>1){var savedRead=bytes.read;var savedRemaining=remaining;var unused=0;if(type===asn1.Type.BITSTRING){_checkBufferLength(bytes,remaining,1);unused=bytes.getByte();remaining--}if(unused===0){try{start=bytes.length();var subOptions={strict:true,decodeBitStrings:true};var composed=_fromDer(bytes,remaining,depth+1,subOptions);var used=start-bytes.length();remaining-=used;if(type==asn1.Type.BITSTRING){used++}var tc=composed.tagClass;if(used===length&&(tc===asn1.Class.UNIVERSAL||tc===asn1.Class.CONTEXT_SPECIFIC)){value=[composed]}}catch(ex){}}if(value===void 0){bytes.read=savedRead;remaining=savedRemaining}}if(value===void 0){if(length===void 0){if(options.strict){throw new Error("Non-constructed ASN.1 object of indefinite length.")}length=remaining}if(type===asn1.Type.BMPSTRING){value="";for(;length>0;length-=2){_checkBufferLength(bytes,remaining,2);value+=String.fromCharCode(bytes.getInt16());remaining-=2}}else{value=bytes.getBytes(length);remaining-=length}}var asn1Options=bitStringContents===void 0?null:{bitStringContents};return asn1.create(tagClass,type,constructed,value,asn1Options)}asn1.toDer=function(obj){var bytes=forge2.util.createBuffer();var b1=obj.tagClass|obj.type;var value=forge2.util.createBuffer();var useBitStringContents=false;if("bitStringContents"in obj){useBitStringContents=true;if(obj.original){useBitStringContents=asn1.equals(obj,obj.original)}}if(useBitStringContents){value.putBytes(obj.bitStringContents)}else if(obj.composed){if(obj.constructed){b1|=32}else{value.putByte(0)}for(var i=0;i<obj.value.length;++i){if(obj.value[i]!==void 0){value.putBuffer(asn1.toDer(obj.value[i]))}}}else{if(obj.type===asn1.Type.BMPSTRING){for(var i=0;i<obj.value.length;++i){value.putInt16(obj.value.charCodeAt(i))}}else{if(obj.type===asn1.Type.INTEGER&&obj.value.length>1&&(obj.value.charCodeAt(0)===0&&(obj.value.charCodeAt(1)&128)===0||obj.value.charCodeAt(0)===255&&(obj.value.charCodeAt(1)&128)===128)){value.putBytes(obj.value.substr(1))}else{value.putBytes(obj.value)}}}bytes.putByte(b1);if(value.length()<=127){bytes.putByte(value.length()&127)}else{var len=value.length();var lenBytes="";do{lenBytes+=String.fromCharCode(len&255);len=len>>>8}while(len>0);bytes.putByte(lenBytes.length|128);for(var i=lenBytes.length-1;i>=0;--i){bytes.putByte(lenBytes.charCodeAt(i))}}bytes.putBuffer(value);return bytes};asn1.oidToDer=function(oid){var values=oid.split(".");var bytes=forge2.util.createBuffer();bytes.putByte(40*parseInt(values[0],10)+parseInt(values[1],10));var last,valueBytes,value,b2;for(var i=2;i<values.length;++i){last=true;valueBytes=[];value=parseInt(values[i],10);if(value>4294967295){throw new Error("OID value too large; max is 32-bits.")}do{b2=value&127;value=value>>>7;if(!last){b2|=128}valueBytes.push(b2);last=false}while(value>0);for(var n=valueBytes.length-1;n>=0;--n){bytes.putByte(valueBytes[n])}}return bytes};asn1.derToOid=function(bytes){var oid;if(typeof bytes==="string"){bytes=forge2.util.createBuffer(bytes)}var b2=bytes.getByte();oid=Math.floor(b2/40)+"."+b2%40;var value=0;while(bytes.length()>0){if(value>70368744177663){throw new Error("OID value too large; max is 53-bits.")}b2=bytes.getByte();value=value*128;if(b2&128){value+=b2&127}else{oid+="."+(value+b2);value=0}}return oid};asn1.utcTimeToDate=function(utc){var date=new Date;var year=parseInt(utc.substr(0,2),10);year=year>=50?1900+year:2e3+year;var MM=parseInt(utc.substr(2,2),10)-1;var DD=parseInt(utc.substr(4,2),10);var hh=parseInt(utc.substr(6,2),10);var mm=parseInt(utc.substr(8,2),10);var ss2=0;if(utc.length>11){var c=utc.charAt(10);var end=10;if(c!=="+"&&c!=="-"){ss2=parseInt(utc.substr(10,2),10);end+=2}}date.setUTCFullYear(year,MM,DD);date.setUTCHours(hh,mm,ss2,0);if(end){c=utc.charAt(end);if(c==="+"||c==="-"){var hhoffset=parseInt(utc.substr(end+1,2),10);var mmoffset=parseInt(utc.substr(end+4,2),10);var offset=hhoffset*60+mmoffset;offset*=6e4;if(c==="+"){date.setTime(+date-offset)}else{date.setTime(+date+offset)}}}return date};asn1.generalizedTimeToDate=function(gentime){var date=new Date;var YYYY=parseInt(gentime.substr(0,4),10);var MM=parseInt(gentime.substr(4,2),10)-1;var DD=parseInt(gentime.substr(6,2),10);var hh=parseInt(gentime.substr(8,2),10);var mm=parseInt(gentime.substr(10,2),10);var ss2=parseInt(gentime.substr(12,2),10);var fff=0;var offset=0;var isUTC=false;if(gentime.charAt(gentime.length-1)==="Z"){isUTC=true}var end=gentime.length-5,c=gentime.charAt(end);if(c==="+"||c==="-"){var hhoffset=parseInt(gentime.substr(end+1,2),10);var mmoffset=parseInt(gentime.substr(end+4,2),10);offset=hhoffset*60+mmoffset;offset*=6e4;if(c==="+"){offset*=-1}isUTC=true}if(gentime.charAt(14)==="."){fff=parseFloat(gentime.substr(14),10)*1e3}if(isUTC){date.setUTCFullYear(YYYY,MM,DD);date.setUTCHours(hh,mm,ss2,fff);date.setTime(+date+offset)}else{date.setFullYear(YYYY,MM,DD);date.setHours(hh,mm,ss2,fff)}return date};asn1.dateToUtcTime=function(date){if(typeof date==="string"){return date}var rval="";var format2=[];format2.push((""+date.getUTCFullYear()).substr(2));format2.push(""+(date.getUTCMonth()+1));format2.push(""+date.getUTCDate());format2.push(""+date.getUTCHours());format2.push(""+date.getUTCMinutes());format2.push(""+date.getUTCSeconds());for(var i=0;i<format2.length;++i){if(format2[i].length<2){rval+="0"}rval+=format2[i]}rval+="Z";return rval};asn1.dateToGeneralizedTime=function(date){if(typeof date==="string"){return date}var rval="";var format2=[];format2.push(""+date.getUTCFullYear());format2.push(""+(date.getUTCMonth()+1));format2.push(""+date.getUTCDate());format2.push(""+date.getUTCHours());format2.push(""+date.getUTCMinutes());format2.push(""+date.getUTCSeconds());for(var i=0;i<format2.length;++i){if(format2[i].length<2){rval+="0"}rval+=format2[i]}rval+="Z";return rval};asn1.integerToDer=function(x){var rval=forge2.util.createBuffer();if(x>=-128&&x<128){return rval.putSignedInt(x,8)}if(x>=-32768&&x<32768){return rval.putSignedInt(x,16)}if(x>=-8388608&&x<8388608){return rval.putSignedInt(x,24)}if(x>=-2147483648&&x<2147483648){return rval.putSignedInt(x,32)}var error=new Error("Integer too large; max is 32-bits.");error.integer=x;throw error};asn1.derToInteger=function(bytes){if(typeof bytes==="string"){bytes=forge2.util.createBuffer(bytes)}var n=bytes.length()*8;if(n>32){throw new Error("Integer too large; max is 32-bits.")}return bytes.getSignedInt(n)};asn1.validate=function(obj,v2,capture2,errors){var rval=false;if((obj.tagClass===v2.tagClass||typeof v2.tagClass==="undefined")&&(obj.type===v2.type||typeof v2.type==="undefined")){if(obj.constructed===v2.constructed||typeof v2.constructed==="undefined"){rval=true;if(v2.value&&forge2.util.isArray(v2.value)){var j2=0;for(var i=0;rval&&i<v2.value.length;++i){var schemaItem=v2.value[i];rval=!!schemaItem.optional;var objChild=obj.value[j2];if(!objChild){if(!schemaItem.optional){rval=false;if(errors){errors.push("["+v2.name+'] Missing required element. Expected tag class "'+schemaItem.tagClass+'", type "'+schemaItem.type+'"')}}continue}var schemaHasTag=typeof schemaItem.tagClass!=="undefined"&&typeof schemaItem.type!=="undefined";if(schemaHasTag&&(objChild.tagClass!==schemaItem.tagClass||objChild.type!==schemaItem.type)){if(schemaItem.optional){rval=true;continue}else{rval=false;if(errors){errors.push("["+v2.name+"] Tag mismatch. Expected ("+schemaItem.tagClass+","+schemaItem.type+"), got ("+objChild.tagClass+","+objChild.type+")")}break}}var childRval=asn1.validate(objChild,schemaItem,capture2,errors);if(childRval){++j2;rval=true}else if(schemaItem.optional){rval=true}else{rval=false;break}}}if(rval&&capture2){if(v2.capture){capture2[v2.capture]=obj.value}if(v2.captureAsn1){capture2[v2.captureAsn1]=obj}if(v2.captureBitStringContents&&"bitStringContents"in obj){capture2[v2.captureBitStringContents]=obj.bitStringContents}if(v2.captureBitStringValue&&"bitStringContents"in obj){var value;if(obj.bitStringContents.length<2){capture2[v2.captureBitStringValue]=""}else{var unused=obj.bitStringContents.charCodeAt(0);if(unused!==0){throw new Error("captureBitStringValue only supported for zero unused bits")}capture2[v2.captureBitStringValue]=obj.bitStringContents.slice(1)}}}}else if(errors){errors.push("["+v2.name+'] Expected constructed "'+v2.constructed+'", got "'+obj.constructed+'"')}}else if(errors){if(obj.tagClass!==v2.tagClass){errors.push("["+v2.name+'] Expected tag class "'+v2.tagClass+'", got "'+obj.tagClass+'"')}if(obj.type!==v2.type){errors.push("["+v2.name+'] Expected type "'+v2.type+'", got "'+obj.type+'"')}}return rval};var _nonLatinRegex=/[^\\u0000-\\u00ff]/;asn1.prettyPrint=function(obj,level,indentation){var rval="";level=level||0;indentation=indentation||2;if(level>0){rval+="\n"}var indent="";for(var i=0;i<level*indentation;++i){indent+=" "}rval+=indent+"Tag: ";switch(obj.tagClass){case asn1.Class.UNIVERSAL:rval+="Universal:";break;case asn1.Class.APPLICATION:rval+="Application:";break;case asn1.Class.CONTEXT_SPECIFIC:rval+="Context-Specific:";break;case asn1.Class.PRIVATE:rval+="Private:";break}if(obj.tagClass===asn1.Class.UNIVERSAL){rval+=obj.type;switch(obj.type){case asn1.Type.NONE:rval+=" (None)";break;case asn1.Type.BOOLEAN:rval+=" (Boolean)";break;case asn1.Type.INTEGER:rval+=" (Integer)";break;case asn1.Type.BITSTRING:rval+=" (Bit string)";break;case asn1.Type.OCTETSTRING:rval+=" (Octet string)";break;case asn1.Type.NULL:rval+=" (Null)";break;case asn1.Type.OID:rval+=" (Object Identifier)";break;case asn1.Type.ODESC:rval+=" (Object Descriptor)";break;case asn1.Type.EXTERNAL:rval+=" (External or Instance of)";break;case asn1.Type.REAL:rval+=" (Real)";break;case asn1.Type.ENUMERATED:rval+=" (Enumerated)";break;case asn1.Type.EMBEDDED:rval+=" (Embedded PDV)";break;case asn1.Type.UTF8:rval+=" (UTF8)";break;case asn1.Type.ROID:rval+=" (Relative Object Identifier)";break;case asn1.Type.SEQUENCE:rval+=" (Sequence)";break;case asn1.Type.SET:rval+=" (Set)";break;case asn1.Type.PRINTABLESTRING:rval+=" (Printable String)";break;case asn1.Type.IA5String:rval+=" (IA5String (ASCII))";break;case asn1.Type.UTCTIME:rval+=" (UTC time)";break;case asn1.Type.GENERALIZEDTIME:rval+=" (Generalized time)";break;case asn1.Type.BMPSTRING:rval+=" (BMP String)";break}}else{rval+=obj.type}rval+="\n";rval+=indent+"Constructed: "+obj.constructed+"\n";if(obj.composed){var subvalues=0;var sub="";for(var i=0;i<obj.value.length;++i){if(obj.value[i]!==void 0){subvalues+=1;sub+=asn1.prettyPrint(obj.value[i],level+1,indentation);if(i+1<obj.value.length){sub+=","}}}rval+=indent+"Sub values: "+subvalues+sub}else{rval+=indent+"Value: ";if(obj.type===asn1.Type.OID){var oid=asn1.derToOid(obj.value);rval+=oid;if(forge2.pki&&forge2.pki.oids){if(oid in forge2.pki.oids){rval+=" ("+forge2.pki.oids[oid]+") "}}}if(obj.type===asn1.Type.INTEGER){try{rval+=asn1.derToInteger(obj.value)}catch(ex){rval+="0x"+forge2.util.bytesToHex(obj.value)}}else if(obj.type===asn1.Type.BITSTRING){if(obj.value.length>1){rval+="0x"+forge2.util.bytesToHex(obj.value.slice(1))}else{rval+="(none)"}if(obj.value.length>0){var unused=obj.value.charCodeAt(0);if(unused==1){rval+=" (1 unused bit shown)"}else if(unused>1){rval+=" ("+unused+" unused bits shown)"}}}else if(obj.type===asn1.Type.OCTETSTRING){if(!_nonLatinRegex.test(obj.value)){rval+="("+obj.value+") "}rval+="0x"+forge2.util.bytesToHex(obj.value)}else if(obj.type===asn1.Type.UTF8){try{rval+=forge2.util.decodeUtf8(obj.value)}catch(e){if(e.message==="URI malformed"){rval+="0x"+forge2.util.bytesToHex(obj.value)+" (malformed UTF8)"}else{throw e}}}else if(obj.type===asn1.Type.PRINTABLESTRING||obj.type===asn1.Type.IA5String){rval+=obj.value}else if(_nonLatinRegex.test(obj.value)){rval+="0x"+forge2.util.bytesToHex(obj.value)}else if(obj.value.length===0){rval+="[null]"}else{rval+=obj.value}}return rval}}});var require_md=__commonJS({"node_modules/node-forge/lib/md.js"(exports,module){"use strict";var forge2=require_forge();module.exports=forge2.md=forge2.md||{};forge2.md.algorithms=forge2.md.algorithms||{}}});var require_hmac=__commonJS({"node_modules/node-forge/lib/hmac.js"(exports,module){"use strict";var forge2=require_forge();require_md();require_util7();var hmac=module.exports=forge2.hmac=forge2.hmac||{};hmac.create=function(){var _key=null;var _md=null;var _ipadding=null;var _opadding=null;var ctx={};ctx.start=function(md,key){if(md!==null){if(typeof md==="string"){md=md.toLowerCase();if(md in forge2.md.algorithms){_md=forge2.md.algorithms[md].create()}else{throw new Error('Unknown hash algorithm "'+md+'"')}}else{_md=md}}if(key===null){key=_key}else{if(typeof key==="string"){key=forge2.util.createBuffer(key)}else if(forge2.util.isArray(key)){var tmp=key;key=forge2.util.createBuffer();for(var i=0;i<tmp.length;++i){key.putByte(tmp[i])}}var keylen=key.length();if(keylen>_md.blockLength){_md.start();_md.update(key.bytes());key=_md.digest()}_ipadding=forge2.util.createBuffer();_opadding=forge2.util.createBuffer();keylen=key.length();for(var i=0;i<keylen;++i){var tmp=key.at(i);_ipadding.putByte(54^tmp);_opadding.putByte(92^tmp)}if(keylen<_md.blockLength){var tmp=_md.blockLength-keylen;for(var i=0;i<tmp;++i){_ipadding.putByte(54);_opadding.putByte(92)}}_key=key;_ipadding=_ipadding.bytes();_opadding=_opadding.bytes()}_md.start();_md.update(_ipadding)};ctx.update=function(bytes){_md.update(bytes)};ctx.getMac=function(){var inner=_md.digest().bytes();_md.start();_md.update(_opadding);_md.update(inner);return _md.digest()};ctx.digest=ctx.getMac;return ctx}}});var require_md5=__commonJS({"node_modules/node-forge/lib/md5.js"(exports,module){"use strict";var forge2=require_forge();require_md();require_util7();var md5=module.exports=forge2.md5=forge2.md5||{};forge2.md.md5=forge2.md.algorithms.md5=md5;md5.create=function(){if(!_initialized){_init()}var _state=null;var _input=forge2.util.createBuffer();var _w=new Array(16);var md={algorithm:"md5",blockLength:64,digestLength:16,messageLength:0,fullMessageLength:null,messageLengthSize:8};md.start=function(){md.messageLength=0;md.fullMessageLength=md.messageLength64=[];var int32s=md.messageLengthSize/4;for(var i=0;i<int32s;++i){md.fullMessageLength.push(0)}_input=forge2.util.createBuffer();_state={h0:1732584193,h1:4023233417,h2:2562383102,h3:271733878};return md};md.start();md.update=function(msg,encoding){if(encoding==="utf8"){msg=forge2.util.encodeUtf8(msg)}var len=msg.length;md.messageLength+=len;len=[len/4294967296>>>0,len>>>0];for(var i=md.fullMessageLength.length-1;i>=0;--i){md.fullMessageLength[i]+=len[1];len[1]=len[0]+(md.fullMessageLength[i]/4294967296>>>0);md.fullMessageLength[i]=md.fullMessageLength[i]>>>0;len[0]=len[1]/4294967296>>>0}_input.putBytes(msg);_update(_state,_w,_input);if(_input.read>2048||_input.length()===0){_input.compact()}return md};md.digest=function(){var finalBlock=forge2.util.createBuffer();finalBlock.putBytes(_input.bytes());var remaining=md.fullMessageLength[md.fullMessageLength.length-1]+md.messageLengthSize;var overflow=remaining&md.blockLength-1;finalBlock.putBytes(_padding.substr(0,md.blockLength-overflow));var bits,carry=0;for(var i=md.fullMessageLength.length-1;i>=0;--i){bits=md.fullMessageLength[i]*8+carry;carry=bits/4294967296>>>0;finalBlock.putInt32Le(bits>>>0)}var s22={h0:_state.h0,h1:_state.h1,h2:_state.h2,h3:_state.h3};_update(s22,_w,finalBlock);var rval=forge2.util.createBuffer();rval.putInt32Le(s22.h0);rval.putInt32Le(s22.h1);rval.putInt32Le(s22.h2);rval.putInt32Le(s22.h3);return rval};return md};var _padding=null;var _g=null;var _r2=null;var _k=null;var _initialized=false;function _init(){_padding=String.fromCharCode(128);_padding+=forge2.util.fillString(String.fromCharCode(0),64);_g=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1,6,11,0,5,10,15,4,9,14,3,8,13,2,7,12,5,8,11,14,1,4,7,10,13,0,3,6,9,12,15,2,0,7,14,5,12,3,10,1,8,15,6,13,4,11,2,9];_r2=[7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21];_k=new Array(64);for(var i=0;i<64;++i){_k[i]=Math.floor(Math.abs(Math.sin(i+1))*4294967296)}_initialized=true}function _update(s3,w2,bytes){var t,a,b2,c,d,f2,r,i;var len=bytes.length();while(len>=64){a=s3.h0;b2=s3.h1;c=s3.h2;d=s3.h3;for(i=0;i<16;++i){w2[i]=bytes.getInt32Le();f2=d^b2&(c^d);t=a+f2+_k[i]+w2[i];r=_r2[i];a=d;d=c;c=b2;b2+=t<<r|t>>>32-r}for(;i<32;++i){f2=c^d&(b2^c);t=a+f2+_k[i]+w2[_g[i]];r=_r2[i];a=d;d=c;c=b2;b2+=t<<r|t>>>32-r}for(;i<48;++i){f2=b2^c^d;t=a+f2+_k[i]+w2[_g[i]];r=_r2[i];a=d;d=c;c=b2;b2+=t<<r|t>>>32-r}for(;i<64;++i){f2=c^(b2|~d);t=a+f2+_k[i]+w2[_g[i]];r=_r2[i];a=d;d=c;c=b2;b2+=t<<r|t>>>32-r}s3.h0=s3.h0+a|0;s3.h1=s3.h1+b2|0;s3.h2=s3.h2+c|0;s3.h3=s3.h3+d|0;len-=64}}}});var require_pem=__commonJS({"node_modules/node-forge/lib/pem.js"(exports,module){"use strict";var forge2=require_forge();require_util7();var pem=module.exports=forge2.pem=forge2.pem||{};pem.encode=function(msg,options){options=options||{};var rval="-----BEGIN "+msg.type+"-----\r\n";var header;if(msg.procType){header={name:"Proc-Type",values:[String(msg.procType.version),msg.procType.type]};rval+=foldHeader(header)}if(msg.contentDomain){header={name:"Content-Domain",values:[msg.contentDomain]};rval+=foldHeader(header)}if(msg.dekInfo){header={name:"DEK-Info",values:[msg.dekInfo.algorithm]};if(msg.dekInfo.parameters){header.values.push(msg.dekInfo.parameters)}rval+=foldHeader(header)}if(msg.headers){for(var i=0;i<msg.headers.length;++i){rval+=foldHeader(msg.headers[i])}}if(msg.procType){rval+="\r\n"}rval+=forge2.util.encode64(msg.body,options.maxline||64)+"\r\n";rval+="-----END "+msg.type+"-----\r\n";return rval};pem.decode=function(str){var rval=[];var rMessage=/\s*-----BEGIN ([A-Z0-9- ]+)-----\r?\n?([\x21-\x7e\s]+?(?:\r?\n\r?\n))?([:A-Za-z0-9+\/=\s]+?)-----END \1-----/g;var rHeader=/([\x21-\x7e]+):\s*([\x21-\x7e\s^:]+)/;var rCRLF=/\r?\n/;var match;while(true){match=rMessage.exec(str);if(!match){break}var type=match[1];if(type==="NEW CERTIFICATE REQUEST"){type="CERTIFICATE REQUEST"}var msg={type,procType:null,contentDomain:null,dekInfo:null,headers:[],body:forge2.util.decode64(match[3])};rval.push(msg);if(!match[2]){continue}var lines=match[2].split(rCRLF);var li2=0;while(match&&li2<lines.length){var line=lines[li2].replace(/\s+$/,"");for(var nl=li2+1;nl<lines.length;++nl){var next=lines[nl];if(!/\s/.test(next[0])){break}line+=next;li2=nl}match=line.match(rHeader);if(match){var header={name:match[1],values:[]};var values=match[2].split(",");for(var vi2=0;vi2<values.length;++vi2){header.values.push(ltrim(values[vi2]))}if(!msg.procType){if(header.name!=="Proc-Type"){throw new Error('Invalid PEM formatted message. The first encapsulated header must be "Proc-Type".')}else if(header.values.length!==2){throw new Error('Invalid PEM formatted message. The "Proc-Type" header must have two subfields.')}msg.procType={version:values[0],type:values[1]}}else if(!msg.contentDomain&&header.name==="Content-Domain"){msg.contentDomain=values[0]||""}else if(!msg.dekInfo&&header.name==="DEK-Info"){if(header.values.length===0){throw new Error('Invalid PEM formatted message. The "DEK-Info" header must have at least one subfield.')}msg.dekInfo={algorithm:values[0],parameters:values[1]||null}}else{msg.headers.push(header)}}++li2}if(msg.procType==="ENCRYPTED"&&!msg.dekInfo){throw new Error('Invalid PEM formatted message. The "DEK-Info" header must be present if "Proc-Type" is "ENCRYPTED".')}}if(rval.length===0){throw new Error("Invalid PEM formatted message.")}return rval};function foldHeader(header){var rval=header.name+": ";var values=[];var insertSpace=function(match,$1){return" "+$1};for(var i=0;i<header.values.length;++i){values.push(header.values[i].replace(/^(\S+\r\n)/,insertSpace))}rval+=values.join(",")+"\r\n";var length=0;var candidate=-1;for(var i=0;i<rval.length;++i,++length){if(length>65&&candidate!==-1){var insert=rval[candidate];if(insert===","){++candidate;rval=rval.substr(0,candidate)+"\r\n "+rval.substr(candidate)}else{rval=rval.substr(0,candidate)+"\r\n"+insert+rval.substr(candidate+1)}length=i-candidate-1;candidate=-1;++i}else if(rval[i]===" "||rval[i]===" "||rval[i]===","){candidate=i}}return rval}function ltrim(str){return str.replace(/^\s+/,"")}}});var require_des=__commonJS({"node_modules/node-forge/lib/des.js"(exports,module){"use strict";var forge2=require_forge();require_cipher();require_cipherModes();require_util7();module.exports=forge2.des=forge2.des||{};forge2.des.startEncrypting=function(key,iv,output,mode){var cipher=_createCipher({key,output,decrypt:false,mode:mode||(iv===null?"ECB":"CBC")});cipher.start(iv);return cipher};forge2.des.createEncryptionCipher=function(key,mode){return _createCipher({key,output:null,decrypt:false,mode})};forge2.des.startDecrypting=function(key,iv,output,mode){var cipher=_createCipher({key,output,decrypt:true,mode:mode||(iv===null?"ECB":"CBC")});cipher.start(iv);return cipher};forge2.des.createDecryptionCipher=function(key,mode){return _createCipher({key,output:null,decrypt:true,mode})};forge2.des.Algorithm=function(name2,mode){var self2=this;self2.name=name2;self2.mode=new mode({blockSize:8,cipher:{encrypt:function(inBlock,outBlock){return _updateBlock(self2._keys,inBlock,outBlock,false)},decrypt:function(inBlock,outBlock){return _updateBlock(self2._keys,inBlock,outBlock,true)}}});self2._init=false};forge2.des.Algorithm.prototype.initialize=function(options){if(this._init){return}var key=forge2.util.createBuffer(options.key);if(this.name.indexOf("3DES")===0){if(key.length()!==24){throw new Error("Invalid Triple-DES key size: "+key.length()*8)}}this._keys=_createKeys(key);this._init=true};registerAlgorithm("DES-ECB",forge2.cipher.modes.ecb);registerAlgorithm("DES-CBC",forge2.cipher.modes.cbc);registerAlgorithm("DES-CFB",forge2.cipher.modes.cfb);registerAlgorithm("DES-OFB",forge2.cipher.modes.ofb);registerAlgorithm("DES-CTR",forge2.cipher.modes.ctr);registerAlgorithm("3DES-ECB",forge2.cipher.modes.ecb);registerAlgorithm("3DES-CBC",forge2.cipher.modes.cbc);registerAlgorithm("3DES-CFB",forge2.cipher.modes.cfb);registerAlgorithm("3DES-OFB",forge2.cipher.modes.ofb);registerAlgorithm("3DES-CTR",forge2.cipher.modes.ctr);function registerAlgorithm(name2,mode){var factory=function(){return new forge2.des.Algorithm(name2,mode)};forge2.cipher.registerAlgorithm(name2,factory)}var spfunction1=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756];var spfunction2=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344];var spfunction3=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584];var spfunction4=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928];var spfunction5=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080];var spfunction6=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312];var spfunction7=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154];var spfunction8=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696];function _createKeys(key){var pc2bytes0=[0,4,536870912,536870916,65536,65540,536936448,536936452,512,516,536871424,536871428,66048,66052,536936960,536936964],pc2bytes1=[0,1,1048576,1048577,67108864,67108865,68157440,68157441,256,257,1048832,1048833,67109120,67109121,68157696,68157697],pc2bytes2=[0,8,2048,2056,16777216,16777224,16779264,16779272,0,8,2048,2056,16777216,16777224,16779264,16779272],pc2bytes3=[0,2097152,134217728,136314880,8192,2105344,134225920,136323072,131072,2228224,134348800,136445952,139264,2236416,134356992,136454144],pc2bytes4=[0,262144,16,262160,0,262144,16,262160,4096,266240,4112,266256,4096,266240,4112,266256],pc2bytes5=[0,1024,32,1056,0,1024,32,1056,33554432,33555456,33554464,33555488,33554432,33555456,33554464,33555488],pc2bytes6=[0,268435456,524288,268959744,2,268435458,524290,268959746,0,268435456,524288,268959744,2,268435458,524290,268959746],pc2bytes7=[0,65536,2048,67584,536870912,536936448,536872960,536938496,131072,196608,133120,198656,537001984,537067520,537004032,537069568],pc2bytes8=[0,262144,0,262144,2,262146,2,262146,33554432,33816576,33554432,33816576,33554434,33816578,33554434,33816578],pc2bytes9=[0,268435456,8,268435464,0,268435456,8,268435464,1024,268436480,1032,268436488,1024,268436480,1032,268436488],pc2bytes10=[0,32,0,32,1048576,1048608,1048576,1048608,8192,8224,8192,8224,1056768,1056800,1056768,1056800],pc2bytes11=[0,16777216,512,16777728,2097152,18874368,2097664,18874880,67108864,83886080,67109376,83886592,69206016,85983232,69206528,85983744],pc2bytes12=[0,4096,134217728,134221824,524288,528384,134742016,134746112,16,4112,134217744,134221840,524304,528400,134742032,134746128],pc2bytes13=[0,4,256,260,0,4,256,260,1,5,257,261,1,5,257,261];var iterations=key.length()>8?3:1;var keys=[];var shifts=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0];var n=0,tmp;for(var j2=0;j2<iterations;j2++){var left=key.getInt32();var right=key.getInt32();tmp=(left>>>4^right)&252645135;right^=tmp;left^=tmp<<4;tmp=(right>>>-16^left)&65535;left^=tmp;right^=tmp<<-16;tmp=(left>>>2^right)&858993459;right^=tmp;left^=tmp<<2;tmp=(right>>>-16^left)&65535;left^=tmp;right^=tmp<<-16;tmp=(left>>>1^right)&1431655765;right^=tmp;left^=tmp<<1;tmp=(right>>>8^left)&16711935;left^=tmp;right^=tmp<<8;tmp=(left>>>1^right)&1431655765;right^=tmp;left^=tmp<<1;tmp=left<<8|right>>>20&240;left=right<<24|right<<8&16711680|right>>>8&65280|right>>>24&240;right=tmp;for(var i=0;i<shifts.length;++i){if(shifts[i]){left=left<<2|left>>>26;right=right<<2|right>>>26}else{left=left<<1|left>>>27;right=right<<1|right>>>27}left&=-15;right&=-15;var lefttmp=pc2bytes0[left>>>28]|pc2bytes1[left>>>24&15]|pc2bytes2[left>>>20&15]|pc2bytes3[left>>>16&15]|pc2bytes4[left>>>12&15]|pc2bytes5[left>>>8&15]|pc2bytes6[left>>>4&15];var righttmp=pc2bytes7[right>>>28]|pc2bytes8[right>>>24&15]|pc2bytes9[right>>>20&15]|pc2bytes10[right>>>16&15]|pc2bytes11[right>>>12&15]|pc2bytes12[right>>>8&15]|pc2bytes13[right>>>4&15];tmp=(righttmp>>>16^lefttmp)&65535;keys[n++]=lefttmp^tmp;keys[n++]=righttmp^tmp<<16}}return keys}function _updateBlock(keys,input,output,decrypt){var iterations=keys.length===32?3:9;var looping;if(iterations===3){looping=decrypt?[30,-2,-2]:[0,32,2]}else{looping=decrypt?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2]}var tmp;var left=input[0];var right=input[1];tmp=(left>>>4^right)&252645135;right^=tmp;left^=tmp<<4;tmp=(left>>>16^right)&65535;right^=tmp;left^=tmp<<16;tmp=(right>>>2^left)&858993459;left^=tmp;right^=tmp<<2;tmp=(right>>>8^left)&16711935;left^=tmp;right^=tmp<<8;tmp=(left>>>1^right)&1431655765;right^=tmp;left^=tmp<<1;left=left<<1|left>>>31;right=right<<1|right>>>31;for(var j2=0;j2<iterations;j2+=3){var endloop=looping[j2+1];var loopinc=looping[j2+2];for(var i=looping[j2];i!=endloop;i+=loopinc){var right1=right^keys[i];var right2=(right>>>4|right<<28)^keys[i+1];tmp=left;left=right;right=tmp^(spfunction2[right1>>>24&63]|spfunction4[right1>>>16&63]|spfunction6[right1>>>8&63]|spfunction8[right1&63]|spfunction1[right2>>>24&63]|spfunction3[right2>>>16&63]|spfunction5[right2>>>8&63]|spfunction7[right2&63])}tmp=left;left=right;right=tmp}left=left>>>1|left<<31;right=right>>>1|right<<31;tmp=(left>>>1^right)&1431655765;right^=tmp;left^=tmp<<1;tmp=(right>>>8^left)&16711935;left^=tmp;right^=tmp<<8;tmp=(right>>>2^left)&858993459;left^=tmp;right^=tmp<<2;tmp=(left>>>16^right)&65535;right^=tmp;left^=tmp<<16;tmp=(left>>>4^right)&252645135;right^=tmp;left^=tmp<<4;output[0]=left;output[1]=right}function _createCipher(options){options=options||{};var mode=(options.mode||"CBC").toUpperCase();var algorithm="DES-"+mode;var cipher;if(options.decrypt){cipher=forge2.cipher.createDecipher(algorithm,options.key)}else{cipher=forge2.cipher.createCipher(algorithm,options.key)}var start=cipher.start;cipher.start=function(iv,options2){var output=null;if(options2 instanceof forge2.util.ByteBuffer){output=options2;options2={}}options2=options2||{};options2.output=output;options2.iv=iv;start.call(cipher,options2)};return cipher}}});var require_pbkdf2=__commonJS({"node_modules/node-forge/lib/pbkdf2.js"(exports,module){"use strict";var forge2=require_forge();require_hmac();require_md();require_util7();var pkcs5=forge2.pkcs5=forge2.pkcs5||{};var crypto5;if(forge2.util.isNodejs&&!forge2.options.usePureJavaScript){crypto5=__require("crypto")}module.exports=forge2.pbkdf2=pkcs5.pbkdf2=function(p2,s3,c,dkLen,md,callback){if(typeof md==="function"){callback=md;md=null}if(forge2.util.isNodejs&&!forge2.options.usePureJavaScript&&crypto5.pbkdf2&&(md===null||typeof md!=="object")&&(crypto5.pbkdf2Sync.length>4||(!md||md==="sha1"))){if(typeof md!=="string"){md="sha1"}p2=Buffer.from(p2,"binary");s3=Buffer.from(s3,"binary");if(!callback){if(crypto5.pbkdf2Sync.length===4){return crypto5.pbkdf2Sync(p2,s3,c,dkLen).toString("binary")}return crypto5.pbkdf2Sync(p2,s3,c,dkLen,md).toString("binary")}if(crypto5.pbkdf2Sync.length===4){return crypto5.pbkdf2(p2,s3,c,dkLen,function(err3,key){if(err3){return callback(err3)}callback(null,key.toString("binary"))})}return crypto5.pbkdf2(p2,s3,c,dkLen,md,function(err3,key){if(err3){return callback(err3)}callback(null,key.toString("binary"))})}if(typeof md==="undefined"||md===null){md="sha1"}if(typeof md==="string"){if(!(md in forge2.md.algorithms)){throw new Error("Unknown hash algorithm: "+md)}md=forge2.md[md].create()}var hLen=md.digestLength;if(dkLen>4294967295*hLen){var err2=new Error("Derived key is too long.");if(callback){return callback(err2)}throw err2}var len=Math.ceil(dkLen/hLen);var r=dkLen-(len-1)*hLen;var prf=forge2.hmac.create();prf.start(md,p2);var dk="";var xor,u_c,u_c1;if(!callback){for(var i=1;i<=len;++i){prf.start(null,null);prf.update(s3);prf.update(forge2.util.int32ToBytes(i));xor=u_c1=prf.digest().getBytes();for(var j2=2;j2<=c;++j2){prf.start(null,null);prf.update(u_c1);u_c=prf.digest().getBytes();xor=forge2.util.xorBytes(xor,u_c,hLen);u_c1=u_c}dk+=i<len?xor:xor.substr(0,r)}return dk}var i=1,j2;function outer(){if(i>len){return callback(null,dk)}prf.start(null,null);prf.update(s3);prf.update(forge2.util.int32ToBytes(i));xor=u_c1=prf.digest().getBytes();j2=2;inner()}function inner(){if(j2<=c){prf.start(null,null);prf.update(u_c1);u_c=prf.digest().getBytes();xor=forge2.util.xorBytes(xor,u_c,hLen);u_c1=u_c;++j2;return forge2.util.setImmediate(inner)}dk+=i<len?xor:xor.substr(0,r);++i;outer()}outer()}}});var require_sha256=__commonJS({"node_modules/node-forge/lib/sha256.js"(exports,module){"use strict";var forge2=require_forge();require_md();require_util7();var sha2562=module.exports=forge2.sha256=forge2.sha256||{};forge2.md.sha256=forge2.md.algorithms.sha256=sha2562;sha2562.create=function(){if(!_initialized){_init()}var _state=null;var _input=forge2.util.createBuffer();var _w=new Array(64);var md={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,fullMessageLength:null,messageLengthSize:8};md.start=function(){md.messageLength=0;md.fullMessageLength=md.messageLength64=[];var int32s=md.messageLengthSize/4;for(var i=0;i<int32s;++i){md.fullMessageLength.push(0)}_input=forge2.util.createBuffer();_state={h0:1779033703,h1:3144134277,h2:1013904242,h3:2773480762,h4:1359893119,h5:2600822924,h6:528734635,h7:1541459225};return md};md.start();md.update=function(msg,encoding){if(encoding==="utf8"){msg=forge2.util.encodeUtf8(msg)}var len=msg.length;md.messageLength+=len;len=[len/4294967296>>>0,len>>>0];for(var i=md.fullMessageLength.length-1;i>=0;--i){md.fullMessageLength[i]+=len[1];len[1]=len[0]+(md.fullMessageLength[i]/4294967296>>>0);md.fullMessageLength[i]=md.fullMessageLength[i]>>>0;len[0]=len[1]/4294967296>>>0}_input.putBytes(msg);_update(_state,_w,_input);if(_input.read>2048||_input.length()===0){_input.compact()}return md};md.digest=function(){var finalBlock=forge2.util.createBuffer();finalBlock.putBytes(_input.bytes());var remaining=md.fullMessageLength[md.fullMessageLength.length-1]+md.messageLengthSize;var overflow=remaining&md.blockLength-1;finalBlock.putBytes(_padding.substr(0,md.blockLength-overflow));var next,carry;var bits=md.fullMessageLength[0]*8;for(var i=0;i<md.fullMessageLength.length-1;++i){next=md.fullMessageLength[i+1]*8;carry=next/4294967296>>>0;bits+=carry;finalBlock.putInt32(bits>>>0);bits=next>>>0}finalBlock.putInt32(bits);var s22={h0:_state.h0,h1:_state.h1,h2:_state.h2,h3:_state.h3,h4:_state.h4,h5:_state.h5,h6:_state.h6,h7:_state.h7};_update(s22,_w,finalBlock);var rval=forge2.util.createBuffer();rval.putInt32(s22.h0);rval.putInt32(s22.h1);rval.putInt32(s22.h2);rval.putInt32(s22.h3);rval.putInt32(s22.h4);rval.putInt32(s22.h5);rval.putInt32(s22.h6);rval.putInt32(s22.h7);return rval};return md};var _padding=null;var _initialized=false;var _k=null;function _init(){_padding=String.fromCharCode(128);_padding+=forge2.util.fillString(String.fromCharCode(0),64);_k=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];_initialized=true}function _update(s3,w2,bytes){var t1,t2,s0,s1,ch,maj,i,a,b2,c,d,e,f2,g2,h;var len=bytes.length();while(len>=64){for(i=0;i<16;++i){w2[i]=bytes.getInt32()}for(;i<64;++i){t1=w2[i-2];t1=(t1>>>17|t1<<15)^(t1>>>19|t1<<13)^t1>>>10;t2=w2[i-15];t2=(t2>>>7|t2<<25)^(t2>>>18|t2<<14)^t2>>>3;w2[i]=t1+w2[i-7]+t2+w2[i-16]|0}a=s3.h0;b2=s3.h1;c=s3.h2;d=s3.h3;e=s3.h4;f2=s3.h5;g2=s3.h6;h=s3.h7;for(i=0;i<64;++i){s1=(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7);ch=g2^e&(f2^g2);s0=(a>>>2|a<<30)^(a>>>13|a<<19)^(a>>>22|a<<10);maj=a&b2|c&(a^b2);t1=h+s1+ch+_k[i]+w2[i];t2=s0+maj;h=g2;g2=f2;f2=e;e=d+t1>>>0;d=c;c=b2;b2=a;a=t1+t2>>>0}s3.h0=s3.h0+a|0;s3.h1=s3.h1+b2|0;s3.h2=s3.h2+c|0;s3.h3=s3.h3+d|0;s3.h4=s3.h4+e|0;s3.h5=s3.h5+f2|0;s3.h6=s3.h6+g2|0;s3.h7=s3.h7+h|0;len-=64}}}});var require_prng=__commonJS({"node_modules/node-forge/lib/prng.js"(exports,module){"use strict";var forge2=require_forge();require_util7();var _crypto=null;if(forge2.util.isNodejs&&!forge2.options.usePureJavaScript&&!process.versions["node-webkit"]){_crypto=__require("crypto")}var prng=module.exports=forge2.prng=forge2.prng||{};prng.create=function(plugin){var ctx={plugin,key:null,seed:null,time:null,reseeds:0,generated:0,keyBytes:""};var md=plugin.md;var pools=new Array(32);for(var i=0;i<32;++i){pools[i]=md.create()}ctx.pools=pools;ctx.pool=0;ctx.generate=function(count,callback){if(!callback){return ctx.generateSync(count)}var cipher=ctx.plugin.cipher;var increment=ctx.plugin.increment;var formatKey=ctx.plugin.formatKey;var formatSeed=ctx.plugin.formatSeed;var b2=forge2.util.createBuffer();ctx.key=null;generate();function generate(err2){if(err2){return callback(err2)}if(b2.length()>=count){return callback(null,b2.getBytes(count))}if(ctx.generated>1048575){ctx.key=null}if(ctx.key===null){return forge2.util.nextTick(function(){_reseed(generate)})}var bytes=cipher(ctx.key,ctx.seed);ctx.generated+=bytes.length;b2.putBytes(bytes);ctx.key=formatKey(cipher(ctx.key,increment(ctx.seed)));ctx.seed=formatSeed(cipher(ctx.key,ctx.seed));forge2.util.setImmediate(generate)}};ctx.generateSync=function(count){var cipher=ctx.plugin.cipher;var increment=ctx.plugin.increment;var formatKey=ctx.plugin.formatKey;var formatSeed=ctx.plugin.formatSeed;ctx.key=null;var b2=forge2.util.createBuffer();while(b2.length()<count){if(ctx.generated>1048575){ctx.key=null}if(ctx.key===null){_reseedSync()}var bytes=cipher(ctx.key,ctx.seed);ctx.generated+=bytes.length;b2.putBytes(bytes);ctx.key=formatKey(cipher(ctx.key,increment(ctx.seed)));ctx.seed=formatSeed(cipher(ctx.key,ctx.seed))}return b2.getBytes(count)};function _reseed(callback){if(ctx.pools[0].messageLength>=32){_seed();return callback()}var needed=32-ctx.pools[0].messageLength<<5;ctx.seedFile(needed,function(err2,bytes){if(err2){return callback(err2)}ctx.collect(bytes);_seed();callback()})}function _reseedSync(){if(ctx.pools[0].messageLength>=32){return _seed()}var needed=32-ctx.pools[0].messageLength<<5;ctx.collect(ctx.seedFileSync(needed));_seed()}function _seed(){ctx.reseeds=ctx.reseeds===4294967295?0:ctx.reseeds+1;var md2=ctx.plugin.md.create();md2.update(ctx.keyBytes);var _2powK=1;for(var k2=0;k2<32;++k2){if(ctx.reseeds%_2powK===0){md2.update(ctx.pools[k2].digest().getBytes());ctx.pools[k2].start()}_2powK=_2powK<<1}ctx.keyBytes=md2.digest().getBytes();md2.start();md2.update(ctx.keyBytes);var seedBytes=md2.digest().getBytes();ctx.key=ctx.plugin.formatKey(ctx.keyBytes);ctx.seed=ctx.plugin.formatSeed(seedBytes);ctx.generated=0}function defaultSeedFile(needed){var getRandomValues=null;var globalScope=forge2.util.globalScope;var _crypto2=globalScope.crypto||globalScope.msCrypto;if(_crypto2&&_crypto2.getRandomValues){getRandomValues=function(arr){return _crypto2.getRandomValues(arr)}}var b2=forge2.util.createBuffer();if(getRandomValues){while(b2.length()<needed){var count=Math.max(1,Math.min(needed-b2.length(),65536)/4);var entropy=new Uint32Array(Math.floor(count));try{getRandomValues(entropy);for(var i2=0;i2<entropy.length;++i2){b2.putInt32(entropy[i2])}}catch(e){if(!(typeof QuotaExceededError!=="undefined"&&e instanceof QuotaExceededError)){throw e}}}}if(b2.length()<needed){var hi2,lo2,next;var seed=Math.floor(Math.random()*65536);while(b2.length()<needed){lo2=16807*(seed&65535);hi2=16807*(seed>>16);lo2+=(hi2&32767)<<16;lo2+=hi2>>15;lo2=(lo2&2147483647)+(lo2>>31);seed=lo2&4294967295;for(var i2=0;i2<3;++i2){next=seed>>>(i2<<3);next^=Math.floor(Math.random()*256);b2.putByte(next&255)}}}return b2.getBytes(needed)}if(_crypto){ctx.seedFile=function(needed,callback){_crypto.randomBytes(needed,function(err2,bytes){if(err2){return callback(err2)}callback(null,bytes.toString())})};ctx.seedFileSync=function(needed){return _crypto.randomBytes(needed).toString()}}else{ctx.seedFile=function(needed,callback){try{callback(null,defaultSeedFile(needed))}catch(e){callback(e)}};ctx.seedFileSync=defaultSeedFile}ctx.collect=function(bytes){var count=bytes.length;for(var i2=0;i2<count;++i2){ctx.pools[ctx.pool].update(bytes.substr(i2,1));ctx.pool=ctx.pool===31?0:ctx.pool+1}};ctx.collectInt=function(i2,n){var bytes="";for(var x=0;x<n;x+=8){bytes+=String.fromCharCode(i2>>x&255)}ctx.collect(bytes)};ctx.registerWorker=function(worker){if(worker===self){ctx.seedFile=function(needed,callback){function listener2(e){var data=e.data;if(data.forge&&data.forge.prng){self.removeEventListener("message",listener2);callback(data.forge.prng.err,data.forge.prng.bytes)}}self.addEventListener("message",listener2);self.postMessage({forge:{prng:{needed}}})}}else{var listener=function(e){var data=e.data;if(data.forge&&data.forge.prng){ctx.seedFile(data.forge.prng.needed,function(err2,bytes){worker.postMessage({forge:{prng:{err:err2,bytes}}})})}};worker.addEventListener("message",listener)}};return ctx}}});var require_random=__commonJS({"node_modules/node-forge/lib/random.js"(exports,module){"use strict";var forge2=require_forge();require_aes();require_sha256();require_prng();require_util7();(function(){if(forge2.random&&forge2.random.getBytes){module.exports=forge2.random;return}(function(jQuery2){var prng_aes={};var _prng_aes_output=new Array(4);var _prng_aes_buffer=forge2.util.createBuffer();prng_aes.formatKey=function(key2){var tmp=forge2.util.createBuffer(key2);key2=new Array(4);key2[0]=tmp.getInt32();key2[1]=tmp.getInt32();key2[2]=tmp.getInt32();key2[3]=tmp.getInt32();return forge2.aes._expandKey(key2,false)};prng_aes.formatSeed=function(seed){var tmp=forge2.util.createBuffer(seed);seed=new Array(4);seed[0]=tmp.getInt32();seed[1]=tmp.getInt32();seed[2]=tmp.getInt32();seed[3]=tmp.getInt32();return seed};prng_aes.cipher=function(key2,seed){forge2.aes._updateBlock(key2,seed,_prng_aes_output,false);_prng_aes_buffer.putInt32(_prng_aes_output[0]);_prng_aes_buffer.putInt32(_prng_aes_output[1]);_prng_aes_buffer.putInt32(_prng_aes_output[2]);_prng_aes_buffer.putInt32(_prng_aes_output[3]);return _prng_aes_buffer.getBytes()};prng_aes.increment=function(seed){++seed[3];return seed};prng_aes.md=forge2.md.sha256;function spawnPrng(){var ctx=forge2.prng.create(prng_aes);ctx.getBytes=function(count,callback){return ctx.generate(count,callback)};ctx.getBytesSync=function(count){return ctx.generate(count)};return ctx}var _ctx=spawnPrng();var getRandomValues=null;var globalScope=forge2.util.globalScope;var _crypto=globalScope.crypto||globalScope.msCrypto;if(_crypto&&_crypto.getRandomValues){getRandomValues=function(arr){return _crypto.getRandomValues(arr)}}if(forge2.options.usePureJavaScript||!forge2.util.isNodejs&&!getRandomValues){if(typeof window==="undefined"||window.document===void 0){}_ctx.collectInt(+new Date,32);if(typeof navigator!=="undefined"){var _navBytes="";for(var key in navigator){try{if(typeof navigator[key]=="string"){_navBytes+=navigator[key]}}catch(e){}}_ctx.collect(_navBytes);_navBytes=null}if(jQuery2){jQuery2().mousemove(function(e){_ctx.collectInt(e.clientX,16);_ctx.collectInt(e.clientY,16)});jQuery2().keypress(function(e){_ctx.collectInt(e.charCode,8)})}}if(!forge2.random){forge2.random=_ctx}else{for(var key in _ctx){forge2.random[key]=_ctx[key]}}forge2.random.createInstance=spawnPrng;module.exports=forge2.random})(typeof jQuery!=="undefined"?jQuery:null)})()}});var require_rc2=__commonJS({"node_modules/node-forge/lib/rc2.js"(exports,module){"use strict";var forge2=require_forge();require_util7();var piTable=[217,120,249,196,25,221,181,237,40,233,253,121,74,160,216,157,198,126,55,131,43,118,83,142,98,76,100,136,68,139,251,162,23,154,89,245,135,179,79,19,97,69,109,141,9,129,125,50,189,143,64,235,134,183,123,11,240,149,33,34,92,107,78,130,84,214,101,147,206,96,178,28,115,86,192,20,167,140,241,220,18,117,202,31,59,190,228,209,66,61,212,48,163,60,182,38,111,191,14,218,70,105,7,87,39,242,29,155,188,148,67,3,248,17,199,246,144,239,62,231,6,195,213,47,200,102,30,215,8,232,234,222,128,82,238,247,132,170,114,172,53,77,106,42,150,26,210,113,90,21,73,116,75,159,208,94,4,24,164,236,194,224,65,110,15,81,203,204,36,145,175,80,161,244,112,57,153,124,58,133,35,184,180,122,252,2,54,91,37,85,151,49,45,93,250,152,227,138,146,174,5,223,41,16,103,108,186,201,211,0,230,207,225,158,168,44,99,22,1,63,88,226,137,169,13,56,52,27,171,51,255,176,187,72,12,95,185,177,205,46,197,243,219,71,229,165,156,119,10,166,32,104,254,127,193,173];var s3=[1,2,3,5];var rol=function(word,bits){return word<<bits&65535|(word&65535)>>16-bits};var ror=function(word,bits){return(word&65535)>>bits|word<<16-bits&65535};module.exports=forge2.rc2=forge2.rc2||{};forge2.rc2.expandKey=function(key,effKeyBits){if(typeof key==="string"){key=forge2.util.createBuffer(key)}effKeyBits=effKeyBits||128;var L2=key;var T=key.length();var T1=effKeyBits;var T8=Math.ceil(T1/8);var TM=255>>(T1&7);var i;for(i=T;i<128;i++){L2.putByte(piTable[L2.at(i-1)+L2.at(i-T)&255])}L2.setAt(128-T8,piTable[L2.at(128-T8)&TM]);for(i=127-T8;i>=0;i--){L2.setAt(i,piTable[L2.at(i+1)^L2.at(i+T8)])}return L2};var createCipher=function(key,bits,encrypt){var _finish=false,_input=null,_output=null,_iv=null;var mixRound,mashRound;var i,j2,K2=[];key=forge2.rc2.expandKey(key,bits);for(i=0;i<64;i++){K2.push(key.getInt16Le())}if(encrypt){mixRound=function(R2){for(i=0;i<4;i++){R2[i]+=K2[j2]+(R2[(i+3)%4]&R2[(i+2)%4])+(~R2[(i+3)%4]&R2[(i+1)%4]);R2[i]=rol(R2[i],s3[i]);j2++}};mashRound=function(R2){for(i=0;i<4;i++){R2[i]+=K2[R2[(i+3)%4]&63]}}}else{mixRound=function(R2){for(i=3;i>=0;i--){R2[i]=ror(R2[i],s3[i]);R2[i]-=K2[j2]+(R2[(i+3)%4]&R2[(i+2)%4])+(~R2[(i+3)%4]&R2[(i+1)%4]);j2--}};mashRound=function(R2){for(i=3;i>=0;i--){R2[i]-=K2[R2[(i+3)%4]&63]}}}var runPlan=function(plan){var R2=[];for(i=0;i<4;i++){var val=_input.getInt16Le();if(_iv!==null){if(encrypt){val^=_iv.getInt16Le()}else{_iv.putInt16Le(val)}}R2.push(val&65535)}j2=encrypt?0:63;for(var ptr=0;ptr<plan.length;ptr++){for(var ctr=0;ctr<plan[ptr][0];ctr++){plan[ptr][1](R2)}}for(i=0;i<4;i++){if(_iv!==null){if(encrypt){_iv.putInt16Le(R2[i])}else{R2[i]^=_iv.getInt16Le()}}_output.putInt16Le(R2[i])}};var cipher=null;cipher={start:function(iv,output){if(iv){if(typeof iv==="string"){iv=forge2.util.createBuffer(iv)}}_finish=false;_input=forge2.util.createBuffer();_output=output||new forge2.util.createBuffer;_iv=iv;cipher.output=_output},update:function(input){if(!_finish){_input.putBuffer(input)}while(_input.length()>=8){runPlan([[5,mixRound],[1,mashRound],[6,mixRound],[1,mashRound],[5,mixRound]])}},finish:function(pad){var rval=true;if(encrypt){if(pad){rval=pad(8,_input,!encrypt)}else{var padding=_input.length()===8?8:8-_input.length();_input.fillWithByte(padding,padding)}}if(rval){_finish=true;cipher.update()}if(!encrypt){rval=_input.length()===0;if(rval){if(pad){rval=pad(8,_output,!encrypt)}else{var len=_output.length();var count=_output.at(len-1);if(count>len){rval=false}else{_output.truncate(count)}}}}return rval}};return cipher};forge2.rc2.startEncrypting=function(key,iv,output){var cipher=forge2.rc2.createEncryptionCipher(key,128);cipher.start(iv,output);return cipher};forge2.rc2.createEncryptionCipher=function(key,bits){return createCipher(key,bits,true)};forge2.rc2.startDecrypting=function(key,iv,output){var cipher=forge2.rc2.createDecryptionCipher(key,128);cipher.start(iv,output);return cipher};forge2.rc2.createDecryptionCipher=function(key,bits){return createCipher(key,bits,false)}}});var require_jsbn=__commonJS({"node_modules/node-forge/lib/jsbn.js"(exports,module){"use strict";var forge2=require_forge();module.exports=forge2.jsbn=forge2.jsbn||{};var dbits;var canary=0xdeadbeefcafe;var j_lm=(canary&16777215)==15715070;function BigInteger(a,b2,c){this.data=[];if(a!=null)if("number"==typeof a)this.fromNumber(a,b2,c);else if(b2==null&&"string"!=typeof a)this.fromString(a,256);else this.fromString(a,b2)}forge2.jsbn.BigInteger=BigInteger;function nbi(){return new BigInteger(null)}function am1(i,x,w2,j2,c,n){while(--n>=0){var v2=x*this.data[i++]+w2.data[j2]+c;c=Math.floor(v2/67108864);w2.data[j2++]=v2&67108863}return c}function am2(i,x,w2,j2,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this.data[i]&32767;var h=this.data[i++]>>15;var m2=xh*l+h*xl;l=xl*l+((m2&32767)<<15)+w2.data[j2]+(c&1073741823);c=(l>>>30)+(m2>>>15)+xh*h+(c>>>30);w2.data[j2++]=l&1073741823}return c}function am3(i,x,w2,j2,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this.data[i]&16383;var h=this.data[i++]>>14;var m2=xh*l+h*xl;l=xl*l+((m2&16383)<<14)+w2.data[j2]+c;c=(l>>28)+(m2>>14)+xh*h;w2.data[j2++]=l&268435455}return c}if(typeof navigator==="undefined"){BigInteger.prototype.am=am3;dbits=28}else if(j_lm&&navigator.appName=="Microsoft Internet Explorer"){BigInteger.prototype.am=am2;dbits=30}else if(j_lm&&navigator.appName!="Netscape"){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=(1<<dbits)-1;BigInteger.prototype.DV=1<<dbits;var BI_FP=52;BigInteger.prototype.FV=Math.pow(2,BI_FP);BigInteger.prototype.F1=BI_FP-dbits;BigInteger.prototype.F2=2*dbits-BI_FP;var BI_RM="0123456789abcdefghijklmnopqrstuvwxyz";var BI_RC=new Array;var rr2;var vv;rr2="0".charCodeAt(0);for(vv=0;vv<=9;++vv)BI_RC[rr2++]=vv;rr2="a".charCodeAt(0);for(vv=10;vv<36;++vv)BI_RC[rr2++]=vv;rr2="A".charCodeAt(0);for(vv=10;vv<36;++vv)BI_RC[rr2++]=vv;function int2char(n){return BI_RM.charAt(n)}function intAt(s3,i){var c=BI_RC[s3.charCodeAt(i)];return c==null?-1:c}function bnpCopyTo(r){for(var i=this.t-1;i>=0;--i)r.data[i]=this.data[i];r.t=this.t;r.s=this.s}function bnpFromInt(x){this.t=1;this.s=x<0?-1:0;if(x>0)this.data[0]=x;else if(x<-1)this.data[0]=x+this.DV;else this.t=0}function nbv(i){var r=nbi();r.fromInt(i);return r}function bnpFromString(s3,b2){var k2;if(b2==16)k2=4;else if(b2==8)k2=3;else if(b2==256)k2=8;else if(b2==2)k2=1;else if(b2==32)k2=5;else if(b2==4)k2=2;else{this.fromRadix(s3,b2);return}this.t=0;this.s=0;var i=s3.length,mi2=false,sh=0;while(--i>=0){var x=k2==8?s3[i]&255:intAt(s3,i);if(x<0){if(s3.charAt(i)=="-")mi2=true;continue}mi2=false;if(sh==0)this.data[this.t++]=x;else if(sh+k2>this.DB){this.data[this.t-1]|=(x&(1<<this.DB-sh)-1)<<sh;this.data[this.t++]=x>>this.DB-sh}else this.data[this.t-1]|=x<<sh;sh+=k2;if(sh>=this.DB)sh-=this.DB}if(k2==8&&(s3[0]&128)!=0){this.s=-1;if(sh>0)this.data[this.t-1]|=(1<<this.DB-sh)-1<<sh}this.clamp();if(mi2)BigInteger.ZERO.subTo(this,this)}function bnpClamp(){var c=this.s&this.DM;while(this.t>0&&this.data[this.t-1]==c)--this.t}function bnToString(b2){if(this.s<0)return"-"+this.negate().toString(b2);var k2;if(b2==16)k2=4;else if(b2==8)k2=3;else if(b2==2)k2=1;else if(b2==32)k2=5;else if(b2==4)k2=2;else return this.toRadix(b2);var km=(1<<k2)-1,d,m2=false,r="",i=this.t;var p2=this.DB-i*this.DB%k2;if(i-- >0){if(p2<this.DB&&(d=this.data[i]>>p2)>0){m2=true;r=int2char(d)}while(i>=0){if(p2<k2){d=(this.data[i]&(1<<p2)-1)<<k2-p2;d|=this.data[--i]>>(p2+=this.DB-k2)}else{d=this.data[i]>>(p2-=k2)&km;if(p2<=0){p2+=this.DB;--i}}if(d>0)m2=true;if(m2)r+=int2char(d)}}return m2?r:"0"}function bnNegate(){var r=nbi();BigInteger.ZERO.subTo(this,r);return r}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(a){var r=this.s-a.s;if(r!=0)return r;var i=this.t;r=i-a.t;if(r!=0)return this.s<0?-r:r;while(--i>=0)if((r=this.data[i]-a.data[i])!=0)return r;return 0}function nbits(x){var r=1,t;if((t=x>>>16)!=0){x=t;r+=16}if((t=x>>8)!=0){x=t;r+=8}if((t=x>>4)!=0){x=t;r+=4}if((t=x>>2)!=0){x=t;r+=2}if((t=x>>1)!=0){x=t;r+=1}return r}function bnBitLength(){if(this.t<=0)return 0;return this.DB*(this.t-1)+nbits(this.data[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(n,r){var i;for(i=this.t-1;i>=0;--i)r.data[i+n]=this.data[i];for(i=n-1;i>=0;--i)r.data[i]=0;r.t=this.t+n;r.s=this.s}function bnpDRShiftTo(n,r){for(var i=n;i<this.t;++i)r.data[i-n]=this.data[i];r.t=Math.max(this.t-n,0);r.s=this.s}function bnpLShiftTo(n,r){var bs2=n%this.DB;var cbs=this.DB-bs2;var bm=(1<<cbs)-1;var ds2=Math.floor(n/this.DB),c=this.s<<bs2&this.DM,i;for(i=this.t-1;i>=0;--i){r.data[i+ds2+1]=this.data[i]>>cbs|c;c=(this.data[i]&bm)<<bs2}for(i=ds2-1;i>=0;--i)r.data[i]=0;r.data[ds2]=c;r.t=this.t+ds2+1;r.s=this.s;r.clamp()}function bnpRShiftTo(n,r){r.s=this.s;var ds2=Math.floor(n/this.DB);if(ds2>=this.t){r.t=0;return}var bs2=n%this.DB;var cbs=this.DB-bs2;var bm=(1<<bs2)-1;r.data[0]=this.data[ds2]>>bs2;for(var i=ds2+1;i<this.t;++i){r.data[i-ds2-1]|=(this.data[i]&bm)<<cbs;r.data[i-ds2]=this.data[i]>>bs2}if(bs2>0)r.data[this.t-ds2-1]|=(this.s&bm)<<cbs;r.t=this.t-ds2;r.clamp()}function bnpSubTo(a,r){var i=0,c=0,m2=Math.min(a.t,this.t);while(i<m2){c+=this.data[i]-a.data[i];r.data[i++]=c&this.DM;c>>=this.DB}if(a.t<this.t){c-=a.s;while(i<this.t){c+=this.data[i];r.data[i++]=c&this.DM;c>>=this.DB}c+=this.s}else{c+=this.s;while(i<a.t){c-=a.data[i];r.data[i++]=c&this.DM;c>>=this.DB}c-=a.s}r.s=c<0?-1:0;if(c<-1)r.data[i++]=this.DV+c;else if(c>0)r.data[i++]=c;r.t=i;r.clamp()}function bnpMultiplyTo(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0)r.data[i]=0;for(i=0;i<y.t;++i)r.data[i+x.t]=x.am(0,y.data[i],r,i,0,x.t);r.s=0;r.clamp();if(this.s!=a.s)BigInteger.ZERO.subTo(r,r)}function bnpSquareTo(r){var x=this.abs();var i=r.t=2*x.t;while(--i>=0)r.data[i]=0;for(i=0;i<x.t-1;++i){var c=x.am(i,x.data[i],r,2*i,0,1);if((r.data[i+x.t]+=x.am(i+1,2*x.data[i],r,2*i+1,c,x.t-i-1))>=x.DV){r.data[i+x.t]-=x.DV;r.data[i+x.t+1]=1}}if(r.t>0)r.data[r.t-1]+=x.am(i,x.data[i],r,2*i,0,1);r.s=0;r.clamp()}function bnpDivRemTo(m2,q2,r){var pm=m2.abs();if(pm.t<=0)return;var pt2=this.abs();if(pt2.t<pm.t){if(q2!=null)q2.fromInt(0);if(r!=null)this.copyTo(r);return}if(r==null)r=nbi();var y=nbi(),ts2=this.s,ms2=m2.s;var nsh=this.DB-nbits(pm.data[pm.t-1]);if(nsh>0){pm.lShiftTo(nsh,y);pt2.lShiftTo(nsh,r)}else{pm.copyTo(y);pt2.copyTo(r)}var ys2=y.t;var y0=y.data[ys2-1];if(y0==0)return;var yt2=y0*(1<<this.F1)+(ys2>1?y.data[ys2-2]>>this.F2:0);var d1=this.FV/yt2,d2=(1<<this.F1)/yt2,e=1<<this.F2;var i=r.t,j2=i-ys2,t=q2==null?nbi():q2;y.dlShiftTo(j2,t);if(r.compareTo(t)>=0){r.data[r.t++]=1;r.subTo(t,r)}BigInteger.ONE.dlShiftTo(ys2,t);t.subTo(y,y);while(y.t<ys2)y.data[y.t++]=0;while(--j2>=0){var qd=r.data[--i]==y0?this.DM:Math.floor(r.data[i]*d1+(r.data[i-1]+e)*d2);if((r.data[i]+=y.am(0,qd,r,j2,0,ys2))<qd){y.dlShiftTo(j2,t);r.subTo(t,r);while(r.data[i]<--qd)r.subTo(t,r)}}if(q2!=null){r.drShiftTo(ys2,q2);if(ts2!=ms2)BigInteger.ZERO.subTo(q2,q2)}r.t=ys2;r.clamp();if(nsh>0)r.rShiftTo(nsh,r);if(ts2<0)BigInteger.ZERO.subTo(r,r)}function bnMod(a){var r=nbi();this.abs().divRemTo(a,null,r);if(this.s<0&&r.compareTo(BigInteger.ZERO)>0)a.subTo(r,r);return r}function Classic(m2){this.m=m2}function cConvert(x){if(x.s<0||x.compareTo(this.m)>=0)return x.mod(this.m);else return x}function cRevert(x){return x}function cReduce(x){x.divRemTo(this.m,null,x)}function cMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}function cSqrTo(x,r){x.squareTo(r);this.reduce(r)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var x=this.data[0];if((x&1)==0)return 0;var y=x&3;y=y*(2-(x&15)*y)&15;y=y*(2-(x&255)*y)&255;y=y*(2-((x&65535)*y&65535))&65535;y=y*(2-x*y%this.DV)%this.DV;return y>0?this.DV-y:-y}function Montgomery(m2){this.m=m2;this.mp=m2.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<m2.DB-15)-1;this.mt2=2*m2.t}function montConvert(x){var r=nbi();x.abs().dlShiftTo(this.m.t,r);r.divRemTo(this.m,null,r);if(x.s<0&&r.compareTo(BigInteger.ZERO)>0)this.m.subTo(r,r);return r}function montRevert(x){var r=nbi();x.copyTo(r);this.reduce(r);return r}function montReduce(x){while(x.t<=this.mt2)x.data[x.t++]=0;for(var i=0;i<this.m.t;++i){var j2=x.data[i]&32767;var u0=j2*this.mpl+((j2*this.mph+(x.data[i]>>15)*this.mpl&this.um)<<15)&x.DM;j2=i+this.m.t;x.data[j2]+=this.m.am(0,u0,x,i,0,this.m.t);while(x.data[j2]>=x.DV){x.data[j2]-=x.DV;x.data[++j2]++}}x.clamp();x.drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function montSqrTo(x,r){x.squareTo(r);this.reduce(r)}function montMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this.data[0]&1:this.s)==0}function bnpExp(e,z2){if(e>4294967295||e<1)return BigInteger.ONE;var r=nbi(),r2=nbi(),g2=z2.convert(this),i=nbits(e)-1;g2.copyTo(r);while(--i>=0){z2.sqrTo(r,r2);if((e&1<<i)>0)z2.mulTo(r2,g2,r);else{var t=r;r=r2;r2=t}}return z2.revert(r)}function bnModPowInt(e,m2){var z2;if(e<256||m2.isEven())z2=new Classic(m2);else z2=new Montgomery(m2);return this.exp(e,z2)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnClone(){var r=nbi();this.copyTo(r);return r}function bnIntValue(){if(this.s<0){if(this.t==1)return this.data[0]-this.DV;else if(this.t==0)return-1}else if(this.t==1)return this.data[0];else if(this.t==0)return 0;return(this.data[1]&(1<<32-this.DB)-1)<<this.DB|this.data[0]}function bnByteValue(){return this.t==0?this.s:this.data[0]<<24>>24}function bnShortValue(){return this.t==0?this.s:this.data[0]<<16>>16}function bnpChunkSize(r){return Math.floor(Math.LN2*this.DB/Math.log(r))}function bnSigNum(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this.data[0]<=0)return 0;else return 1}function bnpToRadix(b2){if(b2==null)b2=10;if(this.signum()==0||b2<2||b2>36)return"0";var cs2=this.chunkSize(b2);var a=Math.pow(b2,cs2);var d=nbv(a),y=nbi(),z2=nbi(),r="";this.divRemTo(d,y,z2);while(y.signum()>0){r=(a+z2.intValue()).toString(b2).substr(1)+r;y.divRemTo(d,y,z2)}return z2.intValue().toString(b2)+r}function bnpFromRadix(s3,b2){this.fromInt(0);if(b2==null)b2=10;var cs2=this.chunkSize(b2);var d=Math.pow(b2,cs2),mi2=false,j2=0,w2=0;for(var i=0;i<s3.length;++i){var x=intAt(s3,i);if(x<0){if(s3.charAt(i)=="-"&&this.signum()==0)mi2=true;continue}w2=b2*w2+x;if(++j2>=cs2){this.dMultiply(d);this.dAddOffset(w2,0);j2=0;w2=0}}if(j2>0){this.dMultiply(Math.pow(b2,j2));this.dAddOffset(w2,0)}if(mi2)BigInteger.ZERO.subTo(this,this)}function bnpFromNumber(a,b2,c){if("number"==typeof b2){if(a<2)this.fromInt(1);else{this.fromNumber(a,c);if(!this.testBit(a-1))this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);if(this.isEven())this.dAddOffset(1,0);while(!this.isProbablePrime(b2)){this.dAddOffset(2,0);if(this.bitLength()>a)this.subTo(BigInteger.ONE.shiftLeft(a-1),this)}}}else{var x=new Array,t=a&7;x.length=(a>>3)+1;b2.nextBytes(x);if(t>0)x[0]&=(1<<t)-1;else x[0]=0;this.fromString(x,256)}}function bnToByteArray(){var i=this.t,r=new Array;r[0]=this.s;var p2=this.DB-i*this.DB%8,d,k2=0;if(i-- >0){if(p2<this.DB&&(d=this.data[i]>>p2)!=(this.s&this.DM)>>p2)r[k2++]=d|this.s<<this.DB-p2;while(i>=0){if(p2<8){d=(this.data[i]&(1<<p2)-1)<<8-p2;d|=this.data[--i]>>(p2+=this.DB-8)}else{d=this.data[i]>>(p2-=8)&255;if(p2<=0){p2+=this.DB;--i}}if((d&128)!=0)d|=-256;if(k2==0&&(this.s&128)!=(d&128))++k2;if(k2>0||d!=this.s)r[k2++]=d}}return r}function bnEquals(a){return this.compareTo(a)==0}function bnMin(a){return this.compareTo(a)<0?this:a}function bnMax(a){return this.compareTo(a)>0?this:a}function bnpBitwiseTo(a,op,r){var i,f2,m2=Math.min(a.t,this.t);for(i=0;i<m2;++i)r.data[i]=op(this.data[i],a.data[i]);if(a.t<this.t){f2=a.s&this.DM;for(i=m2;i<this.t;++i)r.data[i]=op(this.data[i],f2);r.t=this.t}else{f2=this.s&this.DM;for(i=m2;i<a.t;++i)r.data[i]=op(f2,a.data[i]);r.t=a.t}r.s=op(this.s,a.s);r.clamp()}function op_and(x,y){return x&y}function bnAnd(a){var r=nbi();this.bitwiseTo(a,op_and,r);return r}function op_or(x,y){return x|y}function bnOr(a){var r=nbi();this.bitwiseTo(a,op_or,r);return r}function op_xor(x,y){return x^y}function bnXor(a){var r=nbi();this.bitwiseTo(a,op_xor,r);return r}function op_andnot(x,y){return x&~y}function bnAndNot(a){var r=nbi();this.bitwiseTo(a,op_andnot,r);return r}function bnNot(){var r=nbi();for(var i=0;i<this.t;++i)r.data[i]=this.DM&~this.data[i];r.t=this.t;r.s=~this.s;return r}function bnShiftLeft(n){var r=nbi();if(n<0)this.rShiftTo(-n,r);else this.lShiftTo(n,r);return r}function bnShiftRight(n){var r=nbi();if(n<0)this.lShiftTo(-n,r);else this.rShiftTo(n,r);return r}function lbit(x){if(x==0)return-1;var r=0;if((x&65535)==0){x>>=16;r+=16}if((x&255)==0){x>>=8;r+=8}if((x&15)==0){x>>=4;r+=4}if((x&3)==0){x>>=2;r+=2}if((x&1)==0)++r;return r}function bnGetLowestSetBit(){for(var i=0;i<this.t;++i)if(this.data[i]!=0)return i*this.DB+lbit(this.data[i]);if(this.s<0)return this.t*this.DB;return-1}function cbit(x){var r=0;while(x!=0){x&=x-1;++r}return r}function bnBitCount(){var r=0,x=this.s&this.DM;for(var i=0;i<this.t;++i)r+=cbit(this.data[i]^x);return r}function bnTestBit(n){var j2=Math.floor(n/this.DB);if(j2>=this.t)return this.s!=0;return(this.data[j2]&1<<n%this.DB)!=0}function bnpChangeBit(n,op){var r=BigInteger.ONE.shiftLeft(n);this.bitwiseTo(r,op,r);return r}function bnSetBit(n){return this.changeBit(n,op_or)}function bnClearBit(n){return this.changeBit(n,op_andnot)}function bnFlipBit(n){return this.changeBit(n,op_xor)}function bnpAddTo(a,r){var i=0,c=0,m2=Math.min(a.t,this.t);while(i<m2){c+=this.data[i]+a.data[i];r.data[i++]=c&this.DM;c>>=this.DB}if(a.t<this.t){c+=a.s;while(i<this.t){c+=this.data[i];r.data[i++]=c&this.DM;c>>=this.DB}c+=this.s}else{c+=this.s;while(i<a.t){c+=a.data[i];r.data[i++]=c&this.DM;c>>=this.DB}c+=a.s}r.s=c<0?-1:0;if(c>0)r.data[i++]=c;else if(c<-1)r.data[i++]=this.DV+c;r.t=i;r.clamp()}function bnAdd(a){var r=nbi();this.addTo(a,r);return r}function bnSubtract(a){var r=nbi();this.subTo(a,r);return r}function bnMultiply(a){var r=nbi();this.multiplyTo(a,r);return r}function bnSquare(){var r=nbi();this.squareTo(r);return r}function bnDivide(a){var r=nbi();this.divRemTo(a,r,null);return r}function bnRemainder(a){var r=nbi();this.divRemTo(a,null,r);return r}function bnDivideAndRemainder(a){var q2=nbi(),r=nbi();this.divRemTo(a,q2,r);return new Array(q2,r)}function bnpDMultiply(n){this.data[this.t]=this.am(0,n-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(n,w2){if(n==0)return;while(this.t<=w2)this.data[this.t++]=0;this.data[w2]+=n;while(this.data[w2]>=this.DV){this.data[w2]-=this.DV;if(++w2>=this.t)this.data[this.t++]=0;++this.data[w2]}}function NullExp(){}function nNop(x){return x}function nMulTo(x,y,r){x.multiplyTo(y,r)}function nSqrTo(x,r){x.squareTo(r)}NullExp.prototype.convert=nNop;NullExp.prototype.revert=nNop;NullExp.prototype.mulTo=nMulTo;NullExp.prototype.sqrTo=nSqrTo;function bnPow(e){return this.exp(e,new NullExp)}function bnpMultiplyLowerTo(a,n,r){var i=Math.min(this.t+a.t,n);r.s=0;r.t=i;while(i>0)r.data[--i]=0;var j2;for(j2=r.t-this.t;i<j2;++i)r.data[i+this.t]=this.am(0,a.data[i],r,i,0,this.t);for(j2=Math.min(a.t,n);i<j2;++i)this.am(0,a.data[i],r,i,0,n-i);r.clamp()}function bnpMultiplyUpperTo(a,n,r){--n;var i=r.t=this.t+a.t-n;r.s=0;while(--i>=0)r.data[i]=0;for(i=Math.max(n-this.t,0);i<a.t;++i)r.data[this.t+i-n]=this.am(n-i,a.data[i],r,0,0,this.t+i-n);r.clamp();r.drShiftTo(1,r)}function Barrett(m2){this.r2=nbi();this.q3=nbi();BigInteger.ONE.dlShiftTo(2*m2.t,this.r2);this.mu=this.r2.divide(m2);this.m=m2}function barrettConvert(x){if(x.s<0||x.t>2*this.m.t)return x.mod(this.m);else if(x.compareTo(this.m)<0)return x;else{var r=nbi();x.copyTo(r);this.reduce(r);return r}}function barrettRevert(x){return x}function barrettReduce(x){x.drShiftTo(this.m.t-1,this.r2);if(x.t>this.m.t+1){x.t=this.m.t+1;x.clamp()}this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);while(x.compareTo(this.r2)<0)x.dAddOffset(1,this.m.t+1);x.subTo(this.r2,x);while(x.compareTo(this.m)>=0)x.subTo(this.m,x)}function barrettSqrTo(x,r){x.squareTo(r);this.reduce(r)}function barrettMulTo(x,y,r){x.multiplyTo(y,r);this.reduce(r)}Barrett.prototype.convert=barrettConvert;Barrett.prototype.revert=barrettRevert;Barrett.prototype.reduce=barrettReduce;Barrett.prototype.mulTo=barrettMulTo;Barrett.prototype.sqrTo=barrettSqrTo;function bnModPow(e,m2){var i=e.bitLength(),k2,r=nbv(1),z2;if(i<=0)return r;else if(i<18)k2=1;else if(i<48)k2=3;else if(i<144)k2=4;else if(i<768)k2=5;else k2=6;if(i<8)z2=new Classic(m2);else if(m2.isEven())z2=new Barrett(m2);else z2=new Montgomery(m2);var g2=new Array,n=3,k1=k2-1,km=(1<<k2)-1;g2[1]=z2.convert(this);if(k2>1){var g22=nbi();z2.sqrTo(g2[1],g22);while(n<=km){g2[n]=nbi();z2.mulTo(g22,g2[n-2],g2[n]);n+=2}}var j2=e.t-1,w2,is1=true,r2=nbi(),t;i=nbits(e.data[j2])-1;while(j2>=0){if(i>=k1)w2=e.data[j2]>>i-k1&km;else{w2=(e.data[j2]&(1<<i+1)-1)<<k1-i;if(j2>0)w2|=e.data[j2-1]>>this.DB+i-k1}n=k2;while((w2&1)==0){w2>>=1;--n}if((i-=n)<0){i+=this.DB;--j2}if(is1){g2[w2].copyTo(r);is1=false}else{while(n>1){z2.sqrTo(r,r2);z2.sqrTo(r2,r);n-=2}if(n>0)z2.sqrTo(r,r2);else{t=r;r=r2;r2=t}z2.mulTo(r2,g2[w2],r)}while(j2>=0&&(e.data[j2]&1<<i)==0){z2.sqrTo(r,r2);t=r;r=r2;r2=t;if(--i<0){i=this.DB-1;--j2}}}return z2.revert(r)}function bnGCD(a){var x=this.s<0?this.negate():this.clone();var y=a.s<0?a.negate():a.clone();if(x.compareTo(y)<0){var t=x;x=y;y=t}var i=x.getLowestSetBit(),g2=y.getLowestSetBit();if(g2<0)return x;if(i<g2)g2=i;if(g2>0){x.rShiftTo(g2,x);y.rShiftTo(g2,y)}while(x.signum()>0){if((i=x.getLowestSetBit())>0)x.rShiftTo(i,x);if((i=y.getLowestSetBit())>0)y.rShiftTo(i,y);if(x.compareTo(y)>=0){x.subTo(y,x);x.rShiftTo(1,x)}else{y.subTo(x,y);y.rShiftTo(1,y)}}if(g2>0)y.lShiftTo(g2,y);return y}function bnpModInt(n){if(n<=0)return 0;var d=this.DV%n,r=this.s<0?n-1:0;if(this.t>0)if(d==0)r=this.data[0]%n;else for(var i=this.t-1;i>=0;--i)r=(d*r+this.data[i])%n;return r}function bnModInverse(m2){if(this.signum()==0){return BigInteger.ZERO}var ac=m2.isEven();if(this.isEven()&&ac||m2.signum()==0)return BigInteger.ZERO;var u2=m2.clone(),v2=this.clone();var a=nbv(1),b2=nbv(0),c=nbv(0),d=nbv(1);while(u2.signum()!=0){while(u2.isEven()){u2.rShiftTo(1,u2);if(ac){if(!a.isEven()||!b2.isEven()){a.addTo(this,a);b2.subTo(m2,b2)}a.rShiftTo(1,a)}else if(!b2.isEven())b2.subTo(m2,b2);b2.rShiftTo(1,b2)}while(v2.isEven()){v2.rShiftTo(1,v2);if(ac){if(!c.isEven()||!d.isEven()){c.addTo(this,c);d.subTo(m2,d)}c.rShiftTo(1,c)}else if(!d.isEven())d.subTo(m2,d);d.rShiftTo(1,d)}if(u2.compareTo(v2)>=0){u2.subTo(v2,u2);if(ac)a.subTo(c,a);b2.subTo(d,b2)}else{v2.subTo(u2,v2);if(ac)c.subTo(a,c);d.subTo(b2,d)}}if(v2.compareTo(BigInteger.ONE)!=0)return BigInteger.ZERO;if(d.compareTo(m2)>=0)return d.subtract(m2);if(d.signum()<0)d.addTo(m2,d);else return d;if(d.signum()<0)return d.add(m2);else return d}var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];var lplim=(1<<26)/lowprimes[lowprimes.length-1];function bnIsProbablePrime(t){var i,x=this.abs();if(x.t==1&&x.data[0]<=lowprimes[lowprimes.length-1]){for(i=0;i<lowprimes.length;++i)if(x.data[0]==lowprimes[i])return true;return false}if(x.isEven())return false;i=1;while(i<lowprimes.length){var m2=lowprimes[i],j2=i+1;while(j2<lowprimes.length&&m2<lplim)m2*=lowprimes[j2++];m2=x.modInt(m2);while(i<j2)if(m2%lowprimes[i++]==0)return false}return x.millerRabin(t)}function bnpMillerRabin(t){var n1=this.subtract(BigInteger.ONE);var k2=n1.getLowestSetBit();if(k2<=0)return false;var r=n1.shiftRight(k2);var prng=bnGetPrng();var a;for(var i=0;i<t;++i){do{a=new BigInteger(this.bitLength(),prng)}while(a.compareTo(BigInteger.ONE)<=0||a.compareTo(n1)>=0);var y=a.modPow(r,this);if(y.compareTo(BigInteger.ONE)!=0&&y.compareTo(n1)!=0){var j2=1;while(j2++<k2&&y.compareTo(n1)!=0){y=y.modPowInt(2,this);if(y.compareTo(BigInteger.ONE)==0)return false}if(y.compareTo(n1)!=0)return false}}return true}function bnGetPrng(){return{nextBytes:function(x){for(var i=0;i<x.length;++i){x[i]=Math.floor(Math.random()*256)}}}}BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.fromRadix=bnpFromRadix;BigInteger.prototype.fromNumber=bnpFromNumber;BigInteger.prototype.bitwiseTo=bnpBitwiseTo;BigInteger.prototype.changeBit=bnpChangeBit;BigInteger.prototype.addTo=bnpAddTo;BigInteger.prototype.dMultiply=bnpDMultiply;BigInteger.prototype.dAddOffset=bnpDAddOffset;BigInteger.prototype.multiplyLowerTo=bnpMultiplyLowerTo;BigInteger.prototype.multiplyUpperTo=bnpMultiplyUpperTo;BigInteger.prototype.modInt=bnpModInt;BigInteger.prototype.millerRabin=bnpMillerRabin;BigInteger.prototype.clone=bnClone;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.byteValue=bnByteValue;BigInteger.prototype.shortValue=bnShortValue;BigInteger.prototype.signum=bnSigNum;BigInteger.prototype.toByteArray=bnToByteArray;BigInteger.prototype.equals=bnEquals;BigInteger.prototype.min=bnMin;BigInteger.prototype.max=bnMax;BigInteger.prototype.and=bnAnd;BigInteger.prototype.or=bnOr;BigInteger.prototype.xor=bnXor;BigInteger.prototype.andNot=bnAndNot;BigInteger.prototype.not=bnNot;BigInteger.prototype.shiftLeft=bnShiftLeft;BigInteger.prototype.shiftRight=bnShiftRight;BigInteger.prototype.getLowestSetBit=bnGetLowestSetBit;BigInteger.prototype.bitCount=bnBitCount;BigInteger.prototype.testBit=bnTestBit;BigInteger.prototype.setBit=bnSetBit;BigInteger.prototype.clearBit=bnClearBit;BigInteger.prototype.flipBit=bnFlipBit;BigInteger.prototype.add=bnAdd;BigInteger.prototype.subtract=bnSubtract;BigInteger.prototype.multiply=bnMultiply;BigInteger.prototype.divide=bnDivide;BigInteger.prototype.remainder=bnRemainder;BigInteger.prototype.divideAndRemainder=bnDivideAndRemainder;BigInteger.prototype.modPow=bnModPow;BigInteger.prototype.modInverse=bnModInverse;BigInteger.prototype.pow=bnPow;BigInteger.prototype.gcd=bnGCD;BigInteger.prototype.isProbablePrime=bnIsProbablePrime;BigInteger.prototype.square=bnSquare}});var require_sha1=__commonJS({"node_modules/node-forge/lib/sha1.js"(exports,module){"use strict";var forge2=require_forge();require_md();require_util7();var sha1=module.exports=forge2.sha1=forge2.sha1||{};forge2.md.sha1=forge2.md.algorithms.sha1=sha1;sha1.create=function(){if(!_initialized){_init()}var _state=null;var _input=forge2.util.createBuffer();var _w=new Array(80);var md={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,fullMessageLength:null,messageLengthSize:8};md.start=function(){md.messageLength=0;md.fullMessageLength=md.messageLength64=[];var int32s=md.messageLengthSize/4;for(var i=0;i<int32s;++i){md.fullMessageLength.push(0)}_input=forge2.util.createBuffer();_state={h0:1732584193,h1:4023233417,h2:2562383102,h3:271733878,h4:3285377520};return md};md.start();md.update=function(msg,encoding){if(encoding==="utf8"){msg=forge2.util.encodeUtf8(msg)}var len=msg.length;md.messageLength+=len;len=[len/4294967296>>>0,len>>>0];for(var i=md.fullMessageLength.length-1;i>=0;--i){md.fullMessageLength[i]+=len[1];len[1]=len[0]+(md.fullMessageLength[i]/4294967296>>>0);md.fullMessageLength[i]=md.fullMessageLength[i]>>>0;len[0]=len[1]/4294967296>>>0}_input.putBytes(msg);_update(_state,_w,_input);if(_input.read>2048||_input.length()===0){_input.compact()}return md};md.digest=function(){var finalBlock=forge2.util.createBuffer();finalBlock.putBytes(_input.bytes());var remaining=md.fullMessageLength[md.fullMessageLength.length-1]+md.messageLengthSize;var overflow=remaining&md.blockLength-1;finalBlock.putBytes(_padding.substr(0,md.blockLength-overflow));var next,carry;var bits=md.fullMessageLength[0]*8;for(var i=0;i<md.fullMessageLength.length-1;++i){next=md.fullMessageLength[i+1]*8;carry=next/4294967296>>>0;bits+=carry;finalBlock.putInt32(bits>>>0);bits=next>>>0}finalBlock.putInt32(bits);var s22={h0:_state.h0,h1:_state.h1,h2:_state.h2,h3:_state.h3,h4:_state.h4};_update(s22,_w,finalBlock);var rval=forge2.util.createBuffer();rval.putInt32(s22.h0);rval.putInt32(s22.h1);rval.putInt32(s22.h2);rval.putInt32(s22.h3);rval.putInt32(s22.h4);return rval};return md};var _padding=null;var _initialized=false;function _init(){_padding=String.fromCharCode(128);_padding+=forge2.util.fillString(String.fromCharCode(0),64);_initialized=true}function _update(s3,w2,bytes){var t,a,b2,c,d,e,f2,i;var len=bytes.length();while(len>=64){a=s3.h0;b2=s3.h1;c=s3.h2;d=s3.h3;e=s3.h4;for(i=0;i<16;++i){t=bytes.getInt32();w2[i]=t;f2=d^b2&(c^d);t=(a<<5|a>>>27)+f2+e+1518500249+t;e=d;d=c;c=(b2<<30|b2>>>2)>>>0;b2=a;a=t}for(;i<20;++i){t=w2[i-3]^w2[i-8]^w2[i-14]^w2[i-16];t=t<<1|t>>>31;w2[i]=t;f2=d^b2&(c^d);t=(a<<5|a>>>27)+f2+e+1518500249+t;e=d;d=c;c=(b2<<30|b2>>>2)>>>0;b2=a;a=t}for(;i<32;++i){t=w2[i-3]^w2[i-8]^w2[i-14]^w2[i-16];t=t<<1|t>>>31;w2[i]=t;f2=b2^c^d;t=(a<<5|a>>>27)+f2+e+1859775393+t;e=d;d=c;c=(b2<<30|b2>>>2)>>>0;b2=a;a=t}for(;i<40;++i){t=w2[i-6]^w2[i-16]^w2[i-28]^w2[i-32];t=t<<2|t>>>30;w2[i]=t;f2=b2^c^d;t=(a<<5|a>>>27)+f2+e+1859775393+t;e=d;d=c;c=(b2<<30|b2>>>2)>>>0;b2=a;a=t}for(;i<60;++i){t=w2[i-6]^w2[i-16]^w2[i-28]^w2[i-32];t=t<<2|t>>>30;w2[i]=t;f2=b2&c|d&(b2^c);t=(a<<5|a>>>27)+f2+e+2400959708+t;e=d;d=c;c=(b2<<30|b2>>>2)>>>0;b2=a;a=t}for(;i<80;++i){t=w2[i-6]^w2[i-16]^w2[i-28]^w2[i-32];t=t<<2|t>>>30;w2[i]=t;f2=b2^c^d;t=(a<<5|a>>>27)+f2+e+3395469782+t;e=d;d=c;c=(b2<<30|b2>>>2)>>>0;b2=a;a=t}s3.h0=s3.h0+a|0;s3.h1=s3.h1+b2|0;s3.h2=s3.h2+c|0;s3.h3=s3.h3+d|0;s3.h4=s3.h4+e|0;len-=64}}}});var require_pkcs1=__commonJS({"node_modules/node-forge/lib/pkcs1.js"(exports,module){"use strict";var forge2=require_forge();require_util7();require_random();require_sha1();var pkcs1=module.exports=forge2.pkcs1=forge2.pkcs1||{};pkcs1.encode_rsa_oaep=function(key,message,options){var label;var seed;var md;var mgf1Md;if(typeof options==="string"){label=options;seed=arguments[3]||void 0;md=arguments[4]||void 0}else if(options){label=options.label||void 0;seed=options.seed||void 0;md=options.md||void 0;if(options.mgf1&&options.mgf1.md){mgf1Md=options.mgf1.md}}if(!md){md=forge2.md.sha1.create()}else{md.start()}if(!mgf1Md){mgf1Md=md}var keyLength=Math.ceil(key.n.bitLength()/8);var maxLength=keyLength-2*md.digestLength-2;if(message.length>maxLength){var error=new Error("RSAES-OAEP input message length is too long.");error.length=message.length;error.maxLength=maxLength;throw error}if(!label){label=""}md.update(label,"raw");var lHash=md.digest();var PS="";var PS_length=maxLength-message.length;for(var i=0;i<PS_length;i++){PS+="\0"}var DB=lHash.getBytes()+PS+""+message;if(!seed){seed=forge2.random.getBytes(md.digestLength)}else if(seed.length!==md.digestLength){var error=new Error("Invalid RSAES-OAEP seed. The seed length must match the digest length.");error.seedLength=seed.length;error.digestLength=md.digestLength;throw error}var dbMask=rsa_mgf1(seed,keyLength-md.digestLength-1,mgf1Md);var maskedDB=forge2.util.xorBytes(DB,dbMask,DB.length);var seedMask=rsa_mgf1(maskedDB,md.digestLength,mgf1Md);var maskedSeed=forge2.util.xorBytes(seed,seedMask,seed.length);return"\0"+maskedSeed+maskedDB};pkcs1.decode_rsa_oaep=function(key,em,options){var label;var md;var mgf1Md;if(typeof options==="string"){label=options;md=arguments[3]||void 0}else if(options){label=options.label||void 0;md=options.md||void 0;if(options.mgf1&&options.mgf1.md){mgf1Md=options.mgf1.md}}var keyLength=Math.ceil(key.n.bitLength()/8);if(em.length!==keyLength){var error=new Error("RSAES-OAEP encoded message length is invalid.");error.length=em.length;error.expectedLength=keyLength;throw error}if(md===void 0){md=forge2.md.sha1.create()}else{md.start()}if(!mgf1Md){mgf1Md=md}if(keyLength<2*md.digestLength+2){throw new Error("RSAES-OAEP key is too short for the hash function.")}if(!label){label=""}md.update(label,"raw");var lHash=md.digest().getBytes();var y=em.charAt(0);var maskedSeed=em.substring(1,md.digestLength+1);var maskedDB=em.substring(1+md.digestLength);var seedMask=rsa_mgf1(maskedDB,md.digestLength,mgf1Md);var seed=forge2.util.xorBytes(maskedSeed,seedMask,maskedSeed.length);var dbMask=rsa_mgf1(seed,keyLength-md.digestLength-1,mgf1Md);var db=forge2.util.xorBytes(maskedDB,dbMask,maskedDB.length);var lHashPrime=db.substring(0,md.digestLength);var error=y!=="\0";for(var i=0;i<md.digestLength;++i){error|=lHash.charAt(i)!==lHashPrime.charAt(i)}var in_ps=1;var index=md.digestLength;for(var j2=md.digestLength;j2<db.length;j2++){var code=db.charCodeAt(j2);var is_0=code&1^1;var error_mask=in_ps?65534:0;error|=code&error_mask;in_ps=in_ps&is_0;index+=in_ps}if(error||db.charCodeAt(index)!==1){throw new Error("Invalid RSAES-OAEP padding.")}return db.substring(index+1)};function rsa_mgf1(seed,maskLength,hash){if(!hash){hash=forge2.md.sha1.create()}var t="";var count=Math.ceil(maskLength/hash.digestLength);for(var i=0;i<count;++i){var c=String.fromCharCode(i>>24&255,i>>16&255,i>>8&255,i&255);hash.start();hash.update(seed+c);t+=hash.digest().getBytes()}return t.substring(0,maskLength)}}});var require_prime=__commonJS({"node_modules/node-forge/lib/prime.js"(exports,module){"use strict";var forge2=require_forge();require_util7();require_jsbn();require_random();(function(){if(forge2.prime){module.exports=forge2.prime;return}var prime=module.exports=forge2.prime=forge2.prime||{};var BigInteger=forge2.jsbn.BigInteger;var GCD_30_DELTA=[6,4,2,4,2,4,6,2];var THIRTY=new BigInteger(null);THIRTY.fromInt(30);var op_or=function(x,y){return x|y};prime.generateProbablePrime=function(bits,options,callback){if(typeof options==="function"){callback=options;options={}}options=options||{};var algorithm=options.algorithm||"PRIMEINC";if(typeof algorithm==="string"){algorithm={name:algorithm}}algorithm.options=algorithm.options||{};var prng=options.prng||forge2.random;var rng={nextBytes:function(x){var b2=prng.getBytesSync(x.length);for(var i=0;i<x.length;++i){x[i]=b2.charCodeAt(i)}}};if(algorithm.name==="PRIMEINC"){return primeincFindPrime(bits,rng,algorithm.options,callback)}throw new Error("Invalid prime generation algorithm: "+algorithm.name)};function primeincFindPrime(bits,rng,options,callback){if("workers"in options){return primeincFindPrimeWithWorkers(bits,rng,options,callback)}return primeincFindPrimeWithoutWorkers(bits,rng,options,callback)}function primeincFindPrimeWithoutWorkers(bits,rng,options,callback){var num=generateRandom(bits,rng);var deltaIdx=0;var mrTests=getMillerRabinTests(num.bitLength());if("millerRabinTests"in options){mrTests=options.millerRabinTests}var maxBlockTime=10;if("maxBlockTime"in options){maxBlockTime=options.maxBlockTime}_primeinc(num,bits,rng,deltaIdx,mrTests,maxBlockTime,callback)}function _primeinc(num,bits,rng,deltaIdx,mrTests,maxBlockTime,callback){var start=+new Date;do{if(num.bitLength()>bits){num=generateRandom(bits,rng)}if(num.isProbablePrime(mrTests)){return callback(null,num)}num.dAddOffset(GCD_30_DELTA[deltaIdx++%8],0)}while(maxBlockTime<0||+new Date-start<maxBlockTime);forge2.util.setImmediate(function(){_primeinc(num,bits,rng,deltaIdx,mrTests,maxBlockTime,callback)})}function primeincFindPrimeWithWorkers(bits,rng,options,callback){if(typeof Worker==="undefined"){return primeincFindPrimeWithoutWorkers(bits,rng,options,callback)}var num=generateRandom(bits,rng);var numWorkers=options.workers;var workLoad=options.workLoad||100;var range=workLoad*30/8;var workerScript=options.workerScript||"forge/prime.worker.js";if(numWorkers===-1){return forge2.util.estimateCores(function(err2,cores){if(err2){cores=2}numWorkers=cores-1;generate()})}generate();function generate(){numWorkers=Math.max(1,numWorkers);var workers=[];for(var i=0;i<numWorkers;++i){workers[i]=new Worker(workerScript)}var running=numWorkers;for(var i=0;i<numWorkers;++i){workers[i].addEventListener("message",workerMessage)}var found=false;function workerMessage(e){if(found){return}--running;var data=e.data;if(data.found){for(var i2=0;i2<workers.length;++i2){workers[i2].terminate()}found=true;return callback(null,new BigInteger(data.prime,16))}if(num.bitLength()>bits){num=generateRandom(bits,rng)}var hex=num.toString(16);e.target.postMessage({hex,workLoad});num.dAddOffset(range,0)}}}function generateRandom(bits,rng){var num=new BigInteger(bits,rng);var bits1=bits-1;if(!num.testBit(bits1)){num.bitwiseTo(BigInteger.ONE.shiftLeft(bits1),op_or,num)}num.dAddOffset(31-num.mod(THIRTY).byteValue(),0);return num}function getMillerRabinTests(bits){if(bits<=100)return 27;if(bits<=150)return 18;if(bits<=200)return 15;if(bits<=250)return 12;if(bits<=300)return 9;if(bits<=350)return 8;if(bits<=400)return 7;if(bits<=500)return 6;if(bits<=600)return 5;if(bits<=800)return 4;if(bits<=1250)return 3;return 2}})()}});var require_rsa=__commonJS({"node_modules/node-forge/lib/rsa.js"(exports,module){"use strict";var forge2=require_forge();require_asn1();require_jsbn();require_oids();require_pkcs1();require_prime();require_random();require_util7();if(typeof BigInteger==="undefined"){BigInteger=forge2.jsbn.BigInteger}var BigInteger;var _crypto=forge2.util.isNodejs?__require("crypto"):null;var asn1=forge2.asn1;var util=forge2.util;forge2.pki=forge2.pki||{};module.exports=forge2.pki.rsa=forge2.rsa=forge2.rsa||{};var pki=forge2.pki;var GCD_30_DELTA=[6,4,2,4,2,4,6,2];var privateKeyValidator={name:"PrivateKeyInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"PrivateKeyInfo.version",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"privateKeyVersion"},{name:"PrivateKeyInfo.privateKeyAlgorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"AlgorithmIdentifier.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"privateKeyOid"}]},{name:"PrivateKeyInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OCTETSTRING,constructed:false,capture:"privateKey"}]};var rsaPrivateKeyValidator={name:"RSAPrivateKey",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"RSAPrivateKey.version",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"privateKeyVersion"},{name:"RSAPrivateKey.modulus",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"privateKeyModulus"},{name:"RSAPrivateKey.publicExponent",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"privateKeyPublicExponent"},{name:"RSAPrivateKey.privateExponent",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"privateKeyPrivateExponent"},{name:"RSAPrivateKey.prime1",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"privateKeyPrime1"},{name:"RSAPrivateKey.prime2",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"privateKeyPrime2"},{name:"RSAPrivateKey.exponent1",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"privateKeyExponent1"},{name:"RSAPrivateKey.exponent2",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"privateKeyExponent2"},{name:"RSAPrivateKey.coefficient",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"privateKeyCoefficient"}]};var rsaPublicKeyValidator={name:"RSAPublicKey",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"RSAPublicKey.modulus",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"publicKeyModulus"},{name:"RSAPublicKey.exponent",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"publicKeyExponent"}]};var publicKeyValidator=forge2.pki.rsa.publicKeyValidator={name:"SubjectPublicKeyInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,captureAsn1:"subjectPublicKeyInfo",value:[{name:"SubjectPublicKeyInfo.AlgorithmIdentifier",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"AlgorithmIdentifier.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"publicKeyOid"}]},{name:"SubjectPublicKeyInfo.subjectPublicKey",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.BITSTRING,constructed:false,value:[{name:"SubjectPublicKeyInfo.subjectPublicKey.RSAPublicKey",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,optional:true,captureAsn1:"rsaPublicKey"}]}]};var digestInfoValidator={name:"DigestInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"DigestInfo.DigestAlgorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"DigestInfo.DigestAlgorithm.algorithmIdentifier",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"algorithmIdentifier"},{name:"DigestInfo.DigestAlgorithm.parameters",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.NULL,capture:"parameters",optional:true,constructed:false}]},{name:"DigestInfo.digest",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OCTETSTRING,constructed:false,capture:"digest"}]};var emsaPkcs1v15encode=function(md){var oid;if(md.algorithm in pki.oids){oid=pki.oids[md.algorithm]}else{var error=new Error("Unknown message digest algorithm.");error.algorithm=md.algorithm;throw error}var oidBytes=asn1.oidToDer(oid).getBytes();var digestInfo=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[]);var digestAlgorithm=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[]);digestAlgorithm.value.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,oidBytes));digestAlgorithm.value.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.NULL,false,""));var digest=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,md.digest().getBytes());digestInfo.value.push(digestAlgorithm);digestInfo.value.push(digest);return asn1.toDer(digestInfo).getBytes()};var _modPow=function(x,key,pub){if(pub){return x.modPow(key.e,key.n)}if(!key.p||!key.q){return x.modPow(key.d,key.n)}if(!key.dP){key.dP=key.d.mod(key.p.subtract(BigInteger.ONE))}if(!key.dQ){key.dQ=key.d.mod(key.q.subtract(BigInteger.ONE))}if(!key.qInv){key.qInv=key.q.modInverse(key.p)}var r;do{r=new BigInteger(forge2.util.bytesToHex(forge2.random.getBytes(key.n.bitLength()/8)),16)}while(r.compareTo(key.n)>=0||!r.gcd(key.n).equals(BigInteger.ONE));x=x.multiply(r.modPow(key.e,key.n)).mod(key.n);var xp=x.mod(key.p).modPow(key.dP,key.p);var xq=x.mod(key.q).modPow(key.dQ,key.q);while(xp.compareTo(xq)<0){xp=xp.add(key.p)}var y=xp.subtract(xq).multiply(key.qInv).mod(key.p).multiply(key.q).add(xq);y=y.multiply(r.modInverse(key.n)).mod(key.n);return y};pki.rsa.encrypt=function(m2,key,bt2){var pub=bt2;var eb;var k2=Math.ceil(key.n.bitLength()/8);if(bt2!==false&&bt2!==true){pub=bt2===2;eb=_encodePkcs1_v1_5(m2,key,bt2)}else{eb=forge2.util.createBuffer();eb.putBytes(m2)}var x=new BigInteger(eb.toHex(),16);var y=_modPow(x,key,pub);var yhex=y.toString(16);var ed=forge2.util.createBuffer();var zeros=k2-Math.ceil(yhex.length/2);while(zeros>0){ed.putByte(0);--zeros}ed.putBytes(forge2.util.hexToBytes(yhex));return ed.getBytes()};pki.rsa.decrypt=function(ed,key,pub,ml){var k2=Math.ceil(key.n.bitLength()/8);if(ed.length!==k2){var error=new Error("Encrypted message length is invalid.");error.length=ed.length;error.expected=k2;throw error}var y=new BigInteger(forge2.util.createBuffer(ed).toHex(),16);if(y.compareTo(key.n)>=0){throw new Error("Encrypted message is invalid.")}var x=_modPow(y,key,pub);var xhex=x.toString(16);var eb=forge2.util.createBuffer();var zeros=k2-Math.ceil(xhex.length/2);while(zeros>0){eb.putByte(0);--zeros}eb.putBytes(forge2.util.hexToBytes(xhex));if(ml!==false){return _decodePkcs1_v1_5(eb.getBytes(),key,pub)}return eb.getBytes()};pki.rsa.createKeyPairGenerationState=function(bits,e,options){if(typeof bits==="string"){bits=parseInt(bits,10)}bits=bits||2048;options=options||{};var prng=options.prng||forge2.random;var rng={nextBytes:function(x){var b2=prng.getBytesSync(x.length);for(var i=0;i<x.length;++i){x[i]=b2.charCodeAt(i)}}};var algorithm=options.algorithm||"PRIMEINC";var rval;if(algorithm==="PRIMEINC"){rval={algorithm,state:0,bits,rng,eInt:e||65537,e:new BigInteger(null),p:null,q:null,qBits:bits>>1,pBits:bits-(bits>>1),pqState:0,num:null,keys:null};rval.e.fromInt(rval.eInt)}else{throw new Error("Invalid key generation algorithm: "+algorithm)}return rval};pki.rsa.stepKeyPairGenerationState=function(state3,n){if(!("algorithm"in state3)){state3.algorithm="PRIMEINC"}var THIRTY=new BigInteger(null);THIRTY.fromInt(30);var deltaIdx=0;var op_or=function(x,y){return x|y};var t1=+new Date;var t2;var total=0;while(state3.keys===null&&(n<=0||total<n)){if(state3.state===0){var bits=state3.p===null?state3.pBits:state3.qBits;var bits1=bits-1;if(state3.pqState===0){state3.num=new BigInteger(bits,state3.rng);if(!state3.num.testBit(bits1)){state3.num.bitwiseTo(BigInteger.ONE.shiftLeft(bits1),op_or,state3.num)}state3.num.dAddOffset(31-state3.num.mod(THIRTY).byteValue(),0);deltaIdx=0;++state3.pqState}else if(state3.pqState===1){if(state3.num.bitLength()>bits){state3.pqState=0}else if(state3.num.isProbablePrime(_getMillerRabinTests(state3.num.bitLength()))){++state3.pqState}else{state3.num.dAddOffset(GCD_30_DELTA[deltaIdx++%8],0)}}else if(state3.pqState===2){state3.pqState=state3.num.subtract(BigInteger.ONE).gcd(state3.e).compareTo(BigInteger.ONE)===0?3:0}else if(state3.pqState===3){state3.pqState=0;if(state3.p===null){state3.p=state3.num}else{state3.q=state3.num}if(state3.p!==null&&state3.q!==null){++state3.state}state3.num=null}}else if(state3.state===1){if(state3.p.compareTo(state3.q)<0){state3.num=state3.p;state3.p=state3.q;state3.q=state3.num}++state3.state}else if(state3.state===2){state3.p1=state3.p.subtract(BigInteger.ONE);state3.q1=state3.q.subtract(BigInteger.ONE);state3.phi=state3.p1.multiply(state3.q1);++state3.state}else if(state3.state===3){if(state3.phi.gcd(state3.e).compareTo(BigInteger.ONE)===0){++state3.state}else{state3.p=null;state3.q=null;state3.state=0}}else if(state3.state===4){state3.n=state3.p.multiply(state3.q);if(state3.n.bitLength()===state3.bits){++state3.state}else{state3.q=null;state3.state=0}}else if(state3.state===5){var d=state3.e.modInverse(state3.phi);state3.keys={privateKey:pki.rsa.setPrivateKey(state3.n,state3.e,d,state3.p,state3.q,d.mod(state3.p1),d.mod(state3.q1),state3.q.modInverse(state3.p)),publicKey:pki.rsa.setPublicKey(state3.n,state3.e)}}t2=+new Date;total+=t2-t1;t1=t2}return state3.keys!==null};pki.rsa.generateKeyPair=function(bits,e,options,callback){if(arguments.length===1){if(typeof bits==="object"){options=bits;bits=void 0}else if(typeof bits==="function"){callback=bits;bits=void 0}}else if(arguments.length===2){if(typeof bits==="number"){if(typeof e==="function"){callback=e;e=void 0}else if(typeof e!=="number"){options=e;e=void 0}}else{options=bits;callback=e;bits=void 0;e=void 0}}else if(arguments.length===3){if(typeof e==="number"){if(typeof options==="function"){callback=options;options=void 0}}else{callback=options;options=e;e=void 0}}options=options||{};if(bits===void 0){bits=options.bits||2048}if(e===void 0){e=options.e||65537}if(!forge2.options.usePureJavaScript&&!options.prng&&bits>=256&&bits<=16384&&(e===65537||e===3)){if(callback){if(_detectNodeCrypto("generateKeyPair")){return _crypto.generateKeyPair("rsa",{modulusLength:bits,publicExponent:e,publicKeyEncoding:{type:"spki",format:"pem"},privateKeyEncoding:{type:"pkcs8",format:"pem"}},function(err2,pub,priv){if(err2){return callback(err2)}callback(null,{privateKey:pki.privateKeyFromPem(priv),publicKey:pki.publicKeyFromPem(pub)})})}if(_detectSubtleCrypto("generateKey")&&_detectSubtleCrypto("exportKey")){return util.globalScope.crypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:bits,publicExponent:_intToUint8Array(e),hash:{name:"SHA-256"}},true,["sign","verify"]).then(function(pair){return util.globalScope.crypto.subtle.exportKey("pkcs8",pair.privateKey)}).then(void 0,function(err2){callback(err2)}).then(function(pkcs8){if(pkcs8){var privateKey=pki.privateKeyFromAsn1(asn1.fromDer(forge2.util.createBuffer(pkcs8)));callback(null,{privateKey,publicKey:pki.setRsaPublicKey(privateKey.n,privateKey.e)})}})}if(_detectSubtleMsCrypto("generateKey")&&_detectSubtleMsCrypto("exportKey")){var genOp=util.globalScope.msCrypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:bits,publicExponent:_intToUint8Array(e),hash:{name:"SHA-256"}},true,["sign","verify"]);genOp.oncomplete=function(e2){var pair=e2.target.result;var exportOp=util.globalScope.msCrypto.subtle.exportKey("pkcs8",pair.privateKey);exportOp.oncomplete=function(e3){var pkcs8=e3.target.result;var privateKey=pki.privateKeyFromAsn1(asn1.fromDer(forge2.util.createBuffer(pkcs8)));callback(null,{privateKey,publicKey:pki.setRsaPublicKey(privateKey.n,privateKey.e)})};exportOp.onerror=function(err2){callback(err2)}};genOp.onerror=function(err2){callback(err2)};return}}else{if(_detectNodeCrypto("generateKeyPairSync")){var keypair=_crypto.generateKeyPairSync("rsa",{modulusLength:bits,publicExponent:e,publicKeyEncoding:{type:"spki",format:"pem"},privateKeyEncoding:{type:"pkcs8",format:"pem"}});return{privateKey:pki.privateKeyFromPem(keypair.privateKey),publicKey:pki.publicKeyFromPem(keypair.publicKey)}}}}var state3=pki.rsa.createKeyPairGenerationState(bits,e,options);if(!callback){pki.rsa.stepKeyPairGenerationState(state3,0);return state3.keys}_generateKeyPair(state3,options,callback)};pki.setRsaPublicKey=pki.rsa.setPublicKey=function(n,e){var key={n,e};key.encrypt=function(data,scheme,schemeOptions){if(typeof scheme==="string"){scheme=scheme.toUpperCase()}else if(scheme===void 0){scheme="RSAES-PKCS1-V1_5"}if(scheme==="RSAES-PKCS1-V1_5"){scheme={encode:function(m2,key2,pub){return _encodePkcs1_v1_5(m2,key2,2).getBytes()}}}else if(scheme==="RSA-OAEP"||scheme==="RSAES-OAEP"){scheme={encode:function(m2,key2){return forge2.pkcs1.encode_rsa_oaep(key2,m2,schemeOptions)}}}else if(["RAW","NONE","NULL",null].indexOf(scheme)!==-1){scheme={encode:function(e3){return e3}}}else if(typeof scheme==="string"){throw new Error('Unsupported encryption scheme: "'+scheme+'".')}var e2=scheme.encode(data,key,true);return pki.rsa.encrypt(e2,key,true)};key.verify=function(digest,signature,scheme,options){if(typeof scheme==="string"){scheme=scheme.toUpperCase()}else if(scheme===void 0){scheme="RSASSA-PKCS1-V1_5"}if(options===void 0){options={_parseAllDigestBytes:true,_skipPaddingChecks:false}}if(!("_parseAllDigestBytes"in options)){options._parseAllDigestBytes=true}if(!("_skipPaddingChecks"in options)){options._skipPaddingChecks=false}if(scheme==="RSASSA-PKCS1-V1_5"){scheme={verify:function(digest2,d2){d2=_decodePkcs1_v1_5(d2,key,true,void 0,options);var obj=asn1.fromDer(d2,{parseAllBytes:options._parseAllDigestBytes});var capture2={};var errors=[];if(!asn1.validate(obj,digestInfoValidator,capture2,errors)||obj.value.length!==2){var error=new Error("ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 DigestInfo value.");error.errors=errors;throw error}var oid=asn1.derToOid(capture2.algorithmIdentifier);if(!(oid===forge2.oids.md2||oid===forge2.oids.md5||oid===forge2.oids.sha1||oid===forge2.oids.sha224||oid===forge2.oids.sha256||oid===forge2.oids.sha384||oid===forge2.oids.sha512||oid===forge2.oids["sha512-224"]||oid===forge2.oids["sha512-256"])){var error=new Error("Unknown RSASSA-PKCS1-v1_5 DigestAlgorithm identifier.");error.oid=oid;throw error}if(oid===forge2.oids.md2||oid===forge2.oids.md5){if(!("parameters"in capture2)){throw new Error("ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 DigestInfo value. Missing algorithm identifier NULL parameters.")}}return digest2===capture2.digest}}}else if(scheme==="NONE"||scheme==="NULL"||scheme===null){scheme={verify:function(digest2,d2){d2=_decodePkcs1_v1_5(d2,key,true,void 0,options);return digest2===d2}}}var d=pki.rsa.decrypt(signature,key,true,false);return scheme.verify(digest,d,key.n.bitLength())};return key};pki.setRsaPrivateKey=pki.rsa.setPrivateKey=function(n,e,d,p2,q2,dP,dQ,qInv){var key={n,e,d,p:p2,q:q2,dP,dQ,qInv};key.decrypt=function(data,scheme,schemeOptions){if(typeof scheme==="string"){scheme=scheme.toUpperCase()}else if(scheme===void 0){scheme="RSAES-PKCS1-V1_5"}var d2=pki.rsa.decrypt(data,key,false,false);if(scheme==="RSAES-PKCS1-V1_5"){scheme={decode:_decodePkcs1_v1_5}}else if(scheme==="RSA-OAEP"||scheme==="RSAES-OAEP"){scheme={decode:function(d3,key2){return forge2.pkcs1.decode_rsa_oaep(key2,d3,schemeOptions)}}}else if(["RAW","NONE","NULL",null].indexOf(scheme)!==-1){scheme={decode:function(d3){return d3}}}else{throw new Error('Unsupported encryption scheme: "'+scheme+'".')}return scheme.decode(d2,key,false)};key.sign=function(md,scheme){var bt2=false;if(typeof scheme==="string"){scheme=scheme.toUpperCase()}if(scheme===void 0||scheme==="RSASSA-PKCS1-V1_5"){scheme={encode:emsaPkcs1v15encode};bt2=1}else if(scheme==="NONE"||scheme==="NULL"||scheme===null){scheme={encode:function(){return md}};bt2=1}var d2=scheme.encode(md,key.n.bitLength());return pki.rsa.encrypt(d2,key,bt2)};return key};pki.wrapRsaPrivateKey=function(rsaKey){return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,asn1.integerToDer(0).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids.rsaEncryption).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.NULL,false,"")]),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,asn1.toDer(rsaKey).getBytes())])};pki.privateKeyFromAsn1=function(obj){var capture2={};var errors=[];if(asn1.validate(obj,privateKeyValidator,capture2,errors)){obj=asn1.fromDer(forge2.util.createBuffer(capture2.privateKey))}capture2={};errors=[];if(!asn1.validate(obj,rsaPrivateKeyValidator,capture2,errors)){var error=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");error.errors=errors;throw error}var n,e,d,p2,q2,dP,dQ,qInv;n=forge2.util.createBuffer(capture2.privateKeyModulus).toHex();e=forge2.util.createBuffer(capture2.privateKeyPublicExponent).toHex();d=forge2.util.createBuffer(capture2.privateKeyPrivateExponent).toHex();p2=forge2.util.createBuffer(capture2.privateKeyPrime1).toHex();q2=forge2.util.createBuffer(capture2.privateKeyPrime2).toHex();dP=forge2.util.createBuffer(capture2.privateKeyExponent1).toHex();dQ=forge2.util.createBuffer(capture2.privateKeyExponent2).toHex();qInv=forge2.util.createBuffer(capture2.privateKeyCoefficient).toHex();return pki.setRsaPrivateKey(new BigInteger(n,16),new BigInteger(e,16),new BigInteger(d,16),new BigInteger(p2,16),new BigInteger(q2,16),new BigInteger(dP,16),new BigInteger(dQ,16),new BigInteger(qInv,16))};pki.privateKeyToAsn1=pki.privateKeyToRSAPrivateKey=function(key){return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,asn1.integerToDer(0).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,_bnToBytes(key.n)),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,_bnToBytes(key.e)),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,_bnToBytes(key.d)),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,_bnToBytes(key.p)),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,_bnToBytes(key.q)),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,_bnToBytes(key.dP)),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,_bnToBytes(key.dQ)),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,_bnToBytes(key.qInv))])};pki.publicKeyFromAsn1=function(obj){var capture2={};var errors=[];if(asn1.validate(obj,publicKeyValidator,capture2,errors)){var oid=asn1.derToOid(capture2.publicKeyOid);if(oid!==pki.oids.rsaEncryption){var error=new Error("Cannot read public key. Unknown OID.");error.oid=oid;throw error}obj=capture2.rsaPublicKey}errors=[];if(!asn1.validate(obj,rsaPublicKeyValidator,capture2,errors)){var error=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");error.errors=errors;throw error}var n=forge2.util.createBuffer(capture2.publicKeyModulus).toHex();var e=forge2.util.createBuffer(capture2.publicKeyExponent).toHex();return pki.setRsaPublicKey(new BigInteger(n,16),new BigInteger(e,16))};pki.publicKeyToAsn1=pki.publicKeyToSubjectPublicKeyInfo=function(key){return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids.rsaEncryption).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.NULL,false,"")]),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.BITSTRING,false,[pki.publicKeyToRSAPublicKey(key)])])};pki.publicKeyToRSAPublicKey=function(key){return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,_bnToBytes(key.n)),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,_bnToBytes(key.e))])};function _encodePkcs1_v1_5(m2,key,bt2){var eb=forge2.util.createBuffer();var k2=Math.ceil(key.n.bitLength()/8);if(m2.length>k2-11){var error=new Error("Message is too long for PKCS#1 v1.5 padding.");error.length=m2.length;error.max=k2-11;throw error}eb.putByte(0);eb.putByte(bt2);var padNum=k2-3-m2.length;var padByte;if(bt2===0||bt2===1){padByte=bt2===0?0:255;for(var i=0;i<padNum;++i){eb.putByte(padByte)}}else{while(padNum>0){var numZeros=0;var padBytes=forge2.random.getBytes(padNum);for(var i=0;i<padNum;++i){padByte=padBytes.charCodeAt(i);if(padByte===0){++numZeros}else{eb.putByte(padByte)}}padNum=numZeros}}eb.putByte(0);eb.putBytes(m2);return eb}function _decodePkcs1_v1_5(em,key,pub,ml,options){var k2=Math.ceil(key.n.bitLength()/8);var eb=forge2.util.createBuffer(em);var first=eb.getByte();var bt2=eb.getByte();if(first!==0||pub&&bt2!==0&&bt2!==1||!pub&&bt2!==2||pub&&bt2===0&&typeof ml==="undefined"){throw new Error("Encryption block is invalid.")}var padNum=0;if(bt2===0){padNum=k2-3-ml;for(var i=0;i<padNum;++i){if(eb.getByte()!==0){throw new Error("Encryption block is invalid.")}}}else if(bt2===1){padNum=0;while(eb.length()>1){if(eb.getByte()!==255){--eb.read;break}++padNum}if(padNum<8&&!(options?options._skipPaddingChecks:false)){throw new Error("Encryption block is invalid.")}}else if(bt2===2){padNum=0;while(eb.length()>1){if(eb.getByte()===0){--eb.read;break}++padNum}if(padNum<8&&!(options?options._skipPaddingChecks:false)){throw new Error("Encryption block is invalid.")}}var zero=eb.getByte();if(zero!==0||padNum!==k2-3-eb.length()){throw new Error("Encryption block is invalid.")}return eb.getBytes()}function _generateKeyPair(state3,options,callback){if(typeof options==="function"){callback=options;options={}}options=options||{};var opts={algorithm:{name:options.algorithm||"PRIMEINC",options:{workers:options.workers||2,workLoad:options.workLoad||100,workerScript:options.workerScript}}};if("prng"in options){opts.prng=options.prng}generate();function generate(){getPrime(state3.pBits,function(err2,num){if(err2){return callback(err2)}state3.p=num;if(state3.q!==null){return finish(err2,state3.q)}getPrime(state3.qBits,finish)})}function getPrime(bits,callback2){forge2.prime.generateProbablePrime(bits,opts,callback2)}function finish(err2,num){if(err2){return callback(err2)}state3.q=num;if(state3.p.compareTo(state3.q)<0){var tmp=state3.p;state3.p=state3.q;state3.q=tmp}if(state3.p.subtract(BigInteger.ONE).gcd(state3.e).compareTo(BigInteger.ONE)!==0){state3.p=null;generate();return}if(state3.q.subtract(BigInteger.ONE).gcd(state3.e).compareTo(BigInteger.ONE)!==0){state3.q=null;getPrime(state3.qBits,finish);return}state3.p1=state3.p.subtract(BigInteger.ONE);state3.q1=state3.q.subtract(BigInteger.ONE);state3.phi=state3.p1.multiply(state3.q1);if(state3.phi.gcd(state3.e).compareTo(BigInteger.ONE)!==0){state3.p=state3.q=null;generate();return}state3.n=state3.p.multiply(state3.q);if(state3.n.bitLength()!==state3.bits){state3.q=null;getPrime(state3.qBits,finish);return}var d=state3.e.modInverse(state3.phi);state3.keys={privateKey:pki.rsa.setPrivateKey(state3.n,state3.e,d,state3.p,state3.q,d.mod(state3.p1),d.mod(state3.q1),state3.q.modInverse(state3.p)),publicKey:pki.rsa.setPublicKey(state3.n,state3.e)};callback(null,state3.keys)}}function _bnToBytes(b2){var hex=b2.toString(16);if(hex[0]>="8"){hex="00"+hex}var bytes=forge2.util.hexToBytes(hex);if(bytes.length>1&&(bytes.charCodeAt(0)===0&&(bytes.charCodeAt(1)&128)===0||bytes.charCodeAt(0)===255&&(bytes.charCodeAt(1)&128)===128)){return bytes.substr(1)}return bytes}function _getMillerRabinTests(bits){if(bits<=100)return 27;if(bits<=150)return 18;if(bits<=200)return 15;if(bits<=250)return 12;if(bits<=300)return 9;if(bits<=350)return 8;if(bits<=400)return 7;if(bits<=500)return 6;if(bits<=600)return 5;if(bits<=800)return 4;if(bits<=1250)return 3;return 2}function _detectNodeCrypto(fn){return forge2.util.isNodejs&&typeof _crypto[fn]==="function"}function _detectSubtleCrypto(fn){return typeof util.globalScope!=="undefined"&&typeof util.globalScope.crypto==="object"&&typeof util.globalScope.crypto.subtle==="object"&&typeof util.globalScope.crypto.subtle[fn]==="function"}function _detectSubtleMsCrypto(fn){return typeof util.globalScope!=="undefined"&&typeof util.globalScope.msCrypto==="object"&&typeof util.globalScope.msCrypto.subtle==="object"&&typeof util.globalScope.msCrypto.subtle[fn]==="function"}function _intToUint8Array(x){var bytes=forge2.util.hexToBytes(x.toString(16));var buffer=new Uint8Array(bytes.length);for(var i=0;i<bytes.length;++i){buffer[i]=bytes.charCodeAt(i)}return buffer}}});var require_pbe=__commonJS({"node_modules/node-forge/lib/pbe.js"(exports,module){"use strict";var forge2=require_forge();require_aes();require_asn1();require_des();require_md();require_oids();require_pbkdf2();require_pem();require_random();require_rc2();require_rsa();require_util7();if(typeof BigInteger==="undefined"){BigInteger=forge2.jsbn.BigInteger}var BigInteger;var asn1=forge2.asn1;var pki=forge2.pki=forge2.pki||{};module.exports=pki.pbe=forge2.pbe=forge2.pbe||{};var oids=pki.oids;var encryptedPrivateKeyValidator={name:"EncryptedPrivateKeyInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"EncryptedPrivateKeyInfo.encryptionAlgorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"AlgorithmIdentifier.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"encryptionOid"},{name:"AlgorithmIdentifier.parameters",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,captureAsn1:"encryptionParams"}]},{name:"EncryptedPrivateKeyInfo.encryptedData",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OCTETSTRING,constructed:false,capture:"encryptedData"}]};var PBES2AlgorithmsValidator={name:"PBES2Algorithms",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"PBES2Algorithms.keyDerivationFunc",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"PBES2Algorithms.keyDerivationFunc.oid",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"kdfOid"},{name:"PBES2Algorithms.params",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"PBES2Algorithms.params.salt",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OCTETSTRING,constructed:false,capture:"kdfSalt"},{name:"PBES2Algorithms.params.iterationCount",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"kdfIterationCount"},{name:"PBES2Algorithms.params.keyLength",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,optional:true,capture:"keyLength"},{name:"PBES2Algorithms.params.prf",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,optional:true,value:[{name:"PBES2Algorithms.params.prf.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"prfOid"}]}]}]},{name:"PBES2Algorithms.encryptionScheme",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"PBES2Algorithms.encryptionScheme.oid",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"encOid"},{name:"PBES2Algorithms.encryptionScheme.iv",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OCTETSTRING,constructed:false,capture:"encIv"}]}]};var pkcs12PbeParamsValidator={name:"pkcs-12PbeParams",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"pkcs-12PbeParams.salt",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OCTETSTRING,constructed:false,capture:"salt"},{name:"pkcs-12PbeParams.iterations",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"iterations"}]};pki.encryptPrivateKeyInfo=function(obj,password,options){options=options||{};options.saltSize=options.saltSize||8;options.count=options.count||2048;options.algorithm=options.algorithm||"aes128";options.prfAlgorithm=options.prfAlgorithm||"sha1";var salt=forge2.random.getBytesSync(options.saltSize);var count=options.count;var countBytes=asn1.integerToDer(count);var dkLen;var encryptionAlgorithm;var encryptedData;if(options.algorithm.indexOf("aes")===0||options.algorithm==="des"){var ivLen,encOid,cipherFn;switch(options.algorithm){case"aes128":dkLen=16;ivLen=16;encOid=oids["aes128-CBC"];cipherFn=forge2.aes.createEncryptionCipher;break;case"aes192":dkLen=24;ivLen=16;encOid=oids["aes192-CBC"];cipherFn=forge2.aes.createEncryptionCipher;break;case"aes256":dkLen=32;ivLen=16;encOid=oids["aes256-CBC"];cipherFn=forge2.aes.createEncryptionCipher;break;case"des":dkLen=8;ivLen=8;encOid=oids["desCBC"];cipherFn=forge2.des.createEncryptionCipher;break;default:var error=new Error("Cannot encrypt private key. Unknown encryption algorithm.");error.algorithm=options.algorithm;throw error}var prfAlgorithm="hmacWith"+options.prfAlgorithm.toUpperCase();var md=prfAlgorithmToMessageDigest(prfAlgorithm);var dk=forge2.pkcs5.pbkdf2(password,salt,count,dkLen,md);var iv=forge2.random.getBytesSync(ivLen);var cipher=cipherFn(dk);cipher.start(iv);cipher.update(asn1.toDer(obj));cipher.finish();encryptedData=cipher.output.getBytes();var params=createPbkdf2Params(salt,countBytes,dkLen,prfAlgorithm);encryptionAlgorithm=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(oids["pkcs5PBES2"]).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(oids["pkcs5PBKDF2"]).getBytes()),params]),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(encOid).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,iv)])])])}else if(options.algorithm==="3des"){dkLen=24;var saltBytes=new forge2.util.ByteBuffer(salt);var dk=pki.pbe.generatePkcs12Key(password,saltBytes,1,count,dkLen);var iv=pki.pbe.generatePkcs12Key(password,saltBytes,2,count,dkLen);var cipher=forge2.des.createEncryptionCipher(dk);cipher.start(iv);cipher.update(asn1.toDer(obj));cipher.finish();encryptedData=cipher.output.getBytes();encryptionAlgorithm=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,salt),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,countBytes.getBytes())])])}else{var error=new Error("Cannot encrypt private key. Unknown encryption algorithm.");error.algorithm=options.algorithm;throw error}var rval=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[encryptionAlgorithm,asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,encryptedData)]);return rval};pki.decryptPrivateKeyInfo=function(obj,password){var rval=null;var capture2={};var errors=[];if(!asn1.validate(obj,encryptedPrivateKeyValidator,capture2,errors)){var error=new Error("Cannot read encrypted private key. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");error.errors=errors;throw error}var oid=asn1.derToOid(capture2.encryptionOid);var cipher=pki.pbe.getCipher(oid,capture2.encryptionParams,password);var encrypted=forge2.util.createBuffer(capture2.encryptedData);cipher.update(encrypted);if(cipher.finish()){rval=asn1.fromDer(cipher.output)}return rval};pki.encryptedPrivateKeyToPem=function(epki,maxline){var msg={type:"ENCRYPTED PRIVATE KEY",body:asn1.toDer(epki).getBytes()};return forge2.pem.encode(msg,{maxline})};pki.encryptedPrivateKeyFromPem=function(pem){var msg=forge2.pem.decode(pem)[0];if(msg.type!=="ENCRYPTED PRIVATE KEY"){var error=new Error('Could not convert encrypted private key from PEM; PEM header type is "ENCRYPTED PRIVATE KEY".');error.headerType=msg.type;throw error}if(msg.procType&&msg.procType.type==="ENCRYPTED"){throw new Error("Could not convert encrypted private key from PEM; PEM is encrypted.")}return asn1.fromDer(msg.body)};pki.encryptRsaPrivateKey=function(rsaKey,password,options){options=options||{};if(!options.legacy){var rval=pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(rsaKey));rval=pki.encryptPrivateKeyInfo(rval,password,options);return pki.encryptedPrivateKeyToPem(rval)}var algorithm;var iv;var dkLen;var cipherFn;switch(options.algorithm){case"aes128":algorithm="AES-128-CBC";dkLen=16;iv=forge2.random.getBytesSync(16);cipherFn=forge2.aes.createEncryptionCipher;break;case"aes192":algorithm="AES-192-CBC";dkLen=24;iv=forge2.random.getBytesSync(16);cipherFn=forge2.aes.createEncryptionCipher;break;case"aes256":algorithm="AES-256-CBC";dkLen=32;iv=forge2.random.getBytesSync(16);cipherFn=forge2.aes.createEncryptionCipher;break;case"3des":algorithm="DES-EDE3-CBC";dkLen=24;iv=forge2.random.getBytesSync(8);cipherFn=forge2.des.createEncryptionCipher;break;case"des":algorithm="DES-CBC";dkLen=8;iv=forge2.random.getBytesSync(8);cipherFn=forge2.des.createEncryptionCipher;break;default:var error=new Error('Could not encrypt RSA private key; unsupported encryption algorithm "'+options.algorithm+'".');error.algorithm=options.algorithm;throw error}var dk=forge2.pbe.opensslDeriveBytes(password,iv.substr(0,8),dkLen);var cipher=cipherFn(dk);cipher.start(iv);cipher.update(asn1.toDer(pki.privateKeyToAsn1(rsaKey)));cipher.finish();var msg={type:"RSA PRIVATE KEY",procType:{version:"4",type:"ENCRYPTED"},dekInfo:{algorithm,parameters:forge2.util.bytesToHex(iv).toUpperCase()},body:cipher.output.getBytes()};return forge2.pem.encode(msg)};pki.decryptRsaPrivateKey=function(pem,password){var rval=null;var msg=forge2.pem.decode(pem)[0];if(msg.type!=="ENCRYPTED PRIVATE KEY"&&msg.type!=="PRIVATE KEY"&&msg.type!=="RSA PRIVATE KEY"){var error=new Error('Could not convert private key from PEM; PEM header type is not "ENCRYPTED PRIVATE KEY", "PRIVATE KEY", or "RSA PRIVATE KEY".');error.headerType=error;throw error}if(msg.procType&&msg.procType.type==="ENCRYPTED"){var dkLen;var cipherFn;switch(msg.dekInfo.algorithm){case"DES-CBC":dkLen=8;cipherFn=forge2.des.createDecryptionCipher;break;case"DES-EDE3-CBC":dkLen=24;cipherFn=forge2.des.createDecryptionCipher;break;case"AES-128-CBC":dkLen=16;cipherFn=forge2.aes.createDecryptionCipher;break;case"AES-192-CBC":dkLen=24;cipherFn=forge2.aes.createDecryptionCipher;break;case"AES-256-CBC":dkLen=32;cipherFn=forge2.aes.createDecryptionCipher;break;case"RC2-40-CBC":dkLen=5;cipherFn=function(key){return forge2.rc2.createDecryptionCipher(key,40)};break;case"RC2-64-CBC":dkLen=8;cipherFn=function(key){return forge2.rc2.createDecryptionCipher(key,64)};break;case"RC2-128-CBC":dkLen=16;cipherFn=function(key){return forge2.rc2.createDecryptionCipher(key,128)};break;default:var error=new Error('Could not decrypt private key; unsupported encryption algorithm "'+msg.dekInfo.algorithm+'".');error.algorithm=msg.dekInfo.algorithm;throw error}var iv=forge2.util.hexToBytes(msg.dekInfo.parameters);var dk=forge2.pbe.opensslDeriveBytes(password,iv.substr(0,8),dkLen);var cipher=cipherFn(dk);cipher.start(iv);cipher.update(forge2.util.createBuffer(msg.body));if(cipher.finish()){rval=cipher.output.getBytes()}else{return rval}}else{rval=msg.body}if(msg.type==="ENCRYPTED PRIVATE KEY"){rval=pki.decryptPrivateKeyInfo(asn1.fromDer(rval),password)}else{rval=asn1.fromDer(rval)}if(rval!==null){rval=pki.privateKeyFromAsn1(rval)}return rval};pki.pbe.generatePkcs12Key=function(password,salt,id,iter,n,md){var j2,l;if(typeof md==="undefined"||md===null){if(!("sha1"in forge2.md)){throw new Error('"sha1" hash algorithm unavailable.')}md=forge2.md.sha1.create()}var u2=md.digestLength;var v2=md.blockLength;var result=new forge2.util.ByteBuffer;var passBuf=new forge2.util.ByteBuffer;if(password!==null&&password!==void 0){for(l=0;l<password.length;l++){passBuf.putInt16(password.charCodeAt(l))}passBuf.putInt16(0)}var p2=passBuf.length();var s3=salt.length();var D=new forge2.util.ByteBuffer;D.fillWithByte(id,v2);var Slen=v2*Math.ceil(s3/v2);var S2=new forge2.util.ByteBuffer;for(l=0;l<Slen;l++){S2.putByte(salt.at(l%s3))}var Plen=v2*Math.ceil(p2/v2);var P2=new forge2.util.ByteBuffer;for(l=0;l<Plen;l++){P2.putByte(passBuf.at(l%p2))}var I2=S2;I2.putBuffer(P2);var c=Math.ceil(n/u2);for(var i=1;i<=c;i++){var buf=new forge2.util.ByteBuffer;buf.putBytes(D.bytes());buf.putBytes(I2.bytes());for(var round=0;round<iter;round++){md.start();md.update(buf.getBytes());buf=md.digest()}var B2=new forge2.util.ByteBuffer;for(l=0;l<v2;l++){B2.putByte(buf.at(l%u2))}var k2=Math.ceil(s3/v2)+Math.ceil(p2/v2);var Inew=new forge2.util.ByteBuffer;for(j2=0;j2<k2;j2++){var chunk=new forge2.util.ByteBuffer(I2.getBytes(v2));var x=511;for(l=B2.length()-1;l>=0;l--){x=x>>8;x+=B2.at(l)+chunk.at(l);chunk.setAt(l,x&255)}Inew.putBuffer(chunk)}I2=Inew;result.putBuffer(buf)}result.truncate(result.length()-n);return result};pki.pbe.getCipher=function(oid,params,password){switch(oid){case pki.oids["pkcs5PBES2"]:return pki.pbe.getCipherForPBES2(oid,params,password);case pki.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case pki.oids["pbewithSHAAnd40BitRC2-CBC"]:return pki.pbe.getCipherForPKCS12PBE(oid,params,password);default:var error=new Error("Cannot read encrypted PBE data block. Unsupported OID.");error.oid=oid;error.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","pbewithSHAAnd40BitRC2-CBC"];throw error}};pki.pbe.getCipherForPBES2=function(oid,params,password){var capture2={};var errors=[];if(!asn1.validate(params,PBES2AlgorithmsValidator,capture2,errors)){var error=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");error.errors=errors;throw error}oid=asn1.derToOid(capture2.kdfOid);if(oid!==pki.oids["pkcs5PBKDF2"]){var error=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");error.oid=oid;error.supportedOids=["pkcs5PBKDF2"];throw error}oid=asn1.derToOid(capture2.encOid);if(oid!==pki.oids["aes128-CBC"]&&oid!==pki.oids["aes192-CBC"]&&oid!==pki.oids["aes256-CBC"]&&oid!==pki.oids["des-EDE3-CBC"]&&oid!==pki.oids["desCBC"]){var error=new Error("Cannot read encrypted private key. Unsupported encryption scheme OID.");error.oid=oid;error.supportedOids=["aes128-CBC","aes192-CBC","aes256-CBC","des-EDE3-CBC","desCBC"];throw error}var salt=capture2.kdfSalt;var count=forge2.util.createBuffer(capture2.kdfIterationCount);count=count.getInt(count.length()<<3);var dkLen;var cipherFn;switch(pki.oids[oid]){case"aes128-CBC":dkLen=16;cipherFn=forge2.aes.createDecryptionCipher;break;case"aes192-CBC":dkLen=24;cipherFn=forge2.aes.createDecryptionCipher;break;case"aes256-CBC":dkLen=32;cipherFn=forge2.aes.createDecryptionCipher;break;case"des-EDE3-CBC":dkLen=24;cipherFn=forge2.des.createDecryptionCipher;break;case"desCBC":dkLen=8;cipherFn=forge2.des.createDecryptionCipher;break}var md=prfOidToMessageDigest(capture2.prfOid);var dk=forge2.pkcs5.pbkdf2(password,salt,count,dkLen,md);var iv=capture2.encIv;var cipher=cipherFn(dk);cipher.start(iv);return cipher};pki.pbe.getCipherForPKCS12PBE=function(oid,params,password){var capture2={};var errors=[];if(!asn1.validate(params,pkcs12PbeParamsValidator,capture2,errors)){var error=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");error.errors=errors;throw error}var salt=forge2.util.createBuffer(capture2.salt);var count=forge2.util.createBuffer(capture2.iterations);count=count.getInt(count.length()<<3);var dkLen,dIvLen,cipherFn;switch(oid){case pki.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:dkLen=24;dIvLen=8;cipherFn=forge2.des.startDecrypting;break;case pki.oids["pbewithSHAAnd40BitRC2-CBC"]:dkLen=5;dIvLen=8;cipherFn=function(key2,iv2){var cipher=forge2.rc2.createDecryptionCipher(key2,40);cipher.start(iv2,null);return cipher};break;default:var error=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");error.oid=oid;throw error}var md=prfOidToMessageDigest(capture2.prfOid);var key=pki.pbe.generatePkcs12Key(password,salt,1,count,dkLen,md);md.start();var iv=pki.pbe.generatePkcs12Key(password,salt,2,count,dIvLen,md);return cipherFn(key,iv)};pki.pbe.opensslDeriveBytes=function(password,salt,dkLen,md){if(typeof md==="undefined"||md===null){if(!("md5"in forge2.md)){throw new Error('"md5" hash algorithm unavailable.')}md=forge2.md.md5.create()}if(salt===null){salt=""}var digests=[hash(md,password+salt)];for(var length=16,i=1;length<dkLen;++i,length+=16){digests.push(hash(md,digests[i-1]+password+salt))}return digests.join("").substr(0,dkLen)};function hash(md,bytes){return md.start().update(bytes).digest().getBytes()}function prfOidToMessageDigest(prfOid){var prfAlgorithm;if(!prfOid){prfAlgorithm="hmacWithSHA1"}else{prfAlgorithm=pki.oids[asn1.derToOid(prfOid)];if(!prfAlgorithm){var error=new Error("Unsupported PRF OID.");error.oid=prfOid;error.supported=["hmacWithSHA1","hmacWithSHA224","hmacWithSHA256","hmacWithSHA384","hmacWithSHA512"];throw error}}return prfAlgorithmToMessageDigest(prfAlgorithm)}function prfAlgorithmToMessageDigest(prfAlgorithm){var factory=forge2.md;switch(prfAlgorithm){case"hmacWithSHA224":factory=forge2.md.sha512;case"hmacWithSHA1":case"hmacWithSHA256":case"hmacWithSHA384":case"hmacWithSHA512":prfAlgorithm=prfAlgorithm.substr(8).toLowerCase();break;default:var error=new Error("Unsupported PRF algorithm.");error.algorithm=prfAlgorithm;error.supported=["hmacWithSHA1","hmacWithSHA224","hmacWithSHA256","hmacWithSHA384","hmacWithSHA512"];throw error}if(!factory||!(prfAlgorithm in factory)){throw new Error("Unknown hash algorithm: "+prfAlgorithm)}return factory[prfAlgorithm].create()}function createPbkdf2Params(salt,countBytes,dkLen,prfAlgorithm){var params=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,salt),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,countBytes.getBytes())]);if(prfAlgorithm!=="hmacWithSHA1"){params.value.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,forge2.util.hexToBytes(dkLen.toString(16))),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids[prfAlgorithm]).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.NULL,false,"")]))}return params}}});var require_pkcs7asn1=__commonJS({"node_modules/node-forge/lib/pkcs7asn1.js"(exports,module){"use strict";var forge2=require_forge();require_asn1();require_util7();var asn1=forge2.asn1;var p7v=module.exports=forge2.pkcs7asn1=forge2.pkcs7asn1||{};forge2.pkcs7=forge2.pkcs7||{};forge2.pkcs7.asn1=p7v;var contentInfoValidator={name:"ContentInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"ContentInfo.ContentType",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"contentType"},{name:"ContentInfo.content",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:0,constructed:true,optional:true,captureAsn1:"content"}]};p7v.contentInfoValidator=contentInfoValidator;var encryptedContentInfoValidator={name:"EncryptedContentInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"EncryptedContentInfo.contentType",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"contentType"},{name:"EncryptedContentInfo.contentEncryptionAlgorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"EncryptedContentInfo.contentEncryptionAlgorithm.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"encAlgorithm"},{name:"EncryptedContentInfo.contentEncryptionAlgorithm.parameter",tagClass:asn1.Class.UNIVERSAL,captureAsn1:"encParameter"}]},{name:"EncryptedContentInfo.encryptedContent",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:0,capture:"encryptedContent",captureAsn1:"encryptedContentAsn1"}]};p7v.envelopedDataValidator={name:"EnvelopedData",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"EnvelopedData.Version",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"version"},{name:"EnvelopedData.RecipientInfos",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SET,constructed:true,captureAsn1:"recipientInfos"}].concat(encryptedContentInfoValidator)};p7v.encryptedDataValidator={name:"EncryptedData",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"EncryptedData.Version",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"version"}].concat(encryptedContentInfoValidator)};var signerValidator={name:"SignerInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"SignerInfo.version",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false},{name:"SignerInfo.issuerAndSerialNumber",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"SignerInfo.issuerAndSerialNumber.issuer",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,captureAsn1:"issuer"},{name:"SignerInfo.issuerAndSerialNumber.serialNumber",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"serial"}]},{name:"SignerInfo.digestAlgorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"SignerInfo.digestAlgorithm.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"digestAlgorithm"},{name:"SignerInfo.digestAlgorithm.parameter",tagClass:asn1.Class.UNIVERSAL,constructed:false,captureAsn1:"digestParameter",optional:true}]},{name:"SignerInfo.authenticatedAttributes",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:0,constructed:true,optional:true,capture:"authenticatedAttributes"},{name:"SignerInfo.digestEncryptionAlgorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,capture:"signatureAlgorithm"},{name:"SignerInfo.encryptedDigest",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OCTETSTRING,constructed:false,capture:"signature"},{name:"SignerInfo.unauthenticatedAttributes",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:1,constructed:true,optional:true,capture:"unauthenticatedAttributes"}]};p7v.signedDataValidator={name:"SignedData",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"SignedData.Version",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"version"},{name:"SignedData.DigestAlgorithms",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SET,constructed:true,captureAsn1:"digestAlgorithms"},contentInfoValidator,{name:"SignedData.Certificates",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:0,optional:true,captureAsn1:"certificates"},{name:"SignedData.CertificateRevocationLists",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:1,optional:true,captureAsn1:"crls"},{name:"SignedData.SignerInfos",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SET,capture:"signerInfos",optional:true,value:[signerValidator]}]};p7v.recipientInfoValidator={name:"RecipientInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"RecipientInfo.version",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"version"},{name:"RecipientInfo.issuerAndSerial",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"RecipientInfo.issuerAndSerial.issuer",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,captureAsn1:"issuer"},{name:"RecipientInfo.issuerAndSerial.serialNumber",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"serial"}]},{name:"RecipientInfo.keyEncryptionAlgorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"RecipientInfo.keyEncryptionAlgorithm.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"encAlgorithm"},{name:"RecipientInfo.keyEncryptionAlgorithm.parameter",tagClass:asn1.Class.UNIVERSAL,constructed:false,captureAsn1:"encParameter",optional:true}]},{name:"RecipientInfo.encryptedKey",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OCTETSTRING,constructed:false,capture:"encKey"}]}}});var require_mgf1=__commonJS({"node_modules/node-forge/lib/mgf1.js"(exports,module){"use strict";var forge2=require_forge();require_util7();forge2.mgf=forge2.mgf||{};var mgf1=module.exports=forge2.mgf.mgf1=forge2.mgf1=forge2.mgf1||{};mgf1.create=function(md){var mgf={generate:function(seed,maskLen){var t=new forge2.util.ByteBuffer;var len=Math.ceil(maskLen/md.digestLength);for(var i=0;i<len;i++){var c=new forge2.util.ByteBuffer;c.putInt32(i);md.start();md.update(seed+c.getBytes());t.putBuffer(md.digest())}t.truncate(t.length()-maskLen);return t.getBytes()}};return mgf}}});var require_mgf=__commonJS({"node_modules/node-forge/lib/mgf.js"(exports,module){"use strict";var forge2=require_forge();require_mgf1();module.exports=forge2.mgf=forge2.mgf||{};forge2.mgf.mgf1=forge2.mgf1}});var require_pss=__commonJS({"node_modules/node-forge/lib/pss.js"(exports,module){"use strict";var forge2=require_forge();require_random();require_util7();var pss=module.exports=forge2.pss=forge2.pss||{};pss.create=function(options){if(arguments.length===3){options={md:arguments[0],mgf:arguments[1],saltLength:arguments[2]}}var hash=options.md;var mgf=options.mgf;var hLen=hash.digestLength;var salt_=options.salt||null;if(typeof salt_==="string"){salt_=forge2.util.createBuffer(salt_)}var sLen;if("saltLength"in options){sLen=options.saltLength}else if(salt_!==null){sLen=salt_.length()}else{throw new Error("Salt length not specified or specific salt not given.")}if(salt_!==null&&salt_.length()!==sLen){throw new Error("Given salt length does not match length of given salt.")}var prng=options.prng||forge2.random;var pssobj={};pssobj.encode=function(md,modBits){var i;var emBits=modBits-1;var emLen=Math.ceil(emBits/8);var mHash=md.digest().getBytes();if(emLen<hLen+sLen+2){throw new Error("Message is too long to encrypt.")}var salt;if(salt_===null){salt=prng.getBytesSync(sLen)}else{salt=salt_.bytes()}var m_=new forge2.util.ByteBuffer;m_.fillWithByte(0,8);m_.putBytes(mHash);m_.putBytes(salt);hash.start();hash.update(m_.getBytes());var h=hash.digest().getBytes();var ps2=new forge2.util.ByteBuffer;ps2.fillWithByte(0,emLen-sLen-hLen-2);ps2.putByte(1);ps2.putBytes(salt);var db=ps2.getBytes();var maskLen=emLen-hLen-1;var dbMask=mgf.generate(h,maskLen);var maskedDB="";for(i=0;i<maskLen;i++){maskedDB+=String.fromCharCode(db.charCodeAt(i)^dbMask.charCodeAt(i))}var mask=65280>>8*emLen-emBits&255;maskedDB=String.fromCharCode(maskedDB.charCodeAt(0)&~mask)+maskedDB.substr(1);return maskedDB+h+String.fromCharCode(188)};pssobj.verify=function(mHash,em,modBits){var i;var emBits=modBits-1;var emLen=Math.ceil(emBits/8);em=em.substr(-emLen);if(emLen<hLen+sLen+2){throw new Error("Inconsistent parameters to PSS signature verification.")}if(em.charCodeAt(emLen-1)!==188){throw new Error("Encoded message does not end in 0xBC.")}var maskLen=emLen-hLen-1;var maskedDB=em.substr(0,maskLen);var h=em.substr(maskLen,hLen);var mask=65280>>8*emLen-emBits&255;if((maskedDB.charCodeAt(0)&mask)!==0){throw new Error("Bits beyond keysize not zero as expected.")}var dbMask=mgf.generate(h,maskLen);var db="";for(i=0;i<maskLen;i++){db+=String.fromCharCode(maskedDB.charCodeAt(i)^dbMask.charCodeAt(i))}db=String.fromCharCode(db.charCodeAt(0)&~mask)+db.substr(1);var checkLen=emLen-hLen-sLen-2;for(i=0;i<checkLen;i++){if(db.charCodeAt(i)!==0){throw new Error("Leftmost octets not zero as expected")}}if(db.charCodeAt(checkLen)!==1){throw new Error("Inconsistent PSS signature, 0x01 marker not found")}var salt=db.substr(-sLen);var m_=new forge2.util.ByteBuffer;m_.fillWithByte(0,8);m_.putBytes(mHash);m_.putBytes(salt);hash.start();hash.update(m_.getBytes());var h_=hash.digest().getBytes();return h===h_};return pssobj}}});var require_x509=__commonJS({"node_modules/node-forge/lib/x509.js"(exports,module){"use strict";var forge2=require_forge();require_aes();require_asn1();require_des();require_md();require_mgf();require_oids();require_pem();require_pss();require_rsa();require_util7();var asn1=forge2.asn1;var pki=module.exports=forge2.pki=forge2.pki||{};var oids=pki.oids;var _shortNames={};_shortNames["CN"]=oids["commonName"];_shortNames["commonName"]="CN";_shortNames["C"]=oids["countryName"];_shortNames["countryName"]="C";_shortNames["L"]=oids["localityName"];_shortNames["localityName"]="L";_shortNames["ST"]=oids["stateOrProvinceName"];_shortNames["stateOrProvinceName"]="ST";_shortNames["O"]=oids["organizationName"];_shortNames["organizationName"]="O";_shortNames["OU"]=oids["organizationalUnitName"];_shortNames["organizationalUnitName"]="OU";_shortNames["E"]=oids["emailAddress"];_shortNames["emailAddress"]="E";var publicKeyValidator=forge2.pki.rsa.publicKeyValidator;var x509CertificateValidator={name:"Certificate",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"Certificate.TBSCertificate",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,captureAsn1:"tbsCertificate",value:[{name:"Certificate.TBSCertificate.version",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:0,constructed:true,optional:true,value:[{name:"Certificate.TBSCertificate.version.integer",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"certVersion"}]},{name:"Certificate.TBSCertificate.serialNumber",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"certSerialNumber"},{name:"Certificate.TBSCertificate.signature",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"Certificate.TBSCertificate.signature.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"certinfoSignatureOid"},{name:"Certificate.TBSCertificate.signature.parameters",tagClass:asn1.Class.UNIVERSAL,optional:true,captureAsn1:"certinfoSignatureParams"}]},{name:"Certificate.TBSCertificate.issuer",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,captureAsn1:"certIssuer"},{name:"Certificate.TBSCertificate.validity",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"Certificate.TBSCertificate.validity.notBefore (utc)",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.UTCTIME,constructed:false,optional:true,capture:"certValidity1UTCTime"},{name:"Certificate.TBSCertificate.validity.notBefore (generalized)",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.GENERALIZEDTIME,constructed:false,optional:true,capture:"certValidity2GeneralizedTime"},{name:"Certificate.TBSCertificate.validity.notAfter (utc)",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.UTCTIME,constructed:false,optional:true,capture:"certValidity3UTCTime"},{name:"Certificate.TBSCertificate.validity.notAfter (generalized)",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.GENERALIZEDTIME,constructed:false,optional:true,capture:"certValidity4GeneralizedTime"}]},{name:"Certificate.TBSCertificate.subject",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,captureAsn1:"certSubject"},publicKeyValidator,{name:"Certificate.TBSCertificate.issuerUniqueID",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:1,constructed:true,optional:true,value:[{name:"Certificate.TBSCertificate.issuerUniqueID.id",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.BITSTRING,constructed:false,captureBitStringValue:"certIssuerUniqueId"}]},{name:"Certificate.TBSCertificate.subjectUniqueID",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:2,constructed:true,optional:true,value:[{name:"Certificate.TBSCertificate.subjectUniqueID.id",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.BITSTRING,constructed:false,captureBitStringValue:"certSubjectUniqueId"}]},{name:"Certificate.TBSCertificate.extensions",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:3,constructed:true,captureAsn1:"certExtensions",optional:true}]},{name:"Certificate.signatureAlgorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"Certificate.signatureAlgorithm.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"certSignatureOid"},{name:"Certificate.TBSCertificate.signature.parameters",tagClass:asn1.Class.UNIVERSAL,optional:true,captureAsn1:"certSignatureParams"}]},{name:"Certificate.signatureValue",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.BITSTRING,constructed:false,captureBitStringValue:"certSignature"}]};var rsassaPssParameterValidator={name:"rsapss",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"rsapss.hashAlgorithm",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:0,constructed:true,value:[{name:"rsapss.hashAlgorithm.AlgorithmIdentifier",tagClass:asn1.Class.UNIVERSAL,type:asn1.Class.SEQUENCE,constructed:true,optional:true,value:[{name:"rsapss.hashAlgorithm.AlgorithmIdentifier.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"hashOid"}]}]},{name:"rsapss.maskGenAlgorithm",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:1,constructed:true,value:[{name:"rsapss.maskGenAlgorithm.AlgorithmIdentifier",tagClass:asn1.Class.UNIVERSAL,type:asn1.Class.SEQUENCE,constructed:true,optional:true,value:[{name:"rsapss.maskGenAlgorithm.AlgorithmIdentifier.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"maskGenOid"},{name:"rsapss.maskGenAlgorithm.AlgorithmIdentifier.params",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"rsapss.maskGenAlgorithm.AlgorithmIdentifier.params.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"maskGenHashOid"}]}]}]},{name:"rsapss.saltLength",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:2,optional:true,value:[{name:"rsapss.saltLength.saltLength",tagClass:asn1.Class.UNIVERSAL,type:asn1.Class.INTEGER,constructed:false,capture:"saltLength"}]},{name:"rsapss.trailerField",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:3,optional:true,value:[{name:"rsapss.trailer.trailer",tagClass:asn1.Class.UNIVERSAL,type:asn1.Class.INTEGER,constructed:false,capture:"trailer"}]}]};var certificationRequestInfoValidator={name:"CertificationRequestInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,captureAsn1:"certificationRequestInfo",value:[{name:"CertificationRequestInfo.integer",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"certificationRequestInfoVersion"},{name:"CertificationRequestInfo.subject",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,captureAsn1:"certificationRequestInfoSubject"},publicKeyValidator,{name:"CertificationRequestInfo.attributes",tagClass:asn1.Class.CONTEXT_SPECIFIC,type:0,constructed:true,optional:true,capture:"certificationRequestInfoAttributes",value:[{name:"CertificationRequestInfo.attributes",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"CertificationRequestInfo.attributes.type",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false},{name:"CertificationRequestInfo.attributes.value",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SET,constructed:true}]}]}]};var certificationRequestValidator={name:"CertificationRequest",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,captureAsn1:"csr",value:[certificationRequestInfoValidator,{name:"CertificationRequest.signatureAlgorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"CertificationRequest.signatureAlgorithm.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"csrSignatureOid"},{name:"CertificationRequest.signatureAlgorithm.parameters",tagClass:asn1.Class.UNIVERSAL,optional:true,captureAsn1:"csrSignatureParams"}]},{name:"CertificationRequest.signature",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.BITSTRING,constructed:false,captureBitStringValue:"csrSignature"}]};pki.RDNAttributesAsArray=function(rdn,md){var rval=[];var set,attr,obj;for(var si2=0;si2<rdn.value.length;++si2){set=rdn.value[si2];for(var i=0;i<set.value.length;++i){obj={};attr=set.value[i];obj.type=asn1.derToOid(attr.value[0].value);obj.value=attr.value[1].value;obj.valueTagClass=attr.value[1].type;if(obj.type in oids){obj.name=oids[obj.type];if(obj.name in _shortNames){obj.shortName=_shortNames[obj.name]}}if(md){md.update(obj.type);md.update(obj.value)}rval.push(obj)}}return rval};pki.CRIAttributesAsArray=function(attributes){var rval=[];for(var si2=0;si2<attributes.length;++si2){var seq=attributes[si2];var type=asn1.derToOid(seq.value[0].value);var values=seq.value[1].value;for(var vi2=0;vi2<values.length;++vi2){var obj={};obj.type=type;obj.value=values[vi2].value;obj.valueTagClass=values[vi2].type;if(obj.type in oids){obj.name=oids[obj.type];if(obj.name in _shortNames){obj.shortName=_shortNames[obj.name]}}if(obj.type===oids.extensionRequest){obj.extensions=[];for(var ei2=0;ei2<obj.value.length;++ei2){obj.extensions.push(pki.certificateExtensionFromAsn1(obj.value[ei2]))}}rval.push(obj)}}return rval};function _getAttribute(obj,options){if(typeof options==="string"){options={shortName:options}}var rval=null;var attr;for(var i=0;rval===null&&i<obj.attributes.length;++i){attr=obj.attributes[i];if(options.type&&options.type===attr.type){rval=attr}else if(options.name&&options.name===attr.name){rval=attr}else if(options.shortName&&options.shortName===attr.shortName){rval=attr}}return rval}var _readSignatureParameters=function(oid,obj,fillDefaults){var params={};if(oid!==oids["RSASSA-PSS"]){return params}if(fillDefaults){params={hash:{algorithmOid:oids["sha1"]},mgf:{algorithmOid:oids["mgf1"],hash:{algorithmOid:oids["sha1"]}},saltLength:20}}var capture2={};var errors=[];if(!asn1.validate(obj,rsassaPssParameterValidator,capture2,errors)){var error=new Error("Cannot read RSASSA-PSS parameter block.");error.errors=errors;throw error}if(capture2.hashOid!==void 0){params.hash=params.hash||{};params.hash.algorithmOid=asn1.derToOid(capture2.hashOid)}if(capture2.maskGenOid!==void 0){params.mgf=params.mgf||{};params.mgf.algorithmOid=asn1.derToOid(capture2.maskGenOid);params.mgf.hash=params.mgf.hash||{};params.mgf.hash.algorithmOid=asn1.derToOid(capture2.maskGenHashOid)}if(capture2.saltLength!==void 0){params.saltLength=capture2.saltLength.charCodeAt(0)}return params};var _createSignatureDigest=function(options){switch(oids[options.signatureOid]){case"sha1WithRSAEncryption":case"sha1WithRSASignature":return forge2.md.sha1.create();case"md5WithRSAEncryption":return forge2.md.md5.create();case"sha256WithRSAEncryption":return forge2.md.sha256.create();case"sha384WithRSAEncryption":return forge2.md.sha384.create();case"sha512WithRSAEncryption":return forge2.md.sha512.create();case"RSASSA-PSS":return forge2.md.sha256.create();default:var error=new Error("Could not compute "+options.type+" digest. Unknown signature OID.");error.signatureOid=options.signatureOid;throw error}};var _verifySignature=function(options){var cert=options.certificate;var scheme;switch(cert.signatureOid){case oids.sha1WithRSAEncryption:case oids.sha1WithRSASignature:break;case oids["RSASSA-PSS"]:var hash,mgf;hash=oids[cert.signatureParameters.mgf.hash.algorithmOid];if(hash===void 0||forge2.md[hash]===void 0){var error=new Error("Unsupported MGF hash function.");error.oid=cert.signatureParameters.mgf.hash.algorithmOid;error.name=hash;throw error}mgf=oids[cert.signatureParameters.mgf.algorithmOid];if(mgf===void 0||forge2.mgf[mgf]===void 0){var error=new Error("Unsupported MGF function.");error.oid=cert.signatureParameters.mgf.algorithmOid;error.name=mgf;throw error}mgf=forge2.mgf[mgf].create(forge2.md[hash].create());hash=oids[cert.signatureParameters.hash.algorithmOid];if(hash===void 0||forge2.md[hash]===void 0){var error=new Error("Unsupported RSASSA-PSS hash function.");error.oid=cert.signatureParameters.hash.algorithmOid;error.name=hash;throw error}scheme=forge2.pss.create(forge2.md[hash].create(),mgf,cert.signatureParameters.saltLength);break}return cert.publicKey.verify(options.md.digest().getBytes(),options.signature,scheme)};pki.certificateFromPem=function(pem,computeHash,strict){var msg=forge2.pem.decode(pem)[0];if(msg.type!=="CERTIFICATE"&&msg.type!=="X509 CERTIFICATE"&&msg.type!=="TRUSTED CERTIFICATE"){var error=new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');error.headerType=msg.type;throw error}if(msg.procType&&msg.procType.type==="ENCRYPTED"){throw new Error("Could not convert certificate from PEM; PEM is encrypted.")}var obj=asn1.fromDer(msg.body,strict);return pki.certificateFromAsn1(obj,computeHash)};pki.certificateToPem=function(cert,maxline){var msg={type:"CERTIFICATE",body:asn1.toDer(pki.certificateToAsn1(cert)).getBytes()};return forge2.pem.encode(msg,{maxline})};pki.publicKeyFromPem=function(pem){var msg=forge2.pem.decode(pem)[0];if(msg.type!=="PUBLIC KEY"&&msg.type!=="RSA PUBLIC KEY"){var error=new Error('Could not convert public key from PEM; PEM header type is not "PUBLIC KEY" or "RSA PUBLIC KEY".');error.headerType=msg.type;throw error}if(msg.procType&&msg.procType.type==="ENCRYPTED"){throw new Error("Could not convert public key from PEM; PEM is encrypted.")}var obj=asn1.fromDer(msg.body);return pki.publicKeyFromAsn1(obj)};pki.publicKeyToPem=function(key,maxline){var msg={type:"PUBLIC KEY",body:asn1.toDer(pki.publicKeyToAsn1(key)).getBytes()};return forge2.pem.encode(msg,{maxline})};pki.publicKeyToRSAPublicKeyPem=function(key,maxline){var msg={type:"RSA PUBLIC KEY",body:asn1.toDer(pki.publicKeyToRSAPublicKey(key)).getBytes()};return forge2.pem.encode(msg,{maxline})};pki.getPublicKeyFingerprint=function(key,options){options=options||{};var md=options.md||forge2.md.sha1.create();var type=options.type||"RSAPublicKey";var bytes;switch(type){case"RSAPublicKey":bytes=asn1.toDer(pki.publicKeyToRSAPublicKey(key)).getBytes();break;case"SubjectPublicKeyInfo":bytes=asn1.toDer(pki.publicKeyToAsn1(key)).getBytes();break;default:throw new Error('Unknown fingerprint type "'+options.type+'".')}md.start();md.update(bytes);var digest=md.digest();if(options.encoding==="hex"){var hex=digest.toHex();if(options.delimiter){return hex.match(/.{2}/g).join(options.delimiter)}return hex}else if(options.encoding==="binary"){return digest.getBytes()}else if(options.encoding){throw new Error('Unknown encoding "'+options.encoding+'".')}return digest};pki.certificationRequestFromPem=function(pem,computeHash,strict){var msg=forge2.pem.decode(pem)[0];if(msg.type!=="CERTIFICATE REQUEST"){var error=new Error('Could not convert certification request from PEM; PEM header type is not "CERTIFICATE REQUEST".');error.headerType=msg.type;throw error}if(msg.procType&&msg.procType.type==="ENCRYPTED"){throw new Error("Could not convert certification request from PEM; PEM is encrypted.")}var obj=asn1.fromDer(msg.body,strict);return pki.certificationRequestFromAsn1(obj,computeHash)};pki.certificationRequestToPem=function(csr,maxline){var msg={type:"CERTIFICATE REQUEST",body:asn1.toDer(pki.certificationRequestToAsn1(csr)).getBytes()};return forge2.pem.encode(msg,{maxline})};pki.createCertificate=function(){var cert={};cert.version=2;cert.serialNumber="00";cert.signatureOid=null;cert.signature=null;cert.siginfo={};cert.siginfo.algorithmOid=null;cert.validity={};cert.validity.notBefore=new Date;cert.validity.notAfter=new Date;cert.issuer={};cert.issuer.getField=function(sn2){return _getAttribute(cert.issuer,sn2)};cert.issuer.addField=function(attr){_fillMissingFields([attr]);cert.issuer.attributes.push(attr)};cert.issuer.attributes=[];cert.issuer.hash=null;cert.subject={};cert.subject.getField=function(sn2){return _getAttribute(cert.subject,sn2)};cert.subject.addField=function(attr){_fillMissingFields([attr]);cert.subject.attributes.push(attr)};cert.subject.attributes=[];cert.subject.hash=null;cert.extensions=[];cert.publicKey=null;cert.md=null;cert.setSubject=function(attrs,uniqueId){_fillMissingFields(attrs);cert.subject.attributes=attrs;delete cert.subject.uniqueId;if(uniqueId){cert.subject.uniqueId=uniqueId}cert.subject.hash=null};cert.setIssuer=function(attrs,uniqueId){_fillMissingFields(attrs);cert.issuer.attributes=attrs;delete cert.issuer.uniqueId;if(uniqueId){cert.issuer.uniqueId=uniqueId}cert.issuer.hash=null};cert.setExtensions=function(exts){for(var i=0;i<exts.length;++i){_fillMissingExtensionFields(exts[i],{cert})}cert.extensions=exts};cert.getExtension=function(options){if(typeof options==="string"){options={name:options}}var rval=null;var ext;for(var i=0;rval===null&&i<cert.extensions.length;++i){ext=cert.extensions[i];if(options.id&&ext.id===options.id){rval=ext}else if(options.name&&ext.name===options.name){rval=ext}}return rval};cert.sign=function(key,md){cert.md=md||forge2.md.sha1.create();var algorithmOid=oids[cert.md.algorithm+"WithRSAEncryption"];if(!algorithmOid){var error=new Error("Could not compute certificate digest. Unknown message digest algorithm OID.");error.algorithm=cert.md.algorithm;throw error}cert.signatureOid=cert.siginfo.algorithmOid=algorithmOid;cert.tbsCertificate=pki.getTBSCertificate(cert);var bytes=asn1.toDer(cert.tbsCertificate);cert.md.update(bytes.getBytes());cert.signature=key.sign(cert.md)};cert.verify=function(child){var rval=false;if(!cert.issued(child)){var issuer=child.issuer;var subject=cert.subject;var error=new Error("The parent certificate did not issue the given child certificate; the child certificate's issuer does not match the parent's subject.");error.expectedIssuer=subject.attributes;error.actualIssuer=issuer.attributes;throw error}var md=child.md;if(md===null){md=_createSignatureDigest({signatureOid:child.signatureOid,type:"certificate"});var tbsCertificate=child.tbsCertificate||pki.getTBSCertificate(child);var bytes=asn1.toDer(tbsCertificate);md.update(bytes.getBytes())}if(md!==null){rval=_verifySignature({certificate:cert,md,signature:child.signature})}return rval};cert.isIssuer=function(parent){var rval=false;var i=cert.issuer;var s3=parent.subject;if(i.hash&&s3.hash){rval=i.hash===s3.hash}else if(i.attributes.length===s3.attributes.length){rval=true;var iattr,sattr;for(var n=0;rval&&n<i.attributes.length;++n){iattr=i.attributes[n];sattr=s3.attributes[n];if(iattr.type!==sattr.type||iattr.value!==sattr.value){rval=false}}}return rval};cert.issued=function(child){return child.isIssuer(cert)};cert.generateSubjectKeyIdentifier=function(){return pki.getPublicKeyFingerprint(cert.publicKey,{type:"RSAPublicKey"})};cert.verifySubjectKeyIdentifier=function(){var oid=oids["subjectKeyIdentifier"];for(var i=0;i<cert.extensions.length;++i){var ext=cert.extensions[i];if(ext.id===oid){var ski=cert.generateSubjectKeyIdentifier().getBytes();return forge2.util.hexToBytes(ext.subjectKeyIdentifier)===ski}}return false};return cert};pki.certificateFromAsn1=function(obj,computeHash){var capture2={};var errors=[];if(!asn1.validate(obj,x509CertificateValidator,capture2,errors)){var error=new Error("Cannot read X.509 certificate. ASN.1 object is not an X509v3 Certificate.");error.errors=errors;throw error}var oid=asn1.derToOid(capture2.publicKeyOid);if(oid!==pki.oids.rsaEncryption){throw new Error("Cannot read public key. OID is not RSA.")}var cert=pki.createCertificate();cert.version=capture2.certVersion?capture2.certVersion.charCodeAt(0):0;var serial=forge2.util.createBuffer(capture2.certSerialNumber);cert.serialNumber=serial.toHex();cert.signatureOid=forge2.asn1.derToOid(capture2.certSignatureOid);cert.signatureParameters=_readSignatureParameters(cert.signatureOid,capture2.certSignatureParams,true);cert.siginfo.algorithmOid=forge2.asn1.derToOid(capture2.certinfoSignatureOid);cert.siginfo.parameters=_readSignatureParameters(cert.siginfo.algorithmOid,capture2.certinfoSignatureParams,false);cert.signature=capture2.certSignature;var validity=[];if(capture2.certValidity1UTCTime!==void 0){validity.push(asn1.utcTimeToDate(capture2.certValidity1UTCTime))}if(capture2.certValidity2GeneralizedTime!==void 0){validity.push(asn1.generalizedTimeToDate(capture2.certValidity2GeneralizedTime))}if(capture2.certValidity3UTCTime!==void 0){validity.push(asn1.utcTimeToDate(capture2.certValidity3UTCTime))}if(capture2.certValidity4GeneralizedTime!==void 0){validity.push(asn1.generalizedTimeToDate(capture2.certValidity4GeneralizedTime))}if(validity.length>2){throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.")}if(validity.length<2){throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.")}cert.validity.notBefore=validity[0];cert.validity.notAfter=validity[1];cert.tbsCertificate=capture2.tbsCertificate;if(computeHash){cert.md=_createSignatureDigest({signatureOid:cert.signatureOid,type:"certificate"});var bytes=asn1.toDer(cert.tbsCertificate);cert.md.update(bytes.getBytes())}var imd=forge2.md.sha1.create();var ibytes=asn1.toDer(capture2.certIssuer);imd.update(ibytes.getBytes());cert.issuer.getField=function(sn2){return _getAttribute(cert.issuer,sn2)};cert.issuer.addField=function(attr){_fillMissingFields([attr]);cert.issuer.attributes.push(attr)};cert.issuer.attributes=pki.RDNAttributesAsArray(capture2.certIssuer);if(capture2.certIssuerUniqueId){cert.issuer.uniqueId=capture2.certIssuerUniqueId}cert.issuer.hash=imd.digest().toHex();var smd=forge2.md.sha1.create();var sbytes=asn1.toDer(capture2.certSubject);smd.update(sbytes.getBytes());cert.subject.getField=function(sn2){return _getAttribute(cert.subject,sn2)};cert.subject.addField=function(attr){_fillMissingFields([attr]);cert.subject.attributes.push(attr)};cert.subject.attributes=pki.RDNAttributesAsArray(capture2.certSubject);if(capture2.certSubjectUniqueId){cert.subject.uniqueId=capture2.certSubjectUniqueId}cert.subject.hash=smd.digest().toHex();if(capture2.certExtensions){cert.extensions=pki.certificateExtensionsFromAsn1(capture2.certExtensions)}else{cert.extensions=[]}cert.publicKey=pki.publicKeyFromAsn1(capture2.subjectPublicKeyInfo);return cert};pki.certificateExtensionsFromAsn1=function(exts){var rval=[];for(var i=0;i<exts.value.length;++i){var extseq=exts.value[i];for(var ei2=0;ei2<extseq.value.length;++ei2){rval.push(pki.certificateExtensionFromAsn1(extseq.value[ei2]))}}return rval};pki.certificateExtensionFromAsn1=function(ext){var e={};e.id=asn1.derToOid(ext.value[0].value);e.critical=false;if(ext.value[1].type===asn1.Type.BOOLEAN){e.critical=ext.value[1].value.charCodeAt(0)!==0;e.value=ext.value[2].value}else{e.value=ext.value[1].value}if(e.id in oids){e.name=oids[e.id];if(e.name==="keyUsage"){var ev=asn1.fromDer(e.value);var b2=0;var b3=0;if(ev.value.length>1){b2=ev.value.charCodeAt(1);b3=ev.value.length>2?ev.value.charCodeAt(2):0}e.digitalSignature=(b2&128)===128;e.nonRepudiation=(b2&64)===64;e.keyEncipherment=(b2&32)===32;e.dataEncipherment=(b2&16)===16;e.keyAgreement=(b2&8)===8;e.keyCertSign=(b2&4)===4;e.cRLSign=(b2&2)===2;e.encipherOnly=(b2&1)===1;e.decipherOnly=(b3&128)===128}else if(e.name==="basicConstraints"){var ev=asn1.fromDer(e.value);if(ev.value.length>0&&ev.value[0].type===asn1.Type.BOOLEAN){e.cA=ev.value[0].value.charCodeAt(0)!==0}else{e.cA=false}var value=null;if(ev.value.length>0&&ev.value[0].type===asn1.Type.INTEGER){value=ev.value[0].value}else if(ev.value.length>1){value=ev.value[1].value}if(value!==null){e.pathLenConstraint=asn1.derToInteger(value)}}else if(e.name==="extKeyUsage"){var ev=asn1.fromDer(e.value);for(var vi2=0;vi2<ev.value.length;++vi2){var oid=asn1.derToOid(ev.value[vi2].value);if(oid in oids){e[oids[oid]]=true}else{e[oid]=true}}}else if(e.name==="nsCertType"){var ev=asn1.fromDer(e.value);var b2=0;if(ev.value.length>1){b2=ev.value.charCodeAt(1)}e.client=(b2&128)===128;e.server=(b2&64)===64;e.email=(b2&32)===32;e.objsign=(b2&16)===16;e.reserved=(b2&8)===8;e.sslCA=(b2&4)===4;e.emailCA=(b2&2)===2;e.objCA=(b2&1)===1}else if(e.name==="subjectAltName"||e.name==="issuerAltName"){e.altNames=[];var gn2;var ev=asn1.fromDer(e.value);for(var n=0;n<ev.value.length;++n){gn2=ev.value[n];var altName={type:gn2.type,value:gn2.value};e.altNames.push(altName);switch(gn2.type){case 1:case 2:case 6:break;case 7:altName.ip=forge2.util.bytesToIP(gn2.value);break;case 8:altName.oid=asn1.derToOid(gn2.value);break;default:}}}else if(e.name==="subjectKeyIdentifier"){var ev=asn1.fromDer(e.value);e.subjectKeyIdentifier=forge2.util.bytesToHex(ev.value)}}return e};pki.certificationRequestFromAsn1=function(obj,computeHash){var capture2={};var errors=[];if(!asn1.validate(obj,certificationRequestValidator,capture2,errors)){var error=new Error("Cannot read PKCS#10 certificate request. ASN.1 object is not a PKCS#10 CertificationRequest.");error.errors=errors;throw error}var oid=asn1.derToOid(capture2.publicKeyOid);if(oid!==pki.oids.rsaEncryption){throw new Error("Cannot read public key. OID is not RSA.")}var csr=pki.createCertificationRequest();csr.version=capture2.csrVersion?capture2.csrVersion.charCodeAt(0):0;csr.signatureOid=forge2.asn1.derToOid(capture2.csrSignatureOid);csr.signatureParameters=_readSignatureParameters(csr.signatureOid,capture2.csrSignatureParams,true);csr.siginfo.algorithmOid=forge2.asn1.derToOid(capture2.csrSignatureOid);csr.siginfo.parameters=_readSignatureParameters(csr.siginfo.algorithmOid,capture2.csrSignatureParams,false);csr.signature=capture2.csrSignature;csr.certificationRequestInfo=capture2.certificationRequestInfo;if(computeHash){csr.md=_createSignatureDigest({signatureOid:csr.signatureOid,type:"certification request"});var bytes=asn1.toDer(csr.certificationRequestInfo);csr.md.update(bytes.getBytes())}var smd=forge2.md.sha1.create();csr.subject.getField=function(sn2){return _getAttribute(csr.subject,sn2)};csr.subject.addField=function(attr){_fillMissingFields([attr]);csr.subject.attributes.push(attr)};csr.subject.attributes=pki.RDNAttributesAsArray(capture2.certificationRequestInfoSubject,smd);csr.subject.hash=smd.digest().toHex();csr.publicKey=pki.publicKeyFromAsn1(capture2.subjectPublicKeyInfo);csr.getAttribute=function(sn2){return _getAttribute(csr,sn2)};csr.addAttribute=function(attr){_fillMissingFields([attr]);csr.attributes.push(attr)};csr.attributes=pki.CRIAttributesAsArray(capture2.certificationRequestInfoAttributes||[]);return csr};pki.createCertificationRequest=function(){var csr={};csr.version=0;csr.signatureOid=null;csr.signature=null;csr.siginfo={};csr.siginfo.algorithmOid=null;csr.subject={};csr.subject.getField=function(sn2){return _getAttribute(csr.subject,sn2)};csr.subject.addField=function(attr){_fillMissingFields([attr]);csr.subject.attributes.push(attr)};csr.subject.attributes=[];csr.subject.hash=null;csr.publicKey=null;csr.attributes=[];csr.getAttribute=function(sn2){return _getAttribute(csr,sn2)};csr.addAttribute=function(attr){_fillMissingFields([attr]);csr.attributes.push(attr)};csr.md=null;csr.setSubject=function(attrs){_fillMissingFields(attrs);csr.subject.attributes=attrs;csr.subject.hash=null};csr.setAttributes=function(attrs){_fillMissingFields(attrs);csr.attributes=attrs};csr.sign=function(key,md){csr.md=md||forge2.md.sha1.create();var algorithmOid=oids[csr.md.algorithm+"WithRSAEncryption"];if(!algorithmOid){var error=new Error("Could not compute certification request digest. Unknown message digest algorithm OID.");error.algorithm=csr.md.algorithm;throw error}csr.signatureOid=csr.siginfo.algorithmOid=algorithmOid;csr.certificationRequestInfo=pki.getCertificationRequestInfo(csr);var bytes=asn1.toDer(csr.certificationRequestInfo);csr.md.update(bytes.getBytes());csr.signature=key.sign(csr.md)};csr.verify=function(){var rval=false;var md=csr.md;if(md===null){md=_createSignatureDigest({signatureOid:csr.signatureOid,type:"certification request"});var cri=csr.certificationRequestInfo||pki.getCertificationRequestInfo(csr);var bytes=asn1.toDer(cri);md.update(bytes.getBytes())}if(md!==null){rval=_verifySignature({certificate:csr,md,signature:csr.signature})}return rval};return csr};function _dnToAsn1(obj){var rval=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[]);var attr,set;var attrs=obj.attributes;for(var i=0;i<attrs.length;++i){attr=attrs[i];var value=attr.value;var valueTagClass=asn1.Type.PRINTABLESTRING;if("valueTagClass"in attr){valueTagClass=attr.valueTagClass;if(valueTagClass===asn1.Type.UTF8){value=forge2.util.encodeUtf8(value)}}set=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SET,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(attr.type).getBytes()),asn1.create(asn1.Class.UNIVERSAL,valueTagClass,false,value)])]);rval.value.push(set)}return rval}function _fillMissingFields(attrs){var attr;for(var i=0;i<attrs.length;++i){attr=attrs[i];if(typeof attr.name==="undefined"){if(attr.type&&attr.type in pki.oids){attr.name=pki.oids[attr.type]}else if(attr.shortName&&attr.shortName in _shortNames){attr.name=pki.oids[_shortNames[attr.shortName]]}}if(typeof attr.type==="undefined"){if(attr.name&&attr.name in pki.oids){attr.type=pki.oids[attr.name]}else{var error=new Error("Attribute type not specified.");error.attribute=attr;throw error}}if(typeof attr.shortName==="undefined"){if(attr.name&&attr.name in _shortNames){attr.shortName=_shortNames[attr.name]}}if(attr.type===oids.extensionRequest){attr.valueConstructed=true;attr.valueTagClass=asn1.Type.SEQUENCE;if(!attr.value&&attr.extensions){attr.value=[];for(var ei2=0;ei2<attr.extensions.length;++ei2){attr.value.push(pki.certificateExtensionToAsn1(_fillMissingExtensionFields(attr.extensions[ei2])))}}}if(typeof attr.value==="undefined"){var error=new Error("Attribute value not specified.");error.attribute=attr;throw error}}}function _fillMissingExtensionFields(e,options){options=options||{};if(typeof e.name==="undefined"){if(e.id&&e.id in pki.oids){e.name=pki.oids[e.id]}}if(typeof e.id==="undefined"){if(e.name&&e.name in pki.oids){e.id=pki.oids[e.name]}else{var error=new Error("Extension ID not specified.");error.extension=e;throw error}}if(typeof e.value!=="undefined"){return e}if(e.name==="keyUsage"){var unused=0;var b2=0;var b3=0;if(e.digitalSignature){b2|=128;unused=7}if(e.nonRepudiation){b2|=64;unused=6}if(e.keyEncipherment){b2|=32;unused=5}if(e.dataEncipherment){b2|=16;unused=4}if(e.keyAgreement){b2|=8;unused=3}if(e.keyCertSign){b2|=4;unused=2}if(e.cRLSign){b2|=2;unused=1}if(e.encipherOnly){b2|=1;unused=0}if(e.decipherOnly){b3|=128;unused=7}var value=String.fromCharCode(unused);if(b3!==0){value+=String.fromCharCode(b2)+String.fromCharCode(b3)}else if(b2!==0){value+=String.fromCharCode(b2)}e.value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.BITSTRING,false,value)}else if(e.name==="basicConstraints"){e.value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[]);if(e.cA){e.value.value.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.BOOLEAN,false,String.fromCharCode(255)))}if("pathLenConstraint"in e){e.value.value.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,asn1.integerToDer(e.pathLenConstraint).getBytes()))}}else if(e.name==="extKeyUsage"){e.value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[]);var seq=e.value.value;for(var key in e){if(e[key]!==true){continue}if(key in oids){seq.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(oids[key]).getBytes()))}else if(key.indexOf(".")!==-1){seq.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(key).getBytes()))}}}else if(e.name==="nsCertType"){var unused=0;var b2=0;if(e.client){b2|=128;unused=7}if(e.server){b2|=64;unused=6}if(e.email){b2|=32;unused=5}if(e.objsign){b2|=16;unused=4}if(e.reserved){b2|=8;unused=3}if(e.sslCA){b2|=4;unused=2}if(e.emailCA){b2|=2;unused=1}if(e.objCA){b2|=1;unused=0}var value=String.fromCharCode(unused);if(b2!==0){value+=String.fromCharCode(b2)}e.value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.BITSTRING,false,value)}else if(e.name==="subjectAltName"||e.name==="issuerAltName"){e.value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[]);var altName;for(var n=0;n<e.altNames.length;++n){altName=e.altNames[n];var value=altName.value;if(altName.type===7&&altName.ip){value=forge2.util.bytesFromIP(altName.ip);if(value===null){var error=new Error('Extension "ip" value is not a valid IPv4 or IPv6 address.');error.extension=e;throw error}}else if(altName.type===8){if(altName.oid){value=asn1.oidToDer(asn1.oidToDer(altName.oid))}else{value=asn1.oidToDer(value)}}e.value.value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,altName.type,false,value))}}else if(e.name==="nsComment"&&options.cert){if(!/^[\x00-\x7F]*$/.test(e.comment)||e.comment.length<1||e.comment.length>128){throw new Error('Invalid "nsComment" content.')}e.value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.IA5STRING,false,e.comment)}else if(e.name==="subjectKeyIdentifier"&&options.cert){var ski=options.cert.generateSubjectKeyIdentifier();e.subjectKeyIdentifier=ski.toHex();e.value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,ski.getBytes())}else if(e.name==="authorityKeyIdentifier"&&options.cert){e.value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[]);var seq=e.value.value;if(e.keyIdentifier){var keyIdentifier=e.keyIdentifier===true?options.cert.generateSubjectKeyIdentifier().getBytes():e.keyIdentifier;seq.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,false,keyIdentifier))}if(e.authorityCertIssuer){var authorityCertIssuer=[asn1.create(asn1.Class.CONTEXT_SPECIFIC,4,true,[_dnToAsn1(e.authorityCertIssuer===true?options.cert.issuer:e.authorityCertIssuer)])];seq.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,1,true,authorityCertIssuer))}if(e.serialNumber){var serialNumber=forge2.util.hexToBytes(e.serialNumber===true?options.cert.serialNumber:e.serialNumber);seq.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,2,false,serialNumber))}}else if(e.name==="cRLDistributionPoints"){e.value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[]);var seq=e.value.value;var subSeq=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[]);var fullNameGeneralNames=asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[]);var altName;for(var n=0;n<e.altNames.length;++n){altName=e.altNames[n];var value=altName.value;if(altName.type===7&&altName.ip){value=forge2.util.bytesFromIP(altName.ip);if(value===null){var error=new Error('Extension "ip" value is not a valid IPv4 or IPv6 address.');error.extension=e;throw error}}else if(altName.type===8){if(altName.oid){value=asn1.oidToDer(asn1.oidToDer(altName.oid))}else{value=asn1.oidToDer(value)}}fullNameGeneralNames.value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,altName.type,false,value))}subSeq.value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[fullNameGeneralNames]));seq.push(subSeq)}if(typeof e.value==="undefined"){var error=new Error("Extension value not specified.");error.extension=e;throw error}return e}function _signatureParametersToAsn1(oid,params){switch(oid){case oids["RSASSA-PSS"]:var parts=[];if(params.hash.algorithmOid!==void 0){parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(params.hash.algorithmOid).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.NULL,false,"")])]))}if(params.mgf.algorithmOid!==void 0){parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,1,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(params.mgf.algorithmOid).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(params.mgf.hash.algorithmOid).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.NULL,false,"")])])]))}if(params.saltLength!==void 0){parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,2,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,asn1.integerToDer(params.saltLength).getBytes())]))}return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,parts);default:return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.NULL,false,"")}}function _CRIAttributesToAsn1(csr){var rval=asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[]);if(csr.attributes.length===0){return rval}var attrs=csr.attributes;for(var i=0;i<attrs.length;++i){var attr=attrs[i];var value=attr.value;var valueTagClass=asn1.Type.UTF8;if("valueTagClass"in attr){valueTagClass=attr.valueTagClass}if(valueTagClass===asn1.Type.UTF8){value=forge2.util.encodeUtf8(value)}var valueConstructed=false;if("valueConstructed"in attr){valueConstructed=attr.valueConstructed}var seq=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(attr.type).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SET,true,[asn1.create(asn1.Class.UNIVERSAL,valueTagClass,valueConstructed,value)])]);rval.value.push(seq)}return rval}var jan_1_1950=new Date("1950-01-01T00:00:00Z");var jan_1_2050=new Date("2050-01-01T00:00:00Z");function _dateToAsn1(date){if(date>=jan_1_1950&&date<jan_1_2050){return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.UTCTIME,false,asn1.dateToUtcTime(date))}else{return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.GENERALIZEDTIME,false,asn1.dateToGeneralizedTime(date))}}pki.getTBSCertificate=function(cert){var notBefore=_dateToAsn1(cert.validity.notBefore);var notAfter=_dateToAsn1(cert.validity.notAfter);var tbs=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,asn1.integerToDer(cert.version).getBytes())]),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,forge2.util.hexToBytes(cert.serialNumber)),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(cert.siginfo.algorithmOid).getBytes()),_signatureParametersToAsn1(cert.siginfo.algorithmOid,cert.siginfo.parameters)]),_dnToAsn1(cert.issuer),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[notBefore,notAfter]),_dnToAsn1(cert.subject),pki.publicKeyToAsn1(cert.publicKey)]);if(cert.issuer.uniqueId){tbs.value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,1,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.BITSTRING,false,String.fromCharCode(0)+cert.issuer.uniqueId)]))}if(cert.subject.uniqueId){tbs.value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,2,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.BITSTRING,false,String.fromCharCode(0)+cert.subject.uniqueId)]))}if(cert.extensions.length>0){tbs.value.push(pki.certificateExtensionsToAsn1(cert.extensions))}return tbs};pki.getCertificationRequestInfo=function(csr){var cri=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,asn1.integerToDer(csr.version).getBytes()),_dnToAsn1(csr.subject),pki.publicKeyToAsn1(csr.publicKey),_CRIAttributesToAsn1(csr)]);return cri};pki.distinguishedNameToAsn1=function(dn2){return _dnToAsn1(dn2)};pki.certificateToAsn1=function(cert){var tbsCertificate=cert.tbsCertificate||pki.getTBSCertificate(cert);return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[tbsCertificate,asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(cert.signatureOid).getBytes()),_signatureParametersToAsn1(cert.signatureOid,cert.signatureParameters)]),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.BITSTRING,false,String.fromCharCode(0)+cert.signature)])};pki.certificateExtensionsToAsn1=function(exts){var rval=asn1.create(asn1.Class.CONTEXT_SPECIFIC,3,true,[]);var seq=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[]);rval.value.push(seq);for(var i=0;i<exts.length;++i){seq.value.push(pki.certificateExtensionToAsn1(exts[i]))}return rval};pki.certificateExtensionToAsn1=function(ext){var extseq=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[]);extseq.value.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(ext.id).getBytes()));if(ext.critical){extseq.value.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.BOOLEAN,false,String.fromCharCode(255)))}var value=ext.value;if(typeof ext.value!=="string"){value=asn1.toDer(value).getBytes()}extseq.value.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,value));return extseq};pki.certificationRequestToAsn1=function(csr){var cri=csr.certificationRequestInfo||pki.getCertificationRequestInfo(csr);return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[cri,asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(csr.signatureOid).getBytes()),_signatureParametersToAsn1(csr.signatureOid,csr.signatureParameters)]),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.BITSTRING,false,String.fromCharCode(0)+csr.signature)])};pki.createCaStore=function(certs){var caStore={certs:{}};caStore.getIssuer=function(cert2){var rval=getBySubject(cert2.issuer);return rval};caStore.addCertificate=function(cert2){if(typeof cert2==="string"){cert2=forge2.pki.certificateFromPem(cert2)}ensureSubjectHasHash(cert2.subject);if(!caStore.hasCertificate(cert2)){if(cert2.subject.hash in caStore.certs){var tmp=caStore.certs[cert2.subject.hash];if(!forge2.util.isArray(tmp)){tmp=[tmp]}tmp.push(cert2);caStore.certs[cert2.subject.hash]=tmp}else{caStore.certs[cert2.subject.hash]=cert2}}};caStore.hasCertificate=function(cert2){if(typeof cert2==="string"){cert2=forge2.pki.certificateFromPem(cert2)}var match=getBySubject(cert2.subject);if(!match){return false}if(!forge2.util.isArray(match)){match=[match]}var der1=asn1.toDer(pki.certificateToAsn1(cert2)).getBytes();for(var i2=0;i2<match.length;++i2){var der2=asn1.toDer(pki.certificateToAsn1(match[i2])).getBytes();if(der1===der2){return true}}return false};caStore.listAllCertificates=function(){var certList=[];for(var hash in caStore.certs){if(caStore.certs.hasOwnProperty(hash)){var value=caStore.certs[hash];if(!forge2.util.isArray(value)){certList.push(value)}else{for(var i2=0;i2<value.length;++i2){certList.push(value[i2])}}}}return certList};caStore.removeCertificate=function(cert2){var result;if(typeof cert2==="string"){cert2=forge2.pki.certificateFromPem(cert2)}ensureSubjectHasHash(cert2.subject);if(!caStore.hasCertificate(cert2)){return null}var match=getBySubject(cert2.subject);if(!forge2.util.isArray(match)){result=caStore.certs[cert2.subject.hash];delete caStore.certs[cert2.subject.hash];return result}var der1=asn1.toDer(pki.certificateToAsn1(cert2)).getBytes();for(var i2=0;i2<match.length;++i2){var der2=asn1.toDer(pki.certificateToAsn1(match[i2])).getBytes();if(der1===der2){result=match[i2];match.splice(i2,1)}}if(match.length===0){delete caStore.certs[cert2.subject.hash]}return result};function getBySubject(subject){ensureSubjectHasHash(subject);return caStore.certs[subject.hash]||null}function ensureSubjectHasHash(subject){if(!subject.hash){var md=forge2.md.sha1.create();subject.attributes=pki.RDNAttributesAsArray(_dnToAsn1(subject),md);subject.hash=md.digest().toHex()}}if(certs){for(var i=0;i<certs.length;++i){var cert=certs[i];caStore.addCertificate(cert)}}return caStore};pki.certificateError={bad_certificate:"forge.pki.BadCertificate",unsupported_certificate:"forge.pki.UnsupportedCertificate",certificate_revoked:"forge.pki.CertificateRevoked",certificate_expired:"forge.pki.CertificateExpired",certificate_unknown:"forge.pki.CertificateUnknown",unknown_ca:"forge.pki.UnknownCertificateAuthority"};pki.verifyCertificateChain=function(caStore,chain,options){if(typeof options==="function"){options={verify:options}}options=options||{};chain=chain.slice(0);var certs=chain.slice(0);var validityCheckDate=options.validityCheckDate;if(typeof validityCheckDate==="undefined"){validityCheckDate=new Date}var first=true;var error=null;var depth=0;do{var cert=chain.shift();var parent=null;var selfSigned=false;if(validityCheckDate){if(validityCheckDate<cert.validity.notBefore||validityCheckDate>cert.validity.notAfter){error={message:"Certificate is not valid yet or has expired.",error:pki.certificateError.certificate_expired,notBefore:cert.validity.notBefore,notAfter:cert.validity.notAfter,now:validityCheckDate}}}if(error===null){parent=chain[0]||caStore.getIssuer(cert);if(parent===null){if(cert.isIssuer(cert)){selfSigned=true;parent=cert}}if(parent){var parents=parent;if(!forge2.util.isArray(parents)){parents=[parents]}var verified=false;while(!verified&&parents.length>0){parent=parents.shift();try{verified=parent.verify(cert)}catch(ex){}}if(!verified){error={message:"Certificate signature is invalid.",error:pki.certificateError.bad_certificate}}}if(error===null&&(!parent||selfSigned)&&!caStore.hasCertificate(cert)){error={message:"Certificate is not trusted.",error:pki.certificateError.unknown_ca}}}if(error===null&&parent&&!cert.isIssuer(parent)){error={message:"Certificate issuer is invalid.",error:pki.certificateError.bad_certificate}}if(error===null){var se2={keyUsage:true,basicConstraints:true};for(var i=0;error===null&&i<cert.extensions.length;++i){var ext=cert.extensions[i];if(ext.critical&&!(ext.name in se2)){error={message:"Certificate has an unsupported critical extension.",error:pki.certificateError.unsupported_certificate}}}}if(error===null&&(!first||chain.length===0&&(!parent||selfSigned))){var bcExt=cert.getExtension("basicConstraints");var keyUsageExt=cert.getExtension("keyUsage");if(keyUsageExt!==null){if(!keyUsageExt.keyCertSign||bcExt===null){error={message:"Certificate keyUsage or basicConstraints conflict or indicate that the certificate is not a CA. If the certificate is the only one in the chain or isn't the first then the certificate must be a valid CA.",error:pki.certificateError.bad_certificate}}}if(error===null&&bcExt===null){error={message:"Certificate is missing basicConstraints extension and cannot be used as a CA.",error:pki.certificateError.bad_certificate}}if(error===null&&bcExt!==null&&!bcExt.cA){error={message:"Certificate basicConstraints indicates the certificate is not a CA.",error:pki.certificateError.bad_certificate}}if(error===null&&keyUsageExt!==null&&"pathLenConstraint"in bcExt){var pathLen=depth-1;if(pathLen>bcExt.pathLenConstraint){error={message:"Certificate basicConstraints pathLenConstraint violated.",error:pki.certificateError.bad_certificate}}}}var vfd=error===null?true:error.error;var ret=options.verify?options.verify(vfd,depth,certs):vfd;if(ret===true){error=null}else{if(vfd===true){error={message:"The application rejected the certificate.",error:pki.certificateError.bad_certificate}}if(ret||ret===0){if(typeof ret==="object"&&!forge2.util.isArray(ret)){if(ret.message){error.message=ret.message}if(ret.error){error.error=ret.error}}else if(typeof ret==="string"){error.error=ret}}throw error}first=false;++depth}while(chain.length>0);return true}}});var require_pkcs12=__commonJS({"node_modules/node-forge/lib/pkcs12.js"(exports,module){"use strict";var forge2=require_forge();require_asn1();require_hmac();require_oids();require_pkcs7asn1();require_pbe();require_random();require_rsa();require_sha1();require_util7();require_x509();var asn1=forge2.asn1;var pki=forge2.pki;var p12=module.exports=forge2.pkcs12=forge2.pkcs12||{};var contentInfoValidator={name:"ContentInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"ContentInfo.contentType",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"contentType"},{name:"ContentInfo.content",tagClass:asn1.Class.CONTEXT_SPECIFIC,constructed:true,captureAsn1:"content"}]};var pfxValidator={name:"PFX",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"PFX.version",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"version"},contentInfoValidator,{name:"PFX.macData",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,optional:true,captureAsn1:"mac",value:[{name:"PFX.macData.mac",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"PFX.macData.mac.digestAlgorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"PFX.macData.mac.digestAlgorithm.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"macAlgorithm"},{name:"PFX.macData.mac.digestAlgorithm.parameters",optional:true,tagClass:asn1.Class.UNIVERSAL,captureAsn1:"macAlgorithmParameters"}]},{name:"PFX.macData.mac.digest",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OCTETSTRING,constructed:false,capture:"macDigest"}]},{name:"PFX.macData.macSalt",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OCTETSTRING,constructed:false,capture:"macSalt"},{name:"PFX.macData.iterations",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,optional:true,capture:"macIterations"}]}]};var safeBagValidator={name:"SafeBag",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"SafeBag.bagId",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"bagId"},{name:"SafeBag.bagValue",tagClass:asn1.Class.CONTEXT_SPECIFIC,constructed:true,captureAsn1:"bagValue"},{name:"SafeBag.bagAttributes",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SET,constructed:true,optional:true,capture:"bagAttributes"}]};var attributeValidator={name:"Attribute",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"Attribute.attrId",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"oid"},{name:"Attribute.attrValues",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SET,constructed:true,capture:"values"}]};var certBagValidator={name:"CertBag",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"CertBag.certId",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"certId"},{name:"CertBag.certValue",tagClass:asn1.Class.CONTEXT_SPECIFIC,constructed:true,value:[{name:"CertBag.certValue[0]",tagClass:asn1.Class.UNIVERSAL,type:asn1.Class.OCTETSTRING,constructed:false,capture:"cert"}]}]};function _getBagsByAttribute(safeContents,attrName,attrValue,bagType){var result=[];for(var i=0;i<safeContents.length;i++){for(var j2=0;j2<safeContents[i].safeBags.length;j2++){var bag=safeContents[i].safeBags[j2];if(bagType!==void 0&&bag.type!==bagType){continue}if(attrName===null){result.push(bag);continue}if(bag.attributes[attrName]!==void 0&&bag.attributes[attrName].indexOf(attrValue)>=0){result.push(bag)}}}return result}p12.pkcs12FromAsn1=function(obj,strict,password){if(typeof strict==="string"){password=strict;strict=true}else if(strict===void 0){strict=true}var capture2={};var errors=[];if(!asn1.validate(obj,pfxValidator,capture2,errors)){var error=new Error("Cannot read PKCS#12 PFX. ASN.1 object is not an PKCS#12 PFX.");error.errors=error;throw error}var pfx={version:capture2.version.charCodeAt(0),safeContents:[],getBags:function(filter){var rval={};var localKeyId;if("localKeyId"in filter){localKeyId=filter.localKeyId}else if("localKeyIdHex"in filter){localKeyId=forge2.util.hexToBytes(filter.localKeyIdHex)}if(localKeyId===void 0&&!("friendlyName"in filter)&&"bagType"in filter){rval[filter.bagType]=_getBagsByAttribute(pfx.safeContents,null,null,filter.bagType)}if(localKeyId!==void 0){rval.localKeyId=_getBagsByAttribute(pfx.safeContents,"localKeyId",localKeyId,filter.bagType)}if("friendlyName"in filter){rval.friendlyName=_getBagsByAttribute(pfx.safeContents,"friendlyName",filter.friendlyName,filter.bagType)}return rval},getBagsByFriendlyName:function(friendlyName,bagType){return _getBagsByAttribute(pfx.safeContents,"friendlyName",friendlyName,bagType)},getBagsByLocalKeyId:function(localKeyId,bagType){return _getBagsByAttribute(pfx.safeContents,"localKeyId",localKeyId,bagType)}};if(capture2.version.charCodeAt(0)!==3){var error=new Error("PKCS#12 PFX of version other than 3 not supported.");error.version=capture2.version.charCodeAt(0);throw error}if(asn1.derToOid(capture2.contentType)!==pki.oids.data){var error=new Error("Only PKCS#12 PFX in password integrity mode supported.");error.oid=asn1.derToOid(capture2.contentType);throw error}var data=capture2.content.value[0];if(data.tagClass!==asn1.Class.UNIVERSAL||data.type!==asn1.Type.OCTETSTRING){throw new Error("PKCS#12 authSafe content data is not an OCTET STRING.")}data=_decodePkcs7Data(data);if(capture2.mac){var md=null;var macKeyBytes=0;var macAlgorithm=asn1.derToOid(capture2.macAlgorithm);switch(macAlgorithm){case pki.oids.sha1:md=forge2.md.sha1.create();macKeyBytes=20;break;case pki.oids.sha256:md=forge2.md.sha256.create();macKeyBytes=32;break;case pki.oids.sha384:md=forge2.md.sha384.create();macKeyBytes=48;break;case pki.oids.sha512:md=forge2.md.sha512.create();macKeyBytes=64;break;case pki.oids.md5:md=forge2.md.md5.create();macKeyBytes=16;break}if(md===null){throw new Error("PKCS#12 uses unsupported MAC algorithm: "+macAlgorithm)}var macSalt=new forge2.util.ByteBuffer(capture2.macSalt);var macIterations="macIterations"in capture2?parseInt(forge2.util.bytesToHex(capture2.macIterations),16):1;var macKey=p12.generateKey(password,macSalt,3,macIterations,macKeyBytes,md);var mac=forge2.hmac.create();mac.start(md,macKey);mac.update(data.value);var macValue=mac.getMac();if(macValue.getBytes()!==capture2.macDigest){throw new Error("PKCS#12 MAC could not be verified. Invalid password?")}}else if(Array.isArray(obj.value)&&obj.value.length>2){throw new Error("Invalid PKCS#12. macData field present but MAC was not validated.")}_decodeAuthenticatedSafe(pfx,data.value,strict,password);return pfx};function _decodePkcs7Data(data){if(data.composed||data.constructed){var value=forge2.util.createBuffer();for(var i=0;i<data.value.length;++i){value.putBytes(data.value[i].value)}data.composed=data.constructed=false;data.value=value.getBytes()}return data}function _decodeAuthenticatedSafe(pfx,authSafe,strict,password){authSafe=asn1.fromDer(authSafe,strict);if(authSafe.tagClass!==asn1.Class.UNIVERSAL||authSafe.type!==asn1.Type.SEQUENCE||authSafe.constructed!==true){throw new Error("PKCS#12 AuthenticatedSafe expected to be a SEQUENCE OF ContentInfo")}for(var i=0;i<authSafe.value.length;i++){var contentInfo=authSafe.value[i];var capture2={};var errors=[];if(!asn1.validate(contentInfo,contentInfoValidator,capture2,errors)){var error=new Error("Cannot read ContentInfo.");error.errors=errors;throw error}var obj={encrypted:false};var safeContents=null;var data=capture2.content.value[0];switch(asn1.derToOid(capture2.contentType)){case pki.oids.data:if(data.tagClass!==asn1.Class.UNIVERSAL||data.type!==asn1.Type.OCTETSTRING){throw new Error("PKCS#12 SafeContents Data is not an OCTET STRING.")}safeContents=_decodePkcs7Data(data).value;break;case pki.oids.encryptedData:safeContents=_decryptSafeContents(data,password);obj.encrypted=true;break;default:var error=new Error("Unsupported PKCS#12 contentType.");error.contentType=asn1.derToOid(capture2.contentType);throw error}obj.safeBags=_decodeSafeContents(safeContents,strict,password);pfx.safeContents.push(obj)}}function _decryptSafeContents(data,password){var capture2={};var errors=[];if(!asn1.validate(data,forge2.pkcs7.asn1.encryptedDataValidator,capture2,errors)){var error=new Error("Cannot read EncryptedContentInfo.");error.errors=errors;throw error}var oid=asn1.derToOid(capture2.contentType);if(oid!==pki.oids.data){var error=new Error("PKCS#12 EncryptedContentInfo ContentType is not Data.");error.oid=oid;throw error}oid=asn1.derToOid(capture2.encAlgorithm);var cipher=pki.pbe.getCipher(oid,capture2.encParameter,password);var encryptedContentAsn1=_decodePkcs7Data(capture2.encryptedContentAsn1);var encrypted=forge2.util.createBuffer(encryptedContentAsn1.value);cipher.update(encrypted);if(!cipher.finish()){throw new Error("Failed to decrypt PKCS#12 SafeContents.")}return cipher.output.getBytes()}function _decodeSafeContents(safeContents,strict,password){if(!strict&&safeContents.length===0){return[]}safeContents=asn1.fromDer(safeContents,strict);if(safeContents.tagClass!==asn1.Class.UNIVERSAL||safeContents.type!==asn1.Type.SEQUENCE||safeContents.constructed!==true){throw new Error("PKCS#12 SafeContents expected to be a SEQUENCE OF SafeBag.")}var res=[];for(var i=0;i<safeContents.value.length;i++){var safeBag=safeContents.value[i];var capture2={};var errors=[];if(!asn1.validate(safeBag,safeBagValidator,capture2,errors)){var error=new Error("Cannot read SafeBag.");error.errors=errors;throw error}var bag={type:asn1.derToOid(capture2.bagId),attributes:_decodeBagAttributes(capture2.bagAttributes)};res.push(bag);var validator,decoder;var bagAsn1=capture2.bagValue.value[0];switch(bag.type){case pki.oids.pkcs8ShroudedKeyBag:bagAsn1=pki.decryptPrivateKeyInfo(bagAsn1,password);if(bagAsn1===null){throw new Error("Unable to decrypt PKCS#8 ShroudedKeyBag, wrong password?")}case pki.oids.keyBag:try{bag.key=pki.privateKeyFromAsn1(bagAsn1)}catch(e){bag.key=null;bag.asn1=bagAsn1}continue;case pki.oids.certBag:validator=certBagValidator;decoder=function(){if(asn1.derToOid(capture2.certId)!==pki.oids.x509Certificate){var error2=new Error("Unsupported certificate type, only X.509 supported.");error2.oid=asn1.derToOid(capture2.certId);throw error2}var certAsn1=asn1.fromDer(capture2.cert,strict);try{bag.cert=pki.certificateFromAsn1(certAsn1,true)}catch(e){bag.cert=null;bag.asn1=certAsn1}};break;default:var error=new Error("Unsupported PKCS#12 SafeBag type.");error.oid=bag.type;throw error}if(validator!==void 0&&!asn1.validate(bagAsn1,validator,capture2,errors)){var error=new Error("Cannot read PKCS#12 "+validator.name);error.errors=errors;throw error}decoder()}return res}function _decodeBagAttributes(attributes){var decodedAttrs={};if(attributes!==void 0){for(var i=0;i<attributes.length;++i){var capture2={};var errors=[];if(!asn1.validate(attributes[i],attributeValidator,capture2,errors)){var error=new Error("Cannot read PKCS#12 BagAttribute.");error.errors=errors;throw error}var oid=asn1.derToOid(capture2.oid);if(pki.oids[oid]===void 0){continue}decodedAttrs[pki.oids[oid]]=[];for(var j2=0;j2<capture2.values.length;++j2){decodedAttrs[pki.oids[oid]].push(capture2.values[j2].value)}}}return decodedAttrs}p12.toPkcs12Asn1=function(key,cert,password,options){options=options||{};options.saltSize=options.saltSize||8;options.count=options.count||2048;options.algorithm=options.algorithm||options.encAlgorithm||"aes128";if(!("useMac"in options)){options.useMac=true}if(!("localKeyId"in options)){options.localKeyId=null}if(!("generateLocalKeyId"in options)){options.generateLocalKeyId=true}var localKeyId=options.localKeyId;var bagAttrs;if(localKeyId!==null){localKeyId=forge2.util.hexToBytes(localKeyId)}else if(options.generateLocalKeyId){if(cert){var pairedCert=forge2.util.isArray(cert)?cert[0]:cert;if(typeof pairedCert==="string"){pairedCert=pki.certificateFromPem(pairedCert)}var sha1=forge2.md.sha1.create();sha1.update(asn1.toDer(pki.certificateToAsn1(pairedCert)).getBytes());localKeyId=sha1.digest().getBytes()}else{localKeyId=forge2.random.getBytes(20)}}var attrs=[];if(localKeyId!==null){attrs.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids.localKeyId).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SET,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,localKeyId)])]))}if("friendlyName"in options){attrs.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids.friendlyName).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SET,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.BMPSTRING,false,options.friendlyName)])]))}if(attrs.length>0){bagAttrs=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SET,true,attrs)}var contents=[];var chain=[];if(cert!==null){if(forge2.util.isArray(cert)){chain=cert}else{chain=[cert]}}var certSafeBags=[];for(var i=0;i<chain.length;++i){cert=chain[i];if(typeof cert==="string"){cert=pki.certificateFromPem(cert)}var certBagAttrs=i===0?bagAttrs:void 0;var certAsn1=pki.certificateToAsn1(cert);var certSafeBag=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids.certBag).getBytes()),asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids.x509Certificate).getBytes()),asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,asn1.toDer(certAsn1).getBytes())])])]),certBagAttrs]);certSafeBags.push(certSafeBag)}if(certSafeBags.length>0){var certSafeContents=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,certSafeBags);var certCI=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids.data).getBytes()),asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,asn1.toDer(certSafeContents).getBytes())])]);contents.push(certCI)}var keyBag=null;if(key!==null){var pkAsn1=pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(key));if(password===null){keyBag=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids.keyBag).getBytes()),asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[pkAsn1]),bagAttrs])}else{keyBag=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids.pkcs8ShroudedKeyBag).getBytes()),asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[pki.encryptPrivateKeyInfo(pkAsn1,password,options)]),bagAttrs])}var keySafeContents=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[keyBag]);var keyCI=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids.data).getBytes()),asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,asn1.toDer(keySafeContents).getBytes())])]);contents.push(keyCI)}var safe=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,contents);var macData;if(options.useMac){var sha1=forge2.md.sha1.create();var macSalt=new forge2.util.ByteBuffer(forge2.random.getBytes(options.saltSize));var count=options.count;var key=p12.generateKey(password,macSalt,3,count,20);var mac=forge2.hmac.create();mac.start(sha1,key);mac.update(asn1.toDer(safe).getBytes());var macValue=mac.getMac();macData=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids.sha1).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.NULL,false,"")]),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,macValue.getBytes())]),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,macSalt.getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,asn1.integerToDer(count).getBytes())])}return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,asn1.integerToDer(3).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(pki.oids.data).getBytes()),asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,asn1.toDer(safe).getBytes())])]),macData])};p12.generateKey=forge2.pbe.generatePkcs12Key}});var require_pki=__commonJS({"node_modules/node-forge/lib/pki.js"(exports,module){"use strict";var forge2=require_forge();require_asn1();require_oids();require_pbe();require_pem();require_pbkdf2();require_pkcs12();require_pss();require_rsa();require_util7();require_x509();var asn1=forge2.asn1;var pki=module.exports=forge2.pki=forge2.pki||{};pki.pemToDer=function(pem){var msg=forge2.pem.decode(pem)[0];if(msg.procType&&msg.procType.type==="ENCRYPTED"){throw new Error("Could not convert PEM to DER; PEM is encrypted.")}return forge2.util.createBuffer(msg.body)};pki.privateKeyFromPem=function(pem){var msg=forge2.pem.decode(pem)[0];if(msg.type!=="PRIVATE KEY"&&msg.type!=="RSA PRIVATE KEY"){var error=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY".');error.headerType=msg.type;throw error}if(msg.procType&&msg.procType.type==="ENCRYPTED"){throw new Error("Could not convert private key from PEM; PEM is encrypted.")}var obj=asn1.fromDer(msg.body);return pki.privateKeyFromAsn1(obj)};pki.privateKeyToPem=function(key,maxline){var msg={type:"RSA PRIVATE KEY",body:asn1.toDer(pki.privateKeyToAsn1(key)).getBytes()};return forge2.pem.encode(msg,{maxline})};pki.privateKeyInfoToPem=function(pki2,maxline){var msg={type:"PRIVATE KEY",body:asn1.toDer(pki2).getBytes()};return forge2.pem.encode(msg,{maxline})}}});var require_tls=__commonJS({"node_modules/node-forge/lib/tls.js"(exports,module){"use strict";var forge2=require_forge();require_asn1();require_hmac();require_md5();require_pem();require_pki();require_random();require_sha1();require_util7();var prf_TLS1=function(secret,label,seed,length){var rval=forge2.util.createBuffer();var idx=secret.length>>1;var slen=idx+(secret.length&1);var s1=secret.substr(0,slen);var s22=secret.substr(idx,slen);var ai2=forge2.util.createBuffer();var hmac=forge2.hmac.create();seed=label+seed;var md5itr=Math.ceil(length/16);var sha1itr=Math.ceil(length/20);hmac.start("MD5",s1);var md5bytes=forge2.util.createBuffer();ai2.putBytes(seed);for(var i=0;i<md5itr;++i){hmac.start(null,null);hmac.update(ai2.getBytes());ai2.putBuffer(hmac.digest());hmac.start(null,null);hmac.update(ai2.bytes()+seed);md5bytes.putBuffer(hmac.digest())}hmac.start("SHA1",s22);var sha1bytes=forge2.util.createBuffer();ai2.clear();ai2.putBytes(seed);for(var i=0;i<sha1itr;++i){hmac.start(null,null);hmac.update(ai2.getBytes());ai2.putBuffer(hmac.digest());hmac.start(null,null);hmac.update(ai2.bytes()+seed);sha1bytes.putBuffer(hmac.digest())}rval.putBytes(forge2.util.xorBytes(md5bytes.getBytes(),sha1bytes.getBytes(),length));return rval};var hmac_sha1=function(key2,seqNum,record){var hmac=forge2.hmac.create();hmac.start("SHA1",key2);var b2=forge2.util.createBuffer();b2.putInt32(seqNum[0]);b2.putInt32(seqNum[1]);b2.putByte(record.type);b2.putByte(record.version.major);b2.putByte(record.version.minor);b2.putInt16(record.length);b2.putBytes(record.fragment.bytes());hmac.update(b2.getBytes());return hmac.digest().getBytes()};var deflate=function(c,record,s3){var rval=false;try{var bytes=c.deflate(record.fragment.getBytes());record.fragment=forge2.util.createBuffer(bytes);record.length=bytes.length;rval=true}catch(ex){}return rval};var inflate=function(c,record,s3){var rval=false;try{var bytes=c.inflate(record.fragment.getBytes());record.fragment=forge2.util.createBuffer(bytes);record.length=bytes.length;rval=true}catch(ex){}return rval};var readVector=function(b2,lenBytes){var len=0;switch(lenBytes){case 1:len=b2.getByte();break;case 2:len=b2.getInt16();break;case 3:len=b2.getInt24();break;case 4:len=b2.getInt32();break}return forge2.util.createBuffer(b2.getBytes(len))};var writeVector=function(b2,lenBytes,v2){b2.putInt(v2.length(),lenBytes<<3);b2.putBuffer(v2)};var tls5={};tls5.Versions={TLS_1_0:{major:3,minor:1},TLS_1_1:{major:3,minor:2},TLS_1_2:{major:3,minor:3}};tls5.SupportedVersions=[tls5.Versions.TLS_1_1,tls5.Versions.TLS_1_0];tls5.Version=tls5.SupportedVersions[0];tls5.MaxFragment=16384-1024;tls5.ConnectionEnd={server:0,client:1};tls5.PRFAlgorithm={tls_prf_sha256:0};tls5.BulkCipherAlgorithm={none:null,rc4:0,des3:1,aes:2};tls5.CipherType={stream:0,block:1,aead:2};tls5.MACAlgorithm={none:null,hmac_md5:0,hmac_sha1:1,hmac_sha256:2,hmac_sha384:3,hmac_sha512:4};tls5.CompressionMethod={none:0,deflate:1};tls5.ContentType={change_cipher_spec:20,alert:21,handshake:22,application_data:23,heartbeat:24};tls5.HandshakeType={hello_request:0,client_hello:1,server_hello:2,certificate:11,server_key_exchange:12,certificate_request:13,server_hello_done:14,certificate_verify:15,client_key_exchange:16,finished:20};tls5.Alert={};tls5.Alert.Level={warning:1,fatal:2};tls5.Alert.Description={close_notify:0,unexpected_message:10,bad_record_mac:20,decryption_failed:21,record_overflow:22,decompression_failure:30,handshake_failure:40,bad_certificate:42,unsupported_certificate:43,certificate_revoked:44,certificate_expired:45,certificate_unknown:46,illegal_parameter:47,unknown_ca:48,access_denied:49,decode_error:50,decrypt_error:51,export_restriction:60,protocol_version:70,insufficient_security:71,internal_error:80,user_canceled:90,no_renegotiation:100};tls5.HeartbeatMessageType={heartbeat_request:1,heartbeat_response:2};tls5.CipherSuites={};tls5.getCipherSuite=function(twoBytes){var rval=null;for(var key2 in tls5.CipherSuites){var cs2=tls5.CipherSuites[key2];if(cs2.id[0]===twoBytes.charCodeAt(0)&&cs2.id[1]===twoBytes.charCodeAt(1)){rval=cs2;break}}return rval};tls5.handleUnexpected=function(c,record){var ignore=!c.open&&c.entity===tls5.ConnectionEnd.client;if(!ignore){c.error(c,{message:"Unexpected message. Received TLS record out of order.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.unexpected_message}})}};tls5.handleHelloRequest=function(c,record,length){if(!c.handshaking&&c.handshakes>0){tls5.queue(c,tls5.createAlert(c,{level:tls5.Alert.Level.warning,description:tls5.Alert.Description.no_renegotiation}));tls5.flush(c)}c.process()};tls5.parseHelloMessage=function(c,record,length){var msg=null;var client=c.entity===tls5.ConnectionEnd.client;if(length<38){c.error(c,{message:client?"Invalid ServerHello message. Message too short.":"Invalid ClientHello message. Message too short.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.illegal_parameter}})}else{var b2=record.fragment;var remaining=b2.length();msg={version:{major:b2.getByte(),minor:b2.getByte()},random:forge2.util.createBuffer(b2.getBytes(32)),session_id:readVector(b2,1),extensions:[]};if(client){msg.cipher_suite=b2.getBytes(2);msg.compression_method=b2.getByte()}else{msg.cipher_suites=readVector(b2,2);msg.compression_methods=readVector(b2,1)}remaining=length-(remaining-b2.length());if(remaining>0){var exts=readVector(b2,2);while(exts.length()>0){msg.extensions.push({type:[exts.getByte(),exts.getByte()],data:readVector(exts,2)})}if(!client){for(var i=0;i<msg.extensions.length;++i){var ext=msg.extensions[i];if(ext.type[0]===0&&ext.type[1]===0){var snl=readVector(ext.data,2);while(snl.length()>0){var snType=snl.getByte();if(snType!==0){break}c.session.extensions.server_name.serverNameList.push(readVector(snl,2).getBytes())}}}}}if(c.session.version){if(msg.version.major!==c.session.version.major||msg.version.minor!==c.session.version.minor){return c.error(c,{message:"TLS version change is disallowed during renegotiation.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.protocol_version}})}}if(client){c.session.cipherSuite=tls5.getCipherSuite(msg.cipher_suite)}else{var tmp=forge2.util.createBuffer(msg.cipher_suites.bytes());while(tmp.length()>0){c.session.cipherSuite=tls5.getCipherSuite(tmp.getBytes(2));if(c.session.cipherSuite!==null){break}}}if(c.session.cipherSuite===null){return c.error(c,{message:"No cipher suites in common.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.handshake_failure},cipherSuite:forge2.util.bytesToHex(msg.cipher_suite)})}if(client){c.session.compressionMethod=msg.compression_method}else{c.session.compressionMethod=tls5.CompressionMethod.none}}return msg};tls5.createSecurityParameters=function(c,msg){var client=c.entity===tls5.ConnectionEnd.client;var msgRandom=msg.random.bytes();var cRandom=client?c.session.sp.client_random:msgRandom;var sRandom=client?msgRandom:tls5.createRandom().getBytes();c.session.sp={entity:c.entity,prf_algorithm:tls5.PRFAlgorithm.tls_prf_sha256,bulk_cipher_algorithm:null,cipher_type:null,enc_key_length:null,block_length:null,fixed_iv_length:null,record_iv_length:null,mac_algorithm:null,mac_length:null,mac_key_length:null,compression_algorithm:c.session.compressionMethod,pre_master_secret:null,master_secret:null,client_random:cRandom,server_random:sRandom}};tls5.handleServerHello=function(c,record,length){var msg=tls5.parseHelloMessage(c,record,length);if(c.fail){return}if(msg.version.minor<=c.version.minor){c.version.minor=msg.version.minor}else{return c.error(c,{message:"Incompatible TLS version.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.protocol_version}})}c.session.version=c.version;var sessionId=msg.session_id.bytes();if(sessionId.length>0&&sessionId===c.session.id){c.expect=SCC;c.session.resuming=true;c.session.sp.server_random=msg.random.bytes()}else{c.expect=SCE;c.session.resuming=false;tls5.createSecurityParameters(c,msg)}c.session.id=sessionId;c.process()};tls5.handleClientHello=function(c,record,length){var msg=tls5.parseHelloMessage(c,record,length);if(c.fail){return}var sessionId=msg.session_id.bytes();var session=null;if(c.sessionCache){session=c.sessionCache.getSession(sessionId);if(session===null){sessionId=""}else if(session.version.major!==msg.version.major||session.version.minor>msg.version.minor){session=null;sessionId=""}}if(sessionId.length===0){sessionId=forge2.random.getBytes(32)}c.session.id=sessionId;c.session.clientHelloVersion=msg.version;c.session.sp={};if(session){c.version=c.session.version=session.version;c.session.sp=session.sp}else{var version;for(var i=1;i<tls5.SupportedVersions.length;++i){version=tls5.SupportedVersions[i];if(version.minor<=msg.version.minor){break}}c.version={major:version.major,minor:version.minor};c.session.version=c.version}if(session!==null){c.expect=CCC;c.session.resuming=true;c.session.sp.client_random=msg.random.bytes()}else{c.expect=c.verifyClient!==false?CCE:CKE;c.session.resuming=false;tls5.createSecurityParameters(c,msg)}c.open=true;tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.handshake,data:tls5.createServerHello(c)}));if(c.session.resuming){tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.change_cipher_spec,data:tls5.createChangeCipherSpec()}));c.state.pending=tls5.createConnectionState(c);c.state.current.write=c.state.pending.write;tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.handshake,data:tls5.createFinished(c)}))}else{tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.handshake,data:tls5.createCertificate(c)}));if(!c.fail){tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.handshake,data:tls5.createServerKeyExchange(c)}));if(c.verifyClient!==false){tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.handshake,data:tls5.createCertificateRequest(c)}))}tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.handshake,data:tls5.createServerHelloDone(c)}))}}tls5.flush(c);c.process()};tls5.handleCertificate=function(c,record,length){if(length<3){return c.error(c,{message:"Invalid Certificate message. Message too short.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.illegal_parameter}})}var b2=record.fragment;var msg={certificate_list:readVector(b2,3)};var cert,asn1;var certs=[];try{while(msg.certificate_list.length()>0){cert=readVector(msg.certificate_list,3);asn1=forge2.asn1.fromDer(cert);cert=forge2.pki.certificateFromAsn1(asn1,true);certs.push(cert)}}catch(ex){return c.error(c,{message:"Could not parse certificate list.",cause:ex,send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.bad_certificate}})}var client=c.entity===tls5.ConnectionEnd.client;if((client||c.verifyClient===true)&&certs.length===0){c.error(c,{message:client?"No server certificate provided.":"No client certificate provided.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.illegal_parameter}})}else if(certs.length===0){c.expect=client?SKE:CKE}else{if(client){c.session.serverCertificate=certs[0]}else{c.session.clientCertificate=certs[0]}if(tls5.verifyCertificateChain(c,certs)){c.expect=client?SKE:CKE}}c.process()};tls5.handleServerKeyExchange=function(c,record,length){if(length>0){return c.error(c,{message:"Invalid key parameters. Only RSA is supported.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.unsupported_certificate}})}c.expect=SCR;c.process()};tls5.handleClientKeyExchange=function(c,record,length){if(length<48){return c.error(c,{message:"Invalid key parameters. Only RSA is supported.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.unsupported_certificate}})}var b2=record.fragment;var msg={enc_pre_master_secret:readVector(b2,2).getBytes()};var privateKey=null;if(c.getPrivateKey){try{privateKey=c.getPrivateKey(c,c.session.serverCertificate);privateKey=forge2.pki.privateKeyFromPem(privateKey)}catch(ex){c.error(c,{message:"Could not get private key.",cause:ex,send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.internal_error}})}}if(privateKey===null){return c.error(c,{message:"No private key set.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.internal_error}})}try{var sp=c.session.sp;sp.pre_master_secret=privateKey.decrypt(msg.enc_pre_master_secret);var version=c.session.clientHelloVersion;if(version.major!==sp.pre_master_secret.charCodeAt(0)||version.minor!==sp.pre_master_secret.charCodeAt(1)){throw new Error("TLS version rollback attack detected.")}}catch(ex){sp.pre_master_secret=forge2.random.getBytes(48)}c.expect=CCC;if(c.session.clientCertificate!==null){c.expect=CCV}c.process()};tls5.handleCertificateRequest=function(c,record,length){if(length<3){return c.error(c,{message:"Invalid CertificateRequest. Message too short.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.illegal_parameter}})}var b2=record.fragment;var msg={certificate_types:readVector(b2,1),certificate_authorities:readVector(b2,2)};c.session.certificateRequest=msg;c.expect=SHD;c.process()};tls5.handleCertificateVerify=function(c,record,length){if(length<2){return c.error(c,{message:"Invalid CertificateVerify. Message too short.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.illegal_parameter}})}var b2=record.fragment;b2.read-=4;var msgBytes=b2.bytes();b2.read+=4;var msg={signature:readVector(b2,2).getBytes()};var verify=forge2.util.createBuffer();verify.putBuffer(c.session.md5.digest());verify.putBuffer(c.session.sha1.digest());verify=verify.getBytes();try{var cert=c.session.clientCertificate;if(!cert.publicKey.verify(verify,msg.signature,"NONE")){throw new Error("CertificateVerify signature does not match.")}c.session.md5.update(msgBytes);c.session.sha1.update(msgBytes)}catch(ex){return c.error(c,{message:"Bad signature in CertificateVerify.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.handshake_failure}})}c.expect=CCC;c.process()};tls5.handleServerHelloDone=function(c,record,length){if(length>0){return c.error(c,{message:"Invalid ServerHelloDone message. Invalid length.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.record_overflow}})}if(c.serverCertificate===null){var error={message:"No server certificate provided. Not enough security.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.insufficient_security}};var depth=0;var ret=c.verify(c,error.alert.description,depth,[]);if(ret!==true){if(ret||ret===0){if(typeof ret==="object"&&!forge2.util.isArray(ret)){if(ret.message){error.message=ret.message}if(ret.alert){error.alert.description=ret.alert}}else if(typeof ret==="number"){error.alert.description=ret}}return c.error(c,error)}}if(c.session.certificateRequest!==null){record=tls5.createRecord(c,{type:tls5.ContentType.handshake,data:tls5.createCertificate(c)});tls5.queue(c,record)}record=tls5.createRecord(c,{type:tls5.ContentType.handshake,data:tls5.createClientKeyExchange(c)});tls5.queue(c,record);c.expect=SER;var callback=function(c2,signature){if(c2.session.certificateRequest!==null&&c2.session.clientCertificate!==null){tls5.queue(c2,tls5.createRecord(c2,{type:tls5.ContentType.handshake,data:tls5.createCertificateVerify(c2,signature)}))}tls5.queue(c2,tls5.createRecord(c2,{type:tls5.ContentType.change_cipher_spec,data:tls5.createChangeCipherSpec()}));c2.state.pending=tls5.createConnectionState(c2);c2.state.current.write=c2.state.pending.write;tls5.queue(c2,tls5.createRecord(c2,{type:tls5.ContentType.handshake,data:tls5.createFinished(c2)}));c2.expect=SCC;tls5.flush(c2);c2.process()};if(c.session.certificateRequest===null||c.session.clientCertificate===null){return callback(c,null)}tls5.getClientSignature(c,callback)};tls5.handleChangeCipherSpec=function(c,record){if(record.fragment.getByte()!==1){return c.error(c,{message:"Invalid ChangeCipherSpec message received.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.illegal_parameter}})}var client=c.entity===tls5.ConnectionEnd.client;if(c.session.resuming&&client||!c.session.resuming&&!client){c.state.pending=tls5.createConnectionState(c)}c.state.current.read=c.state.pending.read;if(!c.session.resuming&&client||c.session.resuming&&!client){c.state.pending=null}c.expect=client?SFI:CFI;c.process()};tls5.handleFinished=function(c,record,length){var b2=record.fragment;b2.read-=4;var msgBytes=b2.bytes();b2.read+=4;var vd=record.fragment.getBytes();b2=forge2.util.createBuffer();b2.putBuffer(c.session.md5.digest());b2.putBuffer(c.session.sha1.digest());var client=c.entity===tls5.ConnectionEnd.client;var label=client?"server finished":"client finished";var sp=c.session.sp;var vdl=12;var prf=prf_TLS1;b2=prf(sp.master_secret,label,b2.getBytes(),vdl);if(b2.getBytes()!==vd){return c.error(c,{message:"Invalid verify_data in Finished message.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.decrypt_error}})}c.session.md5.update(msgBytes);c.session.sha1.update(msgBytes);if(c.session.resuming&&client||!c.session.resuming&&!client){tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.change_cipher_spec,data:tls5.createChangeCipherSpec()}));c.state.current.write=c.state.pending.write;c.state.pending=null;tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.handshake,data:tls5.createFinished(c)}))}c.expect=client?SAD:CAD;c.handshaking=false;++c.handshakes;c.peerCertificate=client?c.session.serverCertificate:c.session.clientCertificate;tls5.flush(c);c.isConnected=true;c.connected(c);c.process()};tls5.handleAlert=function(c,record){var b2=record.fragment;var alert={level:b2.getByte(),description:b2.getByte()};var msg;switch(alert.description){case tls5.Alert.Description.close_notify:msg="Connection closed.";break;case tls5.Alert.Description.unexpected_message:msg="Unexpected message.";break;case tls5.Alert.Description.bad_record_mac:msg="Bad record MAC.";break;case tls5.Alert.Description.decryption_failed:msg="Decryption failed.";break;case tls5.Alert.Description.record_overflow:msg="Record overflow.";break;case tls5.Alert.Description.decompression_failure:msg="Decompression failed.";break;case tls5.Alert.Description.handshake_failure:msg="Handshake failure.";break;case tls5.Alert.Description.bad_certificate:msg="Bad certificate.";break;case tls5.Alert.Description.unsupported_certificate:msg="Unsupported certificate.";break;case tls5.Alert.Description.certificate_revoked:msg="Certificate revoked.";break;case tls5.Alert.Description.certificate_expired:msg="Certificate expired.";break;case tls5.Alert.Description.certificate_unknown:msg="Certificate unknown.";break;case tls5.Alert.Description.illegal_parameter:msg="Illegal parameter.";break;case tls5.Alert.Description.unknown_ca:msg="Unknown certificate authority.";break;case tls5.Alert.Description.access_denied:msg="Access denied.";break;case tls5.Alert.Description.decode_error:msg="Decode error.";break;case tls5.Alert.Description.decrypt_error:msg="Decrypt error.";break;case tls5.Alert.Description.export_restriction:msg="Export restriction.";break;case tls5.Alert.Description.protocol_version:msg="Unsupported protocol version.";break;case tls5.Alert.Description.insufficient_security:msg="Insufficient security.";break;case tls5.Alert.Description.internal_error:msg="Internal error.";break;case tls5.Alert.Description.user_canceled:msg="User canceled.";break;case tls5.Alert.Description.no_renegotiation:msg="Renegotiation not supported.";break;default:msg="Unknown error.";break}if(alert.description===tls5.Alert.Description.close_notify){return c.close()}c.error(c,{message:msg,send:false,origin:c.entity===tls5.ConnectionEnd.client?"server":"client",alert});c.process()};tls5.handleHandshake=function(c,record){var b2=record.fragment;var type=b2.getByte();var length=b2.getInt24();if(length>b2.length()){c.fragmented=record;record.fragment=forge2.util.createBuffer();b2.read-=4;return c.process()}c.fragmented=null;b2.read-=4;var bytes=b2.bytes(length+4);b2.read+=4;if(type in hsTable[c.entity][c.expect]){if(c.entity===tls5.ConnectionEnd.server&&!c.open&&!c.fail){c.handshaking=true;c.session={version:null,extensions:{server_name:{serverNameList:[]}},cipherSuite:null,compressionMethod:null,serverCertificate:null,clientCertificate:null,md5:forge2.md.md5.create(),sha1:forge2.md.sha1.create()}}if(type!==tls5.HandshakeType.hello_request&&type!==tls5.HandshakeType.certificate_verify&&type!==tls5.HandshakeType.finished){c.session.md5.update(bytes);c.session.sha1.update(bytes)}hsTable[c.entity][c.expect][type](c,record,length)}else{tls5.handleUnexpected(c,record)}};tls5.handleApplicationData=function(c,record){c.data.putBuffer(record.fragment);c.dataReady(c);c.process()};tls5.handleHeartbeat=function(c,record){var b2=record.fragment;var type=b2.getByte();var length=b2.getInt16();var payload=b2.getBytes(length);if(type===tls5.HeartbeatMessageType.heartbeat_request){if(c.handshaking||length>payload.length){return c.process()}tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.heartbeat,data:tls5.createHeartbeat(tls5.HeartbeatMessageType.heartbeat_response,payload)}));tls5.flush(c)}else if(type===tls5.HeartbeatMessageType.heartbeat_response){if(payload!==c.expectedHeartbeatPayload){return c.process()}if(c.heartbeatReceived){c.heartbeatReceived(c,forge2.util.createBuffer(payload))}}c.process()};var SHE=0;var SCE=1;var SKE=2;var SCR=3;var SHD=4;var SCC=5;var SFI=6;var SAD=7;var SER=8;var CHE=0;var CCE=1;var CKE=2;var CCV=3;var CCC=4;var CFI=5;var CAD=6;var __=tls5.handleUnexpected;var R0=tls5.handleChangeCipherSpec;var R1=tls5.handleAlert;var R2=tls5.handleHandshake;var R3=tls5.handleApplicationData;var R4=tls5.handleHeartbeat;var ctTable=[];ctTable[tls5.ConnectionEnd.client]=[[__,R1,R2,__,R4],[__,R1,R2,__,R4],[__,R1,R2,__,R4],[__,R1,R2,__,R4],[__,R1,R2,__,R4],[R0,R1,__,__,R4],[__,R1,R2,__,R4],[__,R1,R2,R3,R4],[__,R1,R2,__,R4]];ctTable[tls5.ConnectionEnd.server]=[[__,R1,R2,__,R4],[__,R1,R2,__,R4],[__,R1,R2,__,R4],[__,R1,R2,__,R4],[R0,R1,__,__,R4],[__,R1,R2,__,R4],[__,R1,R2,R3,R4],[__,R1,R2,__,R4]];var H0=tls5.handleHelloRequest;var H1=tls5.handleServerHello;var H2=tls5.handleCertificate;var H3=tls5.handleServerKeyExchange;var H4=tls5.handleCertificateRequest;var H5=tls5.handleServerHelloDone;var H6=tls5.handleFinished;var hsTable=[];hsTable[tls5.ConnectionEnd.client]=[[__,__,H1,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],[H0,__,__,__,__,__,__,__,__,__,__,H2,H3,H4,H5,__,__,__,__,__,__],[H0,__,__,__,__,__,__,__,__,__,__,__,H3,H4,H5,__,__,__,__,__,__],[H0,__,__,__,__,__,__,__,__,__,__,__,__,H4,H5,__,__,__,__,__,__],[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,H5,__,__,__,__,__,__],[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,H6],[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__]];var H7=tls5.handleClientHello;var H8=tls5.handleClientKeyExchange;var H9=tls5.handleCertificateVerify;hsTable[tls5.ConnectionEnd.server]=[[__,H7,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],[__,__,__,__,__,__,__,__,__,__,__,H2,__,__,__,__,__,__,__,__,__],[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,H8,__,__,__,__],[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,H9,__,__,__,__,__],[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,H6],[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__]];tls5.generateKeys=function(c,sp){var prf=prf_TLS1;var random=sp.client_random+sp.server_random;if(!c.session.resuming){sp.master_secret=prf(sp.pre_master_secret,"master secret",random,48).bytes();sp.pre_master_secret=null}random=sp.server_random+sp.client_random;var length=2*sp.mac_key_length+2*sp.enc_key_length;var tls10=c.version.major===tls5.Versions.TLS_1_0.major&&c.version.minor===tls5.Versions.TLS_1_0.minor;if(tls10){length+=2*sp.fixed_iv_length}var km=prf(sp.master_secret,"key expansion",random,length);var rval={client_write_MAC_key:km.getBytes(sp.mac_key_length),server_write_MAC_key:km.getBytes(sp.mac_key_length),client_write_key:km.getBytes(sp.enc_key_length),server_write_key:km.getBytes(sp.enc_key_length)};if(tls10){rval.client_write_IV=km.getBytes(sp.fixed_iv_length);rval.server_write_IV=km.getBytes(sp.fixed_iv_length)}return rval};tls5.createConnectionState=function(c){var client=c.entity===tls5.ConnectionEnd.client;var createMode=function(){var mode={sequenceNumber:[0,0],macKey:null,macLength:0,macFunction:null,cipherState:null,cipherFunction:function(record){return true},compressionState:null,compressFunction:function(record){return true},updateSequenceNumber:function(){if(mode.sequenceNumber[1]===4294967295){mode.sequenceNumber[1]=0;++mode.sequenceNumber[0]}else{++mode.sequenceNumber[1]}}};return mode};var state3={read:createMode(),write:createMode()};state3.read.update=function(c2,record){if(!state3.read.cipherFunction(record,state3.read)){c2.error(c2,{message:"Could not decrypt record or bad MAC.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.bad_record_mac}})}else if(!state3.read.compressFunction(c2,record,state3.read)){c2.error(c2,{message:"Could not decompress record.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.decompression_failure}})}return!c2.fail};state3.write.update=function(c2,record){if(!state3.write.compressFunction(c2,record,state3.write)){c2.error(c2,{message:"Could not compress record.",send:false,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.internal_error}})}else if(!state3.write.cipherFunction(record,state3.write)){c2.error(c2,{message:"Could not encrypt record.",send:false,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.internal_error}})}return!c2.fail};if(c.session){var sp=c.session.sp;c.session.cipherSuite.initSecurityParameters(sp);sp.keys=tls5.generateKeys(c,sp);state3.read.macKey=client?sp.keys.server_write_MAC_key:sp.keys.client_write_MAC_key;state3.write.macKey=client?sp.keys.client_write_MAC_key:sp.keys.server_write_MAC_key;c.session.cipherSuite.initConnectionState(state3,c,sp);switch(sp.compression_algorithm){case tls5.CompressionMethod.none:break;case tls5.CompressionMethod.deflate:state3.read.compressFunction=inflate;state3.write.compressFunction=deflate;break;default:throw new Error("Unsupported compression algorithm.")}}return state3};tls5.createRandom=function(){var d=new Date;var utc=+d+d.getTimezoneOffset()*6e4;var rval=forge2.util.createBuffer();rval.putInt32(utc);rval.putBytes(forge2.random.getBytes(28));return rval};tls5.createRecord=function(c,options){if(!options.data){return null}var record={type:options.type,version:{major:c.version.major,minor:c.version.minor},length:options.data.length(),fragment:options.data};return record};tls5.createAlert=function(c,alert){var b2=forge2.util.createBuffer();b2.putByte(alert.level);b2.putByte(alert.description);return tls5.createRecord(c,{type:tls5.ContentType.alert,data:b2})};tls5.createClientHello=function(c){c.session.clientHelloVersion={major:c.version.major,minor:c.version.minor};var cipherSuites=forge2.util.createBuffer();for(var i=0;i<c.cipherSuites.length;++i){var cs2=c.cipherSuites[i];cipherSuites.putByte(cs2.id[0]);cipherSuites.putByte(cs2.id[1])}var cSuites=cipherSuites.length();var compressionMethods=forge2.util.createBuffer();compressionMethods.putByte(tls5.CompressionMethod.none);var cMethods=compressionMethods.length();var extensions=forge2.util.createBuffer();if(c.virtualHost){var ext=forge2.util.createBuffer();ext.putByte(0);ext.putByte(0);var serverName=forge2.util.createBuffer();serverName.putByte(0);writeVector(serverName,2,forge2.util.createBuffer(c.virtualHost));var snList=forge2.util.createBuffer();writeVector(snList,2,serverName);writeVector(ext,2,snList);extensions.putBuffer(ext)}var extLength=extensions.length();if(extLength>0){extLength+=2}var sessionId=c.session.id;var length=sessionId.length+1+2+4+28+2+cSuites+1+cMethods+extLength;var rval=forge2.util.createBuffer();rval.putByte(tls5.HandshakeType.client_hello);rval.putInt24(length);rval.putByte(c.version.major);rval.putByte(c.version.minor);rval.putBytes(c.session.sp.client_random);writeVector(rval,1,forge2.util.createBuffer(sessionId));writeVector(rval,2,cipherSuites);writeVector(rval,1,compressionMethods);if(extLength>0){writeVector(rval,2,extensions)}return rval};tls5.createServerHello=function(c){var sessionId=c.session.id;var length=sessionId.length+1+2+4+28+2+1;var rval=forge2.util.createBuffer();rval.putByte(tls5.HandshakeType.server_hello);rval.putInt24(length);rval.putByte(c.version.major);rval.putByte(c.version.minor);rval.putBytes(c.session.sp.server_random);writeVector(rval,1,forge2.util.createBuffer(sessionId));rval.putByte(c.session.cipherSuite.id[0]);rval.putByte(c.session.cipherSuite.id[1]);rval.putByte(c.session.compressionMethod);return rval};tls5.createCertificate=function(c){var client=c.entity===tls5.ConnectionEnd.client;var cert=null;if(c.getCertificate){var hint;if(client){hint=c.session.certificateRequest}else{hint=c.session.extensions.server_name.serverNameList}cert=c.getCertificate(c,hint)}var certList=forge2.util.createBuffer();if(cert!==null){try{if(!forge2.util.isArray(cert)){cert=[cert]}var asn1=null;for(var i=0;i<cert.length;++i){var msg=forge2.pem.decode(cert[i])[0];if(msg.type!=="CERTIFICATE"&&msg.type!=="X509 CERTIFICATE"&&msg.type!=="TRUSTED CERTIFICATE"){var error=new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');error.headerType=msg.type;throw error}if(msg.procType&&msg.procType.type==="ENCRYPTED"){throw new Error("Could not convert certificate from PEM; PEM is encrypted.")}var der=forge2.util.createBuffer(msg.body);if(asn1===null){asn1=forge2.asn1.fromDer(der.bytes(),false)}var certBuffer=forge2.util.createBuffer();writeVector(certBuffer,3,der);certList.putBuffer(certBuffer)}cert=forge2.pki.certificateFromAsn1(asn1);if(client){c.session.clientCertificate=cert}else{c.session.serverCertificate=cert}}catch(ex){return c.error(c,{message:"Could not send certificate list.",cause:ex,send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.bad_certificate}})}}var length=3+certList.length();var rval=forge2.util.createBuffer();rval.putByte(tls5.HandshakeType.certificate);rval.putInt24(length);writeVector(rval,3,certList);return rval};tls5.createClientKeyExchange=function(c){var b2=forge2.util.createBuffer();b2.putByte(c.session.clientHelloVersion.major);b2.putByte(c.session.clientHelloVersion.minor);b2.putBytes(forge2.random.getBytes(46));var sp=c.session.sp;sp.pre_master_secret=b2.getBytes();var key2=c.session.serverCertificate.publicKey;b2=key2.encrypt(sp.pre_master_secret);var length=b2.length+2;var rval=forge2.util.createBuffer();rval.putByte(tls5.HandshakeType.client_key_exchange);rval.putInt24(length);rval.putInt16(b2.length);rval.putBytes(b2);return rval};tls5.createServerKeyExchange=function(c){var length=0;var rval=forge2.util.createBuffer();if(length>0){rval.putByte(tls5.HandshakeType.server_key_exchange);rval.putInt24(length)}return rval};tls5.getClientSignature=function(c,callback){var b2=forge2.util.createBuffer();b2.putBuffer(c.session.md5.digest());b2.putBuffer(c.session.sha1.digest());b2=b2.getBytes();c.getSignature=c.getSignature||function(c2,b3,callback2){var privateKey=null;if(c2.getPrivateKey){try{privateKey=c2.getPrivateKey(c2,c2.session.clientCertificate);privateKey=forge2.pki.privateKeyFromPem(privateKey)}catch(ex){c2.error(c2,{message:"Could not get private key.",cause:ex,send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.internal_error}})}}if(privateKey===null){c2.error(c2,{message:"No private key set.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.internal_error}})}else{b3=privateKey.sign(b3,null)}callback2(c2,b3)};c.getSignature(c,b2,callback)};tls5.createCertificateVerify=function(c,signature){var length=signature.length+2;var rval=forge2.util.createBuffer();rval.putByte(tls5.HandshakeType.certificate_verify);rval.putInt24(length);rval.putInt16(signature.length);rval.putBytes(signature);return rval};tls5.createCertificateRequest=function(c){var certTypes=forge2.util.createBuffer();certTypes.putByte(1);var cAs=forge2.util.createBuffer();for(var key2 in c.caStore.certs){var cert=c.caStore.certs[key2];var dn2=forge2.pki.distinguishedNameToAsn1(cert.subject);var byteBuffer=forge2.asn1.toDer(dn2);cAs.putInt16(byteBuffer.length());cAs.putBuffer(byteBuffer)}var length=1+certTypes.length()+2+cAs.length();var rval=forge2.util.createBuffer();rval.putByte(tls5.HandshakeType.certificate_request);rval.putInt24(length);writeVector(rval,1,certTypes);writeVector(rval,2,cAs);return rval};tls5.createServerHelloDone=function(c){var rval=forge2.util.createBuffer();rval.putByte(tls5.HandshakeType.server_hello_done);rval.putInt24(0);return rval};tls5.createChangeCipherSpec=function(){var rval=forge2.util.createBuffer();rval.putByte(1);return rval};tls5.createFinished=function(c){var b2=forge2.util.createBuffer();b2.putBuffer(c.session.md5.digest());b2.putBuffer(c.session.sha1.digest());var client=c.entity===tls5.ConnectionEnd.client;var sp=c.session.sp;var vdl=12;var prf=prf_TLS1;var label=client?"client finished":"server finished";b2=prf(sp.master_secret,label,b2.getBytes(),vdl);var rval=forge2.util.createBuffer();rval.putByte(tls5.HandshakeType.finished);rval.putInt24(b2.length());rval.putBuffer(b2);return rval};tls5.createHeartbeat=function(type,payload,payloadLength){if(typeof payloadLength==="undefined"){payloadLength=payload.length}var rval=forge2.util.createBuffer();rval.putByte(type);rval.putInt16(payloadLength);rval.putBytes(payload);var plaintextLength=rval.length();var paddingLength=Math.max(16,plaintextLength-payloadLength-3);rval.putBytes(forge2.random.getBytes(paddingLength));return rval};tls5.queue=function(c,record){if(!record){return}if(record.fragment.length()===0){if(record.type===tls5.ContentType.handshake||record.type===tls5.ContentType.alert||record.type===tls5.ContentType.change_cipher_spec){return}}if(record.type===tls5.ContentType.handshake){var bytes=record.fragment.bytes();c.session.md5.update(bytes);c.session.sha1.update(bytes);bytes=null}var records;if(record.fragment.length()<=tls5.MaxFragment){records=[record]}else{records=[];var data=record.fragment.bytes();while(data.length>tls5.MaxFragment){records.push(tls5.createRecord(c,{type:record.type,data:forge2.util.createBuffer(data.slice(0,tls5.MaxFragment))}));data=data.slice(tls5.MaxFragment)}if(data.length>0){records.push(tls5.createRecord(c,{type:record.type,data:forge2.util.createBuffer(data)}))}}for(var i=0;i<records.length&&!c.fail;++i){var rec=records[i];var s3=c.state.current.write;if(s3.update(c,rec)){c.records.push(rec)}}};tls5.flush=function(c){for(var i=0;i<c.records.length;++i){var record=c.records[i];c.tlsData.putByte(record.type);c.tlsData.putByte(record.version.major);c.tlsData.putByte(record.version.minor);c.tlsData.putInt16(record.fragment.length());c.tlsData.putBuffer(c.records[i].fragment)}c.records=[];return c.tlsDataReady(c)};var _certErrorToAlertDesc=function(error){switch(error){case true:return true;case forge2.pki.certificateError.bad_certificate:return tls5.Alert.Description.bad_certificate;case forge2.pki.certificateError.unsupported_certificate:return tls5.Alert.Description.unsupported_certificate;case forge2.pki.certificateError.certificate_revoked:return tls5.Alert.Description.certificate_revoked;case forge2.pki.certificateError.certificate_expired:return tls5.Alert.Description.certificate_expired;case forge2.pki.certificateError.certificate_unknown:return tls5.Alert.Description.certificate_unknown;case forge2.pki.certificateError.unknown_ca:return tls5.Alert.Description.unknown_ca;default:return tls5.Alert.Description.bad_certificate}};var _alertDescToCertError=function(desc){switch(desc){case true:return true;case tls5.Alert.Description.bad_certificate:return forge2.pki.certificateError.bad_certificate;case tls5.Alert.Description.unsupported_certificate:return forge2.pki.certificateError.unsupported_certificate;case tls5.Alert.Description.certificate_revoked:return forge2.pki.certificateError.certificate_revoked;case tls5.Alert.Description.certificate_expired:return forge2.pki.certificateError.certificate_expired;case tls5.Alert.Description.certificate_unknown:return forge2.pki.certificateError.certificate_unknown;case tls5.Alert.Description.unknown_ca:return forge2.pki.certificateError.unknown_ca;default:return forge2.pki.certificateError.bad_certificate}};tls5.verifyCertificateChain=function(c,chain){try{var options={};for(var key2 in c.verifyOptions){options[key2]=c.verifyOptions[key2]}options.verify=function(vfd,depth,chain2){var desc=_certErrorToAlertDesc(vfd);var ret=c.verify(c,vfd,depth,chain2);if(ret!==true){if(typeof ret==="object"&&!forge2.util.isArray(ret)){var error=new Error("The application rejected the certificate.");error.send=true;error.alert={level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.bad_certificate};if(ret.message){error.message=ret.message}if(ret.alert){error.alert.description=ret.alert}throw error}if(ret!==vfd){ret=_alertDescToCertError(ret)}}return ret};forge2.pki.verifyCertificateChain(c.caStore,chain,options)}catch(ex){var err2=ex;if(typeof err2!=="object"||forge2.util.isArray(err2)){err2={send:true,alert:{level:tls5.Alert.Level.fatal,description:_certErrorToAlertDesc(ex)}}}if(!("send"in err2)){err2.send=true}if(!("alert"in err2)){err2.alert={level:tls5.Alert.Level.fatal,description:_certErrorToAlertDesc(err2.error)}}c.error(c,err2)}return!c.fail};tls5.createSessionCache=function(cache2,capacity){var rval=null;if(cache2&&cache2.getSession&&cache2.setSession&&cache2.order){rval=cache2}else{rval={};rval.cache=cache2||{};rval.capacity=Math.max(capacity||100,1);rval.order=[];for(var key2 in cache2){if(rval.order.length<=capacity){rval.order.push(key2)}else{delete cache2[key2]}}rval.getSession=function(sessionId){var session=null;var key3=null;if(sessionId){key3=forge2.util.bytesToHex(sessionId)}else if(rval.order.length>0){key3=rval.order[0]}if(key3!==null&&key3 in rval.cache){session=rval.cache[key3];delete rval.cache[key3];for(var i in rval.order){if(rval.order[i]===key3){rval.order.splice(i,1);break}}}return session};rval.setSession=function(sessionId,session){if(rval.order.length===rval.capacity){var key3=rval.order.shift();delete rval.cache[key3]}var key3=forge2.util.bytesToHex(sessionId);rval.order.push(key3);rval.cache[key3]=session}}return rval};tls5.createConnection=function(options){var caStore=null;if(options.caStore){if(forge2.util.isArray(options.caStore)){caStore=forge2.pki.createCaStore(options.caStore)}else{caStore=options.caStore}}else{caStore=forge2.pki.createCaStore()}var cipherSuites=options.cipherSuites||null;if(cipherSuites===null){cipherSuites=[];for(var key2 in tls5.CipherSuites){cipherSuites.push(tls5.CipherSuites[key2])}}var entity=options.server||false?tls5.ConnectionEnd.server:tls5.ConnectionEnd.client;var sessionCache=options.sessionCache?tls5.createSessionCache(options.sessionCache):null;var c={version:{major:tls5.Version.major,minor:tls5.Version.minor},entity,sessionId:options.sessionId,caStore,sessionCache,cipherSuites,connected:options.connected,virtualHost:options.virtualHost||null,verifyClient:options.verifyClient||false,verify:options.verify||function(cn2,vfd,dpth,cts){return vfd},verifyOptions:options.verifyOptions||{},getCertificate:options.getCertificate||null,getPrivateKey:options.getPrivateKey||null,getSignature:options.getSignature||null,input:forge2.util.createBuffer(),tlsData:forge2.util.createBuffer(),data:forge2.util.createBuffer(),tlsDataReady:options.tlsDataReady,dataReady:options.dataReady,heartbeatReceived:options.heartbeatReceived,closed:options.closed,error:function(c2,ex){ex.origin=ex.origin||(c2.entity===tls5.ConnectionEnd.client?"client":"server");if(ex.send){tls5.queue(c2,tls5.createAlert(c2,ex.alert));tls5.flush(c2)}var fatal=ex.fatal!==false;if(fatal){c2.fail=true}options.error(c2,ex);if(fatal){c2.close(false)}},deflate:options.deflate||null,inflate:options.inflate||null};c.reset=function(clearFail){c.version={major:tls5.Version.major,minor:tls5.Version.minor};c.record=null;c.session=null;c.peerCertificate=null;c.state={pending:null,current:null};c.expect=c.entity===tls5.ConnectionEnd.client?SHE:CHE;c.fragmented=null;c.records=[];c.open=false;c.handshakes=0;c.handshaking=false;c.isConnected=false;c.fail=!(clearFail||typeof clearFail==="undefined");c.input.clear();c.tlsData.clear();c.data.clear();c.state.current=tls5.createConnectionState(c)};c.reset();var _update=function(c2,record){var aligned=record.type-tls5.ContentType.change_cipher_spec;var handlers=ctTable[c2.entity][c2.expect];if(aligned in handlers){handlers[aligned](c2,record)}else{tls5.handleUnexpected(c2,record)}};var _readRecordHeader=function(c2){var rval=0;var b2=c2.input;var len=b2.length();if(len<5){rval=5-len}else{c2.record={type:b2.getByte(),version:{major:b2.getByte(),minor:b2.getByte()},length:b2.getInt16(),fragment:forge2.util.createBuffer(),ready:false};var compatibleVersion=c2.record.version.major===c2.version.major;if(compatibleVersion&&c2.session&&c2.session.version){compatibleVersion=c2.record.version.minor===c2.version.minor}if(!compatibleVersion){c2.error(c2,{message:"Incompatible TLS version.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.protocol_version}})}}return rval};var _readRecord=function(c2){var rval=0;var b2=c2.input;var len=b2.length();if(len<c2.record.length){rval=c2.record.length-len}else{c2.record.fragment.putBytes(b2.getBytes(c2.record.length));b2.compact();var s3=c2.state.current.read;if(s3.update(c2,c2.record)){if(c2.fragmented!==null){if(c2.fragmented.type===c2.record.type){c2.fragmented.fragment.putBuffer(c2.record.fragment);c2.record=c2.fragmented}else{c2.error(c2,{message:"Invalid fragmented record.",send:true,alert:{level:tls5.Alert.Level.fatal,description:tls5.Alert.Description.unexpected_message}})}}c2.record.ready=true}}return rval};c.handshake=function(sessionId){if(c.entity!==tls5.ConnectionEnd.client){c.error(c,{message:"Cannot initiate handshake as a server.",fatal:false})}else if(c.handshaking){c.error(c,{message:"Handshake already in progress.",fatal:false})}else{if(c.fail&&!c.open&&c.handshakes===0){c.fail=false}c.handshaking=true;sessionId=sessionId||"";var session=null;if(sessionId.length>0){if(c.sessionCache){session=c.sessionCache.getSession(sessionId)}if(session===null){sessionId=""}}if(sessionId.length===0&&c.sessionCache){session=c.sessionCache.getSession();if(session!==null){sessionId=session.id}}c.session={id:sessionId,version:null,cipherSuite:null,compressionMethod:null,serverCertificate:null,certificateRequest:null,clientCertificate:null,sp:{},md5:forge2.md.md5.create(),sha1:forge2.md.sha1.create()};if(session){c.version=session.version;c.session.sp=session.sp}c.session.sp.client_random=tls5.createRandom().getBytes();c.open=true;tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.handshake,data:tls5.createClientHello(c)}));tls5.flush(c)}};c.process=function(data){var rval=0;if(data){c.input.putBytes(data)}if(!c.fail){if(c.record!==null&&c.record.ready&&c.record.fragment.isEmpty()){c.record=null}if(c.record===null){rval=_readRecordHeader(c)}if(!c.fail&&c.record!==null&&!c.record.ready){rval=_readRecord(c)}if(!c.fail&&c.record!==null&&c.record.ready){_update(c,c.record)}}return rval};c.prepare=function(data){tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.application_data,data:forge2.util.createBuffer(data)}));return tls5.flush(c)};c.prepareHeartbeatRequest=function(payload,payloadLength){if(payload instanceof forge2.util.ByteBuffer){payload=payload.bytes()}if(typeof payloadLength==="undefined"){payloadLength=payload.length}c.expectedHeartbeatPayload=payload;tls5.queue(c,tls5.createRecord(c,{type:tls5.ContentType.heartbeat,data:tls5.createHeartbeat(tls5.HeartbeatMessageType.heartbeat_request,payload,payloadLength)}));return tls5.flush(c)};c.close=function(clearFail){if(!c.fail&&c.sessionCache&&c.session){var session={id:c.session.id,version:c.session.version,sp:c.session.sp};session.sp.keys=null;c.sessionCache.setSession(session.id,session)}if(c.open){c.open=false;c.input.clear();if(c.isConnected||c.handshaking){c.isConnected=c.handshaking=false;tls5.queue(c,tls5.createAlert(c,{level:tls5.Alert.Level.warning,description:tls5.Alert.Description.close_notify}));tls5.flush(c)}c.closed(c)}c.reset(clearFail)};return c};module.exports=forge2.tls=forge2.tls||{};for(key in tls5){if(typeof tls5[key]!=="function"){forge2.tls[key]=tls5[key]}}var key;forge2.tls.prf_tls1=prf_TLS1;forge2.tls.hmac_sha1=hmac_sha1;forge2.tls.createSessionCache=tls5.createSessionCache;forge2.tls.createConnection=tls5.createConnection}});var require_aesCipherSuites=__commonJS({"node_modules/node-forge/lib/aesCipherSuites.js"(exports,module){"use strict";var forge2=require_forge();require_aes();require_tls();var tls5=module.exports=forge2.tls;tls5.CipherSuites["TLS_RSA_WITH_AES_128_CBC_SHA"]={id:[0,47],name:"TLS_RSA_WITH_AES_128_CBC_SHA",initSecurityParameters:function(sp){sp.bulk_cipher_algorithm=tls5.BulkCipherAlgorithm.aes;sp.cipher_type=tls5.CipherType.block;sp.enc_key_length=16;sp.block_length=16;sp.fixed_iv_length=16;sp.record_iv_length=16;sp.mac_algorithm=tls5.MACAlgorithm.hmac_sha1;sp.mac_length=20;sp.mac_key_length=20},initConnectionState};tls5.CipherSuites["TLS_RSA_WITH_AES_256_CBC_SHA"]={id:[0,53],name:"TLS_RSA_WITH_AES_256_CBC_SHA",initSecurityParameters:function(sp){sp.bulk_cipher_algorithm=tls5.BulkCipherAlgorithm.aes;sp.cipher_type=tls5.CipherType.block;sp.enc_key_length=32;sp.block_length=16;sp.fixed_iv_length=16;sp.record_iv_length=16;sp.mac_algorithm=tls5.MACAlgorithm.hmac_sha1;sp.mac_length=20;sp.mac_key_length=20},initConnectionState};function initConnectionState(state3,c,sp){var client=c.entity===forge2.tls.ConnectionEnd.client;state3.read.cipherState={init:false,cipher:forge2.cipher.createDecipher("AES-CBC",client?sp.keys.server_write_key:sp.keys.client_write_key),iv:client?sp.keys.server_write_IV:sp.keys.client_write_IV};state3.write.cipherState={init:false,cipher:forge2.cipher.createCipher("AES-CBC",client?sp.keys.client_write_key:sp.keys.server_write_key),iv:client?sp.keys.client_write_IV:sp.keys.server_write_IV};state3.read.cipherFunction=decrypt_aes_cbc_sha1;state3.write.cipherFunction=encrypt_aes_cbc_sha1;state3.read.macLength=state3.write.macLength=sp.mac_length;state3.read.macFunction=state3.write.macFunction=tls5.hmac_sha1}function encrypt_aes_cbc_sha1(record,s3){var rval=false;var mac=s3.macFunction(s3.macKey,s3.sequenceNumber,record);record.fragment.putBytes(mac);s3.updateSequenceNumber();var iv;if(record.version.minor===tls5.Versions.TLS_1_0.minor){iv=s3.cipherState.init?null:s3.cipherState.iv}else{iv=forge2.random.getBytesSync(16)}s3.cipherState.init=true;var cipher=s3.cipherState.cipher;cipher.start({iv});if(record.version.minor>=tls5.Versions.TLS_1_1.minor){cipher.output.putBytes(iv)}cipher.update(record.fragment);if(cipher.finish(encrypt_aes_cbc_sha1_padding)){record.fragment=cipher.output;record.length=record.fragment.length();rval=true}return rval}function encrypt_aes_cbc_sha1_padding(blockSize,input,decrypt){if(!decrypt){var padding=blockSize-input.length()%blockSize;input.fillWithByte(padding-1,padding)}return true}function decrypt_aes_cbc_sha1_padding(blockSize,output,decrypt){var rval=true;if(decrypt){var len=output.length();var paddingLength=output.last();for(var i=len-1-paddingLength;i<len-1;++i){rval=rval&&output.at(i)==paddingLength}if(rval){output.truncate(paddingLength+1)}}return rval}function decrypt_aes_cbc_sha1(record,s3){var rval=false;var iv;if(record.version.minor===tls5.Versions.TLS_1_0.minor){iv=s3.cipherState.init?null:s3.cipherState.iv}else{iv=record.fragment.getBytes(16)}s3.cipherState.init=true;var cipher=s3.cipherState.cipher;cipher.start({iv});cipher.update(record.fragment);rval=cipher.finish(decrypt_aes_cbc_sha1_padding);var macLen=s3.macLength;var mac=forge2.random.getBytesSync(macLen);var len=cipher.output.length();if(len>=macLen){record.fragment=cipher.output.getBytes(len-macLen);mac=cipher.output.getBytes(macLen)}else{record.fragment=cipher.output.getBytes()}record.fragment=forge2.util.createBuffer(record.fragment);record.length=record.fragment.length();var mac2=s3.macFunction(s3.macKey,s3.sequenceNumber,record);s3.updateSequenceNumber();rval=compareMacs(s3.macKey,mac,mac2)&&rval;return rval}function compareMacs(key,mac1,mac2){var hmac=forge2.hmac.create();hmac.start("SHA1",key);hmac.update(mac1);mac1=hmac.digest().getBytes();hmac.start(null,null);hmac.update(mac2);mac2=hmac.digest().getBytes();return mac1===mac2}}});var require_sha512=__commonJS({"node_modules/node-forge/lib/sha512.js"(exports,module){"use strict";var forge2=require_forge();require_md();require_util7();var sha512=module.exports=forge2.sha512=forge2.sha512||{};forge2.md.sha512=forge2.md.algorithms.sha512=sha512;var sha384=forge2.sha384=forge2.sha512.sha384=forge2.sha512.sha384||{};sha384.create=function(){return sha512.create("SHA-384")};forge2.md.sha384=forge2.md.algorithms.sha384=sha384;forge2.sha512.sha256=forge2.sha512.sha256||{create:function(){return sha512.create("SHA-512/256")}};forge2.md["sha512/256"]=forge2.md.algorithms["sha512/256"]=forge2.sha512.sha256;forge2.sha512.sha224=forge2.sha512.sha224||{create:function(){return sha512.create("SHA-512/224")}};forge2.md["sha512/224"]=forge2.md.algorithms["sha512/224"]=forge2.sha512.sha224;sha512.create=function(algorithm){if(!_initialized){_init()}if(typeof algorithm==="undefined"){algorithm="SHA-512"}if(!(algorithm in _states)){throw new Error("Invalid SHA-512 algorithm: "+algorithm)}var _state=_states[algorithm];var _h=null;var _input=forge2.util.createBuffer();var _w=new Array(80);for(var wi2=0;wi2<80;++wi2){_w[wi2]=new Array(2)}var digestLength=64;switch(algorithm){case"SHA-384":digestLength=48;break;case"SHA-512/256":digestLength=32;break;case"SHA-512/224":digestLength=28;break}var md={algorithm:algorithm.replace("-","").toLowerCase(),blockLength:128,digestLength,messageLength:0,fullMessageLength:null,messageLengthSize:16};md.start=function(){md.messageLength=0;md.fullMessageLength=md.messageLength128=[];var int32s=md.messageLengthSize/4;for(var i=0;i<int32s;++i){md.fullMessageLength.push(0)}_input=forge2.util.createBuffer();_h=new Array(_state.length);for(var i=0;i<_state.length;++i){_h[i]=_state[i].slice(0)}return md};md.start();md.update=function(msg,encoding){if(encoding==="utf8"){msg=forge2.util.encodeUtf8(msg)}var len=msg.length;md.messageLength+=len;len=[len/4294967296>>>0,len>>>0];for(var i=md.fullMessageLength.length-1;i>=0;--i){md.fullMessageLength[i]+=len[1];len[1]=len[0]+(md.fullMessageLength[i]/4294967296>>>0);md.fullMessageLength[i]=md.fullMessageLength[i]>>>0;len[0]=len[1]/4294967296>>>0}_input.putBytes(msg);_update(_h,_w,_input);if(_input.read>2048||_input.length()===0){_input.compact()}return md};md.digest=function(){var finalBlock=forge2.util.createBuffer();finalBlock.putBytes(_input.bytes());var remaining=md.fullMessageLength[md.fullMessageLength.length-1]+md.messageLengthSize;var overflow=remaining&md.blockLength-1;finalBlock.putBytes(_padding.substr(0,md.blockLength-overflow));var next,carry;var bits=md.fullMessageLength[0]*8;for(var i=0;i<md.fullMessageLength.length-1;++i){next=md.fullMessageLength[i+1]*8;carry=next/4294967296>>>0;bits+=carry;finalBlock.putInt32(bits>>>0);bits=next>>>0}finalBlock.putInt32(bits);var h=new Array(_h.length);for(var i=0;i<_h.length;++i){h[i]=_h[i].slice(0)}_update(h,_w,finalBlock);var rval=forge2.util.createBuffer();var hlen;if(algorithm==="SHA-512"){hlen=h.length}else if(algorithm==="SHA-384"){hlen=h.length-2}else{hlen=h.length-4}for(var i=0;i<hlen;++i){rval.putInt32(h[i][0]);if(i!==hlen-1||algorithm!=="SHA-512/224"){rval.putInt32(h[i][1])}}return rval};return md};var _padding=null;var _initialized=false;var _k=null;var _states=null;function _init(){_padding=String.fromCharCode(128);_padding+=forge2.util.fillString(String.fromCharCode(0),128);_k=[[1116352408,3609767458],[1899447441,602891725],[3049323471,3964484399],[3921009573,2173295548],[961987163,4081628472],[1508970993,3053834265],[2453635748,2937671579],[2870763221,3664609560],[3624381080,2734883394],[310598401,1164996542],[607225278,1323610764],[1426881987,3590304994],[1925078388,4068182383],[2162078206,991336113],[2614888103,633803317],[3248222580,3479774868],[3835390401,2666613458],[4022224774,944711139],[264347078,2341262773],[604807628,2007800933],[770255983,1495990901],[1249150122,1856431235],[1555081692,3175218132],[1996064986,2198950837],[2554220882,3999719339],[2821834349,766784016],[2952996808,2566594879],[3210313671,3203337956],[3336571891,1034457026],[3584528711,2466948901],[113926993,3758326383],[338241895,168717936],[666307205,1188179964],[773529912,1546045734],[1294757372,1522805485],[1396182291,2643833823],[1695183700,2343527390],[1986661051,1014477480],[2177026350,1206759142],[2456956037,344077627],[2730485921,1290863460],[2820302411,3158454273],[3259730800,3505952657],[3345764771,106217008],[3516065817,3606008344],[3600352804,1432725776],[4094571909,1467031594],[275423344,851169720],[430227734,3100823752],[506948616,1363258195],[659060556,3750685593],[883997877,3785050280],[958139571,3318307427],[1322822218,3812723403],[1537002063,2003034995],[1747873779,3602036899],[1955562222,1575990012],[2024104815,1125592928],[2227730452,2716904306],[2361852424,442776044],[2428436474,593698344],[2756734187,3733110249],[3204031479,2999351573],[3329325298,3815920427],[3391569614,3928383900],[3515267271,566280711],[3940187606,3454069534],[4118630271,4000239992],[116418474,1914138554],[174292421,2731055270],[289380356,3203993006],[460393269,320620315],[685471733,587496836],[852142971,1086792851],[1017036298,365543100],[1126000580,2618297676],[1288033470,3409855158],[1501505948,4234509866],[1607167915,987167468],[1816402316,1246189591]];_states={};_states["SHA-512"]=[[1779033703,4089235720],[3144134277,2227873595],[1013904242,4271175723],[2773480762,1595750129],[1359893119,2917565137],[2600822924,725511199],[528734635,4215389547],[1541459225,327033209]];_states["SHA-384"]=[[3418070365,3238371032],[1654270250,914150663],[2438529370,812702999],[355462360,4144912697],[1731405415,4290775857],[2394180231,1750603025],[3675008525,1694076839],[1203062813,3204075428]];_states["SHA-512/256"]=[[573645204,4230739756],[2673172387,3360449730],[596883563,1867755857],[2520282905,1497426621],[2519219938,2827943907],[3193839141,1401305490],[721525244,746961066],[246885852,2177182882]];_states["SHA-512/224"]=[[2352822216,424955298],[1944164710,2312950998],[502970286,855612546],[1738396948,1479516111],[258812777,2077511080],[2011393907,79989058],[1067287976,1780299464],[286451373,2446758561]];_initialized=true}function _update(s3,w2,bytes){var t1_hi,t1_lo;var t2_hi,t2_lo;var s0_hi,s0_lo;var s1_hi,s1_lo;var ch_hi,ch_lo;var maj_hi,maj_lo;var a_hi,a_lo;var b_hi,b_lo;var c_hi,c_lo;var d_hi,d_lo;var e_hi,e_lo;var f_hi,f_lo;var g_hi,g_lo;var h_hi,h_lo;var i,hi2,lo2,w22,w7,w15,w16;var len=bytes.length();while(len>=128){for(i=0;i<16;++i){w2[i][0]=bytes.getInt32()>>>0;w2[i][1]=bytes.getInt32()>>>0}for(;i<80;++i){w22=w2[i-2];hi2=w22[0];lo2=w22[1];t1_hi=((hi2>>>19|lo2<<13)^(lo2>>>29|hi2<<3)^hi2>>>6)>>>0;t1_lo=((hi2<<13|lo2>>>19)^(lo2<<3|hi2>>>29)^(hi2<<26|lo2>>>6))>>>0;w15=w2[i-15];hi2=w15[0];lo2=w15[1];t2_hi=((hi2>>>1|lo2<<31)^(hi2>>>8|lo2<<24)^hi2>>>7)>>>0;t2_lo=((hi2<<31|lo2>>>1)^(hi2<<24|lo2>>>8)^(hi2<<25|lo2>>>7))>>>0;w7=w2[i-7];w16=w2[i-16];lo2=t1_lo+w7[1]+t2_lo+w16[1];w2[i][0]=t1_hi+w7[0]+t2_hi+w16[0]+(lo2/4294967296>>>0)>>>0;w2[i][1]=lo2>>>0}a_hi=s3[0][0];a_lo=s3[0][1];b_hi=s3[1][0];b_lo=s3[1][1];c_hi=s3[2][0];c_lo=s3[2][1];d_hi=s3[3][0];d_lo=s3[3][1];e_hi=s3[4][0];e_lo=s3[4][1];f_hi=s3[5][0];f_lo=s3[5][1];g_hi=s3[6][0];g_lo=s3[6][1];h_hi=s3[7][0];h_lo=s3[7][1];for(i=0;i<80;++i){s1_hi=((e_hi>>>14|e_lo<<18)^(e_hi>>>18|e_lo<<14)^(e_lo>>>9|e_hi<<23))>>>0;s1_lo=((e_hi<<18|e_lo>>>14)^(e_hi<<14|e_lo>>>18)^(e_lo<<23|e_hi>>>9))>>>0;ch_hi=(g_hi^e_hi&(f_hi^g_hi))>>>0;ch_lo=(g_lo^e_lo&(f_lo^g_lo))>>>0;s0_hi=((a_hi>>>28|a_lo<<4)^(a_lo>>>2|a_hi<<30)^(a_lo>>>7|a_hi<<25))>>>0;s0_lo=((a_hi<<4|a_lo>>>28)^(a_lo<<30|a_hi>>>2)^(a_lo<<25|a_hi>>>7))>>>0;maj_hi=(a_hi&b_hi|c_hi&(a_hi^b_hi))>>>0;maj_lo=(a_lo&b_lo|c_lo&(a_lo^b_lo))>>>0;lo2=h_lo+s1_lo+ch_lo+_k[i][1]+w2[i][1];t1_hi=h_hi+s1_hi+ch_hi+_k[i][0]+w2[i][0]+(lo2/4294967296>>>0)>>>0;t1_lo=lo2>>>0;lo2=s0_lo+maj_lo;t2_hi=s0_hi+maj_hi+(lo2/4294967296>>>0)>>>0;t2_lo=lo2>>>0;h_hi=g_hi;h_lo=g_lo;g_hi=f_hi;g_lo=f_lo;f_hi=e_hi;f_lo=e_lo;lo2=d_lo+t1_lo;e_hi=d_hi+t1_hi+(lo2/4294967296>>>0)>>>0;e_lo=lo2>>>0;d_hi=c_hi;d_lo=c_lo;c_hi=b_hi;c_lo=b_lo;b_hi=a_hi;b_lo=a_lo;lo2=t1_lo+t2_lo;a_hi=t1_hi+t2_hi+(lo2/4294967296>>>0)>>>0;a_lo=lo2>>>0}lo2=s3[0][1]+a_lo;s3[0][0]=s3[0][0]+a_hi+(lo2/4294967296>>>0)>>>0;s3[0][1]=lo2>>>0;lo2=s3[1][1]+b_lo;s3[1][0]=s3[1][0]+b_hi+(lo2/4294967296>>>0)>>>0;s3[1][1]=lo2>>>0;lo2=s3[2][1]+c_lo;s3[2][0]=s3[2][0]+c_hi+(lo2/4294967296>>>0)>>>0;s3[2][1]=lo2>>>0;lo2=s3[3][1]+d_lo;s3[3][0]=s3[3][0]+d_hi+(lo2/4294967296>>>0)>>>0;s3[3][1]=lo2>>>0;lo2=s3[4][1]+e_lo;s3[4][0]=s3[4][0]+e_hi+(lo2/4294967296>>>0)>>>0;s3[4][1]=lo2>>>0;lo2=s3[5][1]+f_lo;s3[5][0]=s3[5][0]+f_hi+(lo2/4294967296>>>0)>>>0;s3[5][1]=lo2>>>0;lo2=s3[6][1]+g_lo;s3[6][0]=s3[6][0]+g_hi+(lo2/4294967296>>>0)>>>0;s3[6][1]=lo2>>>0;lo2=s3[7][1]+h_lo;s3[7][0]=s3[7][0]+h_hi+(lo2/4294967296>>>0)>>>0;s3[7][1]=lo2>>>0;len-=128}}}});var require_asn1_validator=__commonJS({"node_modules/node-forge/lib/asn1-validator.js"(exports){"use strict";var forge2=require_forge();require_asn1();var asn1=forge2.asn1;exports.privateKeyValidator={name:"PrivateKeyInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"PrivateKeyInfo.version",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.INTEGER,constructed:false,capture:"privateKeyVersion"},{name:"PrivateKeyInfo.privateKeyAlgorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"AlgorithmIdentifier.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"privateKeyOid"}]},{name:"PrivateKeyInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OCTETSTRING,constructed:false,capture:"privateKey"}]};exports.publicKeyValidator={name:"SubjectPublicKeyInfo",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,captureAsn1:"subjectPublicKeyInfo",value:[{name:"SubjectPublicKeyInfo.AlgorithmIdentifier",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.SEQUENCE,constructed:true,value:[{name:"AlgorithmIdentifier.algorithm",tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.OID,constructed:false,capture:"publicKeyOid"}]},{tagClass:asn1.Class.UNIVERSAL,type:asn1.Type.BITSTRING,constructed:false,composed:true,captureBitStringValue:"ed25519PublicKey"}]}}});var require_ed25519=__commonJS({"node_modules/node-forge/lib/ed25519.js"(exports,module){"use strict";var forge2=require_forge();require_jsbn();require_random();require_sha512();require_util7();var asn1Validator=require_asn1_validator();var publicKeyValidator=asn1Validator.publicKeyValidator;var privateKeyValidator=asn1Validator.privateKeyValidator;if(typeof BigInteger==="undefined"){BigInteger=forge2.jsbn.BigInteger}var BigInteger;var ByteBuffer=forge2.util.ByteBuffer;var NativeBuffer=typeof Buffer==="undefined"?Uint8Array:Buffer;forge2.pki=forge2.pki||{};module.exports=forge2.pki.ed25519=forge2.ed25519=forge2.ed25519||{};var ed25519=forge2.ed25519;ed25519.constants={};ed25519.constants.PUBLIC_KEY_BYTE_LENGTH=32;ed25519.constants.PRIVATE_KEY_BYTE_LENGTH=64;ed25519.constants.SEED_BYTE_LENGTH=32;ed25519.constants.SIGN_BYTE_LENGTH=64;ed25519.constants.HASH_BYTE_LENGTH=64;ed25519.generateKeyPair=function(options){options=options||{};var seed=options.seed;if(seed===void 0){seed=forge2.random.getBytesSync(ed25519.constants.SEED_BYTE_LENGTH)}else if(typeof seed==="string"){if(seed.length!==ed25519.constants.SEED_BYTE_LENGTH){throw new TypeError('"seed" must be '+ed25519.constants.SEED_BYTE_LENGTH+" bytes in length.")}}else if(!(seed instanceof Uint8Array)){throw new TypeError('"seed" must be a node.js Buffer, Uint8Array, or a binary string.')}seed=messageToNativeBuffer({message:seed,encoding:"binary"});var pk=new NativeBuffer(ed25519.constants.PUBLIC_KEY_BYTE_LENGTH);var sk=new NativeBuffer(ed25519.constants.PRIVATE_KEY_BYTE_LENGTH);for(var i=0;i<32;++i){sk[i]=seed[i]}crypto_sign_keypair(pk,sk);return{publicKey:pk,privateKey:sk}};ed25519.privateKeyFromAsn1=function(obj){var capture2={};var errors=[];var valid=forge2.asn1.validate(obj,privateKeyValidator,capture2,errors);if(!valid){var error=new Error("Invalid Key.");error.errors=errors;throw error}var oid=forge2.asn1.derToOid(capture2.privateKeyOid);var ed25519Oid=forge2.oids.EdDSA25519;if(oid!==ed25519Oid){throw new Error('Invalid OID "'+oid+'"; OID must be "'+ed25519Oid+'".')}var privateKey=capture2.privateKey;var privateKeyBytes=messageToNativeBuffer({message:forge2.asn1.fromDer(privateKey).value,encoding:"binary"});return{privateKeyBytes}};ed25519.publicKeyFromAsn1=function(obj){var capture2={};var errors=[];var valid=forge2.asn1.validate(obj,publicKeyValidator,capture2,errors);if(!valid){var error=new Error("Invalid Key.");error.errors=errors;throw error}var oid=forge2.asn1.derToOid(capture2.publicKeyOid);var ed25519Oid=forge2.oids.EdDSA25519;if(oid!==ed25519Oid){throw new Error('Invalid OID "'+oid+'"; OID must be "'+ed25519Oid+'".')}var publicKeyBytes=capture2.ed25519PublicKey;if(publicKeyBytes.length!==ed25519.constants.PUBLIC_KEY_BYTE_LENGTH){throw new Error("Key length is invalid.")}return messageToNativeBuffer({message:publicKeyBytes,encoding:"binary"})};ed25519.publicKeyFromPrivateKey=function(options){options=options||{};var privateKey=messageToNativeBuffer({message:options.privateKey,encoding:"binary"});if(privateKey.length!==ed25519.constants.PRIVATE_KEY_BYTE_LENGTH){throw new TypeError('"options.privateKey" must have a byte length of '+ed25519.constants.PRIVATE_KEY_BYTE_LENGTH)}var pk=new NativeBuffer(ed25519.constants.PUBLIC_KEY_BYTE_LENGTH);for(var i=0;i<pk.length;++i){pk[i]=privateKey[32+i]}return pk};ed25519.sign=function(options){options=options||{};var msg=messageToNativeBuffer(options);var privateKey=messageToNativeBuffer({message:options.privateKey,encoding:"binary"});if(privateKey.length===ed25519.constants.SEED_BYTE_LENGTH){var keyPair=ed25519.generateKeyPair({seed:privateKey});privateKey=keyPair.privateKey}else if(privateKey.length!==ed25519.constants.PRIVATE_KEY_BYTE_LENGTH){throw new TypeError('"options.privateKey" must have a byte length of '+ed25519.constants.SEED_BYTE_LENGTH+" or "+ed25519.constants.PRIVATE_KEY_BYTE_LENGTH)}var signedMsg=new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH+msg.length);crypto_sign(signedMsg,msg,msg.length,privateKey);var sig=new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH);for(var i=0;i<sig.length;++i){sig[i]=signedMsg[i]}return sig};ed25519.verify=function(options){options=options||{};var msg=messageToNativeBuffer(options);if(options.signature===void 0){throw new TypeError('"options.signature" must be a node.js Buffer, a Uint8Array, a forge ByteBuffer, or a binary string.')}var sig=messageToNativeBuffer({message:options.signature,encoding:"binary"});if(sig.length!==ed25519.constants.SIGN_BYTE_LENGTH){throw new TypeError('"options.signature" must have a byte length of '+ed25519.constants.SIGN_BYTE_LENGTH)}var publicKey=messageToNativeBuffer({message:options.publicKey,encoding:"binary"});if(publicKey.length!==ed25519.constants.PUBLIC_KEY_BYTE_LENGTH){throw new TypeError('"options.publicKey" must have a byte length of '+ed25519.constants.PUBLIC_KEY_BYTE_LENGTH)}var sm=new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH+msg.length);var m2=new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH+msg.length);var i;for(i=0;i<ed25519.constants.SIGN_BYTE_LENGTH;++i){sm[i]=sig[i]}for(i=0;i<msg.length;++i){sm[i+ed25519.constants.SIGN_BYTE_LENGTH]=msg[i]}return crypto_sign_open(m2,sm,sm.length,publicKey)>=0};function messageToNativeBuffer(options){var message=options.message;if(message instanceof Uint8Array||message instanceof NativeBuffer){return message}var encoding=options.encoding;if(message===void 0){if(options.md){message=options.md.digest().getBytes();encoding="binary"}else{throw new TypeError('"options.message" or "options.md" not specified.')}}if(typeof message==="string"&&!encoding){throw new TypeError('"options.encoding" must be "binary" or "utf8".')}if(typeof message==="string"){if(typeof Buffer!=="undefined"){return Buffer.from(message,encoding)}message=new ByteBuffer(message,encoding)}else if(!(message instanceof ByteBuffer)){throw new TypeError('"options.message" must be a node.js Buffer, a Uint8Array, a forge ByteBuffer, or a string with "options.encoding" specifying its encoding.')}var buffer=new NativeBuffer(message.length());for(var i=0;i<buffer.length;++i){buffer[i]=message.at(i)}return buffer}var gf0=gf();var gf1=gf([1]);var D=gf([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]);var D2=gf([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]);var X2=gf([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]);var Y2=gf([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]);var L2=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);var I2=gf([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function sha512(msg,msgLen){var md=forge2.md.sha512.create();var buffer=new ByteBuffer(msg);md.update(buffer.getBytes(msgLen),"binary");var hash=md.digest().getBytes();if(typeof Buffer!=="undefined"){return Buffer.from(hash,"binary")}var out=new NativeBuffer(ed25519.constants.HASH_BYTE_LENGTH);for(var i=0;i<64;++i){out[i]=hash.charCodeAt(i)}return out}function crypto_sign_keypair(pk,sk){var p2=[gf(),gf(),gf(),gf()];var i;var d=sha512(sk,32);d[0]&=248;d[31]&=127;d[31]|=64;scalarbase(p2,d);pack(pk,p2);for(i=0;i<32;++i){sk[i+32]=pk[i]}return 0}function crypto_sign(sm,m2,n,sk){var i,j2,x=new Float64Array(64);var p2=[gf(),gf(),gf(),gf()];var d=sha512(sk,32);d[0]&=248;d[31]&=127;d[31]|=64;var smlen=n+64;for(i=0;i<n;++i){sm[64+i]=m2[i]}for(i=0;i<32;++i){sm[32+i]=d[32+i]}var r=sha512(sm.subarray(32),n+32);reduce(r);scalarbase(p2,r);pack(sm,p2);for(i=32;i<64;++i){sm[i]=sk[i]}var h=sha512(sm,n+64);reduce(h);for(i=32;i<64;++i){x[i]=0}for(i=0;i<32;++i){x[i]=r[i]}for(i=0;i<32;++i){for(j2=0;j2<32;j2++){x[i+j2]+=h[i]*d[j2]}}modL(sm.subarray(32),x);return smlen}function crypto_sign_open(m2,sm,n,pk){var i,mlen;var t=new NativeBuffer(32);var p2=[gf(),gf(),gf(),gf()],q2=[gf(),gf(),gf(),gf()];mlen=-1;if(n<64){return-1}if(unpackneg(q2,pk)){return-1}if(!_isCanonicalSignatureScalar(sm,32)){return-1}for(i=0;i<n;++i){m2[i]=sm[i]}for(i=0;i<32;++i){m2[i+32]=pk[i]}var h=sha512(m2,n);reduce(h);scalarmult(p2,q2,h);scalarbase(q2,sm.subarray(32));add(p2,q2);pack(t,p2);n-=64;if(crypto_verify_32(sm,0,t,0)){for(i=0;i<n;++i){m2[i]=0}return-1}for(i=0;i<n;++i){m2[i]=sm[i+64]}mlen=n;return mlen}function _isCanonicalSignatureScalar(bytes,offset){var i;for(i=31;i>=0;--i){if(bytes[offset+i]<L2[i]){return true}if(bytes[offset+i]>L2[i]){return false}}return false}function modL(r,x){var carry,i,j2,k2;for(i=63;i>=32;--i){carry=0;for(j2=i-32,k2=i-12;j2<k2;++j2){x[j2]+=carry-16*x[i]*L2[j2-(i-32)];carry=x[j2]+128>>8;x[j2]-=carry*256}x[j2]+=carry;x[i]=0}carry=0;for(j2=0;j2<32;++j2){x[j2]+=carry-(x[31]>>4)*L2[j2];carry=x[j2]>>8;x[j2]&=255}for(j2=0;j2<32;++j2){x[j2]-=carry*L2[j2]}for(i=0;i<32;++i){x[i+1]+=x[i]>>8;r[i]=x[i]&255}}function reduce(r){var x=new Float64Array(64);for(var i=0;i<64;++i){x[i]=r[i];r[i]=0}modL(r,x)}function add(p2,q2){var a=gf(),b2=gf(),c=gf(),d=gf(),e=gf(),f2=gf(),g2=gf(),h=gf(),t=gf();Z2(a,p2[1],p2[0]);Z2(t,q2[1],q2[0]);M2(a,a,t);A2(b2,p2[0],p2[1]);A2(t,q2[0],q2[1]);M2(b2,b2,t);M2(c,p2[3],q2[3]);M2(c,c,D2);M2(d,p2[2],q2[2]);A2(d,d,d);Z2(e,b2,a);Z2(f2,d,c);A2(g2,d,c);A2(h,b2,a);M2(p2[0],e,f2);M2(p2[1],h,g2);M2(p2[2],g2,f2);M2(p2[3],e,h)}function cswap(p2,q2,b2){for(var i=0;i<4;++i){sel25519(p2[i],q2[i],b2)}}function pack(r,p2){var tx=gf(),ty=gf(),zi2=gf();inv25519(zi2,p2[2]);M2(tx,p2[0],zi2);M2(ty,p2[1],zi2);pack25519(r,ty);r[31]^=par25519(tx)<<7}function pack25519(o,n){var i,j2,b2;var m2=gf(),t=gf();for(i=0;i<16;++i){t[i]=n[i]}car25519(t);car25519(t);car25519(t);for(j2=0;j2<2;++j2){m2[0]=t[0]-65517;for(i=1;i<15;++i){m2[i]=t[i]-65535-(m2[i-1]>>16&1);m2[i-1]&=65535}m2[15]=t[15]-32767-(m2[14]>>16&1);b2=m2[15]>>16&1;m2[14]&=65535;sel25519(t,m2,1-b2)}for(i=0;i<16;i++){o[2*i]=t[i]&255;o[2*i+1]=t[i]>>8}}function unpackneg(r,p2){var t=gf(),chk=gf(),num=gf(),den=gf(),den2=gf(),den4=gf(),den6=gf();set25519(r[2],gf1);unpack25519(r[1],p2);S2(num,r[1]);M2(den,num,D);Z2(num,num,r[2]);A2(den,r[2],den);S2(den2,den);S2(den4,den2);M2(den6,den4,den2);M2(t,den6,num);M2(t,t,den);pow2523(t,t);M2(t,t,num);M2(t,t,den);M2(t,t,den);M2(r[0],t,den);S2(chk,r[0]);M2(chk,chk,den);if(neq25519(chk,num)){M2(r[0],r[0],I2)}S2(chk,r[0]);M2(chk,chk,den);if(neq25519(chk,num)){return-1}if(par25519(r[0])===p2[31]>>7){Z2(r[0],gf0,r[0])}M2(r[3],r[0],r[1]);return 0}function unpack25519(o,n){var i;for(i=0;i<16;++i){o[i]=n[2*i]+(n[2*i+1]<<8)}o[15]&=32767}function pow2523(o,i){var c=gf();var a;for(a=0;a<16;++a){c[a]=i[a]}for(a=250;a>=0;--a){S2(c,c);if(a!==1){M2(c,c,i)}}for(a=0;a<16;++a){o[a]=c[a]}}function neq25519(a,b2){var c=new NativeBuffer(32);var d=new NativeBuffer(32);pack25519(c,a);pack25519(d,b2);return crypto_verify_32(c,0,d,0)}function crypto_verify_32(x,xi2,y,yi2){return vn2(x,xi2,y,yi2,32)}function vn2(x,xi2,y,yi2,n){var i,d=0;for(i=0;i<n;++i){d|=x[xi2+i]^y[yi2+i]}return(1&d-1>>>8)-1}function par25519(a){var d=new NativeBuffer(32);pack25519(d,a);return d[0]&1}function scalarmult(p2,q2,s3){var b2,i;set25519(p2[0],gf0);set25519(p2[1],gf1);set25519(p2[2],gf1);set25519(p2[3],gf0);for(i=255;i>=0;--i){b2=s3[i/8|0]>>(i&7)&1;cswap(p2,q2,b2);add(q2,p2);add(p2,p2);cswap(p2,q2,b2)}}function scalarbase(p2,s3){var q2=[gf(),gf(),gf(),gf()];set25519(q2[0],X2);set25519(q2[1],Y2);set25519(q2[2],gf1);M2(q2[3],X2,Y2);scalarmult(p2,q2,s3)}function set25519(r,a){var i;for(i=0;i<16;i++){r[i]=a[i]|0}}function inv25519(o,i){var c=gf();var a;for(a=0;a<16;++a){c[a]=i[a]}for(a=253;a>=0;--a){S2(c,c);if(a!==2&&a!==4){M2(c,c,i)}}for(a=0;a<16;++a){o[a]=c[a]}}function car25519(o){var i,v2,c=1;for(i=0;i<16;++i){v2=o[i]+c+65535;c=Math.floor(v2/65536);o[i]=v2-c*65536}o[0]+=c-1+37*(c-1)}function sel25519(p2,q2,b2){var t,c=~(b2-1);for(var i=0;i<16;++i){t=c&(p2[i]^q2[i]);p2[i]^=t;q2[i]^=t}}function gf(init){var i,r=new Float64Array(16);if(init){for(i=0;i<init.length;++i){r[i]=init[i]}}return r}function A2(o,a,b2){for(var i=0;i<16;++i){o[i]=a[i]+b2[i]}}function Z2(o,a,b2){for(var i=0;i<16;++i){o[i]=a[i]-b2[i]}}function S2(o,a){M2(o,a,a)}function M2(o,a,b2){var v2,c,t0=0,t1=0,t2=0,t3=0,t4=0,t5=0,t6=0,t7=0,t8=0,t9=0,t10=0,t11=0,t12=0,t13=0,t14=0,t15=0,t16=0,t17=0,t18=0,t19=0,t20=0,t21=0,t22=0,t23=0,t24=0,t25=0,t26=0,t27=0,t28=0,t29=0,t30=0,b0=b2[0],b1=b2[1],b22=b2[2],b3=b2[3],b42=b2[4],b5=b2[5],b6=b2[6],b7=b2[7],b8=b2[8],b9=b2[9],b10=b2[10],b11=b2[11],b12=b2[12],b13=b2[13],b14=b2[14],b15=b2[15];v2=a[0];t0+=v2*b0;t1+=v2*b1;t2+=v2*b22;t3+=v2*b3;t4+=v2*b42;t5+=v2*b5;t6+=v2*b6;t7+=v2*b7;t8+=v2*b8;t9+=v2*b9;t10+=v2*b10;t11+=v2*b11;t12+=v2*b12;t13+=v2*b13;t14+=v2*b14;t15+=v2*b15;v2=a[1];t1+=v2*b0;t2+=v2*b1;t3+=v2*b22;t4+=v2*b3;t5+=v2*b42;t6+=v2*b5;t7+=v2*b6;t8+=v2*b7;t9+=v2*b8;t10+=v2*b9;t11+=v2*b10;t12+=v2*b11;t13+=v2*b12;t14+=v2*b13;t15+=v2*b14;t16+=v2*b15;v2=a[2];t2+=v2*b0;t3+=v2*b1;t4+=v2*b22;t5+=v2*b3;t6+=v2*b42;t7+=v2*b5;t8+=v2*b6;t9+=v2*b7;t10+=v2*b8;t11+=v2*b9;t12+=v2*b10;t13+=v2*b11;t14+=v2*b12;t15+=v2*b13;t16+=v2*b14;t17+=v2*b15;v2=a[3];t3+=v2*b0;t4+=v2*b1;t5+=v2*b22;t6+=v2*b3;t7+=v2*b42;t8+=v2*b5;t9+=v2*b6;t10+=v2*b7;t11+=v2*b8;t12+=v2*b9;t13+=v2*b10;t14+=v2*b11;t15+=v2*b12;t16+=v2*b13;t17+=v2*b14;t18+=v2*b15;v2=a[4];t4+=v2*b0;t5+=v2*b1;t6+=v2*b22;t7+=v2*b3;t8+=v2*b42;t9+=v2*b5;t10+=v2*b6;t11+=v2*b7;t12+=v2*b8;t13+=v2*b9;t14+=v2*b10;t15+=v2*b11;t16+=v2*b12;t17+=v2*b13;t18+=v2*b14;t19+=v2*b15;v2=a[5];t5+=v2*b0;t6+=v2*b1;t7+=v2*b22;t8+=v2*b3;t9+=v2*b42;t10+=v2*b5;t11+=v2*b6;t12+=v2*b7;t13+=v2*b8;t14+=v2*b9;t15+=v2*b10;t16+=v2*b11;t17+=v2*b12;t18+=v2*b13;t19+=v2*b14;t20+=v2*b15;v2=a[6];t6+=v2*b0;t7+=v2*b1;t8+=v2*b22;t9+=v2*b3;t10+=v2*b42;t11+=v2*b5;t12+=v2*b6;t13+=v2*b7;t14+=v2*b8;t15+=v2*b9;t16+=v2*b10;t17+=v2*b11;t18+=v2*b12;t19+=v2*b13;t20+=v2*b14;t21+=v2*b15;v2=a[7];t7+=v2*b0;t8+=v2*b1;t9+=v2*b22;t10+=v2*b3;t11+=v2*b42;t12+=v2*b5;t13+=v2*b6;t14+=v2*b7;t15+=v2*b8;t16+=v2*b9;t17+=v2*b10;t18+=v2*b11;t19+=v2*b12;t20+=v2*b13;t21+=v2*b14;t22+=v2*b15;v2=a[8];t8+=v2*b0;t9+=v2*b1;t10+=v2*b22;t11+=v2*b3;t12+=v2*b42;t13+=v2*b5;t14+=v2*b6;t15+=v2*b7;t16+=v2*b8;t17+=v2*b9;t18+=v2*b10;t19+=v2*b11;t20+=v2*b12;t21+=v2*b13;t22+=v2*b14;t23+=v2*b15;v2=a[9];t9+=v2*b0;t10+=v2*b1;t11+=v2*b22;t12+=v2*b3;t13+=v2*b42;t14+=v2*b5;t15+=v2*b6;t16+=v2*b7;t17+=v2*b8;t18+=v2*b9;t19+=v2*b10;t20+=v2*b11;t21+=v2*b12;t22+=v2*b13;t23+=v2*b14;t24+=v2*b15;v2=a[10];t10+=v2*b0;t11+=v2*b1;t12+=v2*b22;t13+=v2*b3;t14+=v2*b42;t15+=v2*b5;t16+=v2*b6;t17+=v2*b7;t18+=v2*b8;t19+=v2*b9;t20+=v2*b10;t21+=v2*b11;t22+=v2*b12;t23+=v2*b13;t24+=v2*b14;t25+=v2*b15;v2=a[11];t11+=v2*b0;t12+=v2*b1;t13+=v2*b22;t14+=v2*b3;t15+=v2*b42;t16+=v2*b5;t17+=v2*b6;t18+=v2*b7;t19+=v2*b8;t20+=v2*b9;t21+=v2*b10;t22+=v2*b11;t23+=v2*b12;t24+=v2*b13;t25+=v2*b14;t26+=v2*b15;v2=a[12];t12+=v2*b0;t13+=v2*b1;t14+=v2*b22;t15+=v2*b3;t16+=v2*b42;t17+=v2*b5;t18+=v2*b6;t19+=v2*b7;t20+=v2*b8;t21+=v2*b9;t22+=v2*b10;t23+=v2*b11;t24+=v2*b12;t25+=v2*b13;t26+=v2*b14;t27+=v2*b15;v2=a[13];t13+=v2*b0;t14+=v2*b1;t15+=v2*b22;t16+=v2*b3;t17+=v2*b42;t18+=v2*b5;t19+=v2*b6;t20+=v2*b7;t21+=v2*b8;t22+=v2*b9;t23+=v2*b10;t24+=v2*b11;t25+=v2*b12;t26+=v2*b13;t27+=v2*b14;t28+=v2*b15;v2=a[14];t14+=v2*b0;t15+=v2*b1;t16+=v2*b22;t17+=v2*b3;t18+=v2*b42;t19+=v2*b5;t20+=v2*b6;t21+=v2*b7;t22+=v2*b8;t23+=v2*b9;t24+=v2*b10;t25+=v2*b11;t26+=v2*b12;t27+=v2*b13;t28+=v2*b14;t29+=v2*b15;v2=a[15];t15+=v2*b0;t16+=v2*b1;t17+=v2*b22;t18+=v2*b3;t19+=v2*b42;t20+=v2*b5;t21+=v2*b6;t22+=v2*b7;t23+=v2*b8;t24+=v2*b9;t25+=v2*b10;t26+=v2*b11;t27+=v2*b12;t28+=v2*b13;t29+=v2*b14;t30+=v2*b15;t0+=38*t16;t1+=38*t17;t2+=38*t18;t3+=38*t19;t4+=38*t20;t5+=38*t21;t6+=38*t22;t7+=38*t23;t8+=38*t24;t9+=38*t25;t10+=38*t26;t11+=38*t27;t12+=38*t28;t13+=38*t29;t14+=38*t30;c=1;v2=t0+c+65535;c=Math.floor(v2/65536);t0=v2-c*65536;v2=t1+c+65535;c=Math.floor(v2/65536);t1=v2-c*65536;v2=t2+c+65535;c=Math.floor(v2/65536);t2=v2-c*65536;v2=t3+c+65535;c=Math.floor(v2/65536);t3=v2-c*65536;v2=t4+c+65535;c=Math.floor(v2/65536);t4=v2-c*65536;v2=t5+c+65535;c=Math.floor(v2/65536);t5=v2-c*65536;v2=t6+c+65535;c=Math.floor(v2/65536);t6=v2-c*65536;v2=t7+c+65535;c=Math.floor(v2/65536);t7=v2-c*65536;v2=t8+c+65535;c=Math.floor(v2/65536);t8=v2-c*65536;v2=t9+c+65535;c=Math.floor(v2/65536);t9=v2-c*65536;v2=t10+c+65535;c=Math.floor(v2/65536);t10=v2-c*65536;v2=t11+c+65535;c=Math.floor(v2/65536);t11=v2-c*65536;v2=t12+c+65535;c=Math.floor(v2/65536);t12=v2-c*65536;v2=t13+c+65535;c=Math.floor(v2/65536);t13=v2-c*65536;v2=t14+c+65535;c=Math.floor(v2/65536);t14=v2-c*65536;v2=t15+c+65535;c=Math.floor(v2/65536);t15=v2-c*65536;t0+=c-1+37*(c-1);c=1;v2=t0+c+65535;c=Math.floor(v2/65536);t0=v2-c*65536;v2=t1+c+65535;c=Math.floor(v2/65536);t1=v2-c*65536;v2=t2+c+65535;c=Math.floor(v2/65536);t2=v2-c*65536;v2=t3+c+65535;c=Math.floor(v2/65536);t3=v2-c*65536;v2=t4+c+65535;c=Math.floor(v2/65536);t4=v2-c*65536;v2=t5+c+65535;c=Math.floor(v2/65536);t5=v2-c*65536;v2=t6+c+65535;c=Math.floor(v2/65536);t6=v2-c*65536;v2=t7+c+65535;c=Math.floor(v2/65536);t7=v2-c*65536;v2=t8+c+65535;c=Math.floor(v2/65536);t8=v2-c*65536;v2=t9+c+65535;c=Math.floor(v2/65536);t9=v2-c*65536;v2=t10+c+65535;c=Math.floor(v2/65536);t10=v2-c*65536;v2=t11+c+65535;c=Math.floor(v2/65536);t11=v2-c*65536;v2=t12+c+65535;c=Math.floor(v2/65536);t12=v2-c*65536;v2=t13+c+65535;c=Math.floor(v2/65536);t13=v2-c*65536;v2=t14+c+65535;c=Math.floor(v2/65536);t14=v2-c*65536;v2=t15+c+65535;c=Math.floor(v2/65536);t15=v2-c*65536;t0+=c-1+37*(c-1);o[0]=t0;o[1]=t1;o[2]=t2;o[3]=t3;o[4]=t4;o[5]=t5;o[6]=t6;o[7]=t7;o[8]=t8;o[9]=t9;o[10]=t10;o[11]=t11;o[12]=t12;o[13]=t13;o[14]=t14;o[15]=t15}}});var require_kem=__commonJS({"node_modules/node-forge/lib/kem.js"(exports,module){"use strict";var forge2=require_forge();require_util7();require_random();require_jsbn();module.exports=forge2.kem=forge2.kem||{};var BigInteger=forge2.jsbn.BigInteger;forge2.kem.rsa={};forge2.kem.rsa.create=function(kdf,options){options=options||{};var prng=options.prng||forge2.random;var kem={};kem.encrypt=function(publicKey,keyLength){var byteLength=Math.ceil(publicKey.n.bitLength()/8);var r;do{r=new BigInteger(forge2.util.bytesToHex(prng.getBytesSync(byteLength)),16).mod(publicKey.n)}while(r.compareTo(BigInteger.ONE)<=0);r=forge2.util.hexToBytes(r.toString(16));var zeros=byteLength-r.length;if(zeros>0){r=forge2.util.fillString(String.fromCharCode(0),zeros)+r}var encapsulation=publicKey.encrypt(r,"NONE");var key=kdf.generate(r,keyLength);return{encapsulation,key}};kem.decrypt=function(privateKey,encapsulation,keyLength){var r=privateKey.decrypt(encapsulation,"NONE");return kdf.generate(r,keyLength)};return kem};forge2.kem.kdf1=function(md,digestLength){_createKDF(this,md,0,digestLength||md.digestLength)};forge2.kem.kdf2=function(md,digestLength){_createKDF(this,md,1,digestLength||md.digestLength)};function _createKDF(kdf,md,counterStart,digestLength){kdf.generate=function(x,length){var key=new forge2.util.ByteBuffer;var k2=Math.ceil(length/digestLength)+counterStart;var c=new forge2.util.ByteBuffer;for(var i=counterStart;i<k2;++i){c.putInt32(i);md.start();md.update(x+c.getBytes());var hash=md.digest();key.putBytes(hash.getBytes(digestLength))}key.truncate(key.length()-length);return key.getBytes()}}}});var require_log=__commonJS({"node_modules/node-forge/lib/log.js"(exports,module){"use strict";var forge2=require_forge();require_util7();module.exports=forge2.log=forge2.log||{};forge2.log.levels=["none","error","warning","info","debug","verbose","max"];var sLevelInfo={};var sLoggers=[];var sConsoleLogger=null;forge2.log.LEVEL_LOCKED=1<<1;forge2.log.NO_LEVEL_CHECK=1<<2;forge2.log.INTERPOLATE=1<<3;for(i=0;i<forge2.log.levels.length;++i){level=forge2.log.levels[i];sLevelInfo[level]={index:i,name:level.toUpperCase()}}var level;var i;forge2.log.logMessage=function(message){var messageLevelIndex=sLevelInfo[message.level].index;for(var i2=0;i2<sLoggers.length;++i2){var logger2=sLoggers[i2];if(logger2.flags&forge2.log.NO_LEVEL_CHECK){logger2.f(message)}else{var loggerLevelIndex=sLevelInfo[logger2.level].index;if(messageLevelIndex<=loggerLevelIndex){logger2.f(logger2,message)}}}};forge2.log.prepareStandard=function(message){if(!("standard"in message)){message.standard=sLevelInfo[message.level].name+" ["+message.category+"] "+message.message}};forge2.log.prepareFull=function(message){if(!("full"in message)){var args=[message.message];args=args.concat([]);message.full=forge2.util.format.apply(this,args)}};forge2.log.prepareStandardFull=function(message){if(!("standardFull"in message)){forge2.log.prepareStandard(message);message.standardFull=message.standard}};if(true){levels=["error","warning","info","debug","verbose"];for(i=0;i<levels.length;++i){(function(level2){forge2.log[level2]=function(category,message){var args=Array.prototype.slice.call(arguments).slice(2);var msg={timestamp:new Date,level:level2,category,message,"arguments":args};forge2.log.logMessage(msg)}})(levels[i])}}var levels;var i;forge2.log.makeLogger=function(logFunction){var logger2={flags:0,f:logFunction};forge2.log.setLevel(logger2,"none");return logger2};forge2.log.setLevel=function(logger2,level2){var rval=false;if(logger2&&!(logger2.flags&forge2.log.LEVEL_LOCKED)){for(var i2=0;i2<forge2.log.levels.length;++i2){var aValidLevel=forge2.log.levels[i2];if(level2==aValidLevel){logger2.level=level2;rval=true;break}}}return rval};forge2.log.lock=function(logger2,lock2){if(typeof lock2==="undefined"||lock2){logger2.flags|=forge2.log.LEVEL_LOCKED}else{logger2.flags&=~forge2.log.LEVEL_LOCKED}};forge2.log.addLogger=function(logger2){sLoggers.push(logger2)};if(typeof console!=="undefined"&&"log"in console){if(console.error&&console.warn&&console.info&&console.debug){levelHandlers={error:console.error,warning:console.warn,info:console.info,debug:console.debug,verbose:console.debug};f2=function(logger2,message){forge2.log.prepareStandard(message);var handler=levelHandlers[message.level];var args=[message.standard];args=args.concat(message["arguments"].slice());handler.apply(console,args)};logger=forge2.log.makeLogger(f2)}else{f2=function(logger2,message){forge2.log.prepareStandardFull(message);console.log(message.standardFull)};logger=forge2.log.makeLogger(f2)}forge2.log.setLevel(logger,"debug");forge2.log.addLogger(logger);sConsoleLogger=logger}else{console={log:function(){}}}var logger;var levelHandlers;var f2;if(sConsoleLogger!==null&&typeof window!=="undefined"&&window.location){query=new URL(window.location.href).searchParams;if(query.has("console.level")){forge2.log.setLevel(sConsoleLogger,query.get("console.level").slice(-1)[0])}if(query.has("console.lock")){lock=query.get("console.lock").slice(-1)[0];if(lock=="true"){forge2.log.lock(sConsoleLogger)}}}var query;var lock;forge2.log.consoleLogger=sConsoleLogger}});var require_md_all=__commonJS({"node_modules/node-forge/lib/md.all.js"(exports,module){"use strict";module.exports=require_md();require_md5();require_sha1();require_sha256();require_sha512()}});var require_pkcs7=__commonJS({"node_modules/node-forge/lib/pkcs7.js"(exports,module){"use strict";var forge2=require_forge();require_aes();require_asn1();require_des();require_oids();require_pem();require_pkcs7asn1();require_random();require_util7();require_x509();var asn1=forge2.asn1;var p7=module.exports=forge2.pkcs7=forge2.pkcs7||{};p7.messageFromPem=function(pem){var msg=forge2.pem.decode(pem)[0];if(msg.type!=="PKCS7"){var error=new Error('Could not convert PKCS#7 message from PEM; PEM header type is not "PKCS#7".');error.headerType=msg.type;throw error}if(msg.procType&&msg.procType.type==="ENCRYPTED"){throw new Error("Could not convert PKCS#7 message from PEM; PEM is encrypted.")}var obj=asn1.fromDer(msg.body);return p7.messageFromAsn1(obj)};p7.messageToPem=function(msg,maxline){var pemObj={type:"PKCS7",body:asn1.toDer(msg.toAsn1()).getBytes()};return forge2.pem.encode(pemObj,{maxline})};p7.messageFromAsn1=function(obj){var capture2={};var errors=[];if(!asn1.validate(obj,p7.asn1.contentInfoValidator,capture2,errors)){var error=new Error("Cannot read PKCS#7 message. ASN.1 object is not an PKCS#7 ContentInfo.");error.errors=errors;throw error}var contentType=asn1.derToOid(capture2.contentType);var msg;switch(contentType){case forge2.pki.oids.envelopedData:msg=p7.createEnvelopedData();break;case forge2.pki.oids.encryptedData:msg=p7.createEncryptedData();break;case forge2.pki.oids.signedData:msg=p7.createSignedData();break;default:throw new Error("Cannot read PKCS#7 message. ContentType with OID "+contentType+" is not (yet) supported.")}msg.fromAsn1(capture2.content.value[0]);return msg};p7.createSignedData=function(){var msg=null;msg={type:forge2.pki.oids.signedData,version:1,certificates:[],crls:[],signers:[],digestAlgorithmIdentifiers:[],contentInfo:null,signerInfos:[],fromAsn1:function(obj){_fromAsn1(msg,obj,p7.asn1.signedDataValidator);msg.certificates=[];msg.crls=[];msg.digestAlgorithmIdentifiers=[];msg.contentInfo=null;msg.signerInfos=[];if(msg.rawCapture.certificates){var certs=msg.rawCapture.certificates.value;for(var i=0;i<certs.length;++i){msg.certificates.push(forge2.pki.certificateFromAsn1(certs[i]))}}},toAsn1:function(){if(!msg.contentInfo){msg.sign()}var certs=[];for(var i=0;i<msg.certificates.length;++i){certs.push(forge2.pki.certificateToAsn1(msg.certificates[i]))}var crls=[];var signedData=asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,asn1.integerToDer(msg.version).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SET,true,msg.digestAlgorithmIdentifiers),msg.contentInfo])]);if(certs.length>0){signedData.value[0].value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,certs))}if(crls.length>0){signedData.value[0].value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,1,true,crls))}signedData.value[0].value.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SET,true,msg.signerInfos));return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(msg.type).getBytes()),signedData])},addSigner:function(signer){var issuer=signer.issuer;var serialNumber=signer.serialNumber;if(signer.certificate){var cert=signer.certificate;if(typeof cert==="string"){cert=forge2.pki.certificateFromPem(cert)}issuer=cert.issuer.attributes;serialNumber=cert.serialNumber}var key=signer.key;if(!key){throw new Error("Could not add PKCS#7 signer; no private key specified.")}if(typeof key==="string"){key=forge2.pki.privateKeyFromPem(key)}var digestAlgorithm=signer.digestAlgorithm||forge2.pki.oids.sha1;switch(digestAlgorithm){case forge2.pki.oids.sha1:case forge2.pki.oids.sha256:case forge2.pki.oids.sha384:case forge2.pki.oids.sha512:case forge2.pki.oids.md5:break;default:throw new Error("Could not add PKCS#7 signer; unknown message digest algorithm: "+digestAlgorithm)}var authenticatedAttributes=signer.authenticatedAttributes||[];if(authenticatedAttributes.length>0){var contentType=false;var messageDigest=false;for(var i=0;i<authenticatedAttributes.length;++i){var attr=authenticatedAttributes[i];if(!contentType&&attr.type===forge2.pki.oids.contentType){contentType=true;if(messageDigest){break}continue}if(!messageDigest&&attr.type===forge2.pki.oids.messageDigest){messageDigest=true;if(contentType){break}continue}}if(!contentType||!messageDigest){throw new Error("Invalid signer.authenticatedAttributes. If signer.authenticatedAttributes is specified, then it must contain at least two attributes, PKCS #9 content-type and PKCS #9 message-digest.")}}msg.signers.push({key,version:1,issuer,serialNumber,digestAlgorithm,signatureAlgorithm:forge2.pki.oids.rsaEncryption,signature:null,authenticatedAttributes,unauthenticatedAttributes:[]})},sign:function(options){options=options||{};if(typeof msg.content!=="object"||msg.contentInfo===null){msg.contentInfo=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(forge2.pki.oids.data).getBytes())]);if("content"in msg){var content;if(msg.content instanceof forge2.util.ByteBuffer){content=msg.content.bytes()}else if(typeof msg.content==="string"){content=forge2.util.encodeUtf8(msg.content)}if(options.detached){msg.detachedContent=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,content)}else{msg.contentInfo.value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,content)]))}}}if(msg.signers.length===0){return}var mds=addDigestAlgorithmIds();addSignerInfos(mds)},verify:function(){throw new Error("PKCS#7 signature verification not yet implemented.")},addCertificate:function(cert){if(typeof cert==="string"){cert=forge2.pki.certificateFromPem(cert)}msg.certificates.push(cert)},addCertificateRevokationList:function(crl){throw new Error("PKCS#7 CRL support not yet implemented.")}};return msg;function addDigestAlgorithmIds(){var mds={};for(var i=0;i<msg.signers.length;++i){var signer=msg.signers[i];var oid=signer.digestAlgorithm;if(!(oid in mds)){mds[oid]=forge2.md[forge2.pki.oids[oid]].create()}if(signer.authenticatedAttributes.length===0){signer.md=mds[oid]}else{signer.md=forge2.md[forge2.pki.oids[oid]].create()}}msg.digestAlgorithmIdentifiers=[];for(var oid in mds){msg.digestAlgorithmIdentifiers.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(oid).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.NULL,false,"")]))}return mds}function addSignerInfos(mds){var content;if(msg.detachedContent){content=msg.detachedContent}else{content=msg.contentInfo.value[1];content=content.value[0]}if(!content){throw new Error("Could not sign PKCS#7 message; there is no content to sign.")}var contentType=asn1.derToOid(msg.contentInfo.value[0].value);var bytes=asn1.toDer(content);bytes.getByte();asn1.getBerValueLength(bytes);bytes=bytes.getBytes();for(var oid in mds){mds[oid].start().update(bytes)}var signingTime=new Date;for(var i=0;i<msg.signers.length;++i){var signer=msg.signers[i];if(signer.authenticatedAttributes.length===0){if(contentType!==forge2.pki.oids.data){throw new Error("Invalid signer; authenticatedAttributes must be present when the ContentInfo content type is not PKCS#7 Data.")}}else{signer.authenticatedAttributesAsn1=asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[]);var attrsAsn1=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SET,true,[]);for(var ai2=0;ai2<signer.authenticatedAttributes.length;++ai2){var attr=signer.authenticatedAttributes[ai2];if(attr.type===forge2.pki.oids.messageDigest){attr.value=mds[signer.digestAlgorithm].digest()}else if(attr.type===forge2.pki.oids.signingTime){if(!attr.value){attr.value=signingTime}}attrsAsn1.value.push(_attributeToAsn1(attr));signer.authenticatedAttributesAsn1.value.push(_attributeToAsn1(attr))}bytes=asn1.toDer(attrsAsn1).getBytes();signer.md.start().update(bytes)}signer.signature=signer.key.sign(signer.md,"RSASSA-PKCS1-V1_5")}msg.signerInfos=_signersToAsn1(msg.signers)}};p7.createEncryptedData=function(){var msg=null;msg={type:forge2.pki.oids.encryptedData,version:0,encryptedContent:{algorithm:forge2.pki.oids["aes256-CBC"]},fromAsn1:function(obj){_fromAsn1(msg,obj,p7.asn1.encryptedDataValidator)},decrypt:function(key){if(key!==void 0){msg.encryptedContent.key=key}_decryptContent(msg)}};return msg};p7.createEnvelopedData=function(){var msg=null;msg={type:forge2.pki.oids.envelopedData,version:0,recipients:[],encryptedContent:{algorithm:forge2.pki.oids["aes256-CBC"]},fromAsn1:function(obj){var capture2=_fromAsn1(msg,obj,p7.asn1.envelopedDataValidator);msg.recipients=_recipientsFromAsn1(capture2.recipientInfos.value)},toAsn1:function(){return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(msg.type).getBytes()),asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,asn1.integerToDer(msg.version).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SET,true,_recipientsToAsn1(msg.recipients)),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,_encryptedContentToAsn1(msg.encryptedContent))])])])},findRecipient:function(cert){var sAttr=cert.issuer.attributes;for(var i=0;i<msg.recipients.length;++i){var r=msg.recipients[i];var rAttr=r.issuer;if(r.serialNumber!==cert.serialNumber){continue}if(rAttr.length!==sAttr.length){continue}var match=true;for(var j2=0;j2<sAttr.length;++j2){if(rAttr[j2].type!==sAttr[j2].type||rAttr[j2].value!==sAttr[j2].value){match=false;break}}if(match){return r}}return null},decrypt:function(recipient,privKey){if(msg.encryptedContent.key===void 0&&recipient!==void 0&&privKey!==void 0){switch(recipient.encryptedContent.algorithm){case forge2.pki.oids.rsaEncryption:case forge2.pki.oids.desCBC:var key=privKey.decrypt(recipient.encryptedContent.content);msg.encryptedContent.key=forge2.util.createBuffer(key);break;default:throw new Error("Unsupported asymmetric cipher, OID "+recipient.encryptedContent.algorithm)}}_decryptContent(msg)},addRecipient:function(cert){msg.recipients.push({version:0,issuer:cert.issuer.attributes,serialNumber:cert.serialNumber,encryptedContent:{algorithm:forge2.pki.oids.rsaEncryption,key:cert.publicKey}})},encrypt:function(key,cipher){if(msg.encryptedContent.content===void 0){cipher=cipher||msg.encryptedContent.algorithm;key=key||msg.encryptedContent.key;var keyLen,ivLen,ciphFn;switch(cipher){case forge2.pki.oids["aes128-CBC"]:keyLen=16;ivLen=16;ciphFn=forge2.aes.createEncryptionCipher;break;case forge2.pki.oids["aes192-CBC"]:keyLen=24;ivLen=16;ciphFn=forge2.aes.createEncryptionCipher;break;case forge2.pki.oids["aes256-CBC"]:keyLen=32;ivLen=16;ciphFn=forge2.aes.createEncryptionCipher;break;case forge2.pki.oids["des-EDE3-CBC"]:keyLen=24;ivLen=8;ciphFn=forge2.des.createEncryptionCipher;break;default:throw new Error("Unsupported symmetric cipher, OID "+cipher)}if(key===void 0){key=forge2.util.createBuffer(forge2.random.getBytes(keyLen))}else if(key.length()!=keyLen){throw new Error("Symmetric key has wrong length; got "+key.length()+" bytes, expected "+keyLen+".")}msg.encryptedContent.algorithm=cipher;msg.encryptedContent.key=key;msg.encryptedContent.parameter=forge2.util.createBuffer(forge2.random.getBytes(ivLen));var ciph=ciphFn(key);ciph.start(msg.encryptedContent.parameter.copy());ciph.update(msg.content);if(!ciph.finish()){throw new Error("Symmetric encryption failed.")}msg.encryptedContent.content=ciph.output}for(var i=0;i<msg.recipients.length;++i){var recipient=msg.recipients[i];if(recipient.encryptedContent.content!==void 0){continue}switch(recipient.encryptedContent.algorithm){case forge2.pki.oids.rsaEncryption:recipient.encryptedContent.content=recipient.encryptedContent.key.encrypt(msg.encryptedContent.key.data);break;default:throw new Error("Unsupported asymmetric cipher, OID "+recipient.encryptedContent.algorithm)}}}};return msg};function _recipientFromAsn1(obj){var capture2={};var errors=[];if(!asn1.validate(obj,p7.asn1.recipientInfoValidator,capture2,errors)){var error=new Error("Cannot read PKCS#7 RecipientInfo. ASN.1 object is not an PKCS#7 RecipientInfo.");error.errors=errors;throw error}return{version:capture2.version.charCodeAt(0),issuer:forge2.pki.RDNAttributesAsArray(capture2.issuer),serialNumber:forge2.util.createBuffer(capture2.serial).toHex(),encryptedContent:{algorithm:asn1.derToOid(capture2.encAlgorithm),parameter:capture2.encParameter?capture2.encParameter.value:void 0,content:capture2.encKey}}}function _recipientToAsn1(obj){return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,asn1.integerToDer(obj.version).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[forge2.pki.distinguishedNameToAsn1({attributes:obj.issuer}),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,forge2.util.hexToBytes(obj.serialNumber))]),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(obj.encryptedContent.algorithm).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.NULL,false,"")]),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,obj.encryptedContent.content)])}function _recipientsFromAsn1(infos){var ret=[];for(var i=0;i<infos.length;++i){ret.push(_recipientFromAsn1(infos[i]))}return ret}function _recipientsToAsn1(recipients){var ret=[];for(var i=0;i<recipients.length;++i){ret.push(_recipientToAsn1(recipients[i]))}return ret}function _signerToAsn1(obj){var rval=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,asn1.integerToDer(obj.version).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[forge2.pki.distinguishedNameToAsn1({attributes:obj.issuer}),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.INTEGER,false,forge2.util.hexToBytes(obj.serialNumber))]),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(obj.digestAlgorithm).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.NULL,false,"")])]);if(obj.authenticatedAttributesAsn1){rval.value.push(obj.authenticatedAttributesAsn1)}rval.value.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(obj.signatureAlgorithm).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.NULL,false,"")]));rval.value.push(asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,obj.signature));if(obj.unauthenticatedAttributes.length>0){var attrsAsn1=asn1.create(asn1.Class.CONTEXT_SPECIFIC,1,true,[]);for(var i=0;i<obj.unauthenticatedAttributes.length;++i){var attr=obj.unauthenticatedAttributes[i];attrsAsn1.values.push(_attributeToAsn1(attr))}rval.value.push(attrsAsn1)}return rval}function _signersToAsn1(signers){var ret=[];for(var i=0;i<signers.length;++i){ret.push(_signerToAsn1(signers[i]))}return ret}function _attributeToAsn1(attr){var value;if(attr.type===forge2.pki.oids.contentType){value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(attr.value).getBytes())}else if(attr.type===forge2.pki.oids.messageDigest){value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,attr.value.bytes())}else if(attr.type===forge2.pki.oids.signingTime){var jan_1_1950=new Date("1950-01-01T00:00:00Z");var jan_1_2050=new Date("2050-01-01T00:00:00Z");var date=attr.value;if(typeof date==="string"){var timestamp=Date.parse(date);if(!isNaN(timestamp)){date=new Date(timestamp)}else if(date.length===13){date=asn1.utcTimeToDate(date)}else{date=asn1.generalizedTimeToDate(date)}}if(date>=jan_1_1950&&date<jan_1_2050){value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.UTCTIME,false,asn1.dateToUtcTime(date))}else{value=asn1.create(asn1.Class.UNIVERSAL,asn1.Type.GENERALIZEDTIME,false,asn1.dateToGeneralizedTime(date))}}return asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(attr.type).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SET,true,[value])])}function _encryptedContentToAsn1(ec2){return[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(forge2.pki.oids.data).getBytes()),asn1.create(asn1.Class.UNIVERSAL,asn1.Type.SEQUENCE,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OID,false,asn1.oidToDer(ec2.algorithm).getBytes()),!ec2.parameter?void 0:asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,ec2.parameter.getBytes())]),asn1.create(asn1.Class.CONTEXT_SPECIFIC,0,true,[asn1.create(asn1.Class.UNIVERSAL,asn1.Type.OCTETSTRING,false,ec2.content.getBytes())])]}function _fromAsn1(msg,obj,validator){var capture2={};var errors=[];if(!asn1.validate(obj,validator,capture2,errors)){var error=new Error("Cannot read PKCS#7 message. ASN.1 object is not a supported PKCS#7 message.");error.errors=error;throw error}var contentType=asn1.derToOid(capture2.contentType);if(contentType!==forge2.pki.oids.data){throw new Error("Unsupported PKCS#7 message. Only wrapped ContentType Data supported.")}if(capture2.encryptedContent){var content="";if(forge2.util.isArray(capture2.encryptedContent)){for(var i=0;i<capture2.encryptedContent.length;++i){if(capture2.encryptedContent[i].type!==asn1.Type.OCTETSTRING){throw new Error("Malformed PKCS#7 message, expecting encrypted content constructed of only OCTET STRING objects.")}content+=capture2.encryptedContent[i].value}}else{content=capture2.encryptedContent}msg.encryptedContent={algorithm:asn1.derToOid(capture2.encAlgorithm),parameter:forge2.util.createBuffer(capture2.encParameter.value),content:forge2.util.createBuffer(content)}}if(capture2.content){var content="";if(forge2.util.isArray(capture2.content)){for(var i=0;i<capture2.content.length;++i){if(capture2.content[i].type!==asn1.Type.OCTETSTRING){throw new Error("Malformed PKCS#7 message, expecting content constructed of only OCTET STRING objects.")}content+=capture2.content[i].value}}else{content=capture2.content}msg.content=forge2.util.createBuffer(content)}msg.version=capture2.version.charCodeAt(0);msg.rawCapture=capture2;return capture2}function _decryptContent(msg){if(msg.encryptedContent.key===void 0){throw new Error("Symmetric key not available.")}if(msg.content===void 0){var ciph;switch(msg.encryptedContent.algorithm){case forge2.pki.oids["aes128-CBC"]:case forge2.pki.oids["aes192-CBC"]:case forge2.pki.oids["aes256-CBC"]:ciph=forge2.aes.createDecryptionCipher(msg.encryptedContent.key);break;case forge2.pki.oids["desCBC"]:case forge2.pki.oids["des-EDE3-CBC"]:ciph=forge2.des.createDecryptionCipher(msg.encryptedContent.key);break;default:throw new Error("Unsupported symmetric cipher, OID "+msg.encryptedContent.algorithm)}ciph.start(msg.encryptedContent.parameter);ciph.update(msg.encryptedContent.content);if(!ciph.finish()){throw new Error("Symmetric decryption failed.")}msg.content=ciph.output}}}});var require_ssh=__commonJS({"node_modules/node-forge/lib/ssh.js"(exports,module){"use strict";var forge2=require_forge();require_aes();require_hmac();require_md5();require_sha1();require_util7();var ssh=module.exports=forge2.ssh=forge2.ssh||{};ssh.privateKeyToPutty=function(privateKey,passphrase,comment){comment=comment||"";passphrase=passphrase||"";var algorithm="ssh-rsa";var encryptionAlgorithm=passphrase===""?"none":"aes256-cbc";var ppk="PuTTY-User-Key-File-2: "+algorithm+"\r\n";ppk+="Encryption: "+encryptionAlgorithm+"\r\n";ppk+="Comment: "+comment+"\r\n";var pubbuffer=forge2.util.createBuffer();_addStringToBuffer(pubbuffer,algorithm);_addBigIntegerToBuffer(pubbuffer,privateKey.e);_addBigIntegerToBuffer(pubbuffer,privateKey.n);var pub=forge2.util.encode64(pubbuffer.bytes(),64);var length=Math.floor(pub.length/66)+1;ppk+="Public-Lines: "+length+"\r\n";ppk+=pub;var privbuffer=forge2.util.createBuffer();_addBigIntegerToBuffer(privbuffer,privateKey.d);_addBigIntegerToBuffer(privbuffer,privateKey.p);_addBigIntegerToBuffer(privbuffer,privateKey.q);_addBigIntegerToBuffer(privbuffer,privateKey.qInv);var priv;if(!passphrase){priv=forge2.util.encode64(privbuffer.bytes(),64)}else{var encLen=privbuffer.length()+16-1;encLen-=encLen%16;var padding=_sha1(privbuffer.bytes());padding.truncate(padding.length()-encLen+privbuffer.length());privbuffer.putBuffer(padding);var aeskey=forge2.util.createBuffer();aeskey.putBuffer(_sha1("\0\0\0\0",passphrase));aeskey.putBuffer(_sha1("\0\0\0",passphrase));var cipher=forge2.aes.createEncryptionCipher(aeskey.truncate(8),"CBC");cipher.start(forge2.util.createBuffer().fillWithByte(0,16));cipher.update(privbuffer.copy());cipher.finish();var encrypted=cipher.output;encrypted.truncate(16);priv=forge2.util.encode64(encrypted.bytes(),64)}length=Math.floor(priv.length/66)+1;ppk+="\r\nPrivate-Lines: "+length+"\r\n";ppk+=priv;var mackey=_sha1("putty-private-key-file-mac-key",passphrase);var macbuffer=forge2.util.createBuffer();_addStringToBuffer(macbuffer,algorithm);_addStringToBuffer(macbuffer,encryptionAlgorithm);_addStringToBuffer(macbuffer,comment);macbuffer.putInt32(pubbuffer.length());macbuffer.putBuffer(pubbuffer);macbuffer.putInt32(privbuffer.length());macbuffer.putBuffer(privbuffer);var hmac=forge2.hmac.create();hmac.start("sha1",mackey);hmac.update(macbuffer.bytes());ppk+="\r\nPrivate-MAC: "+hmac.digest().toHex()+"\r\n";return ppk};ssh.publicKeyToOpenSSH=function(key,comment){var type="ssh-rsa";comment=comment||"";var buffer=forge2.util.createBuffer();_addStringToBuffer(buffer,type);_addBigIntegerToBuffer(buffer,key.e);_addBigIntegerToBuffer(buffer,key.n);return type+" "+forge2.util.encode64(buffer.bytes())+" "+comment};ssh.privateKeyToOpenSSH=function(privateKey,passphrase){if(!passphrase){return forge2.pki.privateKeyToPem(privateKey)}return forge2.pki.encryptRsaPrivateKey(privateKey,passphrase,{legacy:true,algorithm:"aes128"})};ssh.getPublicKeyFingerprint=function(key,options){options=options||{};var md=options.md||forge2.md.md5.create();var type="ssh-rsa";var buffer=forge2.util.createBuffer();_addStringToBuffer(buffer,type);_addBigIntegerToBuffer(buffer,key.e);_addBigIntegerToBuffer(buffer,key.n);md.start();md.update(buffer.getBytes());var digest=md.digest();if(options.encoding==="hex"){var hex=digest.toHex();if(options.delimiter){return hex.match(/.{2}/g).join(options.delimiter)}return hex}else if(options.encoding==="binary"){return digest.getBytes()}else if(options.encoding){throw new Error('Unknown encoding "'+options.encoding+'".')}return digest};function _addBigIntegerToBuffer(buffer,val){var hexVal=val.toString(16);if(hexVal[0]>="8"){hexVal="00"+hexVal}var bytes=forge2.util.hexToBytes(hexVal);buffer.putInt32(bytes.length);buffer.putBytes(bytes)}function _addStringToBuffer(buffer,val){buffer.putInt32(val.length);buffer.putString(val)}function _sha1(){var sha=forge2.md.sha1.create();var num=arguments.length;for(var i=0;i<num;++i){sha.update(arguments[i])}return sha.digest()}}});var require_lib=__commonJS({"node_modules/node-forge/lib/index.js"(exports,module){"use strict";module.exports=require_forge();require_aes();require_aesCipherSuites();require_asn1();require_cipher();require_des();require_ed25519();require_hmac();require_kem();require_log();require_md_all();require_mgf1();require_pbkdf2();require_pem();require_pkcs1();require_pkcs12();require_pkcs7();require_pki();require_prime();require_prng();require_pss();require_random();require_rc2();require_ssh();require_tls();require_util7()}});import{createHash as createHash5,randomUUID}from"crypto";import fs8 from"fs";import os7 from"os";import path16 from"path";function isProxyInstanceFile(v2){return v2!==void 0&&"instanceId"in v2}function readProxyInstanceFile(file){let raw;try{raw=fs8.readFileSync(file??instanceFilePath(),"utf8").trim()}catch{return void 0}if(raw.startsWith("{")){try{const parsed=JSON.parse(raw);if(typeof parsed.origin==="string"&&/^https?:\/\/\S+$/.test(parsed.origin)){const windows={};if(parsed.modelWindows&&typeof parsed.modelWindows==="object"){for(const[k2,v2]of Object.entries(parsed.modelWindows)){const n=Number(v2);if(Number.isFinite(n)&&n>0)windows[k2]=n}}const maxOutputs={};if(parsed.modelMaxOutputs&&typeof parsed.modelMaxOutputs==="object"){for(const[k2,v2]of Object.entries(parsed.modelMaxOutputs)){const n=Number(v2);if(Number.isFinite(n)&&n>0)maxOutputs[k2]=n}}return{origin:parsed.origin,instanceId:typeof parsed.instanceId==="string"?parsed.instanceId:"",pid:typeof parsed.pid==="number"?parsed.pid:0,startedAt:typeof parsed.startedAt==="number"?parsed.startedAt:0,host:typeof parsed.host==="string"?parsed.host:"",port:typeof parsed.port==="number"?parsed.port:0,passthrough:Boolean(parsed.passthrough),mitmDomains:Array.isArray(parsed.mitmDomains)?parsed.mitmDomains.map(String):[],modelWindows:windows,modelMaxOutputs:Object.keys(maxOutputs).length>0?maxOutputs:void 0,launchToken:typeof parsed.launchToken==="string"?parsed.launchToken:void 0,lane:typeof parsed.lane==="string"&&parsed.lane!==""?parsed.lane:void 0,codeFingerprint:typeof parsed.codeFingerprint==="string"&&parsed.codeFingerprint!==""?parsed.codeFingerprint:void 0}}}catch{}}if(/^https?:\/\/\S+$/.test(raw))return{origin:raw};return void 0}function instanceFilePath(){return path16.join(stateDir(),"proxy-origin")}function portZoneFilePath(){return path16.join(stateDir(),"port-zone.json")}function readZonePort(lane,file=portZoneFilePath()){let raw;try{raw=fs8.readFileSync(file,"utf8")}catch{return void 0}try{const parsed=JSON.parse(raw);const v2=parsed?.lanes?.[lane];if(typeof v2==="number"&&Number.isInteger(v2)&&v2>0&&v2<65536)return v2;return void 0}catch{return void 0}}function writeZonePort(lane,port,file=portZoneFilePath()){if(!Number.isInteger(port)||port<=0||port>=65536)return;let cur={};try{const parsed=JSON.parse(fs8.readFileSync(file,"utf8"));if(parsed!==null&&typeof parsed==="object"&&parsed.lanes!==null&&typeof parsed.lanes==="object")cur=parsed}catch{}atomicWriteJson({lanes:{...cur.lanes??{},[lane]:port}},file)}function lanePreferredPort(lane,env=process.env,file=portZoneFilePath()){return readZonePort(lane,file)??resolveZonePortBase(env)}function entryScriptFingerprint(scriptPath){if(!scriptPath)return void 0;const resolved=path16.resolve(scriptPath);const cached=scriptFingerprints.get(resolved);if(cached!==void 0)return cached;let digest;try{digest=createHash5("sha256").update(fs8.readFileSync(resolved)).digest("hex")}catch{return void 0}scriptFingerprints.set(resolved,digest);return digest}function atomicWriteJson(obj,filePath){fs8.mkdirSync(path16.dirname(filePath),{recursive:true});const tempPath=`${filePath}.${process.pid}.${randomUUID()}.tmp`;let descriptor;try{descriptor=fs8.openSync(tempPath,"wx",420);fs8.writeSync(descriptor,JSON.stringify(obj)+"\n",null,"utf8");fs8.fsyncSync(descriptor);fs8.closeSync(descriptor);descriptor=void 0;fs8.renameSync(tempPath,filePath)}catch(error){if(descriptor!==void 0){try{fs8.closeSync(descriptor)}catch{}}try{fs8.unlinkSync(tempPath)}catch{}throw error}}function startingMarkerPath(){return path16.join(stateDir(),"proxy-starting")}function readStartingMarker(file){let raw;try{raw=fs8.readFileSync(file??startingMarkerPath(),"utf8")}catch{return void 0}try{const parsed=JSON.parse(raw);if(typeof parsed.token!=="string"||parsed.token==="")return void 0;if(typeof parsed.pid!=="number"||!Number.isInteger(parsed.pid)||parsed.pid<=0)return void 0;if(typeof parsed.startedAt!=="number")return void 0;return{token:parsed.token,pid:parsed.pid,host:typeof parsed.host==="string"?parsed.host:"",port:typeof parsed.port==="number"?parsed.port:0,startedAt:parsed.startedAt,...typeof parsed.lane==="string"&&parsed.lane!==""?{lane:parsed.lane}:{}}}catch{return void 0}}function claimStartingMarker(marker,file){const filePath=file??startingMarkerPath();let descriptor;try{fs8.mkdirSync(path16.dirname(filePath),{recursive:true});descriptor=fs8.openSync(filePath,"wx",420);fs8.writeSync(descriptor,JSON.stringify(marker)+"\n",null,"utf8");fs8.fsyncSync(descriptor);descriptor=void 0;return true}catch{if(descriptor!==void 0){try{fs8.closeSync(descriptor)}catch{}}return false}}function clearStartingMarker(token,file){const filePath=file??startingMarkerPath();const current=readStartingMarker(filePath);if(current&¤t.token===token){try{fs8.unlinkSync(filePath)}catch{}}}function removeStartingMarker(file){try{fs8.unlinkSync(file??startingMarkerPath())}catch{}}function isPidAlive(pid){if(!Number.isInteger(pid)||pid<=0)return false;try{process.kill(pid,0);return true}catch(err2){return err2.code==="EPERM"}}function registryDirPath(){return path16.join(stateDir(),"instances")}function legacyRegistryFilePath(){return path16.join(stateDir(),"instances.json")}function safeReadJson(file){try{return JSON.parse(fs8.readFileSync(file,"utf8"))}catch{return void 0}}function coerceEntry(value){if(!value||typeof value!=="object")return void 0;const o=value;if(typeof o.instanceId!=="string"||o.instanceId==="")return void 0;const windows={};if(o.modelWindows&&typeof o.modelWindows==="object"){for(const[k2,v2]of Object.entries(o.modelWindows)){const n=Number(v2);if(Number.isFinite(n)&&n>0)windows[k2]=n}}const maxOutputs={};if(o.modelMaxOutputs&&typeof o.modelMaxOutputs==="object"){for(const[k2,v2]of Object.entries(o.modelMaxOutputs)){const n=Number(v2);if(Number.isFinite(n)&&n>0)maxOutputs[k2]=n}}return{instanceId:o.instanceId,pid:typeof o.pid==="number"?o.pid:0,port:typeof o.port==="number"?o.port:0,origin:typeof o.origin==="string"?o.origin:"",startedAt:typeof o.startedAt==="number"?o.startedAt:0,...typeof o.host==="string"&&o.host!==""?{host:o.host}:{},...typeof o.passthrough==="boolean"?{passthrough:o.passthrough}:{},...Array.isArray(o.mitmDomains)?{mitmDomains:o.mitmDomains.map(String)}:{},...Object.keys(windows).length>0?{modelWindows:windows}:{},...Object.keys(maxOutputs).length>0?{modelMaxOutputs:maxOutputs}:{},...typeof o.lane==="string"&&o.lane!==""?{lane:o.lane}:{},...typeof o.codeFingerprint==="string"&&o.codeFingerprint!==""?{codeFingerprint:o.codeFingerprint}:{},...typeof o.portReleasedAt==="number"&&Number.isFinite(o.portReleasedAt)?{portReleasedAt:o.portReleasedAt}:{},...typeof o.sessionsDir==="string"&&o.sessionsDir!==""?{sessionsDir:o.sessionsDir}:{}}}function readMarkerNames(){try{return fs8.readdirSync(registryDirPath())}catch{return[]}}function readAllRegistryEntries(){const seen=new Set;const out=[];for(const name2 of readMarkerNames()){if(!name2.endsWith(".json"))continue;const entry=coerceEntry(safeReadJson(path16.join(registryDirPath(),name2)));if(entry&&!seen.has(entry.instanceId)){seen.add(entry.instanceId);out.push(entry)}}const legacy=safeReadJson(legacyRegistryFilePath());if(legacy&&Array.isArray(legacy.instances)){for(const raw of legacy.instances){const entry=coerceEntry(raw);if(entry&&!seen.has(entry.instanceId)){seen.add(entry.instanceId);out.push(entry)}}}return out}function discoverLiveInstances(){const out=[];for(const e of readAllRegistryEntries()){if(!isPidAlive(e.pid))continue;out.push({origin:e.origin,instanceId:e.instanceId,pid:e.pid,startedAt:e.startedAt,host:e.host??"",port:e.port,passthrough:Boolean(e.passthrough),mitmDomains:e.mitmDomains??[],modelWindows:e.modelWindows??{},modelMaxOutputs:e.modelMaxOutputs,lane:e.lane,codeFingerprint:e.codeFingerprint})}return out}var scriptFingerprints,SPAWN_FINGERPRINT_ENV;var init_instance=__esm({"src/instance.ts"(){"use strict";init_config();init_paths();scriptFingerprints=new Map;SPAWN_FINGERPRINT_ENV="BILI_SPAWN_FINGERPRINT"}});import{createRequire}from"module";var require2;var init_driver=__esm({"src/storage/driver.ts"(){"use strict";require2=createRequire(import.meta.url)}});import{createHash as createHash6,randomBytes}from"crypto";import{existsSync as existsSync3,readFileSync as readFileSync5}from"fs";import{promises as fsp}from"fs";import{createRequire as createRequire2}from"module";import path22 from"path";import{gunzipSync}from"zlib";var ENGINE_SPECS,COOLDOWN_MS,PINNED_DIR_PREFIXES;var init_engine_bootstrap=__esm({"src/storage/engine-bootstrap.ts"(){"use strict";init_logger();init_paths();init_driver();init_knobs();init_update();init_upstream_proxy();ENGINE_SPECS=Object.freeze([{version:"13.0.3",sha512Base64:"RbOBxmLBG8uvFUc15X9+9SFemKcQ0WBuISBVkpuiaUB2qblC8UWlHEjdVVoZ8AdhSwmoEgsiXKfopX0CQxaACQ==",minNodeMajor:22,minNapiVersion:10},{version:"12.9.0",sha512Base64:"wqUv4Gm3toFpHDQmaKD4QhZm3g1DjUBI0yzS4UBl6lElUmXFYdTQmmEDpAFa5o8FiFiymURypEnfVHzILKaxqQ==",minNodeMajor:20,prebuild:{sha512Base64ByAbi:Object.freeze({"115":Object.freeze({"linux-x64":"fNMKurhPKb0ki9mnZJK9PVazCiRugcdmauo5qGjqQjUGIrdaVWrb4nlLwU7IiyppcfLu8n/qUsQ5CEZ36uoGaw==","linux-arm64":"7q7wZe0+5LLQt2YUkocGb41B9TvEMLKIaNI+CiQUQQ2DFBO1RPr3ixj/Gtb+0noMYHjJrqtqKUMO1xMQXnE0iw==","linuxmusl-x64":"GCriICDKw7K5dNjAVo8xFpSJXcYXXBAK9RDoeuSUv6rB5IVRP96IwxeynTy4Xc21l1507Efz+I2yy6FW5gKQ/w==","linuxmusl-arm64":"2OWfVP1nklnuR8ZfCwozJcLB0ZpOTRHqAkDpsLonEF5uHZMBnOAzGtd5d+nuPU+KaS5czciU0tXZFhsCUw7dbg==","darwin-x64":"tW2Vb19+Bh+PLfcGVnrERhc9Mk50Vi8HciIc0nwIJXlPm21xzKL6uEQHMoyKIAxF+vNXxDsUoJyNRg/TgCXjkA==","darwin-arm64":"H6jehr7s1D/RSTRplCL++hneLTgpqVzgzjrX/NJCsf0OMBSKNGCd9kMYAZJjMlp0IetS39sG5PTG7AcLCTQKeg==","win32-x64":"r+BAeN980mQEdIwDcrNU3iJqzAryuOyfeICFfYHuHVclonTr2L0IlzsaGp2D50KNWUeLQrIhBCFuNoT2+iBDTw==","win32-arm64":"jMSa36VrAiLsWFtnwWX+FEs4JWIjHeduVITY44ZcHsqn7BzPcMljL8LdJ0tVVGssV8x9PuqgIqMD5gFmzcYh9w=="}),"127":Object.freeze({"linux-x64":"jpVKlRCjwmKDIfohRK4Zf/potrKjl2CuvKiWm2SOL1eY7pTRQrGBc1DSEr4OBulYHE6PTl59w7hoAlzNOefG3g==","linux-arm64":"ei++r3DQbhwXsP97PHYENHnNd3jrai5dy11SCDZqzmqEm6mjloT1qwrpglVJmW4TLliYBJ8U9bMG/6Y8nbDBCQ==","linuxmusl-x64":"eFglLYVSmdQo7ehLh30dOF4H9csX92XIn1oKB3TdtTZ+7TTh7cfViO7TQIC4NPt6Ufbl3cos9y6/pU8FNL1dQg==","linuxmusl-arm64":"e72bURjJ4SYseIMY7uW1IkubTqzuKzD6NIVP0InsD8+DJBnRwi8+yIEEcODIK4xsFKSO6tE8TLuvPmetXEk8aA==","darwin-x64":"GxXg+WENfyP9DGnvOSMnPge+kDkEZmU8cF7EFOoFSzAFhEwYOBvFB4VTTqhZ6G4y54I7ufkjgkOxZmafdSOXOw==","darwin-arm64":"V1mPpKKnv3AvfZb/++CSOx49tmUi4fba4vORsD8GTaJVwvKmveJ/uPqXaEVhYQgDkao5VLiWL6gN2wk9rQXfPw==","win32-x64":"7chlb4LP9ETESK6djkGxDq4aDTTByiG1VoUwadJk7JZFhfn2u7vblPCulZaM2C3Ju3jHowc8LBKKQZiH52Uc5g==","win32-arm64":"0mD1nLGHG066cUFdIgMTEJfhbIeOgD52+dE0r8LAALarhU5JD0uyKPvpQH/V3rBjvwTOtaQtYqeEFgRj5NUL/g=="})})}}]);COOLDOWN_MS=6*60*60*1e3;PINNED_DIR_PREFIXES=ENGINE_SPECS.map(s3=>`better-sqlite3-${s3.version}`)}});import{existsSync as existsSync4,readFileSync as readFileSync6,statSync as statSync4,writeFileSync as writeFileSync2}from"fs";import{Worker as Worker2}from"worker_threads";var INTEGRITY_SYNC_THRESHOLD_BYTES;var init_integrity_check=__esm({"src/storage/integrity-check.ts"(){"use strict";init_logger();init_runtime_status();init_schema();INTEGRITY_SYNC_THRESHOLD_BYTES=512*1024*1024}});var init_sqlite_errors=__esm({"src/storage/sqlite-errors.ts"(){"use strict"}});import{createHash as createHash7}from"crypto";import{mkdirSync as mkdirSync4,writeFileSync as writeFileSync3,appendFileSync as appendFileSync2,readFileSync as readFileSync7,existsSync as existsSync5,unlinkSync as unlinkSync2,statSync as statSync5}from"fs";import{dirname as dirname2,join}from"path";var EXT_VALUE_MAX_BYTES;var init_store=__esm({"src/storage/store.ts"(){"use strict";init_logger();init_driver();init_schema();init_identity();init_runtime_status();init_integrity_check();init_sqlite_errors();init_instance();EXT_VALUE_MAX_BYTES=4*1024*1024}});function createInitialState(){return{blocks:[],messageRefs:{byRaw:{},byRef:{}},tokenSnapshot:{},nudge:{lastPerMessageNudgeTokens:0,lastNudgeShownTokens:0,baselineTokens:0,anchors:{},lastShownByTier:{}},stats:{tokensCompressed:0,compressionCount:0,absorbedTokens:0,storedCount:0,retrievalCount:0},absorbed:[],rules:[],nextRuleId:1,nextBlockId:1,nextRunId:1}}var init_state=__esm({"kernel/src/state.ts"(){"use strict"}});function isResponsesTurnSeparatorId(id){return id.startsWith(RESPONSES_TURN_SEPARATOR_ID_PREFIX)}function scrubTurnSeparatorIds(blocks){let removed=0;for(const block of blocks){for(const key of["directMessageIds","effectiveMessageIds"]){const ids=block[key];if(!ids)continue;const kept=ids.filter(id=>!isResponsesTurnSeparatorId(id));if(kept.length!==ids.length){removed+=ids.length-kept.length;block[key]=kept}}}return removed}var RESPONSES_TURN_SEPARATOR_ID_PREFIX;var init_turn_separator=__esm({"src/turn-separator.ts"(){"use strict";RESPONSES_TURN_SEPARATOR_ID_PREFIX="acp_turn_sep_"}});function mergeState(parsed){const fresh=createInitialState();return{blocks:(()=>{const blocks=parsed.blocks??fresh.blocks;scrubTurnSeparatorIds(blocks);return blocks})(),messageRefs:parsed.messageRefs??fresh.messageRefs,nudge:{...fresh.nudge,...parsed.nudge??{}},stats:{...fresh.stats,...parsed.stats??{}},nextBlockId:parsed.nextBlockId??fresh.nextBlockId,nextRunId:parsed.nextRunId??fresh.nextRunId,tokenSnapshot:parsed.tokenSnapshot??fresh.tokenSnapshot,lastPassIds:parsed.lastPassIds??fresh.lastPassIds,hiddenOrphanRefs:parsed.hiddenOrphanRefs??fresh.hiddenOrphanRefs,deadRefs:parsed.deadRefs??fresh.deadRefs,refLedgerAligned:parsed.refLedgerAligned??fresh.refLedgerAligned,terminalStreak:parsed.terminalStreak??fresh.terminalStreak,nextRuleId:parsed.nextRuleId??fresh.nextRuleId,absorbed:parsed.absorbed??fresh.absorbed,rules:parsed.rules??fresh.rules,sweptOrphanCallIds:parsed.sweptOrphanCallIds??fresh.sweptOrphanCallIds,pendingOrphanSweepMinRef:parsed.pendingOrphanSweepMinRef??fresh.pendingOrphanSweepMinRef,emergencyTruncateLatch:parsed.emergencyTruncateLatch??fresh.emergencyTruncateLatch,renderDeferredRefs:parsed.renderDeferredRefs??fresh.renderDeferredRefs,viewLatches:parsed.viewLatches??fresh.viewLatches,tsStamps:parsed.tsStamps??fresh.tsStamps,viewLatchConfigDigest:parsed.viewLatchConfigDigest??fresh.viewLatchConfigDigest}}var COMPRESSION_STATE_FIELDS;var init_state_hydration=__esm({"src/state-hydration.ts"(){"use strict";init_state();init_turn_separator();COMPRESSION_STATE_FIELDS=Object.keys(mergeState(createInitialState()))}});var init_ingest=__esm({"src/storage/ingest.ts"(){"use strict";init_store();init_identity();init_state_hydration()}});var init_backend=__esm({"src/storage/backend.ts"(){"use strict";init_store()}});import{createHash as createHash8}from"crypto";var init_canonical=__esm({"src/storage/canonical.ts"(){"use strict"}});import path23 from"path";var init_shadow=__esm({"src/storage/shadow.ts"(){"use strict";init_logger();init_ingest();init_knobs();init_store();init_backend();init_canonical();init_runtime_status();init_knobs()}});function freshState(){return{requested:null,encryptionBlocked:false,persistDisabled:false,sidecar:null,sidecarOpenError:null,bootstrap:null,integrity:null,secondProcess:null,splitBrain:null,splitBrainAcks:new Map,backup:null}}var state;var init_runtime_status=__esm({"src/storage/runtime-status.ts"(){"use strict";init_engine_bootstrap();init_knobs();init_logger();init_text_safe();init_driver();init_shadow();state=freshState()}});import{AsyncLocalStorage as AsyncLocalStorage5}from"async_hooks";import{readFileSync as readFileSync10}from"fs";import{homedir as homedir2}from"os";import path29 from"path";import{fileURLToPath as fileURLToPath5}from"url";init_log_mask();init_logger();init_paths();init_version();import{appendFileSync,mkdirSync as mkdirSync2}from"fs";import path4 from"path";function logHostEvent(level,origin,msg){try{const file=defaultLogFile();mkdirSync2(path4.dirname(file),{recursive:true});const safe=maskUrlsForDiagnostics(maskIpsInText(redactSecretsInText(msg)));appendFileSync(file,`${logTimestamp()} [${level}] [v=${VERSION}] ${origin?`${origin} `:""}${safe}
|
|
128
128
|
`)}catch{}}init_update();import{readFileSync as readFileSync4}from"fs";import path13 from"path";function maxTestedVersion(check,env=process.env){const raw=env[check.knobEnv];if(raw===void 0)return check.defaultMaxTested;const v2=raw.trim();return v2.length===0?void 0:v2}function walkUpNodeModuleVersion(startDir,pkgJsonRelPaths,maxHops=8){const candidates=(Array.isArray(pkgJsonRelPaths)?pkgJsonRelPaths:[pkgJsonRelPaths]).map(rel=>rel.split("/").filter(Boolean)).filter(parts=>parts.length>0);let dir=startDir;for(let hop=0;hop<maxHops;hop+=1){for(const parts of candidates){try{const doc=JSON.parse(readFileSync4(path13.join(dir,...parts),"utf8"));if(typeof doc.version==="string"&&doc.version.length>0)return doc.version}catch{}}const up=path13.dirname(dir);if(up===dir)break;dir=up}return void 0}var DSH_BUILD_CHECK={label:"dsh",pkgId:"@deepseek-ai/dsh",knobEnv:"BILI_DSH_MAX_TESTED_VERSION",defaultMaxTested:"0.2.0-rc.2"};function newerClientBuildMessage(check,found,env=process.env){const cap=maxTestedVersion(check,env);if(found===void 0||cap===void 0)return null;if(!isVersionNewer(found,cap))return null;return`[${check.label}] You are running ${check.pkgId} v${found} \u2014 NEWER than the newest build billion-context has tested against (v${cap}). Everything keeps running as usual, but compression may misbehave on a build we have not tested; if you hit compression conflicts or lose history, roll the client back to v${cap} until support lands. \uFF08\u5F53\u524D\u8FD0\u884C\u7684 ${check.pkgId} v${found} \u9AD8\u4E8E\u6211\u4EEC\u6D4B\u8BD5\u8FC7\u7684\u6700\u9AD8\u7248\u672C v${cap}\uFF1A\u529F\u80FD\u7167\u5E38\u8FD0\u884C\uFF0C\u4F46\u538B\u7F29\u80FD\u529B\u5728\u8BE5\u6784\u5EFA\u4E0A\u672A\u7ECF\u6211\u4EEC\u9A8C\u8BC1\u3001\u53EF\u80FD\u4E0D\u7A33\u5B9A\uFF1B\u5982\u51FA\u73B0\u538B\u7F29\u51B2\u7A81\u6216\u5386\u53F2\u4E22\u5931\uFF0C\u8BF7\u5148\u5C06\u5BA2\u6237\u7AEF\u56DE\u6EDA\u5230 v${cap}\u3002\uFF09`}function emitNewerClientBuildNote(check,found,env){const msg=newerClientBuildMessage(check,found,env??process.env);if(msg===null)return false;logHostEvent("warn","[native-client]",msg);console.warn(msg);return true}import{createHash as createHash14,randomUUID as randomUUID6}from"crypto";import fs14 from"fs";import net3 from"net";import os9 from"os";import path27 from"path";import{createRequire as createRequire3}from"module";import{Worker as Worker3}from"worker_threads";import{pathToFileURL as pathToFileURL2}from"url";import{execFileSync as execFileSync5,spawn as spawn2,spawnSync as spawnSync3}from"child_process";import tls4 from"tls";var import_node_forge=__toESM(require_lib(),1);init_paths();init_logger();import crypto2 from"crypto";import{execFileSync as execFileSync3}from"child_process";import fs6 from"fs";import os5 from"os";import path14 from"path";import tls3 from"tls";var COMBINED_MAX_AGE_MS=24*60*60*1e3;var PLATFORM_CA_CANDIDATES=process.platform==="darwin"?["/etc/ssl/cert.pem","/private/etc/ssl/cert.pem"]:process.platform==="win32"?[]:["/etc/ssl/certs/ca-certificates.crt","/etc/pki/tls/certs/ca-bundle.crt","/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem","/etc/ssl/ca-bundle.pem","/etc/ssl/cert.pem"];init_upstream_proxy();init_client_config();init_vertex();import fs7 from"fs";import os6 from"os";import path15 from"path";init_util();init_log_mask();init_knobs();init_mitm_domains();init_private_host();init_upstream_fail();init_instance();var TWIN_ADOPT_EXIT_CODE=3;import net2 from"net";var CONNECT_PROBE_TIMEOUT_MS=2e3;function originHostPort(origin){try{const u2=new URL(origin);if(u2.protocol!=="http:"&&u2.protocol!=="https:")return void 0;const host=u2.hostname.replace(/^\[|\]$/g,"");if(host==="")return void 0;const port=u2.port!==""?Number(u2.port):u2.protocol==="https:"?443:80;return Number.isInteger(port)&&port>0?{host,port}:void 0}catch{return void 0}}function attemptConnect(host,port,timeoutMs){return new Promise(resolve=>{let settled=false;const settle=outcome=>{if(settled)return;settled=true;socket.destroy();resolve(outcome)};const socket=net2.connect({host,port});socket.setTimeout(timeoutMs);socket.once("connect",()=>settle({ok:true}));socket.once("timeout",()=>settle({ok:false,detail:`connect timeout after ${timeoutMs}ms`}));socket.once("error",err2=>settle({ok:false,detail:typeof err2.code==="string"&&err2.code.length>0?err2.code:String(err2.message??err2)}))})}async function tcpConnectable(origin,timeoutMs=CONNECT_PROBE_TIMEOUT_MS){const hp=originHostPort(origin);if(hp===void 0)return false;const outcome=await attemptConnect(hp.host,hp.port,timeoutMs);return outcome.ok}init_main();init_client_config();init_vertex();init_config();init_instance();init_dsh_channel();init_pi_channel();init_update();import fs12 from"fs";import path21 from"path";import os8 from"os";import crypto4 from"crypto";import{execFileSync as execFileSync4,spawnSync as spawnSync2}from"child_process";import{fileURLToPath as fileURLToPath4}from"url";import fs9 from"fs";import path18 from"path";init_client_config();init_instance();import path17 from"path";import{fileURLToPath as fileURLToPath3}from"url";function nativeProxyScriptPath(fromUrl=import.meta.url){return path17.resolve(path17.dirname(fileURLToPath3(fromUrl)),"..","index.js")}function nativeBootstrapGate(env,optOutKey){if(env.BILLION_CONTEXT_PLUGIN==="0")return false;if(env[optOutKey]==="0")return false;if(env.BILLION_CONTEXT_PROXY!==void 0&&env.BILLION_CONTEXT_PROXY.trim().length>0)return false;if(env.BILI_PROVIDER_REWRITES!==void 0)return false;return true}function proxyEnvOrigin(env){const raw=env.BILLION_CONTEXT_PROXY;if(raw===void 0)return void 0;const url=raw.trim();if(url.length===0||!/^https?:\/\//i.test(url))return void 0;try{new URL(url)}catch{return void 0}return url.replace(/\/+$/,"")}function nativeAttachOrigin(env){const raw=env.BILLION_CONTEXT_ATTACH;if(raw===void 0)return void 0;const url=raw.trim();if(url.length===0||!/^https?:\/\//i.test(url))return void 0;try{new URL(url)}catch{return void 0}return url.replace(/\/+$/,"")}function envMillis(env,name2,fallback){const raw=env[name2];if(raw===void 0)return fallback;const n=Number(raw);return Number.isFinite(n)&&n>0?Math.floor(n):fallback}function markNativeHost(env,host){if(env.BILLION_CONTEXT_NATIVE===void 0||env.BILLION_CONTEXT_NATIVE.length===0){env.BILLION_CONTEXT_NATIVE=host}}function singleFlight(fn){let inFlight;return()=>{if(inFlight===void 0){inFlight=fn().finally(()=>{inFlight=void 0})}return inFlight}}function parseToolOutcome(value){return value==="applied"||value==="partial"||value==="refused"||value==="success"||value==="failure"?value:void 0}function parseBlocksCreated(value){return typeof value==="number"&&Number.isInteger(value)&&value>=0?value:void 0}function partialOutcomeNote(blocksCreated){const created=blocksCreated!==void 0?`${blocksCreated} block(s) created; `:"";return`[acp-result: PARTIAL \u2014 ${created}some requested range(s) were NOT folded. Retry ONLY the failed range(s) listed above; do not re-fold the ranges that were applied.]`}var MANIFEST_TIMEOUT_MS=5e3;var TOOL_TIMEOUT_MS=6e4;var TOOL_TIMEOUT_OVERHEAD_MARGIN_MS=3e4;var STATUS_TIMEOUT_MS=5e3;var ATTACH_HEALTH_DEADLINE_MS=15e3;var ATTACH_HEALTH_POLL_MS=250;function asciiHeaderValue(value){return/^[\x21-\x7e]{1,256}$/.test(value)?value:void 0}async function fetchJson(url,init,timeoutMs,externalSignal){const ac=new AbortController;if(externalSignal?.aborted)ac.abort();const timer=setTimeout(()=>ac.abort(),timeoutMs);const onExternalAbort=()=>ac.abort();externalSignal?.addEventListener("abort",onExternalAbort,{once:true});try{let res;try{res=await fetch(url,{...init,signal:ac.signal})}catch(err2){if(ac.signal.aborted&&!externalSignal?.aborted)throw new Error(`timeout after ${timeoutMs}ms: ${url}`);throw err2}const text=await res.text();let json=void 0;try{json=JSON.parse(text)}catch{json=void 0}return{ok:res.ok,status:res.status,json}}finally{clearTimeout(timer);externalSignal?.removeEventListener("abort",onExternalAbort)}}var manifestToolDurations=new Map;function recordManifestToolDuration(proxyBase,json){const caps=json?.capabilities?.externalSummary;const value=caps?.maxToolDurationMs;if(typeof value==="number"&&Number.isFinite(value)&&value>0)manifestToolDurations.set(proxyBase,value)}function effectiveToolTimeoutMs(proxyBase,tool){if(tool!=="compress")return TOOL_TIMEOUT_MS;const advertised=manifestToolDurations.get(proxyBase);if(advertised===void 0)return TOOL_TIMEOUT_MS;return Math.max(TOOL_TIMEOUT_MS,advertised+TOOL_TIMEOUT_OVERHEAD_MARGIN_MS)}async function fetchManifest(proxyBase,format2="anthropic"){const{ok,status,json}=await fetchJson(`${proxyBase}/__bili/plugin/manifest`,void 0,MANIFEST_TIMEOUT_MS);if(!ok||!json||typeof json!=="object")throw new Error(`manifest fetch failed: ${status}`);recordManifestToolDuration(proxyBase,json);if(format2==="openai"){const data2=json;const tools2=[];for(const t of data2.tools?.openai??[]){const name2=t.name??t.function?.name;if(typeof name2!=="string"||name2.length===0)continue;tools2.push({name:name2,description:t.description??t.function?.description,inputSchema:t.parameters??t.function?.parameters??{type:"object",properties:{}}})}if(tools2.length===0)throw new Error("manifest served no openai tools");return tools2}const data=json;const tools=(data.tools?.anthropic??[]).filter(t=>typeof t.name==="string");if(tools.length===0)throw new Error("manifest served no anthropic tools");return tools.map(t=>({name:t.name,description:t.description,inputSchema:t.input_schema??{type:"object",properties:{}}}))}async function reportRuntimeInfo(proxyBase,info){const{ok,status}=await fetchJson(`${proxyBase}/__bili/plugin/runtime-info`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(info)},STATUS_TIMEOUT_MS);if(!ok)throw new Error(`runtime-info report failed (${status})`)}async function reportAttributionHealth(proxyBase,health){const{ok,status}=await fetchJson(`${proxyBase}/__bili/plugin/attribution`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(health)},STATUS_TIMEOUT_MS);if(!ok)throw new Error(`attribution report failed (${status})`)}async function forwardTool(proxyBase,conversationId,tool,args,signal,nativeCaller=false,toolCallId){const body={conversationId,tool,args:args??{}};if(toolCallId!==void 0)body.toolCallId=toolCallId;if(nativeCaller&&conversationId)body.nativeCaller=true;const{ok,status,json}=await fetchJson(`${proxyBase}/__bili/plugin/tool`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(body)},effectiveToolTimeoutMs(proxyBase,tool),signal);const data=json;if(!ok||!data?.ok){throw new Error(`bili proxy tool ${tool} failed (${status}): ${data?.error??"unknown error"}`)}const outcome=parseToolOutcome(data.outcome);const blocksCreated=parseBlocksCreated(data.blocksCreated);let text=data.result??"";if(outcome==="partial")text+=`
|
|
129
|
-
${partialOutcomeNote(blocksCreated)}`;const out={text,failed:outcome==="failure"||outcome==="refused"};if(outcome!==void 0)out.outcome=outcome;if(blocksCreated!==void 0)out.blocksCreated=blocksCreated;return out}async function fetchStatus(proxyBase,conversationId){const{ok,json}=await fetchJson(`${proxyBase}/__bili/plugin/status?conversationId=${encodeURIComponent(conversationId)}`,void 0,STATUS_TIMEOUT_MS);if(!ok||!json||typeof json!=="object")return void 0;return json}async function fetchStatusLatest(proxyBase){const{ok,json}=await fetchJson(`${proxyBase}/__bili/plugin/status?conversationId=dsh&fallback=latest`,void 0,STATUS_TIMEOUT_MS);if(!ok||!json||typeof json!=="object")return void 0;return json}async function fetchProxyVersion(proxyBase,init){const{ok,json}=await fetchJson(`${proxyBase}/__bili/plugin/manifest`,init,STATUS_TIMEOUT_MS);if(!ok||!json||typeof json!=="object")return void 0;const m2=json;const version=m2.version;if(typeof version!=="string"||version.length===0)return void 0;const commit=m2.commit;if(typeof commit==="string"&&commit.length>0)return`${version} (${commit})`;return version}async function waitForProxyVersion(proxyBase){const limit=envMillis(process.env,"BILI_ATTACH_HEALTH_DEADLINE_MS",ATTACH_HEALTH_DEADLINE_MS);const startedAt=Date.now();for(;;){const version=await fetchProxyVersion(proxyBase).catch(()=>void 0);if(version!==void 0)return proxyBase;const elapsed=Date.now()-startedAt;if(elapsed>=limit)return void 0;await new Promise(r=>setTimeout(r,Math.min(ATTACH_HEALTH_POLL_MS,limit-elapsed)))}}init_client_config();import fs10 from"fs";import path19 from"path";import crypto3 from"crypto";import fs11 from"fs";import path20 from"path";init_instance();init_config();var DSH_COMPACTION_VERDICT_KEY="__BILI_DSH_COMPACTION_VERDICT__";function declareDshCompactionActive(){globalThis[DSH_COMPACTION_VERDICT_KEY]="active"}var DSH_COMPACTION_GATE_TELEMETRY_KEY="__BILI_DSH_COMPACTION_GATE_TELEMETRY__";function dshCompactionGateTelemetry(){const record=globalThis[DSH_COMPACTION_GATE_TELEMETRY_KEY];return record===void 0?null:record}function detectCompactionOverlayGap(ctx){if(typeof ctx.on!=="function")return"no-config-hook";if(typeof ctx.reflect?.provide!=="function")return"no-service-provide";return null}init_logger();init_version();import http from"http";var PERMISSION_DENIED_SIGNATURE=/\b(?:EPERM|EACCES|EROFS|EBUSY)\b|operation not permitted|permission denied|read-only file system|readonly database/i;var BILI_DATA_PATH_SIGNATURE=/billion-context|combined-ca\.pem|index\.db|\.local[\\/](?:share|state)[\\/]/i;function classifyStartupFailure(sample){if(!PERMISSION_DENIED_SIGNATURE.test(sample)||!BILI_DATA_PATH_SIGNATURE.test(sample))return"";return"possible cause: the proxy could not write its own data files (EPERM/EACCES/read-only on the bili data dir) \u2014 most often antivirus (e.g. Windows Defender Controlled Folder Access) blocking the node runtime, a read-only flag or ACL on the directory, or another process holding the files; add the bili data dir and the node runtime to AV exclusions (see #367) or fix the directory permissions, then retry"}var MAX_HOLD_MS=10*6e4;init_update();init_win_cmd();init_client_config();init_config();init_registry();init_config();init_logger();function parseLauncherModelWindows(raw){if(!raw)return{};try{const parsed=JSON.parse(raw);if(!parsed||typeof parsed!=="object"||Array.isArray(parsed))return{};const out={};for(const[id,v2]of Object.entries(parsed)){if(typeof v2==="number"&&Number.isFinite(v2)&&v2>0)out[id]=Math.floor(v2)}return out}catch{return{}}}var LAUNCHER_MODEL_WINDOWS=parseLauncherModelWindows(process.env.BILI_LAUNCHER_MODEL_WINDOWS);function parseLauncherModelMaxOutputs(raw){if(!raw)return{};try{const parsed=JSON.parse(raw);if(!parsed||typeof parsed!=="object"||Array.isArray(parsed))return{};const out={};for(const[id,v2]of Object.entries(parsed)){if(typeof v2==="number"&&Number.isFinite(v2)&&v2>0)out[id]=Math.floor(v2)}return out}catch{return{}}}var LAUNCHER_MODEL_MAX_OUTPUTS=parseLauncherModelMaxOutputs(process.env.BILI_LAUNCHER_MODEL_MAX_OUTPUTS);init_vertex();init_client_config();init_logger();import{createHash as createHash13}from"crypto";import{createHash as createHash12,randomUUID as randomUUID4}from"crypto";import{closeSync,existsSync as existsSync6,fsyncSync,mkdirSync as mkdirSync6,openSync,readdirSync,readFileSync as readFileSync8,renameSync as renameSync2,rmSync,statSync as statSync6,writeFileSync as writeFileSync5}from"fs";import{readdir as readdir2,readFile as readFile4,rm as rm2}from"fs/promises";import*as path24 from"path";init_paths();init_knobs();init_logger();init_runtime_status();init_version();import{createCipheriv,createDecipheriv,randomBytes as randomBytes2}from"crypto";import*as zlib from"zlib";var ab=ArrayBuffer;var u8=Uint8Array;var u16=Uint16Array;var i16=Int16Array;var i32=Int32Array;var slc=function(v2,s3,e){if(u8.prototype.slice)return u8.prototype.slice.call(v2,s3,e);if(s3==null||s3<0)s3=0;if(e==null||e>v2.length)e=v2.length;var n=new u8(e-s3);n.set(v2.subarray(s3,e));return n};var fill=function(v2,n,s3,e){if(u8.prototype.fill)return u8.prototype.fill.call(v2,n,s3,e);if(s3==null||s3<0)s3=0;if(e==null||e>v2.length)e=v2.length;for(;s3<e;++s3)v2[s3]=n;return v2};var cpw=function(v2,t,s3,e){if(u8.prototype.copyWithin)return u8.prototype.copyWithin.call(v2,t,s3,e);if(s3==null||s3<0)s3=0;if(e==null||e>v2.length)e=v2.length;while(s3<e){v2[t++]=v2[s3++]}};var ec=["invalid zstd data","window size too large (>2046MB)","invalid block type","FSE accuracy too high","match distance too far back","unexpected EOF"];var err=function(ind,msg,nt2){var e=new Error(msg||ec[ind]);e.code=ind;if(Error.captureStackTrace)Error.captureStackTrace(e,err);if(!nt2)throw e;return e};var rb=function(d,b2,n){var i=0,o=0;for(;i<n;++i)o|=d[b2++]<<(i<<3);return o};var b4=function(d,b2){return(d[b2]|d[b2+1]<<8|d[b2+2]<<16|d[b2+3]<<24)>>>0};var rzfh=function(dat,w2){var n3=dat[0]|dat[1]<<8|dat[2]<<16;if(n3==3126568&&dat[3]==253){var flg=dat[4];var ss2=flg>>5&1,cc=flg>>2&1,df=flg&3,fcf=flg>>6;if(flg&8)err(0);var bt2=6-ss2;var db=df==3?4:df;var di2=rb(dat,bt2,db);bt2+=db;var fsb=fcf?1<<fcf:ss2;var fss=rb(dat,bt2,fsb)+(fcf==1&&256);var ws2=fss;if(!ss2){var wb=1<<10+(dat[5]>>3);ws2=wb+(wb>>3)*(dat[5]&7)}if(ws2>2145386496)err(1);var buf=new u8((w2==1?fss||ws2:w2?0:ws2)+12);buf[0]=1,buf[4]=4,buf[8]=8;return{b:bt2+fsb,y:0,l:0,d:di2,w:w2&&w2!=1?w2:buf.subarray(12),e:ws2,o:new i32(buf.buffer,0,3),u:fss,c:cc,m:Math.min(131072,ws2)}}else if((n3>>4|dat[3]<<20)==25481893){return b4(dat,4)+8}err(0)};var msb=function(val){var bits=0;for(;1<<bits<=val;++bits);return bits-1};var rfse=function(dat,bt2,mal){var tpos=(bt2<<3)+4;var al=(dat[bt2]&15)+5;if(al>mal)err(3);var sz=1<<al;var probs=sz,sym=-1,re2=-1,i=-1,ht2=sz;var buf=new ab(512+(sz<<2));var freq=new i16(buf,0,256);var dstate=new u16(buf,0,256);var nstate=new u16(buf,512,sz);var bb1=512+(sz<<1);var syms=new u8(buf,bb1,sz);var nbits=new u8(buf,bb1+sz);while(sym<255&&probs>0){var bits=msb(probs+1);var cbt=tpos>>3;var msk=(1<<bits+1)-1;var val=(dat[cbt]|dat[cbt+1]<<8|dat[cbt+2]<<16)>>(tpos&7)&msk;var msk1fb=(1<<bits)-1;var msv=msk-probs-1;var sval=val&msk1fb;if(sval<msv)tpos+=bits,val=sval;else{tpos+=bits+1;if(val>msk1fb)val-=msv}freq[++sym]=--val;if(val==-1){probs+=val;syms[--ht2]=sym}else probs-=val;if(!val){do{var rbt=tpos>>3;re2=(dat[rbt]|dat[rbt+1]<<8)>>(tpos&7)&3;tpos+=2;sym+=re2}while(re2==3)}}if(sym>255||probs)err(0);var sympos=0;var sstep=(sz>>1)+(sz>>3)+3;var smask=sz-1;for(var s3=0;s3<=sym;++s3){var sf=freq[s3];if(sf<1){dstate[s3]=-sf;continue}for(i=0;i<sf;++i){syms[sympos]=s3;do{sympos=sympos+sstep&smask}while(sympos>=ht2)}}if(sympos)err(0);for(i=0;i<sz;++i){var ns2=dstate[syms[i]]++;var nb=nbits[i]=al-msb(ns2);nstate[i]=(ns2<<nb)-sz}return[tpos+7>>3,{b:al,s:syms,n:nbits,t:nstate}]};var rhu=function(dat,bt2){var i=0,wc=-1;var buf=new u8(292),hb=dat[bt2];var hw=buf.subarray(0,256);var rc=buf.subarray(256,268);var ri2=new u16(buf.buffer,268);if(hb<128){var _a=rfse(dat,bt2+1,6),ebt=_a[0],fdt=_a[1];bt2+=hb;var epos=ebt<<3;var lb=dat[bt2];if(!lb)err(0);var st1=0,st2=0,btr1=fdt.b,btr2=btr1;var fpos=(++bt2<<3)-8+msb(lb);for(;;){fpos-=btr1;if(fpos<epos)break;var cbt=fpos>>3;st1+=(dat[cbt]|dat[cbt+1]<<8)>>(fpos&7)&(1<<btr1)-1;hw[++wc]=fdt.s[st1];fpos-=btr2;if(fpos<epos)break;cbt=fpos>>3;st2+=(dat[cbt]|dat[cbt+1]<<8)>>(fpos&7)&(1<<btr2)-1;hw[++wc]=fdt.s[st2];btr1=fdt.n[st1];st1=fdt.t[st1];btr2=fdt.n[st2];st2=fdt.t[st2]}if(++wc>255)err(0)}else{wc=hb-127;for(;i<wc;i+=2){var byte=dat[++bt2];hw[i]=byte>>4;hw[i+1]=byte&15}++bt2}var wes=0;for(i=0;i<wc;++i){var wt2=hw[i];if(wt2>11)err(0);wes+=wt2&&1<<wt2-1}var mb=msb(wes)+1;var ts2=1<<mb;var rem=ts2-wes;if(rem&rem-1)err(0);hw[wc++]=msb(rem)+1;for(i=0;i<wc;++i){var wt2=hw[i];++rc[hw[i]=wt2&&mb+1-wt2]}var hbuf=new u8(ts2<<1);var syms=hbuf.subarray(0,ts2),nb=hbuf.subarray(ts2);ri2[mb]=0;for(i=mb;i>0;--i){var pv=ri2[i];fill(nb,i,pv,ri2[i-1]=pv+rc[i]*(1<<mb-i))}if(ri2[0]!=ts2)err(0);for(i=0;i<wc;++i){var bits=hw[i];if(bits){var code=ri2[bits];fill(syms,i,code,ri2[bits]=code+(1<<mb-bits))}}return[bt2,{n:nb,b:mb,s:syms}]};var dllt=rfse(new u8([81,16,99,140,49,198,24,99,12,33,196,24,99,102,102,134,70,146,4]),0,6)[1];var dmlt=rfse(new u8([33,20,196,24,99,140,33,132,16,66,8,33,132,16,66,8,33,68,68,68,68,68,68,68,68,36,9]),0,6)[1];var doct=rfse(new u8([32,132,16,66,102,70,68,68,68,68,36,73,2]),0,5)[1];var b2bl=function(b2,s3){var len=b2.length,bl=new i32(len);for(var i=0;i<len;++i){bl[i]=s3;s3+=1<<b2[i]}return bl};var llb=new u8(new i32([0,0,0,0,16843009,50528770,134678020,202050057,269422093]).buffer,0,36);var llbl=b2bl(llb,0);var mlb=new u8(new i32([0,0,0,0,0,0,0,0,16843009,50528770,117769220,185207048,252579084,16]).buffer,0,53);var mlbl=b2bl(mlb,3);var dhu=function(dat,out,hu){var len=dat.length,ss2=out.length,lb=dat[len-1],msk=(1<<hu.b)-1,eb=-hu.b;if(!lb)err(0);var st2=0,btr=hu.b,pos=(len<<3)-8+msb(lb)-btr,i=-1;for(;pos>eb&&i<ss2;){var cbt=pos>>3;var val=(dat[cbt]|dat[cbt+1]<<8|dat[cbt+2]<<16)>>(pos&7);st2=(st2<<btr|val)&msk;out[++i]=hu.s[st2];pos-=btr=hu.n[st2]}if(pos!=eb||i+1!=ss2)err(0)};var dhu4=function(dat,out,hu){var bt2=6;var ss2=out.length,sz1=ss2+3>>2,sz2=sz1<<1,sz3=sz1+sz2;dhu(dat.subarray(bt2,bt2+=dat[0]|dat[1]<<8),out.subarray(0,sz1),hu);dhu(dat.subarray(bt2,bt2+=dat[2]|dat[3]<<8),out.subarray(sz1,sz2),hu);dhu(dat.subarray(bt2,bt2+=dat[4]|dat[5]<<8),out.subarray(sz2,sz3),hu);dhu(dat.subarray(bt2),out.subarray(sz3),hu)};var rzb=function(dat,st2,out){var _a;var bt2=st2.b;var b0=dat[bt2],btype=b0>>1&3;st2.l=b0&1;var sz=b0>>3|dat[bt2+1]<<5|dat[bt2+2]<<13;var ebt=(bt2+=3)+sz;if(btype==1){if(bt2>=dat.length)return;st2.b=bt2+1;if(out){fill(out,dat[bt2],st2.y,st2.y+=sz);return out}return fill(new u8(sz),dat[bt2])}if(ebt>dat.length)return;if(btype==0){st2.b=ebt;if(out){out.set(dat.subarray(bt2,ebt),st2.y);st2.y+=sz;return out}return slc(dat,bt2,ebt)}if(btype==2){var b3=dat[bt2],lbt=b3&3,sf=b3>>2&3;var lss=b3>>4,lcs=0,s4=0;if(lbt<2){if(sf&1)lss|=dat[++bt2]<<4|(sf&2&&dat[++bt2]<<12);else lss=b3>>3}else{s4=sf;if(sf<2)lss|=(dat[++bt2]&63)<<4,lcs=dat[bt2]>>6|dat[++bt2]<<2;else if(sf==2)lss|=dat[++bt2]<<4|(dat[++bt2]&3)<<12,lcs=dat[bt2]>>2|dat[++bt2]<<6;else lss|=dat[++bt2]<<4|(dat[++bt2]&63)<<12,lcs=dat[bt2]>>6|dat[++bt2]<<2|dat[++bt2]<<10}++bt2;var buf=out?out.subarray(st2.y,st2.y+st2.m):new u8(st2.m);var spl=buf.length-lss;if(lbt==0)buf.set(dat.subarray(bt2,bt2+=lss),spl);else if(lbt==1)fill(buf,dat[bt2++],spl);else{var hu=st2.h;if(lbt==2){var hud=rhu(dat,bt2);lcs+=bt2-(bt2=hud[0]);st2.h=hu=hud[1]}else if(!hu)err(0);(s4?dhu4:dhu)(dat.subarray(bt2,bt2+=lcs),buf.subarray(spl),hu)}var ns2=dat[bt2++];if(ns2){if(ns2==255)ns2=(dat[bt2++]|dat[bt2++]<<8)+32512;else if(ns2>127)ns2=ns2-128<<8|dat[bt2++];var scm=dat[bt2++];if(scm&3)err(0);var dts=[dmlt,doct,dllt];for(var i=2;i>-1;--i){var md=scm>>(i<<1)+2&3;if(md==1){var rbuf=new u8([0,0,dat[bt2++]]);dts[i]={s:rbuf.subarray(2,3),n:rbuf.subarray(0,1),t:new u16(rbuf.buffer,0,1),b:0}}else if(md==2){_a=rfse(dat,bt2,9-(i&1)),bt2=_a[0],dts[i]=_a[1]}else if(md==3){if(!st2.t)err(0);dts[i]=st2.t[i]}}var _b=st2.t=dts,mlt=_b[0],oct=_b[1],llt=_b[2];var lb=dat[ebt-1];if(!lb)err(0);var spos=(ebt<<3)-8+msb(lb)-llt.b,cbt=spos>>3,oubt=0;var lst=(dat[cbt]|dat[cbt+1]<<8)>>(spos&7)&(1<<llt.b)-1;cbt=(spos-=oct.b)>>3;var ost=(dat[cbt]|dat[cbt+1]<<8)>>(spos&7)&(1<<oct.b)-1;cbt=(spos-=mlt.b)>>3;var mst=(dat[cbt]|dat[cbt+1]<<8)>>(spos&7)&(1<<mlt.b)-1;for(++ns2;--ns2;){var llc=llt.s[lst];var lbtr=llt.n[lst];var mlc=mlt.s[mst];var mbtr=mlt.n[mst];var ofc=oct.s[ost];var obtr=oct.n[ost];cbt=(spos-=ofc)>>3;var ofp=1<<ofc;var off=ofp+((dat[cbt]|dat[cbt+1]<<8|dat[cbt+2]<<16|dat[cbt+3]<<24)>>>(spos&7)&ofp-1);cbt=(spos-=mlb[mlc])>>3;var ml=mlbl[mlc]+((dat[cbt]|dat[cbt+1]<<8|dat[cbt+2]<<16)>>(spos&7)&(1<<mlb[mlc])-1);cbt=(spos-=llb[llc])>>3;var ll=llbl[llc]+((dat[cbt]|dat[cbt+1]<<8|dat[cbt+2]<<16)>>(spos&7)&(1<<llb[llc])-1);cbt=(spos-=lbtr)>>3;lst=llt.t[lst]+((dat[cbt]|dat[cbt+1]<<8)>>(spos&7)&(1<<lbtr)-1);cbt=(spos-=mbtr)>>3;mst=mlt.t[mst]+((dat[cbt]|dat[cbt+1]<<8)>>(spos&7)&(1<<mbtr)-1);cbt=(spos-=obtr)>>3;ost=oct.t[ost]+((dat[cbt]|dat[cbt+1]<<8)>>(spos&7)&(1<<obtr)-1);if(off>3){st2.o[2]=st2.o[1];st2.o[1]=st2.o[0];st2.o[0]=off-=3}else{var idx=off-(ll!=0);if(idx){off=idx==3?st2.o[0]-1:st2.o[idx];if(idx>1)st2.o[2]=st2.o[1];st2.o[1]=st2.o[0];st2.o[0]=off}else off=st2.o[0]}for(var i=0;i<ll;++i){buf[oubt+i]=buf[spl+i]}oubt+=ll,spl+=ll;var stin=oubt-off;if(stin<0){var len=-stin;var bs2=st2.e+stin;if(len>ml)len=ml;for(var i=0;i<len;++i){buf[oubt+i]=st2.w[bs2+i]}oubt+=len,ml-=len,stin=0}for(var i=0;i<ml;++i){buf[oubt+i]=buf[stin+i]}oubt+=ml}if(oubt!=spl){while(spl<buf.length){buf[oubt++]=buf[spl++]}}else oubt=buf.length;if(out)st2.y+=oubt;else buf=slc(buf,0,oubt)}else if(out){st2.y+=lss;if(spl){for(var i=0;i<lss;++i){buf[i]=buf[spl+i]}}}else if(spl)buf=slc(buf,spl);st2.b=ebt;return buf}err(2)};var cct=function(bufs,ol){if(bufs.length==1)return bufs[0];var buf=new u8(ol);for(var i=0,b2=0;i<bufs.length;++i){var chk=bufs[i];buf.set(chk,b2);b2+=chk.length}return buf};var Decompress=(function(){function Decompress2(ondata){this.ondata=ondata;this.c=[];this.l=0;this.z=0}Decompress2.prototype.push=function(chunk,final){if(typeof this.s=="number"){var sub=Math.min(chunk.length,this.s);chunk=chunk.subarray(sub);this.s-=sub}var sl=chunk.length;var ncs=sl+this.l;if(!this.s){if(final){if(!ncs){this.ondata(new u8(0),true);return}if(ncs<5)err(5)}else if(ncs<18){this.c.push(chunk);this.l=ncs;return}if(this.l){this.c.push(chunk);chunk=cct(this.c,ncs);this.c=[];this.l=0}if(typeof(this.s=rzfh(chunk))=="number")return this.push(chunk,final)}if(typeof this.s!="number"){if(ncs<(this.z||3)){if(final)err(5);this.c.push(chunk);this.l=ncs;return}if(this.l){this.c.push(chunk);chunk=cct(this.c,ncs);this.c=[];this.l=0}if(!this.z&&ncs<(this.z=chunk[this.s.b]&2?4:3+(chunk[this.s.b]>>3|chunk[this.s.b+1]<<5|chunk[this.s.b+2]<<13))){if(final)err(5);this.c.push(chunk);this.l=ncs;return}else this.z=0;for(;;){var blk=rzb(chunk,this.s);if(!blk){if(final)err(5);var adc=chunk.subarray(this.s.b);this.s.b=0;this.c.push(adc),this.l+=adc.length;return}else{this.ondata(blk,false);cpw(this.s.w,0,blk.length);this.s.w.set(blk,this.s.w.length-blk.length)}if(this.s.l){var rest=chunk.subarray(this.s.b);this.s=this.s.c*4;this.push(rest,final);return}}}else if(final)err(5)};return Decompress2})();var ENCRYPT_MAGIC=Buffer.from("BILIENC1","utf8");var ZSTD_MAGIC=Buffer.from("BILIZSTD1","utf8");var NONCE_LEN=12;var TAG_LEN=16;var ENCRYPT_HEADER_LEN=ENCRYPT_MAGIC.length+2+NONCE_LEN;var MIN_ENCRYPTED_LEN=ENCRYPT_HEADER_LEN+TAG_LEN;var PLAIN_HEADER_LEN=ZSTD_MAGIC.length+2;init_logger();init_billing();init_state_hydration();init_shadow();init_backend();init_ingest();init_store();init_logger();init_paths();import{randomUUID as randomUUID2}from"crypto";import{mkdirSync as mkdirSync5,writeFileSync as writeFileSync4}from"fs";import{dirname as dirname3,join as join2}from"path";init_knobs();import{createHash as createHash11,randomUUID as randomUUID3}from"crypto";import{AsyncLocalStorage as AsyncLocalStorage3}from"async_hooks";init_logger();import{createHash as createHash10}from"crypto";import{createHash as createHash9}from"crypto";init_logger();init_logger();init_billing();init_util();var BOOT_ID=randomUUID3();var SEAM_BODY_CAP=512*1024;var BODY_FULL_CAP=8*1024*1024;var captures=new AsyncLocalStorage3;var LEARNED_IMAGE_COST_TTL_MS=24*60*60*1e3;var{join:join4}=path24;init_version();init_knobs();init_config();init_config();init_paths();init_logger();init_external_summary_settings();import*as path25 from"path";init_turn_separator();init_turn_separator();var ABORT_REANCHOR_MAX_AGE_MS=30*60*1e3;var MAX_SESSIONS=maxSessions();var MAX_RESIDENT_BYTES=sessionResidentMaxBytes();var SPLIT_CANARY_FRESH_MS=10*60*1e3;import{randomUUID as randomUUID5}from"crypto";init_knobs();var CODEX_FORGED_HANDOFF_HEADER="[bili] context summary after compaction:";var FORGED_SUMMARY_HEADER="[Compressed conversation section]";init_client_config();import fs13 from"fs";import path26 from"path";init_dsh_channel();var SCAN_CACHE_TTL_MS=5*60*1e3;var CONFLICT_ACTIVE_WINDOW_MS=7*24*60*60*1e3;var LAUNCHER_DEFAULT_HOST="127.0.0.1";var HEALTH_PATH="/__bili/health";var HEALTH_POLL_INTERVAL_MS=200;var SPAWN_WAIT_MS=envMillis(process.env,"BILI_SPAWN_WAIT_MS",2e4);var SLOW_START_GRACE_MS=envMillis(process.env,"BILI_SLOW_START_GRACE_MS",4e4);var SPAWN_BUDGET_MS=SPAWN_WAIT_MS+SLOW_START_GRACE_MS;var PROBE_TIMEOUT_MS=1500;var STARTING_MARKER_TTL_MS=SPAWN_BUDGET_MS+3e4;var POST_EXIT_REDISCOVERY_MS=3e3;var DEFAULT_MITM_DOMAIN_SET=new Set(DEFAULT_MITM_DOMAINS.map(d=>d.toLowerCase()));function proxyOrigin(host,port){return`http://${host}:${port}`}function healthUrl(origin){return origin+HEALTH_PATH}async function defaultFetch(url){const ctrl=new AbortController;const t=setTimeout(()=>ctrl.abort(),PROBE_TIMEOUT_MS);try{const res=await fetch(url,{signal:ctrl.signal});return{ok:res.ok}}catch{return{ok:false}}finally{clearTimeout(t)}}async function probeHealth(origin,fetchImpl){try{const{ok}=await fetchImpl(healthUrl(origin));return ok}catch{return false}}function describeProbeFailure(err2){const e=err2;const code=e?.cause?.code??e?.code;if(typeof code==="string"&&code.length>0)return code;if(e?.name==="TimeoutError"||e?.name==="AbortError")return`timeout after ${PROBE_TIMEOUT_MS}ms`;if(typeof e?.message==="string"&&e.message.length>0)return e.message.slice(0,160);return String(err2)}async function defaultFetchDetail(url){const ctrl=new AbortController;const t=setTimeout(()=>ctrl.abort(),PROBE_TIMEOUT_MS);try{const res=await fetch(url,{signal:ctrl.signal});return res.ok?{ok:true}:{ok:false,detail:`HTTP ${res.status}`}}catch(err2){return{ok:false,detail:describeProbeFailure(err2)}}finally{clearTimeout(t)}}async function fetchHealthInfoDefault(origin,opts){try{const res=await fetch(healthUrl(origin),{signal:AbortSignal.timeout(PROBE_TIMEOUT_MS),...opts?.noKeepAlive?{headers:{connection:"close"}}:{}});if(!res.ok)return void 0;const data=await res.json();const info={ok:Boolean(data.ok),instanceId:typeof data.instanceId==="string"?data.instanceId:void 0};if(typeof data.version==="string")info.version=data.version;if(typeof data.pid==="number")info.pid=data.pid;if(typeof data.auxProxy==="string"&&data.auxProxy.length>0)info.auxProxy=data.auxProxy;if(typeof data.auxProxySource==="string"&&data.auxProxySource.length>0)info.auxProxySource=data.auxProxySource;if(data.watchdog&&typeof data.watchdog==="object"&&typeof data.watchdog.armed==="boolean"){const wd=data.watchdog;const watchers=Array.isArray(wd.watchers)?wd.watchers.filter(w2=>typeof w2==="number"):void 0;info.watchdog={armed:wd.armed,watchers}}return info}catch{return void 0}}async function registerWatcherDefault(origin,pid){try{const res=await fetch(`${origin}/__bili/watcher`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({pid}),signal:AbortSignal.timeout(2e3)});if(!res.ok){if(res.status===409)return"refused";console.error(`bili: watcher registration returned HTTP ${res.status} \u2014 the shared proxy may exit when its first owner does`);return"failed"}return"ok"}catch(err2){console.error(`bili: watcher registration failed \u2014 the shared proxy may exit when its first owner does (${err2 instanceof Error?err2.message:String(err2)})`);return"failed"}}function isStartingMarkerActive(marker,nowMs){return isPidAlive(marker.pid)&&nowMs-marker.startedAt<STARTING_MARKER_TTL_MS}function recordedModelMap(passed,ambientRaw,parse3){return parse3(passed&&Object.keys(passed).length>0?JSON.stringify(passed):ambientRaw)}function instanceShapeMismatch(inst,opts,foreignLanes=[]){if(opts.lane!==void 0&&inst.lane!==void 0&&inst.lane!==opts.lane&&!foreignLanes.includes(inst.lane))return"lane-mismatch";if(inst.host!==opts.host||inst.passthrough!==resolveRecordedPassthrough(opts.passthrough))return"host-or-passthrough-mismatch";const wantDomains=resolveRecordedMitmDomains(opts.mitmDomains);if(inst.mitmDomains.length!==wantDomains.length||inst.mitmDomains.some((d,i)=>d!==wantDomains[i]))return"mitm-domains-mismatch";const wantWindows=recordedModelMap(opts.modelWindows,process.env.BILI_LAUNCHER_MODEL_WINDOWS,parseLauncherModelWindows);if(Object.keys(inst.modelWindows).length!==Object.keys(wantWindows).length)return"model-windows-mismatch";if(!Object.keys(wantWindows).every(k2=>inst.modelWindows[k2]===wantWindows[k2]))return"model-windows-mismatch";const wantMax=recordedModelMap(opts.modelMaxOutputs,process.env.BILI_LAUNCHER_MODEL_MAX_OUTPUTS,parseLauncherModelMaxOutputs);if(Object.keys(inst.modelMaxOutputs??{}).length!==Object.keys(wantMax).length)return"model-max-outputs-mismatch";return Object.keys(wantMax).every(k2=>(inst.modelMaxOutputs??{})[k2]===wantMax[k2])?void 0:"model-max-outputs-mismatch"}function isNewerSameLaneHolder(inst,optsLane,healthVersion,ownVersion,userZone){if(userZone||optsLane===void 0||healthVersion===void 0)return false;return inst.lane===optsLane&&isVersionNewer(healthVersion,ownVersion)}function instanceCompatible(inst,opts,codeFingerprint,foreignLanes=[]){if(inst.codeFingerprint===void 0||inst.codeFingerprint!==codeFingerprint)return"code-fingerprint-mismatch";return instanceShapeMismatch(inst,opts,foreignLanes)}async function probeLiveInstances(readInstance,fetchHealthInfo,diag,isConnectable=tcpConnectable){const seen=new Map;const inst=readInstance();if(isProxyInstanceFile(inst))seen.set(inst.instanceId||inst.origin,inst);for(const live of discoverLiveInstances())seen.set(live.instanceId||live.origin,live);const checked=await Promise.all([...seen.values()].map(async c=>{if(!isPidAlive(c.pid)){diag?.(`native-attach: drop ${c.origin} (pid ${c.pid}): owner process gone`);return void 0}const health=await fetchHealthInfo(c.origin);if(!health||!health.ok){if(health===void 0&&await isConnectable(c.origin)){diag?.(`native-attach: keep ${c.origin} (pid ${c.pid}): health probe failed but TCP connect succeeded \u2014 instance is BUSY (event loop saturated), not dead (#3654/#4811)`);return{inst:c,health:void 0}}diag?.(health===void 0?`native-attach: drop ${c.origin} (pid ${c.pid}): health probe failed`:`native-attach: drop ${c.origin} (pid ${c.pid}): health probe answered but reports not-ok`);return void 0}if(health.instanceId!==void 0&&health.instanceId!==c.instanceId){diag?.(`native-attach: drop ${c.origin} (pid ${c.pid}): instance id mismatch (${c.instanceId} vs ${health.instanceId})`);return void 0}return{inst:c,health}}));return checked.filter(c=>c!==void 0)}function attachGateAllows(health,attachExternal){if(attachExternal)return true;return health?.watchdog?.armed===true}function isUserZoneInstance(inst){return inst.lane===void 0&&inst.launchToken===void 0}function gateRefusalMessage(inst,health){const reason=health.watchdog&&health.watchdog.armed===false?"it reports NO session-lifecycle watchdog (started without BILI_PARENT_PID, e.g. manual `bili start`)":"it does not report watchdog state (older bili build) \u2014 its lifecycle is unverifiable";return`bili: refusing to attach to ${inst.origin} (pid ${inst.pid}) \u2014 ${reason}. It would outlive this session and ignore config edits until killed (#1322/#1335). Starting a session-owned proxy instead; set native.attachExternal=true or BILI_NATIVE_ATTACH_EXTERNAL=1 to attach anyway.`}function attachClass(inst,lane,foreignLanes){if(lane===void 0)return 1;if(inst.lane===lane)return 0;if(inst.lane!==void 0)return 1+foreignLanes.indexOf(inst.lane);return foreignLanes.length+1}function normalizeOrigin(o){return o.trim().replace(/\/+$/,"").toLowerCase()}function pickAttachable(candidates,opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,diag,foreignLanes=[]){let best;let bestClass=Number.MAX_SAFE_INTEGER;let bestStartedAt=Number.NEGATIVE_INFINITY;for(const c of candidates){if(attachUrl&&normalizeOrigin(c.inst.origin)!==normalizeOrigin(attachUrl)){diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): not the explicit attachUrl target`);continue}let incompatible=instanceCompatible(c.inst,opts,codeFingerprint,foreignLanes);if(incompatible==="code-fingerprint-mismatch"&&c.health?.version!==void 0&&isNewerSameLaneHolder(c.inst,opts.lane,c.health.version,VERSION,isUserZoneInstance(c.inst))){const adoptedShape=instanceShapeMismatch(c.inst,opts,foreignLanes);if(adoptedShape===void 0){diag?.(`native-attach: adopt ${c.inst.origin} (pid ${c.inst.pid}): foreign bytes but self-reported v${c.health.version} is strictly NEWER than this lane's v${VERSION} \u2014 riding the newer build instead of deadlocking behind it (#4125)`);incompatible=void 0}else{diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): reports v${c.health.version} (newer) but its config shape differs (${adoptedShape}) \u2014 shape guards survive upward adoption (#4125)`);incompatible=adoptedShape}}if(incompatible!==void 0){diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): incompatible (${incompatible})`);continue}if(opts.strictPort&&c.inst.port!==opts.port){diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): port mismatch`);continue}const sameLane=opts.lane!==void 0&&c.inst.lane===opts.lane;if(!attachUrl&&!attachExternal&&attachPolicy==="own-lane"&&opts.lane!==void 0&&!sameLane&&c.health?.watchdog?.armed!==true){diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): not own lane and not an armed shared daemon (attachPolicy=own-lane)`);continue}if(c.health===void 0){if(!sameLane&&!attachExternal&&!isUserZoneInstance(c.inst)){if(!refusedLog.has(c.inst.origin)){refusedLog.add(c.inst.origin);const msg=`bili: refusing to attach to ${c.inst.origin} (pid ${c.inst.pid}) \u2014 health probe silent but TCP alive (BUSY, event loop saturated #3654) and its lifecycle is unverifiable from this lane. Starting a session-owned proxy instead; set native.attachExternal=true or BILI_NATIVE_ATTACH_EXTERNAL=1 to attach anyway.`;console.error(msg);diag?.(msg)}continue}}else if(!attachGateAllows(c.health,attachExternal)&&!isUserZoneInstance(c.inst)){if(!refusedLog.has(c.inst.origin)){refusedLog.add(c.inst.origin);console.error(gateRefusalMessage(c.inst,c.health));diag?.(gateRefusalMessage(c.inst,c.health))}continue}const cls=attachClass(c.inst,opts.lane,foreignLanes);if(cls<bestClass||cls===bestClass&&c.inst.startedAt>bestStartedAt){best=c.inst;bestClass=cls;bestStartedAt=c.inst.startedAt}}return best}async function waitForStarterInstance(readInstance,fetchHealthInfo,now,sleepImpl,opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,diag,foreignLanes=[],isConnectable=tcpConnectable){const deadline=now()+SPAWN_BUDGET_MS;const probe=async()=>pickAttachable(await probeLiveInstances(readInstance,fetchHealthInfo,diag,isConnectable),opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,diag,foreignLanes);let inst;while(now()<deadline){await sleepImpl(HEALTH_POLL_INTERVAL_MS);inst=await probe();if(inst)break;const still=readStartingMarker();if(!still||!isStartingMarkerActive(still,now()))break}return inst??await probe()}function defaultAttachDiag(debug){return msg=>{logHostEvent("info","",msg);if(debug)process.stderr.write(`${logTimestamp()} [info] [v=${VERSION}] ${msg}
|
|
129
|
+
${partialOutcomeNote(blocksCreated)}`;const out={text,failed:outcome==="failure"||outcome==="refused"};if(outcome!==void 0)out.outcome=outcome;if(blocksCreated!==void 0)out.blocksCreated=blocksCreated;return out}async function fetchStatus(proxyBase,conversationId){const{ok,json}=await fetchJson(`${proxyBase}/__bili/plugin/status?conversationId=${encodeURIComponent(conversationId)}`,void 0,STATUS_TIMEOUT_MS);if(!ok||!json||typeof json!=="object")return void 0;return json}async function fetchStatusLatest(proxyBase){const{ok,json}=await fetchJson(`${proxyBase}/__bili/plugin/status?conversationId=dsh&fallback=latest`,void 0,STATUS_TIMEOUT_MS);if(!ok||!json||typeof json!=="object")return void 0;return json}async function fetchProxyVersion(proxyBase,init){const{ok,json}=await fetchJson(`${proxyBase}/__bili/plugin/manifest`,init,STATUS_TIMEOUT_MS);if(!ok||!json||typeof json!=="object")return void 0;const m2=json;const version=m2.version;if(typeof version!=="string"||version.length===0)return void 0;const commit=m2.commit;if(typeof commit==="string"&&commit.length>0)return`${version} (${commit})`;return version}async function waitForProxyVersion(proxyBase){const limit=envMillis(process.env,"BILI_ATTACH_HEALTH_DEADLINE_MS",ATTACH_HEALTH_DEADLINE_MS);const startedAt=Date.now();for(;;){const version=await fetchProxyVersion(proxyBase).catch(()=>void 0);if(version!==void 0)return proxyBase;const elapsed=Date.now()-startedAt;if(elapsed>=limit)return void 0;await new Promise(r=>setTimeout(r,Math.min(ATTACH_HEALTH_POLL_MS,limit-elapsed)))}}init_client_config();import fs10 from"fs";import path19 from"path";import crypto3 from"crypto";import fs11 from"fs";import path20 from"path";init_instance();init_config();var DSH_COMPACTION_VERDICT_KEY="__BILI_DSH_COMPACTION_VERDICT__";function declareDshCompactionActive(){globalThis[DSH_COMPACTION_VERDICT_KEY]="active"}var DSH_COMPACTION_GATE_TELEMETRY_KEY="__BILI_DSH_COMPACTION_GATE_TELEMETRY__";function dshCompactionGateTelemetry(){const record=globalThis[DSH_COMPACTION_GATE_TELEMETRY_KEY];return record===void 0?null:record}function detectCompactionOverlayGap(ctx){if(typeof ctx.on!=="function")return"no-config-hook";if(typeof ctx.reflect?.provide!=="function")return"no-service-provide";return null}init_logger();init_version();import http from"http";var PERMISSION_DENIED_SIGNATURE=/\b(?:EPERM|EACCES|EROFS|EBUSY)\b|operation not permitted|permission denied|read-only file system|readonly database/i;var BILI_DATA_PATH_SIGNATURE=/billion-context|combined-ca\.pem|index\.db|\.local[\\/](?:share|state)[\\/]/i;function classifyStartupFailure(sample){if(!PERMISSION_DENIED_SIGNATURE.test(sample)||!BILI_DATA_PATH_SIGNATURE.test(sample))return"";return"possible cause: the proxy could not write its own data files (EPERM/EACCES/read-only on the bili data dir) \u2014 most often antivirus (e.g. Windows Defender Controlled Folder Access) blocking the node runtime, a read-only flag or ACL on the directory, or another process holding the files; add the bili data dir and the node runtime to AV exclusions (see #367) or fix the directory permissions, then retry"}var MAX_HOLD_MS=10*6e4;init_update();init_win_cmd();init_client_config();init_config();init_registry();init_config();init_logger();function parseLauncherModelWindows(raw){if(!raw)return{};try{const parsed=JSON.parse(raw);if(!parsed||typeof parsed!=="object"||Array.isArray(parsed))return{};const out={};for(const[id,v2]of Object.entries(parsed)){if(typeof v2==="number"&&Number.isFinite(v2)&&v2>0)out[id]=Math.floor(v2)}return out}catch{return{}}}var LAUNCHER_MODEL_WINDOWS=parseLauncherModelWindows(process.env.BILI_LAUNCHER_MODEL_WINDOWS);function parseLauncherModelMaxOutputs(raw){if(!raw)return{};try{const parsed=JSON.parse(raw);if(!parsed||typeof parsed!=="object"||Array.isArray(parsed))return{};const out={};for(const[id,v2]of Object.entries(parsed)){if(typeof v2==="number"&&Number.isFinite(v2)&&v2>0)out[id]=Math.floor(v2)}return out}catch{return{}}}var LAUNCHER_MODEL_MAX_OUTPUTS=parseLauncherModelMaxOutputs(process.env.BILI_LAUNCHER_MODEL_MAX_OUTPUTS);init_vertex();init_client_config();init_logger();import{createHash as createHash13}from"crypto";import{createHash as createHash12,randomUUID as randomUUID4}from"crypto";import{closeSync,existsSync as existsSync6,fsyncSync,mkdirSync as mkdirSync6,openSync,readdirSync,readFileSync as readFileSync8,renameSync as renameSync2,rmSync,statSync as statSync6,writeFileSync as writeFileSync5}from"fs";import{readdir as readdir2,readFile as readFile4,rm as rm2}from"fs/promises";import*as path24 from"path";init_paths();init_knobs();init_logger();init_runtime_status();init_version();import{createCipheriv,createDecipheriv,randomBytes as randomBytes2}from"crypto";import*as zlib from"zlib";var ab=ArrayBuffer;var u8=Uint8Array;var u16=Uint16Array;var i16=Int16Array;var i32=Int32Array;var slc=function(v2,s3,e){if(u8.prototype.slice)return u8.prototype.slice.call(v2,s3,e);if(s3==null||s3<0)s3=0;if(e==null||e>v2.length)e=v2.length;var n=new u8(e-s3);n.set(v2.subarray(s3,e));return n};var fill=function(v2,n,s3,e){if(u8.prototype.fill)return u8.prototype.fill.call(v2,n,s3,e);if(s3==null||s3<0)s3=0;if(e==null||e>v2.length)e=v2.length;for(;s3<e;++s3)v2[s3]=n;return v2};var cpw=function(v2,t,s3,e){if(u8.prototype.copyWithin)return u8.prototype.copyWithin.call(v2,t,s3,e);if(s3==null||s3<0)s3=0;if(e==null||e>v2.length)e=v2.length;while(s3<e){v2[t++]=v2[s3++]}};var ec=["invalid zstd data","window size too large (>2046MB)","invalid block type","FSE accuracy too high","match distance too far back","unexpected EOF"];var err=function(ind,msg,nt2){var e=new Error(msg||ec[ind]);e.code=ind;if(Error.captureStackTrace)Error.captureStackTrace(e,err);if(!nt2)throw e;return e};var rb=function(d,b2,n){var i=0,o=0;for(;i<n;++i)o|=d[b2++]<<(i<<3);return o};var b4=function(d,b2){return(d[b2]|d[b2+1]<<8|d[b2+2]<<16|d[b2+3]<<24)>>>0};var rzfh=function(dat,w2){var n3=dat[0]|dat[1]<<8|dat[2]<<16;if(n3==3126568&&dat[3]==253){var flg=dat[4];var ss2=flg>>5&1,cc=flg>>2&1,df=flg&3,fcf=flg>>6;if(flg&8)err(0);var bt2=6-ss2;var db=df==3?4:df;var di2=rb(dat,bt2,db);bt2+=db;var fsb=fcf?1<<fcf:ss2;var fss=rb(dat,bt2,fsb)+(fcf==1&&256);var ws2=fss;if(!ss2){var wb=1<<10+(dat[5]>>3);ws2=wb+(wb>>3)*(dat[5]&7)}if(ws2>2145386496)err(1);var buf=new u8((w2==1?fss||ws2:w2?0:ws2)+12);buf[0]=1,buf[4]=4,buf[8]=8;return{b:bt2+fsb,y:0,l:0,d:di2,w:w2&&w2!=1?w2:buf.subarray(12),e:ws2,o:new i32(buf.buffer,0,3),u:fss,c:cc,m:Math.min(131072,ws2)}}else if((n3>>4|dat[3]<<20)==25481893){return b4(dat,4)+8}err(0)};var msb=function(val){var bits=0;for(;1<<bits<=val;++bits);return bits-1};var rfse=function(dat,bt2,mal){var tpos=(bt2<<3)+4;var al=(dat[bt2]&15)+5;if(al>mal)err(3);var sz=1<<al;var probs=sz,sym=-1,re2=-1,i=-1,ht2=sz;var buf=new ab(512+(sz<<2));var freq=new i16(buf,0,256);var dstate=new u16(buf,0,256);var nstate=new u16(buf,512,sz);var bb1=512+(sz<<1);var syms=new u8(buf,bb1,sz);var nbits=new u8(buf,bb1+sz);while(sym<255&&probs>0){var bits=msb(probs+1);var cbt=tpos>>3;var msk=(1<<bits+1)-1;var val=(dat[cbt]|dat[cbt+1]<<8|dat[cbt+2]<<16)>>(tpos&7)&msk;var msk1fb=(1<<bits)-1;var msv=msk-probs-1;var sval=val&msk1fb;if(sval<msv)tpos+=bits,val=sval;else{tpos+=bits+1;if(val>msk1fb)val-=msv}freq[++sym]=--val;if(val==-1){probs+=val;syms[--ht2]=sym}else probs-=val;if(!val){do{var rbt=tpos>>3;re2=(dat[rbt]|dat[rbt+1]<<8)>>(tpos&7)&3;tpos+=2;sym+=re2}while(re2==3)}}if(sym>255||probs)err(0);var sympos=0;var sstep=(sz>>1)+(sz>>3)+3;var smask=sz-1;for(var s3=0;s3<=sym;++s3){var sf=freq[s3];if(sf<1){dstate[s3]=-sf;continue}for(i=0;i<sf;++i){syms[sympos]=s3;do{sympos=sympos+sstep&smask}while(sympos>=ht2)}}if(sympos)err(0);for(i=0;i<sz;++i){var ns2=dstate[syms[i]]++;var nb=nbits[i]=al-msb(ns2);nstate[i]=(ns2<<nb)-sz}return[tpos+7>>3,{b:al,s:syms,n:nbits,t:nstate}]};var rhu=function(dat,bt2){var i=0,wc=-1;var buf=new u8(292),hb=dat[bt2];var hw=buf.subarray(0,256);var rc=buf.subarray(256,268);var ri2=new u16(buf.buffer,268);if(hb<128){var _a=rfse(dat,bt2+1,6),ebt=_a[0],fdt=_a[1];bt2+=hb;var epos=ebt<<3;var lb=dat[bt2];if(!lb)err(0);var st1=0,st2=0,btr1=fdt.b,btr2=btr1;var fpos=(++bt2<<3)-8+msb(lb);for(;;){fpos-=btr1;if(fpos<epos)break;var cbt=fpos>>3;st1+=(dat[cbt]|dat[cbt+1]<<8)>>(fpos&7)&(1<<btr1)-1;hw[++wc]=fdt.s[st1];fpos-=btr2;if(fpos<epos)break;cbt=fpos>>3;st2+=(dat[cbt]|dat[cbt+1]<<8)>>(fpos&7)&(1<<btr2)-1;hw[++wc]=fdt.s[st2];btr1=fdt.n[st1];st1=fdt.t[st1];btr2=fdt.n[st2];st2=fdt.t[st2]}if(++wc>255)err(0)}else{wc=hb-127;for(;i<wc;i+=2){var byte=dat[++bt2];hw[i]=byte>>4;hw[i+1]=byte&15}++bt2}var wes=0;for(i=0;i<wc;++i){var wt2=hw[i];if(wt2>11)err(0);wes+=wt2&&1<<wt2-1}var mb=msb(wes)+1;var ts2=1<<mb;var rem=ts2-wes;if(rem&rem-1)err(0);hw[wc++]=msb(rem)+1;for(i=0;i<wc;++i){var wt2=hw[i];++rc[hw[i]=wt2&&mb+1-wt2]}var hbuf=new u8(ts2<<1);var syms=hbuf.subarray(0,ts2),nb=hbuf.subarray(ts2);ri2[mb]=0;for(i=mb;i>0;--i){var pv=ri2[i];fill(nb,i,pv,ri2[i-1]=pv+rc[i]*(1<<mb-i))}if(ri2[0]!=ts2)err(0);for(i=0;i<wc;++i){var bits=hw[i];if(bits){var code=ri2[bits];fill(syms,i,code,ri2[bits]=code+(1<<mb-bits))}}return[bt2,{n:nb,b:mb,s:syms}]};var dllt=rfse(new u8([81,16,99,140,49,198,24,99,12,33,196,24,99,102,102,134,70,146,4]),0,6)[1];var dmlt=rfse(new u8([33,20,196,24,99,140,33,132,16,66,8,33,132,16,66,8,33,68,68,68,68,68,68,68,68,36,9]),0,6)[1];var doct=rfse(new u8([32,132,16,66,102,70,68,68,68,68,36,73,2]),0,5)[1];var b2bl=function(b2,s3){var len=b2.length,bl=new i32(len);for(var i=0;i<len;++i){bl[i]=s3;s3+=1<<b2[i]}return bl};var llb=new u8(new i32([0,0,0,0,16843009,50528770,134678020,202050057,269422093]).buffer,0,36);var llbl=b2bl(llb,0);var mlb=new u8(new i32([0,0,0,0,0,0,0,0,16843009,50528770,117769220,185207048,252579084,16]).buffer,0,53);var mlbl=b2bl(mlb,3);var dhu=function(dat,out,hu){var len=dat.length,ss2=out.length,lb=dat[len-1],msk=(1<<hu.b)-1,eb=-hu.b;if(!lb)err(0);var st2=0,btr=hu.b,pos=(len<<3)-8+msb(lb)-btr,i=-1;for(;pos>eb&&i<ss2;){var cbt=pos>>3;var val=(dat[cbt]|dat[cbt+1]<<8|dat[cbt+2]<<16)>>(pos&7);st2=(st2<<btr|val)&msk;out[++i]=hu.s[st2];pos-=btr=hu.n[st2]}if(pos!=eb||i+1!=ss2)err(0)};var dhu4=function(dat,out,hu){var bt2=6;var ss2=out.length,sz1=ss2+3>>2,sz2=sz1<<1,sz3=sz1+sz2;dhu(dat.subarray(bt2,bt2+=dat[0]|dat[1]<<8),out.subarray(0,sz1),hu);dhu(dat.subarray(bt2,bt2+=dat[2]|dat[3]<<8),out.subarray(sz1,sz2),hu);dhu(dat.subarray(bt2,bt2+=dat[4]|dat[5]<<8),out.subarray(sz2,sz3),hu);dhu(dat.subarray(bt2),out.subarray(sz3),hu)};var rzb=function(dat,st2,out){var _a;var bt2=st2.b;var b0=dat[bt2],btype=b0>>1&3;st2.l=b0&1;var sz=b0>>3|dat[bt2+1]<<5|dat[bt2+2]<<13;var ebt=(bt2+=3)+sz;if(btype==1){if(bt2>=dat.length)return;st2.b=bt2+1;if(out){fill(out,dat[bt2],st2.y,st2.y+=sz);return out}return fill(new u8(sz),dat[bt2])}if(ebt>dat.length)return;if(btype==0){st2.b=ebt;if(out){out.set(dat.subarray(bt2,ebt),st2.y);st2.y+=sz;return out}return slc(dat,bt2,ebt)}if(btype==2){var b3=dat[bt2],lbt=b3&3,sf=b3>>2&3;var lss=b3>>4,lcs=0,s4=0;if(lbt<2){if(sf&1)lss|=dat[++bt2]<<4|(sf&2&&dat[++bt2]<<12);else lss=b3>>3}else{s4=sf;if(sf<2)lss|=(dat[++bt2]&63)<<4,lcs=dat[bt2]>>6|dat[++bt2]<<2;else if(sf==2)lss|=dat[++bt2]<<4|(dat[++bt2]&3)<<12,lcs=dat[bt2]>>2|dat[++bt2]<<6;else lss|=dat[++bt2]<<4|(dat[++bt2]&63)<<12,lcs=dat[bt2]>>6|dat[++bt2]<<2|dat[++bt2]<<10}++bt2;var buf=out?out.subarray(st2.y,st2.y+st2.m):new u8(st2.m);var spl=buf.length-lss;if(lbt==0)buf.set(dat.subarray(bt2,bt2+=lss),spl);else if(lbt==1)fill(buf,dat[bt2++],spl);else{var hu=st2.h;if(lbt==2){var hud=rhu(dat,bt2);lcs+=bt2-(bt2=hud[0]);st2.h=hu=hud[1]}else if(!hu)err(0);(s4?dhu4:dhu)(dat.subarray(bt2,bt2+=lcs),buf.subarray(spl),hu)}var ns2=dat[bt2++];if(ns2){if(ns2==255)ns2=(dat[bt2++]|dat[bt2++]<<8)+32512;else if(ns2>127)ns2=ns2-128<<8|dat[bt2++];var scm=dat[bt2++];if(scm&3)err(0);var dts=[dmlt,doct,dllt];for(var i=2;i>-1;--i){var md=scm>>(i<<1)+2&3;if(md==1){var rbuf=new u8([0,0,dat[bt2++]]);dts[i]={s:rbuf.subarray(2,3),n:rbuf.subarray(0,1),t:new u16(rbuf.buffer,0,1),b:0}}else if(md==2){_a=rfse(dat,bt2,9-(i&1)),bt2=_a[0],dts[i]=_a[1]}else if(md==3){if(!st2.t)err(0);dts[i]=st2.t[i]}}var _b=st2.t=dts,mlt=_b[0],oct=_b[1],llt=_b[2];var lb=dat[ebt-1];if(!lb)err(0);var spos=(ebt<<3)-8+msb(lb)-llt.b,cbt=spos>>3,oubt=0;var lst=(dat[cbt]|dat[cbt+1]<<8)>>(spos&7)&(1<<llt.b)-1;cbt=(spos-=oct.b)>>3;var ost=(dat[cbt]|dat[cbt+1]<<8)>>(spos&7)&(1<<oct.b)-1;cbt=(spos-=mlt.b)>>3;var mst=(dat[cbt]|dat[cbt+1]<<8)>>(spos&7)&(1<<mlt.b)-1;for(++ns2;--ns2;){var llc=llt.s[lst];var lbtr=llt.n[lst];var mlc=mlt.s[mst];var mbtr=mlt.n[mst];var ofc=oct.s[ost];var obtr=oct.n[ost];cbt=(spos-=ofc)>>3;var ofp=1<<ofc;var off=ofp+((dat[cbt]|dat[cbt+1]<<8|dat[cbt+2]<<16|dat[cbt+3]<<24)>>>(spos&7)&ofp-1);cbt=(spos-=mlb[mlc])>>3;var ml=mlbl[mlc]+((dat[cbt]|dat[cbt+1]<<8|dat[cbt+2]<<16)>>(spos&7)&(1<<mlb[mlc])-1);cbt=(spos-=llb[llc])>>3;var ll=llbl[llc]+((dat[cbt]|dat[cbt+1]<<8|dat[cbt+2]<<16)>>(spos&7)&(1<<llb[llc])-1);cbt=(spos-=lbtr)>>3;lst=llt.t[lst]+((dat[cbt]|dat[cbt+1]<<8)>>(spos&7)&(1<<lbtr)-1);cbt=(spos-=mbtr)>>3;mst=mlt.t[mst]+((dat[cbt]|dat[cbt+1]<<8)>>(spos&7)&(1<<mbtr)-1);cbt=(spos-=obtr)>>3;ost=oct.t[ost]+((dat[cbt]|dat[cbt+1]<<8)>>(spos&7)&(1<<obtr)-1);if(off>3){st2.o[2]=st2.o[1];st2.o[1]=st2.o[0];st2.o[0]=off-=3}else{var idx=off-(ll!=0);if(idx){off=idx==3?st2.o[0]-1:st2.o[idx];if(idx>1)st2.o[2]=st2.o[1];st2.o[1]=st2.o[0];st2.o[0]=off}else off=st2.o[0]}for(var i=0;i<ll;++i){buf[oubt+i]=buf[spl+i]}oubt+=ll,spl+=ll;var stin=oubt-off;if(stin<0){var len=-stin;var bs2=st2.e+stin;if(len>ml)len=ml;for(var i=0;i<len;++i){buf[oubt+i]=st2.w[bs2+i]}oubt+=len,ml-=len,stin=0}for(var i=0;i<ml;++i){buf[oubt+i]=buf[stin+i]}oubt+=ml}if(oubt!=spl){while(spl<buf.length){buf[oubt++]=buf[spl++]}}else oubt=buf.length;if(out)st2.y+=oubt;else buf=slc(buf,0,oubt)}else if(out){st2.y+=lss;if(spl){for(var i=0;i<lss;++i){buf[i]=buf[spl+i]}}}else if(spl)buf=slc(buf,spl);st2.b=ebt;return buf}err(2)};var cct=function(bufs,ol){if(bufs.length==1)return bufs[0];var buf=new u8(ol);for(var i=0,b2=0;i<bufs.length;++i){var chk=bufs[i];buf.set(chk,b2);b2+=chk.length}return buf};var Decompress=(function(){function Decompress2(ondata){this.ondata=ondata;this.c=[];this.l=0;this.z=0}Decompress2.prototype.push=function(chunk,final){if(typeof this.s=="number"){var sub=Math.min(chunk.length,this.s);chunk=chunk.subarray(sub);this.s-=sub}var sl=chunk.length;var ncs=sl+this.l;if(!this.s){if(final){if(!ncs){this.ondata(new u8(0),true);return}if(ncs<5)err(5)}else if(ncs<18){this.c.push(chunk);this.l=ncs;return}if(this.l){this.c.push(chunk);chunk=cct(this.c,ncs);this.c=[];this.l=0}if(typeof(this.s=rzfh(chunk))=="number")return this.push(chunk,final)}if(typeof this.s!="number"){if(ncs<(this.z||3)){if(final)err(5);this.c.push(chunk);this.l=ncs;return}if(this.l){this.c.push(chunk);chunk=cct(this.c,ncs);this.c=[];this.l=0}if(!this.z&&ncs<(this.z=chunk[this.s.b]&2?4:3+(chunk[this.s.b]>>3|chunk[this.s.b+1]<<5|chunk[this.s.b+2]<<13))){if(final)err(5);this.c.push(chunk);this.l=ncs;return}else this.z=0;for(;;){var blk=rzb(chunk,this.s);if(!blk){if(final)err(5);var adc=chunk.subarray(this.s.b);this.s.b=0;this.c.push(adc),this.l+=adc.length;return}else{this.ondata(blk,false);cpw(this.s.w,0,blk.length);this.s.w.set(blk,this.s.w.length-blk.length)}if(this.s.l){var rest=chunk.subarray(this.s.b);this.s=this.s.c*4;this.push(rest,final);return}}}else if(final)err(5)};return Decompress2})();var ENCRYPT_MAGIC=Buffer.from("BILIENC1","utf8");var ZSTD_MAGIC=Buffer.from("BILIZSTD1","utf8");var NONCE_LEN=12;var TAG_LEN=16;var ENCRYPT_HEADER_LEN=ENCRYPT_MAGIC.length+2+NONCE_LEN;var MIN_ENCRYPTED_LEN=ENCRYPT_HEADER_LEN+TAG_LEN;var PLAIN_HEADER_LEN=ZSTD_MAGIC.length+2;init_logger();init_billing();init_state_hydration();init_shadow();init_logger();var HOT_ATTACH_WINDOW_MS=10*6e4;var ATTACH_SILENCE_MS=5*6e4;init_backend();init_ingest();init_store();init_logger();init_paths();import{randomUUID as randomUUID2}from"crypto";import{mkdirSync as mkdirSync5,writeFileSync as writeFileSync4}from"fs";import{dirname as dirname3,join as join2}from"path";init_knobs();import{createHash as createHash11,randomUUID as randomUUID3}from"crypto";import{AsyncLocalStorage as AsyncLocalStorage3}from"async_hooks";init_logger();import{createHash as createHash10}from"crypto";import{createHash as createHash9}from"crypto";init_logger();init_logger();init_billing();init_util();var BOOT_ID=randomUUID3();var SEAM_BODY_CAP=512*1024;var BODY_FULL_CAP=8*1024*1024;var captures=new AsyncLocalStorage3;var LEARNED_IMAGE_COST_TTL_MS=24*60*60*1e3;var{join:join4}=path24;var FROZEN_SKIP_NOTICE_COOLDOWN_MS=10*6e4;init_version();init_knobs();init_config();init_config();init_paths();init_logger();init_external_summary_settings();import*as path25 from"path";init_turn_separator();init_turn_separator();var ABORT_REANCHOR_MAX_AGE_MS=30*60*1e3;var MAX_SESSIONS=maxSessions();var MAX_RESIDENT_BYTES=sessionResidentMaxBytes();var SPLIT_CANARY_FRESH_MS=10*60*1e3;import{randomUUID as randomUUID5}from"crypto";init_knobs();var CODEX_FORGED_HANDOFF_HEADER="[bili] context summary after compaction:";var FORGED_SUMMARY_HEADER="[Compressed conversation section]";init_client_config();import fs13 from"fs";import path26 from"path";init_dsh_channel();var SCAN_CACHE_TTL_MS=5*60*1e3;var CONFLICT_ACTIVE_WINDOW_MS=7*24*60*60*1e3;var LAUNCHER_DEFAULT_HOST="127.0.0.1";var HEALTH_PATH="/__bili/health";var HEALTH_POLL_INTERVAL_MS=200;var SPAWN_WAIT_MS=envMillis(process.env,"BILI_SPAWN_WAIT_MS",2e4);var SLOW_START_GRACE_MS=envMillis(process.env,"BILI_SLOW_START_GRACE_MS",4e4);var SPAWN_BUDGET_MS=SPAWN_WAIT_MS+SLOW_START_GRACE_MS;var PROBE_TIMEOUT_MS=1500;var STARTING_MARKER_TTL_MS=SPAWN_BUDGET_MS+3e4;var POST_EXIT_REDISCOVERY_MS=3e3;var DEFAULT_MITM_DOMAIN_SET=new Set(DEFAULT_MITM_DOMAINS.map(d=>d.toLowerCase()));function proxyOrigin(host,port){return`http://${host}:${port}`}function healthUrl(origin){return origin+HEALTH_PATH}async function defaultFetch(url){const ctrl=new AbortController;const t=setTimeout(()=>ctrl.abort(),PROBE_TIMEOUT_MS);try{const res=await fetch(url,{signal:ctrl.signal});return{ok:res.ok}}catch{return{ok:false}}finally{clearTimeout(t)}}async function probeHealth(origin,fetchImpl){try{const{ok}=await fetchImpl(healthUrl(origin));return ok}catch{return false}}function describeProbeFailure(err2){const e=err2;const code=e?.cause?.code??e?.code;if(typeof code==="string"&&code.length>0)return code;if(e?.name==="TimeoutError"||e?.name==="AbortError")return`timeout after ${PROBE_TIMEOUT_MS}ms`;if(typeof e?.message==="string"&&e.message.length>0)return e.message.slice(0,160);return String(err2)}async function defaultFetchDetail(url){const ctrl=new AbortController;const t=setTimeout(()=>ctrl.abort(),PROBE_TIMEOUT_MS);try{const res=await fetch(url,{signal:ctrl.signal});return res.ok?{ok:true}:{ok:false,detail:`HTTP ${res.status}`}}catch(err2){return{ok:false,detail:describeProbeFailure(err2)}}finally{clearTimeout(t)}}async function fetchHealthInfoDefault(origin,opts){try{const res=await fetch(healthUrl(origin),{signal:AbortSignal.timeout(PROBE_TIMEOUT_MS),...opts?.noKeepAlive?{headers:{connection:"close"}}:{}});if(!res.ok)return void 0;const data=await res.json();const info={ok:Boolean(data.ok),instanceId:typeof data.instanceId==="string"?data.instanceId:void 0};if(typeof data.version==="string")info.version=data.version;if(typeof data.pid==="number")info.pid=data.pid;if(typeof data.auxProxy==="string"&&data.auxProxy.length>0)info.auxProxy=data.auxProxy;if(typeof data.auxProxySource==="string"&&data.auxProxySource.length>0)info.auxProxySource=data.auxProxySource;if(data.watchdog&&typeof data.watchdog==="object"&&typeof data.watchdog.armed==="boolean"){const wd=data.watchdog;const watchers=Array.isArray(wd.watchers)?wd.watchers.filter(w2=>typeof w2==="number"):void 0;info.watchdog={armed:wd.armed,watchers}}return info}catch{return void 0}}async function registerWatcherDefault(origin,pid){try{const res=await fetch(`${origin}/__bili/watcher`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({pid}),signal:AbortSignal.timeout(2e3)});if(!res.ok){if(res.status===409)return"refused";console.error(`bili: watcher registration returned HTTP ${res.status} \u2014 the shared proxy may exit when its first owner does`);return"failed"}return"ok"}catch(err2){console.error(`bili: watcher registration failed \u2014 the shared proxy may exit when its first owner does (${err2 instanceof Error?err2.message:String(err2)})`);return"failed"}}function isStartingMarkerActive(marker,nowMs){return isPidAlive(marker.pid)&&nowMs-marker.startedAt<STARTING_MARKER_TTL_MS}function recordedModelMap(passed,ambientRaw,parse3){return parse3(passed&&Object.keys(passed).length>0?JSON.stringify(passed):ambientRaw)}function instanceShapeMismatch(inst,opts,foreignLanes=[]){if(opts.lane!==void 0&&inst.lane!==void 0&&inst.lane!==opts.lane&&!foreignLanes.includes(inst.lane))return"lane-mismatch";if(inst.host!==opts.host||inst.passthrough!==resolveRecordedPassthrough(opts.passthrough))return"host-or-passthrough-mismatch";const wantDomains=resolveRecordedMitmDomains(opts.mitmDomains);if(inst.mitmDomains.length!==wantDomains.length||inst.mitmDomains.some((d,i)=>d!==wantDomains[i]))return"mitm-domains-mismatch";const wantWindows=recordedModelMap(opts.modelWindows,process.env.BILI_LAUNCHER_MODEL_WINDOWS,parseLauncherModelWindows);if(Object.keys(inst.modelWindows).length!==Object.keys(wantWindows).length)return"model-windows-mismatch";if(!Object.keys(wantWindows).every(k2=>inst.modelWindows[k2]===wantWindows[k2]))return"model-windows-mismatch";const wantMax=recordedModelMap(opts.modelMaxOutputs,process.env.BILI_LAUNCHER_MODEL_MAX_OUTPUTS,parseLauncherModelMaxOutputs);if(Object.keys(inst.modelMaxOutputs??{}).length!==Object.keys(wantMax).length)return"model-max-outputs-mismatch";return Object.keys(wantMax).every(k2=>(inst.modelMaxOutputs??{})[k2]===wantMax[k2])?void 0:"model-max-outputs-mismatch"}function isNewerSameLaneHolder(inst,optsLane,healthVersion,ownVersion,userZone){if(userZone||optsLane===void 0||healthVersion===void 0)return false;return inst.lane===optsLane&&isVersionNewer(healthVersion,ownVersion)}function instanceCompatible(inst,opts,codeFingerprint,foreignLanes=[]){if(inst.codeFingerprint===void 0||inst.codeFingerprint!==codeFingerprint)return"code-fingerprint-mismatch";return instanceShapeMismatch(inst,opts,foreignLanes)}async function probeLiveInstances(readInstance,fetchHealthInfo,diag,isConnectable=tcpConnectable){const seen=new Map;const inst=readInstance();if(isProxyInstanceFile(inst))seen.set(inst.instanceId||inst.origin,inst);for(const live of discoverLiveInstances())seen.set(live.instanceId||live.origin,live);const checked=await Promise.all([...seen.values()].map(async c=>{if(!isPidAlive(c.pid)){diag?.(`native-attach: drop ${c.origin} (pid ${c.pid}): owner process gone`);return void 0}const health=await fetchHealthInfo(c.origin);if(!health||!health.ok){if(health===void 0&&await isConnectable(c.origin)){diag?.(`native-attach: keep ${c.origin} (pid ${c.pid}): health probe failed but TCP connect succeeded \u2014 instance is BUSY (event loop saturated), not dead (#3654/#4811)`);return{inst:c,health:void 0}}diag?.(health===void 0?`native-attach: drop ${c.origin} (pid ${c.pid}): health probe failed`:`native-attach: drop ${c.origin} (pid ${c.pid}): health probe answered but reports not-ok`);return void 0}if(health.instanceId!==void 0&&health.instanceId!==c.instanceId){diag?.(`native-attach: drop ${c.origin} (pid ${c.pid}): instance id mismatch (${c.instanceId} vs ${health.instanceId})`);return void 0}return{inst:c,health}}));return checked.filter(c=>c!==void 0)}function attachGateAllows(health,attachExternal){if(attachExternal)return true;return health?.watchdog?.armed===true}function isUserZoneInstance(inst){return inst.lane===void 0&&inst.launchToken===void 0}function gateRefusalMessage(inst,health){const reason=health.watchdog&&health.watchdog.armed===false?"it reports NO session-lifecycle watchdog (started without BILI_PARENT_PID, e.g. manual `bili start`)":"it does not report watchdog state (older bili build) \u2014 its lifecycle is unverifiable";return`bili: refusing to attach to ${inst.origin} (pid ${inst.pid}) \u2014 ${reason}. It would outlive this session and ignore config edits until killed (#1322/#1335). Starting a session-owned proxy instead; set native.attachExternal=true or BILI_NATIVE_ATTACH_EXTERNAL=1 to attach anyway.`}function attachClass(inst,lane,foreignLanes){if(lane===void 0)return 1;if(inst.lane===lane)return 0;if(inst.lane!==void 0)return 1+foreignLanes.indexOf(inst.lane);return foreignLanes.length+1}function normalizeOrigin(o){return o.trim().replace(/\/+$/,"").toLowerCase()}function pickAttachable(candidates,opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,diag,foreignLanes=[]){let best;let bestClass=Number.MAX_SAFE_INTEGER;let bestStartedAt=Number.NEGATIVE_INFINITY;for(const c of candidates){if(attachUrl&&normalizeOrigin(c.inst.origin)!==normalizeOrigin(attachUrl)){diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): not the explicit attachUrl target`);continue}let incompatible=instanceCompatible(c.inst,opts,codeFingerprint,foreignLanes);if(incompatible==="code-fingerprint-mismatch"&&c.health?.version!==void 0&&isNewerSameLaneHolder(c.inst,opts.lane,c.health.version,VERSION,isUserZoneInstance(c.inst))){const adoptedShape=instanceShapeMismatch(c.inst,opts,foreignLanes);if(adoptedShape===void 0){diag?.(`native-attach: adopt ${c.inst.origin} (pid ${c.inst.pid}): foreign bytes but self-reported v${c.health.version} is strictly NEWER than this lane's v${VERSION} \u2014 riding the newer build instead of deadlocking behind it (#4125)`);incompatible=void 0}else{diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): reports v${c.health.version} (newer) but its config shape differs (${adoptedShape}) \u2014 shape guards survive upward adoption (#4125)`);incompatible=adoptedShape}}if(incompatible!==void 0){diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): incompatible (${incompatible})`);continue}if(opts.strictPort&&c.inst.port!==opts.port){diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): port mismatch`);continue}const sameLane=opts.lane!==void 0&&c.inst.lane===opts.lane;if(!attachUrl&&!attachExternal&&attachPolicy==="own-lane"&&opts.lane!==void 0&&!sameLane&&c.health?.watchdog?.armed!==true){diag?.(`native-attach: skip ${c.inst.origin} (pid ${c.inst.pid}): not own lane and not an armed shared daemon (attachPolicy=own-lane)`);continue}if(c.health===void 0){if(!sameLane&&!attachExternal&&!isUserZoneInstance(c.inst)){if(!refusedLog.has(c.inst.origin)){refusedLog.add(c.inst.origin);const msg=`bili: refusing to attach to ${c.inst.origin} (pid ${c.inst.pid}) \u2014 health probe silent but TCP alive (BUSY, event loop saturated #3654) and its lifecycle is unverifiable from this lane. Starting a session-owned proxy instead; set native.attachExternal=true or BILI_NATIVE_ATTACH_EXTERNAL=1 to attach anyway.`;console.error(msg);diag?.(msg)}continue}}else if(!attachGateAllows(c.health,attachExternal)&&!isUserZoneInstance(c.inst)){if(!refusedLog.has(c.inst.origin)){refusedLog.add(c.inst.origin);console.error(gateRefusalMessage(c.inst,c.health));diag?.(gateRefusalMessage(c.inst,c.health))}continue}const cls=attachClass(c.inst,opts.lane,foreignLanes);if(cls<bestClass||cls===bestClass&&c.inst.startedAt>bestStartedAt){best=c.inst;bestClass=cls;bestStartedAt=c.inst.startedAt}}return best}async function waitForStarterInstance(readInstance,fetchHealthInfo,now,sleepImpl,opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,diag,foreignLanes=[],isConnectable=tcpConnectable){const deadline=now()+SPAWN_BUDGET_MS;const probe=async()=>pickAttachable(await probeLiveInstances(readInstance,fetchHealthInfo,diag,isConnectable),opts,codeFingerprint,attachExternal,attachPolicy,attachUrl,refusedLog,diag,foreignLanes);let inst;while(now()<deadline){await sleepImpl(HEALTH_POLL_INTERVAL_MS);inst=await probe();if(inst)break;const still=readStartingMarker();if(!still||!isStartingMarkerActive(still,now()))break}return inst??await probe()}function defaultAttachDiag(debug){return msg=>{logHostEvent("info","",msg);if(debug)process.stderr.write(`${logTimestamp()} [info] [v=${VERSION}] ${msg}
|
|
130
130
|
`)}}function pickEphemeralPort(host=LAUNCHER_DEFAULT_HOST){return new Promise((resolve,reject)=>{const srv=net3.createServer();srv.once("error",reject);srv.listen(0,host,()=>{const addr=srv.address();srv.close(()=>{if(addr&&typeof addr==="object")resolve(addr.port);else reject(new Error("could not allocate a free port"))})})})}var INHERITED_PROXY_VARS=["http_proxy","https_proxy","all_proxy","HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","no_proxy","NO_PROXY"];var INTERNAL_LAUNCHER_CHANNEL_VARS=["BILI_LAUNCHER_LANE","BILI_LAUNCHER_MODEL_WINDOWS","BILI_LAUNCHER_MODEL_MAX_OUTPUTS","BILI_STRICT_PORT"];function stripInternalLauncherChannels(env){const cleaned={...env};for(const key of INTERNAL_LAUNCHER_CHANNEL_VARS)delete cleaned[key];return cleaned}function stripInheritedProxy(env){const cleaned={...env};for(const key of INHERITED_PROXY_VARS)delete cleaned[key];return stripInternalLauncherChannels(cleaned)}var INHERITED_LAUNCHER_CHANNELS=["BILI_LAUNCHER_LANE","BILI_LAUNCHER_MODEL_WINDOWS","BILI_LAUNCHER_MODEL_MAX_OUTPUTS","BILI_STRICT_PORT",SPAWN_FINGERPRINT_ENV];function stripInheritedLauncherChannels(env){const cleaned={...env};for(const key of INHERITED_LAUNCHER_CHANNELS)delete cleaned[key];return cleaned}function captureInheritedProxyEnv(env){const captured={};const pairs=[["BILI_INHERITED_HTTP_PROXY",env.HTTP_PROXY,env.http_proxy],["BILI_INHERITED_HTTPS_PROXY",env.HTTPS_PROXY,env.https_proxy],["BILI_INHERITED_ALL_PROXY",env.ALL_PROXY,env.all_proxy],["BILI_INHERITED_NO_PROXY",env.NO_PROXY,env.no_proxy]];for(const[name2,upper,lower]of pairs){const value=(upper??lower??"").trim();if(value)captured[name2]=value}return captured}function proxyStartArgs(opts){const args=["start","--host",opts.host,"--port",String(opts.port)];if(opts.passthrough)args.push("--passthrough");if(opts.debug)args.push("--debug");return args}function probeNodeWrapperTarget(candidate,env){try{const out=execFileSync5(candidate,["-p","process.execPath"],{windowsHide:true,timeout:5e3,encoding:"utf8",stdio:["ignore","pipe","pipe"],env});const p2=out.trim();return p2.length>0?p2:void 0}catch{return void 0}}function probeNodeMajor(candidate,env){try{const out=execFileSync5(candidate,["--version"],{windowsHide:true,timeout:5e3,encoding:"utf8",stdio:["ignore","pipe","pipe"],env});const m2=/^v(\d+)\.\d+\.\d+/.exec(out.trim());return m2?Number(m2[1]):void 0}catch{return void 0}}var MIN_PROXY_NODE_MAJOR=20;function looksLikeNodeExecutable(p2,platform){if(platform==="win32"){if(!/^[a-zA-Z]:[\\/]/.test(p2))return false}else if(!p2.startsWith("/")){return false}const base=p2.split(/[\\/]/).pop()?.toLowerCase()??"";return base==="node"||base==="node.exe"}function resolveNodeRuntime(execPath=process.execPath,env=process.env,platform=process.platform,existsImpl=fs14.existsSync,electronVersion=typeof process.versions.electron==="string"?process.versions.electron:void 0,probeWrapper=probeNodeWrapperTarget,probeNode=probeNodeMajor){const base=path27.basename(execPath).toLowerCase();if(base==="node"||base==="node.exe")return execPath;const override=typeof env.BILLION_CONTEXT_NODE==="string"?env.BILLION_CONTEXT_NODE.trim():"";if(override.length>0&&existsImpl(override))return override;const resolveDiscovered=candidate=>{let subject=candidate;if(platform==="win32"){const probed=probeWrapper(candidate,env);const target=probed?.trim();if(target&&target.length>0&&looksLikeNodeExecutable(target,platform)&&existsImpl(target)){if(target.toLowerCase()!==candidate.toLowerCase()){log("info",`bili: ${candidate} is a Windows node wrapper resolving to ${target} \u2014 spawning the real Node directly (#1887)`);subject=target}}}const major=probeNode(subject,env);if(major===void 0||major<MIN_PROXY_NODE_MAJOR)return void 0;return subject};const sep=platform==="win32"?";":":";const names=platform==="win32"?["node.exe"]:["node"];const home=platform==="win32"?env.USERPROFILE??"":env.HOME??"";const voltaHome=platform==="win32"?env.VOLTA_HOME??(home?home+"/Tools/volta":""):home?home+"/.volta":"";const extraDirs=platform==="win32"?["C:/Program Files/nodejs",env.LOCALAPPDATA?env.LOCALAPPDATA+"/Programs/nodejs":"",voltaHome?voltaHome+"/bin":""]:["/usr/local/bin","/opt/homebrew/bin","/opt/local/bin",voltaHome?voltaHome+"/bin":"",home?home+"/.local/bin":""];for(const dir of[...(env.PATH??"").split(sep),...extraDirs]){if(!dir)continue;for(const name2 of names){const candidate=dir.endsWith("/")||dir.endsWith("\\")?dir+name2:dir+"/"+name2;if(!existsImpl(candidate))continue;const resolved=resolveDiscovered(candidate);if(resolved!==void 0)return resolved;log("warn",`bili: skipping ${candidate} \u2014 not a usable Node runtime (--version did not report v${MIN_PROXY_NODE_MAJOR}+; set BILLION_CONTEXT_NODE if this is wrong, #3383)`)}}if(electronVersion&&electronVersion.length>0){log("warn",`bili: no usable Node runtime found on PATH or install dirs \u2014 falling back to the Electron host binary ${execPath} run as Node via ELECTRON_RUN_AS_NODE=1 (#1429/#3383)`);return execPath}throw new Error("bili: cannot find a Node runtime to spawn the proxy (this process is not Node) \u2014 set BILLION_CONTEXT_NODE")}var PORT_LOG_MAX_BYTES=5*1024*1024;function rotatePortLogIfNeeded(logPath2){try{if(fs14.statSync(logPath2).size<PORT_LOG_MAX_BYTES)return;try{fs14.unlinkSync(`${logPath2}.old`)}catch{}fs14.renameSync(logPath2,`${logPath2}.old`)}catch{}}var STALE_ROTATION_WAIT_MS=12e3;var SHUTDOWN_REQUEST_TIMEOUT_MS=3e3;var OWNER_HEARTBEAT_INTERVAL_MS=5e3;var OWNER_HEARTBEAT_POST_TIMEOUT_MS=2e3;async function requestInstanceShutdown(origin){try{const res=await fetch(`${origin}/__bili/shutdown`,{method:"POST",headers:{"content-type":"application/json",connection:"close"},body:"{}",signal:AbortSignal.timeout(SHUTDOWN_REQUEST_TIMEOUT_MS)});return res.ok}catch{return false}}async function rotateStalePredecessor(probed,resolveTargetPort,opts,attachUrl,foreignLanes,fetchHealthInfoNoReuse,now,sleep,requestShutdown){if(attachUrl!==void 0)return;const stale=probed.filter(c=>c.health!==void 0&&!isUserZoneInstance(c.inst)&&c.health.watchdog?.armed===true&&instanceShapeMismatch(c.inst,opts,foreignLanes)===void 0&&c.health.version!==void 0&&isVersionNewer(VERSION,c.health.version));if(stale.length===0)return;const targetPort=resolveTargetPort();if(targetPort===void 0)return;const candidate=stale.find(c=>c.inst.port===targetPort);if(!candidate)return;const running=candidate.health.version;if(running===void 0||!isVersionNewer(VERSION,running))return;console.error(`bili: rotating stale proxy ${candidate.inst.origin} (pid ${candidate.inst.pid}, running v${running}) \u2014 ours is v${VERSION}; requesting graceful shutdown before taking over port ${targetPort}`);const asked=await requestShutdown(candidate.inst.origin);if(!asked){console.error(`bili: stale rotation skipped \u2014 ${candidate.inst.origin} refused /__bili/shutdown (older build); falling back to the normal spawn ladder`);return}const deadline=now()+STALE_ROTATION_WAIT_MS;for(;;){const h=await fetchHealthInfoNoReuse(candidate.inst.origin);if(!h?.ok)break;if(now()>=deadline){console.error(`bili: stale rotation timed out after ${STALE_ROTATION_WAIT_MS}ms \u2014 ${candidate.inst.origin} still accepts fresh connections (listener open); falling back to the normal spawn ladder`);return}await sleep(HEALTH_POLL_INTERVAL_MS)}}function startOwnerHeartbeat(origin,pid,intervalMs=OWNER_HEARTBEAT_INTERVAL_MS,post){if(pid!==process.pid)return void 0;if(post!==void 0)return runOwnerHeartbeatLoop(post,pid,intervalMs);return runOwnerHeartbeatWorker(origin,pid,intervalMs)}var ownerHeartbeatWorkers=new Map;function runOwnerHeartbeatLoop(post,pid,intervalMs){let stopped=false;const beat=async()=>{while(!stopped){await new Promise(r=>{const t=setTimeout(r,intervalMs);t.unref?.()});if(stopped)return;try{await post(JSON.stringify({pid,hb:true}))}catch{}}};void beat();return()=>{stopped=true}}var OWNER_HEARTBEAT_WORKER_SOURCE=`
|
|
131
131
|
const { parentPort, workerData } = require("node:worker_threads");
|
|
132
132
|
const { origin, pid, intervalMs, timeoutMs } = workerData;
|