From 65a070d4dc1fdd8be96c857b5501ee2dfda17874 Mon Sep 17 00:00:00 2001 From: 0xShug0 <231717474+0xShug0@users.noreply.github.com> Date: Sun, 25 Oct 2026 16:24:04 -0400 Subject: [PATCH] Expose Studio LoRA controls with shared adapter groups and folder browsing --- docs/lora.md | 11 ++ webui/native/dist/index.html | 110 +++++++++--------- webui/native/src/lib/LoraControls.svelte | 48 ++++++++ webui/native/src/lib/LoraGroup.svelte | 23 ++++ webui/native/src/lib/catalog.ts | 15 +++ .../lib/models/ace_step/AceStepPanel.svelte | 28 ++--- .../src/lib/models/yue2/Yue2Panel.svelte | 12 +- webui/native/src/lib/types.ts | 1 + webui/native/src/routes/+page.svelte | 47 +++++--- 9 files changed, 210 insertions(+), 85 deletions(-) create mode 100644 webui/native/src/lib/LoraControls.svelte create mode 100644 webui/native/src/lib/LoraGroup.svelte diff --git a/docs/lora.md b/docs/lora.md index 01913453c..d75633690 100644 --- a/docs/lora.md +++ b/docs/lora.md @@ -44,6 +44,17 @@ Use `--session-option` on the CLI, or the same keys in a server model's they do not add inference graph operations or modify the base files. Pre-v1 GGUF packages still require a current external or compiled model spec. +In Studio, the **LoRA adapter** group provides a server-side adapter path and +strength for Qwen3-TTS/ASR, VoxCPM1/2, Fish Audio, CosyVoice3, F5-TTS, OuteTTS, +and VibeVoice. **Browse folder** selects an adapter directory on the server; +individual checkpoint paths can also be entered. Keep required configuration +and sidecar files beside the adapter. +Changing or clearing an adapter reloads the model before the next generation; +clearing it restores the base model. A blank strength uses the model's adapter +default. Models configured by the server show these settings read-only; edit +their `session_options` in the server config. ACE-Step and YuE2 use the same +group style; YuE2 retains separate AR/NAR adapters and upload controls. + ```bash audiocpp_cli --family qwen3_asr --task asr --model base.gguf \ --backend cuda --audio speech.wav \ diff --git a/webui/native/dist/index.html b/webui/native/dist/index.html index bf5cc2683..a75d76db0 100644 --- a/webui/native/dist/index.html +++ b/webui/native/dist/index.html @@ -24,7 +24,7 @@ })(); - @@ -37,26 +37,26 @@ const element = document.currentScript.parentElement; - this.__sveltekit_1xyyov=this.__sveltekit_1xyyov||{};this.__sveltekit_1xyyov.app=(function(Xc){"use strict";var qn=typeof document<"u"?document.currentScript:null;function Hk(t,e){for(var a=0;an[s]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}const qh=!1;var Eu=Array.isArray,Wk=Array.prototype.indexOf,Jc=Array.prototype.includes,Zc=Array.from,zu=Object.defineProperty,nr=Object.getOwnPropertyDescriptor,Gh=Object.getOwnPropertyDescriptors,Qk=Object.prototype,Kk=Array.prototype,Uu=Object.getPrototypeOf,Fh=Object.isExtensible;function zl(t){return typeof t=="function"}const Gr=()=>{};function Yk(t){return t()}function Bu(t){for(var e=0;e{t=n,e=s});return{promise:a,resolve:t,reject:e}}function Xk(t,e,a=!1){return t===void 0?a?e():e:t}function Ru(t,e){if(Array.isArray(t))return t;if(e===void 0||!(Symbol.iterator in t))return Array.from(t);const a=[];for(const n of t)if(a.push(n),a.length===e)break;return a}const sn=2,lo=4,Ul=8,ju=1<<24,Ss=16,ns=32,sr=64,Pu=128,ss=512,Na=1024,Oa=2048,rs=4096,Gn=8192,Hn=16384,co=32768,Nu=1<<25,rr=65536,ed=1<<17,Ch=1<<18,Wo=1<<19,Mh=1<<20,Ns=1<<25,uo=65536,td=1<<21,Qo=1<<22,Fr=1<<23,Os=Symbol("$state"),Ou=Symbol("legacy props"),Jk=Symbol(""),Eh=Symbol("attributes"),Iu=Symbol("class"),Lu=Symbol("style"),Du=Symbol("text"),Bl=Symbol("form reset"),Rl=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},jl=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml"),Zk=1,Pl=3,Ko=8;function Vu(t){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function e3(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function t3(t,e,a){throw new Error("https://svelte.dev/e/each_key_duplicate")}function i3(t){throw new Error("https://svelte.dev/e/effect_in_teardown")}function a3(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function n3(t){throw new Error("https://svelte.dev/e/effect_orphan")}function s3(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function r3(){throw new Error("https://svelte.dev/e/hydration_failed")}function o3(t){throw new Error("https://svelte.dev/e/props_invalid_value")}function l3(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function c3(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function d3(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function u3(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const f3=1,m3=2,zh=4,p3=8,g3=16,h3=1,_3=2,v3=4,b3=8,y3=16,w3=1,k3=2,Hu="[",Wu="[!",Uh="[?",Qu="]",Yo={},Ia=Symbol("uninitialized"),Bh="http://www.w3.org/1999/xhtml",x3="http://www.w3.org/2000/svg",S3="@attach";function T3(){console.warn("https://svelte.dev/e/derived_inert")}function id(t){console.warn("https://svelte.dev/e/hydration_mismatch")}function $3(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function q3(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}let Tt=!1;function un(t){Tt=t}let ci;function Ma(t){if(t===null)throw id(),Yo;return ci=t}function Ar(){return Ma(ls(ci))}function A(t){if(Tt){if(ls(ci)!==null)throw id(),Yo;ci=t}}function Ea(t=1){if(Tt){for(var e=t,a=ci;e--;)a=ls(a);ci=a}}function Nl(t=!0){for(var e=0,a=ci;;){if(a.nodeType===Ko){var n=a.data;if(n===Qu){if(e===0)return a;e-=1}else(n===Hu||n===Wu||n[0]==="["&&!isNaN(Number(n.slice(1))))&&(e+=1)}var s=ls(a);t&&a.remove(),a=s}}function Ku(t){if(!t||t.nodeType!==Ko)throw id(),Yo;return t.data}function Rh(t){return t===this.v}function jh(t,e){return t!=t?e==e:t!==e||t!==null&&typeof t=="object"||typeof t=="function"}function Ph(t){return!jh(t,this.v)}let Xo=!1,G3=!1;function F3(){Xo=!0}let Di=null;function Jo(t){Di=t}function A3(t){return C3().get(t)}function Ya(t,e=!1,a){Di={p:Di,i:!1,c:null,e:null,s:t,x:null,r:si,l:Xo&&!e?{s:null,u:null,$:[]}:null}}function Xa(t){var e=Di,a=e.e;if(a!==null){e.e=null;for(var n of a)u_(n)}return t!==void 0&&(e.x=t),e.i=!0,Di=e.p,t??{}}function Zo(){return!Xo||Di!==null&&Di.l===null}function C3(t){return Di===null&&Vu(),Di.c??=new Map(M3(Di)||void 0)}function M3(t){let e=t.p;for(;e!==null;){const a=e.c;if(a!==null)return a;e=e.p}return null}let fo=[];function Nh(){var t=fo;fo=[],Bu(t)}function Ts(t){if(fo.length===0&&!Il){var e=fo;queueMicrotask(()=>{e===fo&&Nh()})}fo.push(t)}function E3(){for(;fo.length>0;)Nh()}function Oh(t){var e=si;if(e===null)return ki.f|=Fr,t;if((e.f&co)===0&&(e.f&lo)===0)throw t;Cr(t,e)}function Cr(t,e){if(!(e!==null&&(e.f&Hn)!==0)){for(;e!==null;){if((e.f&Pu)!==0){if((e.f&co)===0)throw t;try{e.b.error(t);return}catch(a){t=a}}e=e.parent}throw t}}const z3=-7169;function _a(t,e){t.f=t.f&z3|e}function Yu(t){(t.f&ss)!==0||t.deps===null?_a(t,Na):_a(t,rs)}function Ih(t){if(t!==null)for(const e of t)(e.f&sn)===0||(e.f&uo)===0||(e.f^=uo,Ih(e.deps))}function Lh(t,e,a){(t.f&Oa)!==0?e.add(t):(t.f&rs)!==0&&a.add(t),Ih(t.deps),_a(t,Na)}function Dh(t,e,a){if(t==null)return e(void 0),Gr;const n=q(()=>t.subscribe(e,a));return n.unsubscribe?()=>n.unsubscribe():n}const el=[];function tl(t,e=Gr){let a=null;const n=new Set;function s(l){if(jh(t,l)&&(t=l,a)){const u=!el.length;for(const p of n)p[1](),el.push(p,t);if(u){for(let p=0;p{n.delete(p),n.size===0&&a&&(a(),a=null)}}return{set:s,update:r,subscribe:o}}function ad(t){let e;return Dh(t,a=>e=a)(),e}let nd=!1,Xu=Symbol("unmounted");function sd(t,e,a){const n=a[e]??={store:null,source:oe(void 0),unsubscribe:Gr};if(n.store!==t&&!(Xu in a))if(n.unsubscribe(),n.store=t??null,t==null)n.source.v=void 0,n.unsubscribe=Gr;else{var s=!0;n.unsubscribe=Dh(t,r=>{s?n.source.v=r:E(n.source,r)}),s=!1}return t&&Xu in a?ad(t):i(n.source)}function Ju(){const t={};function e(){ol(()=>{for(var a in t)t[a].unsubscribe();zu(t,Xu,{enumerable:!1,value:!0})})}return[t,e]}function U3(t){var e=nd;try{return nd=!1,[t(),nd]}finally{nd=e}}function B3(t,e){if(e){const a=document.body;t.autofocus=!0,Ts(()=>{document.activeElement===a&&t.focus()})}}function La(t){Tt&&os(t)!==null&&uf(t)}let Vh=!1;function Hh(){Vh||(Vh=!0,document.addEventListener("reset",t=>{Promise.resolve().then(()=>{if(!t.defaultPrevented)for(const e of t.target.elements)e[Bl]?.()})},{capture:!0}))}function il(t){var e=ki,a=si;us(null),fs(null);try{return t()}finally{us(e),fs(a)}}function Zu(t,e,a,n=a){t.addEventListener(e,()=>il(a));const s=t[Bl];s?t[Bl]=()=>{s(),n(!0)}:t[Bl]=()=>n(!0),Hh()}function R3(t){let e=0,a=po(0),n;return()=>{ff()&&(i(a),ll(()=>(e===0&&(n=q(()=>t(()=>Ll(a)))),e+=1,()=>{Ts(()=>{e-=1,e===0&&(n?.(),n=void 0,Ll(a))})})))}}var j3=rr|Wo;function P3(t,e,a,n){new N3(t,e,a,n)}class N3{parent;is_pending=!1;transform_error;#e;#t=Tt?ci:null;#i;#l;#n;#s=null;#a=null;#o=null;#r=null;#g=0;#c=0;#d=!1;#f=new Set;#h=new Set;#u=null;#v=R3(()=>(this.#u=po(this.#g),()=>{this.#u=null}));constructor(e,a,n,s){this.#e=e,this.#i=a,this.#l=r=>{var o=si;o.b=this,o.f|=Pu,n(r)},this.parent=si.b,this.transform_error=s??this.parent?.transform_error??(r=>r),this.#n=Mr(()=>{if(Tt){const r=this.#t;Ar();const o=r.data===Wu;if(r.data.startsWith(Uh)){const u=JSON.parse(r.data.slice(Uh.length));this.#b(u)}else o?this.#k():this.#_()}else this.#m()},j3),Tt&&(this.#e=ci)}#_(){try{this.#s=Fn(()=>this.#l(this.#e))}catch(e){this.error(e)}}#b(e){const a=this.#i.failed,{reset:n,invoke_onerror:s}=this.#y(e);Ts(s),a&&(this.#o=Fn(()=>{a(this.#e,()=>e,()=>n)}))}#y(e){var a=!1,n=!1;const s=()=>{if(a){q3();return}a=!0,n&&u3(),this.#o!==null&&ho(this.#o,()=>{this.#o=null}),this.#p(()=>{this.#m()})};return{reset:s,invoke_onerror:()=>{try{n=!0,this.#i.onerror?.(e,s),n=!1}catch(o){Cr(o,this.#n&&this.#n.parent)}}}}#k(){const e=this.#i.pending;e&&(this.is_pending=!0,this.#a=Fn(()=>e(this.#e)),Ts(()=>{var a=this.#r=document.createDocumentFragment(),n=bn();a.append(n),this.#s=this.#p(()=>Fn(()=>this.#l(n))),this.#c===0&&(this.#e.before(a),this.#r=null,ho(this.#a,()=>{this.#a=null}),this.#w(ni))}))}#m(){try{if(this.is_pending=this.has_pending_snippet(),this.#c=0,this.#g=0,this.#s=Fn(()=>{this.#l(this.#e)}),this.#c>0){var e=this.#r=document.createDocumentFragment();pf(this.#s,e);const a=this.#i.pending;this.#a=Fn(()=>a(this.#e))}else this.#w(ni)}catch(a){this.error(a)}}#w(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#h)}defer_effect(e){Lh(e,this.#f,this.#h)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#i.pending}#p(e){var a=si,n=ki,s=Di;fs(this.#n),us(this.#n),Jo(this.#n.ctx);try{return or.ensure(),e()}catch(r){return Oh(r),null}finally{fs(a),us(n),Jo(s)}}#x(e,a){if(!this.has_pending_snippet()){this.parent&&this.parent.#x(e,a);return}this.#c+=e,this.#c===0&&(this.#w(a),this.#a&&ho(this.#a,()=>{this.#a=null}),this.#r&&(this.#e.before(this.#r),this.#r=null))}update_pending_count(e,a){this.#x(e,a),this.#g+=e,!(!this.#u||this.#d)&&(this.#d=!0,Ts(()=>{this.#d=!1,this.#u&&go(this.#u,this.#g)}))}get_effect_pending(){return this.#v(),i(this.#u)}error(e){if(!this.#i.onerror&&!this.#i.failed)throw e;ni?.is_fork?(this.#s&&ni.skip_effect(this.#s),this.#a&&ni.skip_effect(this.#a),this.#o&&ni.skip_effect(this.#o),ni.oncommit(()=>{this.#S(e)})):this.#S(e)}#S(e){this.#s&&(fn(this.#s),this.#s=null),this.#a&&(fn(this.#a),this.#a=null),this.#o&&(fn(this.#o),this.#o=null),Tt&&(Ma(this.#t),Ea(),Ma(Nl()));let a=this.#i.failed;const n=s=>{const{reset:r,invoke_onerror:o}=this.#y(s);o(),a&&(this.#o=this.#p(()=>{try{return Fn(()=>{var l=si;l.b=this,l.f|=Pu,a(this.#e,()=>s,()=>r)})}catch(l){return Cr(l,this.#n.parent),null}}))};Ts(()=>{var s;try{s=this.transform_error(e)}catch(r){Cr(r,this.#n&&this.#n.parent);return}s!==null&&typeof s=="object"&&typeof s.then=="function"?s.then(n,r=>Cr(r,this.#n&&this.#n.parent)):n(s)})}}function ef(t,e,a,n){const s=Zo()?al:Qt;var r=t.filter(f=>!f.settled),o=e.map(s);if(a.length===0&&r.length===0){n(o);return}var l=si,u=O3(),p=r.length===1?r[0].promise:r.length>1?Promise.all(r.map(f=>f.promise)):null;function g(f){if((l.f&Hn)===0){u();try{n([...o,...f])}catch(d){Cr(d,l)}rd()}}var h=Wh();if(a.length===0){p.then(()=>g([])).finally(h);return}function m(){Promise.all(a.map(f=>I3(f))).then(g).catch(f=>Cr(f,l)).finally(h)}p?p.then(()=>{u(),m(),rd()}):m()}function O3(){var t=si,e=ki,a=Di,n=ni;return function(r=!0){fs(t),us(e),Jo(a),r&&(t.f&Hn)===0&&(n?.activate(),n?.apply())}}function rd(t=!0){fs(null),us(null),Jo(null),t&&ni?.deactivate()}function Wh(){var t=si,e=t.b,a=ni,n=!!e?.is_rendered();return e?.update_pending_count(1,a),a.increment(n,t),()=>{e?.update_pending_count(-1,a),a.decrement(n,t)}}function al(t){var e=sn|Oa;return si!==null&&(si.f|=Wo),{ctx:Di,deps:null,effects:null,equals:Rh,f:e,fn:t,reactions:null,rv:0,v:Ia,wv:0,parent:si,ac:null}}const Ol=Symbol("obsolete");function I3(t,e,a){let n=si;n===null&&e3();var s=void 0,r=po(Ia),o=!ki,l=new Set;return X3(()=>{var u=si,p=Ah();s=p.promise;try{Promise.resolve(t()).then(p.resolve,f=>{f!==Rl&&p.reject(f)}).finally(rd)}catch(f){p.reject(f),rd()}var g=ni;if(o){if((u.f&co)!==0)var h=Wh();if(n.b?.is_rendered())g.async_deriveds.get(u)?.reject(Ol);else for(const f of l.values())f.reject(Ol);l.add(p),g.async_deriveds.set(u,p)}const m=(f,d=void 0)=>{h?.(),l.delete(p),d!==Ol&&(g.activate(),d?(r.f|=Fr,go(r,d)):((r.f&Fr)!==0&&(r.f^=Fr),go(r,f)),g.deactivate())};p.promise.then(m,f=>m(null,f||"unknown"))}),ol(()=>{for(const u of l)u.reject(Ol)}),new Promise(u=>{function p(g){function h(){g===s?u(r):p(s)}g.then(h,h)}p(s)})}function Si(t){const e=al(t);return b_(e),e}function Qt(t){const e=al(t);return e.equals=Ph,e}function L3(t){var e=t.effects;if(e!==null){t.effects=null;for(var a=0;a{e.ac.abort(Rl),e.ac=null}),e.fn!==null&&(e.teardown=Gr),Dl(e,0),mf(e))}function Kh(t){if(t.effects!==null)for(const e of t.effects)e.teardown&&e.fn!==null&&bo(e)}let af=null,nl=null,ni=null,nf=null,$s=null,sf=null,Il=!1,rf=!1,sl=null,od=null;var Yh=0,xE=new Set;let V3=1;class or{id=V3++;#e=!1;linked=!0;#t=null;#i=null;async_deriveds=new Map;current=new Map;previous=new Map;#l=new Set;#n=new Set;#s=0;#a=new Map;#o=null;#r=[];#g=[];#c=new Set;#d=new Set;#f=new Map;#h=new Set;is_fork=!1;#u=!1;constructor(){nl===null?af=nl=this:(nl.#i=this,this.#t=nl),nl=this}#v(){if(this.is_fork)return!0;for(const n of this.#a.keys()){for(var e=n,a=!1;e.parent!==null;){if(this.#f.has(e)){a=!0;break}e=e.parent}if(!a)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#h.delete(e)}unskip_effect(e,a=n=>this.schedule(n)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var s of n.d)_a(s,Oa),a(s);for(s of n.m)_a(s,rs),a(s)}this.#h.add(e)}#_(){this.#e=!0,Yh++>1e3&&(this.#p(),H3());for(const u of this.#c)this.#d.delete(u),_a(u,Oa),this.schedule(u);for(const u of this.#d)_a(u,rs),this.schedule(u);const e=this.#r;this.#r=[],this.apply();var a=sl=[],n=[],s=od=[];for(const u of e)try{this.#b(u,a,n)}catch(p){throw t_(u),this.#v()||this.discard(),p}if(ni=null,s.length>0){var r=or.ensure();for(const u of s)r.schedule(u)}if(sl=null,od=null,this.#v()){this.#m(n),this.#m(a);for(const[u,p]of this.#f)e_(u,p);s.length>0&&ni.#_();return}const o=this.#y();if(o){this.#m(n),this.#m(a),o.#k(this);return}this.#c.clear(),this.#d.clear();for(const u of this.#l)u(this);this.#l.clear(),nf=this,Jh(n),Jh(a),nf=null,this.#o?.resolve();var l=ni;if(this.#s===0&&(this.#r.length===0||l!==null)&&this.#p(),this.#r.length>0)if(l!==null){const u=l;u.#r.push(...this.#r.filter(p=>!u.#r.includes(p)))}else l=this;l!==null&&l.#_()}#b(e,a,n){e.f^=Na;for(var s=e.first;s!==null;){var r=s.f,o=(r&(ns|sr))!==0,l=o&&(r&Na)!==0,u=l||(r&Gn)!==0||this.#f.has(s);if(!u&&s.fn!==null){o?s.f^=Na:(r&lo)!==0?a.push(s):dl(s)&&((r&Ss)!==0&&this.#d.add(s),bo(s));var p=s.first;if(p!==null){s=p;continue}}for(;s!==null;){var g=s.next;if(g!==null){s=g;break}s=s.parent}}}#y(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(const[a,[,n]]of this.current)if(e.current.has(a)&&!n)return e}e=e.#t}return null}#k(e){for(const[n,s]of e.current)!this.previous.has(n)&&e.previous.has(n)&&this.previous.set(n,e.previous.get(n)),this.current.set(n,s);for(const[n,s]of e.async_deriveds){const r=this.async_deriveds.get(n);r&&s.promise.then(r.resolve).catch(r.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#c,e.#d);const a=n=>{var s=n.reactions;if(s!==null&&!((n.f&sn)!==0&&(n.f&(Oa|rs))===0))for(const l of s){var r=l.f;if((r&sn)!==0)a(l);else{var o=l;r&(Qo|Ss)&&!this.async_deriveds.has(o)&&(this.#d.delete(o),_a(o,Oa),this.schedule(o))}}};for(const n of this.current.keys())a(n);this.oncommit(()=>e.discard()),e.#p(),ni=this,this.#_()}#m(e){for(var a=0;a!h.current.get(m)[1]);if(!(!h.#e||s.length===0)){var r=s.filter(m=>!this.current.has(m));if(r.length===0)e&&h.discard();else if(a.length>0){if(e)for(const m of this.#h)h.unskip_effect(m,f=>{(f.f&(Ss|Qo))!==0?h.schedule(f):h.#m([f])});h.activate();var o=new Set,l=new Map;for(var u of a)Zh(u,r,o,l);l=new Map;var p=[...h.current].filter(([m,f])=>{const d=this.current.get(m);return d?d[0]!==f[0]||d[1]!==f[1]:!0}).map(([m])=>m);if(p.length>0)for(const m of this.#g)(m.f&(Hn|Gn|ed))===0&&of(m,p,l)&&((m.f&(Qo|Ss))!==0?(_a(m,Oa),h.schedule(m)):h.#c.add(m));if(h.#r.length>0&&!h.#u){h.apply();for(var g of h.#r)h.#b(g,[],[]);h.#r=[]}h.deactivate()}}}}increment(e,a){if(this.#s+=1,e){let n=this.#a.get(a)??0;this.#a.set(a,n+1)}}decrement(e,a){if(this.#s-=1,e){let n=this.#a.get(a)??0;n===1?this.#a.delete(a):this.#a.set(a,n-1)}this.#u||(this.#u=!0,Ts(()=>{this.#u=!1,this.linked&&this.flush()}))}transfer_effects(e,a){for(const n of e)this.#c.add(n);for(const n of a)this.#d.add(n);e.clear(),a.clear()}oncommit(e){this.#l.add(e)}ondiscard(e){this.#n.add(e)}settled(){return(this.#o??=Ah()).promise}static ensure(){if(ni===null){const e=ni=new or;!rf&&!Il&&Ts(()=>{e.#e||e.flush()})}return ni}apply(){{$s=null;return}}schedule(e){if(sf=e,e.b?.is_pending&&(e.f&(lo|Ul|ju))!==0&&(e.f&co)===0){e.b.defer_effect(e);return}for(var a=e;a.parent!==null;){a=a.parent;var n=a.f;if(sl!==null&&a===si&&(ki===null||(ki.f&sn)===0))return;if((n&(sr|ns))!==0){if((n&Na)===0)return;a.f^=Na}}this.#r.push(a)}#p(){if(this.linked){var e=this.#t,a=this.#i;e===null?af=a:e.#i=a,a===null?nl=e:a.#t=e,this.linked=!1}}}function Xh(t){var e=Il;Il=!0;try{for(var a;;){if(E3(),ni===null)return a;ni.flush()}}finally{Il=e}}function H3(){try{s3()}catch(t){Cr(t,sf)}}let lr=null;function Jh(t){var e=t.length;if(e!==0){for(var a=0;a0)){mo.clear();for(const s of lr){if((s.f&(Hn|Gn))!==0)continue;const r=[s];let o=s.parent;for(;o!==null;)lr.has(o)&&(lr.delete(o),r.push(o)),o=o.parent;for(let l=r.length-1;l>=0;l--){const u=r[l];(u.f&(Hn|Gn))===0&&bo(u)}}lr.clear()}}lr=null}}function Zh(t,e,a,n){if(!a.has(t)&&(a.add(t),t.reactions!==null))for(const s of t.reactions){const r=s.f;(r&sn)!==0?Zh(s,e,a,n):(r&(Qo|Ss))!==0&&(r&Oa)===0&&of(s,e,n)&&(_a(s,Oa),lf(s))}}function of(t,e,a){const n=a.get(t);if(n!==void 0)return n;if(t.deps!==null)for(const s of t.deps){if(Jc.call(e,s))return!0;if((s.f&sn)!==0&&of(s,e,a))return a.set(s,!0),!0}return a.set(t,!1),!1}function lf(t){ni.schedule(t)}function e_(t,e){if(!((t.f&ns)!==0&&(t.f&Na)!==0)){(t.f&Oa)!==0?e.d.push(t):(t.f&rs)!==0&&e.m.push(t),_a(t,Na);for(var a=t.first;a!==null;)e_(a,e),a=a.next}}function t_(t){_a(t,Na);for(var e=t.first;e!==null;)t_(e),e=e.next}let ld=new Set;const mo=new Map;let i_=!1;function po(t,e){var a={f:0,v:t,reactions:null,equals:Rh,rv:0,wv:0};return a}function za(t,e){const a=po(t);return b_(a),a}function oe(t,e=!1,a=!0){const n=po(t);return e||(n.equals=Ph),Xo&&a&&Di!==null&&Di.l!==null&&(Di.l.s??=[]).push(n),n}function hi(t,e){return E(t,q(()=>i(t))),e}function E(t,e,a=!1){ki!==null&&(!qs||(ki.f&ed)!==0)&&Zo()&&(ki.f&(sn|Ss|Qo|ed))!==0&&(Is===null||!Is.has(t))&&d3();let n=a?rl(e):e;return go(t,n,od)}function go(t,e,a=null){if(!t.equals(e)){mo.set(t,cr?e:t.v);var n=or.ensure();if(n.capture(t,e),(t.f&sn)!==0){const s=t;(t.f&Oa)!==0&&tf(s),$s===null&&Yu(s)}t.wv=k_(),a_(t,Oa,a),Zo()&&si!==null&&(si.f&Na)!==0&&(si.f&(ns|sr))===0&&(ms===null?ix([t]):ms.push(t)),!n.is_fork&&ld.size>0&&!i_&&W3()}return e}function W3(){i_=!1;for(const t of ld){(t.f&Na)!==0&&_a(t,rs);let e;try{e=dl(t)}catch{e=!0}e&&bo(t)}ld.clear()}function Ll(t){E(t,t.v+1)}function a_(t,e,a){var n=t.reactions;if(n!==null)for(var s=Zo(),r=n.length,o=0;o{if(vo===r)return l();var u=ki,p=vo;us(null),w_(r);var g=l();return us(u),w_(p),g};return n&&a.set("length",za(t.length)),new Proxy(t,{defineProperty(l,u,p){(!("value"in p)||p.configurable===!1||p.enumerable===!1||p.writable===!1)&&l3();var g=a.get(u);return g===void 0?o(()=>{var h=za(p.value);return a.set(u,h),h}):E(g,p.value,!0),!0},deleteProperty(l,u){var p=a.get(u);if(p===void 0){if(u in l){const g=o(()=>za(Ia));a.set(u,g),Ll(s)}}else E(p,Ia),Ll(s);return!0},get(l,u,p){if(u===Os)return t;var g=a.get(u),h=u in l;if(g===void 0&&(!h||nr(l,u)?.writable)&&(g=o(()=>{var f=rl(h?l[u]:Ia),d=za(f);return d}),a.set(u,g)),g!==void 0){var m=i(g);return m===Ia?void 0:m}return Reflect.get(l,u,p)},getOwnPropertyDescriptor(l,u){var p=Reflect.getOwnPropertyDescriptor(l,u);if(p&&"value"in p){var g=a.get(u);g&&(p.value=i(g))}else if(p===void 0){var h=a.get(u),m=h?.v;if(h!==void 0&&m!==Ia)return{enumerable:!0,configurable:!0,value:m,writable:!0}}return p},has(l,u){if(u===Os)return!0;var p=a.get(u),g=p!==void 0&&p.v!==Ia||Reflect.has(l,u);if(p!==void 0||si!==null&&(!g||nr(l,u)?.writable)){p===void 0&&(p=o(()=>{var m=g?rl(l[u]):Ia,f=za(m);return f}),a.set(u,p));var h=i(p);if(h===Ia)return!1}return g},set(l,u,p,g){var h=a.get(u),m=u in l;if(n&&u==="length")for(var f=p;fza(Ia)),a.set(f+"",d))}if(h===void 0)(!m||nr(l,u)?.writable)&&(h=o(()=>za(void 0)),E(h,rl(p)),a.set(u,h));else{m=h.v!==Ia;var c=o(()=>rl(p));E(h,c)}var _=Reflect.getOwnPropertyDescriptor(l,u);if(_?.set&&_.set.call(g,p),!m){if(n&&typeof u=="string"){var b=a.get("length"),v=Number(u);Number.isInteger(v)&&v>=b.v&&E(b,v+1)}Ll(s)}return!0},ownKeys(l){i(s);var u=Reflect.ownKeys(l).filter(h=>{var m=a.get(h);return m===void 0||m.v!==Ia});for(var[p,g]of a)g.v!==Ia&&!(p in l)&&u.push(p);return u},setPrototypeOf(){c3()}})}function n_(t){try{if(t!==null&&typeof t=="object"&&Os in t)return t[Os]}catch{}return t}function Q3(t,e){return Object.is(n_(t),n_(e))}var cd,cf,s_,r_,o_;function df(){if(cd===void 0){cd=window,cf=document,s_=/Firefox/.test(navigator.userAgent);var t=Element.prototype,e=Node.prototype,a=Text.prototype;r_=nr(e,"firstChild").get,o_=nr(e,"nextSibling").get,Fh(t)&&(t[Iu]=void 0,t[Eh]=null,t[Lu]=void 0,t.__e=void 0),Fh(a)&&(a[Du]=void 0)}}function bn(t=""){return document.createTextNode(t)}function os(t){return r_.call(t)}function ls(t){return o_.call(t)}function z(t,e){if(!Tt)return os(t);var a=os(ci);if(a===null)a=ci.appendChild(bn());else if(e&&a.nodeType!==Pl){var n=bn();return a?.before(n),Ma(n),n}return e&&dd(a),Ma(a),a}function Et(t,e=!1){if(!Tt){var a=os(t);return a instanceof Comment&&a.data===""?ls(a):a}if(e){if(ci?.nodeType!==Pl){var n=bn();return ci?.before(n),Ma(n),n}dd(ci)}return ci}function j(t,e=1,a=!1){let n=Tt?ci:t;for(var s;e--;)s=n,n=ls(n);if(!Tt)return n;if(a){if(n?.nodeType!==Pl){var r=bn();return n===null?s?.after(r):n.before(r),Ma(r),r}dd(n)}return Ma(n),n}function uf(t){t.textContent=""}function l_(){return!1}function c_(t,e,a){return e==null||e===Bh?a?document.createElement(t,{is:a}):document.createElement(t):a?document.createElementNS(e,t,{is:a}):document.createElementNS(e,t)}function dd(t){if(t.nodeValue.length<65536)return;let e=t.nextSibling;for(;e!==null&&e.nodeType===Pl;)e.remove(),t.nodeValue+=e.nodeValue,e=t.nextSibling}function d_(t){si===null&&(ki===null&&n3(),a3()),cr&&i3()}function K3(t,e){var a=e.last;a===null?e.last=e.first=t:(a.next=t,t.prev=a,e.last=t)}function cs(t,e){var a=si;a!==null&&(a.f&Gn)!==0&&(t|=Gn);var n={ctx:Di,deps:null,nodes:null,f:t|Oa|ss,first:null,fn:e,last:null,next:null,parent:a,b:a&&a.b,prev:null,teardown:null,wv:0,ac:null};ni?.register_created_effect(n);var s=n;if((t&lo)!==0)sl!==null?sl.push(n):or.ensure().schedule(n);else if(e!==null){try{bo(n)}catch(o){throw fn(n),o}s.deps===null&&s.teardown===null&&s.nodes===null&&s.first===s.last&&(s.f&Wo)===0&&(s=s.first,(t&Ss)!==0&&(t&rr)!==0&&s!==null&&(s.f|=rr))}if(s!==null&&(s.parent=a,a!==null&&K3(s,a),ki!==null&&(ki.f&sn)!==0&&(t&sr)===0)){var r=ki;(r.effects??=[]).push(s)}return n}function ff(){return ki!==null&&!qs}function ol(t){const e=cs(Ul,null);return _a(e,Na),e.teardown=t,e}function ud(t){d_();var e=si.f,a=!ki&&(e&ns)!==0&&Di!==null&&!Di.i;if(a){var n=Di;(n.e??=[]).push(t)}else return u_(t)}function u_(t){return cs(lo|Mh,t)}function f_(t){return d_(),cs(Ul|Mh,t)}function Y3(t){or.ensure();const e=cs(sr|Wo,t);return(a={})=>new Promise(n=>{a.outro?ho(e,()=>{fn(e),n(void 0)}):(fn(e),n(void 0))})}function fd(t){return cs(lo,t)}function Ke(t,e){var a=Di,n={effect:null,ran:!1,deps:t};a.l.$.push(n),n.effect=ll(()=>{if(t(),!n.ran){n.ran=!0;var s=si;try{fs(s.parent),q(e)}finally{fs(s)}}})}function ds(){var t=Di;ll(()=>{for(var e of t.l.$){e.deps();var a=e.effect;(a.f&Na)!==0&&a.deps!==null&&_a(a,rs),dl(a)&&bo(a),e.ran=!1}})}function X3(t){return cs(Qo|Wo,t)}function ll(t,e=0){return cs(Ul|e,t)}function de(t,e=[],a=[],n=[]){ef(n,e,a,s=>{cs(Ul,()=>{t(...s.map(i))})})}function J3(t,e=[],a=[],n=[]){ef(n,e,a,s=>{cs(lo,()=>t(...s.map(i)))})}function Mr(t,e=0){var a=cs(Ss|e,t);return a}function m_(t,e=0){var a=cs(ju|e,t);return a}function Fn(t){return cs(ns|Wo,t)}function p_(t){var e=t.teardown;if(e!==null){const a=cr,n=ki;v_(!0),us(null);try{e.call(null)}finally{v_(a),us(n)}}}function mf(t,e=!1){var a=t.first;for(t.first=t.last=null;a!==null;){const s=a.ac;s!==null&&il(()=>{s.abort(Rl)});var n=a.next;(a.f&sr)!==0?a.parent=null:fn(a,e),a=n}}function Z3(t){for(var e=t.first;e!==null;){var a=e.next;(e.f&ns)===0&&fn(e),e=a}}function fn(t,e=!0){var a=!1;(e||(t.f&Ch)!==0)&&t.nodes!==null&&t.nodes.end!==null&&(ex(t.nodes.start,t.nodes.end),a=!0),t.f|=Nu,mf(t,e&&!a),Dl(t,0);var n=t.nodes&&t.nodes.t;if(n!==null)for(const r of n)r.stop();p_(t),t.f^=Nu,t.f|=Hn;var s=t.parent;s!==null&&s.first!==null&&g_(t),t.next=t.prev=t.teardown=t.ctx=t.deps=t.fn=t.nodes=t.ac=t.b=null}function ex(t,e){for(;t!==null;){var a=t===e?null:ls(t);t.remove(),t=a}}function g_(t){var e=t.parent,a=t.prev,n=t.next;a!==null&&(a.next=n),n!==null&&(n.prev=a),e!==null&&(e.first===t&&(e.first=n),e.last===t&&(e.last=a))}function ho(t,e,a=!0){var n=[];h_(t,n,!0);var s=()=>{a&&fn(t),e&&e()},r=n.length;if(r>0){var o=()=>--r||s();for(var l of n)l.out(o)}else s()}function h_(t,e,a){if((t.f&Gn)===0){t.f^=Gn;var n=t.nodes&&t.nodes.t;if(n!==null)for(const l of n)(l.is_global||a)&&e.push(l);for(var s=t.first;s!==null;){var r=s.next;if((s.f&sr)===0){var o=(s.f&rr)!==0||(s.f&ns)!==0&&(t.f&Ss)!==0;h_(s,e,o?a:!1)}s=r}}}function md(t){__(t,!0)}function __(t,e){if((t.f&Gn)!==0){t.f^=Gn,(t.f&Na)===0&&(_a(t,Oa),or.ensure().schedule(t));for(var a=t.first;a!==null;){var n=a.next,s=(a.f&rr)!==0||(a.f&ns)!==0;__(a,s?e:!1),a=n}var r=t.nodes&&t.nodes.t;if(r!==null)for(const o of r)(o.is_global||e)&&o.in()}}function pf(t,e){if(t.nodes)for(var a=t.nodes.start,n=t.nodes.end;a!==null;){var s=a===n?null:ls(a);e.append(a),a=s}}let cl=null;function tx(t){var e=cl;try{if(cl=new Set,q(t),e!==null)for(var a of cl)e.add(a);return cl}finally{cl=e}}function pd(t){for(var e of tx(t))go(e,e.v)}let gd=!1,cr=!1;function v_(t){cr=t}let ki=null,qs=!1;function us(t){ki=t}let si=null;function fs(t){si=t}let Is=null;function b_(t){ki!==null&&(Is??=new Set).add(t)}let Rn=null,Wn=0,ms=null;function ix(t){ms=t}let y_=1,_o=0,vo=_o;function w_(t){vo=t}function k_(){return++y_}function dl(t){var e=t.f;if((e&Oa)!==0)return!0;if(e&sn&&(t.f&=~uo),(e&rs)!==0){for(var a=t.deps,n=a.length,s=0;st.wv)return!0}(e&ss)!==0&&$s===null&&_a(t,Na)}return!1}function x_(t,e,a=!0){var n=t.reactions;if(n!==null&&!(Is!==null&&Is.has(t)))for(var s=0;s{t.ac.abort(Rl)}),t.ac=null);try{t.f|=td;var g=t.fn,h=g();t.f|=co;var m=t.deps,f=ni?.is_fork;if(Rn!==null){var d;if(f||Dl(t,Wn),m!==null&&Wn>0)for(m.length=Wn+Rn.length,d=0;d{r.ac.abort(Rl),r.ac=null,_a(r,Oa)}),D3(r),Dl(r,0)}}function Dl(t,e){var a=t.deps;if(a!==null)for(var n=e;na?.call(this,r))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?Ts(()=>{e.addEventListener(t,s,n)}):e.addEventListener(t,s,n),s}function $e(t,e,a,n,s){var r={capture:n,passive:s},o=G_(t,e,a,r);(e===document.body||e===window||e===document||e instanceof HTMLMediaElement)&&ol(()=>{e.removeEventListener(t,o,r)})}function px(t,e,a){(e[Vl]??={})[t]=a}function gx(t){for(var e=0;e{throw c});throw m}}finally{t[Vl]=e,delete t.currentTarget,us(g),fs(h)}}}const hx=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:t=>t});function _x(t){return hx?.createHTML(t)??t}function A_(t){var e=c_("template");return e.innerHTML=_x(t.replaceAll("","")),e.content}function Gs(t,e){var a=si;a.nodes===null&&(a.nodes={start:t,end:e,a:null,t:null})}function ue(t,e){var a=(e&w3)!==0,n=(e&k3)!==0,s,r=!t.startsWith("");return()=>{if(Tt)return Gs(ci,null),ci;s===void 0&&(s=A_(r?t:""+t),a||(s=os(s)));var o=n||s_?document.importNode(s,!0):s.cloneNode(!0);if(a){var l=os(o),u=o.lastChild;Gs(l,u)}else Gs(o,o);return o}}function vx(t,e,a="svg"){var n=!t.startsWith(""),s=`<${a}>${n?t:""+t}`,r;return()=>{if(Tt)return Gs(ci,null),ci;if(!r){var o=A_(s),l=os(o);r=os(l)}var u=r.cloneNode(!0);return Gs(u,u),u}}function bx(t,e){return vx(t,e,"svg")}function C_(t=""){if(!Tt){var e=bn(t+"");return Gs(e,e),e}var a=ci;return a.nodeType!==Pl?(a.before(a=bn()),Ma(a)):dd(a),Gs(a,a),a}function Ls(){if(Tt)return Gs(ci,null),ci;var t=document.createDocumentFragment(),e=document.createComment(""),a=bn();return t.append(e,a),Gs(e,a),t}function te(t,e){if(Tt){var a=si;((a.f&co)===0||a.nodes.end===null)&&(a.nodes.end=ci),Ar();return}t!==null&&t.before(e)}function X(t,e){var a=e==null?"":typeof e=="object"?`${e}`:e;a!==(t[Du]??=t.nodeValue)&&(t[Du]=a,t.nodeValue=`${a}`)}function M_(t,e){return E_(t,e)}function yx(t,e){df(),e.intro=e.intro??!1;const a=e.target,n=Tt,s=ci;try{for(var r=os(a);r&&(r.nodeType!==Ko||r.data!==Hu);)r=ls(r);if(!r)throw Yo;un(!0),Ma(r);const o=E_(t,{...e,anchor:r});return un(!1),o}catch(o){if(o instanceof Error&&o.message.split(` -`).some(l=>l.startsWith("https://svelte.dev/e/")))throw o;return o!==Yo&&console.warn("Failed to hydrate: ",o),e.recover===!1&&r3(),df(),uf(a),un(!1),M_(t,e)}finally{un(n),Ma(s)}}const hd=new Map;function E_(t,{target:e,anchor:a,props:n={},events:s,context:r,intro:o=!0,transformError:l}){df();var u=void 0,p=Y3(()=>{var g=a??e.appendChild(bn());P3(g,{pending:()=>{}},f=>{Ya({});var d=Di;if(r&&(d.c=r),s&&(n.$$events=s),Tt&&Gs(f,null),u=t(f,n)||{},Tt&&(si.nodes.end=ci,ci===null||ci.nodeType!==Ko||ci.data!==Qu))throw id(),Yo;Xa()},l);var h=new Set,m=f=>{for(var d=0;d{for(var f of h)for(const _ of[e,document]){var d=hd.get(_),c=d.get(f);--c==0?(_.removeEventListener(f,_f),d.delete(f),d.size===0&&hd.delete(_)):d.set(f,c)}hf.delete(m),g!==a&&g.parentNode?.removeChild(g)}});return vf.set(u,p),u}let vf=new WeakMap;function wx(t,e){const a=vf.get(t);return a?(vf.delete(t),a(e)):Promise.resolve()}class Hl{anchor;#e=new Map;#t=new Map;#i=new Map;#l=new Set;#n=!0;constructor(e,a=!0){this.anchor=e,this.#n=a}#s=e=>{if(this.#e.has(e)){var a=this.#e.get(e),n=this.#t.get(a);if(n)md(n),this.#l.delete(a);else{var s=this.#i.get(a);s&&(md(s.effect),this.#t.set(a,s.effect),this.#i.delete(a),s.fragment.lastChild.remove(),this.anchor.before(s.fragment),n=s.effect)}for(const[r,o]of this.#e){if(this.#e.delete(r),r===e)break;const l=this.#i.get(o);l&&(fn(l.effect),this.#i.delete(o))}for(const[r,o]of this.#t){if(r===a||this.#l.has(r))continue;const l=()=>{if(Array.from(this.#e.values()).includes(r)){var p=document.createDocumentFragment();pf(o,p),p.append(bn()),this.#i.set(r,{effect:o,fragment:p})}else fn(o);this.#l.delete(r),this.#t.delete(r)};this.#n||!n?(this.#l.add(r),ho(o,l,!1)):l()}}};#a=e=>{this.#e.delete(e);const a=Array.from(this.#e.values());for(const[n,s]of this.#i)a.includes(n)||(fn(s.effect),this.#i.delete(n))};ensure(e,a){var n=ni,s=l_();if(a&&!this.#t.has(e)&&!this.#i.has(e))if(s){var r=document.createDocumentFragment(),o=bn();r.append(o),this.#i.set(e,{effect:Fn(()=>a(o)),fragment:r})}else this.#t.set(e,Fn(()=>a(this.anchor)));if(this.#e.set(n,e),s){for(const[l,u]of this.#t)l===e?n.unskip_effect(u):n.skip_effect(u);for(const[l,u]of this.#i)l===e?n.unskip_effect(u.effect):n.skip_effect(u.effect);n.oncommit(this.#s),n.ondiscard(this.#a)}else Tt&&(this.anchor=ci),this.#s(n)}}function qe(t,e,a=!1){var n;Tt&&(n=ci,Ar());var s=new Hl(t),r=a?rr:0;function o(l,u){if(Tt){var p=Ku(n);if(l!==parseInt(p.substring(1))){var g=Nl();Ma(g),s.anchor=g,un(!1),s.ensure(l,u),un(!0);return}}s.ensure(l,u)}Mr(()=>{var l=!1;e((u,p=0)=>{l=!0,o(p,u)}),l||o(-1,null)},r)}const kx=Symbol("NaN");function xx(t,e,a){Tt&&Ar();var n=new Hl(t),s=!Zo();Mr(()=>{var r=e();r!==r&&(r=kx),s&&r!==null&&typeof r=="object"&&(r={}),n.ensure(r,a)})}function Xt(t,e){return e}function Sx(t,e,a){for(var n=[],s=e.length,r,o=e.length,l=0;l{if(r){if(r.pending.delete(h),r.done.add(h),r.pending.size===0){var m=t.outrogroups;bf(t,Zc(r.done)),m.delete(r),m.size===0&&(t.outrogroups=null)}}else o-=1},!1)}if(o===0){var u=n.length===0&&a!==null;if(u){var p=a,g=p.parentNode;uf(g),g.append(p),t.items.clear()}bf(t,e,!u)}else r={pending:new Set(e),done:new Set},(t.outrogroups??=new Set).add(r)}function bf(t,e,a=!0){var n;if(t.pending.size>0){n=new Set;for(const o of t.pending.values())for(const l of o)n.add(t.items.get(l).e)}for(var s=0;s{var w=a();return Eu(w)?w:w==null?[]:Zc(w)}),m,f=new Map,d=!0;function c(w){(v.effect.f&Hn)===0&&(v.pending.delete(w),v.fallback=g,Tx(v,m,o,e,n),g!==null&&(m.length===0?(g.f&Ns)===0?md(g):(g.f^=Ns,Ql(g,null,o)):ho(g,()=>{g=null})))}function _(w){v.pending.delete(w)}var b=Mr(()=>{m=i(h);var w=m.length;let y=!1;if(Tt){var T=Ku(o)===Wu;T!==(w===0)&&(o=Nl(),Ma(o),un(!1),y=!0)}for(var O=new Set,R=ni,$=l_(),P=0;Pr(o)):(g=Fn(()=>r(z_??=bn())),g.f|=Ns)),w>O.size&&t3(),Tt&&w>0&&Ma(Nl()),!d)if(f.set(R,O),$){for(const[D,M]of l)O.has(D)||R.skip_effect(M.e);R.oncommit(c),R.ondiscard(_)}else c(R);y&&un(!0),i(h)}),v={effect:b,items:l,pending:f,outrogroups:null,fallback:g};d=!1,Tt&&(o=ci)}function Wl(t){for(;t!==null&&(t.f&ns)===0;)t=t.next;return t}function Tx(t,e,a,n,s){var r=(n&p3)!==0,o=e.length,l=t.items,u=Wl(t.effect.first),p,g=null,h,m=[],f=[],d,c,_,b;if(r)for(b=0;b0){var P=(n&zh)!==0&&o===0?a:null;if(r){for(b=0;b<$;b+=1)R[b].nodes?.a?.measure();for(b=0;b<$;b+=1)R[b].nodes?.a?.fix()}Sx(t,R,P)}}r&&Ts(()=>{if(h!==void 0)for(_ of h)_.nodes?.a?.apply()})}function $x(t,e,a,n,s,r,o,l){var u=(o&f3)!==0?(o&g3)===0?oe(a,!1,!1):po(a):null,p=(o&m3)!==0?po(s):null;return{v:u,i:p,e:Fn(()=>(r(e,u??a,p??s,l),()=>{t.delete(n)}))}}function Ql(t,e,a){if(t.nodes)for(var n=t.nodes.start,s=t.nodes.end,r=e&&(e.f&Ns)===0?e.nodes.start:a;n!==null;){var o=ls(n);if(r.before(n),n===s)return;n=o}}function zr(t,e,a){e===null?t.effect.first=a:e.next=a,a===null?t.effect.last=e:a.prev=e}function U_(t,e,...a){var n=new Hl(t);Mr(()=>{const s=e()??null;n.ensure(s,s&&(r=>s(r,...a)))},rr)}function _d(t,e,a){var n;Tt&&(n=ci,Ar());var s=new Hl(t);Mr(()=>{var r=e()??null;if(Tt){var o=Ku(n),l=o===Hu,u=r!==null;if(l!==u){var p=Nl();Ma(p),s.anchor=p,un(!1),s.ensure(r,r&&(g=>a(g,r))),un(!0);return}}s.ensure(r,r&&(g=>a(g,r)))},rr)}function qx(t,e,a,n,s,r){let o=Tt;Tt&&Ar();var l=null;Tt&&ci.nodeType===Zk&&(l=ci,Ar());var u=Tt?ci:t,p=new Hl(u,!1);Mr(()=>{const g=e()||null;var h=x3;if(g===null){p.ensure(null,null);return}return p.ensure(g,m=>{if(g){if(l=Tt?l:c_(g,h),Gs(l,l),n){var f=null;Tt&&mx(g)&&l.append(f=document.createComment(""));var d=Tt?os(l):l.appendChild(bn());Tt&&(d===null?un(!1):Ma(d)),n(l,d),f?.remove()}si.nodes.end=l,m.before(l)}Tt&&Ma(m)}),()=>{}},rr),ol(()=>{}),o&&(un(!0),Ma(u))}function Gx(t,e){let a=null,n=Tt;var s;if(Tt){a=ci;for(var r=os(document.head);r!==null&&(r.nodeType!==Ko||r.data!==t);)r=ls(r);if(r===null)un(!1);else{var o=ls(r);r.remove(),Ma(o)}}Tt||(s=document.head.appendChild(bn()));try{Mr(()=>{var l=Fn(()=>e(s));l.f|=Ch})}finally{n&&(un(!0),Ma(a))}}function Fx(t,e){var a=void 0,n;m_(()=>{a!==(a=e())&&(n&&(fn(n),n=null),a&&(n=Fn(()=>{fd(()=>a(t))})))})}function B_(t){var e,a,n="";if(typeof t=="string"||typeof t=="number")n+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e=0;){var l=o+r;(o===0||R_.includes(n[o-1]))&&(l===n.length||R_.includes(n[l]))?n=(o===0?"":n.substring(0,o))+n.substring(l+1):o=l}}return n===""?null:n}function j_(t,e=!1){var a=e?" !important;":";",n="";for(var s of Object.keys(t)){var r=t[s];r!=null&&r!==""&&(n+=" "+s+": "+r+a)}return n}function yf(t){return t[0]!=="-"||t[1]!=="-"?t.toLowerCase():t}function Ex(t,e){if(e){var a="",n,s;if(Array.isArray(e)?(n=e[0],s=e[1]):n=e,t){t=String(t).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var r=!1,o=0,l=!1,u=[];n&&u.push(...Object.keys(n).map(yf)),s&&u.push(...Object.keys(s).map(yf));var p=0,g=-1;const c=t.length;for(var h=0;h{"__value"in t&&yn(t,t.__value)});e.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),ol(()=>{e.disconnect()})}function yo(t,e,a=e){var n=new WeakSet,s=!0;Zu(t,"change",r=>{var o=r?"[selected]":":checked",l;if(t.multiple)l=[].map.call(t.querySelectorAll(o),Kl);else{var u=t.querySelector(o)??t.querySelector("option:not([disabled])");l=u&&Kl(u)}a(l),t.__value=l,ni!==null&&n.add(ni)}),fd(()=>{var r=e();if(t===document.activeElement){var o=ni;if(n.has(o))return}if(yn(t,r,s),s&&r===void 0){var l=t.querySelector(":checked");l!==null&&(r=Kl(l),a(r))}t.__value=r,s=!1}),jn(t)}function Kl(t){return"__value"in t?t.__value:t.value}const Yl=Symbol("class"),Xl=Symbol("style"),P_=Symbol("is custom element"),N_=Symbol("is html"),Ux=jl?"link":"LINK",O_=jl?"input":"INPUT",Bx=jl?"option":"OPTION",Rx=jl?"select":"SELECT",jx=jl?"progress":"PROGRESS";function It(t){if(Tt){var e=!1,a=()=>{if(!e){if(e=!0,t.hasAttribute("value")){var n=t.value;be(t,"value",null),t.value=n}if(t.hasAttribute("checked")){var s=t.checked;be(t,"checked",null),t.checked=s}}};t[Bl]=a,Ts(a),Hh()}}function sa(t,e){var a=bd(t);a.value===(a.value=e??void 0)||t.value===e&&(e!==0||t.nodeName!==jx)||(t.value=e??"")}function vd(t,e){var a=bd(t);a.checked!==(a.checked=e??void 0)&&(t.checked=e)}function Px(t,e){e?t.hasAttribute("selected")||t.setAttribute("selected",""):t.removeAttribute("selected")}function be(t,e,a,n){var s=bd(t);Tt&&(s[e]=t.getAttribute(e),e==="src"||e==="srcset"||e==="href"&&t.nodeName===Ux)||s[e]!==(s[e]=a)&&(e==="loading"&&(t[Jk]=a),a==null?t.removeAttribute(e):typeof a!="string"&&D_(t).includes(e)?t[e]=a:t.setAttribute(e,a))}function Nx(t,e,a,n,s=!1,r=!1){if(Tt&&s&&t.nodeName===O_){var o=t,l=o.type==="checkbox"?"defaultChecked":"defaultValue";l in a||It(o)}var u=bd(t),p=u[P_],g=!u[N_];let h=Tt&&p;h&&un(!1);var m=e||{},f=t.nodeName===Bx;for(var d in e)d in a||(a[d]=null);a.class?a.class=Cx(a.class):a[Yl]&&(a.class=null),a[Xl]&&(a.style??=null);var c=D_(t);if(t.nodeName===O_&&"type"in a&&("value"in a||"__value"in a)){var _=a.type;(_!==m.type||_===void 0&&t.hasAttribute("type"))&&(m.type=_,be(t,"type",_))}for(const R in a){let $=a[R];if(f&&R==="value"&&$==null){t.value=t.__value="",m[R]=$;continue}if(R==="class"){var b=t.namespaceURI==="http://www.w3.org/1999/xhtml";Gi(t,b,$,n,e?.[Yl],a[Yl]),m[R]=$,m[Yl]=a[Yl];continue}if(R==="style"){zx(t,$,e?.[Xl],a[Xl]),m[R]=$,m[Xl]=a[Xl];continue}var v=m[R];if(!($===v&&!($===void 0&&t.hasAttribute(R)))){m[R]=$;var w=R[0]+R[1];if(w!=="$$")if(w==="on"){const P={},L="$$"+R;let x=R.slice(2);var y=ox(x);if(sx(x)&&(x=x.slice(0,-7),P.capture=!0),!y&&v){if($!=null)continue;t.removeEventListener(x,m[L],P),m[L]=null}if(y)px(x,t,$),gx([x]);else if($!=null){let U=function(D){m[R].call(this,D)};m[L]=G_(x,t,U,P)}}else if(R==="style")be(t,R,$);else if(R==="autofocus")B3(t,!!$);else if(!p&&(R==="__value"||R==="value"&&$!=null))t.value=t.__value=$;else if(R==="selected"&&f)Px(t,$);else{var T=R;g||(T=cx(T));var O=T==="defaultValue"||T==="defaultChecked";if($==null&&!p&&!O)if(u[R]=null,T==="value"||T==="checked"){let P=t;const L=e===void 0;if(T==="value"){let x=P.defaultValue;P.removeAttribute(T),P.defaultValue=x,P.value=P.__value=L?x:null}else{let x=P.defaultChecked;P.removeAttribute(T),P.defaultChecked=x,P.checked=L?x:!1}}else t.removeAttribute(R);else O||c.includes(T)&&(p||typeof $!="string")?(t[T]=$,T in u&&(u[T]=Ia)):typeof $!="function"&&be(t,T,$)}}}return h&&un(!0),m}function I_(t,e,a=[],n=[],s=[],r,o=!1,l=!1){ef(s,a,n,u=>{var p=void 0,g={},h=t.nodeName===Rx,m=!1;if(m_(()=>{var d=e(...u.map(i)),c=Nx(t,p,d,r,o,l);m&&h&&"value"in d&&yn(t,d.value);for(let b of Object.getOwnPropertySymbols(g))d[b]||fn(g[b]);for(let b of Object.getOwnPropertySymbols(d)){var _=d[b];b.description===S3&&(!p||_!==p[b])&&(g[b]&&fn(g[b]),g[b]=Fn(()=>Fx(t,()=>_))),c[b]=_}p=c}),h){var f=t;fd(()=>{yn(f,p.value,!0),jn(f)})}m=!0})}function bd(t){return t[Eh]??={[P_]:t.nodeName.includes("-"),[N_]:t.namespaceURI===Bh}}var L_=new Map;function D_(t){var e=t.getAttribute("is")||t.nodeName,a=L_.get(e);if(a)return a;L_.set(e,a=[]);for(var n,s=t,r=Element.prototype;r!==s;){n=Gh(s);for(var o in n)n[o].set&&o!=="innerHTML"&&o!=="textContent"&&o!=="innerText"&&a.push(o);s=Uu(s)}return a}function Fi(t,e,a=e){var n=new WeakSet;Zu(t,"input",async s=>{var r=s?t.defaultValue:t.value;if(r=kf(t)?xf(r):r,a(r),ni!==null&&n.add(ni),await Er(),r!==(r=e())){var o=t.selectionStart,l=t.selectionEnd,u=t.value.length;if(t.value=r??"",l!==null){var p=t.value.length;o===l&&l===u&&p>u?(t.selectionStart=p,t.selectionEnd=p):(t.selectionStart=o,t.selectionEnd=Math.min(l,p))}}}),(Tt&&t.defaultValue!==t.value||q(e)==null&&t.value)&&(a(kf(t)?xf(t.value):t.value),ni!==null&&n.add(ni)),ll(()=>{var s=e();if(t===document.activeElement){var r=ni;if(n.has(r))return}kf(t)&&s===xf(t.value)||t.type==="date"&&!s&&!t.value||s!==t.value&&(t.value=s??"")})}function V_(t,e,a=e){Zu(t,"change",n=>{var s=n?t.defaultChecked:t.checked;a(s)}),(Tt&&t.defaultChecked!==t.checked||q(e)==null)&&a(t.checked),ll(()=>{var n=e();t.checked=!!n})}function kf(t){var e=t.type;return e==="number"||e==="range"}function xf(t){return t===""?null:+t}function H_(t,e,a){var n=nr(t,e);n&&n.set&&(t[e]=a,ol(()=>{t[e]=null}))}function Sf(t,e){return t===e||t?.[Os]===e}function $a(t={},e,a,n){var s=Di.r,r=si;return fd(()=>{var o,l;return ll(()=>{o=l,l=n?.()||[],q(()=>{Sf(a(...l),t)||(e(t,...l),o&&Sf(a(...o),t)&&e(null,...o))})}),()=>{let u=r;for(;u!==s&&u.parent!==null&&u.parent.fΝ)u=u.parent;const p=()=>{l&&Sf(a(...l),t)&&e(null,...l)},g=u.teardown;u.teardown=()=>{p(),g?.()}}}),t}function Ox(t){return function(...e){var a=e[0];return a.preventDefault(),t?.apply(this,e)}}function An(t=!1){const e=Di,a=e.l.u;if(!a)return;let n=()=>Z(e.s);if(t){let s=0,r={};const o=al(()=>{let l=!1;const u=e.s;for(const p in u)u[p]!==r[p]&&(r[p]=u[p],l=!0);return l&&s++,s});n=()=>i(o)}a.b.length&&f_(()=>{W_(e,n),Bu(a.b)}),ud(()=>{const s=q(()=>a.m.map(Yk));return()=>{for(const r of s)typeof r=="function"&&r()}}),a.a.length&&ud(()=>{W_(e,n),Bu(a.a)})}function W_(t,e){if(t.l.s)for(const a of t.l.s)i(a);e()}const Ix={get(t,e){if(!t.exclude.has(e))return t.props[e]},set(t,e){return!1},getOwnPropertyDescriptor(t,e){if(!t.exclude.has(e)&&e in t.props)return{enumerable:!0,configurable:!0,value:t.props[e]}},has(t,e){return t.exclude.has(e)?!1:e in t.props},ownKeys(t){return Reflect.ownKeys(t.props).filter(e=>!t.exclude.has(e))}};function fa(t,e,a){return new Proxy({props:t,exclude:e},Ix)}const Lx={get(t,e){let a=t.props.length;for(;a--;){let n=t.props[a];if(zl(n)&&(n=n()),typeof n=="object"&&n!==null&&e in n)return n[e]}},set(t,e,a){let n=t.props.length;for(;n--;){let s=t.props[n];zl(s)&&(s=s());const r=nr(s,e);if(r&&r.set)return r.set(a),!0}return!1},getOwnPropertyDescriptor(t,e){let a=t.props.length;for(;a--;){let n=t.props[a];if(zl(n)&&(n=n()),typeof n=="object"&&n!==null&&e in n){const s=nr(n,e);return s&&!s.configurable&&(s.configurable=!0),s}}},has(t,e){if(e===Os||e===Ou)return!1;for(let a of t.props)if(zl(a)&&(a=a()),a!=null&&e in a)return!0;return!1},ownKeys(t){const e=[];for(let a of t.props)if(zl(a)&&(a=a()),!!a){for(const n in a)e.includes(n)||e.push(n);for(const n of Object.getOwnPropertySymbols(a))e.includes(n)||e.push(n)}return e}};function va(...t){return new Proxy({props:t},Lx)}function Ge(t,e,a,n){var s=!Xo||(a&_3)!==0,r=(a&b3)!==0,o=(a&y3)!==0,l=n,u=!0,p=void 0,g=()=>o&&s?(p??=al(n),i(p)):(u&&(u=!1,l=o?q(n):n),l);let h;if(r){var m=Os in t||Ou in t;h=nr(t,e)?.set??(m&&e in t?y=>t[e]=y:void 0)}var f,d=!1;r?[f,d]=U3(()=>t[e]):f=t[e],f===void 0&&n!==void 0&&(f=g(),h&&(s&&o3(),h(f)));var c;if(s?c=()=>{var y=t[e];return y===void 0?g():(u=!0,y)}:c=()=>{var y=t[e];return y!==void 0&&(l=void 0),y===void 0?l:y},s&&(a&v3)===0)return c;if(h){var _=t.$$legacy;return(function(y,T){return arguments.length>0?((!s||!T||_||d)&&h(T?c():y),y):c()})}var b=!1,v=((a&h3)!==0?al:Qt)(()=>(b=!1,c()));r&&i(v);var w=si;return(function(y,T){if(arguments.length>0){const O=T?i(v):s&&r?rl(y):y;return E(v,O),b=!0,l!==void 0&&(l=O),y}return cr&&b||(w.f&Hn)!==0?v.v:i(v)})}function Dx(t){return class extends Vx{constructor(e){super({component:t,...e})}}}class Vx{#e;#t;constructor(e){var a=new Map,n=(r,o)=>{var l=oe(o,!1,!1);return a.set(r,l),l};const s=new Proxy({...e.props||{},$$events:{}},{get(r,o){return i(a.get(o)??n(o,Reflect.get(r,o)))},has(r,o){return o===Ou?!0:(i(a.get(o)??n(o,Reflect.get(r,o))),Reflect.has(r,o))},set(r,o,l){return E(a.get(o)??n(o,l),l),Reflect.set(r,o,l)}});this.#t=(e.hydrate?yx:M_)(e.component,{target:e.target,anchor:e.anchor,props:s,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError}),(!e?.props?.$$host||e.sync===!1)&&Xh(),this.#e=s.$$events;for(const r of Object.keys(this.#t))r==="$set"||r==="$destroy"||r==="$on"||zu(this,r,{get(){return this.#t[r]},set(o){this.#t[r]=o},enumerable:!0});this.#t.$set=r=>{Object.assign(s,r)},this.#t.$destroy=()=>{wx(this.#t)}}$set(e){this.#t.$set(e)}$on(e,a){this.#e[e]=this.#e[e]||[];const n=(...s)=>a.call(this,...s);return this.#e[e].push(n),()=>{this.#e[e]=this.#e[e].filter(s=>s!==n)}}$destroy(){this.#t.$destroy()}}function Fs(t){Di===null&&Vu(),Xo&&Di.l!==null?Hx(Di).m.push(t):ud(()=>{const e=q(t);if(typeof e=="function")return e})}function ul(t){Di===null&&Vu(),Fs(()=>()=>q(t))}function Hx(t){var e=t.l;return e.u??={a:[],b:[],m:[]}}class Tf{constructor(e,a){this.status=e,typeof a=="string"?this.body={message:a}:a?this.body=a:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}}class $f{constructor(e,a){try{new Headers({location:a})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(a)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=a}}class qf extends Error{constructor(e,a,n){super(n),this.status=e,this.text=a}}new URL("sveltekit-internal://");function Wx(t,e){return t==="/"||e==="ignore"?t:e==="never"?t.endsWith("/")?t.slice(0,-1):t:e==="always"&&!t.endsWith("/")?t+"/":t}function Qx(t){return t.split("%25").map(decodeURI).join("%25")}function Kx(t){for(const e in t)t[e]=decodeURIComponent(t[e]);return t}function Gf({href:t}){return t.split("#")[0]}function Ur(){}function Yx(...t){let e=5381;for(const a of t)if(typeof a=="string"){let n=a.length;for(;n;)e=e*33^a.charCodeAt(--n)}else if(ArrayBuffer.isView(a)){const n=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);let s=n.length;for(;s;)e=e*33^n[--s]}else throw new TypeError("value must be a string or TypedArray");return(e>>>0).toString(36)}new TextEncoder;function Xx(t){const e=atob(t),a=new Uint8Array(e.length);for(let n=0;n((t instanceof Request?t.method:e?.method||"GET")!=="GET"&&Jl.delete(Ff(t)),Jx(t,e));const Jl=new Map;function Zx(t,e){const a=Ff(t,e),n=document.querySelector(a);if(n?.textContent){n.remove();let{body:s,...r}=JSON.parse(n.textContent);n.getAttribute("data-b64")!==null&&(s=Xx(s));const l=n.getAttribute("data-ttl");return l&&Jl.set(a,{body:s,init:r,ttl:1e3*Number(l)}),Promise.resolve(new Response(s,r))}return window.fetch(t,e)}function e6(t,e,a){if(Jl.size>0){const n=Ff(t,a),s=Jl.get(n);if(s){if(performance.now(){const s=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(n);if(s)return e.push({name:s[1],matcher:s[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(n);if(r)return e.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!n)return;const o=n.split(/\[(.+?)\](?!\])/);return"/"+o.map((u,p)=>{if(p%2){if(u.startsWith("x+"))return Af(String.fromCharCode(parseInt(u.slice(2),16)));if(u.startsWith("u+"))return Af(String.fromCharCode(...u.slice(2).split("-").map(c=>parseInt(c,16))));const g=t6.exec(u),[,h,m,f,d]=g;return e.push({name:f,matcher:d,optional:!!h,rest:!!m,chained:m?p===1&&o[0]==="":!1}),m?"([^]*?)":h?"([^/]*)?":"([^/]+?)"}return Af(u)}).join("")}).join("")}/?$`),params:e}}function n6(t){return t!==""&&!/^\([^)]+\)$/.test(t)}function s6(t){return t.slice(1).split("/").filter(n6)}function r6(t,e,a){const n={},s=t.slice(1),r=s.filter(l=>l!==void 0);let o=0;for(let l=0;lg).join("/"),o=0),p===void 0)if(u.rest)p="";else continue;if(!u.matcher||a[u.matcher](p)){n[u.name]=p;const g=e[l+1],h=s[l+1];g&&!g.rest&&g.optional&&h&&u.chained&&(o=0),!g&&!h&&Object.keys(n).length===r.length&&(o=0);continue}if(u.optional&&u.chained){o++;continue}return}if(!o)return n}function Af(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function o6({nodes:t,server_loads:e,dictionary:a,matchers:n}){const s=new Set(e);return Object.entries(a).map(([l,[u,p,g]])=>{const{pattern:h,params:m}=a6(l),f={id:l,exec:d=>{const c=h.exec(d);if(c)return r6(c,m,n)},errors:[1,...g||[]].map(d=>t[d]),layouts:[0,...p||[]].map(o),leaf:r(u)};return f.errors.length=f.layouts.length=Math.max(f.errors.length,f.layouts.length),f});function r(l){const u=l<0;return u&&(l=~l),[u,t[l]]}function o(l){return l===void 0?l:[s.has(l),t[l]]}}function Q_(t,e=JSON.parse){try{return e(sessionStorage[t])}catch{}}function K_(t,e,a=JSON.stringify){const n=a(e);try{sessionStorage[t]=n}catch{}}const ps=globalThis.__sveltekit_1xyyov?.base??"",l6=globalThis.__sveltekit_1xyyov?.assets??ps??"",c6="0.9.3",Y_="sveltekit:snapshot",X_="sveltekit:scroll",J_="sveltekit:states",d6="sveltekit:pageurl",fl="sveltekit:history",Zl="sveltekit:navigation",wo={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Cf=location.origin;function Z_(t){if(t instanceof URL)return t;let e=document.baseURI;if(!e){const a=document.getElementsByTagName("base");e=a.length?a[0].href:document.URL}return new URL(t,e)}function ko(){return{x:pageXOffset,y:pageYOffset}}function ml(t,e){return t.getAttribute(`data-sveltekit-${e}`)}const e1={...wo,"":wo.hover};function t1(t){let e=t.assignedSlot??t.parentNode;return e?.nodeType===11&&(e=e.host),e}function i1(t,e){for(;t&&t!==e;){if(t.nodeName.toUpperCase()==="A"&&t.hasAttribute("href"))return t;t=t1(t)}}function Mf(t,e,a){let n;try{if(n=new URL(t instanceof SVGAElement?t.href.baseVal:t.href,document.baseURI),a&&n.hash.match(/^#[^/]/)){const l=location.hash.split("#")[1]||"/";n.hash=`#${l}${n.hash}`}}catch{}const s=t instanceof SVGAElement?t.target.baseVal:t.target,r=!n||!!s||wd(n,e,a)||(t.getAttribute("rel")||"").split(/\s+/).includes("external"),o=n?.origin===Cf&&t.hasAttribute("download");return{url:n,external:r,target:s,download:o}}function yd(t){let e=null,a=null,n=null,s=null,r=null,o=null,l=t;for(;l&&l!==document.documentElement;)n===null&&(n=ml(l,"preload-code")),s===null&&(s=ml(l,"preload-data")),e===null&&(e=ml(l,"keepfocus")),a===null&&(a=ml(l,"noscroll")),r===null&&(r=ml(l,"reload")),o===null&&(o=ml(l,"replacestate")),l=t1(l);function u(p){switch(p){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:e1[n??"off"],preload_data:e1[s??"off"],keepfocus:u(e),noscroll:u(a),reload:u(r),replace_state:u(o)}}function a1(t){const e=tl(t);let a=!0;function n(){a=!0,e.update(o=>o)}function s(o){a=!1,e.set(o)}function r(o){let l;return e.subscribe(u=>{(l===void 0||a&&u!==l)&&o(l=u)})}return{notify:n,set:s,subscribe:r}}const n1={v:Ur};function u6(){const{set:t,subscribe:e}=tl(!1);let a;async function n(){clearTimeout(a);try{const s=await fetch(`${l6}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!s.ok)return!1;const o=(await s.json()).version!==c6;return o&&(t(!0),n1.v(),clearTimeout(a)),o}catch{return!1}}return{subscribe:e,check:n}}function wd(t,e,a){return t.origin!==Cf||!t.pathname.startsWith(e)?!0:a?t.pathname!==location.pathname:!1}const s1=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...s1];const f6=new Set([...s1]);[...f6];function m6(t){return t.filter(e=>e!=null)}function kd(t,e){return t+"/"+e}function Ef(t){return t instanceof Tf||t instanceof qf?t.status:500}function p6(t){return t instanceof qf?t.text:"Internal Error"}let Pn,ec,zf;const g6=Fs.toString().includes("$$")||/function \w+\(\) \{\}/.test(Fs.toString()),r1="a:";g6?(Pn={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(r1)},ec={current:null},zf={current:!1}):(Pn=new class{#e=za({});get data(){return i(this.#e)}set data(e){E(this.#e,e)}#t=za(null);get form(){return i(this.#t)}set form(e){E(this.#t,e)}#i=za(null);get error(){return i(this.#i)}set error(e){E(this.#i,e)}#l=za({});get params(){return i(this.#l)}set params(e){E(this.#l,e)}#n=za({id:null});get route(){return i(this.#n)}set route(e){E(this.#n,e)}#s=za({});get state(){return i(this.#s)}set state(e){E(this.#s,e)}#a=za(-1);get status(){return i(this.#a)}set status(e){E(this.#a,e)}#o=za(new URL(r1));get url(){return i(this.#o)}set url(e){E(this.#o,e)}},ec=new class{#e=za(null);get current(){return i(this.#e)}set current(e){E(this.#e,e)}},zf=new class{#e=za(!1);get current(){return i(this.#e)}set current(e){E(this.#e,e)}},n1.v=()=>zf.current=!0);function o1(t){Object.assign(Pn,t)}const h6=new Set(["icon","shortcut icon","apple-touch-icon"]);let tc=null;const Br=Q_(X_)??{},ic=Q_(Y_)??{},dr={url:a1({}),page:a1({}),navigating:tl(null),updated:u6()};function Uf(t){Br[t]=ko()}function _6(t,e){let a=t+1;for(;Br[a];)delete Br[a],a+=1;for(a=e+1;ic[a];)delete ic[a],a+=1}function ac(t,e=!1){return e?location.replace(t.href):location.href=t.href,new Promise(Ur)}async function l1(){if("serviceWorker"in navigator){const t=await navigator.serviceWorker.getRegistration(ps||"/");t&&await t.update()}}let Bf,Rf,xd,ur,jf,rn;const Sd=[],Td=[];let gs=null;function $d(){gs?.fork?.then(t=>t?.discard()),gs=null,gl={element:void 0,href:void 0}}const qd=new Map,c1=new Set,v6=new Set,nc=new Set;let ma={branch:[],error:null,url:null},d1=!1,Gd=!1,u1=!0,sc=!1,rc=!1,f1=!1,Pf=!1,m1,mn,hs,Rr;const Fd=new Set,p1=new Map,g1=new Map;async function b6(t,e,a){if(globalThis.__sveltekit_1xyyov.data){const{q:r={},p:o={},l={},f:u={}}=globalThis.__sveltekit_1xyyov.data;for(const p in r)r[p];for(const p in l)l[p];for(const p in u)u[p];for(const p in o)o[p]}document.URL!==location.href&&(location.href=location.href),rn=t,await t.hooks.init?.(),Bf=o6(t),ur=document.documentElement,jf=e,Rf=t.nodes[0],xd=t.nodes[1],Rf(),xd(),mn=history.state?.[fl],hs=history.state?.[Zl],mn||(mn=hs=Date.now(),history.replaceState({...history.state,[fl]:mn,[Zl]:hs},""));const n=Br[mn];function s(){n&&(history.scrollRestoration="manual",scrollTo(n.x,n.y))}a?(s(),await E6(jf,a)):(await pl({type:"enter",url:Z_(rn.hash?B6(new URL(location.href)):location.href),replace_state:!0}),s()),M6()}function y6(){Sd.length=0,Pf=!1}function h1(t){Td.some(e=>e?.snapshot)&&(ic[t]=Td.map(e=>e?.snapshot?.capture()))}function _1(t){ic[t]?.forEach((e,a)=>{Td[a]?.snapshot?.restore(e)})}function v1(){Uf(mn),K_(X_,Br),h1(hs),K_(Y_,ic)}async function w6(t,e,a,n){let s,r;e.invalidateAll&&$d(),await pl({type:"goto",url:Z_(t),keepfocus:e.keepFocus,noscroll:e.noScroll,replace_state:e.replaceState,state:e.state,redirect_count:a,nav_token:n,accept:()=>{if(e.invalidateAll){Pf=!0,s=new Set;for(const[o,l]of p1)for(const[u,p]of l)p.resource?.reset(),s.add(kd(o,u));r=new Set;for(const[o,l]of g1)for(const u of l.keys())r.add(kd(o,u))}e.invalidate&&e.invalidate.forEach(C6)}}),e.invalidateAll&&Er().then(Er).then(()=>{for(const[o,l]of p1)for(const[u,{resource:p}]of l)s?.has(kd(o,u))&&p.start();for(const[o,l]of g1)for(const[u,{resource:p}]of l)r?.has(kd(o,u))&&p.reconnect()})}async function k6(t){if(t.id!==gs?.id){$d();const e={};Fd.add(e),gs={id:t.id,token:e,promise:y1({...t,preload:e}).then(a=>(Fd.delete(e),a.type==="loaded"&&a.state.error&&$d(),a)),fork:null}}return gs.promise}async function Nf(t){const e=(await Cd(t,!1))?.route;e&&await Promise.all([...e.layouts,e.leaf].filter(Boolean).map(a=>a[1]()))}async function b1(t,e,a){const n={params:ma.params,route:{id:ma.route?.id??null},url:new URL(location.href)};if(ma={...t.state,nav:n},o1(t.props.page),m1=new rn.root({target:e,props:{...t.props,stores:dr,components:Td},hydrate:a,sync:!1,transformError:void 0}),await Promise.resolve(),a){const s={from:null,to:{...n,scroll:Br[mn]??ko()},willUnload:!1,type:"enter",complete:Promise.resolve()};nc.forEach(r=>r(s))}_1(hs),Gd=!0}async function Ad({url:t,params:e,branch:a,errors:n,status:s,error:r,route:o,form:l}){let u="never";if(ps&&(t.pathname===ps||t.pathname===ps+"/"))u="always";else for(const d of a)d?.slash!==void 0&&(u=d.slash);t.pathname=Wx(t.pathname,u),t.search=t.search;const p={type:"loaded",state:{url:t,params:e,branch:a,error:r,route:o},props:{constructors:m6(a).map(d=>d.node.component),page:Hf(Pn)}};l!==void 0&&(p.props.form=l);let g={},h=!Pn,m=0;for(let d=0;dl(new URL(o))))return!0;return!1}function If(t,e){return t?.type==="data"?t:t?.type==="skip"?e??null:null}function T6(t,e){if(!t)return new Set(e.searchParams.keys());const a=new Set([...t.searchParams.keys(),...e.searchParams.keys()]);for(const n of a){const s=t.searchParams.getAll(n),r=e.searchParams.getAll(n);s.every(o=>r.includes(o))&&r.every(o=>s.includes(o))&&a.delete(n)}return a}function $6({error:t,url:e,route:a,params:n}){return{type:"loaded",state:{error:t,url:e,route:a,params:n,branch:[]},props:{page:Hf(Pn),constructors:[]}}}async function y1({id:t,invalidating:e,url:a,params:n,route:s,preload:r}){if(gs?.id===t)return Fd.delete(gs.token),gs.promise;const{errors:o,layouts:l,leaf:u}=s,p=[...l,u];o.forEach(_=>_?.().catch(Ur)),p.forEach(_=>_?.[1]().catch(Ur));const g=ma.url?t!==Md(ma.url):!1,h=ma.route?s.id!==ma.route.id:!1,m=T6(ma.url,a);let f=!1;const d=p.map(async(_,b)=>{if(!_)return;const v=ma.branch[b];return _[1]===v?.loader&&!S6(f,h,g,m,v.universal?.uses,n)?v:(f=!0,Of({loader:_[1],url:a,params:n,route:s,parent:async()=>{const y={};for(let T=0;TPromise.resolve({}),server_data_node:If(r)}),l={node:await xd(),loader:xd,universal:null,server:null,data:null};return Ad({url:a,params:s,branch:[o,l],status:t,error:e,errors:[],route:null})}catch(o){if(o instanceof $f){await w6(new URL(o.location,location.href),{},0);return}const l=await rn.get_error_template(),u=await hl(o,{url:a,params:s,route:n}),p=String(u?.message??"").replace(/&/g,"&").replace(//g,">"),g=l({status:t,message:p}),h=new DOMParser().parseFromString(g,"text/html");throw document.documentElement.replaceChild(document.adoptNode(h.head),document.head),document.documentElement.replaceChild(document.adoptNode(h.body),document.body),o}}async function G6(t){const e=t.href;if(qd.has(e))return qd.get(e);let a;try{const n=(async()=>{let s=await rn.hooks.reroute({url:new URL(t),fetch:async(r,o)=>x6(r,o,t).promise})??t;if(typeof s=="string"){const r=new URL(t);rn.hash?r.hash=s:r.pathname=s,s=r}return s})();qd.set(e,n),a=await n}catch{qd.delete(e);return}return a}async function Cd(t,e){if(t&&!wd(t,ps,rn.hash)){const a=await G6(t);if(!a)return;const n=F6(a);for(const s of Bf){const r=s.exec(n);if(r)return{id:Md(t),invalidating:e,route:s,params:Kx(r),url:t}}}}function F6(t){return Qx(rn.hash?t.hash.replace(/^#/,"").replace(/[?#].+/,""):t.pathname.slice(ps.length))||"/"}function Md(t){return(rn.hash?t.hash.replace(/^#/,""):t.pathname)+t.search}function w1({url:t,type:e,intent:a,delta:n,event:s,scroll:r}){let o=!1;const l=Vf(ma,a,t,e,r??null);n!==void 0&&(l.navigation.delta=n),s!==void 0&&(l.navigation.event=s);const u={...l.navigation,cancel:()=>{o=!0,l.reject(new Error("navigation cancelled"))}};return sc||c1.forEach(p=>p(u)),o?null:l}async function pl({type:t,url:e,popped:a,keepfocus:n,noscroll:s,replace_state:r,state:o={},redirect_count:l=0,nav_token:u={},accept:p=Ur,block:g=Ur,event:h}){const m=Rr;Rr=u;const f=await Cd(e,!1),d=t==="enter"?Vf(ma,f,e,t):w1({url:e,type:t,delta:a?.delta,intent:f,scroll:a?.scroll,event:h});if(!d){g(),Rr===u&&(Rr=m);return}const c=mn,_=hs;p(),sc=!0,Gd&&d.navigation.type!=="enter"&&dr.navigating.set(ec.current=d.navigation);let b=f&&await y1(f);if(!b){if(wd(e,ps,rn.hash))return await ac(e,r);b=await k1(e,{id:null},await hl(new qf(404,"Not Found",`Not found: ${e.pathname}`),{url:e,params:{},route:{id:null}}),404,r)}if(e=f?.url||e,Rr!==u){d.reject(new Error("navigation aborted"));return}if(!b)return;if(b.type==="redirect"){if(l<20){await pl({type:t,url:new URL(b.location,e),popped:a,keepfocus:n,noscroll:s,replace_state:r,state:o,redirect_count:l+1,nav_token:u}),d.fulfil(void 0);return}if(b=await Lf({status:500,error:await hl(new Error("Redirect loop"),{url:e,params:{},route:{id:null}}),url:e,route:{id:null}}),!b)return}else if(b.props.page.status>=400&&await dr.updated.check())return await l1(),await ac(e,r);if(y6(),Uf(c),h1(_),b.props.page.url.pathname!==e.pathname&&(e.pathname=b.props.page.url.pathname),o=a?a.state:o,!a){const R=r?0:1,$={[fl]:mn+=R,[Zl]:hs+=R,[J_]:o};(r?history.replaceState:history.pushState).call(history,$,"",e),r||_6(mn,hs)}const v=f&&gs?.id===f.id?gs.fork:null;gs?.fork&&!v?$d():(gs=null,gl={element:void 0,href:void 0}),b.props.page.state=o;let w;if(Gd){const R=(await Promise.all(Array.from(v6,L=>L(d.navigation)))).filter(L=>typeof L=="function");if(R.length>0){let L=function(){R.forEach(x=>{nc.delete(x)})};R.push(L),R.forEach(x=>{nc.add(x)})}const $=d.navigation.to;ma={...b.state,nav:{params:$.params,route:$.route,url:$.url}},b.props.page&&(b.props.page.url=e),!n&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();const P=v&&await v;P?w=P.commit():(tc=null,m1.$set(b.props),tc&&Object.assign(b.props.page,tc),o1(b.props.page),w=nx?.()),f1=!0}else await b1(b,jf,!1);const{activeElement:y}=document;if(await w,await Er(),await Er(),Rr!==u){d.reject(new Error("navigation aborted"));return}b.props.page&&tc&&Object.assign(b.props.page,tc);let T=null;if(u1){const R=a?a.scroll:s?ko():null;R?scrollTo(R.x,R.y):(T=e.hash&&document.getElementById(x1(e)))?T.scrollIntoView():scrollTo(0,0)}const O=document.activeElement!==y&&document.activeElement!==document.body;!n&&!O&&U6(e,!T),u1=!0,sc=!1,d.fulfil(void 0),d.navigation.to&&(d.navigation.to.scroll=ko()),nc.forEach(R=>R(d.navigation)),t==="popstate"&&_1(hs),dr.navigating.set(ec.current=null)}async function k1(t,e,a,n,s){return t.origin===Cf&&t.pathname===location.pathname&&!d1?await Lf({status:n,error:a,url:t,route:e}):await ac(t,s)}let gl={element:void 0,href:void 0};function A6(){let t,e;ur.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(t),t=setTimeout(()=>{s(l,wo.hover)},20)});function a(o){o.defaultPrevented||s(o.composedPath()[0],wo.tap)}ur.addEventListener("mousedown",a),ur.addEventListener("touchstart",a,{passive:!0});const n=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(Nf(new URL(l.target.href)),n.unobserve(l.target))},{threshold:0});async function s(o,l){const u=i1(o,ur),p=u===gl.element&&u?.href===gl.href&&l>=e;if(!u||p)return;const{url:g,external:h,download:m}=Mf(u,ps,rn.hash);if(h||m)return;const f=yd(u),d=g&&Md(ma.url)===Md(g);if(!(f.reload||d))if(l<=f.preload_data){gl={element:u,href:u.href},e=wo.tap;const c=await Cd(g,!1);if(!c)return;k6(c)}else l<=f.preload_code&&(gl={element:u,href:u.href},e=l,Nf(g))}function r(){n.disconnect();for(const o of ur.querySelectorAll("a")){const{url:l,external:u,download:p}=Mf(o,ps,rn.hash);if(u||p)continue;const g=yd(o);g.reload||(g.preload_code===wo.viewport&&n.observe(o),g.preload_code===wo.eager&&Nf(l))}}nc.add(r),r()}function hl(t,e){if(t instanceof Tf)return t.body;const a=Ef(t),n=p6(t);return rn.hooks.handleError({error:t,event:e,status:a,message:n})??{message:n}}function C6(t){if(typeof t=="function")Sd.push(t);else{const{href:e}=new URL(t,location.href);Sd.push(a=>a.href===e)}}function M6(){history.scrollRestoration="manual",addEventListener("beforeunload",e=>{let a=!1;if(v1(),!sc){const n=Vf(ma,void 0,null,"leave"),s={...n.navigation,cancel:()=>{a=!0,n.reject(new Error("navigation cancelled"))}};c1.forEach(r=>r(s))}a?(e.preventDefault(),e.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&v1()}),navigator.connection?.saveData||A6(),ur.addEventListener("click",async e=>{if(e.button||e.which!==1||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.defaultPrevented)return;const a=i1(e.composedPath()[0],ur);if(!a)return;const{url:n,external:s,target:r,download:o}=Mf(a,ps,rn.hash);if(!n)return;if(r==="_parent"||r==="_top"){if(window.parent!==window)return}else if(r&&r!=="_self")return;const l=yd(a);if(!(a instanceof SVGAElement)&&n.protocol!==location.protocol&&!(n.protocol==="https:"||n.protocol==="http:")||o)return;const[p,g]=(rn.hash?n.hash.replace(/^#/,""):n.href).split("#"),h=p===Gf(location);if(s||l.reload&&(!h||!g)){w1({url:n,type:"link",event:e})?sc=!0:e.preventDefault();return}if(g!==void 0&&h){const[,m]=ma.url.href.split("#");if(m===g){if(e.preventDefault(),g===""||g==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=a.ownerDocument.getElementById(decodeURIComponent(g));f&&(f.scrollIntoView(),f.focus())}return}if(rc=!0,Uf(mn),t(n),!l.replace_state)return;rc=!1}e.preventDefault(),await new Promise(m=>{requestAnimationFrame(()=>{setTimeout(m,0)}),setTimeout(m,100)}),await pl({type:"link",url:n,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??n.href===location.href,event:e})}),ur.addEventListener("submit",e=>{if(e.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||a.target)==="_blank"||(n?.formMethod||a.method)!=="get")return;const o=new URL(n?.hasAttribute("formaction")&&n?.formAction||a.action);if(wd(o,ps,!1))return;const l=e.target,u=yd(l);if(u.reload)return;e.preventDefault(),e.stopPropagation();const p=new FormData(l,n);o.search=new URLSearchParams(p).toString(),pl({type:"form",url:o,keepfocus:u.keepfocus,noscroll:u.noscroll,replace_state:u.replace_state??o.href===location.href,event:e})}),addEventListener("popstate",async e=>{if(!Df){if(e.state?.[fl]){const a=e.state[fl];if(Rr={},a===mn)return;const n=Br[a],s=e.state[J_]??{},r=new URL(e.state[d6]??location.href),o=e.state[Zl],l=ma.url?Gf(location)===Gf(ma.url):!1;if(o===hs&&(f1||l)){s!==Pn.state&&(Pn.state=s),t(r),Br[mn]=ko(),n&&scrollTo(n.x,n.y),mn=a;return}const p=a-mn;await pl({type:"popstate",url:r,popped:{state:s,scroll:n,delta:p},accept:()=>{mn=a,hs=o},block:()=>{history.go(-p)},nav_token:Rr,event:e})}else if(!rc){const a=new URL(location.href);t(a),rn.hash&&location.reload()}}}),addEventListener("hashchange",()=>{rc&&(rc=!1,history.replaceState({...history.state,[fl]:++mn,[Zl]:hs},"",location.href))});for(const e of document.querySelectorAll("link"))h6.has(e.rel)&&(e.href=e.href);addEventListener("pageshow",e=>{e.persisted&&dr.navigating.set(ec.current=null)});function t(e){ma.url=Pn.url=e,dr.page.set(Hf(Pn)),dr.page.notify()}}async function E6(t,{status:e=200,error:a,node_ids:n,params:s,route:r,server_route:o,data:l,form:u}){d1=!0;const p=new URL(location.href);let g;({params:s={},route:r={id:null}}=await Cd(p,!1)||{}),g=Bf.find(({id:f})=>f===r.id);let h,m=!0;try{const f=n.map(async(c,_)=>{const b=l[_];return b?.uses&&(b.uses=z6(b.uses)),Of({loader:rn.nodes[c],url:p,params:s,route:r,parent:async()=>{const v={};for(let w=0;w<_;w+=1)Object.assign(v,(await f[w]).data);return v},server_data_node:If(b)})}),d=await Promise.all(f);if(g){const c=g.layouts;for(let _=0;_{const l=history.state;Df=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(l,"",t),e&&scrollTo(r,o),Df=!1})}else{const r=document.body,o=r.getAttribute("tabindex");r.tabIndex=-1,r.focus({preventScroll:!0,focusVisible:!1}),o!==null?r.setAttribute("tabindex",o):r.removeAttribute("tabindex")}const s=getSelection();if(s&&s.type!=="None"){const r=[];for(let o=0;o{if(s.rangeCount===r.length){for(let o=0;o{r=p,o=g});return l.catch(Ur),{navigation:{from:{params:t.params,route:{id:t.route?.id??null},url:t.url,scroll:ko()},to:a&&{params:e?.params??null,route:{id:e?.route?.id??null},url:a,scroll:s},willUnload:!e,type:n,complete:l},fulfil:r,reject:o}}function Hf(t){return{data:t.data,error:t.error,form:t.form,params:t.params,route:t.route,state:t.state,status:t.status,url:t.url}}function B6(t){const e=new URL(t);return e.hash=decodeURIComponent(t.hash),e}function x1(t){let e;if(rn.hash){const[,,a]=t.hash.split("#",3);e=a??""}else e=t.hash.slice(1);return decodeURIComponent(e)}const SE="modulepreload",TE=function(t,e){return new URL(t,e).href},$E={},oc=function(e,a,n){let s=Promise.resolve();function r(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return s.then(o=>{for(const l of o||[])l.status==="rejected"&&r(l.reason);return e().catch(r)})},R6={},j6="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(j6);var P6=ue('
'),N6=ue(" ",1);function O6(t,e){Ya(e,!0);let a=Ge(e,"components",23,()=>[]),n=Ge(e,"data_0",3,null),s=Ge(e,"data_1",3,null);f_(()=>e.stores.page.set(e.page)),ud(()=>{e.stores,e.page,e.constructors,a(),e.form,n(),s(),e.stores.page.notify()});let r=za(!1),o=za(!1),l=za(null);Fs(()=>{const c=e.stores.page.subscribe(()=>{i(r)&&(E(o,!0),Er().then(()=>{E(l,document.title||"untitled page",!0)}))});return E(r,!0),c});const u=Si(()=>e.constructors[1]);var p=N6(),g=Et(p);{var h=c=>{const _=Si(()=>e.constructors[0]);var b=Ls(),v=Et(b);_d(v,()=>i(_),(w,y)=>{$a(y(w,{get data(){return n()},get form(){return e.form},get params(){return e.page.params},children:(T,O)=>{var R=Ls(),$=Et(R);_d($,()=>i(u),(P,L)=>{$a(L(P,{get data(){return s()},get form(){return e.form},get params(){return e.page.params}}),x=>a()[1]=x,()=>a()?.[1])}),te(T,R)},$$slots:{default:!0}}),T=>a()[0]=T,()=>a()?.[0])}),te(c,b)},m=c=>{const _=Si(()=>e.constructors[0]);var b=Ls(),v=Et(b);_d(v,()=>i(_),(w,y)=>{$a(y(w,{get data(){return n()},get form(){return e.form},get params(){return e.page.params}}),T=>a()[0]=T,()=>a()?.[0])}),te(c,b)};qe(g,c=>{e.constructors[1]?c(h):c(m,-1)})}var f=j(g,2);{var d=c=>{var _=P6(),b=z(_);{var v=w=>{var y=C_();de(()=>X(y,i(l))),te(w,y)};qe(b,w=>{i(o)&&w(v)})}A(_),te(c,_)};qe(f,c=>{i(r)&&c(d)})}te(t,p),Xa()}const I6=Dx(O6),L6=[()=>oc(()=>Promise.resolve().then(()=>K6),void 0,qn&&qn.tagName.toUpperCase()==="SCRIPT"&&qn.src||new URL("_app/immutable/bundle.T-B6mb94.js",document.baseURI).href),()=>oc(()=>Promise.resolve().then(()=>Z6),void 0,qn&&qn.tagName.toUpperCase()==="SCRIPT"&&qn.src||new URL("_app/immutable/bundle.T-B6mb94.js",document.baseURI).href),()=>oc(()=>Promise.resolve().then(()=>kC),void 0,qn&&qn.tagName.toUpperCase()==="SCRIPT"&&qn.src||new URL("_app/immutable/bundle.T-B6mb94.js",document.baseURI).href)],D6=[],V6={"/":[2]},Wf={handleError:(({error:t})=>{console.error(t)}),reroute:(()=>{}),transport:{}},S1=Object.fromEntries(Object.entries(Wf.transport).map(([t,e])=>[t,e.decode])),H6=Object.fromEntries(Object.entries(Wf.transport).map(([t,e])=>[t,e.encode])),T1=Object.freeze(Object.defineProperty({__proto__:null,decode:(t,e)=>S1[t](e),decoders:S1,dictionary:V6,encoders:H6,get_error_template:()=>oc(()=>Promise.resolve().then(()=>xC),void 0,qn&&qn.tagName.toUpperCase()==="SCRIPT"&&qn.src||new URL("_app/immutable/bundle.T-B6mb94.js",document.baseURI).href).then(t=>t.default),hash:!0,hooks:Wf,matchers:R6,nodes:L6,root:I6,server_loads:D6},Symbol.toStringTag,{value:"Module"}));function W6(t,e){b6(T1,t,e)}function Q6(t,e){var a=Ls(),n=Et(a);U_(n,()=>e.children),te(t,a)}const K6=Object.freeze(Object.defineProperty({__proto__:null,component:Q6},Symbol.toStringTag,{value:"Module"})),Y6={get error(){return Pn.error},get status(){return Pn.status}};dr.updated.check;const $1=Y6;var X6=ue("

",1);function J6(t,e){Ya(e,!0);var a=X6(),n=Et(a),s=z(n,!0);A(n);var r=j(n,2),o=z(r,!0);A(r),de(()=>{X(s,$1.status),X(o,$1.error?.message)}),te(t,a),Xa()}const Z6=Object.freeze(Object.defineProperty({__proto__:null,component:J6},Symbol.toStringTag,{value:"Module"}));F3();const xo={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const Qf=(...t)=>t.filter((e,a,n)=>!!e&&e.trim()!==""&&n.indexOf(e)===a).join(" ").trim();function Kf(t){return t!=null}function e4(t,e={}){const a=e.attributeNames??{},n=m=>a[m]??m,s=t.size??t.width??xo.width,r=t.size??t.height??xo.height,o=t.aliases?.filter(m=>typeof m=="string"&&m.trim()!=="").map(m=>`lucide-${m}`)??[],l=[...t.name?[`lucide-${t.name}`]:[],...o],u=e.className?.split(" ").filter(Boolean)??[],p=e.includeDefaultClasses===!1?Qf(...u):Qf("lucide",...l,...u),g=e.absoluteStrokeWidth?Number(e.strokeWidth??xo["stroke-width"])*Number(t.size??t.width??xo.width)/Number(e.size??e.width??xo.width):e.strokeWidth??xo["stroke-width"];return["svg",{...Object.entries(xo).reduce((m,[f,d])=>(m[n(f)]=d,m),{}),..."color"in e&&e.color&&{[n("stroke")]:e.color},..."size"in e&&Kf(e.size)&&{[n("width")]:e.size,[n("height")]:e.size},..."width"in e&&Kf(e.width)&&{[n("width")]:e.width},..."height"in e&&Kf(e.height)&&{[n("height")]:e.height},[n("stroke-width")]:g,...p&&{[n("class")]:p},[n("viewBox")]:`0 0 ${s} ${r}`,...e.hasA11yProp===!1?{[n("aria-hidden")]:"true"}:{},..."attributes"in e&&e.attributes},t.node.map(m=>{const[f,d,c]=m,_=e.nonScalingStroke?{[n("vector-effect")]:"non-scaling-stroke",...d}:d;return c?[f,_,c]:[f,_]})]}const t4=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};const i4=Symbol("lucide-context"),a4=()=>A3(i4);var n4=new Set(["$$slots","$$events","$$legacy","color","size","width","height","strokeWidth","absoluteStrokeWidth","nonScalingStroke","iconNode","icon","class","children"]),s4=bx("");function ba(t,e){Ya(e,!0);const a=a4()??{},n=Ge(e,"color",19,()=>a.color??"currentColor"),s=Ge(e,"size",19,()=>a.size??24),r=Ge(e,"width",19,s),o=Ge(e,"height",19,s),l=Ge(e,"strokeWidth",19,()=>a.strokeWidth??2),u=Ge(e,"absoluteStrokeWidth",19,()=>a.absoluteStrokeWidth??!1),p=Ge(e,"nonScalingStroke",19,()=>a.nonScalingStroke??!1),g=Ge(e,"iconNode",19,()=>[]),h=Ge(e,"icon",19,()=>({node:g(),aliases:[],size:24})),m=fa(e,n4),f=Si(()=>!!e.children||t4(m)),d=Si(()=>e4(h(),{color:n(),width:r(),height:o(),strokeWidth:l(),absoluteStrokeWidth:u(),nonScalingStroke:p(),className:Qf("lucide-icon",a.class),hasA11yProp:i(f),attributes:m})),c=Si(()=>Ru(i(d),3)),_=Si(()=>i(c)[1]),b=Si(()=>Xk(i(c)[2],()=>[],!0)),v=Si(()=>({...i(_),class:[...i(_).class.split(" "),e.class]}));var w=s4();I_(w,()=>({...i(v)}));var y=z(w);Mt(y,17,()=>i(b),Xt,(O,R)=>{var $=Si(()=>Ru(i(R),2));let P=()=>i($)[0],L=()=>i($)[1];var x=Ls(),U=Et(x);qx(U,P,!0,(D,M)=>{I_(D,()=>({...L()}))}),te(O,x)});var T=j(y);U_(T,()=>e.children??Gr),A(w),te(t,w),Xa()}var r4=new Set(["$$slots","$$events","$$legacy"]);function o4(t,e){let a=fa(e,r4);const n={name:"arrow-down",size:24,node:[["path",{d:"M12 5v14"}],["path",{d:"m19 12-7 7-7-7"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var l4=new Set(["$$slots","$$events","$$legacy"]);function c4(t,e){let a=fa(e,l4);const n={name:"arrow-up",size:24,node:[["path",{d:"m5 12 7-7 7 7"}],["path",{d:"M12 19V5"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var d4=new Set(["$$slots","$$events","$$legacy"]);function u4(t,e){let a=fa(e,d4);const n={name:"audio-lines",size:24,node:[["path",{d:"M2 10v3"}],["path",{d:"M6 6v11"}],["path",{d:"M10 3v18"}],["path",{d:"M14 8v7"}],["path",{d:"M18 5v13"}],["path",{d:"M22 10v3"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var f4=new Set(["$$slots","$$events","$$legacy"]);function m4(t,e){let a=fa(e,f4);const n={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var p4=new Set(["$$slots","$$events","$$legacy"]);function g4(t,e){let a=fa(e,p4);const n={name:"code",size:24,node:[["path",{d:"m16 18 6-6-6-6"}],["path",{d:"m8 6-6 6 6 6"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var h4=new Set(["$$slots","$$events","$$legacy"]);function _4(t,e){let a=fa(e,h4);const n={name:"download",size:24,node:[["path",{d:"M12 15V3"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["path",{d:"m7 10 5 5 5-5"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var v4=new Set(["$$slots","$$events","$$legacy"]);function b4(t,e){let a=fa(e,v4);const n={name:"file-headphone",size:24,node:[["path",{d:"M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0"}]],aliases:["file-audio","file-audio-2"]};ba(t,va(()=>a,{get icon(){return n}}))}var y4=new Set(["$$slots","$$events","$$legacy"]);function Yf(t,e){let a=fa(e,y4);const n={name:"file-text",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M10 9H8"}],["path",{d:"M16 13H8"}],["path",{d:"M16 17H8"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var w4=new Set(["$$slots","$$events","$$legacy"]);function Xf(t,e){let a=fa(e,w4);const n={name:"folder-open",size:24,node:[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var k4=new Set(["$$slots","$$events","$$legacy"]);function Ed(t,e){let a=fa(e,k4);const n={name:"message-square",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var x4=new Set(["$$slots","$$events","$$legacy"]);function Jf(t,e){let a=fa(e,x4);const n={name:"mic",size:24,node:[["path",{d:"M12 19v3"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2"}],["rect",{x:"9",y:"2",width:"6",height:"13",rx:"3"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var S4=new Set(["$$slots","$$events","$$legacy"]);function T4(t,e){let a=fa(e,S4);const n={name:"play",size:24,node:[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var $4=new Set(["$$slots","$$events","$$legacy"]);function q1(t,e){let a=fa(e,$4);const n={name:"plus",size:24,node:[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var q4=new Set(["$$slots","$$events","$$legacy"]);function G4(t,e){let a=fa(e,q4);const n={name:"save",size:24,node:[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var F4=new Set(["$$slots","$$events","$$legacy"]);function A4(t,e){let a=fa(e,F4);const n={name:"search",size:24,node:[["path",{d:"m21 21-4.34-4.34"}],["circle",{cx:"11",cy:"11",r:"8"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var C4=new Set(["$$slots","$$events","$$legacy"]);function M4(t,e){let a=fa(e,C4);const n={name:"sliders-horizontal",size:24,node:[["path",{d:"M10 5H3"}],["path",{d:"M12 19H3"}],["path",{d:"M14 3v4"}],["path",{d:"M16 17v4"}],["path",{d:"M21 12h-9"}],["path",{d:"M21 19h-5"}],["path",{d:"M21 5h-7"}],["path",{d:"M8 10v4"}],["path",{d:"M8 12H3"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var E4=new Set(["$$slots","$$events","$$legacy"]);function G1(t,e){let a=fa(e,E4);const n={name:"square",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var z4=new Set(["$$slots","$$events","$$legacy"]);function zd(t,e){let a=fa(e,z4);const n={name:"trash",size:24,node:[["path",{d:"M10 11v6"}],["path",{d:"M14 11v6"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}],["path",{d:"M3 6h18"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}]],aliases:["trash-2"]};ba(t,va(()=>a,{get icon(){return n}}))}var U4=new Set(["$$slots","$$events","$$legacy"]);function F1(t,e){let a=fa(e,U4);const n={name:"upload",size:24,node:[["path",{d:"M12 3v12"}],["path",{d:"m17 8-5-5-5 5"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var B4=new Set(["$$slots","$$events","$$legacy"]);function Zf(t,e){let a=fa(e,B4);const n={name:"user",size:24,node:[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"}],["circle",{cx:"12",cy:"7",r:"4"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var R4=new Set(["$$slots","$$events","$$legacy"]);function lc(t,e){let a=fa(e,R4);const n={name:"users",size:24,node:[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87"}],["circle",{cx:"9",cy:"7",r:"4"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var j4=new Set(["$$slots","$$events","$$legacy"]);function P4(t,e){let a=fa(e,j4);const n={name:"video",size:24,node:[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2"}]]};ba(t,va(()=>a,{get icon(){return n}}))}var N4=new Set(["$$slots","$$events","$$legacy"]);function O4(t,e){let a=fa(e,N4);const n={name:"x",size:24,node:[["path",{d:"M18 6 6 18"}],["path",{d:"m6 6 12 12"}]]};ba(t,va(()=>a,{get icon(){return n}}))}function Ud(t,e,a){for(let n=0;nt.getChannelData(u));let o=44;for(let l=0;le.decodeAudioData(await u.arrayBuffer()))),n=a[0].sampleRate,s=a[0].numberOfChannels;for(const u of a)if(u.sampleRate!==n||u.numberOfChannels!==s)throw new Error("Generated chunks use different audio formats and cannot be joined.");const r=a.reduce((u,p)=>u+p.length,0),o=e.createBuffer(s,r,n);let l=0;for(const u of a){for(let p=0;pn[s]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}const Fh=!1;var Eu=Array.isArray,Jk=Array.prototype.indexOf,nd=Array.prototype.includes,sd=Array.from,zu=Object.defineProperty,fr=Object.getOwnPropertyDescriptor,Ah=Object.getOwnPropertyDescriptors,Zk=Object.prototype,e3=Array.prototype,Uu=Object.getPrototypeOf,Ch=Object.isExtensible;function Nl(t){return typeof t=="function"}const Mr=()=>{};function t3(t){return t()}function Bu(t){for(var e=0;e{t=n,e=s});return{promise:a,resolve:t,reject:e}}function i3(t,e,a=!1){return t===void 0?a?e():e:t}function Ru(t,e){if(Array.isArray(t))return t;if(e===void 0||!(Symbol.iterator in t))return Array.from(t);const a=[];for(const n of t)if(a.push(n),a.length===e)break;return a}const on=2,co=4,Ol=8,ju=1<<24,As=16,ls=32,mr=64,Pu=128,cs=512,Da=1024,Va=2048,ds=4096,Mn=8192,Kn=16384,uo=32768,Nu=1<<25,pr=65536,rd=1<<17,Eh=1<<18,Qo=1<<19,zh=1<<20,Hs=1<<25,fo=65536,od=1<<21,Ko=1<<22,Er=1<<23,Ws=Symbol("$state"),Ou=Symbol("legacy props"),a3=Symbol(""),Uh=Symbol("attributes"),Iu=Symbol("class"),Lu=Symbol("style"),Du=Symbol("text"),Il=Symbol("form reset"),Ll=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},Dl=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml"),n3=1,Vl=3,Yo=8;function Vu(t){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function s3(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function r3(t,e,a){throw new Error("https://svelte.dev/e/each_key_duplicate")}function o3(t){throw new Error("https://svelte.dev/e/effect_in_teardown")}function l3(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function c3(t){throw new Error("https://svelte.dev/e/effect_orphan")}function d3(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function u3(){throw new Error("https://svelte.dev/e/hydration_failed")}function f3(t){throw new Error("https://svelte.dev/e/props_invalid_value")}function m3(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function p3(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function g3(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function h3(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const _3=1,v3=2,Bh=4,b3=8,y3=16,w3=1,k3=2,x3=4,S3=8,T3=16,$3=1,q3=2,Hu="[",Wu="[!",Rh="[?",Qu="]",Xo={},Ha=Symbol("uninitialized"),jh="http://www.w3.org/1999/xhtml",G3="http://www.w3.org/2000/svg",F3="@attach";function A3(){console.warn("https://svelte.dev/e/derived_inert")}function ld(t){console.warn("https://svelte.dev/e/hydration_mismatch")}function C3(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function M3(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}let qt=!1;function gn(t){qt=t}let ci;function Ra(t){if(t===null)throw ld(),Xo;return ci=t}function gr(){return Ra(fs(ci))}function F(t){if(qt){if(fs(ci)!==null)throw ld(),Xo;ci=t}}function ja(t=1){if(qt){for(var e=t,a=ci;e--;)a=fs(a);ci=a}}function Hl(t=!0){for(var e=0,a=ci;;){if(a.nodeType===Yo){var n=a.data;if(n===Qu){if(e===0)return a;e-=1}else(n===Hu||n===Wu||n[0]==="["&&!isNaN(Number(n.slice(1))))&&(e+=1)}var s=fs(a);t&&a.remove(),a=s}}function Ku(t){if(!t||t.nodeType!==Yo)throw ld(),Xo;return t.data}function Ph(t){return t===this.v}function Nh(t,e){return t!=t?e==e:t!==e||t!==null&&typeof t=="object"||typeof t=="function"}function Oh(t){return!Nh(t,this.v)}let Jo=!1,E3=!1;function z3(){Jo=!0}let Oi=null;function Zo(t){Oi=t}function U3(t){return B3().get(t)}function Wa(t,e=!1,a){Oi={p:Oi,i:!1,c:null,e:null,s:t,x:null,r:ri,l:Jo&&!e?{s:null,u:null,$:[]}:null}}function Qa(t){var e=Oi,a=e.e;if(a!==null){e.e=null;for(var n of a)m_(n)}return t!==void 0&&(e.x=t),e.i=!0,Oi=e.p,t??{}}function el(){return!Jo||Oi!==null&&Oi.l===null}function B3(t){return Oi===null&&Vu(),Oi.c??=new Map(R3(Oi)||void 0)}function R3(t){let e=t.p;for(;e!==null;){const a=e.c;if(a!==null)return a;e=e.p}return null}let mo=[];function Ih(){var t=mo;mo=[],Bu(t)}function Cs(t){if(mo.length===0&&!Ql){var e=mo;queueMicrotask(()=>{e===mo&&Ih()})}mo.push(t)}function j3(){for(;mo.length>0;)Ih()}function Lh(t){var e=ri;if(e===null)return ki.f|=Er,t;if((e.f&uo)===0&&(e.f&co)===0)throw t;zr(t,e)}function zr(t,e){if(!(e!==null&&(e.f&Kn)!==0)){for(;e!==null;){if((e.f&Pu)!==0){if((e.f&uo)===0)throw t;try{e.b.error(t);return}catch(a){t=a}}e=e.parent}throw t}}const P3=-7169;function ka(t,e){t.f=t.f&P3|e}function Yu(t){(t.f&cs)!==0||t.deps===null?ka(t,Da):ka(t,ds)}function Dh(t){if(t!==null)for(const e of t)(e.f&on)===0||(e.f&fo)===0||(e.f^=fo,Dh(e.deps))}function Vh(t,e,a){(t.f&Va)!==0?e.add(t):(t.f&ds)!==0&&a.add(t),Dh(t.deps),ka(t,Da)}function Hh(t,e,a){if(t==null)return e(void 0),Mr;const n=q(()=>t.subscribe(e,a));return n.unsubscribe?()=>n.unsubscribe():n}const tl=[];function il(t,e=Mr){let a=null;const n=new Set;function s(l){if(Nh(t,l)&&(t=l,a)){const u=!tl.length;for(const p of n)p[1](),tl.push(p,t);if(u){for(let p=0;p{n.delete(p),n.size===0&&a&&(a(),a=null)}}return{set:s,update:r,subscribe:o}}function cd(t){let e;return Hh(t,a=>e=a)(),e}let dd=!1,Xu=Symbol("unmounted");function ud(t,e,a){const n=a[e]??={store:null,source:se(void 0),unsubscribe:Mr};if(n.store!==t&&!(Xu in a))if(n.unsubscribe(),n.store=t??null,t==null)n.source.v=void 0,n.unsubscribe=Mr;else{var s=!0;n.unsubscribe=Hh(t,r=>{s?n.source.v=r:M(n.source,r)}),s=!1}return t&&Xu in a?cd(t):i(n.source)}function Ju(){const t={};function e(){ll(()=>{for(var a in t)t[a].unsubscribe();zu(t,Xu,{enumerable:!1,value:!0})})}return[t,e]}function N3(t){var e=dd;try{return dd=!1,[t(),dd]}finally{dd=e}}function O3(t,e){if(e){const a=document.body;t.autofocus=!0,Cs(()=>{document.activeElement===a&&t.focus()})}}function Ka(t){qt&&us(t)!==null&&uf(t)}let Wh=!1;function Qh(){Wh||(Wh=!0,document.addEventListener("reset",t=>{Promise.resolve().then(()=>{if(!t.defaultPrevented)for(const e of t.target.elements)e[Il]?.()})},{capture:!0}))}function al(t){var e=ki,a=ri;ps(null),gs(null);try{return t()}finally{ps(e),gs(a)}}function Zu(t,e,a,n=a){t.addEventListener(e,()=>al(a));const s=t[Il];s?t[Il]=()=>{s(),n(!0)}:t[Il]=()=>n(!0),Qh()}function I3(t){let e=0,a=go(0),n;return()=>{ff()&&(i(a),cl(()=>(e===0&&(n=q(()=>t(()=>Kl(a)))),e+=1,()=>{Cs(()=>{e-=1,e===0&&(n?.(),n=void 0,Kl(a))})})))}}var L3=pr|Qo;function D3(t,e,a,n){new V3(t,e,a,n)}class V3{parent;is_pending=!1;transform_error;#e;#t=qt?ci:null;#i;#l;#n;#s=null;#a=null;#o=null;#r=null;#g=0;#c=0;#d=!1;#f=new Set;#h=new Set;#u=null;#v=I3(()=>(this.#u=go(this.#g),()=>{this.#u=null}));constructor(e,a,n,s){this.#e=e,this.#i=a,this.#l=r=>{var o=ri;o.b=this,o.f|=Pu,n(r)},this.parent=ri.b,this.transform_error=s??this.parent?.transform_error??(r=>r),this.#n=Ur(()=>{if(qt){const r=this.#t;gr();const o=r.data===Wu;if(r.data.startsWith(Rh)){const u=JSON.parse(r.data.slice(Rh.length));this.#b(u)}else o?this.#k():this.#_()}else this.#m()},L3),qt&&(this.#e=ci)}#_(){try{this.#s=En(()=>this.#l(this.#e))}catch(e){this.error(e)}}#b(e){const a=this.#i.failed,{reset:n,invoke_onerror:s}=this.#y(e);Cs(s),a&&(this.#o=En(()=>{a(this.#e,()=>e,()=>n)}))}#y(e){var a=!1,n=!1;const s=()=>{if(a){M3();return}a=!0,n&&h3(),this.#o!==null&&_o(this.#o,()=>{this.#o=null}),this.#p(()=>{this.#m()})};return{reset:s,invoke_onerror:()=>{try{n=!0,this.#i.onerror?.(e,s),n=!1}catch(o){zr(o,this.#n&&this.#n.parent)}}}}#k(){const e=this.#i.pending;e&&(this.is_pending=!0,this.#a=En(()=>e(this.#e)),Cs(()=>{var a=this.#r=document.createDocumentFragment(),n=wn();a.append(n),this.#s=this.#p(()=>En(()=>this.#l(n))),this.#c===0&&(this.#e.before(a),this.#r=null,_o(this.#a,()=>{this.#a=null}),this.#w(si))}))}#m(){try{if(this.is_pending=this.has_pending_snippet(),this.#c=0,this.#g=0,this.#s=En(()=>{this.#l(this.#e)}),this.#c>0){var e=this.#r=document.createDocumentFragment();pf(this.#s,e);const a=this.#i.pending;this.#a=En(()=>a(this.#e))}else this.#w(si)}catch(a){this.error(a)}}#w(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#h)}defer_effect(e){Vh(e,this.#f,this.#h)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#i.pending}#p(e){var a=ri,n=ki,s=Oi;gs(this.#n),ps(this.#n),Zo(this.#n.ctx);try{return hr.ensure(),e()}catch(r){return Lh(r),null}finally{gs(a),ps(n),Zo(s)}}#x(e,a){if(!this.has_pending_snippet()){this.parent&&this.parent.#x(e,a);return}this.#c+=e,this.#c===0&&(this.#w(a),this.#a&&_o(this.#a,()=>{this.#a=null}),this.#r&&(this.#e.before(this.#r),this.#r=null))}update_pending_count(e,a){this.#x(e,a),this.#g+=e,!(!this.#u||this.#d)&&(this.#d=!0,Cs(()=>{this.#d=!1,this.#u&&ho(this.#u,this.#g)}))}get_effect_pending(){return this.#v(),i(this.#u)}error(e){if(!this.#i.onerror&&!this.#i.failed)throw e;si?.is_fork?(this.#s&&si.skip_effect(this.#s),this.#a&&si.skip_effect(this.#a),this.#o&&si.skip_effect(this.#o),si.oncommit(()=>{this.#S(e)})):this.#S(e)}#S(e){this.#s&&(hn(this.#s),this.#s=null),this.#a&&(hn(this.#a),this.#a=null),this.#o&&(hn(this.#o),this.#o=null),qt&&(Ra(this.#t),ja(),Ra(Hl()));let a=this.#i.failed;const n=s=>{const{reset:r,invoke_onerror:o}=this.#y(s);o(),a&&(this.#o=this.#p(()=>{try{return En(()=>{var l=ri;l.b=this,l.f|=Pu,a(this.#e,()=>s,()=>r)})}catch(l){return zr(l,this.#n.parent),null}}))};Cs(()=>{var s;try{s=this.transform_error(e)}catch(r){zr(r,this.#n&&this.#n.parent);return}s!==null&&typeof s=="object"&&typeof s.then=="function"?s.then(n,r=>zr(r,this.#n&&this.#n.parent)):n(s)})}}function ef(t,e,a,n){const s=el()?nl:Pt;var r=t.filter(m=>!m.settled),o=e.map(s);if(a.length===0&&r.length===0){n(o);return}var l=ri,u=H3(),p=r.length===1?r[0].promise:r.length>1?Promise.all(r.map(m=>m.promise)):null;function g(m){if((l.f&Kn)===0){u();try{n([...o,...m])}catch(d){zr(d,l)}fd()}}var h=Kh();if(a.length===0){p.then(()=>g([])).finally(h);return}function f(){Promise.all(a.map(m=>W3(m))).then(g).catch(m=>zr(m,l)).finally(h)}p?p.then(()=>{u(),f(),fd()}):f()}function H3(){var t=ri,e=ki,a=Oi,n=si;return function(r=!0){gs(t),ps(e),Zo(a),r&&(t.f&Kn)===0&&(n?.activate(),n?.apply())}}function fd(t=!0){gs(null),ps(null),Zo(null),t&&si?.deactivate()}function Kh(){var t=ri,e=t.b,a=si,n=!!e?.is_rendered();return e?.update_pending_count(1,a),a.increment(n,t),()=>{e?.update_pending_count(-1,a),a.decrement(n,t)}}function nl(t){var e=on|Va;return ri!==null&&(ri.f|=Qo),{ctx:Oi,deps:null,effects:null,equals:Ph,f:e,fn:t,reactions:null,rv:0,v:Ha,wv:0,parent:ri,ac:null}}const Wl=Symbol("obsolete");function W3(t,e,a){let n=ri;n===null&&s3();var s=void 0,r=go(Ha),o=!ki,l=new Set;return ix(()=>{var u=ri,p=Mh();s=p.promise;try{Promise.resolve(t()).then(p.resolve,m=>{m!==Ll&&p.reject(m)}).finally(fd)}catch(m){p.reject(m),fd()}var g=si;if(o){if((u.f&uo)!==0)var h=Kh();if(n.b?.is_rendered())g.async_deriveds.get(u)?.reject(Wl);else for(const m of l.values())m.reject(Wl);l.add(p),g.async_deriveds.set(u,p)}const f=(m,d=void 0)=>{h?.(),l.delete(p),d!==Wl&&(g.activate(),d?(r.f|=Er,ho(r,d)):((r.f&Er)!==0&&(r.f^=Er),ho(r,m)),g.deactivate())};p.promise.then(f,m=>f(null,m||"unknown"))}),ll(()=>{for(const u of l)u.reject(Wl)}),new Promise(u=>{function p(g){function h(){g===s?u(r):p(s)}g.then(h,h)}p(s)})}function wi(t){const e=nl(t);return w_(e),e}function Pt(t){const e=nl(t);return e.equals=Oh,e}function Q3(t){var e=t.effects;if(e!==null){t.effects=null;for(var a=0;a{e.ac.abort(Ll),e.ac=null}),e.fn!==null&&(e.teardown=Mr),Yl(e,0),mf(e))}function Xh(t){if(t.effects!==null)for(const e of t.effects)e.teardown&&e.fn!==null&&yo(e)}let af=null,sl=null,si=null,nf=null,Ms=null,sf=null,Ql=!1,rf=!1,rl=null,md=null;var Jh=0,BE=new Set;let Y3=1;class hr{id=Y3++;#e=!1;linked=!0;#t=null;#i=null;async_deriveds=new Map;current=new Map;previous=new Map;#l=new Set;#n=new Set;#s=0;#a=new Map;#o=null;#r=[];#g=[];#c=new Set;#d=new Set;#f=new Map;#h=new Set;is_fork=!1;#u=!1;constructor(){sl===null?af=sl=this:(sl.#i=this,this.#t=sl),sl=this}#v(){if(this.is_fork)return!0;for(const n of this.#a.keys()){for(var e=n,a=!1;e.parent!==null;){if(this.#f.has(e)){a=!0;break}e=e.parent}if(!a)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#h.delete(e)}unskip_effect(e,a=n=>this.schedule(n)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var s of n.d)ka(s,Va),a(s);for(s of n.m)ka(s,ds),a(s)}this.#h.add(e)}#_(){this.#e=!0,Jh++>1e3&&(this.#p(),X3());for(const u of this.#c)this.#d.delete(u),ka(u,Va),this.schedule(u);for(const u of this.#d)ka(u,ds),this.schedule(u);const e=this.#r;this.#r=[],this.apply();var a=rl=[],n=[],s=md=[];for(const u of e)try{this.#b(u,a,n)}catch(p){throw a_(u),this.#v()||this.discard(),p}if(si=null,s.length>0){var r=hr.ensure();for(const u of s)r.schedule(u)}if(rl=null,md=null,this.#v()){this.#m(n),this.#m(a);for(const[u,p]of this.#f)i_(u,p);s.length>0&&si.#_();return}const o=this.#y();if(o){this.#m(n),this.#m(a),o.#k(this);return}this.#c.clear(),this.#d.clear();for(const u of this.#l)u(this);this.#l.clear(),nf=this,e_(n),e_(a),nf=null,this.#o?.resolve();var l=si;if(this.#s===0&&(this.#r.length===0||l!==null)&&this.#p(),this.#r.length>0)if(l!==null){const u=l;u.#r.push(...this.#r.filter(p=>!u.#r.includes(p)))}else l=this;l!==null&&l.#_()}#b(e,a,n){e.f^=Da;for(var s=e.first;s!==null;){var r=s.f,o=(r&(ls|mr))!==0,l=o&&(r&Da)!==0,u=l||(r&Mn)!==0||this.#f.has(s);if(!u&&s.fn!==null){o?s.f^=Da:(r&co)!==0?a.push(s):ul(s)&&((r&As)!==0&&this.#d.add(s),yo(s));var p=s.first;if(p!==null){s=p;continue}}for(;s!==null;){var g=s.next;if(g!==null){s=g;break}s=s.parent}}}#y(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(const[a,[,n]]of this.current)if(e.current.has(a)&&!n)return e}e=e.#t}return null}#k(e){for(const[n,s]of e.current)!this.previous.has(n)&&e.previous.has(n)&&this.previous.set(n,e.previous.get(n)),this.current.set(n,s);for(const[n,s]of e.async_deriveds){const r=this.async_deriveds.get(n);r&&s.promise.then(r.resolve).catch(r.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#c,e.#d);const a=n=>{var s=n.reactions;if(s!==null&&!((n.f&on)!==0&&(n.f&(Va|ds))===0))for(const l of s){var r=l.f;if((r&on)!==0)a(l);else{var o=l;r&(Ko|As)&&!this.async_deriveds.has(o)&&(this.#d.delete(o),ka(o,Va),this.schedule(o))}}};for(const n of this.current.keys())a(n);this.oncommit(()=>e.discard()),e.#p(),si=this,this.#_()}#m(e){for(var a=0;a!h.current.get(f)[1]);if(!(!h.#e||s.length===0)){var r=s.filter(f=>!this.current.has(f));if(r.length===0)e&&h.discard();else if(a.length>0){if(e)for(const f of this.#h)h.unskip_effect(f,m=>{(m.f&(As|Ko))!==0?h.schedule(m):h.#m([m])});h.activate();var o=new Set,l=new Map;for(var u of a)t_(u,r,o,l);l=new Map;var p=[...h.current].filter(([f,m])=>{const d=this.current.get(f);return d?d[0]!==m[0]||d[1]!==m[1]:!0}).map(([f])=>f);if(p.length>0)for(const f of this.#g)(f.f&(Kn|Mn|rd))===0&&of(f,p,l)&&((f.f&(Ko|As))!==0?(ka(f,Va),h.schedule(f)):h.#c.add(f));if(h.#r.length>0&&!h.#u){h.apply();for(var g of h.#r)h.#b(g,[],[]);h.#r=[]}h.deactivate()}}}}increment(e,a){if(this.#s+=1,e){let n=this.#a.get(a)??0;this.#a.set(a,n+1)}}decrement(e,a){if(this.#s-=1,e){let n=this.#a.get(a)??0;n===1?this.#a.delete(a):this.#a.set(a,n-1)}this.#u||(this.#u=!0,Cs(()=>{this.#u=!1,this.linked&&this.flush()}))}transfer_effects(e,a){for(const n of e)this.#c.add(n);for(const n of a)this.#d.add(n);e.clear(),a.clear()}oncommit(e){this.#l.add(e)}ondiscard(e){this.#n.add(e)}settled(){return(this.#o??=Mh()).promise}static ensure(){if(si===null){const e=si=new hr;!rf&&!Ql&&Cs(()=>{e.#e||e.flush()})}return si}apply(){{Ms=null;return}}schedule(e){if(sf=e,e.b?.is_pending&&(e.f&(co|Ol|ju))!==0&&(e.f&uo)===0){e.b.defer_effect(e);return}for(var a=e;a.parent!==null;){a=a.parent;var n=a.f;if(rl!==null&&a===ri&&(ki===null||(ki.f&on)===0))return;if((n&(mr|ls))!==0){if((n&Da)===0)return;a.f^=Da}}this.#r.push(a)}#p(){if(this.linked){var e=this.#t,a=this.#i;e===null?af=a:e.#i=a,a===null?sl=e:a.#t=e,this.linked=!1}}}function Zh(t){var e=Ql;Ql=!0;try{for(var a;;){if(j3(),si===null)return a;si.flush()}}finally{Ql=e}}function X3(){try{d3()}catch(t){zr(t,sf)}}let _r=null;function e_(t){var e=t.length;if(e!==0){for(var a=0;a0)){po.clear();for(const s of _r){if((s.f&(Kn|Mn))!==0)continue;const r=[s];let o=s.parent;for(;o!==null;)_r.has(o)&&(_r.delete(o),r.push(o)),o=o.parent;for(let l=r.length-1;l>=0;l--){const u=r[l];(u.f&(Kn|Mn))===0&&yo(u)}}_r.clear()}}_r=null}}function t_(t,e,a,n){if(!a.has(t)&&(a.add(t),t.reactions!==null))for(const s of t.reactions){const r=s.f;(r&on)!==0?t_(s,e,a,n):(r&(Ko|As))!==0&&(r&Va)===0&&of(s,e,n)&&(ka(s,Va),lf(s))}}function of(t,e,a){const n=a.get(t);if(n!==void 0)return n;if(t.deps!==null)for(const s of t.deps){if(nd.call(e,s))return!0;if((s.f&on)!==0&&of(s,e,a))return a.set(s,!0),!0}return a.set(t,!1),!1}function lf(t){si.schedule(t)}function i_(t,e){if(!((t.f&ls)!==0&&(t.f&Da)!==0)){(t.f&Va)!==0?e.d.push(t):(t.f&ds)!==0&&e.m.push(t),ka(t,Da);for(var a=t.first;a!==null;)i_(a,e),a=a.next}}function a_(t){ka(t,Da);for(var e=t.first;e!==null;)a_(e),e=e.next}let pd=new Set;const po=new Map;let n_=!1;function go(t,e){var a={f:0,v:t,reactions:null,equals:Ph,rv:0,wv:0};return a}function Pa(t,e){const a=go(t);return w_(a),a}function se(t,e=!1,a=!0){const n=go(t);return e||(n.equals=Oh),Jo&&a&&Oi!==null&&Oi.l!==null&&(Oi.l.s??=[]).push(n),n}function fi(t,e){return M(t,q(()=>i(t))),e}function M(t,e,a=!1){ki!==null&&(!Es||(ki.f&rd)!==0)&&el()&&(ki.f&(on|As|Ko|rd))!==0&&(Qs===null||!Qs.has(t))&&g3();let n=a?ol(e):e;return ho(t,n,md)}function ho(t,e,a=null){if(!t.equals(e)){po.set(t,vr?e:t.v);var n=hr.ensure();if(n.capture(t,e),(t.f&on)!==0){const s=t;(t.f&Va)!==0&&tf(s),Ms===null&&Yu(s)}t.wv=S_(),s_(t,Va,a),el()&&ri!==null&&(ri.f&Da)!==0&&(ri.f&(ls|mr))===0&&(hs===null?ox([t]):hs.push(t)),!n.is_fork&&pd.size>0&&!n_&&J3()}return e}function J3(){n_=!1;for(const t of pd){(t.f&Da)!==0&&ka(t,ds);let e;try{e=ul(t)}catch{e=!0}e&&yo(t)}pd.clear()}function Kl(t){M(t,t.v+1)}function s_(t,e,a){var n=t.reactions;if(n!==null)for(var s=el(),r=n.length,o=0;o{if(bo===r)return l();var u=ki,p=bo;ps(null),x_(r);var g=l();return ps(u),x_(p),g};return n&&a.set("length",Pa(t.length)),new Proxy(t,{defineProperty(l,u,p){(!("value"in p)||p.configurable===!1||p.enumerable===!1||p.writable===!1)&&m3();var g=a.get(u);return g===void 0?o(()=>{var h=Pa(p.value);return a.set(u,h),h}):M(g,p.value,!0),!0},deleteProperty(l,u){var p=a.get(u);if(p===void 0){if(u in l){const g=o(()=>Pa(Ha));a.set(u,g),Kl(s)}}else M(p,Ha),Kl(s);return!0},get(l,u,p){if(u===Ws)return t;var g=a.get(u),h=u in l;if(g===void 0&&(!h||fr(l,u)?.writable)&&(g=o(()=>{var m=ol(h?l[u]:Ha),d=Pa(m);return d}),a.set(u,g)),g!==void 0){var f=i(g);return f===Ha?void 0:f}return Reflect.get(l,u,p)},getOwnPropertyDescriptor(l,u){var p=Reflect.getOwnPropertyDescriptor(l,u);if(p&&"value"in p){var g=a.get(u);g&&(p.value=i(g))}else if(p===void 0){var h=a.get(u),f=h?.v;if(h!==void 0&&f!==Ha)return{enumerable:!0,configurable:!0,value:f,writable:!0}}return p},has(l,u){if(u===Ws)return!0;var p=a.get(u),g=p!==void 0&&p.v!==Ha||Reflect.has(l,u);if(p!==void 0||ri!==null&&(!g||fr(l,u)?.writable)){p===void 0&&(p=o(()=>{var f=g?ol(l[u]):Ha,m=Pa(f);return m}),a.set(u,p));var h=i(p);if(h===Ha)return!1}return g},set(l,u,p,g){var h=a.get(u),f=u in l;if(n&&u==="length")for(var m=p;mPa(Ha)),a.set(m+"",d))}if(h===void 0)(!f||fr(l,u)?.writable)&&(h=o(()=>Pa(void 0)),M(h,ol(p)),a.set(u,h));else{f=h.v!==Ha;var c=o(()=>ol(p));M(h,c)}var _=Reflect.getOwnPropertyDescriptor(l,u);if(_?.set&&_.set.call(g,p),!f){if(n&&typeof u=="string"){var b=a.get("length"),v=Number(u);Number.isInteger(v)&&v>=b.v&&M(b,v+1)}Kl(s)}return!0},ownKeys(l){i(s);var u=Reflect.ownKeys(l).filter(h=>{var f=a.get(h);return f===void 0||f.v!==Ha});for(var[p,g]of a)g.v!==Ha&&!(p in l)&&u.push(p);return u},setPrototypeOf(){p3()}})}function r_(t){try{if(t!==null&&typeof t=="object"&&Ws in t)return t[Ws]}catch{}return t}function Z3(t,e){return Object.is(r_(t),r_(e))}var gd,cf,o_,l_,c_;function df(){if(gd===void 0){gd=window,cf=document,o_=/Firefox/.test(navigator.userAgent);var t=Element.prototype,e=Node.prototype,a=Text.prototype;l_=fr(e,"firstChild").get,c_=fr(e,"nextSibling").get,Ch(t)&&(t[Iu]=void 0,t[Uh]=null,t[Lu]=void 0,t.__e=void 0),Ch(a)&&(a[Du]=void 0)}}function wn(t=""){return document.createTextNode(t)}function us(t){return l_.call(t)}function fs(t){return c_.call(t)}function E(t,e){if(!qt)return us(t);var a=us(ci);if(a===null)a=ci.appendChild(wn());else if(e&&a.nodeType!==Vl){var n=wn();return a?.before(n),Ra(n),n}return e&&hd(a),Ra(a),a}function At(t,e=!1){if(!qt){var a=us(t);return a instanceof Comment&&a.data===""?fs(a):a}if(e){if(ci?.nodeType!==Vl){var n=wn();return ci?.before(n),Ra(n),n}hd(ci)}return ci}function R(t,e=1,a=!1){let n=qt?ci:t;for(var s;e--;)s=n,n=fs(n);if(!qt)return n;if(a){if(n?.nodeType!==Vl){var r=wn();return n===null?s?.after(r):n.before(r),Ra(r),r}hd(n)}return Ra(n),n}function uf(t){t.textContent=""}function d_(){return!1}function u_(t,e,a){return e==null||e===jh?a?document.createElement(t,{is:a}):document.createElement(t):a?document.createElementNS(e,t,{is:a}):document.createElementNS(e,t)}function hd(t){if(t.nodeValue.length<65536)return;let e=t.nextSibling;for(;e!==null&&e.nodeType===Vl;)e.remove(),t.nodeValue+=e.nodeValue,e=t.nextSibling}function f_(t){ri===null&&(ki===null&&c3(),l3()),vr&&o3()}function ex(t,e){var a=e.last;a===null?e.last=e.first=t:(a.next=t,t.prev=a,e.last=t)}function ms(t,e){var a=ri;a!==null&&(a.f&Mn)!==0&&(t|=Mn);var n={ctx:Oi,deps:null,nodes:null,f:t|Va|cs,first:null,fn:e,last:null,next:null,parent:a,b:a&&a.b,prev:null,teardown:null,wv:0,ac:null};si?.register_created_effect(n);var s=n;if((t&co)!==0)rl!==null?rl.push(n):hr.ensure().schedule(n);else if(e!==null){try{yo(n)}catch(o){throw hn(n),o}s.deps===null&&s.teardown===null&&s.nodes===null&&s.first===s.last&&(s.f&Qo)===0&&(s=s.first,(t&As)!==0&&(t&pr)!==0&&s!==null&&(s.f|=pr))}if(s!==null&&(s.parent=a,a!==null&&ex(s,a),ki!==null&&(ki.f&on)!==0&&(t&mr)===0)){var r=ki;(r.effects??=[]).push(s)}return n}function ff(){return ki!==null&&!Es}function ll(t){const e=ms(Ol,null);return ka(e,Da),e.teardown=t,e}function _d(t){f_();var e=ri.f,a=!ki&&(e&ls)!==0&&Oi!==null&&!Oi.i;if(a){var n=Oi;(n.e??=[]).push(t)}else return m_(t)}function m_(t){return ms(co|zh,t)}function p_(t){return f_(),ms(Ol|zh,t)}function tx(t){hr.ensure();const e=ms(mr|Qo,t);return(a={})=>new Promise(n=>{a.outro?_o(e,()=>{hn(e),n(void 0)}):(hn(e),n(void 0))})}function vd(t){return ms(co,t)}function We(t,e){var a=Oi,n={effect:null,ran:!1,deps:t};a.l.$.push(n),n.effect=cl(()=>{if(t(),!n.ran){n.ran=!0;var s=ri;try{gs(s.parent),q(e)}finally{gs(s)}}})}function Yn(){var t=Oi;cl(()=>{for(var e of t.l.$){e.deps();var a=e.effect;(a.f&Da)!==0&&a.deps!==null&&ka(a,ds),ul(a)&&yo(a),e.ran=!1}})}function ix(t){return ms(Ko|Qo,t)}function cl(t,e=0){return ms(Ol|e,t)}function ce(t,e=[],a=[],n=[]){ef(n,e,a,s=>{ms(Ol,()=>{t(...s.map(i))})})}function ax(t,e=[],a=[],n=[]){ef(n,e,a,s=>{ms(co,()=>t(...s.map(i)))})}function Ur(t,e=0){var a=ms(As|e,t);return a}function g_(t,e=0){var a=ms(ju|e,t);return a}function En(t){return ms(ls|Qo,t)}function h_(t){var e=t.teardown;if(e!==null){const a=vr,n=ki;y_(!0),ps(null);try{e.call(null)}finally{y_(a),ps(n)}}}function mf(t,e=!1){var a=t.first;for(t.first=t.last=null;a!==null;){const s=a.ac;s!==null&&al(()=>{s.abort(Ll)});var n=a.next;(a.f&mr)!==0?a.parent=null:hn(a,e),a=n}}function nx(t){for(var e=t.first;e!==null;){var a=e.next;(e.f&ls)===0&&hn(e),e=a}}function hn(t,e=!0){var a=!1;(e||(t.f&Eh)!==0)&&t.nodes!==null&&t.nodes.end!==null&&(sx(t.nodes.start,t.nodes.end),a=!0),t.f|=Nu,mf(t,e&&!a),Yl(t,0);var n=t.nodes&&t.nodes.t;if(n!==null)for(const r of n)r.stop();h_(t),t.f^=Nu,t.f|=Kn;var s=t.parent;s!==null&&s.first!==null&&__(t),t.next=t.prev=t.teardown=t.ctx=t.deps=t.fn=t.nodes=t.ac=t.b=null}function sx(t,e){for(;t!==null;){var a=t===e?null:fs(t);t.remove(),t=a}}function __(t){var e=t.parent,a=t.prev,n=t.next;a!==null&&(a.next=n),n!==null&&(n.prev=a),e!==null&&(e.first===t&&(e.first=n),e.last===t&&(e.last=a))}function _o(t,e,a=!0){var n=[];v_(t,n,!0);var s=()=>{a&&hn(t),e&&e()},r=n.length;if(r>0){var o=()=>--r||s();for(var l of n)l.out(o)}else s()}function v_(t,e,a){if((t.f&Mn)===0){t.f^=Mn;var n=t.nodes&&t.nodes.t;if(n!==null)for(const l of n)(l.is_global||a)&&e.push(l);for(var s=t.first;s!==null;){var r=s.next;if((s.f&mr)===0){var o=(s.f&pr)!==0||(s.f&ls)!==0&&(t.f&As)!==0;v_(s,e,o?a:!1)}s=r}}}function bd(t){b_(t,!0)}function b_(t,e){if((t.f&Mn)!==0){t.f^=Mn,(t.f&Da)===0&&(ka(t,Va),hr.ensure().schedule(t));for(var a=t.first;a!==null;){var n=a.next,s=(a.f&pr)!==0||(a.f&ls)!==0;b_(a,s?e:!1),a=n}var r=t.nodes&&t.nodes.t;if(r!==null)for(const o of r)(o.is_global||e)&&o.in()}}function pf(t,e){if(t.nodes)for(var a=t.nodes.start,n=t.nodes.end;a!==null;){var s=a===n?null:fs(a);e.append(a),a=s}}let dl=null;function rx(t){var e=dl;try{if(dl=new Set,q(t),e!==null)for(var a of dl)e.add(a);return dl}finally{dl=e}}function yd(t){for(var e of rx(t))ho(e,e.v)}let wd=!1,vr=!1;function y_(t){vr=t}let ki=null,Es=!1;function ps(t){ki=t}let ri=null;function gs(t){ri=t}let Qs=null;function w_(t){ki!==null&&(Qs??=new Set).add(t)}let Nn=null,Xn=0,hs=null;function ox(t){hs=t}let k_=1,vo=0,bo=vo;function x_(t){bo=t}function S_(){return++k_}function ul(t){var e=t.f;if((e&Va)!==0)return!0;if(e&on&&(t.f&=~fo),(e&ds)!==0){for(var a=t.deps,n=a.length,s=0;st.wv)return!0}(e&cs)!==0&&Ms===null&&ka(t,Da)}return!1}function T_(t,e,a=!0){var n=t.reactions;if(n!==null&&!(Qs!==null&&Qs.has(t)))for(var s=0;s{t.ac.abort(Ll)}),t.ac=null);try{t.f|=od;var g=t.fn,h=g();t.f|=uo;var f=t.deps,m=si?.is_fork;if(Nn!==null){var d;if(m||Yl(t,Xn),f!==null&&Xn>0)for(f.length=Xn+Nn.length,d=0;d{r.ac.abort(Ll),r.ac=null,ka(r,Va)}),K3(r),Yl(r,0)}}function Yl(t,e){var a=t.deps;if(a!==null)for(var n=e;na?.call(this,r))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?Cs(()=>{e.addEventListener(t,s,n)}):e.addEventListener(t,s,n),s}function Te(t,e,a,n,s){var r={capture:n,passive:s},o=A_(t,e,a,r);(e===document.body||e===window||e===document||e instanceof HTMLMediaElement)&&ll(()=>{e.removeEventListener(t,o,r)})}function bx(t,e,a){(e[Xl]??={})[t]=a}function yx(t){for(var e=0;e{throw c});throw f}}finally{t[Xl]=e,delete t.currentTarget,ps(g),gs(h)}}}const wx=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:t=>t});function kx(t){return wx?.createHTML(t)??t}function M_(t){var e=u_("template");return e.innerHTML=kx(t.replaceAll("","")),e.content}function zs(t,e){var a=ri;a.nodes===null&&(a.nodes={start:t,end:e,a:null,t:null})}function ue(t,e){var a=(e&$3)!==0,n=(e&q3)!==0,s,r=!t.startsWith("");return()=>{if(qt)return zs(ci,null),ci;s===void 0&&(s=M_(r?t:""+t),a||(s=us(s)));var o=n||o_?document.importNode(s,!0):s.cloneNode(!0);if(a){var l=us(o),u=o.lastChild;zs(l,u)}else zs(o,o);return o}}function xx(t,e,a="svg"){var n=!t.startsWith(""),s=`<${a}>${n?t:""+t}`,r;return()=>{if(qt)return zs(ci,null),ci;if(!r){var o=M_(s),l=us(o);r=us(l)}var u=r.cloneNode(!0);return zs(u,u),u}}function Sx(t,e){return xx(t,e,"svg")}function E_(t=""){if(!qt){var e=wn(t+"");return zs(e,e),e}var a=ci;return a.nodeType!==Vl?(a.before(a=wn()),Ra(a)):hd(a),zs(a,a),a}function Us(){if(qt)return zs(ci,null),ci;var t=document.createDocumentFragment(),e=document.createComment(""),a=wn();return t.append(e,a),zs(e,a),t}function te(t,e){if(qt){var a=ri;((a.f&uo)===0||a.nodes.end===null)&&(a.nodes.end=ci),gr();return}t!==null&&t.before(e)}function X(t,e){var a=e==null?"":typeof e=="object"?`${e}`:e;a!==(t[Du]??=t.nodeValue)&&(t[Du]=a,t.nodeValue=`${a}`)}function z_(t,e){return U_(t,e)}function Tx(t,e){df(),e.intro=e.intro??!1;const a=e.target,n=qt,s=ci;try{for(var r=us(a);r&&(r.nodeType!==Yo||r.data!==Hu);)r=fs(r);if(!r)throw Xo;gn(!0),Ra(r);const o=U_(t,{...e,anchor:r});return gn(!1),o}catch(o){if(o instanceof Error&&o.message.split(` +`).some(l=>l.startsWith("https://svelte.dev/e/")))throw o;return o!==Xo&&console.warn("Failed to hydrate: ",o),e.recover===!1&&u3(),df(),uf(a),gn(!1),z_(t,e)}finally{gn(n),Ra(s)}}const kd=new Map;function U_(t,{target:e,anchor:a,props:n={},events:s,context:r,intro:o=!0,transformError:l}){df();var u=void 0,p=tx(()=>{var g=a??e.appendChild(wn());D3(g,{pending:()=>{}},m=>{Wa({});var d=Oi;if(r&&(d.c=r),s&&(n.$$events=s),qt&&zs(m,null),u=t(m,n)||{},qt&&(ri.nodes.end=ci,ci===null||ci.nodeType!==Yo||ci.data!==Qu))throw ld(),Xo;Qa()},l);var h=new Set,f=m=>{for(var d=0;d{for(var m of h)for(const _ of[e,document]){var d=kd.get(_),c=d.get(m);--c==0?(_.removeEventListener(m,_f),d.delete(m),d.size===0&&kd.delete(_)):d.set(m,c)}hf.delete(f),g!==a&&g.parentNode?.removeChild(g)}});return vf.set(u,p),u}let vf=new WeakMap;function $x(t,e){const a=vf.get(t);return a?(vf.delete(t),a(e)):Promise.resolve()}class Jl{anchor;#e=new Map;#t=new Map;#i=new Map;#l=new Set;#n=!0;constructor(e,a=!0){this.anchor=e,this.#n=a}#s=e=>{if(this.#e.has(e)){var a=this.#e.get(e),n=this.#t.get(a);if(n)bd(n),this.#l.delete(a);else{var s=this.#i.get(a);s&&(bd(s.effect),this.#t.set(a,s.effect),this.#i.delete(a),s.fragment.lastChild.remove(),this.anchor.before(s.fragment),n=s.effect)}for(const[r,o]of this.#e){if(this.#e.delete(r),r===e)break;const l=this.#i.get(o);l&&(hn(l.effect),this.#i.delete(o))}for(const[r,o]of this.#t){if(r===a||this.#l.has(r))continue;const l=()=>{if(Array.from(this.#e.values()).includes(r)){var p=document.createDocumentFragment();pf(o,p),p.append(wn()),this.#i.set(r,{effect:o,fragment:p})}else hn(o);this.#l.delete(r),this.#t.delete(r)};this.#n||!n?(this.#l.add(r),_o(o,l,!1)):l()}}};#a=e=>{this.#e.delete(e);const a=Array.from(this.#e.values());for(const[n,s]of this.#i)a.includes(n)||(hn(s.effect),this.#i.delete(n))};ensure(e,a){var n=si,s=d_();if(a&&!this.#t.has(e)&&!this.#i.has(e))if(s){var r=document.createDocumentFragment(),o=wn();r.append(o),this.#i.set(e,{effect:En(()=>a(o)),fragment:r})}else this.#t.set(e,En(()=>a(this.anchor)));if(this.#e.set(n,e),s){for(const[l,u]of this.#t)l===e?n.unskip_effect(u):n.skip_effect(u);for(const[l,u]of this.#i)l===e?n.unskip_effect(u.effect):n.skip_effect(u.effect);n.oncommit(this.#s),n.ondiscard(this.#a)}else qt&&(this.anchor=ci),this.#s(n)}}function qe(t,e,a=!1){var n;qt&&(n=ci,gr());var s=new Jl(t),r=a?pr:0;function o(l,u){if(qt){var p=Ku(n);if(l!==parseInt(p.substring(1))){var g=Hl();Ra(g),s.anchor=g,gn(!1),s.ensure(l,u),gn(!0);return}}s.ensure(l,u)}Ur(()=>{var l=!1;e((u,p=0)=>{l=!0,o(p,u)}),l||o(-1,null)},r)}const qx=Symbol("NaN");function Gx(t,e,a){qt&&gr();var n=new Jl(t),s=!el();Ur(()=>{var r=e();r!==r&&(r=qx),s&&r!==null&&typeof r=="object"&&(r={}),n.ensure(r,a)})}function ei(t,e){return e}function Fx(t,e,a){for(var n=[],s=e.length,r,o=e.length,l=0;l{if(r){if(r.pending.delete(h),r.done.add(h),r.pending.size===0){var f=t.outrogroups;bf(t,sd(r.done)),f.delete(r),f.size===0&&(t.outrogroups=null)}}else o-=1},!1)}if(o===0){var u=n.length===0&&a!==null;if(u){var p=a,g=p.parentNode;uf(g),g.append(p),t.items.clear()}bf(t,e,!u)}else r={pending:new Set(e),done:new Set},(t.outrogroups??=new Set).add(r)}function bf(t,e,a=!0){var n;if(t.pending.size>0){n=new Set;for(const o of t.pending.values())for(const l of o)n.add(t.items.get(l).e)}for(var s=0;s{var k=a();return Eu(k)?k:k==null?[]:sd(k)}),f,m=new Map,d=!0;function c(k){(v.effect.f&Kn)===0&&(v.pending.delete(k),v.fallback=g,Ax(v,f,o,e,n),g!==null&&(f.length===0?(g.f&Hs)===0?bd(g):(g.f^=Hs,ec(g,null,o)):_o(g,()=>{g=null})))}function _(k){v.pending.delete(k)}var b=Ur(()=>{f=i(h);var k=f.length;let y=!1;if(qt){var T=Ku(o)===Wu;T!==(k===0)&&(o=Hl(),Ra(o),gn(!1),y=!0)}for(var O=new Set,j=si,$=d_(),P=0;Pr(o)):(g=En(()=>r(B_??=wn())),g.f|=Hs)),k>O.size&&r3(),qt&&k>0&&Ra(Hl()),!d)if(m.set(j,O),$){for(const[D,A]of l)O.has(D)||j.skip_effect(A.e);j.oncommit(c),j.ondiscard(_)}else c(j);y&&gn(!0),i(h)}),v={effect:b,items:l,pending:m,outrogroups:null,fallback:g};d=!1,qt&&(o=ci)}function Zl(t){for(;t!==null&&(t.f&ls)===0;)t=t.next;return t}function Ax(t,e,a,n,s){var r=(n&b3)!==0,o=e.length,l=t.items,u=Zl(t.effect.first),p,g=null,h,f=[],m=[],d,c,_,b;if(r)for(b=0;b0){var P=(n&Bh)!==0&&o===0?a:null;if(r){for(b=0;b<$;b+=1)j[b].nodes?.a?.measure();for(b=0;b<$;b+=1)j[b].nodes?.a?.fix()}Fx(t,j,P)}}r&&Cs(()=>{if(h!==void 0)for(_ of h)_.nodes?.a?.apply()})}function Cx(t,e,a,n,s,r,o,l){var u=(o&_3)!==0?(o&y3)===0?se(a,!1,!1):go(a):null,p=(o&v3)!==0?go(s):null;return{v:u,i:p,e:En(()=>(r(e,u??a,p??s,l),()=>{t.delete(n)}))}}function ec(t,e,a){if(t.nodes)for(var n=t.nodes.start,s=t.nodes.end,r=e&&(e.f&Hs)===0?e.nodes.start:a;n!==null;){var o=fs(n);if(r.before(n),n===s)return;n=o}}function Rr(t,e,a){e===null?t.effect.first=a:e.next=a,a===null?t.effect.last=e:a.prev=e}function Mx(t,e,a,n,s){qt&&gr();var r=e.$$slots?.[a],o=!1;r===!0&&(r=e.children,o=!0),r===void 0||r(t,o?()=>n:n)}function R_(t,e,...a){var n=new Jl(t);Ur(()=>{const s=e()??null;n.ensure(s,s&&(r=>s(r,...a)))},pr)}function xd(t,e,a){var n;qt&&(n=ci,gr());var s=new Jl(t);Ur(()=>{var r=e()??null;if(qt){var o=Ku(n),l=o===Hu,u=r!==null;if(l!==u){var p=Hl();Ra(p),s.anchor=p,gn(!1),s.ensure(r,r&&(g=>a(g,r))),gn(!0);return}}s.ensure(r,r&&(g=>a(g,r)))},pr)}function Ex(t,e,a,n,s,r){let o=qt;qt&&gr();var l=null;qt&&ci.nodeType===n3&&(l=ci,gr());var u=qt?ci:t,p=new Jl(u,!1);Ur(()=>{const g=e()||null;var h=G3;if(g===null){p.ensure(null,null);return}return p.ensure(g,f=>{if(g){if(l=qt?l:u_(g,h),zs(l,l),n){var m=null;qt&&vx(g)&&l.append(m=document.createComment(""));var d=qt?us(l):l.appendChild(wn());qt&&(d===null?gn(!1):Ra(d)),n(l,d),m?.remove()}ri.nodes.end=l,f.before(l)}qt&&Ra(f)}),()=>{}},pr),ll(()=>{}),o&&(gn(!0),Ra(u))}function zx(t,e){let a=null,n=qt;var s;if(qt){a=ci;for(var r=us(document.head);r!==null&&(r.nodeType!==Yo||r.data!==t);)r=fs(r);if(r===null)gn(!1);else{var o=fs(r);r.remove(),Ra(o)}}qt||(s=document.head.appendChild(wn()));try{Ur(()=>{var l=En(()=>e(s));l.f|=Eh})}finally{n&&(gn(!0),Ra(a))}}function Ux(t,e){var a=void 0,n;g_(()=>{a!==(a=e())&&(n&&(hn(n),n=null),a&&(n=En(()=>{vd(()=>a(t))})))})}function j_(t){var e,a,n="";if(typeof t=="string"||typeof t=="number")n+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e=0;){var l=o+r;(o===0||P_.includes(n[o-1]))&&(l===n.length||P_.includes(n[l]))?n=(o===0?"":n.substring(0,o))+n.substring(l+1):o=l}}return n===""?null:n}function N_(t,e=!1){var a=e?" !important;":";",n="";for(var s of Object.keys(t)){var r=t[s];r!=null&&r!==""&&(n+=" "+s+": "+r+a)}return n}function yf(t){return t[0]!=="-"||t[1]!=="-"?t.toLowerCase():t}function Px(t,e){if(e){var a="",n,s;if(Array.isArray(e)?(n=e[0],s=e[1]):n=e,t){t=String(t).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var r=!1,o=0,l=!1,u=[];n&&u.push(...Object.keys(n).map(yf)),s&&u.push(...Object.keys(s).map(yf));var p=0,g=-1;const c=t.length;for(var h=0;h{"__value"in t&&kn(t,t.__value)});e.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),ll(()=>{e.disconnect()})}function wo(t,e,a=e){var n=new WeakSet,s=!0;Zu(t,"change",r=>{var o=r?"[selected]":":checked",l;if(t.multiple)l=[].map.call(t.querySelectorAll(o),tc);else{var u=t.querySelector(o)??t.querySelector("option:not([disabled])");l=u&&tc(u)}a(l),t.__value=l,si!==null&&n.add(si)}),vd(()=>{var r=e();if(t===document.activeElement){var o=si;if(n.has(o))return}if(kn(t,r,s),s&&r===void 0){var l=t.querySelector(":checked");l!==null&&(r=tc(l),a(r))}t.__value=r,s=!1}),On(t)}function tc(t){return"__value"in t?t.__value:t.value}const ic=Symbol("class"),ac=Symbol("style"),O_=Symbol("is custom element"),I_=Symbol("is html"),Ox=Dl?"link":"LINK",L_=Dl?"input":"INPUT",Ix=Dl?"option":"OPTION",Lx=Dl?"select":"SELECT",Dx=Dl?"progress":"PROGRESS";function Dt(t){if(qt){var e=!1,a=()=>{if(!e){if(e=!0,t.hasAttribute("value")){var n=t.value;ye(t,"value",null),t.value=n}if(t.hasAttribute("checked")){var s=t.checked;ye(t,"checked",null),t.checked=s}}};t[Il]=a,Cs(a),Qh()}}function Ki(t,e){var a=Td(t);a.value===(a.value=e??void 0)||t.value===e&&(e!==0||t.nodeName!==Dx)||(t.value=e??"")}function Sd(t,e){var a=Td(t);a.checked!==(a.checked=e??void 0)&&(t.checked=e)}function Vx(t,e){e?t.hasAttribute("selected")||t.setAttribute("selected",""):t.removeAttribute("selected")}function ye(t,e,a,n){var s=Td(t);qt&&(s[e]=t.getAttribute(e),e==="src"||e==="srcset"||e==="href"&&t.nodeName===Ox)||s[e]!==(s[e]=a)&&(e==="loading"&&(t[a3]=a),a==null?t.removeAttribute(e):typeof a!="string"&&H_(t).includes(e)?t[e]=a:t.setAttribute(e,a))}function Hx(t,e,a,n,s=!1,r=!1){if(qt&&s&&t.nodeName===L_){var o=t,l=o.type==="checkbox"?"defaultChecked":"defaultValue";l in a||Dt(o)}var u=Td(t),p=u[O_],g=!u[I_];let h=qt&&p;h&&gn(!1);var f=e||{},m=t.nodeName===Ix;for(var d in e)d in a||(a[d]=null);a.class?a.class=Rx(a.class):a[ic]&&(a.class=null),a[ac]&&(a.style??=null);var c=H_(t);if(t.nodeName===L_&&"type"in a&&("value"in a||"__value"in a)){var _=a.type;(_!==f.type||_===void 0&&t.hasAttribute("type"))&&(f.type=_,ye(t,"type",_))}for(const j in a){let $=a[j];if(m&&j==="value"&&$==null){t.value=t.__value="",f[j]=$;continue}if(j==="class"){var b=t.namespaceURI==="http://www.w3.org/1999/xhtml";Gi(t,b,$,n,e?.[ic],a[ic]),f[j]=$,f[ic]=a[ic];continue}if(j==="style"){Nx(t,$,e?.[ac],a[ac]),f[j]=$,f[ac]=a[ac];continue}var v=f[j];if(!($===v&&!($===void 0&&t.hasAttribute(j)))){f[j]=$;var k=j[0]+j[1];if(k!=="$$")if(k==="on"){const P={},L="$$"+j;let x=j.slice(2);var y=fx(x);if(dx(x)&&(x=x.slice(0,-7),P.capture=!0),!y&&v){if($!=null)continue;t.removeEventListener(x,f[L],P),f[L]=null}if(y)bx(x,t,$),yx([x]);else if($!=null){let B=function(D){f[j].call(this,D)};f[L]=A_(x,t,B,P)}}else if(j==="style")ye(t,j,$);else if(j==="autofocus")O3(t,!!$);else if(!p&&(j==="__value"||j==="value"&&$!=null))t.value=t.__value=$;else if(j==="selected"&&m)Vx(t,$);else{var T=j;g||(T=px(T));var O=T==="defaultValue"||T==="defaultChecked";if($==null&&!p&&!O)if(u[j]=null,T==="value"||T==="checked"){let P=t;const L=e===void 0;if(T==="value"){let x=P.defaultValue;P.removeAttribute(T),P.defaultValue=x,P.value=P.__value=L?x:null}else{let x=P.defaultChecked;P.removeAttribute(T),P.defaultChecked=x,P.checked=L?x:!1}}else t.removeAttribute(j);else O||c.includes(T)&&(p||typeof $!="string")?(t[T]=$,T in u&&(u[T]=Ha)):typeof $!="function"&&ye(t,T,$)}}}return h&&gn(!0),f}function D_(t,e,a=[],n=[],s=[],r,o=!1,l=!1){ef(s,a,n,u=>{var p=void 0,g={},h=t.nodeName===Lx,f=!1;if(g_(()=>{var d=e(...u.map(i)),c=Hx(t,p,d,r,o,l);f&&h&&"value"in d&&kn(t,d.value);for(let b of Object.getOwnPropertySymbols(g))d[b]||hn(g[b]);for(let b of Object.getOwnPropertySymbols(d)){var _=d[b];b.description===F3&&(!p||_!==p[b])&&(g[b]&&hn(g[b]),g[b]=En(()=>Ux(t,()=>_))),c[b]=_}p=c}),h){var m=t;vd(()=>{kn(m,p.value,!0),On(m)})}f=!0})}function Td(t){return t[Uh]??={[O_]:t.nodeName.includes("-"),[I_]:t.namespaceURI===jh}}var V_=new Map;function H_(t){var e=t.getAttribute("is")||t.nodeName,a=V_.get(e);if(a)return a;V_.set(e,a=[]);for(var n,s=t,r=Element.prototype;r!==s;){n=Ah(s);for(var o in n)n[o].set&&o!=="innerHTML"&&o!=="textContent"&&o!=="innerText"&&a.push(o);s=Uu(s)}return a}function Fi(t,e,a=e){var n=new WeakSet;Zu(t,"input",async s=>{var r=s?t.defaultValue:t.value;if(r=kf(t)?xf(r):r,a(r),si!==null&&n.add(si),await Br(),r!==(r=e())){var o=t.selectionStart,l=t.selectionEnd,u=t.value.length;if(t.value=r??"",l!==null){var p=t.value.length;o===l&&l===u&&p>u?(t.selectionStart=p,t.selectionEnd=p):(t.selectionStart=o,t.selectionEnd=Math.min(l,p))}}}),(qt&&t.defaultValue!==t.value||q(e)==null&&t.value)&&(a(kf(t)?xf(t.value):t.value),si!==null&&n.add(si)),cl(()=>{var s=e();if(t===document.activeElement){var r=si;if(n.has(r))return}kf(t)&&s===xf(t.value)||t.type==="date"&&!s&&!t.value||s!==t.value&&(t.value=s??"")})}function W_(t,e,a=e){Zu(t,"change",n=>{var s=n?t.defaultChecked:t.checked;a(s)}),(qt&&t.defaultChecked!==t.checked||q(e)==null)&&a(t.checked),cl(()=>{var n=e();t.checked=!!n})}function kf(t){var e=t.type;return e==="number"||e==="range"}function xf(t){return t===""?null:+t}function Q_(t,e,a){var n=fr(t,e);n&&n.set&&(t[e]=a,ll(()=>{t[e]=null}))}function Sf(t,e){return t===e||t?.[Ws]===e}function Ga(t={},e,a,n){var s=Oi.r,r=ri;return vd(()=>{var o,l;return cl(()=>{o=l,l=n?.()||[],q(()=>{Sf(a(...l),t)||(e(t,...l),o&&Sf(a(...o),t)&&e(null,...o))})}),()=>{let u=r;for(;u!==s&&u.parent!==null&&u.parent.fΝ)u=u.parent;const p=()=>{l&&Sf(a(...l),t)&&e(null,...l)},g=u.teardown;u.teardown=()=>{p(),g?.()}}}),t}function Wx(t){return function(...e){var a=e[0];return a.preventDefault(),t?.apply(this,e)}}function xn(t=!1){const e=Oi,a=e.l.u;if(!a)return;let n=()=>Z(e.s);if(t){let s=0,r={};const o=nl(()=>{let l=!1;const u=e.s;for(const p in u)u[p]!==r[p]&&(r[p]=u[p],l=!0);return l&&s++,s});n=()=>i(o)}a.b.length&&p_(()=>{K_(e,n),Bu(a.b)}),_d(()=>{const s=q(()=>a.m.map(t3));return()=>{for(const r of s)typeof r=="function"&&r()}}),a.a.length&&_d(()=>{K_(e,n),Bu(a.a)})}function K_(t,e){if(t.l.s)for(const a of t.l.s)i(a);e()}const Qx={get(t,e){if(!t.exclude.has(e))return t.props[e]},set(t,e){return!1},getOwnPropertyDescriptor(t,e){if(!t.exclude.has(e)&&e in t.props)return{enumerable:!0,configurable:!0,value:t.props[e]}},has(t,e){return t.exclude.has(e)?!1:e in t.props},ownKeys(t){return Reflect.ownKeys(t.props).filter(e=>!t.exclude.has(e))}};function ca(t,e,a){return new Proxy({props:t,exclude:e},Qx)}const Kx={get(t,e){let a=t.props.length;for(;a--;){let n=t.props[a];if(Nl(n)&&(n=n()),typeof n=="object"&&n!==null&&e in n)return n[e]}},set(t,e,a){let n=t.props.length;for(;n--;){let s=t.props[n];Nl(s)&&(s=s());const r=fr(s,e);if(r&&r.set)return r.set(a),!0}return!1},getOwnPropertyDescriptor(t,e){let a=t.props.length;for(;a--;){let n=t.props[a];if(Nl(n)&&(n=n()),typeof n=="object"&&n!==null&&e in n){const s=fr(n,e);return s&&!s.configurable&&(s.configurable=!0),s}}},has(t,e){if(e===Ws||e===Ou)return!1;for(let a of t.props)if(Nl(a)&&(a=a()),a!=null&&e in a)return!0;return!1},ownKeys(t){const e=[];for(let a of t.props)if(Nl(a)&&(a=a()),!!a){for(const n in a)e.includes(n)||e.push(n);for(const n of Object.getOwnPropertySymbols(a))e.includes(n)||e.push(n)}return e}};function pa(...t){return new Proxy({props:t},Kx)}function $e(t,e,a,n){var s=!Jo||(a&k3)!==0,r=(a&S3)!==0,o=(a&T3)!==0,l=n,u=!0,p=void 0,g=()=>o&&s?(p??=nl(n),i(p)):(u&&(u=!1,l=o?q(n):n),l);let h;if(r){var f=Ws in t||Ou in t;h=fr(t,e)?.set??(f&&e in t?y=>t[e]=y:void 0)}var m,d=!1;r?[m,d]=N3(()=>t[e]):m=t[e],m===void 0&&n!==void 0&&(m=g(),h&&(s&&f3(),h(m)));var c;if(s?c=()=>{var y=t[e];return y===void 0?g():(u=!0,y)}:c=()=>{var y=t[e];return y!==void 0&&(l=void 0),y===void 0?l:y},s&&(a&x3)===0)return c;if(h){var _=t.$$legacy;return(function(y,T){return arguments.length>0?((!s||!T||_||d)&&h(T?c():y),y):c()})}var b=!1,v=((a&w3)!==0?nl:Pt)(()=>(b=!1,c()));r&&i(v);var k=ri;return(function(y,T){if(arguments.length>0){const O=T?i(v):s&&r?ol(y):y;return M(v,O),b=!0,l!==void 0&&(l=O),y}return vr&&b||(k.f&Kn)!==0?v.v:i(v)})}function Yx(t){return class extends Xx{constructor(e){super({component:t,...e})}}}class Xx{#e;#t;constructor(e){var a=new Map,n=(r,o)=>{var l=se(o,!1,!1);return a.set(r,l),l};const s=new Proxy({...e.props||{},$$events:{}},{get(r,o){return i(a.get(o)??n(o,Reflect.get(r,o)))},has(r,o){return o===Ou?!0:(i(a.get(o)??n(o,Reflect.get(r,o))),Reflect.has(r,o))},set(r,o,l){return M(a.get(o)??n(o,l),l),Reflect.set(r,o,l)}});this.#t=(e.hydrate?Tx:z_)(e.component,{target:e.target,anchor:e.anchor,props:s,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError}),(!e?.props?.$$host||e.sync===!1)&&Zh(),this.#e=s.$$events;for(const r of Object.keys(this.#t))r==="$set"||r==="$destroy"||r==="$on"||zu(this,r,{get(){return this.#t[r]},set(o){this.#t[r]=o},enumerable:!0});this.#t.$set=r=>{Object.assign(s,r)},this.#t.$destroy=()=>{$x(this.#t)}}$set(e){this.#t.$set(e)}$on(e,a){this.#e[e]=this.#e[e]||[];const n=(...s)=>a.call(this,...s);return this.#e[e].push(n),()=>{this.#e[e]=this.#e[e].filter(s=>s!==n)}}$destroy(){this.#t.$destroy()}}function Bs(t){Oi===null&&Vu(),Jo&&Oi.l!==null?Jx(Oi).m.push(t):_d(()=>{const e=q(t);if(typeof e=="function")return e})}function fl(t){Oi===null&&Vu(),Bs(()=>()=>q(t))}function Jx(t){var e=t.l;return e.u??={a:[],b:[],m:[]}}class Tf{constructor(e,a){this.status=e,typeof a=="string"?this.body={message:a}:a?this.body=a:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}}class $f{constructor(e,a){try{new Headers({location:a})}catch{throw new Error(`Invalid redirect location ${JSON.stringify(a)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=a}}class qf extends Error{constructor(e,a,n){super(n),this.status=e,this.text=a}}new URL("sveltekit-internal://");function Zx(t,e){return t==="/"||e==="ignore"?t:e==="never"?t.endsWith("/")?t.slice(0,-1):t:e==="always"&&!t.endsWith("/")?t+"/":t}function e6(t){return t.split("%25").map(decodeURI).join("%25")}function t6(t){for(const e in t)t[e]=decodeURIComponent(t[e]);return t}function Gf({href:t}){return t.split("#")[0]}function jr(){}function i6(...t){let e=5381;for(const a of t)if(typeof a=="string"){let n=a.length;for(;n;)e=e*33^a.charCodeAt(--n)}else if(ArrayBuffer.isView(a)){const n=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);let s=n.length;for(;s;)e=e*33^n[--s]}else throw new TypeError("value must be a string or TypedArray");return(e>>>0).toString(36)}new TextEncoder;function a6(t){const e=atob(t),a=new Uint8Array(e.length);for(let n=0;n((t instanceof Request?t.method:e?.method||"GET")!=="GET"&&nc.delete(Ff(t)),n6(t,e));const nc=new Map;function s6(t,e){const a=Ff(t,e),n=document.querySelector(a);if(n?.textContent){n.remove();let{body:s,...r}=JSON.parse(n.textContent);n.getAttribute("data-b64")!==null&&(s=a6(s));const l=n.getAttribute("data-ttl");return l&&nc.set(a,{body:s,init:r,ttl:1e3*Number(l)}),Promise.resolve(new Response(s,r))}return window.fetch(t,e)}function r6(t,e,a){if(nc.size>0){const n=Ff(t,a),s=nc.get(n);if(s){if(performance.now(){const s=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(n);if(s)return e.push({name:s[1],matcher:s[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(n);if(r)return e.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!n)return;const o=n.split(/\[(.+?)\](?!\])/);return"/"+o.map((u,p)=>{if(p%2){if(u.startsWith("x+"))return Af(String.fromCharCode(parseInt(u.slice(2),16)));if(u.startsWith("u+"))return Af(String.fromCharCode(...u.slice(2).split("-").map(c=>parseInt(c,16))));const g=o6.exec(u),[,h,f,m,d]=g;return e.push({name:m,matcher:d,optional:!!h,rest:!!f,chained:f?p===1&&o[0]==="":!1}),f?"([^]*?)":h?"([^/]*)?":"([^/]+?)"}return Af(u)}).join("")}).join("")}/?$`),params:e}}function d6(t){return t!==""&&!/^\([^)]+\)$/.test(t)}function u6(t){return t.slice(1).split("/").filter(d6)}function f6(t,e,a){const n={},s=t.slice(1),r=s.filter(l=>l!==void 0);let o=0;for(let l=0;lg).join("/"),o=0),p===void 0)if(u.rest)p="";else continue;if(!u.matcher||a[u.matcher](p)){n[u.name]=p;const g=e[l+1],h=s[l+1];g&&!g.rest&&g.optional&&h&&u.chained&&(o=0),!g&&!h&&Object.keys(n).length===r.length&&(o=0);continue}if(u.optional&&u.chained){o++;continue}return}if(!o)return n}function Af(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function m6({nodes:t,server_loads:e,dictionary:a,matchers:n}){const s=new Set(e);return Object.entries(a).map(([l,[u,p,g]])=>{const{pattern:h,params:f}=c6(l),m={id:l,exec:d=>{const c=h.exec(d);if(c)return f6(c,f,n)},errors:[1,...g||[]].map(d=>t[d]),layouts:[0,...p||[]].map(o),leaf:r(u)};return m.errors.length=m.layouts.length=Math.max(m.errors.length,m.layouts.length),m});function r(l){const u=l<0;return u&&(l=~l),[u,t[l]]}function o(l){return l===void 0?l:[s.has(l),t[l]]}}function Y_(t,e=JSON.parse){try{return e(sessionStorage[t])}catch{}}function X_(t,e,a=JSON.stringify){const n=a(e);try{sessionStorage[t]=n}catch{}}const _s=globalThis.__sveltekit_1xyyov?.base??"",p6=globalThis.__sveltekit_1xyyov?.assets??_s??"",g6="0.9.3",J_="sveltekit:snapshot",Z_="sveltekit:scroll",e1="sveltekit:states",h6="sveltekit:pageurl",ml="sveltekit:history",sc="sveltekit:navigation",ko={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Cf=location.origin;function t1(t){if(t instanceof URL)return t;let e=document.baseURI;if(!e){const a=document.getElementsByTagName("base");e=a.length?a[0].href:document.URL}return new URL(t,e)}function xo(){return{x:pageXOffset,y:pageYOffset}}function pl(t,e){return t.getAttribute(`data-sveltekit-${e}`)}const i1={...ko,"":ko.hover};function a1(t){let e=t.assignedSlot??t.parentNode;return e?.nodeType===11&&(e=e.host),e}function n1(t,e){for(;t&&t!==e;){if(t.nodeName.toUpperCase()==="A"&&t.hasAttribute("href"))return t;t=a1(t)}}function Mf(t,e,a){let n;try{if(n=new URL(t instanceof SVGAElement?t.href.baseVal:t.href,document.baseURI),a&&n.hash.match(/^#[^/]/)){const l=location.hash.split("#")[1]||"/";n.hash=`#${l}${n.hash}`}}catch{}const s=t instanceof SVGAElement?t.target.baseVal:t.target,r=!n||!!s||qd(n,e,a)||(t.getAttribute("rel")||"").split(/\s+/).includes("external"),o=n?.origin===Cf&&t.hasAttribute("download");return{url:n,external:r,target:s,download:o}}function $d(t){let e=null,a=null,n=null,s=null,r=null,o=null,l=t;for(;l&&l!==document.documentElement;)n===null&&(n=pl(l,"preload-code")),s===null&&(s=pl(l,"preload-data")),e===null&&(e=pl(l,"keepfocus")),a===null&&(a=pl(l,"noscroll")),r===null&&(r=pl(l,"reload")),o===null&&(o=pl(l,"replacestate")),l=a1(l);function u(p){switch(p){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:i1[n??"off"],preload_data:i1[s??"off"],keepfocus:u(e),noscroll:u(a),reload:u(r),replace_state:u(o)}}function s1(t){const e=il(t);let a=!0;function n(){a=!0,e.update(o=>o)}function s(o){a=!1,e.set(o)}function r(o){let l;return e.subscribe(u=>{(l===void 0||a&&u!==l)&&o(l=u)})}return{notify:n,set:s,subscribe:r}}const r1={v:jr};function _6(){const{set:t,subscribe:e}=il(!1);let a;async function n(){clearTimeout(a);try{const s=await fetch(`${p6}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!s.ok)return!1;const o=(await s.json()).version!==g6;return o&&(t(!0),r1.v(),clearTimeout(a)),o}catch{return!1}}return{subscribe:e,check:n}}function qd(t,e,a){return t.origin!==Cf||!t.pathname.startsWith(e)?!0:a?t.pathname!==location.pathname:!1}const o1=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...o1];const v6=new Set([...o1]);[...v6];function b6(t){return t.filter(e=>e!=null)}function Gd(t,e){return t+"/"+e}function Ef(t){return t instanceof Tf||t instanceof qf?t.status:500}function y6(t){return t instanceof qf?t.text:"Internal Error"}let In,rc,zf;const w6=Bs.toString().includes("$$")||/function \w+\(\) \{\}/.test(Bs.toString()),l1="a:";w6?(In={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(l1)},rc={current:null},zf={current:!1}):(In=new class{#e=Pa({});get data(){return i(this.#e)}set data(e){M(this.#e,e)}#t=Pa(null);get form(){return i(this.#t)}set form(e){M(this.#t,e)}#i=Pa(null);get error(){return i(this.#i)}set error(e){M(this.#i,e)}#l=Pa({});get params(){return i(this.#l)}set params(e){M(this.#l,e)}#n=Pa({id:null});get route(){return i(this.#n)}set route(e){M(this.#n,e)}#s=Pa({});get state(){return i(this.#s)}set state(e){M(this.#s,e)}#a=Pa(-1);get status(){return i(this.#a)}set status(e){M(this.#a,e)}#o=Pa(new URL(l1));get url(){return i(this.#o)}set url(e){M(this.#o,e)}},rc=new class{#e=Pa(null);get current(){return i(this.#e)}set current(e){M(this.#e,e)}},zf=new class{#e=Pa(!1);get current(){return i(this.#e)}set current(e){M(this.#e,e)}},r1.v=()=>zf.current=!0);function c1(t){Object.assign(In,t)}const k6=new Set(["icon","shortcut icon","apple-touch-icon"]);let oc=null;const Pr=Y_(Z_)??{},lc=Y_(J_)??{},br={url:s1({}),page:s1({}),navigating:il(null),updated:_6()};function Uf(t){Pr[t]=xo()}function x6(t,e){let a=t+1;for(;Pr[a];)delete Pr[a],a+=1;for(a=e+1;lc[a];)delete lc[a],a+=1}function cc(t,e=!1){return e?location.replace(t.href):location.href=t.href,new Promise(jr)}async function d1(){if("serviceWorker"in navigator){const t=await navigator.serviceWorker.getRegistration(_s||"/");t&&await t.update()}}let Bf,Rf,Fd,yr,jf,ln;const Ad=[],Cd=[];let vs=null;function Md(){vs?.fork?.then(t=>t?.discard()),vs=null,hl={element:void 0,href:void 0}}const Ed=new Map,u1=new Set,S6=new Set,dc=new Set;let ga={branch:[],error:null,url:null},f1=!1,zd=!1,m1=!0,uc=!1,fc=!1,p1=!1,Pf=!1,g1,_n,bs,Nr;const Ud=new Set,h1=new Map,_1=new Map;async function T6(t,e,a){if(globalThis.__sveltekit_1xyyov.data){const{q:r={},p:o={},l={},f:u={}}=globalThis.__sveltekit_1xyyov.data;for(const p in r)r[p];for(const p in l)l[p];for(const p in u)u[p];for(const p in o)o[p]}document.URL!==location.href&&(location.href=location.href),ln=t,await t.hooks.init?.(),Bf=m6(t),yr=document.documentElement,jf=e,Rf=t.nodes[0],Fd=t.nodes[1],Rf(),Fd(),_n=history.state?.[ml],bs=history.state?.[sc],_n||(_n=bs=Date.now(),history.replaceState({...history.state,[ml]:_n,[sc]:bs},""));const n=Pr[_n];function s(){n&&(history.scrollRestoration="manual",scrollTo(n.x,n.y))}a?(s(),await P6(jf,a)):(await gl({type:"enter",url:t1(ln.hash?I6(new URL(location.href)):location.href),replace_state:!0}),s()),j6()}function $6(){Ad.length=0,Pf=!1}function v1(t){Cd.some(e=>e?.snapshot)&&(lc[t]=Cd.map(e=>e?.snapshot?.capture()))}function b1(t){lc[t]?.forEach((e,a)=>{Cd[a]?.snapshot?.restore(e)})}function y1(){Uf(_n),X_(Z_,Pr),v1(bs),X_(J_,lc)}async function q6(t,e,a,n){let s,r;e.invalidateAll&&Md(),await gl({type:"goto",url:t1(t),keepfocus:e.keepFocus,noscroll:e.noScroll,replace_state:e.replaceState,state:e.state,redirect_count:a,nav_token:n,accept:()=>{if(e.invalidateAll){Pf=!0,s=new Set;for(const[o,l]of h1)for(const[u,p]of l)p.resource?.reset(),s.add(Gd(o,u));r=new Set;for(const[o,l]of _1)for(const u of l.keys())r.add(Gd(o,u))}e.invalidate&&e.invalidate.forEach(R6)}}),e.invalidateAll&&Br().then(Br).then(()=>{for(const[o,l]of h1)for(const[u,{resource:p}]of l)s?.has(Gd(o,u))&&p.start();for(const[o,l]of _1)for(const[u,{resource:p}]of l)r?.has(Gd(o,u))&&p.reconnect()})}async function G6(t){if(t.id!==vs?.id){Md();const e={};Ud.add(e),vs={id:t.id,token:e,promise:k1({...t,preload:e}).then(a=>(Ud.delete(e),a.type==="loaded"&&a.state.error&&Md(),a)),fork:null}}return vs.promise}async function Nf(t){const e=(await Rd(t,!1))?.route;e&&await Promise.all([...e.layouts,e.leaf].filter(Boolean).map(a=>a[1]()))}async function w1(t,e,a){const n={params:ga.params,route:{id:ga.route?.id??null},url:new URL(location.href)};if(ga={...t.state,nav:n},c1(t.props.page),g1=new ln.root({target:e,props:{...t.props,stores:br,components:Cd},hydrate:a,sync:!1,transformError:void 0}),await Promise.resolve(),a){const s={from:null,to:{...n,scroll:Pr[_n]??xo()},willUnload:!1,type:"enter",complete:Promise.resolve()};dc.forEach(r=>r(s))}b1(bs),zd=!0}async function Bd({url:t,params:e,branch:a,errors:n,status:s,error:r,route:o,form:l}){let u="never";if(_s&&(t.pathname===_s||t.pathname===_s+"/"))u="always";else for(const d of a)d?.slash!==void 0&&(u=d.slash);t.pathname=Zx(t.pathname,u),t.search=t.search;const p={type:"loaded",state:{url:t,params:e,branch:a,error:r,route:o},props:{constructors:b6(a).map(d=>d.node.component),page:Hf(In)}};l!==void 0&&(p.props.form=l);let g={},h=!In,f=0;for(let d=0;dl(new URL(o))))return!0;return!1}function If(t,e){return t?.type==="data"?t:t?.type==="skip"?e??null:null}function C6(t,e){if(!t)return new Set(e.searchParams.keys());const a=new Set([...t.searchParams.keys(),...e.searchParams.keys()]);for(const n of a){const s=t.searchParams.getAll(n),r=e.searchParams.getAll(n);s.every(o=>r.includes(o))&&r.every(o=>s.includes(o))&&a.delete(n)}return a}function M6({error:t,url:e,route:a,params:n}){return{type:"loaded",state:{error:t,url:e,route:a,params:n,branch:[]},props:{page:Hf(In),constructors:[]}}}async function k1({id:t,invalidating:e,url:a,params:n,route:s,preload:r}){if(vs?.id===t)return Ud.delete(vs.token),vs.promise;const{errors:o,layouts:l,leaf:u}=s,p=[...l,u];o.forEach(_=>_?.().catch(jr)),p.forEach(_=>_?.[1]().catch(jr));const g=ga.url?t!==jd(ga.url):!1,h=ga.route?s.id!==ga.route.id:!1,f=C6(ga.url,a);let m=!1;const d=p.map(async(_,b)=>{if(!_)return;const v=ga.branch[b];return _[1]===v?.loader&&!A6(m,h,g,f,v.universal?.uses,n)?v:(m=!0,Of({loader:_[1],url:a,params:n,route:s,parent:async()=>{const y={};for(let T=0;TPromise.resolve({}),server_data_node:If(r)}),l={node:await Fd(),loader:Fd,universal:null,server:null,data:null};return Bd({url:a,params:s,branch:[o,l],status:t,error:e,errors:[],route:null})}catch(o){if(o instanceof $f){await q6(new URL(o.location,location.href),{},0);return}const l=await ln.get_error_template(),u=await _l(o,{url:a,params:s,route:n}),p=String(u?.message??"").replace(/&/g,"&").replace(//g,">"),g=l({status:t,message:p}),h=new DOMParser().parseFromString(g,"text/html");throw document.documentElement.replaceChild(document.adoptNode(h.head),document.head),document.documentElement.replaceChild(document.adoptNode(h.body),document.body),o}}async function z6(t){const e=t.href;if(Ed.has(e))return Ed.get(e);let a;try{const n=(async()=>{let s=await ln.hooks.reroute({url:new URL(t),fetch:async(r,o)=>F6(r,o,t).promise})??t;if(typeof s=="string"){const r=new URL(t);ln.hash?r.hash=s:r.pathname=s,s=r}return s})();Ed.set(e,n),a=await n}catch{Ed.delete(e);return}return a}async function Rd(t,e){if(t&&!qd(t,_s,ln.hash)){const a=await z6(t);if(!a)return;const n=U6(a);for(const s of Bf){const r=s.exec(n);if(r)return{id:jd(t),invalidating:e,route:s,params:t6(r),url:t}}}}function U6(t){return e6(ln.hash?t.hash.replace(/^#/,"").replace(/[?#].+/,""):t.pathname.slice(_s.length))||"/"}function jd(t){return(ln.hash?t.hash.replace(/^#/,""):t.pathname)+t.search}function x1({url:t,type:e,intent:a,delta:n,event:s,scroll:r}){let o=!1;const l=Vf(ga,a,t,e,r??null);n!==void 0&&(l.navigation.delta=n),s!==void 0&&(l.navigation.event=s);const u={...l.navigation,cancel:()=>{o=!0,l.reject(new Error("navigation cancelled"))}};return uc||u1.forEach(p=>p(u)),o?null:l}async function gl({type:t,url:e,popped:a,keepfocus:n,noscroll:s,replace_state:r,state:o={},redirect_count:l=0,nav_token:u={},accept:p=jr,block:g=jr,event:h}){const f=Nr;Nr=u;const m=await Rd(e,!1),d=t==="enter"?Vf(ga,m,e,t):x1({url:e,type:t,delta:a?.delta,intent:m,scroll:a?.scroll,event:h});if(!d){g(),Nr===u&&(Nr=f);return}const c=_n,_=bs;p(),uc=!0,zd&&d.navigation.type!=="enter"&&br.navigating.set(rc.current=d.navigation);let b=m&&await k1(m);if(!b){if(qd(e,_s,ln.hash))return await cc(e,r);b=await S1(e,{id:null},await _l(new qf(404,"Not Found",`Not found: ${e.pathname}`),{url:e,params:{},route:{id:null}}),404,r)}if(e=m?.url||e,Nr!==u){d.reject(new Error("navigation aborted"));return}if(!b)return;if(b.type==="redirect"){if(l<20){await gl({type:t,url:new URL(b.location,e),popped:a,keepfocus:n,noscroll:s,replace_state:r,state:o,redirect_count:l+1,nav_token:u}),d.fulfil(void 0);return}if(b=await Lf({status:500,error:await _l(new Error("Redirect loop"),{url:e,params:{},route:{id:null}}),url:e,route:{id:null}}),!b)return}else if(b.props.page.status>=400&&await br.updated.check())return await d1(),await cc(e,r);if($6(),Uf(c),v1(_),b.props.page.url.pathname!==e.pathname&&(e.pathname=b.props.page.url.pathname),o=a?a.state:o,!a){const j=r?0:1,$={[ml]:_n+=j,[sc]:bs+=j,[e1]:o};(r?history.replaceState:history.pushState).call(history,$,"",e),r||x6(_n,bs)}const v=m&&vs?.id===m.id?vs.fork:null;vs?.fork&&!v?Md():(vs=null,hl={element:void 0,href:void 0}),b.props.page.state=o;let k;if(zd){const j=(await Promise.all(Array.from(S6,L=>L(d.navigation)))).filter(L=>typeof L=="function");if(j.length>0){let L=function(){j.forEach(x=>{dc.delete(x)})};j.push(L),j.forEach(x=>{dc.add(x)})}const $=d.navigation.to;ga={...b.state,nav:{params:$.params,route:$.route,url:$.url}},b.props.page&&(b.props.page.url=e),!n&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();const P=v&&await v;P?k=P.commit():(oc=null,g1.$set(b.props),oc&&Object.assign(b.props.page,oc),c1(b.props.page),k=cx?.()),p1=!0}else await w1(b,jf,!1);const{activeElement:y}=document;if(await k,await Br(),await Br(),Nr!==u){d.reject(new Error("navigation aborted"));return}b.props.page&&oc&&Object.assign(b.props.page,oc);let T=null;if(m1){const j=a?a.scroll:s?xo():null;j?scrollTo(j.x,j.y):(T=e.hash&&document.getElementById(T1(e)))?T.scrollIntoView():scrollTo(0,0)}const O=document.activeElement!==y&&document.activeElement!==document.body;!n&&!O&&O6(e,!T),m1=!0,uc=!1,d.fulfil(void 0),d.navigation.to&&(d.navigation.to.scroll=xo()),dc.forEach(j=>j(d.navigation)),t==="popstate"&&b1(bs),br.navigating.set(rc.current=null)}async function S1(t,e,a,n,s){return t.origin===Cf&&t.pathname===location.pathname&&!f1?await Lf({status:n,error:a,url:t,route:e}):await cc(t,s)}let hl={element:void 0,href:void 0};function B6(){let t,e;yr.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(t),t=setTimeout(()=>{s(l,ko.hover)},20)});function a(o){o.defaultPrevented||s(o.composedPath()[0],ko.tap)}yr.addEventListener("mousedown",a),yr.addEventListener("touchstart",a,{passive:!0});const n=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(Nf(new URL(l.target.href)),n.unobserve(l.target))},{threshold:0});async function s(o,l){const u=n1(o,yr),p=u===hl.element&&u?.href===hl.href&&l>=e;if(!u||p)return;const{url:g,external:h,download:f}=Mf(u,_s,ln.hash);if(h||f)return;const m=$d(u),d=g&&jd(ga.url)===jd(g);if(!(m.reload||d))if(l<=m.preload_data){hl={element:u,href:u.href},e=ko.tap;const c=await Rd(g,!1);if(!c)return;G6(c)}else l<=m.preload_code&&(hl={element:u,href:u.href},e=l,Nf(g))}function r(){n.disconnect();for(const o of yr.querySelectorAll("a")){const{url:l,external:u,download:p}=Mf(o,_s,ln.hash);if(u||p)continue;const g=$d(o);g.reload||(g.preload_code===ko.viewport&&n.observe(o),g.preload_code===ko.eager&&Nf(l))}}dc.add(r),r()}function _l(t,e){if(t instanceof Tf)return t.body;const a=Ef(t),n=y6(t);return ln.hooks.handleError({error:t,event:e,status:a,message:n})??{message:n}}function R6(t){if(typeof t=="function")Ad.push(t);else{const{href:e}=new URL(t,location.href);Ad.push(a=>a.href===e)}}function j6(){history.scrollRestoration="manual",addEventListener("beforeunload",e=>{let a=!1;if(y1(),!uc){const n=Vf(ga,void 0,null,"leave"),s={...n.navigation,cancel:()=>{a=!0,n.reject(new Error("navigation cancelled"))}};u1.forEach(r=>r(s))}a?(e.preventDefault(),e.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&y1()}),navigator.connection?.saveData||B6(),yr.addEventListener("click",async e=>{if(e.button||e.which!==1||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.defaultPrevented)return;const a=n1(e.composedPath()[0],yr);if(!a)return;const{url:n,external:s,target:r,download:o}=Mf(a,_s,ln.hash);if(!n)return;if(r==="_parent"||r==="_top"){if(window.parent!==window)return}else if(r&&r!=="_self")return;const l=$d(a);if(!(a instanceof SVGAElement)&&n.protocol!==location.protocol&&!(n.protocol==="https:"||n.protocol==="http:")||o)return;const[p,g]=(ln.hash?n.hash.replace(/^#/,""):n.href).split("#"),h=p===Gf(location);if(s||l.reload&&(!h||!g)){x1({url:n,type:"link",event:e})?uc=!0:e.preventDefault();return}if(g!==void 0&&h){const[,f]=ga.url.href.split("#");if(f===g){if(e.preventDefault(),g===""||g==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const m=a.ownerDocument.getElementById(decodeURIComponent(g));m&&(m.scrollIntoView(),m.focus())}return}if(fc=!0,Uf(_n),t(n),!l.replace_state)return;fc=!1}e.preventDefault(),await new Promise(f=>{requestAnimationFrame(()=>{setTimeout(f,0)}),setTimeout(f,100)}),await gl({type:"link",url:n,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??n.href===location.href,event:e})}),yr.addEventListener("submit",e=>{if(e.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||a.target)==="_blank"||(n?.formMethod||a.method)!=="get")return;const o=new URL(n?.hasAttribute("formaction")&&n?.formAction||a.action);if(qd(o,_s,!1))return;const l=e.target,u=$d(l);if(u.reload)return;e.preventDefault(),e.stopPropagation();const p=new FormData(l,n);o.search=new URLSearchParams(p).toString(),gl({type:"form",url:o,keepfocus:u.keepfocus,noscroll:u.noscroll,replace_state:u.replace_state??o.href===location.href,event:e})}),addEventListener("popstate",async e=>{if(!Df){if(e.state?.[ml]){const a=e.state[ml];if(Nr={},a===_n)return;const n=Pr[a],s=e.state[e1]??{},r=new URL(e.state[h6]??location.href),o=e.state[sc],l=ga.url?Gf(location)===Gf(ga.url):!1;if(o===bs&&(p1||l)){s!==In.state&&(In.state=s),t(r),Pr[_n]=xo(),n&&scrollTo(n.x,n.y),_n=a;return}const p=a-_n;await gl({type:"popstate",url:r,popped:{state:s,scroll:n,delta:p},accept:()=>{_n=a,bs=o},block:()=>{history.go(-p)},nav_token:Nr,event:e})}else if(!fc){const a=new URL(location.href);t(a),ln.hash&&location.reload()}}}),addEventListener("hashchange",()=>{fc&&(fc=!1,history.replaceState({...history.state,[ml]:++_n,[sc]:bs},"",location.href))});for(const e of document.querySelectorAll("link"))k6.has(e.rel)&&(e.href=e.href);addEventListener("pageshow",e=>{e.persisted&&br.navigating.set(rc.current=null)});function t(e){ga.url=In.url=e,br.page.set(Hf(In)),br.page.notify()}}async function P6(t,{status:e=200,error:a,node_ids:n,params:s,route:r,server_route:o,data:l,form:u}){f1=!0;const p=new URL(location.href);let g;({params:s={},route:r={id:null}}=await Rd(p,!1)||{}),g=Bf.find(({id:m})=>m===r.id);let h,f=!0;try{const m=n.map(async(c,_)=>{const b=l[_];return b?.uses&&(b.uses=N6(b.uses)),Of({loader:ln.nodes[c],url:p,params:s,route:r,parent:async()=>{const v={};for(let k=0;k<_;k+=1)Object.assign(v,(await m[k]).data);return v},server_data_node:If(b)})}),d=await Promise.all(m);if(g){const c=g.layouts;for(let _=0;_{const l=history.state;Df=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(l,"",t),e&&scrollTo(r,o),Df=!1})}else{const r=document.body,o=r.getAttribute("tabindex");r.tabIndex=-1,r.focus({preventScroll:!0,focusVisible:!1}),o!==null?r.setAttribute("tabindex",o):r.removeAttribute("tabindex")}const s=getSelection();if(s&&s.type!=="None"){const r=[];for(let o=0;o{if(s.rangeCount===r.length){for(let o=0;o{r=p,o=g});return l.catch(jr),{navigation:{from:{params:t.params,route:{id:t.route?.id??null},url:t.url,scroll:xo()},to:a&&{params:e?.params??null,route:{id:e?.route?.id??null},url:a,scroll:s},willUnload:!e,type:n,complete:l},fulfil:r,reject:o}}function Hf(t){return{data:t.data,error:t.error,form:t.form,params:t.params,route:t.route,state:t.state,status:t.status,url:t.url}}function I6(t){const e=new URL(t);return e.hash=decodeURIComponent(t.hash),e}function T1(t){let e;if(ln.hash){const[,,a]=t.hash.split("#",3);e=a??""}else e=t.hash.slice(1);return decodeURIComponent(e)}const RE="modulepreload",jE=function(t,e){return new URL(t,e).href},PE={},mc=function(e,a,n){let s=Promise.resolve();function r(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return s.then(o=>{for(const l of o||[])l.status==="rejected"&&r(l.reason);return e().catch(r)})},L6={},D6="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(D6);var V6=ue('
'),H6=ue(" ",1);function W6(t,e){Wa(e,!0);let a=$e(e,"components",23,()=>[]),n=$e(e,"data_0",3,null),s=$e(e,"data_1",3,null);p_(()=>e.stores.page.set(e.page)),_d(()=>{e.stores,e.page,e.constructors,a(),e.form,n(),s(),e.stores.page.notify()});let r=Pa(!1),o=Pa(!1),l=Pa(null);Bs(()=>{const c=e.stores.page.subscribe(()=>{i(r)&&(M(o,!0),Br().then(()=>{M(l,document.title||"untitled page",!0)}))});return M(r,!0),c});const u=wi(()=>e.constructors[1]);var p=H6(),g=At(p);{var h=c=>{const _=wi(()=>e.constructors[0]);var b=Us(),v=At(b);xd(v,()=>i(_),(k,y)=>{Ga(y(k,{get data(){return n()},get form(){return e.form},get params(){return e.page.params},children:(T,O)=>{var j=Us(),$=At(j);xd($,()=>i(u),(P,L)=>{Ga(L(P,{get data(){return s()},get form(){return e.form},get params(){return e.page.params}}),x=>a()[1]=x,()=>a()?.[1])}),te(T,j)},$$slots:{default:!0}}),T=>a()[0]=T,()=>a()?.[0])}),te(c,b)},f=c=>{const _=wi(()=>e.constructors[0]);var b=Us(),v=At(b);xd(v,()=>i(_),(k,y)=>{Ga(y(k,{get data(){return n()},get form(){return e.form},get params(){return e.page.params}}),T=>a()[0]=T,()=>a()?.[0])}),te(c,b)};qe(g,c=>{e.constructors[1]?c(h):c(f,-1)})}var m=R(g,2);{var d=c=>{var _=V6(),b=E(_);{var v=k=>{var y=E_();ce(()=>X(y,i(l))),te(k,y)};qe(b,k=>{i(o)&&k(v)})}F(_),te(c,_)};qe(m,c=>{i(r)&&c(d)})}te(t,p),Qa()}const Q6=Yx(W6),K6=[()=>mc(()=>Promise.resolve().then(()=>t4),void 0,Cn&&Cn.tagName.toUpperCase()==="SCRIPT"&&Cn.src||new URL("_app/immutable/bundle.IWE2S6TM.js",document.baseURI).href),()=>mc(()=>Promise.resolve().then(()=>s4),void 0,Cn&&Cn.tagName.toUpperCase()==="SCRIPT"&&Cn.src||new URL("_app/immutable/bundle.IWE2S6TM.js",document.baseURI).href),()=>mc(()=>Promise.resolve().then(()=>EC),void 0,Cn&&Cn.tagName.toUpperCase()==="SCRIPT"&&Cn.src||new URL("_app/immutable/bundle.IWE2S6TM.js",document.baseURI).href)],Y6=[],X6={"/":[2]},Wf={handleError:(({error:t})=>{console.error(t)}),reroute:(()=>{}),transport:{}},$1=Object.fromEntries(Object.entries(Wf.transport).map(([t,e])=>[t,e.decode])),J6=Object.fromEntries(Object.entries(Wf.transport).map(([t,e])=>[t,e.encode])),q1=Object.freeze(Object.defineProperty({__proto__:null,decode:(t,e)=>$1[t](e),decoders:$1,dictionary:X6,encoders:J6,get_error_template:()=>mc(()=>Promise.resolve().then(()=>zC),void 0,Cn&&Cn.tagName.toUpperCase()==="SCRIPT"&&Cn.src||new URL("_app/immutable/bundle.IWE2S6TM.js",document.baseURI).href).then(t=>t.default),hash:!0,hooks:Wf,matchers:L6,nodes:K6,root:Q6,server_loads:Y6},Symbol.toStringTag,{value:"Module"}));function Z6(t,e){T6(q1,t,e)}function e4(t,e){var a=Us(),n=At(a);R_(n,()=>e.children),te(t,a)}const t4=Object.freeze(Object.defineProperty({__proto__:null,component:e4},Symbol.toStringTag,{value:"Module"})),i4={get error(){return In.error},get status(){return In.status}};br.updated.check;const G1=i4;var a4=ue("

",1);function n4(t,e){Wa(e,!0);var a=a4(),n=At(a),s=E(n,!0);F(n);var r=R(n,2),o=E(r,!0);F(r),ce(()=>{X(s,G1.status),X(o,G1.error?.message)}),te(t,a),Qa()}const s4=Object.freeze(Object.defineProperty({__proto__:null,component:n4},Symbol.toStringTag,{value:"Module"}));z3();const So={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const Qf=(...t)=>t.filter((e,a,n)=>!!e&&e.trim()!==""&&n.indexOf(e)===a).join(" ").trim();function Kf(t){return t!=null}function r4(t,e={}){const a=e.attributeNames??{},n=f=>a[f]??f,s=t.size??t.width??So.width,r=t.size??t.height??So.height,o=t.aliases?.filter(f=>typeof f=="string"&&f.trim()!=="").map(f=>`lucide-${f}`)??[],l=[...t.name?[`lucide-${t.name}`]:[],...o],u=e.className?.split(" ").filter(Boolean)??[],p=e.includeDefaultClasses===!1?Qf(...u):Qf("lucide",...l,...u),g=e.absoluteStrokeWidth?Number(e.strokeWidth??So["stroke-width"])*Number(t.size??t.width??So.width)/Number(e.size??e.width??So.width):e.strokeWidth??So["stroke-width"];return["svg",{...Object.entries(So).reduce((f,[m,d])=>(f[n(m)]=d,f),{}),..."color"in e&&e.color&&{[n("stroke")]:e.color},..."size"in e&&Kf(e.size)&&{[n("width")]:e.size,[n("height")]:e.size},..."width"in e&&Kf(e.width)&&{[n("width")]:e.width},..."height"in e&&Kf(e.height)&&{[n("height")]:e.height},[n("stroke-width")]:g,...p&&{[n("class")]:p},[n("viewBox")]:`0 0 ${s} ${r}`,...e.hasA11yProp===!1?{[n("aria-hidden")]:"true"}:{},..."attributes"in e&&e.attributes},t.node.map(f=>{const[m,d,c]=f,_=e.nonScalingStroke?{[n("vector-effect")]:"non-scaling-stroke",...d}:d;return c?[m,_,c]:[m,_]})]}const o4=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1};const l4=Symbol("lucide-context"),c4=()=>U3(l4);var d4=new Set(["$$slots","$$events","$$legacy","color","size","width","height","strokeWidth","absoluteStrokeWidth","nonScalingStroke","iconNode","icon","class","children"]),u4=Sx("");function ha(t,e){Wa(e,!0);const a=c4()??{},n=$e(e,"color",19,()=>a.color??"currentColor"),s=$e(e,"size",19,()=>a.size??24),r=$e(e,"width",19,s),o=$e(e,"height",19,s),l=$e(e,"strokeWidth",19,()=>a.strokeWidth??2),u=$e(e,"absoluteStrokeWidth",19,()=>a.absoluteStrokeWidth??!1),p=$e(e,"nonScalingStroke",19,()=>a.nonScalingStroke??!1),g=$e(e,"iconNode",19,()=>[]),h=$e(e,"icon",19,()=>({node:g(),aliases:[],size:24})),f=ca(e,d4),m=wi(()=>!!e.children||o4(f)),d=wi(()=>r4(h(),{color:n(),width:r(),height:o(),strokeWidth:l(),absoluteStrokeWidth:u(),nonScalingStroke:p(),className:Qf("lucide-icon",a.class),hasA11yProp:i(m),attributes:f})),c=wi(()=>Ru(i(d),3)),_=wi(()=>i(c)[1]),b=wi(()=>i3(i(c)[2],()=>[],!0)),v=wi(()=>({...i(_),class:[...i(_).class.split(" "),e.class]}));var k=u4();D_(k,()=>({...i(v)}));var y=E(k);jt(y,17,()=>i(b),ei,(O,j)=>{var $=wi(()=>Ru(i(j),2));let P=()=>i($)[0],L=()=>i($)[1];var x=Us(),B=At(x);Ex(B,P,!0,(D,A)=>{D_(D,()=>({...L()}))}),te(O,x)});var T=R(y);R_(T,()=>e.children??Mr),F(k),te(t,k),Qa()}var f4=new Set(["$$slots","$$events","$$legacy"]);function m4(t,e){let a=ca(e,f4);const n={name:"arrow-down",size:24,node:[["path",{d:"M12 5v14"}],["path",{d:"m19 12-7 7-7-7"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var p4=new Set(["$$slots","$$events","$$legacy"]);function g4(t,e){let a=ca(e,p4);const n={name:"arrow-up",size:24,node:[["path",{d:"m5 12 7-7 7 7"}],["path",{d:"M12 19V5"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var h4=new Set(["$$slots","$$events","$$legacy"]);function _4(t,e){let a=ca(e,h4);const n={name:"audio-lines",size:24,node:[["path",{d:"M2 10v3"}],["path",{d:"M6 6v11"}],["path",{d:"M10 3v18"}],["path",{d:"M14 8v7"}],["path",{d:"M18 5v13"}],["path",{d:"M22 10v3"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var v4=new Set(["$$slots","$$events","$$legacy"]);function b4(t,e){let a=ca(e,v4);const n={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var y4=new Set(["$$slots","$$events","$$legacy"]);function w4(t,e){let a=ca(e,y4);const n={name:"code",size:24,node:[["path",{d:"m16 18 6-6-6-6"}],["path",{d:"m8 6-6 6 6 6"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var k4=new Set(["$$slots","$$events","$$legacy"]);function x4(t,e){let a=ca(e,k4);const n={name:"download",size:24,node:[["path",{d:"M12 15V3"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["path",{d:"m7 10 5 5 5-5"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var S4=new Set(["$$slots","$$events","$$legacy"]);function T4(t,e){let a=ca(e,S4);const n={name:"file-headphone",size:24,node:[["path",{d:"M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0"}]],aliases:["file-audio","file-audio-2"]};ha(t,pa(()=>a,{get icon(){return n}}))}var $4=new Set(["$$slots","$$events","$$legacy"]);function Yf(t,e){let a=ca(e,$4);const n={name:"file-text",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M10 9H8"}],["path",{d:"M16 13H8"}],["path",{d:"M16 17H8"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var q4=new Set(["$$slots","$$events","$$legacy"]);function Xf(t,e){let a=ca(e,q4);const n={name:"folder-open",size:24,node:[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var G4=new Set(["$$slots","$$events","$$legacy"]);function F4(t,e){let a=ca(e,G4);const n={name:"layers",size:24,node:[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"}]],aliases:["layers-3"]};ha(t,pa(()=>a,{get icon(){return n}}))}var A4=new Set(["$$slots","$$events","$$legacy"]);function Pd(t,e){let a=ca(e,A4);const n={name:"message-square",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var C4=new Set(["$$slots","$$events","$$legacy"]);function Jf(t,e){let a=ca(e,C4);const n={name:"mic",size:24,node:[["path",{d:"M12 19v3"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2"}],["rect",{x:"9",y:"2",width:"6",height:"13",rx:"3"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var M4=new Set(["$$slots","$$events","$$legacy"]);function E4(t,e){let a=ca(e,M4);const n={name:"play",size:24,node:[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var z4=new Set(["$$slots","$$events","$$legacy"]);function F1(t,e){let a=ca(e,z4);const n={name:"plus",size:24,node:[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var U4=new Set(["$$slots","$$events","$$legacy"]);function B4(t,e){let a=ca(e,U4);const n={name:"save",size:24,node:[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var R4=new Set(["$$slots","$$events","$$legacy"]);function j4(t,e){let a=ca(e,R4);const n={name:"search",size:24,node:[["path",{d:"m21 21-4.34-4.34"}],["circle",{cx:"11",cy:"11",r:"8"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var P4=new Set(["$$slots","$$events","$$legacy"]);function N4(t,e){let a=ca(e,P4);const n={name:"sliders-horizontal",size:24,node:[["path",{d:"M10 5H3"}],["path",{d:"M12 19H3"}],["path",{d:"M14 3v4"}],["path",{d:"M16 17v4"}],["path",{d:"M21 12h-9"}],["path",{d:"M21 19h-5"}],["path",{d:"M21 5h-7"}],["path",{d:"M8 10v4"}],["path",{d:"M8 12H3"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var O4=new Set(["$$slots","$$events","$$legacy"]);function A1(t,e){let a=ca(e,O4);const n={name:"square",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var I4=new Set(["$$slots","$$events","$$legacy"]);function Nd(t,e){let a=ca(e,I4);const n={name:"trash",size:24,node:[["path",{d:"M10 11v6"}],["path",{d:"M14 11v6"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}],["path",{d:"M3 6h18"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}]],aliases:["trash-2"]};ha(t,pa(()=>a,{get icon(){return n}}))}var L4=new Set(["$$slots","$$events","$$legacy"]);function C1(t,e){let a=ca(e,L4);const n={name:"upload",size:24,node:[["path",{d:"M12 3v12"}],["path",{d:"m17 8-5-5-5 5"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var D4=new Set(["$$slots","$$events","$$legacy"]);function Zf(t,e){let a=ca(e,D4);const n={name:"user",size:24,node:[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"}],["circle",{cx:"12",cy:"7",r:"4"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var V4=new Set(["$$slots","$$events","$$legacy"]);function pc(t,e){let a=ca(e,V4);const n={name:"users",size:24,node:[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87"}],["circle",{cx:"9",cy:"7",r:"4"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var H4=new Set(["$$slots","$$events","$$legacy"]);function W4(t,e){let a=ca(e,H4);const n={name:"video",size:24,node:[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}var Q4=new Set(["$$slots","$$events","$$legacy"]);function K4(t,e){let a=ca(e,Q4);const n={name:"x",size:24,node:[["path",{d:"M18 6 6 18"}],["path",{d:"m6 6 12 12"}]]};ha(t,pa(()=>a,{get icon(){return n}}))}function Od(t,e,a){for(let n=0;nt.getChannelData(u));let o=44;for(let l=0;le.decodeAudioData(await u.arrayBuffer()))),n=a[0].sampleRate,s=a[0].numberOfChannels;for(const u of a)if(u.sampleRate!==n||u.numberOfChannels!==s)throw new Error("Generated chunks use different audio formats and cannot be joined.");const r=a.reduce((u,p)=>u+p.length,0),o=e.createBuffer(s,r,n);let l=0;for(const u of a){for(let p=0;pe.startsWith("data:")).map(e=>e.slice(e.startsWith("data: ")?6:5)).join(` -`)}async function*t5(t,e){const a=await fetch(tm("/v1/tasks/stream"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...t,stream_format:"sse"}),signal:e});if(!a.ok)throw await im(a);if(!a.body)throw new Error("This browser cannot read a streamed response.");const n=a.body.getReader(),s=new TextDecoder;let r=[],o=!1,l=!1,u=!1,p=!1;try{for(;!p;){let g;try{g=await n.read()}catch(d){if(d?.name==="AbortError")throw d;break}p=g.done;const h=g.done?s.decode():s.decode(g.value,{stream:!0});if(!h||u)continue;const m=[];let f=0;if(o&&h.startsWith(` -`)){const d=r.join("");m.push(d.slice(0,-1)),r=[],f=1}for(let d=h.indexOf(` +`)}async function*c5(t,e){const a=await fetch(tm("/v1/tasks/stream"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...t,stream_format:"sse"}),signal:e});if(!a.ok)throw await im(a);if(!a.body)throw new Error("This browser cannot read a streamed response.");const n=a.body.getReader(),s=new TextDecoder;let r=[],o=!1,l=!1,u=!1,p=!1;try{for(;!p;){let g;try{g=await n.read()}catch(d){if(d?.name==="AbortError")throw d;break}p=g.done;const h=g.done?s.decode():s.decode(g.value,{stream:!0});if(!h||u)continue;const f=[];let m=0;if(o&&h.startsWith(` +`)){const d=r.join("");f.push(d.slice(0,-1)),r=[],m=1}for(let d=h.indexOf(` -`,f);d>=0;d=h.indexOf(` +`,m);d>=0;d=h.indexOf(` -`,f))r.push(h.slice(f,d)),m.push(r.join("")),r=[],f=d+2;if(f{})}if(!l)throw new M1}function rm(t){const e=atob(t),a=new Uint8Array(e.length);for(let n=0;n=1 disable nucleus filtering."},{name:"repetition_penalty",type:"float",default:1,required:!1,description:"Token repetition penalty. Must be positive."},{name:"seed",type:"int",default:42,required:!1,description:"Sampling seed. Parsed as a signed integer and converted to uint32."}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",default:"native",required:!1,description:"Weight storage type; native preserves the packaged tensor types."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Audio-Flamingo-GGUF",revision:"main",gated:!1}},packages:[{id:"audio_flamingo_next_q4_k",display_name:"Audio Flamingo Next GGUF Q4_K",default:!0,format:"gguf",precision:"q4_k",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-next-q4_k.gguf"]},{id:"audio_flamingo_next_q8_0",display_name:"Audio Flamingo Next GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-next-q8_0.gguf"]},{id:"audio_flamingo_next_bf16",display_name:"Audio Flamingo Next GGUF BF16",format:"gguf",precision:"bf16",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-next-bf16.gguf"]},{id:"audio_flamingo_3_q4_k",display_name:"Audio Flamingo 3 GGUF Q4_K",format:"gguf",precision:"q4_k",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-3-q4_k.gguf"]},{id:"audio_flamingo_3_q8_0",display_name:"Audio Flamingo 3 GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-3-q8_0.gguf"]},{id:"audio_flamingo_3_bf16",display_name:"Audio Flamingo 3 GGUF BF16",format:"gguf",precision:"bf16",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-3-bf16.gguf"]}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/audio_flamingo.md"],recommended_package:"audio_flamingo_next_q4_k"},sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",chat_template:"model:chat_template.jinja"},tensors:{weights:{source:"model:model.safetensors"}}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",chat_template:"model:chat_template.jinja"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},l5={schema_version:1,family:"audiosr",display_name:"AudioSR",description:"AudioSR performs latent-diffusion audio super-resolution from an input waveform.",category:"audio_tools",status:"experimental",tasks:["s2s"],modes:["offline"],languages:["auto"],runtime:{tags:["gguf","cuda"]},capabilities:{s2s:["audio_enhancement"]},options:{request:[{name:"num_inference_steps",type:"int",description:"DDIM inference steps. The uniform DDIM schedule must produce exactly this many timesteps; not every count is valid (e.g. 51 fails with 1000 diffusion timesteps).",required:!1,min:1,max:1e3,default:50},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale. Any finite value is accepted.",required:!1,default:3.5},{name:"ddim_eta",type:"float",description:"DDIM eta; 1.0 matches the official AudioSR default. Must be nonnegative; there is no runtime upper bound.",required:!1,min:0,default:1},{name:"audio_chunk_duration_sec",type:"float",description:"Long-audio chunk duration.",required:!1,min:.001,default:15},{name:"audio_chunk_overlap_sec",type:"float",description:"Long-audio chunk overlap; must be smaller than audio_chunk_duration_sec, including after rounding to samples.",required:!1,min:0,default:2},{name:"seed",type:"int",description:"Generation seed; omitted or negative values use the fixed seed 42, not a random seed. Zero is a fixed seed.",required:!1,max:2147483647,default:42}],session:[{name:"weight_type",type:"enum",description:"AudioSR weight storage type.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"audiosr_basic_f32",display_name:"AudioSR Basic F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"AudioSR-GGUF",files:["AudioSR-GGUF/audiosr-basic-f32.gguf"],strip_prefix:"AudioSR-GGUF"}],dependencies:[],ui:{recommended_package:"audiosr_basic_f32",tags:["GGUF"],docs:["docs/models/audiosr.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{weights:{source:"weights:"},frontend:{source:"weights:",prefix:"frontend"}}}]},c5={schema_version:1,family:"auk",display_name:"AuK",description:"Tencent AuK base and AuK-Flash speech generation and editing models.",category:"tts",status:"experimental",tasks:["tts","clone","edit"],modes:["offline"],languages:["auto"],runtime:{tags:["cuda","gguf"]},ui:{recommended_package:"auk_base_f32",tags:["TTS","Edit"],docs:["docs/models/auk.md"]},capabilities:{tts:["speaker_reference"],clone:["speaker_reference"],edit:["prompt_editing"]},options:{request:[{name:"instruct",type:"string",description:"TTS voice description. Without it, text carries the complete upstream instruction; editing instructions always go in text.",required:!1},{name:"duration_sec",type:"float",description:"Positive output duration in seconds. Required without reference audio; otherwise defaults to the valid reference duration.",required:!1},{name:"num_inference_steps",type:"int",description:"Euler sampling steps for AuK base; AuK-Flash always uses its fixed four-step schedule.",required:!1,min:1,default:32},{name:"guidance_scale",type:"float",description:"Batched guidance strength for AuK base; AuK-Flash always disables classifier-free guidance.",required:!1,default:2},{name:"sway_sampling_coef",type:"float",description:"Sway coefficient for AuK base; ignored by AuK-Flash.",required:!1,default:-1},{name:"seed",type:"int",description:"Nonnegative noise seed, or -1 for a random seed.",required:!1,min:-1,default:-1}],session:[{name:"variant",type:"enum",values:["base","flash"],description:"AuK generation schedule; select flash with an AuK-Flash component.",required:!1,default:"base"},{name:"model_gguf",type:"string",description:"AuK base or Flash generator GGUF relative to the model root; defaults to the selected variant's F32 file.",required:!1},{name:"qwen_gguf",type:"string",description:"Qwen2.5-Omni-3B conditioning GGUF relative to the model root.",required:!1,default:"qwen2.5-omni-3b-bf16.gguf"},{name:"vae_gguf",type:"string",description:"AuK VAE GGUF relative to the model root.",required:!1,default:"auk-vae-f32.gguf"},{name:"attention",type:"enum",values:["auto","flash","eager"],description:"Flow-model attention mode.",required:!1,default:"auto"},{name:"mem_saver",type:"bool",description:"Release Qwen conditioning and generation weights between stages to reduce peak VRAM.",required:!1,default:!1}],load:[]},dependencies:[],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/AuK-Base-and-Flash-GGUF",revision:"main",gated:!1}},packages:[{id:"auk_base_f32",display_name:"AuK Base F32",default:!0,format:"gguf",precision:"f32",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-base-f32.gguf"]},{id:"auk_base_f16",display_name:"AuK Base F16",format:"gguf",precision:"f16",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-base-f16.gguf"]},{id:"auk_base_q8_0",display_name:"AuK Base Q8_0",format:"gguf",precision:"q8_0",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-base-q8_0.gguf"]},{id:"auk_flash_f32",display_name:"AuK-Flash F32",format:"gguf",precision:"f32",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-flash-f32.gguf"]},{id:"auk_flash_f16",display_name:"AuK-Flash F16",format:"gguf",precision:"f16",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-flash-f16.gguf"]},{id:"auk_flash_q8_0",display_name:"AuK-Flash Q8_0",format:"gguf",precision:"q8_0",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-flash-q8_0.gguf"]},{id:"auk_qwen_bf16",display_name:"AuK Qwen BF16",format:"gguf",precision:"bf16",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","qwen2.5-omni-3b-bf16.gguf"]},{id:"auk_qwen_q8_0",display_name:"AuK Qwen Q8_0",format:"gguf",precision:"q8_0",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","qwen2.5-omni-3b-q8_0.gguf"]},{id:"auk_vae_f32",display_name:"AuK VAE F32",format:"gguf",precision:"f32",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-vae-f32.gguf"]}],sources:[{format:"gguf",roots:{model:"."},files:{base_config:"model:config/auk-base.yaml",flash_config:"model:config/auk-flash.yaml",tokenizer_json:"model:tokenizer/tokenizer.json",tokenizer_config:"model:tokenizer/tokenizer_config.json"}}]},d5={schema_version:1,family:"breeze_tts",display_name:"BreezeTTS 2",description:"BreezeTTS 2 native GGUF package for instruction-conditioned text-to-speech and prompt-audio voice cloning with T5Gemma text conditioning, Qwen-style acoustic code generation, depth codebook decoding, and Mimi waveform decoding.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["zh","en"],runtime:{tags:["gguf"]},dependencies:[],capabilities:{design:["voice_design"],tts:["style_control"],clone:["speaker_reference"]},options:{request:[{name:"instruct",type:"string",description:"BreezeTTS generation instruction.",required:!1,default:"Speak clearly and naturally."},{name:"reference_text",type:"string",description:"Transcript for prompt/reference audio; required when reference audio codes are used, for either tts or clon.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 600.",required:!1,min:1,default:600},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"max_tokens",type:"int",description:"Maximum generated BreezeTTS acoustic frames.",required:!1,min:1,default:1500},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale.",required:!1,min:0,default:1},{name:"temperature",type:"float",description:"Backbone first-codebook sampling temperature. Must be > 0.",required:!1,min:0,default:.9},{name:"depth_temperature",type:"float",description:"Depth decoder codebook sampling temperature. Must be > 0.",required:!1,min:0,default:.9},{name:"top_k",type:"int",description:"Top-k sampling limit; 0 disables top-k filtering. Nonpositive values disable top-k filtering.",required:!1,default:50},{name:"top_p",type:"float",description:"Positive nucleus sampling cutoff; values >=1 disable nucleus filtering.",required:!1,min:0,default:1},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,default:0},{name:"stream_frames_per_event",type:"int",description:"Maximum generated codec frames per streaming audio event; fixed size with stream_chunk_policy=fixed.",required:!1,min:1,default:16},{name:"stream_lookahead_margin",type:"int",description:"Additional trailing codec frames buffered before streaming emission. The decoder is causal; zero minimizes latency.",required:!1,min:0,default:0},{name:"stream_chunk_policy",type:"enum",description:"Streaming chunk schedule: grow emits 1, 2, 4, ... frames up to stream_frames_per_event; fixed uses that size from the first event.",values:["grow","fixed"],required:!1,default:"grow"}],session:[{name:"weight_type",type:"enum",description:"BreezeTTS matmul weight storage type; default native.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"]},{name:"graph_arena_mb",type:"int",description:"Reusable runtime graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 4.",required:!1,min:1,default:4},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse.",required:!1,min:0,default:1},{name:"attention",type:"enum",description:"Attention lowering; auto probes the backend and falls back to eager on GPUs without a flash kernel (e.g. sm70); default auto.",required:!1,values:["auto","flash","eager"],default:"auto"},{name:"bf16_activations",type:"enum",description:"Reference bf16 activation rounding as the official BreezeTTS 2 inference does it. auto = on for CUDA/HIP/Vulkan and off on Metal, where the cast cost is visible even with the fused round-to-bf16 op (~20% slower AR loop); on/off force it either way. On Metal, on also switches the KV cache to bf16 to match the reference implementation.",required:!1,values:["auto","on","off"],default:"auto"}],load:[]},packages:[{id:"breeze_tts_2_q4_0",display_name:"BreezeTTS 2 Q4_0 GGUF",default:!1,format:"gguf",precision:"q4_0",target_directory:"Breeze-TTS-2-GGUF",files:["Breeze-TTS-2-GGUF/breeze-tts-2-q4_0.gguf"],strip_prefix:"Breeze-TTS-2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"breeze_tts_2_q8_0",display_name:"BreezeTTS 2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Breeze-TTS-2-GGUF",files:["Breeze-TTS-2-GGUF/breeze-tts-2-q8_0.gguf"],strip_prefix:"Breeze-TTS-2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"breeze_tts_2_bf16",display_name:"BreezeTTS 2 BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"Breeze-TTS-2-GGUF",files:["Breeze-TTS-2-GGUF/breeze-tts-2-bf16.gguf"],strip_prefix:"Breeze-TTS-2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}}],ui:{recommended_package:"breeze_tts_2_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config_json:"model:config.json",audio_tokenizer_config_json:"model:audio_tokenizer/config.json",tokenizer_config_json:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model"}}}]},u5={schema_version:1,family:"bs_roformer",display_name:"BS-RoFormer",description:"Band-Split RoFormer music source-separation model that estimates vocals from explicit non-overlapping frequency bands and derives accompaniment from the input mixture.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"RoFormer weight storage type. Defaults to f32 when the backend requires a host graph plan, otherwise native.",preset:"weight_type_full",required:!1},{name:"num_overlap",type:"int",description:"Number of overlapping inference windows; defaults to the package configuration. Lower values improve throughput but can reduce boundary quality.",required:!1,min:1}],load:[]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"bs_roformer_q8_0",display_name:"BS-RoFormer ep368 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"BS-RoFormer-ep368-GGUF",files:["BS-RoFormer-ep368-GGUF/bs-roformer-ep368-q8_0.gguf"],strip_prefix:"BS-RoFormer-ep368-GGUF"}],dependencies:[],ui:{recommended_package:"bs_roformer_q8_0",tags:["Sep","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md","tests/bs_roformer/README.md"]}},f5={schema_version:1,family:"builtin_audio_utils",display_name:"Built-in Audio Utilities",description:"Built-in denoise, enhancement, and audio super-resolution utilities with separately downloaded weights.",category:"audio_tools",status:"experimental",tasks:["s2s"],modes:["offline"],languages:["auto"],runtime:{tags:["cpu","cuda"]},capabilities:{s2s:["audio_enhancement"]},options:{request:[],session:[],load:[{name:"utility",type:"enum",values:["deepfilternet2","rnnoise","zipenhancer","gtcrn","gtcrn_streaming","gtcrn_dns3","gtcrn_vctk","flashsr"],required:!0,description:"Utility implementation to load from the model path."}]},packages:[],dependencies:[],ui:{tags:[],docs:["docs/audio_tools.md"]},sources:[]},m5={family:"canary_asr",schema_version:1,display_name:"Canary 180M Flash",description:"NVIDIA Canary multilingual speech recognition and speech translation.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en","de","es","fr"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Input audio language.",required:!1,default:"en"},{name:"target_language",type:"string",description:"Output language: en, de, es, or fr. Defaults to the input language for transcription.",required:!1},{name:"punc",type:"bool",description:"Generate punctuation and capitalization.",required:!1,default:!0},{name:"max_tokens",type:"int",description:"Maximum generated tokens per chunk; zero uses the reference encoder-length-based limit.",required:!1,min:0,max:1015,default:0},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio chunk in seconds.",required:!1,min:.02,max:40,default:40}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage type.",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"],required:!1,default:"native"}],load:[]},runtime:{tags:["gguf","cpu","cuda"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/canary_asr.md"],recommended_package:"canary_180m_flash_f32"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"canary_180m_flash_f32",display_name:"Canary 180M Flash GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"Canary-180M-Flash-GGUF",files:["Canary-180M-Flash-GGUF/canary-180m-flash-f32.gguf"],strip_prefix:"Canary-180M-Flash-GGUF"},{id:"canary_180m_flash_q8_0",display_name:"Canary 180M Flash GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Canary-180M-Flash-GGUF",files:["Canary-180M-Flash-GGUF/canary-180m-flash-q8_0.gguf"],strip_prefix:"Canary-180M-Flash-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_spl_tokens:"model:tokenizer_spl_tokens.model",tokenizer_en:"model:tokenizer_en.model",tokenizer_de:"model:tokenizer_de.model",tokenizer_es:"model:tokenizer_es.model",tokenizer_fr:"model:tokenizer_fr.model"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_spl_tokens:"model:tokenizer_spl_tokens.model",tokenizer_en:"model:tokenizer_en.model",tokenizer_de:"model:tokenizer_de.model",tokenizer_es:"model:tokenizer_es.model",tokenizer_fr:"model:tokenizer_fr.model"},tensors:{weights:"weights:"}}]},p5={schema_version:1,family:"ced",display_name:"CED Audio Tagging",description:"Consistent Ensemble Distillation ViT audio classifiers for 527 AudioSet sound categories.",category:"speech_analysis",status:"supported",tasks:["classify"],modes:["offline"],languages:["language_agnostic"],capabilities:{classify:["scores"]},runtime:{tags:["gguf"]},options:{request:[{name:"top_k",type:"int",description:"Number of highest-scoring AudioSet categories returned.",required:!1,default:10,min:1,max:527}],session:[{name:"attention",type:"enum",description:"Attention implementation; auto selects a supported fast path.",required:!1,default:"auto",values:["auto","flash","eager"]},{name:"weight_type",type:"enum",description:"Weight storage override; native preserves packaged tensor types.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"]}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"ced_tiny_f32",display_name:"CED Tiny F32 GGUF",format:"gguf",precision:"f32",default:!0,target_directory:"CED-GGUF",files:["CED-GGUF/ced-tiny-f32.gguf"],strip_prefix:"CED-GGUF"},{id:"ced_mini_f32",display_name:"CED Mini F32 GGUF",format:"gguf",precision:"f32",target_directory:"CED-GGUF",files:["CED-GGUF/ced-mini-f32.gguf"],strip_prefix:"CED-GGUF"},{id:"ced_small_f32",display_name:"CED Small F32 GGUF",format:"gguf",precision:"f32",target_directory:"CED-GGUF",files:["CED-GGUF/ced-small-f32.gguf"],strip_prefix:"CED-GGUF"},{id:"ced_base_f32",display_name:"CED Base F32 GGUF",format:"gguf",precision:"f32",target_directory:"CED-GGUF",files:["CED-GGUF/ced-base-f32.gguf"],strip_prefix:"CED-GGUF"}],dependencies:[],ui:{recommended_package:"ced_tiny_f32",tags:["Classify","GGUF"],docs:["docs/models/ced.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:preprocessor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:preprocessor_config.json"},tensors:{weights:"model:model.safetensors"}}]},g5={family:"chatterbox",display_name:"Chatterbox",description:"Open-source Chatterbox family for expressive TTS and voice conversion, with emotion exaggeration control, fast generation, zero-shot voice cloning, and an integrated multilingual TTS path.",category:"tts",status:"supported",tasks:["tts","clone","vc"],modes:["offline"],languages:["ar","da","de","el","en","es","fi","fr","hi","it","ko","ms","nl","no","pl","pt","sv","sw","tr"],options:{request:[{name:"exaggeration",type:"float",description:"Emotion exaggeration. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.5},{name:"guidance_scale",type:"float",description:"T3 classifier-free guidance scale. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.5},{name:"temperature",type:"float",description:"T3 sampling temperature. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.8},{name:"repetition_penalty",type:"float",description:"T3 repetition penalty. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:1.2},{name:"min_p",type:"float",description:"Minimum sampling probability. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.05},{name:"top_p",type:"float",description:"Nucleus sampling probability. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:1},{name:"flow_guidance_scale",type:"float",description:"S3Gen flow guidance scale. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.7},{name:"max_tokens",type:"int",description:"Maximum generated speech tokens. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,min:1,default:384},{name:"do_sample",type:"bool",description:"Enable sampling. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:!0},{name:"stop_on_eos",type:"bool",description:"Stop token generation on EOS. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:!0},{name:"num_inference_steps",type:"int",description:"Voice conversion flow steps; max_steps is also accepted.",required:!1,min:1,default:10},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,min:0,max:4294967295},{name:"source_audio",type:"audio_path",description:"Voice conversion source WAV path; overrides audio_input.",required:!1},{name:"target_voice",type:"audio_path",description:"Voice conversion target WAV path; overrides the speaker reference.",required:!1},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size.",required:!1,default:128}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; defaults to native.",required:!1,preset:"weight_type_full"},{name:"t3_weight_type",type:"enum",description:"T3 weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"multilingual_t3",type:"enum",description:"Multilingual T3 checkpoint selection.",required:!1,values:["v2","v3"],default:"v2"},{name:"conditionals_cache_slots",type:"int",description:"Cached speaker conditionals; zero disables reuse.",required:!1,min:0,default:1},{name:"mem_saver",type:"bool",description:"Release staged runtime components.",required:!1,default:!1},{name:"encoder_condition_samples",type:"int",description:"Maximum reference samples for the T3 tokenizer; the voice encoder still consumes the full 16 kHz reference.",required:!1,default:96e3},{name:"decoder_condition_samples",type:"int",description:"S3Gen reference sample limit at 24 kHz.",required:!1,default:24e4},{name:"t3_speech_cond_prompt_len",type:"int",description:"T3 reference speech prompt token limit.",required:!1,default:150}],load:[]},capabilities:{clone:["speaker_reference"],vc:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"chatterbox_q8_0",tags:["TTS","Clone","VC","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"chatterbox_q8_0",display_name:"Chatterbox Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Chatterbox-GGUF",files:["Chatterbox-GGUF/chatterbox-q8_0.gguf"],strip_prefix:"Chatterbox-GGUF"},{id:"chatterbox_f16",display_name:"Chatterbox F16 GGUF",format:"gguf",precision:"f16",target_directory:"Chatterbox-GGUF",files:["Chatterbox-GGUF/chatterbox-f16.gguf"],strip_prefix:"Chatterbox-GGUF"},{id:"chatterbox_safetensors",display_name:"Chatterbox Safetensors",format:"safetensors",precision:"native",target_directory:"chatterbox",files:["ve.safetensors","t3_cfg.safetensors","s3gen.safetensors","tokenizer.json","grapheme_mtl_merged_expanded_v1.json","Cangjie5_TC.json","conds.pt","t3_mtl23ls_v2.safetensors","t3_mtl23ls_v3.safetensors"],download:{kind:"huggingface_snapshot",repo:"ResembleAI/chatterbox"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{english_tokenizer:"model:tokenizer.json",multilingual_tokenizer:"model:grapheme_mtl_merged_expanded_v1.json",cangjie_mapping:"model:Cangjie5_TC.json",builtin_conditionals:"model:conds.pt"},tensors:{voice_encoder_weights:{source:"weights:",prefix:"voice_encoder"},s3gen_weights:{source:"weights:",prefix:"s3gen"},t3_english_weights:{source:"weights:",prefix:"t3_english"},t3_multilingual_v2_weights:{source:"weights:",prefix:"t3_multilingual_v2"},t3_multilingual_v3_weights:{source:"weights:",prefix:"t3_multilingual_v3"}}},{format:"safetensors",roots:{model:"."},files:{english_tokenizer:"model:tokenizer.json",multilingual_tokenizer:"model:grapheme_mtl_merged_expanded_v1.json",cangjie_mapping:"model:Cangjie5_TC.json",builtin_conditionals:"model:conds.pt"},tensors:{voice_encoder_weights:"model:ve.safetensors",s3gen_weights:"model:s3gen.safetensors",t3_english_weights:"model:t3_cfg.safetensors",t3_multilingual_v2_weights:"model:t3_mtl23ls_v2.safetensors",t3_multilingual_v3_weights:"model:t3_mtl23ls_v3.safetensors"}}]},h5={family:"chatterbox_turbo",display_name:"Chatterbox Turbo",description:"Resemble AI's distilled 350M Chatterbox Turbo: GPT2 T3 backbone, GPT2 BPE tokenizer, and a 2-step meanflow S3Gen decoder for fast English TTS with a built-in voice.",category:"tts",status:"testing",tasks:["tts"],modes:["offline"],languages:["en"],capabilities:{},options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated tokens; legacy max_new_tokens remains accepted.",required:!1,min:0,default:1e3},{name:"temperature",type:"float",description:"T3 sampling temperature.",required:!1,default:.8},{name:"top_p",type:"float",description:"T3 nucleus sampling cutoff.",required:!1,default:.95},{name:"top_k",type:"int",description:"T3 top-k sampling limit.",required:!1,min:0,default:1e3},{name:"repetition_penalty",type:"float",description:"T3 token repetition penalty.",required:!1,default:1.2},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,max:4294967295,default:0},{name:"text_chunk_size",type:"int",description:"Maximum characters per text chunk; must be positive.",required:!1,min:1,default:128}],session:[],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"chatterbox_turbo_q8_0",tags:["TTS","GGUF"],docs:["docs/models/chatterbox_turbo.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"chatterbox_turbo_q8_0",display_name:"Chatterbox Turbo Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Chatterbox-Turbo-GGUF",files:["Chatterbox-Turbo-GGUF/chatterbox-turbo-q8_0.gguf"],strip_prefix:"Chatterbox-Turbo-GGUF"},{id:"chatterbox_turbo_f16",display_name:"Chatterbox Turbo F16 GGUF",format:"gguf",precision:"f16",target_directory:"Chatterbox-Turbo-GGUF",files:["Chatterbox-Turbo-GGUF/chatterbox-turbo-f16.gguf"],strip_prefix:"Chatterbox-Turbo-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tokenizer_vocab:"model:chatterbox_turbo_vocab.json",tokenizer_merges:"model:chatterbox_turbo_merges.txt",tokenizer_special_tokens:"model:chatterbox_turbo_special_tokens.json"},tensors:{t3_turbo_weights:{source:"weights:",prefix:"t3"},builtin_conditionals_turbo:{source:"weights:",prefix:"conds"},s3gen_weights:{source:"weights:",prefix:"s3gen"}}}]},_5={family:"citrinet_asr",display_name:"Citrinet ASR",description:"NVIDIA CitriNet-family end-to-end English ASR model using a convolutional CTC architecture optimized for transcribing speech segments to text.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en"],capabilities:{},options:{request:[],session:[{name:"weight_type",type:"enum",description:"Weight storage type used by the encoder.",default:"native",preset:"weight_type_full",required:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"citrinet_asr_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"citrinet_asr_q8_0",display_name:"Citrinet ASR Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Citrinet-ASR-GGUF",files:["Citrinet-ASR-GGUF/citrinet-asr-q8_0.gguf"],strip_prefix:"Citrinet-ASR-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:citrinet_256_config.json",tokenizer:"model:citrinet_256_tokenizer.model"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:citrinet_256_config.json",tokenizer:"model:citrinet_256_tokenizer.model"},tensors:{weights:"model:citrinet_256.safetensors"}}]},v5={family:"cohere_asr",schema_version:1,display_name:"Cohere Transcribe",description:"Cohere multilingual speech transcription with punctuation control.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en","fr","de","es","it","pt","nl","pl","el","ar","ja","zh","vi","ko"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Input audio language.",required:!1,default:"en"},{name:"punc",type:"bool",description:"Generate punctuation and capitalization.",required:!1,default:!0},{name:"max_tokens",type:"int",description:"Maximum generated tokens per audio chunk.",required:!1,min:1,max:1014,default:256},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","quiet_energy","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio chunk in seconds.",required:!1,min:.04,max:35,default:35}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage type.",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"],required:!1,default:"native"}],load:[]},runtime:{tags:["gguf","cpu","cuda"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/cohere_asr.md"],recommended_package:"cohere_transcribe_bf16"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"cohere_transcribe_bf16",display_name:"Cohere Transcribe GGUF BF16",default:!0,format:"gguf",precision:"bf16",target_directory:"Cohere-Transcribe-GGUF",files:["Cohere-Transcribe-GGUF/cohere-transcribe-03-2026-bf16.gguf"],strip_prefix:"Cohere-Transcribe-GGUF"},{id:"cohere_transcribe_q8_0",display_name:"Cohere Transcribe GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Cohere-Transcribe-GGUF",files:["Cohere-Transcribe-GGUF/cohere-transcribe-03-2026-q8_0.gguf"],strip_prefix:"Cohere-Transcribe-GGUF"},{id:"cohere_transcribe_q4_0",display_name:"Cohere Transcribe GGUF Q4_0",format:"gguf",precision:"q4_0",target_directory:"Cohere-Transcribe-GGUF",files:["Cohere-Transcribe-GGUF/cohere-transcribe-03-2026-q4_0.gguf"],strip_prefix:"Cohere-Transcribe-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"weights:"}}]},b5={schema_version:1,family:"confucius4_r2t2",display_name:"Confucius4-R2T2",description:"NetEase Youdao Confucius4-R2T2 real-time ASR: a Qwen3-ASR fine-tune with Longest Stable Prefix (LSP) streaming. Low-latency append-only streaming from 80 ms to 2 s chunks, context and hotword prompts, 30 languages.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["zh","en","yue","ar","de","fr","es","pt","id","it","ko","ru","th","vi","ja","tr","hi","ms","nl","sv","da","fi","pl","cs","fil","fa","el","hu","mk","ro"],capabilities:{asr:["partial_results"]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"confucius4_r2t2_q8_0",tags:["ASR","Stream"],docs:["docs/models/r2t2.md","docs/asr.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"netease-youdao/Confucius4-R2T2",revision:"main",gated:!1}},packages:[{id:"confucius4_r2t2_q8_0",display_name:"Confucius4-R2T2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Confucius4-R2T2-GGUF",files:["r2t2-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"davidxifeng/Confucius4-R2T2-gguf"}},{id:"confucius4_r2t2_f16",display_name:"Confucius4-R2T2 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Confucius4-R2T2-GGUF",files:["r2t2-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"davidxifeng/Confucius4-R2T2-gguf"}},{id:"confucius4_r2t2_q4_k_m",display_name:"Confucius4-R2T2 Q4_K_M GGUF",description:"Community Q4_K_M quantization by NairoDorian (Hugging Face: Nairod785), pinned to a fixed revision; quantization report in QUANTIZATION.md. Quantized derivative work of netease-youdao/Confucius4-R2T2 under the NetEase Youdao Model Use License - see LICENSE, LICENSE_zh and NOTICE in the download repo.",format:"gguf",precision:"q4_k_m",target_directory:"Confucius4-R2T2-Q4_K_M-GGUF",files:["r2t2-q4_k_m.gguf"],download:{kind:"huggingface_snapshot",repo:"Nairod785/Confucius4-R2T2-Q4_K_M-GGUF",revision:"b1ea19256fb77a8d8ab7b091dc75378e15952605",gated:!1}},{id:"confucius4_r2t2_safetensors",display_name:"Confucius4-R2T2 (HF safetensors)",format:"safetensors",precision:"native",target_directory:"Confucius4-R2T2",files:["added_tokens.json","chat_template.json","config.json","generation_config.json","merges.txt","model.safetensors","preprocessor_config.json","special_tokens_map.json","tokenizer.json","tokenizer_config.json","vocab.json"],download:{kind:"huggingface_snapshot",repo:"netease-youdao/Confucius4-R2T2"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}],options:{request:[{name:"language",type:"string",required:!1,default:"Auto",description:"Recognition language: ISO-639 code (zh/en/ja/...) or canonical name (Chinese/English/...), or Auto for detection."},{name:"max_tokens",type:"int",required:!1,description:"Offline decode budget. Must be positive. Offline omission uses checkpoint configuration (512 fallback).",min:1}],session:[{name:"chunk_size_ms",type:"float",required:!1,default:320,description:"Streaming chunk duration in milliseconds; must be positive."},{name:"unfixed_chunk_num",type:"int",required:!1,default:2,description:"Leading chunks decoded without a stable-prefix prompt.",min:0},{name:"unfixed_token_num",type:"int",required:!1,default:5,description:"Tokens rolled back from the accumulated text before it becomes the prefix prompt.",min:0},{name:"rollback_punctuation",type:"bool",required:!1,default:!1,description:"When punctuation is detected, set rollback to zero and retain the full decoded prefix."},{name:"max_tokens",type:"int",required:!1,default:32,description:"Greedy decode budget per streaming chunk and for the final flush (session-scoped; distinct from the offline request max_tokens).",min:1},{name:"audio_encoder_weight_type",type:"enum",preset:"weight_type_conv",required:!1,default:"native",description:"Audio tower weight storage."},{name:"thinker_weight_type",type:"enum",values:["native","f32","f16","bf16","q8_0"],required:!1,default:"native",description:"Thinker weight storage."},{name:"weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"native",description:"Alias for thinker_weight_type."},{name:"audio_encoder_graph_arena_mb",type:"int",required:!1,default:128,description:"Audio tower graph arena in MB.",min:1},{name:"thinker_prefill_graph_arena_mb",type:"int",required:!1,default:256,description:"Thinker prefill graph arena in MB.",min:1},{name:"thinker_decode_graph_arena_mb",type:"int",required:!1,default:256,description:"Thinker decode graph arena in MB.",min:1},{name:"thinker_weight_context_mb",type:"int",required:!1,default:64,description:"Thinker weight context in MB.",min:1}],load:[]},dependencies:[]},y5={schema_version:1,family:"confucius4_tts",display_name:"Confucius4-TTS",description:"Confucius4-TTS is a multilingual voice-cloning TTS model packaged for audio.cpp with offline and streaming generation. It uses reference speech, language-aware text normalization, T2S semantic generation, S2A flow matching, style encoding, semantic audio features, and BigVGAN vocoding.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline","streaming"],languages:["zh","en","ja","ko","de","fr","es","id","it","th","pt","ru","ms","vi"],runtime:{tags:["gguf","stream"]},capabilities:{clone:["speaker_reference","long_form"]},options:{request:[{name:"language",type:"string",description:"Target synthesis language code used by the text frontend; default zh when no request transcript language or style language is provided.",required:!1,default:"zh"},{name:"temperature",type:"float",description:"T2S sampling temperature; must be > 0, default 0.8.",required:!1,min:0,default:.8},{name:"top_p",type:"float",description:"T2S nucleus sampling probability; must be in (0, 1], default 0.8.",required:!1,min:0,max:1,default:.8},{name:"top_k",type:"int",description:"T2S top-k sampling limit; must be positive, default 30.",required:!1,min:1,default:30},{name:"num_beams",type:"int",description:"T2S beam count; default 3. Set 1 for single-beam sampling.",required:!1,min:1,default:3},{name:"repetition_penalty",type:"float",description:"T2S repetition penalty; must be > 0, default 10.0.",required:!1,min:0,default:10},{name:"max_tokens",type:"int",description:"Maximum T2S semantic sequence length including prompt tokens; default 1520.",required:!1,min:1,default:1520},{name:"num_inference_steps",type:"int",description:"S2A flow-matching step count; default 25.",required:!1,min:1,default:25},{name:"guidance_scale",type:"float",description:"S2A classifier-free guidance scale; default 0.7. Negative values select the no-CFG path.",required:!1,default:.7},{name:"text_chunk_size",type:"int",description:"Maximum text tokens per generated segment; default 80.",required:!1,min:1,default:80},{name:"text_chunk_mode",type:"enum",description:"word_budget/default selects model-local official_segments. Other modes use the framework splitter with a codepoint budget.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"cross_fade_duration_sec",type:"float",description:"Cross-fade duration between generated segments in seconds; default 0.3.",required:!1,min:0,default:.3},{name:"edge_fade_duration_sec",type:"float",description:"Fade duration applied at segment edges in seconds; default 0.1. Currently validated but not applied to generated audio.",required:!1,min:0,default:.1},{name:"edge_pad_duration_sec",type:"float",description:"Silence padding applied at segment edges in seconds; default 0.1. Currently validated but not applied to generated audio.",required:!1,min:0,default:.1},{name:"seed",type:"int",description:"Seed for T2S sampling and S2A noise initialization; default 1234.",required:!1,min:0,default:1234}],session:[{name:"graph_arena_mb",type:"int",description:"Reusable ggml graph arena size in MiB for Confucius stages; default 512.",required:!1,min:1,default:512},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"weight_type",type:"enum",description:"Matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; default 1, set 0 to disable caching.",required:!1,min:0,default:1},{name:"mem_saver",type:"bool",description:"Release staged graphs after request phases; default false.",required:!1,default:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"confucius4_tts_orig",display_name:"Confucius4-TTS Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Confucius4-TTS-GGUF",files:["Confucius4-TTS-GGUF/confucius4-tts-orig.gguf"],strip_prefix:"Confucius4-TTS-GGUF"}],dependencies:[],ui:{recommended_package:"confucius4_tts_orig",tags:["TTS","Clone","GGUF","Stream"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:inference_config.yaml",tokenizer_model:"model:tokenizer.model",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",special_tokens_map:"model:special_tokens_map.json",w2v_preprocessor_config:"model:w2v_preprocessor_config.json",bigvgan_config:"model:bigvgan_config.json"},tensors:{t2s:{source:"weights:",prefix:"t2s"},s2a:{source:"weights:",prefix:"s2a"},semantic_encoder:{source:"weights:",prefix:"semantic_encoder"},semantic_encoder_shaw:{source:"weights:",prefix:"semantic_encoder_shaw"},semantic_stats:{source:"weights:",prefix:"semantic_stats"},style_encoder:{source:"weights:",prefix:"style_encoder"},vocoder:{source:"weights:",prefix:"vocoder"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:inference_config.yaml",tokenizer_model:"model:tokenizer.model",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",special_tokens_map:"model:special_tokens_map.json",w2v_preprocessor_config:"model:w2v_preprocessor_config.json",bigvgan_config:"model:bigvgan_config.json"},tensors:{t2s:"model:t2s.safetensors",s2a:"model:s2a.safetensors",semantic_encoder:"model:semantic_encoder.safetensors",semantic_encoder_shaw:"model:semantic_encoder_shaw.safetensors",semantic_stats:"model:semantic_stats.safetensors",style_encoder:"model:style_encoder.safetensors",vocoder:"model:vocoder.safetensors"}}]},w5={schema_version:1,family:"controlfoley",display_name:"ControlFoley",description:"Multimodal Foley audio generation model.",category:"audio_tools",status:"experimental",tasks:["sfx"],modes:["offline"],languages:["auto"],runtime:{tags:["gguf"]},capabilities:{sfx:["prompt_generation"]},ui:{recommended_package:"controlfoley_large_44k_q8_0",tags:["SFX","GGUF"],docs:["docs/models/controlfoley.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{open_clip_vocab:"model:open_clip_vocab.json",open_clip_merges:"model:open_clip_merges.txt",open_clip_tokenizer_config:"model:open_clip_tokenizer_config.json"},tensors:{flow:{source:"weights:",prefix:"flow"},vae:{source:"weights:",prefix:"vae"},bigvgan:{source:"weights:",prefix:"bigvgan"},open_clip:{source:"weights:",prefix:"open_clip"},cav_mae:{source:"weights:",prefix:"cav_mae"},synchformer:{source:"weights:",prefix:"synchformer"},clap:{source:"weights:",prefix:"clap"},mert:{source:"weights:",prefix:"mert"},musicgen_style:{source:"weights:",prefix:"musicgen_style"}}}],options:{request:[{name:"duration_sec",type:"float",required:!1,default:8,min:.64,description:"Target temporal budget."},{name:"num_inference_steps",type:"int",required:!1,default:25,min:1,description:"Euler flow inference steps."},{name:"guidance_scale",type:"float",required:!1,default:4.5,min:0,description:"Classifier-free guidance strength. Must be > 0. Values strictly between 0 and 1 bypass CFG and negative-prompt conditioning."},{name:"negative_prompt",type:"string",required:!1,default:"",description:"Negative text prompt used for the unconditional guidance text branch."},{name:"video_file",type:"path",required:!1,description:"Optional video path for video-conditioned Foley generation."},{name:"mask_away_clip",type:"bool",required:!1,default:!1,description:"Disable OpenCLIP video conditioning while keeping visual and sync conditioning."},{name:"seed",type:"int",required:!1,default:42,min:0,max:4294967295,description:"Generation seed."}],session:[{name:"weight_type",type:"enum",required:!1,preset:"weight_type_full",default:"native",description:"ControlFoley weight storage type."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"controlfoley_large_44k_f32",display_name:"ControlFoley Large 44k F32 GGUF",format:"gguf",precision:"f32",target_directory:"ControlFoley-GGUF",files:["ControlFoley-GGUF/controlfoley-large-44k-f32.gguf"],strip_prefix:"ControlFoley-GGUF"},{id:"controlfoley_large_44k_q8_0",display_name:"ControlFoley Large 44k Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"ControlFoley-GGUF",files:["ControlFoley-GGUF/controlfoley-large-44k-q8_0.gguf"],strip_prefix:"ControlFoley-GGUF"}],dependencies:[]},k5={schema_version:1,family:"cosyvoice3",display_name:"CosyVoice3",description:"Fun-CosyVoice3 native GGUF package for zero-shot, cross-lingual, and instruction-conditioned text-to-speech using CosyVoice3 speech-token AR generation, causal masked flow mel decoding, CAM++ speaker conditioning, and causal HiFT waveform decoding.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline"],languages:["zh","en","ja","ko","de","es","fr","it","ru","yue"],runtime:{tags:["gguf"]},dependencies:[],capabilities:{tts:["speaker_reference","style_control"],clone:["speaker_reference"]},options:{request:[{name:"template_name",type:"enum",description:"CosyVoice3 request template.",required:!1,values:["zero_shot","cross_lingual","instruct"],default:"zero_shot"},{name:"reference_text",type:"string",description:"Transcript for the prompt audio.",required:!1},{name:"instruct",type:"string",description:"Instruction text for instruct mode.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 600.",required:!1,min:1,default:600},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"max_tokens",type:"int",description:"Maximum generated speech tokens; -1 (default) selects 20 times the target text token count. Explicit limits must be positive.",required:!1,min:-1,default:-1},{name:"min_tokens",type:"int",description:"Minimum generated speech tokens before stop is accepted; -1 (default) selects twice the target text token count. Must not exceed the resolved maximum.",required:!1,min:-1,default:-1},{name:"top_k",type:"int",description:"AR speech-token top-k sampling limit; default 25.",required:!1,min:1,default:25},{name:"num_inference_steps",type:"int",description:"Flow decoder Euler steps; default 10.",required:!1,min:1,default:10},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,default:1986}],session:[{name:"lora",type:"path",description:"PEFT adapter with adapter_config.json, or native lora_weights with config.json and speech_embedding/llm_decoder sidecars. Checkpoints may use safetensors or PyTorch containers.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1. Full-weight replacements are not scaled.",required:!1,default:1},{name:"weight_type",type:"enum",description:"CosyVoice3 matmul weight storage type; default native.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"]},{name:"graph_arena_mb",type:"int",description:"Reusable runtime graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 2048.",required:!1,min:1,default:2048},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse.",required:!1,min:0,default:4},{name:"mem_saver",type:"bool",description:"Release cached runtime graphs after each request to reduce peak VRAM; default false.",required:!1,default:!1},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Component: flow. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. GGML keeps the session backend. RKNN requires artifacts.main, a comma-separated ladder of estimator engines compiled one per sequence length (tools/rknn/prepare_cosyvoice3_rknn_flow.py), and ENGINE_ENABLE_RKNN; omit backend. An utterance longer than the largest engine runs the CPU graph. Neither implementation takes params.",required:!1,default:"{}"}],load:[]},packages:[{id:"cosyvoice3_q8_0",display_name:"CosyVoice3 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"CosyVoice3-GGUF",files:["CosyVoice3-GGUF/cosyvoice3-q8_0.gguf"],strip_prefix:"CosyVoice3-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"cosyvoice3_f32",display_name:"CosyVoice3 F32 GGUF",default:!1,format:"gguf",precision:"f32",target_directory:"CosyVoice3-GGUF",files:["CosyVoice3-GGUF/cosyvoice3-f32.gguf"],strip_prefix:"CosyVoice3-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}}],ui:{recommended_package:"cosyvoice3_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{cosyvoice3_yaml:"model:cosyvoice3.yaml",qwen_config:"model:CosyVoice-BlankEN/config.json",tokenizer_config:"model:CosyVoice-BlankEN/tokenizer_config.json",vocab_json:"model:CosyVoice-BlankEN/vocab.json",merges_txt:"model:CosyVoice-BlankEN/merges.txt"},tensors:{llm_weights:{source:"weights:",prefix:"llm"},flow_weights:{source:"weights:",prefix:"flow"},hift_weights:{source:"weights:",prefix:"hift"},campplus_weights:{source:"weights:",prefix:"campplus"},speech_tokenizer_weights:{source:"weights:",prefix:"speech_tokenizer"},blank_en_weights:{source:"weights:",prefix:"blank_en"}}}]},x5={schema_version:1,family:"crisperwhisper",display_name:"CrisperWhisper 2.0",description:"Whisper-based verbatim and intended speech transcription.",category:"asr",status:"supported",tasks:["asr","align"],modes:["offline","streaming"],languages:["af","am","ar","as","az","ba","be","bg","bn","bo","br","bs","ca","cs","cy","da","de","el","en","es","et","eu","fa","fi","fo","fr","gl","gu","ha","haw","he","hi","hr","ht","hu","hy","id","is","it","ja","jw","ka","kk","km","kn","ko","la","lb","ln","lo","lt","lv","mg","mi","mk","ml","mn","mr","ms","mt","my","ne","nl","nn","no","oc","pa","pl","ps","pt","ro","ru","sa","sd","si","sk","sl","sn","so","sq","sr","su","sv","sw","ta","te","tg","th","tk","tl","tr","tt","uk","ur","uz","vi","yi","yo","zh"],capabilities:{align:["word_timestamps"],asr:["word_timestamps","partial_results"]},dependencies:[],options:{request:[{name:"return_timestamps",required:!1,type:"bool",description:"Return word-level timestamps.",default:!1},{name:"audio_chunk_mode",required:!1,type:"enum",values:["auto","fixed","none"],description:"Continuation window planning. None requires audio no longer than 30 seconds.",default:"auto"},{name:"audio_chunk_duration_sec",required:!1,type:"float",description:"Duration of each encoder window in seconds. Must be positive and greater than overlap.",max:30,default:30},{name:"audio_chunk_overlap_sec",required:!1,type:"float",description:"Audio overlap between continuation windows in seconds. Must be smaller than chunk duration.",min:0,default:4},{name:"language",required:!1,type:"string",description:"Audio language code.",default:"en"},{name:"transcription_mode",required:!1,type:"enum",description:"Verbatim speech, intended clean text, or transcript-conditioned verbatimize.",values:["verbatim","intended","verbatimize"],default:"verbatim"},{name:"max_tokens",required:!1,type:"int",description:"Maximum generated tokens per window. Positive budget, additionally bounded by remaining checkpoint text positions after the prompt.",min:1,default:256}],session:[{name:"weight_type",required:!1,type:"enum",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","i8"],description:"Matmul weight storage type.",default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/crisperwhisper.md"],recommended_package:"crisperwhisper_2_large_q8_0"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"crisperwhisper_2_large_bf16",display_name:"CrisperWhisper 2.0 Large GGUF BF16",format:"gguf",precision:"bf16",target_directory:"CrisperWhisper2.0-GGUF",files:["CrisperWhisper2.0-GGUF/crisperwhisper-2-large-bf16.gguf"],strip_prefix:"CrisperWhisper2.0-GGUF"},{id:"crisperwhisper_2_large_q8_0",display_name:"CrisperWhisper 2.0 Large GGUF Q8_0",default:!0,format:"gguf",precision:"q8_0",target_directory:"CrisperWhisper2.0-GGUF",files:["CrisperWhisper2.0-GGUF/crisperwhisper-2-large-q8_0.gguf"],strip_prefix:"CrisperWhisper2.0-GGUF"},{id:"crisperwhisper_2_large_q4_k",display_name:"CrisperWhisper 2.0 Large GGUF Q4_K",format:"gguf",precision:"q4_k",target_directory:"CrisperWhisper2.0-GGUF",files:["CrisperWhisper2.0-GGUF/crisperwhisper-2-large-q4_k.gguf"],strip_prefix:"CrisperWhisper2.0-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:"weights:"}}]},S5={schema_version:1,family:"dots_tts",display_name:"DotTTS",description:"DotTTS is a multilingual zero-shot TTS, voice-cloning, and speech-editing model family packaged for audio.cpp with SOAR and MeanFlow generation, prompt-audio plus prompt-text prefill, speaker-reference conditioning, language tags, multiple synthesis templates, long-form text chunking, and true streaming audio output.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["multilingual"],runtime:{tags:["gguf","stream"]},capabilities:{tts:["speaker_reference","style_control","long_form"],clone:["speaker_reference","style_control","long_form"]},options:{request:[{name:"reference_text",type:"string",description:"Transcript for the prompt audio. When set with reference audio, DotTTS uses prompt prefill for higher quality voice cloning.",required:!1},{name:"reference_duration_sec",type:"float",description:"Optional prompt-audio trim duration before reference conditioning and prompt prefill.",required:!1,min:0},{name:"template_name",type:"enum",description:"DotTTS synthesis template. tts is normal text-to-speech; instruction_tts adds instruction conditioning; text_to_audio uses a sound-description template; tts_interleave uses the streaming interleave schedule; edit uses the DotTTS Edit source-audio editing schedule and is offline-only.",values:["tts","instruction_tts","text_to_audio","tts_interleave","edit"],required:!1,default:"tts"},{name:"source_audio",type:"audio_path",description:"Source WAV path for DotTTS Edit. Required when template_name=edit unless audio_input is supplied by the caller.",required:!1},{name:"instruct",type:"string",description:"Structured DotTTS Edit instruction. If omitted with template_name=edit, the request text is used as the instruction.",required:!1},{name:"source_text",type:"string",description:"Optional source transcript override for DotTTS Edit. If omitted, it is rendered from instruction tags.",required:!1},{name:"target_text",type:"string",description:"Edit target transcript override. When omitted, explicit instruction plus text input uses that text; otherwise the target is rendered from instruction tags.",required:!1},{name:"use_xvector",type:"enum",description:"DotTTS Edit speaker conditioning mode. auto follows the upstream tag-based behavior; on/off force or disable source-audio speaker conditioning.",values:["auto","on","off"],required:!1,default:"auto"},{name:"language",type:"string",description:"Optional target language tag. none disables language tagging; otherwise pass a language code such as en or zh.",required:!1,default:"none"},{name:"num_inference_steps",type:"int",description:"SOAR flow-matching inference step count; default 10.",required:!1,min:1,default:10},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale used by SOAR flow matching. Default 1.2.",required:!1,min:0,default:1.2},{name:"speaker_scale",type:"float",description:"Multiplier applied to the prompt speaker embedding; default 1.5.",required:!1,min:0,default:1.5},{name:"sampler_mode",type:"enum",description:"SOAR ODE solver method for flow matching. Fixed-step euler is the default and parity baseline.",values:["euler","midpoint","rk4"],required:!1,default:"euler"},{name:"max_tokens",type:"int",description:"Maximum generated audio patch count per generated segment; default 500. In Edit mode source patches consume this budget; it must exceed the source-patch count.",required:!1,min:1,default:500},{name:"text_chunk_size",type:"int",description:"Maximum text codepoints per generated segment for long-form requests; default 320.",required:!1,min:1,default:320},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode; default tag_aware preserves leading style/control tags across long-form chunks.",values:["default","tag_aware","japanese","endline"],required:!1,default:"tag_aware"},{name:"vocoder_merge_steps",type:"int",description:"Streaming vocoder latent patch merge size after the initial unmerged patches; default 4, matching the Python optimized streaming runtime default.",required:!1,min:1,default:4},{name:"seed",type:"int",description:"Seed for prompt latent sampling and flow noise initialization; default 42.",required:!1,min:0,default:42}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type for DotTTS components; default native. Component-specific weight options override this value.",preset:"weight_type_full",required:!1,default:"native"},{name:"speaker_encoder_weight_type",type:"enum",description:"Speaker encoder matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"codec_weight_type",type:"enum",description:"AudioVAE vocoder matmul and recurrent weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"patch_encoder_weight_type",type:"enum",description:"Patch encoder transformer matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"llm_weight_type",type:"enum",description:"Autoregressive language model matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"flow_weight_type",type:"enum",description:"SOAR or MeanFlow DiT flow-matching matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"codec_conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse.",required:!1,min:0,default:4},{name:"mem_saver",type:"bool",description:"Load DotTTS components by request phase and release their weights/graphs after last use while keeping reference cache slots alive.",required:!1,default:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"dots_tts_soar_q8_0",display_name:"DotTTS SOAR Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"DotTTS-SOAR-GGUF",files:["DotTTS-SOAR-GGUF/dots-tts-soar-q8_0.gguf"],strip_prefix:"DotTTS-SOAR-GGUF"},{id:"dots_tts_soar_bf16",display_name:"DotTTS SOAR BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"DotTTS-SOAR-GGUF",files:["DotTTS-SOAR-GGUF/dots-tts-soar-bf16.gguf"],strip_prefix:"DotTTS-SOAR-GGUF"},{id:"dots_tts_mf_q8_0",display_name:"DotTTS MeanFlow Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"DotTTS-MF-GGUF",files:["DotTTS-MF-GGUF/dots-tts-mf-q8_0.gguf"],strip_prefix:"DotTTS-MF-GGUF"},{id:"dots_tts_mf_bf16",display_name:"DotTTS MeanFlow BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"DotTTS-MF-GGUF",files:["DotTTS-MF-GGUF/dots-tts-mf-bf16.gguf"],strip_prefix:"DotTTS-MF-GGUF"},{id:"dots_tts_edit_q8_0",display_name:"DotTTS Edit Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"DotTTS-Edit-GGUF",files:["DotTTS-Edit-GGUF/dots-tts-edit-q8_0.gguf"],strip_prefix:"DotTTS-Edit-GGUF"},{id:"dots_tts_edit_bf16",display_name:"DotTTS Edit BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"DotTTS-Edit-GGUF",files:["DotTTS-Edit-GGUF/dots-tts-edit-bf16.gguf"],strip_prefix:"DotTTS-Edit-GGUF"}],dependencies:[],ui:{recommended_package:"dots_tts_soar_q8_0",tags:["TTS","Clone","Stream","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",llm_config:"model:llm_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",added_tokens:"model:added_tokens.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{core_weights:{source:"weights:",prefix:"core"},vocoder_weights:{source:"weights:",prefix:"vocoder"},speaker_encoder_weights:{source:"weights:",prefix:"speaker_encoder"},latent_stats:{source:"weights:",prefix:"latent_stats"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",llm_config:"model:llm_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",added_tokens:"model:added_tokens.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{core_weights:{source:"model:model.safetensors"},vocoder_weights:{source:"model:vocoder.safetensors"},speaker_encoder_weights:{source:"model:speaker_encoder.safetensors"},latent_stats:{source:"model:latent_stats.safetensors"}}}]},T5={schema_version:1,family:"dramabox",display_name:"DramaBox",description:"DramaBox is an English expressive TTS and voice-cloning model packaged for audio.cpp as a standalone GGUF bundle. It combines Gemma text conditioning, diffusion sampling, reference-audio conditioning, long-form chunking, and 48 kHz stereo output.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["speaker_reference","style_control","long_form"],clone:["speaker_reference","style_control","long_form"]},options:{request:[{name:"target_voice",type:"audio_path",description:"Reference voice WAV path for voice cloning. If omitted, DramaBox generates from text without reference-audio conditioning.",required:!1},{name:"negative_prompt",type:"string",description:"Negative text conditioning used when guidance_scale enables classifier-free guidance; omitted uses the built-in quality prompt.",required:!1},{name:"duration_sec",type:"float",description:"Explicit target duration in seconds; default 0 uses the prompt-duration estimator. Above audio_chunk_threshold_sec, long-form generation uses estimated per-chunk durations instead of this explicit target.",required:!1,min:0,default:0},{name:"num_inference_steps",type:"int",description:"Diffusion sampling step count; default comes from config.json, 30 in the current package.",required:!1,min:1,default:30},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; default comes from config.json, 2.5 in the current package. Values greater than 1 enable CFG. Negative values disable this guidance branch.",required:!1,default:2.5},{name:"spatio_temporal_guidance_scale",type:"float",description:"Spatio-temporal guidance scale; default comes from config.json, 1.5 in the current package. Values greater than 0 enable STG. Negative values disable this guidance branch.",required:!1,default:1.5},{name:"duration_scale",type:"float",description:"Multiplier applied to the estimated prompt duration when duration_sec is 0; default comes from config.json, 1.1 in the current package. The resulting duration has a 3-second floor.",required:!1,default:1.1},{name:"reference_duration_sec",type:"float",description:"Reference voice crop/repeat duration in seconds; default comes from config.json, 10.0 in the current package. Must be > 0.",required:!1,min:0,default:10},{name:"guidance_rescale",type:"string",description:"Guidance rescale: auto or any negative value derives it from guidance_scale; nonnegative numeric values select an explicit rescale.",required:!1,default:"auto"},{name:"audio_chunk_threshold_sec",type:"float",description:"Estimated duration threshold that switches a request to long-form chunking; default 45.0 seconds. Must be > 0.",required:!1,min:0,default:45},{name:"audio_chunk_duration_sec",type:"float",description:"Target estimated duration for each long-form chunk; default 37.0 seconds. Must be > 0.",required:!1,min:0,default:37},{name:"cross_fade_duration_sec",type:"float",description:"Equal-power cross-fade between long-form chunks in seconds; default 0.05. Zero still overlaps one sample.",required:!1,min:0,default:.05},{name:"seed",type:"int",description:"Torch-compatible CUDA noise seed for diffusion sampling; default 42.",required:!1,min:0,default:42}],session:[{name:"perf_mode",type:"enum",description:"Attention implementation mode. Default off keeps the exact reference-query attention path; flash_attention enables the optimized path.",values:["off","flash_attention"],required:!1,default:"off"},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs and weights immediately after each request phase to reduce peak and resident VRAM; default false keeps components cached for later reuse.",required:!1,default:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"dramabox_q8_0",display_name:"DramaBox Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"DramaBox-GGUF",files:["DramaBox-GGUF/dramabox-q8_0.gguf"],strip_prefix:"DramaBox-GGUF"}],dependencies:[],ui:{recommended_package:"dramabox_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",audio_components_config:"model:audio_components_config.json",gemma_config:"model:gemma-3-12b-it-bnb-4bit/config.json",gemma_tokenizer_model:"model:gemma-3-12b-it-bnb-4bit/tokenizer.model",gemma_tokenizer_json:"model:gemma-3-12b-it-bnb-4bit/tokenizer.json",gemma_tokenizer_config:"model:gemma-3-12b-it-bnb-4bit/tokenizer_config.json"},tensors:{dit_weights:{source:"weights:",prefix:"dit"},audio_weights:{source:"weights:",prefix:"audio"},gemma_weights:{source:"weights:",prefix:"gemma"},silence_latent:{source:"weights:",prefix:"silence"}}}]},$5={schema_version:1,family:"echo_tts",display_name:"Echo-TTS",description:"Echo-TTS is an English zero-shot voice-cloning TTS model packaged for audio.cpp. A 2.8B diffusion transformer generates 80-D latents in PCA space which the Fish S1-DAC decodes to 44.1 kHz audio. Generation is a fixed 29.72 s window (640 latents).",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{clone:["speaker_reference"]},options:{request:[{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per text chunk; must be positive, default 300.",required:!1,min:1,default:300},{name:"text_guidance_scale",type:"float",description:"Classifier-free guidance scale on the text condition. Advertised range is recommended, not enforced by the parser.",required:!1,min:0,default:3},{name:"speaker_guidance_scale",type:"float",description:"Classifier-free guidance scale on the speaker condition. Advertised range is recommended, not enforced by the parser.",required:!1,min:0,default:8},{name:"num_inference_steps",type:"int",description:"Euler sampler steps.",required:!1,min:1,default:40},{name:"truncation_factor",type:"float",description:"Initial-noise truncation factor. Advertised range is recommended, not enforced by the parser.",required:!1,min:0,max:1,default:.8},{name:"speaker_kv_scale",type:"float",description:"Force-speaker KV scaling. 1.0 disables; 1.5 is the upstream default when enabled. Advertised range is recommended, not parser-enforced; zero is invalid for reciprocal scaling.",required:!1,min:1,default:1},{name:"seed",type:"int",description:"RNG seed for the initial latent. Negative signed-integer values are treated as zero.",required:!1,default:0},{name:"reference_duration_sec",type:"float",required:!1,description:"Trim the speaker reference to at most this many seconds before encoding. Shorter references are cheaper and often clone better; upstream's guidance favours around 10 s. Defaults to 15 s. Values above the trained maximum of 297.1 s are clamped. Set per request, or as a session default from CLI or server config. Must be positive.",default:15},{name:"max_duration_sec",type:"float",description:"Cap the generation window, in seconds (up to 29.7215 s, the trained maximum; larger values are clamped to it). Quantised down to a whole latent frame of 46.44 ms. Left unset, the window is estimated per chunk from text length and widened automatically if the utterance does not finish inside it, which is substantially cheaper for short text. Must be positive; rounded to at least one latent frame.",required:!1,max:29.7215},{name:"guidance_interval",type:"int",description:"Refresh the two unconditional CFG lanes only every Nth step inside the guidance window, reusing the previous guidance correction in between. 1 reproduces upstream exactly. Worth raising to 2 at 30+ steps, where the correction is still measured 8-10 times across the guided phase (roughly 1.3x fewer denoiser evaluations); not recommended below ~20 steps, where it is already coarsely sampled and staleness shows up as degraded timbre and text adherence.",required:!1,min:1,default:1}],session:[{name:"reference_duration_sec",type:"float",required:!1,description:"Trim the speaker reference to at most this many seconds before encoding. Shorter references are cheaper and often clone better; upstream's guidance favours around 10 s. Defaults to 15 s. Values above the trained maximum of 297.1 s are clamped. Set per request, or as a session default from CLI or server config. Must be positive.",default:15},{name:"reference_cache_slots",type:"int",required:!1,description:"How many encoded speaker references to keep. Encoding is linear in reference length, so reusing a voice across requests avoids repeating it. 0 disables caching; default 4."},{name:"mem_saver",type:"bool",required:!1,description:"Release Fish S1-DAC decode graph space before encoding reference speaker audio and encode graph space after. Avoids having both allocations resident simulaneously at the cost of rebuilding the graphs when a speaker cache-miss occurs.",default:!1}],load:[]},packages:[{id:"echo_tts_q8_0",display_name:"Echo-TTS Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Echo-TTS-GGUF",files:["echo-tts-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"dignome/Echo-TTS",revision:"919681c9906c88963352d5f96e0f732ddd3989ce",gated:!1}},{id:"echo_tts_f16",display_name:"Echo-TTS F16 GGUF",format:"gguf",precision:"f16",target_directory:"Echo-TTS-GGUF",files:["echo-tts-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"dignome/Echo-TTS",revision:"919681c9906c88963352d5f96e0f732ddd3989ce",gated:!1}}],dependencies:[],ui:{recommended_package:"echo_tts_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/echo_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{dit_weights:{source:"weights:",prefix:"dit_weights"},pca:{source:"weights:",prefix:"pca"},codec_weights:{source:"weights:",prefix:"ae"}}}]},q5={schema_version:1,family:"f5_tts",display_name:"F5-TTS",description:"Community F5-TTS flow-matching diffusion transformer for zero-shot voice cloning, including Arabic via the Habibi-TTS finetune (SWivid). Text conv conditioner, RoPE DiT, CFM sampler, Vocos vocoder.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline"],languages:["en","ar"],runtime:{tags:["server"]},capabilities:{clone:["speaker_reference"]},options:{request:[{name:"reference_text",type:"string",description:"Transcript matching the reference voice audio; required by F5-TTS zero-shot cloning.",required:!0},{name:"dialect",type:"string",description:"Habibi dialect token: UNK MSA SAU UAE ALG IRQ EGY MAR OMN TUN LEV SDN LBY; default UNK.",required:!1,default:"UNK"},{name:"sway_sampling_coef",type:"float",description:"Sway sampling coefficient for inference timesteps; default -1.0. Advertised bounds are recommended settings, not parser-enforced limits.",required:!1,min:-5,max:5,default:-1},{name:"speed",type:"float",description:"Speech speed multiplier for duration estimation; default 1.0. Generated text chunks shorter than 10 characters use 0.3 instead. Advertised bounds are recommended settings, not parser-enforced limits.",required:!1,min:.5,max:2,default:1},{name:"seed",type:"int",description:"Non-negative noise seed; omitted selects a random seed. Explicit zero is deterministic.",required:!1,min:0},{name:"num_inference_steps",type:"int",description:"CFM Euler steps (NFE); default 32. The parser rejects nonpositive counts.",required:!1,min:1,default:32},{name:"guidance_scale",type:"float",description:"Classifier-free guidance strength; default 2.0. Advertised bounds are recommended settings, not parser-enforced limits.",required:!1,min:0,max:10,default:2},{name:"strip_diacritics",type:"bool",description:"Strip Arabic combining marks (harakat/tanwin/shadda/tatweel) before synthesis; Habibi is trained on undiacritized ASR transcripts and garbles diacritized input. Default true.",required:!1,default:!0}],session:[{name:"lora",type:"path",description:"PEFT DiT LoRA adapter directory or checkpoint file; merged into session-owned weights and graphs. Vocos is unchanged.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"vocos_path",type:"string",description:"Path to the Vocos vocoder checkpoint (vocos.safetensors); required unless placed next to the DiT checkpoint.",required:!1},{name:"dialect",type:"string",description:"Default Habibi dialect token for requests that do not set it; default UNK.",required:!1,default:"UNK"},{name:"frame_budget",type:"int",description:"Total mel frames per CFM pass (ref + generated); larger budgets allow sentence-scale chunks at higher VRAM. Must be in [256, 8192]; omitted uses 2048. Explicit zero is not accepted. On CPU the allocated DiT graph pool caps a pass at 960 frames (10.2 s), so larger values are clamped there; CUDA keeps the full range.",required:!1,min:256,max:8192,default:2048}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"trklou/audio.cpp",revision:"main",gated:!1}},packages:[{id:"habibi_unified",display_name:"Habibi-TTS Unified (Arabic, multi-dialect)",description:"Unified multi-dialect Arabic checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32).",default:!0,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Unified",files:["habibi-unified/habibi-unified-orig.gguf","habibi-unified/vocab.txt"],strip_prefix:"habibi-unified"},{id:"vocos_mel_24khz",display_name:"Vocos mel 24kHz vocoder (GGUF)",description:"Standalone Vocos vocoder GGUF for use with the original safetensors checkpoints.",default:!1,format:"gguf",precision:"orig",target_directory:"vocos-mel-24khz",files:["vocos-mel-24khz/vocos-mel-24khz-orig.gguf"],strip_prefix:"vocos-mel-24khz"},{id:"habibi_alg",display_name:"Habibi-TTS ALG specialized checkpoint (GGUF)",description:"Single-dialect ALG checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger ALG accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/ALG",files:["habibi-alg/habibi-alg-orig.gguf","habibi-alg/vocab.txt"],strip_prefix:"habibi-alg"},{id:"habibi_egy",display_name:"Habibi-TTS EGY specialized checkpoint (GGUF)",description:"Single-dialect EGY checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger EGY accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/EGY",files:["habibi-egy/habibi-egy-orig.gguf","habibi-egy/vocab.txt"],strip_prefix:"habibi-egy"},{id:"habibi_irq",display_name:"Habibi-TTS IRQ specialized checkpoint (GGUF)",description:"Single-dialect IRQ checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger IRQ accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/IRQ",files:["habibi-irq/habibi-irq-orig.gguf","habibi-irq/vocab.txt"],strip_prefix:"habibi-irq"},{id:"habibi_mar",display_name:"Habibi-TTS MAR specialized checkpoint (GGUF)",description:"Single-dialect MAR checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger MAR accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/MAR",files:["habibi-mar/habibi-mar-orig.gguf","habibi-mar/vocab.txt"],strip_prefix:"habibi-mar"},{id:"habibi_msa",display_name:"Habibi-TTS MSA specialized checkpoint (GGUF)",description:"Single-dialect MSA checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger MSA accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/MSA",files:["habibi-msa/habibi-msa-orig.gguf","habibi-msa/vocab.txt"],strip_prefix:"habibi-msa"},{id:"habibi_sau",display_name:"Habibi-TTS SAU specialized checkpoint (GGUF)",description:"Single-dialect SAU checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger SAU accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/SAU",files:["habibi-sau/habibi-sau-orig.gguf","habibi-sau/vocab.txt"],strip_prefix:"habibi-sau"},{id:"habibi_uae",display_name:"Habibi-TTS UAE specialized checkpoint (GGUF)",description:"Single-dialect UAE checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger UAE accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/UAE",files:["habibi-uae/habibi-uae-orig.gguf","habibi-uae/vocab.txt"],strip_prefix:"habibi-uae"}],dependencies:[],ui:{recommended_package:"habibi_unified",tags:["TTS","Clone"],docs:["docs/models/f5_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{vocab:"model:vocab.txt"},tensors:{transformer:{source:"weights:",prefix:"transformer"}},optional_tensors:{vocos_vocoder:{source:"weights:",prefix:"vocos"}}},{format:"safetensors",roots:{model:"."},files:{vocab:"model:vocab.txt"},tensors:{transformer:{source:"model:model_200000.safetensors",prefix:"ema_model.transformer"}}}]},G5={schema_version:1,family:"firered_audio",display_name:"FireRedAudio",description:"FireRedAudio native GGUF package for generation paths backed by a Qwen3.5 hybrid backbone, FireRed RedAE conditioning, RedPatchEncoder, RedDiT latent flow, and RedAE waveform decoding.",category:"tts",status:"experimental",tasks:["asr","tts","clone","design","edit"],modes:["offline"],languages:["zh","en"],runtime:{tags:["gguf"]},dependencies:[],capabilities:{tts:["speaker_reference","style_control"],clone:["speaker_reference"],design:["voice_design"],edit:["prompt_editing"]},options:{request:[{name:"template_name",type:"enum",description:"Defaults to voice_design for design, acoustic_edit for generation with input audio, tts_clone for other generation, and asr for ASR.",required:!1,values:["tts_clone","voice_design","semantic_edit","acoustic_edit","asr","understand"]},{name:"reference_text",type:"string",description:"Transcript for the prompt audio used by tts_clone.",required:!1},{name:"instruct",type:"string",description:"Voice/delivery conditioning for generation. ASR/understanding uses the text input as its task prompt, not this option.",required:!1},{name:"language",type:"string",description:"FireRedAudio generation language tag.",required:!1,default:"zh"},{name:"num_inference_steps",type:"int",description:"FireRedAudio DiT flow steps per generated latent patch.",required:!1,min:1,default:10},{name:"guidance_scale",type:"float",description:"FireRedAudio DiT classifier-free guidance scale. Must be > 0.",required:!1,min:0,default:2},{name:"max_audio_steps",type:"int",description:"Maximum generated RedAE latent patches.",required:!1,min:1,default:750},{name:"min_audio_steps",type:"int",description:"Minimum generated RedAE latent patches before eosp can stop generation.",required:!1,min:0,default:6},{name:"max_text_tokens",type:"int",description:"Maximum text-mode tokens before audio mode.",required:!1,min:1,default:512},{name:"max_tokens",type:"int",description:"Output token budget; defaults to 300, or 1024 for understand with enable_thinking=true.",required:!1,min:1},{name:"enable_thinking",type:"bool",description:"Leave the understanding think block open for chain-of-thought style answers.",required:!1,default:!1},{name:"top_k",type:"int",description:"Text sampling top-k for understanding.",required:!1,min:0,default:20},{name:"top_p",type:"float",description:"Text sampling top-p for understanding.",required:!1,min:0,max:1,default:.8},{name:"temperature",type:"float",description:"Text sampling temperature for understanding. Understanding-mode sampling requires a positive value; zero does not select greedy decoding.",required:!1,min:0,default:.7},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed in [0, 4294967295]; default 1234.",required:!1,min:0,max:4294967295,default:1234}],session:[{name:"weight_type",type:"enum",description:"FireRedAudio weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"graph_arena_mb",type:"int",description:"Main runtime graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse.",required:!1,min:0,default:2},{name:"mem_saver",type:"bool",description:"Release cached runtime graphs after each request to reduce peak VRAM; default false.",required:!1,default:!1}],load:[]},packages:[{id:"firered_audio_orig",display_name:"FireRedAudio Orig GGUF",format:"gguf",precision:"orig",target_directory:"FireRedAudio-GGUF",files:["FireRedAudio-GGUF/firered-audio-orig.gguf"],strip_prefix:"FireRedAudio-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"firered_audio_q8_0",display_name:"FireRedAudio Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"FireRedAudio-GGUF",files:["FireRedAudio-GGUF/firered-audio-q8_0.gguf"],strip_prefix:"FireRedAudio-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}}],ui:{recommended_package:"firered_audio_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/models/firered_audio.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",processor_config:"model:processor_config.json"},tensors:{model_weights:{source:"weights:",prefix:"model"},redae_decoder_weights:{source:"weights:",prefix:"redae_decoder"}}}]},F5={schema_version:1,family:"firered_vad",display_name:"FireRed VAD",description:"DFSMN speech activity detection with offline and causal Stream-VAD checkpoints.",category:"audio_tools",status:"experimental",tasks:["vad"],modes:["offline","streaming"],languages:["language_agnostic"],capabilities:{vad:["speech_segments"]},runtime:{tags:["gguf"]},options:{request:[{name:"threshold",type:"float",description:"Speech probability threshold; defaults to 0.4 for VAD and 0.5 for Stream-VAD.",required:!1,min:0,max:1},{name:"smooth_window_ms",type:"int",description:"Trailing probability smoothing window in milliseconds, rounded to the nearest 10 ms. Validation occurs after conversion to 10-ms frames; metadata bounds describe intended settings.",required:!1,default:50,min:10},{name:"min_speech_duration_ms",type:"int",description:"Speech confirmation duration, rounded to the nearest 10 ms; defaults to 200 ms for VAD and 80 ms for Stream-VAD. Validation occurs after conversion to 10-ms frames; metadata bounds describe intended settings.",required:!1,min:10},{name:"max_speech_duration_sec",type:"float",description:"Maximum speech duration in seconds, rounded to the nearest 10 ms. Validation occurs after conversion to 10-ms frames; metadata bounds describe intended settings.",required:!1,default:20,min:.02},{name:"min_silence_duration_ms",type:"int",description:"Silence confirmation duration in milliseconds, rounded to the nearest 10 ms. Validation occurs after conversion to 10-ms frames; metadata bounds describe intended settings.",required:!1,default:200,min:0},{name:"merge_silence_duration_ms",type:"int",description:"Merge shorter internal silence gaps in offline VAD; milliseconds rounded to the nearest 10 ms.",required:!1,default:0,min:0},{name:"speech_pad_ms",type:"int",description:"Extend offline VAD segments on each side; milliseconds rounded to the nearest 10 ms.",required:!1,default:0,min:0},{name:"speech_start_pad_ms",type:"int",description:"Stream-VAD start padding in milliseconds, rounded to the nearest 10 ms and at least the smoothing window.",required:!1,default:50,min:0},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum network duration per offline chunk in seconds, rounded to the nearest 10 ms; each chunk resets network history, matching upstream.",required:!1,default:300,min:.01}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"firered_vad_f32",display_name:"FireRed VAD GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"FireRedVAD-GGUF",files:["FireRedVAD-GGUF/firered-vad-f32.gguf"],strip_prefix:"FireRedVAD-GGUF"},{id:"firered_stream_vad_f32",display_name:"FireRed Stream-VAD GGUF F32",format:"gguf",precision:"f32",target_directory:"FireRedVAD-GGUF",files:["FireRedVAD-GGUF/firered-stream-vad-f32.gguf"],strip_prefix:"FireRedVAD-GGUF"}],dependencies:[],ui:{tags:["VAD","GGUF"],docs:["docs/models/firered_vad.md"],recommended_package:"firered_vad_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},A5={schema_version:1,family:"fireredtts3",display_name:"FireRedTTS3",description:"FireRedTTS3 family for Base zero-shot voice cloning and Instruct instruction-conditioned TTS, voice design, semantic edit, and acoustic edit with Qwen3 autoregressive hidden-state generation, FireRed DiT latent patch flow, and RedAE waveform decoding.",category:"tts",status:"experimental",tasks:["tts","clone","design"],modes:["offline"],languages:["Chinese","English","Cantonese","Japanese","Korean","Spanish","French","Russian","Arabic","Turkish","Indonesian","Portuguese","Italian","Dutch","Vietnamese","German","Ukrainian","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","ZH_Anhui","ZH_Fujian","ZH_Gansu","ZH_Guizhou","ZH_Hebei","ZH_Henan","ZH_Hubei","ZH_Hunan","ZH_Jiangxi","ZH_Liaoning","ZH_Minnan","ZH_Ningxia","ZH_Shaanxi","ZH_Shandong","ZH_Shanghai","ZH_Shanxi","ZH_Sichuan","ZH_Tianjin","ZH_Wenzhou","ZH_Wu","ZH_Yunnan"],runtime:{tags:["gguf"]},dependencies:[],capabilities:{tts:["speaker_reference","style_control"],clone:["speaker_reference","style_control"],design:["voice_design"]},options:{request:[{name:"template_name",type:"enum",description:"Instruct template; defaults to acoustic_edit with input audio, otherwise instruct_tts.",required:!1,values:["instruct_tts","voice_design","semantic_edit","acoustic_edit"]},{name:"reference_text",type:"string",description:"Transcript for the prompt audio.",required:!1},{name:"instruct",type:"string",description:"FireRedTTS3 instruction for voice design or edit tasks.",required:!1},{name:"language",type:"string",description:"Language tag used by FireRedTTS3.",required:!1,default:"Chinese"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 80 when hanzi, kana and Hangul outnumber other letters and digits (except edits), otherwise 600.",required:!1,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"num_inference_steps",type:"int",description:"FireRed DiT flow steps per generated latent patch.",required:!1,min:1,default:10},{name:"guidance_scale",type:"float",description:"Positive guidance scale; defaults to 1.2 for voice-design/semantic-edit/acoustic-edit templates and 2 otherwise.",required:!1,min:0},{name:"stop_threshold",type:"float",description:"Stop probability threshold for AR patch generation.",required:!1,min:0,max:1,default:.5},{name:"seed",type:"int",description:"Unsigned 32-bit sampling seed in [0, 4294967295]; defaults to 2 for voice design and 1234 otherwise.",required:!1,min:0,max:4294967295}],session:[{name:"weight_type",type:"enum",description:"FireRedTTS3 weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"graph_arena_mb",type:"int",description:"Main runtime graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"helper_graph_arena_mb",type:"int",description:"Helper graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 512.",required:!1,min:1,default:512},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse. Applies only to Base; Instruct does not use this cache.",required:!1,min:0,default:4},{name:"mem_saver",type:"bool",description:"Release cached runtime graphs after each request to reduce peak VRAM; default false.",required:!1,default:!1}],load:[]},packages:[{id:"fireredtts3_instruct_orig",display_name:"FireRedTTS3 Instruct Orig GGUF",format:"gguf",precision:"orig",target_directory:"FireRedTTS3-Instruct-GGUF",files:["FireRedTTS3-Instruct-GGUF/fireredtts3-instruct-orig.gguf"],strip_prefix:"FireRedTTS3-Instruct-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"fireredtts3_instruct_q8_0",display_name:"FireRedTTS3 Instruct Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"FireRedTTS3-Instruct-GGUF",files:["FireRedTTS3-Instruct-GGUF/fireredtts3-instruct-q8_0.gguf"],strip_prefix:"FireRedTTS3-Instruct-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"fireredtts3_base_orig",display_name:"FireRedTTS3 Base Orig GGUF",format:"gguf",precision:"orig",target_directory:"FireRedTTS3-Base-GGUF",files:["FireRedTTS3-Base-GGUF/fireredtts3-base-orig.gguf"],strip_prefix:"FireRedTTS3-Base-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"fireredtts3_base_q8_0",display_name:"FireRedTTS3 Base Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"FireRedTTS3-Base-GGUF",files:["FireRedTTS3-Base-GGUF/fireredtts3-base-q8_0.gguf"],strip_prefix:"FireRedTTS3-Base-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}}],ui:{recommended_package:"fireredtts3_instruct_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/models/fireredtts3.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{redae_config:"model:redae/config.json",tokenizer_json:"model:text_tokenizer/tokenizer.json",tokenizer_config:"model:text_tokenizer/tokenizer_config.json",vocab_json:"model:text_tokenizer/vocab.json"},optional_files:{base_config:"model:fireredtts3_base/config.json",instruct_config:"model:fireredtts3_instruct/config.json"},tensors:{redae_weights:{source:"weights:",prefix:"redae"}},optional_tensors:{base_weights:{source:"weights:",prefix:"base"},campplus_weights:{source:"weights:",prefix:"campplus"},instruct_weights:{source:"weights:",prefix:"instruct"}}}]},C5={family:"fish_audio",display_name:"Fish Audio S2 Pro",description:"Fish Audio S2 Pro text-to-speech model for expressive speech across 80+ languages, with automatic language handling, inline prosody/emotion controls, and rapid voice cloning from short reference samples.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["80+ languages"],capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"reference_text",type:"string",description:"Reference transcript; required with inline reference audio.",required:!1},{name:"multi_reference_cond",type:"string",description:'Fish Audio ordered JSON array of reference conditioning pairs for one generated speaker: [{"audio":"ref1.wav","text":"Transcript one."},{"audio":"ref2.wav","text":"Transcript two."}]. This is not a multi-speaker dialogue routing option.',required:!1},{name:"max_tokens",type:"int",description:"Maximum Fish Audio semantic tokens to generate; default 1024. Zero selects the default token budget.",required:!1,min:0,default:1024},{name:"text_chunk_size",type:"int",description:"Maximum characters per generated text chunk; default 200.",required:!1,min:1,default:200},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode; default word_budget.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"},{name:"top_p",type:"float",description:"Top-p sampling value in (0, 1]; default 0.8.",required:!1,min:0,max:1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling value; default 30.",required:!1,min:1,default:30},{name:"temperature",type:"float",description:"Semantic-token sampling temperature in (0, 2); default 0.8.",required:!1,min:0,max:2,default:.8},{name:"seed",type:"int",description:"Sampling seed for reproducible output; omitted uses a random seed.",required:!1,min:0}],session:[{name:"lora",type:"path",description:"Prepared Fish Speech adapter checkpoint; merged into slow/fast decoder and embedding weights at session creation. Codec weights are unchanged.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"mem_saver",type:"bool",description:"Release cached AR runtime graphs after each request; default false.",required:!1,default:!1},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; default 1.",required:!1,min:0,default:1},{name:"weight_type",type:"enum",description:"AR matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"codec_weight_type",type:"enum",description:"Codec conv/matmul weight storage type; default native.",preset:"weight_type_codec_q8",required:!1,default:"native"},{name:"codec_encoder_bf16_compute",type:"bool",description:"Use BF16 reference-encoder arithmetic on CUDA with F16/BF16 codec weights; default false. Decoding is unchanged.",required:!1,default:!1},{name:"ar_graph_arena_mb",type:"int",description:"AR runtime graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"ar_weight_context_mb",type:"int",description:"AR weight context size in MiB; default 32.",required:!1,min:1,default:32},{name:"codec_graph_arena_mb",type:"int",description:"Codec encode/decode graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"codec_weight_context_mb",type:"int",description:"Codec weight context size in MiB; default 32.",required:!1,min:1,default:32}],load:[]},ui:{recommended_package:"fish_audio_s2_pro_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"fish_audio_s2_pro_q8_0",display_name:"Fish Audio S2 Pro Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Fish-Audio-S2-Pro-GGUF",files:["Fish-Audio-S2-Pro-GGUF/fish-audio-s2-pro-q8_0.gguf"],strip_prefix:"Fish-Audio-S2-Pro-GGUF"},{id:"fish_audio_s2_pro_bf16",display_name:"Fish Audio S2 Pro BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Fish-Audio-S2-Pro-GGUF",files:["Fish-Audio-S2-Pro-GGUF/fish-audio-s2-pro-bf16.gguf"],strip_prefix:"Fish-Audio-S2-Pro-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:"model:model_audio_cpp.safetensors.index.json",codec_weights:"model:codec.safetensors"}}]},M5={family:"fish_drama3",display_name:"Fish Audio Drama 3",description:"Fish Audio Drama 3 native MoE speech generation, voice cloning, and continuation.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline","streaming"],languages:["auto"],capabilities:{tts:["long_form"],clone:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"encode_reference_only",type:"bool",description:"Prepare reference VQ codes without generating speech. Use the task API to receive drama3_reference_v1 acoustic-token artifacts.",required:!1,default:!1},{name:"reference_text",type:"string",description:"Transcript of inline reference audio.",required:!1},{name:"multi_reference_cond",type:"string",description:"Ordered references as JSON: [{text, audio_path or vq_codes}]. Speaker tags 0..15 select voices.",required:!1},{name:"references",type:"string",description:"Alias of multi_reference_cond.",required:!1},{name:"previous_takes",type:"string",description:"Continuation/edit history as a JSON array of {text, vq_codes or audio_path}; a string generates that earlier take first.",required:!1},{name:"previous_takes_file",type:"string",description:"JSON history file containing a take object or an ordered array of earlier takes. Avoids the Windows command-line length limit for VQ grids.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated acoustic frames per text chunk (about 21.5 frames/second).",required:!1,min:1,default:1024},{name:"text_chunk_size",type:"int",description:"Maximum characters per long-form chunk.",required:!1,min:1,default:128},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,preset:"text_chunk_mode_full",default:"tag_aware"},{name:"temperature",type:"float",description:"Main and residual sampling temperature. Zero makes the initial draws greedy; semantic repeat redraws retain the fixed Drama 3 RAS settings.",required:!1,min:0,default:1},{name:"top_p",type:"float",description:"Inclusive nucleus cutoff before top-k filtering, matching Drama 3.",required:!1,min:0,max:1,default:.9},{name:"top_k",type:"int",description:"Top-k candidate count. The default 4097 keeps every candidate (no cap), as Fish's Drama 3 Space does; 30 can stall in long silences.",required:!1,min:1,default:4097},{name:"seed",type:"int",description:"Reproducible native sampling seed.",required:!1,min:0}],session:[{name:"backbone_prefill_cache_mb",type:"int",description:"Bounded cache of backbone prefill graphs, in MiB. Reuses exact shapes and their CUDA captures. One active graph is retained even if larger than this budget. Zero retains only the active graph.",required:!1,min:0,max:4096,default:256},{name:"tower_prefill_cache_mb",type:"int",description:"Bounded cache of audio-tower prefill graphs, in MiB. Reuses exact shapes and their CUDA captures. Zero disables it.",required:!1,min:0,max:4096,default:256},{name:"device_sampling",type:"bool",description:"Enable tower decode and codebook sampling in one cached backend graph. Uses F32 probabilities; sampled outputs may differ from the host sampler.",required:!1,default:!0},{name:"profile_first_audio",type:"bool",description:"Emit first-audio stage timings to stderr for performance diagnosis. Disabled by default.",required:!1,default:!1},{name:"context_length",type:"int",description:"Cache capacity for prompt plus generated frames; includes references and history.",required:!1,min:1,default:2048},{name:"cpu_expert_layers",type:"int",description:"Number of the 40 expert banks kept and evaluated on CPU; use 4 for a 24 GB profile or 24 for a 16 GB profile. Dense layers and the tower use the selected backend.",required:!1,min:0,max:40,default:4},{name:"disk_experts",type:"bool",description:"Read routed expert weights from GGUF on demand into a bounded cache instead of keeping full expert banks resident. Trades speed for memory; default false.",required:!1,default:!1},{name:"pin_experts",type:"bool",description:"Keep full expert banks in pinned host RAM for direct cache-miss uploads. Requires disk_experts and pinned host-buffer support; default false.",required:!1,default:!1},{name:"expert_cache_size",type:"int",description:"Resident expert slots per layer in disk_experts mode; 8 to 256. Larger caches trade memory for fewer disk reads; ignored in resident mode.",required:!1,min:8,max:256,default:32},{name:"disk_expert_read_threads",type:"int",description:"Host workers for copying selected GGUF experts into staging when disk_experts is enabled and pin_experts is false. Default 1 preserves serial reads; values above 1 require an OpenMP build.",required:!1,min:1,max:64,default:1},{name:"codec_encoder_f32_accumulation",type:"bool",description:"Use F32 accumulation for F16 reference-encoder GEMMs on Vulkan. Try this if voice cloning produces incomplete speech or reaches the token limit. Other backends and codec decoding are unchanged.",required:!1,default:!1},{name:"codec_encoder_bf16_compute",type:"bool",description:"Use BF16 reference-encoder arithmetic on CUDA with F16/BF16 codec weights; default true. Decoding is unchanged.",required:!1,default:!0},{name:"codec_encoder_chunk_samples",type:"int",description:"Reference-encoder convolution chunk size in samples at the codec sample rate. Use 0 for full encoding or a positive multiple of 512; default 0.",required:!1,min:0,default:0},{name:"codec_backend",type:"enum",description:"Run the codec on the selected backend or on CPU.",required:!1,values:["same","cpu"],default:"same"}],load:[]},ui:{recommended_package:"fish_drama3_q4_experts_q8_backbone",tags:["TTS","Clone","GGUF"],docs:["docs/models/fish_drama3.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"Jmica/Drama-3-GGUF",revision:"main",gated:!1}},packages:[{id:"fish_drama3_q4_experts_q8_backbone",display_name:"Drama 3 Q4_K experts / Q8_0 backbone",description:"Mixed quantization with Q4_K routed experts, Q8_0 backbone matrices, and FP16 audio tower/codec.",default:!0,format:"gguf",precision:"q4_k",target_directory:"Drama-3-GGUF",files:["drama-3-backbone-8bit-experts-Q4_K_S.gguf"]},{id:"fish_drama3_q3_experts_q8_backbone",display_name:"Drama 3 Q3_K experts / Q8_0 backbone",description:"Mixed quantization with Q3_K routed experts, Q8_0 backbone matrices, and FP16 audio tower/codec. Experimental delivery quality.",format:"gguf",precision:"q3_k_s",target_directory:"Drama-3-GGUF",files:["drama-3-backbone-8bit-experts-Q3_K_S.gguf"]},{id:"fish_drama3_q2_experts_q8_backbone",display_name:"Drama 3 Q2_K experts / Q8_0 backbone",description:"Mixed quantization with Q2_K routed experts, Q8_0 backbone matrices, and FP16 audio tower/codec. Use the documented CPU offload settings for smaller GPUs.",format:"gguf",precision:"q2_k",target_directory:"Drama-3-GGUF",files:["drama-3-backbone-8bit-experts-Q2_K.gguf"]},{id:"fish_drama3_q4_backbone",display_name:"Drama 3 Q4_K experts / Q4_K backbone",description:"Q4_K routed experts and backbone matrices, Q4_0 text embedding, and FP16 audio tower/codec. Experimental delivery quality.",format:"gguf",precision:"q4_k",target_directory:"Drama-3-GGUF",files:["drama-3-backbone-4bit-experts-Q4_K_S.gguf"]},{id:"fish_drama3_small_iq3_xxs",display_name:"Drama3-small IQ3_XXS",format:"gguf",precision:"iq3_xxs",target_directory:"Drama3-small-GGUF",files:["drama3-small-IQ3_XXS.gguf"],download:{kind:"huggingface_snapshot",repo:"pentacoxian-dev/drama3-small-GGUF",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}}],schema_version:1,dependencies:[]},E5={schema_version:1,family:"fun_asr_nano",display_name:"Fun-ASR-Nano",description:"Offline multilingual speech recognition with the FunAudioLLM Fun-ASR-Nano-2512 model.",category:"asr",status:"wip",tasks:["asr"],modes:["offline"],languages:["auto","zh","en","ja"],capabilities:{},options:{request:[{name:"language",type:"string",description:"Recognition language, or auto to let the model infer it.",required:!1,default:"auto"},{name:"enable_itn",type:"bool",description:"Enable inverse text normalization in the transcription prompt.",required:!1,default:!0},{name:"max_tokens",type:"int",description:"Maximum number of generated transcript tokens.",required:!1,min:1,default:512},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode: auto, fixed, or none.",values:["auto","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Fixed chunk duration in seconds. Must be finite and positive, rounding to at least one input sample.",required:!1,default:30}],session:[{name:"weight_type",type:"enum",description:"Shared model weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"encoder_weight_type",type:"enum",description:"Encoder matmul storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"adaptor_weight_type",type:"enum",description:"Adaptor matmul storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"decoder_weight_type",type:"enum",description:"Decoder matmul storage. Without an explicit override, CUDA promotes shared native/f16/q8_0 storage to bf16; other backends inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:512},{name:"adaptor_graph_arena_mb",type:"int",description:"Adaptor graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:128},{name:"decoder_prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:256},{name:"decoder_decode_graph_arena_mb",type:"int",description:"Decoder cached-step graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:128},{name:"decoder_weight_context_mb",type:"int",description:"Decoder weight metadata context. Size in MiB; must be positive.",required:!1,min:1,default:32}],load:[]},runtime:{tags:["gguf","server","cuda","metal","cpu"]},packages:[{id:"fun_asr_nano_2512_q8_0",display_name:"Fun-ASR-Nano-2512 Q8_0 GGUF",description:"Standalone audio.cpp GGUF built from the pinned official checkpoint; governed by the FunASR Model Open Source License Agreement v1.1.",default:!0,format:"gguf",precision:"q8_0",target_directory:"Fun-ASR-Nano-2512-GGUF",files:["fun-asr-nano-2512-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"FunAudioLLM/Fun-ASR-Nano-2512-GGUF",revision:"ce72677f84900f0dc57f498ace253bfb3c9155b6",gated:!1}},{id:"fun_asr_nano_2512_f16",display_name:"Fun-ASR-Nano-2512 F16 GGUF",description:"Standalone audio.cpp GGUF built from the pinned official checkpoint; governed by the FunASR Model Open Source License Agreement v1.1.",format:"gguf",precision:"f16",target_directory:"Fun-ASR-Nano-2512-GGUF",files:["fun-asr-nano-2512-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"FunAudioLLM/Fun-ASR-Nano-2512-GGUF",revision:"ce72677f84900f0dc57f498ace253bfb3c9155b6",gated:!1}},{id:"fun_asr_nano_2512_safetensors",display_name:"Fun-ASR-Nano-2512 HF Safetensors",description:"Official checkpoint governed by the FunASR Model Open Source License Agreement v1.1.",format:"safetensors",precision:"native",target_directory:"Fun-ASR-Nano-2512-hf",files:["chat_template.jinja","config.json","generation_config.json","model.safetensors","processor_config.json","tokenizer.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"FunAudioLLM/Fun-ASR-Nano-2512-hf",revision:"854d88f94205cd17d2afdb24332130d86fbe654a",gated:!1}}],dependencies:[],ui:{recommended_package:"fun_asr_nano_2512_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"],summary:"Offline Fun-ASR-Nano transcription from official safetensors or audio.cpp GGUF."},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},optional_files:{chat_template_jinja:"model:chat_template.jinja",tokenizer_config:"model:tokenizer_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},optional_files:{chat_template_jinja:"model:chat_template.jinja",tokenizer_config:"model:tokenizer_config.json"},tensors:{weights:"model:model.safetensors"}}]},z5={schema_version:1,family:"gigaam_asr",display_name:"GigaAM ASR",description:"GigaAM v3 and Multilingual Conformer speech recognition with CTC or RNN-T decoding.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["ru","kk","ky","uz","en"],capabilities:{asr:["word_timestamps","vad_chunking"]},dependencies:[],options:{request:[{name:"return_timestamps",type:"bool",description:"Return word timestamps derived from decoder token emission frames.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","quiet_energy","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio chunk in seconds.",required:!1,min:.02,max:25,default:25}],session:[{name:"vad_model_path",type:"path",description:"Offline VAD model used only with audio_chunk_mode=vad.",required:!1,default:""},{name:"weight_type",type:"enum",description:"Weight storage type.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"gigaam_v3_ctc_f16",tags:["ASR","GGUF"],docs:["docs/models/gigaam_asr.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"gigaam_v3_ctc_f16",display_name:"GigaAM v3 CTC F16 GGUF",default:!0,format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-v3-ctc-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_v3_rnnt_f16",display_name:"GigaAM v3 RNN-T F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-v3-rnnt-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_v3_e2e_ctc_f16",display_name:"GigaAM v3 E2E CTC F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-v3-e2e-ctc-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_v3_e2e_rnnt_f16",display_name:"GigaAM v3 E2E RNN-T F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-v3-e2e-rnnt-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_multilingual_ctc_f32",display_name:"GigaAM Multilingual CTC F32 GGUF",format:"gguf",precision:"f32",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-multilingual-ctc-f32.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_multilingual_ctc_f16",display_name:"GigaAM Multilingual CTC F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-multilingual-ctc-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_multilingual_large_ctc_f32",display_name:"GigaAM Multilingual Large CTC F32 GGUF",format:"gguf",precision:"f32",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-multilingual-large-ctc-f32.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_multilingual_large_ctc_f16",display_name:"GigaAM Multilingual Large CTC F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-multilingual-large-ctc-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}}]},U5={schema_version:1,family:"glm_tts",display_name:"GLM-TTS",description:"Community Chinese-English zero-shot speech synthesis and voice cloning with native Llama, Whisper-VQ, Flow/DiT, CAMPPlus, and HiFT execution.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline"],languages:["zh","en"],capabilities:{clone:["speaker_reference"]},options:{request:[{name:"reference_text",type:"string",description:"Transcript matching the reference voice audio; required by GLM-TTS zero-shot synthesis.",required:!0},{name:"max_tokens",type:"int",description:"Maximum generated speech tokens; otherwise the official 2x-to-20x text-token bounds are used. Nonpositive values select the automatic text-derived budget.",required:!1,default:0},{name:"temperature",type:"float",description:"Speech-token temperature; official default 1.0. Nonpositive values select greedy decoding.",required:!1,default:1},{name:"top_k",type:"int",description:"Speech-token top-k; official default 25. Nonpositive values disable top-k filtering.",required:!1,default:25},{name:"top_p",type:"float",description:"Speech-token nucleus threshold; official default 0.8. Out-of-range values are not rejected by the parser.",required:!1,default:.8},{name:"seed",type:"int",description:"Speech-token, Flow-noise, and HiFT seed.",required:!1,min:0,default:0},{name:"num_inference_steps",type:"int",description:"Flow Euler steps; defaults to model config, usually official default 10.",required:!1,min:1},{name:"flow_guidance_scale",type:"float",description:"Flow classifier-free guidance rate; defaults to model config, usually official default 0.7. Negative values are accepted and enter the CFG formula.",required:!1},{name:"flow_noise_file",type:"path",description:"Optional raw float32 initial Flow noise for parity tests.",required:!1},{name:"hift_source_random_file",type:"path",description:"Optional raw float32 HiFT phase-uniform and Gaussian values for parity tests.",required:!1},{name:"hift_prior_noise_count",type:"int",description:"Torch RNG value offset used before HiFT source generation; default 0.",required:!1,min:0,default:0}],session:[{name:"weight_type",type:"enum",description:"Requested component weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"mem_saver",type:"bool",description:"Release reference-only encoders after caching the voice while keeping the generation path warm; default false.",required:!1,default:!1},{name:"aggressive_mem_saver",type:"bool",description:"Also release Llama, Flow, and HiFT after every stage. Minimizes VRAM but reloads the generation path on every request; default false.",required:!1,default:!1},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; default 1. Use 0 to disable.",required:!1,min:0,default:1},{name:"llama_weight_context_mb",type:"int",description:"Llama weight metadata context in MiB; default 8192.",required:!1,min:1,default:8192},{name:"constant_context_mb",type:"int",description:"Llama constant tensor context in MiB; default 256.",required:!1,min:1,default:256}],load:[]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{llama_config:"model:llm/config.json",llama_generation_config:"model:llm/generation_config.json",speech_tokenizer_config:"model:speech_tokenizer/config.json",speech_tokenizer_preprocessor:"model:speech_tokenizer/preprocessor_config.json",tokenizer_config:"model:vq32k-phoneme-tokenizer/tokenizer_config.json",tokenizer_vocab:"model:vq32k-phoneme-tokenizer/tokenizer_vocab.json",tokenizer_merges:"model:vq32k-phoneme-tokenizer/tokenizer_merges.txt",flow_config:"model:flow/config.yaml",audio_cpp_config:"model:audio_cpp_config.json"},tensors:{llama_weights:{source:"weights:",prefix:"llama_weights"},speech_tokenizer_weights:{source:"weights:",prefix:"speech_tokenizer_weights"},flow_weights:{source:"weights:",prefix:"flow_weights"},hift_weights:{source:"weights:",prefix:"hift_weights"},campplus_weights:{source:"weights:",prefix:"campplus_weights"}}},{format:"safetensors",roots:{model:"."},files:{llama_config:"model:llm/config.json",llama_generation_config:"model:llm/generation_config.json",speech_tokenizer_config:"model:speech_tokenizer/config.json",speech_tokenizer_preprocessor:"model:speech_tokenizer/preprocessor_config.json",tokenizer_config:"model:vq32k-phoneme-tokenizer/tokenizer_config.json",tokenizer_vocab:"model:vq32k-phoneme-tokenizer/tokenizer_vocab.json",tokenizer_merges:"model:vq32k-phoneme-tokenizer/tokenizer_merges.txt",flow_config:"model:flow/config.yaml",audio_cpp_config:"model:audio_cpp_config.json"},tensors:{llama_weights:"model:llm/model.safetensors.index.json",speech_tokenizer_weights:"model:speech_tokenizer/model.safetensors",flow_weights:"model:flow/model.safetensors",hift_weights:"model:hift/model.safetensors",campplus_weights:"model:frontend/campplus.safetensors"}}],packages:[{id:"glm_tts_q8_0",display_name:"GLM-TTS mixed Q8_0/F16 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"GLM-TTS-Q8",files:["Text to audio (TTS)/GLM-TTS_Q8.gguf"],download:{kind:"huggingface_snapshot",repo:"mirek190/audio.cpp"}}],dependencies:[],ui:{recommended_package:"glm_tts_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/glm_tts.md","docs/reports/glm_tts_validation.md","docs/gguf.md"]}},B5={schema_version:1,family:"gradium_phonon",display_name:"Gradium Phonon",description:"Gradium's Phonon text-to-speech: a small flow-matching language model with a Mimi decoder, a descendant of Kyutai's pocket-tts, for real-time local synthesis on CPU and GPU with prepared voices.",category:"tts",status:"experimental",tasks:["tts"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["built_in_voices","long_form"]},options:{request:[{name:"frames_after_eos",type:"int",description:"Frames kept after EOS, counting the EOS frame; -1 keeps 4 for texts of up to four words and 2 otherwise, as the reference does.",required:!1,min:-1,default:-1},{name:"max_frames",type:"int",description:"Maximum generated audio frames; zero estimates the cap from text length. Captured during session preparation.",required:!1,min:0,default:0},{name:"text_chunk_tokens",type:"int",description:"Tokenizer tokens per text chunk; must be positive, default 50. Set during preparation and overridable per request.",required:!1,min:1,default:50},{name:"temperature",type:"float",description:"Positive flow noise temperature. Captured during session preparation.",required:!1,default:.3},{name:"seed",type:"int",description:"Noise seed; omitted chooses a random seed. Captured during session preparation.",required:!1,min:0,max:4294967295},{name:"noise_clamp",type:"float",description:"Noise clamp; a negative value disables clamping. Captured during session preparation.",required:!1,default:-1},{name:"eos_threshold",type:"float",description:"EOS detection threshold on the EOS logit. Captured during session preparation.",required:!1,default:4},{name:"noise_file",type:"path",description:"Precomputed noise schedule, raw float32 [frames, 32], used as given. Captured during session preparation.",required:!1},{name:"voice_embedding_file",type:"path",description:"Voice file: a speaker_wavs latent file such as those of gradium/phonon-voices, or an exported voice state. Captured during session preparation.",required:!1},{name:"text_chunk_size",type:"int",description:"Optional per-request character chunk size; otherwise use sentence/token budgeting.",required:!1},{name:"export_voice_state_file",type:"path",description:"Export the prepared voice state during session preparation.",required:!1}],session:[{name:"voice_state_cache_slots",type:"int",description:"Cached prepared voice states; zero disables reuse.",required:!1,min:0,default:4},{name:"offline_graph_capacity_mode",type:"enum",description:"Offline graph capacity policy; CPU/Metal default tiered, other backends double.",required:!1,values:["fixed","double","tiered","grow"]},{name:"prompt_graph_capacity",type:"int",description:"Optional reserved prompt capacity.",required:!1,min:1},{name:"generation_graph_capacity",type:"int",description:"Optional reserved generation capacity.",required:!1,min:1},{name:"weight_type",type:"enum",description:"Shared matmul weight storage; component matmul settings inherit it. Convolution storage remains independently native unless overridden.",required:!1,preset:"weight_type_full"},{name:"matmul_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage.",required:!1,preset:"weight_type_conv",default:"native"},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"flow_weight_context_mb",type:"int",description:"Flow weight context in MiB; inherits gradium_phonon.weight_context_mb when omitted.",required:!1,min:1},{name:"mimi_decoder_weight_context_mb",type:"int",description:"Mimi decoder weight context in MiB; inherits gradium_phonon.weight_context_mb when omitted.",required:!1,min:1},{name:"flow_weights_view_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"flow_step_graph_arena_mb",type:"int",description:"Flow-step host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:256},{name:"mimi_conv_graph_arena_mb",type:"int",description:"Mimi convolution host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:32},{name:"mimi_transformer_graph_arena_mb",type:"int",description:"Mimi transformer host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:96},{name:"mimi_tail_graph_arena_mb",type:"int",description:"Mimi tail host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:512},{name:"mimi_full_chunk_frames",type:"int",description:"Full-sequence decoder chunk frames.",required:!1,min:1,default:90},{name:"mimi_stage2_chunk_frames",type:"int",description:"Second-stage decoder chunk frames.",required:!1,min:1,default:900},{name:"use_full_mimi",type:"bool",description:"Use full-sequence Mimi decoding.",required:!1,default:!0}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"gradium/phonon-31m-en-audiocpp",revision:"main",gated:!1}},packages:[{id:"gradium_phonon_31m_en_q8_0",display_name:"Phonon 31m English Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"phonon-31m-en",files:["phonon-31m-en-q8_0.gguf","default-voice.safetensors"]},{id:"gradium_phonon_31m_en_safetensors",display_name:"Phonon 31m English Safetensors",format:"safetensors",precision:"native",target_directory:"phonon-31m-en-safetensors",files:["config.json","tokenizer.model","model.safetensors","default-voice.safetensors"],download:{kind:"huggingface_snapshot",repo:"gradium/phonon-31m-en",revision:"52433c46975bfa13144c56204c9f4ee1c5b148aa",gated:!1}}],dependencies:[],ui:{recommended_package:"gradium_phonon_31m_en_q8_0",default_voice:"default",builtin_voices:["default"],tags:["TTS","GGUF"],docs:["docs/models/gradium_phonon.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"model:model.safetensors"}}]},R5={family:"granite5asr",display_name:"Granite Speech 5.0 470M TurboCTC",description:"IBM Granite Speech 5.0 TurboCTC 470M parameter Conformer CTC model. The current checkpoint transcribes English, French, German, Spanish, Portuguese, Italian, and Japanese with punctuation and capitalization. An older English-only checkpoint still loads.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["en","fr","de","es","pt","it","ja"],capabilities:{asr:["vad_chunking","partial_results","word_timestamps"]},options:{request:[{name:"language",type:"string",description:"Accepted and ignored. Granite has no language input. A result is labelled en unless decoding emits a trained language token such as <|fr|>.",required:!1,default:"en"},{name:"audio_chunk_mode",type:"enum",description:"Offline chunk mode: auto, fixed, vad, or none. VAD requires a regular model file; otherwise fixed chunks are used.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Positive maximum audio chunk duration for fixed and VAD chunking.",required:!1,min:.001,default:30}],session:[{name:"weight_type",type:"enum",description:"Shared model weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MB. Positive MiB allocation; invalid/nonpositive values resolve to 1024 MiB.",required:!1,min:1,default:1024},{name:"vad_model_path",type:"string",description:"Path to a Silero VAD model file, not a directory; VAD runs only when this path is a regular file.",required:!1}],load:[]},runtime:{tags:["gguf","server","stream","cuda","metal","cpu"]},ui:{recommended_package:"granite5asr_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/models/granite5asr.md","docs/asr.md","docs/gguf.md"],summary:"IBM Granite Speech 5.0 470M TurboCTC multilingual transcription."},package_defaults:{download:{kind:"huggingface_snapshot",repo:"ibm-granite/granite-speech-5.0-470m-turboctc",revision:"main",gated:!1}},packages:[{id:"granite5asr_q8_0",display_name:"Granite Speech 5.0 470M TurboCTC Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Granite-Speech-5.0-470M-TurboCTC-GGUF",files:["Granite-Speech-5.0-470M-TurboCTC-GGUF/granite-speech-5.0-470m-turboctc-q8_0.gguf"],strip_prefix:"Granite-Speech-5.0-470M-TurboCTC-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"granite5asr_safetensors",display_name:"Granite Speech 5.0 470M TurboCTC Native Safetensors",format:"safetensors",precision:"bfloat16",target_directory:"granite5asr",files:["config.json","tokenizer.json","model.safetensors"]}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{weights:"model:model.safetensors"}}]},j5={schema_version:1,family:"heartmula",display_name:"HeartMuLa",description:"Open-source music foundation model for generating complete songs from text, lyric prompts, and style tags, with controllable song structure and broad multilingual lyric conditioning.",category:"audio_generation",status:"supported",tasks:["music"],modes:["offline"],languages:["multilingual"],capabilities:{music:["lyrics","style_control"]},options:{request:[{name:"lyrics",type:"string",description:"Lyrics text.",required:!1},{name:"tags",type:"string",description:"Comma-separated music tags.",required:!1},{name:"duration_sec",type:"float",description:"Maximum generated audio duration in seconds; must be > 0 when set; default 120.",required:!1,min:0,default:120},{name:"temperature",type:"float",description:"Audio-token sampling temperature; must be > 0 when set; default 1.0.",required:!1,min:0,default:1},{name:"top_k",type:"int",description:"Audio-token top-k sampling limit; default 50. Must not exceed the active audio vocabulary size.",required:!1,min:1,default:50},{name:"guidance_scale",type:"float",description:"MuLa classifier-free guidance scale; must be > 0 when set; default 1.5.",required:!1,min:0,default:1.5},{name:"codec_duration_sec",type:"float",description:"Codec detokenization chunk duration in seconds; must be > 0 when set; default 29.76.",required:!1,min:0,default:29.76},{name:"num_inference_steps",type:"int",description:"Codec flow solver steps; default 10.",required:!1,min:1,default:10},{name:"codec_guidance_scale",type:"float",description:"Codec classifier-free guidance scale; must be > 0 when set; default 1.25.",required:!1,min:0,default:1.25},{name:"infinite_mode",type:"bool",description:"Generate long outputs by splitting lyrics into bounded HeartMuLa requests.",required:!1,default:!1},{name:"text_chunk_size",type:"int",description:"Maximum characters per text chunk in infinite mode; default 4096.",required:!1,min:1,default:4096},{name:"infinite_chunk_audio_duration_ms",type:"int",description:"Maximum generated audio duration per infinite-mode chunk in milliseconds; default 240000.",required:!1,min:1,default:24e4},{name:"seed",type:"int",description:"Generation seed for reproducible output; default 1234.",required:!1,min:0,default:1234}],session:[{name:"weight_type",type:"enum",description:"MuLa and codec weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"generator_weight_type",type:"enum",description:"MuLa music-token generator weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_full",required:!1},{name:"codec_weight_type",type:"enum",description:"Codec weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_full",required:!1},{name:"generator_weight_context_mb",type:"int",description:"MuLa music-token generator weight descriptor context size in MiB; default 32.",required:!1,min:1,default:32},{name:"codec_weight_context_mb",type:"int",description:"Codec weight descriptor context size in MiB; default 32.",required:!1,min:1,default:32},{name:"generator_constant_context_mb",type:"int",description:"MuLa music-token generator reusable constant context size in MiB; default 256.",required:!1,min:1,default:256},{name:"backbone_prefill_graph_arena_mb",type:"int",description:"MuLa music-token generator backbone prefill graph arena size in MiB; default 1536.",required:!1,min:1,default:1536},{name:"backbone_step_graph_arena_mb",type:"int",description:"MuLa music-token generator backbone cached-step graph arena size in MiB; default 1536.",required:!1,min:1,default:1536},{name:"decoder_prefill_graph_arena_mb",type:"int",description:"MuLa music-token generator decoder prefill graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"decoder_step_graph_arena_mb",type:"int",description:"MuLa music-token generator decoder cached-step graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"frame_embedding_graph_arena_mb",type:"int",description:"MuLa music-token generator frame-embedding graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"flow_estimator_graph_arena_mb",type:"int",description:"Codec flow-estimator graph arena size in MiB; default 2048.",required:!1,min:1,default:2048},{name:"conditioning_graph_arena_mb",type:"int",description:"Codec conditioning graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"scalar_decoder_graph_arena_mb",type:"int",description:"Codec scalar-decoder graph arena size in MiB; default 1536.",required:!1,min:1,default:1536},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs after each request; default false.",required:!1,default:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"heartmula_q8_0",tags:["Music","GGUF"],docs:["docs/music_generation.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"heartmula_q8_0",display_name:"HeartMuLa Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"HeartMuLa-GGUF",files:["HeartMuLa-GGUF/heartmula-q8_0.gguf"],strip_prefix:"HeartMuLa-GGUF"},{id:"heartmula_f16",display_name:"HeartMuLa F16 GGUF",format:"gguf",precision:"f16",target_directory:"HeartMuLa-GGUF",files:["HeartMuLa-GGUF/heartmula-f16.gguf"],strip_prefix:"HeartMuLa-GGUF"}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tokenizer_json:"model:tokenizer.json",generation_config:"model:gen_config.json",mula_config:"model:HeartMuLa-oss-3B/config.json",codec_config:"model:HeartCodec-oss/config.json"},tensors:{mula_weights:{source:"weights:",prefix:"mula_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}},{format:"safetensors",roots:{model:"."},files:{tokenizer_json:"model:tokenizer.json",generation_config:"model:gen_config.json",mula_config:"model:HeartMuLa-oss-3B/config.json",codec_config:"model:HeartCodec-oss/config.json"},tensors:{mula_weights:"model:HeartMuLa-oss-3B/model.safetensors.index.json",codec_weights:"model:HeartCodec-oss/model.safetensors.index.json"}}]},P5={schema_version:1,family:"higgs_audio_stt",display_name:"Higgs Audio v3 STT",description:"Boson AI English speech-to-text model combining a Whisper Large v3 speech encoder with a Qwen decoder for robust ASR.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["en"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Transcript language code metadata; English is used when omitted.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens; default 1024.",required:!1,min:1,default:1024},{name:"enable_thinking",type:"bool",description:"Enable the model thinking prompt; default true.",required:!1,default:!0},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode; default auto uses fixed chunks.",values:["auto","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Fixed audio chunk duration in seconds; must be > 0 when set; default 4.",required:!1,min:0,default:4}],session:[{name:"weight_type",type:"enum",description:"Shared text decoder weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"audio_encoder_weight_type",type:"enum",description:"Audio encoder convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"text_decoder_weight_type",type:"enum",description:"Text decoder matmul weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_full",required:!1},{name:"audio_encoder_graph_arena_mb",type:"int",description:"Audio encoder graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"text_decoder_prefill_graph_arena_mb",type:"int",description:"Text decoder prefill graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"text_decoder_decode_graph_arena_mb",type:"int",description:"Text decoder cached-step graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"text_decoder_weight_context_mb",type:"int",description:"Text decoder weight context in MiB; omitted uses 4096 on 64-bit builds or 1024 on 32-bit builds.",required:!1,min:1}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"higgs_audio_stt_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/models/higgs_audio_stt.md","docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"higgs_audio_stt_q8_0",display_name:"Higgs Audio v3 STT Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Higgs-Audio-v3-STT-GGUF",files:["Higgs-Audio-v3-STT-GGUF/higgs-audio-v3-stt-q8_0.gguf"],strip_prefix:"Higgs-Audio-v3-STT-GGUF"},{id:"higgs_audio_stt_f16",display_name:"Higgs Audio v3 STT F16 GGUF",format:"gguf",precision:"f16",target_directory:"Higgs-Audio-v3-STT-GGUF",files:["Higgs-Audio-v3-STT-GGUF/higgs-audio-v3-stt-f16.gguf"],strip_prefix:"Higgs-Audio-v3-STT-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",preprocessor_config:"model:preprocessor_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:".",whisper:"../whisper-large-v3"},files:{config:"model:config.json",generation_config:"model:generation_config.json",preprocessor_config:"whisper:preprocessor_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:"model:model.safetensors.index.json"}}]},N5={family:"higgs_audio_tts",display_name:"Higgs Audio v3 TTS",description:"Boson AI conversational TTS model for expressive speech across 100+ languages, zero-shot voice cloning, and inline control over emotion, style, prosody, pauses, and sound effects.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["100+ languages"],options:{request:[{name:"stream_frames_per_event",type:"int",description:"Streaming codec frames per event; grow starts at one and increases to this cap. Each frame is 40 ms of audio.",required:!1,min:1,default:32},{name:"stream_chunk_policy",type:"enum",description:"Streaming chunk schedule. The non-causal codec always retains ten frames of left and right context.",required:!1,values:["grow","fixed"],default:"grow"},{name:"max_tokens",type:"int",description:"Maximum generated AR tokens; zero uses the default. Must not exceed the configured context length.",required:!1,min:0,default:2048},{name:"allow_incomplete_generation",type:"bool",description:"Return generated audio with a warning instead of failing when max_tokens is reached before EOC. Audio may be truncated or contain silence/noise.",required:!1,default:!1},{name:"temperature",type:"float",description:"AR sampling temperature. Must be positive.",required:!1,default:.8},{name:"top_p",type:"float",description:"AR nucleus sampling probability. Must be positive.",required:!1,default:.8},{name:"top_k",type:"int",description:"AR top-k sampling limit.",required:!1,default:30,min:0},{name:"filter_nan_logits",type:"bool",description:"Filter NaN and infinity during greedy and stochastic top-k selection. All-invalid logits still fail.",required:!1,default:!1},{name:"repetition_penalty",type:"float",description:"Accepted for Python API compatibility; audio sampling does not consume this value. Compatibility-only, but must be finite and positive.",required:!1,default:1.1},{name:"seed",type:"int",description:"Torch sampling seed; omitted chooses a random seed.",required:!1,min:0},{name:"reference_text",type:"string",description:"Transcript accompanying reference audio.",required:!1,default:""},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size.",required:!1,default:1024,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,values:["default","tag_aware","japanese","endline"],default:"default"}],session:[{name:"reference_prefill_mode",type:"enum",description:"Cached-reference prefill attention. auto preserves existing behavior. Try exact if repeated voice-cloning requests produce excessive repetition or unexpectedly long, mostly silent output. May increase prefill time; not a general generation-quality fix. Full-prompt prefill and AR decoding are unchanged.",required:!1,values:["auto","exact"],default:"auto"},{name:"weight_type",type:"enum",description:"Weight storage type.",required:!1,preset:"weight_type_full",default:"native"},{name:"ar_weight_type",type:"enum",description:"AR weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"codec_weight_type",type:"enum",description:"Codec weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"ar_weight_context_mb",type:"int",description:"AR weight context in MiB; 4096 on 64-bit builds, 1024 on 32-bit builds.",required:!1,min:1},{name:"codec_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:1536},{name:"ar_decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"codec_decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128},{name:"codec_encode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"reference_cache_slots",type:"int",description:"Encoded reference cache slots; zero disables reuse.",required:!1,min:0,default:1},{name:"attention",type:"enum",description:"Attention lowering preference.",required:!1,values:["auto","flash","eager"],default:"auto"}],load:[]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"higgs_audio_tts_4b_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/higgs_audio_tts.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"higgs_audio_tts_4b_q8_0",display_name:"Higgs Audio v3 TTS 4B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Higgs-Audio-v3-TTS-4B-GGUF",files:["Higgs-Audio-v3-TTS-4B-GGUF/higgs-audio-v3-tts-4b-q8_0.gguf"],strip_prefix:"Higgs-Audio-v3-TTS-4B-GGUF"},{id:"higgs_audio_tts_4b_bf16",display_name:"Higgs Audio v3 TTS 4B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Higgs-Audio-v3-TTS-4B-GGUF",files:["Higgs-Audio-v3-TTS-4B-GGUF/higgs-audio-v3-tts-4b-bf16.gguf"],strip_prefix:"Higgs-Audio-v3-TTS-4B-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",chat_template:"model:chat_template.jinja"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",chat_template:"model:chat_template.jinja"},tensors:{weights:"model:model.safetensors.index.json"}}]},O5={schema_version:1,family:"htdemucs",display_name:"HTDemucs",description:"Hybrid Transformer Demucs music source-separation model that combines waveform and spectrogram processing with Transformer layers to split mixtures into vocals, drums, bass, and accompaniment.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"HTDemucs weight storage type; default is f32 for host graph planning, f16 on CUDA, otherwise native.",preset:"weight_type_full",required:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"htdemucs_q8_0",tags:["Sep","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"htdemucs_q8_0",display_name:"HTDemucs Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"HTDemucs-GGUF",files:["HTDemucs-GGUF/htdemucs-q8_0.gguf"],strip_prefix:"HTDemucs-GGUF"},{id:"htdemucs_f16",display_name:"HTDemucs F16 GGUF",format:"gguf",precision:"f16",target_directory:"HTDemucs-GGUF",files:["HTDemucs-GGUF/htdemucs-f16.gguf"],strip_prefix:"HTDemucs-GGUF"}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{manifest:"model:manifest.json",submodel_config:"model:955717e8/config.json"},tensors:{submodel_weights:{source:"weights:",prefix:"submodel_weights"}}},{format:"safetensors",roots:{model:".",submodel:"955717e8"},files:{manifest:"model:manifest.json",submodel_config:"submodel:config.json"},tensors:{submodel_weights:"submodel:model.safetensors"}}]},I5={schema_version:1,family:"htdemucs_6stems",display_name:"HTDemucs 6-stem",description:"Hybrid Transformer Demucs 6-stem source-separation model that combines waveform and spectrogram processing with Transformer layers to split mixtures into drums, bass, vocals, other, guitar, and piano.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"HTDemucs 6-stem weight storage type; default is f32 for host graph planning, f16 on CUDA, otherwise native.",preset:"weight_type_full",required:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"htdemucs_6stems_q8_0",tags:["Sep","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"htdemucs_6stems_q8_0",display_name:"HTDemucs 6-stem Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"HTDemucs-6stems-GGUF",files:["HTDemucs-6stems-GGUF/htdemucs-6stems-q8_0.gguf"],strip_prefix:"HTDemucs-6stems-GGUF"},{id:"htdemucs_6stems_f16",display_name:"HTDemucs 6-stem F16 GGUF",format:"gguf",precision:"f16",target_directory:"HTDemucs-6stems-GGUF",files:["HTDemucs-6stems-GGUF/htdemucs-6stems-f16.gguf"],strip_prefix:"HTDemucs-6stems-GGUF"}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{manifest:"model:manifest.json",submodel_config:"model:5c90dfd2/config.json"},tensors:{submodel_weights:{source:"weights:",prefix:"submodel_weights"}}},{format:"safetensors",roots:{model:".",submodel:"5c90dfd2"},files:{manifest:"model:manifest.json",submodel_config:"submodel:config.json"},tensors:{submodel_weights:"submodel:model.safetensors"}}]},L5={family:"hviske_asr",schema_version:1,display_name:"Hviske ASR",description:"Danish-optimized Conformer encoder-decoder ASR model fine-tuned from the Hviske v5 family, with selectable Cohere ASR language prompts.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["ar","da","de","el","en","es","fr","it","ja","ko","nl","pl","pt","vi","zh"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"ASR language code; default da.",required:!1,default:"da"},{name:"punc",type:"bool",description:"Request punctuation and capitalization together through decoder prompt tokens; default true.",required:!1,default:!0},{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens; defaults to the model config.",required:!1,min:1},{name:"num_beams",type:"int",description:"Beam-search beam count; default 1 uses greedy or sampling decode.",required:!1,min:1,default:1},{name:"length_penalty",type:"float",description:"Beam-search length penalty; must be positive when set; default 1.0.",required:!1,min:1e-6,default:1},{name:"do_sample",type:"bool",description:"Enable sampling instead of greedy decode when num_beams is 1; default false.",required:!1,default:!1},{name:"temperature",type:"float",description:"Decoder sampling temperature; must be positive when set; default 1.0.",required:!1,min:1e-6,default:1},{name:"top_k",type:"int",description:"Top-k sampling limit; default 50, 0 disables top-k.",required:!1,min:0,default:50},{name:"top_p",type:"float",description:"Nucleus sampling limit in (0, 1]; default 1.0.",required:!1,min:1e-6,max:1,default:1},{name:"seed",type:"int",description:"Decoder sampling seed; default 0.",required:!1,min:0,default:0},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode; default auto uses quiet-energy splitting only when audio exceeds the model clip window.",values:["auto","fixed","quiet_energy","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum audio chunk duration in seconds; defaults to the model clip window.",required:!1,min:1e-6}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_conv",required:!1},{name:"weight_context_mb",type:"int",description:"Weight descriptor context size in MiB; default 32.",required:!1,min:1,default:32},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"decoder_prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"decoder_decode_graph_arena_mb",type:"int",description:"Decoder cached-step graph arena size in MiB; default 512.",required:!1,min:1,default:512}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"hviske_asr_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"]},packages:[{id:"hviske_asr_q8_0",display_name:"Hviske v5.3 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Hviske-v5.3-GGUF",files:["Audio to text (ASR)/hviske-v5.3_Q8.gguf"],strip_prefix:"Audio to text (ASR)",download:{kind:"huggingface_snapshot",repo:"mirek190/audio.cpp"}},{id:"hviske_asr_safetensors",display_name:"Hviske v5.3 Safetensors",format:"safetensors",precision:"native",target_directory:"hviske-v5.3",files:["config.json","generation_config.json","model.safetensors","tokenizer.model"],download:{kind:"huggingface_snapshot",repo:"syvai/hviske-v5.3"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"model:model.safetensors"}}]},D5={schema_version:1,family:"hviske_asr_v6",display_name:"Hviske v6",description:"Danish speech recognition with a rotary Whisper encoder and Qwen3 decoder.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["da"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_mode",type:"enum",description:"auto preserves silence splitting above 30 seconds; silence splits above the configured duration at silence boundaries; fixed splits at the configured duration; none disables splitting and accepts at most 30 seconds.",required:!1,default:"auto",values:["auto","silence","fixed","none"]},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum chunk duration when splitting. In auto mode the 30-second trigger remains unchanged.",required:!1,default:28,min:.001,max:30},{name:"max_tokens",type:"int",description:"Maximum generated tokens per chunk, also capped to eight tokens per audio second plus twelve.",required:!1,default:440,min:1},{name:"num_beams",type:"int",description:"Beam-search width. One selects greedy decoding.",required:!1,default:2,min:1},{name:"length_penalty",type:"float",description:"Exponent used to normalize beam scores by generated length.",required:!1,default:1},{name:"cased",type:"bool",description:"Request casing separately from punctuation. Both cased and punc must be provided to override automatic formatting.",required:!1},{name:"punc",type:"bool",description:"Request punctuation only, unlike the combined punctuation/casing control in Canary, Cohere and original Hviske. Both cased and punc must be provided to override automatic formatting.",required:!1}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",description:"Weight storage override; native preserves the supplied checkpoint types.",required:!1,default:"native"}],load:[]},packages:[{id:"hviske_asr_v6_bf16",display_name:"Hviske v6 BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"Hviske-v6-GGUF",files:["Hviske-v6-GGUF/hviske-v6-bf16.gguf"],strip_prefix:"Hviske-v6-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf"}},{id:"hviske_asr_v6_q8_0",display_name:"Hviske v6 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Hviske-v6-GGUF",files:["Hviske-v6-GGUF/hviske-v6-q8_0.gguf"],strip_prefix:"Hviske-v6-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf"}}],dependencies:[],ui:{recommended_package:"hviske_asr_v6_bf16",tags:["ASR","GGUF"],docs:["docs/models/hviske_asr_v6.md"]},sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:{source:"model:model.safetensors"}}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},V5={schema_version:1,family:"index_echo",display_name:"Index-Echo-S2TT",description:"Index-Echo speech-to-text translation with bilingual timestamped subtitles.",category:"asr",status:"experimental",tasks:["asr"],modes:["offline"],languages:["zh","en","es","ja"],runtime:{tags:["gguf"]},capabilities:{},dependencies:[],options:{request:[{name:"target_language",type:"enum",values:["en","es","ja"],description:"Translation language for Chinese input audio.",required:!1,default:"en"},{name:"max_tokens",type:"int",description:"Maximum translated text tokens per window.",required:!1,min:1,default:2e3},{name:"temperature",type:"float",description:"Sampling temperature; zero selects greedy decoding.",required:!1,min:0,max:2,default:0},{name:"seed",type:"int",description:"Sampling seed when temperature is positive.",required:!1,min:0,max:2147483647,default:0},{name:"glossary",type:"string",description:"Translation glossary entries.",required:!1},{name:"audio_chunk_mode",type:"enum",values:["auto","quiet_energy","fixed","none"],description:"Long-form audio windowing mode.",required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum audio-window duration.",required:!1,min:1,max:60,default:60}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",description:"Weight storage type for runtime matmul operations.",required:!1,default:"native"}],load:[]},packages:[{id:"index_echo_s2tt_2b_orig",display_name:"Index-Echo-S2TT 2B Original",default:!0,format:"gguf",precision:"orig",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-2b-orig.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}},{id:"index_echo_s2tt_2b_q8_0",display_name:"Index-Echo-S2TT 2B Q8_0",format:"gguf",precision:"q8_0",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-2b-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}},{id:"index_echo_s2tt_2b_q4_k",display_name:"Index-Echo-S2TT 2B Q4_K (experimental)",format:"gguf",precision:"q4_k",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-2b-q4_k.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}},{id:"index_echo_s2tt_9b_orig",display_name:"Index-Echo-S2TT 9B Original",format:"gguf",precision:"orig",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-9b-orig.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}},{id:"index_echo_s2tt_9b_q8_0",display_name:"Index-Echo-S2TT 9B Q8_0",format:"gguf",precision:"q8_0",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-9b-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}}],ui:{recommended_package:"index_echo_s2tt_2b_orig",tags:["ASR","GGUF"],docs:["docs/models/index_echo.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{llm_config:"model:llm/config.json",tokenizer:"model:llm/tokenizer.json",tokenizer_config:"model:llm/tokenizer_config.json",audio_config:"model:audio_config.json"},optional_files:{mapper_config:"model:bridge/mapper_config.json"},tensors:{stlm_weights:{source:"weights:",prefix:"stlm"},audio_weights:{source:"weights:",prefix:"audio"},connector_weights:{source:"weights:",prefix:"connector"}},optional_tensors:{mapper_weights:{source:"weights:",prefix:"mapper"}}}]},H5={family:"index_tts2",display_name:"IndexTTS2",description:"Zero-shot TTS system with voice cloning, emotion-speaker decoupling, text or audio emotion control, and explicit duration control. Variant v2 covers Chinese and English; variant v2.5 (config version 2.5) adds multilingual tiktoken tokenization with Japanese, Spanish and Arabic support.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline"],languages:["zh","en","ja","es","ar"],options:{request:[{name:"text",type:"string",description:"Fallback target text when text_input is absent; prompt is also accepted.",required:!1},{name:"language",type:"string",description:"IndexTTS2.5 text language; empty or auto selects from text.",required:!1},{name:"emotion_alpha",type:"float",description:"Emotion conditioning blend strength.",required:!1,min:0,max:1,default:1},{name:"emotion_vector",type:"string",description:"Eight comma-separated finite emotion strengths.",required:!1},{name:"use_emotion_text",type:"bool",description:"Use text-derived emotion conditioning.",required:!1,default:!1},{name:"emotion_text",type:"string",description:"Emotion description.",required:!1},{name:"use_random_emotion",type:"bool",description:"Use random emotion conditioning.",required:!1,default:!1},{name:"interval_silence_ms",type:"int",description:"Silence between generated segments in milliseconds.",required:!1,min:0,default:200},{name:"do_sample",type:"bool",description:"Enable sampling.",required:!1,default:!0},{name:"top_p",type:"float",description:"Nucleus sampling probability. Must be in (0, 1].",required:!1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling limit.",required:!1,min:1,default:30},{name:"temperature",type:"float",description:"Sampling temperature. Must be positive.",required:!1,default:.8},{name:"length_penalty",type:"float",description:"Beam search length penalty.",required:!1,default:0},{name:"num_beams",type:"int",description:"Beam search width.",required:!1,min:1,default:3},{name:"repetition_penalty",type:"float",description:"Sampling repetition penalty.",required:!1,default:10},{name:"max_tokens",type:"int",description:"Maximum generated mel tokens.",required:!1,min:1,default:1500},{name:"duration_scale",type:"float",description:"Positive waveform duration rescaling, supported by both IndexTTS2 and IndexTTS2.5.",required:!1,default:1},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Optional framework long-form text chunk size; omitted keeps the full input together. Must be positive.",required:!1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,values:["default","tag_aware","japanese","endline"],default:"default"}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; defaults to native.",required:!1,preset:"weight_type_full"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage; native on HIP resolves to F16.",required:!1,preset:"weight_type_conv",default:"native"},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs.",required:!1,default:!1},{name:"speaker_cache_slots",type:"int",description:"Reference or emotion cache slots; zero disables reuse.",required:!1,min:0,default:1},{name:"emotion_cache_slots",type:"int",description:"Reference or emotion cache slots; zero disables reuse.",required:!1,min:0,default:1},{name:"emotion_text_cache_slots",type:"int",description:"Reference or emotion cache slots; zero disables reuse.",required:!1,min:0,default:1},{name:"gpt_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:32},{name:"s2mel_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:32},{name:"reference_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"emotion_text_prefill_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:2048},{name:"emotion_text_decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:32},{name:"emotion_text_max_tokens",type:"int",description:"Emotion description generation token limit; emotion_text_max_new_tokens is also accepted.",required:!1,min:1,default:256}],load:[]},capabilities:{tts:["emotion_control"],clone:["speaker_reference","emotion_control"]},runtime:{tags:["gguf"]},ui:{recommended_package:"index_tts2_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/index_tts2.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"index_tts2_q8_0",display_name:"IndexTTS2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"IndexTTS2-GGUF",files:["IndexTTS2-GGUF/index-tts2-q8_0.gguf"],strip_prefix:"IndexTTS2-GGUF"},{id:"index_tts2_f16",display_name:"IndexTTS2 F16 GGUF",format:"gguf",precision:"f16",target_directory:"IndexTTS2-GGUF",files:["IndexTTS2-GGUF/index-tts2-f16.gguf"],strip_prefix:"IndexTTS2-GGUF"},{id:"index_tts2_orig",display_name:"IndexTTS2 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"IndexTTS2-GGUF",files:["IndexTTS2-GGUF/index-tts2-orig.gguf"],strip_prefix:"IndexTTS2-GGUF"},{id:"index_tts2_safetensors",display_name:"IndexTTS2 Safetensors",format:"safetensors",precision:"native",target_directory:"IndexTTS-2",files:["config.yaml","bpe.model","gpt.safetensors","w2v-bert-2.0/config.json","w2v-bert-2.0/preprocessor_config.json","bigvgan/config.json","qwen0.6bemo4-merge/config.json","qwen0.6bemo4-merge/generation_config.json","qwen0.6bemo4-merge/tokenizer.json","qwen0.6bemo4-merge/tokenizer_config.json","qwen0.6bemo4-merge/vocab.json","qwen0.6bemo4-merge/merges.txt","s2mel.safetensors","feat1.safetensors","feat2.safetensors","wav2vec2bert_stats.safetensors","w2v-bert-2.0/model.safetensors","semantic_codec_model.safetensors","campplus.safetensors","bigvgan/model.safetensors","qwen0.6bemo4-merge/model.safetensors"],download:{kind:"huggingface_snapshot",repo:"mlx-community/index-tts2-mlx"}},{id:"index_tts2_5_q8_0",display_name:"IndexTTS2.5 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"IndexTTS2.5-GGUF",files:["IndexTTS2.5-GGUF/index-tts2_5-q8_0.gguf"],strip_prefix:"IndexTTS2.5-GGUF"},{id:"index_tts2_5_f16",display_name:"IndexTTS2.5 F16 GGUF",format:"gguf",precision:"f16",target_directory:"IndexTTS2.5-GGUF",files:["IndexTTS2.5-GGUF/index-tts2_5-f16.gguf"],strip_prefix:"IndexTTS2.5-GGUF"},{id:"index_tts2_5_orig",display_name:"IndexTTS2.5 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"IndexTTS2.5-GGUF",files:["IndexTTS2.5-GGUF/index-tts2_5-orig.gguf"],strip_prefix:"IndexTTS2.5-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.yaml",wav2vec2bert_config:"model:w2v-bert-2.0/config.json",wav2vec2bert_preprocessor_config:"model:w2v-bert-2.0/preprocessor_config.json",bigvgan_config:"model:bigvgan/config.json",qwen_emotion_config:"model:qwen0.6bemo4-merge/config.json",qwen_emotion_generation_config:"model:qwen0.6bemo4-merge/generation_config.json",qwen_emotion_tokenizer:"model:qwen0.6bemo4-merge/tokenizer.json",qwen_emotion_tokenizer_config:"model:qwen0.6bemo4-merge/tokenizer_config.json",qwen_emotion_vocab:"model:qwen0.6bemo4-merge/vocab.json",qwen_emotion_merges:"model:qwen0.6bemo4-merge/merges.txt"},optional_files:{bpe:"model:bpe.model",tiktoken:"model:multilingual_zh_ja_yue_char_del.tiktoken"},tensors:{gpt:{source:"weights:",prefix:"gpt"},s2mel:{source:"weights:",prefix:"s2mel"},speaker_matrix:{source:"weights:",prefix:"speaker_matrix"},emotion_matrix:{source:"weights:",prefix:"emotion_matrix"},wav2vec2bert_stats:{source:"weights:",prefix:"wav2vec2bert_stats"},wav2vec2bert:{source:"weights:",prefix:"wav2vec2bert"},semantic_codec:{source:"weights:",prefix:"semantic_codec"},campplus:{source:"weights:",prefix:"campplus"},bigvgan:{source:"weights:",prefix:"bigvgan"},qwen_emotion:{source:"weights:",prefix:"qwen_emotion"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.yaml",wav2vec2bert_config:"model:w2v-bert-2.0/config.json",wav2vec2bert_preprocessor_config:"model:w2v-bert-2.0/preprocessor_config.json",bigvgan_config:"model:bigvgan/config.json",qwen_emotion_config:"model:qwen0.6bemo4-merge/config.json",qwen_emotion_generation_config:"model:qwen0.6bemo4-merge/generation_config.json",qwen_emotion_tokenizer:"model:qwen0.6bemo4-merge/tokenizer.json",qwen_emotion_tokenizer_config:"model:qwen0.6bemo4-merge/tokenizer_config.json",qwen_emotion_vocab:"model:qwen0.6bemo4-merge/vocab.json",qwen_emotion_merges:"model:qwen0.6bemo4-merge/merges.txt"},optional_files:{bpe:"model:bpe.model",tiktoken:"model:multilingual_zh_ja_yue_char_del.tiktoken"},tensors:{gpt:"model:gpt.safetensors",s2mel:"model:s2mel.safetensors",speaker_matrix:"model:feat1.safetensors",emotion_matrix:"model:feat2.safetensors",wav2vec2bert_stats:"model:wav2vec2bert_stats.safetensors",wav2vec2bert:"model:w2v-bert-2.0/model.safetensors",semantic_codec:"model:semantic_codec_model.safetensors",campplus:"model:campplus.safetensors",bigvgan:"model:bigvgan/model.safetensors",qwen_emotion:"model:qwen0.6bemo4-merge/model.safetensors"}}]},W5={schema_version:1,family:"inflect_v2",display_name:"Inflect Micro v2",description:"Compact English VITS text-to-speech models with a native GGML inference path and an external eSpeak-ng phonemizer.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"speed",type:"float",description:"Speech speed multiplier mapped directly to Inflect speed; default 1.0.",required:!1,min:.5,max:2,default:1},{name:"variation",type:"float",description:"Latent Gaussian variation; default 0.667.",required:!1,min:0,max:1,default:.667},{name:"seed",type:"int",description:"Non-negative latent noise seed; default 0.",required:!1,min:0,default:0},{name:"text_chunk_mode",type:"enum",description:"Long-form text chunking mode.",values:["word_budget"],required:!1,default:"word_budget"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 280.",required:!1,min:1,default:280}],session:[{name:"espeak_library_path",type:"path",description:"Optional explicit path to the eSpeak-ng shared library.",required:!1},{name:"espeak_data_path",type:"path",description:"Optional explicit path to the directory containing espeak-ng-data.",required:!1},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Component: decoder. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. GGML keeps the session backend. RKNN requires artifacts.main and ENGINE_ENABLE_RKNN; omit backend. Neither implementation takes params.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"inflect_micro_v2_orig",display_name:"Inflect Micro v2 Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Inflect-Micro-v2-GGUF",files:["Inflect-Micro-v2-GGUF/inflect-micro-v2-orig.gguf"],strip_prefix:"Inflect-Micro-v2-GGUF"}],dependencies:[],ui:{recommended_package:"inflect_micro_v2_orig",tags:["TTS","GGUF"],docs:["docs/tts.md","docs/models/inflect_v2.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},Q5={schema_version:1,family:"irodori_tts",display_name:"Irodori-TTS",description:"Japanese TTS model based on RF-DiT continuous audio latents, supporting zero-shot voice cloning, automatic duration prediction, multimodal voice design, and emoji-style control.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["ja"],capabilities:{clone:["speaker_reference"],design:["voice_design"]},options:{request:[{name:"stream_frames_per_event",type:"int",description:"Codec latent frames per streaming audio event; default 12 (0.48 seconds at 25 Hz).",required:!1,min:1,default:12},{name:"language",type:"string",description:"Text language code; Irodori-TTS supports Japanese only.",required:!1,default:"ja"},{name:"instruct",type:"string",description:"Natural-language voice or style instruction describing target voice identity, style, or emotion; supported only by caption-conditioned checkpoints. Legacy instruction and caption are accepted as aliases.",required:!1},{name:"no_ref",type:"bool",description:"Use no-reference generation; default true unless a speaker reference is provided.",required:!1,default:!0},{name:"speaker_embedding_file",type:"path",description:"Speaker Inversion embedding (*.speaker.safetensors written by Irodori-TTS training) used as the speaker condition instead of reference audio; use it with the base checkpoint it was trained on. Cannot be combined with reference audio or no_ref=true.",required:!1},{name:"reference_duration_sec",type:"float",description:"Trim reference audio to its first reference_duration_sec seconds before encoding it, as Python Irodori-TTS does; default is the checkpoint's ref_max_seconds (30 when it has none); 0 keeps the whole reference.",required:!1,min:0},{name:"t_schedule_mode",type:"string",description:"RF Euler timestep schedule: linear or sway; default linear.",required:!1,default:"linear"},{name:"sway_coeff",type:"float",description:"Sway Sampling coefficient; must be finite and produce strictly decreasing timesteps. Default -1.0.",required:!1,default:-1},{name:"num_inference_steps",type:"int",description:"RF diffusion steps; default 40.",required:!1,min:1,default:40},{name:"duration_sec",type:"float",description:"Target duration in seconds; omitted or nonpositive values select predicted duration.",required:!1},{name:"duration_scale",type:"float",description:"Predicted-duration multiplier; must be > 0 when set; default 1.0.",required:!1,min:0,default:1},{name:"text_chunk_mode",type:"enum",description:"Text chunk policy; word_budget also accepts the legacy spelling default.",values:["word_budget","tag_aware","japanese","endline"],required:!1,default:"endline"},{name:"text_chunk_size",type:"int",description:"Maximum characters per text chunk; default 100, or the model text-token window if smaller.",required:!1,min:1},{name:"min_duration_sec",type:"float",description:"Minimum generated duration in seconds; must be > 0 and no greater than max_duration_sec; default 0.5.",required:!1,min:0,default:.5},{name:"max_duration_sec",type:"float",description:"Maximum generated duration in seconds; must be at least min_duration_sec; default 30. Must be > 0.",required:!1,min:0,default:30},{name:"text_guidance_scale",type:"float",description:"Text classifier-free guidance scale; default 3.0. Nonpositive values disable the corresponding CFG branch.",required:!1,default:3},{name:"speaker_guidance_scale",type:"float",description:"Speaker classifier-free guidance scale; default 5.0. Nonpositive values disable the corresponding CFG branch.",required:!1,default:5},{name:"caption_guidance_scale",type:"float",description:"Caption classifier-free guidance scale; default 3.0. Nonpositive values disable the corresponding CFG branch.",required:!1,default:3},{name:"guidance_scale",type:"float",description:"Override all classifier-free guidance scales when set. Nonpositive values disable the corresponding CFG branch.",required:!1},{name:"guidance_mode",type:"enum",description:"Classifier-free guidance combination mode; default independent.",values:["independent","joint","alternating"],required:!1,default:"independent"},{name:"guidance_min_t",type:"float",description:"Minimum diffusion timestep value where guidance is active; default 0.5. The parser does not enforce a nonnegative bound.",required:!1,default:.5},{name:"guidance_max_t",type:"float",description:"Maximum diffusion timestep value where guidance is active; default 1.0. The parser does not enforce a nonnegative bound.",required:!1,default:1},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed in [0, 4294967295]; omitted uses a random seed.",required:!1,min:0,max:4294967295},{name:"trim_tail",type:"bool",description:"Trim trailing silence-like samples; default true.",required:!1,default:!0}],session:[{name:"weight_type",type:"enum",description:"Model weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"codec_weight_type",type:"enum",description:"DACVAE codec weight storage type; default native.",preset:"weight_type_codec_q8",required:!1,default:"native"},{name:"codec_backend",type:"enum",description:"DACVAE codec execution backend. Use cpu as an opt-in workaround for backend-specific codec decoder issues; default same.",values:["same","cpu"],required:!1,default:"same"},{name:"condition_graph_arena_mb",type:"int",description:"Condition encoder graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"rf_graph_arena_mb",type:"int",description:"RF sampler graph arena size in MiB; default 768.",required:!1,min:1,default:768},{name:"codec_graph_arena_mb",type:"int",description:"DACVAE codec graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"codec_decode_chunk_steps",type:"int",description:"Decode the latent in windows of this many frames (25 per second) so the codec's activation memory stops growing with the output length; 0 decodes the whole sequence at once (default).",required:!1,min:0,default:0},{name:"codec_decode_overlap_steps",type:"int",description:"Latent frames of context decoded on each side of a window and then discarded; default 16.",required:!1,min:0,default:16},{name:"codec_encode_chunk_steps",type:"int",description:"Encode reference audio in windows of this many latent frames (25 per second) so the codec's activation memory stops growing with the reference length; 0 encodes the whole reference at once (default).",required:!1,min:0,default:0},{name:"codec_encode_overlap_steps",type:"int",description:"Latent frames of reference audio encoded as context on each side of a window and then discarded; default 16.",required:!1,min:0,default:16},{name:"condition_weight_context_mb",type:"int",description:"Condition encoder weight context size in MiB; default 32.",required:!1,min:1,default:32},{name:"rf_weight_context_mb",type:"int",description:"RF sampler weight context size in MiB; default 32.",required:!1,min:1,default:32},{name:"codec_weight_context_mb",type:"int",description:"DACVAE codec weight context size in MiB; default 32.",required:!1,min:1,default:32},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs after request phases; default true.",required:!1,default:!0},{name:"reference_cache_slots",type:"int",description:"Prepared reference-speaker cache slots; default 1.",required:!1,min:0,default:1}],load:[]},dependencies:[],runtime:{tags:["gguf"]},ui:{recommended_package:"irodori_tts_v4_small_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"irodori_tts_v4_small_q8_0",display_name:"Irodori-TTS v4.1 Small Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4-small-q8_0.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_v4_1_anime_q8_0",display_name:"Irodori-TTS v4.1 Anime Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4.1-anime-q8_0.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_v4_small_f16",display_name:"Irodori-TTS v4.1 Small F16 GGUF",format:"gguf",precision:"f16",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4-small-f16.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_600m_v3_voicedesign_q8_0",display_name:"Irodori-TTS 600M v3 VoiceDesign Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-600M-v3-VoiceDesign-GGUF",files:["Irodori-TTS-600M-v3-VoiceDesign-GGUF/irodori-tts-600m-v3-voicedesign-q8_0.gguf"],strip_prefix:"Irodori-TTS-600M-v3-VoiceDesign-GGUF"},{id:"irodori_tts_600m_v3_voicedesign_f16",display_name:"Irodori-TTS 600M v3 VoiceDesign F16 GGUF",format:"gguf",precision:"f16",target_directory:"Irodori-TTS-600M-v3-VoiceDesign-GGUF",files:["Irodori-TTS-600M-v3-VoiceDesign-GGUF/irodori-tts-600m-v3-voicedesign-f16.gguf"],strip_prefix:"Irodori-TTS-600M-v3-VoiceDesign-GGUF"},{id:"irodori_tts_500m_v3_q8_0",display_name:"Irodori-TTS 500M v3 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-500M-v3-GGUF",files:["Irodori-TTS-500M-v3-GGUF/irodori-tts-500m-v3-q8_0.gguf"],strip_prefix:"Irodori-TTS-500M-v3-GGUF"},{id:"irodori_tts_500m_v3_f16",display_name:"Irodori-TTS 500M v3 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Irodori-TTS-500M-v3-GGUF",files:["Irodori-TTS-500M-v3-GGUF/irodori-tts-500m-v3-f16.gguf"],strip_prefix:"Irodori-TTS-500M-v3-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{model_config:"model:model_config.json"},optional_files:{tokenizer_json:"model:tokenizer.json",tokenizer_v4_json:"model:tokenizer/tokenizer.json",pretrained_text_config:"model:text_encoder_config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}},{format:"safetensors",roots:{model:".",tokenizer:"../llm-jp-3-150m",codec:"../Semantic-DACVAE-Japanese-32dim"},files:{model_config:"model:model_config.json"},optional_files:{tokenizer_json:"tokenizer:tokenizer.json",tokenizer_v4_json:"model:tokenizer/tokenizer.json",pretrained_text_config:"model:text_encoder_config.json"},tensors:{model_weights:"model:model.safetensors",codec_weights:"codec:weights.safetensors"}}]},K5={schema_version:1,family:"kitten_tts",display_name:"KittenTTS Mini 0.8",description:"Native KittenTTS Mini 0.8 English text-to-speech with eight built-in voices and shared eSpeak-ng phonemization.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["built_in_voices","long_form"]},options:{request:[{name:"voice_id",type:"enum",values:["Bella","Bruno","Hugo","Jasper","Kiki","Leo","Luna","Rosie","expr-voice-2-f","expr-voice-2-m","expr-voice-3-f","expr-voice-3-m","expr-voice-4-f","expr-voice-4-m","expr-voice-5-f","expr-voice-5-m"],description:"Built-in voice ID or package alias; structured voice input (CLI --voice-id) takes precedence.",required:!1,default:"expr-voice-5-m"},{name:"speed",type:"float",description:"Speech speed multiplier; larger values produce faster speech. Must be finite and positive.",required:!1,default:1},{name:"seed",type:"int",description:"Decoder noise seed for the current request; omitted requests choose a fresh random seed.",required:!1,min:0},{name:"text_chunk_mode",type:"enum",description:"Long-form text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form chunk.",required:!1,min:1,default:400}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",description:"Storage type for matrix multiplication weights.",required:!1,default:"native"},{name:"conv_weight_type",type:"enum",preset:"weight_type_conv",description:"Storage type for convolution weights.",required:!1,default:"native"},{name:"graph_capacity_mode",type:"enum",description:"Offline graph capacity policy.",values:["fixed","tiered","grow","double"],required:!1,default:"fixed"},{name:"max_input_tokens",type:"int",description:"Maximum predictor input token capacity; defaults to min(512, checkpoint context_length).",required:!1,min:1,max:512,default:512},{name:"pre_tail_tokens",type:"int",description:"Optional prebuilt predictor tail token capacity.",required:!1,min:0,max:512,default:0},{name:"espeak_library_path",type:"path",description:"Optional explicit path to the eSpeak-ng shared library.",required:!1},{name:"espeak_data_path",type:"path",description:"Optional explicit path to espeak-ng-data.",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"kitten_tts_mini_0_8_orig",display_name:"KittenTTS Mini 0.8 Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"KittenTTS-GGUF",files:["KittenTTS-GGUF/kitten-tts-mini-0.8-orig.gguf"],strip_prefix:"KittenTTS-GGUF"}],dependencies:[],ui:{recommended_package:"kitten_tts_mini_0_8_orig",tags:["TTS","GGUF"],builtin_voices:["Bella","Jasper","Luna","Bruno","Rosie","Hugo","Kiki","Leo"],default_voice:"Leo",docs:["docs/models/kitten_tts.md","docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"kitten"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:ggml/kitten_tts.safetensors"}}]},Y5={schema_version:1,family:"kitten_tts2",display_name:"Kitten TTS 2",description:"Native multilingual Kitten TTS 2 Qwen3 speech generation, S3 meanflow decoder, and reference-audio voice cloning.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en","ar","zh","fr","de","hi","it","pt","ru","es","nl","id","ja","ko","pl","tr"],runtime:{tags:["gguf","cpu"]},capabilities:{tts:["built_in_voices","long_form"],clone:["speaker_reference"]},options:{request:[{name:"voice_id",type:"enum",values:["Bella","Jasper","Luna","Bruno","Rosie","Hugo","Kiki","Leo","Matthew","Elliot","Willow","Dolores","Victor","Dante","Alfred","Saoirse","Claire","Raven","Marcus","Herbert","Diana","Laurence","Maeve","Walter","Edith","Miles","Grace","Reginald","Iris","Frank","Serena","Julian","Eleanor","Otis","Vincent","Martha","Sable","Victoria","PreparedBruno","Arabic","Chinese","French","German","Hindi","Italian","Portuguese","Russian","Spanish","AirportAnnouncer","ArabicChildSchool","ArabicFalconer","ArabicMother","ArabicNews","AudiobookNarratorFemale","BoredTeenager","CalmHostageNegotiator","ChineseKidSpringFestival","ChineseLivestreamSeller","ChineseNewsCctv","ChineseXianxiaMaster","DutchBaker","DutchGrandpaStory","DutchWeatherPresenter","FairytaleNarratorWhimsical","FrenchDocumentary","FrenchGrandmereRecette","FrenchTeacher","FrenchWaiter","GermanKidBirthday","GermanKneipe","GermanProfessor","GermanTrainAnnouncement","GrandmaBedtimeStory","GriefEulogy","HindiBollywoodDrama","HindiCollegeFriends","HindiDadiKahani","HindiYogaTeacher","IndonesianNewsAnchor","IndonesianTourGuide","ItalianChildSchool","ItalianFashionDesigner","ItalianFootballFan","ItalianGondolier","ItalianNonnaKitchen","ItalianOperaTenor","JapaneseAnimeHeroine","JapaneseGrandma","JapaneseSalarymanApology","JapaneseTrainConductor","KoreanGrandpaAdvice","KoreanKdramaConfession","KoreanNewsAnchor","LittleGirlExplaining","NervousFirstDate","NewsAnchorFemale","PilotCabinAnnouncement","PolishBabciaPierogi","PolishMountainGuide","PolishNewsAnchor","PolishPoetryStudent","PortugueseBeach","PortugueseBusiness","PortugueseFado","PortugueseGrandpaFarm","PortugueseKidFutebol","PortugueseNewsAnchor","RussianBabushka","RussianFairyTale","RussianHockeyCheer","RussianLiteratureTeacher","RussianSpaceControl","RussianTaxiDriver","SarcasticCoworker","SchoolboyPresentation","SpanishAbuela","SpanishBreakupSad","SpanishChildCuento","SpanishNews","SpanishTango","TurkishFisherman","TurkishGrandmaCooking","TurkishNewsAnchor","WeatherPresenterCheerful"],required:!1,default:"Bruno",description:"Prepared voice name available in the loaded package. A supplied reference clip takes precedence."},{name:"preset",type:"enum",values:["stable","expressive"],required:!1,default:"stable",description:"Upstream sampling preset."},{name:"temperature",type:"float",min:0,required:!1,description:"Sampling temperature; zero selects greedy decoding. Otherwise defaults to the preset."},{name:"top_k",type:"int",min:0,required:!1,description:"Top-k sampling cutoff; defaults to the preset."},{name:"top_p",type:"float",max:1,required:!1,description:"Nucleus sampling cutoff; defaults to the preset. Must be in (0, 1]."},{name:"min_p",type:"float",min:0,max:1,required:!1,description:"Minimum relative probability; defaults to the preset."},{name:"repetition_penalty",type:"float",min:1,required:!1,default:1.1,description:"Penalty over the last 50 generated tokens; silence and ending tokens are exempt."},{name:"max_tokens",type:"int",min:1,max:8192,required:!1,description:"Speech-token budget per text chunk. Omitted budgets scale with text length, with a minimum of 200."},{name:"seed",type:"int",min:0,required:!1,description:"Seed for sampling and waveform decoding."},{name:"text_chunk_size",type:"int",min:32,max:1e3,required:!1,default:380,description:"Maximum Unicode codepoints per framework text chunk."},{name:"text_chunk_mode",type:"enum",values:["default","tag_aware","japanese","endline"],required:!1,default:"tag_aware",description:"Framework long-form text chunking mode."},{name:"reference_text",type:"string",required:!1,description:"Transcript of the reference audio; required when cloning from a 1–30 second clip."}],load:[],session:[{name:"exec_plan",type:"string",required:!1,default:"{}",description:"Component execution plan JSON. vocoder accepts impl=ggml (default) or neon with backend=cpu. NEON requires ENGINE_ENABLE_NEON=ON and an AArch64 NEON CPU, and replaces only the HiFT neural convolution stack."},{name:"weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q8_0"],required:!1,default:"native",description:"Qwen projection storage. native preserves the GGUF's intended tensor types. An explicit override changes projection storage only."}]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"dignome/kitten_tts2",revision:"main",gated:!1}},packages:[{id:"kitten_tts2_bf16",display_name:"Kitten TTS 2 BF16 GGUF (Previous Checkpoint)",default:!1,format:"gguf",precision:"bf16",target_directory:"kitten-tts2-v2",files:["kitten-tts2-bf16-multilingual.gguf","LICENSE","NOTICE","native/LICENSE","speaker/LICENSE","SHA256SUMS"]},{id:"kitten_tts2_q8_v2",display_name:"Kitten TTS 2 Q8 GGUF (Previous Checkpoint)",default:!1,format:"gguf",precision:"q8_0",target_directory:"kitten-tts2-v2",files:["kitten-tts2-q8-v2-multilingual.gguf","LICENSE","NOTICE","native/LICENSE","speaker/LICENSE","SHA256SUMS"]},{id:"kitten_tts2_q4",display_name:"Kitten TTS 2 Hybrid Q4 GGUF (Previous Checkpoint, Experimental)",default:!1,format:"gguf",precision:"q4_0",target_directory:"kitten-tts2-v2",files:["kitten-tts2-q4-multilingual.gguf","LICENSE","NOTICE","native/LICENSE","speaker/LICENSE","SHA256SUMS"]},{id:"kitten_tts2_20261021_q8_0",display_name:"Kitten TTS 2 2026-10-21 Q8 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"KittenTTS2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1},files:["KittenTTS2-GGUF/kitten-tts2-20261021-q8_0.gguf"],strip_prefix:"KittenTTS2-GGUF"},{id:"kitten_tts2_20261021_q4_0",display_name:"Kitten TTS 2 2026-10-21 Q4 GGUF (BF16 Embedding)",default:!1,format:"gguf",precision:"q4_0",target_directory:"KittenTTS2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1},files:["KittenTTS2-GGUF/kitten-tts2-20261021-q4_0.gguf"],strip_prefix:"KittenTTS2-GGUF"}],dependencies:[],ui:{recommended_package:"kitten_tts2_20261021_q8_0",min_vram_gb:7,tags:["TTS","GGUF"],builtin_voices:["Bella","Jasper","Luna","Bruno","Rosie","Hugo","Kiki","Leo","Matthew","Elliot","Willow","Dolores","Victor","Dante","Alfred","Saoirse","Claire","Raven","Marcus","Herbert","Diana","Laurence","Maeve","Walter","Edith","Miles","Grace","Reginald","Iris","Frank","Serena","Julian","Eleanor","Otis","Vincent","Martha","Sable","Victoria","Arabic","Chinese","French","German","Hindi","Italian","Portuguese","Russian","Spanish"],default_voice:"Bruno",docs:["docs/models/kitten_tts2.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",lm_config:"model:lm/config.json",tokenizer_config:"model:lm/tokenizer_config.json",tokenizer_json:"model:lm/tokenizer.json",default_voices:"model:cpp/default/voices.json"},tensors:{language_model:{source:"weights:",prefix:"language_model"},s3gen:{source:"weights:",prefix:"s3gen"},speaker:{source:"weights:",prefix:"speaker"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",lm_config:"model:lm/config.json",tokenizer_config:"model:lm/tokenizer_config.json",tokenizer_json:"model:lm/tokenizer.json",default_voices:"model:cpp/default/voices.json"},tensors:{language_model:"model:lm/model.safetensors",s3gen:"model:native/s3gen_meanflow.safetensors",speaker:"model:speaker/model.safetensors"}}]},X5={schema_version:1,family:"kokoro_tts",display_name:"Kokoro 82M",description:"Kokoro 82M multilingual text-to-speech with 54 preset voices, optimized native CPU inference, and shared eSpeak-ng phonemization.",category:"tts",status:"community",tasks:["tts"],modes:["offline","streaming"],languages:["en-us","en-gb","es","fr-fr","hi","it","ja","pt-br","zh"],runtime:{tags:["gguf","stream"]},capabilities:{tts:["built_in_voices","long_form"]},options:{request:[{name:"voice_id",type:"enum",values:["af_alloy","af_aoede","af_bella","af_heart","af_jessica","af_kore","af_nicole","af_nova","af_river","af_sarah","af_sky","am_adam","am_echo","am_eric","am_fenrir","am_liam","am_michael","am_onyx","am_puck","am_santa","bf_alice","bf_emma","bf_isabella","bf_lily","bm_daniel","bm_fable","bm_george","bm_lewis","ef_dora","em_alex","em_santa","ff_siwis","hf_alpha","hf_beta","hm_omega","hm_psi","if_sara","im_nicola","jf_alpha","jf_gongitsune","jf_nezumi","jf_tebukuro","jm_kumo","pf_dora","pm_alex","pm_santa","zf_xiaobei","zf_xiaoni","zf_xiaoxiao","zf_xiaoyi","zm_yunjian","zm_yunxi","zm_yunxia","zm_yunyang"],description:"Built-in voice ID; structured voice input (CLI --voice-id) takes precedence.",required:!1,default:"af_heart"},{name:"language",type:"string",description:"Language selection precedence: voice-style language, transcript language (CLI --language), request-option language, then voice prefix. Must match the first voice in a blend.",required:!1},{name:"seed",type:"int",description:"Decoder noise seed for the current request; omitted requests choose a fresh random seed.",required:!1,min:0},{name:"speed",type:"float",description:"Speech speed multiplier; default 1.0. Must be finite and positive.",required:!1,default:1},{name:"phonemes",type:"string_list",description:"Kokoro-vocabulary phonemes to synthesize directly, bypassing the built-in eSpeak-ng G2P. One entry per chunk: entries are rendered in order and merged into one result, so the caller chooses the split points that only its own G2P knows. Each entry must be at most 510 symbols and must not be empty -- an entry is a chunk to speak, so drop it rather than leaving it blank. Text is still required and its language must still match the voice.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum codepoints per text chunk before synthesis. Default 100 for Chinese and Japanese voices, otherwise 240.",required:!1,min:1},{name:"return_timestamps",type:"bool",description:"Report where each phoneme group lands in the output, from the durations the model predicts before vocoding. Entries are phoneme groups in Kokoro's own alphabet, not written words, and do not map one-to-one onto the input text: see docs/models/kokoro_tts.md. Default false.",required:!1,default:!1}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"native",description:"Storage type for matrix multiplication weights."},{name:"conv_weight_type",type:"enum",preset:"weight_type_conv",required:!1,default:"native",description:"Storage type for convolution weights."},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 512.",required:!1,min:1,default:512},{name:"predictor_duration_graph_arena_mb",type:"int",description:"Predictor duration host graph-metadata arena size in MiB, not device workspace; default 384.",required:!1,min:1,default:384},{name:"predictor_text_graph_arena_mb",type:"int",description:"Predictor text host graph-metadata arena size in MiB, not device workspace; default 256.",required:!1,min:1,default:256},{name:"predictor_tail_graph_arena_mb",type:"int",description:"Predictor tail host graph-metadata arena size in MiB, not device workspace; default 640.",required:!1,min:1,default:640},{name:"graph_capacity_mode",type:"enum",description:"Offline graph capacity policy; default fixed.",values:["fixed","tiered","grow","double"],required:!1,default:"fixed"},{name:"max_input_tokens",type:"int",description:"Predictor graph input token capacity; default min(512, model context length).",required:!1,min:1},{name:"pre_tail_tokens",type:"int",description:"Optional prebuilt predictor tail token capacity; default 0.",required:!1,min:0,default:0},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Component: generator. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn/neon. GGML keeps the session backend. The complete NEON generator requires a CPU session and ENGINE_ENABLE_NEON=ON on AArch64, without artifacts or params. RKNN requires artifacts.main and ENGINE_ENABLE_RKNN; omit backend. RKNN params: overlap (nonnegative integer, default 0, smaller than the emitted window), gain (boolean, default false; keeps a GGML generator reference).",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"kokoro_82m_q8_0",display_name:"Kokoro 82M Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Kokoro-82M-GGUF",files:["Kokoro-82M-GGUF/kokoro-82m-q8_0.gguf"],strip_prefix:"Kokoro-82M-GGUF"},{id:"kokoro_82m_bf16",display_name:"Kokoro 82M BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Kokoro-82M-GGUF",files:["Kokoro-82M-GGUF/kokoro-82m-bf16.gguf"],strip_prefix:"Kokoro-82M-GGUF"},{id:"kokoro_82m_generator_rk3588",display_name:"Kokoro 82M NPU Generator RKNN (RK3588)",format:"rknn",precision:"f16",target_directory:"Kokoro-82M-GGUF",files:["rk3588/generator_w512.rknn"],strip_prefix:"rk3588",description:"Pre-compiled RK3588 engine for the kokoro_tts RKNN generator sidecar (kokoro_tts.exec_plan, artifacts.main); installs beside the GGUF weights and is named by bare file name. Built by tools/rknn from the Kokoro-82M iSTFTNet generator export; see docs/build/rockchip-npu.md.",download:{kind:"huggingface_snapshot",repo:"wOvANAI/rknn-tts-engines",revision:"main",gated:!1}}],dependencies:[],ui:{recommended_package:"kokoro_82m_q8_0",tags:["TTS","GGUF"],builtin_voices:["af_alloy","af_aoede","af_bella","af_heart","af_jessica","af_kore","af_nicole","af_nova","af_river","af_sarah","af_sky","am_adam","am_echo","am_eric","am_fenrir","am_liam","am_michael","am_onyx","am_puck","am_santa","bf_alice","bf_emma","bf_isabella","bf_lily","bm_daniel","bm_fable","bm_george","bm_lewis","ef_dora","em_alex","em_santa","ff_siwis","hf_alpha","hf_beta","hm_omega","hm_psi","if_sara","im_nicola","jf_alpha","jf_gongitsune","jf_nezumi","jf_tebukuro","jm_kumo","pf_dora","pm_alex","pm_santa","zf_xiaobei","zf_xiaoni","zf_xiaoxiao","zf_xiaoyi","zm_yunjian","zm_yunxi","zm_yunxia","zm_yunyang"],default_voice:"af_heart",docs:["tests/kokoro_tts/MULTILINGUAL_GGUF.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",voices:"model:voices.json",vocabulary:"model:vocab.tsv"},tensors:{weights:{source:"weights:",prefix:"kokoro"}}}]},J5={schema_version:1,family:"kroko_asr",display_name:"Kroko Community ASR",description:"Native Zipformer2 RNN-T transcription for the public free Kroko Community single-language packages, with offline and stateful streaming inference, greedy and modified beam decoding, hotwords, endpoint segments, partial results, and word timestamps.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["de","en","es","fr","it","he","nl","pt","sv","tr"],capabilities:{asr:["word_timestamps","partial_results","segments"]},options:{request:[{name:"language",type:"string",description:"Language code matching the selected single-language Kroko package; default auto uses the package language.",required:!1,default:"auto"},{name:"decoding_method",type:"enum",description:"RNN-T decoding method; greedy search remains the parity-tested default.",values:["greedy_search","modified_beam_search"],required:!1,default:"greedy_search"},{name:"num_beams",type:"int",description:"Maximum active hypotheses retained by modified beam search.",required:!1,min:1,max:64,default:4},{name:"blank_penalty",type:"float",description:"Non-negative score subtracted from the RNN-T blank logit.",required:!1,min:0,default:0},{name:"hotwords",type:"string",description:"Slash- or newline-separated natural-text phrases; requires modified beam search.",required:!1},{name:"hotwords_score",type:"float",description:"Non-negative per-token context boost for hotword phrases.",required:!1,min:0,default:1.5},{name:"enable_endpoint",type:"bool",description:"Enable automatic endpoint speech segments.",required:!1,default:!1},{name:"rule1_min_trailing_silence_sec",type:"float",description:"Endpoint timeout in seconds even when no speech token was decoded.",required:!1,min:0,default:2.4},{name:"rule2_min_trailing_silence_sec",type:"float",description:"Endpoint silence in seconds after a speech token was decoded.",required:!1,min:0,default:1.2},{name:"rule3_min_utterance_length_sec",type:"float",description:"Maximum utterance duration in seconds before an endpoint.",required:!1,min:0,default:20}],session:[],load:[]},runtime:{tags:["gguf","stream"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokens:"model:tokens.txt"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokens:"model:tokens.txt"},tensors:{weights:"model:model.safetensors"}}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"kroko_asr_community_q8_0",display_name:"Kroko Community ASR Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Kroko-ASR-GGUF",files:["Kroko-ASR-GGUF/kroko-en-community-64-l-q8_0.gguf"],strip_prefix:"Kroko-ASR-GGUF"}],dependencies:[],ui:{recommended_package:"kroko_asr_community_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/models/kroko_asr.md","docs/gguf.md"]}},Z5={schema_version:1,family:"kugelaudio",display_name:"KugelAudio-0-Open",description:"KugelAudio text-to-speech with bundled preset voices and incremental audio output.",category:"tts",status:"experimental",tasks:["tts"],modes:["offline","streaming"],languages:["en","de","fr","es","it","pt","nl","pl","ru","uk","cs","ro","hu","sv","da","fi","no","el","bg","sk","hr","sr","tr"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"voice_id",type:"enum",values:["default","clear","english_female","english_male"],description:"Bundled preset voice.",default:"default",required:!1},{name:"num_inference_steps",type:"int",description:"Diffusion steps per acoustic frame, from 1 to 1000; omitted uses the checkpoint's diffusion_head_config.ddpm_num_inference_steps.",min:1,max:1e3,default:20,required:!1},{name:"guidance_scale",type:"float",description:"Diffusion classifier-free guidance; 1 disables the unconditional pass. Any finite value is accepted; negative values enter CFG arithmetic.",default:3,required:!1},{name:"max_tokens",type:"int",description:"Maximum autoregressive tokens per text chunk.",min:1,default:2048,required:!1},{name:"do_sample",type:"bool",description:"Sample autoregressive speech control tokens instead of greedy decoding.",default:!1,required:!1},{name:"temperature",type:"float",description:"Autoregressive sampling temperature when do_sample is enabled. Any finite value is accepted; negative values disable sampling.",default:1,required:!1},{name:"seed",type:"int",description:"Random seed; -1 chooses a random seed.",min:-1,default:1234,required:!1},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk.",min:1,default:300,required:!1},{name:"text_chunk_mode",type:"enum",values:["default","tag_aware","japanese","endline"],description:"Framework long-form text splitting mode.",default:"default",required:!1}],session:[{name:"weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],description:"Weight storage type; native preserves packaged tensor types.",default:"native",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"kugelaudio_0_open_bf16",display_name:"KugelAudio-0-Open BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"KugelAudio-0-Open-GGUF",files:["KugelAudio-0-Open-GGUF/kugelaudio-0-open-bf16.gguf"],strip_prefix:"KugelAudio-0-Open-GGUF"},{id:"kugelaudio_0_open_q8_0",display_name:"KugelAudio-0-Open Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"KugelAudio-0-Open-GGUF",files:["KugelAudio-0-Open-GGUF/kugelaudio-0-open-q8_0.gguf"],strip_prefix:"KugelAudio-0-Open-GGUF"},{id:"kugelaudio_0_open_q4_k",display_name:"KugelAudio-0-Open Q4_K GGUF",default:!1,format:"gguf",precision:"q4_k",target_directory:"KugelAudio-0-Open-GGUF",files:["KugelAudio-0-Open-GGUF/kugelaudio-0-open-q4_k.gguf"],strip_prefix:"KugelAudio-0-Open-GGUF"}],dependencies:[],ui:{recommended_package:"kugelaudio_0_open_q8_0",default_voice:"default",builtin_voices:["default","clear","english_female","english_male"],tags:["TTS","Stream","GGUF"],docs:["docs/models/kugelaudio.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:text_tokenizer/tokenizer.json",tokenizer_config:"model:text_tokenizer/tokenizer_config.json"},tensors:{model_weights:"weights:"}}]},eS={schema_version:1,family:"latentsync",display_name:"LatentSync 1.6",description:"Audio-conditioned lip synchronization of a reference video.",category:"audio_generation",status:"experimental",tasks:["sfx"],modes:["offline"],languages:["auto"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"reference_video_file",type:"path",required:!0,description:"Reference video containing the face to synchronize. Requires FFmpeg on PATH."},{name:"num_inference_steps",required:!1,type:"int",min:1,max:999,default:20,description:"Number of DDIM denoising steps."},{name:"cache_interval",required:!1,type:"int",min:1,default:1,description:"DeepCache refresh interval. One disables caching; three matches the upstream DeepCache preset. Higher values trade output fidelity for speed."},{name:"guidance_scale",required:!1,type:"float",min:0,default:1.5,description:"Audio classifier-free guidance scale; values at or below one disable CFG."},{name:"frames_per_chunk",required:!1,type:"int",min:1,max:24,default:16,description:"Frames processed together by the temporal denoiser."},{name:"fps",required:!1,type:"float",min:1,default:25,description:"Video sampling and output frame rate."},{name:"seed",required:!1,type:"int",min:0,default:1247,description:"Random seed for latent noise and VAE posterior sampling."}],session:[{name:"weight_type",required:!1,type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],default:"native",description:"Weight storage type; native preserves packaged tensor types."},{name:"vae_cudnn_f16",required:!1,type:"bool",default:!1,description:"Use cuDNN FP16 VAE execution on CUDA. Requires a build with GGML_CUDA_CUDNN_CONV2D=ON; VAE weights are converted to FP16."},{name:"unet_cudnn_f16",required:!1,type:"bool",default:!1,description:"Use cuDNN FP16 convolutions and residual activations in the U-Net on CUDA. Requires a build with GGML_CUDA_CUDNN_CONV2D=ON and FP16 U-Net weights."},{name:"mem_saver",required:!1,type:"bool",default:!1,description:"Release components between pipeline stages and run CFG branches sequentially to reduce peak VRAM. Reloading the VAE for decoding adds some latency."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/LatentSync-1.6-GGUF",revision:"main",gated:!1}},packages:[{id:"latentsync_1_6_q8_0_f16",display_name:"LatentSync 1.6 Q8/F16",format:"gguf",precision:"q8_0",default:!0,target_directory:"LatentSync-1.6-GGUF",files:["latentsync-1.6-q8_0-f16.gguf"]},{id:"latentsync_1_6_f16",display_name:"LatentSync 1.6 F16",format:"gguf",precision:"f16",default:!1,target_directory:"LatentSync-1.6-GGUF",files:["latentsync-1.6-f16.gguf"]},{id:"latentsync_1_6_f32_f16",display_name:"LatentSync 1.6 F32/F16",format:"gguf",precision:"orig",default:!1,target_directory:"LatentSync-1.6-GGUF",files:["latentsync-1.6-f32-f16.gguf"]}],dependencies:[],ui:{recommended_package:"latentsync_1_6_q8_0_f16",tags:["GGUF"],docs:["docs/models/latentsync.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{detector_config:"model:detector_config.json",landmark_config:"model:landmark_config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},tS={schema_version:1,family:"lfm2_audio",display_name:"LFM2.5-Audio",description:"Liquid AI's LFM2.5-Audio, loaded from the llama.cpp-format GGUF components Liquid publishes. ASR: a FastConformer encoder feeds an LFM2 hybrid short-conv/attention backbone. TTS: the backbone generates audio frames through a depthformer, and an LFM2 detokenizer and ISTFT turn them into 24 kHz audio. S2S: a spoken question goes in as for ASR, and the reply comes out as interleaved text and audio.",category:"asr",status:"experimental",tasks:["asr","tts","s2s"],modes:["offline","streaming"],languages:["en","ja"],capabilities:{asr:["vad_chunking"],tts:["built_in_voices","long_form"]},options:{request:[{name:"language",type:"string",description:"Must match the checkpoint's language (en or ja) when given; each published checkpoint transcribes and speaks one language.",required:!1,default:"auto"},{name:"max_tokens",type:"int",description:"ASR: transcript tokens per audio chunk, 512 by default. TTS: audio frames (80 ms each) per text chunk, 512 by default. S2S: text tokens and audio frames of the reply together, 1024 by default. A transcript, a text chunk's speech or a reply that reaches it is cut off there, with a warning on stderr.",required:!1,min:1},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode. auto transcribes input up to audio_chunk_duration_sec whole and splits longer input at pauses found by the bundled VAD (fixed chunks when the VAD model is absent); vad always splits at pauses and skips silence; fixed cuts every audio_chunk_duration_sec; none transcribes the whole input at once.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Longest chunk in seconds, at least 1. With fixed chunks, a final piece shorter than 1 second joins the previous chunk.",required:!1,min:1,default:30},{name:"temperature",type:"float",description:"TTS and S2S: audio code sampling temperature, 0.8 by default for TTS and 1.0 for S2S; 0 picks the most likely code.",required:!1,min:0},{name:"top_k",type:"int",description:"TTS and S2S: sample audio codes from the k most likely, 64 by default for TTS and 4 for S2S; 0 keeps all, 1 is greedy.",required:!1,min:0},{name:"text_temperature",type:"float",description:"S2S: text token sampling temperature; 0, the default, picks the most likely token, as liquid-audio's README and demo do.",required:!1,min:0,default:0},{name:"text_top_k",type:"int",description:"S2S: with a text_temperature above 0, sample text tokens from the k most likely; 0, the default, keeps all, and 1 is greedy.",required:!1,min:0,default:0},{name:"seed",type:"int",description:"TTS and S2S: sampling seed; omitted requests choose a random seed. TTS text chunk i uses seed + i. S2S text sampling draws from a stream of its own, so with the same seed a reply follows the greedy-text reply until a text token differs.",required:!1,min:0},{name:"text_chunk_mode",type:"enum",description:"TTS: long-form text chunking mode; japanese for the Japanese checkpoint and default otherwise when omitted.",values:["default","tag_aware","japanese","endline"],required:!1},{name:"text_chunk_size",type:"int",description:"TTS: maximum Unicode codepoints per text chunk, each spoken as its own turn.",required:!1,min:1,default:200},{name:"stream_frames_per_event",type:"int",description:"TTS and S2S streaming: audio frames (80 ms each) per event; each event's audio is final. ASR runs offline only.",required:!1,min:1,default:1},{name:"return_codes",type:"bool",description:"S2S: also return the reply's text tokens and audio codes as an lfm2_audio.reply artifact, to send back as history with the conversation's next turn.",required:!1,default:!1}],session:[{name:"model_gguf",type:"string",description:"Backbone GGUF, relative to the model directory. Defaults to the directory's only backbone GGUF.",required:!1,default:""},{name:"mmproj_gguf",type:"string",description:"Audio encoder (mmproj) GGUF, relative to the model directory. Defaults to mmproj-, or else the directory's only mmproj GGUF.",required:!1,default:""},{name:"vocoder_gguf",type:"string",description:"TTS/S2S vocoder GGUF (depthformer), relative to the model directory. Defaults to vocoder-, or the directory's only vocoder GGUF.",required:!1,default:""},{name:"detokenizer_gguf",type:"string",description:"TTS/S2S audio detokenizer GGUF, relative to the model directory. Defaults to tokenizer-, or the directory's only tokenizer GGUF.",required:!1,default:""},{name:"vad_model_path",type:"string",description:"Path to the Silero VAD model directory used by automatic audio chunking.",required:!1,default:"assets/framework/models/silero_vad"},{name:"max_pass_duration_sec",type:"float",description:"Most audio, in seconds, the encoder takes in one pass: an ASR chunk (the whole input with audio_chunk_mode=none) or the S2S question. Longer audio is rejected before it is encoded.",required:!1,min:1,default:120},{name:"cpu_repack",type:"bool",description:"On the CPU, multiply the matrices with the kernels of ggml's CPU extra buffer types where those take the weight's type and shape: the repacked ones take Q4_0 on x86 with AVX2 and Q4_0, Q8_0 and Q6_K on Arm; where ggml's AMX buffer is built, it comes first and also takes F16, Q8_0 and K-quants. Where the token embedding's type is taken, the text head gets a copy of it. Other backends ignore it.",required:!1,default:!0},{name:"conversation_cache_slots",type:"int",description:"S2S: how many conversations a session keeps the earlier questions' encoder output and prefill blocks of, for their next turns, the least recently used dropped first; 0 keeps none. Each kept conversation takes up to about 350 MiB of host memory at the conversation limit, and a slot that no conversation has used takes nothing. Output does not depend on it.",required:!1,min:0,default:4}],load:[]},runtime:{tags:["gguf","cpu","metal","cuda"]},packages:[{id:"lfm2_audio_1_5b_q8_0",display_name:"LFM2.5-Audio-1.5B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"LFM2.5-Audio-1.5B-GGUF",files:["LFM2.5-Audio-1.5B-Q8_0.gguf","mmproj-LFM2.5-Audio-1.5B-Q8_0.gguf","vocoder-LFM2.5-Audio-1.5B-Q8_0.gguf","tokenizer-LFM2.5-Audio-1.5B-Q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-GGUF",revision:"7d525f883a077e20afb782f2ff618edcae0e39e4",gated:!1}},{id:"lfm2_audio_1_5b_f16",display_name:"LFM2.5-Audio-1.5B F16 GGUF",format:"gguf",precision:"f16",target_directory:"LFM2.5-Audio-1.5B-GGUF",files:["LFM2.5-Audio-1.5B-F16.gguf","mmproj-LFM2.5-Audio-1.5B-F16.gguf","vocoder-LFM2.5-Audio-1.5B-F16.gguf","tokenizer-LFM2.5-Audio-1.5B-F16.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-GGUF",revision:"7d525f883a077e20afb782f2ff618edcae0e39e4",gated:!1}},{id:"lfm2_audio_1_5b_q4_0",display_name:"LFM2.5-Audio-1.5B Q4_0 GGUF",format:"gguf",precision:"q4_0",target_directory:"LFM2.5-Audio-1.5B-GGUF",files:["LFM2.5-Audio-1.5B-Q4_0.gguf","mmproj-LFM2.5-Audio-1.5B-Q4_0.gguf","vocoder-LFM2.5-Audio-1.5B-Q4_0.gguf","tokenizer-LFM2.5-Audio-1.5B-Q4_0.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-GGUF",revision:"7d525f883a077e20afb782f2ff618edcae0e39e4",gated:!1}},{id:"lfm2_audio_1_5b_jp_q8_0",display_name:"LFM2.5-Audio-1.5B-JP Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"LFM2.5-Audio-1.5B-JP-GGUF",files:["LFM2.5-Audio-1.5B-JP-Q8_0.gguf","mmproj-LFM2.5-Audio-1.5B-JP-Q8_0.gguf","vocoder-LFM2.5-Audio-1.5B-JP-Q8_0.gguf","tokenizer-LFM2.5-Audio-1.5B-JP-Q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF",revision:"64b96718b341dbd5650f9e85627cecdcbd4ac61b",gated:!1}},{id:"lfm2_audio_1_5b_jp_f16",display_name:"LFM2.5-Audio-1.5B-JP F16 GGUF",format:"gguf",precision:"f16",target_directory:"LFM2.5-Audio-1.5B-JP-GGUF",files:["LFM2.5-Audio-1.5B-JP-F16.gguf","mmproj-LFM2.5-Audio-1.5B-JP-F16.gguf","vocoder-LFM2.5-Audio-1.5B-JP-F16.gguf","tokenizer-LFM2.5-Audio-1.5B-JP-F16.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF",revision:"64b96718b341dbd5650f9e85627cecdcbd4ac61b",gated:!1}},{id:"lfm2_audio_1_5b_jp_f32",display_name:"LFM2.5-Audio-1.5B-JP F32 GGUF",format:"gguf",precision:"f32",target_directory:"LFM2.5-Audio-1.5B-JP-GGUF",files:["LFM2.5-Audio-1.5B-JP-F32.gguf","mmproj-LFM2.5-Audio-1.5B-JP-F32.gguf","vocoder-LFM2.5-Audio-1.5B-JP-F32.gguf","tokenizer-LFM2.5-Audio-1.5B-JP-F32.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF",revision:"64b96718b341dbd5650f9e85627cecdcbd4ac61b",gated:!1}},{id:"lfm2_audio_1_5b_jp_q4_0",display_name:"LFM2.5-Audio-1.5B-JP Q4_0 GGUF",format:"gguf",precision:"q4_0",target_directory:"LFM2.5-Audio-1.5B-JP-GGUF",files:["LFM2.5-Audio-1.5B-JP-Q4_0.gguf","mmproj-LFM2.5-Audio-1.5B-JP-Q4_0.gguf","vocoder-LFM2.5-Audio-1.5B-JP-Q4_0.gguf","tokenizer-LFM2.5-Audio-1.5B-JP-Q4_0.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF",revision:"64b96718b341dbd5650f9e85627cecdcbd4ac61b",gated:!1}}],dependencies:[],ui:{tags:["ASR","TTS","GGUF","Stream"],recommended_package:"lfm2_audio_1_5b_q8_0",docs:["docs/models/lfm2_audio.md"],summary:"LFM2.5-Audio transcription, speech and spoken chat (English and Japanese checkpoints) from Liquid's published GGUFs.",builtin_voices:["us_male","us_female","uk_male","uk_female"],default_voice:"us_male"},sources:[{format:"gguf",roots:{model:"."},files:{},optional_files:{},tensors:{}}]},iS={schema_version:1,family:"liveavatar",display_name:"LiveAvatar",description:"LiveAvatar audio-driven avatar video generation using the Wan2.2 S2V architecture.",category:"audio_generation",status:"experimental",tasks:["sfx"],modes:["offline","streaming"],languages:["auto"],runtime:{tags:["cuda","gguf","stream"]},capabilities:{sfx:["prompt_generation"]},options:{request:[{name:"reference_image_file",type:"string",description:"Reference image path used as the identity/appearance condition.",required:!0},{name:"generation_mode",type:"enum",values:["offline","liveavatar"],description:"Use whole-clip generation or LiveAvatar blockwise generation.",required:!1,default:"offline"},{name:"height",type:"int",description:"Generated frame height; must be a positive multiple of 16.",required:!1,min:16,default:480},{name:"width",type:"int",description:"Generated frame width; must be a positive multiple of 16.",required:!1,min:16,default:832},{name:"num_frames",type:"int",description:"Frames generated per LiveAvatar segment; must be positive and a multiple of 4 in blockwise mode (streaming or generation_mode=liveavatar).",required:!1,min:1,default:48},{name:"num_clips",type:"int",description:"Maximum LiveAvatar clips to generate from the input audio.",required:!1,min:1,default:1},{name:"num_inference_steps",type:"int",description:"Denoising steps; offline generation uses UniPC, blockwise generation uses Euler. The LiveAvatar DMD adapter is designed for 4 steps.",required:!1,min:1,default:4},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; LiveAvatar blockwise generation requires 0.",required:!1,min:0,default:0},{name:"fused_cfg",type:"bool",description:"Run classifier-free guidance in one denoiser graph.",required:!1,default:!0},{name:"sage_attention",type:"bool",description:"Use CUDA SageAttention when the backend supports it.",required:!1,default:!0},{name:"mem_saver",type:"bool",description:"Reuse immutable condition data and temporary denoiser graph storage across sequential blocks.",required:!1,default:!0},{name:"denoiser_layerwise",type:"bool",description:"Run the denoiser in layerwise mode. Offline generation requires fused_cfg=true and guidance_scale > 1.",required:!1,default:!1},{name:"denoiser_layerwise_batch",type:"int",description:"Layer group size used by layerwise denoising.",required:!1,min:1,default:16},{name:"vae_encoder_chunk_size",type:"int",description:"Cached VAE encoder chunk size.",required:!1,min:1,default:16},{name:"vae_decoder_tile_size",type:"int",description:"Opt-in VAE decoder spatial tile size for large outputs; 0 disables tiling. Enabled tile sizes must be multiples of 8 and larger than the 64-pixel overlap.",required:!1,min:0,default:0},{name:"target_cache_blocks",type:"int",description:"Target KV cache window in block units; 0 keeps the full clip cache.",required:!1,min:0,default:0},{name:"vae_cache_f16",type:"bool",description:"Store cached VAE encoder state in F16.",required:!1,default:!0},{name:"shift",type:"float",description:"Flow scheduler shift; must be > 0.",required:!1,min:0,default:3},{name:"negative_prompt",type:"string",description:"Negative prompt for classifier-free guidance.",required:!1},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,default:420}],session:[{name:"denoiser_weight_streaming",type:"bool",description:"Keep denoiser transformer blocks in host memory and stage layer groups on the accelerator.",required:!1,default:!1}],load:[{name:"support_gguf",type:"string",description:"Support GGUF containing text_encoder/audio_encoder tensors and the embedded tokenizer sidecar.",required:!1,default:"Wan2.2-S2V-Support-Q4_K_S-F16.gguf"},{name:"vae_gguf",type:"string",description:"Wan video VAE component GGUF file relative to the model root.",required:!1,default:"Wan2.2-S2V-VAE-F16.gguf"},{name:"denoiser_gguf",type:"string",description:"Denoiser DiT GGUF file relative to the model root.",required:!1,default:"Wan2.2-S2V-14B-NVFP4-LORA.gguf"}]},dependencies:[],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/LiveAvatar-GGUF",revision:"main",gated:!1}},packages:[{id:"liveavatar_nvfp4_lora",display_name:"LiveAvatar NVFP4 LoRA GGUF",default:!0,format:"gguf",precision:"native",target_directory:"LiveAvatar-GGUF",files:["Wan2.2-S2V-Support-Q4_K_S-F16.gguf","Wan2.2-S2V-VAE-F16.gguf","Wan2.2-S2V-14B-NVFP4-LORA.gguf"]}],sources:[{format:"gguf",roots:{model:"."},files:{tokenizer_model:"model:tokenizer/spiece.model"},tensors:{text_encoder_weights:{source:"model:Wan2.2-S2V-Support-Q4_K_S-F16.gguf",prefix:"text_encoder"},audio_encoder_weights:{source:"model:Wan2.2-S2V-Support-Q4_K_S-F16.gguf",prefix:"audio_encoder"}}},{format:"gguf",roots:{model:"."},tensors:{vae_weights:{source:"model:Wan2.2-S2V-VAE-F16.gguf",prefix:"vae"}}},{format:"gguf",roots:{model:"."},tensors:{denoiser_weights:{source:"model:Wan2.2-S2V-14B-NVFP4-LORA.gguf"}}}],ui:{recommended_package:"liveavatar_nvfp4_lora",tags:["SFX","GGUF","Stream"],docs:["docs/models/liveavatar.md"]}},aS={schema_version:1,family:"magpie_tts",display_name:"MagpieTTS Multilingual 357M",description:"NVIDIA MagpieTTS is a multilingual neural text-to-speech model that generates NanoCodec audio tokens from text using baked speaker context embeddings, a decoder-only transformer, and an autoregressive local transformer before decoding the tokens to waveform audio.",category:"tts",status:"supported",tasks:["tts"],modes:["offline"],languages:["ar-AE","ar-MSA","ar-SA","de","en","es","fr","hi","it","ko","pt-BR","vi","zh"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"language",type:"string",description:"Target synthesis language code used by the Magpie text frontend; default en.",required:!1,default:"en"},{name:"voice_id",type:"enum",description:"Packaged MagpieTTS voice name; default Aria. Numeric speaker index strings are also accepted within the checkpoint speaker count.",values:["Aria","Jason","John","Leo","Sofia"],required:!1,default:"Aria"},{name:"temperature",type:"float",description:"Autoregressive audio-token sampling temperature; default 0.6 from the v2607 model config.",required:!1,min:0,default:.6},{name:"top_k",type:"int",description:"Autoregressive audio-token top-k sampling limit; default 80.",required:!1,min:1,default:80},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale for Magpie decoder logits; default 2.5.",required:!1,min:0,default:2.5},{name:"max_tokens",type:"int",description:"Maximum Magpie decoder frames per text segment; default 500 from the v2607 model config.",required:!1,min:1,default:500},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 100 for zh and ko, otherwise 300.",required:!1,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"seed",type:"int",description:"Seed for audio-token sampling; default 0.",required:!1,min:0,default:0}],session:[{name:"graph_arena_mb",type:"int",description:"Reusable ggml graph arena size in MiB for Magpie stages; default 1024.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 2048.",required:!1,min:1,default:2048},{name:"weight_type",type:"enum",description:"Matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"magpie_tts_orig",display_name:"MagpieTTS Multilingual 357M Original-Dtype GGUF",default:!1,format:"gguf",precision:"orig",target_directory:"MagpieTTS-Multilingual-357M-GGUF",files:["MagpieTTS-Multilingual-357M-GGUF/magpie-tts-multilingual-357m-orig.gguf"],strip_prefix:"MagpieTTS-Multilingual-357M-GGUF"},{id:"magpie_tts_q8_0",display_name:"MagpieTTS Multilingual 357M Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MagpieTTS-Multilingual-357M-GGUF",files:["MagpieTTS-Multilingual-357M-GGUF/magpie-tts-multilingual-357m-q8_0.gguf"],strip_prefix:"MagpieTTS-Multilingual-357M-GGUF"}],dependencies:[],ui:{recommended_package:"magpie_tts_q8_0",tags:["TTS","GGUF"],docs:["docs/models/magpie_tts.md","docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",codec_config:"model:codec_config.json",speakers:"model:speakers.json"},optional_files:{ipa_dict:"model:ipa_dict.txt",cmu_dict:"model:cmu_dict.txt",german_dict:"model:german.dict",german_heteronyms:"model:german.heteronym",spanish_dict:"model:spanish.dict",portuguese_dict:"model:portuguese.dict",hindi_dict:"model:hindi.dict",heteronyms:"model:heteronyms",mandarin_chars:"model:mandarin_data/pinyin_chars.tsv",mandarin_phrases:"model:mandarin_data/pinyin_phrases.tsv",mandarin_jieba_dict:"model:mandarin_data/jieba.dict.utf8",mandarin_hmm:"model:mandarin_data/hmm_model.utf8"},tensors:{model:{source:"weights:",prefix:"model"},codec:{source:"weights:",prefix:"codec"}}},{format:"safetensors",roots:{model:".",codec:"../nemo_nano_codec_22khz_1_89kbps_safetensors"},files:{config:"model:config.json",codec_config:"codec:config.json",speakers:"model:41913ebaa70342058574da74293b7630_magpie_tts_multilingual_357m.nemo.speakers.json"},optional_files:{ipa_dict:"model:74b3e832fe914a569fcd42b51d06b2f1_ipa_dict_nv23.05.txt",cmu_dict:"model:dc7d60d6b15a4651b21c9ca2932b62c6_ipa_cmudict-0.7b_nv23.01.txt",german_dict:"model:cf01ab5c48c84f3282ef7888263361e5_de_nv230119.dict",german_heteronyms:"model:c5e4ec2af5a14ce294f4b9edcc936535_de_nv230119.heteronym",spanish_dict:"model:7dbc31751f224f2486090d59dc95b9f7_es_ES_nv230301.dict",portuguese_dict:"model:05adc40366e149b69319acd4b28a4919_pt_br_prondict-v1.0.dict",hindi_dict:"model:339da71c54b046f98cbcf38ef6d4ff67_hindi_phoneme_merged_phoneme_dict.dict",heteronyms:"model:61d57a4ccb064d1e8e3d9f871c571932_heteronyms-052722"},tensors:{model:"model:model.safetensors",codec:"codec:model.safetensors"}}]},nS={schema_version:1,family:"maya1",display_name:"Maya1",description:"Maya Research's 3B expressive English text-to-speech model with natural-language voice design and inline emotion control.",category:"tts",status:"supported",tasks:["tts","design"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["voice_design","emotion_control","long_form"],design:["voice_design"]},options:{request:[{name:"instruct",type:"string",description:"Natural-language description of the voice, accent, timbre, age, and delivery.",required:!0},{name:"max_tokens",type:"int",description:"Maximum generated audio-token count per text chunk; default 2048.",required:!1,min:1,default:2048},{name:"min_tokens",type:"int",description:"Minimum generated audio-token count before EOS may stop generation; default 28.",required:!1,min:0,default:28},{name:"temperature",type:"float",description:"Autoregressive sampling temperature; default 0.4. Must be > 0.",required:!1,min:0,default:.4},{name:"top_p",type:"float",description:"Autoregressive nucleus sampling probability; must be in (0, 1], default 0.9.",required:!1,min:0,max:1,default:.9},{name:"repetition_penalty",type:"float",description:"Autoregressive repetition penalty; default 1.1. Must be > 0.",required:!1,min:0,default:1.1},{name:"seed",type:"int",description:"Sampling and SNAC decoder noise seed; omitted requests choose a random seed.",required:!1,min:0},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 300.",required:!1,min:1,default:300},{name:"text_chunk_mode",type:"enum",description:"Framework long-form text chunking mode; tag_aware preserves inline emotion tags.",values:["default","tag_aware","japanese","endline"],required:!1,default:"tag_aware"}],session:[{name:"weight_type",type:"enum",description:"Shared AR and SNAC decoder weight storage type; default native.",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],required:!1,default:"native"},{name:"ar_weight_type",type:"enum",description:"AR backbone weight storage type; defaults to weight_type.",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],required:!1},{name:"codec_weight_type",type:"enum",description:"SNAC decoder weight storage type; only native or f32 is supported. Inherits weight_type when omitted; set codec_weight_type=f32 explicitly when using another shared weight_type.",values:["native","f32"],required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"maya1_orig",display_name:"Maya1 Original-Precision GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Maya1-GGUF",files:["Maya1-GGUF/maya1-orig.gguf"],strip_prefix:"Maya1-GGUF"},{id:"maya1_q8_0",display_name:"Maya1 Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"Maya1-GGUF",files:["Maya1-GGUF/maya1-q8_0.gguf"],strip_prefix:"Maya1-GGUF"}],dependencies:[],ui:{recommended_package:"maya1_orig",tags:["TTS","Design","GGUF"],docs:["docs/models/maya1.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{model_weights:"weights:",codec_weights:"weights:"}}]},sS={family:"meanvc2",schema_version:1,display_name:"MeanVC2",description:"MeanVC2 is a lightweight streaming zero-shot voice conversion model. The current audio.cpp package covers the recommended 120ms/40ms quality path.",category:"voice_conversion",status:"supported",tasks:["vc"],modes:["offline","streaming"],languages:["language_agnostic"],capabilities:{vc:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"seed",type:"int",description:"Random seed for MeanVC2 flow noise; default 42.",required:!1,min:0,default:42}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"meanvc2_120ms_40ms_f32",display_name:"MeanVC2 120ms/40ms F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"MeanVC2-GGUF",files:["MeanVC2-GGUF/meanvc2-120ms-40ms-fp32.gguf"],strip_prefix:"MeanVC2-GGUF"},{id:"meanvc2_120ms_40ms_q4_k",display_name:"MeanVC2 120ms/40ms Q4_K GGUF",default:!1,format:"gguf",precision:"q4_k",target_directory:"MeanVC2-GGUF",files:["MeanVC2-GGUF/meanvc2-120ms-40ms-q4_k.gguf"],strip_prefix:"MeanVC2-GGUF"}],dependencies:[],ui:{recommended_package:"meanvc2_120ms_40ms_f32",tags:["VC","GGUF"],docs:["docs/models/meanvc2.md","docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{weights:"$gguf"},tensors:{vc:{source:"weights:",prefix:"vc"},vocos:{source:"weights:",prefix:"vocos"},asr:{source:"weights:",prefix:"asr"},speaker_wavlm:{source:"weights:",prefix:"speaker_wavlm"},speaker_ecapa:{source:"weights:",prefix:"speaker_ecapa"}}}]},rS={schema_version:1,family:"mel_band_roformer",display_name:"Mel-Band RoFormer",description:"Music source-separation model that uses mel-scaled overlapping frequency bands and RoFormer attention to estimate stems such as vocals, drums, and accompaniment.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"RoFormer weight storage type. Defaults to f32 when the backend requires a host graph plan, otherwise native.",preset:"weight_type_full",required:!1},{name:"num_overlap",type:"int",description:"Number of overlapping inference windows; defaults to the package configuration. Lower values improve throughput but can reduce boundary quality.",required:!1,min:1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"mel_band_roformer_q8_0",tags:["Sep","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"mel_band_roformer_q8_0",display_name:"Mel-Band RoFormer Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Mel-Band-RoFormer-GGUF",files:["Mel-Band-RoFormer-GGUF/mel-band-roformer-q8_0.gguf"],strip_prefix:"Mel-Band-RoFormer-GGUF"},{id:"mel_band_roformer_f16",display_name:"Mel-Band RoFormer F16 GGUF",format:"gguf",precision:"f16",target_directory:"Mel-Band-RoFormer-GGUF",files:["Mel-Band-RoFormer-GGUF/mel-band-roformer-f16.gguf"],strip_prefix:"Mel-Band-RoFormer-GGUF"},{id:"mel_band_roformer_safetensors",display_name:"Mel RoFormer Safetensors",format:"safetensors",precision:"native",target_directory:"mel-roformer-mlx",files:["config.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"mlx-community/mel-roformer-mlx"}}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},oS={schema_version:1,family:"micro_wake_word",display_name:"microWakeWord",description:"Streaming wake-word detection for trained microWakeWord MixedNet TFLite models converted to GGUF.",category:"audio_tools",status:"experimental",tasks:["wake_word"],modes:["offline","streaming"],languages:["model_dependent"],capabilities:{wake_word:["speech_segments","stream_events"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"threshold",type:"float",description:"Override the converted model manifest's wake-word probability cutoff.",required:!1,min:0,max:1},{name:"sliding_window_size",type:"int",description:"Override the converted model manifest's prediction smoothing window.",required:!1,min:1}],session:[{name:"exec_plan",type:"string",description:"JSON component execution plans. Component network accepts impl ggml/neon (default ggml). GGML retains the session backend; neon runs the stateful CNN on CPU and requires ENGINE_ENABLE_NEON=ON and AArch64 NEON. Frontend and detection logic are unchanged. No artifacts or params are used.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"micro_wake_word_okay_nabu_f32",display_name:"microWakeWord Okay Nabu GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"MicroWakeWord-GGUF",files:["MicroWakeWord-GGUF/micro-wake-word-okay-nabu-f32.gguf"],strip_prefix:"MicroWakeWord-GGUF"}],dependencies:[],ui:{tags:["Wake Word","GGUF","Stream"],docs:["docs/models/micro_wake_word.md"],recommended_package:"micro_wake_word_okay_nabu_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},lS={schema_version:1,family:"midashenglm_gen",display_name:"MiDashengLM-Gen",description:"DashengLM generative audio model for speech, music, sound effects, and ambience prompts.",category:"audio_generation",status:"experimental",tasks:["music"],modes:["offline"],languages:["auto"],runtime:{tags:["gguf","cuda"]},capabilities:{music:["instrumental","style_control"]},options:{request:[{name:"duration_sec",type:"float",description:"Target audio duration budget; omitted derives from the checkpoint sequence length, hop size and sample rate. Must be finite and positive; no fixed runtime upper cap.",required:!1,default:20},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale. Any finite value is accepted.",required:!1,default:2},{name:"stop_threshold",type:"float",description:"Stop probability threshold. Any finite value is accepted.",required:!1,default:.5},{name:"min_stop_step",type:"int",description:"Minimum generated steps before accepting stop.",required:!1,min:1,default:5},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed; default 0 is a fixed seed. Negative values are not accepted.",required:!1,min:0,max:4294967295,default:0}],session:[{name:"weight_type",type:"enum",description:"Shared weight storage type.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"midashenglm_gen_f32",display_name:"MiDashengLM-Gen F32 GGUF",format:"gguf",precision:"f32",target_directory:"MiDashengLM-Gen-GGUF",files:["MiDashengLM-Gen-GGUF/midashenglm-gen-f32.gguf"],strip_prefix:"MiDashengLM-Gen-GGUF"},{id:"midashenglm_gen_q8_0",display_name:"MiDashengLM-Gen Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MiDashengLM-Gen-GGUF",files:["MiDashengLM-Gen-GGUF/midashenglm-gen-q8_0.gguf"],strip_prefix:"MiDashengLM-Gen-GGUF"}],dependencies:[],ui:{recommended_package:"midashenglm_gen_q8_0",tags:["Music","SFX","GGUF"],docs:["docs/models/midashenglm_gen.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json","vocab.json":"model:vocab.json","merges.txt":"model:merges.txt","tokenizer_config.json":"model:tokenizer_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json","vocab.json":"model:vocab.json","merges.txt":"model:merges.txt","tokenizer_config.json":"model:tokenizer_config.json"},tensors:{weights:"model:model.safetensors.index.json"}}]},cS={schema_version:1,family:"ming3_audio",display_name:"Ming 3.0 Audio Tiny",description:"Whisper audio encoder and hybrid KDA/MLA mixture-of-experts Thinker, with a separate continuous-latent Talker for spoken responses.",category:"asr",status:"experimental",tasks:["asr","s2s","tts","clone"],modes:["offline"],languages:["zh","en"],capabilities:{tts:["speaker_reference","built_in_voices"],clone:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"system_prompt",type:"string",required:!1,description:"Thinker system instruction. When supplied, the user prompt precedes audio as in the official chat examples."},{name:"enable_thinking",type:"bool",required:!1,default:!1,description:"Enable the Thinker chat template's detailed thinking mode."},{name:"prompt",type:"string",required:!1,description:"Thinker instruction accompanying the input audio; omitted ASR requests use the official transcription prompt."},{name:"max_tokens",type:"int",required:!1,default:256,min:1,description:"Maximum generated Thinker text tokens."},{name:"max_audio_tokens",type:"int",required:!1,default:1e3,min:1,description:"Maximum generated Talker acoustic patches per text fragment."},{name:"voice_id",type:"enum",values:["US_James","US_Stella","灵小柔","灵楷","US_Emma","UK_George","UK_Charlotte","灵小安","灵语汐","灵小萌","灵小雅","花小呗","灵韵","妩媚妲己","灵婉","灵小月","灵朵儿","灵岩","灵小锋","灵小川","灵小甄","灵小知","灵小惠","灵小晴","灵小琪","灵梦","灵恬","灵小汐","灵小棠","灵小梨","灵舒","灵娇","灵小芸","灵锐","灵空","灵宇","灵朗","灵旭","灵骁","灵江","悲伤女声","皮六","说唱小哥","蜡笔小新","悟空","灵信远_生气","灵信远_厌恶","灵信远_惊讶","灵信远_高兴","灵信远_恐惧","灵信远_中性","灵信远_悲伤","灵思齐_高兴","灵思齐_恐惧","灵思齐_生气","灵思齐_厌恶","灵思齐_中性","灵思齐_惊讶","灵思齐_悲伤","灵叙柔_高兴","灵叙柔_恐惧","灵叙柔_惊讶","灵叙柔_悲伤","灵叙柔_生气","灵叙柔_中性","灵叙柔_厌恶","灵绮木_悲伤","灵绮木_厌恶","灵绮木_中性","灵绮木_恐惧","灵绮木_惊讶","灵绮木_高兴","灵绮木_生气","灵书悦_恐惧","灵书悦_厌恶","灵书悦_高兴","灵书悦_惊讶","灵书悦_悲伤","灵书悦_生气","灵书悦_中性","灵渊霆_厌恶","灵渊霆_中性","灵渊霆_恐惧","灵渊霆_惊讶","灵渊霆_悲伤","灵渊霆_生气","灵渊霆_高兴","灵素心_高兴","灵素心_惊讶","灵素心_恐惧","灵素心_中性","灵素心_生气","灵素心_悲伤","灵素心_厌恶","灵晓声_惊讶","灵晓声_厌恶","灵晓声_高兴","灵晓声_生气","灵晓声_中性","灵晓声_悲伤","灵风信_生气","灵风信_中性","灵风信_厌恶","灵风信_高兴","灵风信_惊讶","灵风信_悲伤","灵风信_恐惧","灵采薇_惊讶","灵采薇_厌恶","灵采薇_恐惧","灵采薇_生气","灵采薇_悲伤","灵采薇_中性","灵采薇_高兴","灵卓然_厌恶","灵卓然_中性","灵卓然_恐惧","灵卓然_惊讶","灵卓然_高兴","灵卓然_悲伤","灵卓然_生气","灵惜梦_中性","灵惜梦_厌恶","灵惜梦_高兴","灵惜梦_悲伤","灵惜梦_恐惧","灵惜梦_惊讶","灵惜梦_生气","灵浅忧_高兴","灵浅忧_生气","灵浅忧_厌恶","灵浅忧_悲伤","灵浅忧_惊讶","灵浅忧_恐惧","灵浅忧_中性","灵昭野_生气","灵昭野_高兴","灵昭野_悲伤","灵昭野_中性","灵昭野_厌恶","灵昭野_恐惧","灵昭野_惊讶","灵心澜_厌恶","灵心澜_惊讶","灵心澜_生气","灵心澜_中性","灵心澜_高兴","灵心澜_悲伤","灵心澜_恐惧","灵犀言_悲伤","灵犀言_厌恶","灵犀言_恐惧","灵犀言_中性","灵犀言_惊讶","灵犀言_高兴","灵犀言_生气","灵语冰_悲伤","灵语冰_厌恶","灵语冰_高兴","灵语冰_恐惧","灵语冰_惊讶","灵语冰_中性","灵语冰_生气","灵逸风_生气","灵逸风_悲伤","灵逸风_惊讶","灵逸风_中性","灵逸风_恐惧","灵逸风_高兴","灵逸风_厌恶","灵悦澜_中性","灵悦澜_高兴","灵悦澜_厌恶","灵悦澜_恐惧","灵悦澜_生气","灵悦澜_悲伤","灵悦澜_惊讶","灵惊鸿_厌恶","灵惊鸿_高兴","灵惊鸿_中性","灵惊鸿_惊讶","灵惊鸿_恐惧","灵惊鸿_生气","灵惊鸿_悲伤","灵御心_高兴","灵御心_中性","灵御心_生气","灵御心_恐惧","灵御心_厌恶","灵御心_惊讶","灵御心_悲伤","灵语恬_厌恶","灵语恬_高兴","灵语恬_恐惧","灵语恬_悲伤","灵语恬_惊讶","灵语恬_生气","灵语恬_中性","灵心恬_厌恶","灵心恬_惊讶","灵心恬_悲伤","灵心恬_中性","灵心恬_恐惧","灵心恬_高兴","灵心恬_生气","灵惜蕊_惊讶","灵惜蕊_厌恶","灵惜蕊_恐惧","灵惜蕊_高兴","灵惜蕊_中性","灵惜蕊_悲伤","灵惜蕊_生气","灵语萱_厌恶","灵语萱_高兴","灵语萱_惊讶","灵语萱_恐惧","灵语萱_生气","灵语萱_悲伤","灵语萱_中性","灵语烟_生气","灵语烟_恐惧","灵语烟_中性","灵语烟_厌恶","灵语烟_惊讶","灵语烟_高兴","灵语烟_悲伤","灵律雅_恐惧","灵律雅_生气","灵律雅_惊讶","灵律雅_高兴","灵律雅_厌恶","灵律雅_中性","灵律雅_悲伤","灵惊涛_厌恶","灵惊涛_恐惧","灵惊涛_高兴","灵惊涛_悲伤","灵惊涛_中性","灵惊涛_惊讶","灵惊涛_生气","灵寒陌_生气","灵寒陌_厌恶","灵寒陌_恐惧","灵寒陌_高兴","灵寒陌_中性","灵寒陌_惊讶","灵寒陌_悲伤","灵决冥_悲伤","灵决冥_厌恶","灵决冥_生气","灵决冥_中性","灵决冥_惊讶","灵决冥_恐惧","灵决冥_高兴","灵亦尘_中性","灵亦尘_厌恶","灵亦尘_高兴","灵亦尘_恐惧","灵亦尘_生气","灵亦尘_悲伤","灵亦尘_惊讶","灵语尘_生气","灵语尘_高兴","灵语尘_厌恶","灵语尘_惊讶","灵语尘_中性","灵语尘_悲伤","灵语尘_恐惧","灵慈萱_高兴","灵慈萱_厌恶","灵慈萱_惊讶","灵慈萱_生气","灵慈萱_中性","灵慈萱_悲伤","灵慈萱_恐惧","灵妙音_中性","灵妙音_悲伤","灵妙音_惊讶","灵妙音_厌恶","灵妙音_生气","灵妙音_高兴","灵妙音_恐惧","灵断尘_悲伤","灵断尘_高兴","灵断尘_惊讶","灵断尘_恐惧","灵断尘_中性","灵断尘_生气","灵断尘_厌恶","灵悦兮_高兴","灵悦兮_中性","灵悦兮_生气","灵悦兮_惊讶","灵悦兮_厌恶","灵悦兮_悲伤","灵悦兮_恐惧","灵若虚_恐惧","灵若虚_惊讶","灵若虚_中性","灵若虚_悲伤","灵若虚_高兴","灵若虚_厌恶","灵若虚_生气","灵熙婉_厌恶","灵熙婉_生气","灵熙婉_惊讶","灵熙婉_高兴","灵熙婉_中性","灵熙婉_恐惧","灵熙婉_悲伤","灵旭扬_中性","灵旭扬_生气","灵旭扬_恐惧","灵旭扬_高兴","灵旭扬_惊讶","灵旭扬_悲伤","灵旭扬_厌恶","灵阅川_生气","灵阅川_悲伤","灵阅川_高兴","灵阅川_厌恶","灵阅川_惊讶","灵阅川_中性","灵阅川_恐惧","灵未央_高兴","灵未央_中性","灵未央_惊讶","灵未央_悲伤","灵未央_厌恶","灵未央_恐惧","灵未央_生气","灵妩月_厌恶","灵妩月_生气","灵妩月_中性","灵妩月_惊讶","灵妩月_恐惧","灵妩月_高兴","灵妩月_悲伤","灵梦瑶_中性","灵梦瑶_恐惧","灵梦瑶_高兴","灵梦瑶_悲伤","灵梦瑶_惊讶","灵梦瑶_生气","灵妙声_中性","灵妙声_恐惧","灵妙声_高兴","灵妙声_悲伤","灵妙声_惊讶","灵妙声_生气","灵烈瑶_中性","灵烈瑶_厌恶","灵烈瑶_恐惧","灵烈瑶_悲伤","灵烈瑶_惊讶","灵烈瑶_生气","灵烈瑶_高兴","灵幽月_中性","灵幽月_厌恶","灵幽月_恐惧","灵幽月_悲伤","灵幽月_惊讶","灵幽月_生气","灵幽月_高兴","灵悦心_中性","灵悦心_厌恶","灵悦心_恐惧","灵悦心_悲伤","灵悦心_惊讶","灵悦心_生气","灵悦心_高兴","灵汐月_中性","灵汐月_厌恶","灵汐月_恐惧","灵汐月_悲伤","灵汐月_惊讶","灵汐月_生气","灵汐月_高兴","灵书意_中性","灵书意_厌恶","灵书意_恐惧","灵书意_悲伤","灵书意_惊讶","灵书意_生气","灵书意_高兴","灵知远_中性","灵知远_厌恶","灵知远_恐惧","灵知远_悲伤","灵知远_惊讶","灵知远_生气","灵知远_高兴","灵温言_中性","灵温言_厌恶","灵温言_恐惧","灵温言_悲伤","灵温言_惊讶","灵温言_生气","灵温言_高兴","灵傲尘_中性","灵傲尘_厌恶","灵傲尘_恐惧","灵傲尘_悲伤","灵傲尘_生气","灵傲尘_高兴","灵佑安_中性","灵佑安_厌恶","灵佑安_恐惧","灵佑安_悲伤","灵佑安_惊讶","灵佑安_生气","灵佑安_高兴","灵惜晨_中性","灵惜晨_厌恶","灵惜晨_恐惧","灵惜晨_悲伤","灵惜晨_惊讶","灵惜晨_生气","灵惜晨_高兴","灵宛溪_中性","灵宛溪_厌恶","灵宛溪_恐惧","灵宛溪_悲伤","灵宛溪_惊讶","灵宛溪_生气","灵宛溪_高兴","灵言澈_中性","灵言澈_厌恶","灵言澈_恐惧","灵言澈_悲伤","灵言澈_惊讶","灵言澈_生气","灵言澈_高兴","灵溯光_中性","灵溯光_厌恶","灵溯光_恐惧","灵溯光_悲伤","灵溯光_惊讶","灵溯光_生气","灵溯光_高兴","灵惊弦_中性","灵惊弦_厌恶","灵惊弦_恐惧","灵惊弦_悲伤","灵惊弦_惊讶","灵惊弦_生气","灵惊弦_高兴","灵嘉肴_中性","灵嘉肴_厌恶","灵嘉肴_恐惧","灵嘉肴_悲伤","灵嘉肴_惊讶","灵嘉肴_生气","灵嘉肴_高兴","灵黛嗔_中性","灵黛嗔_厌恶","灵黛嗔_恐惧","灵黛嗔_悲伤","灵黛嗔_惊讶","灵黛嗔_生气","灵黛嗔_高兴","灵孤影_中性","灵孤影_厌恶","灵孤影_恐惧","灵孤影_悲伤","灵孤影_惊讶","灵孤影_生气","灵孤影_高兴","灵雨汐_中性","灵雨汐_恐惧","灵雨汐_高兴","灵雨汐_悲伤","灵雨汐_惊讶","灵雨汐_生气","蜡笔小新_野原新之助 (小新)","蜡笔小新_野原美伢 (美伢)","小猪佩奇_佩奇","康熙王朝_康熙","西游记_唐僧","甄嬛传_四郎","潜伏_余则成","水浒传_武松","水浒传_潘金莲","雍正王朝_雍正"],required:!1,description:"Talker built-in voice name; ignored when reference audio is supplied."},{name:"reference_text",type:"string",required:!1,description:"Reference transcript enabling acoustic-prefix continuation; without it reference audio supplies speaker conditioning only."},{name:"language",type:"string",required:!1,description:"Talker output language; inferred from its input text when omitted."},{name:"seed",type:"int",required:!1,min:0,default:42,description:"Talker flow and reference-posterior sampling seed. Thinker generation is greedy."},{name:"guidance_scale",type:"float",required:!1,default:2,description:"Talker conditioned prediction plus guidance_scale times its difference from the null prediction."},{name:"sigma",type:"float",required:!1,default:.25,min:0,description:"Talker flow SDE noise scale."},{name:"temperature",type:"float",required:!1,default:0,min:0,description:"Talker flow sampling temperature; zero still uses seeded initial noise."},{name:"raw_text",type:"bool",required:!1,default:!1,description:"Synthesize text as one fragment without framework text chunking."},{name:"trim_silence",type:"bool",required:!1,default:!0,description:"Trim trailing low-energy 100-ms frames per Talker fragment, retaining a 300-ms tail."},{name:"text_chunk_size",type:"int",required:!1,min:1,default:100,description:"Talker text chunk budget in Unicode codepoints."},{name:"text_chunk_mode",type:"enum",required:!1,default:"tag_aware",values:["default","tag_aware","japanese","endline"],description:"Framework Talker text chunking policy."}],session:[{name:"disk_experts",type:"bool",required:!1,default:!1,description:"Keep Thinker expert weights outside GPU memory and stage routed experts into a bounded GPU cache; computation stays on the selected backend."},{name:"pin_experts",type:"bool",required:!1,default:!0,description:"With disk_experts, retain expert payloads in pinned host RAM instead of reading them from the GGUF on each cache miss. Defaults to false on Metal, which uses ordinary host staging."},{name:"expert_cache_size",type:"int",required:!1,default:8,min:8,max:128,description:"With disk_experts, number of GPU-resident expert slots per routed Thinker layer."},{name:"disk_expert_read_threads",type:"int",required:!1,default:1,min:1,max:64,description:"Host workers for copying selected GGUF experts into staging when disk_experts is enabled and pin_experts is false. Default 1 preserves serial reads; values above 1 require an OpenMP build."},{name:"reference_cache",type:"bool",required:!1,default:!0,description:"Reuse speaker features and seeded acoustic conditioning for the most recent reference waveform."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Ming-3.0-Audio-Tiny-GGUF",revision:"main",gated:!1}},packages:[{id:"ming3_audio_tiny_bf16",display_name:"Ming 3.0 Audio Tiny BF16",format:"gguf",precision:"bf16",default:!0,target_directory:"Ming-3.0-Audio-Tiny-GGUF",files:["ming-3.0-audio-tiny-bf16.gguf"]},{id:"ming3_audio_tiny_q8_0",display_name:"Ming 3.0 Audio Tiny Q8_0 Experts",format:"gguf",precision:"q8_0",target_directory:"Ming-3.0-Audio-Tiny-GGUF",files:["ming-3.0-audio-tiny-q8_0.gguf"]},{id:"ming3_audio_tiny_q4_k",display_name:"Ming 3.0 Audio Tiny Q4_K Experts",format:"gguf",precision:"q4_k",target_directory:"Ming-3.0-Audio-Tiny-GGUF",files:["ming-3.0-audio-tiny-q4_k.gguf"]}],dependencies:[],ui:{recommended_package:"ming3_audio_tiny_bf16",tags:["ASR","TTS","GGUF"],docs:["docs/models/ming3_audio.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",generation_config:"model:generation_config.json",talker_config:"model:talker/config.json",talker_llm_config:"model:talker/llm/config.json",talker_tokenizer_json:"model:talker/llm/tokenizer.json",talker_tokenizer_config:"model:talker/llm/tokenizer_config.json",vae_config:"model:talker/vae/config.json"},tensors:{thinker:{source:"weights:",prefix:"thinker"},talker:{source:"weights:",prefix:"talker"},vae:{source:"weights:",prefix:"vae"},speaker:{source:"weights:",prefix:"speaker"}}}]},dS={schema_version:1,family:"ming3_tts",display_name:"Ming 3.0 TTS 0.5B",description:"Multilingual continuous-latent speech synthesis with a Qwen backbone, flow-matching acoustic head, CAMPPlus speaker conditioning and an audio VAE.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline"],languages:["zh","en","ja","ko","de","fr","es"],capabilities:{tts:["long_form","speaker_reference","style_control","emotion_control","built_in_voices"],clone:["long_form","speaker_reference","style_control","emotion_control"],design:["voice_design"]},runtime:{tags:["gguf"]},options:{request:[{name:"template_name",type:"enum",required:!1,description:"Conditioning template; defaults to voice_design on that route, otherwise tts.",values:["tts","multilingual","basic","emotion","dialect","ip","voice_design","freeform"]},{name:"language",type:"string",required:!1,description:"Target language name or code; defaults to the request's language (the server's top-level language field, the CLI's --language). Required by multilingual; ignored by dialect."},{name:"instruct",type:"string",required:!1,description:"Voice description for voice_design; raw conditioning text for freeform or tts."},{name:"instruction_schema",type:"enum",required:!1,description:"Structured instruction field language; defaults to en for dialect, otherwise zh.",values:["en","zh"]},{name:"speed",type:"enum",required:!1,description:"Categorical speaking speed for the basic template, not waveform resampling.",values:["慢速","中速","快速"]},{name:"pitch",type:"enum",required:!1,description:"Categorical pitch for the basic template.",values:["低","中","高"]},{name:"volume",type:"enum",required:!1,description:"Categorical volume for the basic template.",values:["低","中","高"]},{name:"emotion",type:"string",required:!1,description:"Emotion label for the emotion template."},{name:"dialect",type:"enum",required:!1,description:"Dialect for the dialect template.",values:["chuanyu dialect","cantonese"]},{name:"voice_id",type:"enum",required:!1,description:"Built-in English voice for the ip template.",values:["US_Emma","US_James","UK_George","UK_Charlotte"]},{name:"reference_text",type:"string",required:!1,description:"Transcript accompanying voice_ref; enables the acoustic reference prefix. Without a transcript, only speaker conditioning is used."},{name:"speaker_embedding_file",type:"path_list",required:!1,description:"CAMPPlus embedding file or list, with shape [192] or [1, 192]. Supersedes voice_ref audio; zero_speaker_embedding takes precedence."},{name:"use_speaker_embedding",type:"bool",required:!1,default:!0,description:"Condition on the reference speaker embedding."},{name:"zero_speaker_embedding",type:"bool",required:!1,default:!1,description:"Use a zero projected speaker row instead of reference audio conditioning."},{name:"max_tokens",type:"int",required:!1,default:1e3,min:1,description:"Maximum generated acoustic patches per text chunk, also limited by the 512-position generation context."},{name:"guidance_scale",type:"float",required:!1,default:2,description:"Flow guidance: conditioned prediction plus guidance_scale times its difference from the null prediction."},{name:"sigma",type:"float",required:!1,default:.25,min:0,description:"Flow SDE noise scale."},{name:"temperature",type:"float",required:!1,default:0,min:0,description:"Flow sampling temperature; zero still uses seeded initial noise."},{name:"seed",type:"int",required:!1,default:1895,min:0,description:"Reference-posterior and generation noise seed."},{name:"raw_text",type:"bool",required:!1,default:!1,description:"Send the text as one synthesis fragment without frontend chunking."},{name:"text_chunk_size",type:"int",required:!1,min:1,description:"Framework long-form chunk budget in Unicode codepoints; default 50 when hanzi, kana and Hangul outnumber other letters and digits, otherwise 300 (120 for voice design and freeform, whose chunks after the first use the first generated chunk as their reference)."},{name:"text_chunk_mode",type:"enum",required:!1,default:"tag_aware",description:"Framework text chunking policy.",values:["default","tag_aware","japanese","endline"]},{name:"trim_silence",type:"bool",required:!1,default:!0,description:"Trim trailing low-energy 100-ms frames per fragment, retaining a 300-ms tail."}],session:[{name:"reference_cache",type:"bool",required:!1,default:!0,description:"Reuse prepared conditioning for the most recently used reference waveform."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Ming-3.0-TTS-0.5B-GGUF",revision:"main",gated:!1}},packages:[{id:"ming_3_0_tts_0_5b_bf16",display_name:"Ming 3.0 TTS 0.5B BF16",format:"gguf",precision:"bf16",default:!0,target_directory:"Ming-3.0-TTS-0.5B-GGUF",files:["ming-3.0-tts-0.5b-bf16.gguf"]},{id:"ming_3_0_tts_0_5b_q8_0",display_name:"Ming 3.0 TTS 0.5B Q8_0",format:"gguf",precision:"q8_0",default:!1,target_directory:"Ming-3.0-TTS-0.5B-GGUF",files:["ming-3.0-tts-0.5b-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"ming_3_0_tts_0_5b_bf16",tags:["TTS","GGUF"],docs:["docs/models/ming3_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{weights:"weights:",speaker:{source:"weights:",prefix:"speaker"}}}]},uS={schema_version:1,family:"minimax_h3",display_name:"MiniMax-H3",description:"MiniMax-H3 text-to-audio/video generation through the official T2VA pipeline: Qwen3-VL text conditioning, joint audio/video DiT denoising, and MiniMax-H3 audio/video VAE decode.",category:"audio_generation",status:"experimental",tasks:["tts","music","sfx"],modes:["offline"],languages:["auto"],capabilities:{tts:["style_control","multi_speaker"],music:["instrumental","style_control"],sfx:["prompt_generation"]},runtime:{tags:["cuda","gguf"]},ui:{recommended_package:"minimax_h3_q4_k",tags:["TTS","Music","SFX","GGUF"],docs:["docs/models/minimax_h3.md","docs/reports/minimax_h3_performance.md"]},options:{request:[{name:"num_inference_steps",type:"int",description:"Positive joint DiT denoising step count; default 50.",required:!1,min:1,default:50},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed in [0, 4294967295] for deterministic initial latents; default 42.",required:!1,min:0,max:4294967295,default:42},{name:"height",type:"int",description:"Target video canvas height used by the joint T2VA latent layout; omitted or nonpositive values use 768. Smaller positive sizes are rounded up to the supported geometry.",required:!1,default:768},{name:"width",type:"int",description:"Target video canvas width used by the joint T2VA latent layout; omitted or nonpositive values use 1344. Smaller positive sizes are rounded up to the supported geometry.",required:!1,default:1344},{name:"num_frames",type:"int",description:"Target video frame count before H3 alignment; omitted or nonpositive values use 124. MiniMax-H3 video is 24 fps; positive counts are rounded to the supported temporal geometry.",required:!1,default:124},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; 1.0 matches the baseline T2VA audio run.",required:!1,default:1},{name:"sampler_mode",type:"enum",description:"Joint DiT sampler: euler, res_multistep, dpmpp_2m, or unipc.",values:["euler","res_multistep","dpmpp_2m","unipc"],required:!1,default:"euler"},{name:"negative_prompt",type:"string",description:"Negative prompt used by classifier-free guidance when guidance_scale is not 1.0.",required:!1,default:" "},{name:"flow_shift",type:"float",description:"Video FlowMatch scheduler shift.",required:!1,default:12},{name:"audio_flow_shift",type:"float",description:"Audio FlowMatch scheduler shift.",required:!1,default:3},{name:"return_video",type:"bool",description:"Decode and return RGB24 video frames as an output artifact.",required:!1,default:!1},{name:"text_layerwise",type:"bool",description:"Run the prompt encoder with scoped layer-group weights instead of a full prompt encoder weight store.",required:!1,default:!1},{name:"text_layerwise_batch",type:"int",description:"Prompt encoder layer-group size when text_layerwise is enabled.",required:!1,min:1,default:1},{name:"dit_layerwise",type:"bool",description:"Run the DiT denoiser with scoped prelude, block-group, and final weights instead of a full DiT weight store.",required:!1,default:!1},{name:"dit_layerwise_batch",type:"int",description:"DiT block-group size when dit_layerwise is enabled.",required:!1,min:1,default:1},{name:"dit_mlp_chunk_tokens",type:"int",description:"Token chunk size for the per-token DiT MLP in layerwise high-resolution mode. Zero disables chunking.",required:!1,min:0,default:0},{name:"dit_acceleration",type:"string",description:"Optional DiT acceleration mode: none, first_block_cache, or spectrum. Requires dit_layerwise=false and sampler_mode=euler; Spectrum additionally requires guidance_scale=1.",required:!1,default:"none"},{name:"first_block_cache_threshold",type:"float",description:"First-block cache residual-difference threshold.",required:!1,min:0,default:.1},{name:"first_block_cache_start_percent",type:"float",description:"Denoising progress fraction where first-block caching begins; must be below end_percent. Used to derive the sigma window when explicit sigma endpoints are omitted.",required:!1,min:0,max:1,default:.1},{name:"first_block_cache_end_percent",type:"float",description:"Denoising progress fraction where first-block caching ends; must exceed start_percent. Used to derive the sigma window when explicit sigma endpoints are omitted.",required:!1,min:0,max:1,default:.95},{name:"first_block_cache_start_sigma",type:"float",description:"Largest video sigma where first-block cache may be used. Supply together with first_block_cache_end_sigma; otherwise both endpoints are derived from the denoising progress fractions and schedule.",required:!1},{name:"first_block_cache_end_sigma",type:"float",description:"Smallest video sigma where first-block cache may be used. Supply together with first_block_cache_start_sigma; otherwise both endpoints are derived from the denoising progress fractions and schedule.",required:!1},{name:"first_block_cache_max_consecutive",type:"int",description:"Maximum consecutive first-block cache hits before forcing a full DiT step.",required:!1,min:1,default:2},{name:"spectrum_warmup_steps",type:"int",description:"Full DiT warmup steps before spectrum forecasting may skip steps.",required:!1,min:1,default:1},{name:"spectrum_initial_window",type:"float",description:"Initial spectrum forecast scheduling window.",required:!1,min:1,default:2},{name:"spectrum_flex_window",type:"float",description:"Spectrum forecast window growth after actual DiT steps.",required:!1,min:0,default:.75},{name:"spectrum_degree",type:"int",description:"Chebyshev polynomial degree for spectrum forecasting.",required:!1,min:0,default:1},{name:"spectrum_history_size",type:"int",description:"Maximum spectrum forecast history rows.",required:!1,min:1,default:8},{name:"spectrum_ridge_lambda",type:"float",description:"Ridge regularization for spectrum forecasting.",required:!1,min:0,default:.1}],session:[{name:"weight_context_mb",type:"int",description:"MiniMax-H3 staged weight context size in MiB.",required:!1,min:1,default:512},{name:"mem_saver",type:"bool",description:"Release staged DiT, audio VAE, and video VAE weights after their request phase instead of keeping them resident for the session. Prompt encoder weights are always request-scoped.",required:!1,default:!0}],load:[]},dependencies:[],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"minimax_h3_q4_k",display_name:"MiniMax-H3 Q4_K GGUF",default:!0,format:"gguf",precision:"q4_k",target_directory:"MiniMax-H3-Q4-GGUF",files:["MiniMax-H3-Q4-GGUF/configuration.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/chat_template.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/merges.txt","MiniMax-H3-Q4-GGUF/FL2VA/processor/preprocessor_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/tokenizer.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/tokenizer_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/video_preprocessor_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/vocab.json","MiniMax-H3-Q4-GGUF/text_encoder_q4_k.gguf","MiniMax-H3-Q4-GGUF/dit.gguf","MiniMax-H3-Q4-GGUF/audio_vae_folded_f16.gguf","MiniMax-H3-Q4-GGUF/video_vae.gguf"],strip_prefix:"MiniMax-H3-Q4-GGUF"},{id:"minimax_h3_q4_k_int8_dit",display_name:"MiniMax-H3 Q4_K GGUF + INT8 ConvRot DiT",default:!1,format:"gguf",precision:"q4_k",target_directory:"MiniMax-H3-Q4-GGUF",files:["MiniMax-H3-Q4-GGUF/configuration.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/chat_template.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/merges.txt","MiniMax-H3-Q4-GGUF/FL2VA/processor/preprocessor_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/tokenizer.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/tokenizer_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/video_preprocessor_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/vocab.json","MiniMax-H3-Q4-GGUF/text_encoder_q4_k.gguf","MiniMax-H3-Q4-GGUF/dit_int8.gguf","MiniMax-H3-Q4-GGUF/audio_vae_folded_f16.gguf","MiniMax-H3-Q4-GGUF/video_vae.gguf"],strip_prefix:"MiniMax-H3-Q4-GGUF"}],sources:[{format:"gguf",roots:{model:"."},files:{configuration:"model:configuration.json",tokenizer_config:"model:FL2VA/processor/tokenizer_config.json",tokenizer_json:"model:FL2VA/processor/tokenizer.json",vocab:"model:FL2VA/processor/vocab.json",merges:"model:FL2VA/processor/merges.txt",preprocessor_config:"model:FL2VA/processor/preprocessor_config.json"},tensors:{text_encoder_weights:"model:text_encoder_q4_k.gguf",dit_weights:"model:dit.gguf",audio_vae_weights:"model:audio_vae_folded_f16.gguf",video_vae_weights:"model:video_vae.gguf"}}]},fS={schema_version:1,family:"minimax_music3",display_name:"MiniMax Music 3",description:"MiniMax Music 3 text-to-music generation with lyrics conditioning.",category:"audio_generation",status:"experimental",tasks:["music"],modes:["offline"],languages:["auto"],capabilities:{music:["lyrics","style_control"]},runtime:{tags:["gguf"]},options:{request:[{name:"lyrics",type:"string",description:"Lyrics to sing. Structure tags such as [verse] and [chorus] are supported.",required:!0},{name:"duration_sec",type:"float",description:"Positive AR frame budget expressed in seconds; not a hard final waveform duration limit.",required:!1,min:.1,default:20},{name:"num_inference_steps",type:"int",description:"Flow matching Euler steps per chunk.",required:!1,min:1,default:30},{name:"guidance_scale",type:"float",description:"Flow transformer classifier-free guidance scale. Must be > 0.",required:!1,min:0,default:1.7},{name:"ar_guidance_scale",type:"float",description:"Autoregressive semantic and depth CFG scale. Must be > 0.",required:!1,min:0,default:1.5},{name:"top_k",type:"int",description:"Top-k sampling for semantic and residual code sampling.",required:!1,min:1,default:50},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,default:0},{name:"flow_uncond_interval",type:"int",description:"Evaluate unconditional flow CFG every N-th step, reusing the guidance delta between evaluations. Values <= 1 disable reuse and evaluate both branches every step.",required:!1,default:1},{name:"flow_uncond_warmup",type:"int",description:"Initial flow steps that evaluate both CFG branches before guidance-delta reuse; nonpositive values add no warmup.",required:!1,default:2},{name:"ensemble_takes",type:"int",description:"Independent takes in a batched AR pass using consecutive seeds; flow/vocoder decode each take. Named outputs take_01 through take_NN are emitted only when ensemble_takes > 1; otherwise only primary audio is returned.",required:!1,min:1,max:16,default:1},{name:"ensemble_prefix_frames",type:"int",description:"Shared intro frames before ensemble takes fork, approximately 25 frames per second. Zero disables intro locking.",required:!1,min:0,default:0},{name:"flow_chunk_hop_frames",type:"int",description:"Flow chunk hop in AR frames, approximately 25 per second. Zero uses checkpoint configuration; positive values are capped at the configured chunk size.",required:!1,min:0,default:0}],session:[{name:"weight_type",type:"enum",values:["native","bf16","f16","q8_0","q4_0","q4_k"],description:"Shared weight storage type.",required:!1,default:"native"},{name:"language_model_gguf",type:"string",description:"Language model component GGUF file relative to the model root.",required:!1,default:"language_model_q4_0.gguf"},{name:"rvq_depth_decoder_gguf",type:"string",description:"RVQ depth decoder component GGUF file relative to the model root.",required:!1,default:"rvq_depth_decoder_q8_0.gguf"},{name:"flow_transformer_gguf",type:"string",description:"Flow transformer component GGUF file relative to the model root.",required:!1,default:"transformer_q4_0.gguf"},{name:"graph_arena_mb",type:"int",description:"Host graph-metadata arena size in MiB, not device workspace; legacy graph_context_mb remains accepted.",required:!1,min:1,default:32},{name:"weight_context_mb",type:"int",description:"Weight context size in MiB.",required:!1,min:1,default:32},{name:"mem_saver",type:"bool",description:"Load large generation stages only while they are needed to reduce peak VRAM.",required:!1,default:!0},{name:"pipeline_overlap",type:"bool",description:"Overlap AR decoding with condition/flow/vocoder work on a second backend stream. Requires mem_saver=false; mem_saver=true is an error. Long requests and nondefault chunk hops use sequential execution.",required:!1,default:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/MiniMax-Music3-GGUF",revision:"main",gated:!1}},packages:[{id:"minimax_music3_q4_0",display_name:"MiniMax Music 3 Q4_0 GGUF",default:!0,format:"gguf",precision:"q4_0",target_directory:"MiniMax-Music3-GGUF",files:["config.json","config/language_model.json","config/rvq_depth_decoder.json","config/condition_encoder.json","config/transformer.json","config/vocoder.json","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","language_model_q4_0.gguf","rvq_depth_decoder_q8_0.gguf","condition_encoder.gguf","transformer_q4_0.gguf","vocoder.gguf"]},{id:"minimax_music3_q8_0",display_name:"MiniMax Music 3 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"MiniMax-Music3-GGUF",files:["config.json","config/language_model.json","config/rvq_depth_decoder.json","config/condition_encoder.json","config/transformer.json","config/vocoder.json","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","language_model_q8_0.gguf","rvq_depth_decoder_q8_0.gguf","condition_encoder.gguf","transformer_q8_0.gguf","vocoder.gguf"]},{id:"minimax_music3_bf16",display_name:"MiniMax Music 3 BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"MiniMax-Music3-GGUF",files:["config.json","config/language_model.json","config/rvq_depth_decoder.json","config/condition_encoder.json","config/transformer.json","config/vocoder.json","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","language_model_bf16.gguf","rvq_depth_decoder_bf16.gguf","condition_encoder.gguf","transformer_bf16.gguf","vocoder.gguf"]}],dependencies:[],ui:{recommended_package:"minimax_music3_q4_0",tags:["Music","GGUF"],docs:["docs/models/minimax_music3.md","docs/music_generation.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:"."},files:{root_config:"model:config.json",language_model_config:"model:config/language_model.json",depth_decoder_config:"model:config/rvq_depth_decoder.json",condition_encoder_config:"model:config/condition_encoder.json",transformer_config:"model:config/transformer.json",vocoder_config:"model:config/vocoder.json",tokenizer_json:"model:tokenizer/tokenizer.json",tokenizer_config:"model:tokenizer/tokenizer_config.json"}},{format:"safetensors",roots:{model:"."},files:{root_config:"model:config.json",language_model_config:"model:config/language_model.json",depth_decoder_config:"model:config/rvq_depth_decoder.json",condition_encoder_config:"model:config/condition_encoder.json",transformer_config:"model:config/transformer.json",vocoder_config:"model:config/vocoder.json",tokenizer_json:"model:tokenizer/tokenizer.json",tokenizer_config:"model:tokenizer/tokenizer_config.json"},tensors:{language_model_weights:{source:"model:language_model/model.safetensors.index.json"},depth_decoder_weights:{source:"model:rvq_depth_decoder/diffusion_pytorch_model.safetensors"},condition_encoder_weights:{source:"model:condition_encoder/diffusion_pytorch_model.safetensors"},transformer_weights:{source:"model:transformer/diffusion_pytorch_model.safetensors.index.json"},vocoder_weights:{source:"model:vocoder/diffusion_pytorch_model.safetensors"}}}]},mS={family:"miocodec",display_name:"MioCodec",description:"Lightweight neural audio codec that encodes 44.1 kHz audio into a low-rate 25 Hz discrete token stream and decodes tokens with speaker conditioning for efficient speech modeling.",category:"audio_tools",status:"supported",tasks:["vc","s2s"],modes:["offline"],languages:["language_agnostic"],options:{request:[],session:[{name:"weight_type",type:"enum",description:"Weight storage type.",required:!1,preset:"weight_type_full",default:"f32"},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"constant_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"content_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"global_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"wave_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512}],load:[]},capabilities:{codec:["encode_decode"],vc:["speaker_reference"],s2s:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"miocodec_q8_0",tags:["Codec","VC","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"miocodec_q8_0",display_name:"MioCodec 25Hz 44.1kHz v2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MioCodec-25Hz-44.1kHz-v2-GGUF",files:["MioCodec-25Hz-44.1kHz-v2-GGUF/miocodec-25hz-44khz-v2-q8_0.gguf"],strip_prefix:"MioCodec-25Hz-44.1kHz-v2-GGUF"},{id:"miocodec_f16",display_name:"MioCodec 25Hz 44.1kHz v2 F16 GGUF",format:"gguf",precision:"f16",target_directory:"MioCodec-25Hz-44.1kHz-v2-GGUF",files:["MioCodec-25Hz-44.1kHz-v2-GGUF/miocodec-25hz-44khz-v2-f16.gguf"],strip_prefix:"MioCodec-25Hz-44.1kHz-v2-GGUF"},{id:"miocodec_orig",display_name:"MioCodec 25Hz 44.1kHz v2 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"MioCodec-25Hz-44.1kHz-v2-GGUF",files:["MioCodec-25Hz-44.1kHz-v2-GGUF/miocodec-25hz-44khz-v2-orig.gguf"],strip_prefix:"MioCodec-25Hz-44.1kHz-v2-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.yaml"},tensors:{weights:{source:"weights:",prefix:"weights"},wavlm_weights:{source:"weights:",prefix:"wavlm_weights"}}},{format:"safetensors",roots:{model:".",wavlm:"wavlm-base-plus-mlx"},files:{config:"model:config.yaml"},tensors:{weights:"model:model.safetensors",wavlm_weights:"wavlm:weights.safetensors"}}]},pS={family:"miotts",display_name:"MioTTS",description:"Lightweight LLM-based English and Japanese TTS family built on MioCodec, supporting low-latency speech generation and zero-shot voice cloning from short reference audio.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline"],languages:["en","ja"],options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated tokens; default 700.",required:!1,min:1},{name:"top_k",type:"int",description:"Generation control; defaults to the checkpoint config.",required:!1},{name:"top_p",type:"float",description:"Generation control; defaults to the checkpoint config.",required:!1,min:0,max:1},{name:"temperature",type:"float",description:"Generation control; defaults to the checkpoint config.",required:!1,min:0,max:2},{name:"repetition_penalty",type:"float",description:"Generation control; defaults to the checkpoint config.",required:!1,min:1,max:1.5},{name:"presence_penalty",type:"float",description:"Presence penalty; default 0.",required:!1,min:0,max:1},{name:"frequency_penalty",type:"float",description:"Frequency penalty; default 0.",required:!1,min:0,max:1},{name:"do_sample",type:"bool",description:"Generation control; defaults to the checkpoint config.",required:!1},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0,max:4294967295},{name:"best_of_n",type:"int",description:"Candidate count, capped by the session maximum; greater than one enables best-of-N.",required:!1,min:1},{name:"best_of_n_enabled",type:"bool",description:"Override the session best-of-N setting.",required:!1},{name:"best_of_n_language",type:"enum",description:"ASR language used to rank candidates.",required:!1,values:["auto","en","ja"]},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size; inherits the session setting.",required:!1,min:1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; defaults to native.",required:!1,preset:"weight_type_full"},{name:"codec_model_path",type:"path",description:"MioCodec model path; defaults to sibling MioCodec-25Hz-44.1kHz-v2.",required:!1},{name:"best_of_n_asr_model_path",type:"path",description:"ASR model path for candidate ranking; defaults to sibling Qwen3-ASR-0.6B.",required:!1},{name:"text_chunk_size",type:"int",description:"Default framework text chunk size; 120 when hanzi, kana and Hangul outnumber other letters and digits, otherwise 180.",required:!1},{name:"best_of_n_enabled",type:"bool",description:"Enable candidate generation and ASR ranking.",required:!1,default:!1},{name:"best_of_n_default",type:"int",description:"Default candidate count.",required:!1,min:1,default:1},{name:"best_of_n_max",type:"int",description:"Maximum candidate count.",required:!1,min:1,default:8},{name:"best_of_n_language",type:"enum",description:"ASR language used to rank candidates.",required:!1,values:["auto","en","ja"],default:"auto"},{name:"prefill_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:1024},{name:"decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"codec_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"codec_constant_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"global_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"wave_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512}],load:[]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"miotts_1_7b_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/miotts.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"miotts_1_7b_q8_0",display_name:"MioTTS 1.7B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MioTTS-1.7B-GGUF",files:["MioTTS-1.7B-GGUF/miotts-1.7b-q8_0.gguf"],strip_prefix:"MioTTS-1.7B-GGUF"},{id:"miotts_1_7b_bf16",display_name:"MioTTS 1.7B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"MioTTS-1.7B-GGUF",files:["MioTTS-1.7B-GGUF/miotts-1.7b-bf16.gguf"],strip_prefix:"MioTTS-1.7B-GGUF"},{id:"miotts_1_7b_orig",display_name:"MioTTS 1.7B Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"MioTTS-1.7B-GGUF",files:["MioTTS-1.7B-GGUF/miotts-1.7b-orig.gguf"],strip_prefix:"MioTTS-1.7B-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},optional_files:{tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},optional_files:{tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},gS={schema_version:1,family:"mira_tts",display_name:"MiraTTS",description:"MiraTTS is a community voice-cloning TTS model with a Qwen2 autoregressive speech-token generator, ECAPA/Perceiver speaker tokenizer, conditional acoustic processor, and DAC decoder.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["speaker_reference"],clone:["speaker_reference"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum autoregressive speech tokens; default 1024.",required:!1,min:1,default:1024},{name:"temperature",type:"float",description:"Sampling temperature; default 0.8. Must be positive.",required:!1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling cutoff; default 50.",required:!1,min:1,default:50},{name:"top_p",type:"float",description:"Nucleus sampling probability; default 0.95. Must be positive.",required:!1,max:1,default:.95},{name:"min_p",type:"float",description:"Minimum probability relative to the most likely token; default 0.05.",required:!1,min:0,max:1,default:.05},{name:"repetition_penalty",type:"float",description:"Autoregressive repetition penalty; default 1.2.",required:!1,min:1,default:1.2},{name:"text_chunk_size",type:"int",description:"Maximum codepoints per progressively emitted streaming segment; default 160.",required:!1,min:1,default:160},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode used by streaming synthesis.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"seed",type:"int",description:"Sampling seed; omitted requests choose a random seed.",required:!1,min:0}],session:[{name:"reference_cache_slots",type:"int",description:"Encoded reference-voice cache slots; default 1. Set to 0 to disable reuse.",required:!1,min:0,default:1},{name:"backbone_weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"native",description:"Storage type for the Qwen2 language-model weights."},{name:"linear_weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"native",description:"Storage type for non-convolutional speaker, processor, and decoder weights."},{name:"conv_weight_type",type:"enum",required:!1,default:"f32",description:"Storage type for speaker and processor convolution weights. The DAC transposed-convolution decoder remains F32 for CUDA compatibility. Applies to the speaker encoder/acoustic processor; waveform decoder remains f32.",values:["native","f32","f16","bf16"]}],load:[]},packages:[],dependencies:[],ui:{tags:["TTS","Clone"],docs:["docs/models/mira_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{language_model:{source:"weights:",prefix:"language_model"},speaker_encoder:{source:"weights:",prefix:"speaker_encoder"},processor:{source:"weights:",prefix:"processor"},decoder:{source:"weights:",prefix:"decoder"},upsampler:{source:"weights:",prefix:"upsampler"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{language_model:"model:language_model.safetensors",speaker_encoder:"model:speaker_encoder.safetensors",processor:"model:processor.safetensors",decoder:"model:decoder.safetensors",upsampler:"model:upsampler.safetensors"}}]},hS={schema_version:1,family:"mms_forced_aligner",display_name:"Meta MMS-300M Forced Aligner",description:"Meta MMS-300M multilingual CTC forced aligner (Wav2Vec2ForCTC) that aligns an exact transcript to mono/stereo audio and returns word timestamps. The checkpoint covers 1,130 languages, but this port's native text normalization supports Dutch (nl/nld) and English (en/eng) Latin script only; text_normalization=pre_romanized accepts caller-supplied ASCII romanization, and unsupported non-Latin input is rejected. Checkpoint license: CC-BY-NC-4.0; GGUF conversion is local-only, no public redistribution is approved.",category:"speech_analysis",status:"community",tasks:["align"],modes:["offline"],languages:["multilingual"],capabilities:{align:["word_timestamps"]},dependencies:[],options:{request:[{name:"language",type:"string",description:"Language code. Built-in normalization supports nl/nld and en/eng; pre_romanized accepts any nonempty code.",required:!0},{name:"text_normalization",type:"enum",description:"Transcript normalization mode; latin handles Dutch/English Latin script natively, pre_romanized trusts caller-supplied ASCII romanization.",values:["latin","pre_romanized"],required:!1,default:"latin"},{name:"star_frequency",type:"enum",description:"Placement of the virtual CTC target between words (segment) or at transcript edges (edges); matches the reference default segment.",values:["segment","edges"],required:!1,default:"segment"},{name:"merge_threshold_sec",type:"float",description:"Close gaps at or below this threshold, rounded to alignment frames, by moving the later word start; word entries remain separate. Default 0.0 disables gap closure.",required:!1,min:0,default:0},{name:"return_timestamps",type:"bool",description:"Compatibility option; word timestamps are always returned, including when false.",required:!1,default:!0}],session:[{name:"emission_window_sec",type:"float",description:"Center emission window length in seconds used to split long waveforms; must be > 0 and at most 3600. Rounded 16 kHz sample count must be a multiple of 320 (20 ms); default 30.",required:!1,min:.02,max:3600,default:30},{name:"emission_context_sec",type:"float",description:"Left/right context appended to each emission window in seconds; must be nonnegative, at most 3600, and below emission_window_sec. Rounded 16 kHz sample count must be a multiple of 320 (20 ms); default 2.",required:!1,min:0,max:3600,default:2},{name:"max_alignment_cells",type:"int",description:"Hard cap on CTC DP cells (frames x states) allocated per request; alignment fails before allocation when exceeded; default 50000000.",required:!1,min:1,default:5e7},{name:"max_target_tokens",type:"int",description:"Hard cap on flattened CTC target tokens per request; default 8192.",required:!1,min:1,default:8192},{name:"weight_type",type:"enum",description:"Weight storage type; default native (tensors kept as stored in the checkpoint).",preset:"weight_type_conv",required:!1,default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"mms_forced_aligner_300m_f16",tags:["Align","GGUF"],docs:["docs/models/mms_forced_aligner.md","docs/speech_analysis.md","docs/gguf.md"]},package_defaults:{download:{kind:"unsupported",reason:"CC-BY-NC-4.0 checkpoint: convert locally with audiocpp_gguf; no public audio.cpp GGUF distribution is approved."}},packages:[{id:"mms_forced_aligner_300m_f16",display_name:"Meta MMS-300M Forced Aligner F16 GGUF",default:!0,format:"gguf",precision:"f16",target_directory:"MMS-Forced-Aligner-GGUF",files:["MMS-Forced-Aligner-GGUF/mms-forced-aligner-f16.gguf"],strip_prefix:"MMS-Forced-Aligner-GGUF"},{id:"mms_forced_aligner_300m_safetensors",display_name:"Meta MMS-300M Forced Aligner Safetensors",format:"safetensors",precision:"native",target_directory:"mms-300m-1130-forced-aligner",files:["config.json","model.safetensors","special_tokens_map.json","tokenizer_config.json","vocab.json"],download:{kind:"huggingface_snapshot",repo:"MahmoudAshraf/mms-300m-1130-forced-aligner",revision:"49402e9577b1158620820667c218cd494cc44486",gated:!1}},{id:"mms_forced_aligner_300m_q8_0",display_name:"Meta MMS-300M Forced Aligner Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"MMS-Forced-Aligner-GGUF",files:["MMS-Forced-Aligner-GGUF/mms-forced-aligner-q8_0.gguf"],strip_prefix:"MMS-Forced-Aligner-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",vocab:"model:vocab.json"},optional_files:{special_tokens_map:"model:special_tokens_map.json",tokenizer_config:"model:tokenizer_config.json",preprocessor_config:"model:preprocessor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",vocab:"model:vocab.json"},optional_files:{special_tokens_map:"model:special_tokens_map.json",tokenizer_config:"model:tokenizer_config.json",preprocessor_config:"model:preprocessor_config.json"},tensors:{weights:"model:model.safetensors"}}]},_S={schema_version:1,family:"moonshine_asr",display_name:"Moonshine Streaming ASR",description:"Moonshine tiny/small/medium streaming English speech recognition models.",category:"asr",status:"experimental",tasks:["asr"],modes:["offline","streaming"],languages:["en"],capabilities:{asr:["vad_chunking"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens. Defaults to audio-duration derived limit. Nonpositive values select the automatic budget.",required:!1,default:0},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio chunk in seconds. Must be positive and round to a nonempty sample count.",required:!1,default:60}],session:[{name:"exec_plan",type:"string",description:"JSON component execution plans. Component decoder accepts impl default/ggml/neon and optional backend. Default retains GGML on the session backend; neon requires ENGINE_ENABLE_NEON=ON and an AArch64 NEON CPU session. No artifacts or params are used.",required:!1,default:"{}"},{name:"weight_type",type:"enum",description:"Shared matmul weight storage type. Omitted uses native, except the CPU encoder with hidden size 620, 10 layers and decoder hidden size 512 uses f16. The decoder defaults to native unless explicitly overridden.",values:["native","f32","f16"],required:!1},{name:"conv_weight_type",type:"enum",description:"Frontend convolution weight storage type.",preset:"weight_type_conv",required:!1},{name:"decoder_weight_type",type:"enum",description:"Decoder matmul weight storage type; inherits an explicit weight_type setting, otherwise native.",values:["native","f32","f16"],required:!1},{name:"encoder_gelu",type:"enum",description:"Encoder GELU lowering.",values:["erf","exact","tanh","quick"],required:!1,default:"quick"},{name:"cpu_blas_scheduler",type:"bool",description:"Use BLAS/Accelerate for supported CPU encoder matmuls.",required:!1,default:!0},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB.",required:!1,min:1,default:256},{name:"graph_arena_mb",type:"int",description:"Graph arena size in MiB.",required:!1,min:1,default:512},{name:"vad_model_path",type:"path",description:"Silero VAD model path used by audio_chunk_mode=vad.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},runtime:{tags:["gguf","cpu","stream"]},ui:{recommended_package:"moonshine_streaming_tiny_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/asr.md","docs/models/moonshine_asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moonshine_streaming_tiny_q8_0",display_name:"Moonshine Streaming Tiny Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Moonshine-Streaming-GGUF",files:["Moonshine-Streaming-GGUF/moonshine-streaming-tiny-q8_0.gguf"],strip_prefix:"Moonshine-Streaming-GGUF"},{id:"moonshine_streaming_small_q8_0",display_name:"Moonshine Streaming Small Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Moonshine-Streaming-GGUF",files:["Moonshine-Streaming-GGUF/moonshine-streaming-small-q8_0.gguf"],strip_prefix:"Moonshine-Streaming-GGUF"},{id:"moonshine_streaming_medium_q8_0",display_name:"Moonshine Streaming Medium Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Moonshine-Streaming-GGUF",files:["Moonshine-Streaming-GGUF/moonshine-streaming-medium-q8_0.gguf"],strip_prefix:"Moonshine-Streaming-GGUF"},{id:"moonshine_streaming_tiny_safetensors",display_name:"Moonshine Streaming Tiny Safetensors",format:"safetensors",precision:"f32",target_directory:"moonshine-streaming-tiny",files:["config.json","tokenizer.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"moonshine-ai/moonshine-streaming-tiny",revision:"main",gated:!1}},{id:"moonshine_streaming_small_safetensors",display_name:"Moonshine Streaming Small Safetensors",format:"safetensors",precision:"f32",target_directory:"moonshine-streaming-small",files:["config.json","tokenizer.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"moonshine-ai/moonshine-streaming-small",revision:"main",gated:!1}},{id:"moonshine_streaming_medium_safetensors",display_name:"Moonshine Streaming Medium Safetensors",format:"safetensors",precision:"f32",target_directory:"moonshine-streaming-medium",files:["config.json","tokenizer.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"moonshine-ai/moonshine-streaming-medium",revision:"main",gated:!1}}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},vS={schema_version:1,family:"moss_transcribe_diarize",display_name:"MOSS-Transcribe-Diarize",description:"Joint transcription, speaker diarization, and timestamps across 50+ languages with a Whisper encoder and Qwen3 decoder.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["auto","50+ languages"],capabilities:{asr:["segments","speaker_turns"]},runtime:{tags:["gguf"]},options:{request:[{name:"max_tokens",type:"int",min:1,required:!1,description:"Maximum generated transcript tokens. Defaults to checkpoint generation_config.max_new_tokens; must be positive."},{name:"instruct",type:"string",required:!1,description:"Transcription instruction; empty uses the upstream diarization prompt."}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moss_transcribe_diarize_bf16",display_name:"MOSS-Transcribe-Diarize GGUF BF16",default:!0,format:"gguf",precision:"bf16",target_directory:"MOSS-Transcribe-Diarize-GGUF",files:["MOSS-Transcribe-Diarize-GGUF/moss-transcribe-diarize-bf16.gguf"],strip_prefix:"MOSS-Transcribe-Diarize-GGUF"},{id:"moss_transcribe_diarize_q8_0",display_name:"MOSS-Transcribe-Diarize GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"MOSS-Transcribe-Diarize-GGUF",files:["MOSS-Transcribe-Diarize-GGUF/moss-transcribe-diarize-q8_0.gguf"],strip_prefix:"MOSS-Transcribe-Diarize-GGUF"},{id:"moss_transcribe_diarize_q4_k",display_name:"MOSS-Transcribe-Diarize GGUF Q4_K",format:"gguf",precision:"q4_k",target_directory:"MOSS-Transcribe-Diarize-GGUF",files:["MOSS-Transcribe-Diarize-GGUF/moss-transcribe-diarize-q4_k.gguf"],strip_prefix:"MOSS-Transcribe-Diarize-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:[],recommended_package:"moss_transcribe_diarize_bf16"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},bS={family:"moss_tts_local",display_name:"MOSS-TTS-Local",description:"Flagship MOSS-TTS model for high-fidelity 31-language and code-switched speech, zero-shot voice cloning, long-form generation, and fine-grained Pinyin, phoneme, and duration control.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline"],languages:["ar","cs","da","de","el","en","es","fa","fi","fr","he","hi","hu","it","ja","ko","mk","ms","nl","pl","pt","ro","ru","sv","sw","th","tl","tr","vi","yue","zh"],options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated audio frames.",required:!1,min:1,default:4096},{name:"do_sample",type:"bool",description:"Enable sampling.",required:!1,default:!0},{name:"temperature",type:"float",description:"Audio sampling temperature. Must be finite and positive when sampling.",required:!1,default:1.7},{name:"top_p",type:"float",description:"Audio nucleus sampling probability.",required:!1,default:.8},{name:"top_k",type:"int",description:"Audio top-k sampling limit.",required:!1,default:25},{name:"repetition_penalty",type:"float",description:"Audio repetition penalty. Must be finite and positive when token history is nonempty.",required:!1,default:1},{name:"text_temperature",type:"float",description:"Text sampling temperature. Must be finite and positive when sampling.",required:!1,default:1},{name:"text_top_p",type:"float",description:"Text nucleus sampling probability.",required:!1,default:1},{name:"text_top_k",type:"int",description:"Text top-k sampling limit.",required:!1,default:50},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size.",required:!1,default:2048,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,values:["default","tag_aware","japanese","endline"],default:"default"}],session:[{name:"weight_type",type:"enum",description:"Backbone weight storage; auto uses F32 on CPU, BF16 on CUDA, native on other backends.",required:!1,values:["auto","native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],default:"auto"},{name:"reference_cache_slots",type:"int",description:"Encoded reference cache slots; zero disables reuse.",required:!1,min:0,default:1}],load:[]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"moss_tts_local_v1_5_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/moss_tts_local.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moss_tts_local_v1_5_q8_0",display_name:"MOSS-TTS-Local v1.5 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MOSS-TTS-Local-v1.5-GGUF",files:["MOSS-TTS-Local-v1.5-GGUF/moss-tts-local-v1.5-q8_0.gguf"],strip_prefix:"MOSS-TTS-Local-v1.5-GGUF"},{id:"moss_tts_local_v1_5_bf16",display_name:"MOSS-TTS-Local v1.5 BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"MOSS-TTS-Local-v1.5-GGUF",files:["MOSS-TTS-Local-v1.5-GGUF/moss-tts-local-v1.5-bf16.gguf"],strip_prefix:"MOSS-TTS-Local-v1.5-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}]},yS={family:"moss_tts_nano",display_name:"MOSS-TTS-Nano",description:"Compact deployment-first MOSS-TTS model for real-time multilingual speech generation, lightweight integration, and zero-shot voice cloning.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["ar","cs","da","de","el","en","es","fa","fr","hu","it","ja","ko","pl","pt","ru","sv","tr","zh"],options:{request:[{name:"reference_text",type:"string",description:"Transcript for reference audio; a nonempty value requires voice reference audio.",required:!1,default:""},{name:"max_tokens",type:"int",description:"Maximum generated audio frames.",required:!1,min:1,default:300},{name:"active_codebooks",type:"int",description:"Active codebooks; defaults to the checkpoint n_vq. Must not exceed checkpoint n_vq; omitted uses n_vq.",required:!1,min:1},{name:"do_sample",type:"bool",description:"Enable sampling.",required:!1,default:!0},{name:"temperature",type:"float",description:"Audio sampling temperature. Must be positive, including when do_sample=false.",required:!1,default:1.7},{name:"top_p",type:"float",description:"Audio nucleus sampling probability.",required:!1,default:.8,min:0,max:1},{name:"top_k",type:"int",description:"Audio top-k sampling limit.",required:!1,default:25,min:0},{name:"repetition_penalty",type:"float",description:"Audio repetition penalty. Must be positive.",required:!1,default:1},{name:"text_temperature",type:"float",description:"Text sampling temperature. Must be positive, including when do_sample=false.",required:!1,default:1.5},{name:"text_top_p",type:"float",description:"Text nucleus sampling probability.",required:!1,default:1,min:0,max:1},{name:"text_top_k",type:"int",description:"Text top-k sampling limit.",required:!1,default:50,min:0},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size; default 50 when hanzi, kana and Hangul outnumber other letters and digits, otherwise 256.",required:!1,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,values:["default","tag_aware","japanese","endline"],default:"default"}],session:[{name:"weight_type",type:"enum",description:"Weight storage type.",required:!1,preset:"weight_type_full",default:"native"},{name:"global_weight_type",type:"enum",description:"Global transformer weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"local_frame_weight_type",type:"enum",description:"Local frame decoder weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"prefill_mode",type:"enum",description:"How prompt rows are forwarded: one batched graph (default, fast) or one row at a time through the decode graph. single_row keeps quantized runs on a single kernel family for numerical self-consistency at a one-time prefill latency cost; see the model docs' quantization notes.",required:!1,values:["batched","single_row"],default:"batched"},{name:"global_prefill_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"global_decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128},{name:"global_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"local_frame_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"local_frame_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128},{name:"audio_tokenizer_encoder_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"audio_tokenizer_decoder_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"audio_tokenizer_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128}],load:[]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"moss_tts_nano_100m_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/moss_tts_nano.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moss_tts_nano_100m_q8_0",display_name:"MOSS-TTS-Nano 100M Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MOSS-TTS-Nano-100M-GGUF",files:["MOSS-TTS-Nano-100M-GGUF/moss-tts-nano-100m-q8_0.gguf"],strip_prefix:"MOSS-TTS-Nano-100M-GGUF"},{id:"moss_tts_nano_100m_bf16",display_name:"MOSS-TTS-Nano 100M BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"MOSS-TTS-Nano-100M-GGUF",files:["MOSS-TTS-Nano-100M-GGUF/moss-tts-nano-100m-bf16.gguf"],strip_prefix:"MOSS-TTS-Nano-100M-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_model:"model:tokenizer.model",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_model:"model:tokenizer.model",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}]},wS={schema_version:1,family:"moss_tts_v15",display_name:"MOSS-TTS-v1.5",description:"8B delay-pattern MOSS-TTS: zero-shot voice cloning from a short reference, 24 kHz, with an explicit duration budget.",category:"community",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en","zh"],capabilities:{tts:["speaker_reference","style_control","long_form"],clone:["speaker_reference"]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors.index.json",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}],options:{request:[{name:"min_frames",type:"int",required:!1,default:0,description:"Minimum generated audio frames per text chunk; nonpositive values derive a text-length-based floor. Separate from duration_frames conditioning."},{name:"max_frames",type:"int",required:!1,default:0,description:"Generated audio-frame ceiling per text chunk; nonpositive values derive a text-length-based ceiling. Runtime raises it to at least the effective min_frames plus the number of codebooks."},{name:"instruct",type:"string",required:!1,description:"Voice description. Followed only loosely on this checkpoint; a reference recording is far more reliable."},{name:"duration_frames",type:"int",required:!1,description:"Duration budget in codec frames at 12.5 a second, the model's own '- Tokens:' field. Nonpositive values disable duration conditioning."},{name:"language",type:"string",required:!1,description:"Full language name; the model does not understand codes like 'en'."},{name:"seed",type:"int",required:!1,description:"Reproduces a take exactly; default 0. Parsed as signed 32-bit integer then converted to uint32; negative values wrap.",default:0},{name:"text_temperature",type:"float",required:!1,default:1.5,description:"Text-token sampling temperature. Must be finite and positive when sampling."},{name:"temperature",type:"float",required:!1,description:"Audio sampling temperature; default 1.5. Must be finite and positive when sampling.",default:1.5},{name:"top_p",type:"float",required:!1,description:"Audio nucleus sampling cutoff; default 0.6.",default:.6},{name:"top_k",type:"int",required:!1,description:"Audio top-k; default 50.",default:50},{name:"repetition_penalty",type:"float",required:!1,description:"Audio repetition penalty; default 1.1. Must be finite and positive when history is nonempty.",default:1.1},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 200.",required:!1,min:1,default:200},{name:"text_chunk_mode",type:"enum",description:"Text chunking policy; word_budget also accepts default.",values:["word_budget","tag_aware","japanese","endline"],required:!1,default:"word_budget"}],session:[{name:"weight_type",type:"enum",values:["native","f32","bf16","q8_0"],required:!1,default:"native",description:"Backbone and head weight storage; default native, which keeps a GGUF package's own type. Forcing bf16 dequantises a quantised package and costs the VRAM the quantisation was meant to save. f16 is rejected: this backbone produces NaN in it."}],load:[]},ui:{tags:["TTS","Clone","GGUF"],docs:["docs/models/moss_tts_v15.md","docs/tts.md","docs/gguf.md"],recommended_package:"moss_tts_v15_q8_0_codec_f16"},packages:[{id:"moss_tts_v15_q8_0_codec_f16",display_name:"MOSS-TTS-v1.5 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MOSS-TTS-v1.5-GGUF",files:["moss_tts_v15_q8_0_codec_f16.gguf"]},{id:"moss_tts_v15_q4_k_codec_f16",display_name:"MOSS-TTS-v1.5 Q4_K GGUF",default:!1,format:"gguf",precision:"q4_k",target_directory:"MOSS-TTS-v1.5-GGUF",files:["moss_tts_v15_q4_k_codec_f16.gguf"]},{id:"moss_tts_v15_bf16_codec_f16",display_name:"MOSS-TTS-v1.5 BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"MOSS-TTS-v1.5-GGUF",files:["moss_tts_v15_bf16_codec_f16.gguf"]}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTS-v1.5-GGUF",revision:"main",gated:!1}},dependencies:[]},kS={schema_version:1,family:"moss_ttsd",display_name:"MOSS-TTSD",description:"8B delay-pattern dialogue TTS: speaker-tagged conversation in one take, with per-speaker zero-shot voice cloning. 24 kHz, 16 codebooks.",category:"community",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en","zh"],capabilities:{tts:["speaker_reference","multi_speaker","long_form"],clone:["speaker_reference","multi_speaker"]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors.index.json",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}],options:{request:[{name:"voice_samples",type:"string",required:!1,description:"Per-speaker reference WAV paths, comma separated and positional: the first is [S1], the second [S2]. Leave an entry empty to let that speaker be invented rather than cloned. Cannot be combined with voice_ref."},{name:"reference_text",type:"string",required:!1,description:"What the reference recordings say, speaker-tagged. Prepended to the dialogue so the continuation carries on from words it has already spoken."},{name:"language",type:"string",required:!1,description:"Full language name; the model does not understand codes like 'en'."},{name:"instruct",type:"string",required:!1,description:"Free-text direction for the delivery."},{name:"seed",type:"int",required:!1,description:"Reproduces a take exactly. Parsed as signed 32-bit integer then converted to uint32; negative values wrap."},{name:"text_temperature",type:"float",required:!1,default:1.5,description:"Text-token sampling temperature. Must be finite and positive when sampling."},{name:"temperature",type:"float",required:!1,min:0,default:1.5,description:"Audio sampling temperature; must be > 0, default 1.5."},{name:"top_p",type:"float",required:!1,min:0,default:.6,description:"Audio nucleus sampling cutoff."},{name:"top_k",type:"int",required:!1,default:50,description:"Audio top-k. Nonpositive values disable filtering."},{name:"repetition_penalty",type:"float",required:!1,min:0,default:1.1,description:"Audio repetition penalty; must be > 0. Checked when token history is present; default 1.1."},{name:"max_frames",type:"int",required:!1,description:"Ceiling on generated codec frames at 12.5/s; 0 derives one from the dialogue length. Nonpositive values derive an automatic ceiling."}],session:[{name:"weight_type",type:"enum",values:["native","f32","bf16","q8_0"],required:!1,default:"native",description:"Backbone and head weight storage; default native, which keeps a GGUF package's own type. Forcing bf16 dequantises a quantised package and costs the VRAM the quantisation was meant to save. f16 is rejected: this backbone produces NaN in it."}],load:[]},ui:{tags:["TTS","Clone","GGUF"],docs:["docs/models/moss_ttsd.md","docs/tts.md","docs/gguf.md"],recommended_package:"moss_ttsd_q8_0_codec_f16"},packages:[{id:"moss_ttsd_q8_0_codec_f16",display_name:"MOSS-TTSD Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MOSS-TTSD-GGUF",download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTSD-GGUF"},files:["moss_ttsd_q8_0_codec_f16.gguf"]},{id:"moss_ttsd_q4_k_codec_f16",display_name:"MOSS-TTSD Q4_K GGUF (f16 heads)",default:!1,format:"gguf",precision:"q4_k",target_directory:"MOSS-TTSD-GGUF",download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTSD-GGUF"},files:["moss_ttsd_q4_k_codec_f16.gguf"]},{id:"moss_ttsd_bf16_codec_f16",display_name:"MOSS-TTSD BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"MOSS-TTSD-GGUF",download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTSD-GGUF"},files:["moss_ttsd_bf16_codec_f16.gguf"]}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTS-v1.5-GGUF",revision:"main",gated:!1}},dependencies:[]},xS={family:"moss_voicegen",display_name:"MOSS-VoiceGenerator",description:"MOSS voice design model: creates a speaker from a written instruction instead of a reference recording, then speaks the supplied text in that voice.",category:"community",status:"community",tasks:["design"],modes:["offline"],languages:["en","zh"],capabilities:{design:["voice_design"]},options:{request:[{name:"min_frames",type:"int",required:!1,default:0,description:"Minimum generated audio frames per text chunk; nonpositive values derive a text-length-based floor."},{name:"max_frames",type:"int",required:!1,default:0,description:"Generated audio-frame ceiling per text chunk; nonpositive values derive a text-length-based ceiling. Runtime raises it to at least the effective min_frames plus the number of codebooks."},{name:"instruct",type:"string",required:!1,description:"Voice description: timbre, age, pace, emotion."},{name:"text_temperature",type:"float",required:!1,default:1.5,description:"Text-token sampling temperature. Must be finite and positive when sampling."},{name:"language",type:"string",description:"Optional full language name, such as English or Chinese; not an ISO language code.",required:!1},{name:"seed",type:"int",description:"Generation seed; later text chunks add their chunk index. Parsed as signed 32-bit integer then converted to uint32; negative values wrap.",required:!1,default:0},{name:"temperature",type:"float",description:"Audio-token sampling temperature. Must be finite and positive when sampling.",required:!1,default:1.5},{name:"top_p",type:"float",description:"Audio-token nucleus sampling cutoff.",required:!1,default:.6},{name:"top_k",type:"int",description:"Audio-token top-k sampling limit.",required:!1,default:50},{name:"repetition_penalty",type:"float",description:"Audio-token repetition penalty. Must be finite and positive when history is nonempty.",required:!1,default:1.1},{name:"text_chunk_size",type:"int",description:"Maximum characters per generated text chunk; must be positive.",required:!1,min:1,default:200},{name:"text_chunk_mode",type:"enum",description:"Text chunking policy.",required:!1,preset:"text_chunk_mode_full",default:"word_budget"}],session:[{name:"weight_type",type:"enum",description:"Backbone weight storage. f16 is not supported.",required:!1,values:["native","f32","bf16","q8_0"],default:"bf16"}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"moss_voicegen_bf16_codec_f16_decode",tags:["Voice Design","GGUF"],docs:["docs/models/moss_voicegen.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moss_voicegen_bf16_codec_f16_decode",display_name:"MOSS-VoiceGenerator BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"MOSS-VoiceGenerator-GGUF",files:["MOSS-VoiceGenerator-GGUF/moss_voicegen_bf16_codec_f16_decode.gguf"],strip_prefix:"MOSS-VoiceGenerator-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}]},SS={schema_version:1,family:"mossformer2",display_name:"MossFormer2",description:"MossFormer2 overlapping speech separation at 16 kHz.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Separation window duration; zero selects whole-file inference.",min:0,default:2,required:!1},{name:"audio_chunk_overlap_sec",type:"float",description:"Overlap between adjacent audio chunks, in seconds; must be smaller than audio_chunk_duration_sec when chunking is enabled. Recommended: 25% of audio_chunk_duration_sec, matching the official Python settings. Overlapping edges are trimmed rather than averaged. Ignored for whole-file inference.",min:0,default:.5,required:!1},{name:"normalize_output",type:"bool",description:"Match each trimmed track RMS to the input as in ClearVoice's NumPy interface.",default:!0,required:!1}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"mossformer2_ss_16k_f32",display_name:"MossFormer2 SS 16K F32",default:!0,format:"gguf",precision:"f32",target_directory:"MossFormer2-GGUF",files:["MossFormer2-GGUF/mossformer2-ss-16k-f32.gguf"],strip_prefix:"MossFormer2-GGUF"},{id:"mossformer2_ss_16k_f16",display_name:"MossFormer2 SS 16K F16",default:!1,format:"gguf",precision:"f16",target_directory:"MossFormer2-GGUF",files:["MossFormer2-GGUF/mossformer2-ss-16k-f16.gguf"],strip_prefix:"MossFormer2-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/mossformer2.md"],recommended_package:"mossformer2_ss_16k_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},TS={schema_version:1,family:"muscriptor",display_name:"MuScriptor",description:"MuScriptor is an audio-to-symbolic model that converts music audio into symbolic note events or MIDI files, with instrument constraints, sampling, beam search, batch chunk decoding, and streaming final-result output.",category:"audio_tools",status:"supported",tasks:["midi"],modes:["offline","streaming"],languages:["music"],runtime:{tags:["gguf","stream"]},capabilities:{},options:{request:[{name:"instruments",type:"string",description:"Comma-separated instrument group names to constrain generated MIDI events; empty allows all instruments.",required:!1,default:""},{name:"output_format",type:"enum",description:"Primary output serialization written by --out; midi writes a MIDI file, json writes generated note events. Default midi.",values:["midi","json"],required:!1,default:"midi"},{name:"max_tokens",type:"int",description:"Maximum generated MIDI-event token count per chunk; default 2000.",required:!1,min:1,default:2e3},{name:"do_sample",type:"bool",description:"Use temperature sampling instead of greedy token selection; default false.",required:!1,default:!1},{name:"temperature",type:"float",description:"Sampling temperature when do_sample=true; 0 is accepted for compatibility and behaves deterministically, default 1.0.",required:!1,min:0,default:1},{name:"guidance_scale",type:"float",description:"Classifier-free guidance coefficient; 1 disables CFG, default 1.0.",required:!1,default:1},{name:"batch_size",type:"int",description:"Number of audio chunks processed per batch when prelude_forcing=false; default 1.",required:!1,min:1,default:1},{name:"num_beams",type:"int",description:"Beam-search width; 1 disables beam search, default 1. Beam search requires guidance_scale=1, do_sample=false, and an actual graph batch of one.",required:!1,min:1,default:1},{name:"prelude_forcing",type:"bool",description:"Force open-note prelude tokens between sequential chunks; default true.",required:!1,default:!0},{name:"seed",type:"int",description:"Sampling seed; default 0. Parsed as int64 and converted to uint64; negative values wrap.",required:!1,default:0}],session:[{name:"weight_type",type:"enum",description:"Transformer weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"perf_mode",type:"enum",description:"Decoder attention mode; flash_attention uses the CUDA fast path, off keeps the exact attention path. Default flash_attention.",values:["off","flash_attention"],required:!1,default:"flash_attention"},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"conditioning_graph_arena_mb",type:"int",description:"Condition graph arena size in MiB; default 128.",required:!1,min:1,default:128},{name:"decoder_prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph arena size in MiB; default 768.",required:!1,min:1,default:768},{name:"decoder_decode_graph_arena_mb",type:"int",description:"Decoder cached-step graph arena size in MiB; default 512.",required:!1,min:1,default:512}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"muscriptor_small_f32",display_name:"MuScriptor Small F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"MuScriptor-Small-GGUF",files:["MuScriptor-Small-GGUF/muscriptor-small-f32.gguf"],strip_prefix:"MuScriptor-Small-GGUF"}],dependencies:[],ui:{recommended_package:"muscriptor_small_f32",tags:["Music","MIDI","GGUF","Stream"],docs:["docs/models/muscriptor.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},$S={schema_version:1,family:"nemotron_3_diar",display_name:"Nemotron 3 Diarization",description:"NVIDIA eight-speaker streaming diarization model with arrival-order speaker identities and configurable latency profiles.",category:"speech_analysis",status:"supported",tasks:["diar"],modes:["offline","streaming"],languages:["multilingual"],capabilities:{diar:["speaker_turns"]},dependencies:[],options:{request:[{name:"speaker_threshold",type:"float",description:"Speaker activity threshold used for turn decoding.",required:!1,min:0,max:1,default:.5},{name:"speaker_min_frames",type:"int",description:"Minimum decoded turn duration in 10 ms output frames.",required:!1,min:0,default:0},{name:"speaker_pad_frames",type:"int",description:"Padding applied to decoded turns in 10 ms output frames.",required:!1,min:0,default:0},{name:"return_frame_probabilities",type:"bool",description:"Attach the raw 10 ms speaker-activity timeline as the speaker_probabilities.safetensors artifact (F32 [frames, speakers] plus streaming-geometry metadata), the input for nemotron_asr speaker tagging.",required:!1,default:!1}],session:[{name:"latency_profile",type:"enum",description:"Streaming latency profile: the official very_high, low, very_low and ultra_low presets, asr_la0/3/6/13 for nemotron_asr speaker masking at that ASR lookahead, or custom.",values:["very_high","low","very_low","ultra_low","asr_la0","asr_la3","asr_la6","asr_la13","custom"],required:!1,default:"very_high"},{name:"spkcache_len",type:"int",description:"Speaker-cache length in 80 ms encoder frames for the custom profile.",required:!1,min:16},{name:"fifo_len",type:"int",description:"FIFO length in 80 ms encoder frames for the custom profile.",required:!1,min:0},{name:"chunk_len",type:"int",description:"Chunk length in 80 ms encoder frames for the custom profile.",required:!1,min:1},{name:"chunk_right_context",type:"int",description:"Future context in 80 ms encoder frames for the custom profile.",required:!1,min:0},{name:"spkcache_update_period",type:"int",description:"FIFO-to-cache update period in 80 ms encoder frames for the custom profile.",required:!1,min:1},{name:"attention",type:"enum",values:["auto","flash","eager"],description:"Encoder attention lowering; auto uses flash attention where the backend supports it.",required:!1,default:"auto"},{name:"graph_arena_mb",type:"int",description:"Inference graph arena size in MiB.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight context size in MiB.",required:!1,min:1,default:1024},{name:"weight_type",type:"enum",description:"Default model weight storage type.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"nemotron_3_diar_bf16",tags:["Diar","Stream","GGUF"],docs:["docs/models/nemotron_3_diar.md","docs/speech_analysis.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Nemotron-3-Diarization-GGUF",revision:"main",gated:!1}},packages:[{id:"nemotron_3_diar_bf16",display_name:"Nemotron 3 Diarization BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"Nemotron-3-Diarization-GGUF",files:["nemotron-3-diarization-bf16.gguf"]},{id:"nemotron_3_diar_q8_0",display_name:"Nemotron 3 Diarization Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Nemotron-3-Diarization-GGUF",files:["nemotron-3-diarization-q8_0.gguf"]}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"model:model.safetensors"}}]},qS={schema_version:1,family:"nemotron_asr",display_name:"Nemotron 3.5 ASR",description:"NVIDIA 600M streaming ASR model for low-latency and batch transcription across 40 language-locales, with native punctuation, capitalization, automatic language detection, and configurable chunk sizes.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["ar-AR","bg-BG","cs-CZ","da-DK","de-DE","el-GR","en-GB","en-US","es-ES","es-US","et-EE","fi-FI","fr-CA","fr-FR","he-IL","hi-IN","hr-HR","hu-HU","it-IT","ja-JP","ko-KR","lt-LT","lv-LV","mt-MT","nb-NO","nl-NL","nn-NO","pl-PL","pt-BR","pt-PT","ro-RO","ru-RU","sk-SK","sl-SI","sv-SE","th-TH","tr-TR","uk-UA","vi-VN","zh-CN"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"ASR prompt language such as en-US, da-DK, or auto; default is the model's default prompt.",required:!1},{name:"lookahead_tokens",type:"int",description:"Chunk-limited encoder right context in 80 ms frames; supported values and the default come from processor_config (0, 3, 6 or 13; default 3 for the published model). In masked speaker mode, omission derives lookahead from diarizer geometry (13 fallback).",required:!1,min:0},{name:"max_tokens",type:"int",description:"Maximum RNNT generated tokens; 0 or omitted uses the model-derived limit.",required:!1,min:0,default:0},{name:"keep_language_tags",type:"bool",description:"Keep language tag tokens in decoded text; default false.",required:!1,default:!1},{name:"return_timestamps",type:"bool",description:"Compatibility/advisory flag; false does not suppress decoder token timestamps.",required:!1,default:!1},{name:"streaming",type:"bool",description:"Request a streaming run; must be false for offline sessions.",required:!1,default:!1},{name:"speaker_probabilities",type:"path",description:"nemotron_3_diar speaker_probabilities.safetensors for the same audio (diarize with return_frame_probabilities=true). Setting it enables speaker-tagged output: speaker turns with text and a SegLST artifact.",required:!1},{name:"speaker_mode",type:"enum",values:["masked","attribution"],description:"masked runs one ASR stream per active speaker on speaker-masked features (NeMo masked multitalker ASR) and transcribes overlapping speech; attribution assigns each word of one transcript to the most active speaker and is cheaper.",required:!1,default:"masked"},{name:"speaker_mask",type:"enum",values:["mel","audio"],description:"Masked mode only: mask log-mel features (NeMo mask_features) or zero the waveform of inactive 80 ms frames.",required:!1,default:"mel"},{name:"speaker_segment_gap_sec",type:"float",description:"Start a new segment for a speaker after a pause longer than this; default 1.0 (NeMo sent_break_sec).",required:!1,min:0,default:1},{name:"speaker_segment_max_sec",type:"float",description:"Streaming only: force-close a speaker-turn event after this many seconds; the final result keeps the full segments. Default 10. Must be positive.",required:!1,default:10}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"matmul_weight_type",type:"enum",description:"Encoder and decoder matmul weight storage type (native, f32, f16, bf16 or q8_0); defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type (native, f32 or f16); default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 3072.",required:!1,min:1,default:3072},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"decoder_graph_arena_mb",type:"int",description:"Decoder graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"mem_saver",type:"bool",description:"Release the offline encoder graph after each offline request; default false.",required:!1,default:!1}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"nemotron_asr_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"nemotron_asr_q8_0",display_name:"Nemotron 3.5 ASR Streaming 0.6B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Nemotron-3.5-ASR-Streaming-0.6B-GGUF",files:["Nemotron-3.5-ASR-Streaming-0.6B-GGUF/nemotron-3.5-asr-streaming-0.6b-q8_0.gguf"],strip_prefix:"Nemotron-3.5-ASR-Streaming-0.6B-GGUF"},{id:"nemotron_asr_f16",display_name:"Nemotron 3.5 ASR Streaming 0.6B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Nemotron-3.5-ASR-Streaming-0.6B-GGUF",files:["Nemotron-3.5-ASR-Streaming-0.6B-GGUF/nemotron-3.5-asr-streaming-0.6b-f16.gguf"],strip_prefix:"Nemotron-3.5-ASR-Streaming-0.6B-GGUF"},{id:"nemotron_asr_safetensors",display_name:"Nemotron 3.5 ASR Streaming 0.6B Safetensors",format:"safetensors",precision:"native",target_directory:"nemotron-3.5-asr-streaming-0.6b",files:["config.json","model.safetensors","processor_config.json","tokenizer.json"],download:{kind:"huggingface_snapshot",repo:"nvidia/nemotron-3.5-asr-streaming-0.6b"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},GS={schema_version:1,family:"neutts",display_name:"NeuTTS",description:"NeuTTS is an English text-to-speech family from Neuphonic. The current 2E package uses a Qwen3-style autoregressive speech-token backbone, NeuCodec waveform decoding, built-in speaker prompts, and emotion-token control.",category:"tts",status:"supported",tasks:["tts"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf","stream"]},capabilities:{tts:["built_in_voices","emotion_control","long_form"]},options:{request:[{name:"voice_id",type:"enum",description:"Built-in NeuTTS speaker prompt; default emily.",values:["dave","emily","greta","jo","juliette","mateo","paul","sophie","steven"],required:!1,default:"emily"},{name:"emotion",type:"enum",description:"Optional emotion token inserted between reference text and target text; neutral inserts no emotion token.",values:["angry","disgusted","sad","happy","fearful","neutral","surprised"],required:!1,default:"neutral"},{name:"max_tokens",type:"int",description:"Maximum generated speech-token count for the autoregressive generator; 0 uses the remaining model context, default 0. Total generation context is capped at min(checkpoint context, 2048).",required:!1,min:0,default:0},{name:"min_tokens",type:"int",description:"Minimum generated speech-token count before EOS may stop generation; default 50.",required:!1,min:0,default:50},{name:"temperature",type:"float",description:"Autoregressive sampling temperature; must be > 0, default 1.0.",required:!1,min:0,default:1},{name:"top_k",type:"int",description:"Autoregressive top-k sampling limit; default 50.",required:!1,min:1,default:50},{name:"seed",type:"int",description:"Autoregressive sampling seed; omitted requests choose a random seed.",required:!1,min:0},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode for long-form synthesis.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 600.",required:!1,min:1,default:600}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type for the backbone and codec decoder; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"generator_weight_type",type:"enum",description:"Generator weight storage; inherits explicit weight_type, otherwise F32 on CPU and native on other backends.",preset:"weight_type_full",required:!1},{name:"codec_weight_type",type:"enum",description:"NeuCodec decoder matmul weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_full",required:!1},{name:"codec_conv_weight_type",type:"enum",description:"NeuCodec convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"runtime_graph_arena_mb",type:"int",description:"Reusable ggml graph arena size in MiB for NeuTTS runtime graphs; default 1024.",required:!1,min:1,default:1024}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"neutts_2e_orig",display_name:"NeuTTS 2E Original-Precision GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"NeuTTS-2E-GGUF",files:["NeuTTS-2E-GGUF/neutts-2e-orig.gguf"],strip_prefix:"NeuTTS-2E-GGUF"}],dependencies:[],ui:{recommended_package:"neutts_2e_orig",tags:["TTS","GGUF","Stream"],docs:["docs/tts.md","docs/models/neutts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",chat_template:"model:chat_template.jinja",codec_config:"model:neucodec_config.json",codec_preprocessor_config:"model:neucodec_preprocessor_config.json",speaker_text_dave:"model:samples/dave.txt",speaker_text_emily:"model:samples/emily.txt",speaker_text_greta:"model:samples/greta.txt",speaker_text_jo:"model:samples/jo.txt",speaker_text_juliette:"model:samples/juliette.txt",speaker_text_mateo:"model:samples/mateo.txt",speaker_text_paul:"model:samples/paul.txt",speaker_text_sophie:"model:samples/sophie.txt",speaker_text_steven:"model:samples/steven.txt"},tensors:{backbone:{source:"weights:",prefix:"backbone"},codec:{source:"weights:",prefix:"codec"},speaker_prompts:{source:"weights:",prefix:"speaker_prompts"}}},{format:"safetensors",roots:{model:".",codec:"../NeuCodec"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",chat_template:"model:chat_template.jinja",codec_config:"codec:config.json",codec_preprocessor_config:"codec:preprocessor_config.json",speaker_text_dave:"model:samples/dave.txt",speaker_text_emily:"model:samples/emily.txt",speaker_text_greta:"model:samples/greta.txt",speaker_text_jo:"model:samples/jo.txt",speaker_text_juliette:"model:samples/juliette.txt",speaker_text_mateo:"model:samples/mateo.txt",speaker_text_paul:"model:samples/paul.txt",speaker_text_sophie:"model:samples/sophie.txt",speaker_text_steven:"model:samples/steven.txt"},tensors:{backbone:"model:model.safetensors",codec:"codec:model.safetensors",speaker_prompts:"model:samples/speaker_prompts.safetensors"}}]},FS={family:"niagara_asr",schema_version:1,display_name:"Niagara ASR",description:"ABR Niagara English batch ASR state-space models with attention, greedy CTC decoding, and SentencePiece tokenization.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Compatibility-only; recognition is English and output is always labelled en.",required:!1,default:"en"},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode.",values:["none"],required:!1,default:"none"}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage type.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"]},{name:"graph_arena_mb",type:"int",description:"Inference graph arena size in MiB.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight descriptor context size in MiB.",required:!1,min:1,default:256}],load:[]},runtime:{tags:["gguf","cpu"]},ui:{recommended_package:"niagara_19m_f32",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"],summary:"ABR Niagara compact English speech recognition."},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf"}},packages:[{id:"niagara_19m_f32",display_name:"Niagara 19M Batch English F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"Niagara-ASR-GGUF",files:["Niagara-ASR-GGUF/niagara-19m-batch.en-f32.gguf"],strip_prefix:"Niagara-ASR-GGUF"},{id:"niagara_38m_f32",display_name:"Niagara 38M Batch English F32 GGUF",format:"gguf",precision:"f32",target_directory:"Niagara-ASR-GGUF",files:["Niagara-ASR-GGUF/niagara-38m-batch.en-f32.gguf"],strip_prefix:"Niagara-ASR-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",preprocessor_config:"model:preprocessor_config.json",tokenizer_spm:"model:sentencepiece.model"},tensors:{weights:"weights:"}}]},AS={family:"omnivoice",display_name:"OmniVoice",description:"Massively multilingual zero-shot TTS model from k2-fsa for 600+ languages, supporting short-reference voice cloning, attribute-based voice design, pronunciation controls, and nonverbal tags.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["600+ languages"],capabilities:{clone:["speaker_reference"],design:["voice_design"]},options:{request:[{name:"language",type:"string",description:"Synthesis language code or label; omitted uses automatic language selection.",required:!1},{name:"reference_text",type:"string",description:"Transcript for speaker reference audio used in voice cloning.",required:!1},{name:"instruct",type:"string",description:"Voice-design instruction such as speaker attributes, accent, style, or delivery.",required:!1},{name:"seed",type:"int",description:"Generation seed for reproducible output; omitted value keeps the session RNG state.",required:!1,min:0,max:4294967295},{name:"num_inference_steps",type:"int",description:"Diffusion language-model inference steps; default 32.",required:!1,min:1,default:32},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; default 2.0.",required:!1,default:2},{name:"speed",type:"float",description:"Speech speed multiplier used for target-length estimation; default 1.0.",required:!1,default:1},{name:"duration_sec",type:"float",description:"Target output duration in seconds; omitted uses the model's estimated duration.",required:!1,min:0},{name:"shift",type:"float",description:"Diffusion timestep schedule shift; default 0.1.",required:!1,default:.1},{name:"denoise",type:"bool",description:"Add the denoise control token when reference audio is present; default true.",required:!1,default:!0},{name:"preprocess_prompt",type:"bool",description:"Preprocess speaker reference audio before tokenization; default true.",required:!1,default:!0},{name:"postprocess_output",type:"bool",description:"Apply output postprocessing and trimming; default true.",required:!1,default:!0},{name:"layer_penalty_factor",type:"float",description:"Layer-order penalty used while selecting masked audio-codebook positions; default 5.0.",required:!1,default:5},{name:"position_temperature",type:"float",description:"Gumbel temperature for masked-position selection; default 5.0.",required:!1,default:5},{name:"class_temperature",type:"float",description:"Audio-token class sampling temperature; default 0 for greedy class selection.",required:!1,min:0,default:0},{name:"audio_chunk_duration_sec",type:"float",description:"Target chunk duration for automatic long-form splitting; default 15 seconds.",required:!1,min:0,default:15},{name:"audio_chunk_threshold_sec",type:"float",description:"Estimated duration above which long-form generation is split into chunks; default 30 seconds.",required:!1,min:0,default:30},{name:"text_chunk_size",type:"int",description:"Explicit long-form text chunk size in Unicode codepoints. Omitted value uses duration-based automatic chunking.",required:!1,min:1},{name:"text_chunk_mode",type:"enum",description:"Text chunking mode; default tag_aware.",preset:"text_chunk_mode_full",required:!1,default:"tag_aware"}],session:[{name:"weight_type",type:"enum",description:"Shared generator weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"generator_weight_type",type:"enum",description:"Generator weight storage type; defaults to weight_type, which defaults to native.",preset:"weight_type_full",required:!1},{name:"audio_tokenizer_weight_type",type:"enum",description:"Audio tokenizer weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"audio_tokenizer_graph_arena_mb",type:"int",description:"Audio tokenizer graph arena size in MiB; default 128.",required:!1,min:1,default:128},{name:"generator_prefill_graph_arena_mb",type:"int",description:"Generator prefill graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"generator_decode_graph_arena_mb",type:"int",description:"Generator decode graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"audio_tokenizer_weight_context_mb",type:"int",description:"Audio tokenizer weight context size in MiB; default 128.",required:!1,min:1,default:128},{name:"generator_weight_context_mb",type:"int",description:"Generator weight context size in MiB; default 256.",required:!1,min:1,default:256},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs after request phases; default false. Cannot be combined with perf_mode=flash_attention.",required:!1,default:!1},{name:"perf_mode",type:"enum",description:"Generator performance mode; default off keeps the exact-safe attention path. flash_attention requires mem_saver=false.",preset:"perf_mode_flash_attention",required:!1,default:"off"}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"omnivoice_q8_0",tags:["TTS","Clone","Design","GGUF","Stream"],docs:["docs/models/omnivoice.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"omnivoice_q8_0",display_name:"OmniVoice Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"OmniVoice-GGUF",files:["OmniVoice-GGUF/omnivoice-q8_0.gguf"],strip_prefix:"OmniVoice-GGUF"},{id:"omnivoice_bf16",display_name:"OmniVoice BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"OmniVoice-GGUF",files:["OmniVoice-GGUF/omnivoice-bf16.gguf"],strip_prefix:"OmniVoice-GGUF"},{id:"omnivoice_f16",display_name:"OmniVoice F16 GGUF",format:"gguf",precision:"f16",target_directory:"OmniVoice-GGUF",files:["OmniVoice-GGUF/omnivoice-f16.gguf"],strip_prefix:"OmniVoice-GGUF"},{id:"omnivoice_safetensors",display_name:"OmniVoice Safetensors",format:"safetensors",precision:"native",target_directory:"OmniVoice",files:["config.json","model.safetensors","tokenizer.json","tokenizer_config.json","audio_tokenizer/config.json","audio_tokenizer/preprocessor_config.json","audio_tokenizer/model.safetensors"],download:{kind:"huggingface_snapshot",repo:"k2-fsa/OmniVoice"}},{id:"voicetut_tts_q8_0",display_name:"VoiceTut-TTS Egyptian Arabic Q8_0 GGUF",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of OmniVoice from mohammedaly22/VoiceTut-TTS (same architecture and audio tokenizer as OmniVoice). Use language=arz.",format:"gguf",precision:"q8_0",target_directory:"VoiceTut-TTS-GGUF",files:["voicetut-tts-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/VoiceTut-TTS-GGUF"}},{id:"voicetut_tts_f16",display_name:"VoiceTut-TTS Egyptian Arabic F16 GGUF",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of OmniVoice from mohammedaly22/VoiceTut-TTS (same architecture and audio tokenizer as OmniVoice). Use language=arz.",format:"gguf",precision:"f16",target_directory:"VoiceTut-TTS-GGUF",files:["voicetut-tts-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/VoiceTut-TTS-GGUF"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",audio_tokenizer_config:"model:audio_tokenizer/config.json",audio_tokenizer_preprocessor:"model:audio_tokenizer/preprocessor_config.json"},optional_files:{chat_template:"model:chat_template.jinja"},tensors:{weights:{source:"weights:",prefix:"weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",audio_tokenizer_config:"model:audio_tokenizer/config.json",audio_tokenizer_preprocessor:"model:audio_tokenizer/preprocessor_config.json"},optional_files:{chat_template:"model:chat_template.jinja"},tensors:{weights:"model:model.safetensors",audio_tokenizer_weights:"model:audio_tokenizer/model.safetensors"}}]},CS={schema_version:1,family:"open_wake_word",display_name:"OpenWakeWord",description:"OpenWakeWord wake-word detection with a shared speech embedding CNN and a converted classifier.",category:"audio_tools",status:"experimental",tasks:["wake_word"],modes:["offline","streaming"],languages:["en"],capabilities:{wake_word:["speech_segments","stream_events"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"threshold",type:"float",required:!1,min:0,max:1,description:"Wake-word detection probability threshold."}],session:[{name:"exec_plan",type:"string",required:!1,default:"{}",description:"JSON component execution plans. Component embedding accepts impl default/ggml/neon and optional backend. Default retains GGML on the session backend; neon requires ENGINE_ENABLE_NEON=ON and an AArch64 NEON CPU session. No artifacts or params are used."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"open_wake_word_alexa_f32",display_name:"OpenWakeWord Alexa GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"OpenWakeWord-GGUF",files:["OpenWakeWord-GGUF/open-wake-word-alexa-f32.gguf"],strip_prefix:"OpenWakeWord-GGUF"}],dependencies:[],ui:{tags:["Wake Word","GGUF","Stream"],docs:["docs/models/open_wake_word.md"],recommended_package:"open_wake_word_alexa_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}}]},MS={schema_version:1,family:"outetts",display_name:"Llama-OuteTTS 1.0",description:"Llama-based open-weight TTS model for 23-language speech synthesis with one-shot voice cloning from short reference audio and automatic word-alignment support.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline"],languages:["ar","be","bn","de","en","es","fa","fr","hu","it","ja","ka","ko","lt","lv","nl","pl","pt","ru","sw","ta","uk","zh"],capabilities:{clone:["speaker_reference"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated audio tokens per chunk. When omitted, OuteTTS estimates a safe value from each chunk.",required:!1,min:1},{name:"temperature",type:"float",description:"Sampling temperature; default 0.4 for cloning, otherwise model config default.",required:!1,min:0},{name:"top_k",type:"int",description:"Top-k sampling; default 40 for cloning, otherwise model config default.",required:!1,min:0},{name:"top_p",type:"float",description:"Nucleus sampling in (0, 1]; default 0.9 for cloning, otherwise model config default.",required:!1,min:0,max:1},{name:"min_p",type:"float",description:"Minimum probability relative to the best token; default 0.05 for cloning, otherwise model config default.",required:!1,min:0,max:1},{name:"repetition_penalty",type:"float",description:"Windowed repetition penalty; must be > 0, default 1.1.",required:!1,min:0,default:1.1},{name:"repetition_window",type:"int",description:"Recent-token penalty window; default 64.",required:!1,min:0,default:64},{name:"seed",type:"int",description:"Sampling seed; cloning defaults to 4099 for native weights and 42 for quantized weights.",required:!1,min:0,max:4294967295},{name:"reference_text",type:"string",description:"Transcript matching the reference voice audio for voice cloning.",required:!1},{name:"reference_language",type:"string",description:"Language code used to align the reference transcript; omitted inherits the request text language, then falls back to en.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum UTF-8 codepoints per long-form text chunk; default 256. Chunks are split further when required by max_tokens or context budget.",required:!1,min:1,default:256},{name:"text_chunk_mode",type:"enum",description:"Framework long-form text chunking mode; default word_budget.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"}],session:[{name:"lora",type:"path",description:"PEFT LoRA adapter directory or checkpoint file for the same OuteTTS checkpoint; merged into the language model at session creation.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"weight_type",type:"enum",description:"Language-model weight storage type. Quantized CUDA voice cloning is expanded to F32 in memory for generation correctness.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","nvfp4"]},{name:"llama_weight_context_mb",type:"int",description:"Language-model weight context size in MiB; default 4096.",required:!1,min:1,default:4096},{name:"constant_context_mb",type:"int",description:"Language-model constant tensor context size in MiB; default 256.",required:!1,min:1,default:256},{name:"dac_weight_context_mb",type:"int",description:"DAC decoder weight context size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"dac_graph_arena_mb",type:"int",description:"DAC decoder graph arena size in MiB; default 1536.",required:!1,min:1,default:1536},{name:"forced_aligner_path",type:"path",description:"Optional Qwen3 Forced Aligner override. Cloning automatically uses the aligner embedded in a standalone OuteTTS GGUF when present.",required:!1},{name:"reference_cache_slots",type:"int",description:"Prepared reference-profile cache slots; default 1, set 0 to disable.",required:!1,min:0,default:1},{name:"mem_saver",type:"bool",description:"Release cached-step and aligner runtime state after use; default false.",required:!1,default:!1}],load:[]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",special_tokens_map:"model:special_tokens_map.json",dac_config:"model:dac/config.json"},optional_files:{aligner_config:"model:aligner/config.json",aligner_generation_config:"model:aligner/generation_config.json",aligner_tokenizer_config:"model:aligner/tokenizer_config.json",aligner_preprocessor_config:"model:aligner/preprocessor_config.json",aligner_processor_config:"model:aligner/processor_config.json",aligner_chat_template:"model:aligner/chat_template.json",aligner_chat_template_jinja:"model:aligner/chat_template.jinja",aligner_vocab:"model:aligner/vocab.json",aligner_merges:"model:aligner/merges.txt",aligner_tokenizer_json:"model:aligner/tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},dac_weights:{source:"weights:",prefix:"dac_weights"},aligner_weights:{source:"weights:",prefix:"aligner_weights"}}},{format:"safetensors",roots:{model:".",dac:"../DAC.speech.v1.0"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",special_tokens_map:"model:special_tokens_map.json",dac_config:"dac:config.json"},tensors:{model_weights:"model:model.safetensors",dac_weights:"dac:model.safetensors"}}],packages:[{id:"outetts_1_0_1b_q8_0",display_name:"Llama-OuteTTS 1.0 1B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Llama-OuteTTS-1.0-1B_Q8",files:["Text to audio (TTS)/Llama-OuteTTS-1.0-1B_Q8.gguf"],download:{kind:"huggingface_snapshot",repo:"mirek190/audio.cpp"}}],dependencies:[],ui:{recommended_package:"outetts_1_0_1b_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/outetts.md","docs/reports/outetts_validation.md","docs/gguf.md"]}},ES={family:"owsm",schema_version:1,display_name:"OWSM",description:"ESPnet Open Whisper-style multilingual speech recognition and speech translation.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["abk","afr","amh","ara","asm","ast","aze","bak","bas","bel","ben","bos","bre","bul","cat","ceb","ces","chv","ckb","cmn","cnh","cym","dan","deu","dgd","div","ell","eng","epo","est","eus","fas","fil","fin","fra","frr","ful","gle","glg","grn","guj","hat","hau","heb","hin","hrv","hsb","hun","hye","ibo","ina","ind","isl","ita","jav","jpn","kab","kam","kan","kat","kaz","kea","khm","kin","kir","kmr","kor","lao","lav","lga","lin","lit","ltz","lug","luo","mal","mar","mas","mdf","mhr","mkd","mlt","mon","mri","mrj","mya","myv","nan","nep","nld","nno","nob","npi","nso","nya","oci","ori","orm","ory","pan","pol","por","pus","quy","roh","ron","rus","sah","sat","sin","skr","slk","slv","sna","snd","som","sot","spa","srd","srp","sun","swa","swe","swh","tam","tat","tel","tgk","tgl","tha","tig","tir","tok","tpi","tsn","tuk","tur","twi","uig","ukr","umb","urd","uzb","vie","vot","wol","xho","yor","yue","zho","zul"],capabilities:{asr:["segments"]},dependencies:[],options:{request:[{name:"language",type:"string",description:"Input language as an OWSM ISO 639-3 code, such as eng, jpn, or zho; auto detects it from the first window.",required:!1,default:"eng"},{name:"target_language",type:"string",description:"Optional OWSM translation target code. Omit for transcription.",required:!1},{name:"return_timestamps",type:"bool",description:"Return OWSM utterance-level timestamp segments.",required:!1,default:!1},{name:"condition_on_previous_text",type:"bool",description:"Condition each long-form chunk on the previous chunk transcript.",required:!1,default:!1},{name:"num_beams",type:"int",description:"Decoder beam width; one selects greedy decoding.",required:!1,min:1,max:50002,default:1},{name:"max_tokens",type:"int",description:"Maximum generated tokens per 30-second window; zero uses the model limit.",required:!1,min:0,max:374,default:0},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio window. Must be positive.",required:!1,max:30,default:30}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage override.",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"],required:!1,default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/owsm.md"],recommended_package:"owsm_v4_base_102m_f32"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"owsm_v4_base_102m_f32",display_name:"OWSM v4 Base 102M F32",default:!0,format:"gguf",precision:"f32",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-base-102m-f32.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_base_102m_q8_0",display_name:"OWSM v4 Base 102M Q8_0",default:!1,format:"gguf",precision:"q8_0",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-base-102m-q8_0.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_small_370m_f32",display_name:"OWSM v4 Small 370M F32",default:!1,format:"gguf",precision:"f32",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-small-370m-f32.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_small_370m_q8_0",display_name:"OWSM v4 Small 370M Q8_0",default:!1,format:"gguf",precision:"q8_0",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-small-370m-q8_0.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_small_370m_q4_k",display_name:"OWSM v4 Small 370M Q4_K",default:!1,format:"gguf",precision:"q4_k",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-small-370m-q4_k.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_medium_1b_f32",display_name:"OWSM v4 Medium 1B F32",default:!1,format:"gguf",precision:"f32",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-medium-1b-f32.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_medium_1b_q8_0",display_name:"OWSM v4 Medium 1B Q8_0",default:!1,format:"gguf",precision:"q8_0",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-medium-1b-q8_0.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_medium_1b_q4_k",display_name:"OWSM v4 Medium 1B Q4_K",default:!1,format:"gguf",precision:"q4_k",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-medium-1b-q4_k.gguf"],strip_prefix:"OWSM-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:bpe.model"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:bpe.model"},tensors:{weights:"weights:"}}]},zS={family:"owsm_ctc",schema_version:1,display_name:"OWSM-CTC",description:"ESPnet non-autoregressive multilingual speech recognition and speech translation with self-conditioned CTC.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["abk","afr","amh","ara","asm","ast","aze","bak","bas","bel","ben","bos","bre","bul","cat","ceb","ces","chv","ckb","cmn","cnh","cym","dan","deu","dgd","div","ell","eng","epo","est","eus","fas","fil","fin","fra","frr","ful","gle","glg","grn","guj","hat","hau","heb","hin","hrv","hsb","hun","hye","ibo","ina","ind","isl","ita","jav","jpn","kab","kam","kan","kat","kaz","kea","khm","kin","kir","kmr","kor","lao","lav","lga","lin","lit","ltz","lug","luo","mal","mar","mas","mdf","mhr","mkd","mlt","mon","mri","mrj","mya","myv","nan","nep","nld","nno","nob","npi","nso","nya","oci","ori","orm","ory","pan","pol","por","pus","quy","roh","ron","rus","sah","sat","sin","skr","slk","slv","sna","snd","som","sot","spa","srd","srp","sun","swa","swe","swh","tam","tat","tel","tgk","tgl","tha","tig","tir","tok","tpi","tsn","tuk","tur","twi","uig","ukr","umb","urd","uzb","vie","vot","wol","xho","yor","yue","zho","zul"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Input ISO 639-3 language code, such as eng, jpn, or zho. auto uses unknown-language conditioning.",required:!1,default:"eng"},{name:"target_language",type:"string",description:"Optional OWSM translation target code. Omit for transcription.",required:!1},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","none"],required:!1,default:"auto"}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage override.",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"],required:!1,default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/owsm_ctc.md"],recommended_package:"owsm_ctc_v4_1b_f32"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"owsm_ctc_v4_1b_f32",display_name:"OWSM-CTC v4 1B F32",default:!0,format:"gguf",precision:"f32",target_directory:"OWSM-CTC-GGUF",files:["OWSM-CTC-GGUF/owsm-ctc-v4-1b-f32.gguf"],strip_prefix:"OWSM-CTC-GGUF"},{id:"owsm_ctc_v4_1b_q8_0",display_name:"OWSM-CTC v4 1B Q8_0",default:!1,format:"gguf",precision:"q8_0",target_directory:"OWSM-CTC-GGUF",files:["OWSM-CTC-GGUF/owsm-ctc-v4-1b-q8_0.gguf"],strip_prefix:"OWSM-CTC-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:bpe.model"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:bpe.model"},tensors:{weights:"weights:"}}]},US={schema_version:1,family:"parakeet_tdt",display_name:"Parakeet-TDT 0.6B v3",description:"NVIDIA Parakeet-TDT 0.6B v3 FastConformer-TDT ASR covering 25 European languages with automatic language detection. Supports the upstream Transformers-compatible safetensors package and standalone audio.cpp GGUF, with offline full-context, bounded-window long-form, and buffered streaming; the checkpoint uses unlimited bidirectional attention and is not a native cache-aware streaming model.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["bg","cs","da","de","el","en","es","et","fi","fr","hr","hu","it","lt","lv","mt","nl","pl","pt","ro","ru","sk","sl","sv","uk"],runtime:{tags:["gguf","stream"]},capabilities:{asr:["word_timestamps","partial_results","vad_chunking"]},options:{request:[{name:"return_timestamps",type:"bool",description:"Accepted for CLI --words-out compatibility. Word timestamps are always returned, including when false or omitted.",required:!1},{name:"max_tokens",type:"int",description:"Maximum TDT generated tokens; 0 or omitted uses the model-derived limit.",required:!1,min:0,default:0},{name:"keep_language_tags",type:"bool",description:"Keep language tag tokens in decoded text; default false.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Offline audio chunking mode. vad uses Silero VAD to skip silence; auto keeps Parakeet's existing offline_mode behavior.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"VAD maximum chunk duration; omitted inherits the session duration. Fixed/long_form windows use the session setting, not this request override.",required:!1,min:.001},{name:"hotwords",type:"string",description:"Phonon-2 only: optional vocabulary list, comma-separated or a JSON array of strings / word-spoken objects. Up to 25 terms; an explicit empty list disables prompt biasing.",required:!1},{name:"hotwords_score",type:"float",description:"Phonon-2 matching-piece logit bonus; duration scores and blank are not biased.",required:!1,min:0,max:100,default:2}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"matmul_weight_type",type:"enum",description:"Encoder and decoder matmul weight storage type; defaults to weight_type, which defaults to native. Q8_0 measured 1.79x faster on the tested CPU and changed roughly 8 percent of transcripts without moving aggregate word error rate.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"perf_mode",type:"enum",description:"Encoder attention implementation. Default off uses the validated relative-attention path; flash_attention enables the fused implementation, which was numerically validated but slower on the tested hardware.",preset:"perf_mode_flash_attention",required:!1,default:"off"},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 3072.",required:!1,min:1,default:3072},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"decoder_graph_arena_mb",type:"int",description:"Decoder graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"audio_chunk_duration_sec",type:"float",description:"Center-region duration for buffered streaming in seconds; default 2. Fixed context windows are re-encoded rather than cache-aware. Also sizes offline fixed/long_form windows.",required:!1,min:.001,default:2},{name:"left_context_sec",type:"float",description:"Past context included when re-encoding each buffered-streaming window in seconds; default 10. Also applies to offline fixed/long_form windows.",required:!1,min:0,default:10},{name:"right_context_sec",type:"float",description:"Future lookahead included when re-encoding each buffered-streaming window in seconds; default 2 and adds equivalent partial-result latency. Also applies to offline fixed/long_form windows.",required:!1,min:0,default:2},{name:"streaming_attention_mode",type:"enum",description:"Attention policy inside each buffered window. full_context preserves bidirectional attention over the bounded window.",values:["full_context"],required:!1,default:"full_context"},{name:"offline_mode",type:"enum",description:"Offline encoder scheduling. full_context encodes the whole utterance, long_form uses bounded overlapping windows, and auto selects long_form beyond audio_chunk_threshold_sec.",values:["full_context","long_form","auto"],required:!1,default:"full_context"},{name:"audio_chunk_threshold_sec",type:"float",description:"Duration threshold used by offline_mode=auto before switching to bounded-window long-form execution; default 30 seconds.",required:!1,min:.001,default:30},{name:"vad_model_path",type:"path",description:"Silero VAD model path used by audio_chunk_mode=vad; default assets/framework/models/silero_vad.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"parakeet_tdt_q8_0",display_name:"Parakeet-TDT 0.6B v3 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Parakeet-TDT-0.6B-v3-GGUF",files:["Parakeet-TDT-0.6B-v3-GGUF/parakeet-tdt-0.6b-v3-q8_0.gguf"],strip_prefix:"Parakeet-TDT-0.6B-v3-GGUF"},{id:"parakeet_tdt_f16",display_name:"Parakeet-TDT 0.6B v3 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Parakeet-TDT-0.6B-v3-GGUF",files:["Parakeet-TDT-0.6B-v3-GGUF/parakeet-tdt-0.6b-v3-f16.gguf"],strip_prefix:"Parakeet-TDT-0.6B-v3-GGUF"},{id:"orukeet_q8_0",display_name:"Orukeet r3 Q8_0 GGUF (Parakeet-TDT 0.6B v3 fine-tune)",format:"gguf",precision:"q8_0",target_directory:"Orukeet-GGUF",files:["Orukeet-GGUF/orukeet-q8_0.gguf"],strip_prefix:"Orukeet-GGUF"},{id:"orukeet_f16",display_name:"Orukeet r3 F16 GGUF (Parakeet-TDT 0.6B v3 fine-tune)",format:"gguf",precision:"f16",target_directory:"Orukeet-GGUF",files:["Orukeet-GGUF/orukeet-f16.gguf"],strip_prefix:"Orukeet-GGUF"}],dependencies:[],ui:{recommended_package:"parakeet_tdt_q8_0",tags:["ASR","GGUF"],docs:["docs/models/parakeet_tdt.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},BS={schema_version:1,family:"personaplex",display_name:"PersonaPlex",description:"PersonaPlex is a Moshi-style full-duplex speech-to-speech conversational model with Mimi audio tokenization, packaged speaker/persona prompts, streaming audio input, text generation, and generated assistant speech.",category:"tts",status:"supported",tasks:["s2s"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf","stream"]},capabilities:{s2s:["speaker_reference"]},options:{request:[{name:"voice_id",type:"enum",description:"Packaged PersonaPlex voice prompt id such as NATF2 or NATM1. If omitted, NATF2 is used.",values:["NATF0","NATF1","NATF2","NATF3","NATM0","NATM1","NATM2","NATM3","VARF0","VARF1","VARF2","VARF3","VARF4","VARM0","VARM1","VARM2","VARM3","VARM4"],required:!1,default:"NATF2"},{name:"system_prompt",type:"string",description:"System persona prompt. Plain text is wrapped with the required tags.",required:!1},{name:"temperature",type:"float",description:"Audio token sampling temperature; must be nonnegative, and positive when do_sample=true. Ignored when do_sample=false; default 0.8.",required:!1,min:0,default:.8},{name:"text_temperature",type:"float",description:"Text token sampling temperature; must be nonnegative, and positive when do_sample=true. Ignored when do_sample=false; default follows temperature.",required:!1,min:0},{name:"top_k",type:"int",description:"Audio token top-k sampling limit; default 250.",required:!1,min:0,default:250},{name:"text_top_k",type:"int",description:"Text token top-k sampling limit; default follows top_k.",required:!1,min:0},{name:"do_sample",type:"bool",description:"Enable stochastic token sampling; default true. Set false for greedy decoding.",required:!1,default:!0},{name:"seed",type:"int",description:"uint32 seed. Session RNG starts at 42424242; explicit values reseed it, while omission on later conversations continues RNG state.",required:!1,min:0,max:4294967295}],session:[{name:"graph_arena_mb",type:"int",description:"Reusable ggml graph arena size in MiB for PersonaPlex LM, depformer, and Mimi graphs; default 1024.",required:!1,min:1,default:1024},{name:"lm_weight_context_mb",type:"int",description:"Main LM weight metadata arena size in MiB; default 64.",required:!1,min:1,default:64},{name:"depformer_weight_context_mb",type:"int",description:"Depth transformer weight metadata arena size in MiB; default 64.",required:!1,min:1,default:64},{name:"mimi_weight_context_mb",type:"int",description:"Mimi codec weight metadata arena size in MiB; default 64.",required:!1,min:1,default:64},{name:"weight_type",type:"enum",description:"LM and Mimi matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"personaplex_7b_v1_q4_k",display_name:"PersonaPlex 7B v1 Q4_K GGUF",default:!0,format:"gguf",precision:"q4_k",target_directory:"PersonaPlex-GGUF",files:["PersonaPlex-GGUF/personaplex-7b-v1-q4_k.gguf"],strip_prefix:"PersonaPlex-GGUF"},{id:"personaplex_7b_v1_q8_0",display_name:"PersonaPlex 7B v1 Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"PersonaPlex-GGUF",files:["PersonaPlex-GGUF/personaplex-7b-v1-q8_0.gguf"],strip_prefix:"PersonaPlex-GGUF"}],dependencies:[],ui:{recommended_package:"personaplex_7b_v1_q4_k",tags:["TTS","Stream","GGUF"],docs:["docs/models/personaplex.md","docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_model:"model:tokenizer_spm_32k_3.model",voice_NATF0:"model:voices_safetensors/NATF0.safetensors",voice_NATF1:"model:voices_safetensors/NATF1.safetensors",voice_NATF2:"model:voices_safetensors/NATF2.safetensors",voice_NATF3:"model:voices_safetensors/NATF3.safetensors",voice_NATM0:"model:voices_safetensors/NATM0.safetensors",voice_NATM1:"model:voices_safetensors/NATM1.safetensors",voice_NATM2:"model:voices_safetensors/NATM2.safetensors",voice_NATM3:"model:voices_safetensors/NATM3.safetensors",voice_VARF0:"model:voices_safetensors/VARF0.safetensors",voice_VARF1:"model:voices_safetensors/VARF1.safetensors",voice_VARF2:"model:voices_safetensors/VARF2.safetensors",voice_VARF3:"model:voices_safetensors/VARF3.safetensors",voice_VARF4:"model:voices_safetensors/VARF4.safetensors",voice_VARM0:"model:voices_safetensors/VARM0.safetensors",voice_VARM1:"model:voices_safetensors/VARM1.safetensors",voice_VARM2:"model:voices_safetensors/VARM2.safetensors",voice_VARM3:"model:voices_safetensors/VARM3.safetensors",voice_VARM4:"model:voices_safetensors/VARM4.safetensors"},tensors:{lm_weights:{source:"weights:",prefix:"lm"},mimi_weights:{source:"weights:",prefix:"mimi"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_model:"model:tokenizer_spm_32k_3.model",voice_NATF0:"model:voices_safetensors/NATF0.safetensors",voice_NATF1:"model:voices_safetensors/NATF1.safetensors",voice_NATF2:"model:voices_safetensors/NATF2.safetensors",voice_NATF3:"model:voices_safetensors/NATF3.safetensors",voice_NATM0:"model:voices_safetensors/NATM0.safetensors",voice_NATM1:"model:voices_safetensors/NATM1.safetensors",voice_NATM2:"model:voices_safetensors/NATM2.safetensors",voice_NATM3:"model:voices_safetensors/NATM3.safetensors",voice_VARF0:"model:voices_safetensors/VARF0.safetensors",voice_VARF1:"model:voices_safetensors/VARF1.safetensors",voice_VARF2:"model:voices_safetensors/VARF2.safetensors",voice_VARF3:"model:voices_safetensors/VARF3.safetensors",voice_VARF4:"model:voices_safetensors/VARF4.safetensors",voice_VARM0:"model:voices_safetensors/VARM0.safetensors",voice_VARM1:"model:voices_safetensors/VARM1.safetensors",voice_VARM2:"model:voices_safetensors/VARM2.safetensors",voice_VARM3:"model:voices_safetensors/VARM3.safetensors",voice_VARM4:"model:voices_safetensors/VARM4.safetensors"},tensors:{lm_weights:"model:model.safetensors",mimi_weights:"model:tokenizer-e351c8d8-checkpoint125.safetensors"}}]},RS={schema_version:1,family:"piper_tts",display_name:"Piper TTS",description:"Native VITS inference for Piper text-to-speech voices using the shared eSpeak-ng frontend.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"speed",type:"float",description:"Speech speed multiplier; larger values produce faster speech.",required:!1,min:.5,max:2,default:1},{name:"variation",type:"float",description:"Acoustic latent noise scale.",required:!1,min:0,max:1,default:.667},{name:"duration_variation",type:"float",description:"Stochastic duration noise scale.",required:!1,min:0,max:2,default:.8},{name:"seed",type:"int",description:"Non-negative generation seed.",required:!1,min:0,default:1234,max:4294967295},{name:"text_chunk_mode",type:"enum",description:"Long-form text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form chunk.",required:!1,min:1,default:280}],session:[{name:"espeak_library_path",type:"path",description:"Optional explicit path to the eSpeak-ng shared library.",required:!1},{name:"espeak_data_path",type:"path",description:"Optional explicit path to espeak-ng-data.",required:!1},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Components: decoder, duration_encoder, duration_flows. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. Default keeps existing execution. The decoder's GGML impl supports the session backend; RKNN requires artifacts.main and ENGINE_ENABLE_RKNN, with no backend field. The two duration stages are GGML-only and accept the session backend (device) or cpu (host); with no backend field the text encoder runs on the host on CUDA and on the session backend elsewhere, and the flow graphs run on the session backend. No implementation takes params.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"piper_lessac_medium_orig",display_name:"Piper Lessac Medium Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Piper-TTS-GGUF",files:["Piper-TTS-GGUF/piper-en-us-lessac-medium-orig.gguf"],strip_prefix:"Piper-TTS-GGUF"},{id:"piper_lessac_medium_decoder_rk3588",display_name:"Piper Lessac Medium NPU Decoder RKNN (RK3588)",format:"rknn",precision:"f16",target_directory:"Piper-TTS-GGUF",files:["rk3588/piper-lessac-w93.rknn"],strip_prefix:"rk3588",description:"Pre-compiled RK3588 engine for the piper_tts RKNN decoder sidecar (piper_tts.exec_plan, artifacts.main); installs beside the GGUF weights and is named by bare file name. Built by tools/rknn from the en_US-lessac-medium streaming decoder export; see docs/build/rockchip-npu.md.",download:{kind:"huggingface_snapshot",repo:"wOvANAI/rknn-tts-engines",revision:"main",gated:!1}}],dependencies:[],ui:{recommended_package:"piper_lessac_medium_orig",tags:["TTS","GGUF"],docs:["docs/tts.md","docs/models/piper_tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},jS={schema_version:1,family:"plapre",display_name:"Plapre 3",description:"Danish speech synthesis with a Llama autoregressive decoder and Kanade audio codec. Streaming emits completed text chunks, not incremental codec frames.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["da"],capabilities:{tts:["long_form","speaker_reference","built_in_voices"],clone:["speaker_reference","long_form"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"voice_id",type:"enum",description:"Built-in speaker.",required:!1,default:"tor",values:["tor","ida","liv","ask","kaj"]},{name:"reference_text",type:"string",description:"Transcript of the reference audio, used for voice cloning.",required:!1,default:""},{name:"x_vector_only_mode",type:"bool",description:"Use only the reference speaker embedding, without the reference transcript/audio-token prefix.",required:!1,default:!1},{name:"word_duration_frames",type:"string",description:"JSON array of per-word integer durations, from 0 to 399 frames at 25 Hz. Duration-controlled text is generated in one chunk.",required:!1},{name:"context_text",type:"string",description:"Previous utterance for prosodic context.",required:!1},{name:"context_audio_file",type:"audio_path",description:"Optional previous-utterance WAV accompanying context_text.",required:!1},{name:"same_speaker",type:"bool",description:"Whether context_text belongs to the target speaker.",required:!1,default:!0},{name:"pronunciations",type:"string",description:'Ordered JSON array of pronunciation references: [{"word":"morgen","audio_file":"morgen.wav"}]. Up to 10 references, 60 codes each and 200 total codes are used.',required:!1},{name:"edit_start_frame",type:"int",description:"Start of the masked span in voice_ref, in 25-Hz codec frames. Supply both edit boundaries and the complete desired text.",required:!1,min:0},{name:"edit_end_frame",type:"int",description:"Exclusive end of the masked span in voice_ref. Editing runs in one text chunk.",required:!1,min:0},{name:"max_tokens",type:"int",description:"Maximum generated tokens per text chunk; each audio token represents 40 ms.",required:!1,default:500,min:1},{name:"min_tokens",type:"int",description:"Minimum generated tokens before a stop token can be selected.",required:!1,default:0,min:0},{name:"temperature",type:"float",description:"Sampling temperature; zero selects greedy decoding.",required:!1,default:.8,min:0},{name:"top_p",type:"float",description:"Nucleus sampling probability in (0, 1].",required:!1,default:.95,min:0,max:1},{name:"top_k",type:"int",description:"Top-k sampling; -1 or zero disables filtering.",required:!1,default:50,min:-1},{name:"seed",type:"int",description:"Sampling and vocoder noise seed.",required:!1,default:0,min:0},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk.",required:!1,default:300,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking policy.",required:!1,default:"default",values:["default","tag_aware","japanese","endline"]},{name:"silence_duration_sec",type:"float",description:"Silence inserted between text chunks.",required:!1,default:.1,min:0}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"plapre_3_bf16",display_name:"Plapre 3 BF16",format:"gguf",precision:"bf16",default:!0,target_directory:"Plapre-3-GGUF",files:["Plapre-3-GGUF/plapre-3-bf16.gguf"],strip_prefix:"Plapre-3-GGUF"},{id:"plapre_3_f32",display_name:"Plapre 3 F32",format:"gguf",precision:"f32",default:!1,target_directory:"Plapre-3-GGUF",files:["Plapre-3-GGUF/plapre-3-f32.gguf"],strip_prefix:"Plapre-3-GGUF"}],dependencies:[],ui:{recommended_package:"plapre_3_bf16",builtin_voices:["tor","ida","liv","ask","kaj"],default_voice:"tor",tags:["TTS","GGUF"],docs:["docs/models/plapre.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",kanade_config:"model:kanade_config.json",speakers:"model:speakers.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{ar:"weights:",speaker_projection:{source:"weights:",prefix:"speaker_proj"},kanade:{source:"weights:",prefix:"kanade"},wavlm:{source:"weights:",prefix:"wavlm"},hift:{source:"weights:",prefix:"hift"}}}]},PS={family:"pocket_tts",display_name:"PocketTTS",description:"Kyutai 100M-parameter CPU-friendly TTS package set for real-time local synthesis and small-footprint voice cloning in English, French, German, Italian, Portuguese, and Spanish.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["en","fr","de","it","pt","es"],options:{request:[{name:"frames_after_eos",type:"int",description:"Extra frames after EOS; -1 uses the model-derived value.",required:!1,min:-1,default:-1},{name:"max_frames",type:"int",description:"Maximum generated audio frames; zero estimates the cap from text length. Captured during session preparation.",required:!1,min:0,default:0},{name:"text_chunk_tokens",type:"int",description:"Tokenizer tokens per text chunk; must be positive, default 50. Set during preparation and overridable per request.",required:!1,min:1,default:50},{name:"temperature",type:"float",description:"Positive flow noise temperature; defaults to the model configuration. Captured during session preparation.",required:!1},{name:"seed",type:"int",description:"Noise seed; omitted chooses a random seed. Captured during session preparation.",required:!1,min:0,max:4294967295},{name:"noise_clamp",type:"float",description:"Noise clamp; a negative value disables clamping. Captured during session preparation.",required:!1,default:-1},{name:"eos_threshold",type:"float",description:"EOS detection threshold. Captured during session preparation.",required:!1,default:-4},{name:"noise_file",type:"path",description:"Precomputed noise schedule file. Captured during session preparation.",required:!1},{name:"voice_embedding_file",type:"path",description:"Precomputed voice-state embedding path. Captured during session preparation.",required:!1},{name:"truncate_clone_audio",type:"bool",description:"Truncate voice clone audio. Captured during session preparation.",required:!1,default:!1},{name:"text_chunk_size",type:"int",description:"Optional per-request character chunk size; otherwise use sentence/token budgeting.",required:!1},{name:"export_voice_state_file",type:"path",description:"Export the prepared voice state during session preparation.",required:!1}],session:[{name:"voice_state_cache_slots",type:"int",description:"Cached prepared voice states; zero disables reuse.",required:!1,min:0,default:4},{name:"offline_graph_capacity_mode",type:"enum",description:"Offline graph capacity policy; CPU/Metal default tiered, other backends double.",required:!1,values:["fixed","double","tiered","grow"]},{name:"prompt_graph_capacity",type:"int",description:"Optional reserved prompt capacity.",required:!1,min:1},{name:"generation_graph_capacity",type:"int",description:"Optional reserved generation capacity.",required:!1,min:1},{name:"weight_type",type:"enum",description:"Shared matmul weight storage; component matmul settings inherit it. Convolution storage remains independently native unless overridden.",required:!1,preset:"weight_type_full"},{name:"matmul_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage.",required:!1,preset:"weight_type_conv",default:"native"},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"flow_weight_context_mb",type:"int",description:"Flow weight context in MiB; inherits pocket_tts.weight_context_mb when omitted.",required:!1,min:1},{name:"mimi_encoder_weight_context_mb",type:"int",description:"Mimi encoder weight context in MiB; inherits pocket_tts.weight_context_mb when omitted.",required:!1,min:1},{name:"mimi_decoder_weight_context_mb",type:"int",description:"Mimi decoder weight context in MiB; inherits pocket_tts.weight_context_mb when omitted.",required:!1,min:1},{name:"flow_weights_view_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"flow_step_graph_arena_mb",type:"int",description:"Flow-step host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:256},{name:"mimi_encoder_graph_arena_mb",type:"int",description:"Mimi encoder host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:512},{name:"mimi_conv_graph_arena_mb",type:"int",description:"Mimi convolution host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:32},{name:"mimi_transformer_graph_arena_mb",type:"int",description:"Mimi transformer host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:96},{name:"mimi_tail_graph_arena_mb",type:"int",description:"Mimi tail host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:512},{name:"mimi_full_chunk_frames",type:"int",description:"Full-sequence decoder chunk frames.",required:!1,min:1,default:90},{name:"mimi_stage2_chunk_frames",type:"int",description:"Second-stage decoder chunk frames.",required:!1,min:1,default:900},{name:"use_full_mimi",type:"bool",description:"Use full-sequence Mimi decoding.",required:!1,default:!0}],load:[{name:"language",type:"string",description:"Model language selection.",required:!1,default:"english"}]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"pocket_tts_english_q8_0",default_voice:"alba",builtin_voices:["alba"],tags:["TTS","Clone","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"pocket_tts_english_q8_0",display_name:"PocketTTS English Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/english",files:["PocketTTS-GGUF/english/pocket-tts-english-q8_0.gguf","PocketTTS-GGUF/english/embeddings/alba.safetensors"],strip_prefix:"PocketTTS-GGUF/english"},{id:"pocket_tts_english_bf16",display_name:"PocketTTS English BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/english",files:["PocketTTS-GGUF/english/pocket-tts-english-bf16.gguf","PocketTTS-GGUF/english/embeddings/alba.safetensors"],strip_prefix:"PocketTTS-GGUF/english"},{id:"pocket_tts_french_q8_0",display_name:"PocketTTS French Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/french",files:["PocketTTS-GGUF/french/pocket-tts-french-q8_0.gguf","PocketTTS-GGUF/french/embeddings/cosette.safetensors"],strip_prefix:"PocketTTS-GGUF/french"},{id:"pocket_tts_french_bf16",display_name:"PocketTTS French BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/french",files:["PocketTTS-GGUF/french/pocket-tts-french-bf16.gguf","PocketTTS-GGUF/french/embeddings/cosette.safetensors"],strip_prefix:"PocketTTS-GGUF/french"},{id:"pocket_tts_german_q8_0",display_name:"PocketTTS German Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/german",files:["PocketTTS-GGUF/german/pocket-tts-german-q8_0.gguf"],strip_prefix:"PocketTTS-GGUF/german"},{id:"pocket_tts_german_bf16",display_name:"PocketTTS German BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/german",files:["PocketTTS-GGUF/german/pocket-tts-german-bf16.gguf"],strip_prefix:"PocketTTS-GGUF/german"},{id:"pocket_tts_italian_q8_0",display_name:"PocketTTS Italian Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/italian",files:["PocketTTS-GGUF/italian/pocket-tts-italian-q8_0.gguf"],strip_prefix:"PocketTTS-GGUF/italian"},{id:"pocket_tts_italian_bf16",display_name:"PocketTTS Italian BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/italian",files:["PocketTTS-GGUF/italian/pocket-tts-italian-bf16.gguf"],strip_prefix:"PocketTTS-GGUF/italian"},{id:"pocket_tts_portuguese_q8_0",display_name:"PocketTTS Portuguese Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/portuguese",files:["PocketTTS-GGUF/portuguese/pocket-tts-portuguese-q8_0.gguf"],strip_prefix:"PocketTTS-GGUF/portuguese"},{id:"pocket_tts_portuguese_bf16",display_name:"PocketTTS Portuguese BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/portuguese",files:["PocketTTS-GGUF/portuguese/pocket-tts-portuguese-bf16.gguf"],strip_prefix:"PocketTTS-GGUF/portuguese"},{id:"pocket_tts_spanish_q8_0",display_name:"PocketTTS Spanish Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/spanish",files:["PocketTTS-GGUF/spanish/pocket-tts-spanish-q8_0.gguf"],strip_prefix:"PocketTTS-GGUF/spanish"},{id:"pocket_tts_spanish_bf16",display_name:"PocketTTS Spanish BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/spanish",files:["PocketTTS-GGUF/spanish/pocket-tts-spanish-bf16.gguf"],strip_prefix:"PocketTTS-GGUF/spanish"},{id:"pocket_tts_english_safetensors",display_name:"PocketTTS English Safetensors",format:"safetensors",precision:"native",target_directory:"pocket-tts",files:["languages/english/embeddings/alba.safetensors","languages/english/embeddings/anna.safetensors","languages/english/embeddings/azelma.safetensors","languages/english/embeddings/bill_boerst.safetensors","languages/english/embeddings/caro_davy.safetensors","languages/english/embeddings/charles.safetensors","languages/english/embeddings/cosette.safetensors","languages/english/embeddings/eponine.safetensors","languages/english/embeddings/estelle.safetensors","languages/english/embeddings/eve.safetensors","languages/english/embeddings/fantine.safetensors","languages/english/embeddings/george.safetensors","languages/english/embeddings/giovanni.safetensors","languages/english/embeddings/jane.safetensors","languages/english/embeddings/javert.safetensors","languages/english/embeddings/jean.safetensors","languages/english/embeddings/juergen.safetensors","languages/english/embeddings/lola.safetensors","languages/english/embeddings/marius.safetensors","languages/english/embeddings/mary.safetensors","languages/english/embeddings/michael.safetensors","languages/english/embeddings/paul.safetensors","languages/english/embeddings/peter_yearsley.safetensors","languages/english/embeddings/rafael.safetensors","languages/english/embeddings/stuart_bell.safetensors","languages/english/embeddings/vera.safetensors","languages/english/model.safetensors","languages/english/tokenizer.model"],download:{kind:"huggingface_snapshot",repo:"kyutai/pocket-tts",gated:!0}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tokenizer:"model:tokenizer.model"},optional_files:{config:"model:config.yaml"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{language:"languages/english"},files:{tokenizer:"language:tokenizer.model"},optional_files:{config:"language:config.yaml"},tensors:{weights:"language:model.safetensors"}}]},NS={schema_version:1,family:"pulsevad",display_name:"PulseVAD",description:"Speech activity detection for 16 kHz mono audio with 2.1K student and 81K teacher weights.",category:"audio_tools",status:"supported",tasks:["vad"],modes:["offline"],languages:["language_agnostic"],capabilities:{vad:["speech_segments"]},runtime:{tags:["gguf"]},options:{request:[{name:"threshold",type:"float",description:"Speech probability threshold.",required:!1,default:.5,min:0,max:1},{name:"hop_size_samples",type:"int",description:"Window step in samples; 1600 samples is 100 ms at 16 kHz.",required:!1,default:1600,min:1},{name:"min_speech_duration_ms",type:"int",description:"Minimum speech segment duration in milliseconds. Not applied to the short-input path (<3200 samples), which classifies the whole clip by threshold.",required:!1,default:100,min:0},{name:"min_silence_duration_ms",type:"int",description:"Minimum silence before closing a speech segment, in milliseconds.",required:!1,default:100,min:0}],session:[{name:"weight_type",type:"enum",description:"Weight storage override; native preserves the packaged tensor types.",values:["native","f32","f16","bf16"],required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"pulsevad_2_1k_f32",display_name:"PulseVAD 2.1K GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"PulseVAD-GGUF",files:["PulseVAD-GGUF/pulsevad-2.1k-f32.gguf"],strip_prefix:"PulseVAD-GGUF"},{id:"pulsevad_81k_f32",display_name:"PulseVAD 81K GGUF F32",format:"gguf",precision:"f32",target_directory:"PulseVAD-GGUF",files:["PulseVAD-GGUF/pulsevad-81k-f32.gguf"],strip_prefix:"PulseVAD-GGUF"}],dependencies:[],ui:{tags:["VAD","GGUF"],docs:["docs/models/pulsevad.md"],recommended_package:"pulsevad_2_1k_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},tensors:{weights:"model:pulsevad-f32.safetensors"}}]},OS={family:"qwen3_asr",display_name:"Qwen3-ASR",description:"Qwen ASR model family for language identification and speech recognition across 30 languages, 22 Chinese dialects, and multiple English accents, with robustness for noisy, long-form, and singing audio.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["zh","en","yue","ar","de","fr","es","pt","id","it","ko","ru","th","vi","ja","tr","hi","ms","nl","sv","da","fi","pl","cs","fil","fa","el","hu","mk","ro","zh dialects"],capabilities:{asr:["word_timestamps","vad_chunking","partial_results"]},options:{request:[{name:"language",type:"string",description:"Recognition language code or label. Omit to detect language automatically; Auto also selects automatic detection.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens; omitted uses the checkpoint generation_config.json (512 when absent).",required:!1,min:1},{name:"return_timestamps",type:"bool",description:"Return word-level timestamps by running Qwen3 ForcedAligner after ASR; default false and requires forced_aligner_path when enabled. Offline only; streaming rejects true even when an aligner is configured.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode; default auto uses fixed chunks normally and VAD chunks when timestamps are requested. Offline only; streaming uses fixed-duration windows regardless of this selection.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum audio chunk duration in seconds; must be > 0 when chunking or streaming. Ignored with audio_chunk_mode=none offline. Default 30 for streaming and offline transcription, or 15 for offline timestamps/VAD chunking.",required:!1,min:0},{name:"clamp_timestamps_to_audio",type:"bool",description:"Opt-in guard for word timestamp output: keep repaired forced-aligner word spans inside the local audio chunk. Defaults to false to preserve existing timestamp repair behavior.",required:!1,default:!1},{name:"preserve_punctuation",type:"bool",description:"Opt-in text output mode for timestamped chunked ASR: preserve ASR punctuation in text_output instead of rebuilding text from aligned words.",required:!1,default:!1}],session:[{name:"lora",type:"path",description:"PEFT LoRA adapter directory or checkpoint file; merged into matching encoder/decoder weights at session creation.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"forced_aligner_path",type:"path",description:"Optional Qwen3 ForcedAligner model path required for return_timestamps.",required:!1},{name:"vad_model_path",type:"path",description:"Optional Silero VAD model path for VAD chunking; default assets/framework/models/silero_vad.",required:!1,default:"assets/framework/models/silero_vad"},{name:"weight_type",type:"enum",description:"Shared text decoder weight storage fallback; default native.",required:!1,default:"native",preset:"weight_type_full"},{name:"audio_encoder_weight_type",type:"enum",description:"Audio encoder weight storage type; default native.",required:!1,default:"native",preset:"weight_type_conv"},{name:"text_decoder_weight_type",type:"enum",description:"Text decoder matmul weight storage type; defaults to weight_type when set, otherwise native.",required:!1,preset:"weight_type_full"},{name:"audio_encoder_graph_arena_mb",type:"int",description:"Audio encoder graph arena size in MiB; default 128.",required:!1,min:1,default:128},{name:"text_decoder_prefill_graph_arena_mb",type:"int",description:"Text decoder prefill graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"text_decoder_decode_graph_arena_mb",type:"int",description:"Text decoder cached-step graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"text_decoder_weight_context_mb",type:"int",description:"Text decoder weight context size in MiB; default 64.",required:!1,min:1,default:64}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"qwen3_asr_1_7b_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/models/qwen3_asr.md","docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"qwen3_asr_1_7b_q8_0",display_name:"Qwen3-ASR 1.7B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Qwen3-ASR-1.7B-GGUF",files:["Qwen3-ASR-1.7B-GGUF/qwen3-asr-1.7b-q8_0.gguf"],strip_prefix:"Qwen3-ASR-1.7B-GGUF"},{id:"qwen3_asr_1_7b_f16",display_name:"Qwen3-ASR 1.7B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Qwen3-ASR-1.7B-GGUF",files:["Qwen3-ASR-1.7B-GGUF/qwen3-asr-1.7b-f16.gguf"],strip_prefix:"Qwen3-ASR-1.7B-GGUF"},{id:"qwen3_asr_0_6b_q8_0",display_name:"Qwen3-ASR 0.6B Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Qwen3-ASR-0.6B-GGUF",files:["Qwen3-ASR-0.6B-GGUF/qwen3-asr-0.6b-q8_0.gguf"],strip_prefix:"Qwen3-ASR-0.6B-GGUF"},{id:"qwen3_asr_0_6b_f16",display_name:"Qwen3-ASR 0.6B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Qwen3-ASR-0.6B-GGUF",files:["Qwen3-ASR-0.6B-GGUF/qwen3-asr-0.6b-f16.gguf"],strip_prefix:"Qwen3-ASR-0.6B-GGUF"},{id:"qwen3_asr_1_7b_safetensors",display_name:"Qwen3-ASR 1.7B HF Safetensors",format:"safetensors",precision:"native",target_directory:"Qwen3-ASR-1.7B-hf",files:["config.json","generation_config.json","model.safetensors","processor_config.json","tokenizer_config.json","tokenizer.json"],download:{kind:"huggingface_snapshot",repo:"Qwen/Qwen3-ASR-1.7B-hf"}},{id:"qwen3_asr_0_6b_safetensors",display_name:"Qwen3-ASR 0.6B Safetensors",format:"safetensors",precision:"native",target_directory:"Qwen3-ASR-0.6B",files:["config.json","generation_config.json","model.safetensors","preprocessor_config.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"Qwen/Qwen3-ASR-0.6B"}},{id:"qwencleo_asr_q8_0",display_name:"QwenCleo-ASR Egyptian Arabic Q8_0 GGUF",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of Qwen3-ASR-1.7B from mohammedaly22/QwenCleo-ASR. Use language=Arabic.",format:"gguf",precision:"q8_0",target_directory:"QwenCleo-ASR-GGUF",files:["qwencleo-asr-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/QwenCleo-ASR-GGUF"}},{id:"qwencleo_asr_f16",display_name:"QwenCleo-ASR Egyptian Arabic F16 GGUF",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of Qwen3-ASR-1.7B from mohammedaly22/QwenCleo-ASR. Use language=Arabic.",format:"gguf",precision:"f16",target_directory:"QwenCleo-ASR-GGUF",files:["qwencleo-asr-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/QwenCleo-ASR-GGUF"}},{id:"qwencleo_asr_safetensors",display_name:"QwenCleo-ASR Egyptian Arabic Safetensors",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of Qwen3-ASR-1.7B from mohammedaly22/QwenCleo-ASR. Use language=Arabic.",format:"safetensors",precision:"native",target_directory:"QwenCleo-ASR",files:["config.json","generation_config.json","model.safetensors","preprocessor_config.json","tokenizer_config.json","tokenizer.json","vocab.json","merges.txt","chat_template.json"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/QwenCleo-ASR"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},IS={family:"qwen3_forced_aligner",display_name:"Qwen3 Forced Aligner",description:"Qwen3 non-autoregressive forced aligner that aligns transcript text to speech and returns word- or character-level timestamps across 11 supported languages.",category:"speech_analysis",status:"supported",tasks:["align"],modes:["offline"],languages:["zh","en","yue","fr","de","it","ja","ko","pt","ru","es"],capabilities:{align:["word_timestamps"]},options:{request:[{name:"clamp_timestamps_to_audio",type:"bool",description:"Opt-in guard for word timestamp output: keep repaired word spans inside the local audio input. Defaults to false to preserve existing timestamp repair behavior.",required:!1,default:!1}],session:[{name:"weight_type",type:"enum",description:"Shared thinker matmul storage; does not override audio encoder storage.",required:!1,preset:"weight_type_full",default:"native"},{name:"audio_encoder_weight_type",type:"enum",description:"Audio encoder matmul storage.",required:!1,values:["native","f32","f16"],default:"native"},{name:"thinker_weight_type",type:"enum",description:"Thinker matmul storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"audio_encoder_graph_arena_mb",type:"int",description:"Audio encoder graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:128},{name:"thinker_prefill_graph_arena_mb",type:"int",description:"Thinker prefill graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:256},{name:"thinker_decode_graph_arena_mb",type:"int",description:"Thinker cached-step graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:256},{name:"thinker_weight_context_mb",type:"int",description:"Thinker weight metadata context. Size in MiB; must be positive.",required:!1,min:1,default:64}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"qwen3_forced_aligner_0_6b_q8_0",tags:["Align","GGUF"],docs:["docs/models/qwen3_forced_aligner.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"qwen3_forced_aligner_0_6b_q8_0",display_name:"Qwen3 Forced Aligner 0.6B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Qwen3-ForcedAligner-0.6B-GGUF",files:["Qwen3-ForcedAligner-0.6B-GGUF/qwen3-forced-aligner-0.6b-q8_0.gguf"],strip_prefix:"Qwen3-ForcedAligner-0.6B-GGUF"},{id:"qwen3_forced_aligner_0_6b_f16",display_name:"Qwen3 Forced Aligner 0.6B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Qwen3-ForcedAligner-0.6B-GGUF",files:["Qwen3-ForcedAligner-0.6B-GGUF/qwen3-forced-aligner-0.6b-f16.gguf"],strip_prefix:"Qwen3-ForcedAligner-0.6B-GGUF"},{id:"qwen3_forced_aligner_0_6b_safetensors",display_name:"Qwen3 Forced Aligner 0.6B Safetensors",format:"safetensors",precision:"native",target_directory:"Qwen3-ForcedAligner-0.6B",files:["config.json","generation_config.json","model.safetensors","preprocessor_config.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"Qwen/Qwen3-ForcedAligner-0.6B"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},LS={family:"qwen3_tts",display_name:"Qwen3-TTS",description:"Qwen3-TTS for controllable 10-language synthesis, 3-second voice cloning, CustomVoice, and VoiceDesign.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["zh","en","ja","ko","de","fr","ru","pt","es","it"],capabilities:{clone:["speaker_reference"],design:["voice_design"]},options:{request:[{name:"stream_chunk_policy",type:"enum",description:"Streaming codec chunk schedule: grow starts with one frame and doubles to stream_frames_per_event; fixed uses that size throughout.",required:!1,default:"grow",values:["grow","fixed"]},{name:"stream_frames_per_event",type:"int",description:"Codec frames per fixed streaming event, or the maximum for growing events. Smaller values reduce chunk latency but increase decoding overhead.",required:!1,default:12,min:1},{name:"language",type:"string",description:"Target synthesis language code or label; default auto lets the model infer from text and voice settings.",required:!1,default:"auto"},{name:"max_tokens",type:"int",description:"Maximum generated codec frames per text chunk; omitted uses the checkpoint generation_config.json (2048 when absent).",required:!1,min:1},{name:"do_sample",type:"bool",description:"Sample the main codec stream instead of greedy decoding; default true.",required:!1,default:!0},{name:"temperature",type:"float",description:"Main codec sampling temperature; must be > 0 when do_sample=true. Ignored when do_sample=false; default 0.9.",required:!1,min:0,default:.9},{name:"top_k",type:"int",description:"Main codec top-k sampling limit; default 50, 0 disables top-k filtering.",required:!1,min:0,default:50},{name:"top_p",type:"float",description:"Main codec nucleus sampling limit; default 1.0.",required:!1,min:0,max:1,default:1},{name:"repetition_penalty",type:"float",description:"Main codec repetition penalty; must be > 0, default 1.05.",required:!1,min:0,default:1.05},{name:"subtalker_do_sample",type:"bool",description:"Enable subtalker sampling for the remaining audio codebooks instead of greedy decoding; default true.",required:!1,default:!0},{name:"subtalker_temperature",type:"float",description:"Subtalker sampling temperature; must be > 0 when subtalker_do_sample=true. Ignored when subtalker_do_sample=false; default 0.9.",required:!1,min:0,default:.9},{name:"subtalker_top_k",type:"int",description:"Subtalker top-k sampling limit; default 50, 0 disables top-k filtering.",required:!1,min:0,default:50},{name:"subtalker_top_p",type:"float",description:"Subtalker nucleus sampling limit; default 1.0.",required:!1,min:0,max:1,default:1},{name:"seed",type:"int",description:"Codec sampling seed; omitted requests choose a random seed.",required:!1,min:0,max:4294967295},{name:"reference_text",type:"string",description:"Transcript matching the reference audio for voice cloning; required unless x_vector_only_mode=true.",required:!1},{name:"x_vector_only_mode",type:"bool",description:"Use only the speaker embedding for voice cloning instead of ICL reference codec prompting; default false.",required:!1,default:!1},{name:"instruct",type:"string",description:"Optional natural-language voice or style instruction for VoiceDesign and CustomVoice variants; empty instructions are accepted.",required:!1},{name:"voice_id",type:"enum",description:"Named preset speaker from the CustomVoice checkpoint. Legacy speaker remains accepted.",values:["aiden","dylan","eric","ono_anna","ryan","serena","sohee","uncle_fu","vivian"],required:!1},{name:"text_chunk_size",type:"int",description:"Maximum UTF-8 codepoints per long-form text chunk; default 8192.",required:!1,min:1,default:8192}],session:[{name:"lora",type:"path",description:"PEFT LoRA adapter directory or checkpoint file; optional speaker_embedding and tts_config.json sidecars provide a trained custom voice.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"mem_saver",type:"bool",description:"Release the talker cached-step graph after each request; default false.",required:!1,default:!1},{name:"stitch_decode",type:"bool",description:"Voice the concatenated speech codes of all text chunks in one decoder pass instead of voicing each chunk separately; default false. Per-chunk voicing re-voices the voice-clone reference once per chunk and restarts the stateful vocoder cache at every chunk boundary; the stitched pass costs device memory proportional to the utterance.",required:!1,default:!1},{name:"attention",type:"enum",description:"Attention preference; default mixed uses manual prefill and contiguous-K/V flash cached decoding in the talker and code predictor, with eager speech tokenization. auto uses the shared backend policy; eager disables flash; flash uses flash with K/V views. Explicit values override perf_mode.",values:["mixed","auto","eager","flash"],required:!1,default:"mixed"},{name:"packed_projections",type:"bool",description:"Pack QKV and gate/up projections in the talker and code predictor without changing weight dtype; default false, true with cuda_perf. Explicit values override the preset.",required:!1},{name:"kv_cache_write",type:"enum",description:"Talker and code-predictor cache writes: standard by default, optimized with cuda_perf. Optimized uses backend-friendly views and I64 indices to allow fusion where supported. Explicit values override the preset.",values:["standard","optimized"],required:!1},{name:"kv_cache_type",type:"enum",description:"Talker and code-predictor KV storage: f32 by default, f16 with cuda_perf. Explicit values override the preset. F16 reduces cache memory and may change numerical results.",values:["f32","f16"],required:!1},{name:"talker_kv_cache_alignment",type:"int",description:"Round talker KV capacity to this many rows. Defaults to 1 (no padding), or 256 with perf_mode=cuda_perf. Explicit values override the preset. Larger alignments may use more memory and change numerical results.",min:1,default:1,required:!1},{name:"stream_decoder",type:"enum",description:"GGML streaming decoder; stateful carries convolution and attention history and caches graphs for exact chunk lengths. Uses more graph memory and can change audio; default windowed preserves existing behavior.",values:["windowed","stateful"],default:"windowed",required:!1},{name:"perf_mode",type:"enum",description:"Performance preset; default off. flash_attention selects flash attention. cuda_perf also selects packed projections, optimized cache writes, f16 KV and convolution weights, stateful streaming decoding, and KV alignment 256. Explicit session options override the preset. May change audio and memory use.",values:["off","flash_attention","cuda_perf"],required:!1,default:"off"},{name:"voice_prompt_cache_slots",type:"int",description:"Voice prompt cache slots; default 1.",required:!1,min:0,default:1},{name:"weight_type",type:"enum",description:"Shared talker matmul weight storage type; default native.",required:!1,default:"native",preset:"weight_type_full"},{name:"talker_weight_type",type:"enum",description:"Talker weight storage type; defaults to weight_type when set, otherwise native.",required:!1,preset:"weight_type_full"},{name:"speech_encoder_weight_type",type:"enum",description:"Reference speech encoder matmul weight storage type; default native.",required:!1,default:"native",preset:"weight_type_full"},{name:"speech_decoder_weight_type",type:"enum",description:"Speech decoder matmul weight storage type; default native.",required:!1,default:"native",preset:"weight_type_full"},{name:"conv_weight_type",type:"enum",description:"Speech tokenizer and speaker-encoder convolution weight storage type; default f32.",required:!1,default:"f32",preset:"weight_type_conv"},{name:"exec_plan",type:"string",required:!1,default:"{}",description:"JSON object of component execution plans. Component: speech_decoder. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. GGML supports the session backend. RKNN requires artifacts.main, optionally artifacts.first for the first streaming group, and ENGINE_ENABLE_RKNN; omit backend. RKNN skips GGML decoder weights. Neither implementation takes params."},{name:"talker_graph_arena_mb",type:"int",description:"Talker graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"speech_encoder_graph_arena_mb",type:"int",description:"Reference speech encoder graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"speech_decoder_graph_arena_mb",type:"int",description:"Speech decoder graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"speaker_encoder_graph_arena_mb",type:"int",description:"Speaker encoder graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"talker_constant_context_mb",type:"int",description:"Talker constant tensor context size in MiB; default 4.",required:!1,min:1,default:4},{name:"code_predictor_constant_context_mb",type:"int",description:"Code predictor constant tensor context size in MiB; default 4.",required:!1,min:1,default:4},{name:"speech_decoder_constant_context_mb",type:"int",description:"Speech decoder constant tensor context size in MiB; default 4.",required:!1,min:1,default:4}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"qwen3_tts_1_7b_base_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/models/qwen3_tts.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"qwen3_tts_1_7b_base_q8_0",display_name:"Qwen3 TTS 12Hz 1.7B Base Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Qwen3-TTS-12Hz-1.7B-Base-GGUF",files:["Qwen3-TTS-12Hz-1.7B-Base-GGUF/qwen3-tts-12hz-1.7b-base-q8_0_v2.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-Base-GGUF"},{id:"qwen3_tts_1_7b_base_bf16",display_name:"Qwen3 TTS 12Hz 1.7B Base BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Qwen3-TTS-12Hz-1.7B-Base-GGUF",files:["Qwen3-TTS-12Hz-1.7B-Base-GGUF/qwen3-tts-12hz-1.7b-base-bf16.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-Base-GGUF"},{id:"qwen3_tts_1_7b_base_orig",display_name:"Qwen3 TTS 12Hz 1.7B Base Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"Qwen3-TTS-12Hz-1.7B-Base-GGUF",files:["Qwen3-TTS-12Hz-1.7B-Base-GGUF/qwen3-tts-12hz-1.7b-base-orig.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-Base-GGUF"},{id:"qwen3_tts_1_7b_customvoice_q8_0",display_name:"Qwen3 TTS 12Hz 1.7B CustomVoice Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF",files:["Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF/qwen3-tts-12hz-1.7b-customvoice-q8_0.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF"},{id:"qwen3_tts_1_7b_customvoice_bf16",display_name:"Qwen3 TTS 12Hz 1.7B CustomVoice BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF",files:["Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF/qwen3-tts-12hz-1.7b-customvoice-bf16.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF"},{id:"qwen3_tts_1_7b_voicedesign_q8_0",display_name:"Qwen3 TTS 12Hz 1.7B VoiceDesign Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF",files:["Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF/qwen3-tts-12hz-1.7b-voicedesign-q8_0.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF"},{id:"qwen3_tts_1_7b_voicedesign_bf16",display_name:"Qwen3 TTS 12Hz 1.7B VoiceDesign BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF",files:["Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF/qwen3-tts-12hz-1.7b-voicedesign-bf16.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF"},{id:"qwen3_tts_0_6b_base_q8_0",display_name:"Qwen3 TTS 12Hz 0.6B Base Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Qwen3-TTS-12Hz-0.6B-Base-GGUF",files:["Qwen3-TTS-12Hz-0.6B-Base-GGUF/qwen3-tts-12hz-0.6b-base-q8_0.gguf"],strip_prefix:"Qwen3-TTS-12Hz-0.6B-Base-GGUF"},{id:"qwen3_tts_0_6b_base_bf16",display_name:"Qwen3 TTS 12Hz 0.6B Base BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Qwen3-TTS-12Hz-0.6B-Base-GGUF",files:["Qwen3-TTS-12Hz-0.6B-Base-GGUF/qwen3-tts-12hz-0.6b-base-bf16.gguf"],strip_prefix:"Qwen3-TTS-12Hz-0.6B-Base-GGUF"},{id:"qwen3_tts_1_7b_base_safetensors",display_name:"Qwen3 TTS 12Hz 1.7B Base Safetensors",format:"safetensors",precision:"native",target_directory:"Qwen3-TTS-12Hz-1.7B-Base",files:["config.json","generation_config.json","model.safetensors","speech_tokenizer/config.json","speech_tokenizer/model.safetensors","tokenizer_config.json","vocab.json","merges.txt"],download:{kind:"huggingface_snapshot",repo:"Qwen/Qwen3-TTS-12Hz-1.7B-Base"}},{id:"qwen3_tts_0_6b_base_speech_decoder_rk3588",display_name:"Qwen3 TTS 12Hz 0.6B NPU Speech Decoder RKNN Pair (RK3588)",format:"rknn",precision:"f16",target_directory:"Qwen3-TTS-12Hz-0.6B-Base-GGUF",files:["rk3588/qwen3-tts/vocoder_stateful_16_fp16.rknn","rk3588/qwen3-tts/vocoder_stateful_64b_fp16.rknn"],strip_prefix:"rk3588/qwen3-tts",description:"Pre-compiled RK3588 engine pair (chunk 16 for the first streaming group, chunk 64 for the rest) for the qwen3_tts RKNN speech decoder (qwen3_tts.exec_plan, artifacts.main/first); installs beside the 0.6B GGUF weights and is named by bare file name. Built by tools/rknn from the Qwen3-TTS-12Hz speech tokenizer decoder; see docs/build/rockchip-npu.md.",download:{kind:"huggingface_snapshot",repo:"wOvANAI/rknn-tts-engines",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",speech_tokenizer_config:"model:speech_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},speech_tokenizer_weights:{source:"weights:",prefix:"speech_tokenizer_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",speech_tokenizer_config:"model:speech_tokenizer/config.json"},tensors:{model_weights:"model:model.safetensors",speech_tokenizer_weights:"model:speech_tokenizer/model.safetensors"}}]},DS={schema_version:1,family:"reuse",display_name:"RE-USE",description:"Sample-rate-independent speech restoration with bidirectional Mamba.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{s2s:["audio_enhancement"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Chunk duration in seconds; zero processes the whole recording. When enabled, the chunk sample count must exceed sample_rate/50. Chunking changes bidirectional and normalization context. Native batching requires zero; positive chunk durations are supported only for single requests.",min:0,default:0,required:!1},{name:"audio_chunk_overlap_sec",type:"float",description:"Hann-weighted overlap in seconds, shorter than the chunk duration. Applies only to single-request chunking; native batching ignores this setting.",min:0,default:1,required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; native preserves GGUF tensor types.",preset:"weight_type_full",default:"native",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/RE-USE-GGUF",revision:"main",gated:!1}},packages:[{id:"reuse_f32",display_name:"RE-USE F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"RE-USE-GGUF",files:["reuse-f32.gguf"]},{id:"reuse_f16",display_name:"RE-USE F16 GGUF",default:!1,format:"gguf",precision:"f16",target_directory:"RE-USE-GGUF",files:["reuse-f16.gguf"]},{id:"reuse_q8_0",display_name:"RE-USE Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"RE-USE-GGUF",files:["reuse-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"reuse_f32",tags:["GGUF"],docs:["docs/models/reuse.md","docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},VS={schema_version:1,family:"rvc",display_name:"RVC",description:"RVC is an offline retrieval-based voice conversion family packaged for audio.cpp with native HuBERT content features, RMVPE pitch extraction, optional IVF retrieval blending, packaged v1/v2 voices, and support for user-supplied RVC checkpoints.",category:"voice_conversion",status:"experimental",tasks:["vc"],modes:["offline"],languages:["language_agnostic"],runtime:{tags:["gguf"]},capabilities:{},options:{request:[{name:"voice_id",type:"enum",description:"Packaged RVC voice id; default selects the v2 default voice. Ignored when voice_model_path is provided.",values:["default","manthos","chocola","fraise"],required:!1,default:"default"},{name:"voice_model_path",type:"path",description:"Optional user RVC .pth or .pt voice checkpoint path. When set, this overrides the packaged voice id.",required:!1},{name:"pitch_extractor",type:"enum",description:"Pitch extraction method for F0-enabled voices; the native path currently supports rmvpe only.",values:["rmvpe"],required:!1,default:"rmvpe"},{name:"pitch_file",type:"path",description:"Optional CSV F0 override file with time,Hz rows sorted by time.",required:!1},{name:"retrieval_index_file",type:"path",description:"Optional user FAISS .index retrieval path used when retrieval_blend is greater than 0 for a user voice model.",required:!1},{name:"retrieval_blend",type:"float",description:"IVF retrieval feature blend rate; default 0 disables retrieval blending.",required:!1,min:0,max:1,default:0},{name:"semitone_shift",type:"int",description:"Semitone pitch shift applied before synthesis; default 0.",required:!1,default:0},{name:"pitch_filter_radius",type:"int",description:"Pitch median-filter switch: values >2 enable a radius-1 filter; values <=2 disable it.",required:!1,default:3},{name:"output_sample_rate",type:"int",description:"Output sample rate in Hz; default 0 keeps the selected voice model sample rate. Nonpositive values preserve the voice sample rate.",required:!1,default:0},{name:"rms_mix_rate",type:"float",description:"RMS envelope mix rate applied after conversion; default 0.25.",required:!1,default:.25},{name:"unvoiced_protection",type:"float",description:"Unvoiced consonant protection strength; must be in [0, 1], default 0.33.",required:!1,min:0,max:1,default:.33},{name:"speaker_id",type:"int",description:"Speaker embedding id for multi-speaker RVC checkpoints; default 0.",required:!1,min:0,default:0},{name:"audio_pad_duration_sec",type:"int",description:"Long-audio chunk pad duration in seconds; default 1.",required:!1,min:1,default:1},{name:"split_query_sec",type:"int",description:"Quiet-point query window in seconds for long-audio splitting; default 5.",required:!1,min:1,default:5},{name:"split_center_sec",type:"int",description:"Long-audio split center stride in seconds; default 30.",required:!1,min:1,default:30},{name:"split_threshold_sec",type:"int",description:"Input duration in seconds before quiet-point splitting is used; default 32.",required:!1,min:1,default:32}],session:[{name:"weight_type",type:"enum",description:"Tensor storage type for native RVC, HuBERT, and RMVPE weights; default f32.",preset:"weight_type_full",required:!1,default:"f32"},{name:"voice_cache_slots",type:"int",description:"User voice model cache slots; default 4, set 0 to disable caching.",required:!1,min:0,default:4}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"rvc_f16",display_name:"RVC F16 GGUF",default:!0,format:"gguf",precision:"f16",target_directory:"RVC-GGUF",files:["RVC-GGUF/rvc-f16.gguf"],strip_prefix:"RVC-GGUF"}],dependencies:[],ui:{recommended_package:"rvc_f16",tags:["VC","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{voice_v1_chocola_index:"model:voices/v1/chocola/added_IVF732_Flat_nprobe_1.index",voice_v1_fraise_index:"model:voices/v1/fraise/added_IVF802_Flat_nprobe_1.index",voice_v2_default_index:"model:voices/v2/default/added_IVF511_Flat_nprobe_1_default_v2.index",voice_v2_manthos_index:"model:voices/v2/manthos/added_IVF2586_Flat_nprobe_1_manthos_v2.index"},tensors:{support_hubert_base:{source:"weights:",prefix:"support_hubert_base"},support_rmvpe:{source:"weights:",prefix:"support_rmvpe"},voice_v1_chocola_checkpoint:{source:"weights:",prefix:"voice_v1_chocola_checkpoint"},voice_v1_chocola_index_vectors:{source:"weights:",prefix:"voice_v1_chocola_index_vectors"},voice_v1_fraise_checkpoint:{source:"weights:",prefix:"voice_v1_fraise_checkpoint"},voice_v1_fraise_index_vectors:{source:"weights:",prefix:"voice_v1_fraise_index_vectors"},voice_v2_default_checkpoint:{source:"weights:",prefix:"voice_v2_default_checkpoint"},voice_v2_default_index_vectors:{source:"weights:",prefix:"voice_v2_default_index_vectors"},voice_v2_manthos_checkpoint:{source:"weights:",prefix:"voice_v2_manthos_checkpoint"},voice_v2_manthos_index_vectors:{source:"weights:",prefix:"voice_v2_manthos_index_vectors"}}},{format:"safetensors",roots:{safetensors:"../safetensors"},files:{voice_v1_chocola_index:"safetensors:voices/v1/chocola/added_IVF732_Flat_nprobe_1.index",voice_v1_fraise_index:"safetensors:voices/v1/fraise/added_IVF802_Flat_nprobe_1.index",voice_v2_default_index:"safetensors:voices/v2/default/added_IVF511_Flat_nprobe_1_default_v2.index",voice_v2_manthos_index:"safetensors:voices/v2/manthos/added_IVF2586_Flat_nprobe_1_manthos_v2.index"},tensors:{support_hubert_base:"safetensors:support/hubert_base.safetensors",support_rmvpe:"safetensors:support/rmvpe.safetensors",voice_v1_chocola_checkpoint:"safetensors:voices/v1/chocola/chocola2333333.safetensors",voice_v1_chocola_index_vectors:"safetensors:voices/v1/chocola/added_IVF732_Flat_nprobe_1.ivf.safetensors",voice_v1_fraise_checkpoint:"safetensors:voices/v1/fraise/fraise2333333.safetensors",voice_v1_fraise_index_vectors:"safetensors:voices/v1/fraise/added_IVF802_Flat_nprobe_1.ivf.safetensors",voice_v2_default_checkpoint:"safetensors:voices/v2/default/default.safetensors",voice_v2_default_index_vectors:"safetensors:voices/v2/default/added_IVF511_Flat_nprobe_1_default_v2.ivf.safetensors",voice_v2_manthos_checkpoint:"safetensors:voices/v2/manthos/manthos.safetensors",voice_v2_manthos_index_vectors:"safetensors:voices/v2/manthos/added_IVF2586_Flat_nprobe_1_manthos_v2.ivf.safetensors"}}]},HS={schema_version:1,family:"sam_audio",display_name:"SAM Audio",description:"Prompt-conditioned audio separation.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"reference_video_file",type:"path",description:"Masked video identifying the target source; frames are matched to audio by nearest timestamp. Requires libav runtime libraries. Mutually exclusive with reference_image_file.",required:!1},{name:"reference_image_file",type:"path",description:"Masked RGB image identifying the target sound source, used as a constant visual prompt throughout the recording. Mask unwanted regions before supplying the image.",required:!1},{name:"anchors",type:"string",description:'Optional JSON array of time spans: [["+", start_seconds, end_seconds], ["-", start_seconds, end_seconds]]. Positive spans identify the target; negative spans identify sounds to exclude.',required:!1},{name:"seed",type:"int",description:"Random seed; -1 selects a random seed.",min:-1,max:4294967295,default:42,required:!1},{name:"num_inference_steps",type:"int",description:"Midpoint integration steps; each step evaluates the denoiser twice.",min:1,default:16,required:!1}],session:[{name:"memory_bounded",type:"bool",description:"Experimental bounded-workspace execution with full recording context. Provisional option name.",default:!1,required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/SAM-Audio-GGUF",revision:"main",gated:!1}},packages:[{id:"sam_audio_small_f32",display_name:"SAM Audio Small F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"SAM-Audio-GGUF",files:["sam-audio-small-f32.gguf"]},{id:"sam_audio_small_bf16",display_name:"SAM Audio Small BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"SAM-Audio-GGUF",files:["sam-audio-small-bf16.gguf"]},{id:"sam_audio_small_q8_0",display_name:"SAM Audio Small Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"SAM-Audio-GGUF",files:["sam-audio-small-q8_0.gguf"]},{id:"sam_audio_base_f32",display_name:"SAM Audio Base F32 GGUF",format:"gguf",precision:"f32",target_directory:"SAM-Audio-GGUF",files:["sam-audio-base-f32.gguf"]},{id:"sam_audio_base_bf16",display_name:"SAM Audio Base BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"SAM-Audio-GGUF",files:["sam-audio-base-bf16.gguf"]},{id:"sam_audio_base_q8_0",display_name:"SAM Audio Base Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"SAM-Audio-GGUF",files:["sam-audio-base-q8_0.gguf"]},{id:"sam_audio_large_f32",display_name:"SAM Audio Large F32 GGUF",format:"gguf",precision:"f32",target_directory:"SAM-Audio-GGUF",files:["sam-audio-large-f32.gguf"]},{id:"sam_audio_large_bf16",display_name:"SAM Audio Large BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"SAM-Audio-GGUF",files:["sam-audio-large-bf16.gguf"]},{id:"sam_audio_large_q8_0",display_name:"SAM Audio Large Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"SAM-Audio-GGUF",files:["sam-audio-large-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"sam_audio_small_f32",tags:["GGUF"],docs:["docs/models/sam_audio.md","docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",t5_config:"model:t5_config.json",tokenizer:"model:tokenizer/spiece.model"},tensors:{weights:{source:"weights:"}}}]},WS={schema_version:1,family:"samsone",display_name:"SAMSONE",description:"Compact audio-language models for audio captioning, question answering, and sound, music, and speech understanding.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"instruct",type:"string",default:"describe the audio",required:!1,description:"Question or instruction about the input audio."},{name:"max_tokens",type:"int",min:1,default:100,required:!1,description:"Maximum response tokens. Must be positive; audio/prompt tokens plus this budget must fit checkpoint max_position_embeddings."}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"samsone_99m_bf16",display_name:"SAMSONE 99M GGUF BF16",default:!0,format:"gguf",precision:"bf16",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-99m-bf16.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_99m_q8_0",display_name:"SAMSONE 99M GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-99m-q8_0.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_134m_bf16",display_name:"SAMSONE 134M GGUF BF16",format:"gguf",precision:"bf16",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-134m-bf16.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_134m_q8_0",display_name:"SAMSONE 134M GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-134m-q8_0.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_356m_bf16",display_name:"SAMSONE 356M GGUF BF16",format:"gguf",precision:"bf16",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-356m-bf16.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_356m_q8_0",display_name:"SAMSONE 356M GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-356m-q8_0.gguf"],strip_prefix:"Samsone-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/samsone.md"],recommended_package:"samsone_99m_bf16"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",token_map:"model:token_map.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},QS={schema_version:1,family:"sanotts",display_name:"sanoTTS Nano",description:"Very small multilingual text-to-speech across fourteen languages. Two graphs: the nano lineage (duration student, contextual acoustic student to mel-100, noise-fed ConvNeXt-1D decoder with an iSTFT head; voices heart 2.27M and heart-nano 294k, English, 24 kHz) and the deterministic piperlite lineage (duration student, acoustic student to a 192-channel latent, optionally through a calibration adapter, then a 3-stage ConvTranspose1d decoder with dilated residual banks; voices amy, hfc and kristin for English, vi, id, cs, de, es, fr, it, pt, ro, ru, tr, ne and hi at 1.1-1.8M parameters, 22.05 kHz). Uses an external eSpeak-ng phonemizer.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en","vi","id","cs","de","es","fr","it","pt","ro","ru","tr","ne","hi"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"speed",type:"float",description:"Speech speed multiplier; larger is faster. Its reciprocal scales the voice's tuned length scale before the per-token clamp.",required:!1,min:.5,max:2,default:1},{name:"seed",type:"int",description:"Decoder noise seed. The decoder is noise-fed, so a given seed picks one of many valid renderings; 0 derives it from the text as sha256(text)[:8], which is what the reference implementations do. Piperlite voices are deterministic and ignore the seed.",required:!1,min:0,default:0},{name:"text_chunk_mode",type:"enum",description:"Long-form text chunking mode.",values:["word_budget"],required:!1,default:"word_budget"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 280.",required:!1,min:1,default:280}],session:[{name:"espeak_library_path",type:"path",description:"Optional explicit path to the eSpeak-ng shared library.",required:!1},{name:"espeak_data_path",type:"path",description:"Optional explicit path to the directory containing espeak-ng-data.",required:!1},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Component: decoder. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/neon; no artifacts or params are used. Default retains automatic NEON selection on supported Nano-lineage AArch64 CPU sessions. GGML supports the session backend; explicit NEON requires a Nano-lineage model, AArch64 NEON, and a CPU session.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"ampixa/sanoTTS",revision:"main",gated:!1}},packages:[{id:"sanotts_heart_nano_orig",display_name:"sanoTTS heart-nano 294k FP32 GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"sanoTTS-heart-nano-GGUF",files:["gguf/heart-nano-f32.gguf","gguf/config.json"],strip_prefix:"gguf"},{id:"sanotts_heart_orig",display_name:"sanoTTS heart 2.27M FP32 GGUF",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-heart-GGUF",files:["gguf/heart/heart-f32.gguf","gguf/heart/config.json"],strip_prefix:"gguf/heart"},{id:"sanotts_amy_orig",display_name:"sanoTTS amy 1.46M FP32 GGUF (English, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-amy-GGUF",files:["gguf/amy/amy-f32.gguf","gguf/amy/config.json"],strip_prefix:"gguf/amy"},{id:"sanotts_hfc_orig",display_name:"sanoTTS hfc 1.83M FP32 GGUF (English, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-hfc-GGUF",files:["gguf/hfc/hfc-f32.gguf","gguf/hfc/config.json"],strip_prefix:"gguf/hfc"},{id:"sanotts_kristin_orig",display_name:"sanoTTS kristin 1.40M FP32 GGUF (English, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-kristin-GGUF",files:["gguf/kristin/kristin-f32.gguf","gguf/kristin/config.json"],strip_prefix:"gguf/kristin"},{id:"sanotts_vi_orig",display_name:"sanoTTS vi 1.57M FP32 GGUF (Vietnamese, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-vi-GGUF",files:["gguf/vi/vi-f32.gguf","gguf/vi/config.json"],strip_prefix:"gguf/vi"},{id:"sanotts_id_orig",display_name:"sanoTTS id 1.56M FP32 GGUF (Indonesian, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-id-GGUF",files:["gguf/id/id-f32.gguf","gguf/id/config.json"],strip_prefix:"gguf/id"},{id:"sanotts_cs_orig",display_name:"sanoTTS cs 1.57M FP32 GGUF (Czech, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-cs-GGUF",files:["gguf/cs/cs-f32.gguf","gguf/cs/config.json"],strip_prefix:"gguf/cs"},{id:"sanotts_de_orig",display_name:"sanoTTS de 1.57M FP32 GGUF (German, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-de-GGUF",files:["gguf/de/de-f32.gguf","gguf/de/config.json"],strip_prefix:"gguf/de"},{id:"sanotts_es_orig",display_name:"sanoTTS es 1.56M FP32 GGUF (Spanish, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-es-GGUF",files:["gguf/es/es-f32.gguf","gguf/es/config.json"],strip_prefix:"gguf/es"},{id:"sanotts_fr_orig",display_name:"sanoTTS fr 1.57M FP32 GGUF (French, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-fr-GGUF",files:["gguf/fr/fr-f32.gguf","gguf/fr/config.json"],strip_prefix:"gguf/fr"},{id:"sanotts_it_orig",display_name:"sanoTTS it 1.57M FP32 GGUF (Italian, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-it-GGUF",files:["gguf/it/it-f32.gguf","gguf/it/config.json"],strip_prefix:"gguf/it"},{id:"sanotts_pt_orig",display_name:"sanoTTS pt 1.57M FP32 GGUF (Portuguese (Brazil), piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-pt-GGUF",files:["gguf/pt/pt-f32.gguf","gguf/pt/config.json"],strip_prefix:"gguf/pt"},{id:"sanotts_ro_orig",display_name:"sanoTTS ro 1.57M FP32 GGUF (Romanian, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-ro-GGUF",files:["gguf/ro/ro-f32.gguf","gguf/ro/config.json"],strip_prefix:"gguf/ro"},{id:"sanotts_ru_orig",display_name:"sanoTTS ru 1.57M FP32 GGUF (Russian, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-ru-GGUF",files:["gguf/ru/ru-f32.gguf","gguf/ru/config.json"],strip_prefix:"gguf/ru"},{id:"sanotts_tr_orig",display_name:"sanoTTS tr 1.56M FP32 GGUF (Turkish, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-tr-GGUF",files:["gguf/tr/tr-f32.gguf","gguf/tr/config.json"],strip_prefix:"gguf/tr"},{id:"sanotts_ne_orig",display_name:"sanoTTS ne 1.47M FP32 GGUF (Nepali, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-ne-GGUF",files:["gguf/ne/ne-f32.gguf","gguf/ne/config.json"],strip_prefix:"gguf/ne"},{id:"sanotts_hi_orig",display_name:"sanoTTS hi 1.50M FP32 GGUF (Hindi, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-hi-GGUF",files:["gguf/hi/hi-f32.gguf","gguf/hi/config.json"],strip_prefix:"gguf/hi"}],dependencies:[],ui:{recommended_package:"sanotts_heart_nano_orig",tags:["TTS","GGUF"],docs:["docs/tts.md","docs/models/sanotts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}}]},KS={family:"seed_vc",schema_version:1,display_name:"Seed-VC",description:"Zero-shot voice conversion and singing voice conversion model for transferring timbre and style from reference audio, with low-latency realtime conversion and optional lightweight fine-tuning.",category:"voice_conversion",status:"supported",tasks:["vc","svc"],modes:["offline"],languages:["language_agnostic"],capabilities:{vc:["speaker_reference"],svc:["speaker_reference","singing"]},dependencies:[],runtime:{tags:["gguf"]},ui:{recommended_package:"seed_vc_mlx_q8_0",tags:["VC","GGUF"],docs:["docs/models/seed_vc.md","docs/audio_tools.md","docs/gguf.md"]},options:{request:[{name:"route",type:"enum",description:"Select the Seed-VC conversion route. Defaults to v2_vc for VC and v1_svc for SVC.",values:["v2_vc","v1_svc","v1_whisper_bigvgan_vc","v1_xlsr_hift_vc"],required:!1},{name:"duration_scale",type:"float",description:"V1 output duration multiplier; must be finite and positive, default 1.0. V2 validates this option but does not apply it.",required:!1,min:0,default:1},{name:"num_inference_steps",type:"int",description:"Diffusion steps; default 30.",required:!1,min:1,default:30},{name:"inference_guidance_scale",type:"float",description:"V1 classifier-free guidance scale; default 0.7. Any finite value is accepted; V1 disables CFG for nonpositive values.",required:!1,default:.7},{name:"intelligibility_guidance_scale",type:"float",description:"V2 classifier-free guidance scale for source-content intelligibility; default 0.7. Any finite value is accepted and used in V2 guidance arithmetic.",required:!1,default:.7},{name:"similarity_guidance_scale",type:"float",description:"V2 classifier-free guidance scale for target-speaker similarity; default 0.7. Any finite value is accepted and used in V2 guidance arithmetic.",required:!1,default:.7},{name:"voice_anonymization",type:"bool",description:"Use randomized average-voice conditioning instead of target-speaker conditioning for V2 anonymization; default false.",required:!1,default:!1},{name:"seed",type:"int",description:"Seed for V1/V2 diffusion noise and HiFT stochastic source excitation; omitted requests choose a random seed.",required:!1,min:0},{name:"noise_file",type:"path",description:"Optional raw f32 noise file for deterministic V1/V2 diffusion noise and XLSR/HiFT source excitation.",required:!1},{name:"f0_condition",type:"bool",description:"Enable V1 F0 conditioning. Defaults to true for v1_svc and false for the V1 voice-conversion routes.",required:!1},{name:"auto_f0_adjust",type:"bool",description:"Automatically adjust V1 source pitch toward the target pitch level; default false.",required:!1,default:!1},{name:"semitone_shift",type:"int",description:"V1 pitch shift in semitones for singing voice conversion; default 0.",required:!1,default:0}],session:[{name:"weight_type",type:"enum",description:"Shared Seed-VC component weight storage type; default native, except RMVPE uses f32 unless overridden.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"seed_vc_mlx_q8_0",display_name:"SeedVC-MLX Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"SeedVC-MLX-GGUF",files:["SeedVC-MLX-GGUF/seed-vc-mlx-q8_0.gguf"],strip_prefix:"SeedVC-MLX-GGUF"},{id:"seed_vc_mlx_f16",display_name:"SeedVC-MLX F16 GGUF",format:"gguf",precision:"f16",target_directory:"SeedVC-MLX-GGUF",files:["SeedVC-MLX-GGUF/seed-vc-mlx-f16.gguf"],strip_prefix:"SeedVC-MLX-GGUF"},{id:"seed_vc_mlx_orig",display_name:"SeedVC-MLX Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"SeedVC-MLX-GGUF",files:["SeedVC-MLX-GGUF/seed-vc-mlx-orig.gguf"],strip_prefix:"SeedVC-MLX-GGUF"},{id:"seed_vc_mlx_safetensors",display_name:"SeedVC-MLX Safetensors",format:"safetensors",precision:"native",target_directory:"SeedVC-MLX",files:["seed_vc_manifest.json","v2/ar.safetensors","v2/cfm.safetensors","v2/vc_wrapper.json","astral/bsq32.json","astral/bsq2048.json","v1/svc.json","v1/whisper_bigvgan.json","v1/xlsr_hift.json","hift/config.json","bigvgan/v2_22khz_80band_256x/config.json","bigvgan/v2_44khz_128band_512x/config.json","whisper-small/config.json","hubert-large-ll60k/config.json","wav2vec2-xls-r-300m/config.json","v1/svc.safetensors","v1/whisper_bigvgan.safetensors","v1/xlsr_hift.safetensors","astral/bsq32.safetensors","astral/bsq2048.safetensors","campplus/model.safetensors","rmvpe/model.safetensors","hift/model.safetensors","bigvgan/v2_22khz_80band_256x/model.safetensors","bigvgan/v2_44khz_128band_512x/model.safetensors","whisper-small/model.safetensors","hubert-large-ll60k/model.safetensors","wav2vec2-xls-r-300m/model.safetensors"],download:{kind:"huggingface_snapshot",repo:"mlx-community/SeedVC-MLX"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{manifest:"model:seed_vc_manifest.json",v2_wrapper_config:"model:v2/vc_wrapper.json",astral_bsq32_config:"model:astral/bsq32.json",astral_bsq2048_config:"model:astral/bsq2048.json",v1_svc_config:"model:v1/svc.json",v1_whisper_bigvgan_config:"model:v1/whisper_bigvgan.json",v1_xlsr_hift_config:"model:v1/xlsr_hift.json",hift_config:"model:hift/config.json",bigvgan_22k_config:"model:bigvgan/v2_22khz_80band_256x/config.json",bigvgan_44k_config:"model:bigvgan/v2_44khz_128band_512x/config.json",whisper_small_config:"model:whisper-small/config.json",hubert_large_config:"model:hubert-large-ll60k/config.json",wav2vec2_xlsr_config:"model:wav2vec2-xls-r-300m/config.json"},tensors:{v2_ar_weights:{source:"weights:",prefix:"v2_ar_weights"},v2_cfm_weights:{source:"weights:",prefix:"v2_cfm_weights"},v1_svc_weights:{source:"weights:",prefix:"v1_svc_weights"},v1_whisper_bigvgan_weights:{source:"weights:",prefix:"v1_whisper_bigvgan_weights"},v1_xlsr_hift_weights:{source:"weights:",prefix:"v1_xlsr_hift_weights"},astral_bsq32_weights:{source:"weights:",prefix:"astral_bsq32_weights"},astral_bsq2048_weights:{source:"weights:",prefix:"astral_bsq2048_weights"},campplus_weights:{source:"weights:",prefix:"campplus_weights"},rmvpe_weights:{source:"weights:",prefix:"rmvpe_weights"},hift_weights:{source:"weights:",prefix:"hift_weights"},bigvgan_22k_weights:{source:"weights:",prefix:"bigvgan_22k_weights"},bigvgan_44k_weights:{source:"weights:",prefix:"bigvgan_44k_weights"},whisper_small_weights:{source:"weights:",prefix:"whisper_small_weights"},hubert_large_weights:{source:"weights:",prefix:"hubert_large_weights"},wav2vec2_xlsr_weights:{source:"weights:",prefix:"wav2vec2_xlsr_weights"}}},{format:"safetensors",roots:{model:"."},files:{manifest:"model:seed_vc_manifest.json",v2_wrapper_config:"model:v2/vc_wrapper.json",astral_bsq32_config:"model:astral/bsq32.json",astral_bsq2048_config:"model:astral/bsq2048.json",v1_svc_config:"model:v1/svc.json",v1_whisper_bigvgan_config:"model:v1/whisper_bigvgan.json",v1_xlsr_hift_config:"model:v1/xlsr_hift.json",hift_config:"model:hift/config.json",bigvgan_22k_config:"model:bigvgan/v2_22khz_80band_256x/config.json",bigvgan_44k_config:"model:bigvgan/v2_44khz_128band_512x/config.json",whisper_small_config:"model:whisper-small/config.json",hubert_large_config:"model:hubert-large-ll60k/config.json",wav2vec2_xlsr_config:"model:wav2vec2-xls-r-300m/config.json"},tensors:{v2_ar_weights:"model:v2/ar.safetensors",v2_cfm_weights:"model:v2/cfm.safetensors",v1_svc_weights:"model:v1/svc.safetensors",v1_whisper_bigvgan_weights:"model:v1/whisper_bigvgan.safetensors",v1_xlsr_hift_weights:"model:v1/xlsr_hift.safetensors",astral_bsq32_weights:"model:astral/bsq32.safetensors",astral_bsq2048_weights:"model:astral/bsq2048.safetensors",campplus_weights:"model:campplus/model.safetensors",rmvpe_weights:"model:rmvpe/model.safetensors",hift_weights:"model:hift/model.safetensors",bigvgan_22k_weights:"model:bigvgan/v2_22khz_80band_256x/model.safetensors",bigvgan_44k_weights:"model:bigvgan/v2_44khz_128band_512x/model.safetensors",whisper_small_weights:"model:whisper-small/model.safetensors",hubert_large_weights:"model:hubert-large-ll60k/model.safetensors",wav2vec2_xlsr_weights:"model:wav2vec2-xls-r-300m/model.safetensors"}}]},YS={schema_version:1,family:"sense_asr",display_name:"SenseVoice-Small",description:"SenseVoice-Small multilingual speech recognition with rich event/emotion/ITN tags via a SAN-M encoder and CTC head, ported to audio.cpp.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["auto","zh","en","yue","ja","ko","pt","ru","es","it","fr","de","nl","pl","tr","ar","hi","vi","th","id","ms","fa","nospeech"],capabilities:{asr:["vad_chunking","partial_results"]},options:{request:[{name:"language",type:"string",description:"Recognition language, or auto to let the model infer it from the audio.",required:!1,default:"auto"},{name:"enable_itn",type:"bool",description:"Enable inverse text normalization (adds the withitn query token).",required:!1,default:!0},{name:"keep_tags",type:"bool",description:"Keep <|event|>/<|emotion|>/<|language|> tags inline in the output text.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Offline chunk mode: auto, fixed, vad, or none. Streaming always uses fixed-duration windows.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Positive duration rounding to at least one sample; sets fixed windows and the VAD maximum chunk length.",required:!1,default:30}],session:[{name:"weight_type",type:"enum",description:"Shared model weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MB.",required:!1,min:1,default:1024},{name:"vad_model_path",type:"string",description:"Path to the Silero VAD model directory used by automatic audio chunking.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},runtime:{tags:["gguf","server","stream","cuda","metal","cpu"]},packages:[{id:"sensevoice_small_q8",display_name:"SenseVoice-Small Q8 GGUF",description:"audio.cpp GGUF built from the SenseVoice-Small checkpoint via the SenseVoice llama.cpp export script.",default:!0,format:"gguf",precision:"q8_0",target_directory:"SenseVoice-Small-GGUF",files:["sensevoice-small-q8-audiocpp-v1.gguf"],download:{kind:"huggingface_snapshot",repo:"FunAudioLLM/SenseVoiceSmall-GGUF-audiocpp",revision:"5c3fcfe748a8714216bc135476d5863084fddb72",gated:!1}}],dependencies:[],ui:{recommended_package:"sensevoice_small_q8",tags:["ASR","GGUF","Stream"],docs:["docs/models/sense_asr.md"],summary:"SenseVoice-Small transcription with event/emotion tags and ITN."},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{},optional_files:{},tensors:{weights:"weights:"}}]},XS={schema_version:1,family:"sheetsage2",display_name:"SheetSage2",description:"SheetSage2 audio-to-symbolic transcription. This native path consumes an input recording from a self-contained GGUF and emits an ABC score artifact.",category:"audio_tools",status:"supported",tasks:["midi"],modes:["offline"],languages:["music"],runtime:{tags:["gguf","cuda"]},capabilities:{midi:["midi_artifact"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum total decoder sequence length; default follows the embedded model context. Omitted uses checkpoint max_output_seq_len.",required:!1,min:1}],session:[{name:"attention_tile_rows",type:"int",description:"Query rows per encoder attention tile on any backend; 0 disables tiling. Use 1024 to bound each score tensor below 512 MiB for the 300-second window.",required:!1,min:0,default:0},{name:"weight_type",type:"enum",description:"Encoder and decoder weight storage override.",required:!1,default:"native",values:["native","f32","f16","bf16","q4_0","q4_k"]},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"decoder_graph_arena_mb",type:"int",description:"Encoder/decoder graph arena size in MiB; default 1536.",required:!1,min:1,default:1536}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/SheetSage2-GGUF",revision:"main",gated:!1}},packages:[{id:"sheetsage2_orig",display_name:"SheetSage2 Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"SheetSage2-GGUF",files:["sheetsage2-orig.gguf"]}],dependencies:[],ui:{recommended_package:"sheetsage2_orig",tags:["Music","MIDI","GGUF"],docs:[]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}}]},JS={schema_version:1,family:"sherpa_kws",display_name:"sherpa-onnx Zipformer KWS",description:"Streaming Zipformer transducer keyword spotting from sherpa-onnx model exports.",category:"audio_tools",status:"experimental",tasks:["wake_word"],modes:["offline","streaming"],languages:["model_dependent"],capabilities:{wake_word:["speech_segments","stream_events"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"keywords",type:"string",description:"Newline- or slash-separated tokenized keyword rows; each row may include :score, #threshold, and @label fields.",required:!1},{name:"max_active_paths",type:"int",description:"Maximum keyword decoder hypotheses.",required:!1,default:4,min:1,max:64},{name:"keywords_score",type:"float",description:"Default context score added for each matched keyword token. Negative values are accepted but token scores are clamped to at least zero.",required:!1,default:1},{name:"keywords_threshold",type:"float",description:"Default mean acoustic probability required to trigger a keyword.",required:!1,default:.25,min:0,max:1},{name:"num_trailing_blanks",type:"int",description:"Emit after strictly more than this many trailing blank frames; 1 requires 2 blanks, 0 requires 1.",required:!1,default:1,min:0}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"sherpa_kws_zipformer_zh_en_3m_f32",display_name:"Sherpa KWS Zipformer Chinese-English 3M GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"Sherpa-KWS-GGUF",files:["Sherpa-KWS-GGUF/sherpa-kws-zipformer-zh-en-3m-f32.gguf"],strip_prefix:"Sherpa-KWS-GGUF"}],dependencies:[],ui:{tags:["Wake Word","GGUF","Stream"],docs:["docs/models/sherpa_kws.md"],recommended_package:"sherpa_kws_zipformer_zh_en_3m_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokens:"model:tokens.txt",keywords:"model:keywords.txt"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokens:"model:tokens.txt",keywords:"model:keywords.txt"},tensors:{weights:"model:model.safetensors"}}]},ZS={schema_version:1,family:"sidon",display_name:"Sidon v0.1",description:"Single-speaker speech restoration with 48 kHz output.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{s2s:["audio_enhancement"]},runtime:{tags:["gguf"]},options:{request:[],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"sidon_f32",display_name:"Sidon v0.1 F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"Sidon-GGUF",files:["Sidon-GGUF/sidon-v0.1-f32.gguf"],strip_prefix:"Sidon-GGUF"}],dependencies:[],ui:{recommended_package:"sidon_f32",tags:["GGUF"],docs:["docs/models/sidon.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},e8={schema_version:1,family:"smart_turn",display_name:"Smart Turn v3.2",description:"Audio-native conversational turn-completion detection using a Whisper-Tiny encoder and attention-pooling classifier.",category:"audio_tools",status:"supported",tasks:["turn"],modes:["offline"],languages:["auto"],capabilities:{turn:["turn_decision"]},runtime:{tags:["gguf"]},options:{request:[{name:"threshold",type:"float",description:"Completion probability threshold; a decision is complete only when probability exceeds this value.",required:!1,default:.5,min:0,max:1}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"smart_turn_v3_2_f32",display_name:"Smart Turn v3.2 F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"Smart-Turn-v3-GGUF",files:["Smart-Turn-v3-GGUF/smart-turn-v3.2-f32.gguf"],strip_prefix:"Smart-Turn-v3-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/smart_turn.md"],recommended_package:"smart_turn_v3_2_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},t8={schema_version:1,family:"soprano_tts",display_name:"Soprano",description:"Soprano is an ultra-lightweight (~80M) English-only text-to-speech model. Syntax uses a 17-layer Qwen3-style causal LM (hidden 512, vocab 8192) that autoregressively emits per-frame 512-dimensional features; a non-iterative Vocos-style decoder (ConvNeXt backbone + single ISTFT head, n_fft 2048 / hop 512) turns those features into 32 kHz audio. No diffusion refinement is performed in the decoder.",category:"tts",status:"community",tasks:["tts"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf","stream"]},capabilities:{tts:["long_form"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated audio frames for the autoregressive LM; default 512.",required:!1,min:1,default:512},{name:"temperature",type:"float",description:"Autoregressive sampling temperature; must be > 0, default 0.3.",required:!1,min:0,default:.3},{name:"top_p",type:"float",description:"Nucleus sampling probability; default 0.95. Values >=1 disable nucleus filtering.",required:!1,min:0,default:.95},{name:"repetition_penalty",type:"float",description:"Repetition penalty applied to the LM head; default 1.2. Must be positive; values below 1 are accepted.",required:!1,default:1.2},{name:"eos_bias",type:"float",description:"Additive bias on the EOS token logit during generation. Positive values make the model stop sooner when speech ends (mitigating runaway generations that hit max_tokens); negative values encourage longer utterances. Default 0 disables the adjustment.",required:!1,default:0},{name:"seed",type:"int",description:"Autoregressive sampling seed; omitted requests choose a random seed.",required:!1,min:0}],session:[{name:"text_chunk_size",type:"int",description:"Maximum codepoints per sentence chunk before the model generates and decodes separately. Smaller values keep prompts short (more reliable EOS) but increase overhead. Default 200.",required:!1,min:1,default:200},{name:"backbone_weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"f32",description:"Storage type for the Qwen3 LM backbone weights."},{name:"decoder_weight_type",type:"enum",preset:"weight_type_conv",required:!1,default:"f32",description:"Storage type for the Vocos decoder weights."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"WalkingCat/Soprano-1.1-80M-GGUF",revision:"main",gated:!1}},packages:[{id:"soprano_1_1_80m_q8_0",display_name:"Soprano-1.1-80M Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Soprano-1.1-80M-GGUF",files:["Soprano-1.1-80M-GGUF/soprano-1.1-80m-q8_0.gguf"],strip_prefix:"Soprano-1.1-80M-GGUF"},{id:"soprano_1_1_80m_bf16",display_name:"Soprano-1.1-80M BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Soprano-1.1-80M-GGUF",files:["Soprano-1.1-80M-GGUF/soprano-1.1-80m-bf16.gguf"],strip_prefix:"Soprano-1.1-80M-GGUF"}],dependencies:[],ui:{recommended_package:"soprano_1_1_80m_q8_0",tags:["TTS","Stream"],docs:["docs/models/soprano_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{backbone:"weights:",decoder:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{backbone:"model:combined.safetensors",decoder:"model:combined.safetensors"}}]},i8={schema_version:1,family:"sopro_tts",display_name:"Sopro V2 Turbo",description:"Community Sopro V2 Turbo (samuel-vitorino/sopro-v2-turbo): a 120M zero-shot voice-cloning TTS. SentencePiece text tokenizer, style-prefix conditioned autoregressive semantic LM over FSQ tokens, rectified-flow acoustic DiT and a Vocos ISTFT vocoder at 24 kHz.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline","streaming"],languages:["en","pt","fr","de"],runtime:{tags:["server"]},capabilities:{clone:["speaker_reference"]},options:{request:[{name:"language",type:"string",description:"Language tag (en, pt, fr, de); omitted inherits transcript language, then the session default.",required:!1},{name:"temperature",type:"float",description:"Semantic sampling temperature; nonpositive selects greedy decoding. Omitted uses checkpoint generation.temperature.",required:!1},{name:"top_p",type:"float",description:"Semantic nucleus cutoff; values outside [0,1] are disabled/clamped by the sampler. Omitted uses checkpoint generation.top_p.",required:!1},{name:"top_k",type:"int",description:"Semantic top-k; nonpositive disables filtering. Omitted uses checkpoint generation.top_k.",required:!1},{name:"num_inference_steps",type:"int",description:"Positive acoustic sampling steps; omitted uses checkpoint generation.steps.",required:!1,min:1},{name:"max_duration_sec",type:"float",description:"Positive maximum segment duration; must be >= min_duration_sec. Omitted uses checkpoint generation.max_seconds.",required:!1},{name:"min_duration_sec",type:"float",description:"Nonnegative minimum duration; must be <= max_duration_sec. Omitted uses checkpoint generation.min_seconds.",required:!1,min:0},{name:"reference_duration_sec",type:"float",description:"Positive reference window in seconds; omitted uses checkpoint generation.ref_seconds.",required:!1},{name:"text_chunk_size",type:"int",description:"Positive codepoint budget per segment; omitted uses checkpoint generation.max_segment_chars.",required:!1,min:1},{name:"seed",type:"int",description:"Non-negative seed for semantic sampling and the acoustic noise prior; omit for a random seed.",required:!1,min:0}],session:[{name:"language",type:"string",description:"Default language tag for requests that do not set one.",required:!1,default:""},{name:"voice_cache_slots",type:"int",description:"Reference voices kept prepared between requests, so a repeated voice skips the encoders and, when streaming, the prompt solve. Output is identical with or without it. A streamed 10 s voice holds about 60 MB. Default 0 (off).",required:!1,min:0,default:0},{name:"matmul_weight_type",type:"enum",preset:"weight_type_full",description:"Storage type for the matmul weights of every stage (semantic LM, acoustic DiT, encoders, vocoder head).",required:!1,default:"f32"},{name:"conv_weight_type",type:"enum",preset:"weight_type_conv",description:"Storage type for convolution weights (speaker/semantic encoders and the Vocos backbone).",required:!1,default:"f32"}],load:[]},packages:[{id:"sopro_v2_turbo_f16",display_name:"Sopro V2 Turbo F16 GGUF",description:"Single-file GGUF of all four stages with the config and tokenizer embedded: f16 weights, mel front ends kept in f32.",default:!0,format:"gguf",precision:"f16",target_directory:"sopro-v2-turbo-GGUF",files:["sopro-v2-turbo-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"samuel-vitorino/sopro-v2-turbo",revision:"main",gated:!1}},{id:"sopro_v2_turbo_safetensors",display_name:"Sopro V2 Turbo (upstream safetensors)",description:"Upstream checkpoint from samuel-vitorino/sopro-v2-turbo: config.json, tokenizer.model and the four safetensors stages. Runs directly, no conversion needed.",format:"safetensors",precision:"orig",target_directory:"sopro-v2-turbo",files:["config.json","tokenizer.model","model.safetensors","semantic_encoder.safetensors","speaker_encoder.safetensors","vocoder.safetensors"],download:{kind:"huggingface_snapshot",repo:"samuel-vitorino/sopro-v2-turbo",revision:"main",gated:!1}}],dependencies:[],ui:{recommended_package:"sopro_v2_turbo_safetensors",tags:["TTS","Clone"],docs:["docs/models/sopro_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{model:{source:"weights:",prefix:"model"},semantic_encoder:{source:"weights:",prefix:"semantic_encoder"},speaker_encoder:{source:"weights:",prefix:"speaker_encoder"},vocoder:{source:"weights:",prefix:"vocoder"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{model:{source:"model:model.safetensors"},semantic_encoder:{source:"model:semantic_encoder.safetensors"},speaker_encoder:{source:"model:speaker_encoder.safetensors"},vocoder:{source:"model:vocoder.safetensors"}}}]},a8={schema_version:1,family:"sortformer_diar",display_name:"Sortformer Diarization",description:"NVIDIA Transformer-based end-to-end speaker diarization model trained primarily on English speech, predicting speaker labels directly from audio and resolving speaker ordering by arrival time for up to four speakers.",category:"speech_analysis",status:"supported",tasks:["diar"],modes:["offline"],languages:["en"],capabilities:{diar:["speaker_turns"]},dependencies:[],options:{request:[{name:"speaker_threshold",type:"float",description:"Speaker activity probability threshold used when decoding speaker turns; default 0.5.",required:!1,min:0,max:1,default:.5},{name:"speaker_min_frames",type:"int",description:"Minimum decoded segment length in model output frames; default 0 disables short-segment filtering.",required:!1,min:0,default:0},{name:"speaker_pad_frames",type:"int",description:"Pad each decoded speaker segment by this many model output frames before filtering and merging; default 0.",required:!1,min:0,default:0}],session:[{name:"graph_arena_mb",type:"int",description:"Inference graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"weight_context_mb",type:"int",description:"Weight context size in MiB; default 128.",required:!1,min:1,default:128},{name:"session_len_sec",type:"float",description:"Base offline graph context length in seconds; must be > 0, default 20.",required:!1,min:0,default:20},{name:"graph_capacity_mode",type:"enum",description:"Offline graph capacity policy; defaults to tiered on host-graph backends and fixed otherwise.",values:["fixed","tiered","grow","double"],required:!1},{name:"speaker_threshold",type:"float",description:"Default speaker activity probability threshold for decoded speaker turns; default 0.5.",required:!1,min:0,max:1,default:.5},{name:"speaker_min_frames",type:"int",description:"Default minimum decoded segment length in model output frames; default 0 disables short-segment filtering.",required:!1,min:0,default:0},{name:"speaker_pad_frames",type:"int",description:"Default decoded segment padding in model output frames; default 0.",required:!1,min:0,default:0},{name:"weight_type",type:"enum",description:"All weight storage type; default f32.",preset:"weight_type_full",required:!1,default:"f32"},{name:"matmul_weight_type",type:"enum",description:"Matmul weight storage type; defaults to weight_type when set, otherwise f32.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; defaults to weight_type when set, otherwise f32.",preset:"weight_type_full",required:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"sortformer_diar_4spk_v1_q8_0",tags:["Diar","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"sortformer_diar_4spk_v1_q8_0",display_name:"Sortformer Diar 4spk v1 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Sortformer-Diar-4spk-v1-GGUF",files:["Sortformer-Diar-4spk-v1-GGUF/sortformer-diar-4spk-v1-q8_0.gguf"],strip_prefix:"Sortformer-Diar-4spk-v1-GGUF"},{id:"sortformer_diar_4spk_v1_f16",display_name:"Sortformer Diar 4spk v1 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Sortformer-Diar-4spk-v1-GGUF",files:["Sortformer-Diar-4spk-v1-GGUF/sortformer-diar-4spk-v1-f16.gguf"],strip_prefix:"Sortformer-Diar-4spk-v1-GGUF"},{id:"sortformer_diar_4spk_v1_safetensors",display_name:"Sortformer Diar 4spk v1 Safetensors",format:"safetensors",precision:"native",target_directory:"diar_sortformer_4spk-v1",files:["config.json","model.safetensors","processor_config.json"],download:{kind:"huggingface_snapshot",repo:"nvidia/diar_sortformer_4spk-v1"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"model:model.safetensors"}}]},n8={schema_version:1,family:"sortformer_diar_v2",display_name:"Sortformer Diarization v2.1",description:"NVIDIA Sortformer v2.1 streaming speaker diarization model with four speaker channels, AOSC state, stable arrival-order speaker identities, and bounded-context offline and streaming execution. The model has no published language whitelist: it was trained primarily on English speech, includes non-English meeting data such as AISHELL-4 and AliMeeting, and may degrade on other languages. The checkpoint is governed by the NVIDIA Open Model License and is local-use only until redistribution approval.",category:"speech_analysis",status:"community",tasks:["diar"],modes:["offline","streaming"],languages:["multilingual"],capabilities:{diar:["speaker_turns"]},dependencies:[],options:{request:[{name:"speaker_threshold",type:"float",description:"Speaker activity threshold used for turn decoding; default 0.5.",required:!1,min:0,max:1,default:.5},{name:"speaker_min_frames",type:"int",description:"Minimum decoded turn duration in 80 ms model frames; default 0.",required:!1,min:0,default:0},{name:"speaker_pad_frames",type:"int",description:"Padding applied to decoded turns in model frames; default 0.",required:!1,min:0,default:0}],session:[{name:"graph_arena_mb",type:"int",description:"Inference graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight context size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"geometry",type:"enum",description:"Streaming geometry preset; default uses the checkpoint geometry.",values:["model","streaming","very_high_latency","high_latency","low_latency"],required:!1,default:"model"},{name:"weight_type",type:"enum",description:"Default storage type for all model weights; default f32. With bf16/q8_0, also set conv_weight_type explicitly to native/f32/f16; convolution storage cannot inherit bf16/q8_0.",preset:"weight_type_full",required:!1,default:"f32"},{name:"matmul_weight_type",type:"enum",description:"Matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; defaults to weight_type.",preset:"weight_type_conv",required:!1}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"sortformer_diar_v2_1_f32_gguf_local",tags:["Diar","Stream","GGUF"],docs:["docs/models/sortformer_diar_v2.md","docs/speech_analysis.md","docs/gguf.md"]},package_defaults:{download:{kind:"unsupported",reason:"NVIDIA Open Model License checkpoint: convert or stage locally until redistribution approval is complete."}},packages:[{id:"sortformer_diar_v2_1_f32_local",display_name:"Sortformer Diar v2.1 F32 local package",format:"safetensors",precision:"f32",target_directory:"Sortformer-Diar-v2.1-local",files:["Sortformer-Diar-v2.1-local/config.json","Sortformer-Diar-v2.1-local/processor_config.json","Sortformer-Diar-v2.1-local/model.safetensors"],strip_prefix:"Sortformer-Diar-v2.1-local"},{id:"sortformer_diar_v2_1_f32_gguf_local",display_name:"Sortformer Diar v2.1 F32 GGUF local package",default:!0,format:"gguf",precision:"f32",target_directory:"Sortformer-Diar-v2.1-local",files:["Sortformer-Diar-v2.1-local/sortformer-v2.1-f32.gguf"],strip_prefix:"Sortformer-Diar-v2.1-local"},{id:"sortformer_diar_v2_1_f16_mixed_gguf_local",display_name:"Sortformer Diar v2.1 mixed F16/F32 GGUF local package",format:"gguf",precision:"f16",target_directory:"Sortformer-Diar-v2.1-local",files:["Sortformer-Diar-v2.1-local/sortformer-v2.1-f16-mixed.gguf"],strip_prefix:"Sortformer-Diar-v2.1-local"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"model:model.safetensors"}}]},s8={family:"stable_audio",display_name:"Stable Audio 3",description:"Stability AI generative audio model family for text-to-music, sound effects, audio-to-audio editing, inpainting, continuation, variable-length generation, and LoRA personalization.",category:"audio_generation",status:"supported",tasks:["music","sfx","edit"],modes:["offline"],languages:["en"],options:{request:[{name:"prompt",type:"string",description:"Fallback text prompt when text_input is absent; pipe separates batch prompts.",required:!1},{name:"negative_prompt",type:"string",description:"Negative prompt; pipe separates batch prompts.",required:!1},{name:"duration_sec",type:"float",description:"Positive duration in seconds; batch requests also accept a comma-separated string matching the prompt count, not a JSON array.",required:!1,default:120},{name:"batch_size",type:"int",description:"Prompt batch size.",required:!1,min:1,default:1},{name:"num_inference_steps",type:"int",description:"Diffusion steps.",required:!1,min:1,default:8},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale.",required:!1,default:1},{name:"apg_scale",type:"float",description:"Adaptive projected guidance scale.",required:!1,default:1},{name:"sampler_mode",type:"enum",description:"Stable Audio 3 diffusion sampler.",required:!1,values:["pingpong","euler"]},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0},{name:"duration_padding_sec",type:"float",description:"Generated padding before truncation.",required:!1,min:0,default:6},{name:"truncate_output_to_duration",type:"bool",description:"Trim decoded audio to requested duration.",required:!1,default:!0},{name:"chunked_decode",type:"bool",description:"Decode audio in chunks.",required:!1,default:!0},{name:"init_noise_level",type:"float",description:"Audio-conditioned generation strength in [0, 1].",required:!1,min:0,max:1,default:1},{name:"audio_input_kind",type:"enum",description:"How to use audio_input.",required:!1,values:["init_audio","inpaint_audio"],default:"init_audio"},{name:"inpaint_mask_start_sec",type:"string",description:"Comma-separated inpaint region starts in seconds.",required:!1},{name:"inpaint_mask_end_sec",type:"string",description:"Comma-separated inpaint region ends in seconds.",required:!1}],session:[{name:"max_batch",type:"int",description:"Maximum prompt batch size.",required:!1,min:1,default:1},{name:"weight_type",type:"enum",description:"Weight storage type; defaults to native.",required:!1,preset:"weight_type_full"},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs after each request.",required:!1,default:!1}],load:[]},capabilities:{music:["lyrics"],sfx:["prompt_generation"],edit:["prompt_editing"]},runtime:{tags:["gguf"]},ui:{recommended_package:"stable_audio_3_medium_q8_0",tags:["Music","SFX","Edit","GGUF"],docs:["docs/models/stable_audio.md","docs/music_generation.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"stable_audio_3_medium_q8_0",display_name:"Stable Audio 3 Medium Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Stable-Audio-3-Medium-GGUF",files:["Stable-Audio-3-Medium-GGUF/stable-audio-3-medium-q8_0.gguf"],strip_prefix:"Stable-Audio-3-Medium-GGUF"},{id:"stable_audio_3_medium_f16",display_name:"Stable Audio 3 Medium F16 GGUF",format:"gguf",precision:"f16",target_directory:"Stable-Audio-3-Medium-GGUF",files:["Stable-Audio-3-Medium-GGUF/stable-audio-3-medium-f16.gguf"],strip_prefix:"Stable-Audio-3-Medium-GGUF"},{id:"stable_audio_3_small_music_q8_0",display_name:"Stable Audio 3 Small Music Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Stable-Audio-3-Small-Music-GGUF",files:["Stable-Audio-3-Small-Music-GGUF/stable-audio-3-small-music-q8_0.gguf"],strip_prefix:"Stable-Audio-3-Small-Music-GGUF"},{id:"stable_audio_3_small_music_f16",display_name:"Stable Audio 3 Small Music F16 GGUF",format:"gguf",precision:"f16",target_directory:"Stable-Audio-3-Small-Music-GGUF",files:["Stable-Audio-3-Small-Music-GGUF/stable-audio-3-small-music-f16.gguf"],strip_prefix:"Stable-Audio-3-Small-Music-GGUF"},{id:"stable_audio_3_small_sfx_q8_0",display_name:"Stable Audio 3 Small SFX Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Stable-Audio-3-Small-SFX-GGUF",files:["Stable-Audio-3-Small-SFX-GGUF/stable-audio-3-small-sfx-q8_0.gguf"],strip_prefix:"Stable-Audio-3-Small-SFX-GGUF"},{id:"stable_audio_3_small_sfx_f16",display_name:"Stable Audio 3 Small SFX F16 GGUF",format:"gguf",precision:"f16",target_directory:"Stable-Audio-3-Small-SFX-GGUF",files:["Stable-Audio-3-Small-SFX-GGUF/stable-audio-3-small-sfx-f16.gguf"],strip_prefix:"Stable-Audio-3-Small-SFX-GGUF"},{id:"stable_audio_3_medium_safetensors",display_name:"Stable Audio 3 Medium Safetensors",format:"safetensors",precision:"native",target_directory:"stable-audio-3-medium",files:["model_config.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"stabilityai/stable-audio-3-medium",gated:!0}},{id:"stable_audio_3_small_music_safetensors",display_name:"Stable Audio 3 Small Music Safetensors",format:"safetensors",precision:"native",target_directory:"stable-audio-3-small-music",files:["model_config.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"stabilityai/stable-audio-3-small-music",gated:!0}},{id:"stable_audio_3_small_sfx_safetensors",display_name:"Stable Audio 3 Small SFX Safetensors",format:"safetensors",precision:"native",target_directory:"stable-audio-3-small-sfx",files:["model_config.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"stabilityai/stable-audio-3-small-sfx",gated:!0}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{model_config:"model:model_config.json",t5_config:"model:t5gemma-b-b-ul2/config.json",t5_tokenizer_json:"model:t5gemma-b-b-ul2/tokenizer.json",t5_tokenizer_model:"model:t5gemma-b-b-ul2/tokenizer.model",t5_tokenizer_config:"model:t5gemma-b-b-ul2/tokenizer_config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},t5_weights:{source:"weights:",prefix:"t5_weights"}}},{format:"safetensors",roots:{model:".",t5:"t5gemma-b-b-ul2"},files:{model_config:"model:model_config.json",t5_config:"t5:config.json",t5_tokenizer_json:"t5:tokenizer.json",t5_tokenizer_model:"t5:tokenizer.model",t5_tokenizer_config:"t5:tokenizer_config.json"},tensors:{model_weights:"model:model.safetensors",t5_weights:"t5:model.safetensors"}}]},r8={family:"supertonic",display_name:"Supertonic 3",description:"Supertone on-device TTS model designed for fast local speech synthesis across 31 languages, with preset voices and compact deployment for browser, mobile, and desktop applications.",category:"tts",status:"supported",tasks:["tts"],modes:["offline","streaming"],languages:["en","ko","ja","ar","bg","cs","da","de","el","es","et","fi","fr","hi","hr","hu","id","it","lt","lv","nl","pl","pt","ro","ru","sk","sl","sv","tr","uk","vi"],capabilities:{tts:["built_in_voices","long_form"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"voice_id",type:"enum",values:["M1","M2","M3","M4","M5","F1","F2","F3","F4","F5"],default:"M1",description:"Built-in voice preset; --voice-id takes precedence.",required:!1},{name:"num_inference_steps",type:"int",min:1,default:8,description:"Flow denoising steps.",required:!1},{name:"speed",type:"float",min:0,default:1.05,description:"Positive speech speed multiplier; voice.style.speaking_rate takes precedence.",required:!1},{name:"seed",type:"int",min:0,max:4294967295,default:1234,description:"Noise seed.",required:!1},{name:"text_chunk_size",type:"int",description:"Framework text chunk size; defaults to 120 for Korean/Japanese, otherwise 300.",required:!1},{name:"text_chunk_mode",type:"enum",values:["default","tag_aware","japanese","endline"],default:"default",description:"Framework text chunking mode.",required:!1}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",default:"native",description:"Weight storage type.",required:!1},{name:"style_cache_slots",type:"int",min:0,default:4,description:"Cached preset style slots; zero disables reuse.",required:!1}],load:[]},ui:{recommended_package:"supertonic_3_orig",tags:["TTS","GGUF","Stream"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"supertonic_3_q8_0",display_name:"Supertonic 3 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Supertonic-3-GGUF",files:["Supertonic-3-GGUF/supertonic-3-q8_0.gguf"],strip_prefix:"Supertonic-3-GGUF"},{id:"supertonic_3_f16",display_name:"Supertonic 3 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Supertonic-3-GGUF",files:["Supertonic-3-GGUF/supertonic-3-f16.gguf"],strip_prefix:"Supertonic-3-GGUF"},{id:"supertonic_3_orig",display_name:"Supertonic 3 Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Supertonic-3-GGUF",files:["Supertonic-3-GGUF/supertonic-3-orig.gguf"],strip_prefix:"Supertonic-3-GGUF"},{id:"supertonic_3_safetensors",display_name:"Supertonic 3 Safetensors",format:"safetensors",precision:"native",target_directory:"supertonic-3",files:["config/tts.json","config/unicode_indexer.json","ggml/supertonic.safetensors","voice_styles/F1.json","voice_styles/F2.json","voice_styles/F3.json","voice_styles/F4.json","voice_styles/F5.json","voice_styles/M1.json","voice_styles/M2.json","voice_styles/M3.json","voice_styles/M4.json","voice_styles/M5.json"],download:{kind:"huggingface_snapshot",repo:"mlx-community/supertonic-3-mlx"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tts_config:"model:config/tts.json",unicode_indexer:"model:config/unicode_indexer.json",voice_style_F1:"model:voice_styles/F1.json",voice_style_F2:"model:voice_styles/F2.json",voice_style_F3:"model:voice_styles/F3.json",voice_style_F4:"model:voice_styles/F4.json",voice_style_F5:"model:voice_styles/F5.json",voice_style_M1:"model:voice_styles/M1.json",voice_style_M2:"model:voice_styles/M2.json",voice_style_M3:"model:voice_styles/M3.json",voice_style_M4:"model:voice_styles/M4.json",voice_style_M5:"model:voice_styles/M5.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{tts_config:"model:config/tts.json",unicode_indexer:"model:config/unicode_indexer.json",voice_style_F1:"model:voice_styles/F1.json",voice_style_F2:"model:voice_styles/F2.json",voice_style_F3:"model:voice_styles/F3.json",voice_style_F4:"model:voice_styles/F4.json",voice_style_F5:"model:voice_styles/F5.json",voice_style_M1:"model:voice_styles/M1.json",voice_style_M2:"model:voice_styles/M2.json",voice_style_M3:"model:voice_styles/M3.json",voice_style_M4:"model:voice_styles/M4.json",voice_style_M5:"model:voice_styles/M5.json"},tensors:{weights:"model:ggml/supertonic.safetensors"}}]},o8={schema_version:1,family:"tf_gridnet",display_name:"TF-GridNet",description:"Time-frequency GridNet overlapping speech separation.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Separation window duration; zero selects whole-file inference. When enabled, the chunk sample count must exceed n_fft/2.",min:0,default:2.4,required:!1},{name:"audio_chunk_overlap_sec",type:"float",description:"Nonnegative overlap used to match speaker order and stitch adjacent windows. When chunking is enabled, overlap sample count must be > 0 and smaller than the chunk. Ignored for whole-file inference.",min:0,default:1.6,required:!1},{name:"normalize_output",type:"bool",description:"Normalize each separated waveform to a peak of 0.9, as in ESPnet's example.",default:!0,required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"]}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"tf_gridnet_wsj0_2mix_f32",display_name:"TF-GridNet WSJ0-2mix F32",default:!0,format:"gguf",precision:"f32",target_directory:"TF-GridNet-GGUF",files:["TF-GridNet-GGUF/tf-gridnet-wsj0-2mix-f32.gguf"],strip_prefix:"TF-GridNet-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/tf_gridnet.md"],recommended_package:"tf_gridnet_wsj0_2mix_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"},frontend:{source:"weights:",prefix:"frontend"}}}]},l8={family:"tone_color_vc",schema_version:1,display_name:"Tone Color VC",description:"Standalone voice conversion with a reference speaker recording.",category:"voice_conversion",status:"experimental",tasks:["vc"],modes:["offline"],languages:["language_agnostic"],capabilities:{vc:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"seed",type:"int",required:!1,description:"Random seed for posterior sampling; -1 chooses a random seed.",default:1234,min:-1},{name:"temperature",type:"float",required:!1,description:"Posterior sampling noise scale.",default:.3,min:0}],session:[{name:"exec_plan",type:"string",required:!1,default:"{}",description:"Component execution plan: decoder accepts default/ggml/neon. Default retains the session backend. The complete NEON HiFi-GAN decoder requires a CPU session and ENGINE_ENABLE_NEON=ON on AArch64. No artifacts or params."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"tone_color_vc_f32",display_name:"Tone Color VC F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"Tone-Color-VC-GGUF",files:["Tone-Color-VC-GGUF/tone-color-vc-f32.gguf"],strip_prefix:"Tone-Color-VC-GGUF"},{id:"tone_color_vc_f16",display_name:"Tone Color VC F16 GGUF",default:!1,format:"gguf",precision:"f16",target_directory:"Tone-Color-VC-GGUF",files:["Tone-Color-VC-GGUF/tone-color-vc-f16.gguf"],strip_prefix:"Tone-Color-VC-GGUF"}],dependencies:[],ui:{recommended_package:"tone_color_vc_f32",tags:["VC","GGUF"],docs:["docs/models/tone_color_vc.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},c8={schema_version:1,family:"universr",display_name:"UniverSR",description:"Complex-STFT flow-matching audio super-resolution to 48 kHz.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{s2s:["audio_enhancement"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Independent audio segments concatenated after inference; zero processes the whole file. Chunking changes global normalization context.",min:0,default:0,required:!1},{name:"input_sample_rate",type:"int",description:"Effective input bandwidth sample rate: 8000, 12000, 16000, or 24000 Hz.",required:!1},{name:"sampler_mode",type:"enum",description:"Fixed-step ODE integration method.",values:["euler","midpoint","rk4"],default:"midpoint",required:!1},{name:"num_inference_steps",type:"int",description:"ODE integration steps.",min:1,default:4,required:!1},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; zero disables guidance.",min:0,default:1.5,required:!1},{name:"seed",type:"int",description:"Initial flow noise seed.",min:0,default:42,required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; native preserves the GGUF tensor types.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"]}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"universr_audio_orig",display_name:"UniverSR Audio GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"UniverSR-GGUF",files:["UniverSR-GGUF/universr-audio-orig.gguf"],strip_prefix:"UniverSR-GGUF"},{id:"universr_speech_orig",display_name:"UniverSR Speech GGUF F32",format:"gguf",precision:"f32",target_directory:"UniverSR-GGUF",files:["UniverSR-GGUF/universr-speech-orig.gguf"],strip_prefix:"UniverSR-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:[],recommended_package:"universr_audio_orig"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"},frontend:{source:"weights:",prefix:"frontend"}}}]},d8={family:"vevo2",display_name:"Vevo2",description:"Unified controllable framework for English and Chinese speech and singing voice generation, voice conversion, and editing, with tokenizers that disentangle content, prosody, melody, style, and timbre.",category:"voice_conversion",status:"supported",tasks:["tts","music","vc","edit","svc","s2s"],modes:["offline"],languages:["en","zh"],capabilities:{music:["lyrics"],vc:["speaker_reference"],svc:["speaker_reference","singing"],s2s:["speaker_reference"],edit:["prompt_editing"]},runtime:{tags:["gguf"]},options:{request:[{name:"route",type:"enum",description:"Generation route; omitted selects the task default.",required:!1,values:["zero_shot_tts","text_to_singing","svs","style_preserved_vc","style_preserved_svc","style_converted_vc","style_converted_svc","editing","singing_style_conversion","humming_to_singing","instrument_to_singing"]},{name:"source_audio",type:"audio_path",description:"Source audio file for conversion or editing.",required:!1},{name:"target_voice",type:"audio_path",description:"Target voice audio file; overrides structured speaker audio.",required:!1},{name:"prosody_ref",type:"audio_path",description:"Prosody or melody reference audio file.",required:!1},{name:"style_ref",type:"audio_path",description:"Style reference audio file.",required:!1},{name:"target_text",type:"string",description:"Text or lyrics; overrides structured text input.",required:!1},{name:"style_ref_text",type:"string",description:"Style-reference transcript; reference_text is also accepted.",required:!1},{name:"use_prosody_code",type:"bool",description:"Use prosody codes; default depends on route and requires prosody audio when enabled.",required:!1},{name:"use_pitch_shift",type:"bool",description:"Align reference pitch to the target voice; default depends on route.",required:!1},{name:"source_shift_steps",type:"int",description:"Manual source reference pitch shift in semitones.",required:!1,default:0},{name:"prosody_shift_steps",type:"int",description:"Manual prosody reference pitch shift in semitones.",required:!1,default:0},{name:"style_shift_steps",type:"int",description:"Manual style reference pitch shift in semitones.",required:!1,default:0},{name:"duration_sec",type:"float",description:"Rescale prosody-code conditioning to this duration; not a general output-length limit. Legacy target_duration_seconds is accepted.",required:!1},{name:"reference_duration_sec",type:"float",description:"Trim target voice reference before conditioning. Legacy reference_duration_seconds is accepted.",required:!1,min:0},{name:"temperature",type:"float",description:"Positive AR sampling temperature; default comes from the checkpoint.",required:!1},{name:"top_k",type:"int",description:"AR top-k sampling; default comes from the checkpoint.",required:!1},{name:"top_p",type:"float",description:"AR nucleus sampling; default comes from the checkpoint.",required:!1},{name:"repetition_penalty",type:"float",description:"Positive AR repetition penalty; default comes from the checkpoint.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated AR tokens.",required:!1,min:1,default:500},{name:"num_inference_steps",type:"int",description:"Flow-matching denoising steps.",required:!1,min:1,default:32},{name:"seed",type:"int",description:"Sampling seed; random when omitted.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Character budget per text chunk.",required:!1,min:1,default:128},{name:"audio_chunk_mode",type:"enum",description:"Source-audio chunking for style_preserved_vc/svc requires audio_chunk_duration_sec. Auto uses fixed chunks; none disables chunking.",required:!1,values:["auto","fixed","none"],default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Source-audio chunk duration for style_preserved_vc/svc; zero or omitted keeps one-shot processing.",required:!1,min:0},{name:"cross_fade_duration_sec",type:"float",description:"Source chunk overlap and output crossfade; must be smaller than chunk duration.",required:!1,default:1}],session:[{name:"weight_type",type:"enum",description:"Shared matmul storage override; omitted preserves component defaults.",required:!1,values:["native","f32","f16","bf16","q8_0"]},{name:"conv_weight_type",type:"enum",description:"Shared convolution storage override; omitted preserves native storage.",required:!1,values:["native","f32","f16"]}],load:[{name:"whisper_model_path",type:"path",description:"External Whisper model directory for feature extraction when not bundled.",required:!1}]},ui:{recommended_package:"vevo2_q8_0",tags:["TTS","Music","VC","Edit","GGUF"],docs:["docs/models/vevo2.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"vevo2_q8_0",display_name:"Vevo2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Vevo2-GGUF",files:["Vevo2-GGUF/vevo2-q8_0.gguf"],strip_prefix:"Vevo2-GGUF"},{id:"vevo2_f16",display_name:"Vevo2 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Vevo2-GGUF",files:["Vevo2-GGUF/vevo2-f16.gguf"],strip_prefix:"Vevo2-GGUF"},{id:"vevo2_orig",display_name:"Vevo2 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"Vevo2-GGUF",files:["Vevo2-GGUF/vevo2-orig.gguf"],strip_prefix:"Vevo2-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{ar_config:"model:contentstyle_modeling/posttrained/config.json",ar_amphion_config:"model:contentstyle_modeling/posttrained/amphion_config.json",ar_generation_config:"model:contentstyle_modeling/posttrained/generation_config.json",ar_tokenizer_config:"model:contentstyle_modeling/posttrained/tokenizer_config.json",ar_tokenizer_json:"model:contentstyle_modeling/posttrained/tokenizer.json",ar_vocab:"model:contentstyle_modeling/posttrained/vocab.json",ar_merges:"model:contentstyle_modeling/posttrained/merges.txt",ar_added_tokens:"model:contentstyle_modeling/posttrained/added_tokens.json",ar_special_tokens:"model:contentstyle_modeling/posttrained/special_tokens_map.json",fm_config:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa/config.json",fm_text_config:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/config.json",vocoder_config:"model:vocoder/config.json",whisper_config:"model:whisper-medium/config.json"},tensors:{content_style_tokenizer_weights:{source:"weights:",prefix:"content_style_tokenizer_weights"},prosody_tokenizer_weights:{source:"weights:",prefix:"prosody_tokenizer_weights"},ar_weights:{source:"weights:",prefix:"ar_weights"},fm_weights:{source:"weights:",prefix:"fm_weights"},fm_whisper_stats:{source:"weights:",prefix:"fm_whisper_stats"},fm_text_weights:{source:"weights:",prefix:"fm_text_weights"},fm_text_whisper_stats:{source:"weights:",prefix:"fm_text_whisper_stats"},vocoder_weights_0:{source:"weights:",prefix:"vocoder_weights_0"},vocoder_weights_1:{source:"weights:",prefix:"vocoder_weights_1"},vocoder_weights_2:{source:"weights:",prefix:"vocoder_weights_2"},whisper_weights:{source:"weights:",prefix:"whisper_weights"}}},{format:"safetensors",roots:{model:".",whisper:"../whisper-medium"},files:{ar_config:"model:contentstyle_modeling/posttrained/config.json",ar_amphion_config:"model:contentstyle_modeling/posttrained/amphion_config.json",ar_generation_config:"model:contentstyle_modeling/posttrained/generation_config.json",ar_tokenizer_config:"model:contentstyle_modeling/posttrained/tokenizer_config.json",ar_tokenizer_json:"model:contentstyle_modeling/posttrained/tokenizer.json",ar_vocab:"model:contentstyle_modeling/posttrained/vocab.json",ar_merges:"model:contentstyle_modeling/posttrained/merges.txt",ar_added_tokens:"model:contentstyle_modeling/posttrained/added_tokens.json",ar_special_tokens:"model:contentstyle_modeling/posttrained/special_tokens_map.json",fm_config:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa/config.json",fm_text_config:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/config.json",vocoder_config:"model:vocoder/config.json",whisper_config:"whisper:config.json"},tensors:{content_style_tokenizer_weights:"model:tokenizer/contentstyle_fvq16384_12.5hz/model.safetensors",prosody_tokenizer_weights:"model:tokenizer/prosody_fvq512_6.25hz/model.safetensors",ar_weights:"model:contentstyle_modeling/posttrained/model.safetensors",fm_weights:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa/model.safetensors",fm_whisper_stats:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa/whisper_stats.safetensors",fm_text_weights:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/model.safetensors",fm_text_whisper_stats:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/whisper_stats.safetensors",vocoder_weights_0:"model:vocoder/model.safetensors",vocoder_weights_1:"model:vocoder/model_1.safetensors",vocoder_weights_2:"model:vocoder/model_2.safetensors",whisper_weights:"whisper:model.safetensors"}}]},u8={schema_version:1,family:"vibeasr",display_name:"VibeVoice-ASR-BitNet",description:"VibeASR.cpp's CPU-first VibeVoice ASR port: an INT8 (I8_S) audio VAE encoder feeding a ternary (I2_S) Qwen2 decoder, ported to audio.cpp.",category:"asr",status:"community",tasks:["asr"],modes:["offline"],languages:["en","zh","fr","it","ko","pt","vi"],capabilities:{},options:{request:[{name:"output_format",type:"enum",description:"Prompt suffix asked of the decoder: plain transcription text, or JSON rows with Start/End/Speaker/Content.",values:["text","json"],required:!1,default:"text"},{name:"context",type:"string",description:"Extra context injected into the prompt (names, jargon) to bias the transcription.",required:!1,default:""},{name:"max_tokens",type:"int",description:"Cap on decoded tokens for one request.",required:!1,min:1,default:1024}],session:[{name:"encoder_graph_arena_mb",type:"int",description:"VAE encoder graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:64},{name:"prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:256},{name:"decode_graph_arena_mb",type:"int",description:"Decoder single-step graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:256}],load:[]},runtime:{tags:["gguf","cpu"]},packages:[{id:"vibeasr_bitnet_i2_s",display_name:"VibeVoice-ASR-BitNet I8_S encoder + I2_S decoder",description:"Upstream VibeASR.cpp GGUF package. The two GGUFs carry the VibeASR ggml fork's type ids and need one pass of tools/community_models/convert_vibeasr_gguf.py --in-place before audio.cpp can load them.",default:!0,format:"gguf",precision:"native",target_directory:"VibeVoice-ASR-BitNet",files:["vibeasr-vae-encoder-i8_s.gguf","vibeasr-lm-i2_s-embed-q6_k.gguf","tokenizer.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"microsoft/VibeVoice-ASR-BitNet",revision:"main",gated:!1}}],dependencies:[],ui:{recommended_package:"vibeasr_bitnet_i2_s",tags:["ASR","GGUF"],docs:["docs/models/vibeasr.md"],summary:"INT8 encoder plus ternary Qwen2 decoder transcription on CPU."},sources:[{format:"gguf",roots:{model:"."},files:{tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{},tensors:{vae_weights:"model:vibeasr-vae-encoder-i8_s.gguf",lm_weights:"model:vibeasr-lm-i2_s-embed-q6_k.gguf"}}]},f8={family:"vibevoice",display_name:"VibeVoice",description:"Microsoft long-form multi-speaker TTS model for expressive conversational audio such as podcasts, supporting up to 90 minutes of speech with as many as four speakers.",category:"tts",status:"supported",tasks:["tts"],modes:["offline","streaming"],languages:["en","zh"],options:{request:[{name:"voice_samples",type:"string",description:"Comma-separated reference WAV paths ordered by speaker ID; cannot be combined with voice_ref.",required:!1},{name:"num_inference_steps",type:"int",description:"Diffusion steps; defaults to the checkpoint configuration.",required:!1,min:1},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale.",required:!1,min:0,default:1.3},{name:"max_length_times",type:"float",description:"Positive generation length multiplier.",required:!1,default:2},{name:"max_tokens",type:"int",description:"Maximum generated tokens; zero uses the model-derived limit.",required:!1,min:0,default:0},{name:"do_sample",type:"bool",description:"Enable sampling.",required:!1,default:!1},{name:"temperature",type:"float",description:"Positive sampling temperature.",required:!1,default:1},{name:"top_k",type:"int",description:"Top-k sampling limit; zero disables filtering.",required:!1,min:0,default:50},{name:"top_p",type:"float",description:"Nucleus probability in (0, 1].",required:!1,default:1},{name:"seed",type:"int",description:"Sampling seed.",required:!1,min:0,max:4294967295,default:1234},{name:"prompt_noise_file",type:"path",description:"F32 prompt acoustic noise file.",required:!1},{name:"diffusion_noise_file",type:"path",description:"F32 initial diffusion noise file.",required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"tokenizer_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"connector_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"decoder_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"diffusion_head_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"lora",type:"path",description:"Decoder adapter file or PEFT directory applied when creating the session; do not also supply the load option.",required:!1},{name:"lora_scale",type:"float",description:"Session adapter scale override; omitted uses lora_alpha / r. Must be strictly positive when an adapter is supplied.",required:!1}],load:[{name:"lora",type:"path",description:"Decoder adapter file or PEFT directory, merged at load time.",required:!1},{name:"lora_scale",type:"float",description:"LoRA scale override; omitted uses lora_alpha / r. Must be strictly positive when an adapter is supplied.",required:!1}]},capabilities:{tts:["multi_speaker","long_form"]},runtime:{tags:["gguf"]},ui:{recommended_package:"vibevoice_1_5b_q8_0",tags:["TTS","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"vibevoice_1_5b_q8_0",display_name:"VibeVoice 1.5B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VibeVoice-1.5B-GGUF",files:["VibeVoice-1.5B-GGUF/vibevoice-1.5b-q8_0.gguf"],strip_prefix:"VibeVoice-1.5B-GGUF"},{id:"vibevoice_1_5b_bf16",display_name:"VibeVoice 1.5B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VibeVoice-1.5B-GGUF",files:["VibeVoice-1.5B-GGUF/vibevoice-1.5b-bf16.gguf"],strip_prefix:"VibeVoice-1.5B-GGUF"},{id:"vibevoice_7b_q8_0",display_name:"VibeVoice 7B Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"VibeVoice-7B-GGUF",files:["vibevoice-7b-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/VibeVoice-7B-GGUF",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",preprocessor_config:"model:preprocessor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},tensors:{model_weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",preprocessor_config:"model:preprocessor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},tensors:{model_weights:"model:model.safetensors.index.json"}}]},m8={family:"vibevoice_asr",display_name:"VibeVoice ASR",description:"Microsoft long-form speech-to-text model that processes up to 60 minutes of audio in one pass and produces structured transcripts with speakers, timestamps, content, hotwords, and 50+ language support.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["auto","51 languages"],options:{request:[{name:"context",type:"string",description:"Context hint; context_info is also accepted.",required:!1},{name:"language",type:"string",description:"ASR language label.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated text tokens.",required:!1,min:1,default:32768},{name:"temperature",type:"float",description:"Sampling temperature; zero uses deterministic decoding.",required:!1,min:0,default:0},{name:"top_p",type:"float",description:"Nucleus probability in (0, 1].",required:!1,default:1},{name:"top_k",type:"int",description:"Top-k sampling limit; zero disables filtering.",required:!1,min:0,default:50},{name:"num_beams",type:"int",description:"Deterministic beam search width.",required:!1,min:1,default:1},{name:"repetition_penalty",type:"float",description:"Positive generation repetition penalty.",required:!1,default:1},{name:"seed",type:"int",description:"Acoustic latent sampling seed.",required:!1,min:0,default:1234},{name:"audio_chunk_mode",type:"enum",description:"Pre-encoder audio splitting; auto uses fixed chunks.",required:!1,values:["auto","fixed","vad","none"],default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Positive audio chunk duration in seconds.",required:!1,default:1200}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"tokenizer_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"connector_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"decoder_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"tokenizer_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"connector_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128},{name:"decoder_weight_context_mb",type:"int",description:"Decoder weight context in MiB; 4096 on 64-bit builds, 1024 on 32-bit builds.",required:!1,min:1},{name:"max_history_steps",type:"int",description:"Maximum retained decoder history; zero uses the model limit. Cannot exceed checkpoint position capacity; zero uses that capacity.",required:!1,default:0,min:0},{name:"vad_model_path",type:"path",description:"Silero VAD model used with audio_chunk_mode=vad.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},capabilities:{asr:["segments","speaker_turns","vad_chunking"]},runtime:{tags:["gguf"]},ui:{recommended_package:"vibevoice_asr_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"vibevoice_asr_q8_0",display_name:"VibeVoice ASR Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VibeVoice-ASR-GGUF",files:["VibeVoice-ASR-GGUF/vibevoice-asr-q8_0.gguf"],strip_prefix:"VibeVoice-ASR-GGUF"},{id:"vibevoice_asr_f16",display_name:"VibeVoice ASR F16 GGUF",format:"gguf",precision:"f16",target_directory:"VibeVoice-ASR-GGUF",files:["VibeVoice-ASR-GGUF/vibevoice-asr-f16.gguf"],strip_prefix:"VibeVoice-ASR-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{model_weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{model_weights:"model:model.safetensors.index.json"}}]},p8={family:"vibevoice_asr_streaming",display_name:"VibeVoice ASR Streaming",description:"Microsoft VibeVoice ASR Streaming models (7B and 1.5B) for chunked streaming speech-to-text with persistent decoder state.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["en","zh","es","pt","de","ja","ko","fr","ru","it"],capabilities:{asr:["speaker_turns"]},options:{request:[{name:"language",type:"string",description:"ASR language label; empty unless provided in the request.",required:!1,default:""},{name:"context",type:"string",description:"Extra context or hotwords injected into the streaming prompt.",required:!1,default:""},{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens per chunk.",required:!1,min:1,default:256},{name:"temperature",type:"float",description:"Sampling temperature; 0 uses deterministic decoding.",required:!1,min:0,default:0},{name:"top_p",type:"float",description:"Nucleus sampling probability.",required:!1,min:.001,max:1,default:1},{name:"top_k",type:"int",description:"Top-k sampling limit; default 50. Zero disables top-k filtering.",required:!1,min:0,default:50},{name:"num_beams",type:"int",description:"Compatibility-only; this checkpoint ignores beam search and uses its incremental decoder.",required:!1,min:1,default:1},{name:"repetition_penalty",type:"float",description:"Generation repetition penalty.",required:!1,min:.001,default:1},{name:"seed",type:"int",description:"Acoustic latent sampling seed; default 1234.",required:!1,default:1234},{name:"audio_chunk_mode",type:"enum",description:"Compatibility-only; ignored in offline and streaming modes. Processor chunk/lookahead settings determine segmentation.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Compatibility-only; ignored in offline and streaming modes. Processor settings determine segmentation.",required:!1,min:.001,default:1200}],session:[{name:"weight_type",type:"enum",description:"Shared component weight storage.",required:!1,preset:"weight_type_full",default:"native"},{name:"tokenizer_weight_type",type:"enum",description:"Speech tokenizer weight storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"connector_weight_type",type:"enum",description:"Speech connector weight storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"decoder_weight_type",type:"enum",description:"Text decoder weight storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"tokenizer_weight_context_mb",type:"int",description:"Speech tokenizer weight metadata context. Size in MiB; must be positive.",required:!1,min:1,default:512},{name:"connector_weight_context_mb",type:"int",description:"Speech connector weight metadata context. Size in MiB; must be positive.",required:!1,min:1,default:128},{name:"decoder_weight_context_mb",type:"int",description:"Text decoder weight metadata context. Default 4096 on 64-bit builds and 1024 on 32-bit builds. Size in MiB; must be positive.",required:!1,min:1},{name:"max_history_steps",type:"int",description:"Decoder history limit; zero uses the model position capacity. Must be nonnegative and not exceed that capacity.",required:!1,min:0,default:0}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"vibevoice_asr_streaming_7b_q8_0",tags:["ASR","Streaming","GGUF"],docs:["docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/VibeVoice-ASR-Streaming-7B-GGUF",revision:"main",gated:!1}},packages:[{id:"vibevoice_asr_streaming_7b_q8_0",display_name:"VibeVoice ASR Streaming 7B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VibeVoice-ASR-Streaming-7B-GGUF",files:["vibevoice-asr-streaming-7b-q8_0.gguf"]},{id:"vibevoice_asr_streaming_7b_bf16",display_name:"VibeVoice ASR Streaming 7B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VibeVoice-ASR-Streaming-7B-GGUF",files:["vibevoice-asr-streaming-7b-bf16.gguf"]},{id:"vibevoice_asr_streaming_7b_q4_k",display_name:"VibeVoice ASR Streaming 7B Q4_K GGUF",format:"gguf",precision:"q4_k",target_directory:"VibeVoice-ASR-Streaming-7B-GGUF",files:["vibevoice-asr-streaming-7b-q4_k.gguf"]},{id:"vibevoice_asr_streaming_1_5b_q8_0",display_name:"VibeVoice ASR Streaming 1.5B Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"VibeVoice-ASR-Streaming-1.5B-GGUF",files:["vibevoice-asr-streaming-1.5b-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"christopherthompson81/VibeVoice-ASR-Streaming-1.5B-GGUF",revision:"main",gated:!1}},{id:"vibevoice_asr_streaming_1_5b_bf16",display_name:"VibeVoice ASR Streaming 1.5B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VibeVoice-ASR-Streaming-1.5B-GGUF",files:["vibevoice-asr-streaming-1.5b-bf16.gguf"],download:{kind:"huggingface_snapshot",repo:"christopherthompson81/VibeVoice-ASR-Streaming-1.5B-GGUF",revision:"main",gated:!1}},{id:"vibevoice_asr_streaming_1_5b_q4_k",display_name:"VibeVoice ASR Streaming 1.5B Q4_K GGUF",format:"gguf",precision:"q4_k",target_directory:"VibeVoice-ASR-Streaming-1.5B-GGUF",files:["vibevoice-asr-streaming-1.5b-q4_k.gguf"],download:{kind:"huggingface_snapshot",repo:"christopherthompson81/VibeVoice-ASR-Streaming-1.5B-GGUF",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{model_weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{model_weights:"model:model.safetensors.index.json"}}]},g8={family:"vieneu_v3_turbo",display_name:"VieNeu-TTS v3 Turbo",description:"On-device Vietnamese/English TTS (48 kHz) with instant voice cloning from 3-5 s of reference audio, by Phạm Nguyễn Ngọc Bảo (pnnbao97). Takes SEA-G2P phonemes as text input.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline"],languages:["vi","en"],capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"auto_frame_cap",type:"bool",description:"Cap the generation budget using the chunk's phoneme count. Legacy frame_cap remains accepted.",required:!1,default:!0},{name:"text_chunk_min_size",type:"int",description:"Phoneme-string chunks shorter than this character count join a neighbour. Legacy text_chunk_min remains accepted.",required:!1,default:20},{name:"speaker_embedding_file",type:"path",description:"File containing a comma-separated 192-dimensional speaker embedding.",required:!1},{name:"speaker_embedding",type:"string",description:"Inline comma-separated 192-dimensional speaker embedding.",required:!1},{name:"reference_codes",type:"string",description:"Pre-encoded reference codes in row-major order, comma- or space-separated; codebooks per frame come from the checkpoint.",required:!1},{name:"reference_codes_file",type:"path",description:"Pre-encoded reference codes, one frame per line. Replaces audio encoding and can be used with a speaker embedding instead of reference audio.",required:!1},{name:"x_vector_only_mode",type:"bool",description:"Clone using only the speaker embedding. Defaults to true for embedding-only input, otherwise false.",required:!1},{name:"encode_reference_only",type:"bool",description:"Encode reference audio and return an acoustic-tokens artifact without generating speech.",required:!1,default:!1},{name:"max_tokens",type:"int",description:"Maximum generated frames per text chunk; uses the checkpoint max_new_tokens setting (300 fallback). Each frame represents 80 ms.",required:!1,min:1},{name:"do_sample",type:"bool",description:"Enable sampling for all codebooks unless subtalker_do_sample overrides later codebooks.",required:!1,default:!0},{name:"temperature",type:"float",description:"Sampling temperature for all codebooks unless overridden for the subtalker.",required:!1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling limit for all codebooks unless overridden for the subtalker.",required:!1,default:25},{name:"top_p",type:"float",description:"Nucleus cutoff within top-k candidates, unless overridden for the subtalker.",required:!1,default:.95},{name:"repetition_penalty",type:"float",description:"Repetition penalty applied independently to each codebook.",required:!1,default:1.2},{name:"repetition_window",type:"int",description:"Recent frames remembered per codebook for repetition penalties; zero uses all history.",required:!1,min:0,default:64},{name:"babble_retries",type:"int",description:"Regenerations for short chunks that exceed their text; zero disables the guard.",required:!1,min:0,default:2},{name:"subtalker_temperature",type:"float",description:"Temperature override for later codebooks; omitted or negative inherits temperature.",required:!1},{name:"subtalker_top_k",type:"int",description:"Top-k override for later codebooks; omitted or negative inherits top_k.",required:!1},{name:"subtalker_top_p",type:"float",description:"Nucleus cutoff override for later codebooks; omitted or negative inherits top_p.",required:!1},{name:"subtalker_do_sample",type:"bool",description:"Sampling override for later codebooks; inherits do_sample when omitted.",required:!1},{name:"seed",type:"int",description:"Sampling seed; omitted draws a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Maximum character budget per phoneme-string chunk; must be positive.",required:!1,min:1,default:200}],session:[{name:"g2p_dict_file",type:"path",description:"SEA-G2P dictionary file (sea_g2p.bin). When set, input is Vietnamese/English text rather than precomputed phonemes.",required:!1},{name:"g2p_library",type:"path",description:"SEA-G2P shared library used with g2p_dict_file; searched by library name when omitted.",required:!1},{name:"mem_saver",type:"bool",description:"Release the talker cached-step graph after each request.",required:!1,default:!1},{name:"voice_prompt_cache_slots",type:"int",description:"Prepared voice-prompt cache slots; zero disables caching.",required:!1,min:0,default:1},{name:"weight_type",type:"enum",description:"Shared talker matmul storage.",required:!1,preset:"weight_type_full",default:"native"},{name:"conv_weight_type",type:"enum",description:"Speaker encoder convolution weight storage.",required:!1,values:["native","f32","f16"],default:"f32"},{name:"talker_weight_type",type:"enum",description:"Talker matmul storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"talker_graph_arena_mb",type:"int",description:"Talker graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:256},{name:"speech_decoder_graph_arena_mb",type:"int",description:"Codec decoder graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:32},{name:"speaker_encoder_graph_arena_mb",type:"int",description:"Speaker encoder graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:32},{name:"talker_constant_context_mb",type:"int",description:"Talker constant metadata context. Size in MiB; must be positive.",required:!1,min:1,default:4096},{name:"code_predictor_constant_context_mb",type:"int",description:"Code predictor constant metadata context. Size in MiB; must be positive.",required:!1,min:1,default:1536},{name:"speech_decoder_constant_context_mb",type:"int",description:"Codec decoder constant metadata context. Size in MiB; must be positive.",required:!1,min:1,default:1536}],load:[]},ui:{recommended_package:"vieneu_v3_turbo_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/vieneu_v3_turbo.md","docs/tts.md","docs/gguf.md"]},packages:[{id:"vieneu_v3_turbo_q8_0",display_name:"VieNeu-TTS v3 Turbo Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VieNeu-TTS-v3-Turbo-GGUF",files:["gguf/vieneu-v3-turbo-q8_0.gguf","gguf/voices/manifest.json","gguf/voices/minh_quan_pro/ref_codes.txt","gguf/voices/minh_quan_pro/speaker.emb.txt"],download:{kind:"huggingface_snapshot",repo:"pnnbao-ump/VieNeu-TTS-v3-Turbo"},strip_prefix:"gguf"},{id:"vieneu_v3_turbo_bf16",display_name:"VieNeu-TTS v3 Turbo BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VieNeu-TTS-v3-Turbo-GGUF",files:["gguf/vieneu-v3-turbo-bf16.gguf","gguf/voices/manifest.json","gguf/voices/minh_quan_pro/ref_codes.txt","gguf/voices/minh_quan_pro/speaker.emb.txt"],download:{kind:"huggingface_snapshot",repo:"pnnbao-ump/VieNeu-TTS-v3-Turbo"},strip_prefix:"gguf"},{id:"vietneu_tts_v3_turbo_q8_0",display_name:"VieNeu-TTS v3 Turbo Q8_0 GGUF (first community port, July 2026 weights)",format:"gguf",precision:"q8_0",target_directory:"VieNeu-TTS-v3-Turbo-GGUF-2026-07",files:["model.gguf"],download:{kind:"huggingface_snapshot",repo:"phuocnguyen90/VieNeu-TTS-v3-Turbo-GGUF"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",speech_tokenizer_config:"model:speech_tokenizer/config.json"},optional_files:{generation_config:"model:generation_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},speech_tokenizer_weights:{source:"weights:",prefix:"speech_tokenizer_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",speech_tokenizer_config:"model:speech_tokenizer/config.json"},optional_files:{generation_config:"model:generation_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{model_weights:"model:model.safetensors",speech_tokenizer_weights:"model:speech_tokenizer/model.safetensors"}}]},h8={schema_version:1,family:"voxcpm1",display_name:"VoxCPM1",description:"OpenBMB VoxCPM 0.5B tokenizer-free TTS model supporting short-reference voice cloning and streaming output (16kHz).",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["zh","en","ja","ko"],capabilities:{clone:["speaker_reference"]},dependencies:[],options:{request:[{name:"text_chunk_mode",type:"enum",description:"Text chunking mode; default tag_aware.",preset:"text_chunk_mode_full",required:!1,default:"tag_aware"},{name:"seed",type:"int",description:"Random seed for MiniCPM and diffusion sampling.",required:!1},{name:"max_tokens",type:"int",description:"Maximum MiniCPM output tokens; default 4096. Zero selects model max_length; negative counts are rejected.",required:!1,default:4096},{name:"min_tokens",type:"int",description:"Minimum MiniCPM output tokens before an EOS stop is honored; default 2.",required:!1,default:2},{name:"num_inference_steps",type:"int",description:"CFM diffusion sampling steps; default 10. Must be positive.",required:!1,default:10},{name:"guidance_scale",type:"float",description:"CFM classifier-free guidance rate. Must be nonnegative.",required:!1,default:2},{name:"retry_badcase",type:"bool",description:"Retry when generation is detected as a bad case; defaults to true offline and false in streaming. Streaming ignores an explicit true value with a warning.",required:!1},{name:"retry_badcase_max_times",type:"int",description:"Maximum total generation attempts when retrying bad cases, including the initial attempt; default 3. Must be positive.",required:!1,default:3},{name:"retry_badcase_ratio_threshold",type:"float",description:"Bad-case ratio threshold for retry decisions. Must be positive.",required:!1},{name:"prompt_text",type:"string",description:"Text prompt for prompt-continuation voice cloning.",required:!1},{name:"reference_text",type:"string",description:"Alias for prompt_text; text prompt for prompt-continuation voice cloning.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum characters per offline text chunk; must be positive. Does not control streaming chunk cadence.",required:!1,min:1,default:2048},{name:"language",type:"string",description:"Language hint for Chinese-script normalization; Cantonese/yue preserves Traditional characters. Inherits structured transcript or voice language when provided.",required:!1}],session:[{name:"lora",type:"path",description:"Native LoRA directory or checkpoint file with adjacent lora_config.json; merged into generator weights at session creation.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's configured alpha/r scaling; default 1.",required:!1,default:1},{name:"mem_saver",type:"bool",description:"Use tighter graph workspaces and release request runtime graphs; default false.",required:!1,default:!1},{name:"prompt_cache_slots",type:"int",description:"Prompt and prompt-audio embedding cache slots; default 1.",required:!1,default:1},{name:"weight_type",type:"enum",description:"Model weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"audiovae_weight_type",type:"enum",description:"AudioVAE weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"weight_context_mb",type:"int",description:"Model weight graph context size in MB.",required:!1},{name:"text_embedding_graph_arena_mb",type:"int",description:"Text embedding host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"lm_step_graph_arena_mb",type:"int",description:"LM step host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"projection_graph_arena_mb",type:"int",description:"Projection host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"local_encoder_graph_arena_mb",type:"int",description:"Local encoder host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"dit_graph_arena_mb",type:"int",description:"DiT estimator host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"audiovae_weight_context_mb",type:"int",description:"AudioVAE weight graph context size in MB.",required:!1},{name:"audiovae_graph_arena_mb",type:"int",description:"AudioVAE decoder host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"audiovae_encoder_graph_arena_mb",type:"int",description:"AudioVAE encoder host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"audiovae_latent_capacity",type:"int",description:"AudioVAE decoder latent frame capacity.",required:!1},{name:"audiovae_encoder_sample_capacity",type:"int",description:"AudioVAE encoder sample capacity.",required:!1}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"voxcpm1_0_5b_q8_0",tags:["TTS","Clone","GGUF","Stream"],docs:["docs/models/voxcpm1.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"voxcpm1_0_5b_q8_0",display_name:"VoxCPM 0.5B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VoxCPM1-GGUF",files:["VoxCPM1-GGUF/voxcpm-0.5b-q8_0-audiovae-f16.gguf"],strip_prefix:"VoxCPM1-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{special_tokens_map:"model:special_tokens_map.json"},tensors:{weights:{source:"weights:"},audiovae_weights:{source:"weights:"}}}]},_8={family:"voxcpm2",display_name:"VoxCPM2",description:"OpenBMB tokenizer-free TTS model supporting 30 languages and 9 Chinese dialects, with 48 kHz output, natural-language voice design, controllable short-reference voice cloning, and expressive style guidance.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["ar","my","zh","zh dialects","da","nl","en","fi","fr","de","el","he","hi","id","it","ja","km","ko","lo","ms","no","pl","pt","ru","es","sw","sv","tl","th","tr","vi"],options:{request:[{name:"min_tokens",type:"int",description:"Minimum generated audio tokens.",required:!1,min:0,default:2},{name:"max_tokens",type:"int",description:"Maximum generated audio tokens. Zero resolves to model max_length; requires min_tokens <= resolved max_tokens <= model limit.",required:!1,min:0,default:4096},{name:"num_inference_steps",type:"int",description:"Flow sampling steps. Must be positive.",required:!1,default:10},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale. Must be nonnegative.",required:!1,default:2},{name:"retry_badcase",type:"bool",description:"Retry detected bad generations. Offline only; streaming requires false.",required:!1,default:!0},{name:"retry_badcase_max_times",type:"int",description:"Total attempts including the initial attempt, not extra retries; must be positive.",required:!1,default:3},{name:"retry_badcase_ratio_threshold",type:"float",description:"Bad-case audio/text length ratio threshold. Must be positive.",required:!1,default:6},{name:"seed",type:"int",description:"Sampling seed.",required:!1,min:0,max:4294967295,default:1234},{name:"cfm_noise_file",type:"path",description:"Precomputed flow noise file.",required:!1},{name:"stream_chunk_policy",type:"enum",description:"Streaming decoder cadence: grow emits one patch first, then doubles toward stream_frames_per_event; fixed uses the configured size. Ignored offline.",required:!1,values:["grow","fixed"],default:"grow"},{name:"stream_frames_per_event",type:"int",description:"Maximum generated latent patches per streaming decoder event. Set to 1 for one-patch emission. Ignored offline.",required:!1,min:1,default:4},{name:"stream_left_context",type:"int",description:"Previous patches decoded as streaming left context.",required:!1,min:0,max:8,default:3},{name:"prompt_text",type:"string",description:"Transcript for continuation prompt audio, distinct from the base voice reference.",required:!1},{name:"chunk_strategy",type:"enum",description:"Long-form continuation or independent generation per chunk. Offline only.",required:!1,values:["continuation","stateless"],default:"continuation"},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size. Offline only.",required:!1,default:2048},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode. Offline only.",required:!1,values:["default","tag_aware","japanese","endline"],default:"tag_aware"}],session:[{name:"audiovae_tile_frames",type:"int",description:"Opt-in causal AudioVAE tiling. Maximum new latent frames per tile; zero preserves full decoding.",required:!1,default:0,min:0},{name:"perf_mode",type:"enum",description:"Opt-in packed attention and MLP projections. May change numerical results; off preserves standard execution.",required:!1,values:["off","cuda_perf"],default:"off"},{name:"lora",type:"path",description:"Native LoRA directory or checkpoint file with adjacent lora_config.json; merged into generator weights at session creation.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's configured alpha/r scaling; default 1.",required:!1,default:1},{name:"weight_type",type:"enum",description:"Language-model weight storage; does not override AudioVAE storage.",required:!1,preset:"weight_type_full"},{name:"audiovae_weight_type",type:"enum",description:"AudioVAE weight storage; defaults independently to native, not the shared weight_type.",required:!1,preset:"weight_type_full"},{name:"prompt_cache_slots",type:"int",description:"Cached encoded prompt slots; zero disables reuse.",required:!1,min:0,default:1},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs.",required:!1,default:!0},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:3072},{name:"text_embedding_graph_arena_mb",type:"int",description:"Text embedding host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:64},{name:"lm_step_graph_arena_mb",type:"int",description:"LM step host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:1024},{name:"projection_graph_arena_mb",type:"int",description:"Projection host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:256},{name:"local_encoder_graph_arena_mb",type:"int",description:"Local encoder host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:512},{name:"dit_graph_arena_mb",type:"int",description:"DiT estimator host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:1024},{name:"audiovae_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:768},{name:"audiovae_graph_arena_mb",type:"int",description:"AudioVAE decoder host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:1024},{name:"audiovae_encoder_graph_arena_mb",type:"int",description:"AudioVAE encoder host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:1024},{name:"audiovae_latent_capacity",type:"int",description:"Optional decoder graph reservation in latent frames, reused by shorter requests and doubled when exceeded; omitted builds the graph at each request's own frame count.",required:!1,min:1},{name:"exec_plan",type:"string",description:"JSON component execution plans. audiovae: impl=default/ggml; backend must match the session; no artifacts. params.threads is a nonnegative int: positive values require a CPU session and enable a dedicated AudioVAE backend with streaming decode overlap; also controls offline decoding and prompt encoding threads. Omitted/0 shares the session backend.",required:!1,default:"{}"},{name:"audiovae_encoder_sample_capacity",type:"int",description:"Reserved encoder sample capacity.",required:!1,min:1,default:24e4}],load:[]},capabilities:{clone:["speaker_reference"],design:["voice_design"]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"voxcpm2_q8_0",tags:["TTS","Clone","Design","GGUF","Stream"],docs:["docs/tts.md","docs/gguf.md","docs/models/vocalrender.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"voxcpm2_q8_0",display_name:"VoxCPM2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VoxCPM2-GGUF",files:["VoxCPM2-GGUF/voxcpm2-q8_0.gguf"],strip_prefix:"VoxCPM2-GGUF"},{id:"voxcpm2_bf16",display_name:"VoxCPM2 BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VoxCPM2-GGUF",files:["VoxCPM2-GGUF/voxcpm2-bf16.gguf"],strip_prefix:"VoxCPM2-GGUF"},{id:"voxcpm2_orig",display_name:"VoxCPM2 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"VoxCPM2-GGUF",files:["VoxCPM2-GGUF/voxcpm2-orig.gguf"],strip_prefix:"VoxCPM2-GGUF"},{id:"voxcpm2_vocalrender_pro",display_name:"VocalRender-Pro (VoxCPM2) Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"VoxCPM2-GGUF",files:["VoxCPM2-GGUF/finetune/vocalrender-pro-orig.gguf"],strip_prefix:"VoxCPM2-GGUF"},{id:"voxcpm2_safetensors",display_name:"VoxCPM2 Safetensors",format:"safetensors",precision:"native",target_directory:"VoxCPM2",files:["config.json","model.safetensors","tokenizer.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"OpenBMB/VoxCPM2"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{weights:{source:"weights:",prefix:"weights"},audiovae_weights:{source:"weights:",prefix:"audiovae_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{weights:"model:model.safetensors",audiovae_weights:"model:audiovae.safetensors"}}]},v8={family:"voxtral_realtime",display_name:"Voxtral Mini 4B Realtime",description:"Mistral 13-language realtime ASR model with a natively streaming causal audio encoder, configurable low-latency transcription delay, and accuracy competitive with offline open-source systems.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["en","zh","hi","es","ar","fr","pt","ru","de","ja","ko","it","nl"],options:{request:[{name:"max_tokens",type:"int",min:1,description:"Maximum generated transcript tokens; omitted uses the audio-derived limit. Offline decoding only; ignored by live streaming.",required:!1},{name:"do_sample",type:"bool",default:!1,description:"Sample rather than greedily decode.",required:!1},{name:"temperature",type:"float",min:0,default:1,description:"Sampling temperature; must be > 0.",required:!1},{name:"top_p",type:"float",min:0,max:1,default:1,description:"Nucleus sampling probability in (0, 1].",required:!1},{name:"top_k",type:"int",min:0,default:50,description:"Top-k sampling limit; zero disables filtering.",required:!1},{name:"seed",type:"int",min:0,default:1234,description:"Sampling seed.",required:!1}],session:[{name:"weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],default:"native",description:"Shared weight storage type.",required:!1},{name:"audio_encoder_weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],description:"Audio encoder weight storage; inherits weight_type.",required:!1},{name:"text_decoder_weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],description:"Text decoder weight storage; inherits weight_type.",required:!1},{name:"audio_encoder_graph_arena_mb",type:"int",min:1,default:512,description:"Audio encoder graph arena in MiB.",required:!1},{name:"audio_encoder_weight_context_mb",type:"int",min:1,default:128,description:"Audio encoder weight context in MiB.",required:!1},{name:"text_decoder_prefill_graph_arena_mb",type:"int",min:1,default:512,description:"Decoder prefill graph arena in MiB. Decoder uses the maximum of prefill and decode arena settings.",required:!1},{name:"text_decoder_decode_graph_arena_mb",type:"int",min:1,default:512,description:"Decoder step graph arena in MiB. Decoder uses the maximum of prefill and decode arena settings.",required:!1},{name:"text_decoder_weight_context_mb",type:"int",min:1,default:128,description:"Decoder weight context in MiB.",required:!1},{name:"stream_decode_cache_steps",type:"int",default:1024,description:"Streaming decoder cache capacity in 80 ms steps. Must be positive and no greater than checkpoint sliding_window.",required:!1},{name:"stream_batch_tokens",type:"int",min:1,default:1,description:"Audio tokens per streaming encoder forward.",required:!1}],load:[]},capabilities:{asr:["partial_results"]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"voxtral_realtime_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/models/voxtral_realtime.md","docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"voxtral_realtime_q8_0",display_name:"Voxtral Mini 4B Realtime Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Voxtral-Mini-4B-Realtime-2602-GGUF",files:["Voxtral-Mini-4B-Realtime-2602-GGUF/voxtral-mini-4b-realtime-2602-q8_0.gguf"],strip_prefix:"Voxtral-Mini-4B-Realtime-2602-GGUF"},{id:"voxtral_realtime_q4_k",display_name:"Voxtral Mini 4B Realtime Q4_K GGUF",format:"gguf",precision:"q4_k",target_directory:"Voxtral-Mini-4B-Realtime-2602-GGUF",files:["Voxtral-Mini-4B-Realtime-2602-GGUF/voxtral-mini-4b-realtime-2602-q4_k.gguf"],strip_prefix:"Voxtral-Mini-4B-Realtime-2602-GGUF"},{id:"voxtral_realtime_bf16",display_name:"Voxtral Mini 4B Realtime BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Voxtral-Mini-4B-Realtime-2602-GGUF",files:["Voxtral-Mini-4B-Realtime-2602-GGUF/voxtral-mini-4b-realtime-2602-bf16.gguf"],strip_prefix:"Voxtral-Mini-4B-Realtime-2602-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tekken:"model:tekken.json"},optional_files:{params:"model:params.json",readme:"model:README.md"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tekken:"model:tekken.json"},optional_files:{params:"model:params.json",readme:"model:README.md"},tensors:{weights:"model:model.safetensors"}}]},b8={schema_version:1,family:"voxtral_tts",display_name:"Voxtral 4B TTS",description:"Mistral's Ministral-based autoregressive and flow-matching TTS model with 20 embedded preset voices.",category:"tts",status:"supported",tasks:["tts"],modes:["offline","streaming"],languages:["en","fr","es","de","it","pt","nl","ar","hi"],runtime:{tags:["gguf"]},capabilities:{tts:["built_in_voices","long_form"]},options:{request:[{name:"voice_id",type:"enum",description:"Embedded preset voice; the released checkpoint does not contain the encoder needed for reference-audio cloning.",values:["casual_female","casual_male","cheerful_female","neutral_female","neutral_male","pt_male","pt_female","nl_male","nl_female","it_male","it_female","fr_male","fr_female","es_male","es_female","de_male","de_female","ar_male","hi_male","hi_female"],required:!1,default:"casual_male"},{name:"max_tokens",type:"int",description:"Maximum generated audio frames per text chunk; each frame represents 80 ms.",required:!1,min:1,default:2048},{name:"num_inference_steps",type:"int",description:"Euler integration steps for the per-frame acoustic flow model.",required:!1,min:1,default:7},{name:"guidance_scale",type:"float",description:"Acoustic classifier-free guidance scale; the AR backbone does not use CFG.",required:!1,min:0,default:1.2},{name:"seed",type:"int",description:"Acoustic noise seed; omitted requests select a random seed.",required:!1,min:0},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per framework long-form text chunk.",required:!1,min:1,default:300},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; native preserves the package's tensor types.",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],required:!1,default:"native"},{name:"kv_cache_type",type:"enum",description:"AR key/value cache storage type.",values:["f32","f16","bf16"],required:!1,default:"f16"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"voxtral_4b_tts_2603_bf16",display_name:"Voxtral 4B TTS 2603 BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"Voxtral-4B-TTS-2603-GGUF",files:["Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-bf16.gguf"],strip_prefix:"Voxtral-4B-TTS-2603-GGUF"},{id:"voxtral_4b_tts_2603_q8_0",display_name:"Voxtral 4B TTS 2603 Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"Voxtral-4B-TTS-2603-GGUF",files:["Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-q8_0.gguf"],strip_prefix:"Voxtral-4B-TTS-2603-GGUF"}],dependencies:[],ui:{recommended_package:"voxtral_4b_tts_2603_bf16",tags:["TTS","GGUF"],docs:["docs/models/voxtral_tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:params.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{model_weights:"weights:"}}]},y8={schema_version:1,family:"whistle_asr",display_name:"Whistle ASR",description:"Whistle offline speech recognition with FP32 GGUF weights, a GGML encoder and a host decoder.",category:"asr",status:"experimental",tasks:["asr"],modes:["offline"],languages:["en","de","fr","es","it","nl","pl"],runtime:{tags:["gguf"]},capabilities:{},options:{request:[{name:"language",type:"string",description:"Force one supported language; omit to detect the language.",required:!1}],session:[{name:"exec_plan",type:"string",description:"JSON component execution plans. Component decoder accepts impl host/neon (default host), both on CPU independently of the encoder backend. The experimental neon implementation accelerates the vocabulary projection with the framework NEON library and requires ENGINE_ENABLE_NEON=ON and AArch64 NEON. No artifacts or params are used.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"whistle_asr_f32",display_name:"Whistle ASR GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"Whistle-GGUF",files:["Whistle-GGUF/whistle-f32.gguf"],strip_prefix:"Whistle-GGUF"}],dependencies:[],ui:{tags:["ASR","GGUF"],docs:["docs/models/whistle_asr.md"],recommended_package:"whistle_asr_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_blob:"model:tokenizer.blob",mel_filterbank:"model:mel_filterbank_80.f32",hadamard_perm1:"model:hadamard_perm1.f32",hadamard_perm2:"model:hadamard_perm2.f32"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_blob:"model:tokenizer.blob",mel_filterbank:"model:mel_filterbank_80.f32",hadamard_perm1:"model:hadamard_perm1.f32",hadamard_perm2:"model:hadamard_perm2.f32"},tensors:{weights:"model:whistle.safetensors"}}]},w8={schema_version:1,family:"xtts_v2",display_name:"XTTS v2",description:"Coqui XTTS v2 cross-lingual text-to-speech with voice cloning: GPT-2 mel-code generator, perceiver conditioning resampler, HiFi-GAN decoder, and speaker encoder.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en","es","fr","de","it","pt","pl","tr","ru","nl","cs","ar","zh-cn","hu","ko","ja","hi"],capabilities:{tts:["speaker_reference"]},options:{request:[{name:"language",type:"string",description:"Source language for text conditioning (e.g. 'en'); also selects tokenizer normalization.",required:!1,default:"en"},{name:"temperature",type:"float",description:"AR sampling temperature; official default 0.75.",required:!1,min:0,default:.75},{name:"top_k",type:"int",description:"AR top-k sampling; official default 50.",required:!1,min:0,default:50},{name:"top_p",type:"float",description:"AR nucleus sampling threshold; official default 0.85.",required:!1,min:0,max:1,default:.85},{name:"repetition_penalty",type:"float",description:"AR repetition penalty; official default 10.0.",required:!1,min:1,default:10},{name:"max_mel_tokens",type:"int",description:"Maximum mel codes to generate; official default 605.",required:!1,min:1,default:605},{name:"seed",type:"int",description:"Sampling seed; omitted selects a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per framework text chunk; default 256.",required:!1,min:1,default:256},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"}],session:[{name:"conditionals_cache_slots",type:"int",description:"Prepared voice-conditioning cache slots; 0 disables caching.",required:!1,min:0,default:1}],load:[]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{vocoder:"model:xtts-v2-vocoder-f16.gguf"},tensors:{gpt_weights:{source:"weights:"},vocoder_weights:{source:"model:xtts-v2-vocoder-f16.gguf"}}}],packages:[{id:"xtts_v2_gguf_q8_0",display_name:"XTTS v2 GGUF (Q8_0)",default:!0,format:"gguf",precision:"q8_0",target_directory:"XTTS-v2-Q8",files:["q8_0/xtts-v2-gpt-q8_0.gguf","q8_0/xtts-v2-vocoder-f16.gguf","q8_0/mel_norms.bin"],download:{kind:"huggingface_snapshot",repo:"onicubag/xTTSv2-GGUF"},strip_prefix:"q8_0"},{id:"xtts_v2_gguf",display_name:"XTTS v2 GGUF (Original)",default:!1,format:"gguf",precision:"orig",target_directory:"XTTS-v2",files:["xtts-v2-gpt.gguf","xtts-v2-vocoder-f16.gguf","mel_norms.bin"],download:{kind:"huggingface_snapshot",repo:"onicubag/xTTSv2-GGUF"}},{id:"xtts_v2_gguf_q4_k_m",display_name:"XTTS v2 GGUF (Q4_K_M)",default:!1,format:"gguf",precision:"q4_k_m",target_directory:"XTTS-v2-Q4_K_M",files:["q4_k_m/xtts-v2-gpt-q4_k_m.gguf","q4_k_m/xtts-v2-vocoder-f16.gguf","q4_k_m/mel_norms.bin"],download:{kind:"huggingface_snapshot",repo:"onicubag/xTTSv2-GGUF"},strip_prefix:"q4_k_m"}],dependencies:[],ui:{tags:["TTS","Clone","GGUF"],docs:["docs/community_models/xtts_v2.md"],recommended_package:"xtts_v2_gguf_q8_0"}},k8={schema_version:1,family:"yue2",display_name:"YuE2",description:"YuE2 music generation model with symbolic ABC planning, semantic codec generation, NAR acoustic flow synthesis, and Oobleck VAE decode.",category:"audio_generation",status:"supported",tasks:["music"],modes:["offline"],languages:["en"],capabilities:{music:["lyrics","style_control"]},runtime:{tags:["gguf"]},dependencies:[],ui:{recommended_package:"yue2_main_q8_0",tags:["Music","GGUF"],docs:["docs/models/yue2.md","docs/music_generation.md","docs/gguf.md"]},options:{request:[{name:"style",type:"string",description:"Song style/tags.",required:!0},{name:"lyrics",type:"string",description:"Lyrics text. Leave empty for instrumental generation; if omitted, the CLI text input is used.",required:!1},{name:"cot",type:"enum",values:["off","melody","full"],description:"Symbolic planning route. off skips ABC generation; melody/full generate or consume ABC before music tokens.",required:!1,default:"full"},{name:"stop_after",type:"enum",values:["abc","semantic","audio"],description:"Last stage to run. abc writes the generated score only; semantic also writes the semantic token export; audio renders the full song.",required:!1,default:"audio"},{name:"abc",type:"string",description:"External ABC score text for melody/full routes.",required:!1},{name:"abc_file",type:"string",description:"Path to an external ABC score file for melody/full routes.",required:!1},{name:"semantic_prefix",type:"string",description:"JSON array of semantic codec indices to force as the start of the music stream.",required:!1},{name:"semantic_prefix_file",type:"string",description:"Path to a JSON array of semantic codec indices to force as the start of the music stream.",required:!1},{name:"nar_noise_file",type:"string",description:"Path to a raw float32 noise file for NAR generation, shaped [frames,64].",required:!1},{name:"export_semantic",type:"bool",description:"Attach the semantic token stream as a semantic artifact (JSON array of codec indices); default false.",required:!1,default:!1},{name:"guidance_scale",type:"float",description:"Semantic classifier-free guidance scale. Default follows the upstream route defaults. Omitted defaults to 1.01 with cot=off, otherwise 1.0.",required:!1,min:0,max:20},{name:"seed",type:"int",description:"Generation seed. Must be nonnegative and less than 2^63.",required:!1,min:0,default:1234},{name:"num_inference_steps",type:"int",description:"NAR midpoint ODE steps.",required:!1,min:1,default:8},{name:"abc_temperature",type:"float",description:"ABC planner sampling temperature.",required:!1,min:0,max:5},{name:"abc_top_p",type:"float",description:"ABC planner nucleus sampling probability. Must be in (0, 1].",required:!1,max:1},{name:"abc_top_k",type:"int",description:"ABC planner top-k sampling limit.",required:!1,min:1},{name:"abc_repetition_penalty",type:"float",description:"ABC planner repetition penalty. Must be positive.",required:!1},{name:"abc_penalty_window",type:"int",description:"ABC planner repetition penalty window.",required:!1,min:1},{name:"abc_min_tokens",type:"int",description:"Minimum ABC planner tokens before EOS is accepted.",required:!1,min:0},{name:"abc_max_tokens",type:"int",description:"Maximum ABC planner tokens. Zero is allowed when min_tokens is also zero.",required:!1,min:0},{name:"semantic_temperature",type:"float",description:"Semantic codec sampling temperature.",required:!1,min:0,max:5},{name:"semantic_top_p",type:"float",description:"Semantic codec nucleus sampling probability. Must be in (0, 1].",required:!1,max:1},{name:"semantic_top_k",type:"int",description:"Semantic codec top-k sampling limit.",required:!1,min:1},{name:"semantic_repetition_penalty",type:"float",description:"Semantic codec repetition penalty. Must be positive.",required:!1},{name:"semantic_penalty_window",type:"int",description:"Semantic codec repetition penalty window.",required:!1,min:1},{name:"semantic_min_tokens",type:"int",description:"Minimum semantic tokens before EOS is accepted.",required:!1,min:0},{name:"semantic_max_tokens",type:"int",description:"Maximum semantic codec tokens. Zero is allowed when min_tokens is also zero.",required:!1,min:0}],session:[{name:"ar_lora",type:"string",description:"AR adapter safetensors file; native, PEFT, and ComfyUI LoRA layouts. Absolute path or relative to the model root. Requires session reload.",required:!1},{name:"ar_lora_scale",type:"float",description:"AR LoRA delta scale; zero disables the adapter. Requires session reload.",required:!1,default:1},{name:"nar_lora",type:"string",description:"NAR adapter safetensors file. Absolute path or relative to the model root. Requires session reload.",required:!1},{name:"nar_lora_scale",type:"float",description:"NAR LoRA delta scale; full vae2llm/llm2vae replacements are unscaled. Zero disables the entire adapter. Requires session reload.",required:!1,default:1},{name:"weight_type",type:"enum",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"],description:"Shared weight storage type.",required:!1,default:"native"},{name:"model_weight_type",type:"enum",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"],description:"YuE2 MoT weight storage type. Omitted inherits weight_type.",required:!1},{name:"model_gguf",type:"string",description:"Yue2 main AR/NAR component GGUF file relative to the model root.",required:!1,default:"yue2-3b-q8_0.gguf"},{name:"vae_gguf",type:"string",description:"Yue2 VAE component GGUF file relative to the model root.",required:!1,default:"yue2-vae-f16.gguf"},{name:"vae_weight_type",type:"enum",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"],description:"YuE2 VAE weight storage type. Omitted inherits weight_type.",required:!1},{name:"model_weight_context_mb",type:"int",description:"YuE2 MoT weight context size in MiB.",required:!1,min:1,default:32},{name:"vae_weight_context_mb",type:"int",description:"YuE2 VAE weight context size in MiB.",required:!1,min:1,default:32},{name:"ar_prefill_graph_arena_mb",type:"int",description:"AR prefill graph arena size in MiB.",required:!1,min:1,default:32},{name:"ar_decode_graph_arena_mb",type:"int",description:"AR one-token decode graph arena size in MiB.",required:!1,min:1,default:32},{name:"nar_graph_arena_mb",type:"int",description:"NAR acoustic flow graph arena size in MiB.",required:!1,min:1,default:32},{name:"vae_graph_arena_mb",type:"int",description:"VAE decode graph arena size in MiB.",required:!1,min:1,default:32},{name:"attention",type:"enum",description:"NAR acoustic-flow attention lowering; auto selects the backend-appropriate implementation.",required:!1,values:["auto","flash","eager"],default:"auto"},{name:"perf_mode",type:"enum",description:"Performance preset; cuda_perf packs AR projections, aligns KV capacity to 256 tokens, retains stages and caps VAE tiles at 512 frames. Explicit controls override the preset. May change audio and substantially increase peak VRAM.",values:["off","cuda_perf"],required:!1,default:"off"},{name:"packed_projections",type:"bool",description:"Pack AR QKV and gate/up projections without changing weight dtype. Default false, true with cuda_perf. Explicit values override the preset.",required:!1},{name:"kv_cache_alignment",type:"int",description:"AR KV capacity alignment in tokens; values above 1 also use cached CUDA CFG attention windows of this size. Default 1, or 256 with cuda_perf; may use more memory and change numerics. Explicit values override the preset.",required:!1,min:1},{name:"mem_saver",type:"bool",description:"Release AR/NAR runtimes and VAE graphs after generation. Default true, false with cuda_perf. Disabling retains stages and can substantially increase peak VRAM.",required:!1},{name:"vae_tile_frames",type:"int",description:"Latent core frames per VAE tile; defaults to model configuration, capped at 512 with cuda_perf. Explicit values override the cap. The halo is unchanged; different boundaries can change numerical results.",required:!1,min:1},{name:"attention_tile_rows",type:"int",description:"Query rows per eager NAR attention tile; nonpositive values select automatic tiling to keep each score matrix below 3 GiB.",required:!1,default:0}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Yue2-3B-GGUF",revision:"main",gated:!1}},packages:[{id:"yue2_main_q8_0",display_name:"Yue2 3B Main Q8_0",default:!0,format:"gguf",precision:"q8_0",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-3b-q8_0.gguf"]},{id:"yue2_main_bf16",display_name:"Yue2 3B Main BF16",format:"gguf",precision:"bf16",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-3b-bf16.gguf"]},{id:"yue2_main_q4_0",display_name:"Yue2 3B Main Q4_0",format:"gguf",precision:"q4_0",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-3b-q4_0.gguf"]},{id:"yue2_vae_f16",display_name:"Yue2 VAE F16",format:"gguf",precision:"f16",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-vae-f16.gguf"]},{id:"yue2_vae_f32",display_name:"Yue2 VAE F32",format:"gguf",precision:"f32",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-vae-f32.gguf"]}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{model_config:"model:sidecars/yue2-model-config.json",generation_config:"model:sidecars/yue2-generation-config.json",tiktoken:"model:sidecars/yue2-qwen.tiktoken",vae_config:"model:sidecars/yue2-vae-config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"}}},{format:"safetensors",roots:{model:"YuE2-3B",vae:"YuE2-Vae"},files:{model_config:"model:config.json",generation_config:"model:yue2_generation_config.json",tiktoken:"model:qwen.tiktoken",vae_config:"vae:config.json"},tensors:{model_weights:"model:model.safetensors",vae_weights:"vae:model.safetensors"}}]},x8={schema_version:1,family:"zipvoice",display_name:"ZipVoice",description:"Community ZipVoice / ZipVoice-Distill flow-matching TTS with a TTSZipformer backbone (U-Net downsampling stacks, compact relative position attention), duration prediction from prompt ratio, Euler solver with t-shift and classifier-free guidance, and Vocos mel-24kHz vocoder (k2-fsa/ZipVoice).",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline","streaming"],languages:["en","zh"],runtime:{tags:["server","stream"]},capabilities:{clone:["speaker_reference"]},options:{request:[{name:"reference_text",type:"string",description:"Transcript matching the reference voice audio; required for zero-shot cloning.",required:!0},{name:"text_chunk_size",type:"int",description:"Maximum characters per generated text chunk; default 128.",required:!1,min:1,default:128},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"},{name:"guidance_scale",type:"float",description:"Guidance scale; inherits the session default (3.0 for both variants). ZipVoice-Distill uses a guidance-scale embedding; ZipVoice uses batched CFG. Zero disables guidance. Any finite nonnegative value is accepted.",required:!1,min:0,default:3},{name:"num_inference_steps",type:"int",description:"Euler ODE steps; inherits the session default (8 for both variants).",required:!1,min:1,max:64,default:8},{name:"shift",type:"float",description:"Shift timesteps toward low SNR (smaller = stronger shift); default 0.5. Must be finite and positive.",required:!1,default:.5},{name:"speed",type:"float",description:"Speech speed multiplier applied through the prompt-duration ratio; default 1.0. Must be finite and positive.",required:!1,default:1},{name:"feat_scale",type:"float",description:"Feature scale applied to log-mel features; default 0.1 (reference default). Must be finite and positive.",required:!1,default:.1},{name:"target_rms",type:"float",description:"Target RMS for prompt loudness normalization; 0 disables. Default 0.1. Negative values disable normalization; values above 1 are accepted.",required:!1,default:.1},{name:"seed",type:"int",description:"Noise seed; default 666 (reference default).",required:!1,min:0,default:666},{name:"language",type:"string",description:"espeak language for phonemization; default en-us.",required:!1,default:"en-us"}],session:[{name:"vocos_path",type:"string",description:"Path to the Vocos vocoder checkpoint (vocos.safetensors or GGUF); required unless bundled in the model GGUF or placed next to the checkpoint.",required:!1},{name:"guidance_scale",type:"float",description:"Default guidance scale for requests that do not set it; must be finite and nonnegative.",required:!1,min:0,default:3},{name:"num_inference_steps",type:"int",description:"Default Euler steps for requests that do not set it.",required:!1,min:1,max:64,default:8},{name:"shift",type:"float",description:"Default timestep shift for requests that do not set it; must be finite and positive.",required:!1,default:.5},{name:"espeak_library_path",type:"string",description:"Path to the espeak-ng shared library (e.g. /opt/homebrew/lib/libespeak-ng.dylib) for tokenizer=espeak.",required:!1},{name:"espeak_data_path",type:"string",description:"Path to the espeak-ng data directory or package for tokenizer=espeak.",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"davidxifeng/zipvoice-gguf",revision:"main",gated:!1}},packages:[{id:"zipvoice_distill_gguf",display_name:"ZipVoice-Distill GGUF (local conversion)",description:"Self-contained GGUF: flow-matching model, bundled Vocos vocoder and the embedded text-frontend sidecars (tokens, config, zh tables) in one file. Converted from k2-fsa/ZipVoice with export_zipvoice_zh_dict.py + convert_zipvoice.py.",default:!0,format:"gguf",precision:"orig",target_directory:"ZipVoice-Distill-GGUF",files:["zipvoice-distill-orig.gguf"]},{id:"zipvoice_distill_q8_0",display_name:"ZipVoice-Distill GGUF (Q8_0)",description:"Self-contained Q8_0 GGUF with bundled Vocos and embedded text-frontend sidecars.",format:"gguf",precision:"q8_0",target_directory:"ZipVoice-Distill-GGUF",files:["zipvoice-distill-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"zipvoice_distill_gguf",tags:["TTS","Clone"],docs:["docs/models/zipvoice.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tokens:"model:tokens.txt",model_config:"model:model.json"},optional_files:{zh_chars:"model:zh_chars.tsv",zh_phrases:"model:zh_phrases.tsv",zh_syllables:"model:zh_syllables.tsv",zh_jieba_dict:"model:zh_jieba_dict.txt",zh_hmm_model:"model:zh_hmm_model.txt"},tensors:{model:{source:"weights:",prefix:"model"}},optional_tensors:{vocos_vocoder:{source:"weights:",prefix:"vocos"}}}]},S8={models:JSON.parse('[{"id":"ace-step","display_name":"ACE-Step 1.5 (music gen)","family":"ace_step","path":"models/Ace-Step1.5","task":"gen","mode":"offline","download_id":"ace_step","default_text":"upbeat pop music with bright vocals and energetic drums","session_options":{"ace_step.mem_saver":"true","ace_step.dit_weight_type":"q8_0","ace_step.text_encoder_weight_type":"q8_0","ace_step.planner_weight_type":"q8_0"},"min_vram_gb":8},{"id":"ming3-tts","display_name":"Ming 3.0 TTS 0.5B","family":"ming3_tts","path":"models/Ming-3.0-TTS-0.5B-GGUF","task":"tts","mode":"offline","download_id":"ming_3_0_tts_0_5b_bf16","default_options":{"language":"en"},"default_text":"Good evening. The harbor is quiet tonight."},{"id":"ming3-tts-clone","display_name":"Ming 3.0 TTS 0.5B Clone","family":"ming3_tts","path":"models/Ming-3.0-TTS-0.5B-GGUF","task":"clon","mode":"offline","download_id":"ming_3_0_tts_0_5b_bf16","default_options":{"language":"en"},"input_hint_en":"Upload a reference voice. Its transcript is optional and enables acoustic-prefix conditioning."},{"id":"ming3-tts-design","display_name":"Ming 3.0 TTS 0.5B Voice Design","family":"ming3_tts","path":"models/Ming-3.0-TTS-0.5B-GGUF","task":"vdes","mode":"offline","download_id":"ming_3_0_tts_0_5b_bf16","default_options":{"language":"en"}},{"id":"ming3-audio-asr","display_name":"Ming 3.0 Audio Tiny ASR","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"asr","mode":"offline","download_id":"ming3_audio_tiny_bf16"},{"id":"ming3-audio-understanding","display_name":"Ming 3.0 Audio Tiny Understanding","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"asr","workflow":"analysis","mode":"offline","download_id":"ming3_audio_tiny_bf16","default_options":{"prompt":"Describe the sounds in this recording."}},{"id":"ming3-audio-response","display_name":"Ming 3.0 Audio Tiny Spoken Response","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"s2s","mode":"offline","download_id":"ming3_audio_tiny_bf16","default_options":{"voice_id":"US_James","language":"en"}},{"id":"ming3-audio-tts","display_name":"Ming 3.0 Audio Tiny TTS","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"tts","mode":"offline","download_id":"ming3_audio_tiny_bf16","default_options":{"voice_id":"US_James","language":"en"}},{"id":"ming3-audio-clone","display_name":"Ming 3.0 Audio Tiny Clone","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"clon","mode":"offline","download_id":"ming3_audio_tiny_bf16","default_options":{"language":"en"},"input_hint_en":"Upload a reference voice. Add its transcript to enable acoustic-prefix conditioning."},{"id":"xtts-v2","display_name":"XTTS v2","family":"xtts_v2","path":"models/XTTS-v2-Q8","task":"tts","mode":"offline","download_id":"xtts_v2_gguf_q8_0","input_hint_en":"Upload a reference voice for multilingual speech synthesis."},{"id":"latentsync","display_name":"LatentSync 1.6 Lip Sync","family":"latentsync","path":"models/LatentSync-1.6-GGUF","task":"gen","mode":"offline","download_id":"latentsync_1_6_q8_0_f16","arena":false,"input_hint_en":"Choose a face video and driving speech audio."},{"id":"apollo","display_name":"Apollo","family":"apollo","path":"models/Apollo-GGUF","task":"s2s","mode":"offline","download_id":"apollo_orig"},{"id":"ast-audioset","display_name":"AST AudioSet","family":"ast_audioset","path":"models/AST-AudioSet-GGUF/ast-audioset-f32.gguf","task":"cls","mode":"offline","download_id":"ast_audioset_f32"},{"id":"audio-flamingo-3","display_name":"Audio Flamingo 3","family":"audio_flamingo","path":"models/Audio-Flamingo-GGUF/audio-flamingo-3-q4_k.gguf","task":"asr","mode":"offline","download_id":"audio_flamingo_3_q4_k","workflow":"analysis"},{"id":"audio-flamingo-next","display_name":"Audio Flamingo Next","family":"audio_flamingo","path":"models/Audio-Flamingo-GGUF/audio-flamingo-next-q4_k.gguf","task":"asr","mode":"offline","download_id":"audio_flamingo_next_q4_k","workflow":"analysis"},{"id":"audio8-tts","display_name":"Audio8 TTS Preview 0.6B (tts 克隆, GGUF Q8)","display_name_en":"Audio8 TTS Preview 0.6B (tts + clone, GGUF Q8)","family":"audio8_tts","path":"models/Audio8-TTS-Preview-0.6B-GGUF","task":"tts","mode":"offline","download_id":"audio8_tts_preview_0_6b_q8_0","min_vram_gb":4,"input_hint":"**Audio8 TTS Preview 0.6B**:多语种 TTS / 零样本克隆(支持 yue/zh/nl/en/fr/de/it/ja/ko/pl/es/auto);上传参考音色+参考文本即克隆,留空为普通 TTS;长文本自动分句。","input_hint_en":"**Audio8 TTS Preview 0.6B**: multilingual TTS and zero-shot clone (yue/zh/nl/en/fr/de/it/ja/ko/pl/es/auto). Upload a reference voice + transcript to clone; leave empty for plain TTS. Long text is chunked automatically."},{"id":"audiosr","display_name":"AudioSR (audio super-resolution)","family":"audiosr","path":"models/AudioSR-GGUF/audiosr-basic-f32.gguf","task":"s2s","mode":"offline","download_id":"audiosr_basic_f32","min_vram_gb":8,"input_hint_en":"**AudioSR**: upload a source audio file to generate a super-resolved output."},{"id":"auk-edit","display_name":"AuK (audio editing, community)","family":"auk","path":"models/AuK-Base-and-Flash-GGUF","task":"gen","mode":"offline","arena":false,"download_id":"auk_base_f32","default_text":"Remove the background noise and make the voice clearer.","min_vram_gb":20,"input_hint_en":"**AuK audio editing** (community): upload source audio and describe the requested speech, singing, acoustic, paralinguistic, enhancement, or separation edit."},{"id":"auk-tts","display_name":"AuK (speech generation, community)","family":"auk","path":"models/AuK-Base-and-Flash-GGUF","task":"tts","mode":"offline","arena":false,"download_id":"auk_base_f32","default_text":"The next train leaves in ten minutes.","min_vram_gb":20,"input_hint_en":"**AuK** (community): enter text plus a voice description, or provide an optional reference voice for zero-shot speech generation. Select compatible Base or AuK-Flash, Qwen, and VAE components before loading."},{"id":"breeze-tts-clone","display_name":"BreezeTTS 2 Clone","family":"breeze_tts","path":"models/Breeze-TTS-2-GGUF/breeze-tts-2-q8_0.gguf","task":"clon","mode":"offline","download_id":"breeze_tts_2_q8_0","min_vram_gb":8,"input_hint_en":"**BreezeTTS 2 Clone**: upload a reference voice and provide the matching reference transcript."},{"id":"breeze-tts","display_name":"BreezeTTS 2 VoiceDesign","family":"breeze_tts","path":"models/Breeze-TTS-2-GGUF/breeze-tts-2-q8_0.gguf","task":"vdes","mode":"offline","download_id":"breeze_tts_2_q8_0","min_vram_gb":8,"input_hint_en":"**BreezeTTS 2 VoiceDesign**: enter text and describe the target voice in Model parameters. No reference voice is required."},{"id":"bs-roformer","display_name":"BS-RoFormer (sep 人声分离)","display_name_en":"BS-RoFormer (vocal separation)","family":"bs_roformer","path":"models/BS-RoFormer-ep368-GGUF/bs-roformer-ep368-q8_0.gguf","task":"sep","mode":"offline","download_id":"bs_roformer_q8_0","min_vram_gb":3},{"id":"canary-asr","display_name":"Canary 180M Flash","family":"canary_asr","path":"models/Canary-180M-Flash-GGUF","task":"asr","mode":"offline","download_id":"canary_180m_flash_f32"},{"id":"ced-base","display_name":"CED Base","family":"ced","path":"models/CED-GGUF/ced-base-f32.gguf","task":"cls","mode":"offline","download_id":"ced_base_f32"},{"id":"ced-mini","display_name":"CED Mini","family":"ced","path":"models/CED-GGUF/ced-mini-f32.gguf","task":"cls","mode":"offline","download_id":"ced_mini_f32"},{"id":"ced-small","display_name":"CED Small","family":"ced","path":"models/CED-GGUF/ced-small-f32.gguf","task":"cls","mode":"offline","download_id":"ced_small_f32"},{"id":"ced-tiny","display_name":"CED Tiny","family":"ced","path":"models/CED-GGUF/ced-tiny-f32.gguf","task":"cls","mode":"offline","download_id":"ced_tiny_f32"},{"id":"chatterbox-vc","display_name":"Chatterbox (vc 声音转换)","display_name_en":"Chatterbox (voice conversion)","family":"chatterbox","path":"models/chatterbox","task":"vc","mode":"offline","download_id":"chatterbox","min_vram_gb":12,"input_hint":"**Chatterbox VC**:上传源语音和目标音色参考;模型保留源语音内容,将说话人音色转换为目标音色,输出 24kHz 单声道。","input_hint_en":"**Chatterbox VC**: upload source speech and a target-voice reference. It preserves the source content and converts the speaker identity; output is 24 kHz mono."},{"id":"chatterbox","display_name":"Chatterbox (voice clone)","family":"chatterbox","path":"models/chatterbox","task":"clon","mode":"offline","download_id":"chatterbox","min_vram_gb":12},{"id":"chatterbox-turbo","display_name":"Chatterbox Turbo (tts)","family":"chatterbox_turbo","path":"models/Chatterbox-Turbo-GGUF/chatterbox-turbo-q8_0.gguf","task":"tts","mode":"offline","download_id":"chatterbox_turbo_q8_0","min_vram_gb":4,"input_hint_en":"**Chatterbox Turbo**: fast English TTS with the built-in voice. No reference voice is required."},{"id":"citrinet-asr","display_name":"Citrinet ASR (asr)","family":"citrinet_asr","path":"models/citrinet","task":"asr","mode":"offline","download_id":"citrinet_asr","min_vram_gb":2},{"id":"cohere-asr","display_name":"Cohere Transcribe","family":"cohere_asr","path":"models/Cohere-Transcribe-GGUF","task":"asr","mode":"offline","download_id":"cohere_transcribe_bf16"},{"id":"r2t2-asr","display_name":"Confucius4-R2T2 (asr, 实时流式)","display_name_en":"Confucius4-R2T2 (asr, real-time streaming)","family":"confucius4_r2t2","path":"models/Confucius4-R2T2-GGUF/r2t2-q8_0.gguf","task":"asr","mode":"offline","download_id":"confucius4_r2t2_q8_0","min_vram_gb":5,"input_hint":"**Confucius4-R2T2**:网易有道实时流式 ASR,Qwen3-ASR-1.7B 微调,LSP 稳定前缀解码;提交文本永不回改,支持 80ms-2s 分块;Q8_0 GGUF(2.3G,自包含单文件),也支持 F16。","input_hint_en":"**Confucius4-R2T2**: NetEase Youdao real-time streaming ASR, a Qwen3-ASR 1.7B fine-tune with Longest Stable Prefix decoding. Committed text is never revised; 80 ms-2 s chunks; Q8_0 GGUF (2.3 GB, self-contained single file), F16 also available."},{"id":"confucius4-tts","display_name":"Confucius4-TTS (voice clone, GGUF)","display_name_en":"Confucius4-TTS (voice clone, GGUF)","family":"confucius4_tts","path":"models/Confucius4-TTS-GGUF","task":"clon","mode":"offline","download_id":"confucius4_tts_orig","min_vram_gb":8,"input_hint":"**Confucius4-TTS**:需要参考音色;当前中文/英语路径更可靠,非中英语种仍在验证中。","input_hint_en":"**Confucius4-TTS**: requires a reference voice. Chinese/English are the most reliable paths; other languages are still being validated."},{"id":"controlfoley","display_name":"ControlFoley (Foley/SFX)","family":"controlfoley","path":"models/ControlFoley-GGUF/controlfoley-large-44k-q8_0.gguf","task":"gen","mode":"offline","download_id":"controlfoley_large_44k_q8_0","min_vram_gb":12,"request_options":["video"],"input_hint_en":"**ControlFoley**: Foley generation from text, video, text+video, audio+video, or video only. Upload video in the Video field; upload source audio for AC-V2A."},{"id":"cosyvoice3","display_name":"CosyVoice3 Clone","family":"cosyvoice3","path":"models/CosyVoice3-GGUF/cosyvoice3-q8_0.gguf","task":"clon","mode":"offline","download_id":"cosyvoice3_q8_0","min_vram_gb":8,"input_hint_en":"**CosyVoice3 Clone**: upload a reference voice and provide the matching reference transcript. Use `template_name` for zero-shot or cross-lingual requests."},{"id":"cosyvoice3-instruct","display_name":"CosyVoice3 Instruct","family":"cosyvoice3","path":"models/CosyVoice3-GGUF/cosyvoice3-q8_0.gguf","task":"tts","mode":"offline","download_id":"cosyvoice3_q8_0","min_vram_gb":8,"input_hint_en":"**CosyVoice3 Instruct**: upload a reference voice, provide its transcript, and set `template_name=instruct` with an instruction."},{"id":"crisperwhisper","display_name":"CrisperWhisper 2.0 Large","family":"crisperwhisper","path":"models/CrisperWhisper2.0-GGUF/crisperwhisper-2-large-q8_0.gguf","task":"asr","mode":"offline","download_id":"crisperwhisper_2_large_q8_0"},{"id":"crisperwhisper-align","display_name":"CrisperWhisper 2.0 Large (alignment)","family":"crisperwhisper","path":"models/CrisperWhisper2.0-GGUF/crisperwhisper-2-large-q8_0.gguf","task":"align","mode":"offline","download_id":"crisperwhisper_2_large_q8_0","workflow":"analysis"},{"id":"deepfilternet2","display_name":"DeepFilterNet2","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/deepfilternet2/deepfilternet2.safetensors","load_options":{"utility":"deepfilternet2"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/deepfilternet2/deepfilternet2.safetensors"},{"id":"dots-tts-meanflow","display_name":"DotTTS MeanFlow (tts + clone)","family":"dots_tts","path":"models/DotTTS-MF-GGUF","task":"tts","mode":"offline","download_id":"dots_tts_mf_q8_0","min_vram_gb":8},{"id":"dots-tts-soar","display_name":"DotTTS SOAR (tts + clone)","family":"dots_tts","path":"models/DotTTS-SOAR-GGUF","task":"tts","mode":"offline","download_id":"dots_tts_soar_q8_0","min_vram_gb":8},{"id":"dramabox","display_name":"DramaBox (tts 克隆, GGUF Q8)","display_name_en":"DramaBox (tts + clone, GGUF Q8)","family":"dramabox","path":"models/DramaBox-GGUF","task":"tts","mode":"offline","download_id":"dramabox_q8_0","min_vram_gb":16,"input_hint":"**DramaBox**:英语 TTS / voice clone;上传参考音色可克隆,长文本建议写清楚说话人描述。","input_hint_en":"**DramaBox**: English TTS and voice clone. Upload a reference voice to clone; for long text, keep speaker wording explicit."},{"id":"echo-tts","display_name":"Echo-TTS (voice clone)","family":"echo_tts","path":"models/Echo-TTS-GGUF","task":"clon","mode":"offline","download_id":"echo_tts_q8_0","min_vram_gb":8,"input_hint_en":"**Echo-TTS**: English zero-shot cloning at 44.1 kHz. Upload a reference voice -- no transcript needed. Output is CC-BY-NC-SA and may not be used commercially."},{"id":"firered-stream-vad","display_name":"FireRed Stream-VAD","family":"firered_vad","path":"models/FireRedVAD-GGUF/firered-stream-vad-f32.gguf","task":"vad","mode":"offline","download_id":"firered_stream_vad_f32"},{"id":"firered-vad","display_name":"FireRed VAD","family":"firered_vad","path":"models/FireRedVAD-GGUF/firered-vad-f32.gguf","task":"vad","mode":"offline","download_id":"firered_vad_f32"},{"id":"firered-audio-asr","display_name":"FireRedAudio (ASR / audio QA)","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"asr","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio ASR**: upload audio, then use the text box as the transcription or audio-understanding instruction."},{"id":"firered-audio-acoustic-edit","display_name":"FireRedAudio Acoustic Edit","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"gen","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio Acoustic Edit**: upload source audio and use a trained acoustic instruction such as `shift the pitch by 3 steps`."},{"id":"firered-audio-tts","display_name":"FireRedAudio Clone","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"clon","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio Clone**: upload a reference voice and provide the matching reference transcript. For no-reference voice design, use the VoiceDesign entry."},{"id":"firered-audio-semantic-edit","display_name":"FireRedAudio Semantic Edit","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"gen","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio Semantic Edit**: upload source audio and describe the content edit in Model parameters."},{"id":"firered-audio-vdesign","display_name":"FireRedAudio VoiceDesign","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"vdes","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio VoiceDesign**: describe the target voice in Voice description, then enter the text to synthesize."},{"id":"fireredtts3-base","display_name":"FireRedTTS3 Base (voice clone)","family":"fireredtts3","path":"models/FireRedTTS3-Base-GGUF/fireredtts3-base-q8_0.gguf","task":"clon","mode":"offline","download_id":"fireredtts3_base_q8_0","min_vram_gb":8,"input_hint_en":"**FireRedTTS3 Base**: zero-shot voice cloning. Upload a reference voice and provide the matching reference transcript."},{"id":"fireredtts3-instruct","display_name":"FireRedTTS3 Instruct Clone","family":"fireredtts3","path":"models/FireRedTTS3-Instruct-GGUF/fireredtts3-instruct-q8_0.gguf","task":"clon","mode":"offline","download_id":"fireredtts3_instruct_q8_0","min_vram_gb":8,"input_hint_en":"**FireRedTTS3 Instruct Clone**: official Instruct `generate_tts` path. Upload a reference voice and provide the matching reference transcript. For no-reference voice design, use the VoiceDesign entry."},{"id":"fireredtts3-instruct-vdesign","display_name":"FireRedTTS3 Instruct VoiceDesign","family":"fireredtts3","path":"models/FireRedTTS3-Instruct-GGUF/fireredtts3-instruct-q8_0.gguf","task":"vdes","mode":"offline","download_id":"fireredtts3_instruct_q8_0","min_vram_gb":8,"input_hint_en":"**FireRedTTS3 VoiceDesign**: describe the target voice in Voice description, then enter the text to synthesize."},{"id":"fish-drama3","display_name":"Fish Audio Drama 3","family":"fish_drama3","path":"models/Drama-3-GGUF/drama-3-backbone-4bit-experts-Q4_K_S.gguf","task":"tts","mode":"offline","arena":false,"download_id":"fish_drama3_q4_backbone","min_vram_gb":8,"session_options":{"fish_drama3.disk_experts":"true","fish_drama3.pin_experts":"true","fish_drama3.expert_cache_size":"8","fish_drama3.cpu_expert_layers":"0","fish_drama3.codec_backend":"same","fish_drama3.context_length":"4096"},"request_options":["reference_text","multi_reference_cond","text_chunk_size","temperature","top_p","top_k","max_tokens","seed"]},{"id":"fish-drama3-small","display_name":"Fish Audio Drama3-small","family":"fish_drama3","path":"models/Drama3-small-GGUF/drama3-small-IQ3_XXS.gguf","task":"tts","mode":"offline","arena":false,"download_id":"fish_drama3_small_iq3_xxs","min_vram_gb":7,"session_options":{"fish_drama3.disk_experts":"true","fish_drama3.pin_experts":"true","fish_drama3.expert_cache_size":"8","fish_drama3.cpu_expert_layers":"0","fish_drama3.codec_backend":"same","fish_drama3.context_length":"4096"}},{"id":"fish-audio-s2-pro","display_name":"Fish Audio S2 Pro (tts 克隆/控制标记, GGUF Q8)","display_name_en":"Fish Audio S2 Pro (tts + clone/control tags, GGUF Q8)","family":"fish_audio","path":"models/Fish-Audio-S2-Pro-GGUF","task":"tts","mode":"offline","download_id":"fish_audio_s2_pro","min_vram_gb":8,"input_hint":"**Fish Audio S2 Pro**:Q8_0 GGUF 包;中英+自动语种;上传参考音色即克隆;正文里可写行内控制标记(如 (laugh))。","input_hint_en":"**Fish Audio S2 Pro**: Q8_0 GGUF package; English/Chinese plus auto language. Upload a reference voice to clone; inline control tags such as (laugh) can be written in the text."},{"id":"flashsr","display_name":"FlashSR","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/flashsr/flashsr.safetensors","load_options":{"utility":"flashsr"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/flashsr/flashsr.safetensors"},{"id":"fun-asr-nano","display_name":"Fun-ASR-Nano 2512 (asr, GGUF Q8)","display_name_en":"Fun-ASR-Nano 2512 (asr, GGUF Q8)","family":"fun_asr_nano","path":"models/Fun-ASR-Nano-2512-GGUF","task":"asr","mode":"offline","download_id":"fun_asr_nano_2512_q8_0","min_vram_gb":4,"input_hint":"**Fun-ASR-Nano**:轻量离线 ASR;支持 auto/中文/英语/日语。","input_hint_en":"**Fun-ASR-Nano**: lightweight offline ASR; supports auto, Chinese, English and Japanese."},{"id":"gigaam-multilingual","display_name":"GigaAM Multilingual","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-multilingual-ctc-f16.gguf","download_id":"gigaam_multilingual_ctc_f16"},{"id":"gigaam-multilingual-large","display_name":"GigaAM Multilingual Large","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-multilingual-large-ctc-f16.gguf","download_id":"gigaam_multilingual_large_ctc_f16"},{"id":"gigaam-v3-ctc","display_name":"GigaAM v3 CTC","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-v3-ctc-f16.gguf","download_id":"gigaam_v3_ctc_f16"},{"id":"gigaam-v3-e2e-ctc","display_name":"GigaAM v3 E2E CTC","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-v3-e2e-ctc-f16.gguf","download_id":"gigaam_v3_e2e_ctc_f16"},{"id":"gigaam-v3-e2e-rnnt","display_name":"GigaAM v3 E2E RNN-T","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-v3-e2e-rnnt-f16.gguf","download_id":"gigaam_v3_e2e_rnnt_f16"},{"id":"gigaam-v3-rnnt","display_name":"GigaAM v3 RNN-T","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-v3-rnnt-f16.gguf","download_id":"gigaam_v3_rnnt_f16"},{"id":"glm-tts","display_name":"GLM-TTS (tts 克隆, 社区)","display_name_en":"GLM-TTS (tts + clone, community)","family":"glm_tts","path":"models/GLM-TTS","task":"tts","mode":"offline","download_id":"glm_tts","min_vram_gb":8,"input_hint":"**GLM-TTS**(社区模型):中英 TTS / voice clone;上传参考音色即克隆。","input_hint_en":"**GLM-TTS** (community): Chinese/English TTS and voice clone. Upload a reference voice to clone."},{"id":"gradium-phonon-31m-en","display_name":"Gradium Phonon 31m English (tts)","family":"gradium_phonon","path":"models/phonon-31m-en","task":"tts","mode":"offline","download_id":"gradium_phonon_31m_en_q8_0","min_vram_gb":1},{"id":"granite5asr","display_name":"Granite Speech 5.0 470M TurboCTC (asr)","display_name_en":"Granite Speech 5.0 470M TurboCTC (asr)","family":"granite5asr","path":"models/Granite-Speech-5.0-470M-TurboCTC-GGUF/granite-speech-5.0-470m-turboctc-q8_0.gguf","task":"asr","mode":"offline","download_id":"granite5asr_q8_0","min_vram_gb":4,"input_hint":"**Granite Speech 5.0 TurboCTC**:IBM 470M 英语 ASR;超快 Conformer CTC 转写;支持长音频自动分段与流式模式。","input_hint_en":"**Granite Speech 5.0 TurboCTC**: IBM 470M English ASR with ultra-fast Conformer CTC architecture, supporting long-form audio segmentation and streaming mode."},{"id":"gtcrn-dns3","display_name":"GTCRN DNS3","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/gtcrn/gtcrn_dns3.safetensors","load_options":{"utility":"gtcrn_dns3"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/gtcrn/gtcrn_dns3.safetensors"},{"id":"gtcrn-streaming","display_name":"GTCRN Streaming","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/gtcrn/gtcrn_streaming.safetensors","load_options":{"utility":"gtcrn_streaming"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/gtcrn/gtcrn_streaming.safetensors"},{"id":"gtcrn-vctk","display_name":"GTCRN VCTK","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/gtcrn/gtcrn_vctk.safetensors","load_options":{"utility":"gtcrn_vctk"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/gtcrn/gtcrn_vctk.safetensors"},{"id":"heartmula","display_name":"HeartMuLa 3B (music gen)","family":"heartmula","path":"models/HeartMuLa","task":"gen","mode":"offline","download_id":"heartmula","session_options":{"heartmula.mem_saver":"true"},"min_vram_gb":24},{"id":"higgs-audio-stt","display_name":"Higgs Audio v3 STT (asr, 英语)","display_name_en":"Higgs Audio v3 STT (asr, English)","family":"higgs_audio_stt","path":"models/higgs-audio-v3-stt","task":"asr","mode":"offline","download_id":"higgs_audio_stt","min_vram_gb":8,"input_hint":"**Higgs Audio STT**:英语转写;可在文本框填指令(默认相当于 Transcribe the speech.);离线模式自动切分长音频。","input_hint_en":"**Higgs Audio STT**: English transcription. The text box accepts an instruction; offline mode automatically chunks long audio."},{"id":"higgs-audio-tts","display_name":"Higgs Audio v3 TTS 4B (tts 克隆, GGUF Q8)","display_name_en":"Higgs Audio v3 TTS 4B (tts + clone, GGUF Q8)","family":"higgs_audio_tts","path":"models/Higgs-Audio-v3-TTS-4B-GGUF","task":"tts","mode":"offline","download_id":"higgs_audio_v3_tts_4b","min_vram_gb":6,"input_hint":"**Higgs Audio v3 TTS**:Q8_0 GGUF 包(权重已量化,不用再设 weight_type);上传参考音色即声音克隆,留空用默认音色;长文本自动分段。","input_hint_en":"**Higgs Audio v3 TTS**: Q8_0 GGUF package (already quantized — no weight_type needed). Upload a reference voice to clone, or leave it empty for the default voice; long text is chunked automatically."},{"id":"htdemucs","display_name":"HTDemucs (sep 音源分离)","display_name_en":"HTDemucs (source separation)","family":"htdemucs","path":"models/htdemucs","task":"sep","mode":"offline","download_id":"htdemucs","min_vram_gb":3},{"id":"htdemucs_6stems","display_name":"HTDemucs 6-stem (sep 音源分离)","display_name_en":"HTDemucs 6-stem (source separation)","family":"htdemucs_6stems","path":"models/htdemucs_6stems","task":"sep","mode":"offline","download_id":"htdemucs_6stems","min_vram_gb":4},{"id":"hviske-asr","display_name":"Hviske v5.3 (asr, 丹麦语)","display_name_en":"Hviske v5.3 (asr, Danish)","family":"hviske_asr","path":"models/hviske-v5.3","task":"asr","mode":"offline","download_id":"hviske_asr","min_vram_gb":6,"input_hint":"**Hviske ASR**:丹麦语专用;模型侧自动分段。","input_hint_en":"**Hviske ASR**: dedicated Danish transcription with automatic model-side segmentation."},{"id":"hviske-v6","display_name":"Hviske v6 (Danish ASR)","family":"hviske_asr_v6","path":"models/Hviske-v6-GGUF/hviske-v6-bf16.gguf","task":"asr","mode":"offline","download_id":"hviske_asr_v6_bf16"},{"id":"index-echo-2b","display_name":"Index-Echo S2TT 2B","family":"index_echo","path":"models/Index-Echo-S2TT-GGUF/index-echo-s2tt-2b-orig.gguf","task":"asr","mode":"offline","download_id":"index_echo_s2tt_2b_orig"},{"id":"index-echo-9b","display_name":"Index-Echo S2TT 9B","family":"index_echo","path":"models/Index-Echo-S2TT-GGUF/index-echo-s2tt-9b-orig.gguf","task":"asr","mode":"offline","download_id":"index_echo_s2tt_9b_orig"},{"id":"index-tts2","display_name":"IndexTTS2 (tts 中英克隆+情感)","display_name_en":"IndexTTS2 (tts, zh/en clone + emotion)","family":"index_tts2","path":"models/IndexTTS-2","task":"tts","mode":"offline","download_id":"index_tts2","min_vram_gb":8},{"id":"index-tts2.5","display_name":"IndexTTS2.5 (tts 多语种克隆+情感, GGUF Q8)","display_name_en":"IndexTTS2.5 (tts, zh/en/ja/es/ar clone + emotion, GGUF Q8)","family":"index_tts2","path":"models/IndexTTS2.5-GGUF","task":"tts","mode":"offline","download_id":"index_tts2_5_q8_0","min_vram_gb":8,"input_hint":"**IndexTTS2.5**:中/英/日/西/阿零样本克隆;上传参考音色即克隆;可在『其它参数(JSON)』里传 `lang`(默认 auto:含汉字按中文,否则按英文)与情感选项。许可证为 bilibili Model Use License(非 OSI),商用前请确认条款。","input_hint_en":"**IndexTTS2.5**: zero-shot cloning in zh/en/ja/es/ar. Upload a reference voice to clone; pass `lang` (default auto: zh when the text contains Han characters, otherwise en) and emotion options through the JSON box. Weights are under the bilibili Model Use License (not OSI-approved) — check terms before commercial use."},{"id":"inflect-v2","display_name":"Inflect Micro v2 (tts 英语, 社区)","display_name_en":"Inflect Micro v2 (en tts, community)","family":"inflect_v2","path":"models/Inflect-Micro-v2","task":"tts","mode":"offline","download_id":"inflect_micro_v2","min_vram_gb":2,"input_hint":"**Inflect Micro v2**(社区模型):英语离线 TTS;Micro 是默认包,Nano 可通过模型管理器另装后手动选择路径。","input_hint_en":"**Inflect Micro v2** (community): English offline TTS. Micro is the default package; Nano can be installed separately and selected manually."},{"id":"irodori-tts-v3-500m","display_name":"Irodori-TTS 500M v3 (tts 日语)","display_name_en":"Irodori-TTS 500M v3 (ja tts)","family":"irodori_tts","path":"models/Irodori-TTS-500M-v3-GGUF","task":"tts","mode":"offline","download_id":"irodori_tts_500m_v3_q8_0","min_vram_gb":4},{"id":"irodori-tts-v3-vdesign","display_name":"Irodori-TTS 600M v3 VoiceDesign (vdes 日语)","display_name_en":"Irodori-TTS 600M v3 VoiceDesign (ja vdes)","family":"irodori_tts","path":"models/Irodori-TTS-600M-v3-VoiceDesign-GGUF","task":"vdes","mode":"offline","download_id":"irodori_tts_600m_v3_voicedesign_q8_0","min_vram_gb":4,"input_hint":"**Irodori-TTS v3 VoiceDesign**(日语):『音色描述』用日语 caption 描述音色(如「落ち着いた大人の男性。深く響く声。」),文本填要念的日语内容,无需参考音频。","input_hint_en":"**Irodori-TTS v3 VoiceDesign**: provide a Japanese voice caption and Japanese synthesis text. No reference recording is required."},{"id":"irodori-tts","display_name":"Irodori-TTS v4.1 Small (tts 日语, GGUF Q8)","display_name_en":"Irodori-TTS v4.1 Small (ja tts, GGUF Q8)","family":"irodori_tts","path":"models/Irodori-TTS-v4-Small-GGUF","task":"tts","mode":"offline","download_id":"irodori_tts_v4_small_q8_0","min_vram_gb":4,"input_hint":"**Irodori-TTS v4.1 Small**:日语 TTS;可不上传参考音色直接生成,也可上传参考音色进行克隆;可在声音设计页用日语 caption 描述音色。","input_hint_en":"**Irodori-TTS v4.1 Small**: Japanese TTS. Generate without a reference voice, clone from an uploaded reference, or use the voice-design page with a Japanese voice caption."},{"id":"irodori-tts-vdesign","display_name":"Irodori-TTS v4.1 Small VoiceDesign (vdes 日语, GGUF Q8)","display_name_en":"Irodori-TTS v4.1 Small VoiceDesign (ja vdes, GGUF Q8)","family":"irodori_tts","path":"models/Irodori-TTS-v4-Small-GGUF","task":"vdes","mode":"offline","download_id":"irodori_tts_v4_small_q8_0","min_vram_gb":4,"input_hint":"**Irodori-TTS v4.1 VoiceDesign**(日语):『音色描述』用日语 caption 描述音色(如「落ち着いた大人の男性。深く響く声。」),文本填要念的日语内容,无需参考音频。","input_hint_en":"**Irodori-TTS v4.1 VoiceDesign**: provide a Japanese voice caption and Japanese synthesis text. No reference recording is required."},{"id":"kitten-tts2","display_name":"Kitten TTS 2","family":"kitten_tts2","path":"models/kitten-tts2/kitten-tts2-q8-v2-multilingual.gguf","task":"tts","mode":"offline","download_id":"kitten_tts2_q8_v2","min_vram_gb":7,"input_hint":"Multilingual speech: choose a matching language preset or supply a reference clip and its transcript. Write numbers and abbreviations as spoken words."},{"id":"kitten-tts2-20261021","display_name":"Kitten TTS 2 (2026-10-21)","family":"kitten_tts2","path":"models/KittenTTS2-GGUF","task":"tts","mode":"offline","download_id":"kitten_tts2_20261021_q8_0","input_hint_en":"Updated multilingual checkpoint. Choose Q8 or Q4, then a voice preset or reference recording."},{"id":"kitten-tts","display_name":"KittenTTS Mini 0.8 (tts 英语, 社区)","display_name_en":"KittenTTS Mini 0.8 (en tts, community)","family":"kitten_tts","path":"models/KittenTTS-GGUF/kitten-tts-mini-0.8-orig.gguf","task":"tts","mode":"offline","download_id":"kitten_tts_mini_0_8_orig","min_vram_gb":1,"input_hint":"**KittenTTS Mini 0.8**(社区模型):轻量英语 TTS,内置八种音色,不需要上传参考音频。","input_hint_en":"**KittenTTS Mini 0.8** (community): lightweight English TTS with eight built-in voices; no reference audio is needed."},{"id":"kokoro-tts","display_name":"Kokoro 82M (tts, preset voices)","family":"kokoro_tts","path":"models/Kokoro-82M-GGUF/kokoro-82m-q8_0.gguf","task":"tts","mode":"offline","download_id":"kokoro_82m_q8_0","min_vram_gb":1,"input_hint_en":"**Kokoro 82M**: multilingual TTS with built-in preset voices. Choose a language and voice; no reference audio is needed."},{"id":"kroko-asr","display_name":"Kroko Community ASR (asr, GGUF Q8)","display_name_en":"Kroko Community ASR (asr, GGUF Q8)","family":"kroko_asr","path":"models/Kroko-ASR-GGUF","task":"asr","mode":"offline","download_id":"kroko_asr_community_q8_0","min_vram_gb":4,"input_hint":"**Kroko Community ASR**:GGUF Q8 包;离线转写,支持时间戳。","input_hint_en":"**Kroko Community ASR**: GGUF Q8 package for offline transcription with timestamps."},{"id":"kugelaudio","display_name":"KugelAudio-0-Open","family":"kugelaudio","path":"models/KugelAudio-0-Open-GGUF/kugelaudio-0-open-q8_0.gguf","task":"tts","mode":"offline","download_id":"kugelaudio_0_open_q8_0","builtin_voices":["default","clear","english_female","english_male"],"default_voice":"default"},{"id":"lfm2-audio-asr","display_name":"LFM2.5-Audio 1.5B (asr, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-GGUF","task":"asr","mode":"offline","download_id":"lfm2_audio_1_5b_q8_0","min_vram_gb":4,"input_hint_en":"**LFM2.5-Audio** (community): Liquid AI\'s English speech recognition from Liquid\'s published GGUFs. Audio longer than 30 s is split at pauses. Leave language empty."},{"id":"lfm2-audio-s2s","display_name":"LFM2.5-Audio 1.5B (s2s, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-GGUF","task":"s2s","mode":"offline","download_id":"lfm2_audio_1_5b_q8_0","min_vram_gb":4,"builtin_voices":[],"default_voice":"","input_hint_en":"**LFM2.5-Audio** (community): Liquid AI\'s English spoken chat from Liquid\'s published GGUFs. Record or choose a spoken question under Source audio and press Run: the reply streams in as speech and text, and each Run continues the conversation until New conversation. Replies use liquid-audio\'s system prompt, `Respond with interleaved text and audio.`"},{"id":"lfm2-audio-tts","display_name":"LFM2.5-Audio 1.5B (tts, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-GGUF","task":"tts","mode":"offline","download_id":"lfm2_audio_1_5b_q8_0","min_vram_gb":4,"default_text":"The next train leaves in ten minutes.","input_hint_en":"**LFM2.5-Audio** (community): Liquid AI\'s English speech from Liquid\'s published GGUFs, with four built-in voices (US or UK, male or female); no reference audio."},{"id":"lfm2-audio-jp-asr","display_name":"LFM2.5-Audio 1.5B JP (asr, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-JP-GGUF","task":"asr","mode":"offline","download_id":"lfm2_audio_1_5b_jp_q8_0","min_vram_gb":4,"input_hint_en":"**LFM2.5-Audio JP** (community): Liquid AI\'s Japanese speech recognition from Liquid\'s published GGUFs. Audio longer than 30 s is split at pauses. Leave language empty."},{"id":"lfm2-audio-jp-s2s","display_name":"LFM2.5-Audio 1.5B JP (s2s, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-JP-GGUF","task":"s2s","mode":"offline","download_id":"lfm2_audio_1_5b_jp_q8_0","min_vram_gb":4,"builtin_voices":[],"default_voice":"","input_hint_en":"**LFM2.5-Audio JP** (community): Liquid AI\'s Japanese spoken chat from Liquid\'s published GGUFs. Record or choose a spoken question under Source audio and press Run: the reply streams in as speech and text, and each Run continues the conversation until New conversation. Replies use liquid-audio\'s system prompt, `Respond with interleaved text and audio.`"},{"id":"lfm2-audio-jp-tts","display_name":"LFM2.5-Audio 1.5B JP (tts, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-JP-GGUF","task":"tts","mode":"offline","download_id":"lfm2_audio_1_5b_jp_q8_0","min_vram_gb":4,"builtin_voices":[],"default_voice":"","default_text":"今日は天気がいいので、公園まで散歩に行きました。","input_hint_en":"**LFM2.5-Audio JP** (community): Liquid AI\'s Japanese speech from Liquid\'s published GGUFs, in the checkpoint\'s one voice; no reference audio."},{"id":"liveavatar","display_name":"LiveAvatar (audio to video, 社区)","display_name_en":"LiveAvatar (audio to video, community)","family":"liveavatar","path":"models/LiveAvatar-GGUF","task":"gen","mode":"offline","download_id":"liveavatar_nvfp4_lora","default_text":"A cheerful green cyclops baker in a warm rustic bakery, smiling and speaking to the camera while holding a tray of freshly baked pies. High-quality animated film style, expressive face, natural gestures, warm cinematic lighting.","min_vram_gb":24,"input_hint":"**LiveAvatar**(社区模型):上传驱动音频和参考人物图像,再输入场景描述以生成动画视频。","input_hint_en":"**LiveAvatar** (community): upload driving audio and a reference portrait, then describe the subject and scene to generate an animated video."},{"id":"outetts","display_name":"Llama-OuteTTS 1.0 1B (tts 克隆, 社区)","display_name_en":"Llama-OuteTTS 1.0 1B (tts + clone, community)","family":"outetts","path":"models/Llama-OuteTTS-1.0-1B","task":"tts","mode":"offline","download_id":"outetts_1_0_1b","min_vram_gb":4,"input_hint":"**OuteTTS 1.0 1B**(社区模型):23 种语言,DAC 编解码;上传参考音色即克隆。","input_hint_en":"**OuteTTS 1.0 1B** (community): 23 languages, IBM DAC codec. Upload a reference voice to clone."},{"id":"magpie-tts","display_name":"MagpieTTS Multilingual 357M v2607 (tts, preset voices)","display_name_en":"MagpieTTS Multilingual 357M v2607 (tts, preset voices)","family":"magpie_tts","path":"models/MagpieTTS-Multilingual-357M-GGUF","task":"tts","mode":"offline","download_id":"magpie_tts_q8_0","min_vram_gb":4,"input_hint":"**MagpieTTS**:多语种离线 TTS;使用打包 speaker map 里的 `voice_id`,不需要上传参考音频。当前 GGUF 包不包含日语 phoneme 表,因此日语路径不可用。","input_hint_en":"**MagpieTTS**: multilingual offline TTS with packaged speaker prompts selected by `voice_id`; no reference upload is needed. The current GGUF package does not include the Japanese phoneme table, so Japanese is not available."},{"id":"marblenet-vad","display_name":"MarbleNet VAD (vad, bundled)","family":"marblenet_vad","path":"assets/framework/models/marblenet_vad","task":"vad","mode":"offline","min_vram_gb":1},{"id":"maya1","display_name":"Maya1","family":"maya1","task":"tts","mode":"offline","path":"models/Maya1-GGUF/maya1-q8_0.gguf","download_id":"maya1_q8_0","arena":false},{"id":"meanvc2","display_name":"MeanVC2 (voice conversion)","display_name_en":"MeanVC2 (voice conversion)","family":"meanvc2","path":"models/MeanVC2-GGUF/meanvc2-120ms-40ms-fp32.gguf","task":"vc","mode":"offline","download_id":"meanvc2_120ms_40ms_f32","min_vram_gb":6,"input_hint":"**MeanVC2**:上传源语音和目标音色参考;默认 120 ms / 40 ms checkpoint 使用 F32 GGUF。","input_hint_en":"**MeanVC2**: upload source speech and a target-voice reference. The default 120 ms / 40 ms checkpoint uses F32 GGUF."},{"id":"mel-band-roformer","display_name":"Mel-Band RoFormer (sep 人声分离)","display_name_en":"Mel-Band RoFormer (vocal separation)","family":"mel_band_roformer","path":"models/mel-roformer-mlx","task":"sep","mode":"offline","download_id":"mel_band_roformer","min_vram_gb":3},{"id":"micro-wake-word","display_name":"microWakeWord (Okay Nabu)","family":"micro_wake_word","path":"models/MicroWakeWord-GGUF/micro-wake-word-okay-nabu-f32.gguf","task":"wake","mode":"offline","download_id":"micro_wake_word_okay_nabu_f32"},{"id":"midashenglm-gen","display_name":"MiDashengLM-Gen (audio generation)","family":"midashenglm_gen","path":"models/MiDashengLM-Gen-GGUF/midashenglm-gen-q8_0.gguf","task":"gen","mode":"offline","download_id":"midashenglm_gen_q8_0","min_vram_gb":8,"input_hint_en":"**MiDashengLM-Gen**: text-conditioned audio generation. The duration field controls the generation budget."},{"id":"minimax-h3","display_name":"MiniMax-H3 Q4 (sound generation)","family":"minimax_h3","path":"models/MiniMax-H3-Q4-GGUF/dit.gguf","task":"gen","mode":"offline","download_id":"minimax_h3","min_vram_gb":20,"default_options":{"num_inference_steps":12,"height":32,"width":32,"num_frames":241,"guidance_scale":1,"dit_acceleration":"none","return_video":false},"input_hint_en":"MiniMax-H3 uses a joint audio/video DiT. The default Q4 DiT is the quality-first choice; the optional CUDA-only INT8 ConvRot DiT trades slightly more VRAM for higher speed. Native Studio uses 12 denoising steps, a 32x32 latent canvas, quality-first full-DiT execution, and disables video decoding for practical audio-only generation on a 24 GB GPU."},{"id":"minimax-music3","display_name":"MiniMax-Music3 (song gen)","family":"minimax_music3","path":"models/MiniMax-Music3-GGUF","task":"gen","mode":"offline","download_id":"minimax_music3_q4_0","min_vram_gb":12},{"id":"miocodec","display_name":"MioCodec (vc; codec dependency)","family":"miocodec","path":"models/MioCodec-25Hz-44.1kHz-v2","task":"vc","mode":"offline","download_id":"miocodec_25hz_44k_v2","min_vram_gb":3},{"id":"miotts","display_name":"MioTTS 1.7B (tts; needs MioCodec)","family":"miotts","path":"models/MioTTS-1.7B","task":"tts","mode":"offline","download_id":"miotts_1_7b","min_vram_gb":8},{"id":"moonshine-asr-medium","display_name":"Moonshine Streaming Medium (asr, GGUF Q8)","display_name_en":"Moonshine Streaming Medium (asr, GGUF Q8)","family":"moonshine_asr","path":"models/Moonshine-Streaming-GGUF/moonshine-streaming-medium-q8_0.gguf","task":"asr","mode":"offline","download_id":"moonshine_streaming_medium_q8_0","min_vram_gb":2,"input_hint":"**Moonshine Streaming Medium**:英语 ASR,GGUF Q8 包;支持离线与流式模式。","input_hint_en":"**Moonshine Streaming Medium**: English ASR GGUF Q8 package with offline and streaming support."},{"id":"moonshine-asr-small","display_name":"Moonshine Streaming Small (asr, GGUF Q8)","display_name_en":"Moonshine Streaming Small (asr, GGUF Q8)","family":"moonshine_asr","path":"models/Moonshine-Streaming-GGUF/moonshine-streaming-small-q8_0.gguf","task":"asr","mode":"offline","download_id":"moonshine_streaming_small_q8_0","min_vram_gb":2,"input_hint":"**Moonshine Streaming Small**:英语 ASR,GGUF Q8 包;支持离线与流式模式。","input_hint_en":"**Moonshine Streaming Small**: English ASR GGUF Q8 package with offline and streaming support."},{"id":"moonshine-asr-tiny","display_name":"Moonshine Streaming Tiny (asr, GGUF Q8)","display_name_en":"Moonshine Streaming Tiny (asr, GGUF Q8)","family":"moonshine_asr","path":"models/Moonshine-Streaming-GGUF/moonshine-streaming-tiny-q8_0.gguf","task":"asr","mode":"offline","download_id":"moonshine_streaming_tiny_q8_0","min_vram_gb":1,"input_hint":"**Moonshine Streaming Tiny**:英语 ASR,轻量 GGUF Q8 包;支持离线与流式模式。","input_hint_en":"**Moonshine Streaming Tiny**: lightweight English ASR GGUF Q8 package with offline and streaming support."},{"id":"moss-transcribe-diarize","display_name":"MOSS-Transcribe-Diarize","family":"moss_transcribe_diarize","path":"models/MOSS-Transcribe-Diarize-GGUF","task":"asr","mode":"offline","download_id":"moss_transcribe_diarize_bf16"},{"id":"moss-tts-v15","display_name":"MOSS-TTS v1.5 8B (tts 克隆, 社区)","display_name_en":"MOSS-TTS v1.5 8B (tts + clone, community)","family":"moss_tts_v15","path":"models/MOSS-TTS-v1.5-GGUF/moss_tts_v15_q8_0_codec_f16.gguf","task":"tts","mode":"offline","download_id":"moss_tts_v15_q8_0_codec_f16","min_vram_gb":18,"input_hint":"**MOSS-TTS v1.5 8B**(社区模型):中英 TTS;上传短参考音频进行声音克隆,留空则使用模型生成的音色。Q8 克隆约需 18 GB 显存。","input_hint_en":"**MOSS-TTS v1.5 8B** (community): English/Chinese TTS. Upload a short reference clip for voice cloning, or leave it empty for a model-generated voice. Q8 cloning needs about 18 GB VRAM."},{"id":"moss-tts-local","display_name":"MOSS-TTS-Local v1.5 (tts)","family":"moss_tts_local","path":"models/MOSS-TTS-Local-Transformer-v1.5","task":"tts","mode":"offline","download_id":"moss_tts_local_v1_5","min_vram_gb":8},{"id":"moss-tts-nano","display_name":"MOSS-TTS-Nano 100M (tts)","family":"moss_tts_nano","path":"models/MOSS-TTS-Nano-100M","task":"tts","mode":"offline","download_id":"moss_tts_nano_100m","min_vram_gb":2},{"id":"moss-ttsd","display_name":"MOSS-TTSD","family":"moss_ttsd","task":"tts","mode":"offline","path":"models/MOSS-TTSD-GGUF/moss_ttsd_q8_0_codec_f16.gguf","download_id":"moss_ttsd_q8_0_codec_f16","arena":false,"default_text":"[S1] Hello, how are you? [S2] I am doing well, thank you."},{"id":"moss-voicegen","display_name":"MOSS-VoiceGenerator","family":"moss_voicegen","task":"vdes","mode":"offline","path":"models/MOSS-VoiceGenerator-GGUF/moss_voicegen_bf16_codec_f16_decode.gguf","download_id":"moss_voicegen_bf16_codec_f16_decode","arena":false},{"id":"mossformer2","display_name":"MossFormer2 (two-speaker separation)","family":"mossformer2","path":"models/MossFormer2-GGUF/mossformer2-ss-16k-f32.gguf","task":"sep","mode":"offline","download_id":"mossformer2_ss_16k_f32"},{"id":"muscriptor-small","display_name":"MuScriptor Small (audio to MIDI)","family":"muscriptor","path":"models/MuScriptor-Small-GGUF","task":"midi","mode":"offline","download_id":"muscriptor_small_f32","min_vram_gb":4},{"id":"nemotron-3-diar","display_name":"Nemotron 3 Diarization","family":"nemotron_3_diar","path":"models/Nemotron-3-Diarization-GGUF/nemotron-3-diarization-bf16.gguf","task":"diar","mode":"offline","download_id":"nemotron_3_diar_bf16","min_vram_gb":2,"input_hint_en":"**Nemotron 3 Diarization**: upload speech audio to produce speaker turns for up to eight speakers. It supports offline and streaming diarization."},{"id":"nemotron-asr","display_name":"Nemotron 3.5 ASR 0.6B (asr, 100+语种)","display_name_en":"Nemotron 3.5 ASR 0.6B (asr, 100+ languages)","family":"nemotron_asr","path":"models/nemotron-3.5-asr-streaming-0.6b","task":"asr","mode":"offline","download_id":"nemotron_asr","min_vram_gb":4,"input_hint":"**Nemotron ASR**:100+ 语种,语种码为 BCP-47(如 en-US / zh-CN),留空=auto;模型自带长音频处理。","input_hint_en":"**Nemotron ASR**: supports more than 100 languages using BCP-47 codes such as en-US or zh-CN. Leave language blank for automatic detection; long audio is handled by the model."},{"id":"neutts-2e","display_name":"NeuTTS 2E (tts, preset voices)","family":"neutts","path":"models/NeuTTS-2E-GGUF","task":"tts","mode":"offline","download_id":"neutts_2e_orig","min_vram_gb":4},{"id":"niagara-asr-19m","display_name":"Niagara ASR 19M (asr)","display_name_en":"Niagara ASR 19M (asr)","family":"niagara_asr","path":"models/Niagara-ASR-GGUF/niagara-19m-batch.en-f32.gguf","task":"asr","mode":"offline","download_id":"niagara_19m_f32","min_vram_gb":1,"input_hint":"**Niagara ASR 19M**:ABR 英语离线 ASR,F32 GGUF 权重。","input_hint_en":"**Niagara ASR 19M**: ABR English offline ASR with F32 GGUF weights."},{"id":"niagara-asr-38m","display_name":"Niagara ASR 38M (asr)","display_name_en":"Niagara ASR 38M (asr)","family":"niagara_asr","path":"models/Niagara-ASR-GGUF/niagara-38m-batch.en-f32.gguf","task":"asr","mode":"offline","download_id":"niagara_38m_f32","min_vram_gb":1,"input_hint":"**Niagara ASR 38M**:ABR 英语离线 ASR,F32 GGUF 权重。","input_hint_en":"**Niagara ASR 38M**: ABR English offline ASR with F32 GGUF weights."},{"id":"omnivoice","display_name":"OmniVoice (tts)","family":"omnivoice","path":"models/OmniVoice","task":"tts","mode":"offline","download_id":"omnivoice","min_vram_gb":10},{"id":"open-wake-word","display_name":"OpenWakeWord (Alexa)","family":"open_wake_word","path":"models/OpenWakeWord-GGUF/open-wake-word-alexa-f32.gguf","task":"wake","mode":"offline","download_id":"open_wake_word_alexa_f32"},{"id":"orukeet","display_name":"Orukeet r3 (asr, Parakeet 微调)","display_name_en":"Orukeet r3 (asr, Parakeet fine-tune)","family":"parakeet_tdt","path":"models/Orukeet-GGUF/orukeet-q8_0.gguf","task":"asr","mode":"offline","download_id":"orukeet_q8_0","min_vram_gb":4,"input_hint":"**Orukeet r3**:Parakeet-TDT 0.6B v3 微调权重,同引擎/同分词器;CC BY-SA 4.0,留空=自动语种。","input_hint_en":"**Orukeet r3**: fine-tuned Parakeet-TDT 0.6B v3 weights on the same engine and tokenizer; CC BY-SA 4.0, leave language empty for auto."},{"id":"owsm-base","display_name":"OWSM v4 Base 102M","family":"owsm","path":"models/OWSM-GGUF/owsm-v4-base-102m-f32.gguf","task":"asr","mode":"offline","download_id":"owsm_v4_base_102m_f32"},{"id":"owsm-medium","display_name":"OWSM v4 Medium 1B","family":"owsm","path":"models/OWSM-GGUF/owsm-v4-medium-1b-f32.gguf","task":"asr","mode":"offline","download_id":"owsm_v4_medium_1b_f32"},{"id":"owsm-small","display_name":"OWSM v4 Small 370M","family":"owsm","path":"models/OWSM-GGUF/owsm-v4-small-370m-f32.gguf","task":"asr","mode":"offline","download_id":"owsm_v4_small_370m_f32"},{"id":"owsm-ctc","display_name":"OWSM-CTC v4 1B","family":"owsm_ctc","path":"models/OWSM-CTC-GGUF/owsm-ctc-v4-1b-f32.gguf","task":"asr","mode":"offline","download_id":"owsm_ctc_v4_1b_f32"},{"id":"parakeet-tdt","display_name":"Parakeet-TDT 0.6B v3 (asr, 流式)","display_name_en":"Parakeet-TDT 0.6B v3 (asr + streaming)","family":"parakeet_tdt","path":"models/parakeet-tdt-0.6b-v3","task":"asr","mode":"offline","download_id":"parakeet_tdt","min_vram_gb":4,"input_hint":"**Parakeet-TDT**:离线/长音频/流式 ASR;支持多种欧洲语言,留空=自动。","input_hint_en":"**Parakeet-TDT**: offline, long-form and streaming ASR for many European languages; leave language empty for auto."},{"id":"personaplex","display_name":"PersonaPlex 7B v1 (speech conversation)","display_name_en":"PersonaPlex 7B v1 (speech conversation)","family":"personaplex","path":"models/PersonaPlex-GGUF","task":"s2s","mode":"offline","download_id":"personaplex_7b_v1_q4_k","min_vram_gb":8,"request_options":["voice_id","system_prompt","temperature","text_temperature","top_k","text_top_k","do_sample","seed"],"input_hint":"**PersonaPlex**:上传用户语音,模型返回语音回复;文本框可填写 assistant system/persona prompt;`voice_id` 选择打包音色,也可上传参考音色覆盖。","input_hint_en":"**PersonaPlex**: upload user speech and receive a spoken response. The text box provides the assistant system/persona prompt; `voice_id` selects a packaged voice, and an uploaded reference voice overrides it."},{"id":"piper-tts","display_name":"Piper Lessac Medium (tts 英语, 社区)","display_name_en":"Piper Lessac Medium (en tts, community)","family":"piper_tts","path":"models/Piper-TTS-GGUF/piper-en-us-lessac-medium-orig.gguf","task":"tts","mode":"offline","download_id":"piper_lessac_medium_orig","min_vram_gb":1,"input_hint":"**Piper Lessac Medium**(社区模型):轻量英语 TTS,使用打包的 Lessac 音色,不需要上传参考音频。","input_hint_en":"**Piper Lessac Medium** (community): lightweight English TTS with the packaged Lessac voice; no reference audio is needed."},{"id":"plapre","display_name":"Plapre 3 (Danish TTS)","family":"plapre","path":"models/Plapre-3-GGUF/plapre-3-bf16.gguf","task":"tts","mode":"offline","download_id":"plapre_3_bf16","default_text":"Godmorgen. Solen skinner, og vi tager en tur til havnen."},{"id":"pocket-tts","display_name":"Pocket TTS (tts)","family":"pocket_tts","path":"models/pocket-tts","task":"tts","mode":"offline","download_id":"pocket_tts","min_vram_gb":2},{"id":"pulsevad-2.1k","display_name":"PulseVAD 2.1K","family":"pulsevad","path":"models/PulseVAD-GGUF","task":"vad","mode":"offline","download_id":"pulsevad_2_1k_f32"},{"id":"pulsevad-81k","display_name":"PulseVAD 81K","family":"pulsevad","path":"models/PulseVAD-GGUF","task":"vad","mode":"offline","download_id":"pulsevad_81k_f32"},{"id":"qwen3-forced-aligner","display_name":"Qwen3 Forced Aligner (align)","family":"qwen3_forced_aligner","path":"models/Qwen3-ForcedAligner-0.6B","task":"align","mode":"offline","download_id":"qwen3_forced_aligner_0_6b","min_vram_gb":3},{"id":"qwen3-asr","display_name":"Qwen3-ASR 0.6B (asr)","family":"qwen3_asr","path":"models/Qwen3-ASR-0.6B","task":"asr","mode":"offline","download_id":"qwen3_asr_0_6b","min_vram_gb":3},{"id":"qwen3-asr-1.7b","display_name":"Qwen3-ASR 1.7B HF (asr)","family":"qwen3_asr","path":"models/Qwen3-ASR-1.7B-hf","task":"asr","mode":"offline","download_id":"qwen3_asr_1_7b_hf","min_vram_gb":6,"input_hint":"**Qwen3-ASR 1.7B**(HF 原生权重,免转换):精度高于 0.6B;长音频自动分段转写;8G 卡显存偏紧,长音频建议先短段试跑。","input_hint_en":"**Qwen3-ASR 1.7B**: native Hugging Face weights with no conversion required. It is more accurate than the 0.6B model and automatically chunks long audio; test short clips first on an 8 GB GPU."},{"id":"qwen3-tts","display_name":"Qwen3-TTS 0.6B (tts)","family":"qwen3_tts","path":"models/Qwen3-TTS-12Hz-0.6B-Base","task":"tts","mode":"offline","download_id":"qwen3_tts_0_6b_base","min_vram_gb":5},{"id":"qwen3-tts-1.7b","display_name":"Qwen3-TTS 1.7B Base (tts)","family":"qwen3_tts","path":"models/Qwen3-TTS-12Hz-1.7B-Base","task":"tts","mode":"offline","download_id":"qwen3_tts_1_7b_base","min_vram_gb":8},{"id":"qwen3-tts-1.7b-custom","display_name":"Qwen3-TTS 1.7B CustomVoice (tts)","family":"qwen3_tts","path":"models/Qwen3-TTS-12Hz-1.7B-CustomVoice","task":"tts","mode":"offline","download_id":"qwen3_tts_1_7b_custom_voice","min_vram_gb":8},{"id":"qwen3-tts-1.7b-vdesign","display_name":"Qwen3-TTS 1.7B VoiceDesign (vdes)","family":"qwen3_tts","path":"models/Qwen3-TTS-12Hz-1.7B-VoiceDesign","task":"vdes","mode":"offline","download_id":"qwen3_tts_1_7b_voice_design","min_vram_gb":8,"input_hint":"**Qwen3-TTS VoiceDesign**:在『音色描述』里用文字描述想要的声音(如“低沉磁性的中年男声,语速偏慢”),配上要念的文本即可,无需参考音频。","input_hint_en":"**Qwen3-TTS VoiceDesign**: describe the desired voice, then enter the text to synthesize. No reference recording is required."},{"id":"reuse","display_name":"RE-USE","family":"reuse","path":"models/RE-USE-GGUF/reuse-f32.gguf","task":"s2s","mode":"offline","download_id":"reuse_f32","workflow":"enhancement"},{"id":"rnnoise","display_name":"RNNoise","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/rnnoise/rnnoise10Gb_15.safetensors","load_options":{"utility":"rnnoise"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/rnnoise/rnnoise10Gb_15.safetensors"},{"id":"rvc","display_name":"RVC (vc, GGUF F16)","display_name_en":"RVC (voice conversion, GGUF F16)","family":"rvc","path":"models/RVC-GGUF","task":"vc","mode":"offline","download_id":"rvc_f16","min_vram_gb":4,"input_hint":"**RVC**:所选 GGUF 即目标音色;上传源语音即可转换;索引/音高等选项可用 JSON 传。","input_hint_en":"**RVC**: the selected GGUF is the target voice; upload source speech to convert. Index and pitch options can be passed through the JSON box."},{"id":"sam-audio-base","display_name":"SAM Audio Base","family":"sam_audio","task":"s2s","workflow":"separation","mode":"offline","path":"models/SAM-Audio-GGUF/sam-audio-base-q8_0.gguf","download_id":"sam_audio_base_q8_0","default_text":"man speaking"},{"id":"sam-audio-large","display_name":"SAM Audio Large","family":"sam_audio","task":"s2s","workflow":"separation","mode":"offline","path":"models/SAM-Audio-GGUF/sam-audio-large-q8_0.gguf","download_id":"sam_audio_large_q8_0","default_text":"man speaking"},{"id":"sam-audio-small","display_name":"SAM Audio Small","family":"sam_audio","task":"s2s","workflow":"separation","mode":"offline","path":"models/SAM-Audio-GGUF/sam-audio-small-q8_0.gguf","download_id":"sam_audio_small_q8_0","default_text":"man speaking"},{"id":"samsone-99m","display_name":"SAMSONE 99M","family":"samsone","task":"asr","workflow":"analysis","arena":false,"mode":"offline","path":"models/Samsone-GGUF/samsone-99m-q8_0.gguf","download_id":"samsone_99m_q8_0"},{"id":"samsone-134m","display_name":"SAMSONE 134M","family":"samsone","task":"asr","workflow":"analysis","arena":false,"mode":"offline","path":"models/Samsone-GGUF/samsone-134m-q8_0.gguf","download_id":"samsone_134m_q8_0"},{"id":"samsone-356m","display_name":"SAMSONE 356M","family":"samsone","task":"asr","workflow":"analysis","arena":false,"mode":"offline","path":"models/Samsone-GGUF/samsone-356m-q8_0.gguf","download_id":"samsone_356m_q8_0"},{"id":"sanotts","display_name":"sanoTTS voice family (tts, community)","family":"sanotts","path":"models/sanoTTS-heart-nano-GGUF/heart-nano-f32.gguf","task":"tts","mode":"offline","download_id":"sanotts_heart_nano_orig","min_vram_gb":1},{"id":"seed-vc-svc","display_name":"Seed-VC (svc 歌声转换)","display_name_en":"Seed-VC (singing voice conversion)","family":"seed_vc","path":"models/SeedVC-MLX","task":"svc","mode":"offline","download_id":"seed_vc","min_vram_gb":4,"input_hint":"**Seed-VC 歌声转换 (svc)**:上传源歌声 + 目标歌手参考音色,默认 route=v1_svc(带 F0 条件)。可在『其它参数(JSON)』里调 `auto_f0_adjust` / `semi_tone_shift` / `f0_condition`。","input_hint_en":"**Seed-VC singing conversion**: upload source singing and a target-singer reference. The default route is v1_svc with F0 conditioning."},{"id":"seed-vc","display_name":"Seed-VC (vc 语音转换)","display_name_en":"Seed-VC (voice conversion)","family":"seed_vc","path":"models/SeedVC-MLX","task":"vc","mode":"offline","download_id":"seed_vc","min_vram_gb":4},{"id":"sense-asr","display_name":"SenseVoice-Small (asr, 流式, 社区)","display_name_en":"SenseVoice-Small (asr + streaming, community)","family":"sense_asr","path":"models/SenseVoice-Small-GGUF","task":"asr","mode":"offline","download_id":"sensevoice_small_q8","min_vram_gb":4,"input_hint":"**SenseVoice-Small**(社区模型):多语种 ASR,事件/情感/语言标签,ITN 可开关;离线与流式模式。","input_hint_en":"**SenseVoice-Small** (community): multilingual ASR with event/emotion/language tags, optional ITN; offline and streaming modes."},{"id":"sheetsage2","display_name":"SheetSage2 (audio to ABC)","family":"sheetsage2","path":"models/SheetSage2-GGUF/sheetsage2-orig.gguf","task":"midi","mode":"offline","download_id":"sheetsage2_orig","min_vram_gb":8,"input_hint_en":"**SheetSage2**: upload a song or instrumental recording to transcribe it into an ABC score artifact."},{"id":"sherpa-kws","display_name":"Sherpa Zipformer KWS (Chinese / English)","family":"sherpa_kws","path":"models/Sherpa-KWS-GGUF/sherpa-kws-zipformer-zh-en-3m-f32.gguf","task":"wake","mode":"offline","download_id":"sherpa_kws_zipformer_zh_en_3m_f32"},{"id":"sidon","display_name":"Sidon","family":"sidon","path":"models/Sidon-GGUF/sidon-v0.1-f32.gguf","task":"s2s","mode":"offline","download_id":"sidon_f32","workflow":"enhancement"},{"id":"silero-vad","display_name":"Silero VAD (vad, bundled)","family":"silero_vad","path":"assets/framework/models/silero_vad","task":"vad","mode":"offline","min_vram_gb":1},{"id":"smart-turn","display_name":"Smart Turn v3.2","family":"smart_turn","path":"models/Smart-Turn-v3-GGUF/smart-turn-v3.2-f32.gguf","task":"turn","mode":"offline","download_id":"smart_turn_v3_2_f32","workflow":"analysis"},{"id":"soprano-tts","display_name":"Soprano TTS (tts)","family":"soprano_tts","path":"models/Soprano-1.1-80M-GGUF","task":"tts","mode":"offline","download_id":"soprano_1_1_80m_q8_0","min_vram_gb":1},{"id":"sopro-tts","display_name":"Sopro V2 Turbo (tts + clone)","family":"sopro_tts","path":"models/sopro-v2-turbo-GGUF/sopro-v2-turbo-f16.gguf","task":"tts","mode":"offline","download_id":"sopro_v2_turbo_f16","min_vram_gb":2,"request_options":["language","temperature","top_p","top_k","num_inference_steps","max_seconds","min_seconds","ref_seconds","text_chunk_size","seed"]},{"id":"sortformer-diar","display_name":"Sortformer Diarization 4spk (diar)","family":"sortformer_diar","path":"models/diar_sortformer_4spk-v1","task":"diar","mode":"offline","download_id":"sortformer_diar_4spk_v1","min_vram_gb":2},{"id":"stable-audio-medium","display_name":"Stable Audio 3 Medium (gen)","family":"stable_audio","path":"models/stable-audio-3-medium","task":"gen","mode":"offline","download_id":"stable_audio_3_medium","session_options":{"stable_audio.mem_saver":"true"},"min_vram_gb":10},{"id":"stable-audio-small-music","display_name":"Stable Audio 3 Small Music (gen)","family":"stable_audio","path":"models/stable-audio-3-small-music","task":"gen","mode":"offline","download_id":"stable_audio_3_small_music","min_vram_gb":4},{"id":"stable-audio-small-sfx","display_name":"Stable Audio 3 Small SFX (gen)","family":"stable_audio","path":"models/stable-audio-3-small-sfx","task":"gen","mode":"offline","download_id":"stable_audio_3_small_sfx","min_vram_gb":4},{"id":"supertonic","display_name":"Supertonic 3 (tts 预置音色/多语种)","display_name_en":"Supertonic 3 (tts, preset voices)","family":"supertonic","path":"models/supertonic-3","task":"tts","mode":"offline","download_id":"supertonic_3","min_vram_gb":2},{"id":"tf-gridnet","display_name":"TF-GridNet (two-speaker separation)","family":"tf_gridnet","path":"models/TF-GridNet-GGUF/tf-gridnet-wsj0-2mix-f32.gguf","task":"sep","mode":"offline","download_id":"tf_gridnet_wsj0_2mix_f32"},{"id":"tone-color-vc","display_name":"Tone Color VC","family":"tone_color_vc","task":"vc","mode":"offline","path":"models/Tone-Color-VC-GGUF/tone-color-vc-f32.gguf","download_id":"tone_color_vc_f32"},{"id":"universr-audio","display_name":"UniverSR Audio","family":"universr","path":"models/UniverSR-GGUF","task":"s2s","mode":"offline","download_id":"universr_audio_orig"},{"id":"universr-speech","display_name":"UniverSR Speech","family":"universr","path":"models/UniverSR-GGUF","task":"s2s","mode":"offline","download_id":"universr_speech_orig"},{"id":"vevo2-s2s","display_name":"Vevo2 (s2s 语音编辑, GGUF Q8)","display_name_en":"Vevo2 (speech editing, GGUF Q8)","family":"vevo2","path":"models/Vevo2-GGUF","task":"s2s","mode":"offline","download_id":"vevo2_gguf","min_vram_gb":6,"input_hint":"**Vevo2 语音编辑 (s2s)**:上传要编辑的源语音,并在『其它参数(JSON)』里填 `{\\"target_text\\": \\"替换后的完整句子\\"}`(编辑保持原说话人音色,可不上传目标音色)。","input_hint_en":"**Vevo2 speech editing**: upload source speech and set target_text to the complete replacement sentence in Additional options. Editing preserves the original speaker and does not require a target-voice reference."},{"id":"vevo2-svc","display_name":"Vevo2 (svc 歌声转换, GGUF Q8)","display_name_en":"Vevo2 (singing voice conversion, GGUF Q8)","family":"vevo2","path":"models/Vevo2-GGUF","task":"svc","mode":"offline","download_id":"vevo2_gguf","min_vram_gb":6,"input_hint":"**Vevo2 歌声转换 (svc)**:上传源歌声 + 目标歌手参考音色,默认 route=style_preserved_svc。style_converted_svc / singing_style_conversion 等风格转换 route 需在『其它参数(JSON)』里补 `style_ref`(服务器本地 wav 路径)/ `style_ref_text` / `target_text`。","input_hint_en":"**Vevo2 singing conversion**: upload source singing and a target-singer reference. The default route is style_preserved_svc; style-conversion routes also accept style_ref, style_ref_text and target_text in Additional options."},{"id":"vevo2","display_name":"Vevo2 (vc 语音转换, GGUF Q8)","display_name_en":"Vevo2 (voice conversion, GGUF Q8)","family":"vevo2","path":"models/Vevo2-GGUF","task":"vc","mode":"offline","download_id":"vevo2_gguf","min_vram_gb":6},{"id":"vibevoice","display_name":"VibeVoice 1.5B/7B (tts, long-form/multi-speaker)","family":"vibevoice","path":"models/VibeVoice-1.5B","task":"tts","mode":"offline","download_id":"vibevoice_1_5b","min_vram_gb":7},{"id":"vibevoice-7b","display_name":"VibeVoice 7B (tts, long-form/multi-speaker)","family":"vibevoice","path":"models/VibeVoice-7B-GGUF","task":"tts","mode":"offline","download_id":"vibevoice_7b_q8_0","min_vram_gb":16},{"id":"vibevoice-asr","display_name":"VibeVoice ASR (asr, 多语种+说话人分段)","display_name_en":"VibeVoice ASR (asr, multilingual + speaker turns)","family":"vibevoice_asr","path":"models/VibeVoice-ASR","task":"asr","mode":"offline","download_id":"vibevoice_asr","min_vram_gb":20,"input_hint":"**VibeVoice ASR**:自动语种,可输出分段/说话人轮次;文本框可填上下文提示(如 The recording is a meeting conversation.)。权重 17.3G,8G 卡跑不动。","input_hint_en":"**VibeVoice ASR**: automatic language detection with segment and speaker-turn output. The text box accepts a context prompt. Its 17.3 GB weights require substantially more than 8 GB VRAM."},{"id":"vibevoice-asr-streaming-1.5b","display_name":"VibeVoice ASR Streaming 1.5B (asr, 多语种+流式)","display_name_en":"VibeVoice ASR Streaming 1.5B (asr, multilingual + streaming)","family":"vibevoice_asr_streaming","path":"models/VibeVoice-ASR-Streaming-1.5B-GGUF/vibevoice-asr-streaming-1.5b-q8_0.gguf","task":"asr","mode":"offline","download_id":"vibevoice_asr_streaming_1_5b_q8_0","min_vram_gb":6,"input_hint":"**VibeVoice ASR Streaming 1.5B**:7B 的较小版本,功能相同,显存占用更低,准确率略低;文本框可填上下文提示。","input_hint_en":"**VibeVoice ASR Streaming 1.5B**: the smaller sibling of the 7B with the same features, lower VRAM use, and somewhat lower accuracy. The text box accepts a context prompt."},{"id":"vibevoice-asr-streaming-7b","display_name":"VibeVoice ASR Streaming 7B (asr, 多语种+流式)","display_name_en":"VibeVoice ASR Streaming 7B (asr, multilingual + streaming)","family":"vibevoice_asr_streaming","path":"models/VibeVoice-ASR-Streaming-7B-GGUF/vibevoice-asr-streaming-7b-q8_0.gguf","task":"asr","mode":"offline","download_id":"vibevoice_asr_streaming_7b_q8_0","min_vram_gb":18,"input_hint":"**VibeVoice ASR Streaming 7B**:多语种 ASR,支持长音频流式解码和说话人轮次;文本框可填上下文提示。","input_hint_en":"**VibeVoice ASR Streaming 7B**: multilingual ASR with long-audio streaming decode and speaker-turn output. The text box accepts a context prompt."},{"id":"vieneu-tts","display_name":"VieNeu-TTS v3 Turbo (tts 越南语, 社区)","display_name_en":"VieNeu-TTS v3 Turbo (vi tts, community)","family":"vieneu_v3_turbo","path":"models/VieNeu-TTS-v3-Turbo","task":"tts","mode":"offline","download_id":"vieneu_v3_turbo_v3_turbo","min_vram_gb":4,"input_hint":"**VieNeu-TTS v3 Turbo**(社区模型):越南语 / 英语;上传参考音色即克隆。","input_hint_en":"**VieNeu-TTS v3 Turbo** (community): Vietnamese and English. Upload a reference voice to clone."},{"id":"voxcpm1","display_name":"VoxCPM1 0.5B (tts + clone)","family":"voxcpm1","path":"models/VoxCPM1-GGUF","task":"tts","mode":"offline","download_id":"voxcpm1_0_5b_q8_0","min_vram_gb":4},{"id":"voxcpm2","display_name":"VoxCPM2 (tts)","family":"voxcpm2","path":"models/VoxCPM2","task":"tts","mode":"offline","download_id":"voxcpm2","session_options":{"voxcpm2.weight_type":"q8_0"},"min_vram_gb":6},{"id":"voxtral-realtime","display_name":"Voxtral Mini 4B Realtime (asr, 自动语种+流式)","display_name_en":"Voxtral Mini 4B Realtime (asr, auto + streaming)","family":"voxtral_realtime","path":"models/Voxtral-Mini-4B-Realtime-2602-GGUF","task":"asr","mode":"offline","download_id":"voxtral_realtime","min_vram_gb":8},{"id":"voxtral-tts","display_name":"Voxtral 4B TTS","family":"voxtral_tts","path":"models/Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-bf16.gguf","task":"tts","mode":"offline","download_id":"voxtral_4b_tts_2603_bf16","default_text":"The next train leaves in ten minutes. Please wait by platform five."},{"id":"whistle-asr","display_name":"Whistle ASR","family":"whistle_asr","path":"models/Whistle-GGUF/whistle-f32.gguf","task":"asr","mode":"offline","download_id":"whistle_asr_f32"},{"id":"yue2","display_name":"Yue2 3B (song gen)","family":"yue2","path":"models/Yue2-3B-GGUF","task":"gen","mode":"offline","download_id":"yue2_main_q8_0","default_text":"[Verse]\\nSoft morning light is touching the window.\\nI hear the city waking below.\\n[Chorus]\\nStay with the rhythm, let it carry us home.\\nSing with the sunrise, we are never alone.","min_vram_gb":12,"input_hint_en":"**Yue2 3B**: provide lyrics and a style prompt. The default inference combo is Main Q8_0 + VAE F16; choose other main/VAE files from Model parameters before loading."},{"id":"zipenhancer","display_name":"ZipEnhancer","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/zipenhancer/zipenhancer.safetensors","load_options":{"utility":"zipenhancer"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/zipenhancer/zipenhancer.safetensors"},{"id":"zipvoice","display_name":"ZipVoice (中英零样本克隆)","display_name_en":"ZipVoice (zh/en zero-shot cloning)","family":"zipvoice","path":"models/ZipVoice-Distill-GGUF","task":"clon","mode":"offline","download_id":"zipvoice_distill_gguf","min_vram_gb":4,"input_hint":"**ZipVoice**:中/英零样本声音克隆(k2-fsa TTSZipformer flow-matching + Vocos,蒸馏版 8 步采样)。上传参考音频,并在『参考文本’里填入它的逐字转写——参考音频与参考文本必须配对;合成文本支持中文、英文及混排。权重 Apache-2.0。","input_hint_en":"**ZipVoice**: zero-shot voice cloning in zh/en (k2-fsa TTSZipformer flow matching + Vocos, distilled 8-step sampling). Upload a reference clip and put its exact transcript in the reference-text box — the clip and the transcript must match; synthesis text supports zh/en/mixed. Weights are Apache-2.0."}]')},T8={ming3_tts:[{name:"template_name",type:"text",label:"Prompt template",placeholder:"Automatic"},{name:"voice_id",type:"text",label:"IP voice name",placeholder:"US_James (IP template only)"},{name:"temperature",type:"number",label:"Temperature",default:0,minimum:0,step:.1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:2,step:.1},{name:"sigma",type:"number",label:"SDE noise scale",default:.25,minimum:0,step:.05},{name:"trim_silence",type:"bool",label:"Trim trailing silence",default:!0}],ming3_audio:[{name:"voice_id",type:"text",label:"Voice name",placeholder:"US_James"},{name:"prompt",type:"text",label:"Audio task prompt",placeholder:"Use task default"},{name:"system_prompt",type:"text",label:"System prompt"},{name:"enable_thinking",type:"bool",label:"Enable thinking",default:!1},{name:"max_audio_tokens",type:"number",label:"Maximum acoustic patches per chunk",default:1e3,minimum:1,step:1},{name:"temperature",type:"number",label:"Temperature",default:0,minimum:0,step:.1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:2,step:.1},{name:"disk_experts",scope:"session",session_option:"ming3_audio.disk_experts",type:"bool",label:"Offload expert weights",default:!1},{name:"pin_experts",scope:"session",session_option:"ming3_audio.pin_experts",type:"bool",label:"Keep experts in pinned host RAM",default:!1}],xtts_v2:[{name:"temperature",type:"slider",label:"Temperature",default:.75,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"Top-k",default:50,minimum:0,step:1},{name:"top_p",type:"slider",label:"Top-p",default:.85,minimum:0,maximum:1,step:.01},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:10,minimum:1,step:.5},{name:"max_mel_tokens",type:"number",label:"Maximum mel tokens",default:605,minimum:1,step:1}],latentsync:[{name:"num_inference_steps",type:"number",label:"Denoising steps",default:20,minimum:1,maximum:999,step:1},{name:"cache_interval",type:"number",label:"DeepCache interval",default:1,minimum:1,step:1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:1.5,minimum:0,step:.1},{name:"frames_per_chunk",type:"number",label:"Frames per chunk",default:16,minimum:1,maximum:24,step:1},{name:"fps",type:"number",label:"Frames per second",default:25,minimum:1,step:1},{name:"mem_saver",scope:"session",session_option:"latentsync.mem_saver",type:"bool",label:"Memory saver",default:!1}],ast_audioset:[{name:"top_k",type:"number",label:"Top classes",default:10,minimum:1,maximum:527,step:1}],ced:[{name:"top_k",type:"number",label:"Top classes",default:10,minimum:1,maximum:527,step:1}],fish_drama3:[{name:"text_chunk_size",type:"number",label:"Characters per chunk",default:128,minimum:1,step:1,info:"Smaller chunks reduce waveform-decoder peak memory; larger chunks reduce repeated prefills."},{name:"temperature",type:"slider",label:"Temperature",default:1,minimum:0,maximum:2,step:.05},{name:"top_p",type:"slider",label:"Top-p",default:.9,minimum:.01,maximum:1,step:.01},{name:"top_k",type:"number",label:"Top-k",default:4097,minimum:1,step:1},{name:"disk_experts",type:"bool",scope:"session",session_option:"fish_drama3.disk_experts",label:"Offload expert weights",default:!0,info:"Keep only selected expert weights on the GPU. Expert computation stays on the selected backend; changing this reloads the model."},{name:"pin_experts",type:"bool",scope:"session",session_option:"fish_drama3.pin_experts",label:"Preload experts in pinned host RAM",default:!0,info:"Requires expert offload. Faster uploads, but holds the full expert banks in pinned host RAM."},{name:"expert_cache_size",type:"number",scope:"session",session_option:"fish_drama3.expert_cache_size",label:"GPU expert slots per layer",default:8,minimum:8,maximum:256,step:1},{name:"context_length",type:"number",scope:"session",session_option:"fish_drama3.context_length",label:"Context capacity",default:4096,minimum:1,step:1,info:"Prompt and generated frames share this capacity, including all voice references and dialogue history."}],firered_vad:[{name:"threshold",type:"number",label:"Speech threshold",minimum:0,maximum:1,step:.05},{name:"min_silence_duration_ms",type:"number",label:"Minimum silence (ms)",default:200,minimum:0,step:10},{name:"speech_pad_ms",type:"number",label:"Speech padding (ms)",default:0,minimum:0,step:10}],hviske_asr_v6:[{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","silence","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s)",default:28,minimum:.001,maximum:30,step:.1},{name:"max_tokens",type:"number",label:"Maximum tokens",default:440,minimum:1,step:1},{name:"num_beams",type:"number",label:"Beam count",default:2,minimum:1,step:1},{name:"length_penalty",type:"number",label:"Length penalty",default:1,minimum:0,step:.1}],micro_wake_word:[{name:"threshold",type:"number",label:"Detection threshold",minimum:0,maximum:1,step:.05},{name:"sliding_window_size",type:"number",label:"Sliding window frames",minimum:1,step:1}],open_wake_word:[{name:"threshold",type:"number",label:"Detection threshold",default:.5,minimum:0,maximum:1,step:.05}],plapre:[{name:"temperature",type:"number",label:"Temperature",default:.8,minimum:0,step:.05},{name:"top_p",type:"number",label:"Top-p",default:.95,minimum:.01,maximum:1,step:.01},{name:"top_k",type:"number",label:"Top-k",default:50,minimum:-1,step:1},{name:"x_vector_only_mode",type:"bool",label:"Reference speaker embedding only",default:!1}],mossformer2:[{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s, 0 = whole recording)",default:2,minimum:0,step:.1},{name:"audio_chunk_overlap_sec",type:"number",label:"Chunk overlap (s)",default:.5,minimum:0,step:.1},{name:"normalize_output",type:"bool",label:"Normalize output",default:!0}],sherpa_kws:[{name:"keywords",type:"text",label:"Keyword tokens (one phrase per line)",lines:3,placeholder:"Leave empty to use embedded keywords"},{name:"max_active_paths",type:"number",label:"Active decoding paths",default:4,minimum:1,step:1},{name:"keywords_score",type:"number",label:"Keyword score",default:1,minimum:0,step:.1},{name:"keywords_threshold",type:"number",label:"Keyword threshold",default:.25,minimum:0,maximum:1,step:.05},{name:"num_trailing_blanks",type:"number",label:"Trailing blanks",default:1,minimum:0,step:1}],tf_gridnet:[{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s, 0 = whole recording)",default:2.4,minimum:0,step:.1},{name:"audio_chunk_overlap_sec",type:"number",label:"Chunk overlap (s)",default:1.6,minimum:0,step:.1},{name:"normalize_output",type:"bool",label:"Normalize output",default:!0}],voxtral_tts:[{name:"voice_id",type:"choice",label:"Voice preset",default:"casual_male",choices:["casual_female","casual_male","cheerful_female","neutral_female","neutral_male","pt_male","pt_female","nl_male","nl_female","it_male","it_female","fr_male","fr_female","es_male","es_female","de_male","de_female","ar_male","hi_male","hi_female"]},{name:"num_inference_steps",type:"number",label:"Diffusion steps",default:7,minimum:1,step:1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:1.2,minimum:0,step:.1},{name:"max_tokens",type:"number",label:"Maximum tokens",default:2048,minimum:1,step:1}],kugelaudio:[{name:"num_inference_steps",type:"number",label:"Diffusion steps",default:20,minimum:1,maximum:1e3,step:1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:3,minimum:0,step:.1},{name:"max_tokens",type:"number",label:"Maximum tokens",default:2048,minimum:1,step:1},{name:"do_sample",type:"bool",label:"Sample AR tokens",default:!1},{name:"temperature",type:"number",label:"Temperature",default:1,minimum:0,step:.1},{name:"text_chunk_size",type:"number",label:"Text chunk size",default:300,minimum:1,step:1},{name:"text_chunk_mode",type:"choice",label:"Text chunk mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],crisperwhisper:[{name:"transcription_mode",type:"choice",label:"Transcription mode",default:"verbatim",choices:["verbatim","intended","verbatimize"]},{name:"return_timestamps",type:"bool",label:"Word timestamps",default:!1},{name:"max_tokens",type:"number",label:"Maximum tokens",default:256,minimum:1,maximum:439,step:1},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s)",default:30,minimum:.02,maximum:30,step:.1},{name:"audio_chunk_overlap_sec",type:"number",label:"Chunk overlap (s)",default:4,minimum:0,step:.1}],index_echo:[{name:"target_language",type:"choice",label:"Translation language",default:"en",choices:["en","es","ja"]},{name:"max_text_tokens",type:"number",label:"Maximum text tokens",default:2e3,minimum:1,step:1},{name:"temperature",type:"number",label:"Temperature",default:0,minimum:0,maximum:2,step:.1},{name:"glossary",type:"text",label:"Glossary",default:""},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","quiet_energy","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s)",default:60,minimum:1,maximum:60,step:1}],audio_flamingo:[{name:"instruct",type:"text",label:"Question or instruction",default:"Transcribe the input speech.",lines:3},{name:"max_tokens",type:"number",label:"Maximum tokens",default:2048,minimum:1,step:1},{name:"do_sample",type:"bool",label:"Sample tokens",default:!1},{name:"temperature",type:"number",label:"Temperature",default:1,minimum:.01,step:.1},{name:"top_k",type:"number",label:"Top K",default:50,minimum:0,step:1},{name:"top_p",type:"number",label:"Top P",default:1,minimum:.01,maximum:1,step:.05},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:1,minimum:.01,step:.05}],owsm:[{name:"language",type:"text",label:"Input language (ISO 639-3)",default:"eng",placeholder:"eng, jpn, zho, auto"},{name:"target_language",type:"text",label:"Translation language (ISO 639-3)",default:""},{name:"return_timestamps",type:"bool",label:"Timestamp segments",default:!1},{name:"condition_on_previous_text",type:"bool",label:"Condition on previous text",default:!1},{name:"beam_size",type:"number",label:"Beam size",default:1,minimum:1,maximum:50002,step:1},{name:"max_tokens",type:"number",label:"Maximum tokens (0 = model limit)",default:0,minimum:0,maximum:374,step:1},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s)",default:30,minimum:.2,maximum:30,step:.1}],owsm_ctc:[{name:"language",type:"text",label:"Input language (ISO 639-3)",default:"eng",placeholder:"eng, jpn, zho, auto"},{name:"target_language",type:"text",label:"Translation language (ISO 639-3)",default:""},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","none"]}],reuse:[{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s, 0 = whole recording)",default:0,minimum:0,step:1},{name:"audio_chunk_overlap_sec",type:"number",label:"Chunk overlap (s)",default:1,minimum:0,step:.1}],smart_turn:[{name:"threshold",type:"number",label:"Completion threshold",default:.5,minimum:0,maximum:1,step:.05}],maya1:[{name:"instruct",type:"text",label:"Voice description",default:"Warm female voice with an American accent and conversational pacing.",lines:3},{name:"temperature",type:"number",label:"Temperature",default:.4,minimum:.01,step:.05},{name:"top_p",type:"number",label:"Top P",default:.9,minimum:0,maximum:1,step:.05},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:1.1,minimum:.01,step:.05}],gigaam_asr:[{name:"return_timestamps",type:"bool",label:"Word timestamps",default:!1},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","quiet_energy","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:25,minimum:.02,maximum:25,step:.1}],samsone:[{name:"instruct",type:"text",label:"Question or instruction",default:"describe the audio",lines:3},{name:"max_tokens",type:"number",label:"Maximum tokens",default:100,minimum:1,maximum:512,step:1}],sam_audio:[{name:"num_inference_steps",type:"number",label:"Inference steps",default:16,minimum:1,step:1},{name:"anchors",type:"text",label:"Time anchors (JSON)",default:"",placeholder:'[["+",0.5,2.0],["-",3.0,4.0]]'}],tone_color_vc:[{name:"temperature",type:"number",label:"Temperature",default:.3,minimum:0,step:.05}],moss_ttsd:[{name:"instruct",type:"text",label:"Delivery instruction",default:""},{name:"temperature",type:"number",label:"Temperature",default:1.5,minimum:0,step:.1},{name:"top_p",type:"number",label:"Top P",default:.6,minimum:0,maximum:1,step:.05},{name:"top_k",type:"number",label:"Top K",default:50,minimum:0,step:1},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:1.1,minimum:0,step:.05},{name:"max_frames",type:"number",label:"Maximum audio frames (0 = automatic)",default:0,minimum:0,step:1}],moss_voicegen:[{name:"temperature",type:"number",label:"Temperature",default:1.5,minimum:0,step:.1},{name:"top_p",type:"number",label:"Top P",default:.6,minimum:0,maximum:1,step:.05},{name:"top_k",type:"number",label:"Top K",default:50,minimum:0,step:1},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:1.1,minimum:0,step:.05}],canary_asr:[{name:"target_language",type:"choice",label:"Target language",default:"",choices:["","en","de","es","fr"]},{name:"pnc",type:"bool",label:"Punctuation and capitalization",default:!0},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:40,minimum:.02,maximum:40,step:.1}],cohere_asr:[{name:"pnc",type:"bool",label:"Punctuation and capitalization",default:!0},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","quiet_energy","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:35,minimum:.04,maximum:35,step:.1}],moss_transcribe_diarize:[{name:"instruct",type:"text",label:"Instruction",default:"",lines:3}],apollo:[{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:0,minimum:0,step:1},{name:"audio_chunk_overlap_sec",type:"number",label:"Audio chunk overlap (s)",default:1,minimum:0,step:.1},{name:"edge_pad_duration_sec",type:"number",label:"Edge padding (s)",default:0,minimum:0,step:.1}],universr:[{name:"input_sample_rate",type:"choice",label:"Input bandwidth (Hz)",default:"",choices:["",8e3,12e3,16e3,24e3]},{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:0,minimum:0,step:1},{name:"sampler_mode",type:"choice",label:"Sampler",default:"midpoint",choices:["euler","midpoint","rk4"]},{name:"num_inference_steps",type:"number",label:"Inference steps",default:4,minimum:1,step:1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:1.5,minimum:0,step:.1}],liveavatar:[{name:"reference_image_path",type:"text",label:"Reference image",default:""},{name:"generation_mode",type:"choice",label:"Generation mode",default:"offline",choices:["offline","liveavatar"]},{name:"height",type:"number",label:"Height",default:480,minimum:16,step:16,precision:0},{name:"width",type:"number",label:"Width",default:832,minimum:16,step:16,precision:0},{name:"num_frames",type:"number",label:"Frames per clip",default:48,minimum:1,step:1,precision:0},{name:"num_clips",type:"number",label:"Maximum clips",default:1,minimum:1,step:1,precision:0},{name:"num_inference_steps",type:"number",label:"Denoising steps",default:4,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"Guidance scale",default:0,minimum:0,maximum:10,step:.1},{name:"shift",type:"slider",label:"Scheduler shift",default:3,minimum:0,maximum:10,step:.1},{name:"negative_prompt",type:"text",label:"Negative prompt",default:""},{name:"fused_cfg",type:"bool",label:"Fused CFG",default:!0},{name:"sage_attention",type:"bool",label:"SageAttention",default:!0},{name:"memory_saver",type:"bool",label:"Memory saver",default:!0},{name:"denoiser_layerwise",type:"bool",label:"Layerwise denoiser",default:!1},{name:"denoiser_layerwise_batch",type:"number",label:"Layerwise batch",default:16,minimum:1,step:1,precision:0},{name:"vae_encoder_chunk_size",type:"number",label:"VAE encoder chunk",default:16,minimum:1,step:1,precision:0},{name:"vae_decoder_tile_size",type:"number",label:"VAE decoder tile",default:0,minimum:0,step:16,precision:0},{name:"target_cache_blocks",type:"number",label:"Target cache blocks",default:2,minimum:0,step:1,precision:0},{name:"vae_cache_f16",type:"bool",label:"F16 VAE cache",default:!0},{name:"denoiser_weight_streaming",type:"bool",scope:"session",session_option:"liveavatar.denoiser_weight_streaming",label:"Stream denoiser weights",default:!1}],pulsevad:[{name:"threshold",type:"slider",label:"Speech threshold",default:.5,minimum:0,maximum:1,step:.01},{name:"hop_size_samples",type:"number",label:"Hop size (samples)",default:1600,minimum:1,step:1},{name:"min_speech_duration_ms",type:"number",label:"Minimum speech (ms)",default:100,minimum:0,step:1},{name:"min_silence_duration_ms",type:"number",label:"Minimum silence (ms)",default:100,minimum:0,step:1}],echo_tts:[{name:"num_inference_steps",type:"slider",label:"num_inference_steps",label_en:"Sampling steps",default:40,minimum:8,maximum:40,step:1,precision:0,info:"Euler sampler steps."},{name:"text_guidance_scale",type:"slider",label:"text_guidance_scale",label_en:"Text guidance",default:3,minimum:0,maximum:10,step:.1},{name:"speaker_guidance_scale",type:"slider",label:"speaker_guidance_scale",label_en:"Speaker guidance",default:8,minimum:0,maximum:15,step:.1},{name:"truncation_factor",type:"slider",label:"truncation_factor",label_en:"Noise truncation",default:.8,minimum:0,maximum:1,step:.05},{name:"guidance_interval",type:"slider",label:"guidance_interval",label_en:"Guidance interval",default:1,minimum:1,maximum:3,step:1,precision:0,info:"Refresh the unconditional CFG lanes every Nth guided step. Higher is faster and works best with more steps; 1 is highest fidelity."},{name:"reference_duration_sec",type:"slider",label:"reference_duration_sec",label_en:"Reference trim (s)",default:15,minimum:1,maximum:60,step:1,info:"Trim the speaker reference before encoding. Around 10 s usually clones best."},{name:"seed",type:"number",label:"seed",label_en:"Seed",default:0,minimum:0,step:1,precision:0}],_comment:"WebUI TTS 高级参数控件配置:按模型 family 动态生成控件(gr.render)。每项字段:name=选项键;type=slider|number|bool|text|choice;scope=session 时写入 session_options,否则随请求 options 透传给模型;label/info=显示文案;default=默认值(应等于模型默认,已按 src/models//*.cpp 校对);minimum/maximum/step=数值范围;precision=0 表示整数;choices=下拉候选。seed/max_tokens 已有专用输入框,勿在此重复;参考文本用『参考文本』框(reference_text);文件路径/parity 类参数(如 *_noise_file)未纳入,可用『其它参数(JSON)』兜底框传。",qwen3_tts:[{name:"temperature",type:"slider",label:"temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:0,maximum:1,step:.01},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1.05,minimum:1,maximum:2,step:.01},{name:"do_sample",type:"bool",label:"do_sample",default:!0},{name:"instruct",type:"text",label:"instruct(仅 VoiceDesign/CustomVoice)",default:"",placeholder:"风格/音色指令,Base 版忽略"},{name:"speaker",type:"text",label:"speaker(仅 CustomVoice)",default:"",placeholder:"内置音色名,其它版忽略"}],vibevoice:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0,info:"扩散步数(官方默认 10),越大越慢越稳"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1.3,minimum:0,maximum:5,step:.1,info:"CFG 引导强度"},{name:"max_length_times",type:"number",label:"max_length_times",default:2,minimum:.1,step:.1,info:"最大输出长度倍数"},{name:"temperature",type:"slider",label:"temperature",default:1,minimum:.05,maximum:2,step:.05},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:.05,maximum:1,step:.01},{name:"do_sample",type:"bool",label:"do_sample",default:!1},{name:"voice_samples",type:"text",label:"voice_samples(多说话人,逗号分隔 wav,≤4)",default:"",placeholder:"D:/a.wav,D:/b.wav — 用此项时勿再上传参考音色"}],voxcpm2:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0,info:"CFM/DiT 步数"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:5,step:.1},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"tag_aware",choices:["default","tag_aware","japanese","endline"]},{name:"min_tokens",type:"number",label:"min_tokens",default:2,minimum:0,step:1,precision:0},{name:"retry_badcase",type:"bool",label:"retry_badcase(自动重试异常输出)",default:!0}],voxcpm1:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0,info:"CFM/DiT 步数"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:5,step:.1},{name:"min_tokens",type:"number",label:"min_tokens",default:2,minimum:0,step:1,precision:0},{name:"retry_badcase",type:"bool",label:"retry_badcase(自动重试异常输出)",default:!0}],miotts:[{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:0,maximum:1,step:.01},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1,minimum:1,maximum:1.5,step:.01},{name:"best_of_n",type:"number",label:"best_of_n(候选数,>1 自动开启)",default:1,minimum:1,maximum:8,step:1,precision:0}],chatterbox:[{name:"exaggeration",type:"slider",label:"exaggeration",default:.5,minimum:0,maximum:2,step:.05,info:"改动后需重新『加载模型』才生效"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:.5,minimum:0,maximum:1,step:.05,info:"改动后需重新『加载模型』才生效"},{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1.2,minimum:1,maximum:2,step:.01}],"chatterbox-vc":[{name:"s3gen_cfg_rate",type:"slider",label:"s3gen_cfg_rate(音色引导强度)",label_en:"s3gen_cfg_rate (voice guidance)",default:.7,minimum:0,maximum:2,step:.05},{name:"num_inference_steps",type:"number",label:"num_inference_steps(生成步数)",label_en:"num_inference_steps",default:10,minimum:1,maximum:100,step:1,precision:0}],kokoro_tts:[{name:"speed",type:"slider",label:"speed(语速倍率)",label_en:"speed (speech rate)",default:1,minimum:.5,maximum:2,step:.05}],kitten_tts:[{name:"speed",type:"slider",label:"speed(语速倍率)",label_en:"speed (speech rate)",default:1,minimum:.01,maximum:2,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size(长文本分段字符数)",label_en:"text_chunk_size",default:400,minimum:32,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],piper_tts:[{name:"speed",type:"slider",label:"speed(语速倍率)",label_en:"speed (speech rate)",default:1,minimum:.5,maximum:2,step:.05},{name:"variation",type:"slider",label:"variation(音色变化)",label_en:"variation",default:.667,minimum:0,maximum:1,step:.01},{name:"duration_variation",type:"slider",label:"duration_variation(时长变化)",label_en:"duration_variation",default:.8,minimum:0,maximum:2,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size(长文本分段字符数)",label_en:"text_chunk_size",default:280,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],omnivoice:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:32,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:5,step:.1},{name:"speed",type:"slider",label:"speed",default:1,minimum:.5,maximum:2,step:.05},{name:"instruct",type:"text",label:"instruct(风格/音色指令)",default:"",placeholder:"如:以轻快的语气朗读"}],sense_asr:[{name:"enable_itn",type:"bool",label:"enable_itn(逆文本规范化)",label_en:"enable_itn",default:!0},{name:"keep_tags",type:"bool",label:"keep_tags(保留语言/情绪/事件标签)",label_en:"keep_tags",default:!1},{name:"audio_chunk_mode",type:"choice",label:"audio_chunk_mode",default:"auto",choices:["auto","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec",default:30,minimum:.001,step:1}],"lfm2-audio-tts":[{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05,info_en:"Audio code sampling temperature; 0 is greedy."},{name:"top_k",type:"number",label:"top_k",default:64,minimum:0,step:1,precision:0},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:200,minimum:32,step:1,precision:0,info_en:"Codepoints of text per spoken turn."}],"lfm2-audio-jp-tts":[{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05,info_en:"Audio code sampling temperature; 0 is greedy."},{name:"top_k",type:"number",label:"top_k",default:64,minimum:0,step:1,precision:0},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:200,minimum:32,step:1,precision:0,info_en:"Codepoints of text per spoken turn."}],"lfm2-audio-s2s":[{name:"temperature",type:"slider",label:"temperature",default:1,minimum:0,maximum:2,step:.05,info_en:"Audio code sampling temperature; 0 is greedy."},{name:"top_k",type:"number",label:"top_k",default:4,minimum:0,step:1,precision:0},{name:"text_temperature",type:"slider",label:"text_temperature",default:0,minimum:0,maximum:2,step:.05,info_en:"Text token sampling temperature; 0 picks the most likely token, as liquid-audio does."},{name:"text_top_k",type:"number",label:"text_top_k",default:0,minimum:0,step:1,precision:0,info_en:"With text_temperature above 0, sample text tokens from the k most likely; 0 keeps all."}],"lfm2-audio-jp-s2s":[{name:"temperature",type:"slider",label:"temperature",default:1,minimum:0,maximum:2,step:.05,info_en:"Audio code sampling temperature; 0 is greedy."},{name:"top_k",type:"number",label:"top_k",default:4,minimum:0,step:1,precision:0},{name:"text_temperature",type:"slider",label:"text_temperature",default:0,minimum:0,maximum:2,step:.05,info_en:"Text token sampling temperature; 0 picks the most likely token, as liquid-audio does."},{name:"text_top_k",type:"number",label:"text_top_k",default:0,minimum:0,step:1,precision:0,info_en:"With text_temperature above 0, sample text tokens from the k most likely; 0 keeps all."}],lfm2_audio:[{name:"audio_chunk_mode",type:"choice",label:"audio_chunk_mode",default:"auto",choices:["auto","vad","fixed","none"],info_en:"auto keeps audio up to audio_chunk_seconds whole and splits longer audio at pauses; none transcribes it in one pass, which the model handles up to about a minute."},{name:"audio_chunk_seconds",type:"number",label:"audio_chunk_seconds",default:30,minimum:1,step:1},{name:"max_tokens",type:"number",label:"max_tokens",default:512,minimum:1,step:1,precision:0,info_en:"Transcript tokens allowed per chunk; a transcript that reaches it is cut off there."}],confucius4_r2t2:[{name:"chunk_size_ms",type:"slider",scope:"session",session_option:"confucius4_r2t2.chunk_size_ms",label:"chunk_size_ms(流式分块毫秒)",label_en:"chunk_size_ms (streaming chunk, ms)",default:320,minimum:80,maximum:2e3,step:10,precision:0,info:"80-2000ms:越小延迟越低;320ms 在 Apple Silicon 上延迟与速度较均衡。",info_en:"80-2000 ms. Lower means lower latency; 320 ms balances latency and speed on Apple Silicon."},{name:"unfixed_chunk_num",type:"number",scope:"session",session_option:"confucius4_r2t2.unfixed_chunk_num",label:"unfixed_chunk_num(前 N 块不用稳定前缀)",label_en:"unfixed_chunk_num (leading chunks without prefix)",default:2,minimum:0,maximum:10,step:1,precision:0,info:"开头若干块不使用已识别文本作为前缀提示。",info_en:"Leading chunks that decode without a stable-prefix prompt."},{name:"unfixed_token_num",type:"number",scope:"session",session_option:"confucius4_r2t2.unfixed_token_num",label:"unfixed_token_num(回滚 token 数)",label_en:"unfixed_token_num (rollback tokens)",default:5,minimum:0,maximum:20,step:1,precision:0,info:"作为前缀前从累积文本回滚的 token 数,用于降低边界抖动。",info_en:"Tokens rolled back from the accumulated text before it is used as the prefix prompt."},{name:"rollback_punctuation",type:"bool",scope:"session",session_option:"confucius4_r2t2.rollback_punctuation",label:"rollback_punctuation(句末标点不回滚)",label_en:"rollback_punctuation (keep trailing punctuation)",default:!1,info:"输出已以标点结尾时不再回滚 token。",info_en:"Do not roll back tokens when the output already ends with punctuation."},{name:"max_new_tokens",type:"number",scope:"session",session_option:"confucius4_r2t2.max_tokens",label:"max_new_tokens(每分块解码上限)",label_en:"max_new_tokens (per-chunk decode budget)",default:32,minimum:1,maximum:256,step:1,precision:0,info:"每个流式分块的贪婪解码上限(会话级,区别于离线 max_tokens)。",info_en:"Greedy decode budget per streaming chunk (session-scoped; distinct from offline max_tokens)."}],pocket_tts:[{name:"frames_after_eos",type:"number",label:"frames_after_eos(-1=自动)",default:-1,minimum:-1,step:1,precision:0}],gradium_phonon:[{name:"frames_after_eos",type:"number",label:"frames_after_eos(-1=自动)",label_en:"frames_after_eos (-1 = auto)",default:-1,minimum:-1,step:1,precision:0},{name:"temperature",type:"slider",label:"temperature",default:.3,minimum:.05,maximum:1,step:.05}],neutts:[{name:"voice_id",type:"choice",label:"voice_id(内置音色)",label_en:"voice_id (built-in voice)",default:"emily",choices:["dave","emily","greta","jo","juliette","mateo","paul","sophie","steven"]},{name:"emotion",type:"choice",label:"emotion(情绪)",label_en:"emotion",default:"neutral",choices:["angry","disgusted","sad","happy","fearful","neutral","surprised"]}],magpie_tts:[{name:"language",type:"choice",label:"language",default:"en",choices:["en","ar-AE","ar-MSA","ar-SA","de","es","fr","hi","it","ko","pt-BR","vi","zh"]},{name:"voice_id",type:"choice",label:"voice_id(打包音色)",label_en:"voice_id (packaged voice)",default:"Aria",choices:["Aria","Jason","John","Leo","Sofia"]},{name:"temperature",type:"slider",label:"temperature",default:.6,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:80,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2.5,minimum:0,maximum:6,step:.1},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:300,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],breeze_tts:[{name:"instruction",type:"text",label:"instruction",label_en:"Instruction",default:"",placeholder:"Describe the target voice for VoiceDesign."},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:600,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1,minimum:0,maximum:10,step:.1},{name:"temperature",type:"slider",label:"temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"depth_temperature",type:"slider",label:"depth_temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:0,maximum:1,step:.01}],"breeze-tts":[{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:600,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1,minimum:0,maximum:10,step:.1},{name:"temperature",type:"slider",label:"temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"depth_temperature",type:"slider",label:"depth_temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:0,maximum:1,step:.01}],cosyvoice3:[{name:"template_name",type:"choice",label:"template_name",default:"zero_shot",choices:["zero_shot","cross_lingual","instruct"]},{name:"instruction",type:"text",label:"instruction",label_en:"Instruction",default:"",placeholder:"Used by template_name=instruct."},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:600,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"min_tokens",type:"number",label:"min_tokens",default:0,minimum:0,step:1,precision:0},{name:"top_k",type:"number",label:"top_k",default:25,minimum:1,step:1,precision:0}],inflect_v2:[{name:"speaking_rate",type:"slider",label:"speaking_rate(语速倍率)",label_en:"speaking_rate",default:1,minimum:.5,maximum:2,step:.05},{name:"variation",type:"slider",label:"variation(音色变化)",label_en:"variation",default:.667,minimum:0,maximum:1,step:.01},{name:"text_chunk_size",type:"number",label:"text_chunk_size(长文本分段字符数)",label_en:"text_chunk_size",default:280,minimum:1,step:1,precision:0}],sanotts:[{name:"speaking_rate",type:"slider",label:"speaking_rate(语速倍率)",label_en:"speaking_rate",default:1,minimum:.5,maximum:2,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size(长文本分段字符数)",label_en:"text_chunk_size",default:280,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"word_budget",choices:["word_budget"]}],dramabox:[{name:"negative_prompt",type:"text",label:"negative_prompt(负向提示)",label_en:"negative_prompt",default:"",placeholder:"留空=模型内置质量提示",placeholder_en:"Blank = built-in quality prompt"},{name:"duration_sec",type:"number",label:"duration_sec(0=自动估时)",label_en:"duration_sec (0 = auto)",default:0,minimum:0,step:.5},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:30,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2.5,minimum:0,maximum:8,step:.1},{name:"spatio_temporal_guidance_scale",type:"slider",label:"spatio_temporal_guidance_scale",default:1.5,minimum:0,maximum:5,step:.1},{name:"duration_scale",type:"slider",label:"duration_scale(自动估时倍率)",label_en:"duration_scale",default:1.1,minimum:.5,maximum:2,step:.05},{name:"reference_duration_sec",type:"number",label:"reference_duration_sec(参考音频裁剪/重复秒数)",label_en:"reference_duration_sec",default:10,minimum:0,step:.5},{name:"guidance_rescale",type:"text",label:"guidance_rescale",default:"auto",placeholder:"auto 或数值"},{name:"audio_chunk_threshold_sec",type:"number",label:"audio_chunk_threshold_sec(长文本阈值)",label_en:"audio_chunk_threshold_sec",default:45,minimum:0,step:1},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec(长文本分段目标时长)",label_en:"audio_chunk_duration_sec",default:37,minimum:0,step:1},{name:"cross_fade_duration_sec",type:"number",label:"cross_fade_duration_sec(分段交叉淡化)",label_en:"cross_fade_duration_sec",default:.05,minimum:0,step:.01}],confucius4_tts:[{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:30,minimum:1,step:1,precision:0},{name:"num_beams",type:"number",label:"num_beams",default:3,minimum:1,step:1,precision:0},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:10,minimum:0,maximum:20,step:.1},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:25,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:.7,minimum:0,maximum:2,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:80,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]},{name:"cross_fade_duration_sec",type:"number",label:"cross_fade_duration_sec",default:.3,minimum:0,step:.05},{name:"edge_fade_duration_sec",type:"number",label:"edge_fade_duration_sec",default:.1,minimum:0,step:.05},{name:"edge_pad_duration_sec",type:"number",label:"edge_pad_duration_sec",default:.1,minimum:0,step:.05}],ace_step:[{name:"lora",type:"text",scope:"session",session_option:"ace_step.lora",label:"LoRA adapter",default:"",info:"Adapter file or PEFT directory on the server; relative paths use the model root."},{name:"lora_scale",type:"number",scope:"session",session_option:"ace_step.lora_scale",label:"LoRA strength",default:1,step:.1,info:"Multiplies the adapter metadata scale; zero disables the adapter."},{name:"route",type:"choice",label:"route(操作类型)",default:"text2music",choices:["text2music","complete","lego","extract","cover","cover-nofsq","repaint","remix"],info:"cover/remix=换词翻唱,非 text2music 需上传源音频;详见 webui/README.md"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:8,minimum:1,maximum:20,step:1,precision:0,info:"扩散步数(turbo 上限 20);remix 路由不填时默认 16,其他路由默认 8"},{name:"shift",type:"slider",label:"shift(时间步弯曲)",default:3,minimum:1,maximum:5,step:.5,info:"原版 turbo 默认 3.0;1.0 会明显劣化 remix 换词咬字"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1,minimum:0,maximum:5,step:.1},{name:"audio_cover_strength",type:"slider",label:"【cover】audio_cover_strength",default:1,minimum:0,maximum:1,step:.05,info:"1=贴近原曲,0=自由发挥;建议 0.5"},{name:"cover_noise_strength",type:"slider",label:"【cover】cover_noise_strength",default:0,minimum:0,maximum:1,step:.05,info:"保旋律强度;推荐 0.1~0.25"},{name:"source_caption",type:"text",label:"【remix】source_caption",default:"",placeholder:"源歌曲描述;『🔍 分析』自动填"},{name:"source_lyrics",type:"text",lines:4,label:"【remix】source_lyrics",default:"",placeholder:"源歌曲原歌词;『🔍 分析』自动填"},{name:"flow_edit_n_min",type:"slider",label:"【remix】flow_edit_n_min",default:0,minimum:0,maximum:1,step:.05,info:"调大更保源曲、换词更弱"},{name:"flow_edit_n_max",type:"slider",label:"【remix】flow_edit_n_max",default:1,minimum:0,maximum:1,step:.05,info:"唱不出新歌词时降到 0.7~0.9"},{name:"flow_edit_n_avg",type:"number",label:"【remix】flow_edit_n_avg",default:2,minimum:1,maximum:4,step:1,precision:0,info:"每步多次采样取平均(remix 默认 2);1=最快"},{name:"bpm",type:"number",label:"【曲谱】BPM",default:0,minimum:0,step:1,precision:0,info:"0=不指定"},{name:"keyscale",type:"text",label:"【曲谱】keyscale",default:"",placeholder:"如 F major"},{name:"timesignature",type:"text",label:"【曲谱】timesignature",default:"",placeholder:"如 4"}],minimax_music3:[{name:"num_inference_steps",type:"number",label:"Flow steps per window",default:30,minimum:1,maximum:200,step:1,precision:0,info:"Flow-matching Euler steps per 200-frame denoising window."},{name:"guidance_scale",type:"slider",label:"Flow guidance scale",default:1.7,minimum:0,maximum:10,step:.1},{name:"ar_guidance_scale",type:"slider",label:"AR guidance scale",default:1.5,minimum:0,maximum:10,step:.1,info:"Classifier-free guidance of the semantic and residual code sampling."},{name:"top_k",type:"number",label:"top_k",default:50,minimum:1,maximum:1024,step:1,precision:0}],auk:[{name:"model_gguf",type:"choice",scope:"session",session_option:"auk.model_gguf",label:"model_gguf",label_en:"Generator weights",default:"auk-base-f32.gguf",choices:["auk-base-f32.gguf","auk-base-f16.gguf","auk-base-q8_0.gguf","auk-flash-f32.gguf","auk-flash-f16.gguf","auk-flash-q8_0.gguf"],info:"Selects Base or AuK-Flash automatically. Reload the model after changing this value."},{name:"qwen_gguf",type:"choice",scope:"session",session_option:"auk.qwen_gguf",label:"qwen_gguf",label_en:"Qwen conditioner",default:"qwen2.5-omni-3b-bf16.gguf",choices:["qwen2.5-omni-3b-bf16.gguf","qwen2.5-omni-3b-q8_0.gguf"],info:"Reload the model after changing this value."},{name:"vae_gguf",type:"choice",scope:"session",session_option:"auk.vae_gguf",label:"vae_gguf",label_en:"VAE weights",default:"auk-vae-f32.gguf",choices:["auk-vae-f32.gguf"],info:"Reload the model after changing this value."},{name:"attention",type:"choice",scope:"session",session_option:"auk.attention",label:"attention",label_en:"Attention",default:"auto",choices:["auto","flash","eager"],info:"Flow-model attention mode. Reload the model after changing this value."},{name:"mem_saver",type:"bool",scope:"session",session_option:"auk.mem_saver",label:"mem_saver",label_en:"Memory saver",default:!1,info:"Release Qwen and generation weights between stages. Warm requests reload weights and rebuild graphs."},{name:"instruct",type:"text",label:"instruct",label_en:"Voice description",default:"",placeholder:"A warm male voice speaking clear English.",info:"Optional for TTS only. Without it, text carries the complete upstream instruction."},{name:"duration_sec",type:"number",label:"duration_sec",label_en:"Output duration (s)",default:"",minimum:.02,step:.02,info:"Required for speech generation without reference audio; otherwise the reference duration is used."},{name:"num_inference_steps",type:"number",label:"num_inference_steps",label_en:"Sampling steps",default:32,minimum:1,step:1,precision:0,info:"Base Euler steps. AuK-Flash always uses its fixed four-step schedule."},{name:"guidance_scale",type:"slider",label:"guidance_scale",label_en:"Guidance scale",default:2,minimum:0,maximum:10,step:.1,info:"Base guidance strength. AuK-Flash disables classifier-free guidance."},{name:"sway_sampling_coef",type:"number",label:"sway_sampling_coef",label_en:"Sway coefficient",default:-1,step:.1,info:"Base sampling schedule sway. AuK-Flash uses its fixed time grid."}],yue2:[{name:"ar_lora",type:"text",scope:"session",session_option:"yue2.ar_lora",label:"ar_lora",label_en:"AR LoRA adapter",default:"",placeholder:"/path/to/ar_lora_inst_v3abc.safetensors",info:"Unfused AR adapter for score and semantic planning; relative paths resolve against the model root. Reload the model after changing this value."},{name:"ar_lora_scale",type:"number",scope:"session",session_option:"yue2.ar_lora_scale",label:"ar_lora_scale",label_en:"AR LoRA strength",default:1,step:.1,info:"Scales the AR adapter deltas; 0 disables it. Reload the model after changing this value."},{name:"nar_lora",type:"text",scope:"session",session_option:"yue2.nar_lora",label:"nar_lora",label_en:"NAR LoRA adapter",default:"",placeholder:"/path/to/nar_lora_joint_v4.safetensors",info:"Unfused NAR adapter for acoustic detail; relative paths resolve against the model root. Reload the model after changing this value."},{name:"nar_lora_scale",type:"number",scope:"session",session_option:"yue2.nar_lora_scale",label:"nar_lora_scale",label_en:"NAR LoRA strength",default:1,step:.1,info:"Scales the LoRA deltas only; any full vae2llm/llm2vae projection replacements in the adapter stay at full strength. 0 disables the entire adapter. Reload the model after changing this value."},{name:"main_gguf",type:"choice",scope:"session",session_option:"yue2.model_gguf",label:"main_gguf",label_en:"Main weights",default:"yue2-3b-q8_0.gguf",choices:["yue2-3b-q8_0.gguf","yue2-3b-q4_0.gguf","yue2-3b-bf16.gguf"],info:"Reload the model after changing this value."},{name:"vae_gguf",type:"choice",scope:"session",session_option:"yue2.vae_gguf",label:"vae_gguf",label_en:"VAE weights",default:"yue2-vae-f16.gguf",choices:["yue2-vae-f16.gguf","yue2-vae-f32.gguf"],info:"Reload the model after changing this value."},{name:"style",type:"text",label:"style",label_en:"Style",default:"English, indie pop, bright acoustic guitar, soft drums, warm lead vocal, polished demo mix",placeholder:"English, city pop, groovy bass, synth, energetic vocal"},{name:"abc",type:"text",label:"abc",label_en:"ABC score",default:"",placeholder:"Optional ABC notation. Use cot=melody or cot=full.",lines:4},{name:"abc_file",type:"text",label:"abc_file",label_en:"ABC file path",default:"",placeholder:"/path/to/score.abc"},{name:"cot",type:"choice",label:"cot",label_en:"Planning route",default:"off",choices:["off","melody","full"],info:"off = direct generation; melody/full use or generate ABC planning."},{name:"guidance_scale",type:"slider",label:"guidance_scale",label_en:"Semantic guidance",default:1.01,minimum:0,maximum:5,step:.01},{name:"num_inference_steps",type:"number",label:"num_inference_steps",label_en:"NAR steps",default:8,minimum:1,maximum:64,step:1,precision:0},{name:"abc_temperature",type:"slider",label:"abc_temperature",label_en:"ABC temperature",default:.7,minimum:0,maximum:2,step:.05},{name:"abc_top_p",type:"slider",label:"abc_top_p",label_en:"ABC top-p",default:.9,minimum:.01,maximum:1,step:.01},{name:"abc_top_k",type:"number",label:"abc_top_k",label_en:"ABC top-k",default:30,minimum:1,step:1,precision:0},{name:"abc_repetition_penalty",type:"slider",label:"abc_repetition_penalty",label_en:"ABC repetition penalty",default:1.005,minimum:.1,maximum:2,step:.001},{name:"abc_penalty_window",type:"number",label:"abc_penalty_window",label_en:"ABC penalty window",default:100,minimum:1,step:1,precision:0},{name:"abc_min_tokens",type:"number",label:"abc_min_tokens",label_en:"ABC min tokens",default:32,minimum:0,step:1,precision:0},{name:"abc_max_tokens",type:"number",label:"abc_max_tokens",label_en:"ABC max tokens",default:4096,minimum:1,step:1,precision:0},{name:"semantic_temperature",type:"slider",label:"semantic_temperature",label_en:"Semantic temperature",default:1,minimum:0,maximum:2,step:.05},{name:"semantic_top_p",type:"slider",label:"semantic_top_p",label_en:"Semantic top-p",default:.95,minimum:.01,maximum:1,step:.01},{name:"semantic_top_k",type:"number",label:"semantic_top_k",label_en:"Semantic top-k",default:100,minimum:1,step:1,precision:0},{name:"semantic_repetition_penalty",type:"slider",label:"semantic_repetition_penalty",label_en:"Semantic repetition penalty",default:1.2,minimum:.1,maximum:2,step:.01},{name:"semantic_penalty_window",type:"number",label:"semantic_penalty_window",label_en:"Semantic penalty window",default:50,minimum:1,step:1,precision:0},{name:"semantic_min_tokens",type:"number",label:"semantic_min_tokens",label_en:"Semantic min tokens",default:200,minimum:0,step:1,precision:0},{name:"semantic_max_tokens",type:"number",label:"semantic_max_tokens",label_en:"Semantic max tokens",default:9e3,minimum:1,step:1,precision:0}],minimax_h3:[{name:"num_inference_steps",type:"number",label:"Denoising steps",default:12,minimum:1,maximum:50,step:1,precision:0,info:"Twelve denoising steps provide a practical quality and performance balance."},{name:"num_frames",type:"number",label:"Output frames",default:241,minimum:5,maximum:1441,step:4,precision:0,info:"Approximately 24 frames per output second; 241 frames produces about 10 seconds of audio."},{name:"guidance_scale",type:"slider",label:"Guidance scale",default:1,minimum:0,maximum:5,step:.1},{name:"sampler",type:"choice",label:"Sampler",default:"euler",choices:["euler","res_multistep","dpmpp_2m","unipc"]},{name:"dit_acceleration",type:"choice",label:"DiT acceleration",default:"none",choices:["none","spectrum","first_block_cache"],info:"None uses the quality-first full-DiT path. Acceleration modes are experimental and may distort some outputs."},{name:"return_video",type:"bool",label:"Decode video",default:!1,info:"Disabled by default to reduce memory use and return audio only."}],stable_audio:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:8,minimum:1,step:1,precision:0,info:"RF 扩散步数"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1,minimum:0,maximum:5,step:.1},{name:"audio_input_kind",type:"choice",label:"audio_input_kind(仅上传源音频时生效)",default:"init_audio",choices:["init_audio","inpaint_audio"]},{name:"init_noise_level",type:"slider",label:"init_noise_level(init_audio 强度)",default:1,minimum:0,maximum:1,step:.05}],seed_vc:[{name:"route",type:"choice",label:"route(转换路径)",default:"",choices:["","v2_vc","v1_whisper_bigvgan_vc","v1_xlsr_hift_vc","v1_svc"],info:"留空=按任务默认"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:30,minimum:1,step:1,precision:0,info:"CFM 扩散步数"},{name:"length_adjust",type:"slider",label:"length_adjust(时长伸缩)",default:1,minimum:.5,maximum:2,step:.05},{name:"intelligibility_cfg_rate",type:"slider",label:"intelligibility_cfg_rate(仅 v2_vc)",default:.7,minimum:0,maximum:1,step:.05},{name:"similarity_cfg_rate",type:"slider",label:"similarity_cfg_rate(仅 v2_vc)",default:.7,minimum:0,maximum:1,step:.05},{name:"inference_cfg_rate",type:"slider",label:"inference_cfg_rate(仅 v1 路径)",default:.7,minimum:0,maximum:1,step:.05}],rvc:[{name:"voice_id",type:"choice",label:"voice_id(打包音色)",label_en:"voice_id",default:"default",choices:["default","manthos","chocola","fraise"]},{name:"voice_model_path",type:"text",label:"voice_model_path(自定义 RVC .pth/.pt)",label_en:"voice_model_path",default:"",placeholder:"留空=使用打包音色"},{name:"retrieval_index_path",type:"text",label:"retrieval_index_path(FAISS index)",label_en:"retrieval_index_path",default:"",placeholder:"可选 .index 路径"},{name:"retrieval_blend",type:"slider",label:"retrieval_blend",default:0,minimum:0,maximum:1,step:.05},{name:"semitone_shift",type:"number",label:"semitone_shift(半音变调)",label_en:"semitone_shift",default:0,step:1,precision:0},{name:"pitch_filter_radius",type:"number",label:"pitch_filter_radius",default:3,minimum:0,step:1,precision:0},{name:"output_sample_rate",type:"number",label:"output_sample_rate(0=跟随音色)",label_en:"output_sample_rate (0 = voice default)",default:0,minimum:0,step:1e3,precision:0},{name:"rms_mix_rate",type:"slider",label:"rms_mix_rate",default:.25,minimum:0,maximum:1,step:.05},{name:"unvoiced_protection",type:"slider",label:"unvoiced_protection",default:.33,minimum:0,maximum:1,step:.01},{name:"speaker_id",type:"number",label:"speaker_id",default:0,minimum:0,step:1,precision:0},{name:"audio_pad_duration_sec",type:"number",label:"audio_pad_duration_sec",default:1,minimum:1,step:1,precision:0},{name:"split_query_sec",type:"number",label:"split_query_sec",default:5,minimum:1,step:1,precision:0},{name:"split_center_sec",type:"number",label:"split_center_sec",default:30,minimum:1,step:1,precision:0},{name:"split_threshold_sec",type:"number",label:"split_threshold_sec",default:32,minimum:1,step:1,precision:0}],meanvc2:[{name:"seed",type:"number",label:"seed",default:42,minimum:0,step:1,precision:0}],personaplex:[{name:"voice_id",type:"choice",label:"voice_id(打包音色)",label_en:"voice_id (packaged voice)",default:"NATF2",choices:["NATF0","NATF1","NATF2","NATF3","NATM0","NATM1","NATM2","NATM3","VARF0","VARF1","VARF2","VARF3","VARF4","VARM0","VARM1","VARM2","VARM3","VARM4"]},{name:"system_prompt",type:"text",label:"system_prompt",default:"",placeholder:"Leave blank to use the text box as the system prompt."},{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"text_temperature",type:"slider",label:"text_temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:250,minimum:0,step:1,precision:0},{name:"text_top_k",type:"number",label:"text_top_k",default:250,minimum:0,step:1,precision:0},{name:"do_sample",type:"bool",label:"do_sample",default:!0}],vevo2:[{name:"route",type:"choice",label:"route(任务路线)",default:"",choices:["","style_preserved_vc","style_converted_vc","style_preserved_svc","style_converted_svc","singing_style_conversion","editing"],info:"留空=按任务默认;详见 webui/README.md"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:32,minimum:1,step:1,precision:0,info:"流匹配步数"},{name:"use_pitch_shift",type:"choice",label:"use_pitch_shift(自动音高对齐)",default:"",choices:["","true","false"],info:"留空=按路线默认"},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec(源音频分段秒数)",default:0,minimum:0,step:1,info:"0=关闭;仅用于 source-audio VC/SVC 路线"},{name:"cross_fade_duration_sec",type:"number",label:"cross_fade_duration_sec(分段重叠/淡化秒数)",default:1,minimum:0,step:.1,info:"source-audio 分段启用时作为输入重叠和输出交叉淡化时长"},{name:"temperature",type:"slider",label:"temperature(AR 路线用)",default:.7,minimum:0,maximum:2,step:.05,info:"默认取自模型 generation_config.json"},{name:"top_k",type:"number",label:"top_k(AR 路线用)",default:20,minimum:0,step:1,precision:0,info:"默认取自模型 generation_config.json"},{name:"top_p",type:"slider",label:"top_p(AR 路线用)",default:.8,minimum:0,maximum:1,step:.01}],heartmula:[{name:"tags",type:"text",label:"tags(逗号分隔)",default:"pop",placeholder:"pop,bright,drums,female vocals",info:"风格/情绪/乐器/人声标签"},{name:"temperature",type:"slider",label:"temperature",default:1,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale(MuLa CFG)",default:1.5,minimum:0,maximum:5,step:.1},{name:"num_inference_steps",type:"number",label:"num_inference_steps(codec 步数)",default:10,minimum:1,step:1,precision:0},{name:"infinite_mode",type:"bool",label:"infinite_mode(长输出分段生成)",default:!1},{name:"codec_guidance_scale",type:"slider",label:"codec_guidance_scale",default:1.25,minimum:0,maximum:5,step:.05}],index_tts2:[{name:"lang",type:"choice",label:"lang(语种提示, 仅 IndexTTS2.5 模型)",label_en:"lang (language hint, IndexTTS2.5 models only)",default:"auto",choices:["auto","zh","en","ja","es","ar"],info:"仅对 IndexTTS2.5(多语种)模型生效:auto 含汉字按中文,否则按英文;日/西/阿建议显式选择",info_en:"Only applies to IndexTTS2.5 (multilingual) models: auto picks zh when the text contains Han characters, otherwise en; set ja/es/ar explicitly"},{name:"emotion_text",type:"text",label:"emotion_text(情绪参考文本)",label_en:"emotion_text (emotion reference text)",default:"",placeholder:"例:你吓死我了!你是鬼吗?",placeholder_en:"e.g. You scared me to death!",info:"填写后自动开启情感条件(use_emotion_text)",info_en:"Setting this enables emotion conditioning."},{name:"emotion_alpha",type:"slider",label:"emotion_alpha(情感强度)",label_en:"emotion_alpha",default:1,minimum:0,maximum:1,step:.05},{name:"use_emotion_text",type:"bool",label:"use_emotion_text(从朗读文本推断情感)",label_en:"use_emotion_text (infer from text)",default:!1},{name:"use_random_emotion",type:"bool",label:"use_random_emotion(随机情感)",label_en:"use_random_emotion",default:!1},{name:"interval_silence_ms",type:"number",label:"interval_silence_ms(分段间静音)",label_en:"interval_silence_ms",default:200,minimum:0,step:50,precision:0},{name:"duration_factor",type:"slider",label:"duration_factor(语速/时长倍率,>1 更慢,<1 更快)",label_en:"duration_factor (duration multiplier; >1 slower, <1 faster)",default:1,minimum:.5,maximum:2,step:.05,info:"对齐官方 IndexTTS2.5 的 duration_factor:缩放输出时长,不改变音色/内容",info_en:"Matches official IndexTTS2.5 duration_factor: scales output duration without changing timbre or content"}],zipvoice:[{name:"guidance_scale",type:"slider",label:"guidance_scale(引导强度,0=关闭)",label_en:"guidance_scale (0 disables CFG)",default:3,minimum:0,maximum:10,step:.5},{name:"num_inference_steps",type:"number",label:"num_inference_steps(Euler 步数)",label_en:"num_inference_steps",default:8,minimum:1,maximum:64,step:1,precision:0},{name:"t_shift",type:"slider",label:"t_shift(时间步偏移,越小越偏低 SNR)",label_en:"t_shift (timestep shift)",default:.5,minimum:.05,maximum:1,step:.05},{name:"speed",type:"slider",label:"speed(语速倍率)",label_en:"speed (duration multiplier)",default:1,minimum:.5,maximum:2,step:.05},{name:"lang",type:"text",label:"lang(英文段 espeak 语言)",label_en:"lang (espeak voice for English runs)",default:"en-us",placeholder:"en-us"}],irodori_tts:[{name:"num_inference_steps",type:"number",label:"num_inference_steps(RF 扩散步数)",label_en:"num_inference_steps",default:40,minimum:1,step:1,precision:0},{name:"duration_sec",type:"number",label:"duration_sec(0=模型自动预测时长)",label_en:"duration_sec (0 = auto)",default:0,minimum:0,step:.5},{name:"duration_scale",type:"slider",label:"duration_scale(语速倒数,越大越慢)",label_en:"duration_scale",default:1,minimum:.5,maximum:2,step:.05}],moss_tts_local:[{name:"do_sample",type:"bool",label:"do_sample",default:!0},{name:"temperature",type:"slider",label:"temperature",default:1.7,minimum:0,maximum:2.5,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:25,minimum:0,step:1,precision:0},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1,minimum:1,maximum:2,step:.01}],moss_tts_v15:[{name:"instruct",type:"text",label:"instruct(音色描述)",label_en:"instruct (voice description)",default:"",placeholder:"参考音频比文字描述更可靠",placeholder_en:"A reference recording is more reliable than a description."},{name:"language",type:"choice",label:"language(语言)",label_en:"language",default:"",choices:["","English","Chinese"]},{name:"temperature",type:"slider",label:"temperature",default:1.5,minimum:0,maximum:3,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.6,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1.1,minimum:1,maximum:2,step:.01}],moss_tts_nano:[{name:"do_sample",type:"bool",label:"do_sample",default:!0},{name:"temperature",type:"slider",label:"temperature",default:1.7,minimum:0,maximum:2.5,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:25,minimum:0,step:1,precision:0},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1,minimum:1,maximum:2,step:.01}],audiosr:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:50,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:3.5,minimum:0,maximum:10,step:.1},{name:"ddim_eta",type:"slider",label:"ddim_eta",default:1,minimum:0,maximum:1,step:.05},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec",default:15,minimum:1,step:1},{name:"audio_chunk_overlap_sec",type:"number",label:"audio_chunk_overlap_sec",default:2,minimum:0,step:.5}],controlfoley:[{name:"duration_sec",type:"number",label:"duration_sec",default:8,minimum:.1,step:.5},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:25,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:4.5,minimum:0,maximum:10,step:.1},{name:"negative_prompt",type:"text",label:"negative_prompt",default:"",placeholder:"optional negative prompt"},{name:"mask_away_clip",type:"bool",label:"mask_away_clip",default:!1}],midashenglm_gen:[{name:"duration_sec",type:"number",label:"duration_sec",default:20,minimum:.1,step:.5},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"stop_threshold",type:"slider",label:"stop_threshold",default:.5,minimum:0,maximum:1,step:.05},{name:"min_stop_step",type:"number",label:"min_stop_step",default:5,minimum:0,step:1,precision:0}],"fireredtts3-base":[{name:"language",type:"choice",label:"language",default:"Chinese",choices:["Chinese","English","Cantonese","Japanese","Korean","Spanish","French","Russian","Arabic","Turkish","Indonesian","Portuguese","Italian","Dutch","Vietnamese","German","Ukrainian","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","ZH_Anhui","ZH_Fujian","ZH_Gansu","ZH_Guizhou","ZH_Hebei","ZH_Henan","ZH_Hubei","ZH_Hunan","ZH_Jiangxi","ZH_Liaoning","ZH_Minnan","ZH_Ningxia","ZH_Shaanxi","ZH_Shandong","ZH_Shanghai","ZH_Shanxi","ZH_Sichuan","ZH_Tianjin","ZH_Wenzhou","ZH_Wu","ZH_Yunnan"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"stop_threshold",type:"slider",label:"stop_threshold",default:.5,minimum:0,maximum:1,step:.05}],"fireredtts3-instruct":[{name:"template_name",type:"choice",label:"template_name",default:"instruct_tts",choices:["instruct_tts"]},{name:"language",type:"choice",label:"language",default:"Chinese",choices:["Chinese","English","Cantonese","Japanese","Korean","Spanish","French","Russian","Arabic","Turkish","Indonesian","Portuguese","Italian","Dutch","Vietnamese","German","Ukrainian","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","ZH_Anhui","ZH_Fujian","ZH_Gansu","ZH_Guizhou","ZH_Hebei","ZH_Henan","ZH_Hubei","ZH_Hunan","ZH_Jiangxi","ZH_Liaoning","ZH_Minnan","ZH_Ningxia","ZH_Shaanxi","ZH_Shandong","ZH_Shanghai","ZH_Shanxi","ZH_Tianjin","ZH_Wenzhou","ZH_Wu","ZH_Yunnan"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"stop_threshold",type:"slider",label:"stop_threshold",default:.5,minimum:0,maximum:1,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:600,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],"fireredtts3-instruct-vdesign":[{name:"template_name",type:"choice",label:"template_name",default:"voice_design",choices:["voice_design"]},{name:"language",type:"choice",label:"language",default:"Chinese",choices:["Chinese","English","Cantonese","Japanese","Korean","Spanish","French","Russian","Arabic","Turkish","Indonesian","Portuguese","Italian","Dutch","Vietnamese","German","Ukrainian","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","ZH_Anhui","ZH_Fujian","ZH_Gansu","ZH_Guizhou","ZH_Hebei","ZH_Henan","ZH_Hubei","ZH_Hunan","ZH_Jiangxi","ZH_Liaoning","ZH_Minnan","ZH_Ningxia","ZH_Shaanxi","ZH_Shandong","ZH_Shanghai","ZH_Shanxi","ZH_Tianjin","ZH_Wenzhou","ZH_Wu","ZH_Yunnan"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"stop_threshold",type:"slider",label:"stop_threshold",default:.5,minimum:0,maximum:1,step:.05}],"firered-audio-tts":[{name:"template_name",type:"choice",label:"template_name",default:"tts_clone",choices:["tts_clone"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"max_new_audio_steps",type:"number",label:"max_new_audio_steps",default:750,minimum:1,step:1,precision:0},{name:"top_k",type:"number",label:"top_k",default:20,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"temperature",type:"slider",label:"temperature",default:.7,minimum:0,maximum:2,step:.05}],"firered-audio-vdesign":[{name:"template_name",type:"choice",label:"template_name",default:"voice_design",choices:["voice_design"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"max_new_audio_steps",type:"number",label:"max_new_audio_steps",default:750,minimum:1,step:1,precision:0}],"firered-audio-semantic-edit":[{name:"template_name",type:"choice",label:"template_name",default:"semantic_edit",choices:["semantic_edit"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"instruction",type:"text",label:"instruction",default:"",placeholder:"delete '比普通的茶叶要'"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"max_new_audio_steps",type:"number",label:"max_new_audio_steps",default:750,minimum:1,step:1,precision:0},{name:"max_new_text_tokens",type:"number",label:"max_new_text_tokens",default:512,minimum:1,step:1,precision:0}],"firered-audio-acoustic-edit":[{name:"template_name",type:"choice",label:"template_name",default:"acoustic_edit",choices:["acoustic_edit"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"instruction",type:"text",label:"instruction",default:"shift the pitch by 3 steps",placeholder:"shift the pitch by 3 steps"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"max_new_audio_steps",type:"number",label:"max_new_audio_steps",default:750,minimum:1,step:1,precision:0}],"firered-audio-asr":[{name:"template_name",type:"choice",label:"template_name",default:"asr",choices:["asr","understand"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"enable_thinking",type:"bool",label:"enable_thinking",default:!1},{name:"max_new_tokens",type:"number",label:"max_new_tokens",default:512,minimum:1,step:1,precision:0},{name:"top_k",type:"number",label:"top_k",default:20,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"temperature",type:"slider",label:"temperature",default:.7,minimum:0,maximum:2,step:.05}],sopro_tts:[{name:"language",type:"choice",label:"language",label_en:"Language tag",default:"",choices:["","en","pt","fr","de"],info:"Optional <|lang_xx|> tag; helps pronunciation on ambiguous text."},{name:"temperature",type:"slider",label:"temperature",label_en:"Temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"top_p",type:"slider",label:"top_p",label_en:"Top-p",default:.9,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",label_en:"Top-k",default:25,minimum:0,step:1,precision:0,info:"0 disables top-k truncation."},{name:"num_inference_steps",type:"number",label:"num_inference_steps",label_en:"Acoustic steps",default:2,minimum:1,maximum:32,step:1,precision:0,info:"Rectified-flow Euler steps for the acoustic head."},{name:"max_seconds",type:"number",label:"max_seconds",label_en:"Max seconds per segment",default:30,minimum:1,maximum:60,step:.5,precision:1},{name:"min_seconds",type:"number",label:"min_seconds",label_en:"Min seconds per segment",default:.4,minimum:0,maximum:10,step:.1,precision:1,info:"Must not exceed max_seconds."},{name:"ref_seconds",type:"number",label:"ref_seconds",label_en:"Reference seconds",default:10,minimum:1,maximum:30,step:.5,precision:1,info:"Reference window used for cloning."},{name:"text_chunk_size",type:"number",label:"text_chunk_size",label_en:"Segment size",default:300,minimum:20,maximum:2e3,step:10,precision:0,info:"Max codepoints per synthesis segment."}],supertonic:[{name:"voice",type:"choice",label:"voice(预置音色:M 男声 / F 女声)",label_en:"voice (M = male, F = female presets)",default:"M1",choices:["M1","M2","M3","M4","M5","F1","F2","F3","F4","F5"]},{name:"speaking_rate",type:"slider",label:"speaking_rate(语速倍率)",label_en:"speaking_rate",default:1.05,minimum:.5,maximum:2,step:.05},{name:"num_inference_steps",type:"number",label:"num_inference_steps(流匹配步数)",label_en:"num_inference_steps",default:8,minimum:1,step:1,precision:0}],audio8_tts:[{name:"temperature",type:"slider",label:"temperature",default:.7,minimum:0,maximum:2,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.9,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"max_tokens",type:"number",label:"max_tokens",default:1024,minimum:1,step:1,precision:0}]},E1=Object.assign({"../../../../model_specs/ace_step.json":i5,"../../../../model_specs/apollo.json":a5,"../../../../model_specs/ast_audioset.json":n5,"../../../../model_specs/audio8_asr.json":s5,"../../../../model_specs/audio8_tts.json":r5,"../../../../model_specs/audio_flamingo.json":o5,"../../../../model_specs/audiosr.json":l5,"../../../../model_specs/auk.json":c5,"../../../../model_specs/breeze_tts.json":d5,"../../../../model_specs/bs_roformer.json":u5,"../../../../model_specs/builtin_audio_utils.json":f5,"../../../../model_specs/canary_asr.json":m5,"../../../../model_specs/ced.json":p5,"../../../../model_specs/chatterbox.json":g5,"../../../../model_specs/chatterbox_turbo.json":h5,"../../../../model_specs/citrinet_asr.json":_5,"../../../../model_specs/cohere_asr.json":v5,"../../../../model_specs/confucius4_r2t2.json":b5,"../../../../model_specs/confucius4_tts.json":y5,"../../../../model_specs/controlfoley.json":w5,"../../../../model_specs/cosyvoice3.json":k5,"../../../../model_specs/crisperwhisper.json":x5,"../../../../model_specs/dots_tts.json":S5,"../../../../model_specs/dramabox.json":T5,"../../../../model_specs/echo_tts.json":$5,"../../../../model_specs/f5_tts.json":q5,"../../../../model_specs/firered_audio.json":G5,"../../../../model_specs/firered_vad.json":F5,"../../../../model_specs/fireredtts3.json":A5,"../../../../model_specs/fish_audio.json":C5,"../../../../model_specs/fish_drama3.json":M5,"../../../../model_specs/fun_asr_nano.json":E5,"../../../../model_specs/gigaam_asr.json":z5,"../../../../model_specs/glm_tts.json":U5,"../../../../model_specs/gradium_phonon.json":B5,"../../../../model_specs/granite5asr.json":R5,"../../../../model_specs/heartmula.json":j5,"../../../../model_specs/higgs_audio_stt.json":P5,"../../../../model_specs/higgs_audio_tts.json":N5,"../../../../model_specs/htdemucs.json":O5,"../../../../model_specs/htdemucs_6stems.json":I5,"../../../../model_specs/hviske_asr.json":L5,"../../../../model_specs/hviske_asr_v6.json":D5,"../../../../model_specs/index_echo.json":V5,"../../../../model_specs/index_tts2.json":H5,"../../../../model_specs/inflect_v2.json":W5,"../../../../model_specs/irodori_tts.json":Q5,"../../../../model_specs/kitten_tts.json":K5,"../../../../model_specs/kitten_tts2.json":Y5,"../../../../model_specs/kokoro_tts.json":X5,"../../../../model_specs/kroko_asr.json":J5,"../../../../model_specs/kugelaudio.json":Z5,"../../../../model_specs/latentsync.json":eS,"../../../../model_specs/lfm2_audio.json":tS,"../../../../model_specs/liveavatar.json":iS,"../../../../model_specs/magpie_tts.json":aS,"../../../../model_specs/maya1.json":nS,"../../../../model_specs/meanvc2.json":sS,"../../../../model_specs/mel_band_roformer.json":rS,"../../../../model_specs/micro_wake_word.json":oS,"../../../../model_specs/midashenglm_gen.json":lS,"../../../../model_specs/ming3_audio.json":cS,"../../../../model_specs/ming3_tts.json":dS,"../../../../model_specs/minimax_h3.json":uS,"../../../../model_specs/minimax_music3.json":fS,"../../../../model_specs/miocodec.json":mS,"../../../../model_specs/miotts.json":pS,"../../../../model_specs/mira_tts.json":gS,"../../../../model_specs/mms_forced_aligner.json":hS,"../../../../model_specs/moonshine_asr.json":_S,"../../../../model_specs/moss_transcribe_diarize.json":vS,"../../../../model_specs/moss_tts_local.json":bS,"../../../../model_specs/moss_tts_nano.json":yS,"../../../../model_specs/moss_tts_v15.json":wS,"../../../../model_specs/moss_ttsd.json":kS,"../../../../model_specs/moss_voicegen.json":xS,"../../../../model_specs/mossformer2.json":SS,"../../../../model_specs/muscriptor.json":TS,"../../../../model_specs/nemotron_3_diar.json":$S,"../../../../model_specs/nemotron_asr.json":qS,"../../../../model_specs/neutts.json":GS,"../../../../model_specs/niagara_asr.json":FS,"../../../../model_specs/omnivoice.json":AS,"../../../../model_specs/open_wake_word.json":CS,"../../../../model_specs/outetts.json":MS,"../../../../model_specs/owsm.json":ES,"../../../../model_specs/owsm_ctc.json":zS,"../../../../model_specs/parakeet_tdt.json":US,"../../../../model_specs/personaplex.json":BS,"../../../../model_specs/piper_tts.json":RS,"../../../../model_specs/plapre.json":jS,"../../../../model_specs/pocket_tts.json":PS,"../../../../model_specs/pulsevad.json":NS,"../../../../model_specs/qwen3_asr.json":OS,"../../../../model_specs/qwen3_forced_aligner.json":IS,"../../../../model_specs/qwen3_tts.json":LS,"../../../../model_specs/reuse.json":DS,"../../../../model_specs/rvc.json":VS,"../../../../model_specs/sam_audio.json":HS,"../../../../model_specs/samsone.json":WS,"../../../../model_specs/sanotts.json":QS,"../../../../model_specs/seed_vc.json":KS,"../../../../model_specs/sense_asr.json":YS,"../../../../model_specs/sheetsage2.json":XS,"../../../../model_specs/sherpa_kws.json":JS,"../../../../model_specs/sidon.json":ZS,"../../../../model_specs/smart_turn.json":e8,"../../../../model_specs/soprano_tts.json":t8,"../../../../model_specs/sopro_tts.json":i8,"../../../../model_specs/sortformer_diar.json":a8,"../../../../model_specs/sortformer_diar_v2.json":n8,"../../../../model_specs/stable_audio.json":s8,"../../../../model_specs/supertonic.json":r8,"../../../../model_specs/tf_gridnet.json":o8,"../../../../model_specs/tone_color_vc.json":l8,"../../../../model_specs/universr.json":c8,"../../../../model_specs/vevo2.json":d8,"../../../../model_specs/vibeasr.json":u8,"../../../../model_specs/vibevoice.json":f8,"../../../../model_specs/vibevoice_asr.json":m8,"../../../../model_specs/vibevoice_asr_streaming.json":p8,"../../../../model_specs/vieneu_v3_turbo.json":g8,"../../../../model_specs/voxcpm1.json":h8,"../../../../model_specs/voxcpm2.json":_8,"../../../../model_specs/voxtral_realtime.json":v8,"../../../../model_specs/voxtral_tts.json":b8,"../../../../model_specs/whistle_asr.json":y8,"../../../../model_specs/xtts_v2.json":w8,"../../../../model_specs/yue2.json":k8,"../../../../model_specs/zipvoice.json":x8}),dc=Object.values(E1).flatMap(t=>(t.packages||[]).map(e=>({...e,family:t.family}))),$8=new Map(Object.values(E1).map(t=>[t.family,t])),q8=new Set(["ming3_tts","ming3_audio","latentsync","xtts_v2","canary_asr","cohere_asr","moss_transcribe_diarize","confucius4_r2t2","audiosr","controlfoley","breeze_tts","cosyvoice3","firered_audio","fireredtts3","irodori_tts","kitten_tts2","kokoro_tts","meanvc2","midashenglm_gen","sanotts","mossformer2","plapre","voxtral_tts"]),G8=/[\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff]/u;function uc(t,e){for(const a of[t,e])if(a&&!G8.test(a))return a;return""}function F8(t,e,a){return uc(e,a)||t.replace(/_/g," ")}const z1=t=>t.replace(/\\/g,"/").replace(/^\.\//,"").replace(/^models\//i,"").replace(/\/$/,"").toLowerCase(),U1=t=>t.toLowerCase().replace(/[^a-z0-9]/g,"");function om(t){return t.find(e=>e.default)||t.find(e=>e.precision==="q8_0")||t[0]}function B1(t){const e=dc.filter(l=>l.family===t.family);if(!e.length)return[];if(t.family==="ace_step"||t.family==="minimax_music3"||!t.download_id)return e;const a=e.find(l=>l.id===t.download_id);if(a){const l=a.id.replace(/_(?:q8_0|q8|f16|fp16|bf16|safetensors|orig)$/i,""),u=e.filter(p=>p.id.replace(/_(?:q8_0|q8|f16|fp16|bf16|safetensors|orig)$/i,"")===l);return u.length?u:[a]}const n=U1(t.download_id),s=e.filter(l=>{const u=U1(l.id);return u.startsWith(n)||n.startsWith(u)});if(s.length)return s;const r=z1(t.path),o=e.filter(l=>z1(l.target_directory)===r);if(o.length){const l=new Set(o.map(p=>p.id.replace(/_(?:q8_0|q8|f16|fp16|bf16|safetensors|orig)$/i,""))),u=e.filter(p=>l.has(p.id.replace(/_(?:q8_0|q8|f16|fp16|bf16|safetensors|orig)$/i,"")));return u.length?u:o}return e}function A8(t){const e=dc.filter(s=>s.family===t.family&&s.format==="gguf");if(!e.length)return[];if(t.family==="sanotts"||t.family==="xtts_v2"||!t.download_id)return e;const a=e.find(s=>s.id===t.download_id);if(!a)return B1(t);const n=e.filter(s=>s.target_directory===a.target_directory);return n.length?n:[a]}function R1(t,e){return e&&t.id===e?0:t.default?1:["q4_k","q4_0","q8_0","q8"].includes(t.precision)?2:["f16","fp16","bf16"].includes(t.precision)?3:t.precision==="f32"?4:t.precision==="orig"?5:6}function fc(t){if(t.family==="sanotts"){if(t.id.includes("_heart_nano_"))return"Heart Nano";if(t.id.includes("_heart_"))return"Heart";if(t.id.includes("_amy_"))return"Amy";if(t.id.includes("_hfc_"))return"HFC";if(t.id.includes("_kristin_"))return"Kristin";if(t.id.includes("_vi_"))return"Vietnamese";if(t.id.includes("_id_"))return"Indonesian";if(t.id.includes("_cs_"))return"Czech";if(t.id.includes("_de_"))return"German";if(t.id.includes("_es_"))return"Spanish";if(t.id.includes("_fr_"))return"French";if(t.id.includes("_it_"))return"Italian";if(t.id.includes("_pt_"))return"Portuguese (Brazil)";if(t.id.includes("_ro_"))return"Romanian";if(t.id.includes("_ru_"))return"Russian";if(t.id.includes("_tr_"))return"Turkish";if(t.id.includes("_ne_"))return"Nepali";if(t.id.includes("_hi_"))return"Hindi"}if(t.family==="ace_step"){const e=t.precision==="bf16"?"BF16":["q8_0","q8"].includes(t.precision)?"Q8":t.precision.toUpperCase();return t.id.includes("_xl_turbo_")?`GGUF Turbo XL ${e}`:t.id.includes("_xl_sft_")?`GGUF Turbo XL SFT ${e}`:t.id.includes("_turbo_")?`GGUF Turbo ${e}`:`GGUF ${e}`}return t.family==="irodori_tts"&&t.id.includes("_anime_")?"Anime Q8":t.family==="yue2"?t.id==="yue2_main_q8_0"?"Main Q8_0":t.id==="yue2_main_q4_0"?"Main Q4_0":t.id==="yue2_main_bf16"?"Main BF16":t.id==="yue2_vae_f16"?"VAE F16":t.id==="yue2_vae_f32"?"VAE F32":t.display_name||"Yue2 component":t.family==="auk"?t.id==="auk_base_f32"?"Base F32":t.id==="auk_base_f16"?"Base F16":t.id==="auk_base_q8_0"?"Base Q8_0":t.id==="auk_flash_f32"?"AuK-Flash F32":t.id==="auk_flash_f16"?"AuK-Flash F16":t.id==="auk_flash_q8_0"?"AuK-Flash Q8_0":t.id==="auk_qwen_bf16"?"Qwen BF16":t.id==="auk_qwen_q8_0"?"Qwen Q8_0":t.id==="auk_vae_f32"?"VAE F32":t.display_name||"AuK component":t.format==="safetensors"?"Safetensors":t.id.includes("int8_dit")?"GGUF Q4 ConvRot":t.precision==="q4_k"||t.precision==="q4_0"?"GGUF Q4":t.precision==="q8_0"||t.precision==="q8"?"GGUF Q8":t.precision==="bf16"?"GGUF BF16":t.precision==="f16"||t.precision==="fp16"?"GGUF FP16":`GGUF ${t.precision.toUpperCase()}`}function mc(t){let e;if(t.format==="gguf"&&t.family==="minimax_h3"){const s=t.id.includes("int8_dit")?"dit_int8.gguf":"dit.gguf";e=t.files?.find(r=>r.toLowerCase().endsWith(`/${s}`))}else{if(t.format==="gguf"&&["auk","lfm2_audio","liveavatar","minimax_music3","yue2"].includes(t.family))return`models/${t.target_directory}`;t.format==="gguf"&&(e=t.files?.find(s=>s.toLowerCase().endsWith(".gguf")))}if(!e)return`models/${t.target_directory}`;let a=e.replace(/\\/g,"/");const n=(t.strip_prefix||"").replace(/\\/g,"/").replace(/\/$/,"");return n&&a.startsWith(`${n}/`)&&(a=a.slice(n.length+1)),`models/${t.target_directory}/${a}`.replace(/\/+/g,"/")}function jd(t){if(t.family==="lfm2_audio"){const e=t.files?.find(a=>!a.startsWith("mmproj-"));return e?{"lfm2_audio.model_gguf":e}:void 0}if(t.family==="minimax_music3"){if(t.id==="minimax_music3_q8_0")return{"minimax_music3.language_model_gguf":"language_model_q8_0.gguf","minimax_music3.rvq_depth_decoder_gguf":"rvq_depth_decoder_q8_0.gguf","minimax_music3.flow_transformer_gguf":"transformer_q8_0.gguf"};if(t.id==="minimax_music3_bf16")return{"minimax_music3.language_model_gguf":"language_model_bf16.gguf","minimax_music3.rvq_depth_decoder_gguf":"rvq_depth_decoder_bf16.gguf","minimax_music3.flow_transformer_gguf":"transformer_bf16.gguf"};if(t.id==="minimax_music3_q4_0")return{"minimax_music3.language_model_gguf":"language_model_q4_0.gguf","minimax_music3.rvq_depth_decoder_gguf":"rvq_depth_decoder_q8_0.gguf","minimax_music3.flow_transformer_gguf":"transformer_q4_0.gguf"}}}function C8(t){if(["maya1","gigaam_asr","samsone","sam_audio","tone_color_vc","moss_ttsd","moss_voicegen","kugelaudio","crisperwhisper","index_echo","audio_flamingo","owsm","owsm_ctc","reuse","sidon","smart_turn"].includes(t.family)){const o=(t.download_id||"").replace(/_(?:q8_0|q4_k|bf16|f16|f32|orig)(?:_codec_f16(?:_decode)?)?$/,"");return dc.filter(l=>l.family===t.family&&l.format==="gguf"&&l.id.replace(/_(?:q8_0|q4_k|bf16|f16|f32|orig)(?:_codec_f16(?:_decode)?)?$/,"")===o).sort((l,u)=>+(u.id===t.download_id)-+(l.id===t.download_id)).map(l=>({id:l.id,label:fc(l),path:mc(l),format:l.format,precision:l.precision}))}const e=q8.has(t.family);if(t.family==="auk"){const o=dc.filter(u=>u.family===t.family&&u.format==="gguf"),l=new Map([["auk_base_f32",0],["auk_base_f16",1],["auk_base_q8_0",2],["auk_flash_f32",3],["auk_flash_f16",4],["auk_flash_q8_0",5],["auk_qwen_bf16",6],["auk_qwen_q8_0",7],["auk_vae_f32",8]]);return o.sort((u,p)=>(l.get(u.id)??99)-(l.get(p.id)??99)).map(u=>({id:u.id,label:fc(u),path:mc(u),format:u.format,precision:u.precision,session_options:jd(u)}))}if(t.family==="yue2"){const o=dc.filter(u=>u.family===t.family&&u.format==="gguf"),l=new Map([["yue2_main_q8_0",0],["yue2_main_q4_0",1],["yue2_main_bf16",2],["yue2_vae_f16",3],["yue2_vae_f32",4]]);return o.filter(u=>u.format==="gguf").sort((u,p)=>(l.get(u.id)??99)-(l.get(p.id)??99)).map(u=>({id:u.id,label:fc(u),path:mc(u),format:u.format,precision:u.precision,session_options:jd(u)}))}const a=e?A8(t):B1(t);if(t.family==="ace_step"||t.family==="minimax_music3"||e)return a.filter(o=>o.format==="gguf").sort((o,l)=>e?R1(o,t.download_id)-R1(l,t.download_id):+(l.default===!0)-+(o.default===!0)).map(o=>({id:o.id,label:fc(o),path:mc(o),format:o.format,precision:o.precision,session_options:jd(o)}));const n=om(a.filter(o=>o.format==="gguf"&&["q8_0","q8"].includes(o.precision))),s=om(a.filter(o=>o.format==="gguf"&&["f16","fp16"].includes(o.precision)))||om(a.filter(o=>o.format==="gguf"&&o.precision==="bf16")),r=!n&&!s?a.filter(o=>o.format==="gguf"):[];return[n,s,...r].filter(o=>o!==void 0).map(o=>({id:o.id,label:fc(o),path:mc(o),format:o.format,precision:o.precision,session_options:jd(o)}))}const pn=S8.models.flatMap(t=>{const e=C8(t);if(t.download_id&&e.length===0)return[];const a=e[0],n=$8.get(t.family);return[{...t,display_name:uc(t.display_name_en,t.display_name)||t.id,input_hint:uc(t.input_hint_en,t.input_hint),download_id:a?.id||t.download_id,install_packages:e,path:a?.path||t.path,request_options:n?.options?.request?.map(s=>s.name),required_request_options:n?.options?.request?.filter(s=>s.required===!0).map(s=>s.name),builtin_voices:t.builtin_voices??n?.ui?.builtin_voices,default_voice:t.default_voice??n?.ui?.default_voice}]}),j1=Object.fromEntries(Object.entries(T8).filter(t=>Array.isArray(t[1])).map(([t,e])=>[t,e.map(a=>({...a,label:F8(a.name,a.label_en,a.label),placeholder:uc(a.placeholder_en,a.placeholder),info:uc(a.info_en,a.info)}))])),M8={tts:"Text to speech",clon:"Voice cloning",asr:"Transcription",gen:"Music & sound",midi:"Audio to MIDI",vc:"Voice conversion",svc:"Singing conversion",s2s:"Speech editing",sep:"Source separation",vad:"Voice activity",diar:"Speaker diarization",align:"Forced alignment",vdes:"Voice design",spk:"Speaker analysis",turn:"Turn detection",wake:"Wake-word detection",cls:"Audio classification"},E8={code:"it",name:"Italiano",translations:JSON.parse(`{"request.minimaxFrames":"{frames} fotogrammi di output allineati","param.minimax_h3.num_inference_steps.label":"Passaggi di denoising","param.minimax_h3.num_inference_steps.info":"Dodici passaggi di denoising offrono un buon equilibrio tra qualità e prestazioni.","param.minimax_h3.num_frames.label":"Fotogrammi di output","param.minimax_h3.num_frames.info":"Calcolati dalla durata a circa 24 fotogrammi per secondo di output. Modificando i fotogrammi si aggiorna anche la durata.","param.minimax_h3.guidance_scale.label":"Scala di guida","param.minimax_h3.sampler.label":"Campionatore","param.minimax_h3.dit_acceleration.label":"Accelerazione DiT","param.minimax_h3.dit_acceleration.info":"None usa il percorso DiT completo orientato alla qualità. Le modalità accelerate sono sperimentali e possono distorcere alcuni risultati.","param.minimax_h3.return_video.label":"Decodifica video","param.minimax_h3.return_video.info":"Disattivata per impostazione predefinita per ridurre l'uso della memoria e restituire solo l'audio.","model.minimax_h3.hint":"MiniMax-H3 usa un DiT audio/video congiunto. GGUF Q4 privilegia la qualità; GGUF Q4 ConvRot, solo CUDA, usa un po' più VRAM per una maggiore velocità. Il percorso DiT completo predefinito privilegia la qualità audio e disattiva la decodifica video.","status.modelReady":"{model} è caricato e pronto.","status.runningTask":"Esecuzione di {task}...","status.completeIn":"Completato in {seconds} s.","status.packageAvailable":"{model} userà {format}. Ora è disponibile nello Studio.","app.nativeStudio":"Studio nativo","nav.studio":"Studio","nav.arena":"Arena","nav.models":"Modelli","nav.runtime":"Runtime","language.label":"Lingua dell'interfaccia","theme.label":"Tema","theme.system":"Sistema","theme.dark":"Scuro","theme.light":"Chiaro","workflow.tts":"Sintesi vocale","workflow.asr":"ASR / Trascrizione","workflow.music":"Generazione di musica e video","workflow.vc":"Conversione vocale","workflow.sep":"Separazione sorgenti","workflow.analysis":"Analisi audio","workflow.design":"Progettazione voce","studio.eyebrow":"INTELLIGENZA AUDIO LOCALE","studio.title":"Studio audio","studio.subtitle.tts":"Genera una voce naturale dal testo, con voci predefinite e clonazione quando supportate.","studio.subtitle.asr":"Trascrivi l'audio parlato in testo, con controlli di lingua e timestamp quando supportati.","studio.subtitle.music":"Crea musica e suoni da una descrizione, un testo o un audio di riferimento.","studio.subtitle.vc":"Trasforma una registrazione in un'altra voce conservando l'interpretazione parlata o cantata.","studio.subtitle.sep":"Separa una registrazione in voce, strumenti o altre tracce audio disponibili.","studio.subtitle.analysis":"Analizza attività vocale, parlanti, tempi e allineamento dell'audio.","studio.subtitle.design":"Crea o perfeziona una voce da una descrizione e dai controlli di riferimento supportati.","studio.model":"Modello","studio.noModel":"Nessun modello selezionato","studio.resident":"Caricato","studio.notInstalled":"Non installato","studio.available":"Disponibile","studio.chooseInstalled":"Scegli un modello installato","studio.notDownloaded":"non scaricato","studio.pathFound":"Percorso trovato","studio.pathMissing":"Percorso mancante","studio.pathUnknown":"Percorso non verificato","studio.load":"Carica modello","studio.unload":"Scarica modello","studio.working":"Elaborazione…","studio.bundledLoaded":"Integrato · caricato","request.label":"RICHIESTA","request.title":"Input e controlli","request.prompt":"Prompt","request.text":"Testo","request.splitLongText":"Dividi e unisci testi lunghi","request.charactersPerChunk":"Caratteri per segmento","request.language":"Lingua","request.autoLanguage":"vuoto = automatico","request.seed":"Seed","request.randomSeed":"-1 = casuale","request.maxTokens":"Token massimi","request.sourceAudio":"Audio sorgente","request.recordMicrophone":"Registra microfono","voice.quickStart":"Voci demo per avvio rapido","voice.useReference":"Usa un file audio di riferimento qui sotto","voice.reference":"Voce di riferimento","voice.required":"obbligatoria","voice.optional":"opzionale","voice.referenceText":"Testo di riferimento","voice.transcript":"Trascrizione di riferimento","voice.saved":"Voci salvate","voice.browserOnly":"solo in questo browser","voice.chooseSaved":"Scegli una voce salvata...","voice.libraryName":"Nome nella libreria","voice.save":"Salva voce","common.delete":"Elimina","common.cancel":"Annulla","common.close":"Chiudi","common.refresh":"Aggiorna","common.browse":"Sfoglia","common.apply":"Applica","options.modelParameters":"Parametri del modello","options.additional":"Opzioni aggiuntive","run.run":"Esegui","run.cancel":"Annulla","run.working":"Elaborazione…","result.title":"Risultato","result.label":"RISULTATO","result.saveWav":"Salva WAV","result.empty":"L'audio generato e i risultati strutturati appariranno qui.","models.eyebrow":"LIBRERIA MODELLI","models.title":"Pacchetti locali","models.subtitle":"Scarica e gestisci i pacchetti dei modelli senza uscire dall'interfaccia.","models.folder":"Cartella modelli","models.useDefault":"Usa predefinita","models.showTypes":"Mostra tipi di modello","models.stopDownload":"Interrompi download","models.cleanPartial":"Elimina download parziale","runtime.title":"Registro sessione","runtime.status":"Stato","runtime.backend":"Backend","runtime.registered":"Registrati","runtime.resident":"Caricati","runtime.noEvents":"Nessun evento.","folder.title":"Scegli una cartella","folder.up":"Livello superiore","folder.select":"Seleziona questa cartella","common.applying":"Applicazione…","common.disabled":"Disabilitato","common.enabled":"Abilitato","file.choose":"Scegli file","file.none":"Nessun file selezionato","folder.closeLabel":"Chiudi selettore cartelle","folder.empty":"Questa cartella non contiene sottocartelle.","folder.eyebrow":"CARTELLA MODELLI","folder.loading":"Caricamento...","folder.loadingFolders":"Caricamento cartelle...","footer.embedded":"SvelteKit · incorporato in audiocpp_server","models.checkingSize":"verifica dimensione…","models.default":"Predefinita","models.downloaded":"Scaricato","models.folderHint":"download, rilevamento locale e caricamento dei modelli","models.folderPlaceholder":"cartella models accanto ad audiocpp_server","models.hfAccess":"Accesso HF richiesto","models.model":"modello","models.queued":"in coda","models.reinstall":"Reinstalla","models.selected":"Selezionato","models.sharedPackage":"Usa il pacchetto condiviso {name} mostrato sopra.","models.sizeUnavailable":"dimensione non disponibile","models.stopping":"arresto","models.update":"Aggiorna","models.updateAvailable":"Aggiornamento disponibile","models.upToDate":"Aggiornato","models.variants":"varianti","models.versionUnknown":"Versione sconosciuta","nav.primary":"Navigazione principale","nav.workflows":"Flussi di lavoro audio","arena.eyebrow":"ARENA","arena.title.tts":"Confronto TTS","arena.title.vc":"Confronto conversione vocale","arena.title.asr":"Confronto ASR","arena.subtitle":"Esegue lo stesso input sui modelli installati e sui pacchetti scelti, uno dopo l'altro.","arena.subtitle.tts":"Esegue lo stesso testo sui modelli TTS e sui pacchetti scelti.","arena.subtitle.vc":"Esegue lo stesso audio sorgente sui modelli di conversione vocale scelti.","arena.subtitle.asr":"Esegue lo stesso audio sorgente sui modelli ASR scelti e confronta le trascrizioni.","arena.mode.tts":"TTS","arena.mode.vc":"Conversione vocale","arena.mode.asr":"ASR","arena.input.label":"Input","arena.input.title":"Richiesta condivisa","arena.input.textPlaceholder":"Inserisci un prompt da confrontare tra modelli TTS","arena.input.groundTruth":"Testo atteso","arena.input.groundTruthPlaceholder":"Incolla la trascrizione attesa per calcolare il WER","arena.shared":"condivisa","arena.voice.label":"Voce","arena.voice.modelDefault":"Predefinita del modello","arena.voice.builtin":"Voce demo integrata","arena.voice.reference":"Audio di riferimento","arena.voice.builtinNote":"Le voci integrate vengono passate come voice ID a ogni modello. Questo tipo di voce non richiede testo di riferimento.","arena.voice.targetSpeaker":"Audio parlante target","arena.voice.clearTarget":"Cancella target","arena.voice.clearReference":"Cancella riferimento","arena.options.shared":"Opzioni condivise","arena.queue.label":"Coda","arena.queue.title":"Modelli","arena.queue.add":"Aggiungi","arena.queue.remove":"Rimuovi","arena.queue.clear":"Cancella","arena.queue.empty":"Aggiungi modelli installati o pacchetti di precisione da confrontare.","arena.run":"Esegui arena","arena.package.label":"Pacchetto","arena.package.configured":"Configurato","arena.results.title":"Confronta output","arena.results.empty":"Nessun risultato arena.","arena.metric.wall":"tempo","arena.metric.rtf":"rtf","arena.metric.wer":"wer","arena.itemStatus.queued":"in coda","arena.itemStatus.loading":"caricamento","arena.itemStatus.running":"esecuzione","arena.itemStatus.done":"completato","arena.itemStatus.failed":"fallito","arena.itemStatus.skipped":"saltato","arena.status.duplicate":"{model} {package} è già nell'arena.","arena.status.loadingModel":"Caricamento modello","arena.status.runningRequest":"Esecuzione richiesta","arena.status.addModel":"Aggiungi almeno un modello all'arena.","arena.status.running":"Esecuzione arena {mode}...","arena.status.complete":"Esecuzione arena completata.","arena.note.skippedTargetVoice":"Saltato perché questo modello VC richiede audio del parlante target.","arena.note.skippedReferenceText":"Saltato perché questo modello richiede testo di riferimento per l'input voce selezionato.","arena.note.builtinVoice":"Voce integrata usata: {voice}.","arena.note.referenceVoice":"Voce di riferimento usata.","arena.note.referenceUnsupported":"Voce predefinita usata; la voce di riferimento non è supportata.","arena.note.defaultVoice":"Voce predefinita usata: {voice}.","arena.note.skippedReferenceVoice":"Saltato perché questo modello richiede una voce di riferimento.","arena.error.seed":"Il seed deve essere -1 o un intero unsigned a 32 bit (0-4294967295).","arena.error.jsonObject":"deve essere un oggetto","arena.error.invalidJson":"JSON opzioni arena non valido: {error}","arena.error.unregistered":"Il modello configurato non è registrato da questo server.","arena.error.notDownloaded":"{package} non è scaricato.","arena.error.loadFailed":"Il modello non è stato caricato.","arena.error.missingCatalog":"Il modello non è più nel catalogo.","arena.error.enterTtsText":"Inserisci testo per l'arena TTS.","arena.error.chooseAsrSource":"Scegli audio sorgente per l'arena ASR.","arena.error.chooseVcSource":"Scegli audio sorgente per l'arena VC.","arena.error.noAudio":"La risposta non include audio.","request.alignmentText":"Testo di allineamento","request.context":"Prompt di contesto","request.contextHint":"terminologia o nomi opzionali","request.duration":"Durata in secondi","request.liveDescription":"Elabora richieste consecutive di quattro secondi usando la modalità streaming del modello.","request.liveTitle":"Trascrizione microfono in diretta","request.lyrics":"Testo della canzone","request.optional":"opzionale","request.recordingMicrophone":"Registrazione microfono","request.soundPlaceholder":"Descrivi il suono o la musica…","request.startLive":"Avvia diretta","request.stopLive":"Ferma diretta","request.stopRecording":"Ferma registrazione","request.textPlaceholder":"Inserisci il testo…","request.voiceDescription":"Descrizione della voce","request.voiceDescriptionPlaceholder":"Una voce calda e calma con ritmo misurato…","result.track":"traccia","result.tracks":"tracce","runtime.eyebrow":"RUNTIME","runtime.subtitle":"Eventi del ciclo di vita e delle richieste nel browser.","status.ready":"Pronto","studio.estimatedVram":"VRAM stimata: {value} GB","studio.vram":"VRAM —","task.align":"Allineamento forzato","task.asr":"Trascrizione","task.clon":"Clonazione vocale","task.diar":"Diarizzazione parlanti","task.gen":"Generazione musicale","task.s2s":"Modifica del parlato","task.sep":"Separazione sorgenti","task.svc":"Conversione della voce cantata","task.tts":"Sintesi vocale","task.vad":"Attività vocale","task.vc":"Conversione vocale","task.vdes":"Progettazione voce","voice.bundledNote":"L'audio di riferimento incluso e la relativa trascrizione vengono forniti automaticamente.","voice.namePlaceholder":"La mia voce di riferimento","voice.recommendedClone":"consigliata per la clonazione","voice.recording":"Registrazione voce di riferimento","voice.requiredClone":"obbligatoria per questa clonazione vocale","voice.transcriptPlaceholder":"Digita le parole esatte dell'audio di riferimento oppure carica il file .txt corrispondente."}`)},z8={code:"ja",name:"日本語",translations:{"request.minimaxFrames":"位置合わせ済みの出力フレーム数: {frames}","param.minimax_h3.num_inference_steps.label":"ノイズ除去ステップ数","param.minimax_h3.num_inference_steps.info":"ノイズ除去を12ステップにすると、品質と処理速度のバランスがよくなります。","param.minimax_h3.num_frames.label":"出力フレーム数","param.minimax_h3.num_frames.info":"出力の長さから、毎秒約24フレームとして計算します。フレーム数を変更すると、出力の長さも更新されます。","param.minimax_h3.guidance_scale.label":"ガイダンススケール","param.minimax_h3.sampler.label":"サンプラー","param.minimax_h3.dit_acceleration.label":"DiT高速化","param.minimax_h3.dit_acceleration.info":"Noneでは、品質を重視した完全なDiT処理を使用します。高速化モードは実験的な機能であり、出力に歪みが生じる場合があります。","param.minimax_h3.return_video.label":"動画のデコード","param.minimax_h3.return_video.info":"メモリ使用量を抑えて音声のみを返すため、デフォルトでは無効になっています。","model.minimax_h3.hint":"MiniMax-H3は音声と動画を統合したDiTを使用します。GGUF Q4は品質を重視します。CUDA専用のGGUF Q4 ConvRotは、VRAM使用量がやや増える代わりに処理が高速になります。デフォルトの完全なDiT処理では音声品質を重視し、動画のデコードを無効にします。","status.modelReady":"{model}の読み込みが完了し、使用可能になりました。","status.runningTask":"{task}を実行中…","status.completeIn":"{seconds}秒で完了しました。","status.packageAvailable":"{model}は{format}を使用します。スタジオで利用できるようになりました。","app.nativeStudio":"ネイティブスタジオ","nav.studio":"スタジオ","nav.arena":"アリーナ","nav.models":"モデル","nav.runtime":"ランタイム","language.label":"表示言語","theme.label":"テーマ","theme.system":"システム設定に従う","theme.dark":"ダーク","theme.light":"ライト","workflow.tts":"音声合成","workflow.asr":"音声認識 / 文字起こし","workflow.music":"音楽・動画生成","workflow.vc":"声質変換","workflow.sep":"音源分離","workflow.analysis":"音声解析","workflow.design":"声のデザイン","studio.eyebrow":"ローカル音声AI","studio.title":"オーディオスタジオ","studio.subtitle.tts":"テキストから自然な音声を生成します。対応モデルでは、プリセット音声や音声クローンを利用できます。","studio.subtitle.asr":"音声をテキストに書き起こします。対応モデルでは、言語やタイムスタンプを設定できます。","studio.subtitle.music":"説明文、歌詞、参照音声から音楽やサウンドを作成します。","studio.subtitle.vc":"話し方や歌い方を保ちながら、録音した音声を別の声に変換します。","studio.subtitle.sep":"録音した音声を、ボーカル、楽器などの対応する音声トラックに分離します。","studio.subtitle.analysis":"音声の発話区間、話者、タイミング、アラインメントを解析します。","studio.subtitle.design":"説明文と対応する参照設定を使って、声を作成・調整します。","studio.model":"モデル","studio.noModel":"モデルが選択されていません","studio.resident":"読み込み済み","studio.notInstalled":"未インストール","studio.available":"利用可能","studio.chooseInstalled":"インストール済みのモデルを選択","studio.notDownloaded":"未ダウンロード","studio.pathFound":"パスが見つかりました","studio.pathMissing":"パスが見つかりません","studio.pathUnknown":"パス未確認","studio.load":"モデルを読み込む","studio.unload":"モデルを解放","studio.working":"処理中…","studio.bundledLoaded":"内蔵 · 読み込み済み","request.label":"リクエスト","request.title":"入力と設定","request.prompt":"プロンプト","request.text":"テキスト","request.splitLongText":"長文を分割して結果を結合","request.charactersPerChunk":"セグメントあたりの文字数","request.language":"言語","request.autoLanguage":"空欄 = 自動","request.seed":"シード値","request.randomSeed":"-1 = ランダム","request.maxTokens":"最大トークン数","request.sourceAudio":"入力音声","request.recordMicrophone":"マイクで録音","voice.quickStart":"すぐに試せるデモ音声","voice.configured":"設定済みの音声","voice.useReference":"以下の参照音声ファイルを使用","voice.reference":"参照音声","voice.required":"必須","voice.optional":"任意","voice.referenceText":"参照テキスト","voice.transcript":"参照音声の文字起こし","voice.saved":"保存済みの音声","voice.browserOnly":"このブラウザー内のみ","voice.chooseSaved":"保存済みの音声を選択…","voice.libraryName":"ライブラリ内の名前","voice.save":"音声を保存","common.delete":"削除","common.cancel":"キャンセル","common.close":"閉じる","common.refresh":"更新","common.browse":"参照","common.apply":"適用","options.modelParameters":"モデルのパラメーター","options.additional":"追加オプション","run.run":"実行","run.cancel":"キャンセル","run.working":"処理中…","result.title":"結果","result.label":"結果","result.saveWav":"WAVを保存","result.empty":"生成された音声と構造化された結果がここに表示されます。","models.eyebrow":"モデルライブラリ","models.title":"ローカルパッケージ","models.subtitle":"この画面からモデルパッケージをダウンロード・管理できます。","models.folder":"モデルフォルダー","models.useDefault":"デフォルトを使用","models.showTypes":"モデルの種類を表示","models.stopDownload":"ダウンロードを停止","models.cleanPartial":"未完了のダウンロードを削除","runtime.title":"セッションログ","runtime.status":"状態","runtime.backend":"バックエンド","runtime.registered":"登録済み","runtime.resident":"読み込み済み","runtime.noEvents":"イベントはありません。","folder.title":"フォルダーを選択","folder.up":"上の階層へ","folder.select":"このフォルダーを選択","common.applying":"適用中…","common.disabled":"無効","common.enabled":"有効","file.choose":"ファイルを選択","file.none":"ファイルが選択されていません","folder.closeLabel":"フォルダー選択を閉じる","folder.empty":"このフォルダーにはサブフォルダーがありません。","folder.eyebrow":"モデルフォルダー","folder.loading":"読み込み中…","folder.loadingFolders":"フォルダーを読み込み中…","footer.embedded":"SvelteKit · audiocpp_serverに組み込み","models.checkingSize":"サイズを確認中…","models.default":"デフォルト","models.downloaded":"ダウンロード済み","models.folderHint":"モデルのダウンロード、ローカルでの検出、読み込みに使用","models.folderPlaceholder":"audiocpp_serverと同じ場所にあるmodelsフォルダー","models.hfAccess":"HFへのアクセスが必要","models.model":"モデル","models.queued":"待機中","models.reinstall":"再インストール","models.selected":"選択済み","models.sharedPackage":"上に表示されている共有パッケージ{name}を使用します。","models.sizeUnavailable":"サイズを取得できません","models.stopping":"停止中","models.update":"更新","models.updateAvailable":"更新があります","models.upToDate":"最新です","models.variants":"バリエーション","models.versionUnknown":"バージョン不明","nav.primary":"メインナビゲーション","nav.workflows":"音声ワークフロー","arena.eyebrow":"アリーナ","arena.title.tts":"音声合成の比較","arena.title.vc":"声質変換の比較","arena.title.asr":"音声認識の比較","arena.subtitle":"インストール済みのモデルと選択したパッケージで、同じ入力を順番に処理します。","arena.subtitle.tts":"選択した音声合成モデルとパッケージで、同じテキストを処理します。","arena.subtitle.vc":"選択した声質変換モデルで、同じ入力音声を処理します。","arena.subtitle.asr":"選択した音声認識モデルで同じ入力音声を処理し、文字起こし結果を比較します。","arena.mode.tts":"音声合成","arena.mode.vc":"声質変換","arena.mode.asr":"音声認識","arena.input.label":"入力","arena.input.title":"共通のリクエスト","arena.input.textPlaceholder":"音声合成モデル間で比較するプロンプトを入力","arena.input.groundTruth":"正解テキスト","arena.input.groundTruthPlaceholder":"単語誤り率(WER)を計算するための正解の文字起こしを貼り付け","arena.shared":"共通","arena.voice.label":"声","arena.voice.modelDefault":"モデルのデフォルト","arena.voice.builtin":"内蔵デモ音声","arena.voice.reference":"参照音声","arena.voice.builtinNote":"内蔵音声は、音声IDとして各モデルに渡されます。この種類の音声には参照テキストは不要です。","arena.voice.targetSpeaker":"変換先の話者の音声","arena.voice.clearTarget":"変換先の音声をクリア","arena.voice.clearReference":"参照音声をクリア","arena.options.shared":"共通オプション","arena.queue.label":"キュー","arena.queue.title":"モデル","arena.queue.add":"追加","arena.queue.remove":"削除","arena.queue.clear":"クリア","arena.queue.empty":"比較するインストール済みモデル、または精度別のパッケージを追加してください。","arena.run":"比較を実行","arena.package.label":"パッケージ","arena.package.configured":"設定済み","arena.results.title":"出力を比較","arena.results.empty":"比較結果はありません。","arena.metric.wall":"経過時間","arena.metric.rtf":"RTF","arena.metric.wer":"WER","arena.itemStatus.queued":"待機中","arena.itemStatus.loading":"読み込み中","arena.itemStatus.running":"実行中","arena.itemStatus.done":"完了","arena.itemStatus.failed":"失敗","arena.itemStatus.skipped":"スキップ","arena.status.duplicate":"{model} {package}はすでにアリーナに追加されています。","arena.status.loadingModel":"モデルを読み込み中","arena.status.runningRequest":"リクエストを実行中","arena.status.addModel":"アリーナにモデルを1つ以上追加してください。","arena.status.running":"アリーナで{mode}を実行中…","arena.status.complete":"アリーナでの実行が完了しました。","arena.note.skippedTargetVoice":"この声質変換モデルには変換先の話者の音声が必要なため、スキップしました。","arena.note.skippedReferenceText":"このモデルでは、選択した音声入力に参照テキストが必要なため、スキップしました。","arena.note.builtinVoice":"内蔵音声を使用しました: {voice}。","arena.note.referenceVoice":"参照音声を使用しました。","arena.note.referenceUnsupported":"参照音声に対応していないため、デフォルトの音声を使用しました。","arena.note.defaultVoice":"デフォルトの音声を使用しました: {voice}。","arena.note.skippedReferenceVoice":"このモデルには参照音声が必要なため、スキップしました。","arena.error.seed":"シード値は-1、または32ビット符号なし整数(0~4294967295)で指定してください。","arena.error.jsonObject":"オブジェクトである必要があります","arena.error.invalidJson":"アリーナのオプションJSONが無効です: {error}","arena.error.unregistered":"設定されたモデルは、このサーバーに登録されていません。","arena.error.notDownloaded":"{package}はダウンロードされていません。","arena.error.loadFailed":"モデルを読み込めませんでした。","arena.error.missingCatalog":"モデルはカタログに存在しなくなりました。","arena.error.enterTtsText":"音声合成の比較に使用するテキストを入力してください。","arena.error.chooseAsrSource":"音声認識の比較に使用する入力音声を選択してください。","arena.error.chooseVcSource":"声質変換の比較に使用する入力音声を選択してください。","arena.error.noAudio":"応答に音声が含まれていません。","request.alignmentText":"アラインメント用テキスト","request.context":"コンテキストプロンプト","request.contextHint":"用語や名前など(任意)","request.duration":"長さ(秒)","request.liveDescription":"モデルのストリーミングモードを使い、4秒ごとのリクエストを連続して処理します。","request.liveTitle":"マイク音声のリアルタイム文字起こし","request.lyrics":"歌詞","request.optional":"任意","request.recordingMicrophone":"マイクで録音中","request.soundPlaceholder":"サウンドや音楽の特徴を入力…","request.startLive":"リアルタイム文字起こしを開始","request.stopLive":"リアルタイム文字起こしを停止","request.stopRecording":"録音を停止","request.textPlaceholder":"テキストを入力…","request.voiceDescription":"声の説明","request.voiceDescriptionPlaceholder":"温かみのある落ち着いた声で、ゆったりとしたテンポ…","result.track":"トラック","result.tracks":"トラック","runtime.eyebrow":"ランタイム","runtime.subtitle":"ブラウザー内のライフサイクルとリクエストに関するイベント。","status.ready":"準備完了","studio.estimatedVram":"推定VRAM使用量: {value} GB","studio.vram":"VRAM —","task.align":"強制アラインメント","task.asr":"文字起こし","task.clon":"音声クローン","task.diar":"話者ダイアライゼーション","task.gen":"音楽生成","task.s2s":"発話の編集","task.sep":"音源分離","task.svc":"歌声変換","task.tts":"音声合成","task.vad":"音声区間検出","task.vc":"声質変換","task.vdes":"声のデザイン","voice.bundledNote":"同梱の参照音声と対応する文字起こしが自動的に入力されます。","voice.namePlaceholder":"自分の参照音声","voice.recommendedClone":"音声クローンに推奨","voice.recording":"参照音声を録音中","voice.requiredClone":"この音声クローンには必須","voice.transcriptPlaceholder":"参照音声で話されている内容を正確に入力するか、対応する.txtファイルを読み込んでください。"}},U8={code:"pl",name:"Polski",translations:JSON.parse('{"request.minimaxFrames":"{frames} wyrównanych klatek wyjściowych","param.minimax_h3.num_inference_steps.label":"Kroki odszumiania","param.minimax_h3.num_inference_steps.info":"Dwanaście kroków odszumiania zapewnia praktyczną równowagę jakości i wydajności.","param.minimax_h3.num_frames.label":"Klatki wyjściowe","param.minimax_h3.num_frames.info":"Obliczane z czasu trwania przy około 24 klatkach na sekundę wyjścia. Zmiana liczby klatek aktualizuje również czas trwania.","param.minimax_h3.guidance_scale.label":"Skala naprowadzania","param.minimax_h3.sampler.label":"Próbnik","param.minimax_h3.dit_acceleration.label":"Przyspieszenie DiT","param.minimax_h3.dit_acceleration.info":"None używa pełnej ścieżki DiT nastawionej na jakość. Tryby przyspieszone są eksperymentalne i mogą zniekształcać niektóre wyniki.","param.minimax_h3.return_video.label":"Dekoduj wideo","param.minimax_h3.return_video.info":"Domyślnie wyłączone, aby zmniejszyć zużycie pamięci i zwracać tylko dźwięk.","model.minimax_h3.hint":"MiniMax-H3 korzysta ze wspólnego DiT audio/wideo. GGUF Q4 stawia na jakość; dostępny tylko dla CUDA GGUF Q4 ConvRot używa nieco więcej VRAM, aby działać szybciej. Domyślna pełna ścieżka DiT nadaje priorytet jakości dźwięku, a dekodowanie wideo jest wyłączone.","status.modelReady":"{model} jest załadowany i gotowy.","status.runningTask":"Uruchamianie: {task}...","status.completeIn":"Ukończono w {seconds} s.","status.packageAvailable":"{model} użyje {format}. Model jest dostępny w Studio.","app.nativeStudio":"Studio natywne","nav.studio":"Studio","nav.arena":"Arena","nav.models":"Modele","nav.runtime":"Środowisko","language.label":"Język interfejsu","theme.label":"Motyw","theme.system":"System","theme.dark":"Ciemny","theme.light":"Jasny","workflow.tts":"Synteza mowy","workflow.asr":"ASR / Transkrypcja","workflow.music":"Generowanie muzyki i wideo","workflow.vc":"Konwersja głosu","workflow.sep":"Separacja źródeł","workflow.analysis":"Analiza dźwięku","workflow.design":"Projektowanie głosu","studio.eyebrow":"LOKALNA INTELIGENCJA AUDIO","studio.title":"Studio audio","studio.subtitle.tts":"Generuj naturalną mowę z tekstu, korzystając z gotowych głosów i klonowania, gdy model je obsługuje.","studio.subtitle.asr":"Transkrybuj mowę z nagrań na tekst, korzystając z ustawień języka i znaczników czasu, gdy są obsługiwane.","studio.subtitle.music":"Twórz muzykę i dźwięki na podstawie opisu, tekstu piosenki lub nagrania referencyjnego.","studio.subtitle.vc":"Przekształcaj nagranie w inny głos, zachowując sposób mówienia lub śpiewania.","studio.subtitle.sep":"Rozdzielaj nagranie na wokal, instrumenty lub inne dostępne ścieżki.","studio.subtitle.analysis":"Analizuj aktywność mowy, mówców, czas i wyrównanie nagrania.","studio.subtitle.design":"Twórz lub dopracowuj głos na podstawie opisu i obsługiwanych ustawień referencyjnych.","studio.model":"Model","studio.noModel":"Nie wybrano modelu","studio.resident":"Załadowany","studio.notInstalled":"Nie zainstalowano","studio.available":"Dostępny","studio.chooseInstalled":"Wybierz zainstalowany model","studio.notDownloaded":"nie pobrano","studio.pathFound":"Ścieżka znaleziona","studio.pathMissing":"Brak ścieżki","studio.pathUnknown":"Ścieżka niesprawdzona","studio.load":"Załaduj model","studio.unload":"Wyładuj model","studio.working":"Przetwarzanie…","studio.bundledLoaded":"Wbudowany · załadowany","request.label":"ŻĄDANIE","request.title":"Dane wejściowe i ustawienia","request.prompt":"Polecenie","request.text":"Tekst","request.splitLongText":"Dziel i łącz długi tekst","request.charactersPerChunk":"Znaki na fragment","request.language":"Język","request.autoLanguage":"puste = automatycznie","request.seed":"Ziarno","request.randomSeed":"-1 = losowe","request.maxTokens":"Maksymalna liczba tokenów","request.sourceAudio":"Dźwięk źródłowy","request.recordMicrophone":"Nagraj mikrofon","voice.quickStart":"Szybkie głosy demonstracyjne","voice.useReference":"Użyj pliku dźwiękowego poniżej","voice.reference":"Głos referencyjny","voice.required":"wymagany","voice.optional":"opcjonalny","voice.referenceText":"Tekst referencyjny","voice.transcript":"Transkrypcja referencyjna","voice.saved":"Zapisane głosy","voice.browserOnly":"tylko w tej przeglądarce","voice.chooseSaved":"Wybierz zapisany głos...","voice.libraryName":"Nazwa w bibliotece","voice.save":"Zapisz głos","common.delete":"Usuń","common.cancel":"Anuluj","common.close":"Zamknij","common.refresh":"Odśwież","common.browse":"Przeglądaj","common.apply":"Zastosuj","options.modelParameters":"Parametry modelu","options.additional":"Dodatkowe opcje","run.run":"Uruchom","run.cancel":"Anuluj","run.working":"Przetwarzanie…","result.title":"Wynik","result.label":"WYNIK","result.saveWav":"Zapisz WAV","result.empty":"W tym miejscu pojawi się wygenerowany dźwięk i wyniki strukturalne.","models.eyebrow":"BIBLIOTEKA MODELI","models.title":"Pakiety lokalne","models.subtitle":"Pobieraj i zarządzaj pakietami modeli bez opuszczania interfejsu.","models.folder":"Folder modeli","models.useDefault":"Użyj domyślnego","models.showTypes":"Pokaż typy modeli","models.stopDownload":"Zatrzymaj pobieranie","models.cleanPartial":"Usuń częściowe pobieranie","runtime.title":"Dziennik sesji","runtime.status":"Stan","runtime.backend":"Backend","runtime.registered":"Zarejestrowane","runtime.resident":"Załadowane","runtime.noEvents":"Brak zdarzeń.","folder.title":"Wybierz folder","folder.up":"Poziom wyżej","folder.select":"Wybierz ten folder","common.applying":"Stosowanie…","common.disabled":"Wyłączone","common.enabled":"Włączone","file.choose":"Wybierz plik","file.none":"Nie wybrano pliku","folder.closeLabel":"Zamknij przeglądarkę folderów","folder.empty":"Ten folder nie zawiera podfolderów.","folder.eyebrow":"FOLDER MODELI","folder.loading":"Ładowanie...","folder.loadingFolders":"Ładowanie folderów...","footer.embedded":"SvelteKit · wbudowany w audiocpp_server","models.checkingSize":"sprawdzanie rozmiaru…","models.default":"Domyślnie","models.downloaded":"Pobrano","models.folderHint":"pobieranie, wykrywanie lokalne i ładowanie modeli","models.folderPlaceholder":"folder models obok audiocpp_server","models.hfAccess":"Wymagany dostęp do HF","models.model":"model","models.queued":"w kolejce","models.reinstall":"Zainstaluj ponownie","models.selected":"Wybrano","models.sharedPackage":"Używa wspólnego pakietu {name} pokazanego powyżej.","models.sizeUnavailable":"rozmiar niedostępny","models.stopping":"zatrzymywanie","models.update":"Aktualizuj","models.updateAvailable":"Dostępna aktualizacja","models.upToDate":"Aktualny","models.variants":"warianty","models.versionUnknown":"Nieznana wersja","nav.primary":"Główna nawigacja","nav.workflows":"Przepływy pracy audio","arena.eyebrow":"ARENA","arena.title.tts":"Porównanie TTS","arena.title.vc":"Porównanie konwersji głosu","arena.title.asr":"Porównanie ASR","arena.subtitle":"Uruchamia ten sam input na wybranych zainstalowanych modelach i wariantach pakietów, jeden po drugim.","arena.subtitle.tts":"Uruchamia ten sam tekst na wybranych modelach TTS i wariantach pakietów.","arena.subtitle.vc":"Uruchamia to samo audio źródłowe na wybranych modelach konwersji głosu.","arena.subtitle.asr":"Uruchamia to samo audio źródłowe na wybranych modelach ASR i porównuje transkrypcje.","arena.mode.tts":"TTS","arena.mode.vc":"Konwersja głosu","arena.mode.asr":"ASR","arena.input.label":"Dane wejściowe","arena.input.title":"Wspólne żądanie","arena.input.textPlaceholder":"Wpisz jeden prompt do porównania modeli TTS","arena.input.groundTruth":"Tekst referencyjny","arena.input.groundTruthPlaceholder":"Wklej oczekiwaną transkrypcję, aby obliczyć WER","arena.shared":"wspólne","arena.voice.label":"Głos","arena.voice.modelDefault":"Domyślny modelu","arena.voice.builtin":"Wbudowany głos demo","arena.voice.reference":"Audio referencyjne","arena.voice.builtinNote":"Wbudowane głosy są przekazywane jako voice ID do każdego modelu. Ten typ głosu nie wymaga tekstu referencyjnego.","arena.voice.targetSpeaker":"Audio głosu docelowego","arena.voice.clearTarget":"Wyczyść cel","arena.voice.clearReference":"Wyczyść referencję","arena.options.shared":"Wspólne opcje","arena.queue.label":"Kolejka","arena.queue.title":"Modele","arena.queue.add":"Dodaj","arena.queue.remove":"Usuń","arena.queue.clear":"Wyczyść","arena.queue.empty":"Dodaj zainstalowane modele lub pakiety precyzji do porównania.","arena.run":"Uruchom arenę","arena.package.label":"Pakiet","arena.package.configured":"Skonfigurowany","arena.results.title":"Porównaj wyniki","arena.results.empty":"Brak wyników areny.","arena.metric.wall":"czas","arena.metric.rtf":"rtf","arena.metric.wer":"wer","arena.itemStatus.queued":"w kolejce","arena.itemStatus.loading":"ładowanie","arena.itemStatus.running":"uruchomione","arena.itemStatus.done":"gotowe","arena.itemStatus.failed":"błąd","arena.itemStatus.skipped":"pominięto","arena.status.duplicate":"{model} {package} jest już w arenie.","arena.status.loadingModel":"Ładowanie modelu","arena.status.runningRequest":"Uruchamianie żądania","arena.status.addModel":"Dodaj co najmniej jeden model do areny.","arena.status.running":"Uruchamianie areny {mode}...","arena.status.complete":"Arena zakończona.","arena.note.skippedTargetVoice":"Pominięto, ponieważ ten model VC wymaga audio głosu docelowego.","arena.note.skippedReferenceText":"Pominięto, ponieważ ten model wymaga tekstu referencyjnego dla wybranego wejścia głosu.","arena.note.builtinVoice":"Użyto wbudowanego głosu: {voice}.","arena.note.referenceVoice":"Użyto głosu referencyjnego.","arena.note.referenceUnsupported":"Użyto domyślnego głosu; głos referencyjny nie jest obsługiwany.","arena.note.defaultVoice":"Użyto domyślnego głosu: {voice}.","arena.note.skippedReferenceVoice":"Pominięto, ponieważ ten model wymaga głosu referencyjnego.","arena.error.seed":"Ziarno musi być -1 albo 32-bitową liczbą unsigned (0-4294967295).","arena.error.jsonObject":"musi być obiektem","arena.error.invalidJson":"Nieprawidłowy JSON opcji areny: {error}","arena.error.unregistered":"Skonfigurowany model nie jest zarejestrowany przez ten serwer.","arena.error.notDownloaded":"{package} nie został pobrany.","arena.error.loadFailed":"Model nie został załadowany.","arena.error.missingCatalog":"Modelu nie ma już w katalogu.","arena.error.enterTtsText":"Wpisz tekst dla areny TTS.","arena.error.chooseAsrSource":"Wybierz audio źródłowe dla areny ASR.","arena.error.chooseVcSource":"Wybierz audio źródłowe dla areny VC.","arena.error.noAudio":"Odpowiedź nie zawiera audio.","request.alignmentText":"Tekst do wyrównania","request.context":"Kontekst","request.contextHint":"opcjonalna terminologia lub nazwy","request.duration":"Czas trwania w sekundach","request.liveDescription":"Przetwarza kolejne czterosekundowe żądania w trybie strumieniowym modelu.","request.liveTitle":"Transkrypcja mikrofonu na żywo","request.lyrics":"Tekst utworu","request.optional":"opcjonalne","request.recordingMicrophone":"Nagrywanie mikrofonu","request.soundPlaceholder":"Opisz dźwięk lub muzykę…","request.startLive":"Uruchom na żywo","request.stopLive":"Zatrzymaj na żywo","request.stopRecording":"Zatrzymaj nagrywanie","request.textPlaceholder":"Wprowadź tekst…","request.voiceDescription":"Opis głosu","request.voiceDescriptionPlaceholder":"Ciepły, spokojny głos o umiarkowanym tempie…","result.track":"ścieżka","result.tracks":"ścieżki","runtime.eyebrow":"ŚRODOWISKO","runtime.subtitle":"Zdarzenia cyklu życia i żądań po stronie przeglądarki.","status.ready":"Gotowe","studio.estimatedVram":"Szacowane VRAM: {value} GB","studio.vram":"VRAM —","task.align":"Wymuszone wyrównanie","task.asr":"Transkrypcja","task.clon":"Klonowanie głosu","task.diar":"Diarizacja mówców","task.gen":"Generowanie muzyki","task.s2s":"Edycja mowy","task.sep":"Separacja źródeł","task.svc":"Konwersja głosu śpiewanego","task.tts":"Synteza mowy","task.vad":"Aktywność głosowa","task.vc":"Konwersja głosu","task.vdes":"Projektowanie głosu","voice.bundledNote":"Dołączone audio referencyjne i jego transkrypcja zostaną użyte automatycznie.","voice.namePlaceholder":"Mój głos referencyjny","voice.recommendedClone":"zalecana do klonowania","voice.recording":"Nagrywanie głosu referencyjnego","voice.requiredClone":"wymagana dla tego klonowania głosu","voice.transcriptPlaceholder":"Wpisz dokładne słowa z audio referencyjnego lub wczytaj pasujący plik .txt powyżej."}')},B8={code:"ru",name:"Русский",translations:JSON.parse('{"request.minimaxFrames":"{frames} выровненных выходных кадров","param.minimax_h3.num_inference_steps.label":"Шаги шумоподавления","param.minimax_h3.num_inference_steps.info":"Двенадцать шагов обеспечивают практичный баланс качества и производительности.","param.minimax_h3.num_frames.label":"Выходные кадры","param.minimax_h3.num_frames.info":"Рассчитываются из длительности примерно по 24 кадра на секунду вывода. Изменение числа кадров также обновляет длительность.","param.minimax_h3.guidance_scale.label":"Масштаб управления","param.minimax_h3.sampler.label":"Сэмплер","param.minimax_h3.dit_acceleration.label":"Ускорение DiT","param.minimax_h3.dit_acceleration.info":"None использует полный DiT с приоритетом качества. Режимы ускорения экспериментальны и могут искажать некоторые результаты.","param.minimax_h3.return_video.label":"Декодировать видео","param.minimax_h3.return_video.info":"По умолчанию выключено для снижения расхода памяти и возврата только аудио.","model.minimax_h3.hint":"MiniMax-H3 использует совместный аудио/видео DiT. GGUF Q4 ориентирован на качество; доступный только в CUDA GGUF Q4 ConvRot использует немного больше VRAM ради скорости. Полный DiT по умолчанию отдаёт приоритет качеству звука, а декодирование видео отключено.","status.modelReady":"{model} загружен и готов.","status.runningTask":"Выполняется: {task}...","status.completeIn":"Завершено за {seconds} с.","status.packageAvailable":"{model} будет использовать {format}. Модель доступна в Studio.","app.nativeStudio":"Нативная студия","nav.studio":"Студия","nav.arena":"Арена","nav.models":"Модели","nav.runtime":"Среда","language.label":"Язык интерфейса","theme.label":"Тема","theme.system":"Системная","theme.dark":"Тёмная","theme.light":"Светлая","workflow.tts":"Синтез речи","workflow.asr":"ASR / Распознавание","workflow.music":"Генерация музыки и видео","workflow.vc":"Преобразование голоса","workflow.sep":"Разделение источников","workflow.analysis":"Анализ аудио","workflow.design":"Дизайн голоса","studio.eyebrow":"ЛОКАЛЬНЫЙ АУДИО ИНТЕЛЛЕКТ","studio.title":"Аудиостудия","studio.subtitle.tts":"Создавайте естественную речь из текста с готовыми голосами и клонированием, если они поддерживаются.","studio.subtitle.asr":"Преобразуйте речь из аудио в текст с настройками языка и временных меток, если они поддерживаются.","studio.subtitle.music":"Создавайте музыку и звуки по описанию, тексту песни или эталонному аудио.","studio.subtitle.vc":"Преобразуйте запись в другой голос, сохраняя манеру речи или пения.","studio.subtitle.sep":"Разделяйте запись на вокал, инструменты и другие доступные аудиодорожки.","studio.subtitle.analysis":"Анализируйте речевую активность, говорящих, время и выравнивание аудио.","studio.subtitle.design":"Создавайте и настраивайте голос по текстовому описанию и поддерживаемым эталонным параметрам.","studio.model":"Модель","studio.noModel":"Модель не выбрана","studio.resident":"Загружена","studio.notInstalled":"Не установлена","studio.available":"Доступна","studio.chooseInstalled":"Выберите установленную модель","studio.notDownloaded":"не скачана","studio.pathFound":"Путь найден","studio.pathMissing":"Путь отсутствует","studio.pathUnknown":"Путь не проверен","studio.load":"Загрузить модель","studio.unload":"Выгрузить модель","studio.working":"Обработка…","studio.bundledLoaded":"Встроена · загружена","request.label":"ЗАПРОС","request.title":"Ввод и управление","request.prompt":"Запрос","request.text":"Текст","request.splitLongText":"Разделять и объединять длинный текст","request.charactersPerChunk":"Символов в части","request.language":"Язык","request.autoLanguage":"пусто = автоматически","request.seed":"Seed","request.randomSeed":"-1 = случайно","request.maxTokens":"Максимум токенов","request.sourceAudio":"Исходное аудио","request.recordMicrophone":"Записать микрофон","voice.quickStart":"Демонстрационные голоса","voice.useReference":"Использовать файл эталонного аудио ниже","voice.reference":"Эталонный голос","voice.required":"обязательно","voice.optional":"необязательно","voice.referenceText":"Эталонный текст","voice.transcript":"Эталонная расшифровка","voice.saved":"Сохранённые голоса","voice.browserOnly":"только в этом браузере","voice.chooseSaved":"Выберите сохранённый голос...","voice.libraryName":"Имя в библиотеке","voice.save":"Сохранить голос","common.delete":"Удалить","common.cancel":"Отмена","common.close":"Закрыть","common.refresh":"Обновить","common.browse":"Обзор","common.apply":"Применить","options.modelParameters":"Параметры модели","options.additional":"Дополнительные параметры","run.run":"Запустить","run.cancel":"Отмена","run.working":"Обработка…","result.title":"Результат","result.label":"РЕЗУЛЬТАТ","result.saveWav":"Сохранить WAV","result.empty":"Здесь появятся созданное аудио и структурированные результаты.","models.eyebrow":"БИБЛИОТЕКА МОДЕЛЕЙ","models.title":"Локальные пакеты","models.subtitle":"Скачивайте пакеты моделей и управляйте ими прямо в интерфейсе.","models.folder":"Папка моделей","models.useDefault":"По умолчанию","models.showTypes":"Типы моделей","models.stopDownload":"Остановить загрузку","models.cleanPartial":"Удалить частичную загрузку","runtime.title":"Журнал сеанса","runtime.status":"Состояние","runtime.backend":"Backend","runtime.registered":"Зарегистрировано","runtime.resident":"Загружено","runtime.noEvents":"Событий пока нет.","folder.title":"Выберите папку","folder.up":"На уровень выше","folder.select":"Выбрать эту папку","common.applying":"Применение…","common.disabled":"Выключено","common.enabled":"Включено","file.choose":"Выбрать файл","file.none":"Файл не выбран","folder.closeLabel":"Закрыть выбор папки","folder.empty":"В этой папке нет вложенных папок.","folder.eyebrow":"ПАПКА МОДЕЛЕЙ","folder.loading":"Загрузка...","folder.loadingFolders":"Загрузка папок...","footer.embedded":"SvelteKit · встроен в audiocpp_server","models.checkingSize":"проверка размера…","models.default":"По умолчанию","models.downloaded":"Скачано","models.folderHint":"загрузка, локальное обнаружение и загрузка моделей","models.folderPlaceholder":"папка models рядом с audiocpp_server","models.hfAccess":"Требуется доступ HF","models.model":"модель","models.queued":"в очереди","models.reinstall":"Переустановить","models.selected":"Выбрано","models.sharedPackage":"Использует общий пакет {name}, показанный выше.","models.sizeUnavailable":"размер недоступен","models.stopping":"остановка","models.update":"Обновить","models.updateAvailable":"Доступно обновление","models.upToDate":"Актуально","models.variants":"варианты","models.versionUnknown":"Версия неизвестна","nav.primary":"Основная навигация","nav.workflows":"Рабочие процессы аудио","arena.eyebrow":"АРЕНА","arena.title.tts":"Сравнение TTS","arena.title.vc":"Сравнение преобразования голоса","arena.title.asr":"Сравнение ASR","arena.subtitle":"Запускает один и тот же ввод через выбранные установленные модели и варианты пакетов по очереди.","arena.subtitle.tts":"Запускает один и тот же текст через выбранные модели TTS и варианты пакетов.","arena.subtitle.vc":"Запускает одно и то же исходное аудио через выбранные модели преобразования голоса.","arena.subtitle.asr":"Запускает одно и то же исходное аудио через выбранные модели ASR и сравнивает расшифровки.","arena.mode.tts":"TTS","arena.mode.vc":"Преобразование голоса","arena.mode.asr":"ASR","arena.input.label":"Ввод","arena.input.title":"Общий запрос","arena.input.textPlaceholder":"Введите один запрос для сравнения моделей TTS","arena.input.groundTruth":"Эталонный текст","arena.input.groundTruthPlaceholder":"Вставьте ожидаемую расшифровку для расчёта WER","arena.shared":"общий","arena.voice.label":"Голос","arena.voice.modelDefault":"По умолчанию модели","arena.voice.builtin":"Встроенный демо-голос","arena.voice.reference":"Эталонное аудио","arena.voice.builtinNote":"Встроенные голоса передаются каждой модели как voice ID. Для этого источника голоса эталонный текст не требуется.","arena.voice.targetSpeaker":"Аудио целевого говорящего","arena.voice.clearTarget":"Очистить цель","arena.voice.clearReference":"Очистить эталон","arena.options.shared":"Общие параметры","arena.queue.label":"Очередь","arena.queue.title":"Модели","arena.queue.add":"Добавить","arena.queue.remove":"Удалить","arena.queue.clear":"Очистить","arena.queue.empty":"Добавьте установленные модели или пакеты точности для сравнения.","arena.run":"Запустить арену","arena.package.label":"Пакет","arena.package.configured":"Настроено","arena.results.title":"Сравнить вывод","arena.results.empty":"Результатов арены пока нет.","arena.metric.wall":"время","arena.metric.rtf":"rtf","arena.metric.wer":"wer","arena.itemStatus.queued":"в очереди","arena.itemStatus.loading":"загрузка","arena.itemStatus.running":"выполняется","arena.itemStatus.done":"готово","arena.itemStatus.failed":"ошибка","arena.itemStatus.skipped":"пропущено","arena.status.duplicate":"{model} {package} уже есть в арене.","arena.status.loadingModel":"Загрузка модели","arena.status.runningRequest":"Выполнение запроса","arena.status.addModel":"Добавьте хотя бы одну модель в арену.","arena.status.running":"Выполняется арена {mode}...","arena.status.complete":"Выполнение арены завершено.","arena.note.skippedTargetVoice":"Пропущено: этой VC-модели нужно аудио целевого говорящего.","arena.note.skippedReferenceText":"Пропущено: этой модели нужен эталонный текст для выбранного голосового ввода.","arena.note.builtinVoice":"Использован встроенный голос: {voice}.","arena.note.referenceVoice":"Использован эталонный голос.","arena.note.referenceUnsupported":"Использован голос по умолчанию; эталонный голос не поддерживается.","arena.note.defaultVoice":"Использован голос по умолчанию: {voice}.","arena.note.skippedReferenceVoice":"Пропущено: этой модели нужен эталонный голос.","arena.error.seed":"Seed должен быть -1 или 32-битным unsigned-целым (0-4294967295).","arena.error.jsonObject":"должен быть объектом","arena.error.invalidJson":"Недопустимый JSON параметров арены: {error}","arena.error.unregistered":"Настроенная модель не зарегистрирована этим сервером.","arena.error.notDownloaded":"{package} не скачан.","arena.error.loadFailed":"Модель не загрузилась.","arena.error.missingCatalog":"Модели больше нет в каталоге.","arena.error.enterTtsText":"Введите текст для арены TTS.","arena.error.chooseAsrSource":"Выберите исходное аудио для арены ASR.","arena.error.chooseVcSource":"Выберите исходное аудио для арены VC.","arena.error.noAudio":"Ответ не содержит аудио.","request.alignmentText":"Текст для выравнивания","request.context":"Контекстный запрос","request.contextHint":"необязательные термины или имена","request.duration":"Длительность в секундах","request.liveDescription":"Обрабатывает последовательные четырёхсекундные запросы в потоковом режиме модели.","request.liveTitle":"Распознавание с микрофона в реальном времени","request.lyrics":"Текст песни","request.optional":"необязательно","request.recordingMicrophone":"Запись микрофона","request.soundPlaceholder":"Опишите звук или музыку…","request.startLive":"Запустить","request.stopLive":"Остановить","request.stopRecording":"Остановить запись","request.textPlaceholder":"Введите текст…","request.voiceDescription":"Описание голоса","request.voiceDescriptionPlaceholder":"Тёплый спокойный голос с размеренным темпом…","result.track":"дорожка","result.tracks":"дорожки","runtime.eyebrow":"СРЕДА","runtime.subtitle":"События жизненного цикла и запросов в браузере.","status.ready":"Готово","studio.estimatedVram":"Оценка VRAM: {value} ГБ","studio.vram":"VRAM —","task.align":"Принудительное выравнивание","task.asr":"Распознавание речи","task.clon":"Клонирование голоса","task.diar":"Диаризация говорящих","task.gen":"Генерация музыки","task.s2s":"Редактирование речи","task.sep":"Разделение источников","task.svc":"Преобразование вокала","task.tts":"Синтез речи","task.vad":"Голосовая активность","task.vc":"Преобразование голоса","task.vdes":"Дизайн голоса","voice.bundledNote":"Встроенное эталонное аудио и соответствующая расшифровка подставляются автоматически.","voice.namePlaceholder":"Мой эталонный голос","voice.recommendedClone":"рекомендуется для клонирования","voice.recording":"Запись эталонного голоса","voice.requiredClone":"требуется для этого клонирования","voice.transcriptPlaceholder":"Введите точные слова из эталонного аудио или загрузите соответствующий файл .txt выше."}')},R8={code:"vi",name:"Tiếng Việt",translations:JSON.parse('{"app.nativeStudio":"Phòng thu trên máy","nav.studio":"Phòng thu","nav.arena":"So sánh","nav.models":"Model","nav.runtime":"Trạng thái","nav.configuration":"Cấu hình","nav.primary":"Điều hướng chính","nav.workflows":"Các tác vụ âm thanh","language.label":"Ngôn ngữ giao diện","theme.label":"Giao diện","theme.system":"Theo hệ thống","theme.dark":"Tối","theme.mocha":"Catppuccin Mocha","theme.light":"Sáng","arena.eyebrow":"SO SÁNH","arena.title.tts":"So sánh giọng đọc","arena.title.vc":"So sánh chuyển đổi giọng","arena.title.asr":"So sánh nhận dạng giọng nói","arena.subtitle":"Chạy lần lượt cùng một đầu vào với các model và biến thể đã cài được chọn.","arena.subtitle.tts":"Đọc cùng một văn bản bằng các model giọng đọc và biến thể được chọn.","arena.subtitle.vc":"Chuyển đổi cùng một âm thanh nguồn bằng các model được chọn.","arena.subtitle.asr":"Nhận dạng cùng một âm thanh nguồn bằng các model được chọn và so sánh bản chép lời.","arena.mode.tts":"Đọc văn bản","arena.mode.vc":"Chuyển đổi giọng","arena.mode.asr":"Nhận dạng giọng nói","arena.input.label":"Đầu vào","arena.input.title":"Yêu cầu dùng chung","arena.input.textPlaceholder":"Nhập văn bản để so sánh các model giọng đọc","arena.input.groundTruth":"Bản chép lời chuẩn","arena.input.groundTruthPlaceholder":"Dán bản chép lời chuẩn để tính tỷ lệ lỗi từ (WER)","arena.shared":"dùng chung","arena.voice.label":"Giọng","arena.voice.modelDefault":"Mặc định của model","arena.voice.builtin":"Giọng mẫu có sẵn","arena.voice.reference":"Âm thanh tham chiếu","arena.voice.builtinNote":"Giọng có sẵn được gửi dưới dạng mã giọng cho từng model. Không cần bản chép lời với nguồn giọng này.","arena.voice.targetSpeaker":"Âm thanh giọng đích","arena.voice.clearTarget":"Bỏ giọng đích","arena.voice.clearReference":"Bỏ tham chiếu","arena.options.shared":"Tùy chọn dùng chung","arena.queue.label":"Hàng đợi","arena.queue.title":"Model","arena.queue.add":"Thêm","arena.queue.remove":"Bỏ","arena.queue.clear":"Xóa hàng đợi","arena.queue.empty":"Thêm model hoặc biến thể kiểu dữ liệu đã cài để so sánh.","arena.run":"Chạy so sánh","arena.package.label":"Gói","arena.package.configured":"Đã cấu hình","arena.results.title":"So sánh kết quả","arena.results.empty":"Chưa có kết quả so sánh.","arena.metric.wall":"thời gian","arena.metric.rtf":"RTF","arena.metric.wer":"WER","arena.itemStatus.queued":"đang chờ","arena.itemStatus.loading":"đang nạp","arena.itemStatus.running":"đang chạy","arena.itemStatus.done":"hoàn tất","arena.itemStatus.failed":"thất bại","arena.itemStatus.skipped":"đã bỏ qua","arena.status.duplicate":"{model} {package} đã có trong danh sách so sánh.","arena.status.loadingModel":"Đang nạp model","arena.status.runningRequest":"Đang chạy yêu cầu","arena.status.addModel":"Thêm ít nhất một model để so sánh.","arena.status.running":"Đang chạy so sánh {mode}...","arena.status.complete":"Đã hoàn tất so sánh.","arena.note.skippedTargetVoice":"Đã bỏ qua vì model chuyển đổi giọng này cần âm thanh giọng đích.","arena.note.skippedReferenceText":"Đã bỏ qua vì model này cần bản chép lời cho giọng tham chiếu đã chọn.","arena.note.builtinVoice":"Đã dùng giọng có sẵn: {voice}.","arena.note.referenceVoice":"Đã dùng giọng tham chiếu.","arena.note.referenceUnsupported":"Đã dùng giọng mặc định; model không hỗ trợ giọng tham chiếu.","arena.note.defaultVoice":"Đã dùng giọng mặc định: {voice}.","arena.note.skippedReferenceVoice":"Đã bỏ qua vì model này cần giọng tham chiếu.","arena.error.seed":"Seed phải là -1 hoặc số nguyên không dấu 32 bit (từ 0 đến 4294967295).","arena.error.jsonObject":"phải là một đối tượng JSON","arena.error.invalidJson":"JSON tùy chọn so sánh không hợp lệ: {error}","arena.error.unregistered":"Model đã cấu hình chưa được đăng ký trên máy chủ này.","arena.error.notDownloaded":"Chưa tải {package}.","arena.error.loadFailed":"Không nạp được model.","arena.error.missingCatalog":"Model không còn trong danh mục.","arena.error.enterTtsText":"Nhập văn bản để so sánh giọng đọc.","arena.error.chooseAsrSource":"Chọn âm thanh nguồn để so sánh nhận dạng giọng nói.","arena.error.chooseVcSource":"Chọn âm thanh nguồn để so sánh chuyển đổi giọng.","arena.error.noAudio":"Phản hồi không có âm thanh.","workflow.tts":"Đọc văn bản","workflow.asr":"Nhận dạng / Chép lời","workflow.music":"Tạo nhạc / video","workflow.vc":"Chuyển đổi giọng / S2S","workflow.enhancement":"Cải thiện / Khử nhiễu","models.tools":"công cụ","workflow.sep":"Tách nguồn âm thanh","workflow.analysis":"Phân tích âm thanh","workflow.design":"Thiết kế giọng","task.tts":"Đọc văn bản","task.clon":"Sao chép giọng","task.asr":"Chép lời","task.gen":"Tạo nhạc","task.midi":"Âm thanh sang MIDI","task.vc":"Chuyển đổi giọng","task.svc":"Chuyển đổi giọng hát","task.s2s":"Chỉnh sửa lời nói","task.sep":"Tách nguồn âm thanh","task.vad":"Phát hiện giọng nói","task.diar":"Phân tách người nói","task.align":"Căn chỉnh lời và âm thanh","task.vdes":"Thiết kế giọng","studio.eyebrow":"XỬ LÝ ÂM THANH TẠI MÁY","studio.title":"Phòng thu âm thanh","studio.subtitle.tts":"Tạo giọng đọc tự nhiên từ văn bản, với giọng có sẵn và sao chép giọng khi model hỗ trợ.","studio.subtitle.asr":"Chuyển lời nói thành văn bản, với tùy chọn ngôn ngữ và mốc thời gian khi model hỗ trợ.","studio.subtitle.music":"Tạo nhạc và âm thanh từ mô tả, lời bài hát hoặc âm thanh tham chiếu khi model hỗ trợ.","studio.subtitle.vc":"Chuyển đổi giọng nói, giọng hát hoặc nhận câu trả lời bằng giọng nói từ âm thanh đầu vào.","studio.subtitle.sep":"Tách bản ghi thành giọng hát, nhạc cụ hoặc các nguồn âm thanh mà model hỗ trợ.","studio.subtitle.analysis":"Phân tích giọng nói, người nói, mốc thời gian và căn chỉnh lời với âm thanh.","studio.subtitle.enhancement":"Cải thiện âm thanh, loại bỏ tiếng ồn nền hoặc khôi phục dải tần.","studio.subtitle.design":"Tạo hoặc tinh chỉnh giọng từ mô tả bằng văn bản và các tùy chọn tham chiếu được hỗ trợ.","studio.model":"Model","studio.noModel":"Chưa chọn model","studio.resident":"Đã nạp","studio.notInstalled":"Chưa cài","studio.available":"Có sẵn","studio.chooseInstalled":"Chọn một model đã cài","studio.notDownloaded":"chưa tải","studio.pathFound":"Đã tìm thấy đường dẫn","studio.pathMissing":"Không tìm thấy đường dẫn","studio.pathUnknown":"Chưa kiểm tra đường dẫn","studio.estimatedVram":"VRAM ước tính: {value} GB","studio.vram":"VRAM —","studio.load":"Nạp model","studio.unload":"Giải phóng model","studio.working":"Đang xử lý…","studio.bundledLoaded":"Có sẵn · đã nạp","request.label":"YÊU CẦU","request.title":"Đầu vào và tùy chọn","request.prompt":"Mô tả","request.alignmentText":"Văn bản cần căn chỉnh","request.text":"Văn bản","request.soundPlaceholder":"Mô tả âm thanh hoặc bản nhạc…","request.textPlaceholder":"Nhập văn bản…","request.splitLongText":"Chia và ghép văn bản dài","request.charactersPerChunk":"Số ký tự mỗi đoạn","request.lyrics":"Lời bài hát","request.optional":"không bắt buộc","request.context":"Ngữ cảnh","request.contextHint":"thuật ngữ hoặc tên riêng, không bắt buộc","request.voiceDescription":"Mô tả giọng","request.voiceDescriptionPlaceholder":"Giọng ấm áp, điềm tĩnh, nhịp đọc vừa phải…","request.language":"Ngôn ngữ","request.autoLanguage":"để trống = tự nhận dạng","request.seed":"Seed","request.randomSeed":"-1 = ngẫu nhiên","request.maxTokens":"Số token tối đa","request.duration":"Thời lượng (giây)","request.autoDuration":"-1 = tự động","request.rewriteCaption":"Viết lại mô tả","request.rewritingCaption":"Đang viết lại mô tả...","request.minimaxFrames":"{frames} khung hình đầu ra đã căn chỉnh","request.sourceAudio":"Âm thanh nguồn","request.stopRecording":"Dừng ghi âm","request.recordingMicrophone":"Đang ghi âm từ micro","request.recordMicrophone":"Ghi âm từ micro","request.liveTitle":"Chép lời trực tiếp từ micro","request.liveDescription":"Xử lý liên tiếp các đoạn âm thanh dài bốn giây bằng chế độ phát trực tiếp của model.","request.stopLive":"Dừng chép lời trực tiếp","request.startLive":"Bắt đầu chép lời trực tiếp","voice.quickStart":"Giọng có sẵn để thử nhanh","voice.configured":"Giọng đã cấu hình","voice.useReference":"Dùng tệp âm thanh tham chiếu bên dưới","voice.bundledNote":"Âm thanh tham chiếu có sẵn và bản chép lời tương ứng được cung cấp tự động.","voice.reference":"Giọng tham chiếu","voice.required":"bắt buộc","voice.optional":"không bắt buộc","voice.referenceText":"Văn bản tham chiếu","voice.recording":"Đang ghi âm giọng tham chiếu","voice.transcript":"Bản chép lời mẫu","voice.requiredClone":"bắt buộc để sao chép giọng này","voice.recommendedClone":"nên có để sao chép giọng","voice.transcriptPlaceholder":"Nhập đúng lời nói trong âm thanh mẫu, hoặc tải tệp .txt tương ứng ở trên.","voice.saved":"Giọng đã lưu","voice.browserOnly":"chỉ lưu trong trình duyệt này","voice.chooseSaved":"Chọn giọng đã lưu...","voice.libraryName":"Tên giọng trong thư viện","voice.namePlaceholder":"Giọng tham chiếu của tôi","voice.save":"Lưu giọng","voice.clearReference":"Bỏ giọng tham chiếu","voice.preset":"Giọng có sẵn","voice.speakerReferences":"Giọng tham chiếu của người nói","voice.upToFour":"không bắt buộc, tối đa 4","voice.speaker":"Người nói {number}","voice.dialoguePlaceholder":"[S1] Lời trong giọng tham chiếu của người nói 1. [S2] Lời trong giọng tham chiếu của người nói 2.","settings.load":"Nạp thiết lập JSON","settings.save":"Lưu thiết lập JSON","history.title":"Lịch sử chạy (Thử nghiệm)","history.clear":"Xóa lịch sử","history.deleteRun":"Xóa lần chạy {id}","history.wrongModel":"Không thể mở lịch sử của {label}: model hiện tại là {model}.","history.wait":"Chờ yêu cầu hiện tại hoặc việc khôi phục thiết lập hoàn tất.","configuration.history":"Lịch sử chạy","configuration.historyLimit":"Số lần chạy tối đa được lưu","configuration.save":"Lưu cấu hình","configuration.saved":"Đã lưu cấu hình.","studio.weightsPath":"Đường dẫn trọng số trên máy chủ","studio.downloadWeights":"Tải trọng số SafeTensors","studio.format":"Định dạng model","studio.configured":"Đã cấu hình","studio.serverConfigured":"Được thiết lập trong cấu hình máy chủ","studio.loadPackage":"Nạp {package}","studio.unloadPackage":"Giải phóng {package}","studio.packageNotDownloaded":"Chưa tải {package}","run.chooseModel":"Chọn một model đã cài trước","run.installModel":"Cài model này trong mục Model trước","run.elapsed":"Thời gian xử lý đã trôi qua","result.saveArtifact":"Lưu {format}","result.videoPreview":"Xem trước video","param.omnivoice.num_inference_steps.label":"Số bước tạo giọng","param.omnivoice.guidance_scale.label":"Mức bám sát tham chiếu","param.omnivoice.speed.label":"Tốc độ đọc","param.omnivoice.instruct.label":"Chỉ dẫn phong cách / chất giọng","param.omnivoice.instruct.placeholder":"Ví dụ: Đọc với giọng nhẹ nhàng, chậm rãi","common.delete":"Xóa","common.enabled":"Đã bật","common.disabled":"Đã tắt","common.cancel":"Hủy","common.close":"Đóng","common.refresh":"Làm mới","common.browse":"Duyệt thư mục","common.apply":"Áp dụng","common.applying":"Đang áp dụng…","file.choose":"Chọn tệp","file.none":"Chưa chọn tệp","file.preview":"Nghe / xem trước","file.clear":"Bỏ tệp","options.modelParameters":"Tham số model","options.additional":"Tùy chọn bổ sung","param.minimax_h3.num_inference_steps.label":"Số bước khử nhiễu","param.minimax_h3.num_inference_steps.info":"Mười hai bước khử nhiễu giúp cân bằng chất lượng và tốc độ.","param.minimax_h3.num_frames.label":"Số khung hình đầu ra","param.minimax_h3.num_frames.info":"Được tính từ thời lượng với khoảng 24 khung hình mỗi giây đầu ra. Đổi số khung hình cũng cập nhật thời lượng.","param.minimax_h3.guidance_scale.label":"Mức bám sát mô tả","param.minimax_h3.sampler.label":"Bộ lấy mẫu","param.minimax_h3.dit_acceleration.label":"Tăng tốc DiT","param.minimax_h3.dit_acceleration.info":"None dùng toàn bộ DiT để ưu tiên chất lượng. Các chế độ tăng tốc đang thử nghiệm và có thể làm méo một số kết quả.","param.minimax_h3.return_video.label":"Giải mã video","param.minimax_h3.return_video.info":"Mặc định tắt để giảm bộ nhớ sử dụng và chỉ trả về âm thanh.","model.minimax_h3.hint":"MiniMax-H3 dùng DiT kết hợp âm thanh và video. GGUF Q4 ưu tiên chất lượng; GGUF Q4 ConvRot chỉ chạy trên CUDA, dùng thêm một ít VRAM để tăng tốc. Chế độ DiT đầy đủ mặc định ưu tiên chất lượng âm thanh và tắt giải mã video.","run.run":"Chạy","run.cancel":"Hủy","run.working":"Đang xử lý…","result.label":"KẾT QUẢ","result.title":"Đầu ra","result.track":"bản âm thanh","result.tracks":"bản âm thanh","result.saveWav":"Lưu WAV","result.empty":"Âm thanh và kết quả xử lý sẽ xuất hiện ở đây.","models.eyebrow":"THƯ VIỆN MODEL","models.title":"Các gói trên máy","models.subtitle":"Tải và quản lý các gói model ngay trong giao diện này.","models.folder":"Thư mục model","models.folderHint":"nơi tải, tìm và nạp model","models.folderPlaceholder":"thư mục models bên cạnh audiocpp_server","models.default":"Mặc định","models.useDefault":"Dùng mặc định","models.showTypes":"Hiện các loại model","models.model":"model","models.variants":"biến thể","models.update":"Cập nhật","models.reinstall":"Cài lại","models.upToDate":"Đã cập nhật","models.updateAvailable":"Có bản cập nhật","models.versionUnknown":"Chưa rõ phiên bản","models.selected":"Đã chọn","models.downloaded":"Đã tải","models.queued":"đang chờ","models.stopping":"đang dừng","models.checkingSize":"đang kiểm tra dung lượng…","models.hfAccess":"Cần quyền truy cập Hugging Face","models.sizeUnavailable":"chưa rõ dung lượng","models.stopDownload":"Dừng tải","models.cleanPartial":"Xóa phần tải dở","models.sharedPackage":"Dùng chung gói {name} ở trên.","runtime.eyebrow":"TRẠNG THÁI","runtime.title":"Nhật ký phiên","runtime.subtitle":"Các sự kiện hoạt động và yêu cầu từ trình duyệt.","runtime.status":"Trạng thái","runtime.backend":"Bộ xử lý","runtime.registered":"Đã đăng ký","runtime.resident":"Đã nạp","runtime.noEvents":"Chưa có sự kiện.","status.ready":"Sẵn sàng","status.modelReady":"{model} đã nạp và sẵn sàng.","status.runningTask":"Đang chạy {task}...","status.completeIn":"Hoàn tất sau {seconds} giây.","status.packageAvailable":"{model} sẽ dùng {format}. Đã có thể dùng trong Phòng thu.","folder.eyebrow":"THƯ MỤC MODEL","folder.title":"Chọn thư mục","folder.closeLabel":"Đóng trình duyệt thư mục","folder.loading":"Đang tải...","folder.up":"Lên một cấp","folder.loadingFolders":"Đang tải danh sách thư mục...","folder.empty":"Thư mục này không có thư mục con.","folder.select":"Chọn thư mục này","footer.embedded":"SvelteKit · tích hợp trong audiocpp_server"}')},j8={code:"zh",name:"中文",translations:{"request.minimaxFrames":"{frames} 个对齐输出帧","param.minimax_h3.num_inference_steps.label":"去噪步数","param.minimax_h3.num_inference_steps.info":"十二个去噪步骤可在质量和性能之间取得实用的平衡。","param.minimax_h3.num_frames.label":"输出帧数","param.minimax_h3.num_frames.info":"根据时长自动计算,每秒输出约 24 帧。编辑帧数也会更新时长。","param.minimax_h3.guidance_scale.label":"引导强度","param.minimax_h3.sampler.label":"采样器","param.minimax_h3.dit_acceleration.label":"DiT 加速","param.minimax_h3.dit_acceleration.info":"“none”使用质量优先的完整 DiT 路径。加速模式为实验性功能,可能使某些输出失真。","param.minimax_h3.return_video.label":"解码视频","param.minimax_h3.return_video.info":"默认禁用以减少内存占用,并仅返回音频。","model.minimax_h3.hint":"MiniMax-H3 使用联合音频/视频 DiT。GGUF Q4 是质量优先版本;仅支持 CUDA 的 GGUF Q4 ConvRot 使用稍多显存以提高速度。默认完整 DiT 路径优先保证音频质量,并禁用视频解码。","status.modelReady":"{model} 已加载并准备就绪。","status.runningTask":"正在运行{task}...","status.completeIn":"已在 {seconds} 秒内完成。","status.packageAvailable":"{model} 将使用 {format},现可在工作室中使用。","app.nativeStudio":"原生工作室","nav.studio":"工作室","nav.arena":"对比场","nav.models":"模型","nav.runtime":"运行环境","language.label":"界面语言","theme.label":"主题","theme.system":"跟随系统","theme.dark":"深色","theme.light":"浅色","workflow.tts":"文本转语音","workflow.asr":"ASR / 转录","workflow.music":"音乐 / 视频生成","workflow.vc":"语音转换","workflow.sep":"音源分离","workflow.analysis":"音频分析","workflow.design":"音色设计","studio.eyebrow":"本地音频智能","studio.title":"音频工作室","studio.subtitle.tts":"从文本生成自然语音,并在模型支持时使用预设音色或声音克隆。","studio.subtitle.asr":"将语音音频转为文本,并在模型支持时设置语言和时间戳。","studio.subtitle.music":"根据描述、歌词或参考音频创作音乐和声音。","studio.subtitle.vc":"将录音转换为另一种声音,同时保留原有的说话或演唱表现。","studio.subtitle.sep":"将录音分离为人声、乐器或其他可用音轨。","studio.subtitle.analysis":"分析语音活动、说话人、时间信息和音频对齐。","studio.subtitle.design":"根据文字描述和支持的参考控制创建或调整声音。","studio.model":"模型","studio.noModel":"未选择模型","studio.resident":"已加载","studio.notInstalled":"未安装","studio.available":"可用","studio.chooseInstalled":"选择已安装的模型","studio.notDownloaded":"未下载","studio.pathFound":"已找到路径","studio.pathMissing":"路径不存在","studio.pathUnknown":"尚未检查路径","studio.load":"加载模型","studio.unload":"卸载模型","studio.working":"处理中…","studio.bundledLoaded":"内置 · 已加载","request.label":"请求","request.title":"输入与控制","request.prompt":"提示词","request.text":"文本","request.splitLongText":"拆分并合并长文本","request.charactersPerChunk":"每段字符数","request.language":"语言","request.autoLanguage":"留空 = 自动","request.seed":"随机种子","request.randomSeed":"-1 = 随机","request.maxTokens":"最大令牌数","request.sourceAudio":"源音频","request.recordMicrophone":"录制麦克风","voice.quickStart":"快速开始演示音色","voice.useReference":"使用下方参考音频文件","voice.reference":"参考音色","voice.required":"必需","voice.optional":"可选","voice.referenceText":"参考文本","voice.transcript":"参考转录","voice.saved":"已保存音色","voice.browserOnly":"仅存储在此浏览器中","voice.chooseSaved":"选择已保存音色...","voice.libraryName":"库名称","voice.save":"保存音色","common.delete":"删除","common.cancel":"取消","common.close":"关闭","common.refresh":"刷新","common.browse":"浏览","common.apply":"应用","options.modelParameters":"模型参数","options.additional":"其他选项","run.run":"运行","run.cancel":"取消","run.working":"处理中…","result.title":"输出","result.label":"结果","result.saveWav":"保存 WAV","result.empty":"生成的音频和结构化结果将显示在这里。","models.eyebrow":"模型库","models.title":"本地软件包","models.subtitle":"无需离开原生界面即可下载和管理模型包。","models.folder":"模型文件夹","models.useDefault":"使用默认值","models.showTypes":"显示模型类型","models.stopDownload":"停止下载","models.cleanPartial":"清理部分下载","runtime.title":"会话日志","runtime.status":"状态","runtime.backend":"后端","runtime.registered":"已注册","runtime.resident":"已加载","runtime.noEvents":"暂无事件。","folder.title":"选择文件夹","folder.up":"上一级","folder.select":"选择此文件夹","common.applying":"正在应用…","common.disabled":"已禁用","common.enabled":"已启用","file.choose":"选择文件","file.none":"未选择文件","folder.closeLabel":"关闭文件夹浏览器","folder.empty":"此文件夹没有子文件夹。","folder.eyebrow":"模型文件夹","folder.loading":"正在加载...","folder.loadingFolders":"正在加载文件夹...","footer.embedded":"SvelteKit · 内置于 audiocpp_server","models.checkingSize":"正在检查大小…","models.default":"默认","models.downloaded":"已下载","models.folderHint":"用于下载、本地检测和模型加载","models.folderPlaceholder":"audiocpp_server 旁的 models 文件夹","models.hfAccess":"需要 HF 访问权限","models.model":"模型","models.queued":"排队中","models.reinstall":"重新安装","models.selected":"已选择","models.sharedPackage":"使用上方显示的共享 {name} 软件包。","models.sizeUnavailable":"大小不可用","models.stopping":"正在停止","models.update":"更新","models.updateAvailable":"有可用更新","models.upToDate":"已是最新","models.variants":"变体","models.versionUnknown":"版本未知","nav.primary":"主导航","nav.workflows":"音频工作流程","arena.eyebrow":"对比场","arena.title.tts":"TTS 对比","arena.title.vc":"语音转换对比","arena.title.asr":"ASR 对比","arena.subtitle":"用同一输入依次运行已选择的已安装模型和精度包,方便比较输出。","arena.subtitle.tts":"用同一文本依次运行已选择的 TTS 模型和精度包。","arena.subtitle.vc":"用同一源音频依次运行已选择的语音转换模型。","arena.subtitle.asr":"用同一源音频依次运行已选择的 ASR 模型并比较转录结果。","arena.mode.tts":"TTS","arena.mode.vc":"语音转换","arena.mode.asr":"ASR","arena.input.label":"输入","arena.input.title":"共享请求","arena.input.textPlaceholder":"输入一段文本,用于对比多个 TTS 模型","arena.input.groundTruth":"真实文本","arena.input.groundTruthPlaceholder":"粘贴期望转录文本以计算 WER","arena.shared":"共享","arena.voice.label":"声音","arena.voice.modelDefault":"模型默认","arena.voice.builtin":"内置演示声音","arena.voice.reference":"参考音频","arena.voice.builtinNote":"内置声音会作为 voice ID 传给每个模型。此声音来源不需要参考文本。","arena.voice.targetSpeaker":"目标说话人音频","arena.voice.clearTarget":"清除目标","arena.voice.clearReference":"清除参考","arena.options.shared":"共享选项","arena.queue.label":"队列","arena.queue.title":"模型","arena.queue.add":"添加","arena.queue.remove":"移除","arena.queue.clear":"清空","arena.queue.empty":"添加已安装模型或精度包进行对比。","arena.run":"运行对比","arena.package.label":"软件包","arena.package.configured":"已配置","arena.results.title":"比较输出","arena.results.empty":"暂无对比结果。","arena.metric.wall":"耗时","arena.metric.rtf":"RTF","arena.metric.wer":"WER","arena.itemStatus.queued":"排队中","arena.itemStatus.loading":"加载中","arena.itemStatus.running":"运行中","arena.itemStatus.done":"完成","arena.itemStatus.failed":"失败","arena.itemStatus.skipped":"跳过","arena.status.duplicate":"{model} {package} 已在对比队列中。","arena.status.loadingModel":"正在加载模型","arena.status.runningRequest":"正在运行请求","arena.status.addModel":"请至少添加一个模型到对比场。","arena.status.running":"正在运行 {mode} 对比...","arena.status.complete":"对比运行完成。","arena.note.skippedTargetVoice":"已跳过:此语音转换模型需要目标说话人音频。","arena.note.skippedReferenceText":"已跳过:此模型对所选声音输入需要参考文本。","arena.note.builtinVoice":"使用内置声音:{voice}。","arena.note.referenceVoice":"使用参考声音。","arena.note.referenceUnsupported":"使用模型默认声音;此模型不支持参考声音。","arena.note.defaultVoice":"使用默认声音:{voice}。","arena.note.skippedReferenceVoice":"已跳过:此模型需要参考声音。","arena.error.seed":"Seed 必须为 -1 或 0 到 4294967295 的无符号 32 位整数。","arena.error.jsonObject":"必须是对象","arena.error.invalidJson":"对比场选项 JSON 无效:{error}","arena.error.unregistered":"此服务器未注册已配置模型。","arena.error.notDownloaded":"{package} 未下载。","arena.error.loadFailed":"模型未加载。","arena.error.missingCatalog":"模型已不在目录中。","arena.error.enterTtsText":"请输入 TTS 对比文本。","arena.error.chooseAsrSource":"请选择 ASR 对比的源音频。","arena.error.chooseVcSource":"请选择语音转换对比的源音频。","arena.error.noAudio":"响应中没有音频。","request.alignmentText":"对齐文本","request.context":"上下文提示","request.contextHint":"可选术语或名称","request.duration":"持续时间(秒)","request.liveDescription":"使用模型的流式模式连续处理四秒请求。","request.liveTitle":"实时麦克风转录","request.lyrics":"歌词","request.optional":"可选","request.recordingMicrophone":"正在录制麦克风","request.soundPlaceholder":"描述声音或音乐…","request.startLive":"开始实时处理","request.stopLive":"停止实时处理","request.stopRecording":"停止录制","request.textPlaceholder":"输入文本…","request.voiceDescription":"音色描述","request.voiceDescriptionPlaceholder":"温暖、平静且语速适中的声音…","result.track":"音轨","result.tracks":"音轨","runtime.eyebrow":"运行环境","runtime.subtitle":"浏览器端生命周期和请求事件。","status.ready":"就绪","studio.estimatedVram":"预计 VRAM:{value} GB","studio.vram":"VRAM —","task.align":"强制对齐","task.asr":"语音转录","task.clon":"声音克隆","task.diar":"说话人分离","task.gen":"音乐生成","task.s2s":"语音编辑","task.sep":"音源分离","task.svc":"歌声音色转换","task.tts":"文本转语音","task.vad":"语音活动检测","task.vc":"语音转换","task.vdes":"音色设计","voice.bundledNote":"内置参考音频及其匹配转录将自动提供。","voice.namePlaceholder":"我的参考音色","voice.recommendedClone":"建议用于克隆","voice.recording":"正在录制参考音色","voice.requiredClone":"此声音克隆必需","voice.transcriptPlaceholder":"输入参考音频中的准确文字,或加载上方匹配的 .txt 文件。"}},lm={"app.nativeStudio":"Native Studio","nav.studio":"Studio","nav.arena":"Arena","nav.models":"Models","nav.runtime":"Runtime","nav.configuration":"Configuration","nav.primary":"Primary navigation","nav.workflows":"Audio workflows","language.label":"Interface language","theme.label":"Theme","theme.system":"System","theme.dark":"Dark","theme.mocha":"Catppuccin Mocha","theme.light":"Light","theme.paper":"Paper","arena.eyebrow":"ARENA","arena.title.tts":"TTS comparison","arena.title.vc":"Voice conversion comparison","arena.title.asr":"ASR comparison","arena.subtitle":"Run the same input through selected installed models and package variants, one after another.","arena.subtitle.tts":"Run the same text through selected TTS models and package variants.","arena.subtitle.vc":"Run the same source audio through selected voice conversion models.","arena.subtitle.asr":"Run the same source audio through selected ASR models and compare transcripts.","arena.mode.tts":"TTS","arena.mode.vc":"Voice conversion","arena.mode.asr":"ASR","arena.input.label":"Input","arena.input.title":"Shared request","arena.input.textPlaceholder":"Enter one prompt to compare across TTS models","arena.input.groundTruth":"Ground truth text","arena.input.groundTruthPlaceholder":"Paste the expected transcript to calculate WER","arena.shared":"shared","arena.voice.label":"Voice","arena.voice.modelDefault":"Model default","arena.voice.builtin":"Built-in demo voice","arena.voice.reference":"Reference audio","arena.voice.builtinNote":"Built-in voices are passed as voice IDs for each model. Reference text is not required for this voice source.","arena.voice.targetSpeaker":"Target speaker audio","arena.voice.clearTarget":"Clear target","arena.voice.clearReference":"Clear reference","arena.options.shared":"Shared options","arena.queue.label":"Queue","arena.queue.title":"Models","arena.queue.add":"Add","arena.queue.remove":"Remove","arena.queue.clear":"Clear","arena.queue.empty":"Add installed models or dtype packages to compare.","arena.run":"Run arena","arena.package.label":"Package","arena.package.configured":"Configured","arena.results.title":"Compare outputs","arena.results.orderSelection":"Order: selection order","arena.results.orderRtf":"Order: RTF, lowest first · completed results first","arena.results.empty":"No arena results yet.","arena.metric.wall":"wall","arena.metric.rtf":"rtf","arena.metric.wer":"wer","arena.itemStatus.queued":"queued","arena.itemStatus.loading":"loading","arena.itemStatus.running":"running","arena.itemStatus.done":"done","arena.itemStatus.failed":"failed","arena.itemStatus.skipped":"skipped","arena.status.duplicate":"{model} {package} is already in the arena.","arena.status.loadingModel":"Loading model","arena.status.runningRequest":"Running request","arena.status.addModel":"Add at least one model to the arena.","arena.status.running":"Running {mode} arena...","arena.status.complete":"Arena run complete.","arena.note.skippedTargetVoice":"Skipped because this VC model requires target speaker audio.","arena.note.skippedReferenceText":"Skipped because this model requires reference text for the selected voice input.","arena.note.builtinVoice":"Used built-in voice: {voice}.","arena.note.referenceVoice":"Used reference voice.","arena.note.referenceUnsupported":"Used default voice; reference voice is not supported.","arena.note.defaultVoice":"Used default voice: {voice}.","arena.note.skippedReferenceVoice":"Skipped because this model requires a reference voice.","arena.error.seed":"Seed must be -1 or an unsigned 32-bit integer (0 to 4294967295).","arena.error.jsonObject":"must be an object","arena.error.invalidJson":"Arena options JSON is invalid: {error}","arena.error.unregistered":"Configured model is not registered by this server.","arena.error.notDownloaded":"{package} is not downloaded.","arena.error.loadFailed":"Model did not load.","arena.error.missingCatalog":"Model is no longer in the catalog.","arena.error.enterTtsText":"Enter text for the TTS arena.","arena.error.chooseAsrSource":"Choose source audio for the ASR arena.","arena.error.chooseVcSource":"Choose source audio for the VC arena.","arena.error.noAudio":"Response did not include audio.","workflow.tts":"Text to speech","workflow.asr":"ASR / Transcription","workflow.music":"Music / video generation","workflow.vc":"Voice Conversion / S2S","workflow.enhancement":"Enhancement / denoising","models.tools":"tools","workflow.sep":"Source separation","workflow.analysis":"Audio analysis","workflow.design":"Voice design","task.tts":"Text to speech","task.clon":"Voice cloning","task.asr":"Transcription","task.gen":"Music generation","task.midi":"Audio to MIDI","task.vc":"Voice conversion","task.svc":"Singing voice conversion","task.s2s":"Speech editing","task.sep":"Source separation","task.vad":"Voice activity","task.diar":"Speaker diarization","task.align":"Forced alignment","task.vdes":"Voice design","task.wake":"Wake-word detection","task.cls":"Audio classification","studio.eyebrow":"LOCAL AUDIO INTELLIGENCE","studio.title":"Audio studio","studio.subtitle.tts":"Generate natural speech from text, with voice presets and cloning when supported.","studio.subtitle.asr":"Transcribe spoken audio into text, with language and timestamp controls when supported.","studio.subtitle.music":"Create music and sound from a prompt, lyrics, or reference audio when supported.","studio.subtitle.vc":"Convert spoken or sung voices, or get a spoken reply to audio input.","studio.subtitle.sep":"Split a recording into vocals, instruments, or other available audio stems.","studio.subtitle.analysis":"Analyze audio for speech activity, speakers, timing, and alignment.","studio.subtitle.enhancement":"Enhance audio, remove background noise, or restore bandwidth.","studio.subtitle.design":"Create or refine a voice from a written description and supported reference controls.","studio.model":"Model","studio.noModel":"No model selected","studio.resident":"Resident","studio.notInstalled":"Not installed","studio.available":"Available","studio.chooseInstalled":"Choose an installed model","studio.notDownloaded":"not downloaded","studio.pathFound":"Path found","studio.pathMissing":"Path missing","studio.pathUnknown":"Path not inspected","studio.estimatedVram":"{value} GB estimated VRAM","studio.vram":"VRAM —","studio.load":"Load model","studio.unload":"Unload model","studio.working":"Working…","studio.bundledLoaded":"Bundled · loaded","request.label":"REQUEST","request.title":"Input & controls","request.prompt":"Prompt","request.alignmentText":"Alignment text","request.text":"Text","request.soundPlaceholder":"Describe the sound or music…","request.textPlaceholder":"Enter the text…","request.splitLongText":"Split and merge long text","request.charactersPerChunk":"Characters per chunk","request.lyrics":"Lyrics","request.optional":"optional","request.context":"Context prompt","request.contextHint":"optional terminology or names","request.voiceDescription":"Voice description","request.voiceDescriptionPlaceholder":"A warm, calm voice with measured pacing…","request.language":"Language","request.autoLanguage":"blank = auto","request.seed":"Seed","request.randomSeed":"-1 = random","request.maxTokens":"Maximum tokens","request.duration":"Duration seconds","request.autoDuration":"-1 = auto","request.rewriteCaption":"Rewrite caption","request.rewritingCaption":"Rewriting caption...","request.minimaxFrames":"{frames} aligned output frames","request.sourceAudio":"Source audio","request.stopRecording":"Stop recording","request.recordingMicrophone":"Recording microphone","request.recordMicrophone":"Record microphone","request.liveTitle":"Live microphone transcription","request.liveDescription":"Processes consecutive four-second requests using the model's streaming mode.","request.stopLive":"Stop live","request.startLive":"Start live","voice.quickStart":"Quick-start voice presets (demo voices)","voice.configured":"Configured voices","voice.useReference":"Use a reference audio file below","voice.bundledNote":"The bundled reference audio and its matching transcript are supplied automatically.","voice.reference":"Reference voice","voice.required":"required","voice.optional":"optional","voice.referenceText":"Reference text","voice.recording":"Recording voice reference","voice.transcript":"Reference transcript","voice.requiredClone":"required for this voice clone","voice.recommendedClone":"recommended for cloning","voice.transcriptPlaceholder":"Type the exact words spoken in the reference audio, or load a matching .txt file above.","voice.saved":"Saved voices","voice.browserOnly":"stored only in this browser","voice.chooseSaved":"Choose a saved voice...","voice.libraryName":"Library name","voice.namePlaceholder":"My reference voice","voice.save":"Save voice","voice.clearReference":"Clear reference","voice.preset":"Voice preset","voice.speakerReferences":"Speaker references","voice.upToFour":"optional, up to 4","voice.speaker":"Speaker {number}","voice.dialoguePlaceholder":"[S1] Words spoken in Speaker 1's reference. [S2] Words spoken in Speaker 2's reference.","settings.load":"Load settings JSON","settings.save":"Save settings JSON","history.title":"Run history (Experimental)","history.clear":"Clear history","history.deleteRun":"Delete generation {id}","history.wrongModel":"Cannot open history for {label}: the current model is {model}.","history.wait":"Wait for the current request or settings restore to finish.","configuration.history":"Run History","configuration.historyLimit":"Maximum retained runs","configuration.save":"Save configuration","configuration.saved":"Configuration saved.","studio.weightsPath":"Weights path on server","studio.downloadWeights":"Download SafeTensors weights","studio.format":"Model format","studio.configured":"Configured","studio.serverConfigured":"Configured by server config","studio.loadPackage":"Load {package}","studio.unloadPackage":"Unload {package}","studio.packageNotDownloaded":"{package} is not downloaded","run.chooseModel":"Choose an installed model first","run.installModel":"Install this model from the Models tab first","run.elapsed":"Elapsed generation time","result.saveArtifact":"Save {format}","result.videoPreview":"Video preview","common.delete":"Delete","common.enabled":"Enabled","common.disabled":"Disabled","common.cancel":"Cancel","common.close":"Close","common.refresh":"Refresh","common.browse":"Browse","common.apply":"Apply","common.applying":"Applying…","file.choose":"Choose file","file.none":"No file chosen","file.preview":"Preview","file.clear":"Clear file","options.modelParameters":"Model parameters","options.additional":"Additional options","param.minimax_h3.num_inference_steps.label":"Denoising steps","param.minimax_h3.num_inference_steps.info":"Twelve denoising steps provide a practical quality and performance balance.","param.minimax_h3.num_frames.label":"Output frames","param.minimax_h3.num_frames.info":"Calculated from duration at approximately 24 frames per output second. Editing frames also updates duration.","param.minimax_h3.guidance_scale.label":"Guidance scale","param.minimax_h3.sampler.label":"Sampler","param.minimax_h3.dit_acceleration.label":"DiT acceleration","param.minimax_h3.dit_acceleration.info":"None uses the quality-first full-DiT path. Acceleration modes are experimental and may distort some outputs.","param.minimax_h3.return_video.label":"Decode video","param.minimax_h3.return_video.info":"Disabled by default to reduce memory use and return audio only.","model.minimax_h3.hint":"MiniMax-H3 uses a joint audio/video DiT. GGUF Q4 is the quality-first choice; CUDA-only GGUF Q4 ConvRot uses slightly more VRAM for higher speed. The default full-DiT path prioritizes audio quality and video decoding is disabled.","run.run":"Run","run.cancel":"Cancel","run.working":"Working…","result.label":"RESULT","result.title":"Output","result.track":"track","result.tracks":"tracks","result.saveWav":"Save WAV","result.empty":"Generated audio and structured results appear here.","models.eyebrow":"MODEL LIBRARY","models.title":"Local packages","models.subtitle":"Download and manage model packages without leaving the native interface.","models.folder":"Models folder","models.folderHint":"downloads, local detection, and model loading","models.folderPlaceholder":"models folder beside audiocpp_server","models.default":"Default","models.useDefault":"Use default","models.showTypes":"Show model types","models.model":"model","models.variants":"variants","models.update":"Update","models.reinstall":"Reinstall","models.upToDate":"Up to date","models.updateAvailable":"Update available","models.versionUnknown":"Version unknown","models.selected":"Selected","models.downloaded":"Downloaded","models.queued":"queued","models.stopping":"stopping","models.checkingSize":"checking size…","models.hfAccess":"HF access required","models.sizeUnavailable":"size unavailable","models.stopDownload":"Stop download","models.cleanPartial":"Clean partial download","models.sharedPackage":"Uses the shared {name} package shown above.","runtime.eyebrow":"RUNTIME","runtime.title":"Session log","runtime.subtitle":"Browser-side lifecycle and request events.","runtime.status":"Status","runtime.backend":"Backend","runtime.registered":"Registered","runtime.resident":"Resident","runtime.noEvents":"No events yet.","runtime.serverLogNotice":"This panel shows UI events, not server logs. Add --log --log-file server.log to your server startup command, then open server.log on the server machine.","status.ready":"Ready","status.modelReady":"{model} is resident and ready.","status.runningTask":"Running {task}...","status.completeIn":"Complete in {seconds}s.","status.packageAvailable":"{model} will use {format}. It is available in Studio.","folder.eyebrow":"MODELS FOLDER","folder.title":"Choose a folder","folder.closeLabel":"Close folder browser","folder.loading":"Loading...","folder.up":"Up one level","folder.loadingFolders":"Loading folders...","folder.empty":"This folder has no subfolders.","folder.select":"Select this folder","footer.embedded":"SvelteKit · embedded in audiocpp_server"},P8=Object.assign({"../../lang/lang_it.json":E8,"../../lang/lang_ja.json":z8,"../../lang/lang_pl.json":U8,"../../lang/lang_ru.json":B8,"../../lang/lang_vi.json":R8,"../../lang/lang_zh.json":j8}),Pd=new Map([["en",lm]]),P1=[{code:"en",name:"English"}];for(const[t,e]of Object.entries(P8).sort(([a],[n])=>a.localeCompare(n))){const a=t.match(/lang_([^/\\.]+)\.json$/)?.[1]?.toLowerCase(),n=(e.code||a||"").trim().toLowerCase();!n||n==="en"||!e.name||!e.translations||(Pd.set(n,e.translations),P1.push({code:n,name:e.name}))}const N8=P1;function N1(t){const e=Pd.get(t)||lm;return(a,n={},s=a)=>{let r=e[a]||lm[a]||s;for(const[o,l]of Object.entries(n))r=r.replaceAll(`{${o}}`,String(l));return r}}function O1(t){for(const e of t){const a=e.toLowerCase();if(Pd.has(a))return a;const n=a.split("-")[0];if(Pd.has(n))return n}return"en"}var O8=ue(' '),I8=ue('',2),L8=ue(''),D8=ue('
');function Nn(t,e){Ya(e,!1);const a=oe(),n=oe(),s=oe();let r=Ge(e,"file",8,null),o=Ge(e,"src",8,""),l=Ge(e,"name",8,""),u=Ge(e,"kind",8,"audio"),p=Ge(e,"label",8,"Preview"),g=oe(""),h=oe(null),m=oe("");function f(){i(g)&&(URL.revokeObjectURL(i(g)),E(g,""))}ul(f),Ke(()=>(Z(r()),i(h)),()=>{r()!==i(h)&&(f(),E(h,r()),r()&&E(g,URL.createObjectURL(r())))}),Ke(()=>(i(g),Z(o())),()=>{E(a,i(g)||o())}),Ke(()=>(i(a),i(m)),()=>{E(n,!!i(a)&&i(m)===i(a))}),Ke(()=>(Z(r()),Z(l())),()=>{E(s,r()?.name||l())}),ds(),An();var d=Ls(),c=Et(d);{var _=b=>{var v=D8(),w=z(v),y=z(w),T=z(y,!0);A(y);var O=j(y,2);{var R=x=>{var U=O8(),D=z(U,!0);A(U),de(()=>X(D,i(s))),te(x,U)};qe(O,x=>{i(s)&&x(R)})}A(w);var $=j(w,2);{var P=x=>{var U=I8();de(()=>be(U,"src",i(a))),$e("error",U,()=>E(m,i(a))),te(x,U)},L=x=>{var U=L8();de(()=>be(U,"src",i(a))),$e("error",U,()=>E(m,i(a))),te(x,U)};qe($,x=>{u()==="video"?x(P):x(L,-1)})}A(v),de(()=>X(T,p())),te(b,v)};qe(c,b=>{i(a)&&!i(n)&&b(_)})}te(t,d),Xa()}var Nd=ue(""),I1=ue(""),V8=ue(" ",1);function L1(t,e){Ya(e,!1);let a=Ge(e,"id",8),n=Ge(e,"value",8,""),s=Ge(e,"presets",24,()=>[]),r=Ge(e,"savedVoices",24,()=>[]),o=Ge(e,"presetLabel",8),l=Ge(e,"emptyLabel",8),u=Ge(e,"allowEmpty",8,!0),p=Ge(e,"referenceOption",8,!1),g=Ge(e,"disabled",8,!1),h=Ge(e,"tr",8),m=Ge(e,"onselect",8);An();var f=V8(),d=Et(f),c=z(d,!0);A(d);var _=j(d,2),b=z(_);{var v=L=>{var x=Nd(),U=z(x,!0);A(x),x.value=x.__value="",de(()=>X(U,l())),te(L,x)};qe(b,L=>{u()&&L(v)})}var w=j(b);{var y=L=>{var x=Nd(),U=z(x,!0);A(x),x.value=x.__value="reference",de(D=>X(U,D),[()=>(Z(h()),q(()=>h()("arena.voice.reference")))]),te(L,x)};qe(w,L=>{p()&&L(y)})}var T=j(w);{var O=L=>{var x=I1();Mt(x,5,s,Xt,(U,D)=>{var M=Nd(),G=z(M,!0);A(M);var B={};de(()=>{X(G,i(D)),B!==(B=`preset:${i(D)}`)&&(M.value=M.__value=`preset:${i(D)}`)}),te(U,M)}),A(x),de(()=>be(x,"label",o())),te(L,x)};qe(T,L=>{Z(s()),q(()=>s().length)&&L(O)})}var R=j(T);{var $=L=>{var x=I1();Mt(x,5,r,Xt,(U,D)=>{var M=Nd(),G=z(M,!0);A(M);var B={};de(()=>{X(G,(i(D),q(()=>i(D).name))),B!==(B=(i(D),q(()=>`saved:${i(D).id}`)))&&(M.value=(M.__value=(i(D),q(()=>`saved:${i(D).id}`)))??"")}),te(U,M)}),A(x),de(U=>be(x,"label",U),[()=>(Z(h()),q(()=>h()("voice.saved")))]),te(L,x)};qe(R,L=>{Z(r()),q(()=>r().length)&&L($)})}A(_);var P;jn(_),de(L=>{be(d,"for",a()),X(c,L),be(_,"id",a()),_.disabled=g(),P!==(P=n())&&(_.value=(_.__value=n())??"",yn(_,n()))},[()=>(Z(h()),q(()=>h()("arena.voice.label")))]),$e("change",_,L=>m()(L.currentTarget.value)),te(t,f),Xa()}const H8=/^\s*(Speaker\s+\d+\s*:)\s*(.*)$/i,D1=new Set(["。","!","?","!","?",";",";","…","."]),W8=new Set(["mr","mrs","ms","dr","prof","sr","jr","st","mt","rev","hon","vs","etc","eg","ie","approx","dept","est","fig","no","vol","jan","feb","mar","apr","jun","jul","aug","sep","sept","oct","nov","dec","inc","ltd","co","corp"]);function V1(t){return t>="0"&&t<="9"}function Q8(t){return/[\p{L}\p{N}']/u.test(t)}function K8(t,e){const a=t[e+1];if(a!==void 0&&!/\s/.test(a)||e>0&&V1(t[e-1])&&a!==void 0&&V1(a))return!1;let n=e;for(;n>0&&Q8(t[n-1]);)n-=1;const s=t.slice(n,e);return s.length===1&&/\p{L}/u.test(s)?!1:!W8.has(s.toLowerCase())}function Y8(t){const e=[];let a=0;for(let n=0;ne;){let s=n.lastIndexOf(" ",e);s<=0&&(s=e);const r=n.slice(0,s).trim();r&&a.push(r),n=n.slice(s).trim()}return n&&a.push(n),a}function J8(t,e){const a=H8.exec(t),n=a?`${a[1]} `:"",s=a?a[2]:t.trim(),r=Math.max(1,e-n.length),o=Y8(s);o.length||o.push(s);const l=[];let u="",p="";for(const g of o){const h=g.trimEnd();if(!h)continue;const m=g.slice(h.length);if(u&&u.length+p.length+h.length>r&&(l.push(n+u.trim()),u="",p=""),h.length<=r){u=u?`${u}${p}${h}`:h,p=m;continue}u&&(l.push(n+u.trim()),u="",p="");for(const f of X8(h,r))l.push(n+f)}return u&&l.push(n+u.trim()),l.length?l:[t]}function Z8(t,e){const a=[];for(const o of t.split(/\r?\n/))o.trim()&&a.push(...o.length>e?J8(o,e):[o]);const n=[];let s=[],r=0;for(const o of a){const l=s.length?1:0;s.length&&r+l+o.length>e&&(n.push(s.join(` +`,m))r.push(h.slice(m,d)),f.push(r.join("")),r=[],m=d+2;if(m{})}if(!l)throw new z1}function rm(t){const e=atob(t),a=new Uint8Array(e.length);for(let n=0;n=1 disable nucleus filtering."},{name:"repetition_penalty",type:"float",default:1,required:!1,description:"Token repetition penalty. Must be positive."},{name:"seed",type:"int",default:42,required:!1,description:"Sampling seed. Parsed as a signed integer and converted to uint32."}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",default:"native",required:!1,description:"Weight storage type; native preserves the packaged tensor types."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Audio-Flamingo-GGUF",revision:"main",gated:!1}},packages:[{id:"audio_flamingo_next_q4_k",display_name:"Audio Flamingo Next GGUF Q4_K",default:!0,format:"gguf",precision:"q4_k",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-next-q4_k.gguf"]},{id:"audio_flamingo_next_q8_0",display_name:"Audio Flamingo Next GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-next-q8_0.gguf"]},{id:"audio_flamingo_next_bf16",display_name:"Audio Flamingo Next GGUF BF16",format:"gguf",precision:"bf16",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-next-bf16.gguf"]},{id:"audio_flamingo_3_q4_k",display_name:"Audio Flamingo 3 GGUF Q4_K",format:"gguf",precision:"q4_k",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-3-q4_k.gguf"]},{id:"audio_flamingo_3_q8_0",display_name:"Audio Flamingo 3 GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-3-q8_0.gguf"]},{id:"audio_flamingo_3_bf16",display_name:"Audio Flamingo 3 GGUF BF16",format:"gguf",precision:"bf16",target_directory:"Audio-Flamingo-GGUF",files:["audio-flamingo-3-bf16.gguf"]}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/audio_flamingo.md"],recommended_package:"audio_flamingo_next_q4_k"},sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",chat_template:"model:chat_template.jinja"},tensors:{weights:{source:"model:model.safetensors"}}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",chat_template:"model:chat_template.jinja"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},h5={schema_version:1,family:"audiosr",display_name:"AudioSR",description:"AudioSR performs latent-diffusion audio super-resolution from an input waveform.",category:"audio_tools",status:"experimental",tasks:["s2s"],modes:["offline"],languages:["auto"],runtime:{tags:["gguf","cuda"]},capabilities:{s2s:["audio_enhancement"]},options:{request:[{name:"num_inference_steps",type:"int",description:"DDIM inference steps. The uniform DDIM schedule must produce exactly this many timesteps; not every count is valid (e.g. 51 fails with 1000 diffusion timesteps).",required:!1,min:1,max:1e3,default:50},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale. Any finite value is accepted.",required:!1,default:3.5},{name:"ddim_eta",type:"float",description:"DDIM eta; 1.0 matches the official AudioSR default. Must be nonnegative; there is no runtime upper bound.",required:!1,min:0,default:1},{name:"audio_chunk_duration_sec",type:"float",description:"Long-audio chunk duration.",required:!1,min:.001,default:15},{name:"audio_chunk_overlap_sec",type:"float",description:"Long-audio chunk overlap; must be smaller than audio_chunk_duration_sec, including after rounding to samples.",required:!1,min:0,default:2},{name:"seed",type:"int",description:"Generation seed; omitted or negative values use the fixed seed 42, not a random seed. Zero is a fixed seed.",required:!1,max:2147483647,default:42}],session:[{name:"weight_type",type:"enum",description:"AudioSR weight storage type.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"audiosr_basic_f32",display_name:"AudioSR Basic F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"AudioSR-GGUF",files:["AudioSR-GGUF/audiosr-basic-f32.gguf"],strip_prefix:"AudioSR-GGUF"}],dependencies:[],ui:{recommended_package:"audiosr_basic_f32",tags:["GGUF"],docs:["docs/models/audiosr.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{weights:{source:"weights:"},frontend:{source:"weights:",prefix:"frontend"}}}]},_5={schema_version:1,family:"auk",display_name:"AuK",description:"Tencent AuK base and AuK-Flash speech generation and editing models.",category:"tts",status:"experimental",tasks:["tts","clone","edit"],modes:["offline"],languages:["auto"],runtime:{tags:["cuda","gguf"]},ui:{recommended_package:"auk_base_f32",tags:["TTS","Edit"],docs:["docs/models/auk.md"]},capabilities:{tts:["speaker_reference"],clone:["speaker_reference"],edit:["prompt_editing"]},options:{request:[{name:"instruct",type:"string",description:"TTS voice description. Without it, text carries the complete upstream instruction; editing instructions always go in text.",required:!1},{name:"duration_sec",type:"float",description:"Positive output duration in seconds. Required without reference audio; otherwise defaults to the valid reference duration.",required:!1},{name:"num_inference_steps",type:"int",description:"Euler sampling steps for AuK base; AuK-Flash always uses its fixed four-step schedule.",required:!1,min:1,default:32},{name:"guidance_scale",type:"float",description:"Batched guidance strength for AuK base; AuK-Flash always disables classifier-free guidance.",required:!1,default:2},{name:"sway_sampling_coef",type:"float",description:"Sway coefficient for AuK base; ignored by AuK-Flash.",required:!1,default:-1},{name:"seed",type:"int",description:"Nonnegative noise seed, or -1 for a random seed.",required:!1,min:-1,default:-1}],session:[{name:"variant",type:"enum",values:["base","flash"],description:"AuK generation schedule; select flash with an AuK-Flash component.",required:!1,default:"base"},{name:"model_gguf",type:"string",description:"AuK base or Flash generator GGUF relative to the model root; defaults to the selected variant's F32 file.",required:!1},{name:"qwen_gguf",type:"string",description:"Qwen2.5-Omni-3B conditioning GGUF relative to the model root.",required:!1,default:"qwen2.5-omni-3b-bf16.gguf"},{name:"vae_gguf",type:"string",description:"AuK VAE GGUF relative to the model root.",required:!1,default:"auk-vae-f32.gguf"},{name:"attention",type:"enum",values:["auto","flash","eager"],description:"Flow-model attention mode.",required:!1,default:"auto"},{name:"mem_saver",type:"bool",description:"Release Qwen conditioning and generation weights between stages to reduce peak VRAM.",required:!1,default:!1}],load:[]},dependencies:[],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/AuK-Base-and-Flash-GGUF",revision:"main",gated:!1}},packages:[{id:"auk_base_f32",display_name:"AuK Base F32",default:!0,format:"gguf",precision:"f32",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-base-f32.gguf"]},{id:"auk_base_f16",display_name:"AuK Base F16",format:"gguf",precision:"f16",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-base-f16.gguf"]},{id:"auk_base_q8_0",display_name:"AuK Base Q8_0",format:"gguf",precision:"q8_0",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-base-q8_0.gguf"]},{id:"auk_flash_f32",display_name:"AuK-Flash F32",format:"gguf",precision:"f32",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-flash-f32.gguf"]},{id:"auk_flash_f16",display_name:"AuK-Flash F16",format:"gguf",precision:"f16",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-flash-f16.gguf"]},{id:"auk_flash_q8_0",display_name:"AuK-Flash Q8_0",format:"gguf",precision:"q8_0",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-flash-q8_0.gguf"]},{id:"auk_qwen_bf16",display_name:"AuK Qwen BF16",format:"gguf",precision:"bf16",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","qwen2.5-omni-3b-bf16.gguf"]},{id:"auk_qwen_q8_0",display_name:"AuK Qwen Q8_0",format:"gguf",precision:"q8_0",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","qwen2.5-omni-3b-q8_0.gguf"]},{id:"auk_vae_f32",display_name:"AuK VAE F32",format:"gguf",precision:"f32",target_directory:"AuK-Base-and-Flash-GGUF",files:["config/auk-base.yaml","config/auk-flash.yaml","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","auk-vae-f32.gguf"]}],sources:[{format:"gguf",roots:{model:"."},files:{base_config:"model:config/auk-base.yaml",flash_config:"model:config/auk-flash.yaml",tokenizer_json:"model:tokenizer/tokenizer.json",tokenizer_config:"model:tokenizer/tokenizer_config.json"}}]},v5={schema_version:1,family:"breeze_tts",display_name:"BreezeTTS 2",description:"BreezeTTS 2 native GGUF package for instruction-conditioned text-to-speech and prompt-audio voice cloning with T5Gemma text conditioning, Qwen-style acoustic code generation, depth codebook decoding, and Mimi waveform decoding.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["zh","en"],runtime:{tags:["gguf"]},dependencies:[],capabilities:{design:["voice_design"],tts:["style_control"],clone:["speaker_reference"]},options:{request:[{name:"instruct",type:"string",description:"BreezeTTS generation instruction.",required:!1,default:"Speak clearly and naturally."},{name:"reference_text",type:"string",description:"Transcript for prompt/reference audio; required when reference audio codes are used, for either tts or clon.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 600.",required:!1,min:1,default:600},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"max_tokens",type:"int",description:"Maximum generated BreezeTTS acoustic frames.",required:!1,min:1,default:1500},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale.",required:!1,min:0,default:1},{name:"temperature",type:"float",description:"Backbone first-codebook sampling temperature. Must be > 0.",required:!1,min:0,default:.9},{name:"depth_temperature",type:"float",description:"Depth decoder codebook sampling temperature. Must be > 0.",required:!1,min:0,default:.9},{name:"top_k",type:"int",description:"Top-k sampling limit; 0 disables top-k filtering. Nonpositive values disable top-k filtering.",required:!1,default:50},{name:"top_p",type:"float",description:"Positive nucleus sampling cutoff; values >=1 disable nucleus filtering.",required:!1,min:0,default:1},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,default:0},{name:"stream_frames_per_event",type:"int",description:"Maximum generated codec frames per streaming audio event; fixed size with stream_chunk_policy=fixed.",required:!1,min:1,default:16},{name:"stream_lookahead_margin",type:"int",description:"Additional trailing codec frames buffered before streaming emission. The decoder is causal; zero minimizes latency.",required:!1,min:0,default:0},{name:"stream_chunk_policy",type:"enum",description:"Streaming chunk schedule: grow emits 1, 2, 4, ... frames up to stream_frames_per_event; fixed uses that size from the first event.",values:["grow","fixed"],required:!1,default:"grow"}],session:[{name:"weight_type",type:"enum",description:"BreezeTTS matmul weight storage type; default native.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"]},{name:"graph_arena_mb",type:"int",description:"Reusable runtime graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 4.",required:!1,min:1,default:4},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse.",required:!1,min:0,default:1},{name:"attention",type:"enum",description:"Attention lowering; auto probes the backend and falls back to eager on GPUs without a flash kernel (e.g. sm70); default auto.",required:!1,values:["auto","flash","eager"],default:"auto"},{name:"bf16_activations",type:"enum",description:"Reference bf16 activation rounding as the official BreezeTTS 2 inference does it. auto = on for CUDA/HIP/Vulkan and off on Metal, where the cast cost is visible even with the fused round-to-bf16 op (~20% slower AR loop); on/off force it either way. On Metal, on also switches the KV cache to bf16 to match the reference implementation.",required:!1,values:["auto","on","off"],default:"auto"}],load:[]},packages:[{id:"breeze_tts_2_q4_0",display_name:"BreezeTTS 2 Q4_0 GGUF",default:!1,format:"gguf",precision:"q4_0",target_directory:"Breeze-TTS-2-GGUF",files:["Breeze-TTS-2-GGUF/breeze-tts-2-q4_0.gguf"],strip_prefix:"Breeze-TTS-2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"breeze_tts_2_q8_0",display_name:"BreezeTTS 2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Breeze-TTS-2-GGUF",files:["Breeze-TTS-2-GGUF/breeze-tts-2-q8_0.gguf"],strip_prefix:"Breeze-TTS-2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"breeze_tts_2_bf16",display_name:"BreezeTTS 2 BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"Breeze-TTS-2-GGUF",files:["Breeze-TTS-2-GGUF/breeze-tts-2-bf16.gguf"],strip_prefix:"Breeze-TTS-2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}}],ui:{recommended_package:"breeze_tts_2_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config_json:"model:config.json",audio_tokenizer_config_json:"model:audio_tokenizer/config.json",tokenizer_config_json:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model"}}}]},b5={schema_version:1,family:"bs_roformer",display_name:"BS-RoFormer",description:"Band-Split RoFormer music source-separation model that estimates vocals from explicit non-overlapping frequency bands and derives accompaniment from the input mixture.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"RoFormer weight storage type. Defaults to f32 when the backend requires a host graph plan, otherwise native.",preset:"weight_type_full",required:!1},{name:"num_overlap",type:"int",description:"Number of overlapping inference windows; defaults to the package configuration. Lower values improve throughput but can reduce boundary quality.",required:!1,min:1}],load:[]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"bs_roformer_q8_0",display_name:"BS-RoFormer ep368 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"BS-RoFormer-ep368-GGUF",files:["BS-RoFormer-ep368-GGUF/bs-roformer-ep368-q8_0.gguf"],strip_prefix:"BS-RoFormer-ep368-GGUF"}],dependencies:[],ui:{recommended_package:"bs_roformer_q8_0",tags:["Sep","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md","tests/bs_roformer/README.md"]}},y5={schema_version:1,family:"builtin_audio_utils",display_name:"Built-in Audio Utilities",description:"Built-in denoise, enhancement, and audio super-resolution utilities with separately downloaded weights.",category:"audio_tools",status:"experimental",tasks:["s2s"],modes:["offline"],languages:["auto"],runtime:{tags:["cpu","cuda"]},capabilities:{s2s:["audio_enhancement"]},options:{request:[],session:[],load:[{name:"utility",type:"enum",values:["deepfilternet2","rnnoise","zipenhancer","gtcrn","gtcrn_streaming","gtcrn_dns3","gtcrn_vctk","flashsr"],required:!0,description:"Utility implementation to load from the model path."}]},packages:[],dependencies:[],ui:{tags:[],docs:["docs/audio_tools.md"]},sources:[]},w5={family:"canary_asr",schema_version:1,display_name:"Canary 180M Flash",description:"NVIDIA Canary multilingual speech recognition and speech translation.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en","de","es","fr"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Input audio language.",required:!1,default:"en"},{name:"target_language",type:"string",description:"Output language: en, de, es, or fr. Defaults to the input language for transcription.",required:!1},{name:"punc",type:"bool",description:"Generate punctuation and capitalization.",required:!1,default:!0},{name:"max_tokens",type:"int",description:"Maximum generated tokens per chunk; zero uses the reference encoder-length-based limit.",required:!1,min:0,max:1015,default:0},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio chunk in seconds.",required:!1,min:.02,max:40,default:40}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage type.",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"],required:!1,default:"native"}],load:[]},runtime:{tags:["gguf","cpu","cuda"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/canary_asr.md"],recommended_package:"canary_180m_flash_f32"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"canary_180m_flash_f32",display_name:"Canary 180M Flash GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"Canary-180M-Flash-GGUF",files:["Canary-180M-Flash-GGUF/canary-180m-flash-f32.gguf"],strip_prefix:"Canary-180M-Flash-GGUF"},{id:"canary_180m_flash_q8_0",display_name:"Canary 180M Flash GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Canary-180M-Flash-GGUF",files:["Canary-180M-Flash-GGUF/canary-180m-flash-q8_0.gguf"],strip_prefix:"Canary-180M-Flash-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_spl_tokens:"model:tokenizer_spl_tokens.model",tokenizer_en:"model:tokenizer_en.model",tokenizer_de:"model:tokenizer_de.model",tokenizer_es:"model:tokenizer_es.model",tokenizer_fr:"model:tokenizer_fr.model"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_spl_tokens:"model:tokenizer_spl_tokens.model",tokenizer_en:"model:tokenizer_en.model",tokenizer_de:"model:tokenizer_de.model",tokenizer_es:"model:tokenizer_es.model",tokenizer_fr:"model:tokenizer_fr.model"},tensors:{weights:"weights:"}}]},k5={schema_version:1,family:"ced",display_name:"CED Audio Tagging",description:"Consistent Ensemble Distillation ViT audio classifiers for 527 AudioSet sound categories.",category:"speech_analysis",status:"supported",tasks:["classify"],modes:["offline"],languages:["language_agnostic"],capabilities:{classify:["scores"]},runtime:{tags:["gguf"]},options:{request:[{name:"top_k",type:"int",description:"Number of highest-scoring AudioSet categories returned.",required:!1,default:10,min:1,max:527}],session:[{name:"attention",type:"enum",description:"Attention implementation; auto selects a supported fast path.",required:!1,default:"auto",values:["auto","flash","eager"]},{name:"weight_type",type:"enum",description:"Weight storage override; native preserves packaged tensor types.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"]}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"ced_tiny_f32",display_name:"CED Tiny F32 GGUF",format:"gguf",precision:"f32",default:!0,target_directory:"CED-GGUF",files:["CED-GGUF/ced-tiny-f32.gguf"],strip_prefix:"CED-GGUF"},{id:"ced_mini_f32",display_name:"CED Mini F32 GGUF",format:"gguf",precision:"f32",target_directory:"CED-GGUF",files:["CED-GGUF/ced-mini-f32.gguf"],strip_prefix:"CED-GGUF"},{id:"ced_small_f32",display_name:"CED Small F32 GGUF",format:"gguf",precision:"f32",target_directory:"CED-GGUF",files:["CED-GGUF/ced-small-f32.gguf"],strip_prefix:"CED-GGUF"},{id:"ced_base_f32",display_name:"CED Base F32 GGUF",format:"gguf",precision:"f32",target_directory:"CED-GGUF",files:["CED-GGUF/ced-base-f32.gguf"],strip_prefix:"CED-GGUF"}],dependencies:[],ui:{recommended_package:"ced_tiny_f32",tags:["Classify","GGUF"],docs:["docs/models/ced.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:preprocessor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:preprocessor_config.json"},tensors:{weights:"model:model.safetensors"}}]},x5={family:"chatterbox",display_name:"Chatterbox",description:"Open-source Chatterbox family for expressive TTS and voice conversion, with emotion exaggeration control, fast generation, zero-shot voice cloning, and an integrated multilingual TTS path.",category:"tts",status:"supported",tasks:["tts","clone","vc"],modes:["offline"],languages:["ar","da","de","el","en","es","fi","fr","hi","it","ko","ms","nl","no","pl","pt","sv","sw","tr"],options:{request:[{name:"exaggeration",type:"float",description:"Emotion exaggeration. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.5},{name:"guidance_scale",type:"float",description:"T3 classifier-free guidance scale. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.5},{name:"temperature",type:"float",description:"T3 sampling temperature. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.8},{name:"repetition_penalty",type:"float",description:"T3 repetition penalty. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:1.2},{name:"min_p",type:"float",description:"Minimum sampling probability. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.05},{name:"top_p",type:"float",description:"Nucleus sampling probability. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:1},{name:"flow_guidance_scale",type:"float",description:"S3Gen flow guidance scale. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:.7},{name:"max_tokens",type:"int",description:"Maximum generated speech tokens. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,min:1,default:384},{name:"do_sample",type:"bool",description:"Enable sampling. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:!0},{name:"stop_on_eos",type:"bool",description:"Stop token generation on EOS. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,default:!0},{name:"num_inference_steps",type:"int",description:"Voice conversion flow steps; max_steps is also accepted.",required:!1,min:1,default:10},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed. Captured during clone preparation; changing it on the same prepared session is rejected.",required:!1,min:0,max:4294967295},{name:"source_audio",type:"audio_path",description:"Voice conversion source WAV path; overrides audio_input.",required:!1},{name:"target_voice",type:"audio_path",description:"Voice conversion target WAV path; overrides the speaker reference.",required:!1},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size.",required:!1,default:128}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; defaults to native.",required:!1,preset:"weight_type_full"},{name:"t3_weight_type",type:"enum",description:"T3 weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"multilingual_t3",type:"enum",description:"Multilingual T3 checkpoint selection.",required:!1,values:["v2","v3"],default:"v2"},{name:"conditionals_cache_slots",type:"int",description:"Cached speaker conditionals; zero disables reuse.",required:!1,min:0,default:1},{name:"mem_saver",type:"bool",description:"Release staged runtime components.",required:!1,default:!1},{name:"encoder_condition_samples",type:"int",description:"Maximum reference samples for the T3 tokenizer; the voice encoder still consumes the full 16 kHz reference.",required:!1,default:96e3},{name:"decoder_condition_samples",type:"int",description:"S3Gen reference sample limit at 24 kHz.",required:!1,default:24e4},{name:"t3_speech_cond_prompt_len",type:"int",description:"T3 reference speech prompt token limit.",required:!1,default:150}],load:[]},capabilities:{clone:["speaker_reference"],vc:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"chatterbox_q8_0",tags:["TTS","Clone","VC","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"chatterbox_q8_0",display_name:"Chatterbox Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Chatterbox-GGUF",files:["Chatterbox-GGUF/chatterbox-q8_0.gguf"],strip_prefix:"Chatterbox-GGUF"},{id:"chatterbox_f16",display_name:"Chatterbox F16 GGUF",format:"gguf",precision:"f16",target_directory:"Chatterbox-GGUF",files:["Chatterbox-GGUF/chatterbox-f16.gguf"],strip_prefix:"Chatterbox-GGUF"},{id:"chatterbox_safetensors",display_name:"Chatterbox Safetensors",format:"safetensors",precision:"native",target_directory:"chatterbox",files:["ve.safetensors","t3_cfg.safetensors","s3gen.safetensors","tokenizer.json","grapheme_mtl_merged_expanded_v1.json","Cangjie5_TC.json","conds.pt","t3_mtl23ls_v2.safetensors","t3_mtl23ls_v3.safetensors"],download:{kind:"huggingface_snapshot",repo:"ResembleAI/chatterbox"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{english_tokenizer:"model:tokenizer.json",multilingual_tokenizer:"model:grapheme_mtl_merged_expanded_v1.json",cangjie_mapping:"model:Cangjie5_TC.json",builtin_conditionals:"model:conds.pt"},tensors:{voice_encoder_weights:{source:"weights:",prefix:"voice_encoder"},s3gen_weights:{source:"weights:",prefix:"s3gen"},t3_english_weights:{source:"weights:",prefix:"t3_english"},t3_multilingual_v2_weights:{source:"weights:",prefix:"t3_multilingual_v2"},t3_multilingual_v3_weights:{source:"weights:",prefix:"t3_multilingual_v3"}}},{format:"safetensors",roots:{model:"."},files:{english_tokenizer:"model:tokenizer.json",multilingual_tokenizer:"model:grapheme_mtl_merged_expanded_v1.json",cangjie_mapping:"model:Cangjie5_TC.json",builtin_conditionals:"model:conds.pt"},tensors:{voice_encoder_weights:"model:ve.safetensors",s3gen_weights:"model:s3gen.safetensors",t3_english_weights:"model:t3_cfg.safetensors",t3_multilingual_v2_weights:"model:t3_mtl23ls_v2.safetensors",t3_multilingual_v3_weights:"model:t3_mtl23ls_v3.safetensors"}}]},S5={family:"chatterbox_turbo",display_name:"Chatterbox Turbo",description:"Resemble AI's distilled 350M Chatterbox Turbo: GPT2 T3 backbone, GPT2 BPE tokenizer, and a 2-step meanflow S3Gen decoder for fast English TTS with a built-in voice.",category:"tts",status:"testing",tasks:["tts"],modes:["offline"],languages:["en"],capabilities:{},options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated tokens; legacy max_new_tokens remains accepted.",required:!1,min:0,default:1e3},{name:"temperature",type:"float",description:"T3 sampling temperature.",required:!1,default:.8},{name:"top_p",type:"float",description:"T3 nucleus sampling cutoff.",required:!1,default:.95},{name:"top_k",type:"int",description:"T3 top-k sampling limit.",required:!1,min:0,default:1e3},{name:"repetition_penalty",type:"float",description:"T3 token repetition penalty.",required:!1,default:1.2},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,max:4294967295,default:0},{name:"text_chunk_size",type:"int",description:"Maximum characters per text chunk; must be positive.",required:!1,min:1,default:128}],session:[],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"chatterbox_turbo_q8_0",tags:["TTS","GGUF"],docs:["docs/models/chatterbox_turbo.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"chatterbox_turbo_q8_0",display_name:"Chatterbox Turbo Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Chatterbox-Turbo-GGUF",files:["Chatterbox-Turbo-GGUF/chatterbox-turbo-q8_0.gguf"],strip_prefix:"Chatterbox-Turbo-GGUF"},{id:"chatterbox_turbo_f16",display_name:"Chatterbox Turbo F16 GGUF",format:"gguf",precision:"f16",target_directory:"Chatterbox-Turbo-GGUF",files:["Chatterbox-Turbo-GGUF/chatterbox-turbo-f16.gguf"],strip_prefix:"Chatterbox-Turbo-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tokenizer_vocab:"model:chatterbox_turbo_vocab.json",tokenizer_merges:"model:chatterbox_turbo_merges.txt",tokenizer_special_tokens:"model:chatterbox_turbo_special_tokens.json"},tensors:{t3_turbo_weights:{source:"weights:",prefix:"t3"},builtin_conditionals_turbo:{source:"weights:",prefix:"conds"},s3gen_weights:{source:"weights:",prefix:"s3gen"}}}]},T5={family:"citrinet_asr",display_name:"Citrinet ASR",description:"NVIDIA CitriNet-family end-to-end English ASR model using a convolutional CTC architecture optimized for transcribing speech segments to text.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en"],capabilities:{},options:{request:[],session:[{name:"weight_type",type:"enum",description:"Weight storage type used by the encoder.",default:"native",preset:"weight_type_full",required:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"citrinet_asr_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"citrinet_asr_q8_0",display_name:"Citrinet ASR Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Citrinet-ASR-GGUF",files:["Citrinet-ASR-GGUF/citrinet-asr-q8_0.gguf"],strip_prefix:"Citrinet-ASR-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:citrinet_256_config.json",tokenizer:"model:citrinet_256_tokenizer.model"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:citrinet_256_config.json",tokenizer:"model:citrinet_256_tokenizer.model"},tensors:{weights:"model:citrinet_256.safetensors"}}]},$5={family:"cohere_asr",schema_version:1,display_name:"Cohere Transcribe",description:"Cohere multilingual speech transcription with punctuation control.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en","fr","de","es","it","pt","nl","pl","el","ar","ja","zh","vi","ko"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Input audio language.",required:!1,default:"en"},{name:"punc",type:"bool",description:"Generate punctuation and capitalization.",required:!1,default:!0},{name:"max_tokens",type:"int",description:"Maximum generated tokens per audio chunk.",required:!1,min:1,max:1014,default:256},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","quiet_energy","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio chunk in seconds.",required:!1,min:.04,max:35,default:35}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage type.",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"],required:!1,default:"native"}],load:[]},runtime:{tags:["gguf","cpu","cuda"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/cohere_asr.md"],recommended_package:"cohere_transcribe_bf16"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"cohere_transcribe_bf16",display_name:"Cohere Transcribe GGUF BF16",default:!0,format:"gguf",precision:"bf16",target_directory:"Cohere-Transcribe-GGUF",files:["Cohere-Transcribe-GGUF/cohere-transcribe-03-2026-bf16.gguf"],strip_prefix:"Cohere-Transcribe-GGUF"},{id:"cohere_transcribe_q8_0",display_name:"Cohere Transcribe GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Cohere-Transcribe-GGUF",files:["Cohere-Transcribe-GGUF/cohere-transcribe-03-2026-q8_0.gguf"],strip_prefix:"Cohere-Transcribe-GGUF"},{id:"cohere_transcribe_q4_0",display_name:"Cohere Transcribe GGUF Q4_0",format:"gguf",precision:"q4_0",target_directory:"Cohere-Transcribe-GGUF",files:["Cohere-Transcribe-GGUF/cohere-transcribe-03-2026-q4_0.gguf"],strip_prefix:"Cohere-Transcribe-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"weights:"}}]},q5={schema_version:1,family:"confucius4_r2t2",display_name:"Confucius4-R2T2",description:"NetEase Youdao Confucius4-R2T2 real-time ASR: a Qwen3-ASR fine-tune with Longest Stable Prefix (LSP) streaming. Low-latency append-only streaming from 80 ms to 2 s chunks, context and hotword prompts, 30 languages.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["zh","en","yue","ar","de","fr","es","pt","id","it","ko","ru","th","vi","ja","tr","hi","ms","nl","sv","da","fi","pl","cs","fil","fa","el","hu","mk","ro"],capabilities:{asr:["partial_results"]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"confucius4_r2t2_q8_0",tags:["ASR","Stream"],docs:["docs/models/r2t2.md","docs/asr.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"netease-youdao/Confucius4-R2T2",revision:"main",gated:!1}},packages:[{id:"confucius4_r2t2_q8_0",display_name:"Confucius4-R2T2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Confucius4-R2T2-GGUF",files:["r2t2-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"davidxifeng/Confucius4-R2T2-gguf"}},{id:"confucius4_r2t2_f16",display_name:"Confucius4-R2T2 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Confucius4-R2T2-GGUF",files:["r2t2-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"davidxifeng/Confucius4-R2T2-gguf"}},{id:"confucius4_r2t2_q4_k_m",display_name:"Confucius4-R2T2 Q4_K_M GGUF",description:"Community Q4_K_M quantization by NairoDorian (Hugging Face: Nairod785), pinned to a fixed revision; quantization report in QUANTIZATION.md. Quantized derivative work of netease-youdao/Confucius4-R2T2 under the NetEase Youdao Model Use License - see LICENSE, LICENSE_zh and NOTICE in the download repo.",format:"gguf",precision:"q4_k_m",target_directory:"Confucius4-R2T2-Q4_K_M-GGUF",files:["r2t2-q4_k_m.gguf"],download:{kind:"huggingface_snapshot",repo:"Nairod785/Confucius4-R2T2-Q4_K_M-GGUF",revision:"b1ea19256fb77a8d8ab7b091dc75378e15952605",gated:!1}},{id:"confucius4_r2t2_safetensors",display_name:"Confucius4-R2T2 (HF safetensors)",format:"safetensors",precision:"native",target_directory:"Confucius4-R2T2",files:["added_tokens.json","chat_template.json","config.json","generation_config.json","merges.txt","model.safetensors","preprocessor_config.json","special_tokens_map.json","tokenizer.json","tokenizer_config.json","vocab.json"],download:{kind:"huggingface_snapshot",repo:"netease-youdao/Confucius4-R2T2"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}],options:{request:[{name:"language",type:"string",required:!1,default:"Auto",description:"Recognition language: ISO-639 code (zh/en/ja/...) or canonical name (Chinese/English/...), or Auto for detection."},{name:"max_tokens",type:"int",required:!1,description:"Offline decode budget. Must be positive. Offline omission uses checkpoint configuration (512 fallback).",min:1}],session:[{name:"chunk_size_ms",type:"float",required:!1,default:320,description:"Streaming chunk duration in milliseconds; must be positive."},{name:"unfixed_chunk_num",type:"int",required:!1,default:2,description:"Leading chunks decoded without a stable-prefix prompt.",min:0},{name:"unfixed_token_num",type:"int",required:!1,default:5,description:"Tokens rolled back from the accumulated text before it becomes the prefix prompt.",min:0},{name:"rollback_punctuation",type:"bool",required:!1,default:!1,description:"When punctuation is detected, set rollback to zero and retain the full decoded prefix."},{name:"max_tokens",type:"int",required:!1,default:32,description:"Greedy decode budget per streaming chunk and for the final flush (session-scoped; distinct from the offline request max_tokens).",min:1},{name:"audio_encoder_weight_type",type:"enum",preset:"weight_type_conv",required:!1,default:"native",description:"Audio tower weight storage."},{name:"thinker_weight_type",type:"enum",values:["native","f32","f16","bf16","q8_0"],required:!1,default:"native",description:"Thinker weight storage."},{name:"weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"native",description:"Alias for thinker_weight_type."},{name:"audio_encoder_graph_arena_mb",type:"int",required:!1,default:128,description:"Audio tower graph arena in MB.",min:1},{name:"thinker_prefill_graph_arena_mb",type:"int",required:!1,default:256,description:"Thinker prefill graph arena in MB.",min:1},{name:"thinker_decode_graph_arena_mb",type:"int",required:!1,default:256,description:"Thinker decode graph arena in MB.",min:1},{name:"thinker_weight_context_mb",type:"int",required:!1,default:64,description:"Thinker weight context in MB.",min:1}],load:[]},dependencies:[]},G5={schema_version:1,family:"confucius4_tts",display_name:"Confucius4-TTS",description:"Confucius4-TTS is a multilingual voice-cloning TTS model packaged for audio.cpp with offline and streaming generation. It uses reference speech, language-aware text normalization, T2S semantic generation, S2A flow matching, style encoding, semantic audio features, and BigVGAN vocoding.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline","streaming"],languages:["zh","en","ja","ko","de","fr","es","id","it","th","pt","ru","ms","vi"],runtime:{tags:["gguf","stream"]},capabilities:{clone:["speaker_reference","long_form"]},options:{request:[{name:"language",type:"string",description:"Target synthesis language code used by the text frontend; default zh when no request transcript language or style language is provided.",required:!1,default:"zh"},{name:"temperature",type:"float",description:"T2S sampling temperature; must be > 0, default 0.8.",required:!1,min:0,default:.8},{name:"top_p",type:"float",description:"T2S nucleus sampling probability; must be in (0, 1], default 0.8.",required:!1,min:0,max:1,default:.8},{name:"top_k",type:"int",description:"T2S top-k sampling limit; must be positive, default 30.",required:!1,min:1,default:30},{name:"num_beams",type:"int",description:"T2S beam count; default 3. Set 1 for single-beam sampling.",required:!1,min:1,default:3},{name:"repetition_penalty",type:"float",description:"T2S repetition penalty; must be > 0, default 10.0.",required:!1,min:0,default:10},{name:"max_tokens",type:"int",description:"Maximum T2S semantic sequence length including prompt tokens; default 1520.",required:!1,min:1,default:1520},{name:"num_inference_steps",type:"int",description:"S2A flow-matching step count; default 25.",required:!1,min:1,default:25},{name:"guidance_scale",type:"float",description:"S2A classifier-free guidance scale; default 0.7. Negative values select the no-CFG path.",required:!1,default:.7},{name:"text_chunk_size",type:"int",description:"Maximum text tokens per generated segment; default 80.",required:!1,min:1,default:80},{name:"text_chunk_mode",type:"enum",description:"word_budget/default selects model-local official_segments. Other modes use the framework splitter with a codepoint budget.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"cross_fade_duration_sec",type:"float",description:"Cross-fade duration between generated segments in seconds; default 0.3.",required:!1,min:0,default:.3},{name:"edge_fade_duration_sec",type:"float",description:"Fade duration applied at segment edges in seconds; default 0.1. Currently validated but not applied to generated audio.",required:!1,min:0,default:.1},{name:"edge_pad_duration_sec",type:"float",description:"Silence padding applied at segment edges in seconds; default 0.1. Currently validated but not applied to generated audio.",required:!1,min:0,default:.1},{name:"seed",type:"int",description:"Seed for T2S sampling and S2A noise initialization; default 1234.",required:!1,min:0,default:1234}],session:[{name:"graph_arena_mb",type:"int",description:"Reusable ggml graph arena size in MiB for Confucius stages; default 512.",required:!1,min:1,default:512},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"weight_type",type:"enum",description:"Matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; default 1, set 0 to disable caching.",required:!1,min:0,default:1},{name:"mem_saver",type:"bool",description:"Release staged graphs after request phases; default false.",required:!1,default:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"confucius4_tts_orig",display_name:"Confucius4-TTS Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Confucius4-TTS-GGUF",files:["Confucius4-TTS-GGUF/confucius4-tts-orig.gguf"],strip_prefix:"Confucius4-TTS-GGUF"}],dependencies:[],ui:{recommended_package:"confucius4_tts_orig",tags:["TTS","Clone","GGUF","Stream"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:inference_config.yaml",tokenizer_model:"model:tokenizer.model",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",special_tokens_map:"model:special_tokens_map.json",w2v_preprocessor_config:"model:w2v_preprocessor_config.json",bigvgan_config:"model:bigvgan_config.json"},tensors:{t2s:{source:"weights:",prefix:"t2s"},s2a:{source:"weights:",prefix:"s2a"},semantic_encoder:{source:"weights:",prefix:"semantic_encoder"},semantic_encoder_shaw:{source:"weights:",prefix:"semantic_encoder_shaw"},semantic_stats:{source:"weights:",prefix:"semantic_stats"},style_encoder:{source:"weights:",prefix:"style_encoder"},vocoder:{source:"weights:",prefix:"vocoder"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:inference_config.yaml",tokenizer_model:"model:tokenizer.model",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",special_tokens_map:"model:special_tokens_map.json",w2v_preprocessor_config:"model:w2v_preprocessor_config.json",bigvgan_config:"model:bigvgan_config.json"},tensors:{t2s:"model:t2s.safetensors",s2a:"model:s2a.safetensors",semantic_encoder:"model:semantic_encoder.safetensors",semantic_encoder_shaw:"model:semantic_encoder_shaw.safetensors",semantic_stats:"model:semantic_stats.safetensors",style_encoder:"model:style_encoder.safetensors",vocoder:"model:vocoder.safetensors"}}]},F5={schema_version:1,family:"controlfoley",display_name:"ControlFoley",description:"Multimodal Foley audio generation model.",category:"audio_tools",status:"experimental",tasks:["sfx"],modes:["offline"],languages:["auto"],runtime:{tags:["gguf"]},capabilities:{sfx:["prompt_generation"]},ui:{recommended_package:"controlfoley_large_44k_q8_0",tags:["SFX","GGUF"],docs:["docs/models/controlfoley.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{open_clip_vocab:"model:open_clip_vocab.json",open_clip_merges:"model:open_clip_merges.txt",open_clip_tokenizer_config:"model:open_clip_tokenizer_config.json"},tensors:{flow:{source:"weights:",prefix:"flow"},vae:{source:"weights:",prefix:"vae"},bigvgan:{source:"weights:",prefix:"bigvgan"},open_clip:{source:"weights:",prefix:"open_clip"},cav_mae:{source:"weights:",prefix:"cav_mae"},synchformer:{source:"weights:",prefix:"synchformer"},clap:{source:"weights:",prefix:"clap"},mert:{source:"weights:",prefix:"mert"},musicgen_style:{source:"weights:",prefix:"musicgen_style"}}}],options:{request:[{name:"duration_sec",type:"float",required:!1,default:8,min:.64,description:"Target temporal budget."},{name:"num_inference_steps",type:"int",required:!1,default:25,min:1,description:"Euler flow inference steps."},{name:"guidance_scale",type:"float",required:!1,default:4.5,min:0,description:"Classifier-free guidance strength. Must be > 0. Values strictly between 0 and 1 bypass CFG and negative-prompt conditioning."},{name:"negative_prompt",type:"string",required:!1,default:"",description:"Negative text prompt used for the unconditional guidance text branch."},{name:"video_file",type:"path",required:!1,description:"Optional video path for video-conditioned Foley generation."},{name:"mask_away_clip",type:"bool",required:!1,default:!1,description:"Disable OpenCLIP video conditioning while keeping visual and sync conditioning."},{name:"seed",type:"int",required:!1,default:42,min:0,max:4294967295,description:"Generation seed."}],session:[{name:"weight_type",type:"enum",required:!1,preset:"weight_type_full",default:"native",description:"ControlFoley weight storage type."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"controlfoley_large_44k_f32",display_name:"ControlFoley Large 44k F32 GGUF",format:"gguf",precision:"f32",target_directory:"ControlFoley-GGUF",files:["ControlFoley-GGUF/controlfoley-large-44k-f32.gguf"],strip_prefix:"ControlFoley-GGUF"},{id:"controlfoley_large_44k_q8_0",display_name:"ControlFoley Large 44k Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"ControlFoley-GGUF",files:["ControlFoley-GGUF/controlfoley-large-44k-q8_0.gguf"],strip_prefix:"ControlFoley-GGUF"}],dependencies:[]},A5={schema_version:1,family:"cosyvoice3",display_name:"CosyVoice3",description:"Fun-CosyVoice3 native GGUF package for zero-shot, cross-lingual, and instruction-conditioned text-to-speech using CosyVoice3 speech-token AR generation, causal masked flow mel decoding, CAM++ speaker conditioning, and causal HiFT waveform decoding.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline"],languages:["zh","en","ja","ko","de","es","fr","it","ru","yue"],runtime:{tags:["gguf"]},dependencies:[],capabilities:{tts:["speaker_reference","style_control"],clone:["speaker_reference"]},options:{request:[{name:"template_name",type:"enum",description:"CosyVoice3 request template.",required:!1,values:["zero_shot","cross_lingual","instruct"],default:"zero_shot"},{name:"reference_text",type:"string",description:"Transcript for the prompt audio.",required:!1},{name:"instruct",type:"string",description:"Instruction text for instruct mode.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 600.",required:!1,min:1,default:600},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"max_tokens",type:"int",description:"Maximum generated speech tokens; -1 (default) selects 20 times the target text token count. Explicit limits must be positive.",required:!1,min:-1,default:-1},{name:"min_tokens",type:"int",description:"Minimum generated speech tokens before stop is accepted; -1 (default) selects twice the target text token count. Must not exceed the resolved maximum.",required:!1,min:-1,default:-1},{name:"top_k",type:"int",description:"AR speech-token top-k sampling limit; default 25.",required:!1,min:1,default:25},{name:"num_inference_steps",type:"int",description:"Flow decoder Euler steps; default 10.",required:!1,min:1,default:10},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,default:1986}],session:[{name:"lora",type:"path",description:"PEFT adapter with adapter_config.json, or native lora_weights with config.json and speech_embedding/llm_decoder sidecars. Checkpoints may use safetensors or PyTorch containers.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1. Full-weight replacements are not scaled.",required:!1,default:1},{name:"weight_type",type:"enum",description:"CosyVoice3 matmul weight storage type; default native.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"]},{name:"graph_arena_mb",type:"int",description:"Reusable runtime graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 2048.",required:!1,min:1,default:2048},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse.",required:!1,min:0,default:4},{name:"mem_saver",type:"bool",description:"Release cached runtime graphs after each request to reduce peak VRAM; default false.",required:!1,default:!1},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Component: flow. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. GGML keeps the session backend. RKNN requires artifacts.main, a comma-separated ladder of estimator engines compiled one per sequence length (tools/rknn/prepare_cosyvoice3_rknn_flow.py), and ENGINE_ENABLE_RKNN; omit backend. An utterance longer than the largest engine runs the CPU graph. Neither implementation takes params.",required:!1,default:"{}"}],load:[]},packages:[{id:"cosyvoice3_q8_0",display_name:"CosyVoice3 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"CosyVoice3-GGUF",files:["CosyVoice3-GGUF/cosyvoice3-q8_0.gguf"],strip_prefix:"CosyVoice3-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"cosyvoice3_f32",display_name:"CosyVoice3 F32 GGUF",default:!1,format:"gguf",precision:"f32",target_directory:"CosyVoice3-GGUF",files:["CosyVoice3-GGUF/cosyvoice3-f32.gguf"],strip_prefix:"CosyVoice3-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}}],ui:{recommended_package:"cosyvoice3_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{cosyvoice3_yaml:"model:cosyvoice3.yaml",qwen_config:"model:CosyVoice-BlankEN/config.json",tokenizer_config:"model:CosyVoice-BlankEN/tokenizer_config.json",vocab_json:"model:CosyVoice-BlankEN/vocab.json",merges_txt:"model:CosyVoice-BlankEN/merges.txt"},tensors:{llm_weights:{source:"weights:",prefix:"llm"},flow_weights:{source:"weights:",prefix:"flow"},hift_weights:{source:"weights:",prefix:"hift"},campplus_weights:{source:"weights:",prefix:"campplus"},speech_tokenizer_weights:{source:"weights:",prefix:"speech_tokenizer"},blank_en_weights:{source:"weights:",prefix:"blank_en"}}}]},C5={schema_version:1,family:"crisperwhisper",display_name:"CrisperWhisper 2.0",description:"Whisper-based verbatim and intended speech transcription.",category:"asr",status:"supported",tasks:["asr","align"],modes:["offline","streaming"],languages:["af","am","ar","as","az","ba","be","bg","bn","bo","br","bs","ca","cs","cy","da","de","el","en","es","et","eu","fa","fi","fo","fr","gl","gu","ha","haw","he","hi","hr","ht","hu","hy","id","is","it","ja","jw","ka","kk","km","kn","ko","la","lb","ln","lo","lt","lv","mg","mi","mk","ml","mn","mr","ms","mt","my","ne","nl","nn","no","oc","pa","pl","ps","pt","ro","ru","sa","sd","si","sk","sl","sn","so","sq","sr","su","sv","sw","ta","te","tg","th","tk","tl","tr","tt","uk","ur","uz","vi","yi","yo","zh"],capabilities:{align:["word_timestamps"],asr:["word_timestamps","partial_results"]},dependencies:[],options:{request:[{name:"return_timestamps",required:!1,type:"bool",description:"Return word-level timestamps.",default:!1},{name:"audio_chunk_mode",required:!1,type:"enum",values:["auto","fixed","none"],description:"Continuation window planning. None requires audio no longer than 30 seconds.",default:"auto"},{name:"audio_chunk_duration_sec",required:!1,type:"float",description:"Duration of each encoder window in seconds. Must be positive and greater than overlap.",max:30,default:30},{name:"audio_chunk_overlap_sec",required:!1,type:"float",description:"Audio overlap between continuation windows in seconds. Must be smaller than chunk duration.",min:0,default:4},{name:"language",required:!1,type:"string",description:"Audio language code.",default:"en"},{name:"transcription_mode",required:!1,type:"enum",description:"Verbatim speech, intended clean text, or transcript-conditioned verbatimize.",values:["verbatim","intended","verbatimize"],default:"verbatim"},{name:"max_tokens",required:!1,type:"int",description:"Maximum generated tokens per window. Positive budget, additionally bounded by remaining checkpoint text positions after the prompt.",min:1,default:256}],session:[{name:"weight_type",required:!1,type:"enum",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","i8"],description:"Matmul weight storage type.",default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/crisperwhisper.md"],recommended_package:"crisperwhisper_2_large_q8_0"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"crisperwhisper_2_large_bf16",display_name:"CrisperWhisper 2.0 Large GGUF BF16",format:"gguf",precision:"bf16",target_directory:"CrisperWhisper2.0-GGUF",files:["CrisperWhisper2.0-GGUF/crisperwhisper-2-large-bf16.gguf"],strip_prefix:"CrisperWhisper2.0-GGUF"},{id:"crisperwhisper_2_large_q8_0",display_name:"CrisperWhisper 2.0 Large GGUF Q8_0",default:!0,format:"gguf",precision:"q8_0",target_directory:"CrisperWhisper2.0-GGUF",files:["CrisperWhisper2.0-GGUF/crisperwhisper-2-large-q8_0.gguf"],strip_prefix:"CrisperWhisper2.0-GGUF"},{id:"crisperwhisper_2_large_q4_k",display_name:"CrisperWhisper 2.0 Large GGUF Q4_K",format:"gguf",precision:"q4_k",target_directory:"CrisperWhisper2.0-GGUF",files:["CrisperWhisper2.0-GGUF/crisperwhisper-2-large-q4_k.gguf"],strip_prefix:"CrisperWhisper2.0-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:"weights:"}}]},M5={schema_version:1,family:"dots_tts",display_name:"DotTTS",description:"DotTTS is a multilingual zero-shot TTS, voice-cloning, and speech-editing model family packaged for audio.cpp with SOAR and MeanFlow generation, prompt-audio plus prompt-text prefill, speaker-reference conditioning, language tags, multiple synthesis templates, long-form text chunking, and true streaming audio output.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["multilingual"],runtime:{tags:["gguf","stream"]},capabilities:{tts:["speaker_reference","style_control","long_form"],clone:["speaker_reference","style_control","long_form"]},options:{request:[{name:"reference_text",type:"string",description:"Transcript for the prompt audio. When set with reference audio, DotTTS uses prompt prefill for higher quality voice cloning.",required:!1},{name:"reference_duration_sec",type:"float",description:"Optional prompt-audio trim duration before reference conditioning and prompt prefill.",required:!1,min:0},{name:"template_name",type:"enum",description:"DotTTS synthesis template. tts is normal text-to-speech; instruction_tts adds instruction conditioning; text_to_audio uses a sound-description template; tts_interleave uses the streaming interleave schedule; edit uses the DotTTS Edit source-audio editing schedule and is offline-only.",values:["tts","instruction_tts","text_to_audio","tts_interleave","edit"],required:!1,default:"tts"},{name:"source_audio",type:"audio_path",description:"Source WAV path for DotTTS Edit. Required when template_name=edit unless audio_input is supplied by the caller.",required:!1},{name:"instruct",type:"string",description:"Structured DotTTS Edit instruction. If omitted with template_name=edit, the request text is used as the instruction.",required:!1},{name:"source_text",type:"string",description:"Optional source transcript override for DotTTS Edit. If omitted, it is rendered from instruction tags.",required:!1},{name:"target_text",type:"string",description:"Edit target transcript override. When omitted, explicit instruction plus text input uses that text; otherwise the target is rendered from instruction tags.",required:!1},{name:"use_xvector",type:"enum",description:"DotTTS Edit speaker conditioning mode. auto follows the upstream tag-based behavior; on/off force or disable source-audio speaker conditioning.",values:["auto","on","off"],required:!1,default:"auto"},{name:"language",type:"string",description:"Optional target language tag. none disables language tagging; otherwise pass a language code such as en or zh.",required:!1,default:"none"},{name:"num_inference_steps",type:"int",description:"SOAR flow-matching inference step count; default 10.",required:!1,min:1,default:10},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale used by SOAR flow matching. Default 1.2.",required:!1,min:0,default:1.2},{name:"speaker_scale",type:"float",description:"Multiplier applied to the prompt speaker embedding; default 1.5.",required:!1,min:0,default:1.5},{name:"sampler_mode",type:"enum",description:"SOAR ODE solver method for flow matching. Fixed-step euler is the default and parity baseline.",values:["euler","midpoint","rk4"],required:!1,default:"euler"},{name:"max_tokens",type:"int",description:"Maximum generated audio patch count per generated segment; default 500. In Edit mode source patches consume this budget; it must exceed the source-patch count.",required:!1,min:1,default:500},{name:"text_chunk_size",type:"int",description:"Maximum text codepoints per generated segment for long-form requests; default 320.",required:!1,min:1,default:320},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode; default tag_aware preserves leading style/control tags across long-form chunks.",values:["default","tag_aware","japanese","endline"],required:!1,default:"tag_aware"},{name:"vocoder_merge_steps",type:"int",description:"Streaming vocoder latent patch merge size after the initial unmerged patches; default 4, matching the Python optimized streaming runtime default.",required:!1,min:1,default:4},{name:"seed",type:"int",description:"Seed for prompt latent sampling and flow noise initialization; default 42.",required:!1,min:0,default:42}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type for DotTTS components; default native. Component-specific weight options override this value.",preset:"weight_type_full",required:!1,default:"native"},{name:"speaker_encoder_weight_type",type:"enum",description:"Speaker encoder matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"codec_weight_type",type:"enum",description:"AudioVAE vocoder matmul and recurrent weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"patch_encoder_weight_type",type:"enum",description:"Patch encoder transformer matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"llm_weight_type",type:"enum",description:"Autoregressive language model matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"flow_weight_type",type:"enum",description:"SOAR or MeanFlow DiT flow-matching matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"codec_conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse.",required:!1,min:0,default:4},{name:"mem_saver",type:"bool",description:"Load DotTTS components by request phase and release their weights/graphs after last use while keeping reference cache slots alive.",required:!1,default:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"dots_tts_soar_q8_0",display_name:"DotTTS SOAR Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"DotTTS-SOAR-GGUF",files:["DotTTS-SOAR-GGUF/dots-tts-soar-q8_0.gguf"],strip_prefix:"DotTTS-SOAR-GGUF"},{id:"dots_tts_soar_bf16",display_name:"DotTTS SOAR BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"DotTTS-SOAR-GGUF",files:["DotTTS-SOAR-GGUF/dots-tts-soar-bf16.gguf"],strip_prefix:"DotTTS-SOAR-GGUF"},{id:"dots_tts_mf_q8_0",display_name:"DotTTS MeanFlow Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"DotTTS-MF-GGUF",files:["DotTTS-MF-GGUF/dots-tts-mf-q8_0.gguf"],strip_prefix:"DotTTS-MF-GGUF"},{id:"dots_tts_mf_bf16",display_name:"DotTTS MeanFlow BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"DotTTS-MF-GGUF",files:["DotTTS-MF-GGUF/dots-tts-mf-bf16.gguf"],strip_prefix:"DotTTS-MF-GGUF"},{id:"dots_tts_edit_q8_0",display_name:"DotTTS Edit Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"DotTTS-Edit-GGUF",files:["DotTTS-Edit-GGUF/dots-tts-edit-q8_0.gguf"],strip_prefix:"DotTTS-Edit-GGUF"},{id:"dots_tts_edit_bf16",display_name:"DotTTS Edit BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"DotTTS-Edit-GGUF",files:["DotTTS-Edit-GGUF/dots-tts-edit-bf16.gguf"],strip_prefix:"DotTTS-Edit-GGUF"}],dependencies:[],ui:{recommended_package:"dots_tts_soar_q8_0",tags:["TTS","Clone","Stream","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",llm_config:"model:llm_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",added_tokens:"model:added_tokens.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{core_weights:{source:"weights:",prefix:"core"},vocoder_weights:{source:"weights:",prefix:"vocoder"},speaker_encoder_weights:{source:"weights:",prefix:"speaker_encoder"},latent_stats:{source:"weights:",prefix:"latent_stats"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",llm_config:"model:llm_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",added_tokens:"model:added_tokens.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{core_weights:{source:"model:model.safetensors"},vocoder_weights:{source:"model:vocoder.safetensors"},speaker_encoder_weights:{source:"model:speaker_encoder.safetensors"},latent_stats:{source:"model:latent_stats.safetensors"}}}]},E5={schema_version:1,family:"dramabox",display_name:"DramaBox",description:"DramaBox is an English expressive TTS and voice-cloning model packaged for audio.cpp as a standalone GGUF bundle. It combines Gemma text conditioning, diffusion sampling, reference-audio conditioning, long-form chunking, and 48 kHz stereo output.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["speaker_reference","style_control","long_form"],clone:["speaker_reference","style_control","long_form"]},options:{request:[{name:"target_voice",type:"audio_path",description:"Reference voice WAV path for voice cloning. If omitted, DramaBox generates from text without reference-audio conditioning.",required:!1},{name:"negative_prompt",type:"string",description:"Negative text conditioning used when guidance_scale enables classifier-free guidance; omitted uses the built-in quality prompt.",required:!1},{name:"duration_sec",type:"float",description:"Explicit target duration in seconds; default 0 uses the prompt-duration estimator. Above audio_chunk_threshold_sec, long-form generation uses estimated per-chunk durations instead of this explicit target.",required:!1,min:0,default:0},{name:"num_inference_steps",type:"int",description:"Diffusion sampling step count; default comes from config.json, 30 in the current package.",required:!1,min:1,default:30},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; default comes from config.json, 2.5 in the current package. Values greater than 1 enable CFG. Negative values disable this guidance branch.",required:!1,default:2.5},{name:"spatio_temporal_guidance_scale",type:"float",description:"Spatio-temporal guidance scale; default comes from config.json, 1.5 in the current package. Values greater than 0 enable STG. Negative values disable this guidance branch.",required:!1,default:1.5},{name:"duration_scale",type:"float",description:"Multiplier applied to the estimated prompt duration when duration_sec is 0; default comes from config.json, 1.1 in the current package. The resulting duration has a 3-second floor.",required:!1,default:1.1},{name:"reference_duration_sec",type:"float",description:"Reference voice crop/repeat duration in seconds; default comes from config.json, 10.0 in the current package. Must be > 0.",required:!1,min:0,default:10},{name:"guidance_rescale",type:"string",description:"Guidance rescale: auto or any negative value derives it from guidance_scale; nonnegative numeric values select an explicit rescale.",required:!1,default:"auto"},{name:"audio_chunk_threshold_sec",type:"float",description:"Estimated duration threshold that switches a request to long-form chunking; default 45.0 seconds. Must be > 0.",required:!1,min:0,default:45},{name:"audio_chunk_duration_sec",type:"float",description:"Target estimated duration for each long-form chunk; default 37.0 seconds. Must be > 0.",required:!1,min:0,default:37},{name:"cross_fade_duration_sec",type:"float",description:"Equal-power cross-fade between long-form chunks in seconds; default 0.05. Zero still overlaps one sample.",required:!1,min:0,default:.05},{name:"seed",type:"int",description:"Torch-compatible CUDA noise seed for diffusion sampling; default 42.",required:!1,min:0,default:42}],session:[{name:"perf_mode",type:"enum",description:"Attention implementation mode. Default off keeps the exact reference-query attention path; flash_attention enables the optimized path.",values:["off","flash_attention"],required:!1,default:"off"},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs and weights immediately after each request phase to reduce peak and resident VRAM; default false keeps components cached for later reuse.",required:!1,default:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"dramabox_q8_0",display_name:"DramaBox Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"DramaBox-GGUF",files:["DramaBox-GGUF/dramabox-q8_0.gguf"],strip_prefix:"DramaBox-GGUF"}],dependencies:[],ui:{recommended_package:"dramabox_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",audio_components_config:"model:audio_components_config.json",gemma_config:"model:gemma-3-12b-it-bnb-4bit/config.json",gemma_tokenizer_model:"model:gemma-3-12b-it-bnb-4bit/tokenizer.model",gemma_tokenizer_json:"model:gemma-3-12b-it-bnb-4bit/tokenizer.json",gemma_tokenizer_config:"model:gemma-3-12b-it-bnb-4bit/tokenizer_config.json"},tensors:{dit_weights:{source:"weights:",prefix:"dit"},audio_weights:{source:"weights:",prefix:"audio"},gemma_weights:{source:"weights:",prefix:"gemma"},silence_latent:{source:"weights:",prefix:"silence"}}}]},z5={schema_version:1,family:"echo_tts",display_name:"Echo-TTS",description:"Echo-TTS is an English zero-shot voice-cloning TTS model packaged for audio.cpp. A 2.8B diffusion transformer generates 80-D latents in PCA space which the Fish S1-DAC decodes to 44.1 kHz audio. Generation is a fixed 29.72 s window (640 latents).",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{clone:["speaker_reference"]},options:{request:[{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per text chunk; must be positive, default 300.",required:!1,min:1,default:300},{name:"text_guidance_scale",type:"float",description:"Classifier-free guidance scale on the text condition (independent-cfg only). Advertised range is recommended, not enforced by the parser.",required:!1,min:0,default:3},{name:"speaker_guidance_scale",type:"float",description:"Classifier-free guidance scale on the speaker condition (independent-cfg only). Advertised range is recommended, not enforced by the parser.",required:!1,min:0,default:8},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale on the text and speaker condition (join-cfg only). Advertised range is recommended, not enforced by the parser.",required:!1,min:0,default:8},{name:"num_inference_steps",type:"int",description:"Euler sampler steps.",required:!1,min:1,default:40},{name:"truncation_factor",type:"float",description:"Initial-noise truncation factor. Advertised range is recommended, not enforced by the parser.",required:!1,min:0,max:1,default:.8},{name:"speaker_kv_scale",type:"float",description:"Force-speaker KV scaling. 1.0 disables; 1.5 is the upstream default when enabled. Advertised range is recommended, not parser-enforced; zero is invalid for reciprocal scaling.",required:!1,min:1,default:1},{name:"seed",type:"int",description:"RNG seed for the initial latent. Negative signed-integer values are treated as zero.",required:!1,default:0},{name:"reference_duration_sec",type:"float",required:!1,description:"Trim the speaker reference to at most this many seconds before encoding. Shorter references are cheaper and often clone better; upstream's guidance favours around 10 s. Defaults to 15 s. Values above the trained maximum of 297.1 s are clamped. Set per request, or as a session default from CLI or server config. Must be positive.",default:15},{name:"max_duration_sec",type:"float",description:"Cap the generation window, in seconds (up to 29.7215 s, the trained maximum; larger values are clamped to it). Quantised down to a whole latent frame of 46.44 ms. Left unset, the window is estimated per chunk from text length and widened automatically if the utterance does not finish inside it, which is substantially cheaper for short text. Must be positive; rounded to at least one latent frame.",required:!1,max:29.7215},{name:"guidance_interval",type:"int",description:"Refresh the two unconditional CFG lanes only every Nth step inside the guidance window, reusing the previous guidance correction in between. 1 reproduces upstream exactly. Worth raising to 2 at 30+ steps, where the correction is still measured 8-10 times across the guided phase (roughly 1.3x fewer denoiser evaluations); not recommended below ~20 steps, where it is already coarsely sampled and staleness shows up as degraded timbre and text adherence.",required:!1,min:1,default:1}],session:[{name:"reference_duration_sec",type:"float",required:!1,description:"Trim the speaker reference to at most this many seconds before encoding. Shorter references are cheaper and often clone better; upstream's guidance favours around 10 s. Defaults to 15 s. Values above the trained maximum of 297.1 s are clamped. Set per request, or as a session default from CLI or server config. Must be positive.",default:15},{name:"reference_cache_slots",type:"int",required:!1,description:"How many encoded speaker references to keep. Encoding is linear in reference length, so reusing a voice across requests avoids repeating it. 0 disables caching; default 4."},{name:"mem_saver",type:"bool",required:!1,description:"Release Fish S1-DAC decode graph space before encoding reference speaker audio and encode graph space after. Avoids having both allocations resident simulaneously at the cost of rebuilding the graphs when a speaker cache-miss occurs.",default:!1},{name:"cfg_mode",type:"enum",description:"Type of classifier free guidance used.",values:["independent","joint"],required:!1,default:"independent"}],load:[]},packages:[{id:"echo_tts_q8_0",display_name:"Echo-TTS Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Echo-TTS-GGUF",files:["echo-tts-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"dignome/Echo-TTS",revision:"919681c9906c88963352d5f96e0f732ddd3989ce",gated:!1}},{id:"echo_tts_f16",display_name:"Echo-TTS F16 GGUF",format:"gguf",precision:"f16",target_directory:"Echo-TTS-GGUF",files:["echo-tts-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"dignome/Echo-TTS",revision:"919681c9906c88963352d5f96e0f732ddd3989ce",gated:!1}}],dependencies:[],ui:{recommended_package:"echo_tts_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/echo_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{dit_weights:{source:"weights:",prefix:"dit_weights"},pca:{source:"weights:",prefix:"pca"},codec_weights:{source:"weights:",prefix:"ae"}}}]},U5={schema_version:1,family:"f5_tts",display_name:"F5-TTS",description:"Community F5-TTS flow-matching diffusion transformer for zero-shot voice cloning, including Arabic via the Habibi-TTS finetune (SWivid). Text conv conditioner, RoPE DiT, CFM sampler, Vocos vocoder.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline"],languages:["en","ar"],runtime:{tags:["server"]},capabilities:{clone:["speaker_reference"]},options:{request:[{name:"reference_text",type:"string",description:"Transcript matching the reference voice audio; required by F5-TTS zero-shot cloning.",required:!0},{name:"dialect",type:"string",description:"Habibi dialect token: UNK MSA SAU UAE ALG IRQ EGY MAR OMN TUN LEV SDN LBY; default UNK.",required:!1,default:"UNK"},{name:"sway_sampling_coef",type:"float",description:"Sway sampling coefficient for inference timesteps; default -1.0. Advertised bounds are recommended settings, not parser-enforced limits.",required:!1,min:-5,max:5,default:-1},{name:"speed",type:"float",description:"Speech speed multiplier for duration estimation; default 1.0. Generated text chunks shorter than 10 characters use 0.3 instead. Advertised bounds are recommended settings, not parser-enforced limits.",required:!1,min:.5,max:2,default:1},{name:"seed",type:"int",description:"Non-negative noise seed; omitted selects a random seed. Explicit zero is deterministic.",required:!1,min:0},{name:"num_inference_steps",type:"int",description:"CFM Euler steps (NFE); default 32. The parser rejects nonpositive counts.",required:!1,min:1,default:32},{name:"guidance_scale",type:"float",description:"Classifier-free guidance strength; default 2.0. Advertised bounds are recommended settings, not parser-enforced limits.",required:!1,min:0,max:10,default:2},{name:"strip_diacritics",type:"bool",description:"Strip Arabic combining marks (harakat/tanwin/shadda/tatweel) before synthesis; Habibi is trained on undiacritized ASR transcripts and garbles diacritized input. Default true.",required:!1,default:!0}],session:[{name:"lora",type:"path",description:"PEFT DiT LoRA adapter directory or checkpoint file; merged into session-owned weights and graphs. Vocos is unchanged.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"vocos_path",type:"string",description:"Path to the Vocos vocoder checkpoint (vocos.safetensors); required unless placed next to the DiT checkpoint.",required:!1},{name:"dialect",type:"string",description:"Default Habibi dialect token for requests that do not set it; default UNK.",required:!1,default:"UNK"},{name:"frame_budget",type:"int",description:"Total mel frames per CFM pass (ref + generated); larger budgets allow sentence-scale chunks at higher VRAM. Must be in [256, 8192]; omitted uses 2048. Explicit zero is not accepted. On CPU the allocated DiT graph pool caps a pass at 960 frames (10.2 s), so larger values are clamped there; CUDA keeps the full range.",required:!1,min:256,max:8192,default:2048}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"trklou/audio.cpp",revision:"main",gated:!1}},packages:[{id:"habibi_unified",display_name:"Habibi-TTS Unified (Arabic, multi-dialect)",description:"Unified multi-dialect Arabic checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32).",default:!0,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Unified",files:["habibi-unified/habibi-unified-orig.gguf","habibi-unified/vocab.txt"],strip_prefix:"habibi-unified"},{id:"vocos_mel_24khz",display_name:"Vocos mel 24kHz vocoder (GGUF)",description:"Standalone Vocos vocoder GGUF for use with the original safetensors checkpoints.",default:!1,format:"gguf",precision:"orig",target_directory:"vocos-mel-24khz",files:["vocos-mel-24khz/vocos-mel-24khz-orig.gguf"],strip_prefix:"vocos-mel-24khz"},{id:"habibi_alg",display_name:"Habibi-TTS ALG specialized checkpoint (GGUF)",description:"Single-dialect ALG checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger ALG accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/ALG",files:["habibi-alg/habibi-alg-orig.gguf","habibi-alg/vocab.txt"],strip_prefix:"habibi-alg"},{id:"habibi_egy",display_name:"Habibi-TTS EGY specialized checkpoint (GGUF)",description:"Single-dialect EGY checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger EGY accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/EGY",files:["habibi-egy/habibi-egy-orig.gguf","habibi-egy/vocab.txt"],strip_prefix:"habibi-egy"},{id:"habibi_irq",display_name:"Habibi-TTS IRQ specialized checkpoint (GGUF)",description:"Single-dialect IRQ checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger IRQ accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/IRQ",files:["habibi-irq/habibi-irq-orig.gguf","habibi-irq/vocab.txt"],strip_prefix:"habibi-irq"},{id:"habibi_mar",display_name:"Habibi-TTS MAR specialized checkpoint (GGUF)",description:"Single-dialect MAR checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger MAR accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/MAR",files:["habibi-mar/habibi-mar-orig.gguf","habibi-mar/vocab.txt"],strip_prefix:"habibi-mar"},{id:"habibi_msa",display_name:"Habibi-TTS MSA specialized checkpoint (GGUF)",description:"Single-dialect MSA checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger MSA accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/MSA",files:["habibi-msa/habibi-msa-orig.gguf","habibi-msa/vocab.txt"],strip_prefix:"habibi-msa"},{id:"habibi_sau",display_name:"Habibi-TTS SAU specialized checkpoint (GGUF)",description:"Single-dialect SAU checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger SAU accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/SAU",files:["habibi-sau/habibi-sau-orig.gguf","habibi-sau/vocab.txt"],strip_prefix:"habibi-sau"},{id:"habibi_uae",display_name:"Habibi-TTS UAE specialized checkpoint (GGUF)",description:"Single-dialect UAE checkpoint from SWivid/Habibi-TTS, converted to GGUF (DiT transformer + Vocos vocoder namespaces, f32). Stronger UAE accent than the unified model.",default:!1,format:"gguf",precision:"orig",target_directory:"Habibi-TTS/Specialized/UAE",files:["habibi-uae/habibi-uae-orig.gguf","habibi-uae/vocab.txt"],strip_prefix:"habibi-uae"}],dependencies:[],ui:{recommended_package:"habibi_unified",tags:["TTS","Clone"],docs:["docs/models/f5_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{vocab:"model:vocab.txt"},tensors:{transformer:{source:"weights:",prefix:"transformer"}},optional_tensors:{vocos_vocoder:{source:"weights:",prefix:"vocos"}}},{format:"safetensors",roots:{model:"."},files:{vocab:"model:vocab.txt"},tensors:{transformer:{source:"model:model_200000.safetensors",prefix:"ema_model.transformer"}}}]},B5={schema_version:1,family:"firered_audio",display_name:"FireRedAudio",description:"FireRedAudio native GGUF package for generation paths backed by a Qwen3.5 hybrid backbone, FireRed RedAE conditioning, RedPatchEncoder, RedDiT latent flow, and RedAE waveform decoding.",category:"tts",status:"experimental",tasks:["asr","tts","clone","design","edit"],modes:["offline"],languages:["zh","en"],runtime:{tags:["gguf"]},dependencies:[],capabilities:{tts:["speaker_reference","style_control"],clone:["speaker_reference"],design:["voice_design"],edit:["prompt_editing"]},options:{request:[{name:"template_name",type:"enum",description:"Defaults to voice_design for design, acoustic_edit for generation with input audio, tts_clone for other generation, and asr for ASR.",required:!1,values:["tts_clone","voice_design","semantic_edit","acoustic_edit","asr","understand"]},{name:"reference_text",type:"string",description:"Transcript for the prompt audio used by tts_clone.",required:!1},{name:"instruct",type:"string",description:"Voice/delivery conditioning for generation. ASR/understanding uses the text input as its task prompt, not this option.",required:!1},{name:"language",type:"string",description:"FireRedAudio generation language tag.",required:!1,default:"zh"},{name:"num_inference_steps",type:"int",description:"FireRedAudio DiT flow steps per generated latent patch.",required:!1,min:1,default:10},{name:"guidance_scale",type:"float",description:"FireRedAudio DiT classifier-free guidance scale. Must be > 0.",required:!1,min:0,default:2},{name:"max_audio_steps",type:"int",description:"Maximum generated RedAE latent patches.",required:!1,min:1,default:750},{name:"min_audio_steps",type:"int",description:"Minimum generated RedAE latent patches before eosp can stop generation.",required:!1,min:0,default:6},{name:"max_text_tokens",type:"int",description:"Maximum text-mode tokens before audio mode.",required:!1,min:1,default:512},{name:"max_tokens",type:"int",description:"Output token budget; defaults to 300, or 1024 for understand with enable_thinking=true.",required:!1,min:1},{name:"enable_thinking",type:"bool",description:"Leave the understanding think block open for chain-of-thought style answers.",required:!1,default:!1},{name:"top_k",type:"int",description:"Text sampling top-k for understanding.",required:!1,min:0,default:20},{name:"top_p",type:"float",description:"Text sampling top-p for understanding.",required:!1,min:0,max:1,default:.8},{name:"temperature",type:"float",description:"Text sampling temperature for understanding. Understanding-mode sampling requires a positive value; zero does not select greedy decoding.",required:!1,min:0,default:.7},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed in [0, 4294967295]; default 1234.",required:!1,min:0,max:4294967295,default:1234}],session:[{name:"weight_type",type:"enum",description:"FireRedAudio weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"graph_arena_mb",type:"int",description:"Main runtime graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse.",required:!1,min:0,default:2},{name:"mem_saver",type:"bool",description:"Release cached runtime graphs after each request to reduce peak VRAM; default false.",required:!1,default:!1}],load:[]},packages:[{id:"firered_audio_orig",display_name:"FireRedAudio Orig GGUF",format:"gguf",precision:"orig",target_directory:"FireRedAudio-GGUF",files:["FireRedAudio-GGUF/firered-audio-orig.gguf"],strip_prefix:"FireRedAudio-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"firered_audio_q8_0",display_name:"FireRedAudio Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"FireRedAudio-GGUF",files:["FireRedAudio-GGUF/firered-audio-q8_0.gguf"],strip_prefix:"FireRedAudio-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}}],ui:{recommended_package:"firered_audio_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/models/firered_audio.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",processor_config:"model:processor_config.json"},tensors:{model_weights:{source:"weights:",prefix:"model"},redae_decoder_weights:{source:"weights:",prefix:"redae_decoder"}}}]},R5={schema_version:1,family:"firered_vad",display_name:"FireRed VAD",description:"DFSMN speech activity detection with offline and causal Stream-VAD checkpoints.",category:"audio_tools",status:"experimental",tasks:["vad"],modes:["offline","streaming"],languages:["language_agnostic"],capabilities:{vad:["speech_segments"]},runtime:{tags:["gguf"]},options:{request:[{name:"threshold",type:"float",description:"Speech probability threshold; defaults to 0.4 for VAD and 0.5 for Stream-VAD.",required:!1,min:0,max:1},{name:"smooth_window_ms",type:"int",description:"Trailing probability smoothing window in milliseconds, rounded to the nearest 10 ms. Validation occurs after conversion to 10-ms frames; metadata bounds describe intended settings.",required:!1,default:50,min:10},{name:"min_speech_duration_ms",type:"int",description:"Speech confirmation duration, rounded to the nearest 10 ms; defaults to 200 ms for VAD and 80 ms for Stream-VAD. Validation occurs after conversion to 10-ms frames; metadata bounds describe intended settings.",required:!1,min:10},{name:"max_speech_duration_sec",type:"float",description:"Maximum speech duration in seconds, rounded to the nearest 10 ms. Validation occurs after conversion to 10-ms frames; metadata bounds describe intended settings.",required:!1,default:20,min:.02},{name:"min_silence_duration_ms",type:"int",description:"Silence confirmation duration in milliseconds, rounded to the nearest 10 ms. Validation occurs after conversion to 10-ms frames; metadata bounds describe intended settings.",required:!1,default:200,min:0},{name:"merge_silence_duration_ms",type:"int",description:"Merge shorter internal silence gaps in offline VAD; milliseconds rounded to the nearest 10 ms.",required:!1,default:0,min:0},{name:"speech_pad_ms",type:"int",description:"Extend offline VAD segments on each side; milliseconds rounded to the nearest 10 ms.",required:!1,default:0,min:0},{name:"speech_start_pad_ms",type:"int",description:"Stream-VAD start padding in milliseconds, rounded to the nearest 10 ms and at least the smoothing window.",required:!1,default:50,min:0},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum network duration per offline chunk in seconds, rounded to the nearest 10 ms; each chunk resets network history, matching upstream.",required:!1,default:300,min:.01}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"firered_vad_f32",display_name:"FireRed VAD GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"FireRedVAD-GGUF",files:["FireRedVAD-GGUF/firered-vad-f32.gguf"],strip_prefix:"FireRedVAD-GGUF"},{id:"firered_stream_vad_f32",display_name:"FireRed Stream-VAD GGUF F32",format:"gguf",precision:"f32",target_directory:"FireRedVAD-GGUF",files:["FireRedVAD-GGUF/firered-stream-vad-f32.gguf"],strip_prefix:"FireRedVAD-GGUF"}],dependencies:[],ui:{tags:["VAD","GGUF"],docs:["docs/models/firered_vad.md"],recommended_package:"firered_vad_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},j5={schema_version:1,family:"fireredtts3",display_name:"FireRedTTS3",description:"FireRedTTS3 family for Base zero-shot voice cloning and Instruct instruction-conditioned TTS, voice design, semantic edit, and acoustic edit with Qwen3 autoregressive hidden-state generation, FireRed DiT latent patch flow, and RedAE waveform decoding.",category:"tts",status:"experimental",tasks:["tts","clone","design"],modes:["offline"],languages:["Chinese","English","Cantonese","Japanese","Korean","Spanish","French","Russian","Arabic","Turkish","Indonesian","Portuguese","Italian","Dutch","Vietnamese","German","Ukrainian","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","ZH_Anhui","ZH_Fujian","ZH_Gansu","ZH_Guizhou","ZH_Hebei","ZH_Henan","ZH_Hubei","ZH_Hunan","ZH_Jiangxi","ZH_Liaoning","ZH_Minnan","ZH_Ningxia","ZH_Shaanxi","ZH_Shandong","ZH_Shanghai","ZH_Shanxi","ZH_Sichuan","ZH_Tianjin","ZH_Wenzhou","ZH_Wu","ZH_Yunnan"],runtime:{tags:["gguf"]},dependencies:[],capabilities:{tts:["speaker_reference","style_control"],clone:["speaker_reference","style_control"],design:["voice_design"]},options:{request:[{name:"template_name",type:"enum",description:"Instruct template; defaults to acoustic_edit with input audio, otherwise instruct_tts.",required:!1,values:["instruct_tts","voice_design","semantic_edit","acoustic_edit"]},{name:"reference_text",type:"string",description:"Transcript for the prompt audio.",required:!1},{name:"instruct",type:"string",description:"FireRedTTS3 instruction for voice design or edit tasks.",required:!1},{name:"language",type:"string",description:"Language tag used by FireRedTTS3.",required:!1,default:"Chinese"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 80 when hanzi, kana and Hangul outnumber other letters and digits (except edits), otherwise 600.",required:!1,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"num_inference_steps",type:"int",description:"FireRed DiT flow steps per generated latent patch.",required:!1,min:1,default:10},{name:"guidance_scale",type:"float",description:"Positive guidance scale; defaults to 1.2 for voice-design/semantic-edit/acoustic-edit templates and 2 otherwise.",required:!1,min:0},{name:"stop_threshold",type:"float",description:"Stop probability threshold for AR patch generation.",required:!1,min:0,max:1,default:.5},{name:"seed",type:"int",description:"Unsigned 32-bit sampling seed in [0, 4294967295]; defaults to 2 for voice design and 1234 otherwise.",required:!1,min:0,max:4294967295}],session:[{name:"weight_type",type:"enum",description:"FireRedTTS3 weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"graph_arena_mb",type:"int",description:"Main runtime graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"helper_graph_arena_mb",type:"int",description:"Helper graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 512.",required:!1,min:1,default:512},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; set 0 to disable reuse. Applies only to Base; Instruct does not use this cache.",required:!1,min:0,default:4},{name:"mem_saver",type:"bool",description:"Release cached runtime graphs after each request to reduce peak VRAM; default false.",required:!1,default:!1}],load:[]},packages:[{id:"fireredtts3_instruct_orig",display_name:"FireRedTTS3 Instruct Orig GGUF",format:"gguf",precision:"orig",target_directory:"FireRedTTS3-Instruct-GGUF",files:["FireRedTTS3-Instruct-GGUF/fireredtts3-instruct-orig.gguf"],strip_prefix:"FireRedTTS3-Instruct-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"fireredtts3_instruct_q8_0",display_name:"FireRedTTS3 Instruct Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"FireRedTTS3-Instruct-GGUF",files:["FireRedTTS3-Instruct-GGUF/fireredtts3-instruct-q8_0.gguf"],strip_prefix:"FireRedTTS3-Instruct-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"fireredtts3_base_orig",display_name:"FireRedTTS3 Base Orig GGUF",format:"gguf",precision:"orig",target_directory:"FireRedTTS3-Base-GGUF",files:["FireRedTTS3-Base-GGUF/fireredtts3-base-orig.gguf"],strip_prefix:"FireRedTTS3-Base-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"fireredtts3_base_q8_0",display_name:"FireRedTTS3 Base Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"FireRedTTS3-Base-GGUF",files:["FireRedTTS3-Base-GGUF/fireredtts3-base-q8_0.gguf"],strip_prefix:"FireRedTTS3-Base-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}}],ui:{recommended_package:"fireredtts3_instruct_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/models/fireredtts3.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{redae_config:"model:redae/config.json",tokenizer_json:"model:text_tokenizer/tokenizer.json",tokenizer_config:"model:text_tokenizer/tokenizer_config.json",vocab_json:"model:text_tokenizer/vocab.json"},optional_files:{base_config:"model:fireredtts3_base/config.json",instruct_config:"model:fireredtts3_instruct/config.json"},tensors:{redae_weights:{source:"weights:",prefix:"redae"}},optional_tensors:{base_weights:{source:"weights:",prefix:"base"},campplus_weights:{source:"weights:",prefix:"campplus"},instruct_weights:{source:"weights:",prefix:"instruct"}}}]},P5={family:"fish_audio",display_name:"Fish Audio S2 Pro",description:"Fish Audio S2 Pro text-to-speech model for expressive speech across 80+ languages, with automatic language handling, inline prosody/emotion controls, and rapid voice cloning from short reference samples.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["80+ languages"],capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"reference_text",type:"string",description:"Reference transcript; required with inline reference audio.",required:!1},{name:"multi_reference_cond",type:"string",description:'Fish Audio ordered JSON array of reference conditioning pairs for one generated speaker: [{"audio":"ref1.wav","text":"Transcript one."},{"audio":"ref2.wav","text":"Transcript two."}]. This is not a multi-speaker dialogue routing option.',required:!1},{name:"max_tokens",type:"int",description:"Maximum Fish Audio semantic tokens to generate; default 1024. Zero selects the default token budget.",required:!1,min:0,default:1024},{name:"text_chunk_size",type:"int",description:"Maximum characters per generated text chunk; default 200.",required:!1,min:1,default:200},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode; default word_budget.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"},{name:"top_p",type:"float",description:"Top-p sampling value in (0, 1]; default 0.8.",required:!1,min:0,max:1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling value; default 30.",required:!1,min:1,default:30},{name:"temperature",type:"float",description:"Semantic-token sampling temperature in (0, 2); default 0.8.",required:!1,min:0,max:2,default:.8},{name:"seed",type:"int",description:"Sampling seed for reproducible output; omitted uses a random seed.",required:!1,min:0}],session:[{name:"lora",type:"path",description:"Prepared Fish Speech adapter checkpoint; merged into slow/fast decoder and embedding weights at session creation. Codec weights are unchanged.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"mem_saver",type:"bool",description:"Release cached AR runtime graphs after each request; default false.",required:!1,default:!1},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; default 1.",required:!1,min:0,default:1},{name:"weight_type",type:"enum",description:"AR matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"codec_weight_type",type:"enum",description:"Codec conv/matmul weight storage type; default native.",preset:"weight_type_codec_q8",required:!1,default:"native"},{name:"codec_encoder_bf16_compute",type:"bool",description:"Use BF16 reference-encoder arithmetic on CUDA with F16/BF16 codec weights; default false. Decoding is unchanged.",required:!1,default:!1},{name:"ar_graph_arena_mb",type:"int",description:"AR runtime graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"ar_weight_context_mb",type:"int",description:"AR weight context size in MiB; default 32.",required:!1,min:1,default:32},{name:"codec_graph_arena_mb",type:"int",description:"Codec encode/decode graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"codec_weight_context_mb",type:"int",description:"Codec weight context size in MiB; default 32.",required:!1,min:1,default:32}],load:[]},ui:{recommended_package:"fish_audio_s2_pro_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"fish_audio_s2_pro_q8_0",display_name:"Fish Audio S2 Pro Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Fish-Audio-S2-Pro-GGUF",files:["Fish-Audio-S2-Pro-GGUF/fish-audio-s2-pro-q8_0.gguf"],strip_prefix:"Fish-Audio-S2-Pro-GGUF"},{id:"fish_audio_s2_pro_bf16",display_name:"Fish Audio S2 Pro BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Fish-Audio-S2-Pro-GGUF",files:["Fish-Audio-S2-Pro-GGUF/fish-audio-s2-pro-bf16.gguf"],strip_prefix:"Fish-Audio-S2-Pro-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:"model:model_audio_cpp.safetensors.index.json",codec_weights:"model:codec.safetensors"}}]},N5={family:"fish_drama3",display_name:"Fish Audio Drama 3",description:"Fish Audio Drama 3 native MoE speech generation, voice cloning, and continuation.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline","streaming"],languages:["auto"],capabilities:{tts:["long_form"],clone:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"encode_reference_only",type:"bool",description:"Prepare reference VQ codes without generating speech. Use the task API to receive drama3_reference_v1 acoustic-token artifacts.",required:!1,default:!1},{name:"reference_text",type:"string",description:"Transcript of inline reference audio.",required:!1},{name:"multi_reference_cond",type:"string",description:"Ordered references as JSON: [{text, audio_path or vq_codes}]. Speaker tags 0..15 select voices.",required:!1},{name:"references",type:"string",description:"Alias of multi_reference_cond.",required:!1},{name:"previous_takes",type:"string",description:"Continuation/edit history as a JSON array of {text, vq_codes or audio_path}; a string generates that earlier take first.",required:!1},{name:"previous_takes_file",type:"string",description:"JSON history file containing a take object or an ordered array of earlier takes. Avoids the Windows command-line length limit for VQ grids.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated acoustic frames per text chunk (about 21.5 frames/second).",required:!1,min:1,default:1024},{name:"text_chunk_size",type:"int",description:"Maximum characters per long-form chunk.",required:!1,min:1,default:128},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,preset:"text_chunk_mode_full",default:"tag_aware"},{name:"temperature",type:"float",description:"Main and residual sampling temperature. Zero makes the initial draws greedy; semantic repeat redraws retain the fixed Drama 3 RAS settings.",required:!1,min:0,default:1},{name:"top_p",type:"float",description:"Inclusive nucleus cutoff before top-k filtering, matching Drama 3.",required:!1,min:0,max:1,default:.9},{name:"top_k",type:"int",description:"Top-k candidate count. The default 4097 keeps every candidate (no cap), as Fish's Drama 3 Space does; 30 can stall in long silences.",required:!1,min:1,default:4097},{name:"seed",type:"int",description:"Reproducible native sampling seed.",required:!1,min:0}],session:[{name:"perf_mode",type:"enum",description:"AR decode preset. cuda_perf enables fused MoE and 256-row attention buckets. F16 KV storage, device sampling, codec batching/overlap and prefill-cache defaults remain unchanged in both modes. Explicit session options override the preset.",required:!1,values:["off","cuda_perf"],default:"off"},{name:"fused_moe",type:"bool",description:"Fuse cached backbone MoE routing and SwiGLU activations. Fused arithmetic may change sampled output; prompt prefill is unchanged.",required:!1,default:!1},{name:"kv_cache_alignment",type:"int",description:"Cached decode attention prefix bucket size. Values above 1 retain all history while skipping unused KV capacity; execution shapes may change numerical results.",required:!1,min:1,default:1},{name:"kv_cache_type",type:"enum",description:"Storage precision for full-attention backbone KV caches.",required:!1,values:["f32","f16"],default:"f16"},{name:"backbone_prefill_cache_mb",type:"int",description:"Bounded cache of backbone prefill graphs, in MiB. Reuses exact shapes and their CUDA captures. One active graph is retained even if larger than this budget. Zero retains only the active graph.",required:!1,min:0,max:4096,default:256},{name:"tower_prefill_cache_mb",type:"int",description:"Bounded cache of audio-tower prefill graphs, in MiB. Reuses exact shapes and their CUDA captures. Zero disables it.",required:!1,min:0,max:4096,default:256},{name:"codec_batch_frames",type:"int",description:"Streaming codec batch ceiling. Starts at one frame and grows to this size; partial final batches are flushed. Offline decoding is unchanged.",required:!1,min:1,default:4},{name:"codec_async_decode",type:"bool",description:"Overlap streaming codec decoding with AR generation on the dedicated codec backend. Uses a bounded queue and waits for all audio before completing the request.",required:!1,default:!0},{name:"device_sampling",type:"bool",description:"Enable tower decode and codebook sampling in one cached backend graph. Uses F32 probabilities; sampled outputs may differ from the host sampler.",required:!1,default:!0},{name:"profile_first_audio",type:"bool",description:"Emit first-audio stage timings to stderr for performance diagnosis. Disabled by default.",required:!1,default:!1},{name:"context_length",type:"int",description:"Cache capacity for prompt plus generated frames; includes references and history.",required:!1,min:1,default:2048},{name:"cpu_expert_layers",type:"int",description:"Number of the 40 expert banks kept and evaluated on CPU; use 4 for a 24 GB profile or 24 for a 16 GB profile. Dense layers and the tower use the selected backend.",required:!1,min:0,max:40,default:4},{name:"disk_experts",type:"bool",description:"Read routed expert weights from GGUF on demand into a bounded cache instead of keeping full expert banks resident. Trades speed for memory; default false.",required:!1,default:!1},{name:"pin_experts",type:"bool",description:"Keep full expert banks in pinned host RAM for direct cache-miss uploads. Requires disk_experts and pinned host-buffer support; default false.",required:!1,default:!1},{name:"expert_cache_size",type:"int",description:"Resident expert slots per layer in disk_experts mode; 8 to 256. Larger caches trade memory for fewer disk reads; ignored in resident mode.",required:!1,min:8,max:256,default:32},{name:"disk_expert_read_threads",type:"int",description:"Host workers for copying selected GGUF experts into staging when disk_experts is enabled and pin_experts is false. Default 1 preserves serial reads; values above 1 use OpenMP or Apple dispatch.",required:!1,min:1,max:64,default:1},{name:"codec_encoder_f32_accumulation",type:"bool",description:"Use F32 accumulation for F16 reference-encoder GEMMs on Vulkan. Try this if voice cloning produces incomplete speech or reaches the token limit. Other backends and codec decoding are unchanged.",required:!1,default:!1},{name:"codec_encoder_bf16_compute",type:"bool",description:"Use BF16 reference-encoder arithmetic on CUDA with F16/BF16 codec weights; default true. Decoding is unchanged.",required:!1,default:!0},{name:"codec_encoder_chunk_samples",type:"int",description:"Reference-encoder convolution chunk size in samples at the codec sample rate. Use 0 for full encoding or a positive multiple of 512; default 0.",required:!1,min:0,default:0},{name:"codec_backend",type:"enum",description:"Run the codec on the selected backend or on CPU.",required:!1,values:["same","cpu"],default:"same"}],load:[]},ui:{recommended_package:"fish_drama3_q4_experts_q8_backbone",tags:["TTS","Clone","GGUF"],docs:["docs/models/fish_drama3.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"Jmica/Drama-3-GGUF",revision:"main",gated:!1}},packages:[{id:"fish_drama3_q4_experts_q8_backbone",display_name:"Drama 3 Q4_K experts / Q8_0 backbone",description:"Mixed quantization with Q4_K routed experts, Q8_0 backbone matrices, and FP16 audio tower/codec.",default:!0,format:"gguf",precision:"q4_k",target_directory:"Drama-3-GGUF",files:["drama-3-backbone-8bit-experts-Q4_K_S.gguf"]},{id:"fish_drama3_q3_experts_q8_backbone",display_name:"Drama 3 Q3_K experts / Q8_0 backbone",description:"Mixed quantization with Q3_K routed experts, Q8_0 backbone matrices, and FP16 audio tower/codec. Experimental delivery quality.",format:"gguf",precision:"q3_k_s",target_directory:"Drama-3-GGUF",files:["drama-3-backbone-8bit-experts-Q3_K_S.gguf"]},{id:"fish_drama3_q2_experts_q8_backbone",display_name:"Drama 3 Q2_K experts / Q8_0 backbone",description:"Mixed quantization with Q2_K routed experts, Q8_0 backbone matrices, and FP16 audio tower/codec. Use the documented CPU offload settings for smaller GPUs.",format:"gguf",precision:"q2_k",target_directory:"Drama-3-GGUF",files:["drama-3-backbone-8bit-experts-Q2_K.gguf"]},{id:"fish_drama3_q4_backbone",display_name:"Drama 3 Q4_K experts / Q4_K backbone",description:"Q4_K routed experts and backbone matrices, Q4_0 text embedding, and FP16 audio tower/codec. Experimental delivery quality.",format:"gguf",precision:"q4_k",target_directory:"Drama-3-GGUF",files:["drama-3-backbone-4bit-experts-Q4_K_S.gguf"]},{id:"fish_drama3_small_iq3_xxs",display_name:"Drama3-small IQ3_XXS",format:"gguf",precision:"iq3_xxs",target_directory:"Drama3-small-GGUF",files:["drama3-small-IQ3_XXS.gguf"],download:{kind:"huggingface_snapshot",repo:"pentacoxian-dev/drama3-small-GGUF",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}}],schema_version:1,dependencies:[]},O5={schema_version:1,family:"fun_asr_nano",display_name:"Fun-ASR-Nano",description:"Offline multilingual speech recognition with the FunAudioLLM Fun-ASR-Nano-2512 model.",category:"asr",status:"wip",tasks:["asr"],modes:["offline"],languages:["auto","zh","en","ja"],capabilities:{},options:{request:[{name:"language",type:"string",description:"Recognition language, or auto to let the model infer it.",required:!1,default:"auto"},{name:"enable_itn",type:"bool",description:"Enable inverse text normalization in the transcription prompt.",required:!1,default:!0},{name:"max_tokens",type:"int",description:"Maximum number of generated transcript tokens.",required:!1,min:1,default:512},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode: auto, fixed, or none.",values:["auto","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Fixed chunk duration in seconds. Must be finite and positive, rounding to at least one input sample.",required:!1,default:30}],session:[{name:"weight_type",type:"enum",description:"Shared model weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"encoder_weight_type",type:"enum",description:"Encoder matmul storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"adaptor_weight_type",type:"enum",description:"Adaptor matmul storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"decoder_weight_type",type:"enum",description:"Decoder matmul storage. Without an explicit override, CUDA promotes shared native/f16/q8_0 storage to bf16; other backends inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:512},{name:"adaptor_graph_arena_mb",type:"int",description:"Adaptor graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:128},{name:"decoder_prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:256},{name:"decoder_decode_graph_arena_mb",type:"int",description:"Decoder cached-step graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:128},{name:"decoder_weight_context_mb",type:"int",description:"Decoder weight metadata context. Size in MiB; must be positive.",required:!1,min:1,default:32}],load:[]},runtime:{tags:["gguf","server","cuda","metal","cpu"]},packages:[{id:"fun_asr_nano_2512_q8_0",display_name:"Fun-ASR-Nano-2512 Q8_0 GGUF",description:"Standalone audio.cpp GGUF built from the pinned official checkpoint; governed by the FunASR Model Open Source License Agreement v1.1.",default:!0,format:"gguf",precision:"q8_0",target_directory:"Fun-ASR-Nano-2512-GGUF",files:["fun-asr-nano-2512-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"FunAudioLLM/Fun-ASR-Nano-2512-GGUF",revision:"ce72677f84900f0dc57f498ace253bfb3c9155b6",gated:!1}},{id:"fun_asr_nano_2512_f16",display_name:"Fun-ASR-Nano-2512 F16 GGUF",description:"Standalone audio.cpp GGUF built from the pinned official checkpoint; governed by the FunASR Model Open Source License Agreement v1.1.",format:"gguf",precision:"f16",target_directory:"Fun-ASR-Nano-2512-GGUF",files:["fun-asr-nano-2512-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"FunAudioLLM/Fun-ASR-Nano-2512-GGUF",revision:"ce72677f84900f0dc57f498ace253bfb3c9155b6",gated:!1}},{id:"fun_asr_nano_2512_safetensors",display_name:"Fun-ASR-Nano-2512 HF Safetensors",description:"Official checkpoint governed by the FunASR Model Open Source License Agreement v1.1.",format:"safetensors",precision:"native",target_directory:"Fun-ASR-Nano-2512-hf",files:["chat_template.jinja","config.json","generation_config.json","model.safetensors","processor_config.json","tokenizer.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"FunAudioLLM/Fun-ASR-Nano-2512-hf",revision:"854d88f94205cd17d2afdb24332130d86fbe654a",gated:!1}}],dependencies:[],ui:{recommended_package:"fun_asr_nano_2512_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"],summary:"Offline Fun-ASR-Nano transcription from official safetensors or audio.cpp GGUF."},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},optional_files:{chat_template_jinja:"model:chat_template.jinja",tokenizer_config:"model:tokenizer_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},optional_files:{chat_template_jinja:"model:chat_template.jinja",tokenizer_config:"model:tokenizer_config.json"},tensors:{weights:"model:model.safetensors"}}]},I5={schema_version:1,family:"gigaam_asr",display_name:"GigaAM ASR",description:"GigaAM v3 and Multilingual Conformer speech recognition with CTC or RNN-T decoding.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["ru","kk","ky","uz","en"],capabilities:{asr:["word_timestamps","vad_chunking"]},dependencies:[],options:{request:[{name:"return_timestamps",type:"bool",description:"Return word timestamps derived from decoder token emission frames.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","quiet_energy","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio chunk in seconds.",required:!1,min:.02,max:25,default:25}],session:[{name:"vad_model_path",type:"path",description:"Offline VAD model used only with audio_chunk_mode=vad.",required:!1,default:""},{name:"weight_type",type:"enum",description:"Weight storage type.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"gigaam_v3_ctc_f16",tags:["ASR","GGUF"],docs:["docs/models/gigaam_asr.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"gigaam_v3_ctc_f16",display_name:"GigaAM v3 CTC F16 GGUF",default:!0,format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-v3-ctc-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_v3_rnnt_f16",display_name:"GigaAM v3 RNN-T F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-v3-rnnt-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_v3_e2e_ctc_f16",display_name:"GigaAM v3 E2E CTC F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-v3-e2e-ctc-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_v3_e2e_rnnt_f16",display_name:"GigaAM v3 E2E RNN-T F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-v3-e2e-rnnt-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_multilingual_ctc_f32",display_name:"GigaAM Multilingual CTC F32 GGUF",format:"gguf",precision:"f32",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-multilingual-ctc-f32.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_multilingual_ctc_f16",display_name:"GigaAM Multilingual CTC F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-multilingual-ctc-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_multilingual_large_ctc_f32",display_name:"GigaAM Multilingual Large CTC F32 GGUF",format:"gguf",precision:"f32",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-multilingual-large-ctc-f32.gguf"],strip_prefix:"GigaAM-ASR-GGUF"},{id:"gigaam_multilingual_large_ctc_f16",display_name:"GigaAM Multilingual Large CTC F16 GGUF",format:"gguf",precision:"f16",target_directory:"GigaAM-ASR-GGUF",files:["GigaAM-ASR-GGUF/gigaam-multilingual-large-ctc-f16.gguf"],strip_prefix:"GigaAM-ASR-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}}]},L5={schema_version:1,family:"glm_tts",display_name:"GLM-TTS",description:"Community Chinese-English zero-shot speech synthesis and voice cloning with native Llama, Whisper-VQ, Flow/DiT, CAMPPlus, and HiFT execution.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline"],languages:["zh","en"],capabilities:{clone:["speaker_reference"]},options:{request:[{name:"reference_text",type:"string",description:"Transcript matching the reference voice audio; required by GLM-TTS zero-shot synthesis.",required:!0},{name:"max_tokens",type:"int",description:"Maximum generated speech tokens; otherwise the official 2x-to-20x text-token bounds are used. Nonpositive values select the automatic text-derived budget.",required:!1,default:0},{name:"temperature",type:"float",description:"Speech-token temperature; official default 1.0. Nonpositive values select greedy decoding.",required:!1,default:1},{name:"top_k",type:"int",description:"Speech-token top-k; official default 25. Nonpositive values disable top-k filtering.",required:!1,default:25},{name:"top_p",type:"float",description:"Speech-token nucleus threshold; official default 0.8. Out-of-range values are not rejected by the parser.",required:!1,default:.8},{name:"seed",type:"int",description:"Speech-token, Flow-noise, and HiFT seed.",required:!1,min:0,default:0},{name:"num_inference_steps",type:"int",description:"Flow Euler steps; defaults to model config, usually official default 10.",required:!1,min:1},{name:"flow_guidance_scale",type:"float",description:"Flow classifier-free guidance rate; defaults to model config, usually official default 0.7. Negative values are accepted and enter the CFG formula.",required:!1},{name:"flow_noise_file",type:"path",description:"Optional raw float32 initial Flow noise for parity tests.",required:!1},{name:"hift_source_random_file",type:"path",description:"Optional raw float32 HiFT phase-uniform and Gaussian values for parity tests.",required:!1},{name:"hift_prior_noise_count",type:"int",description:"Torch RNG value offset used before HiFT source generation; default 0.",required:!1,min:0,default:0}],session:[{name:"weight_type",type:"enum",description:"Requested component weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"mem_saver",type:"bool",description:"Release reference-only encoders after caching the voice while keeping the generation path warm; default false.",required:!1,default:!1},{name:"aggressive_mem_saver",type:"bool",description:"Also release Llama, Flow, and HiFT after every stage. Minimizes VRAM but reloads the generation path on every request; default false.",required:!1,default:!1},{name:"reference_cache_slots",type:"int",description:"Prepared reference-audio cache slots; default 1. Use 0 to disable.",required:!1,min:0,default:1},{name:"llama_weight_context_mb",type:"int",description:"Llama weight metadata context in MiB; default 8192.",required:!1,min:1,default:8192},{name:"constant_context_mb",type:"int",description:"Llama constant tensor context in MiB; default 256.",required:!1,min:1,default:256}],load:[]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{llama_config:"model:llm/config.json",llama_generation_config:"model:llm/generation_config.json",speech_tokenizer_config:"model:speech_tokenizer/config.json",speech_tokenizer_preprocessor:"model:speech_tokenizer/preprocessor_config.json",tokenizer_config:"model:vq32k-phoneme-tokenizer/tokenizer_config.json",tokenizer_vocab:"model:vq32k-phoneme-tokenizer/tokenizer_vocab.json",tokenizer_merges:"model:vq32k-phoneme-tokenizer/tokenizer_merges.txt",flow_config:"model:flow/config.yaml",audio_cpp_config:"model:audio_cpp_config.json"},tensors:{llama_weights:{source:"weights:",prefix:"llama_weights"},speech_tokenizer_weights:{source:"weights:",prefix:"speech_tokenizer_weights"},flow_weights:{source:"weights:",prefix:"flow_weights"},hift_weights:{source:"weights:",prefix:"hift_weights"},campplus_weights:{source:"weights:",prefix:"campplus_weights"}}},{format:"safetensors",roots:{model:"."},files:{llama_config:"model:llm/config.json",llama_generation_config:"model:llm/generation_config.json",speech_tokenizer_config:"model:speech_tokenizer/config.json",speech_tokenizer_preprocessor:"model:speech_tokenizer/preprocessor_config.json",tokenizer_config:"model:vq32k-phoneme-tokenizer/tokenizer_config.json",tokenizer_vocab:"model:vq32k-phoneme-tokenizer/tokenizer_vocab.json",tokenizer_merges:"model:vq32k-phoneme-tokenizer/tokenizer_merges.txt",flow_config:"model:flow/config.yaml",audio_cpp_config:"model:audio_cpp_config.json"},tensors:{llama_weights:"model:llm/model.safetensors.index.json",speech_tokenizer_weights:"model:speech_tokenizer/model.safetensors",flow_weights:"model:flow/model.safetensors",hift_weights:"model:hift/model.safetensors",campplus_weights:"model:frontend/campplus.safetensors"}}],packages:[{id:"glm_tts_q8_0",display_name:"GLM-TTS mixed Q8_0/F16 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"GLM-TTS-Q8",files:["Text to audio (TTS)/GLM-TTS_Q8.gguf"],download:{kind:"huggingface_snapshot",repo:"mirek190/audio.cpp"}}],dependencies:[],ui:{recommended_package:"glm_tts_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/glm_tts.md","docs/reports/glm_tts_validation.md","docs/gguf.md"]}},D5={schema_version:1,family:"gradium_phonon",display_name:"Gradium Phonon",description:"Gradium's Phonon text-to-speech: a small flow-matching language model with a Mimi decoder, a descendant of Kyutai's pocket-tts, for real-time local synthesis on CPU and GPU with prepared voices.",category:"tts",status:"experimental",tasks:["tts"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["built_in_voices","long_form"]},options:{request:[{name:"frames_after_eos",type:"int",description:"Frames kept after EOS, counting the EOS frame; -1 keeps 4 for texts of up to four words and 2 otherwise, as the reference does.",required:!1,min:-1,default:-1},{name:"max_frames",type:"int",description:"Maximum generated audio frames; zero estimates the cap from text length. Captured during session preparation.",required:!1,min:0,default:0},{name:"text_chunk_tokens",type:"int",description:"Tokenizer tokens per text chunk; must be positive, default 50. Set during preparation and overridable per request.",required:!1,min:1,default:50},{name:"temperature",type:"float",description:"Positive flow noise temperature. Captured during session preparation.",required:!1,default:.3},{name:"seed",type:"int",description:"Noise seed; omitted chooses a random seed. Captured during session preparation.",required:!1,min:0,max:4294967295},{name:"noise_clamp",type:"float",description:"Noise clamp; a negative value disables clamping. Captured during session preparation.",required:!1,default:-1},{name:"eos_threshold",type:"float",description:"EOS detection threshold on the EOS logit. Captured during session preparation.",required:!1,default:4},{name:"noise_file",type:"path",description:"Precomputed noise schedule, raw float32 [frames, 32], used as given. Captured during session preparation.",required:!1},{name:"voice_embedding_file",type:"path",description:"Voice file: a speaker_wavs latent file such as those of gradium/phonon-voices, or an exported voice state. Captured during session preparation.",required:!1},{name:"text_chunk_size",type:"int",description:"Optional per-request character chunk size; otherwise use sentence/token budgeting.",required:!1},{name:"export_voice_state_file",type:"path",description:"Export the prepared voice state during session preparation.",required:!1}],session:[{name:"voice_state_cache_slots",type:"int",description:"Cached prepared voice states; zero disables reuse.",required:!1,min:0,default:4},{name:"offline_graph_capacity_mode",type:"enum",description:"Offline graph capacity policy; CPU/Metal default tiered, other backends double.",required:!1,values:["fixed","double","tiered","grow"]},{name:"prompt_graph_capacity",type:"int",description:"Optional reserved prompt capacity.",required:!1,min:1},{name:"generation_graph_capacity",type:"int",description:"Optional reserved generation capacity.",required:!1,min:1},{name:"weight_type",type:"enum",description:"Shared matmul weight storage; component matmul settings inherit it. Convolution storage remains independently native unless overridden.",required:!1,preset:"weight_type_full"},{name:"matmul_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage.",required:!1,preset:"weight_type_conv",default:"native"},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"flow_weight_context_mb",type:"int",description:"Flow weight context in MiB; inherits gradium_phonon.weight_context_mb when omitted.",required:!1,min:1},{name:"mimi_decoder_weight_context_mb",type:"int",description:"Mimi decoder weight context in MiB; inherits gradium_phonon.weight_context_mb when omitted.",required:!1,min:1},{name:"flow_weights_view_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"flow_step_graph_arena_mb",type:"int",description:"Flow-step host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:256},{name:"mimi_conv_graph_arena_mb",type:"int",description:"Mimi convolution host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:32},{name:"mimi_transformer_graph_arena_mb",type:"int",description:"Mimi transformer host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:96},{name:"mimi_tail_graph_arena_mb",type:"int",description:"Mimi tail host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:512},{name:"mimi_full_chunk_frames",type:"int",description:"Full-sequence decoder chunk frames.",required:!1,min:1,default:90},{name:"mimi_stage2_chunk_frames",type:"int",description:"Second-stage decoder chunk frames.",required:!1,min:1,default:900},{name:"use_full_mimi",type:"bool",description:"Use full-sequence Mimi decoding.",required:!1,default:!0}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"gradium/phonon-31m-en-audiocpp",revision:"main",gated:!1}},packages:[{id:"gradium_phonon_31m_en_q8_0",display_name:"Phonon 31m English Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"phonon-31m-en",files:["phonon-31m-en-q8_0.gguf","default-voice.safetensors"]},{id:"gradium_phonon_31m_en_safetensors",display_name:"Phonon 31m English Safetensors",format:"safetensors",precision:"native",target_directory:"phonon-31m-en-safetensors",files:["config.json","tokenizer.model","model.safetensors","default-voice.safetensors"],download:{kind:"huggingface_snapshot",repo:"gradium/phonon-31m-en",revision:"52433c46975bfa13144c56204c9f4ee1c5b148aa",gated:!1}}],dependencies:[],ui:{recommended_package:"gradium_phonon_31m_en_q8_0",default_voice:"default",builtin_voices:["default"],tags:["TTS","GGUF"],docs:["docs/models/gradium_phonon.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"model:model.safetensors"}}]},V5={family:"granite5asr",display_name:"Granite Speech 5.0 470M TurboCTC",description:"IBM Granite Speech 5.0 TurboCTC 470M parameter Conformer CTC model. The current checkpoint transcribes English, French, German, Spanish, Portuguese, Italian, and Japanese with punctuation and capitalization. An older English-only checkpoint still loads.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["en","fr","de","es","pt","it","ja"],capabilities:{asr:["vad_chunking","partial_results","word_timestamps"]},options:{request:[{name:"language",type:"string",description:"Accepted and ignored. Granite has no language input. A result is labelled en unless decoding emits a trained language token such as <|fr|>.",required:!1,default:"en"},{name:"audio_chunk_mode",type:"enum",description:"Offline chunk mode: auto, fixed, vad, or none. VAD requires a regular model file; otherwise fixed chunks are used.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Positive maximum audio chunk duration for fixed and VAD chunking.",required:!1,min:.001,default:30}],session:[{name:"weight_type",type:"enum",description:"Shared model weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MB. Positive MiB allocation; invalid/nonpositive values resolve to 1024 MiB.",required:!1,min:1,default:1024},{name:"vad_model_path",type:"string",description:"Path to a Silero VAD model file, not a directory; VAD runs only when this path is a regular file.",required:!1}],load:[]},runtime:{tags:["gguf","server","stream","cuda","metal","cpu"]},ui:{recommended_package:"granite5asr_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/models/granite5asr.md","docs/asr.md","docs/gguf.md"],summary:"IBM Granite Speech 5.0 470M TurboCTC multilingual transcription."},package_defaults:{download:{kind:"huggingface_snapshot",repo:"ibm-granite/granite-speech-5.0-470m-turboctc",revision:"main",gated:!1}},packages:[{id:"granite5asr_q8_0",display_name:"Granite Speech 5.0 470M TurboCTC Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Granite-Speech-5.0-470M-TurboCTC-GGUF",files:["Granite-Speech-5.0-470M-TurboCTC-GGUF/granite-speech-5.0-470m-turboctc-q8_0.gguf"],strip_prefix:"Granite-Speech-5.0-470M-TurboCTC-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},{id:"granite5asr_safetensors",display_name:"Granite Speech 5.0 470M TurboCTC Native Safetensors",format:"safetensors",precision:"bfloat16",target_directory:"granite5asr",files:["config.json","tokenizer.json","model.safetensors"]}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{weights:"model:model.safetensors"}}]},H5={schema_version:1,family:"heartmula",display_name:"HeartMuLa",description:"Open-source music foundation model for generating complete songs from text, lyric prompts, and style tags, with controllable song structure and broad multilingual lyric conditioning.",category:"audio_generation",status:"supported",tasks:["music"],modes:["offline"],languages:["multilingual"],capabilities:{music:["lyrics","style_control"]},options:{request:[{name:"lyrics",type:"string",description:"Lyrics text.",required:!1},{name:"tags",type:"string",description:"Comma-separated music tags.",required:!1},{name:"duration_sec",type:"float",description:"Maximum generated audio duration in seconds; must be > 0 when set; default 120.",required:!1,min:0,default:120},{name:"temperature",type:"float",description:"Audio-token sampling temperature; must be > 0 when set; default 1.0.",required:!1,min:0,default:1},{name:"top_k",type:"int",description:"Audio-token top-k sampling limit; default 50. Must not exceed the active audio vocabulary size.",required:!1,min:1,default:50},{name:"guidance_scale",type:"float",description:"MuLa classifier-free guidance scale; must be > 0 when set; default 1.5.",required:!1,min:0,default:1.5},{name:"codec_duration_sec",type:"float",description:"Codec detokenization chunk duration in seconds; must be > 0 when set; default 29.76.",required:!1,min:0,default:29.76},{name:"num_inference_steps",type:"int",description:"Codec flow solver steps; default 10.",required:!1,min:1,default:10},{name:"codec_guidance_scale",type:"float",description:"Codec classifier-free guidance scale; must be > 0 when set; default 1.25.",required:!1,min:0,default:1.25},{name:"infinite_mode",type:"bool",description:"Generate long outputs by splitting lyrics into bounded HeartMuLa requests.",required:!1,default:!1},{name:"text_chunk_size",type:"int",description:"Maximum characters per text chunk in infinite mode; default 4096.",required:!1,min:1,default:4096},{name:"infinite_chunk_audio_duration_ms",type:"int",description:"Maximum generated audio duration per infinite-mode chunk in milliseconds; default 240000.",required:!1,min:1,default:24e4},{name:"seed",type:"int",description:"Generation seed for reproducible output; default 1234.",required:!1,min:0,default:1234}],session:[{name:"weight_type",type:"enum",description:"MuLa and codec weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"generator_weight_type",type:"enum",description:"MuLa music-token generator weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_full",required:!1},{name:"codec_weight_type",type:"enum",description:"Codec weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_full",required:!1},{name:"generator_weight_context_mb",type:"int",description:"MuLa music-token generator weight descriptor context size in MiB; default 32.",required:!1,min:1,default:32},{name:"codec_weight_context_mb",type:"int",description:"Codec weight descriptor context size in MiB; default 32.",required:!1,min:1,default:32},{name:"generator_constant_context_mb",type:"int",description:"MuLa music-token generator reusable constant context size in MiB; default 256.",required:!1,min:1,default:256},{name:"backbone_prefill_graph_arena_mb",type:"int",description:"MuLa music-token generator backbone prefill graph arena size in MiB; default 1536.",required:!1,min:1,default:1536},{name:"backbone_step_graph_arena_mb",type:"int",description:"MuLa music-token generator backbone cached-step graph arena size in MiB; default 1536.",required:!1,min:1,default:1536},{name:"decoder_prefill_graph_arena_mb",type:"int",description:"MuLa music-token generator decoder prefill graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"decoder_step_graph_arena_mb",type:"int",description:"MuLa music-token generator decoder cached-step graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"frame_embedding_graph_arena_mb",type:"int",description:"MuLa music-token generator frame-embedding graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"flow_estimator_graph_arena_mb",type:"int",description:"Codec flow-estimator graph arena size in MiB; default 2048.",required:!1,min:1,default:2048},{name:"conditioning_graph_arena_mb",type:"int",description:"Codec conditioning graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"scalar_decoder_graph_arena_mb",type:"int",description:"Codec scalar-decoder graph arena size in MiB; default 1536.",required:!1,min:1,default:1536},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs after each request; default false.",required:!1,default:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"heartmula_q8_0",tags:["Music","GGUF"],docs:["docs/music_generation.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"heartmula_q8_0",display_name:"HeartMuLa Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"HeartMuLa-GGUF",files:["HeartMuLa-GGUF/heartmula-q8_0.gguf"],strip_prefix:"HeartMuLa-GGUF"},{id:"heartmula_f16",display_name:"HeartMuLa F16 GGUF",format:"gguf",precision:"f16",target_directory:"HeartMuLa-GGUF",files:["HeartMuLa-GGUF/heartmula-f16.gguf"],strip_prefix:"HeartMuLa-GGUF"}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tokenizer_json:"model:tokenizer.json",generation_config:"model:gen_config.json",mula_config:"model:HeartMuLa-oss-3B/config.json",codec_config:"model:HeartCodec-oss/config.json"},tensors:{mula_weights:{source:"weights:",prefix:"mula_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}},{format:"safetensors",roots:{model:"."},files:{tokenizer_json:"model:tokenizer.json",generation_config:"model:gen_config.json",mula_config:"model:HeartMuLa-oss-3B/config.json",codec_config:"model:HeartCodec-oss/config.json"},tensors:{mula_weights:"model:HeartMuLa-oss-3B/model.safetensors.index.json",codec_weights:"model:HeartCodec-oss/model.safetensors.index.json"}}]},W5={schema_version:1,family:"higgs_audio_stt",display_name:"Higgs Audio v3 STT",description:"Boson AI English speech-to-text model combining a Whisper Large v3 speech encoder with a Qwen decoder for robust ASR.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["en"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Transcript language code metadata; English is used when omitted.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens; default 1024.",required:!1,min:1,default:1024},{name:"enable_thinking",type:"bool",description:"Enable the model thinking prompt; default true.",required:!1,default:!0},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode; default auto uses fixed chunks.",values:["auto","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Fixed audio chunk duration in seconds; must be > 0 when set; default 4.",required:!1,min:0,default:4}],session:[{name:"weight_type",type:"enum",description:"Shared text decoder weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"audio_encoder_weight_type",type:"enum",description:"Audio encoder convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"text_decoder_weight_type",type:"enum",description:"Text decoder matmul weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_full",required:!1},{name:"audio_encoder_graph_arena_mb",type:"int",description:"Audio encoder graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"text_decoder_prefill_graph_arena_mb",type:"int",description:"Text decoder prefill graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"text_decoder_decode_graph_arena_mb",type:"int",description:"Text decoder cached-step graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"text_decoder_weight_context_mb",type:"int",description:"Text decoder weight context in MiB; omitted uses 4096 on 64-bit builds or 1024 on 32-bit builds.",required:!1,min:1}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"higgs_audio_stt_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/models/higgs_audio_stt.md","docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"higgs_audio_stt_q8_0",display_name:"Higgs Audio v3 STT Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Higgs-Audio-v3-STT-GGUF",files:["Higgs-Audio-v3-STT-GGUF/higgs-audio-v3-stt-q8_0.gguf"],strip_prefix:"Higgs-Audio-v3-STT-GGUF"},{id:"higgs_audio_stt_f16",display_name:"Higgs Audio v3 STT F16 GGUF",format:"gguf",precision:"f16",target_directory:"Higgs-Audio-v3-STT-GGUF",files:["Higgs-Audio-v3-STT-GGUF/higgs-audio-v3-stt-f16.gguf"],strip_prefix:"Higgs-Audio-v3-STT-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",preprocessor_config:"model:preprocessor_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:".",whisper:"../whisper-large-v3"},files:{config:"model:config.json",generation_config:"model:generation_config.json",preprocessor_config:"whisper:preprocessor_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:"model:model.safetensors.index.json"}}]},Q5={family:"higgs_audio_tts",display_name:"Higgs Audio v3 TTS",description:"Boson AI conversational TTS model for expressive speech across 100+ languages, zero-shot voice cloning, and inline control over emotion, style, prosody, pauses, and sound effects.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["100+ languages"],options:{request:[{name:"stream_frames_per_event",type:"int",description:"Streaming codec frames per event; grow starts at one and increases to this cap. Each frame is 40 ms of audio.",required:!1,min:1,default:32},{name:"stream_chunk_policy",type:"enum",description:"Streaming chunk schedule. The non-causal codec always retains ten frames of left and right context.",required:!1,values:["grow","fixed"],default:"grow"},{name:"max_tokens",type:"int",description:"Maximum generated AR tokens; zero uses the default. Must not exceed the configured context length.",required:!1,min:0,default:2048},{name:"allow_incomplete_generation",type:"bool",description:"Return generated audio with a warning instead of failing when max_tokens is reached before EOC. Audio may be truncated or contain silence/noise.",required:!1,default:!1},{name:"temperature",type:"float",description:"AR sampling temperature. Must be positive.",required:!1,default:.8},{name:"top_p",type:"float",description:"AR nucleus sampling probability. Must be positive.",required:!1,default:.8},{name:"top_k",type:"int",description:"AR top-k sampling limit.",required:!1,default:30,min:0},{name:"filter_nan_logits",type:"bool",description:"Filter NaN and infinity during greedy and stochastic top-k selection. All-invalid logits still fail.",required:!1,default:!1},{name:"repetition_penalty",type:"float",description:"Accepted for Python API compatibility; audio sampling does not consume this value. Compatibility-only, but must be finite and positive.",required:!1,default:1.1},{name:"seed",type:"int",description:"Torch sampling seed; omitted chooses a random seed.",required:!1,min:0},{name:"reference_text",type:"string",description:"Transcript accompanying reference audio.",required:!1,default:""},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size.",required:!1,default:1024,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,values:["default","tag_aware","japanese","endline"],default:"default"}],session:[{name:"reference_prefill_mode",type:"enum",description:"Cached-reference prefill attention. auto preserves existing behavior. Try exact if repeated voice-cloning requests produce excessive repetition or unexpectedly long, mostly silent output. May increase prefill time; not a general generation-quality fix. Full-prompt prefill and AR decoding are unchanged.",required:!1,values:["auto","exact"],default:"auto"},{name:"weight_type",type:"enum",description:"Weight storage type.",required:!1,preset:"weight_type_full",default:"native"},{name:"ar_weight_type",type:"enum",description:"AR weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"codec_weight_type",type:"enum",description:"Codec weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"ar_weight_context_mb",type:"int",description:"AR weight context in MiB; 4096 on 64-bit builds, 1024 on 32-bit builds.",required:!1,min:1},{name:"codec_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:1536},{name:"ar_decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"codec_decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128},{name:"codec_encode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"reference_cache_slots",type:"int",description:"Encoded reference cache slots; zero disables reuse.",required:!1,min:0,default:1},{name:"attention",type:"enum",description:"Attention lowering preference.",required:!1,values:["auto","flash","eager"],default:"auto"}],load:[]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"higgs_audio_tts_4b_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/higgs_audio_tts.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"higgs_audio_tts_4b_q8_0",display_name:"Higgs Audio v3 TTS 4B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Higgs-Audio-v3-TTS-4B-GGUF",files:["Higgs-Audio-v3-TTS-4B-GGUF/higgs-audio-v3-tts-4b-q8_0.gguf"],strip_prefix:"Higgs-Audio-v3-TTS-4B-GGUF"},{id:"higgs_audio_tts_4b_bf16",display_name:"Higgs Audio v3 TTS 4B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Higgs-Audio-v3-TTS-4B-GGUF",files:["Higgs-Audio-v3-TTS-4B-GGUF/higgs-audio-v3-tts-4b-bf16.gguf"],strip_prefix:"Higgs-Audio-v3-TTS-4B-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",chat_template:"model:chat_template.jinja"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",chat_template:"model:chat_template.jinja"},tensors:{weights:"model:model.safetensors.index.json"}}]},K5={schema_version:1,family:"htdemucs",display_name:"HTDemucs",description:"Hybrid Transformer Demucs music source-separation model that combines waveform and spectrogram processing with Transformer layers to split mixtures into vocals, drums, bass, and accompaniment.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"HTDemucs weight storage type; default is f32 for host graph planning, f16 on CUDA, otherwise native.",preset:"weight_type_full",required:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"htdemucs_q8_0",tags:["Sep","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"htdemucs_q8_0",display_name:"HTDemucs Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"HTDemucs-GGUF",files:["HTDemucs-GGUF/htdemucs-q8_0.gguf"],strip_prefix:"HTDemucs-GGUF"},{id:"htdemucs_f16",display_name:"HTDemucs F16 GGUF",format:"gguf",precision:"f16",target_directory:"HTDemucs-GGUF",files:["HTDemucs-GGUF/htdemucs-f16.gguf"],strip_prefix:"HTDemucs-GGUF"}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{manifest:"model:manifest.json",submodel_config:"model:955717e8/config.json"},tensors:{submodel_weights:{source:"weights:",prefix:"submodel_weights"}}},{format:"safetensors",roots:{model:".",submodel:"955717e8"},files:{manifest:"model:manifest.json",submodel_config:"submodel:config.json"},tensors:{submodel_weights:"submodel:model.safetensors"}}]},Y5={schema_version:1,family:"htdemucs_6stems",display_name:"HTDemucs 6-stem",description:"Hybrid Transformer Demucs 6-stem source-separation model that combines waveform and spectrogram processing with Transformer layers to split mixtures into drums, bass, vocals, other, guitar, and piano.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"HTDemucs 6-stem weight storage type; default is f32 for host graph planning, f16 on CUDA, otherwise native.",preset:"weight_type_full",required:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"htdemucs_6stems_q8_0",tags:["Sep","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"htdemucs_6stems_q8_0",display_name:"HTDemucs 6-stem Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"HTDemucs-6stems-GGUF",files:["HTDemucs-6stems-GGUF/htdemucs-6stems-q8_0.gguf"],strip_prefix:"HTDemucs-6stems-GGUF"},{id:"htdemucs_6stems_f16",display_name:"HTDemucs 6-stem F16 GGUF",format:"gguf",precision:"f16",target_directory:"HTDemucs-6stems-GGUF",files:["HTDemucs-6stems-GGUF/htdemucs-6stems-f16.gguf"],strip_prefix:"HTDemucs-6stems-GGUF"}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{manifest:"model:manifest.json",submodel_config:"model:5c90dfd2/config.json"},tensors:{submodel_weights:{source:"weights:",prefix:"submodel_weights"}}},{format:"safetensors",roots:{model:".",submodel:"5c90dfd2"},files:{manifest:"model:manifest.json",submodel_config:"submodel:config.json"},tensors:{submodel_weights:"submodel:model.safetensors"}}]},X5={family:"hviske_asr",schema_version:1,display_name:"Hviske ASR",description:"Danish-optimized Conformer encoder-decoder ASR model fine-tuned from the Hviske v5 family, with selectable Cohere ASR language prompts.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["ar","da","de","el","en","es","fr","it","ja","ko","nl","pl","pt","vi","zh"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"ASR language code; default da.",required:!1,default:"da"},{name:"punc",type:"bool",description:"Request punctuation and capitalization together through decoder prompt tokens; default true.",required:!1,default:!0},{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens; defaults to the model config.",required:!1,min:1},{name:"num_beams",type:"int",description:"Beam-search beam count; default 1 uses greedy or sampling decode.",required:!1,min:1,default:1},{name:"length_penalty",type:"float",description:"Beam-search length penalty; must be positive when set; default 1.0.",required:!1,min:1e-6,default:1},{name:"do_sample",type:"bool",description:"Enable sampling instead of greedy decode when num_beams is 1; default false.",required:!1,default:!1},{name:"temperature",type:"float",description:"Decoder sampling temperature; must be positive when set; default 1.0.",required:!1,min:1e-6,default:1},{name:"top_k",type:"int",description:"Top-k sampling limit; default 50, 0 disables top-k.",required:!1,min:0,default:50},{name:"top_p",type:"float",description:"Nucleus sampling limit in (0, 1]; default 1.0.",required:!1,min:1e-6,max:1,default:1},{name:"seed",type:"int",description:"Decoder sampling seed; default 0.",required:!1,min:0,default:0},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode; default auto uses quiet-energy splitting only when audio exceeds the model clip window.",values:["auto","fixed","quiet_energy","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum audio chunk duration in seconds; defaults to the model clip window.",required:!1,min:1e-6}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_conv",required:!1},{name:"weight_context_mb",type:"int",description:"Weight descriptor context size in MiB; default 32.",required:!1,min:1,default:32},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"decoder_prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"decoder_decode_graph_arena_mb",type:"int",description:"Decoder cached-step graph arena size in MiB; default 512.",required:!1,min:1,default:512}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"hviske_asr_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"]},packages:[{id:"hviske_asr_q8_0",display_name:"Hviske v5.3 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Hviske-v5.3-GGUF",files:["Audio to text (ASR)/hviske-v5.3_Q8.gguf"],strip_prefix:"Audio to text (ASR)",download:{kind:"huggingface_snapshot",repo:"mirek190/audio.cpp"}},{id:"hviske_asr_safetensors",display_name:"Hviske v5.3 Safetensors",format:"safetensors",precision:"native",target_directory:"hviske-v5.3",files:["config.json","generation_config.json","model.safetensors","tokenizer.model"],download:{kind:"huggingface_snapshot",repo:"syvai/hviske-v5.3"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.model"},tensors:{weights:"model:model.safetensors"}}]},J5={schema_version:1,family:"hviske_asr_v6",display_name:"Hviske v6",description:"Danish speech recognition with a rotary Whisper encoder and Qwen3 decoder.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["da"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_mode",type:"enum",description:"auto preserves silence splitting above 30 seconds; silence splits above the configured duration at silence boundaries; fixed splits at the configured duration; none disables splitting and accepts at most 30 seconds.",required:!1,default:"auto",values:["auto","silence","fixed","none"]},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum chunk duration when splitting. In auto mode the 30-second trigger remains unchanged.",required:!1,default:28,min:.001,max:30},{name:"max_tokens",type:"int",description:"Maximum generated tokens per chunk, also capped to eight tokens per audio second plus twelve.",required:!1,default:440,min:1},{name:"num_beams",type:"int",description:"Beam-search width. One selects greedy decoding.",required:!1,default:2,min:1},{name:"length_penalty",type:"float",description:"Exponent used to normalize beam scores by generated length.",required:!1,default:1},{name:"cased",type:"bool",description:"Request casing separately from punctuation. Both cased and punc must be provided to override automatic formatting.",required:!1},{name:"punc",type:"bool",description:"Request punctuation only, unlike the combined punctuation/casing control in Canary, Cohere and original Hviske. Both cased and punc must be provided to override automatic formatting.",required:!1}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",description:"Weight storage override; native preserves the supplied checkpoint types.",required:!1,default:"native"}],load:[]},packages:[{id:"hviske_asr_v6_bf16",display_name:"Hviske v6 BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"Hviske-v6-GGUF",files:["Hviske-v6-GGUF/hviske-v6-bf16.gguf"],strip_prefix:"Hviske-v6-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf"}},{id:"hviske_asr_v6_q8_0",display_name:"Hviske v6 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Hviske-v6-GGUF",files:["Hviske-v6-GGUF/hviske-v6-q8_0.gguf"],strip_prefix:"Hviske-v6-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf"}}],dependencies:[],ui:{recommended_package:"hviske_asr_v6_bf16",tags:["ASR","GGUF"],docs:["docs/models/hviske_asr_v6.md"]},sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:{source:"model:model.safetensors"}}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},Z5={schema_version:1,family:"index_echo",display_name:"Index-Echo-S2TT",description:"Index-Echo speech-to-text translation with bilingual timestamped subtitles.",category:"asr",status:"experimental",tasks:["asr"],modes:["offline"],languages:["zh","en","es","ja"],runtime:{tags:["gguf"]},capabilities:{},dependencies:[],options:{request:[{name:"target_language",type:"enum",values:["en","es","ja"],description:"Translation language for Chinese input audio.",required:!1,default:"en"},{name:"max_tokens",type:"int",description:"Maximum translated text tokens per window.",required:!1,min:1,default:2e3},{name:"temperature",type:"float",description:"Sampling temperature; zero selects greedy decoding.",required:!1,min:0,max:2,default:0},{name:"seed",type:"int",description:"Sampling seed when temperature is positive.",required:!1,min:0,max:2147483647,default:0},{name:"glossary",type:"string",description:"Translation glossary entries.",required:!1},{name:"audio_chunk_mode",type:"enum",values:["auto","quiet_energy","fixed","none"],description:"Long-form audio windowing mode.",required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum audio-window duration.",required:!1,min:1,max:60,default:60}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",description:"Weight storage type for runtime matmul operations.",required:!1,default:"native"}],load:[]},packages:[{id:"index_echo_s2tt_2b_orig",display_name:"Index-Echo-S2TT 2B Original",default:!0,format:"gguf",precision:"orig",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-2b-orig.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}},{id:"index_echo_s2tt_2b_q8_0",display_name:"Index-Echo-S2TT 2B Q8_0",format:"gguf",precision:"q8_0",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-2b-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}},{id:"index_echo_s2tt_2b_q4_k",display_name:"Index-Echo-S2TT 2B Q4_K (experimental)",format:"gguf",precision:"q4_k",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-2b-q4_k.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}},{id:"index_echo_s2tt_9b_orig",display_name:"Index-Echo-S2TT 9B Original",format:"gguf",precision:"orig",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-9b-orig.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}},{id:"index_echo_s2tt_9b_q8_0",display_name:"Index-Echo-S2TT 9B Q8_0",format:"gguf",precision:"q8_0",target_directory:"Index-Echo-S2TT-GGUF",files:["index-echo-s2tt-9b-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/Index-Echo-S2TT-GGUF",revision:"main",gated:!1}}],ui:{recommended_package:"index_echo_s2tt_2b_orig",tags:["ASR","GGUF"],docs:["docs/models/index_echo.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{llm_config:"model:llm/config.json",tokenizer:"model:llm/tokenizer.json",tokenizer_config:"model:llm/tokenizer_config.json",audio_config:"model:audio_config.json"},optional_files:{mapper_config:"model:bridge/mapper_config.json"},tensors:{stlm_weights:{source:"weights:",prefix:"stlm"},audio_weights:{source:"weights:",prefix:"audio"},connector_weights:{source:"weights:",prefix:"connector"}},optional_tensors:{mapper_weights:{source:"weights:",prefix:"mapper"}}}]},eS={family:"index_tts2",display_name:"IndexTTS2",description:"Zero-shot TTS system with voice cloning, emotion-speaker decoupling, text or audio emotion control, and explicit duration control. Variant v2 covers Chinese and English; variant v2.5 (config version 2.5) adds multilingual tiktoken tokenization with Japanese, Spanish and Arabic support.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline"],languages:["zh","en","ja","es","ar"],options:{request:[{name:"text",type:"string",description:"Fallback target text when text_input is absent; prompt is also accepted.",required:!1},{name:"language",type:"string",description:"IndexTTS2.5 text language; empty or auto selects from text.",required:!1},{name:"emotion_alpha",type:"float",description:"Emotion conditioning blend strength.",required:!1,min:0,max:1,default:1},{name:"emotion_vector",type:"string",description:"Eight comma-separated finite emotion strengths.",required:!1},{name:"use_emotion_text",type:"bool",description:"Use text-derived emotion conditioning.",required:!1,default:!1},{name:"emotion_text",type:"string",description:"Emotion description.",required:!1},{name:"use_random_emotion",type:"bool",description:"Use random emotion conditioning.",required:!1,default:!1},{name:"interval_silence_ms",type:"int",description:"Silence between generated segments in milliseconds.",required:!1,min:0,default:200},{name:"do_sample",type:"bool",description:"Enable sampling.",required:!1,default:!0},{name:"top_p",type:"float",description:"Nucleus sampling probability. Must be in (0, 1].",required:!1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling limit.",required:!1,min:1,default:30},{name:"temperature",type:"float",description:"Sampling temperature. Must be positive.",required:!1,default:.8},{name:"length_penalty",type:"float",description:"Beam search length penalty.",required:!1,default:0},{name:"num_beams",type:"int",description:"Beam search width.",required:!1,min:1,default:3},{name:"repetition_penalty",type:"float",description:"Sampling repetition penalty.",required:!1,default:10},{name:"max_tokens",type:"int",description:"Maximum generated mel tokens.",required:!1,min:1,default:1500},{name:"duration_scale",type:"float",description:"Positive waveform duration rescaling, supported by both IndexTTS2 and IndexTTS2.5.",required:!1,default:1},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Optional framework long-form text chunk size; omitted keeps the full input together. Must be positive.",required:!1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,values:["default","tag_aware","japanese","endline"],default:"default"}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; defaults to native.",required:!1,preset:"weight_type_full"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage; native on HIP resolves to F16.",required:!1,preset:"weight_type_conv",default:"native"},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs.",required:!1,default:!1},{name:"speaker_cache_slots",type:"int",description:"Reference or emotion cache slots; zero disables reuse.",required:!1,min:0,default:1},{name:"emotion_cache_slots",type:"int",description:"Reference or emotion cache slots; zero disables reuse.",required:!1,min:0,default:1},{name:"emotion_text_cache_slots",type:"int",description:"Reference or emotion cache slots; zero disables reuse.",required:!1,min:0,default:1},{name:"gpt_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:32},{name:"s2mel_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:32},{name:"reference_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"emotion_text_prefill_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:2048},{name:"emotion_text_decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:32},{name:"emotion_text_max_tokens",type:"int",description:"Emotion description generation token limit; emotion_text_max_new_tokens is also accepted.",required:!1,min:1,default:256}],load:[]},capabilities:{tts:["emotion_control"],clone:["speaker_reference","emotion_control"]},runtime:{tags:["gguf"]},ui:{recommended_package:"index_tts2_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/index_tts2.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"index_tts2_q8_0",display_name:"IndexTTS2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"IndexTTS2-GGUF",files:["IndexTTS2-GGUF/index-tts2-q8_0.gguf"],strip_prefix:"IndexTTS2-GGUF"},{id:"index_tts2_f16",display_name:"IndexTTS2 F16 GGUF",format:"gguf",precision:"f16",target_directory:"IndexTTS2-GGUF",files:["IndexTTS2-GGUF/index-tts2-f16.gguf"],strip_prefix:"IndexTTS2-GGUF"},{id:"index_tts2_orig",display_name:"IndexTTS2 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"IndexTTS2-GGUF",files:["IndexTTS2-GGUF/index-tts2-orig.gguf"],strip_prefix:"IndexTTS2-GGUF"},{id:"index_tts2_safetensors",display_name:"IndexTTS2 Safetensors",format:"safetensors",precision:"native",target_directory:"IndexTTS-2",files:["config.yaml","bpe.model","gpt.safetensors","w2v-bert-2.0/config.json","w2v-bert-2.0/preprocessor_config.json","bigvgan/config.json","qwen0.6bemo4-merge/config.json","qwen0.6bemo4-merge/generation_config.json","qwen0.6bemo4-merge/tokenizer.json","qwen0.6bemo4-merge/tokenizer_config.json","qwen0.6bemo4-merge/vocab.json","qwen0.6bemo4-merge/merges.txt","s2mel.safetensors","feat1.safetensors","feat2.safetensors","wav2vec2bert_stats.safetensors","w2v-bert-2.0/model.safetensors","semantic_codec_model.safetensors","campplus.safetensors","bigvgan/model.safetensors","qwen0.6bemo4-merge/model.safetensors"],download:{kind:"huggingface_snapshot",repo:"mlx-community/index-tts2-mlx"}},{id:"index_tts2_5_q8_0",display_name:"IndexTTS2.5 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"IndexTTS2.5-GGUF",files:["IndexTTS2.5-GGUF/index-tts2_5-q8_0.gguf"],strip_prefix:"IndexTTS2.5-GGUF"},{id:"index_tts2_5_f16",display_name:"IndexTTS2.5 F16 GGUF",format:"gguf",precision:"f16",target_directory:"IndexTTS2.5-GGUF",files:["IndexTTS2.5-GGUF/index-tts2_5-f16.gguf"],strip_prefix:"IndexTTS2.5-GGUF"},{id:"index_tts2_5_orig",display_name:"IndexTTS2.5 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"IndexTTS2.5-GGUF",files:["IndexTTS2.5-GGUF/index-tts2_5-orig.gguf"],strip_prefix:"IndexTTS2.5-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.yaml",wav2vec2bert_config:"model:w2v-bert-2.0/config.json",wav2vec2bert_preprocessor_config:"model:w2v-bert-2.0/preprocessor_config.json",bigvgan_config:"model:bigvgan/config.json",qwen_emotion_config:"model:qwen0.6bemo4-merge/config.json",qwen_emotion_generation_config:"model:qwen0.6bemo4-merge/generation_config.json",qwen_emotion_tokenizer:"model:qwen0.6bemo4-merge/tokenizer.json",qwen_emotion_tokenizer_config:"model:qwen0.6bemo4-merge/tokenizer_config.json",qwen_emotion_vocab:"model:qwen0.6bemo4-merge/vocab.json",qwen_emotion_merges:"model:qwen0.6bemo4-merge/merges.txt"},optional_files:{bpe:"model:bpe.model",tiktoken:"model:multilingual_zh_ja_yue_char_del.tiktoken"},tensors:{gpt:{source:"weights:",prefix:"gpt"},s2mel:{source:"weights:",prefix:"s2mel"},speaker_matrix:{source:"weights:",prefix:"speaker_matrix"},emotion_matrix:{source:"weights:",prefix:"emotion_matrix"},wav2vec2bert_stats:{source:"weights:",prefix:"wav2vec2bert_stats"},wav2vec2bert:{source:"weights:",prefix:"wav2vec2bert"},semantic_codec:{source:"weights:",prefix:"semantic_codec"},campplus:{source:"weights:",prefix:"campplus"},bigvgan:{source:"weights:",prefix:"bigvgan"},qwen_emotion:{source:"weights:",prefix:"qwen_emotion"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.yaml",wav2vec2bert_config:"model:w2v-bert-2.0/config.json",wav2vec2bert_preprocessor_config:"model:w2v-bert-2.0/preprocessor_config.json",bigvgan_config:"model:bigvgan/config.json",qwen_emotion_config:"model:qwen0.6bemo4-merge/config.json",qwen_emotion_generation_config:"model:qwen0.6bemo4-merge/generation_config.json",qwen_emotion_tokenizer:"model:qwen0.6bemo4-merge/tokenizer.json",qwen_emotion_tokenizer_config:"model:qwen0.6bemo4-merge/tokenizer_config.json",qwen_emotion_vocab:"model:qwen0.6bemo4-merge/vocab.json",qwen_emotion_merges:"model:qwen0.6bemo4-merge/merges.txt"},optional_files:{bpe:"model:bpe.model",tiktoken:"model:multilingual_zh_ja_yue_char_del.tiktoken"},tensors:{gpt:"model:gpt.safetensors",s2mel:"model:s2mel.safetensors",speaker_matrix:"model:feat1.safetensors",emotion_matrix:"model:feat2.safetensors",wav2vec2bert_stats:"model:wav2vec2bert_stats.safetensors",wav2vec2bert:"model:w2v-bert-2.0/model.safetensors",semantic_codec:"model:semantic_codec_model.safetensors",campplus:"model:campplus.safetensors",bigvgan:"model:bigvgan/model.safetensors",qwen_emotion:"model:qwen0.6bemo4-merge/model.safetensors"}}]},tS={schema_version:1,family:"inflect_v2",display_name:"Inflect Micro v2",description:"Compact English VITS text-to-speech models with a native GGML inference path and an external eSpeak-ng phonemizer.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"speed",type:"float",description:"Speech speed multiplier mapped directly to Inflect speed; default 1.0.",required:!1,min:.5,max:2,default:1},{name:"variation",type:"float",description:"Latent Gaussian variation; default 0.667.",required:!1,min:0,max:1,default:.667},{name:"seed",type:"int",description:"Non-negative latent noise seed; default 0.",required:!1,min:0,default:0},{name:"text_chunk_mode",type:"enum",description:"Long-form text chunking mode.",values:["word_budget"],required:!1,default:"word_budget"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 280.",required:!1,min:1,default:280}],session:[{name:"espeak_library_path",type:"path",description:"Optional explicit path to the eSpeak-ng shared library.",required:!1},{name:"espeak_data_path",type:"path",description:"Optional explicit path to the directory containing espeak-ng-data.",required:!1},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Component: decoder. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. GGML keeps the session backend. RKNN requires artifacts.main and ENGINE_ENABLE_RKNN; omit backend. Neither implementation takes params.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"inflect_micro_v2_orig",display_name:"Inflect Micro v2 Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Inflect-Micro-v2-GGUF",files:["Inflect-Micro-v2-GGUF/inflect-micro-v2-orig.gguf"],strip_prefix:"Inflect-Micro-v2-GGUF"}],dependencies:[],ui:{recommended_package:"inflect_micro_v2_orig",tags:["TTS","GGUF"],docs:["docs/tts.md","docs/models/inflect_v2.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},iS={schema_version:1,family:"irodori_tts",display_name:"Irodori-TTS",description:"Japanese TTS with RF and MeanFlow checkpoints, supporting zero-shot voice cloning, automatic duration prediction, multimodal voice design, and emoji-style control.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["ja"],capabilities:{clone:["speaker_reference"],design:["voice_design"]},options:{request:[{name:"stream_frames_per_event",type:"int",description:"Codec latent frames per streaming audio event; default 12 (0.48 seconds at 25 Hz).",required:!1,min:1,default:12},{name:"language",type:"string",description:"Text language code; Irodori-TTS supports Japanese only.",required:!1,default:"ja"},{name:"instruct",type:"string",description:"Natural-language voice or style instruction describing target voice identity, style, or emotion; supported only by caption-conditioned checkpoints. Legacy instruction and caption are accepted as aliases.",required:!1},{name:"no_ref",type:"bool",description:"Use no-reference generation; default true unless a speaker reference is provided.",required:!1,default:!0},{name:"speaker_embedding_file",type:"path",description:"Speaker Inversion embedding (*.speaker.safetensors written by Irodori-TTS training) used as the speaker condition instead of reference audio; use it with the base checkpoint it was trained on. Cannot be combined with reference audio or no_ref=true.",required:!1},{name:"reference_duration_sec",type:"float",description:"Trim reference audio to its first reference_duration_sec seconds before encoding it, as Python Irodori-TTS does; default is the checkpoint's ref_max_seconds (30 when it has none); 0 keeps the whole reference.",required:!1,min:0},{name:"t_schedule_mode",type:"string",description:"RF Euler timestep schedule: linear or sway; default linear.",required:!1,default:"linear"},{name:"sway_coeff",type:"float",description:"Sway Sampling coefficient; must be finite and produce strictly decreasing timesteps. Default -1.0.",required:!1,default:-1},{name:"num_inference_steps",type:"int",description:"Sampling steps; omitted uses 40 for RF checkpoints or 4 for MeanFlow checkpoints.",required:!1,min:1},{name:"duration_sec",type:"float",description:"Target duration in seconds; omitted or nonpositive values select predicted duration.",required:!1},{name:"duration_scale",type:"float",description:"Predicted-duration multiplier; must be > 0 when set; default 1.0.",required:!1,min:0,default:1},{name:"text_chunk_mode",type:"enum",description:"Text chunk policy; word_budget also accepts the legacy spelling default.",values:["word_budget","tag_aware","japanese","endline"],required:!1,default:"endline"},{name:"text_chunk_size",type:"int",description:"Maximum characters per text chunk; default 100, or the model text-token window if smaller.",required:!1,min:1},{name:"min_duration_sec",type:"float",description:"Minimum generated duration in seconds; must be > 0 and no greater than max_duration_sec; default 0.5.",required:!1,min:0,default:.5},{name:"max_duration_sec",type:"float",description:"Maximum generated duration in seconds; must be at least min_duration_sec; default 30. Must be > 0.",required:!1,min:0,default:30},{name:"text_guidance_scale",type:"float",description:"Text classifier-free guidance scale; default 3.0. Nonpositive values disable the corresponding CFG branch.",required:!1,default:3},{name:"speaker_guidance_scale",type:"float",description:"Speaker classifier-free guidance scale; default 5.0. Nonpositive values disable the corresponding CFG branch.",required:!1,default:5},{name:"caption_guidance_scale",type:"float",description:"Caption classifier-free guidance scale; default 3.0. Nonpositive values disable the corresponding CFG branch.",required:!1,default:3},{name:"guidance_scale",type:"float",description:"Override all classifier-free guidance scales when set. Nonpositive values disable the corresponding CFG branch.",required:!1},{name:"guidance_mode",type:"enum",description:"Classifier-free guidance combination mode; default independent.",values:["independent","joint","alternating"],required:!1,default:"independent"},{name:"guidance_min_t",type:"float",description:"Minimum diffusion timestep value where guidance is active; default 0.5. The parser does not enforce a nonnegative bound.",required:!1,default:.5},{name:"guidance_max_t",type:"float",description:"Maximum diffusion timestep value where guidance is active; default 1.0. The parser does not enforce a nonnegative bound.",required:!1,default:1},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed in [0, 4294967295]; omitted uses a random seed.",required:!1,min:0,max:4294967295},{name:"trim_tail",type:"bool",description:"Trim trailing silence-like samples; default true.",required:!1,default:!0}],session:[{name:"weight_type",type:"enum",description:"Model weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"codec_weight_type",type:"enum",description:"DACVAE codec weight storage type; default native.",preset:"weight_type_codec_q8",required:!1,default:"native"},{name:"codec_backend",type:"enum",description:"DACVAE codec execution backend. Use cpu as an opt-in workaround for backend-specific codec decoder issues; default same.",values:["same","cpu"],required:!1,default:"same"},{name:"condition_graph_arena_mb",type:"int",description:"Condition encoder graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"rf_graph_arena_mb",type:"int",description:"RF sampler graph arena size in MiB; default 768.",required:!1,min:1,default:768},{name:"codec_graph_arena_mb",type:"int",description:"DACVAE codec graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"codec_decode_chunk_steps",type:"int",description:"Decode the latent in windows of this many frames (25 per second) so the codec's activation memory stops growing with the output length; 0 decodes the whole sequence at once (default).",required:!1,min:0,default:0},{name:"codec_decode_overlap_steps",type:"int",description:"Latent frames of context decoded on each side of a window and then discarded; default 16.",required:!1,min:0,default:16},{name:"codec_encode_chunk_steps",type:"int",description:"Encode reference audio in windows of this many latent frames (25 per second) so the codec's activation memory stops growing with the reference length; 0 encodes the whole reference at once (default).",required:!1,min:0,default:0},{name:"codec_encode_overlap_steps",type:"int",description:"Latent frames of reference audio encoded as context on each side of a window and then discarded; default 16.",required:!1,min:0,default:16},{name:"condition_weight_context_mb",type:"int",description:"Condition encoder weight context size in MiB; default 32.",required:!1,min:1,default:32},{name:"rf_weight_context_mb",type:"int",description:"RF sampler weight context size in MiB; default 32.",required:!1,min:1,default:32},{name:"codec_weight_context_mb",type:"int",description:"DACVAE codec weight context size in MiB; default 32.",required:!1,min:1,default:32},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs after request phases; default true.",required:!1,default:!0},{name:"reference_cache_slots",type:"int",description:"Prepared reference-speaker cache slots; default 1.",required:!1,min:0,default:1}],load:[]},dependencies:[],runtime:{tags:["gguf"]},ui:{recommended_package:"irodori_tts_v4_small_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"irodori_tts_v4_small_q8_0",display_name:"Irodori-TTS v4.1 Small Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4-small-q8_0.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_v4_1_anime_q8_0",display_name:"Irodori-TTS v4.1 Anime Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4.1-anime-q8_0.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_v4_small_f16",display_name:"Irodori-TTS v4.1 Small F16 GGUF",format:"gguf",precision:"f16",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4-small-f16.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_600m_v3_voicedesign_q8_0",display_name:"Irodori-TTS 600M v3 VoiceDesign Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-600M-v3-VoiceDesign-GGUF",files:["Irodori-TTS-600M-v3-VoiceDesign-GGUF/irodori-tts-600m-v3-voicedesign-q8_0.gguf"],strip_prefix:"Irodori-TTS-600M-v3-VoiceDesign-GGUF"},{id:"irodori_tts_600m_v3_voicedesign_f16",display_name:"Irodori-TTS 600M v3 VoiceDesign F16 GGUF",format:"gguf",precision:"f16",target_directory:"Irodori-TTS-600M-v3-VoiceDesign-GGUF",files:["Irodori-TTS-600M-v3-VoiceDesign-GGUF/irodori-tts-600m-v3-voicedesign-f16.gguf"],strip_prefix:"Irodori-TTS-600M-v3-VoiceDesign-GGUF"},{id:"irodori_tts_500m_v3_q8_0",display_name:"Irodori-TTS 500M v3 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-500M-v3-GGUF",files:["Irodori-TTS-500M-v3-GGUF/irodori-tts-500m-v3-q8_0.gguf"],strip_prefix:"Irodori-TTS-500M-v3-GGUF"},{id:"irodori_tts_v4_1_small_mf_q8_0",display_name:"Irodori-TTS v4.1 Small MeanFlow Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4.1-small-mf-q8_0.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_v4_1_small_mf_f16",display_name:"Irodori-TTS v4.1 Small MeanFlow F16 GGUF",format:"gguf",precision:"f16",target_directory:"Irodori-TTS-v4-Small-GGUF",files:["Irodori-TTS-v4-Small-GGUF/irodori-tts-v4.1-small-mf-f16.gguf"],strip_prefix:"Irodori-TTS-v4-Small-GGUF"},{id:"irodori_tts_500m_v3_f16",display_name:"Irodori-TTS 500M v3 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Irodori-TTS-500M-v3-GGUF",files:["Irodori-TTS-500M-v3-GGUF/irodori-tts-500m-v3-f16.gguf"],strip_prefix:"Irodori-TTS-500M-v3-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{model_config:"model:model_config.json"},optional_files:{tokenizer_json:"model:tokenizer.json",tokenizer_v4_json:"model:tokenizer/tokenizer.json",pretrained_text_config:"model:text_encoder_config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},codec_weights:{source:"weights:",prefix:"codec_weights"}}},{format:"safetensors",roots:{model:".",tokenizer:"../llm-jp-3-150m",codec:"../Semantic-DACVAE-Japanese-32dim"},files:{model_config:"model:model_config.json"},optional_files:{tokenizer_json:"tokenizer:tokenizer.json",tokenizer_v4_json:"model:tokenizer/tokenizer.json",pretrained_text_config:"model:text_encoder_config.json"},tensors:{model_weights:"model:model.safetensors",codec_weights:"codec:weights.safetensors"}}]},aS={schema_version:1,family:"kitten_tts",display_name:"KittenTTS Mini 0.8",description:"Native KittenTTS Mini 0.8 English text-to-speech with eight built-in voices and shared eSpeak-ng phonemization.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["built_in_voices","long_form"]},options:{request:[{name:"voice_id",type:"enum",values:["Bella","Bruno","Hugo","Jasper","Kiki","Leo","Luna","Rosie","expr-voice-2-f","expr-voice-2-m","expr-voice-3-f","expr-voice-3-m","expr-voice-4-f","expr-voice-4-m","expr-voice-5-f","expr-voice-5-m"],description:"Built-in voice ID or package alias; structured voice input (CLI --voice-id) takes precedence.",required:!1,default:"expr-voice-5-m"},{name:"speed",type:"float",description:"Speech speed multiplier; larger values produce faster speech. Must be finite and positive.",required:!1,default:1},{name:"seed",type:"int",description:"Decoder noise seed for the current request; omitted requests choose a fresh random seed.",required:!1,min:0},{name:"text_chunk_mode",type:"enum",description:"Long-form text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form chunk.",required:!1,min:1,default:400}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",description:"Storage type for matrix multiplication weights.",required:!1,default:"native"},{name:"conv_weight_type",type:"enum",preset:"weight_type_conv",description:"Storage type for convolution weights.",required:!1,default:"native"},{name:"graph_capacity_mode",type:"enum",description:"Offline graph capacity policy.",values:["fixed","tiered","grow","double"],required:!1,default:"fixed"},{name:"max_input_tokens",type:"int",description:"Maximum predictor input token capacity; defaults to min(512, checkpoint context_length).",required:!1,min:1,max:512,default:512},{name:"pre_tail_tokens",type:"int",description:"Optional prebuilt predictor tail token capacity.",required:!1,min:0,max:512,default:0},{name:"espeak_library_path",type:"path",description:"Optional explicit path to the eSpeak-ng shared library.",required:!1},{name:"espeak_data_path",type:"path",description:"Optional explicit path to espeak-ng-data.",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"kitten_tts_mini_0_8_orig",display_name:"KittenTTS Mini 0.8 Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"KittenTTS-GGUF",files:["KittenTTS-GGUF/kitten-tts-mini-0.8-orig.gguf"],strip_prefix:"KittenTTS-GGUF"}],dependencies:[],ui:{recommended_package:"kitten_tts_mini_0_8_orig",tags:["TTS","GGUF"],builtin_voices:["Bella","Jasper","Luna","Bruno","Rosie","Hugo","Kiki","Leo"],default_voice:"Leo",docs:["docs/models/kitten_tts.md","docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"kitten"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:ggml/kitten_tts.safetensors"}}]},nS={schema_version:1,family:"kitten_tts2",display_name:"Kitten TTS 2",description:"Native multilingual Kitten TTS 2 Qwen3 speech generation, S3 meanflow decoder, and reference-audio voice cloning.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en","ar","zh","fr","de","hi","it","pt","ru","es","nl","id","ja","ko","pl","tr"],runtime:{tags:["gguf","cpu"]},capabilities:{tts:["built_in_voices","long_form"],clone:["speaker_reference"]},options:{request:[{name:"voice_id",type:"enum",values:["Bella","Jasper","Luna","Bruno","Rosie","Hugo","Kiki","Leo","Matthew","Elliot","Willow","Dolores","Victor","Dante","Alfred","Saoirse","Claire","Raven","Marcus","Herbert","Diana","Laurence","Maeve","Walter","Edith","Miles","Grace","Reginald","Iris","Frank","Serena","Julian","Eleanor","Otis","Vincent","Martha","Sable","Victoria","PreparedBruno","Arabic","Chinese","French","German","Hindi","Italian","Portuguese","Russian","Spanish","AirportAnnouncer","ArabicChildSchool","ArabicFalconer","ArabicMother","ArabicNews","AudiobookNarratorFemale","BoredTeenager","CalmHostageNegotiator","ChineseKidSpringFestival","ChineseLivestreamSeller","ChineseNewsCctv","ChineseXianxiaMaster","DutchBaker","DutchGrandpaStory","DutchWeatherPresenter","FairytaleNarratorWhimsical","FrenchDocumentary","FrenchGrandmereRecette","FrenchTeacher","FrenchWaiter","GermanKidBirthday","GermanKneipe","GermanProfessor","GermanTrainAnnouncement","GrandmaBedtimeStory","GriefEulogy","HindiBollywoodDrama","HindiCollegeFriends","HindiDadiKahani","HindiYogaTeacher","IndonesianNewsAnchor","IndonesianTourGuide","ItalianChildSchool","ItalianFashionDesigner","ItalianFootballFan","ItalianGondolier","ItalianNonnaKitchen","ItalianOperaTenor","JapaneseAnimeHeroine","JapaneseGrandma","JapaneseSalarymanApology","JapaneseTrainConductor","KoreanGrandpaAdvice","KoreanKdramaConfession","KoreanNewsAnchor","LittleGirlExplaining","NervousFirstDate","NewsAnchorFemale","PilotCabinAnnouncement","PolishBabciaPierogi","PolishMountainGuide","PolishNewsAnchor","PolishPoetryStudent","PortugueseBeach","PortugueseBusiness","PortugueseFado","PortugueseGrandpaFarm","PortugueseKidFutebol","PortugueseNewsAnchor","RussianBabushka","RussianFairyTale","RussianHockeyCheer","RussianLiteratureTeacher","RussianSpaceControl","RussianTaxiDriver","SarcasticCoworker","SchoolboyPresentation","SpanishAbuela","SpanishBreakupSad","SpanishChildCuento","SpanishNews","SpanishTango","TurkishFisherman","TurkishGrandmaCooking","TurkishNewsAnchor","WeatherPresenterCheerful"],required:!1,default:"Bruno",description:"Prepared voice name available in the loaded package. A supplied reference clip takes precedence."},{name:"preset",type:"enum",values:["stable","expressive"],required:!1,default:"stable",description:"Upstream sampling preset."},{name:"temperature",type:"float",min:0,required:!1,description:"Sampling temperature; zero selects greedy decoding. Otherwise defaults to the preset."},{name:"top_k",type:"int",min:0,required:!1,description:"Top-k sampling cutoff; defaults to the preset."},{name:"top_p",type:"float",max:1,required:!1,description:"Nucleus sampling cutoff; defaults to the preset. Must be in (0, 1]."},{name:"min_p",type:"float",min:0,max:1,required:!1,description:"Minimum relative probability; defaults to the preset."},{name:"repetition_penalty",type:"float",min:1,required:!1,default:1.1,description:"Penalty over the last 50 generated tokens; silence and ending tokens are exempt."},{name:"max_tokens",type:"int",min:1,max:8192,required:!1,description:"Speech-token budget per text chunk. Omitted budgets scale with text length, with a minimum of 200."},{name:"seed",type:"int",min:0,required:!1,description:"Seed for sampling and waveform decoding."},{name:"text_chunk_size",type:"int",min:32,max:1e3,required:!1,default:380,description:"Maximum Unicode codepoints per framework text chunk."},{name:"text_chunk_mode",type:"enum",values:["default","tag_aware","japanese","endline"],required:!1,default:"tag_aware",description:"Framework long-form text chunking mode."},{name:"reference_text",type:"string",required:!1,description:"Transcript of the reference audio; required when cloning from a 1–30 second clip."}],load:[],session:[{name:"exec_plan",type:"string",required:!1,default:"{}",description:"Component execution plan JSON. vocoder accepts impl=ggml (default) or neon with backend=cpu. NEON requires ENGINE_ENABLE_NEON=ON and an AArch64 NEON CPU, and replaces only the HiFT neural convolution stack."},{name:"weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q8_0"],required:!1,default:"native",description:"Qwen projection storage. native preserves the GGUF's intended tensor types. An explicit override changes projection storage only."}]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"dignome/kitten_tts2",revision:"main",gated:!1}},packages:[{id:"kitten_tts2_bf16",display_name:"Kitten TTS 2 BF16 GGUF (Previous Checkpoint)",default:!1,format:"gguf",precision:"bf16",target_directory:"kitten-tts2-v2",files:["kitten-tts2-bf16-multilingual.gguf","LICENSE","NOTICE","native/LICENSE","speaker/LICENSE","SHA256SUMS"]},{id:"kitten_tts2_q8_v2",display_name:"Kitten TTS 2 Q8 GGUF (Previous Checkpoint)",default:!1,format:"gguf",precision:"q8_0",target_directory:"kitten-tts2-v2",files:["kitten-tts2-q8-v2-multilingual.gguf","LICENSE","NOTICE","native/LICENSE","speaker/LICENSE","SHA256SUMS"]},{id:"kitten_tts2_q4",display_name:"Kitten TTS 2 Hybrid Q4 GGUF (Previous Checkpoint, Experimental)",default:!1,format:"gguf",precision:"q4_0",target_directory:"kitten-tts2-v2",files:["kitten-tts2-q4-multilingual.gguf","LICENSE","NOTICE","native/LICENSE","speaker/LICENSE","SHA256SUMS"]},{id:"kitten_tts2_20261021_q8_0",display_name:"Kitten TTS 2 2026-10-21 Q8 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"KittenTTS2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1},files:["KittenTTS2-GGUF/kitten-tts2-20261021-q8_0.gguf"],strip_prefix:"KittenTTS2-GGUF"},{id:"kitten_tts2_20261021_q4_0",display_name:"Kitten TTS 2 2026-10-21 Q4 GGUF (BF16 Embedding)",default:!1,format:"gguf",precision:"q4_0",target_directory:"KittenTTS2-GGUF",download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1},files:["KittenTTS2-GGUF/kitten-tts2-20261021-q4_0.gguf"],strip_prefix:"KittenTTS2-GGUF"}],dependencies:[],ui:{recommended_package:"kitten_tts2_20261021_q8_0",min_vram_gb:7,tags:["TTS","GGUF"],builtin_voices:["Bella","Jasper","Luna","Bruno","Rosie","Hugo","Kiki","Leo","Matthew","Elliot","Willow","Dolores","Victor","Dante","Alfred","Saoirse","Claire","Raven","Marcus","Herbert","Diana","Laurence","Maeve","Walter","Edith","Miles","Grace","Reginald","Iris","Frank","Serena","Julian","Eleanor","Otis","Vincent","Martha","Sable","Victoria","Arabic","Chinese","French","German","Hindi","Italian","Portuguese","Russian","Spanish"],default_voice:"Bruno",docs:["docs/models/kitten_tts2.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",lm_config:"model:lm/config.json",tokenizer_config:"model:lm/tokenizer_config.json",tokenizer_json:"model:lm/tokenizer.json",default_voices:"model:cpp/default/voices.json"},tensors:{language_model:{source:"weights:",prefix:"language_model"},s3gen:{source:"weights:",prefix:"s3gen"},speaker:{source:"weights:",prefix:"speaker"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",lm_config:"model:lm/config.json",tokenizer_config:"model:lm/tokenizer_config.json",tokenizer_json:"model:lm/tokenizer.json",default_voices:"model:cpp/default/voices.json"},tensors:{language_model:"model:lm/model.safetensors",s3gen:"model:native/s3gen_meanflow.safetensors",speaker:"model:speaker/model.safetensors"}}]},sS={schema_version:1,family:"kokoro_tts",display_name:"Kokoro 82M",description:"Kokoro 82M multilingual text-to-speech with 54 preset voices, optimized native CPU inference, and shared eSpeak-ng phonemization.",category:"tts",status:"community",tasks:["tts"],modes:["offline","streaming"],languages:["en-us","en-gb","es","fr-fr","hi","it","ja","pt-br","zh"],runtime:{tags:["gguf","stream"]},capabilities:{tts:["built_in_voices","long_form"]},options:{request:[{name:"voice_id",type:"enum",values:["af_alloy","af_aoede","af_bella","af_heart","af_jessica","af_kore","af_nicole","af_nova","af_river","af_sarah","af_sky","am_adam","am_echo","am_eric","am_fenrir","am_liam","am_michael","am_onyx","am_puck","am_santa","bf_alice","bf_emma","bf_isabella","bf_lily","bm_daniel","bm_fable","bm_george","bm_lewis","ef_dora","em_alex","em_santa","ff_siwis","hf_alpha","hf_beta","hm_omega","hm_psi","if_sara","im_nicola","jf_alpha","jf_gongitsune","jf_nezumi","jf_tebukuro","jm_kumo","pf_dora","pm_alex","pm_santa","zf_xiaobei","zf_xiaoni","zf_xiaoxiao","zf_xiaoyi","zm_yunjian","zm_yunxi","zm_yunxia","zm_yunyang"],description:"Built-in voice ID; structured voice input (CLI --voice-id) takes precedence.",required:!1,default:"af_heart"},{name:"language",type:"string",description:"Language selection precedence: voice-style language, transcript language (CLI --language), request-option language, then voice prefix. Must match the first voice in a blend.",required:!1},{name:"seed",type:"int",description:"Decoder noise seed for the current request; omitted requests choose a fresh random seed.",required:!1,min:0},{name:"speed",type:"float",description:"Speech speed multiplier; default 1.0. Must be finite and positive.",required:!1,default:1},{name:"phonemes",type:"string_list",description:"Kokoro-vocabulary phonemes to synthesize directly, bypassing the built-in eSpeak-ng G2P. One entry per chunk: entries are rendered in order and merged into one result, so the caller chooses the split points that only its own G2P knows. Each entry must be at most 510 symbols and must not be empty -- an entry is a chunk to speak, so drop it rather than leaving it blank. Text is still required and its language must still match the voice.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum codepoints per text chunk before synthesis. Default 100 for Chinese and Japanese voices, otherwise 240.",required:!1,min:1},{name:"return_timestamps",type:"bool",description:"Report where each phoneme group lands in the output, from the durations the model predicts before vocoding. Entries are phoneme groups in Kokoro's own alphabet, not written words, and do not map one-to-one onto the input text: see docs/models/kokoro_tts.md. Default false.",required:!1,default:!1}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"native",description:"Storage type for matrix multiplication weights."},{name:"conv_weight_type",type:"enum",preset:"weight_type_conv",required:!1,default:"native",description:"Storage type for convolution weights."},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 512.",required:!1,min:1,default:512},{name:"predictor_duration_graph_arena_mb",type:"int",description:"Predictor duration host graph-metadata arena size in MiB, not device workspace; default 384.",required:!1,min:1,default:384},{name:"predictor_text_graph_arena_mb",type:"int",description:"Predictor text host graph-metadata arena size in MiB, not device workspace; default 256.",required:!1,min:1,default:256},{name:"predictor_tail_graph_arena_mb",type:"int",description:"Predictor tail host graph-metadata arena size in MiB, not device workspace; default 640.",required:!1,min:1,default:640},{name:"graph_capacity_mode",type:"enum",description:"Offline graph capacity policy; default fixed.",values:["fixed","tiered","grow","double"],required:!1,default:"fixed"},{name:"max_input_tokens",type:"int",description:"Predictor graph input token capacity; default min(512, model context length).",required:!1,min:1},{name:"pre_tail_tokens",type:"int",description:"Optional prebuilt predictor tail token capacity; default 0.",required:!1,min:0,default:0},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Component: generator. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn/neon. GGML keeps the session backend. The complete NEON generator requires a CPU session and ENGINE_ENABLE_NEON=ON on AArch64, without artifacts or params. RKNN requires artifacts.main and ENGINE_ENABLE_RKNN; omit backend. RKNN params: overlap (nonnegative integer, default 0, smaller than the emitted window), gain (boolean, default false; keeps a GGML generator reference).",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"kokoro_82m_q8_0",display_name:"Kokoro 82M Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Kokoro-82M-GGUF",files:["Kokoro-82M-GGUF/kokoro-82m-q8_0.gguf"],strip_prefix:"Kokoro-82M-GGUF"},{id:"kokoro_82m_bf16",display_name:"Kokoro 82M BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Kokoro-82M-GGUF",files:["Kokoro-82M-GGUF/kokoro-82m-bf16.gguf"],strip_prefix:"Kokoro-82M-GGUF"},{id:"kokoro_82m_generator_rk3588",display_name:"Kokoro 82M NPU Generator RKNN (RK3588)",format:"rknn",precision:"f16",target_directory:"Kokoro-82M-GGUF",files:["rk3588/generator_w512.rknn"],strip_prefix:"rk3588",description:"Pre-compiled RK3588 engine for the kokoro_tts RKNN generator sidecar (kokoro_tts.exec_plan, artifacts.main); installs beside the GGUF weights and is named by bare file name. Built by tools/rknn from the Kokoro-82M iSTFTNet generator export; see docs/build/rockchip-npu.md.",download:{kind:"huggingface_snapshot",repo:"wOvANAI/rknn-tts-engines",revision:"main",gated:!1}}],dependencies:[],ui:{recommended_package:"kokoro_82m_q8_0",tags:["TTS","GGUF"],builtin_voices:["af_alloy","af_aoede","af_bella","af_heart","af_jessica","af_kore","af_nicole","af_nova","af_river","af_sarah","af_sky","am_adam","am_echo","am_eric","am_fenrir","am_liam","am_michael","am_onyx","am_puck","am_santa","bf_alice","bf_emma","bf_isabella","bf_lily","bm_daniel","bm_fable","bm_george","bm_lewis","ef_dora","em_alex","em_santa","ff_siwis","hf_alpha","hf_beta","hm_omega","hm_psi","if_sara","im_nicola","jf_alpha","jf_gongitsune","jf_nezumi","jf_tebukuro","jm_kumo","pf_dora","pm_alex","pm_santa","zf_xiaobei","zf_xiaoni","zf_xiaoxiao","zf_xiaoyi","zm_yunjian","zm_yunxi","zm_yunxia","zm_yunyang"],default_voice:"af_heart",docs:["tests/kokoro_tts/MULTILINGUAL_GGUF.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",voices:"model:voices.json",vocabulary:"model:vocab.tsv"},tensors:{weights:{source:"weights:",prefix:"kokoro"}}}]},rS={schema_version:1,family:"kroko_asr",display_name:"Kroko Community ASR",description:"Native Zipformer2 RNN-T transcription for the public free Kroko Community single-language packages, with offline and stateful streaming inference, greedy and modified beam decoding, hotwords, endpoint segments, partial results, and word timestamps.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["de","en","es","fr","it","he","nl","pt","sv","tr"],capabilities:{asr:["word_timestamps","partial_results","segments"]},options:{request:[{name:"language",type:"string",description:"Language code matching the selected single-language Kroko package; default auto uses the package language.",required:!1,default:"auto"},{name:"decoding_method",type:"enum",description:"RNN-T decoding method; greedy search remains the parity-tested default.",values:["greedy_search","modified_beam_search"],required:!1,default:"greedy_search"},{name:"num_beams",type:"int",description:"Maximum active hypotheses retained by modified beam search.",required:!1,min:1,max:64,default:4},{name:"blank_penalty",type:"float",description:"Non-negative score subtracted from the RNN-T blank logit.",required:!1,min:0,default:0},{name:"hotwords",type:"string",description:"Slash- or newline-separated natural-text phrases; requires modified beam search.",required:!1},{name:"hotwords_score",type:"float",description:"Non-negative per-token context boost for hotword phrases.",required:!1,min:0,default:1.5},{name:"enable_endpoint",type:"bool",description:"Enable automatic endpoint speech segments.",required:!1,default:!1},{name:"rule1_min_trailing_silence_sec",type:"float",description:"Endpoint timeout in seconds even when no speech token was decoded.",required:!1,min:0,default:2.4},{name:"rule2_min_trailing_silence_sec",type:"float",description:"Endpoint silence in seconds after a speech token was decoded.",required:!1,min:0,default:1.2},{name:"rule3_min_utterance_length_sec",type:"float",description:"Maximum utterance duration in seconds before an endpoint.",required:!1,min:0,default:20}],session:[],load:[]},runtime:{tags:["gguf","stream"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokens:"model:tokens.txt"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokens:"model:tokens.txt"},tensors:{weights:"model:model.safetensors"}}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"kroko_asr_community_q8_0",display_name:"Kroko Community ASR Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Kroko-ASR-GGUF",files:["Kroko-ASR-GGUF/kroko-en-community-64-l-q8_0.gguf"],strip_prefix:"Kroko-ASR-GGUF"}],dependencies:[],ui:{recommended_package:"kroko_asr_community_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/models/kroko_asr.md","docs/gguf.md"]}},oS={schema_version:1,family:"kugelaudio",display_name:"KugelAudio-0-Open",description:"KugelAudio text-to-speech with bundled preset voices and incremental audio output.",category:"tts",status:"experimental",tasks:["tts"],modes:["offline","streaming"],languages:["en","de","fr","es","it","pt","nl","pl","ru","uk","cs","ro","hu","sv","da","fi","no","el","bg","sk","hr","sr","tr"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"voice_id",type:"enum",values:["default","clear","english_female","english_male"],description:"Bundled preset voice.",default:"default",required:!1},{name:"num_inference_steps",type:"int",description:"Diffusion steps per acoustic frame, from 1 to 1000; omitted uses the checkpoint's diffusion_head_config.ddpm_num_inference_steps.",min:1,max:1e3,default:20,required:!1},{name:"guidance_scale",type:"float",description:"Diffusion classifier-free guidance; 1 disables the unconditional pass. Any finite value is accepted; negative values enter CFG arithmetic.",default:3,required:!1},{name:"max_tokens",type:"int",description:"Maximum autoregressive tokens per text chunk.",min:1,default:2048,required:!1},{name:"do_sample",type:"bool",description:"Sample autoregressive speech control tokens instead of greedy decoding.",default:!1,required:!1},{name:"temperature",type:"float",description:"Autoregressive sampling temperature when do_sample is enabled. Any finite value is accepted; negative values disable sampling.",default:1,required:!1},{name:"seed",type:"int",description:"Random seed; -1 chooses a random seed.",min:-1,default:1234,required:!1},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk.",min:1,default:300,required:!1},{name:"text_chunk_mode",type:"enum",values:["default","tag_aware","japanese","endline"],description:"Framework long-form text splitting mode.",default:"default",required:!1}],session:[{name:"weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],description:"Weight storage type; native preserves packaged tensor types.",default:"native",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"kugelaudio_0_open_bf16",display_name:"KugelAudio-0-Open BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"KugelAudio-0-Open-GGUF",files:["KugelAudio-0-Open-GGUF/kugelaudio-0-open-bf16.gguf"],strip_prefix:"KugelAudio-0-Open-GGUF"},{id:"kugelaudio_0_open_q8_0",display_name:"KugelAudio-0-Open Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"KugelAudio-0-Open-GGUF",files:["KugelAudio-0-Open-GGUF/kugelaudio-0-open-q8_0.gguf"],strip_prefix:"KugelAudio-0-Open-GGUF"},{id:"kugelaudio_0_open_q4_k",display_name:"KugelAudio-0-Open Q4_K GGUF",default:!1,format:"gguf",precision:"q4_k",target_directory:"KugelAudio-0-Open-GGUF",files:["KugelAudio-0-Open-GGUF/kugelaudio-0-open-q4_k.gguf"],strip_prefix:"KugelAudio-0-Open-GGUF"}],dependencies:[],ui:{recommended_package:"kugelaudio_0_open_q8_0",default_voice:"default",builtin_voices:["default","clear","english_female","english_male"],tags:["TTS","Stream","GGUF"],docs:["docs/models/kugelaudio.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:text_tokenizer/tokenizer.json",tokenizer_config:"model:text_tokenizer/tokenizer_config.json"},tensors:{model_weights:"weights:"}}]},lS={schema_version:1,family:"latentsync",display_name:"LatentSync 1.6",description:"Audio-conditioned lip synchronization of a reference video.",category:"audio_generation",status:"experimental",tasks:["sfx"],modes:["offline"],languages:["auto"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"reference_video_file",type:"path",required:!0,description:"Reference video containing the face to synchronize. Requires FFmpeg on PATH."},{name:"num_inference_steps",required:!1,type:"int",min:1,max:999,default:20,description:"Number of DDIM denoising steps."},{name:"cache_interval",required:!1,type:"int",min:1,default:1,description:"DeepCache refresh interval. One disables caching; three matches the upstream DeepCache preset. Higher values trade output fidelity for speed."},{name:"guidance_scale",required:!1,type:"float",min:0,default:1.5,description:"Audio classifier-free guidance scale; values at or below one disable CFG."},{name:"frames_per_chunk",required:!1,type:"int",min:1,max:24,default:16,description:"Frames processed together by the temporal denoiser."},{name:"fps",required:!1,type:"float",min:1,default:25,description:"Video sampling and output frame rate."},{name:"seed",required:!1,type:"int",min:0,default:1247,description:"Random seed for latent noise and VAE posterior sampling."}],session:[{name:"weight_type",required:!1,type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],default:"native",description:"Weight storage type; native preserves packaged tensor types."},{name:"vae_cudnn_f16",required:!1,type:"bool",default:!1,description:"Use cuDNN FP16 VAE execution on CUDA. Requires a build with GGML_CUDA_CUDNN_CONV2D=ON; VAE weights are converted to FP16."},{name:"unet_cudnn_f16",required:!1,type:"bool",default:!1,description:"Use cuDNN FP16 convolutions and residual activations in the U-Net on CUDA. Requires a build with GGML_CUDA_CUDNN_CONV2D=ON and FP16 U-Net weights."},{name:"mem_saver",required:!1,type:"bool",default:!1,description:"Release components between pipeline stages and run CFG branches sequentially to reduce peak VRAM. Reloading the VAE for decoding adds some latency."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/LatentSync-1.6-GGUF",revision:"main",gated:!1}},packages:[{id:"latentsync_1_6_q8_0_f16",display_name:"LatentSync 1.6 Q8/F16",format:"gguf",precision:"q8_0",default:!0,target_directory:"LatentSync-1.6-GGUF",files:["latentsync-1.6-q8_0-f16.gguf"]},{id:"latentsync_1_6_f16",display_name:"LatentSync 1.6 F16",format:"gguf",precision:"f16",default:!1,target_directory:"LatentSync-1.6-GGUF",files:["latentsync-1.6-f16.gguf"]},{id:"latentsync_1_6_f32_f16",display_name:"LatentSync 1.6 F32/F16",format:"gguf",precision:"orig",default:!1,target_directory:"LatentSync-1.6-GGUF",files:["latentsync-1.6-f32-f16.gguf"]}],dependencies:[],ui:{recommended_package:"latentsync_1_6_q8_0_f16",tags:["GGUF"],docs:["docs/models/latentsync.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{detector_config:"model:detector_config.json",landmark_config:"model:landmark_config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},cS={schema_version:1,family:"lfm2_audio",display_name:"LFM2.5-Audio",description:"Liquid AI's LFM2.5-Audio, loaded from the llama.cpp-format GGUF components Liquid publishes. ASR: a FastConformer encoder feeds an LFM2 hybrid short-conv/attention backbone. TTS: the backbone generates audio frames through a depthformer, and an LFM2 detokenizer and ISTFT turn them into 24 kHz audio. S2S: a spoken question goes in as for ASR, and the reply comes out as interleaved text and audio.",category:"asr",status:"experimental",tasks:["asr","tts","s2s"],modes:["offline","streaming"],languages:["en","ja"],capabilities:{asr:["vad_chunking"],tts:["built_in_voices","long_form"]},options:{request:[{name:"language",type:"string",description:"Must match the checkpoint's language (en or ja) when given; each published checkpoint transcribes and speaks one language.",required:!1,default:"auto"},{name:"max_tokens",type:"int",description:"ASR: transcript tokens per audio chunk, 512 by default. TTS: audio frames (80 ms each) per text chunk, 512 by default. S2S: text tokens and audio frames of the reply together, 1024 by default. A transcript, a text chunk's speech or a reply that reaches it is cut off there, with a warning on stderr.",required:!1,min:1},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode. auto transcribes input up to audio_chunk_duration_sec whole and splits longer input at pauses found by the bundled VAD (fixed chunks when the VAD model is absent); vad always splits at pauses and skips silence; fixed cuts every audio_chunk_duration_sec; none transcribes the whole input at once.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Longest chunk in seconds, at least 1. With fixed chunks, a final piece shorter than 1 second joins the previous chunk.",required:!1,min:1,default:30},{name:"temperature",type:"float",description:"TTS and S2S: audio code sampling temperature, 0.8 by default for TTS and 1.0 for S2S; 0 picks the most likely code.",required:!1,min:0},{name:"top_k",type:"int",description:"TTS and S2S: sample audio codes from the k most likely, 64 by default for TTS and 4 for S2S; 0 keeps all, 1 is greedy.",required:!1,min:0},{name:"text_temperature",type:"float",description:"S2S: text token sampling temperature; 0, the default, picks the most likely token, as liquid-audio's README and demo do.",required:!1,min:0,default:0},{name:"text_top_k",type:"int",description:"S2S: with a text_temperature above 0, sample text tokens from the k most likely; 0, the default, keeps all, and 1 is greedy.",required:!1,min:0,default:0},{name:"seed",type:"int",description:"TTS and S2S: sampling seed; omitted requests choose a random seed. TTS text chunk i uses seed + i. S2S text sampling draws from a stream of its own, so with the same seed a reply follows the greedy-text reply until a text token differs.",required:!1,min:0},{name:"text_chunk_mode",type:"enum",description:"TTS: long-form text chunking mode; japanese for the Japanese checkpoint and default otherwise when omitted.",values:["default","tag_aware","japanese","endline"],required:!1},{name:"text_chunk_size",type:"int",description:"TTS: maximum Unicode codepoints per text chunk, each spoken as its own turn.",required:!1,min:1,default:200},{name:"stream_frames_per_event",type:"int",description:"TTS and S2S streaming: audio frames (80 ms each) per event; each event's audio is final. ASR runs offline only.",required:!1,min:1,default:1},{name:"return_codes",type:"bool",description:"S2S: also return the reply's text tokens and audio codes as an lfm2_audio.reply artifact, to send back as history with the conversation's next turn.",required:!1,default:!1}],session:[{name:"model_gguf",type:"string",description:"Backbone GGUF, relative to the model directory. Defaults to the directory's only backbone GGUF.",required:!1,default:""},{name:"mmproj_gguf",type:"string",description:"Audio encoder (mmproj) GGUF, relative to the model directory. Defaults to mmproj-, or else the directory's only mmproj GGUF.",required:!1,default:""},{name:"vocoder_gguf",type:"string",description:"TTS/S2S vocoder GGUF (depthformer), relative to the model directory. Defaults to vocoder-, or the directory's only vocoder GGUF.",required:!1,default:""},{name:"detokenizer_gguf",type:"string",description:"TTS/S2S audio detokenizer GGUF, relative to the model directory. Defaults to tokenizer-, or the directory's only tokenizer GGUF.",required:!1,default:""},{name:"vad_model_path",type:"string",description:"Path to the Silero VAD model directory used by automatic audio chunking.",required:!1,default:"assets/framework/models/silero_vad"},{name:"max_pass_duration_sec",type:"float",description:"Most audio, in seconds, the encoder takes in one pass: an ASR chunk (the whole input with audio_chunk_mode=none) or the S2S question. Longer audio is rejected before it is encoded.",required:!1,min:1,default:120},{name:"cpu_repack",type:"bool",description:"On the CPU, multiply the matrices with the kernels of ggml's CPU extra buffer types where those take the weight's type and shape: the repacked ones take Q4_0 on x86 with AVX2 and Q4_0, Q8_0 and Q6_K on Arm; where ggml's AMX buffer is built, it comes first and also takes F16, Q8_0 and K-quants. Where the token embedding's type is taken, the text head gets a copy of it. Other backends ignore it.",required:!1,default:!0},{name:"conversation_cache_slots",type:"int",description:"S2S: how many conversations a session keeps the earlier questions' encoder output and prefill blocks of, for their next turns, the least recently used dropped first; 0 keeps none. Each kept conversation takes up to about 350 MiB of host memory at the conversation limit, and a slot that no conversation has used takes nothing. Output does not depend on it.",required:!1,min:0,default:4}],load:[]},runtime:{tags:["gguf","cpu","metal","cuda"]},packages:[{id:"lfm2_audio_1_5b_q8_0",display_name:"LFM2.5-Audio-1.5B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"LFM2.5-Audio-1.5B-GGUF",files:["LFM2.5-Audio-1.5B-Q8_0.gguf","mmproj-LFM2.5-Audio-1.5B-Q8_0.gguf","vocoder-LFM2.5-Audio-1.5B-Q8_0.gguf","tokenizer-LFM2.5-Audio-1.5B-Q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-GGUF",revision:"7d525f883a077e20afb782f2ff618edcae0e39e4",gated:!1}},{id:"lfm2_audio_1_5b_f16",display_name:"LFM2.5-Audio-1.5B F16 GGUF",format:"gguf",precision:"f16",target_directory:"LFM2.5-Audio-1.5B-GGUF",files:["LFM2.5-Audio-1.5B-F16.gguf","mmproj-LFM2.5-Audio-1.5B-F16.gguf","vocoder-LFM2.5-Audio-1.5B-F16.gguf","tokenizer-LFM2.5-Audio-1.5B-F16.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-GGUF",revision:"7d525f883a077e20afb782f2ff618edcae0e39e4",gated:!1}},{id:"lfm2_audio_1_5b_q4_0",display_name:"LFM2.5-Audio-1.5B Q4_0 GGUF",format:"gguf",precision:"q4_0",target_directory:"LFM2.5-Audio-1.5B-GGUF",files:["LFM2.5-Audio-1.5B-Q4_0.gguf","mmproj-LFM2.5-Audio-1.5B-Q4_0.gguf","vocoder-LFM2.5-Audio-1.5B-Q4_0.gguf","tokenizer-LFM2.5-Audio-1.5B-Q4_0.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-GGUF",revision:"7d525f883a077e20afb782f2ff618edcae0e39e4",gated:!1}},{id:"lfm2_audio_1_5b_jp_q8_0",display_name:"LFM2.5-Audio-1.5B-JP Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"LFM2.5-Audio-1.5B-JP-GGUF",files:["LFM2.5-Audio-1.5B-JP-Q8_0.gguf","mmproj-LFM2.5-Audio-1.5B-JP-Q8_0.gguf","vocoder-LFM2.5-Audio-1.5B-JP-Q8_0.gguf","tokenizer-LFM2.5-Audio-1.5B-JP-Q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF",revision:"64b96718b341dbd5650f9e85627cecdcbd4ac61b",gated:!1}},{id:"lfm2_audio_1_5b_jp_f16",display_name:"LFM2.5-Audio-1.5B-JP F16 GGUF",format:"gguf",precision:"f16",target_directory:"LFM2.5-Audio-1.5B-JP-GGUF",files:["LFM2.5-Audio-1.5B-JP-F16.gguf","mmproj-LFM2.5-Audio-1.5B-JP-F16.gguf","vocoder-LFM2.5-Audio-1.5B-JP-F16.gguf","tokenizer-LFM2.5-Audio-1.5B-JP-F16.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF",revision:"64b96718b341dbd5650f9e85627cecdcbd4ac61b",gated:!1}},{id:"lfm2_audio_1_5b_jp_f32",display_name:"LFM2.5-Audio-1.5B-JP F32 GGUF",format:"gguf",precision:"f32",target_directory:"LFM2.5-Audio-1.5B-JP-GGUF",files:["LFM2.5-Audio-1.5B-JP-F32.gguf","mmproj-LFM2.5-Audio-1.5B-JP-F32.gguf","vocoder-LFM2.5-Audio-1.5B-JP-F32.gguf","tokenizer-LFM2.5-Audio-1.5B-JP-F32.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF",revision:"64b96718b341dbd5650f9e85627cecdcbd4ac61b",gated:!1}},{id:"lfm2_audio_1_5b_jp_q4_0",display_name:"LFM2.5-Audio-1.5B-JP Q4_0 GGUF",format:"gguf",precision:"q4_0",target_directory:"LFM2.5-Audio-1.5B-JP-GGUF",files:["LFM2.5-Audio-1.5B-JP-Q4_0.gguf","mmproj-LFM2.5-Audio-1.5B-JP-Q4_0.gguf","vocoder-LFM2.5-Audio-1.5B-JP-Q4_0.gguf","tokenizer-LFM2.5-Audio-1.5B-JP-Q4_0.gguf"],download:{kind:"huggingface_snapshot",repo:"LiquidAI/LFM2.5-Audio-1.5B-JP-GGUF",revision:"64b96718b341dbd5650f9e85627cecdcbd4ac61b",gated:!1}}],dependencies:[],ui:{tags:["ASR","TTS","GGUF","Stream"],recommended_package:"lfm2_audio_1_5b_q8_0",docs:["docs/models/lfm2_audio.md"],summary:"LFM2.5-Audio transcription, speech and spoken chat (English and Japanese checkpoints) from Liquid's published GGUFs.",builtin_voices:["us_male","us_female","uk_male","uk_female"],default_voice:"us_male"},sources:[{format:"gguf",roots:{model:"."},files:{},optional_files:{},tensors:{}}]},dS={schema_version:1,family:"liveavatar",display_name:"LiveAvatar",description:"LiveAvatar audio-driven avatar video generation using the Wan2.2 S2V architecture.",category:"audio_generation",status:"experimental",tasks:["sfx"],modes:["offline","streaming"],languages:["auto"],runtime:{tags:["cuda","gguf","stream"]},capabilities:{sfx:["prompt_generation"]},options:{request:[{name:"reference_image_file",type:"string",description:"Reference image path used as the identity/appearance condition.",required:!0},{name:"generation_mode",type:"enum",values:["offline","liveavatar"],description:"Use whole-clip generation or LiveAvatar blockwise generation.",required:!1,default:"offline"},{name:"height",type:"int",description:"Generated frame height; must be a positive multiple of 16.",required:!1,min:16,default:480},{name:"width",type:"int",description:"Generated frame width; must be a positive multiple of 16.",required:!1,min:16,default:832},{name:"num_frames",type:"int",description:"Frames generated per LiveAvatar segment; must be positive and a multiple of 4 in blockwise mode (streaming or generation_mode=liveavatar).",required:!1,min:1,default:48},{name:"num_clips",type:"int",description:"Maximum LiveAvatar clips to generate from the input audio.",required:!1,min:1,default:1},{name:"num_inference_steps",type:"int",description:"Denoising steps; offline generation uses UniPC, blockwise generation uses Euler. The LiveAvatar DMD adapter is designed for 4 steps.",required:!1,min:1,default:4},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; LiveAvatar blockwise generation requires 0.",required:!1,min:0,default:0},{name:"fused_cfg",type:"bool",description:"Run classifier-free guidance in one denoiser graph.",required:!1,default:!0},{name:"sage_attention",type:"bool",description:"Use CUDA SageAttention when the backend supports it.",required:!1,default:!0},{name:"mem_saver",type:"bool",description:"Reuse immutable condition data and temporary denoiser graph storage across sequential blocks.",required:!1,default:!0},{name:"denoiser_layerwise",type:"bool",description:"Run the denoiser in layerwise mode. Offline generation requires fused_cfg=true and guidance_scale > 1.",required:!1,default:!1},{name:"denoiser_layerwise_batch",type:"int",description:"Layer group size used by layerwise denoising.",required:!1,min:1,default:16},{name:"vae_encoder_chunk_size",type:"int",description:"Cached VAE encoder chunk size.",required:!1,min:1,default:16},{name:"vae_decoder_tile_size",type:"int",description:"Opt-in VAE decoder spatial tile size for large outputs; 0 disables tiling. Enabled tile sizes must be multiples of 8 and larger than the 64-pixel overlap.",required:!1,min:0,default:0},{name:"target_cache_blocks",type:"int",description:"Target KV cache window in block units; 0 keeps the full clip cache.",required:!1,min:0,default:0},{name:"vae_cache_f16",type:"bool",description:"Store cached VAE encoder state in F16.",required:!1,default:!0},{name:"shift",type:"float",description:"Flow scheduler shift; must be > 0.",required:!1,min:0,default:3},{name:"negative_prompt",type:"string",description:"Negative prompt for classifier-free guidance.",required:!1},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,default:420}],session:[{name:"denoiser_weight_streaming",type:"bool",description:"Keep denoiser transformer blocks in host memory and stage layer groups on the accelerator.",required:!1,default:!1}],load:[{name:"support_gguf",type:"string",description:"Support GGUF containing text_encoder/audio_encoder tensors and the embedded tokenizer sidecar.",required:!1,default:"Wan2.2-S2V-Support-Q4_K_S-F16.gguf"},{name:"vae_gguf",type:"string",description:"Wan video VAE component GGUF file relative to the model root.",required:!1,default:"Wan2.2-S2V-VAE-F16.gguf"},{name:"denoiser_gguf",type:"string",description:"Denoiser DiT GGUF file relative to the model root.",required:!1,default:"Wan2.2-S2V-14B-NVFP4-LORA.gguf"}]},dependencies:[],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/LiveAvatar-GGUF",revision:"main",gated:!1}},packages:[{id:"liveavatar_nvfp4_lora",display_name:"LiveAvatar NVFP4 LoRA GGUF",default:!0,format:"gguf",precision:"native",target_directory:"LiveAvatar-GGUF",files:["Wan2.2-S2V-Support-Q4_K_S-F16.gguf","Wan2.2-S2V-VAE-F16.gguf","Wan2.2-S2V-14B-NVFP4-LORA.gguf"]}],sources:[{format:"gguf",roots:{model:"."},files:{tokenizer_model:"model:tokenizer/spiece.model"},tensors:{text_encoder_weights:{source:"model:Wan2.2-S2V-Support-Q4_K_S-F16.gguf",prefix:"text_encoder"},audio_encoder_weights:{source:"model:Wan2.2-S2V-Support-Q4_K_S-F16.gguf",prefix:"audio_encoder"}}},{format:"gguf",roots:{model:"."},tensors:{vae_weights:{source:"model:Wan2.2-S2V-VAE-F16.gguf",prefix:"vae"}}},{format:"gguf",roots:{model:"."},tensors:{denoiser_weights:{source:"model:Wan2.2-S2V-14B-NVFP4-LORA.gguf"}}}],ui:{recommended_package:"liveavatar_nvfp4_lora",tags:["SFX","GGUF","Stream"],docs:["docs/models/liveavatar.md"]}},uS={schema_version:1,family:"magpie_tts",display_name:"MagpieTTS Multilingual 357M",description:"NVIDIA MagpieTTS is a multilingual neural text-to-speech model that generates NanoCodec audio tokens from text using baked speaker context embeddings, a decoder-only transformer, and an autoregressive local transformer before decoding the tokens to waveform audio.",category:"tts",status:"supported",tasks:["tts"],modes:["offline"],languages:["ar-AE","ar-MSA","ar-SA","de","en","es","fr","hi","it","ko","pt-BR","vi","zh"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"language",type:"string",description:"Target synthesis language code used by the Magpie text frontend; default en.",required:!1,default:"en"},{name:"voice_id",type:"enum",description:"Packaged MagpieTTS voice name; default Aria. Numeric speaker index strings are also accepted within the checkpoint speaker count.",values:["Aria","Jason","John","Leo","Sofia"],required:!1,default:"Aria"},{name:"temperature",type:"float",description:"Autoregressive audio-token sampling temperature; default 0.6 from the v2607 model config.",required:!1,min:0,default:.6},{name:"top_k",type:"int",description:"Autoregressive audio-token top-k sampling limit; default 80.",required:!1,min:1,default:80},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale for Magpie decoder logits; default 2.5.",required:!1,min:0,default:2.5},{name:"max_tokens",type:"int",description:"Maximum Magpie decoder frames per text segment; default 500 from the v2607 model config.",required:!1,min:1,default:500},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 100 for zh and ko, otherwise 300.",required:!1,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"seed",type:"int",description:"Seed for audio-token sampling; default 0.",required:!1,min:0,default:0}],session:[{name:"graph_arena_mb",type:"int",description:"Reusable ggml graph arena size in MiB for Magpie stages; default 1024.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight loading context size in MiB; default 2048.",required:!1,min:1,default:2048},{name:"weight_type",type:"enum",description:"Matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"magpie_tts_orig",display_name:"MagpieTTS Multilingual 357M Original-Dtype GGUF",default:!1,format:"gguf",precision:"orig",target_directory:"MagpieTTS-Multilingual-357M-GGUF",files:["MagpieTTS-Multilingual-357M-GGUF/magpie-tts-multilingual-357m-orig.gguf"],strip_prefix:"MagpieTTS-Multilingual-357M-GGUF"},{id:"magpie_tts_q8_0",display_name:"MagpieTTS Multilingual 357M Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MagpieTTS-Multilingual-357M-GGUF",files:["MagpieTTS-Multilingual-357M-GGUF/magpie-tts-multilingual-357m-q8_0.gguf"],strip_prefix:"MagpieTTS-Multilingual-357M-GGUF"}],dependencies:[],ui:{recommended_package:"magpie_tts_q8_0",tags:["TTS","GGUF"],docs:["docs/models/magpie_tts.md","docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",codec_config:"model:codec_config.json",speakers:"model:speakers.json"},optional_files:{ipa_dict:"model:ipa_dict.txt",cmu_dict:"model:cmu_dict.txt",german_dict:"model:german.dict",german_heteronyms:"model:german.heteronym",spanish_dict:"model:spanish.dict",portuguese_dict:"model:portuguese.dict",hindi_dict:"model:hindi.dict",heteronyms:"model:heteronyms",mandarin_chars:"model:mandarin_data/pinyin_chars.tsv",mandarin_phrases:"model:mandarin_data/pinyin_phrases.tsv",mandarin_jieba_dict:"model:mandarin_data/jieba.dict.utf8",mandarin_hmm:"model:mandarin_data/hmm_model.utf8"},tensors:{model:{source:"weights:",prefix:"model"},codec:{source:"weights:",prefix:"codec"}}},{format:"safetensors",roots:{model:".",codec:"../nemo_nano_codec_22khz_1_89kbps_safetensors"},files:{config:"model:config.json",codec_config:"codec:config.json",speakers:"model:41913ebaa70342058574da74293b7630_magpie_tts_multilingual_357m.nemo.speakers.json"},optional_files:{ipa_dict:"model:74b3e832fe914a569fcd42b51d06b2f1_ipa_dict_nv23.05.txt",cmu_dict:"model:dc7d60d6b15a4651b21c9ca2932b62c6_ipa_cmudict-0.7b_nv23.01.txt",german_dict:"model:cf01ab5c48c84f3282ef7888263361e5_de_nv230119.dict",german_heteronyms:"model:c5e4ec2af5a14ce294f4b9edcc936535_de_nv230119.heteronym",spanish_dict:"model:7dbc31751f224f2486090d59dc95b9f7_es_ES_nv230301.dict",portuguese_dict:"model:05adc40366e149b69319acd4b28a4919_pt_br_prondict-v1.0.dict",hindi_dict:"model:339da71c54b046f98cbcf38ef6d4ff67_hindi_phoneme_merged_phoneme_dict.dict",heteronyms:"model:61d57a4ccb064d1e8e3d9f871c571932_heteronyms-052722"},tensors:{model:"model:model.safetensors",codec:"codec:model.safetensors"}}]},fS={schema_version:1,family:"maya1",display_name:"Maya1",description:"Maya Research's 3B expressive English text-to-speech model with natural-language voice design and inline emotion control.",category:"tts",status:"supported",tasks:["tts","design"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["voice_design","emotion_control","long_form"],design:["voice_design"]},options:{request:[{name:"instruct",type:"string",description:"Natural-language description of the voice, accent, timbre, age, and delivery.",required:!0},{name:"max_tokens",type:"int",description:"Maximum generated audio-token count per text chunk; default 2048.",required:!1,min:1,default:2048},{name:"min_tokens",type:"int",description:"Minimum generated audio-token count before EOS may stop generation; default 28.",required:!1,min:0,default:28},{name:"temperature",type:"float",description:"Autoregressive sampling temperature; default 0.4. Must be > 0.",required:!1,min:0,default:.4},{name:"top_p",type:"float",description:"Autoregressive nucleus sampling probability; must be in (0, 1], default 0.9.",required:!1,min:0,max:1,default:.9},{name:"repetition_penalty",type:"float",description:"Autoregressive repetition penalty; default 1.1. Must be > 0.",required:!1,min:0,default:1.1},{name:"seed",type:"int",description:"Sampling and SNAC decoder noise seed; omitted requests choose a random seed.",required:!1,min:0},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 300.",required:!1,min:1,default:300},{name:"text_chunk_mode",type:"enum",description:"Framework long-form text chunking mode; tag_aware preserves inline emotion tags.",values:["default","tag_aware","japanese","endline"],required:!1,default:"tag_aware"}],session:[{name:"weight_type",type:"enum",description:"Shared AR and SNAC decoder weight storage type; default native.",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],required:!1,default:"native"},{name:"ar_weight_type",type:"enum",description:"AR backbone weight storage type; defaults to weight_type.",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],required:!1},{name:"codec_weight_type",type:"enum",description:"SNAC decoder weight storage type; only native or f32 is supported. Inherits weight_type when omitted; set codec_weight_type=f32 explicitly when using another shared weight_type.",values:["native","f32"],required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"maya1_orig",display_name:"Maya1 Original-Precision GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Maya1-GGUF",files:["Maya1-GGUF/maya1-orig.gguf"],strip_prefix:"Maya1-GGUF"},{id:"maya1_q8_0",display_name:"Maya1 Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"Maya1-GGUF",files:["Maya1-GGUF/maya1-q8_0.gguf"],strip_prefix:"Maya1-GGUF"}],dependencies:[],ui:{recommended_package:"maya1_orig",tags:["TTS","Design","GGUF"],docs:["docs/models/maya1.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{model_weights:"weights:",codec_weights:"weights:"}}]},mS={family:"meanvc2",schema_version:1,display_name:"MeanVC2",description:"MeanVC2 is a lightweight streaming zero-shot voice conversion model. The current audio.cpp package covers the recommended 120ms/40ms quality path.",category:"voice_conversion",status:"supported",tasks:["vc"],modes:["offline","streaming"],languages:["language_agnostic"],capabilities:{vc:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"seed",type:"int",description:"Random seed for MeanVC2 flow noise; default 42.",required:!1,min:0,default:42}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"meanvc2_120ms_40ms_f32",display_name:"MeanVC2 120ms/40ms F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"MeanVC2-GGUF",files:["MeanVC2-GGUF/meanvc2-120ms-40ms-fp32.gguf"],strip_prefix:"MeanVC2-GGUF"},{id:"meanvc2_120ms_40ms_q4_k",display_name:"MeanVC2 120ms/40ms Q4_K GGUF",default:!1,format:"gguf",precision:"q4_k",target_directory:"MeanVC2-GGUF",files:["MeanVC2-GGUF/meanvc2-120ms-40ms-q4_k.gguf"],strip_prefix:"MeanVC2-GGUF"}],dependencies:[],ui:{recommended_package:"meanvc2_120ms_40ms_f32",tags:["VC","GGUF"],docs:["docs/models/meanvc2.md","docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{weights:"$gguf"},tensors:{vc:{source:"weights:",prefix:"vc"},vocos:{source:"weights:",prefix:"vocos"},asr:{source:"weights:",prefix:"asr"},speaker_wavlm:{source:"weights:",prefix:"speaker_wavlm"},speaker_ecapa:{source:"weights:",prefix:"speaker_ecapa"}}}]},pS={schema_version:1,family:"mel_band_roformer",display_name:"Mel-Band RoFormer",description:"Music source-separation model that uses mel-scaled overlapping frequency bands and RoFormer attention to estimate stems such as vocals, drums, and accompaniment.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},options:{request:[],session:[{name:"weight_type",type:"enum",description:"RoFormer weight storage type. Defaults to f32 when the backend requires a host graph plan, otherwise native.",preset:"weight_type_full",required:!1},{name:"num_overlap",type:"int",description:"Number of overlapping inference windows; defaults to the package configuration. Lower values improve throughput but can reduce boundary quality.",required:!1,min:1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"mel_band_roformer_q8_0",tags:["Sep","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"mel_band_roformer_q8_0",display_name:"Mel-Band RoFormer Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Mel-Band-RoFormer-GGUF",files:["Mel-Band-RoFormer-GGUF/mel-band-roformer-q8_0.gguf"],strip_prefix:"Mel-Band-RoFormer-GGUF"},{id:"mel_band_roformer_f16",display_name:"Mel-Band RoFormer F16 GGUF",format:"gguf",precision:"f16",target_directory:"Mel-Band-RoFormer-GGUF",files:["Mel-Band-RoFormer-GGUF/mel-band-roformer-f16.gguf"],strip_prefix:"Mel-Band-RoFormer-GGUF"},{id:"mel_band_roformer_safetensors",display_name:"Mel RoFormer Safetensors",format:"safetensors",precision:"native",target_directory:"mel-roformer-mlx",files:["config.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"mlx-community/mel-roformer-mlx"}}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},gS={schema_version:1,family:"micro_wake_word",display_name:"microWakeWord",description:"Streaming wake-word detection for trained microWakeWord MixedNet TFLite models converted to GGUF.",category:"audio_tools",status:"experimental",tasks:["wake_word"],modes:["offline","streaming"],languages:["model_dependent"],capabilities:{wake_word:["speech_segments","stream_events"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"threshold",type:"float",description:"Override the converted model manifest's wake-word probability cutoff.",required:!1,min:0,max:1},{name:"sliding_window_size",type:"int",description:"Override the converted model manifest's prediction smoothing window.",required:!1,min:1}],session:[{name:"exec_plan",type:"string",description:"JSON component execution plans. Component network accepts impl ggml/neon (default ggml). GGML retains the session backend; neon runs the stateful CNN on CPU and requires ENGINE_ENABLE_NEON=ON and AArch64 NEON. Frontend and detection logic are unchanged. No artifacts or params are used.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"micro_wake_word_okay_nabu_f32",display_name:"microWakeWord Okay Nabu GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"MicroWakeWord-GGUF",files:["MicroWakeWord-GGUF/micro-wake-word-okay-nabu-f32.gguf"],strip_prefix:"MicroWakeWord-GGUF"}],dependencies:[],ui:{tags:["Wake Word","GGUF","Stream"],docs:["docs/models/micro_wake_word.md"],recommended_package:"micro_wake_word_okay_nabu_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},hS={schema_version:1,family:"midashenglm_gen",display_name:"MiDashengLM-Gen",description:"DashengLM generative audio model for speech, music, sound effects, and ambience prompts.",category:"audio_generation",status:"experimental",tasks:["music"],modes:["offline"],languages:["auto"],runtime:{tags:["gguf","cuda"]},capabilities:{music:["instrumental","style_control"]},options:{request:[{name:"duration_sec",type:"float",description:"Target audio duration budget; omitted derives from the checkpoint sequence length, hop size and sample rate. Must be finite and positive; no fixed runtime upper cap.",required:!1,default:20},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale. Any finite value is accepted.",required:!1,default:2},{name:"stop_threshold",type:"float",description:"Stop probability threshold. Any finite value is accepted.",required:!1,default:.5},{name:"min_stop_step",type:"int",description:"Minimum generated steps before accepting stop.",required:!1,min:1,default:5},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed; default 0 is a fixed seed. Negative values are not accepted.",required:!1,min:0,max:4294967295,default:0}],session:[{name:"weight_type",type:"enum",description:"Shared weight storage type.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"midashenglm_gen_f32",display_name:"MiDashengLM-Gen F32 GGUF",format:"gguf",precision:"f32",target_directory:"MiDashengLM-Gen-GGUF",files:["MiDashengLM-Gen-GGUF/midashenglm-gen-f32.gguf"],strip_prefix:"MiDashengLM-Gen-GGUF"},{id:"midashenglm_gen_q8_0",display_name:"MiDashengLM-Gen Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MiDashengLM-Gen-GGUF",files:["MiDashengLM-Gen-GGUF/midashenglm-gen-q8_0.gguf"],strip_prefix:"MiDashengLM-Gen-GGUF"}],dependencies:[],ui:{recommended_package:"midashenglm_gen_q8_0",tags:["Music","SFX","GGUF"],docs:["docs/models/midashenglm_gen.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json","vocab.json":"model:vocab.json","merges.txt":"model:merges.txt","tokenizer_config.json":"model:tokenizer_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json","vocab.json":"model:vocab.json","merges.txt":"model:merges.txt","tokenizer_config.json":"model:tokenizer_config.json"},tensors:{weights:"model:model.safetensors.index.json"}}]},_S={schema_version:1,family:"ming3_audio",display_name:"Ming 3.0 Audio Tiny",description:"Whisper audio encoder and hybrid KDA/MLA mixture-of-experts Thinker, with a separate continuous-latent Talker for spoken responses.",category:"asr",status:"experimental",tasks:["asr","s2s","tts","clone"],modes:["offline"],languages:["zh","en"],capabilities:{tts:["speaker_reference","built_in_voices"],clone:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"system_prompt",type:"string",required:!1,description:"Thinker system instruction. When supplied, the user prompt precedes audio as in the official chat examples."},{name:"enable_thinking",type:"bool",required:!1,default:!1,description:"Enable the Thinker chat template's detailed thinking mode."},{name:"prompt",type:"string",required:!1,description:"Thinker instruction accompanying the input audio; omitted ASR requests use the official transcription prompt."},{name:"max_tokens",type:"int",required:!1,default:256,min:1,description:"Maximum generated Thinker text tokens."},{name:"max_audio_tokens",type:"int",required:!1,default:1e3,min:1,description:"Maximum generated Talker acoustic patches per text fragment."},{name:"voice_id",type:"enum",values:["US_James","US_Stella","灵小柔","灵楷","US_Emma","UK_George","UK_Charlotte","灵小安","灵语汐","灵小萌","灵小雅","花小呗","灵韵","妩媚妲己","灵婉","灵小月","灵朵儿","灵岩","灵小锋","灵小川","灵小甄","灵小知","灵小惠","灵小晴","灵小琪","灵梦","灵恬","灵小汐","灵小棠","灵小梨","灵舒","灵娇","灵小芸","灵锐","灵空","灵宇","灵朗","灵旭","灵骁","灵江","悲伤女声","皮六","说唱小哥","蜡笔小新","悟空","灵信远_生气","灵信远_厌恶","灵信远_惊讶","灵信远_高兴","灵信远_恐惧","灵信远_中性","灵信远_悲伤","灵思齐_高兴","灵思齐_恐惧","灵思齐_生气","灵思齐_厌恶","灵思齐_中性","灵思齐_惊讶","灵思齐_悲伤","灵叙柔_高兴","灵叙柔_恐惧","灵叙柔_惊讶","灵叙柔_悲伤","灵叙柔_生气","灵叙柔_中性","灵叙柔_厌恶","灵绮木_悲伤","灵绮木_厌恶","灵绮木_中性","灵绮木_恐惧","灵绮木_惊讶","灵绮木_高兴","灵绮木_生气","灵书悦_恐惧","灵书悦_厌恶","灵书悦_高兴","灵书悦_惊讶","灵书悦_悲伤","灵书悦_生气","灵书悦_中性","灵渊霆_厌恶","灵渊霆_中性","灵渊霆_恐惧","灵渊霆_惊讶","灵渊霆_悲伤","灵渊霆_生气","灵渊霆_高兴","灵素心_高兴","灵素心_惊讶","灵素心_恐惧","灵素心_中性","灵素心_生气","灵素心_悲伤","灵素心_厌恶","灵晓声_惊讶","灵晓声_厌恶","灵晓声_高兴","灵晓声_生气","灵晓声_中性","灵晓声_悲伤","灵风信_生气","灵风信_中性","灵风信_厌恶","灵风信_高兴","灵风信_惊讶","灵风信_悲伤","灵风信_恐惧","灵采薇_惊讶","灵采薇_厌恶","灵采薇_恐惧","灵采薇_生气","灵采薇_悲伤","灵采薇_中性","灵采薇_高兴","灵卓然_厌恶","灵卓然_中性","灵卓然_恐惧","灵卓然_惊讶","灵卓然_高兴","灵卓然_悲伤","灵卓然_生气","灵惜梦_中性","灵惜梦_厌恶","灵惜梦_高兴","灵惜梦_悲伤","灵惜梦_恐惧","灵惜梦_惊讶","灵惜梦_生气","灵浅忧_高兴","灵浅忧_生气","灵浅忧_厌恶","灵浅忧_悲伤","灵浅忧_惊讶","灵浅忧_恐惧","灵浅忧_中性","灵昭野_生气","灵昭野_高兴","灵昭野_悲伤","灵昭野_中性","灵昭野_厌恶","灵昭野_恐惧","灵昭野_惊讶","灵心澜_厌恶","灵心澜_惊讶","灵心澜_生气","灵心澜_中性","灵心澜_高兴","灵心澜_悲伤","灵心澜_恐惧","灵犀言_悲伤","灵犀言_厌恶","灵犀言_恐惧","灵犀言_中性","灵犀言_惊讶","灵犀言_高兴","灵犀言_生气","灵语冰_悲伤","灵语冰_厌恶","灵语冰_高兴","灵语冰_恐惧","灵语冰_惊讶","灵语冰_中性","灵语冰_生气","灵逸风_生气","灵逸风_悲伤","灵逸风_惊讶","灵逸风_中性","灵逸风_恐惧","灵逸风_高兴","灵逸风_厌恶","灵悦澜_中性","灵悦澜_高兴","灵悦澜_厌恶","灵悦澜_恐惧","灵悦澜_生气","灵悦澜_悲伤","灵悦澜_惊讶","灵惊鸿_厌恶","灵惊鸿_高兴","灵惊鸿_中性","灵惊鸿_惊讶","灵惊鸿_恐惧","灵惊鸿_生气","灵惊鸿_悲伤","灵御心_高兴","灵御心_中性","灵御心_生气","灵御心_恐惧","灵御心_厌恶","灵御心_惊讶","灵御心_悲伤","灵语恬_厌恶","灵语恬_高兴","灵语恬_恐惧","灵语恬_悲伤","灵语恬_惊讶","灵语恬_生气","灵语恬_中性","灵心恬_厌恶","灵心恬_惊讶","灵心恬_悲伤","灵心恬_中性","灵心恬_恐惧","灵心恬_高兴","灵心恬_生气","灵惜蕊_惊讶","灵惜蕊_厌恶","灵惜蕊_恐惧","灵惜蕊_高兴","灵惜蕊_中性","灵惜蕊_悲伤","灵惜蕊_生气","灵语萱_厌恶","灵语萱_高兴","灵语萱_惊讶","灵语萱_恐惧","灵语萱_生气","灵语萱_悲伤","灵语萱_中性","灵语烟_生气","灵语烟_恐惧","灵语烟_中性","灵语烟_厌恶","灵语烟_惊讶","灵语烟_高兴","灵语烟_悲伤","灵律雅_恐惧","灵律雅_生气","灵律雅_惊讶","灵律雅_高兴","灵律雅_厌恶","灵律雅_中性","灵律雅_悲伤","灵惊涛_厌恶","灵惊涛_恐惧","灵惊涛_高兴","灵惊涛_悲伤","灵惊涛_中性","灵惊涛_惊讶","灵惊涛_生气","灵寒陌_生气","灵寒陌_厌恶","灵寒陌_恐惧","灵寒陌_高兴","灵寒陌_中性","灵寒陌_惊讶","灵寒陌_悲伤","灵决冥_悲伤","灵决冥_厌恶","灵决冥_生气","灵决冥_中性","灵决冥_惊讶","灵决冥_恐惧","灵决冥_高兴","灵亦尘_中性","灵亦尘_厌恶","灵亦尘_高兴","灵亦尘_恐惧","灵亦尘_生气","灵亦尘_悲伤","灵亦尘_惊讶","灵语尘_生气","灵语尘_高兴","灵语尘_厌恶","灵语尘_惊讶","灵语尘_中性","灵语尘_悲伤","灵语尘_恐惧","灵慈萱_高兴","灵慈萱_厌恶","灵慈萱_惊讶","灵慈萱_生气","灵慈萱_中性","灵慈萱_悲伤","灵慈萱_恐惧","灵妙音_中性","灵妙音_悲伤","灵妙音_惊讶","灵妙音_厌恶","灵妙音_生气","灵妙音_高兴","灵妙音_恐惧","灵断尘_悲伤","灵断尘_高兴","灵断尘_惊讶","灵断尘_恐惧","灵断尘_中性","灵断尘_生气","灵断尘_厌恶","灵悦兮_高兴","灵悦兮_中性","灵悦兮_生气","灵悦兮_惊讶","灵悦兮_厌恶","灵悦兮_悲伤","灵悦兮_恐惧","灵若虚_恐惧","灵若虚_惊讶","灵若虚_中性","灵若虚_悲伤","灵若虚_高兴","灵若虚_厌恶","灵若虚_生气","灵熙婉_厌恶","灵熙婉_生气","灵熙婉_惊讶","灵熙婉_高兴","灵熙婉_中性","灵熙婉_恐惧","灵熙婉_悲伤","灵旭扬_中性","灵旭扬_生气","灵旭扬_恐惧","灵旭扬_高兴","灵旭扬_惊讶","灵旭扬_悲伤","灵旭扬_厌恶","灵阅川_生气","灵阅川_悲伤","灵阅川_高兴","灵阅川_厌恶","灵阅川_惊讶","灵阅川_中性","灵阅川_恐惧","灵未央_高兴","灵未央_中性","灵未央_惊讶","灵未央_悲伤","灵未央_厌恶","灵未央_恐惧","灵未央_生气","灵妩月_厌恶","灵妩月_生气","灵妩月_中性","灵妩月_惊讶","灵妩月_恐惧","灵妩月_高兴","灵妩月_悲伤","灵梦瑶_中性","灵梦瑶_恐惧","灵梦瑶_高兴","灵梦瑶_悲伤","灵梦瑶_惊讶","灵梦瑶_生气","灵妙声_中性","灵妙声_恐惧","灵妙声_高兴","灵妙声_悲伤","灵妙声_惊讶","灵妙声_生气","灵烈瑶_中性","灵烈瑶_厌恶","灵烈瑶_恐惧","灵烈瑶_悲伤","灵烈瑶_惊讶","灵烈瑶_生气","灵烈瑶_高兴","灵幽月_中性","灵幽月_厌恶","灵幽月_恐惧","灵幽月_悲伤","灵幽月_惊讶","灵幽月_生气","灵幽月_高兴","灵悦心_中性","灵悦心_厌恶","灵悦心_恐惧","灵悦心_悲伤","灵悦心_惊讶","灵悦心_生气","灵悦心_高兴","灵汐月_中性","灵汐月_厌恶","灵汐月_恐惧","灵汐月_悲伤","灵汐月_惊讶","灵汐月_生气","灵汐月_高兴","灵书意_中性","灵书意_厌恶","灵书意_恐惧","灵书意_悲伤","灵书意_惊讶","灵书意_生气","灵书意_高兴","灵知远_中性","灵知远_厌恶","灵知远_恐惧","灵知远_悲伤","灵知远_惊讶","灵知远_生气","灵知远_高兴","灵温言_中性","灵温言_厌恶","灵温言_恐惧","灵温言_悲伤","灵温言_惊讶","灵温言_生气","灵温言_高兴","灵傲尘_中性","灵傲尘_厌恶","灵傲尘_恐惧","灵傲尘_悲伤","灵傲尘_生气","灵傲尘_高兴","灵佑安_中性","灵佑安_厌恶","灵佑安_恐惧","灵佑安_悲伤","灵佑安_惊讶","灵佑安_生气","灵佑安_高兴","灵惜晨_中性","灵惜晨_厌恶","灵惜晨_恐惧","灵惜晨_悲伤","灵惜晨_惊讶","灵惜晨_生气","灵惜晨_高兴","灵宛溪_中性","灵宛溪_厌恶","灵宛溪_恐惧","灵宛溪_悲伤","灵宛溪_惊讶","灵宛溪_生气","灵宛溪_高兴","灵言澈_中性","灵言澈_厌恶","灵言澈_恐惧","灵言澈_悲伤","灵言澈_惊讶","灵言澈_生气","灵言澈_高兴","灵溯光_中性","灵溯光_厌恶","灵溯光_恐惧","灵溯光_悲伤","灵溯光_惊讶","灵溯光_生气","灵溯光_高兴","灵惊弦_中性","灵惊弦_厌恶","灵惊弦_恐惧","灵惊弦_悲伤","灵惊弦_惊讶","灵惊弦_生气","灵惊弦_高兴","灵嘉肴_中性","灵嘉肴_厌恶","灵嘉肴_恐惧","灵嘉肴_悲伤","灵嘉肴_惊讶","灵嘉肴_生气","灵嘉肴_高兴","灵黛嗔_中性","灵黛嗔_厌恶","灵黛嗔_恐惧","灵黛嗔_悲伤","灵黛嗔_惊讶","灵黛嗔_生气","灵黛嗔_高兴","灵孤影_中性","灵孤影_厌恶","灵孤影_恐惧","灵孤影_悲伤","灵孤影_惊讶","灵孤影_生气","灵孤影_高兴","灵雨汐_中性","灵雨汐_恐惧","灵雨汐_高兴","灵雨汐_悲伤","灵雨汐_惊讶","灵雨汐_生气","蜡笔小新_野原新之助 (小新)","蜡笔小新_野原美伢 (美伢)","小猪佩奇_佩奇","康熙王朝_康熙","西游记_唐僧","甄嬛传_四郎","潜伏_余则成","水浒传_武松","水浒传_潘金莲","雍正王朝_雍正"],required:!1,description:"Talker built-in voice name; ignored when reference audio is supplied."},{name:"reference_text",type:"string",required:!1,description:"Reference transcript enabling acoustic-prefix continuation; without it reference audio supplies speaker conditioning only."},{name:"language",type:"string",required:!1,description:"Talker output language; inferred from its input text when omitted."},{name:"seed",type:"int",required:!1,min:0,default:42,description:"Talker flow and reference-posterior sampling seed. Thinker generation is greedy."},{name:"guidance_scale",type:"float",required:!1,default:2,description:"Talker conditioned prediction plus guidance_scale times its difference from the null prediction."},{name:"sigma",type:"float",required:!1,default:.25,min:0,description:"Talker flow SDE noise scale."},{name:"temperature",type:"float",required:!1,default:0,min:0,description:"Talker flow sampling temperature; zero still uses seeded initial noise."},{name:"raw_text",type:"bool",required:!1,default:!1,description:"Synthesize text as one fragment without framework text chunking."},{name:"trim_silence",type:"bool",required:!1,default:!0,description:"Trim trailing low-energy 100-ms frames per Talker fragment, retaining a 300-ms tail."},{name:"text_chunk_size",type:"int",required:!1,min:1,default:100,description:"Talker text chunk budget in Unicode codepoints."},{name:"text_chunk_mode",type:"enum",required:!1,default:"tag_aware",values:["default","tag_aware","japanese","endline"],description:"Framework Talker text chunking policy."}],session:[{name:"disk_experts",type:"bool",required:!1,default:!1,description:"Keep Thinker expert weights outside GPU memory and stage routed experts into a bounded GPU cache; computation stays on the selected backend."},{name:"pin_experts",type:"bool",required:!1,default:!0,description:"With disk_experts, retain expert payloads in pinned host RAM instead of reading them from the GGUF on each cache miss. Defaults to false on Metal, which uses ordinary host staging."},{name:"expert_cache_size",type:"int",required:!1,default:8,min:8,max:128,description:"With disk_experts, number of GPU-resident expert slots per routed Thinker layer."},{name:"disk_expert_read_threads",type:"int",required:!1,default:1,min:1,max:64,description:"Host workers for copying selected GGUF experts into staging when disk_experts is enabled and pin_experts is false. Default 1 preserves serial reads; values above 1 use OpenMP or Apple dispatch."},{name:"reference_cache",type:"bool",required:!1,default:!0,description:"Reuse speaker features and seeded acoustic conditioning for the most recent reference waveform."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Ming-3.0-Audio-Tiny-GGUF",revision:"main",gated:!1}},packages:[{id:"ming3_audio_tiny_bf16",display_name:"Ming 3.0 Audio Tiny BF16",format:"gguf",precision:"bf16",default:!0,target_directory:"Ming-3.0-Audio-Tiny-GGUF",files:["ming-3.0-audio-tiny-bf16.gguf"]},{id:"ming3_audio_tiny_q8_0",display_name:"Ming 3.0 Audio Tiny Q8_0 Experts",format:"gguf",precision:"q8_0",target_directory:"Ming-3.0-Audio-Tiny-GGUF",files:["ming-3.0-audio-tiny-q8_0.gguf"]},{id:"ming3_audio_tiny_q4_k",display_name:"Ming 3.0 Audio Tiny Q4_K Experts",format:"gguf",precision:"q4_k",target_directory:"Ming-3.0-Audio-Tiny-GGUF",files:["ming-3.0-audio-tiny-q4_k.gguf"]}],dependencies:[],ui:{recommended_package:"ming3_audio_tiny_bf16",tags:["ASR","TTS","GGUF"],docs:["docs/models/ming3_audio.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",generation_config:"model:generation_config.json",talker_config:"model:talker/config.json",talker_llm_config:"model:talker/llm/config.json",talker_tokenizer_json:"model:talker/llm/tokenizer.json",talker_tokenizer_config:"model:talker/llm/tokenizer_config.json",vae_config:"model:talker/vae/config.json"},tensors:{thinker:{source:"weights:",prefix:"thinker"},talker:{source:"weights:",prefix:"talker"},vae:{source:"weights:",prefix:"vae"},speaker:{source:"weights:",prefix:"speaker"}}}]},vS={schema_version:1,family:"ming3_tts",display_name:"Ming 3.0 TTS 0.5B",description:"Multilingual continuous-latent speech synthesis with a Qwen backbone, flow-matching acoustic head, CAMPPlus speaker conditioning and an audio VAE.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline"],languages:["zh","en","ja","ko","de","fr","es"],capabilities:{tts:["long_form","speaker_reference","style_control","emotion_control","built_in_voices"],clone:["long_form","speaker_reference","style_control","emotion_control"],design:["voice_design"]},runtime:{tags:["gguf"]},options:{request:[{name:"template_name",type:"enum",required:!1,description:"Conditioning template; defaults to voice_design on that route, otherwise tts.",values:["tts","multilingual","basic","emotion","dialect","ip","voice_design","freeform"]},{name:"language",type:"string",required:!1,description:"Target language name or code; defaults to the request's language (the server's top-level language field, the CLI's --language). Required by multilingual; ignored by dialect."},{name:"instruct",type:"string",required:!1,description:"Voice description for voice_design; raw conditioning text for freeform or tts."},{name:"instruction_schema",type:"enum",required:!1,description:"Structured instruction field language; defaults to en for dialect, otherwise zh.",values:["en","zh"]},{name:"speed",type:"enum",required:!1,description:"Categorical speaking speed for the basic template, not waveform resampling.",values:["慢速","中速","快速"]},{name:"pitch",type:"enum",required:!1,description:"Categorical pitch for the basic template.",values:["低","中","高"]},{name:"volume",type:"enum",required:!1,description:"Categorical volume for the basic template.",values:["低","中","高"]},{name:"emotion",type:"string",required:!1,description:"Emotion label for the emotion template."},{name:"dialect",type:"enum",required:!1,description:"Dialect for the dialect template.",values:["chuanyu dialect","cantonese"]},{name:"voice_id",type:"enum",required:!1,description:"Built-in English voice for the ip template.",values:["US_Emma","US_James","UK_George","UK_Charlotte"]},{name:"reference_text",type:"string",required:!1,description:"Transcript accompanying voice_ref; enables the acoustic reference prefix. Without a transcript, only speaker conditioning is used."},{name:"speaker_embedding_file",type:"path_list",required:!1,description:"CAMPPlus embedding file or list, with shape [192] or [1, 192]. Supersedes voice_ref audio; zero_speaker_embedding takes precedence."},{name:"use_speaker_embedding",type:"bool",required:!1,default:!0,description:"Condition on the reference speaker embedding."},{name:"zero_speaker_embedding",type:"bool",required:!1,default:!1,description:"Use a zero projected speaker row instead of reference audio conditioning."},{name:"max_tokens",type:"int",required:!1,default:1e3,min:1,description:"Maximum generated acoustic patches per text chunk, also limited by the 512-position generation context."},{name:"guidance_scale",type:"float",required:!1,default:2,description:"Flow guidance: conditioned prediction plus guidance_scale times its difference from the null prediction."},{name:"sigma",type:"float",required:!1,default:.25,min:0,description:"Flow SDE noise scale."},{name:"temperature",type:"float",required:!1,default:0,min:0,description:"Flow sampling temperature; zero still uses seeded initial noise."},{name:"seed",type:"int",required:!1,default:1895,min:0,description:"Reference-posterior and generation noise seed."},{name:"raw_text",type:"bool",required:!1,default:!1,description:"Send the text as one synthesis fragment without frontend chunking."},{name:"text_chunk_size",type:"int",required:!1,min:1,description:"Framework long-form chunk budget in Unicode codepoints; default 50 when hanzi, kana and Hangul outnumber other letters and digits, otherwise 300 (120 for voice design and freeform, whose chunks after the first use the first generated chunk as their reference)."},{name:"text_chunk_mode",type:"enum",required:!1,default:"tag_aware",description:"Framework text chunking policy.",values:["default","tag_aware","japanese","endline"]},{name:"trim_silence",type:"bool",required:!1,default:!0,description:"Trim trailing low-energy 100-ms frames per fragment, retaining a 300-ms tail."}],session:[{name:"reference_cache",type:"bool",required:!1,default:!0,description:"Reuse prepared conditioning for the most recently used reference waveform."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Ming-3.0-TTS-0.5B-GGUF",revision:"main",gated:!1}},packages:[{id:"ming_3_0_tts_0_5b_bf16",display_name:"Ming 3.0 TTS 0.5B BF16",format:"gguf",precision:"bf16",default:!0,target_directory:"Ming-3.0-TTS-0.5B-GGUF",files:["ming-3.0-tts-0.5b-bf16.gguf"]},{id:"ming_3_0_tts_0_5b_q8_0",display_name:"Ming 3.0 TTS 0.5B Q8_0",format:"gguf",precision:"q8_0",default:!1,target_directory:"Ming-3.0-TTS-0.5B-GGUF",files:["ming-3.0-tts-0.5b-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"ming_3_0_tts_0_5b_bf16",tags:["TTS","GGUF"],docs:["docs/models/ming3_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{weights:"weights:",speaker:{source:"weights:",prefix:"speaker"}}}]},bS={schema_version:1,family:"minimax_h3",display_name:"MiniMax-H3",description:"MiniMax-H3 text-to-audio/video generation through the official T2VA pipeline: Qwen3-VL text conditioning, joint audio/video DiT denoising, and MiniMax-H3 audio/video VAE decode.",category:"audio_generation",status:"experimental",tasks:["tts","music","sfx"],modes:["offline"],languages:["auto"],capabilities:{tts:["style_control","multi_speaker"],music:["instrumental","style_control"],sfx:["prompt_generation"]},runtime:{tags:["cuda","gguf"]},ui:{recommended_package:"minimax_h3_q4_k",tags:["TTS","Music","SFX","GGUF"],docs:["docs/models/minimax_h3.md","docs/reports/minimax_h3_performance.md"]},options:{request:[{name:"num_inference_steps",type:"int",description:"Positive joint DiT denoising step count; default 50.",required:!1,min:1,default:50},{name:"seed",type:"int",description:"Unsigned 32-bit generation seed in [0, 4294967295] for deterministic initial latents; default 42.",required:!1,min:0,max:4294967295,default:42},{name:"height",type:"int",description:"Target video canvas height used by the joint T2VA latent layout; omitted or nonpositive values use 768. Smaller positive sizes are rounded up to the supported geometry.",required:!1,default:768},{name:"width",type:"int",description:"Target video canvas width used by the joint T2VA latent layout; omitted or nonpositive values use 1344. Smaller positive sizes are rounded up to the supported geometry.",required:!1,default:1344},{name:"num_frames",type:"int",description:"Target video frame count before H3 alignment; omitted or nonpositive values use 124. MiniMax-H3 video is 24 fps; positive counts are rounded to the supported temporal geometry.",required:!1,default:124},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; 1.0 matches the baseline T2VA audio run.",required:!1,default:1},{name:"sampler_mode",type:"enum",description:"Joint DiT sampler: euler, res_multistep, dpmpp_2m, or unipc.",values:["euler","res_multistep","dpmpp_2m","unipc"],required:!1,default:"euler"},{name:"negative_prompt",type:"string",description:"Negative prompt used by classifier-free guidance when guidance_scale is not 1.0.",required:!1,default:" "},{name:"flow_shift",type:"float",description:"Video FlowMatch scheduler shift.",required:!1,default:12},{name:"audio_flow_shift",type:"float",description:"Audio FlowMatch scheduler shift.",required:!1,default:3},{name:"return_video",type:"bool",description:"Decode and return RGB24 video frames as an output artifact.",required:!1,default:!1},{name:"text_layerwise",type:"bool",description:"Run the prompt encoder with scoped layer-group weights instead of a full prompt encoder weight store.",required:!1,default:!1},{name:"text_layerwise_batch",type:"int",description:"Prompt encoder layer-group size when text_layerwise is enabled.",required:!1,min:1,default:1},{name:"dit_layerwise",type:"bool",description:"Run the DiT denoiser with scoped prelude, block-group, and final weights instead of a full DiT weight store.",required:!1,default:!1},{name:"dit_layerwise_batch",type:"int",description:"DiT block-group size when dit_layerwise is enabled.",required:!1,min:1,default:1},{name:"dit_mlp_chunk_tokens",type:"int",description:"Token chunk size for the per-token DiT MLP in layerwise high-resolution mode. Zero disables chunking.",required:!1,min:0,default:0},{name:"dit_acceleration",type:"string",description:"Optional DiT acceleration mode: none, first_block_cache, or spectrum. Requires dit_layerwise=false and sampler_mode=euler; Spectrum additionally requires guidance_scale=1.",required:!1,default:"none"},{name:"first_block_cache_threshold",type:"float",description:"First-block cache residual-difference threshold.",required:!1,min:0,default:.1},{name:"first_block_cache_start_percent",type:"float",description:"Denoising progress fraction where first-block caching begins; must be below end_percent. Used to derive the sigma window when explicit sigma endpoints are omitted.",required:!1,min:0,max:1,default:.1},{name:"first_block_cache_end_percent",type:"float",description:"Denoising progress fraction where first-block caching ends; must exceed start_percent. Used to derive the sigma window when explicit sigma endpoints are omitted.",required:!1,min:0,max:1,default:.95},{name:"first_block_cache_start_sigma",type:"float",description:"Largest video sigma where first-block cache may be used. Supply together with first_block_cache_end_sigma; otherwise both endpoints are derived from the denoising progress fractions and schedule.",required:!1},{name:"first_block_cache_end_sigma",type:"float",description:"Smallest video sigma where first-block cache may be used. Supply together with first_block_cache_start_sigma; otherwise both endpoints are derived from the denoising progress fractions and schedule.",required:!1},{name:"first_block_cache_max_consecutive",type:"int",description:"Maximum consecutive first-block cache hits before forcing a full DiT step.",required:!1,min:1,default:2},{name:"spectrum_warmup_steps",type:"int",description:"Full DiT warmup steps before spectrum forecasting may skip steps.",required:!1,min:1,default:1},{name:"spectrum_initial_window",type:"float",description:"Initial spectrum forecast scheduling window.",required:!1,min:1,default:2},{name:"spectrum_flex_window",type:"float",description:"Spectrum forecast window growth after actual DiT steps.",required:!1,min:0,default:.75},{name:"spectrum_degree",type:"int",description:"Chebyshev polynomial degree for spectrum forecasting.",required:!1,min:0,default:1},{name:"spectrum_history_size",type:"int",description:"Maximum spectrum forecast history rows.",required:!1,min:1,default:8},{name:"spectrum_ridge_lambda",type:"float",description:"Ridge regularization for spectrum forecasting.",required:!1,min:0,default:.1}],session:[{name:"weight_context_mb",type:"int",description:"MiniMax-H3 staged weight context size in MiB.",required:!1,min:1,default:512},{name:"mem_saver",type:"bool",description:"Release staged DiT, audio VAE, and video VAE weights after their request phase instead of keeping them resident for the session. Prompt encoder weights are always request-scoped.",required:!1,default:!0}],load:[]},dependencies:[],package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"minimax_h3_q4_k",display_name:"MiniMax-H3 Q4_K GGUF",default:!0,format:"gguf",precision:"q4_k",target_directory:"MiniMax-H3-Q4-GGUF",files:["MiniMax-H3-Q4-GGUF/configuration.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/chat_template.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/merges.txt","MiniMax-H3-Q4-GGUF/FL2VA/processor/preprocessor_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/tokenizer.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/tokenizer_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/video_preprocessor_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/vocab.json","MiniMax-H3-Q4-GGUF/text_encoder_q4_k.gguf","MiniMax-H3-Q4-GGUF/dit.gguf","MiniMax-H3-Q4-GGUF/audio_vae_folded_f16.gguf","MiniMax-H3-Q4-GGUF/video_vae.gguf"],strip_prefix:"MiniMax-H3-Q4-GGUF"},{id:"minimax_h3_q4_k_int8_dit",display_name:"MiniMax-H3 Q4_K GGUF + INT8 ConvRot DiT",default:!1,format:"gguf",precision:"q4_k",target_directory:"MiniMax-H3-Q4-GGUF",files:["MiniMax-H3-Q4-GGUF/configuration.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/chat_template.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/merges.txt","MiniMax-H3-Q4-GGUF/FL2VA/processor/preprocessor_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/tokenizer.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/tokenizer_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/video_preprocessor_config.json","MiniMax-H3-Q4-GGUF/FL2VA/processor/vocab.json","MiniMax-H3-Q4-GGUF/text_encoder_q4_k.gguf","MiniMax-H3-Q4-GGUF/dit_int8.gguf","MiniMax-H3-Q4-GGUF/audio_vae_folded_f16.gguf","MiniMax-H3-Q4-GGUF/video_vae.gguf"],strip_prefix:"MiniMax-H3-Q4-GGUF"}],sources:[{format:"gguf",roots:{model:"."},files:{configuration:"model:configuration.json",tokenizer_config:"model:FL2VA/processor/tokenizer_config.json",tokenizer_json:"model:FL2VA/processor/tokenizer.json",vocab:"model:FL2VA/processor/vocab.json",merges:"model:FL2VA/processor/merges.txt",preprocessor_config:"model:FL2VA/processor/preprocessor_config.json"},tensors:{text_encoder_weights:"model:text_encoder_q4_k.gguf",dit_weights:"model:dit.gguf",audio_vae_weights:"model:audio_vae_folded_f16.gguf",video_vae_weights:"model:video_vae.gguf"}}]},yS={schema_version:1,family:"minimax_music3",display_name:"MiniMax Music 3",description:"MiniMax Music 3 text-to-music generation with lyrics conditioning.",category:"audio_generation",status:"experimental",tasks:["music"],modes:["offline"],languages:["auto"],capabilities:{music:["lyrics","style_control"]},runtime:{tags:["gguf"]},options:{request:[{name:"lyrics",type:"string",description:"Lyrics to sing. Structure tags such as [verse] and [chorus] are supported.",required:!0},{name:"duration_sec",type:"float",description:"Positive AR frame budget expressed in seconds; not a hard final waveform duration limit.",required:!1,min:.1,default:20},{name:"num_inference_steps",type:"int",description:"Flow matching Euler steps per chunk.",required:!1,min:1,default:30},{name:"guidance_scale",type:"float",description:"Flow transformer classifier-free guidance scale. Must be > 0.",required:!1,min:0,default:1.7},{name:"ar_guidance_scale",type:"float",description:"Autoregressive semantic and depth CFG scale. Must be > 0.",required:!1,min:0,default:1.5},{name:"top_k",type:"int",description:"Top-k sampling for semantic and residual code sampling.",required:!1,min:1,default:50},{name:"seed",type:"int",description:"Generation seed.",required:!1,min:0,default:0},{name:"flow_uncond_interval",type:"int",description:"Evaluate unconditional flow CFG every N-th step, reusing the guidance delta between evaluations. Values <= 1 disable reuse and evaluate both branches every step.",required:!1,default:1},{name:"flow_uncond_warmup",type:"int",description:"Initial flow steps that evaluate both CFG branches before guidance-delta reuse; nonpositive values add no warmup.",required:!1,default:2},{name:"ensemble_takes",type:"int",description:"Independent takes in a batched AR pass using consecutive seeds; flow/vocoder decode each take. Named outputs take_01 through take_NN are emitted only when ensemble_takes > 1; otherwise only primary audio is returned.",required:!1,min:1,max:16,default:1},{name:"ensemble_prefix_frames",type:"int",description:"Shared intro frames before ensemble takes fork, approximately 25 frames per second. Zero disables intro locking.",required:!1,min:0,default:0},{name:"flow_chunk_hop_frames",type:"int",description:"Flow chunk hop in AR frames, approximately 25 per second. Zero uses checkpoint configuration; positive values are capped at the configured chunk size.",required:!1,min:0,default:0}],session:[{name:"weight_type",type:"enum",values:["native","bf16","f16","q8_0","q4_0","q4_k"],description:"Shared weight storage type.",required:!1,default:"native"},{name:"language_model_gguf",type:"string",description:"Language model component GGUF file relative to the model root.",required:!1,default:"language_model_q4_0.gguf"},{name:"rvq_depth_decoder_gguf",type:"string",description:"RVQ depth decoder component GGUF file relative to the model root.",required:!1,default:"rvq_depth_decoder_q8_0.gguf"},{name:"flow_transformer_gguf",type:"string",description:"Flow transformer component GGUF file relative to the model root.",required:!1,default:"transformer_q4_0.gguf"},{name:"graph_arena_mb",type:"int",description:"Host graph-metadata arena size in MiB, not device workspace; legacy graph_context_mb remains accepted.",required:!1,min:1,default:32},{name:"weight_context_mb",type:"int",description:"Weight context size in MiB.",required:!1,min:1,default:32},{name:"mem_saver",type:"bool",description:"Load large generation stages only while they are needed to reduce peak VRAM.",required:!1,default:!0},{name:"perf_mode",type:"enum",values:["off","cuda_perf"],description:"Performance preset. cuda_perf selects attention-prefix buckets of 256 rows. Explicit controls override preset values.",required:!1,default:"off"},{name:"kv_cache_alignment",type:"int",description:"Attention-prefix bucket size. 1 preserves full-capacity attention; cuda_perf selects 256. Retains all valid history, but graph shapes may change sampled output. Explicit values override the preset.",required:!1,min:1},{name:"pipeline_overlap",type:"bool",description:"Overlap AR decoding with condition/flow/vocoder work on a second backend stream. Requires mem_saver=false; mem_saver=true is an error. Long requests and nondefault chunk hops use sequential execution.",required:!1,default:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/MiniMax-Music3-GGUF",revision:"main",gated:!1}},packages:[{id:"minimax_music3_q4_0",display_name:"MiniMax Music 3 Q4_0 GGUF",default:!0,format:"gguf",precision:"q4_0",target_directory:"MiniMax-Music3-GGUF",files:["config.json","config/language_model.json","config/rvq_depth_decoder.json","config/condition_encoder.json","config/transformer.json","config/vocoder.json","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","language_model_q4_0.gguf","rvq_depth_decoder_q8_0.gguf","condition_encoder.gguf","transformer_q4_0.gguf","vocoder.gguf"]},{id:"minimax_music3_q8_0",display_name:"MiniMax Music 3 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"MiniMax-Music3-GGUF",files:["config.json","config/language_model.json","config/rvq_depth_decoder.json","config/condition_encoder.json","config/transformer.json","config/vocoder.json","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","language_model_q8_0.gguf","rvq_depth_decoder_q8_0.gguf","condition_encoder.gguf","transformer_q8_0.gguf","vocoder.gguf"]},{id:"minimax_music3_bf16",display_name:"MiniMax Music 3 BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"MiniMax-Music3-GGUF",files:["config.json","config/language_model.json","config/rvq_depth_decoder.json","config/condition_encoder.json","config/transformer.json","config/vocoder.json","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json","language_model_bf16.gguf","rvq_depth_decoder_bf16.gguf","condition_encoder.gguf","transformer_bf16.gguf","vocoder.gguf"]}],dependencies:[],ui:{recommended_package:"minimax_music3_q4_0",tags:["Music","GGUF"],docs:["docs/models/minimax_music3.md","docs/music_generation.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:"."},files:{root_config:"model:config.json",language_model_config:"model:config/language_model.json",depth_decoder_config:"model:config/rvq_depth_decoder.json",condition_encoder_config:"model:config/condition_encoder.json",transformer_config:"model:config/transformer.json",vocoder_config:"model:config/vocoder.json",tokenizer_json:"model:tokenizer/tokenizer.json",tokenizer_config:"model:tokenizer/tokenizer_config.json"}},{format:"safetensors",roots:{model:"."},files:{root_config:"model:config.json",language_model_config:"model:config/language_model.json",depth_decoder_config:"model:config/rvq_depth_decoder.json",condition_encoder_config:"model:config/condition_encoder.json",transformer_config:"model:config/transformer.json",vocoder_config:"model:config/vocoder.json",tokenizer_json:"model:tokenizer/tokenizer.json",tokenizer_config:"model:tokenizer/tokenizer_config.json"},tensors:{language_model_weights:{source:"model:language_model/model.safetensors.index.json"},depth_decoder_weights:{source:"model:rvq_depth_decoder/diffusion_pytorch_model.safetensors"},condition_encoder_weights:{source:"model:condition_encoder/diffusion_pytorch_model.safetensors"},transformer_weights:{source:"model:transformer/diffusion_pytorch_model.safetensors.index.json"},vocoder_weights:{source:"model:vocoder/diffusion_pytorch_model.safetensors"}}}]},wS={family:"miocodec",display_name:"MioCodec",description:"Lightweight neural audio codec that encodes 44.1 kHz audio into a low-rate 25 Hz discrete token stream and decodes tokens with speaker conditioning for efficient speech modeling.",category:"audio_tools",status:"supported",tasks:["vc","s2s"],modes:["offline"],languages:["language_agnostic"],options:{request:[],session:[{name:"weight_type",type:"enum",description:"Weight storage type.",required:!1,preset:"weight_type_full",default:"f32"},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"constant_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"content_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"global_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"wave_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512}],load:[]},capabilities:{codec:["encode_decode"],vc:["speaker_reference"],s2s:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"miocodec_q8_0",tags:["Codec","VC","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"miocodec_q8_0",display_name:"MioCodec 25Hz 44.1kHz v2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MioCodec-25Hz-44.1kHz-v2-GGUF",files:["MioCodec-25Hz-44.1kHz-v2-GGUF/miocodec-25hz-44khz-v2-q8_0.gguf"],strip_prefix:"MioCodec-25Hz-44.1kHz-v2-GGUF"},{id:"miocodec_f16",display_name:"MioCodec 25Hz 44.1kHz v2 F16 GGUF",format:"gguf",precision:"f16",target_directory:"MioCodec-25Hz-44.1kHz-v2-GGUF",files:["MioCodec-25Hz-44.1kHz-v2-GGUF/miocodec-25hz-44khz-v2-f16.gguf"],strip_prefix:"MioCodec-25Hz-44.1kHz-v2-GGUF"},{id:"miocodec_orig",display_name:"MioCodec 25Hz 44.1kHz v2 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"MioCodec-25Hz-44.1kHz-v2-GGUF",files:["MioCodec-25Hz-44.1kHz-v2-GGUF/miocodec-25hz-44khz-v2-orig.gguf"],strip_prefix:"MioCodec-25Hz-44.1kHz-v2-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.yaml"},tensors:{weights:{source:"weights:",prefix:"weights"},wavlm_weights:{source:"weights:",prefix:"wavlm_weights"}}},{format:"safetensors",roots:{model:".",wavlm:"wavlm-base-plus-mlx"},files:{config:"model:config.yaml"},tensors:{weights:"model:model.safetensors",wavlm_weights:"wavlm:weights.safetensors"}}]},kS={family:"miotts",display_name:"MioTTS",description:"Lightweight LLM-based English and Japanese TTS family built on MioCodec, supporting low-latency speech generation and zero-shot voice cloning from short reference audio.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline"],languages:["en","ja"],options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated tokens; default 700.",required:!1,min:1},{name:"top_k",type:"int",description:"Generation control; defaults to the checkpoint config.",required:!1},{name:"top_p",type:"float",description:"Generation control; defaults to the checkpoint config.",required:!1,min:0,max:1},{name:"temperature",type:"float",description:"Generation control; defaults to the checkpoint config.",required:!1,min:0,max:2},{name:"repetition_penalty",type:"float",description:"Generation control; defaults to the checkpoint config.",required:!1,min:1,max:1.5},{name:"presence_penalty",type:"float",description:"Presence penalty; default 0.",required:!1,min:0,max:1},{name:"frequency_penalty",type:"float",description:"Frequency penalty; default 0.",required:!1,min:0,max:1},{name:"do_sample",type:"bool",description:"Generation control; defaults to the checkpoint config.",required:!1},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0,max:4294967295},{name:"best_of_n",type:"int",description:"Candidate count, capped by the session maximum; greater than one enables best-of-N.",required:!1,min:1},{name:"best_of_n_enabled",type:"bool",description:"Override the session best-of-N setting.",required:!1},{name:"best_of_n_language",type:"enum",description:"ASR language used to rank candidates.",required:!1,values:["auto","en","ja"]},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size; inherits the session setting.",required:!1,min:1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; defaults to native.",required:!1,preset:"weight_type_full"},{name:"codec_model_path",type:"path",description:"MioCodec model path; defaults to sibling MioCodec-25Hz-44.1kHz-v2.",required:!1},{name:"best_of_n_asr_model_path",type:"path",description:"ASR model path for candidate ranking; defaults to sibling Qwen3-ASR-0.6B.",required:!1},{name:"text_chunk_size",type:"int",description:"Default framework text chunk size; 120 when hanzi, kana and Hangul outnumber other letters and digits, otherwise 180.",required:!1},{name:"best_of_n_enabled",type:"bool",description:"Enable candidate generation and ASR ranking.",required:!1,default:!1},{name:"best_of_n_default",type:"int",description:"Default candidate count.",required:!1,min:1,default:1},{name:"best_of_n_max",type:"int",description:"Maximum candidate count.",required:!1,min:1,default:8},{name:"best_of_n_language",type:"enum",description:"ASR language used to rank candidates.",required:!1,values:["auto","en","ja"],default:"auto"},{name:"prefill_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:1024},{name:"decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"codec_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"codec_constant_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"global_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"wave_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512}],load:[]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"miotts_1_7b_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/miotts.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"miotts_1_7b_q8_0",display_name:"MioTTS 1.7B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MioTTS-1.7B-GGUF",files:["MioTTS-1.7B-GGUF/miotts-1.7b-q8_0.gguf"],strip_prefix:"MioTTS-1.7B-GGUF"},{id:"miotts_1_7b_bf16",display_name:"MioTTS 1.7B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"MioTTS-1.7B-GGUF",files:["MioTTS-1.7B-GGUF/miotts-1.7b-bf16.gguf"],strip_prefix:"MioTTS-1.7B-GGUF"},{id:"miotts_1_7b_orig",display_name:"MioTTS 1.7B Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"MioTTS-1.7B-GGUF",files:["MioTTS-1.7B-GGUF/miotts-1.7b-orig.gguf"],strip_prefix:"MioTTS-1.7B-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},optional_files:{tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt"},optional_files:{tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},xS={schema_version:1,family:"mira_tts",display_name:"MiraTTS",description:"MiraTTS is a community voice-cloning TTS model with a Qwen2 autoregressive speech-token generator, ECAPA/Perceiver speaker tokenizer, conditional acoustic processor, and DAC decoder.",category:"tts",status:"experimental",tasks:["tts","clone"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["speaker_reference"],clone:["speaker_reference"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum autoregressive speech tokens; default 1024.",required:!1,min:1,default:1024},{name:"temperature",type:"float",description:"Sampling temperature; default 0.8. Must be positive.",required:!1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling cutoff; default 50.",required:!1,min:1,default:50},{name:"top_p",type:"float",description:"Nucleus sampling probability; default 0.95. Must be positive.",required:!1,max:1,default:.95},{name:"min_p",type:"float",description:"Minimum probability relative to the most likely token; default 0.05.",required:!1,min:0,max:1,default:.05},{name:"repetition_penalty",type:"float",description:"Autoregressive repetition penalty; default 1.2.",required:!1,min:1,default:1.2},{name:"text_chunk_size",type:"int",description:"Maximum codepoints per progressively emitted streaming segment; default 160.",required:!1,min:1,default:160},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode used by streaming synthesis.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"seed",type:"int",description:"Sampling seed; omitted requests choose a random seed.",required:!1,min:0}],session:[{name:"reference_cache_slots",type:"int",description:"Encoded reference-voice cache slots; default 1. Set to 0 to disable reuse.",required:!1,min:0,default:1},{name:"backbone_weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"native",description:"Storage type for the Qwen2 language-model weights."},{name:"linear_weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"native",description:"Storage type for non-convolutional speaker, processor, and decoder weights."},{name:"conv_weight_type",type:"enum",required:!1,default:"f32",description:"Storage type for speaker and processor convolution weights. The DAC transposed-convolution decoder remains F32 for CUDA compatibility. Applies to the speaker encoder/acoustic processor; waveform decoder remains f32.",values:["native","f32","f16","bf16"]}],load:[]},packages:[],dependencies:[],ui:{tags:["TTS","Clone"],docs:["docs/models/mira_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{language_model:{source:"weights:",prefix:"language_model"},speaker_encoder:{source:"weights:",prefix:"speaker_encoder"},processor:{source:"weights:",prefix:"processor"},decoder:{source:"weights:",prefix:"decoder"},upsampler:{source:"weights:",prefix:"upsampler"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{language_model:"model:language_model.safetensors",speaker_encoder:"model:speaker_encoder.safetensors",processor:"model:processor.safetensors",decoder:"model:decoder.safetensors",upsampler:"model:upsampler.safetensors"}}]},SS={schema_version:1,family:"mms_forced_aligner",display_name:"Meta MMS-300M Forced Aligner",description:"Meta MMS-300M multilingual CTC forced aligner (Wav2Vec2ForCTC) that aligns an exact transcript to mono/stereo audio and returns word timestamps. The checkpoint covers 1,130 languages, but this port's native text normalization supports Dutch (nl/nld) and English (en/eng) Latin script only; text_normalization=pre_romanized accepts caller-supplied ASCII romanization, and unsupported non-Latin input is rejected. Checkpoint license: CC-BY-NC-4.0; GGUF conversion is local-only, no public redistribution is approved.",category:"speech_analysis",status:"community",tasks:["align"],modes:["offline"],languages:["multilingual"],capabilities:{align:["word_timestamps"]},dependencies:[],options:{request:[{name:"language",type:"string",description:"Language code. Built-in normalization supports nl/nld and en/eng; pre_romanized accepts any nonempty code.",required:!0},{name:"text_normalization",type:"enum",description:"Transcript normalization mode; latin handles Dutch/English Latin script natively, pre_romanized trusts caller-supplied ASCII romanization.",values:["latin","pre_romanized"],required:!1,default:"latin"},{name:"star_frequency",type:"enum",description:"Placement of the virtual CTC target between words (segment) or at transcript edges (edges); matches the reference default segment.",values:["segment","edges"],required:!1,default:"segment"},{name:"merge_threshold_sec",type:"float",description:"Close gaps at or below this threshold, rounded to alignment frames, by moving the later word start; word entries remain separate. Default 0.0 disables gap closure.",required:!1,min:0,default:0},{name:"return_timestamps",type:"bool",description:"Compatibility option; word timestamps are always returned, including when false.",required:!1,default:!0}],session:[{name:"emission_window_sec",type:"float",description:"Center emission window length in seconds used to split long waveforms; must be > 0 and at most 3600. Rounded 16 kHz sample count must be a multiple of 320 (20 ms); default 30.",required:!1,min:.02,max:3600,default:30},{name:"emission_context_sec",type:"float",description:"Left/right context appended to each emission window in seconds; must be nonnegative, at most 3600, and below emission_window_sec. Rounded 16 kHz sample count must be a multiple of 320 (20 ms); default 2.",required:!1,min:0,max:3600,default:2},{name:"max_alignment_cells",type:"int",description:"Hard cap on CTC DP cells (frames x states) allocated per request; alignment fails before allocation when exceeded; default 50000000.",required:!1,min:1,default:5e7},{name:"max_target_tokens",type:"int",description:"Hard cap on flattened CTC target tokens per request; default 8192.",required:!1,min:1,default:8192},{name:"weight_type",type:"enum",description:"Weight storage type; default native (tensors kept as stored in the checkpoint).",preset:"weight_type_conv",required:!1,default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"mms_forced_aligner_300m_f16",tags:["Align","GGUF"],docs:["docs/models/mms_forced_aligner.md","docs/speech_analysis.md","docs/gguf.md"]},package_defaults:{download:{kind:"unsupported",reason:"CC-BY-NC-4.0 checkpoint: convert locally with audiocpp_gguf; no public audio.cpp GGUF distribution is approved."}},packages:[{id:"mms_forced_aligner_300m_f16",display_name:"Meta MMS-300M Forced Aligner F16 GGUF",default:!0,format:"gguf",precision:"f16",target_directory:"MMS-Forced-Aligner-GGUF",files:["MMS-Forced-Aligner-GGUF/mms-forced-aligner-f16.gguf"],strip_prefix:"MMS-Forced-Aligner-GGUF"},{id:"mms_forced_aligner_300m_safetensors",display_name:"Meta MMS-300M Forced Aligner Safetensors",format:"safetensors",precision:"native",target_directory:"mms-300m-1130-forced-aligner",files:["config.json","model.safetensors","special_tokens_map.json","tokenizer_config.json","vocab.json"],download:{kind:"huggingface_snapshot",repo:"MahmoudAshraf/mms-300m-1130-forced-aligner",revision:"49402e9577b1158620820667c218cd494cc44486",gated:!1}},{id:"mms_forced_aligner_300m_q8_0",display_name:"Meta MMS-300M Forced Aligner Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"MMS-Forced-Aligner-GGUF",files:["MMS-Forced-Aligner-GGUF/mms-forced-aligner-q8_0.gguf"],strip_prefix:"MMS-Forced-Aligner-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",vocab:"model:vocab.json"},optional_files:{special_tokens_map:"model:special_tokens_map.json",tokenizer_config:"model:tokenizer_config.json",preprocessor_config:"model:preprocessor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",vocab:"model:vocab.json"},optional_files:{special_tokens_map:"model:special_tokens_map.json",tokenizer_config:"model:tokenizer_config.json",preprocessor_config:"model:preprocessor_config.json"},tensors:{weights:"model:model.safetensors"}}]},TS={schema_version:1,family:"moonshine_asr",display_name:"Moonshine Streaming ASR",description:"Moonshine tiny/small/medium streaming English speech recognition models.",category:"asr",status:"experimental",tasks:["asr"],modes:["offline","streaming"],languages:["en"],capabilities:{asr:["vad_chunking"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens. Defaults to audio-duration derived limit. Nonpositive values select the automatic budget.",required:!1,default:0},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio chunk in seconds. Must be positive and round to a nonempty sample count.",required:!1,default:60}],session:[{name:"exec_plan",type:"string",description:"JSON component execution plans. Component decoder accepts impl default/ggml/neon and optional backend. Default retains GGML on the session backend; neon requires ENGINE_ENABLE_NEON=ON and an AArch64 NEON CPU session. No artifacts or params are used.",required:!1,default:"{}"},{name:"weight_type",type:"enum",description:"Shared matmul weight storage type. Omitted uses native, except the CPU encoder with hidden size 620, 10 layers and decoder hidden size 512 uses f16. The decoder defaults to native unless explicitly overridden.",values:["native","f32","f16"],required:!1},{name:"conv_weight_type",type:"enum",description:"Frontend convolution weight storage type.",preset:"weight_type_conv",required:!1},{name:"decoder_weight_type",type:"enum",description:"Decoder matmul weight storage type; inherits an explicit weight_type setting, otherwise native.",values:["native","f32","f16"],required:!1},{name:"encoder_gelu",type:"enum",description:"Encoder GELU lowering.",values:["erf","exact","tanh","quick"],required:!1,default:"quick"},{name:"cpu_blas_scheduler",type:"bool",description:"Use BLAS/Accelerate for supported CPU encoder matmuls.",required:!1,default:!0},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB.",required:!1,min:1,default:256},{name:"graph_arena_mb",type:"int",description:"Graph arena size in MiB.",required:!1,min:1,default:512},{name:"vad_model_path",type:"path",description:"Silero VAD model path used by audio_chunk_mode=vad.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},runtime:{tags:["gguf","cpu","stream"]},ui:{recommended_package:"moonshine_streaming_tiny_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/asr.md","docs/models/moonshine_asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moonshine_streaming_tiny_q8_0",display_name:"Moonshine Streaming Tiny Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Moonshine-Streaming-GGUF",files:["Moonshine-Streaming-GGUF/moonshine-streaming-tiny-q8_0.gguf"],strip_prefix:"Moonshine-Streaming-GGUF"},{id:"moonshine_streaming_small_q8_0",display_name:"Moonshine Streaming Small Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Moonshine-Streaming-GGUF",files:["Moonshine-Streaming-GGUF/moonshine-streaming-small-q8_0.gguf"],strip_prefix:"Moonshine-Streaming-GGUF"},{id:"moonshine_streaming_medium_q8_0",display_name:"Moonshine Streaming Medium Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Moonshine-Streaming-GGUF",files:["Moonshine-Streaming-GGUF/moonshine-streaming-medium-q8_0.gguf"],strip_prefix:"Moonshine-Streaming-GGUF"},{id:"moonshine_streaming_tiny_safetensors",display_name:"Moonshine Streaming Tiny Safetensors",format:"safetensors",precision:"f32",target_directory:"moonshine-streaming-tiny",files:["config.json","tokenizer.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"moonshine-ai/moonshine-streaming-tiny",revision:"main",gated:!1}},{id:"moonshine_streaming_small_safetensors",display_name:"Moonshine Streaming Small Safetensors",format:"safetensors",precision:"f32",target_directory:"moonshine-streaming-small",files:["config.json","tokenizer.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"moonshine-ai/moonshine-streaming-small",revision:"main",gated:!1}},{id:"moonshine_streaming_medium_safetensors",display_name:"Moonshine Streaming Medium Safetensors",format:"safetensors",precision:"f32",target_directory:"moonshine-streaming-medium",files:["config.json","tokenizer.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"moonshine-ai/moonshine-streaming-medium",revision:"main",gated:!1}}],dependencies:[],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},$S={schema_version:1,family:"moss_transcribe_diarize",display_name:"MOSS-Transcribe-Diarize",description:"Joint transcription, speaker diarization, and timestamps across 50+ languages with a Whisper encoder and Qwen3 decoder.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["auto","50+ languages"],capabilities:{asr:["segments","speaker_turns"]},runtime:{tags:["gguf"]},options:{request:[{name:"max_tokens",type:"int",min:1,required:!1,description:"Maximum generated transcript tokens. Defaults to checkpoint generation_config.max_new_tokens; must be positive."},{name:"instruct",type:"string",required:!1,description:"Transcription instruction; empty uses the upstream diarization prompt."}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moss_transcribe_diarize_bf16",display_name:"MOSS-Transcribe-Diarize GGUF BF16",default:!0,format:"gguf",precision:"bf16",target_directory:"MOSS-Transcribe-Diarize-GGUF",files:["MOSS-Transcribe-Diarize-GGUF/moss-transcribe-diarize-bf16.gguf"],strip_prefix:"MOSS-Transcribe-Diarize-GGUF"},{id:"moss_transcribe_diarize_q8_0",display_name:"MOSS-Transcribe-Diarize GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"MOSS-Transcribe-Diarize-GGUF",files:["MOSS-Transcribe-Diarize-GGUF/moss-transcribe-diarize-q8_0.gguf"],strip_prefix:"MOSS-Transcribe-Diarize-GGUF"},{id:"moss_transcribe_diarize_q4_k",display_name:"MOSS-Transcribe-Diarize GGUF Q4_K",format:"gguf",precision:"q4_k",target_directory:"MOSS-Transcribe-Diarize-GGUF",files:["MOSS-Transcribe-Diarize-GGUF/moss-transcribe-diarize-q4_k.gguf"],strip_prefix:"MOSS-Transcribe-Diarize-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:[],recommended_package:"moss_transcribe_diarize_bf16"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",vocab:"model:vocab.json",merges:"model:merges.txt"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},qS={family:"moss_tts_local",display_name:"MOSS-TTS-Local",description:"Flagship MOSS-TTS model for high-fidelity 31-language and code-switched speech, zero-shot voice cloning, long-form generation, and fine-grained Pinyin, phoneme, and duration control.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline"],languages:["ar","cs","da","de","el","en","es","fa","fi","fr","he","hi","hu","it","ja","ko","mk","ms","nl","pl","pt","ro","ru","sv","sw","th","tl","tr","vi","yue","zh"],options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated audio frames.",required:!1,min:1,default:4096},{name:"do_sample",type:"bool",description:"Enable sampling.",required:!1,default:!0},{name:"temperature",type:"float",description:"Audio sampling temperature. Must be finite and positive when sampling.",required:!1,default:1.7},{name:"top_p",type:"float",description:"Audio nucleus sampling probability.",required:!1,default:.8},{name:"top_k",type:"int",description:"Audio top-k sampling limit.",required:!1,default:25},{name:"repetition_penalty",type:"float",description:"Audio repetition penalty. Must be finite and positive when token history is nonempty.",required:!1,default:1},{name:"text_temperature",type:"float",description:"Text sampling temperature. Must be finite and positive when sampling.",required:!1,default:1},{name:"text_top_p",type:"float",description:"Text nucleus sampling probability.",required:!1,default:1},{name:"text_top_k",type:"int",description:"Text top-k sampling limit.",required:!1,default:50},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size.",required:!1,default:2048,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,values:["default","tag_aware","japanese","endline"],default:"default"}],session:[{name:"weight_type",type:"enum",description:"Backbone weight storage; auto uses F32 on CPU, BF16 on CUDA, native on other backends.",required:!1,values:["auto","native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],default:"auto"},{name:"reference_cache_slots",type:"int",description:"Encoded reference cache slots; zero disables reuse.",required:!1,min:0,default:1}],load:[]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"moss_tts_local_v1_5_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/moss_tts_local.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moss_tts_local_v1_5_q8_0",display_name:"MOSS-TTS-Local v1.5 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MOSS-TTS-Local-v1.5-GGUF",files:["MOSS-TTS-Local-v1.5-GGUF/moss-tts-local-v1.5-q8_0.gguf"],strip_prefix:"MOSS-TTS-Local-v1.5-GGUF"},{id:"moss_tts_local_v1_5_bf16",display_name:"MOSS-TTS-Local v1.5 BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"MOSS-TTS-Local-v1.5-GGUF",files:["MOSS-TTS-Local-v1.5-GGUF/moss-tts-local-v1.5-bf16.gguf"],strip_prefix:"MOSS-TTS-Local-v1.5-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}]},GS={family:"moss_tts_nano",display_name:"MOSS-TTS-Nano",description:"Compact deployment-first MOSS-TTS model for real-time multilingual speech generation, lightweight integration, and zero-shot voice cloning.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["ar","cs","da","de","el","en","es","fa","fr","hu","it","ja","ko","pl","pt","ru","sv","tr","zh"],options:{request:[{name:"reference_text",type:"string",description:"Transcript for reference audio; a nonempty value requires voice reference audio.",required:!1,default:""},{name:"max_tokens",type:"int",description:"Maximum generated audio frames.",required:!1,min:1,default:300},{name:"active_codebooks",type:"int",description:"Active codebooks; defaults to the checkpoint n_vq. Must not exceed checkpoint n_vq; omitted uses n_vq.",required:!1,min:1},{name:"do_sample",type:"bool",description:"Enable sampling.",required:!1,default:!0},{name:"temperature",type:"float",description:"Audio sampling temperature. Must be positive, including when do_sample=false.",required:!1,default:1.7},{name:"top_p",type:"float",description:"Audio nucleus sampling probability.",required:!1,default:.8,min:0,max:1},{name:"top_k",type:"int",description:"Audio top-k sampling limit.",required:!1,default:25,min:0},{name:"repetition_penalty",type:"float",description:"Audio repetition penalty. Must be positive.",required:!1,default:1},{name:"text_temperature",type:"float",description:"Text sampling temperature. Must be positive, including when do_sample=false.",required:!1,default:1.5},{name:"text_top_p",type:"float",description:"Text nucleus sampling probability.",required:!1,default:1,min:0,max:1},{name:"text_top_k",type:"int",description:"Text top-k sampling limit.",required:!1,default:50,min:0},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size; default 50 when hanzi, kana and Hangul outnumber other letters and digits, otherwise 256.",required:!1,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",required:!1,values:["default","tag_aware","japanese","endline"],default:"default"}],session:[{name:"weight_type",type:"enum",description:"Weight storage type.",required:!1,preset:"weight_type_full",default:"native"},{name:"global_weight_type",type:"enum",description:"Global transformer weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"local_frame_weight_type",type:"enum",description:"Local frame decoder weight storage; inherits weight_type.",required:!1,preset:"weight_type_full"},{name:"prefill_mode",type:"enum",description:"How prompt rows are forwarded: one batched graph (default, fast) or one row at a time through the decode graph. single_row keeps quantized runs on a single kernel family for numerical self-consistency at a one-time prefill latency cost; see the model docs' quantization notes.",required:!1,values:["batched","single_row"],default:"batched"},{name:"global_prefill_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"global_decode_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128},{name:"global_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"local_frame_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"local_frame_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128},{name:"audio_tokenizer_encoder_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"audio_tokenizer_decoder_graph_arena_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"audio_tokenizer_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128}],load:[]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"moss_tts_nano_100m_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/moss_tts_nano.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moss_tts_nano_100m_q8_0",display_name:"MOSS-TTS-Nano 100M Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MOSS-TTS-Nano-100M-GGUF",files:["MOSS-TTS-Nano-100M-GGUF/moss-tts-nano-100m-q8_0.gguf"],strip_prefix:"MOSS-TTS-Nano-100M-GGUF"},{id:"moss_tts_nano_100m_bf16",display_name:"MOSS-TTS-Nano 100M BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"MOSS-TTS-Nano-100M-GGUF",files:["MOSS-TTS-Nano-100M-GGUF/moss-tts-nano-100m-bf16.gguf"],strip_prefix:"MOSS-TTS-Nano-100M-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_model:"model:tokenizer.model",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_model:"model:tokenizer.model",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}]},FS={schema_version:1,family:"moss_tts_v15",display_name:"MOSS-TTS-v1.5",description:"8B delay-pattern MOSS-TTS: zero-shot voice cloning from a short reference, 24 kHz, with an explicit duration budget.",category:"community",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en","zh"],capabilities:{tts:["speaker_reference","style_control","long_form"],clone:["speaker_reference"]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors.index.json",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}],options:{request:[{name:"min_frames",type:"int",required:!1,default:0,description:"Minimum generated audio frames per text chunk; nonpositive values derive a text-length-based floor. Separate from duration_frames conditioning."},{name:"max_frames",type:"int",required:!1,default:0,description:"Generated audio-frame ceiling per text chunk; nonpositive values derive a text-length-based ceiling. Runtime raises it to at least the effective min_frames plus the number of codebooks."},{name:"instruct",type:"string",required:!1,description:"Voice description. Followed only loosely on this checkpoint; a reference recording is far more reliable."},{name:"duration_frames",type:"int",required:!1,description:"Duration budget in codec frames at 12.5 a second, the model's own '- Tokens:' field. Nonpositive values disable duration conditioning."},{name:"language",type:"string",required:!1,description:"Full language name; the model does not understand codes like 'en'."},{name:"seed",type:"int",required:!1,description:"Reproduces a take exactly; default 0. Parsed as signed 32-bit integer then converted to uint32; negative values wrap.",default:0},{name:"text_temperature",type:"float",required:!1,default:1.5,description:"Text-token sampling temperature. Must be finite and positive when sampling."},{name:"temperature",type:"float",required:!1,description:"Audio sampling temperature; default 1.5. Must be finite and positive when sampling.",default:1.5},{name:"top_p",type:"float",required:!1,description:"Audio nucleus sampling cutoff; default 0.6.",default:.6},{name:"top_k",type:"int",required:!1,description:"Audio top-k; default 50.",default:50},{name:"repetition_penalty",type:"float",required:!1,description:"Audio repetition penalty; default 1.1. Must be finite and positive when history is nonempty.",default:1.1},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 200.",required:!1,min:1,default:200},{name:"text_chunk_mode",type:"enum",description:"Text chunking policy; word_budget also accepts default.",values:["word_budget","tag_aware","japanese","endline"],required:!1,default:"word_budget"}],session:[{name:"weight_type",type:"enum",values:["native","f32","bf16","q8_0"],required:!1,default:"native",description:"Backbone and head weight storage; default native, which keeps a GGUF package's own type. Forcing bf16 dequantises a quantised package and costs the VRAM the quantisation was meant to save. f16 is rejected: this backbone produces NaN in it."}],load:[]},ui:{tags:["TTS","Clone","GGUF"],docs:["docs/models/moss_tts_v15.md","docs/tts.md","docs/gguf.md"],recommended_package:"moss_tts_v15_q8_0_codec_f16"},packages:[{id:"moss_tts_v15_q8_0_codec_f16",display_name:"MOSS-TTS-v1.5 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MOSS-TTS-v1.5-GGUF",files:["moss_tts_v15_q8_0_codec_f16.gguf"]},{id:"moss_tts_v15_q4_k_codec_f16",display_name:"MOSS-TTS-v1.5 Q4_K GGUF",default:!1,format:"gguf",precision:"q4_k",target_directory:"MOSS-TTS-v1.5-GGUF",files:["moss_tts_v15_q4_k_codec_f16.gguf"]},{id:"moss_tts_v15_bf16_codec_f16",display_name:"MOSS-TTS-v1.5 BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"MOSS-TTS-v1.5-GGUF",files:["moss_tts_v15_bf16_codec_f16.gguf"]}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTS-v1.5-GGUF",revision:"main",gated:!1}},dependencies:[]},AS={schema_version:1,family:"moss_ttsd",display_name:"MOSS-TTSD",description:"8B delay-pattern dialogue TTS: speaker-tagged conversation in one take, with per-speaker zero-shot voice cloning. 24 kHz, 16 codebooks.",category:"community",status:"experimental",tasks:["tts","clone"],modes:["offline"],languages:["en","zh"],capabilities:{tts:["speaker_reference","multi_speaker","long_form"],clone:["speaker_reference","multi_speaker"]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors.index.json",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}],options:{request:[{name:"voice_samples",type:"string",required:!1,description:"Per-speaker reference WAV paths, comma separated and positional: the first is [S1], the second [S2]. Leave an entry empty to let that speaker be invented rather than cloned. Cannot be combined with voice_ref."},{name:"reference_text",type:"string",required:!1,description:"What the reference recordings say, speaker-tagged. Prepended to the dialogue so the continuation carries on from words it has already spoken."},{name:"language",type:"string",required:!1,description:"Full language name; the model does not understand codes like 'en'."},{name:"instruct",type:"string",required:!1,description:"Free-text direction for the delivery."},{name:"seed",type:"int",required:!1,description:"Reproduces a take exactly. Parsed as signed 32-bit integer then converted to uint32; negative values wrap."},{name:"text_temperature",type:"float",required:!1,default:1.5,description:"Text-token sampling temperature. Must be finite and positive when sampling."},{name:"temperature",type:"float",required:!1,min:0,default:1.5,description:"Audio sampling temperature; must be > 0, default 1.5."},{name:"top_p",type:"float",required:!1,min:0,default:.6,description:"Audio nucleus sampling cutoff."},{name:"top_k",type:"int",required:!1,default:50,description:"Audio top-k. Nonpositive values disable filtering."},{name:"repetition_penalty",type:"float",required:!1,min:0,default:1.1,description:"Audio repetition penalty; must be > 0. Checked when token history is present; default 1.1."},{name:"max_frames",type:"int",required:!1,description:"Ceiling on generated codec frames at 12.5/s; 0 derives one from the dialogue length. Nonpositive values derive an automatic ceiling."}],session:[{name:"weight_type",type:"enum",values:["native","f32","bf16","q8_0"],required:!1,default:"native",description:"Backbone and head weight storage; default native, which keeps a GGUF package's own type. Forcing bf16 dequantises a quantised package and costs the VRAM the quantisation was meant to save. f16 is rejected: this backbone produces NaN in it."}],load:[]},ui:{tags:["TTS","Clone","GGUF"],docs:["docs/models/moss_ttsd.md","docs/tts.md","docs/gguf.md"],recommended_package:"moss_ttsd_q8_0_codec_f16"},packages:[{id:"moss_ttsd_q8_0_codec_f16",display_name:"MOSS-TTSD Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"MOSS-TTSD-GGUF",download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTSD-GGUF"},files:["moss_ttsd_q8_0_codec_f16.gguf"]},{id:"moss_ttsd_q4_k_codec_f16",display_name:"MOSS-TTSD Q4_K GGUF (f16 heads)",default:!1,format:"gguf",precision:"q4_k",target_directory:"MOSS-TTSD-GGUF",download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTSD-GGUF"},files:["moss_ttsd_q4_k_codec_f16.gguf"]},{id:"moss_ttsd_bf16_codec_f16",display_name:"MOSS-TTSD BF16 GGUF",default:!1,format:"gguf",precision:"bf16",target_directory:"MOSS-TTSD-GGUF",download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTSD-GGUF"},files:["moss_ttsd_bf16_codec_f16.gguf"]}],package_defaults:{download:{kind:"huggingface_snapshot",repo:"christopherthompson81/MOSS-TTS-v1.5-GGUF",revision:"main",gated:!1}},dependencies:[]},CS={family:"moss_voicegen",display_name:"MOSS-VoiceGenerator",description:"MOSS voice design model: creates a speaker from a written instruction instead of a reference recording, then speaks the supplied text in that voice.",category:"community",status:"community",tasks:["design"],modes:["offline"],languages:["en","zh"],capabilities:{design:["voice_design"]},options:{request:[{name:"min_frames",type:"int",required:!1,default:0,description:"Minimum generated audio frames per text chunk; nonpositive values derive a text-length-based floor."},{name:"max_frames",type:"int",required:!1,default:0,description:"Generated audio-frame ceiling per text chunk; nonpositive values derive a text-length-based ceiling. Runtime raises it to at least the effective min_frames plus the number of codebooks."},{name:"instruct",type:"string",required:!1,description:"Voice description: timbre, age, pace, emotion."},{name:"text_temperature",type:"float",required:!1,default:1.5,description:"Text-token sampling temperature. Must be finite and positive when sampling."},{name:"language",type:"string",description:"Optional full language name, such as English or Chinese; not an ISO language code.",required:!1},{name:"seed",type:"int",description:"Generation seed; later text chunks add their chunk index. Parsed as signed 32-bit integer then converted to uint32; negative values wrap.",required:!1,default:0},{name:"temperature",type:"float",description:"Audio-token sampling temperature. Must be finite and positive when sampling.",required:!1,default:1.5},{name:"top_p",type:"float",description:"Audio-token nucleus sampling cutoff.",required:!1,default:.6},{name:"top_k",type:"int",description:"Audio-token top-k sampling limit.",required:!1,default:50},{name:"repetition_penalty",type:"float",description:"Audio-token repetition penalty. Must be finite and positive when history is nonempty.",required:!1,default:1.1},{name:"text_chunk_size",type:"int",description:"Maximum characters per generated text chunk; must be positive.",required:!1,min:1,default:200},{name:"text_chunk_mode",type:"enum",description:"Text chunking policy.",required:!1,preset:"text_chunk_mode_full",default:"word_budget"}],session:[{name:"weight_type",type:"enum",description:"Backbone weight storage. f16 is not supported.",required:!1,values:["native","f32","bf16","q8_0"],default:"bf16"}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"moss_voicegen_bf16_codec_f16_decode",tags:["Voice Design","GGUF"],docs:["docs/models/moss_voicegen.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"moss_voicegen_bf16_codec_f16_decode",display_name:"MOSS-VoiceGenerator BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"MOSS-VoiceGenerator-GGUF",files:["MOSS-VoiceGenerator-GGUF/moss_voicegen_bf16_codec_f16_decode.gguf"],strip_prefix:"MOSS-VoiceGenerator-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"model:audio_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:".",audio_tokenizer:"audio_tokenizer"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_merges:"model:merges.txt",audio_tokenizer_config:"audio_tokenizer:config.json"},tensors:{model_weights:"model:model.safetensors",audio_tokenizer_weights:"audio_tokenizer:model.safetensors.index.json"}}]},MS={schema_version:1,family:"mossformer2",display_name:"MossFormer2",description:"MossFormer2 overlapping speech separation at 16 kHz.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Separation window duration; zero selects whole-file inference.",min:0,default:2,required:!1},{name:"audio_chunk_overlap_sec",type:"float",description:"Overlap between adjacent audio chunks, in seconds; must be smaller than audio_chunk_duration_sec when chunking is enabled. Recommended: 25% of audio_chunk_duration_sec, matching the official Python settings. Overlapping edges are trimmed rather than averaged. Ignored for whole-file inference.",min:0,default:.5,required:!1},{name:"normalize_output",type:"bool",description:"Match each trimmed track RMS to the input as in ClearVoice's NumPy interface.",default:!0,required:!1}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"mossformer2_ss_16k_f32",display_name:"MossFormer2 SS 16K F32",default:!0,format:"gguf",precision:"f32",target_directory:"MossFormer2-GGUF",files:["MossFormer2-GGUF/mossformer2-ss-16k-f32.gguf"],strip_prefix:"MossFormer2-GGUF"},{id:"mossformer2_ss_16k_f16",display_name:"MossFormer2 SS 16K F16",default:!1,format:"gguf",precision:"f16",target_directory:"MossFormer2-GGUF",files:["MossFormer2-GGUF/mossformer2-ss-16k-f16.gguf"],strip_prefix:"MossFormer2-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/mossformer2.md"],recommended_package:"mossformer2_ss_16k_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},ES={schema_version:1,family:"muscriptor",display_name:"MuScriptor",description:"MuScriptor is an audio-to-symbolic model that converts music audio into symbolic note events or MIDI files, with instrument constraints, sampling, beam search, batch chunk decoding, and streaming final-result output.",category:"audio_tools",status:"supported",tasks:["midi"],modes:["offline","streaming"],languages:["music"],runtime:{tags:["gguf","stream"]},capabilities:{},options:{request:[{name:"instruments",type:"string",description:"Comma-separated instrument group names to constrain generated MIDI events; empty allows all instruments.",required:!1,default:""},{name:"output_format",type:"enum",description:"Primary output serialization written by --out; midi writes a MIDI file, json writes generated note events. Default midi.",values:["midi","json"],required:!1,default:"midi"},{name:"max_tokens",type:"int",description:"Maximum generated MIDI-event token count per chunk; default 2000.",required:!1,min:1,default:2e3},{name:"do_sample",type:"bool",description:"Use temperature sampling instead of greedy token selection; default false.",required:!1,default:!1},{name:"temperature",type:"float",description:"Sampling temperature when do_sample=true; 0 is accepted for compatibility and behaves deterministically, default 1.0.",required:!1,min:0,default:1},{name:"guidance_scale",type:"float",description:"Classifier-free guidance coefficient; 1 disables CFG, default 1.0.",required:!1,default:1},{name:"batch_size",type:"int",description:"Number of audio chunks processed per batch when prelude_forcing=false; default 1.",required:!1,min:1,default:1},{name:"num_beams",type:"int",description:"Beam-search width; 1 disables beam search, default 1. Beam search requires guidance_scale=1, do_sample=false, and an actual graph batch of one.",required:!1,min:1,default:1},{name:"prelude_forcing",type:"bool",description:"Force open-note prelude tokens between sequential chunks; default true.",required:!1,default:!0},{name:"seed",type:"int",description:"Sampling seed; default 0. Parsed as int64 and converted to uint64; negative values wrap.",required:!1,default:0}],session:[{name:"weight_type",type:"enum",description:"Transformer weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"perf_mode",type:"enum",description:"Decoder attention mode; flash_attention uses the CUDA fast path, off keeps the exact attention path. Default flash_attention.",values:["off","flash_attention"],required:!1,default:"flash_attention"},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"conditioning_graph_arena_mb",type:"int",description:"Condition graph arena size in MiB; default 128.",required:!1,min:1,default:128},{name:"decoder_prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph arena size in MiB; default 768.",required:!1,min:1,default:768},{name:"decoder_decode_graph_arena_mb",type:"int",description:"Decoder cached-step graph arena size in MiB; default 512.",required:!1,min:1,default:512}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"muscriptor_small_f32",display_name:"MuScriptor Small F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"MuScriptor-Small-GGUF",files:["MuScriptor-Small-GGUF/muscriptor-small-f32.gguf"],strip_prefix:"MuScriptor-Small-GGUF"}],dependencies:[],ui:{recommended_package:"muscriptor_small_f32",tags:["Music","MIDI","GGUF","Stream"],docs:["docs/models/muscriptor.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},zS={schema_version:1,family:"nemotron_3_diar",display_name:"Nemotron 3 Diarization",description:"NVIDIA eight-speaker streaming diarization model with arrival-order speaker identities and configurable latency profiles.",category:"speech_analysis",status:"supported",tasks:["diar"],modes:["offline","streaming"],languages:["multilingual"],capabilities:{diar:["speaker_turns"]},dependencies:[],options:{request:[{name:"speaker_threshold",type:"float",description:"Speaker activity threshold used for turn decoding.",required:!1,min:0,max:1,default:.5},{name:"speaker_min_frames",type:"int",description:"Minimum decoded turn duration in 10 ms output frames.",required:!1,min:0,default:0},{name:"speaker_pad_frames",type:"int",description:"Padding applied to decoded turns in 10 ms output frames.",required:!1,min:0,default:0},{name:"return_frame_probabilities",type:"bool",description:"Attach the raw 10 ms speaker-activity timeline as the speaker_probabilities.safetensors artifact (F32 [frames, speakers] plus streaming-geometry metadata), the input for nemotron_asr speaker tagging.",required:!1,default:!1}],session:[{name:"latency_profile",type:"enum",description:"Streaming latency profile: the official very_high, low, very_low and ultra_low presets, asr_la0/3/6/13 for nemotron_asr speaker masking at that ASR lookahead, or custom.",values:["very_high","low","very_low","ultra_low","asr_la0","asr_la3","asr_la6","asr_la13","custom"],required:!1,default:"very_high"},{name:"spkcache_len",type:"int",description:"Speaker-cache length in 80 ms encoder frames for the custom profile.",required:!1,min:16},{name:"fifo_len",type:"int",description:"FIFO length in 80 ms encoder frames for the custom profile.",required:!1,min:0},{name:"chunk_len",type:"int",description:"Chunk length in 80 ms encoder frames for the custom profile.",required:!1,min:1},{name:"chunk_right_context",type:"int",description:"Future context in 80 ms encoder frames for the custom profile.",required:!1,min:0},{name:"spkcache_update_period",type:"int",description:"FIFO-to-cache update period in 80 ms encoder frames for the custom profile.",required:!1,min:1},{name:"attention",type:"enum",values:["auto","flash","eager"],description:"Encoder attention lowering; auto uses flash attention where the backend supports it.",required:!1,default:"auto"},{name:"graph_arena_mb",type:"int",description:"Inference graph arena size in MiB.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight context size in MiB.",required:!1,min:1,default:1024},{name:"weight_type",type:"enum",description:"Default model weight storage type.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"nemotron_3_diar_bf16",tags:["Diar","Stream","GGUF"],docs:["docs/models/nemotron_3_diar.md","docs/speech_analysis.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Nemotron-3-Diarization-GGUF",revision:"main",gated:!1}},packages:[{id:"nemotron_3_diar_bf16",display_name:"Nemotron 3 Diarization BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"Nemotron-3-Diarization-GGUF",files:["nemotron-3-diarization-bf16.gguf"]},{id:"nemotron_3_diar_q8_0",display_name:"Nemotron 3 Diarization Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Nemotron-3-Diarization-GGUF",files:["nemotron-3-diarization-q8_0.gguf"]}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"model:model.safetensors"}}]},US={schema_version:1,family:"nemotron_asr",display_name:"Nemotron 3.5 ASR",description:"NVIDIA 600M streaming ASR model for low-latency and batch transcription across 40 language-locales, with native punctuation, capitalization, automatic language detection, and configurable chunk sizes.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["ar-AR","bg-BG","cs-CZ","da-DK","de-DE","el-GR","en-GB","en-US","es-ES","es-US","et-EE","fi-FI","fr-CA","fr-FR","he-IL","hi-IN","hr-HR","hu-HU","it-IT","ja-JP","ko-KR","lt-LT","lv-LV","mt-MT","nb-NO","nl-NL","nn-NO","pl-PL","pt-BR","pt-PT","ro-RO","ru-RU","sk-SK","sl-SI","sv-SE","th-TH","tr-TR","uk-UA","vi-VN","zh-CN"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"ASR prompt language such as en-US, da-DK, or auto; default is the model's default prompt.",required:!1},{name:"lookahead_tokens",type:"int",description:"Chunk-limited encoder right context in 80 ms frames; supported values and the default come from processor_config (0, 3, 6 or 13; default 3 for the published model). In masked speaker mode, omission derives lookahead from diarizer geometry (13 fallback).",required:!1,min:0},{name:"max_tokens",type:"int",description:"Maximum RNNT generated tokens; 0 or omitted uses the model-derived limit.",required:!1,min:0,default:0},{name:"keep_language_tags",type:"bool",description:"Keep language tag tokens in decoded text; default false.",required:!1,default:!1},{name:"return_timestamps",type:"bool",description:"Compatibility/advisory flag; false does not suppress decoder token timestamps.",required:!1,default:!1},{name:"streaming",type:"bool",description:"Request a streaming run; must be false for offline sessions.",required:!1,default:!1},{name:"speaker_probabilities",type:"path",description:"nemotron_3_diar speaker_probabilities.safetensors for the same audio (diarize with return_frame_probabilities=true). Setting it enables speaker-tagged output: speaker turns with text and a SegLST artifact.",required:!1},{name:"speaker_mode",type:"enum",values:["masked","attribution"],description:"masked runs one ASR stream per active speaker on speaker-masked features (NeMo masked multitalker ASR) and transcribes overlapping speech; attribution assigns each word of one transcript to the most active speaker and is cheaper.",required:!1,default:"masked"},{name:"speaker_mask",type:"enum",values:["mel","audio"],description:"Masked mode only: mask log-mel features (NeMo mask_features) or zero the waveform of inactive 80 ms frames.",required:!1,default:"mel"},{name:"speaker_segment_gap_sec",type:"float",description:"Start a new segment for a speaker after a pause longer than this; default 1.0 (NeMo sent_break_sec).",required:!1,min:0,default:1},{name:"speaker_segment_max_sec",type:"float",description:"Streaming only: force-close a speaker-turn event after this many seconds; the final result keeps the full segments. Default 10. Must be positive.",required:!1,default:10}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"matmul_weight_type",type:"enum",description:"Encoder and decoder matmul weight storage type (native, f32, f16, bf16 or q8_0); defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type (native, f32 or f16); default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 3072.",required:!1,min:1,default:3072},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"decoder_graph_arena_mb",type:"int",description:"Decoder graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"mem_saver",type:"bool",description:"Release the offline encoder graph after each offline request; default false.",required:!1,default:!1}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"nemotron_asr_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"nemotron_asr_q8_0",display_name:"Nemotron 3.5 ASR Streaming 0.6B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Nemotron-3.5-ASR-Streaming-0.6B-GGUF",files:["Nemotron-3.5-ASR-Streaming-0.6B-GGUF/nemotron-3.5-asr-streaming-0.6b-q8_0.gguf"],strip_prefix:"Nemotron-3.5-ASR-Streaming-0.6B-GGUF"},{id:"nemotron_asr_f16",display_name:"Nemotron 3.5 ASR Streaming 0.6B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Nemotron-3.5-ASR-Streaming-0.6B-GGUF",files:["Nemotron-3.5-ASR-Streaming-0.6B-GGUF/nemotron-3.5-asr-streaming-0.6b-f16.gguf"],strip_prefix:"Nemotron-3.5-ASR-Streaming-0.6B-GGUF"},{id:"nemotron_asr_safetensors",display_name:"Nemotron 3.5 ASR Streaming 0.6B Safetensors",format:"safetensors",precision:"native",target_directory:"nemotron-3.5-asr-streaming-0.6b",files:["config.json","model.safetensors","processor_config.json","tokenizer.json"],download:{kind:"huggingface_snapshot",repo:"nvidia/nemotron-3.5-asr-streaming-0.6b"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},BS={schema_version:1,family:"neutts",display_name:"NeuTTS",description:"NeuTTS is an English text-to-speech family from Neuphonic. The current 2E package uses a Qwen3-style autoregressive speech-token backbone, NeuCodec waveform decoding, built-in speaker prompts, and emotion-token control.",category:"tts",status:"supported",tasks:["tts"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf","stream"]},capabilities:{tts:["built_in_voices","emotion_control","long_form"]},options:{request:[{name:"voice_id",type:"enum",description:"Built-in NeuTTS speaker prompt; default emily.",values:["dave","emily","greta","jo","juliette","mateo","paul","sophie","steven"],required:!1,default:"emily"},{name:"emotion",type:"enum",description:"Optional emotion token inserted between reference text and target text; neutral inserts no emotion token.",values:["angry","disgusted","sad","happy","fearful","neutral","surprised"],required:!1,default:"neutral"},{name:"max_tokens",type:"int",description:"Maximum generated speech-token count for the autoregressive generator; 0 uses the remaining model context, default 0. Total generation context is capped at min(checkpoint context, 2048).",required:!1,min:0,default:0},{name:"min_tokens",type:"int",description:"Minimum generated speech-token count before EOS may stop generation; default 50.",required:!1,min:0,default:50},{name:"temperature",type:"float",description:"Autoregressive sampling temperature; must be > 0, default 1.0.",required:!1,min:0,default:1},{name:"top_k",type:"int",description:"Autoregressive top-k sampling limit; default 50.",required:!1,min:1,default:50},{name:"seed",type:"int",description:"Autoregressive sampling seed; omitted requests choose a random seed.",required:!1,min:0},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode for long-form synthesis.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 600.",required:!1,min:1,default:600}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type for the backbone and codec decoder; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"generator_weight_type",type:"enum",description:"Generator weight storage; inherits explicit weight_type, otherwise F32 on CPU and native on other backends.",preset:"weight_type_full",required:!1},{name:"codec_weight_type",type:"enum",description:"NeuCodec decoder matmul weight storage type; defaults to weight_type when set, otherwise native.",preset:"weight_type_full",required:!1},{name:"codec_conv_weight_type",type:"enum",description:"NeuCodec convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"runtime_graph_arena_mb",type:"int",description:"Reusable ggml graph arena size in MiB for NeuTTS runtime graphs; default 1024.",required:!1,min:1,default:1024}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"neutts_2e_orig",display_name:"NeuTTS 2E Original-Precision GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"NeuTTS-2E-GGUF",files:["NeuTTS-2E-GGUF/neutts-2e-orig.gguf"],strip_prefix:"NeuTTS-2E-GGUF"}],dependencies:[],ui:{recommended_package:"neutts_2e_orig",tags:["TTS","GGUF","Stream"],docs:["docs/tts.md","docs/models/neutts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",chat_template:"model:chat_template.jinja",codec_config:"model:neucodec_config.json",codec_preprocessor_config:"model:neucodec_preprocessor_config.json",speaker_text_dave:"model:samples/dave.txt",speaker_text_emily:"model:samples/emily.txt",speaker_text_greta:"model:samples/greta.txt",speaker_text_jo:"model:samples/jo.txt",speaker_text_juliette:"model:samples/juliette.txt",speaker_text_mateo:"model:samples/mateo.txt",speaker_text_paul:"model:samples/paul.txt",speaker_text_sophie:"model:samples/sophie.txt",speaker_text_steven:"model:samples/steven.txt"},tensors:{backbone:{source:"weights:",prefix:"backbone"},codec:{source:"weights:",prefix:"codec"},speaker_prompts:{source:"weights:",prefix:"speaker_prompts"}}},{format:"safetensors",roots:{model:".",codec:"../NeuCodec"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",chat_template:"model:chat_template.jinja",codec_config:"codec:config.json",codec_preprocessor_config:"codec:preprocessor_config.json",speaker_text_dave:"model:samples/dave.txt",speaker_text_emily:"model:samples/emily.txt",speaker_text_greta:"model:samples/greta.txt",speaker_text_jo:"model:samples/jo.txt",speaker_text_juliette:"model:samples/juliette.txt",speaker_text_mateo:"model:samples/mateo.txt",speaker_text_paul:"model:samples/paul.txt",speaker_text_sophie:"model:samples/sophie.txt",speaker_text_steven:"model:samples/steven.txt"},tensors:{backbone:"model:model.safetensors",codec:"codec:model.safetensors",speaker_prompts:"model:samples/speaker_prompts.safetensors"}}]},RS={family:"niagara_asr",schema_version:1,display_name:"Niagara ASR",description:"ABR Niagara English batch ASR state-space models with attention, greedy CTC decoding, and SentencePiece tokenization.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Compatibility-only; recognition is English and output is always labelled en.",required:!1,default:"en"},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode.",values:["none"],required:!1,default:"none"}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage type.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"]},{name:"graph_arena_mb",type:"int",description:"Inference graph arena size in MiB.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight descriptor context size in MiB.",required:!1,min:1,default:256}],load:[]},runtime:{tags:["gguf","cpu"]},ui:{recommended_package:"niagara_19m_f32",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"],summary:"ABR Niagara compact English speech recognition."},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf"}},packages:[{id:"niagara_19m_f32",display_name:"Niagara 19M Batch English F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"Niagara-ASR-GGUF",files:["Niagara-ASR-GGUF/niagara-19m-batch.en-f32.gguf"],strip_prefix:"Niagara-ASR-GGUF"},{id:"niagara_38m_f32",display_name:"Niagara 38M Batch English F32 GGUF",format:"gguf",precision:"f32",target_directory:"Niagara-ASR-GGUF",files:["Niagara-ASR-GGUF/niagara-38m-batch.en-f32.gguf"],strip_prefix:"Niagara-ASR-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",preprocessor_config:"model:preprocessor_config.json",tokenizer_spm:"model:sentencepiece.model"},tensors:{weights:"weights:"}}]},jS={family:"omnivoice",display_name:"OmniVoice",description:"Massively multilingual zero-shot TTS model from k2-fsa for 600+ languages, supporting short-reference voice cloning, attribute-based voice design, pronunciation controls, and nonverbal tags.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["600+ languages"],capabilities:{clone:["speaker_reference"],design:["voice_design"]},options:{request:[{name:"language",type:"string",description:"Synthesis language code or label; omitted uses automatic language selection.",required:!1},{name:"reference_text",type:"string",description:"Transcript for speaker reference audio used in voice cloning.",required:!1},{name:"instruct",type:"string",description:"Voice-design instruction such as speaker attributes, accent, style, or delivery.",required:!1},{name:"seed",type:"int",description:"Generation seed for reproducible output; omitted value keeps the session RNG state.",required:!1,min:0,max:4294967295},{name:"num_inference_steps",type:"int",description:"Diffusion language-model inference steps; default 32.",required:!1,min:1,default:32},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; default 2.0.",required:!1,default:2},{name:"speed",type:"float",description:"Speech speed multiplier used for target-length estimation; default 1.0.",required:!1,default:1},{name:"duration_sec",type:"float",description:"Target output duration in seconds; omitted uses the model's estimated duration.",required:!1,min:0},{name:"shift",type:"float",description:"Diffusion timestep schedule shift; default 0.1.",required:!1,default:.1},{name:"denoise",type:"bool",description:"Add the denoise control token when reference audio is present; default true.",required:!1,default:!0},{name:"preprocess_prompt",type:"bool",description:"Preprocess speaker reference audio before tokenization; default true.",required:!1,default:!0},{name:"postprocess_output",type:"bool",description:"Apply output postprocessing and trimming; default true.",required:!1,default:!0},{name:"layer_penalty_factor",type:"float",description:"Layer-order penalty used while selecting masked audio-codebook positions; default 5.0.",required:!1,default:5},{name:"position_temperature",type:"float",description:"Gumbel temperature for masked-position selection; default 5.0.",required:!1,default:5},{name:"class_temperature",type:"float",description:"Audio-token class sampling temperature; default 0 for greedy class selection.",required:!1,min:0,default:0},{name:"audio_chunk_duration_sec",type:"float",description:"Target chunk duration for automatic long-form splitting; default 15 seconds.",required:!1,min:0,default:15},{name:"audio_chunk_threshold_sec",type:"float",description:"Estimated duration above which long-form generation is split into chunks; default 30 seconds.",required:!1,min:0,default:30},{name:"text_chunk_size",type:"int",description:"Explicit long-form text chunk size in Unicode codepoints. Omitted value uses duration-based automatic chunking.",required:!1,min:1},{name:"text_chunk_mode",type:"enum",description:"Text chunking mode; default tag_aware.",preset:"text_chunk_mode_full",required:!1,default:"tag_aware"}],session:[{name:"weight_type",type:"enum",description:"Shared generator weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"generator_weight_type",type:"enum",description:"Generator weight storage type; defaults to weight_type, which defaults to native.",preset:"weight_type_full",required:!1},{name:"audio_tokenizer_weight_type",type:"enum",description:"Audio tokenizer weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"audio_tokenizer_graph_arena_mb",type:"int",description:"Audio tokenizer graph arena size in MiB; default 128.",required:!1,min:1,default:128},{name:"generator_prefill_graph_arena_mb",type:"int",description:"Generator prefill graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"generator_decode_graph_arena_mb",type:"int",description:"Generator decode graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"audio_tokenizer_weight_context_mb",type:"int",description:"Audio tokenizer weight context size in MiB; default 128.",required:!1,min:1,default:128},{name:"generator_weight_context_mb",type:"int",description:"Generator weight context size in MiB; default 256.",required:!1,min:1,default:256},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs after request phases; default false. Cannot be combined with perf_mode=flash_attention.",required:!1,default:!1},{name:"perf_mode",type:"enum",description:"Generator performance mode; default off keeps the exact-safe attention path. flash_attention requires mem_saver=false.",preset:"perf_mode_flash_attention",required:!1,default:"off"}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"omnivoice_q8_0",tags:["TTS","Clone","Design","GGUF","Stream"],docs:["docs/models/omnivoice.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"omnivoice_q8_0",display_name:"OmniVoice Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"OmniVoice-GGUF",files:["OmniVoice-GGUF/omnivoice-q8_0.gguf"],strip_prefix:"OmniVoice-GGUF"},{id:"omnivoice_bf16",display_name:"OmniVoice BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"OmniVoice-GGUF",files:["OmniVoice-GGUF/omnivoice-bf16.gguf"],strip_prefix:"OmniVoice-GGUF"},{id:"omnivoice_f16",display_name:"OmniVoice F16 GGUF",format:"gguf",precision:"f16",target_directory:"OmniVoice-GGUF",files:["OmniVoice-GGUF/omnivoice-f16.gguf"],strip_prefix:"OmniVoice-GGUF"},{id:"omnivoice_safetensors",display_name:"OmniVoice Safetensors",format:"safetensors",precision:"native",target_directory:"OmniVoice",files:["config.json","model.safetensors","tokenizer.json","tokenizer_config.json","audio_tokenizer/config.json","audio_tokenizer/preprocessor_config.json","audio_tokenizer/model.safetensors"],download:{kind:"huggingface_snapshot",repo:"k2-fsa/OmniVoice"}},{id:"voicetut_tts_q8_0",display_name:"VoiceTut-TTS Egyptian Arabic Q8_0 GGUF",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of OmniVoice from mohammedaly22/VoiceTut-TTS (same architecture and audio tokenizer as OmniVoice). Use language=arz.",format:"gguf",precision:"q8_0",target_directory:"VoiceTut-TTS-GGUF",files:["voicetut-tts-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/VoiceTut-TTS-GGUF"}},{id:"voicetut_tts_f16",display_name:"VoiceTut-TTS Egyptian Arabic F16 GGUF",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of OmniVoice from mohammedaly22/VoiceTut-TTS (same architecture and audio tokenizer as OmniVoice). Use language=arz.",format:"gguf",precision:"f16",target_directory:"VoiceTut-TTS-GGUF",files:["voicetut-tts-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/VoiceTut-TTS-GGUF"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",audio_tokenizer_config:"model:audio_tokenizer/config.json",audio_tokenizer_preprocessor:"model:audio_tokenizer/preprocessor_config.json"},optional_files:{chat_template:"model:chat_template.jinja"},tensors:{weights:{source:"weights:",prefix:"weights"},audio_tokenizer_weights:{source:"weights:",prefix:"audio_tokenizer_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",audio_tokenizer_config:"model:audio_tokenizer/config.json",audio_tokenizer_preprocessor:"model:audio_tokenizer/preprocessor_config.json"},optional_files:{chat_template:"model:chat_template.jinja"},tensors:{weights:"model:model.safetensors",audio_tokenizer_weights:"model:audio_tokenizer/model.safetensors"}}]},PS={schema_version:1,family:"open_wake_word",display_name:"OpenWakeWord",description:"OpenWakeWord wake-word detection with a shared speech embedding CNN and a converted classifier.",category:"audio_tools",status:"experimental",tasks:["wake_word"],modes:["offline","streaming"],languages:["en"],capabilities:{wake_word:["speech_segments","stream_events"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"threshold",type:"float",required:!1,min:0,max:1,description:"Wake-word detection probability threshold."}],session:[{name:"exec_plan",type:"string",required:!1,default:"{}",description:"JSON component execution plans. Component embedding accepts impl default/ggml/neon and optional backend. Default retains GGML on the session backend; neon requires ENGINE_ENABLE_NEON=ON and an AArch64 NEON CPU session. No artifacts or params are used."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"open_wake_word_alexa_f32",display_name:"OpenWakeWord Alexa GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"OpenWakeWord-GGUF",files:["OpenWakeWord-GGUF/open-wake-word-alexa-f32.gguf"],strip_prefix:"OpenWakeWord-GGUF"}],dependencies:[],ui:{tags:["Wake Word","GGUF","Stream"],docs:["docs/models/open_wake_word.md"],recommended_package:"open_wake_word_alexa_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}}]},NS={schema_version:1,family:"outetts",display_name:"Llama-OuteTTS 1.0",description:"Llama-based open-weight TTS model for 23-language speech synthesis with one-shot voice cloning from short reference audio and automatic word-alignment support.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline"],languages:["ar","be","bn","de","en","es","fa","fr","hu","it","ja","ka","ko","lt","lv","nl","pl","pt","ru","sw","ta","uk","zh"],capabilities:{clone:["speaker_reference"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated audio tokens per chunk. When omitted, OuteTTS estimates a safe value from each chunk.",required:!1,min:1},{name:"temperature",type:"float",description:"Sampling temperature; default 0.4 for cloning, otherwise model config default.",required:!1,min:0},{name:"top_k",type:"int",description:"Top-k sampling; default 40 for cloning, otherwise model config default.",required:!1,min:0},{name:"top_p",type:"float",description:"Nucleus sampling in (0, 1]; default 0.9 for cloning, otherwise model config default.",required:!1,min:0,max:1},{name:"min_p",type:"float",description:"Minimum probability relative to the best token; default 0.05 for cloning, otherwise model config default.",required:!1,min:0,max:1},{name:"repetition_penalty",type:"float",description:"Windowed repetition penalty; must be > 0, default 1.1.",required:!1,min:0,default:1.1},{name:"repetition_window",type:"int",description:"Recent-token penalty window; default 64.",required:!1,min:0,default:64},{name:"seed",type:"int",description:"Sampling seed; cloning defaults to 4099 for native weights and 42 for quantized weights.",required:!1,min:0,max:4294967295},{name:"reference_text",type:"string",description:"Transcript matching the reference voice audio for voice cloning.",required:!1},{name:"reference_language",type:"string",description:"Language code used to align the reference transcript; omitted inherits the request text language, then falls back to en.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum UTF-8 codepoints per long-form text chunk; default 256. Chunks are split further when required by max_tokens or context budget.",required:!1,min:1,default:256},{name:"text_chunk_mode",type:"enum",description:"Framework long-form text chunking mode; default word_budget.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"}],session:[{name:"lora",type:"path",description:"PEFT LoRA adapter directory or checkpoint file for the same OuteTTS checkpoint; merged into the language model at session creation.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"weight_type",type:"enum",description:"Language-model weight storage type. Quantized CUDA voice cloning is expanded to F32 in memory for generation correctness.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","nvfp4"]},{name:"llama_weight_context_mb",type:"int",description:"Language-model weight context size in MiB; default 4096.",required:!1,min:1,default:4096},{name:"constant_context_mb",type:"int",description:"Language-model constant tensor context size in MiB; default 256.",required:!1,min:1,default:256},{name:"dac_weight_context_mb",type:"int",description:"DAC decoder weight context size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"dac_graph_arena_mb",type:"int",description:"DAC decoder graph arena size in MiB; default 1536.",required:!1,min:1,default:1536},{name:"forced_aligner_path",type:"path",description:"Optional Qwen3 Forced Aligner override. Cloning automatically uses the aligner embedded in a standalone OuteTTS GGUF when present.",required:!1},{name:"reference_cache_slots",type:"int",description:"Prepared reference-profile cache slots; default 1, set 0 to disable.",required:!1,min:0,default:1},{name:"mem_saver",type:"bool",description:"Release cached-step and aligner runtime state after use; default false.",required:!1,default:!1}],load:[]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",special_tokens_map:"model:special_tokens_map.json",dac_config:"model:dac/config.json"},optional_files:{aligner_config:"model:aligner/config.json",aligner_generation_config:"model:aligner/generation_config.json",aligner_tokenizer_config:"model:aligner/tokenizer_config.json",aligner_preprocessor_config:"model:aligner/preprocessor_config.json",aligner_processor_config:"model:aligner/processor_config.json",aligner_chat_template:"model:aligner/chat_template.json",aligner_chat_template_jinja:"model:aligner/chat_template.jinja",aligner_vocab:"model:aligner/vocab.json",aligner_merges:"model:aligner/merges.txt",aligner_tokenizer_json:"model:aligner/tokenizer.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},dac_weights:{source:"weights:",prefix:"dac_weights"},aligner_weights:{source:"weights:",prefix:"aligner_weights"}}},{format:"safetensors",roots:{model:".",dac:"../DAC.speech.v1.0"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json",special_tokens_map:"model:special_tokens_map.json",dac_config:"dac:config.json"},tensors:{model_weights:"model:model.safetensors",dac_weights:"dac:model.safetensors"}}],packages:[{id:"outetts_1_0_1b_q8_0",display_name:"Llama-OuteTTS 1.0 1B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Llama-OuteTTS-1.0-1B_Q8",files:["Text to audio (TTS)/Llama-OuteTTS-1.0-1B_Q8.gguf"],download:{kind:"huggingface_snapshot",repo:"mirek190/audio.cpp"}}],dependencies:[],ui:{recommended_package:"outetts_1_0_1b_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/outetts.md","docs/reports/outetts_validation.md","docs/gguf.md"]}},OS={family:"owsm",schema_version:1,display_name:"OWSM",description:"ESPnet Open Whisper-style multilingual speech recognition and speech translation.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["abk","afr","amh","ara","asm","ast","aze","bak","bas","bel","ben","bos","bre","bul","cat","ceb","ces","chv","ckb","cmn","cnh","cym","dan","deu","dgd","div","ell","eng","epo","est","eus","fas","fil","fin","fra","frr","ful","gle","glg","grn","guj","hat","hau","heb","hin","hrv","hsb","hun","hye","ibo","ina","ind","isl","ita","jav","jpn","kab","kam","kan","kat","kaz","kea","khm","kin","kir","kmr","kor","lao","lav","lga","lin","lit","ltz","lug","luo","mal","mar","mas","mdf","mhr","mkd","mlt","mon","mri","mrj","mya","myv","nan","nep","nld","nno","nob","npi","nso","nya","oci","ori","orm","ory","pan","pol","por","pus","quy","roh","ron","rus","sah","sat","sin","skr","slk","slv","sna","snd","som","sot","spa","srd","srp","sun","swa","swe","swh","tam","tat","tel","tgk","tgl","tha","tig","tir","tok","tpi","tsn","tuk","tur","twi","uig","ukr","umb","urd","uzb","vie","vot","wol","xho","yor","yue","zho","zul"],capabilities:{asr:["segments"]},dependencies:[],options:{request:[{name:"language",type:"string",description:"Input language as an OWSM ISO 639-3 code, such as eng, jpn, or zho; auto detects it from the first window.",required:!1,default:"eng"},{name:"target_language",type:"string",description:"Optional OWSM translation target code. Omit for transcription.",required:!1},{name:"return_timestamps",type:"bool",description:"Return OWSM utterance-level timestamp segments.",required:!1,default:!1},{name:"condition_on_previous_text",type:"bool",description:"Condition each long-form chunk on the previous chunk transcript.",required:!1,default:!1},{name:"num_beams",type:"int",description:"Decoder beam width; one selects greedy decoding.",required:!1,min:1,max:50002,default:1},{name:"max_tokens",type:"int",description:"Maximum generated tokens per 30-second window; zero uses the model limit.",required:!1,min:0,max:374,default:0},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum duration of each audio window. Must be positive.",required:!1,max:30,default:30}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage override.",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"],required:!1,default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/owsm.md"],recommended_package:"owsm_v4_base_102m_f32"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"owsm_v4_base_102m_f32",display_name:"OWSM v4 Base 102M F32",default:!0,format:"gguf",precision:"f32",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-base-102m-f32.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_base_102m_q8_0",display_name:"OWSM v4 Base 102M Q8_0",default:!1,format:"gguf",precision:"q8_0",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-base-102m-q8_0.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_small_370m_f32",display_name:"OWSM v4 Small 370M F32",default:!1,format:"gguf",precision:"f32",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-small-370m-f32.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_small_370m_q8_0",display_name:"OWSM v4 Small 370M Q8_0",default:!1,format:"gguf",precision:"q8_0",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-small-370m-q8_0.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_small_370m_q4_k",display_name:"OWSM v4 Small 370M Q4_K",default:!1,format:"gguf",precision:"q4_k",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-small-370m-q4_k.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_medium_1b_f32",display_name:"OWSM v4 Medium 1B F32",default:!1,format:"gguf",precision:"f32",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-medium-1b-f32.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_medium_1b_q8_0",display_name:"OWSM v4 Medium 1B Q8_0",default:!1,format:"gguf",precision:"q8_0",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-medium-1b-q8_0.gguf"],strip_prefix:"OWSM-GGUF"},{id:"owsm_v4_medium_1b_q4_k",display_name:"OWSM v4 Medium 1B Q4_K",default:!1,format:"gguf",precision:"q4_k",target_directory:"OWSM-GGUF",files:["OWSM-GGUF/owsm-v4-medium-1b-q4_k.gguf"],strip_prefix:"OWSM-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:bpe.model"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:bpe.model"},tensors:{weights:"weights:"}}]},IS={family:"owsm_ctc",schema_version:1,display_name:"OWSM-CTC",description:"ESPnet non-autoregressive multilingual speech recognition and speech translation with self-conditioned CTC.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["abk","afr","amh","ara","asm","ast","aze","bak","bas","bel","ben","bos","bre","bul","cat","ceb","ces","chv","ckb","cmn","cnh","cym","dan","deu","dgd","div","ell","eng","epo","est","eus","fas","fil","fin","fra","frr","ful","gle","glg","grn","guj","hat","hau","heb","hin","hrv","hsb","hun","hye","ibo","ina","ind","isl","ita","jav","jpn","kab","kam","kan","kat","kaz","kea","khm","kin","kir","kmr","kor","lao","lav","lga","lin","lit","ltz","lug","luo","mal","mar","mas","mdf","mhr","mkd","mlt","mon","mri","mrj","mya","myv","nan","nep","nld","nno","nob","npi","nso","nya","oci","ori","orm","ory","pan","pol","por","pus","quy","roh","ron","rus","sah","sat","sin","skr","slk","slv","sna","snd","som","sot","spa","srd","srp","sun","swa","swe","swh","tam","tat","tel","tgk","tgl","tha","tig","tir","tok","tpi","tsn","tuk","tur","twi","uig","ukr","umb","urd","uzb","vie","vot","wol","xho","yor","yue","zho","zul"],capabilities:{},dependencies:[],options:{request:[{name:"language",type:"string",description:"Input ISO 639-3 language code, such as eng, jpn, or zho. auto uses unknown-language conditioning.",required:!1,default:"eng"},{name:"target_language",type:"string",description:"Optional OWSM translation target code. Omit for transcription.",required:!1},{name:"audio_chunk_mode",type:"enum",description:"Long-form audio chunking mode.",values:["auto","fixed","none"],required:!1,default:"auto"}],session:[{name:"weight_type",type:"enum",description:"Matmul weight storage override.",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"],required:!1,default:"native"}],load:[]},runtime:{tags:["gguf"]},ui:{tags:["ASR","GGUF"],docs:["docs/models/owsm_ctc.md"],recommended_package:"owsm_ctc_v4_1b_f32"},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"owsm_ctc_v4_1b_f32",display_name:"OWSM-CTC v4 1B F32",default:!0,format:"gguf",precision:"f32",target_directory:"OWSM-CTC-GGUF",files:["OWSM-CTC-GGUF/owsm-ctc-v4-1b-f32.gguf"],strip_prefix:"OWSM-CTC-GGUF"},{id:"owsm_ctc_v4_1b_q8_0",display_name:"OWSM-CTC v4 1B Q8_0",default:!1,format:"gguf",precision:"q8_0",target_directory:"OWSM-CTC-GGUF",files:["OWSM-CTC-GGUF/owsm-ctc-v4-1b-q8_0.gguf"],strip_prefix:"OWSM-CTC-GGUF"}],sources:[{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:bpe.model"},tensors:{weights:"model:model.safetensors"}},{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:bpe.model"},tensors:{weights:"weights:"}}]},LS={schema_version:1,family:"parakeet_tdt",display_name:"Parakeet-TDT 0.6B v3",description:"NVIDIA Parakeet-TDT 0.6B v3 FastConformer-TDT ASR covering 25 European languages with automatic language detection. Supports the upstream Transformers-compatible safetensors package and standalone audio.cpp GGUF, with offline full-context, bounded-window long-form, and buffered streaming; the checkpoint uses unlimited bidirectional attention and is not a native cache-aware streaming model.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["bg","cs","da","de","el","en","es","et","fi","fr","hr","hu","it","lt","lv","mt","nl","pl","pt","ro","ru","sk","sl","sv","uk"],runtime:{tags:["gguf","stream"]},capabilities:{asr:["word_timestamps","partial_results","vad_chunking"]},options:{request:[{name:"return_timestamps",type:"bool",description:"Accepted for CLI --words-out compatibility. Word timestamps are always returned, including when false or omitted.",required:!1},{name:"max_tokens",type:"int",description:"Maximum TDT generated tokens; 0 or omitted uses the model-derived limit.",required:!1,min:0,default:0},{name:"keep_language_tags",type:"bool",description:"Keep language tag tokens in decoded text; default false.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Offline audio chunking mode. vad uses Silero VAD to skip silence; auto keeps Parakeet's existing offline_mode behavior.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"VAD maximum chunk duration; omitted inherits the session duration. Fixed/long_form windows use the session setting, not this request override.",required:!1,min:.001},{name:"hotwords",type:"string",description:"Phonon-2 only: optional vocabulary list, comma-separated or a JSON array of strings / word-spoken objects. Up to 25 terms; an explicit empty list disables prompt biasing.",required:!1},{name:"hotwords_score",type:"float",description:"Phonon-2 matching-piece logit bonus; duration scores and blank are not biased.",required:!1,min:0,max:100,default:2}],session:[{name:"weight_type",type:"enum",description:"Shared matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"},{name:"matmul_weight_type",type:"enum",description:"Encoder and decoder matmul weight storage type; defaults to weight_type, which defaults to native. Q8_0 measured 1.79x faster on the tested CPU and changed roughly 8 percent of transcripts without moving aggregate word error rate.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; default native.",preset:"weight_type_conv",required:!1,default:"native"},{name:"perf_mode",type:"enum",description:"Encoder attention implementation. Default off uses the validated relative-attention path; flash_attention enables the fused implementation, which was numerically validated but slower on the tested hardware.",preset:"perf_mode_flash_attention",required:!1,default:"off"},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 3072.",required:!1,min:1,default:3072},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"decoder_graph_arena_mb",type:"int",description:"Decoder graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"audio_chunk_duration_sec",type:"float",description:"Center-region duration for buffered streaming in seconds; default 2. Fixed context windows are re-encoded rather than cache-aware. Also sizes offline fixed/long_form windows.",required:!1,min:.001,default:2},{name:"left_context_sec",type:"float",description:"Past context included when re-encoding each buffered-streaming window in seconds; default 10. Also applies to offline fixed/long_form windows.",required:!1,min:0,default:10},{name:"right_context_sec",type:"float",description:"Future lookahead included when re-encoding each buffered-streaming window in seconds; default 2 and adds equivalent partial-result latency. Also applies to offline fixed/long_form windows.",required:!1,min:0,default:2},{name:"streaming_attention_mode",type:"enum",description:"Attention policy inside each buffered window. full_context preserves bidirectional attention over the bounded window.",values:["full_context"],required:!1,default:"full_context"},{name:"offline_mode",type:"enum",description:"Offline encoder scheduling. full_context encodes the whole utterance, long_form uses bounded overlapping windows, and auto selects long_form beyond audio_chunk_threshold_sec.",values:["full_context","long_form","auto"],required:!1,default:"full_context"},{name:"audio_chunk_threshold_sec",type:"float",description:"Duration threshold used by offline_mode=auto before switching to bounded-window long-form execution; default 30 seconds.",required:!1,min:.001,default:30},{name:"vad_model_path",type:"path",description:"Silero VAD model path used by audio_chunk_mode=vad; default assets/framework/models/silero_vad.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"parakeet_tdt_q8_0",display_name:"Parakeet-TDT 0.6B v3 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Parakeet-TDT-0.6B-v3-GGUF",files:["Parakeet-TDT-0.6B-v3-GGUF/parakeet-tdt-0.6b-v3-q8_0.gguf"],strip_prefix:"Parakeet-TDT-0.6B-v3-GGUF"},{id:"parakeet_tdt_f16",display_name:"Parakeet-TDT 0.6B v3 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Parakeet-TDT-0.6B-v3-GGUF",files:["Parakeet-TDT-0.6B-v3-GGUF/parakeet-tdt-0.6b-v3-f16.gguf"],strip_prefix:"Parakeet-TDT-0.6B-v3-GGUF"},{id:"orukeet_q8_0",display_name:"Orukeet r3 Q8_0 GGUF (Parakeet-TDT 0.6B v3 fine-tune)",format:"gguf",precision:"q8_0",target_directory:"Orukeet-GGUF",files:["Orukeet-GGUF/orukeet-q8_0.gguf"],strip_prefix:"Orukeet-GGUF"},{id:"orukeet_f16",display_name:"Orukeet r3 F16 GGUF (Parakeet-TDT 0.6B v3 fine-tune)",format:"gguf",precision:"f16",target_directory:"Orukeet-GGUF",files:["Orukeet-GGUF/orukeet-f16.gguf"],strip_prefix:"Orukeet-GGUF"}],dependencies:[],ui:{recommended_package:"parakeet_tdt_q8_0",tags:["ASR","GGUF"],docs:["docs/models/parakeet_tdt.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor_config:"model:processor_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},DS={schema_version:1,family:"personaplex",display_name:"PersonaPlex",description:"PersonaPlex is a Moshi-style full-duplex speech-to-speech conversational model with Mimi audio tokenization, packaged speaker/persona prompts, streaming audio input, text generation, and generated assistant speech.",category:"tts",status:"supported",tasks:["s2s"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf","stream"]},capabilities:{s2s:["speaker_reference"]},options:{request:[{name:"voice_id",type:"enum",description:"Packaged PersonaPlex voice prompt id such as NATF2 or NATM1. If omitted, NATF2 is used.",values:["NATF0","NATF1","NATF2","NATF3","NATM0","NATM1","NATM2","NATM3","VARF0","VARF1","VARF2","VARF3","VARF4","VARM0","VARM1","VARM2","VARM3","VARM4"],required:!1,default:"NATF2"},{name:"system_prompt",type:"string",description:"System persona prompt. Plain text is wrapped with the required tags.",required:!1},{name:"temperature",type:"float",description:"Audio token sampling temperature; must be nonnegative, and positive when do_sample=true. Ignored when do_sample=false; default 0.8.",required:!1,min:0,default:.8},{name:"text_temperature",type:"float",description:"Text token sampling temperature; must be nonnegative, and positive when do_sample=true. Ignored when do_sample=false; default follows temperature.",required:!1,min:0},{name:"top_k",type:"int",description:"Audio token top-k sampling limit; default 250.",required:!1,min:0,default:250},{name:"text_top_k",type:"int",description:"Text token top-k sampling limit; default follows top_k.",required:!1,min:0},{name:"do_sample",type:"bool",description:"Enable stochastic token sampling; default true. Set false for greedy decoding.",required:!1,default:!0},{name:"seed",type:"int",description:"uint32 seed. Session RNG starts at 42424242; explicit values reseed it, while omission on later conversations continues RNG state.",required:!1,min:0,max:4294967295}],session:[{name:"graph_arena_mb",type:"int",description:"Reusable ggml graph arena size in MiB for PersonaPlex LM, depformer, and Mimi graphs; default 1024.",required:!1,min:1,default:1024},{name:"lm_weight_context_mb",type:"int",description:"Main LM weight metadata arena size in MiB; default 64.",required:!1,min:1,default:64},{name:"depformer_weight_context_mb",type:"int",description:"Depth transformer weight metadata arena size in MiB; default 64.",required:!1,min:1,default:64},{name:"mimi_weight_context_mb",type:"int",description:"Mimi codec weight metadata arena size in MiB; default 64.",required:!1,min:1,default:64},{name:"weight_type",type:"enum",description:"LM and Mimi matmul weight storage type; default native.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"personaplex_7b_v1_q4_k",display_name:"PersonaPlex 7B v1 Q4_K GGUF",default:!0,format:"gguf",precision:"q4_k",target_directory:"PersonaPlex-GGUF",files:["PersonaPlex-GGUF/personaplex-7b-v1-q4_k.gguf"],strip_prefix:"PersonaPlex-GGUF"},{id:"personaplex_7b_v1_q8_0",display_name:"PersonaPlex 7B v1 Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"PersonaPlex-GGUF",files:["PersonaPlex-GGUF/personaplex-7b-v1-q8_0.gguf"],strip_prefix:"PersonaPlex-GGUF"}],dependencies:[],ui:{recommended_package:"personaplex_7b_v1_q4_k",tags:["TTS","Stream","GGUF"],docs:["docs/models/personaplex.md","docs/tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_model:"model:tokenizer_spm_32k_3.model",voice_NATF0:"model:voices_safetensors/NATF0.safetensors",voice_NATF1:"model:voices_safetensors/NATF1.safetensors",voice_NATF2:"model:voices_safetensors/NATF2.safetensors",voice_NATF3:"model:voices_safetensors/NATF3.safetensors",voice_NATM0:"model:voices_safetensors/NATM0.safetensors",voice_NATM1:"model:voices_safetensors/NATM1.safetensors",voice_NATM2:"model:voices_safetensors/NATM2.safetensors",voice_NATM3:"model:voices_safetensors/NATM3.safetensors",voice_VARF0:"model:voices_safetensors/VARF0.safetensors",voice_VARF1:"model:voices_safetensors/VARF1.safetensors",voice_VARF2:"model:voices_safetensors/VARF2.safetensors",voice_VARF3:"model:voices_safetensors/VARF3.safetensors",voice_VARF4:"model:voices_safetensors/VARF4.safetensors",voice_VARM0:"model:voices_safetensors/VARM0.safetensors",voice_VARM1:"model:voices_safetensors/VARM1.safetensors",voice_VARM2:"model:voices_safetensors/VARM2.safetensors",voice_VARM3:"model:voices_safetensors/VARM3.safetensors",voice_VARM4:"model:voices_safetensors/VARM4.safetensors"},tensors:{lm_weights:{source:"weights:",prefix:"lm"},mimi_weights:{source:"weights:",prefix:"mimi"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_model:"model:tokenizer_spm_32k_3.model",voice_NATF0:"model:voices_safetensors/NATF0.safetensors",voice_NATF1:"model:voices_safetensors/NATF1.safetensors",voice_NATF2:"model:voices_safetensors/NATF2.safetensors",voice_NATF3:"model:voices_safetensors/NATF3.safetensors",voice_NATM0:"model:voices_safetensors/NATM0.safetensors",voice_NATM1:"model:voices_safetensors/NATM1.safetensors",voice_NATM2:"model:voices_safetensors/NATM2.safetensors",voice_NATM3:"model:voices_safetensors/NATM3.safetensors",voice_VARF0:"model:voices_safetensors/VARF0.safetensors",voice_VARF1:"model:voices_safetensors/VARF1.safetensors",voice_VARF2:"model:voices_safetensors/VARF2.safetensors",voice_VARF3:"model:voices_safetensors/VARF3.safetensors",voice_VARF4:"model:voices_safetensors/VARF4.safetensors",voice_VARM0:"model:voices_safetensors/VARM0.safetensors",voice_VARM1:"model:voices_safetensors/VARM1.safetensors",voice_VARM2:"model:voices_safetensors/VARM2.safetensors",voice_VARM3:"model:voices_safetensors/VARM3.safetensors",voice_VARM4:"model:voices_safetensors/VARM4.safetensors"},tensors:{lm_weights:"model:model.safetensors",mimi_weights:"model:tokenizer-e351c8d8-checkpoint125.safetensors"}}]},VS={schema_version:1,family:"piper_tts",display_name:"Piper TTS",description:"Native VITS inference for Piper text-to-speech voices using the shared eSpeak-ng frontend.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"speed",type:"float",description:"Speech speed multiplier; larger values produce faster speech.",required:!1,min:.5,max:2,default:1},{name:"variation",type:"float",description:"Acoustic latent noise scale.",required:!1,min:0,max:1,default:.667},{name:"duration_variation",type:"float",description:"Stochastic duration noise scale.",required:!1,min:0,max:2,default:.8},{name:"seed",type:"int",description:"Non-negative generation seed.",required:!1,min:0,default:1234,max:4294967295},{name:"text_chunk_mode",type:"enum",description:"Long-form text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form chunk.",required:!1,min:1,default:280}],session:[{name:"espeak_library_path",type:"path",description:"Optional explicit path to the eSpeak-ng shared library.",required:!1},{name:"espeak_data_path",type:"path",description:"Optional explicit path to espeak-ng-data.",required:!1},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Components: decoder, duration_encoder, duration_flows. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. Default keeps existing execution. The decoder's GGML impl supports the session backend; RKNN requires artifacts.main and ENGINE_ENABLE_RKNN, with no backend field. The two duration stages are GGML-only and accept the session backend (device) or cpu (host); with no backend field the text encoder runs on the host on CUDA and on the session backend elsewhere, and the flow graphs run on the session backend. No implementation takes params.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"piper_lessac_medium_orig",display_name:"Piper Lessac Medium Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Piper-TTS-GGUF",files:["Piper-TTS-GGUF/piper-en-us-lessac-medium-orig.gguf"],strip_prefix:"Piper-TTS-GGUF"},{id:"piper_lessac_medium_decoder_rk3588",display_name:"Piper Lessac Medium NPU Decoder RKNN (RK3588)",format:"rknn",precision:"f16",target_directory:"Piper-TTS-GGUF",files:["rk3588/piper-lessac-w93.rknn"],strip_prefix:"rk3588",description:"Pre-compiled RK3588 engine for the piper_tts RKNN decoder sidecar (piper_tts.exec_plan, artifacts.main); installs beside the GGUF weights and is named by bare file name. Built by tools/rknn from the en_US-lessac-medium streaming decoder export; see docs/build/rockchip-npu.md.",download:{kind:"huggingface_snapshot",repo:"wOvANAI/rknn-tts-engines",revision:"main",gated:!1}}],dependencies:[],ui:{recommended_package:"piper_lessac_medium_orig",tags:["TTS","GGUF"],docs:["docs/tts.md","docs/models/piper_tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json"},tensors:{weights:"model:model.safetensors"}}]},HS={schema_version:1,family:"plapre",display_name:"Plapre 3",description:"Danish speech synthesis with a Llama autoregressive decoder and Kanade audio codec. Streaming emits completed text chunks, not incremental codec frames.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["da"],capabilities:{tts:["long_form","speaker_reference","built_in_voices"],clone:["speaker_reference","long_form"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"voice_id",type:"enum",description:"Built-in speaker.",required:!1,default:"tor",values:["tor","ida","liv","ask","kaj"]},{name:"reference_text",type:"string",description:"Transcript of the reference audio, used for voice cloning.",required:!1,default:""},{name:"x_vector_only_mode",type:"bool",description:"Use only the reference speaker embedding, without the reference transcript/audio-token prefix.",required:!1,default:!1},{name:"word_duration_frames",type:"string",description:"JSON array of per-word integer durations, from 0 to 399 frames at 25 Hz. Duration-controlled text is generated in one chunk.",required:!1},{name:"context_text",type:"string",description:"Previous utterance for prosodic context.",required:!1},{name:"context_audio_file",type:"audio_path",description:"Optional previous-utterance WAV accompanying context_text.",required:!1},{name:"same_speaker",type:"bool",description:"Whether context_text belongs to the target speaker.",required:!1,default:!0},{name:"pronunciations",type:"string",description:'Ordered JSON array of pronunciation references: [{"word":"morgen","audio_file":"morgen.wav"}]. Up to 10 references, 60 codes each and 200 total codes are used.',required:!1},{name:"edit_start_frame",type:"int",description:"Start of the masked span in voice_ref, in 25-Hz codec frames. Supply both edit boundaries and the complete desired text.",required:!1,min:0},{name:"edit_end_frame",type:"int",description:"Exclusive end of the masked span in voice_ref. Editing runs in one text chunk.",required:!1,min:0},{name:"max_tokens",type:"int",description:"Maximum generated tokens per text chunk; each audio token represents 40 ms.",required:!1,default:500,min:1},{name:"min_tokens",type:"int",description:"Minimum generated tokens before a stop token can be selected.",required:!1,default:0,min:0},{name:"temperature",type:"float",description:"Sampling temperature; zero selects greedy decoding.",required:!1,default:.8,min:0},{name:"top_p",type:"float",description:"Nucleus sampling probability in (0, 1].",required:!1,default:.95,min:0,max:1},{name:"top_k",type:"int",description:"Top-k sampling; -1 or zero disables filtering.",required:!1,default:50,min:-1},{name:"seed",type:"int",description:"Sampling and vocoder noise seed.",required:!1,default:0,min:0},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk.",required:!1,default:300,min:1},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking policy.",required:!1,default:"default",values:["default","tag_aware","japanese","endline"]},{name:"silence_duration_sec",type:"float",description:"Silence inserted between text chunks.",required:!1,default:.1,min:0}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"plapre_3_bf16",display_name:"Plapre 3 BF16",format:"gguf",precision:"bf16",default:!0,target_directory:"Plapre-3-GGUF",files:["Plapre-3-GGUF/plapre-3-bf16.gguf"],strip_prefix:"Plapre-3-GGUF"},{id:"plapre_3_f32",display_name:"Plapre 3 F32",format:"gguf",precision:"f32",default:!1,target_directory:"Plapre-3-GGUF",files:["Plapre-3-GGUF/plapre-3-f32.gguf"],strip_prefix:"Plapre-3-GGUF"}],dependencies:[],ui:{recommended_package:"plapre_3_bf16",builtin_voices:["tor","ida","liv","ask","kaj"],default_voice:"tor",tags:["TTS","GGUF"],docs:["docs/models/plapre.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",kanade_config:"model:kanade_config.json",speakers:"model:speakers.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{ar:"weights:",speaker_projection:{source:"weights:",prefix:"speaker_proj"},kanade:{source:"weights:",prefix:"kanade"},wavlm:{source:"weights:",prefix:"wavlm"},hift:{source:"weights:",prefix:"hift"}}}]},WS={family:"pocket_tts",display_name:"PocketTTS",description:"Kyutai 100M-parameter CPU-friendly TTS package set for real-time local synthesis and small-footprint voice cloning in English, French, German, Italian, Portuguese, and Spanish.",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["en","fr","de","it","pt","es"],options:{request:[{name:"frames_after_eos",type:"int",description:"Extra frames after EOS; -1 uses the model-derived value.",required:!1,min:-1,default:-1},{name:"max_frames",type:"int",description:"Maximum generated audio frames; zero estimates the cap from text length. Captured during session preparation.",required:!1,min:0,default:0},{name:"text_chunk_tokens",type:"int",description:"Tokenizer tokens per text chunk; must be positive, default 50. Set during preparation and overridable per request.",required:!1,min:1,default:50},{name:"temperature",type:"float",description:"Positive flow noise temperature; defaults to the model configuration. Captured during session preparation.",required:!1},{name:"seed",type:"int",description:"Noise seed; omitted chooses a random seed. Captured during session preparation.",required:!1,min:0,max:4294967295},{name:"noise_clamp",type:"float",description:"Noise clamp; a negative value disables clamping. Captured during session preparation.",required:!1,default:-1},{name:"eos_threshold",type:"float",description:"EOS detection threshold. Captured during session preparation.",required:!1,default:-4},{name:"noise_file",type:"path",description:"Precomputed noise schedule file. Captured during session preparation.",required:!1},{name:"voice_embedding_file",type:"path",description:"Precomputed voice-state embedding path. Captured during session preparation.",required:!1},{name:"truncate_clone_audio",type:"bool",description:"Truncate voice clone audio. Captured during session preparation.",required:!1,default:!1},{name:"text_chunk_size",type:"int",description:"Optional per-request character chunk size; otherwise use sentence/token budgeting.",required:!1},{name:"export_voice_state_file",type:"path",description:"Export the prepared voice state during session preparation.",required:!1}],session:[{name:"voice_state_cache_slots",type:"int",description:"Cached prepared voice states; zero disables reuse.",required:!1,min:0,default:4},{name:"offline_graph_capacity_mode",type:"enum",description:"Offline graph capacity policy; CPU/Metal default tiered, other backends double.",required:!1,values:["fixed","double","tiered","grow"]},{name:"prompt_graph_capacity",type:"int",description:"Optional reserved prompt capacity.",required:!1,min:1},{name:"generation_graph_capacity",type:"int",description:"Optional reserved generation capacity.",required:!1,min:1},{name:"weight_type",type:"enum",description:"Shared matmul weight storage; component matmul settings inherit it. Convolution storage remains independently native unless overridden.",required:!1,preset:"weight_type_full"},{name:"matmul_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage.",required:!1,preset:"weight_type_conv",default:"native"},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:64},{name:"flow_weight_context_mb",type:"int",description:"Flow weight context in MiB; inherits pocket_tts.weight_context_mb when omitted.",required:!1,min:1},{name:"mimi_encoder_weight_context_mb",type:"int",description:"Mimi encoder weight context in MiB; inherits pocket_tts.weight_context_mb when omitted.",required:!1,min:1},{name:"mimi_decoder_weight_context_mb",type:"int",description:"Mimi decoder weight context in MiB; inherits pocket_tts.weight_context_mb when omitted.",required:!1,min:1},{name:"flow_weights_view_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:256},{name:"flow_step_graph_arena_mb",type:"int",description:"Flow-step host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:256},{name:"mimi_encoder_graph_arena_mb",type:"int",description:"Mimi encoder host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:512},{name:"mimi_conv_graph_arena_mb",type:"int",description:"Mimi convolution host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:32},{name:"mimi_transformer_graph_arena_mb",type:"int",description:"Mimi transformer host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:96},{name:"mimi_tail_graph_arena_mb",type:"int",description:"Mimi tail host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:512},{name:"mimi_full_chunk_frames",type:"int",description:"Full-sequence decoder chunk frames.",required:!1,min:1,default:90},{name:"mimi_stage2_chunk_frames",type:"int",description:"Second-stage decoder chunk frames.",required:!1,min:1,default:900},{name:"use_full_mimi",type:"bool",description:"Use full-sequence Mimi decoding.",required:!1,default:!0}],load:[{name:"language",type:"string",description:"Model language selection.",required:!1,default:"english"}]},capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},ui:{recommended_package:"pocket_tts_english_q8_0",default_voice:"alba",builtin_voices:["alba"],tags:["TTS","Clone","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"pocket_tts_english_q8_0",display_name:"PocketTTS English Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/english",files:["PocketTTS-GGUF/english/pocket-tts-english-q8_0.gguf","PocketTTS-GGUF/english/embeddings/alba.safetensors"],strip_prefix:"PocketTTS-GGUF/english"},{id:"pocket_tts_english_bf16",display_name:"PocketTTS English BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/english",files:["PocketTTS-GGUF/english/pocket-tts-english-bf16.gguf","PocketTTS-GGUF/english/embeddings/alba.safetensors"],strip_prefix:"PocketTTS-GGUF/english"},{id:"pocket_tts_french_q8_0",display_name:"PocketTTS French Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/french",files:["PocketTTS-GGUF/french/pocket-tts-french-q8_0.gguf","PocketTTS-GGUF/french/embeddings/cosette.safetensors"],strip_prefix:"PocketTTS-GGUF/french"},{id:"pocket_tts_french_bf16",display_name:"PocketTTS French BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/french",files:["PocketTTS-GGUF/french/pocket-tts-french-bf16.gguf","PocketTTS-GGUF/french/embeddings/cosette.safetensors"],strip_prefix:"PocketTTS-GGUF/french"},{id:"pocket_tts_german_q8_0",display_name:"PocketTTS German Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/german",files:["PocketTTS-GGUF/german/pocket-tts-german-q8_0.gguf"],strip_prefix:"PocketTTS-GGUF/german"},{id:"pocket_tts_german_bf16",display_name:"PocketTTS German BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/german",files:["PocketTTS-GGUF/german/pocket-tts-german-bf16.gguf"],strip_prefix:"PocketTTS-GGUF/german"},{id:"pocket_tts_italian_q8_0",display_name:"PocketTTS Italian Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/italian",files:["PocketTTS-GGUF/italian/pocket-tts-italian-q8_0.gguf"],strip_prefix:"PocketTTS-GGUF/italian"},{id:"pocket_tts_italian_bf16",display_name:"PocketTTS Italian BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/italian",files:["PocketTTS-GGUF/italian/pocket-tts-italian-bf16.gguf"],strip_prefix:"PocketTTS-GGUF/italian"},{id:"pocket_tts_portuguese_q8_0",display_name:"PocketTTS Portuguese Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/portuguese",files:["PocketTTS-GGUF/portuguese/pocket-tts-portuguese-q8_0.gguf"],strip_prefix:"PocketTTS-GGUF/portuguese"},{id:"pocket_tts_portuguese_bf16",display_name:"PocketTTS Portuguese BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/portuguese",files:["PocketTTS-GGUF/portuguese/pocket-tts-portuguese-bf16.gguf"],strip_prefix:"PocketTTS-GGUF/portuguese"},{id:"pocket_tts_spanish_q8_0",display_name:"PocketTTS Spanish Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"PocketTTS-GGUF/spanish",files:["PocketTTS-GGUF/spanish/pocket-tts-spanish-q8_0.gguf"],strip_prefix:"PocketTTS-GGUF/spanish"},{id:"pocket_tts_spanish_bf16",display_name:"PocketTTS Spanish BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"PocketTTS-GGUF/spanish",files:["PocketTTS-GGUF/spanish/pocket-tts-spanish-bf16.gguf"],strip_prefix:"PocketTTS-GGUF/spanish"},{id:"pocket_tts_english_safetensors",display_name:"PocketTTS English Safetensors",format:"safetensors",precision:"native",target_directory:"pocket-tts",files:["languages/english/embeddings/alba.safetensors","languages/english/embeddings/anna.safetensors","languages/english/embeddings/azelma.safetensors","languages/english/embeddings/bill_boerst.safetensors","languages/english/embeddings/caro_davy.safetensors","languages/english/embeddings/charles.safetensors","languages/english/embeddings/cosette.safetensors","languages/english/embeddings/eponine.safetensors","languages/english/embeddings/estelle.safetensors","languages/english/embeddings/eve.safetensors","languages/english/embeddings/fantine.safetensors","languages/english/embeddings/george.safetensors","languages/english/embeddings/giovanni.safetensors","languages/english/embeddings/jane.safetensors","languages/english/embeddings/javert.safetensors","languages/english/embeddings/jean.safetensors","languages/english/embeddings/juergen.safetensors","languages/english/embeddings/lola.safetensors","languages/english/embeddings/marius.safetensors","languages/english/embeddings/mary.safetensors","languages/english/embeddings/michael.safetensors","languages/english/embeddings/paul.safetensors","languages/english/embeddings/peter_yearsley.safetensors","languages/english/embeddings/rafael.safetensors","languages/english/embeddings/stuart_bell.safetensors","languages/english/embeddings/vera.safetensors","languages/english/model.safetensors","languages/english/tokenizer.model"],download:{kind:"huggingface_snapshot",repo:"kyutai/pocket-tts",gated:!0}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tokenizer:"model:tokenizer.model"},optional_files:{config:"model:config.yaml"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{language:"languages/english"},files:{tokenizer:"language:tokenizer.model"},optional_files:{config:"language:config.yaml"},tensors:{weights:"language:model.safetensors"}}]},QS={schema_version:1,family:"pulsevad",display_name:"PulseVAD",description:"Speech activity detection for 16 kHz mono audio with 2.1K student and 81K teacher weights.",category:"audio_tools",status:"supported",tasks:["vad"],modes:["offline"],languages:["language_agnostic"],capabilities:{vad:["speech_segments"]},runtime:{tags:["gguf"]},options:{request:[{name:"threshold",type:"float",description:"Speech probability threshold.",required:!1,default:.5,min:0,max:1},{name:"hop_size_samples",type:"int",description:"Window step in samples; 1600 samples is 100 ms at 16 kHz.",required:!1,default:1600,min:1},{name:"min_speech_duration_ms",type:"int",description:"Minimum speech segment duration in milliseconds. Not applied to the short-input path (<3200 samples), which classifies the whole clip by threshold.",required:!1,default:100,min:0},{name:"min_silence_duration_ms",type:"int",description:"Minimum silence before closing a speech segment, in milliseconds.",required:!1,default:100,min:0}],session:[{name:"weight_type",type:"enum",description:"Weight storage override; native preserves the packaged tensor types.",values:["native","f32","f16","bf16"],required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"pulsevad_2_1k_f32",display_name:"PulseVAD 2.1K GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"PulseVAD-GGUF",files:["PulseVAD-GGUF/pulsevad-2.1k-f32.gguf"],strip_prefix:"PulseVAD-GGUF"},{id:"pulsevad_81k_f32",display_name:"PulseVAD 81K GGUF F32",format:"gguf",precision:"f32",target_directory:"PulseVAD-GGUF",files:["PulseVAD-GGUF/pulsevad-81k-f32.gguf"],strip_prefix:"PulseVAD-GGUF"}],dependencies:[],ui:{tags:["VAD","GGUF"],docs:["docs/models/pulsevad.md"],recommended_package:"pulsevad_2_1k_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},tensors:{weights:"model:pulsevad-f32.safetensors"}}]},KS={family:"qwen3_asr",display_name:"Qwen3-ASR",description:"Qwen ASR model family for language identification and speech recognition across 30 languages, 22 Chinese dialects, and multiple English accents, with robustness for noisy, long-form, and singing audio.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["zh","en","yue","ar","de","fr","es","pt","id","it","ko","ru","th","vi","ja","tr","hi","ms","nl","sv","da","fi","pl","cs","fil","fa","el","hu","mk","ro","zh dialects"],capabilities:{asr:["word_timestamps","vad_chunking","partial_results"]},options:{request:[{name:"language",type:"string",description:"Recognition language code or label. Omit to detect language automatically; Auto also selects automatic detection.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens; omitted uses the checkpoint generation_config.json (512 when absent).",required:!1,min:1},{name:"return_timestamps",type:"bool",description:"Return word-level timestamps by running Qwen3 ForcedAligner after ASR; default false and requires forced_aligner_path when enabled. Offline only; streaming rejects true even when an aligner is configured.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Audio chunking mode; default auto uses fixed chunks normally and VAD chunks when timestamps are requested. Offline only; streaming uses fixed-duration windows regardless of this selection.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Maximum audio chunk duration in seconds; must be > 0 when chunking or streaming. Ignored with audio_chunk_mode=none offline. Default 30 for streaming and offline transcription, or 15 for offline timestamps/VAD chunking.",required:!1,min:0},{name:"clamp_timestamps_to_audio",type:"bool",description:"Opt-in guard for word timestamp output: keep repaired forced-aligner word spans inside the local audio chunk. Defaults to false to preserve existing timestamp repair behavior.",required:!1,default:!1},{name:"preserve_punctuation",type:"bool",description:"Opt-in text output mode for timestamped chunked ASR: preserve ASR punctuation in text_output instead of rebuilding text from aligned words.",required:!1,default:!1}],session:[{name:"lora",type:"path",description:"PEFT LoRA adapter directory or checkpoint file; merged into matching encoder/decoder weights at session creation.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"forced_aligner_path",type:"path",description:"Optional Qwen3 ForcedAligner model path required for return_timestamps.",required:!1},{name:"vad_model_path",type:"path",description:"Optional Silero VAD model path for VAD chunking; default assets/framework/models/silero_vad.",required:!1,default:"assets/framework/models/silero_vad"},{name:"weight_type",type:"enum",description:"Shared text decoder weight storage fallback; default native.",required:!1,default:"native",preset:"weight_type_full"},{name:"audio_encoder_weight_type",type:"enum",description:"Audio encoder weight storage type; default native.",required:!1,default:"native",preset:"weight_type_conv"},{name:"text_decoder_weight_type",type:"enum",description:"Text decoder matmul weight storage type; defaults to weight_type when set, otherwise native.",required:!1,preset:"weight_type_full"},{name:"audio_encoder_graph_arena_mb",type:"int",description:"Audio encoder graph arena size in MiB; default 128.",required:!1,min:1,default:128},{name:"text_decoder_prefill_graph_arena_mb",type:"int",description:"Text decoder prefill graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"text_decoder_decode_graph_arena_mb",type:"int",description:"Text decoder cached-step graph arena size in MiB; default 256.",required:!1,min:1,default:256},{name:"text_decoder_weight_context_mb",type:"int",description:"Text decoder weight context size in MiB; default 64.",required:!1,min:1,default:64}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"qwen3_asr_1_7b_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/models/qwen3_asr.md","docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"qwen3_asr_1_7b_q8_0",display_name:"Qwen3-ASR 1.7B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Qwen3-ASR-1.7B-GGUF",files:["Qwen3-ASR-1.7B-GGUF/qwen3-asr-1.7b-q8_0.gguf"],strip_prefix:"Qwen3-ASR-1.7B-GGUF"},{id:"qwen3_asr_1_7b_f16",display_name:"Qwen3-ASR 1.7B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Qwen3-ASR-1.7B-GGUF",files:["Qwen3-ASR-1.7B-GGUF/qwen3-asr-1.7b-f16.gguf"],strip_prefix:"Qwen3-ASR-1.7B-GGUF"},{id:"qwen3_asr_0_6b_q8_0",display_name:"Qwen3-ASR 0.6B Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Qwen3-ASR-0.6B-GGUF",files:["Qwen3-ASR-0.6B-GGUF/qwen3-asr-0.6b-q8_0.gguf"],strip_prefix:"Qwen3-ASR-0.6B-GGUF"},{id:"qwen3_asr_0_6b_f16",display_name:"Qwen3-ASR 0.6B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Qwen3-ASR-0.6B-GGUF",files:["Qwen3-ASR-0.6B-GGUF/qwen3-asr-0.6b-f16.gguf"],strip_prefix:"Qwen3-ASR-0.6B-GGUF"},{id:"qwen3_asr_1_7b_safetensors",display_name:"Qwen3-ASR 1.7B HF Safetensors",format:"safetensors",precision:"native",target_directory:"Qwen3-ASR-1.7B-hf",files:["config.json","generation_config.json","model.safetensors","processor_config.json","tokenizer_config.json","tokenizer.json"],download:{kind:"huggingface_snapshot",repo:"Qwen/Qwen3-ASR-1.7B-hf"}},{id:"qwen3_asr_0_6b_safetensors",display_name:"Qwen3-ASR 0.6B Safetensors",format:"safetensors",precision:"native",target_directory:"Qwen3-ASR-0.6B",files:["config.json","generation_config.json","model.safetensors","preprocessor_config.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"Qwen/Qwen3-ASR-0.6B"}},{id:"qwencleo_asr_q8_0",display_name:"QwenCleo-ASR Egyptian Arabic Q8_0 GGUF",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of Qwen3-ASR-1.7B from mohammedaly22/QwenCleo-ASR. Use language=Arabic.",format:"gguf",precision:"q8_0",target_directory:"QwenCleo-ASR-GGUF",files:["qwencleo-asr-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/QwenCleo-ASR-GGUF"}},{id:"qwencleo_asr_f16",display_name:"QwenCleo-ASR Egyptian Arabic F16 GGUF",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of Qwen3-ASR-1.7B from mohammedaly22/QwenCleo-ASR. Use language=Arabic.",format:"gguf",precision:"f16",target_directory:"QwenCleo-ASR-GGUF",files:["qwencleo-asr-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/QwenCleo-ASR-GGUF"}},{id:"qwencleo_asr_safetensors",display_name:"QwenCleo-ASR Egyptian Arabic Safetensors",description:"Egyptian Arabic and Arabic-English code-switching fine-tune of Qwen3-ASR-1.7B from mohammedaly22/QwenCleo-ASR. Use language=Arabic.",format:"safetensors",precision:"native",target_directory:"QwenCleo-ASR",files:["config.json","generation_config.json","model.safetensors","preprocessor_config.json","tokenizer_config.json","tokenizer.json","vocab.json","merges.txt","chat_template.json"],download:{kind:"huggingface_snapshot",repo:"mohammedaly22/QwenCleo-ASR"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},YS={family:"qwen3_forced_aligner",display_name:"Qwen3 Forced Aligner",description:"Qwen3 non-autoregressive forced aligner that aligns transcript text to speech and returns word- or character-level timestamps across 11 supported languages.",category:"speech_analysis",status:"supported",tasks:["align"],modes:["offline"],languages:["zh","en","yue","fr","de","it","ja","ko","pt","ru","es"],capabilities:{align:["word_timestamps"]},options:{request:[{name:"clamp_timestamps_to_audio",type:"bool",description:"Opt-in guard for word timestamp output: keep repaired word spans inside the local audio input. Defaults to false to preserve existing timestamp repair behavior.",required:!1,default:!1}],session:[{name:"weight_type",type:"enum",description:"Shared thinker matmul storage; does not override audio encoder storage.",required:!1,preset:"weight_type_full",default:"native"},{name:"audio_encoder_weight_type",type:"enum",description:"Audio encoder matmul storage.",required:!1,values:["native","f32","f16"],default:"native"},{name:"thinker_weight_type",type:"enum",description:"Thinker matmul storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"audio_encoder_graph_arena_mb",type:"int",description:"Audio encoder graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:128},{name:"thinker_prefill_graph_arena_mb",type:"int",description:"Thinker prefill graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:256},{name:"thinker_decode_graph_arena_mb",type:"int",description:"Thinker cached-step graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:256},{name:"thinker_weight_context_mb",type:"int",description:"Thinker weight metadata context. Size in MiB; must be positive.",required:!1,min:1,default:64}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"qwen3_forced_aligner_0_6b_q8_0",tags:["Align","GGUF"],docs:["docs/models/qwen3_forced_aligner.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"qwen3_forced_aligner_0_6b_q8_0",display_name:"Qwen3 Forced Aligner 0.6B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Qwen3-ForcedAligner-0.6B-GGUF",files:["Qwen3-ForcedAligner-0.6B-GGUF/qwen3-forced-aligner-0.6b-q8_0.gguf"],strip_prefix:"Qwen3-ForcedAligner-0.6B-GGUF"},{id:"qwen3_forced_aligner_0_6b_f16",display_name:"Qwen3 Forced Aligner 0.6B F16 GGUF",format:"gguf",precision:"f16",target_directory:"Qwen3-ForcedAligner-0.6B-GGUF",files:["Qwen3-ForcedAligner-0.6B-GGUF/qwen3-forced-aligner-0.6b-f16.gguf"],strip_prefix:"Qwen3-ForcedAligner-0.6B-GGUF"},{id:"qwen3_forced_aligner_0_6b_safetensors",display_name:"Qwen3 Forced Aligner 0.6B Safetensors",format:"safetensors",precision:"native",target_directory:"Qwen3-ForcedAligner-0.6B",files:["config.json","generation_config.json","model.safetensors","preprocessor_config.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"Qwen/Qwen3-ForcedAligner-0.6B"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{preprocessor_config:"model:preprocessor_config.json",processor_config:"model:processor_config.json",chat_template:"model:chat_template.json",chat_template_jinja:"model:chat_template.jinja",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json"},tensors:{weights:"model:model.safetensors"}}]},XS={family:"qwen3_tts",display_name:"Qwen3-TTS",description:"Qwen3-TTS for controllable 10-language synthesis, 3-second voice cloning, CustomVoice, and VoiceDesign.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["zh","en","ja","ko","de","fr","ru","pt","es","it"],capabilities:{clone:["speaker_reference"],design:["voice_design"]},options:{request:[{name:"stream_chunk_policy",type:"enum",description:"Streaming codec chunk schedule: grow starts with one frame and doubles to stream_frames_per_event; fixed uses that size throughout.",required:!1,default:"grow",values:["grow","fixed"]},{name:"stream_frames_per_event",type:"int",description:"Codec frames per fixed streaming event, or the maximum for growing events. Smaller values reduce chunk latency but increase decoding overhead.",required:!1,default:12,min:1},{name:"language",type:"string",description:"Target synthesis language code or label; default auto lets the model infer from text and voice settings.",required:!1,default:"auto"},{name:"max_tokens",type:"int",description:"Maximum generated codec frames per text chunk; omitted uses the checkpoint generation_config.json (2048 when absent).",required:!1,min:1},{name:"do_sample",type:"bool",description:"Sample the main codec stream instead of greedy decoding; default true.",required:!1,default:!0},{name:"temperature",type:"float",description:"Main codec sampling temperature; must be > 0 when do_sample=true. Ignored when do_sample=false; default 0.9.",required:!1,min:0,default:.9},{name:"top_k",type:"int",description:"Main codec top-k sampling limit; default 50, 0 disables top-k filtering.",required:!1,min:0,default:50},{name:"top_p",type:"float",description:"Main codec nucleus sampling limit; default 1.0.",required:!1,min:0,max:1,default:1},{name:"repetition_penalty",type:"float",description:"Main codec repetition penalty; must be > 0, default 1.05.",required:!1,min:0,default:1.05},{name:"subtalker_do_sample",type:"bool",description:"Enable subtalker sampling for the remaining audio codebooks instead of greedy decoding; default true.",required:!1,default:!0},{name:"subtalker_temperature",type:"float",description:"Subtalker sampling temperature; must be > 0 when subtalker_do_sample=true. Ignored when subtalker_do_sample=false; default 0.9.",required:!1,min:0,default:.9},{name:"subtalker_top_k",type:"int",description:"Subtalker top-k sampling limit; default 50, 0 disables top-k filtering.",required:!1,min:0,default:50},{name:"subtalker_top_p",type:"float",description:"Subtalker nucleus sampling limit; default 1.0.",required:!1,min:0,max:1,default:1},{name:"seed",type:"int",description:"Codec sampling seed; omitted requests choose a random seed.",required:!1,min:0,max:4294967295},{name:"reference_text",type:"string",description:"Transcript matching the reference audio for voice cloning; required unless x_vector_only_mode=true.",required:!1},{name:"x_vector_only_mode",type:"bool",description:"Use only the speaker embedding for voice cloning instead of ICL reference codec prompting; default false.",required:!1,default:!1},{name:"instruct",type:"string",description:"Optional natural-language voice or style instruction for VoiceDesign and CustomVoice variants; empty instructions are accepted.",required:!1},{name:"voice_id",type:"enum",description:"Named preset speaker from the CustomVoice checkpoint. Legacy speaker remains accepted.",values:["aiden","dylan","eric","ono_anna","ryan","serena","sohee","uncle_fu","vivian"],required:!1},{name:"text_chunk_size",type:"int",description:"Maximum UTF-8 codepoints per long-form text chunk; default 8192.",required:!1,min:1,default:8192}],session:[{name:"lora",type:"path",description:"PEFT LoRA adapter directory or checkpoint file; optional speaker_embedding and tts_config.json sidecars provide a trained custom voice.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's alpha/r scaling; default 1.",required:!1,default:1},{name:"mem_saver",type:"bool",description:"Release the talker cached-step graph after each request; default false.",required:!1,default:!1},{name:"stitch_decode",type:"bool",description:"Voice the concatenated speech codes of all text chunks in one decoder pass instead of voicing each chunk separately; default false. Per-chunk voicing re-voices the voice-clone reference once per chunk and restarts the stateful vocoder cache at every chunk boundary; the stitched pass costs device memory proportional to the utterance.",required:!1,default:!1},{name:"attention",type:"enum",description:"Attention preference; default mixed uses manual prefill and contiguous-K/V flash cached decoding in the talker and code predictor, with eager speech tokenization. auto uses the shared backend policy; eager disables flash; flash uses flash with K/V views. Explicit values override perf_mode.",values:["mixed","auto","eager","flash"],required:!1,default:"mixed"},{name:"packed_projections",type:"bool",description:"Pack QKV and gate/up projections in the talker and code predictor without changing weight dtype; default false, true with cuda_perf. Explicit values override the preset.",required:!1},{name:"kv_cache_write",type:"enum",description:"Talker and code-predictor cache writes: standard by default, optimized with cuda_perf. Optimized uses backend-friendly views and I64 indices to allow fusion where supported. Explicit values override the preset.",values:["standard","optimized"],required:!1},{name:"kv_cache_type",type:"enum",description:"Talker and code-predictor KV storage: f32 by default, f16 with cuda_perf. Explicit values override the preset. F16 reduces cache memory and may change numerical results.",values:["f32","f16"],required:!1},{name:"talker_kv_cache_alignment",type:"int",description:"Round talker KV capacity to this many rows. Defaults to 1 (no padding), or 256 with perf_mode=cuda_perf. Explicit values override the preset. Larger alignments may use more memory and change numerical results.",min:1,default:1,required:!1},{name:"stream_decoder",type:"enum",description:"GGML streaming decoder; stateful carries convolution and attention history and caches graphs for exact chunk lengths. Uses more graph memory and can change audio; default windowed preserves existing behavior.",values:["windowed","stateful"],default:"windowed",required:!1},{name:"perf_mode",type:"enum",description:"Performance preset; default off. flash_attention selects flash attention. cuda_perf also selects packed projections, optimized cache writes, f16 KV and convolution weights, stateful streaming decoding, and KV alignment 256. Explicit session options override the preset. May change audio and memory use.",values:["off","flash_attention","cuda_perf"],required:!1,default:"off"},{name:"voice_prompt_cache_slots",type:"int",description:"Voice prompt cache slots; default 1.",required:!1,min:0,default:1},{name:"weight_type",type:"enum",description:"Shared talker matmul weight storage type; default native.",required:!1,default:"native",preset:"weight_type_full"},{name:"talker_weight_type",type:"enum",description:"Talker weight storage type; defaults to weight_type when set, otherwise native.",required:!1,preset:"weight_type_full"},{name:"speech_encoder_weight_type",type:"enum",description:"Reference speech encoder matmul weight storage type; default native.",required:!1,default:"native",preset:"weight_type_full"},{name:"speech_decoder_weight_type",type:"enum",description:"Speech decoder matmul weight storage type; default native.",required:!1,default:"native",preset:"weight_type_full"},{name:"conv_weight_type",type:"enum",description:"Speech tokenizer and speaker-encoder convolution weight storage type; default f32.",required:!1,default:"f32",preset:"weight_type_conv"},{name:"exec_plan",type:"string",required:!1,default:"{}",description:"JSON object of component execution plans. Component: speech_decoder. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/rknn. GGML supports the session backend. RKNN requires artifacts.main, optionally artifacts.first for the first streaming group, and ENGINE_ENABLE_RKNN; omit backend. RKNN skips GGML decoder weights. Neither implementation takes params."},{name:"talker_graph_arena_mb",type:"int",description:"Talker graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"speech_encoder_graph_arena_mb",type:"int",description:"Reference speech encoder graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"speech_decoder_graph_arena_mb",type:"int",description:"Speech decoder graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"speaker_encoder_graph_arena_mb",type:"int",description:"Speaker encoder graph arena size in MiB; default 32.",required:!1,min:1,default:32},{name:"talker_constant_context_mb",type:"int",description:"Talker constant tensor context size in MiB; default 4.",required:!1,min:1,default:4},{name:"code_predictor_constant_context_mb",type:"int",description:"Code predictor constant tensor context size in MiB; default 4.",required:!1,min:1,default:4},{name:"speech_decoder_constant_context_mb",type:"int",description:"Speech decoder constant tensor context size in MiB; default 4.",required:!1,min:1,default:4}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"qwen3_tts_1_7b_base_q8_0",tags:["TTS","Clone","Design","GGUF"],docs:["docs/models/qwen3_tts.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"qwen3_tts_1_7b_base_q8_0",display_name:"Qwen3 TTS 12Hz 1.7B Base Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Qwen3-TTS-12Hz-1.7B-Base-GGUF",files:["Qwen3-TTS-12Hz-1.7B-Base-GGUF/qwen3-tts-12hz-1.7b-base-q8_0_v2.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-Base-GGUF"},{id:"qwen3_tts_1_7b_base_bf16",display_name:"Qwen3 TTS 12Hz 1.7B Base BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Qwen3-TTS-12Hz-1.7B-Base-GGUF",files:["Qwen3-TTS-12Hz-1.7B-Base-GGUF/qwen3-tts-12hz-1.7b-base-bf16.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-Base-GGUF"},{id:"qwen3_tts_1_7b_base_orig",display_name:"Qwen3 TTS 12Hz 1.7B Base Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"Qwen3-TTS-12Hz-1.7B-Base-GGUF",files:["Qwen3-TTS-12Hz-1.7B-Base-GGUF/qwen3-tts-12hz-1.7b-base-orig.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-Base-GGUF"},{id:"qwen3_tts_1_7b_customvoice_q8_0",display_name:"Qwen3 TTS 12Hz 1.7B CustomVoice Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF",files:["Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF/qwen3-tts-12hz-1.7b-customvoice-q8_0.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF"},{id:"qwen3_tts_1_7b_customvoice_bf16",display_name:"Qwen3 TTS 12Hz 1.7B CustomVoice BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF",files:["Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF/qwen3-tts-12hz-1.7b-customvoice-bf16.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-CustomVoice-GGUF"},{id:"qwen3_tts_1_7b_voicedesign_q8_0",display_name:"Qwen3 TTS 12Hz 1.7B VoiceDesign Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF",files:["Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF/qwen3-tts-12hz-1.7b-voicedesign-q8_0.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF"},{id:"qwen3_tts_1_7b_voicedesign_bf16",display_name:"Qwen3 TTS 12Hz 1.7B VoiceDesign BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF",files:["Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF/qwen3-tts-12hz-1.7b-voicedesign-bf16.gguf"],strip_prefix:"Qwen3-TTS-12Hz-1.7B-VoiceDesign-GGUF"},{id:"qwen3_tts_0_6b_base_q8_0",display_name:"Qwen3 TTS 12Hz 0.6B Base Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Qwen3-TTS-12Hz-0.6B-Base-GGUF",files:["Qwen3-TTS-12Hz-0.6B-Base-GGUF/qwen3-tts-12hz-0.6b-base-q8_0.gguf"],strip_prefix:"Qwen3-TTS-12Hz-0.6B-Base-GGUF"},{id:"qwen3_tts_0_6b_base_bf16",display_name:"Qwen3 TTS 12Hz 0.6B Base BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Qwen3-TTS-12Hz-0.6B-Base-GGUF",files:["Qwen3-TTS-12Hz-0.6B-Base-GGUF/qwen3-tts-12hz-0.6b-base-bf16.gguf"],strip_prefix:"Qwen3-TTS-12Hz-0.6B-Base-GGUF"},{id:"qwen3_tts_1_7b_base_safetensors",display_name:"Qwen3 TTS 12Hz 1.7B Base Safetensors",format:"safetensors",precision:"native",target_directory:"Qwen3-TTS-12Hz-1.7B-Base",files:["config.json","generation_config.json","model.safetensors","speech_tokenizer/config.json","speech_tokenizer/model.safetensors","tokenizer_config.json","vocab.json","merges.txt"],download:{kind:"huggingface_snapshot",repo:"Qwen/Qwen3-TTS-12Hz-1.7B-Base"}},{id:"qwen3_tts_0_6b_base_speech_decoder_rk3588",display_name:"Qwen3 TTS 12Hz 0.6B NPU Speech Decoder RKNN Pair (RK3588)",format:"rknn",precision:"f16",target_directory:"Qwen3-TTS-12Hz-0.6B-Base-GGUF",files:["rk3588/qwen3-tts/vocoder_stateful_16_fp16.rknn","rk3588/qwen3-tts/vocoder_stateful_64b_fp16.rknn"],strip_prefix:"rk3588/qwen3-tts",description:"Pre-compiled RK3588 engine pair (chunk 16 for the first streaming group, chunk 64 for the rest) for the qwen3_tts RKNN speech decoder (qwen3_tts.exec_plan, artifacts.main/first); installs beside the 0.6B GGUF weights and is named by bare file name. Built by tools/rknn from the Qwen3-TTS-12Hz speech tokenizer decoder; see docs/build/rockchip-npu.md.",download:{kind:"huggingface_snapshot",repo:"wOvANAI/rknn-tts-engines",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",speech_tokenizer_config:"model:speech_tokenizer/config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},speech_tokenizer_weights:{source:"weights:",prefix:"speech_tokenizer_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_config:"model:tokenizer_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",speech_tokenizer_config:"model:speech_tokenizer/config.json"},tensors:{model_weights:"model:model.safetensors",speech_tokenizer_weights:"model:speech_tokenizer/model.safetensors"}}]},JS={schema_version:1,family:"reuse",display_name:"RE-USE",description:"Sample-rate-independent speech restoration with bidirectional Mamba.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{s2s:["audio_enhancement"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Chunk duration in seconds; zero processes the whole recording. When enabled, the chunk sample count must exceed sample_rate/50. Chunking changes bidirectional and normalization context. Native batching requires zero; positive chunk durations are supported only for single requests.",min:0,default:0,required:!1},{name:"audio_chunk_overlap_sec",type:"float",description:"Hann-weighted overlap in seconds, shorter than the chunk duration. Applies only to single-request chunking; native batching ignores this setting.",min:0,default:1,required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; native preserves GGUF tensor types.",preset:"weight_type_full",default:"native",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/RE-USE-GGUF",revision:"main",gated:!1}},packages:[{id:"reuse_f32",display_name:"RE-USE F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"RE-USE-GGUF",files:["reuse-f32.gguf"]},{id:"reuse_f16",display_name:"RE-USE F16 GGUF",default:!1,format:"gguf",precision:"f16",target_directory:"RE-USE-GGUF",files:["reuse-f16.gguf"]},{id:"reuse_q8_0",display_name:"RE-USE Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"RE-USE-GGUF",files:["reuse-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"reuse_f32",tags:["GGUF"],docs:["docs/models/reuse.md","docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},ZS={schema_version:1,family:"rvc",display_name:"RVC",description:"RVC is an offline retrieval-based voice conversion family packaged for audio.cpp with native HuBERT content features, RMVPE pitch extraction, optional IVF retrieval blending, packaged v1/v2 voices, and support for user-supplied RVC checkpoints.",category:"voice_conversion",status:"experimental",tasks:["vc"],modes:["offline"],languages:["language_agnostic"],runtime:{tags:["gguf"]},capabilities:{},options:{request:[{name:"voice_id",type:"enum",description:"Packaged RVC voice id; default selects the v2 default voice. Ignored when voice_model_path is provided.",values:["default","manthos","chocola","fraise"],required:!1,default:"default"},{name:"voice_model_path",type:"path",description:"Optional user RVC .pth or .pt voice checkpoint path. When set, this overrides the packaged voice id.",required:!1},{name:"pitch_extractor",type:"enum",description:"Pitch extraction method for F0-enabled voices; the native path currently supports rmvpe only.",values:["rmvpe"],required:!1,default:"rmvpe"},{name:"pitch_file",type:"path",description:"Optional CSV F0 override file with time,Hz rows sorted by time.",required:!1},{name:"retrieval_index_file",type:"path",description:"Optional user FAISS .index retrieval path used when retrieval_blend is greater than 0 for a user voice model.",required:!1},{name:"retrieval_blend",type:"float",description:"IVF retrieval feature blend rate; default 0 disables retrieval blending.",required:!1,min:0,max:1,default:0},{name:"semitone_shift",type:"int",description:"Semitone pitch shift applied before synthesis; default 0.",required:!1,default:0},{name:"pitch_filter_radius",type:"int",description:"Pitch median-filter switch: values >2 enable a radius-1 filter; values <=2 disable it.",required:!1,default:3},{name:"output_sample_rate",type:"int",description:"Output sample rate in Hz; default 0 keeps the selected voice model sample rate. Nonpositive values preserve the voice sample rate.",required:!1,default:0},{name:"rms_mix_rate",type:"float",description:"RMS envelope mix rate applied after conversion; default 0.25.",required:!1,default:.25},{name:"unvoiced_protection",type:"float",description:"Unvoiced consonant protection strength; must be in [0, 1], default 0.33.",required:!1,min:0,max:1,default:.33},{name:"speaker_id",type:"int",description:"Speaker embedding id for multi-speaker RVC checkpoints; default 0.",required:!1,min:0,default:0},{name:"audio_pad_duration_sec",type:"int",description:"Long-audio chunk pad duration in seconds; default 1.",required:!1,min:1,default:1},{name:"split_query_sec",type:"int",description:"Quiet-point query window in seconds for long-audio splitting; default 5.",required:!1,min:1,default:5},{name:"split_center_sec",type:"int",description:"Long-audio split center stride in seconds; default 30.",required:!1,min:1,default:30},{name:"split_threshold_sec",type:"int",description:"Input duration in seconds before quiet-point splitting is used; default 32.",required:!1,min:1,default:32}],session:[{name:"weight_type",type:"enum",description:"Tensor storage type for native RVC, HuBERT, and RMVPE weights; default f32.",preset:"weight_type_full",required:!1,default:"f32"},{name:"voice_cache_slots",type:"int",description:"User voice model cache slots; default 4, set 0 to disable caching.",required:!1,min:0,default:4}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"rvc_f16",display_name:"RVC F16 GGUF",default:!0,format:"gguf",precision:"f16",target_directory:"RVC-GGUF",files:["RVC-GGUF/rvc-f16.gguf"],strip_prefix:"RVC-GGUF"}],dependencies:[],ui:{recommended_package:"rvc_f16",tags:["VC","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{voice_v1_chocola_index:"model:voices/v1/chocola/added_IVF732_Flat_nprobe_1.index",voice_v1_fraise_index:"model:voices/v1/fraise/added_IVF802_Flat_nprobe_1.index",voice_v2_default_index:"model:voices/v2/default/added_IVF511_Flat_nprobe_1_default_v2.index",voice_v2_manthos_index:"model:voices/v2/manthos/added_IVF2586_Flat_nprobe_1_manthos_v2.index"},tensors:{support_hubert_base:{source:"weights:",prefix:"support_hubert_base"},support_rmvpe:{source:"weights:",prefix:"support_rmvpe"},voice_v1_chocola_checkpoint:{source:"weights:",prefix:"voice_v1_chocola_checkpoint"},voice_v1_chocola_index_vectors:{source:"weights:",prefix:"voice_v1_chocola_index_vectors"},voice_v1_fraise_checkpoint:{source:"weights:",prefix:"voice_v1_fraise_checkpoint"},voice_v1_fraise_index_vectors:{source:"weights:",prefix:"voice_v1_fraise_index_vectors"},voice_v2_default_checkpoint:{source:"weights:",prefix:"voice_v2_default_checkpoint"},voice_v2_default_index_vectors:{source:"weights:",prefix:"voice_v2_default_index_vectors"},voice_v2_manthos_checkpoint:{source:"weights:",prefix:"voice_v2_manthos_checkpoint"},voice_v2_manthos_index_vectors:{source:"weights:",prefix:"voice_v2_manthos_index_vectors"}}},{format:"safetensors",roots:{safetensors:"../safetensors"},files:{voice_v1_chocola_index:"safetensors:voices/v1/chocola/added_IVF732_Flat_nprobe_1.index",voice_v1_fraise_index:"safetensors:voices/v1/fraise/added_IVF802_Flat_nprobe_1.index",voice_v2_default_index:"safetensors:voices/v2/default/added_IVF511_Flat_nprobe_1_default_v2.index",voice_v2_manthos_index:"safetensors:voices/v2/manthos/added_IVF2586_Flat_nprobe_1_manthos_v2.index"},tensors:{support_hubert_base:"safetensors:support/hubert_base.safetensors",support_rmvpe:"safetensors:support/rmvpe.safetensors",voice_v1_chocola_checkpoint:"safetensors:voices/v1/chocola/chocola2333333.safetensors",voice_v1_chocola_index_vectors:"safetensors:voices/v1/chocola/added_IVF732_Flat_nprobe_1.ivf.safetensors",voice_v1_fraise_checkpoint:"safetensors:voices/v1/fraise/fraise2333333.safetensors",voice_v1_fraise_index_vectors:"safetensors:voices/v1/fraise/added_IVF802_Flat_nprobe_1.ivf.safetensors",voice_v2_default_checkpoint:"safetensors:voices/v2/default/default.safetensors",voice_v2_default_index_vectors:"safetensors:voices/v2/default/added_IVF511_Flat_nprobe_1_default_v2.ivf.safetensors",voice_v2_manthos_checkpoint:"safetensors:voices/v2/manthos/manthos.safetensors",voice_v2_manthos_index_vectors:"safetensors:voices/v2/manthos/added_IVF2586_Flat_nprobe_1_manthos_v2.ivf.safetensors"}}]},e8={schema_version:1,family:"sam_audio",display_name:"SAM Audio",description:"Prompt-conditioned audio separation.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"reference_video_file",type:"path",description:"Masked video identifying the target source; frames are matched to audio by nearest timestamp. Requires libav runtime libraries. Mutually exclusive with reference_image_file.",required:!1},{name:"reference_image_file",type:"path",description:"Masked RGB image identifying the target sound source, used as a constant visual prompt throughout the recording. Mask unwanted regions before supplying the image.",required:!1},{name:"anchors",type:"string",description:'Optional JSON array of time spans: [["+", start_seconds, end_seconds], ["-", start_seconds, end_seconds]]. Positive spans identify the target; negative spans identify sounds to exclude.',required:!1},{name:"seed",type:"int",description:"Random seed; -1 selects a random seed.",min:-1,max:4294967295,default:42,required:!1},{name:"num_inference_steps",type:"int",description:"Midpoint integration steps; each step evaluates the denoiser twice.",min:1,default:16,required:!1}],session:[{name:"memory_bounded",type:"bool",description:"Experimental bounded-workspace execution with full recording context. Provisional option name.",default:!1,required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/SAM-Audio-GGUF",revision:"main",gated:!1}},packages:[{id:"sam_audio_small_f32",display_name:"SAM Audio Small F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"SAM-Audio-GGUF",files:["sam-audio-small-f32.gguf"]},{id:"sam_audio_small_bf16",display_name:"SAM Audio Small BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"SAM-Audio-GGUF",files:["sam-audio-small-bf16.gguf"]},{id:"sam_audio_small_q8_0",display_name:"SAM Audio Small Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"SAM-Audio-GGUF",files:["sam-audio-small-q8_0.gguf"]},{id:"sam_audio_base_f32",display_name:"SAM Audio Base F32 GGUF",format:"gguf",precision:"f32",target_directory:"SAM-Audio-GGUF",files:["sam-audio-base-f32.gguf"]},{id:"sam_audio_base_bf16",display_name:"SAM Audio Base BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"SAM-Audio-GGUF",files:["sam-audio-base-bf16.gguf"]},{id:"sam_audio_base_q8_0",display_name:"SAM Audio Base Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"SAM-Audio-GGUF",files:["sam-audio-base-q8_0.gguf"]},{id:"sam_audio_large_f32",display_name:"SAM Audio Large F32 GGUF",format:"gguf",precision:"f32",target_directory:"SAM-Audio-GGUF",files:["sam-audio-large-f32.gguf"]},{id:"sam_audio_large_bf16",display_name:"SAM Audio Large BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"SAM-Audio-GGUF",files:["sam-audio-large-bf16.gguf"]},{id:"sam_audio_large_q8_0",display_name:"SAM Audio Large Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"SAM-Audio-GGUF",files:["sam-audio-large-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"sam_audio_small_f32",tags:["GGUF"],docs:["docs/models/sam_audio.md","docs/audio_tools.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",t5_config:"model:t5_config.json",tokenizer:"model:tokenizer/spiece.model"},tensors:{weights:{source:"weights:"}}}]},t8={schema_version:1,family:"samsone",display_name:"SAMSONE",description:"Compact audio-language models for audio captioning, question answering, and sound, music, and speech understanding.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["en"],capabilities:{},runtime:{tags:["gguf"]},options:{request:[{name:"instruct",type:"string",default:"describe the audio",required:!1,description:"Question or instruction about the input audio."},{name:"max_tokens",type:"int",min:1,default:100,required:!1,description:"Maximum response tokens. Must be positive; audio/prompt tokens plus this budget must fit checkpoint max_position_embeddings."}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"samsone_99m_bf16",display_name:"SAMSONE 99M GGUF BF16",default:!0,format:"gguf",precision:"bf16",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-99m-bf16.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_99m_q8_0",display_name:"SAMSONE 99M GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-99m-q8_0.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_134m_bf16",display_name:"SAMSONE 134M GGUF BF16",format:"gguf",precision:"bf16",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-134m-bf16.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_134m_q8_0",display_name:"SAMSONE 134M GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-134m-q8_0.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_356m_bf16",display_name:"SAMSONE 356M GGUF BF16",format:"gguf",precision:"bf16",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-356m-bf16.gguf"],strip_prefix:"Samsone-GGUF"},{id:"samsone_356m_q8_0",display_name:"SAMSONE 356M GGUF Q8_0",format:"gguf",precision:"q8_0",target_directory:"Samsone-GGUF",files:["Samsone-GGUF/samsone-356m-q8_0.gguf"],strip_prefix:"Samsone-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/samsone.md"],recommended_package:"samsone_99m_bf16"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",token_map:"model:token_map.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},i8={schema_version:1,family:"sanotts",display_name:"sanoTTS Nano",description:"Very small multilingual text-to-speech across fourteen languages. Two graphs: the nano lineage (duration student, contextual acoustic student to mel-100, noise-fed ConvNeXt-1D decoder with an iSTFT head; voices heart 2.27M and heart-nano 294k, English, 24 kHz) and the deterministic piperlite lineage (duration student, acoustic student to a 192-channel latent, optionally through a calibration adapter, then a 3-stage ConvTranspose1d decoder with dilated residual banks; voices amy, hfc and kristin for English, vi, id, cs, de, es, fr, it, pt, ro, ru, tr, ne and hi at 1.1-1.8M parameters, 22.05 kHz). Uses an external eSpeak-ng phonemizer.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en","vi","id","cs","de","es","fr","it","pt","ro","ru","tr","ne","hi"],runtime:{tags:["gguf"]},capabilities:{tts:["long_form"]},options:{request:[{name:"speed",type:"float",description:"Speech speed multiplier; larger is faster. Its reciprocal scales the voice's tuned length scale before the per-token clamp.",required:!1,min:.5,max:2,default:1},{name:"seed",type:"int",description:"Decoder noise seed. The decoder is noise-fed, so a given seed picks one of many valid renderings; 0 derives it from the text as sha256(text)[:8], which is what the reference implementations do. Piperlite voices are deterministic and ignore the seed.",required:!1,min:0,default:0},{name:"text_chunk_mode",type:"enum",description:"Long-form text chunking mode.",values:["word_budget"],required:!1,default:"word_budget"},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per long-form text chunk; default 280.",required:!1,min:1,default:280}],session:[{name:"espeak_library_path",type:"path",description:"Optional explicit path to the eSpeak-ng shared library.",required:!1},{name:"espeak_data_path",type:"path",description:"Optional explicit path to the directory containing espeak-ng-data.",required:!1},{name:"exec_plan",type:"string",description:"JSON object of component execution plans. Component: decoder. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/neon; no artifacts or params are used. Default retains automatic NEON selection on supported Nano-lineage AArch64 CPU sessions. GGML supports the session backend; explicit NEON requires a Nano-lineage model, AArch64 NEON, and a CPU session.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"ampixa/sanoTTS",revision:"main",gated:!1}},packages:[{id:"sanotts_heart_nano_orig",display_name:"sanoTTS heart-nano 294k FP32 GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"sanoTTS-heart-nano-GGUF",files:["gguf/heart-nano-f32.gguf","gguf/config.json"],strip_prefix:"gguf"},{id:"sanotts_heart_orig",display_name:"sanoTTS heart 2.27M FP32 GGUF",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-heart-GGUF",files:["gguf/heart/heart-f32.gguf","gguf/heart/config.json"],strip_prefix:"gguf/heart"},{id:"sanotts_amy_orig",display_name:"sanoTTS amy 1.46M FP32 GGUF (English, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-amy-GGUF",files:["gguf/amy/amy-f32.gguf","gguf/amy/config.json"],strip_prefix:"gguf/amy"},{id:"sanotts_hfc_orig",display_name:"sanoTTS hfc 1.83M FP32 GGUF (English, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-hfc-GGUF",files:["gguf/hfc/hfc-f32.gguf","gguf/hfc/config.json"],strip_prefix:"gguf/hfc"},{id:"sanotts_kristin_orig",display_name:"sanoTTS kristin 1.40M FP32 GGUF (English, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-kristin-GGUF",files:["gguf/kristin/kristin-f32.gguf","gguf/kristin/config.json"],strip_prefix:"gguf/kristin"},{id:"sanotts_vi_orig",display_name:"sanoTTS vi 1.57M FP32 GGUF (Vietnamese, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-vi-GGUF",files:["gguf/vi/vi-f32.gguf","gguf/vi/config.json"],strip_prefix:"gguf/vi"},{id:"sanotts_id_orig",display_name:"sanoTTS id 1.56M FP32 GGUF (Indonesian, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-id-GGUF",files:["gguf/id/id-f32.gguf","gguf/id/config.json"],strip_prefix:"gguf/id"},{id:"sanotts_cs_orig",display_name:"sanoTTS cs 1.57M FP32 GGUF (Czech, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-cs-GGUF",files:["gguf/cs/cs-f32.gguf","gguf/cs/config.json"],strip_prefix:"gguf/cs"},{id:"sanotts_de_orig",display_name:"sanoTTS de 1.57M FP32 GGUF (German, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-de-GGUF",files:["gguf/de/de-f32.gguf","gguf/de/config.json"],strip_prefix:"gguf/de"},{id:"sanotts_es_orig",display_name:"sanoTTS es 1.56M FP32 GGUF (Spanish, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-es-GGUF",files:["gguf/es/es-f32.gguf","gguf/es/config.json"],strip_prefix:"gguf/es"},{id:"sanotts_fr_orig",display_name:"sanoTTS fr 1.57M FP32 GGUF (French, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-fr-GGUF",files:["gguf/fr/fr-f32.gguf","gguf/fr/config.json"],strip_prefix:"gguf/fr"},{id:"sanotts_it_orig",display_name:"sanoTTS it 1.57M FP32 GGUF (Italian, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-it-GGUF",files:["gguf/it/it-f32.gguf","gguf/it/config.json"],strip_prefix:"gguf/it"},{id:"sanotts_pt_orig",display_name:"sanoTTS pt 1.57M FP32 GGUF (Portuguese (Brazil), piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-pt-GGUF",files:["gguf/pt/pt-f32.gguf","gguf/pt/config.json"],strip_prefix:"gguf/pt"},{id:"sanotts_ro_orig",display_name:"sanoTTS ro 1.57M FP32 GGUF (Romanian, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-ro-GGUF",files:["gguf/ro/ro-f32.gguf","gguf/ro/config.json"],strip_prefix:"gguf/ro"},{id:"sanotts_ru_orig",display_name:"sanoTTS ru 1.57M FP32 GGUF (Russian, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-ru-GGUF",files:["gguf/ru/ru-f32.gguf","gguf/ru/config.json"],strip_prefix:"gguf/ru"},{id:"sanotts_tr_orig",display_name:"sanoTTS tr 1.56M FP32 GGUF (Turkish, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-tr-GGUF",files:["gguf/tr/tr-f32.gguf","gguf/tr/config.json"],strip_prefix:"gguf/tr"},{id:"sanotts_ne_orig",display_name:"sanoTTS ne 1.47M FP32 GGUF (Nepali, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-ne-GGUF",files:["gguf/ne/ne-f32.gguf","gguf/ne/config.json"],strip_prefix:"gguf/ne"},{id:"sanotts_hi_orig",display_name:"sanoTTS hi 1.50M FP32 GGUF (Hindi, piperlite)",default:!1,format:"gguf",precision:"orig",target_directory:"sanoTTS-hi-GGUF",files:["gguf/hi/hi-f32.gguf","gguf/hi/config.json"],strip_prefix:"gguf/hi"}],dependencies:[],ui:{recommended_package:"sanotts_heart_nano_orig",tags:["TTS","GGUF"],docs:["docs/tts.md","docs/models/sanotts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}}]},a8={family:"seed_vc",schema_version:1,display_name:"Seed-VC",description:"Zero-shot voice conversion and singing voice conversion model for transferring timbre and style from reference audio, with low-latency realtime conversion and optional lightweight fine-tuning.",category:"voice_conversion",status:"supported",tasks:["vc","svc"],modes:["offline"],languages:["language_agnostic"],capabilities:{vc:["speaker_reference"],svc:["speaker_reference","singing"]},dependencies:[],runtime:{tags:["gguf"]},ui:{recommended_package:"seed_vc_mlx_q8_0",tags:["VC","GGUF"],docs:["docs/models/seed_vc.md","docs/audio_tools.md","docs/gguf.md"]},options:{request:[{name:"route",type:"enum",description:"Select the Seed-VC conversion route. Defaults to v2_vc for VC and v1_svc for SVC.",values:["v2_vc","v1_svc","v1_whisper_bigvgan_vc","v1_xlsr_hift_vc"],required:!1},{name:"duration_scale",type:"float",description:"V1 output duration multiplier; must be finite and positive, default 1.0. V2 validates this option but does not apply it.",required:!1,min:0,default:1},{name:"num_inference_steps",type:"int",description:"Diffusion steps; default 30.",required:!1,min:1,default:30},{name:"inference_guidance_scale",type:"float",description:"V1 classifier-free guidance scale; default 0.7. Any finite value is accepted; V1 disables CFG for nonpositive values.",required:!1,default:.7},{name:"intelligibility_guidance_scale",type:"float",description:"V2 classifier-free guidance scale for source-content intelligibility; default 0.7. Any finite value is accepted and used in V2 guidance arithmetic.",required:!1,default:.7},{name:"similarity_guidance_scale",type:"float",description:"V2 classifier-free guidance scale for target-speaker similarity; default 0.7. Any finite value is accepted and used in V2 guidance arithmetic.",required:!1,default:.7},{name:"voice_anonymization",type:"bool",description:"Use randomized average-voice conditioning instead of target-speaker conditioning for V2 anonymization; default false.",required:!1,default:!1},{name:"seed",type:"int",description:"Seed for V1/V2 diffusion noise and HiFT stochastic source excitation; omitted requests choose a random seed.",required:!1,min:0},{name:"noise_file",type:"path",description:"Optional raw f32 noise file for deterministic V1/V2 diffusion noise and XLSR/HiFT source excitation.",required:!1},{name:"f0_condition",type:"bool",description:"Enable V1 F0 conditioning. Defaults to true for v1_svc and false for the V1 voice-conversion routes.",required:!1},{name:"auto_f0_adjust",type:"bool",description:"Automatically adjust V1 source pitch toward the target pitch level; default false.",required:!1,default:!1},{name:"semitone_shift",type:"int",description:"V1 pitch shift in semitones for singing voice conversion; default 0.",required:!1,default:0}],session:[{name:"weight_type",type:"enum",description:"Shared Seed-VC component weight storage type; default native, except RMVPE uses f32 unless overridden.",preset:"weight_type_full",required:!1,default:"native"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"seed_vc_mlx_q8_0",display_name:"SeedVC-MLX Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"SeedVC-MLX-GGUF",files:["SeedVC-MLX-GGUF/seed-vc-mlx-q8_0.gguf"],strip_prefix:"SeedVC-MLX-GGUF"},{id:"seed_vc_mlx_f16",display_name:"SeedVC-MLX F16 GGUF",format:"gguf",precision:"f16",target_directory:"SeedVC-MLX-GGUF",files:["SeedVC-MLX-GGUF/seed-vc-mlx-f16.gguf"],strip_prefix:"SeedVC-MLX-GGUF"},{id:"seed_vc_mlx_orig",display_name:"SeedVC-MLX Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"SeedVC-MLX-GGUF",files:["SeedVC-MLX-GGUF/seed-vc-mlx-orig.gguf"],strip_prefix:"SeedVC-MLX-GGUF"},{id:"seed_vc_mlx_safetensors",display_name:"SeedVC-MLX Safetensors",format:"safetensors",precision:"native",target_directory:"SeedVC-MLX",files:["seed_vc_manifest.json","v2/ar.safetensors","v2/cfm.safetensors","v2/vc_wrapper.json","astral/bsq32.json","astral/bsq2048.json","v1/svc.json","v1/whisper_bigvgan.json","v1/xlsr_hift.json","hift/config.json","bigvgan/v2_22khz_80band_256x/config.json","bigvgan/v2_44khz_128band_512x/config.json","whisper-small/config.json","hubert-large-ll60k/config.json","wav2vec2-xls-r-300m/config.json","v1/svc.safetensors","v1/whisper_bigvgan.safetensors","v1/xlsr_hift.safetensors","astral/bsq32.safetensors","astral/bsq2048.safetensors","campplus/model.safetensors","rmvpe/model.safetensors","hift/model.safetensors","bigvgan/v2_22khz_80band_256x/model.safetensors","bigvgan/v2_44khz_128band_512x/model.safetensors","whisper-small/model.safetensors","hubert-large-ll60k/model.safetensors","wav2vec2-xls-r-300m/model.safetensors"],download:{kind:"huggingface_snapshot",repo:"mlx-community/SeedVC-MLX"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{manifest:"model:seed_vc_manifest.json",v2_wrapper_config:"model:v2/vc_wrapper.json",astral_bsq32_config:"model:astral/bsq32.json",astral_bsq2048_config:"model:astral/bsq2048.json",v1_svc_config:"model:v1/svc.json",v1_whisper_bigvgan_config:"model:v1/whisper_bigvgan.json",v1_xlsr_hift_config:"model:v1/xlsr_hift.json",hift_config:"model:hift/config.json",bigvgan_22k_config:"model:bigvgan/v2_22khz_80band_256x/config.json",bigvgan_44k_config:"model:bigvgan/v2_44khz_128band_512x/config.json",whisper_small_config:"model:whisper-small/config.json",hubert_large_config:"model:hubert-large-ll60k/config.json",wav2vec2_xlsr_config:"model:wav2vec2-xls-r-300m/config.json"},tensors:{v2_ar_weights:{source:"weights:",prefix:"v2_ar_weights"},v2_cfm_weights:{source:"weights:",prefix:"v2_cfm_weights"},v1_svc_weights:{source:"weights:",prefix:"v1_svc_weights"},v1_whisper_bigvgan_weights:{source:"weights:",prefix:"v1_whisper_bigvgan_weights"},v1_xlsr_hift_weights:{source:"weights:",prefix:"v1_xlsr_hift_weights"},astral_bsq32_weights:{source:"weights:",prefix:"astral_bsq32_weights"},astral_bsq2048_weights:{source:"weights:",prefix:"astral_bsq2048_weights"},campplus_weights:{source:"weights:",prefix:"campplus_weights"},rmvpe_weights:{source:"weights:",prefix:"rmvpe_weights"},hift_weights:{source:"weights:",prefix:"hift_weights"},bigvgan_22k_weights:{source:"weights:",prefix:"bigvgan_22k_weights"},bigvgan_44k_weights:{source:"weights:",prefix:"bigvgan_44k_weights"},whisper_small_weights:{source:"weights:",prefix:"whisper_small_weights"},hubert_large_weights:{source:"weights:",prefix:"hubert_large_weights"},wav2vec2_xlsr_weights:{source:"weights:",prefix:"wav2vec2_xlsr_weights"}}},{format:"safetensors",roots:{model:"."},files:{manifest:"model:seed_vc_manifest.json",v2_wrapper_config:"model:v2/vc_wrapper.json",astral_bsq32_config:"model:astral/bsq32.json",astral_bsq2048_config:"model:astral/bsq2048.json",v1_svc_config:"model:v1/svc.json",v1_whisper_bigvgan_config:"model:v1/whisper_bigvgan.json",v1_xlsr_hift_config:"model:v1/xlsr_hift.json",hift_config:"model:hift/config.json",bigvgan_22k_config:"model:bigvgan/v2_22khz_80band_256x/config.json",bigvgan_44k_config:"model:bigvgan/v2_44khz_128band_512x/config.json",whisper_small_config:"model:whisper-small/config.json",hubert_large_config:"model:hubert-large-ll60k/config.json",wav2vec2_xlsr_config:"model:wav2vec2-xls-r-300m/config.json"},tensors:{v2_ar_weights:"model:v2/ar.safetensors",v2_cfm_weights:"model:v2/cfm.safetensors",v1_svc_weights:"model:v1/svc.safetensors",v1_whisper_bigvgan_weights:"model:v1/whisper_bigvgan.safetensors",v1_xlsr_hift_weights:"model:v1/xlsr_hift.safetensors",astral_bsq32_weights:"model:astral/bsq32.safetensors",astral_bsq2048_weights:"model:astral/bsq2048.safetensors",campplus_weights:"model:campplus/model.safetensors",rmvpe_weights:"model:rmvpe/model.safetensors",hift_weights:"model:hift/model.safetensors",bigvgan_22k_weights:"model:bigvgan/v2_22khz_80band_256x/model.safetensors",bigvgan_44k_weights:"model:bigvgan/v2_44khz_128band_512x/model.safetensors",whisper_small_weights:"model:whisper-small/model.safetensors",hubert_large_weights:"model:hubert-large-ll60k/model.safetensors",wav2vec2_xlsr_weights:"model:wav2vec2-xls-r-300m/model.safetensors"}}]},n8={schema_version:1,family:"sense_asr",display_name:"SenseVoice-Small",description:"SenseVoice-Small multilingual speech recognition with rich event/emotion/ITN tags via a SAN-M encoder and CTC head, ported to audio.cpp.",category:"asr",status:"community",tasks:["asr"],modes:["offline","streaming"],languages:["auto","zh","en","yue","ja","ko","pt","ru","es","it","fr","de","nl","pl","tr","ar","hi","vi","th","id","ms","fa","nospeech"],capabilities:{asr:["vad_chunking","partial_results"]},options:{request:[{name:"language",type:"string",description:"Recognition language, or auto to let the model infer it from the audio.",required:!1,default:"auto"},{name:"enable_itn",type:"bool",description:"Enable inverse text normalization (adds the withitn query token).",required:!1,default:!0},{name:"keep_tags",type:"bool",description:"Keep <|event|>/<|emotion|>/<|language|> tags inline in the output text.",required:!1,default:!1},{name:"audio_chunk_mode",type:"enum",description:"Offline chunk mode: auto, fixed, vad, or none. Streaming always uses fixed-duration windows.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Positive duration rounding to at least one sample; sets fixed windows and the VAD maximum chunk length.",required:!1,default:30}],session:[{name:"weight_type",type:"enum",description:"Shared model weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"encoder_graph_arena_mb",type:"int",description:"Encoder graph arena size in MB.",required:!1,min:1,default:1024},{name:"vad_model_path",type:"string",description:"Path to the Silero VAD model directory used by automatic audio chunking.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},runtime:{tags:["gguf","server","stream","cuda","metal","cpu"]},packages:[{id:"sensevoice_small_q8",display_name:"SenseVoice-Small Q8 GGUF",description:"audio.cpp GGUF built from the SenseVoice-Small checkpoint via the SenseVoice llama.cpp export script.",default:!0,format:"gguf",precision:"q8_0",target_directory:"SenseVoice-Small-GGUF",files:["sensevoice-small-q8-audiocpp-v1.gguf"],download:{kind:"huggingface_snapshot",repo:"FunAudioLLM/SenseVoiceSmall-GGUF-audiocpp",revision:"5c3fcfe748a8714216bc135476d5863084fddb72",gated:!1}}],dependencies:[],ui:{recommended_package:"sensevoice_small_q8",tags:["ASR","GGUF","Stream"],docs:["docs/models/sense_asr.md"],summary:"SenseVoice-Small transcription with event/emotion tags and ITN."},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{},optional_files:{},tensors:{weights:"weights:"}}]},s8={schema_version:1,family:"sheetsage2",display_name:"SheetSage2",description:"SheetSage2 audio-to-symbolic transcription. This native path consumes an input recording from a self-contained GGUF and emits an ABC score artifact.",category:"audio_tools",status:"supported",tasks:["midi"],modes:["offline"],languages:["music"],runtime:{tags:["gguf","cuda"]},capabilities:{midi:["midi_artifact"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum total decoder sequence length; default follows the embedded model context. Omitted uses checkpoint max_output_seq_len.",required:!1,min:1}],session:[{name:"attention_tile_rows",type:"int",description:"Query rows per encoder attention tile on any backend; 0 disables tiling. Use 1024 to bound each score tensor below 512 MiB for the 300-second window.",required:!1,min:0,default:0},{name:"weight_type",type:"enum",description:"Encoder and decoder weight storage override.",required:!1,default:"native",values:["native","f32","f16","bf16","q4_0","q4_k"]},{name:"weight_context_mb",type:"int",description:"Weight context arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"decoder_graph_arena_mb",type:"int",description:"Encoder/decoder graph arena size in MiB; default 1536.",required:!1,min:1,default:1536}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/SheetSage2-GGUF",revision:"main",gated:!1}},packages:[{id:"sheetsage2_orig",display_name:"SheetSage2 Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"SheetSage2-GGUF",files:["sheetsage2-orig.gguf"]}],dependencies:[],ui:{recommended_package:"sheetsage2_orig",tags:["Music","MIDI","GGUF"],docs:[]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:"weights:"}}]},r8={schema_version:1,family:"sherpa_kws",display_name:"sherpa-onnx Zipformer KWS",description:"Streaming Zipformer transducer keyword spotting from sherpa-onnx model exports.",category:"audio_tools",status:"experimental",tasks:["wake_word"],modes:["offline","streaming"],languages:["model_dependent"],capabilities:{wake_word:["speech_segments","stream_events"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"keywords",type:"string",description:"Newline- or slash-separated tokenized keyword rows; each row may include :score, #threshold, and @label fields.",required:!1},{name:"max_active_paths",type:"int",description:"Maximum keyword decoder hypotheses.",required:!1,default:4,min:1,max:64},{name:"keywords_score",type:"float",description:"Default context score added for each matched keyword token. Negative values are accepted but token scores are clamped to at least zero.",required:!1,default:1},{name:"keywords_threshold",type:"float",description:"Default mean acoustic probability required to trigger a keyword.",required:!1,default:.25,min:0,max:1},{name:"num_trailing_blanks",type:"int",description:"Emit after strictly more than this many trailing blank frames; 1 requires 2 blanks, 0 requires 1.",required:!1,default:1,min:0}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"sherpa_kws_zipformer_zh_en_3m_f32",display_name:"Sherpa KWS Zipformer Chinese-English 3M GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"Sherpa-KWS-GGUF",files:["Sherpa-KWS-GGUF/sherpa-kws-zipformer-zh-en-3m-f32.gguf"],strip_prefix:"Sherpa-KWS-GGUF"}],dependencies:[],ui:{tags:["Wake Word","GGUF","Stream"],docs:["docs/models/sherpa_kws.md"],recommended_package:"sherpa_kws_zipformer_zh_en_3m_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokens:"model:tokens.txt",keywords:"model:keywords.txt"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokens:"model:tokens.txt",keywords:"model:keywords.txt"},tensors:{weights:"model:model.safetensors"}}]},o8={schema_version:1,family:"sidon",display_name:"Sidon v0.1",description:"Single-speaker speech restoration with 48 kHz output.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{s2s:["audio_enhancement"]},runtime:{tags:["gguf"]},options:{request:[],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"sidon_f32",display_name:"Sidon v0.1 F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"Sidon-GGUF",files:["Sidon-GGUF/sidon-v0.1-f32.gguf"],strip_prefix:"Sidon-GGUF"}],dependencies:[],ui:{recommended_package:"sidon_f32",tags:["GGUF"],docs:["docs/models/sidon.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},l8={schema_version:1,family:"smart_turn",display_name:"Smart Turn v3.2",description:"Audio-native conversational turn-completion detection using a Whisper-Tiny encoder and attention-pooling classifier.",category:"audio_tools",status:"supported",tasks:["turn"],modes:["offline"],languages:["auto"],capabilities:{turn:["turn_decision"]},runtime:{tags:["gguf"]},options:{request:[{name:"threshold",type:"float",description:"Completion probability threshold; a decision is complete only when probability exceeds this value.",required:!1,default:.5,min:0,max:1}],session:[],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"smart_turn_v3_2_f32",display_name:"Smart Turn v3.2 F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"Smart-Turn-v3-GGUF",files:["Smart-Turn-v3-GGUF/smart-turn-v3.2-f32.gguf"],strip_prefix:"Smart-Turn-v3-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/smart_turn.md"],recommended_package:"smart_turn_v3_2_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},c8={schema_version:1,family:"soprano_tts",display_name:"Soprano",description:"Soprano is an ultra-lightweight (~80M) English-only text-to-speech model. Syntax uses a 17-layer Qwen3-style causal LM (hidden 512, vocab 8192) that autoregressively emits per-frame 512-dimensional features; a non-iterative Vocos-style decoder (ConvNeXt backbone + single ISTFT head, n_fft 2048 / hop 512) turns those features into 32 kHz audio. No diffusion refinement is performed in the decoder.",category:"tts",status:"community",tasks:["tts"],modes:["offline","streaming"],languages:["en"],runtime:{tags:["gguf","stream"]},capabilities:{tts:["long_form"]},options:{request:[{name:"max_tokens",type:"int",description:"Maximum generated audio frames for the autoregressive LM; default 512.",required:!1,min:1,default:512},{name:"temperature",type:"float",description:"Autoregressive sampling temperature; must be > 0, default 0.3.",required:!1,min:0,default:.3},{name:"top_p",type:"float",description:"Nucleus sampling probability; default 0.95. Values >=1 disable nucleus filtering.",required:!1,min:0,default:.95},{name:"repetition_penalty",type:"float",description:"Repetition penalty applied to the LM head; default 1.2. Must be positive; values below 1 are accepted.",required:!1,default:1.2},{name:"eos_bias",type:"float",description:"Additive bias on the EOS token logit during generation. Positive values make the model stop sooner when speech ends (mitigating runaway generations that hit max_tokens); negative values encourage longer utterances. Default 0 disables the adjustment.",required:!1,default:0},{name:"seed",type:"int",description:"Autoregressive sampling seed; omitted requests choose a random seed.",required:!1,min:0}],session:[{name:"text_chunk_size",type:"int",description:"Maximum codepoints per sentence chunk before the model generates and decodes separately. Smaller values keep prompts short (more reliable EOS) but increase overhead. Default 200.",required:!1,min:1,default:200},{name:"backbone_weight_type",type:"enum",preset:"weight_type_full",required:!1,default:"f32",description:"Storage type for the Qwen3 LM backbone weights."},{name:"decoder_weight_type",type:"enum",preset:"weight_type_conv",required:!1,default:"f32",description:"Storage type for the Vocos decoder weights."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"WalkingCat/Soprano-1.1-80M-GGUF",revision:"main",gated:!1}},packages:[{id:"soprano_1_1_80m_q8_0",display_name:"Soprano-1.1-80M Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Soprano-1.1-80M-GGUF",files:["Soprano-1.1-80M-GGUF/soprano-1.1-80m-q8_0.gguf"],strip_prefix:"Soprano-1.1-80M-GGUF"},{id:"soprano_1_1_80m_bf16",display_name:"Soprano-1.1-80M BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Soprano-1.1-80M-GGUF",files:["Soprano-1.1-80M-GGUF/soprano-1.1-80m-bf16.gguf"],strip_prefix:"Soprano-1.1-80M-GGUF"}],dependencies:[],ui:{recommended_package:"soprano_1_1_80m_q8_0",tags:["TTS","Stream"],docs:["docs/models/soprano_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{backbone:"weights:",decoder:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",tokenizer_json:"model:tokenizer.json"},tensors:{backbone:"model:combined.safetensors",decoder:"model:combined.safetensors"}}]},d8={schema_version:1,family:"sopro_tts",display_name:"Sopro V2 Turbo",description:"Community Sopro V2 Turbo (samuel-vitorino/sopro-v2-turbo): a 120M zero-shot voice-cloning TTS. SentencePiece text tokenizer, style-prefix conditioned autoregressive semantic LM over FSQ tokens, rectified-flow acoustic DiT and a Vocos ISTFT vocoder at 24 kHz.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline","streaming"],languages:["en","pt","fr","de"],runtime:{tags:["server"]},capabilities:{clone:["speaker_reference"]},options:{request:[{name:"language",type:"string",description:"Language tag (en, pt, fr, de); omitted inherits transcript language, then the session default.",required:!1},{name:"temperature",type:"float",description:"Semantic sampling temperature; nonpositive selects greedy decoding. Omitted uses checkpoint generation.temperature.",required:!1},{name:"top_p",type:"float",description:"Semantic nucleus cutoff; values outside [0,1] are disabled/clamped by the sampler. Omitted uses checkpoint generation.top_p.",required:!1},{name:"top_k",type:"int",description:"Semantic top-k; nonpositive disables filtering. Omitted uses checkpoint generation.top_k.",required:!1},{name:"num_inference_steps",type:"int",description:"Positive acoustic sampling steps; omitted uses checkpoint generation.steps.",required:!1,min:1},{name:"max_duration_sec",type:"float",description:"Positive maximum segment duration; must be >= min_duration_sec. Omitted uses checkpoint generation.max_seconds.",required:!1},{name:"min_duration_sec",type:"float",description:"Nonnegative minimum duration; must be <= max_duration_sec. Omitted uses checkpoint generation.min_seconds.",required:!1,min:0},{name:"reference_duration_sec",type:"float",description:"Positive reference window in seconds; omitted uses checkpoint generation.ref_seconds.",required:!1},{name:"text_chunk_size",type:"int",description:"Positive codepoint budget per segment; omitted uses checkpoint generation.max_segment_chars.",required:!1,min:1},{name:"seed",type:"int",description:"Non-negative seed for semantic sampling and the acoustic noise prior; omit for a random seed.",required:!1,min:0}],session:[{name:"language",type:"string",description:"Default language tag for requests that do not set one.",required:!1,default:""},{name:"voice_cache_slots",type:"int",description:"Reference voices kept prepared between requests, so a repeated voice skips the encoders and, when streaming, the prompt solve. Output is identical with or without it. A streamed 10 s voice holds about 60 MB. Default 0 (off).",required:!1,min:0,default:0},{name:"matmul_weight_type",type:"enum",preset:"weight_type_full",description:"Storage type for the matmul weights of every stage (semantic LM, acoustic DiT, encoders, vocoder head).",required:!1,default:"f32"},{name:"conv_weight_type",type:"enum",preset:"weight_type_conv",description:"Storage type for convolution weights (speaker/semantic encoders and the Vocos backbone).",required:!1,default:"f32"}],load:[]},packages:[{id:"sopro_v2_turbo_f16",display_name:"Sopro V2 Turbo F16 GGUF",description:"Single-file GGUF of all four stages with the config and tokenizer embedded: f16 weights, mel front ends kept in f32.",default:!0,format:"gguf",precision:"f16",target_directory:"sopro-v2-turbo-GGUF",files:["sopro-v2-turbo-f16.gguf"],download:{kind:"huggingface_snapshot",repo:"samuel-vitorino/sopro-v2-turbo",revision:"main",gated:!1}},{id:"sopro_v2_turbo_safetensors",display_name:"Sopro V2 Turbo (upstream safetensors)",description:"Upstream checkpoint from samuel-vitorino/sopro-v2-turbo: config.json, tokenizer.model and the four safetensors stages. Runs directly, no conversion needed.",format:"safetensors",precision:"orig",target_directory:"sopro-v2-turbo",files:["config.json","tokenizer.model","model.safetensors","semantic_encoder.safetensors","speaker_encoder.safetensors","vocoder.safetensors"],download:{kind:"huggingface_snapshot",repo:"samuel-vitorino/sopro-v2-turbo",revision:"main",gated:!1}}],dependencies:[],ui:{recommended_package:"sopro_v2_turbo_safetensors",tags:["TTS","Clone"],docs:["docs/models/sopro_tts.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{model:{source:"weights:",prefix:"model"},semantic_encoder:{source:"weights:",prefix:"semantic_encoder"},speaker_encoder:{source:"weights:",prefix:"speaker_encoder"},vocoder:{source:"weights:",prefix:"vocoder"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer:"model:tokenizer.model"},tensors:{model:{source:"model:model.safetensors"},semantic_encoder:{source:"model:semantic_encoder.safetensors"},speaker_encoder:{source:"model:speaker_encoder.safetensors"},vocoder:{source:"model:vocoder.safetensors"}}}]},u8={schema_version:1,family:"sortformer_diar",display_name:"Sortformer Diarization",description:"NVIDIA Transformer-based end-to-end speaker diarization model trained primarily on English speech, predicting speaker labels directly from audio and resolving speaker ordering by arrival time for up to four speakers.",category:"speech_analysis",status:"supported",tasks:["diar"],modes:["offline"],languages:["en"],capabilities:{diar:["speaker_turns"]},dependencies:[],options:{request:[{name:"speaker_threshold",type:"float",description:"Speaker activity probability threshold used when decoding speaker turns; default 0.5.",required:!1,min:0,max:1,default:.5},{name:"speaker_min_frames",type:"int",description:"Minimum decoded segment length in model output frames; default 0 disables short-segment filtering.",required:!1,min:0,default:0},{name:"speaker_pad_frames",type:"int",description:"Pad each decoded speaker segment by this many model output frames before filtering and merging; default 0.",required:!1,min:0,default:0}],session:[{name:"graph_arena_mb",type:"int",description:"Inference graph arena size in MiB; default 512.",required:!1,min:1,default:512},{name:"weight_context_mb",type:"int",description:"Weight context size in MiB; default 128.",required:!1,min:1,default:128},{name:"session_len_sec",type:"float",description:"Base offline graph context length in seconds; must be > 0, default 20.",required:!1,min:0,default:20},{name:"graph_capacity_mode",type:"enum",description:"Offline graph capacity policy; defaults to tiered on host-graph backends and fixed otherwise.",values:["fixed","tiered","grow","double"],required:!1},{name:"speaker_threshold",type:"float",description:"Default speaker activity probability threshold for decoded speaker turns; default 0.5.",required:!1,min:0,max:1,default:.5},{name:"speaker_min_frames",type:"int",description:"Default minimum decoded segment length in model output frames; default 0 disables short-segment filtering.",required:!1,min:0,default:0},{name:"speaker_pad_frames",type:"int",description:"Default decoded segment padding in model output frames; default 0.",required:!1,min:0,default:0},{name:"weight_type",type:"enum",description:"All weight storage type; default f32.",preset:"weight_type_full",required:!1,default:"f32"},{name:"matmul_weight_type",type:"enum",description:"Matmul weight storage type; defaults to weight_type when set, otherwise f32.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; defaults to weight_type when set, otherwise f32.",preset:"weight_type_full",required:!1}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"sortformer_diar_4spk_v1_q8_0",tags:["Diar","GGUF"],docs:["docs/audio_tools.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"sortformer_diar_4spk_v1_q8_0",display_name:"Sortformer Diar 4spk v1 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Sortformer-Diar-4spk-v1-GGUF",files:["Sortformer-Diar-4spk-v1-GGUF/sortformer-diar-4spk-v1-q8_0.gguf"],strip_prefix:"Sortformer-Diar-4spk-v1-GGUF"},{id:"sortformer_diar_4spk_v1_f16",display_name:"Sortformer Diar 4spk v1 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Sortformer-Diar-4spk-v1-GGUF",files:["Sortformer-Diar-4spk-v1-GGUF/sortformer-diar-4spk-v1-f16.gguf"],strip_prefix:"Sortformer-Diar-4spk-v1-GGUF"},{id:"sortformer_diar_4spk_v1_safetensors",display_name:"Sortformer Diar 4spk v1 Safetensors",format:"safetensors",precision:"native",target_directory:"diar_sortformer_4spk-v1",files:["config.json","model.safetensors","processor_config.json"],download:{kind:"huggingface_snapshot",repo:"nvidia/diar_sortformer_4spk-v1"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"model:model.safetensors"}}]},f8={schema_version:1,family:"sortformer_diar_v2",display_name:"Sortformer Diarization v2.1",description:"NVIDIA Sortformer v2.1 streaming speaker diarization model with four speaker channels, AOSC state, stable arrival-order speaker identities, and bounded-context offline and streaming execution. The model has no published language whitelist: it was trained primarily on English speech, includes non-English meeting data such as AISHELL-4 and AliMeeting, and may degrade on other languages. The checkpoint is governed by the NVIDIA Open Model License and is local-use only until redistribution approval.",category:"speech_analysis",status:"community",tasks:["diar"],modes:["offline","streaming"],languages:["multilingual"],capabilities:{diar:["speaker_turns"]},dependencies:[],options:{request:[{name:"speaker_threshold",type:"float",description:"Speaker activity threshold used for turn decoding; default 0.5.",required:!1,min:0,max:1,default:.5},{name:"speaker_min_frames",type:"int",description:"Minimum decoded turn duration in 80 ms model frames; default 0.",required:!1,min:0,default:0},{name:"speaker_pad_frames",type:"int",description:"Padding applied to decoded turns in model frames; default 0.",required:!1,min:0,default:0}],session:[{name:"graph_arena_mb",type:"int",description:"Inference graph arena size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"weight_context_mb",type:"int",description:"Weight context size in MiB; default 1024.",required:!1,min:1,default:1024},{name:"geometry",type:"enum",description:"Streaming geometry preset; default uses the checkpoint geometry.",values:["model","streaming","very_high_latency","high_latency","low_latency"],required:!1,default:"model"},{name:"weight_type",type:"enum",description:"Default storage type for all model weights; default f32. With bf16/q8_0, also set conv_weight_type explicitly to native/f32/f16; convolution storage cannot inherit bf16/q8_0.",preset:"weight_type_full",required:!1,default:"f32"},{name:"matmul_weight_type",type:"enum",description:"Matmul weight storage type; defaults to weight_type.",preset:"weight_type_full",required:!1},{name:"conv_weight_type",type:"enum",description:"Convolution weight storage type; defaults to weight_type.",preset:"weight_type_conv",required:!1}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"sortformer_diar_v2_1_f32_gguf_local",tags:["Diar","Stream","GGUF"],docs:["docs/models/sortformer_diar_v2.md","docs/speech_analysis.md","docs/gguf.md"]},package_defaults:{download:{kind:"unsupported",reason:"NVIDIA Open Model License checkpoint: convert or stage locally until redistribution approval is complete."}},packages:[{id:"sortformer_diar_v2_1_f32_local",display_name:"Sortformer Diar v2.1 F32 local package",format:"safetensors",precision:"f32",target_directory:"Sortformer-Diar-v2.1-local",files:["Sortformer-Diar-v2.1-local/config.json","Sortformer-Diar-v2.1-local/processor_config.json","Sortformer-Diar-v2.1-local/model.safetensors"],strip_prefix:"Sortformer-Diar-v2.1-local"},{id:"sortformer_diar_v2_1_f32_gguf_local",display_name:"Sortformer Diar v2.1 F32 GGUF local package",default:!0,format:"gguf",precision:"f32",target_directory:"Sortformer-Diar-v2.1-local",files:["Sortformer-Diar-v2.1-local/sortformer-v2.1-f32.gguf"],strip_prefix:"Sortformer-Diar-v2.1-local"},{id:"sortformer_diar_v2_1_f16_mixed_gguf_local",display_name:"Sortformer Diar v2.1 mixed F16/F32 GGUF local package",format:"gguf",precision:"f16",target_directory:"Sortformer-Diar-v2.1-local",files:["Sortformer-Diar-v2.1-local/sortformer-v2.1-f16-mixed.gguf"],strip_prefix:"Sortformer-Diar-v2.1-local"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",processor:"model:processor_config.json"},tensors:{weights:"model:model.safetensors"}}]},m8={family:"stable_audio",display_name:"Stable Audio 3",description:"Stability AI generative audio model family for text-to-music, sound effects, audio-to-audio editing, inpainting, continuation, variable-length generation, and LoRA personalization.",category:"audio_generation",status:"supported",tasks:["music","sfx","edit"],modes:["offline"],languages:["en"],options:{request:[{name:"prompt",type:"string",description:"Fallback text prompt when text_input is absent; pipe separates batch prompts.",required:!1},{name:"negative_prompt",type:"string",description:"Negative prompt; pipe separates batch prompts.",required:!1},{name:"duration_sec",type:"float",description:"Positive duration in seconds; batch requests also accept a comma-separated string matching the prompt count, not a JSON array.",required:!1,default:120},{name:"batch_size",type:"int",description:"Prompt batch size.",required:!1,min:1,default:1},{name:"num_inference_steps",type:"int",description:"Diffusion steps.",required:!1,min:1,default:8},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale.",required:!1,default:1},{name:"apg_scale",type:"float",description:"Adaptive projected guidance scale.",required:!1,default:1},{name:"sampler_mode",type:"enum",description:"Stable Audio 3 diffusion sampler.",required:!1,values:["pingpong","euler"]},{name:"seed",type:"int",description:"Sampling seed; omitted chooses a random seed.",required:!1,min:0},{name:"duration_padding_sec",type:"float",description:"Generated padding before truncation.",required:!1,min:0,default:6},{name:"truncate_output_to_duration",type:"bool",description:"Trim decoded audio to requested duration.",required:!1,default:!0},{name:"chunked_decode",type:"bool",description:"Decode audio in chunks.",required:!1,default:!0},{name:"init_noise_level",type:"float",description:"Audio-conditioned generation strength in [0, 1].",required:!1,min:0,max:1,default:1},{name:"audio_input_kind",type:"enum",description:"How to use audio_input.",required:!1,values:["init_audio","inpaint_audio"],default:"init_audio"},{name:"inpaint_mask_start_sec",type:"string",description:"Comma-separated inpaint region starts in seconds.",required:!1},{name:"inpaint_mask_end_sec",type:"string",description:"Comma-separated inpaint region ends in seconds.",required:!1}],session:[{name:"max_batch",type:"int",description:"Maximum prompt batch size.",required:!1,min:1,default:1},{name:"weight_type",type:"enum",description:"Weight storage type; defaults to native.",required:!1,preset:"weight_type_full"},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs after each request.",required:!1,default:!1}],load:[]},capabilities:{music:["lyrics"],sfx:["prompt_generation"],edit:["prompt_editing"]},runtime:{tags:["gguf"]},ui:{recommended_package:"stable_audio_3_medium_q8_0",tags:["Music","SFX","Edit","GGUF"],docs:["docs/models/stable_audio.md","docs/music_generation.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"stable_audio_3_medium_q8_0",display_name:"Stable Audio 3 Medium Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Stable-Audio-3-Medium-GGUF",files:["Stable-Audio-3-Medium-GGUF/stable-audio-3-medium-q8_0.gguf"],strip_prefix:"Stable-Audio-3-Medium-GGUF"},{id:"stable_audio_3_medium_f16",display_name:"Stable Audio 3 Medium F16 GGUF",format:"gguf",precision:"f16",target_directory:"Stable-Audio-3-Medium-GGUF",files:["Stable-Audio-3-Medium-GGUF/stable-audio-3-medium-f16.gguf"],strip_prefix:"Stable-Audio-3-Medium-GGUF"},{id:"stable_audio_3_small_music_q8_0",display_name:"Stable Audio 3 Small Music Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Stable-Audio-3-Small-Music-GGUF",files:["Stable-Audio-3-Small-Music-GGUF/stable-audio-3-small-music-q8_0.gguf"],strip_prefix:"Stable-Audio-3-Small-Music-GGUF"},{id:"stable_audio_3_small_music_f16",display_name:"Stable Audio 3 Small Music F16 GGUF",format:"gguf",precision:"f16",target_directory:"Stable-Audio-3-Small-Music-GGUF",files:["Stable-Audio-3-Small-Music-GGUF/stable-audio-3-small-music-f16.gguf"],strip_prefix:"Stable-Audio-3-Small-Music-GGUF"},{id:"stable_audio_3_small_sfx_q8_0",display_name:"Stable Audio 3 Small SFX Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Stable-Audio-3-Small-SFX-GGUF",files:["Stable-Audio-3-Small-SFX-GGUF/stable-audio-3-small-sfx-q8_0.gguf"],strip_prefix:"Stable-Audio-3-Small-SFX-GGUF"},{id:"stable_audio_3_small_sfx_f16",display_name:"Stable Audio 3 Small SFX F16 GGUF",format:"gguf",precision:"f16",target_directory:"Stable-Audio-3-Small-SFX-GGUF",files:["Stable-Audio-3-Small-SFX-GGUF/stable-audio-3-small-sfx-f16.gguf"],strip_prefix:"Stable-Audio-3-Small-SFX-GGUF"},{id:"stable_audio_3_medium_safetensors",display_name:"Stable Audio 3 Medium Safetensors",format:"safetensors",precision:"native",target_directory:"stable-audio-3-medium",files:["model_config.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"stabilityai/stable-audio-3-medium",gated:!0}},{id:"stable_audio_3_small_music_safetensors",display_name:"Stable Audio 3 Small Music Safetensors",format:"safetensors",precision:"native",target_directory:"stable-audio-3-small-music",files:["model_config.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"stabilityai/stable-audio-3-small-music",gated:!0}},{id:"stable_audio_3_small_sfx_safetensors",display_name:"Stable Audio 3 Small SFX Safetensors",format:"safetensors",precision:"native",target_directory:"stable-audio-3-small-sfx",files:["model_config.json","model.safetensors"],download:{kind:"huggingface_snapshot",repo:"stabilityai/stable-audio-3-small-sfx",gated:!0}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{model_config:"model:model_config.json",t5_config:"model:t5gemma-b-b-ul2/config.json",t5_tokenizer_json:"model:t5gemma-b-b-ul2/tokenizer.json",t5_tokenizer_model:"model:t5gemma-b-b-ul2/tokenizer.model",t5_tokenizer_config:"model:t5gemma-b-b-ul2/tokenizer_config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},t5_weights:{source:"weights:",prefix:"t5_weights"}}},{format:"safetensors",roots:{model:".",t5:"t5gemma-b-b-ul2"},files:{model_config:"model:model_config.json",t5_config:"t5:config.json",t5_tokenizer_json:"t5:tokenizer.json",t5_tokenizer_model:"t5:tokenizer.model",t5_tokenizer_config:"t5:tokenizer_config.json"},tensors:{model_weights:"model:model.safetensors",t5_weights:"t5:model.safetensors"}}]},p8={family:"supertonic",display_name:"Supertonic 3",description:"Supertone on-device TTS model designed for fast local speech synthesis across 31 languages, with preset voices and compact deployment for browser, mobile, and desktop applications.",category:"tts",status:"supported",tasks:["tts"],modes:["offline","streaming"],languages:["en","ko","ja","ar","bg","cs","da","de","el","es","et","fi","fr","hi","hr","hu","id","it","lt","lv","nl","pl","pt","ro","ru","sk","sl","sv","tr","uk","vi"],capabilities:{tts:["built_in_voices","long_form"]},runtime:{tags:["gguf","stream"]},options:{request:[{name:"voice_id",type:"enum",values:["M1","M2","M3","M4","M5","F1","F2","F3","F4","F5"],default:"M1",description:"Built-in voice preset; --voice-id takes precedence.",required:!1},{name:"num_inference_steps",type:"int",min:1,default:8,description:"Flow denoising steps.",required:!1},{name:"speed",type:"float",min:0,default:1.05,description:"Positive speech speed multiplier; voice.style.speaking_rate takes precedence.",required:!1},{name:"seed",type:"int",min:0,max:4294967295,default:1234,description:"Noise seed.",required:!1},{name:"text_chunk_size",type:"int",description:"Framework text chunk size; defaults to 120 for Korean/Japanese, otherwise 300.",required:!1},{name:"text_chunk_mode",type:"enum",values:["default","tag_aware","japanese","endline"],default:"default",description:"Framework text chunking mode.",required:!1}],session:[{name:"weight_type",type:"enum",preset:"weight_type_full",default:"native",description:"Weight storage type.",required:!1},{name:"style_cache_slots",type:"int",min:0,default:4,description:"Cached preset style slots; zero disables reuse.",required:!1}],load:[]},ui:{recommended_package:"supertonic_3_orig",tags:["TTS","GGUF","Stream"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"supertonic_3_q8_0",display_name:"Supertonic 3 Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"Supertonic-3-GGUF",files:["Supertonic-3-GGUF/supertonic-3-q8_0.gguf"],strip_prefix:"Supertonic-3-GGUF"},{id:"supertonic_3_f16",display_name:"Supertonic 3 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Supertonic-3-GGUF",files:["Supertonic-3-GGUF/supertonic-3-f16.gguf"],strip_prefix:"Supertonic-3-GGUF"},{id:"supertonic_3_orig",display_name:"Supertonic 3 Original-Dtype GGUF",default:!0,format:"gguf",precision:"orig",target_directory:"Supertonic-3-GGUF",files:["Supertonic-3-GGUF/supertonic-3-orig.gguf"],strip_prefix:"Supertonic-3-GGUF"},{id:"supertonic_3_safetensors",display_name:"Supertonic 3 Safetensors",format:"safetensors",precision:"native",target_directory:"supertonic-3",files:["config/tts.json","config/unicode_indexer.json","ggml/supertonic.safetensors","voice_styles/F1.json","voice_styles/F2.json","voice_styles/F3.json","voice_styles/F4.json","voice_styles/F5.json","voice_styles/M1.json","voice_styles/M2.json","voice_styles/M3.json","voice_styles/M4.json","voice_styles/M5.json"],download:{kind:"huggingface_snapshot",repo:"mlx-community/supertonic-3-mlx"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tts_config:"model:config/tts.json",unicode_indexer:"model:config/unicode_indexer.json",voice_style_F1:"model:voice_styles/F1.json",voice_style_F2:"model:voice_styles/F2.json",voice_style_F3:"model:voice_styles/F3.json",voice_style_F4:"model:voice_styles/F4.json",voice_style_F5:"model:voice_styles/F5.json",voice_style_M1:"model:voice_styles/M1.json",voice_style_M2:"model:voice_styles/M2.json",voice_style_M3:"model:voice_styles/M3.json",voice_style_M4:"model:voice_styles/M4.json",voice_style_M5:"model:voice_styles/M5.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}},{format:"safetensors",roots:{model:"."},files:{tts_config:"model:config/tts.json",unicode_indexer:"model:config/unicode_indexer.json",voice_style_F1:"model:voice_styles/F1.json",voice_style_F2:"model:voice_styles/F2.json",voice_style_F3:"model:voice_styles/F3.json",voice_style_F4:"model:voice_styles/F4.json",voice_style_F5:"model:voice_styles/F5.json",voice_style_M1:"model:voice_styles/M1.json",voice_style_M2:"model:voice_styles/M2.json",voice_style_M3:"model:voice_styles/M3.json",voice_style_M4:"model:voice_styles/M4.json",voice_style_M5:"model:voice_styles/M5.json"},tensors:{weights:"model:ggml/supertonic.safetensors"}}]},g8={schema_version:1,family:"tf_gridnet",display_name:"TF-GridNet",description:"Time-frequency GridNet overlapping speech separation.",category:"audio_tools",status:"supported",tasks:["sep"],modes:["offline"],languages:["language_agnostic"],capabilities:{sep:["stems"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Separation window duration; zero selects whole-file inference. When enabled, the chunk sample count must exceed n_fft/2.",min:0,default:2.4,required:!1},{name:"audio_chunk_overlap_sec",type:"float",description:"Nonnegative overlap used to match speaker order and stitch adjacent windows. When chunking is enabled, overlap sample count must be > 0 and smaller than the chunk. Ignored for whole-file inference.",min:0,default:1.6,required:!1},{name:"normalize_output",type:"bool",description:"Normalize each separated waveform to a peak of 0.9, as in ESPnet's example.",default:!0,required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"]}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"tf_gridnet_wsj0_2mix_f32",display_name:"TF-GridNet WSJ0-2mix F32",default:!0,format:"gguf",precision:"f32",target_directory:"TF-GridNet-GGUF",files:["TF-GridNet-GGUF/tf-gridnet-wsj0-2mix-f32.gguf"],strip_prefix:"TF-GridNet-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:["docs/models/tf_gridnet.md"],recommended_package:"tf_gridnet_wsj0_2mix_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"},frontend:{source:"weights:",prefix:"frontend"}}}]},h8={family:"tone_color_vc",schema_version:1,display_name:"Tone Color VC",description:"Standalone voice conversion with a reference speaker recording.",category:"voice_conversion",status:"experimental",tasks:["vc"],modes:["offline"],languages:["language_agnostic"],capabilities:{vc:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"seed",type:"int",required:!1,description:"Random seed for posterior sampling; -1 chooses a random seed.",default:1234,min:-1},{name:"temperature",type:"float",required:!1,description:"Posterior sampling noise scale.",default:.3,min:0}],session:[{name:"exec_plan",type:"string",required:!1,default:"{}",description:"Component execution plan: decoder accepts default/ggml/neon. Default retains the session backend. The complete NEON HiFi-GAN decoder requires a CPU session and ENGINE_ENABLE_NEON=ON on AArch64. No artifacts or params."}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"tone_color_vc_f32",display_name:"Tone Color VC F32 GGUF",default:!0,format:"gguf",precision:"f32",target_directory:"Tone-Color-VC-GGUF",files:["Tone-Color-VC-GGUF/tone-color-vc-f32.gguf"],strip_prefix:"Tone-Color-VC-GGUF"},{id:"tone_color_vc_f16",display_name:"Tone Color VC F16 GGUF",default:!1,format:"gguf",precision:"f16",target_directory:"Tone-Color-VC-GGUF",files:["Tone-Color-VC-GGUF/tone-color-vc-f16.gguf"],strip_prefix:"Tone-Color-VC-GGUF"}],dependencies:[],ui:{recommended_package:"tone_color_vc_f32",tags:["VC","GGUF"],docs:["docs/models/tone_color_vc.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"}}}]},_8={schema_version:1,family:"universr",display_name:"UniverSR",description:"Complex-STFT flow-matching audio super-resolution to 48 kHz.",category:"audio_tools",status:"supported",tasks:["s2s"],modes:["offline"],languages:["language_agnostic"],capabilities:{s2s:["audio_enhancement"]},runtime:{tags:["gguf"]},options:{request:[{name:"audio_chunk_duration_sec",type:"float",description:"Independent audio segments concatenated after inference; zero processes the whole file. Chunking changes global normalization context.",min:0,default:0,required:!1},{name:"input_sample_rate",type:"int",description:"Effective input bandwidth sample rate: 8000, 12000, 16000, or 24000 Hz.",required:!1},{name:"sampler_mode",type:"enum",description:"Fixed-step ODE integration method.",values:["euler","midpoint","rk4"],default:"midpoint",required:!1},{name:"num_inference_steps",type:"int",description:"ODE integration steps.",min:1,default:4,required:!1},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale; zero disables guidance.",min:0,default:1.5,required:!1},{name:"seed",type:"int",description:"Initial flow noise seed.",min:0,default:42,required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; native preserves the GGUF tensor types.",required:!1,default:"native",values:["native","f32","f16","bf16","q8_0","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k"]}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"universr_audio_orig",display_name:"UniverSR Audio GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"UniverSR-GGUF",files:["UniverSR-GGUF/universr-audio-orig.gguf"],strip_prefix:"UniverSR-GGUF"},{id:"universr_speech_orig",display_name:"UniverSR Speech GGUF F32",format:"gguf",precision:"f32",target_directory:"UniverSR-GGUF",files:["UniverSR-GGUF/universr-speech-orig.gguf"],strip_prefix:"UniverSR-GGUF"}],dependencies:[],ui:{tags:["GGUF"],docs:[],recommended_package:"universr_audio_orig"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json"},tensors:{weights:{source:"weights:",prefix:"weights"},frontend:{source:"weights:",prefix:"frontend"}}}]},v8={family:"vevo2",display_name:"Vevo2",description:"Unified controllable framework for English and Chinese speech and singing voice generation, voice conversion, and editing, with tokenizers that disentangle content, prosody, melody, style, and timbre.",category:"voice_conversion",status:"supported",tasks:["tts","music","vc","edit","svc","s2s"],modes:["offline"],languages:["en","zh"],capabilities:{music:["lyrics"],vc:["speaker_reference"],svc:["speaker_reference","singing"],s2s:["speaker_reference"],edit:["prompt_editing"]},runtime:{tags:["gguf"]},options:{request:[{name:"route",type:"enum",description:"Generation route; omitted selects the task default.",required:!1,values:["zero_shot_tts","text_to_singing","svs","style_preserved_vc","style_preserved_svc","style_converted_vc","style_converted_svc","editing","singing_style_conversion","humming_to_singing","instrument_to_singing"]},{name:"source_audio",type:"audio_path",description:"Source audio file for conversion or editing.",required:!1},{name:"target_voice",type:"audio_path",description:"Target voice audio file; overrides structured speaker audio.",required:!1},{name:"prosody_ref",type:"audio_path",description:"Prosody or melody reference audio file.",required:!1},{name:"style_ref",type:"audio_path",description:"Style reference audio file.",required:!1},{name:"target_text",type:"string",description:"Text or lyrics; overrides structured text input.",required:!1},{name:"style_ref_text",type:"string",description:"Style-reference transcript; reference_text is also accepted.",required:!1},{name:"use_prosody_code",type:"bool",description:"Use prosody codes; default depends on route and requires prosody audio when enabled.",required:!1},{name:"use_pitch_shift",type:"bool",description:"Align reference pitch to the target voice; default depends on route.",required:!1},{name:"source_shift_steps",type:"int",description:"Manual source reference pitch shift in semitones.",required:!1,default:0},{name:"prosody_shift_steps",type:"int",description:"Manual prosody reference pitch shift in semitones.",required:!1,default:0},{name:"style_shift_steps",type:"int",description:"Manual style reference pitch shift in semitones.",required:!1,default:0},{name:"duration_sec",type:"float",description:"Rescale prosody-code conditioning to this duration; not a general output-length limit. Legacy target_duration_seconds is accepted.",required:!1},{name:"reference_duration_sec",type:"float",description:"Trim target voice reference before conditioning. Legacy reference_duration_seconds is accepted.",required:!1,min:0},{name:"temperature",type:"float",description:"Positive AR sampling temperature; default comes from the checkpoint.",required:!1},{name:"top_k",type:"int",description:"AR top-k sampling; default comes from the checkpoint.",required:!1},{name:"top_p",type:"float",description:"AR nucleus sampling; default comes from the checkpoint.",required:!1},{name:"repetition_penalty",type:"float",description:"Positive AR repetition penalty; default comes from the checkpoint.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated AR tokens.",required:!1,min:1,default:500},{name:"num_inference_steps",type:"int",description:"Flow-matching denoising steps.",required:!1,min:1,default:32},{name:"seed",type:"int",description:"Sampling seed; random when omitted.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Character budget per text chunk.",required:!1,min:1,default:128},{name:"audio_chunk_mode",type:"enum",description:"Source-audio chunking for style_preserved_vc/svc requires audio_chunk_duration_sec. Auto uses fixed chunks; none disables chunking.",required:!1,values:["auto","fixed","none"],default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Source-audio chunk duration for style_preserved_vc/svc; zero or omitted keeps one-shot processing.",required:!1,min:0},{name:"cross_fade_duration_sec",type:"float",description:"Source chunk overlap and output crossfade; must be smaller than chunk duration.",required:!1,default:1}],session:[{name:"weight_type",type:"enum",description:"Shared matmul storage override; omitted preserves component defaults.",required:!1,values:["native","f32","f16","bf16","q8_0"]},{name:"conv_weight_type",type:"enum",description:"Shared convolution storage override; omitted preserves native storage.",required:!1,values:["native","f32","f16"]}],load:[{name:"whisper_model_path",type:"path",description:"External Whisper model directory for feature extraction when not bundled.",required:!1}]},ui:{recommended_package:"vevo2_q8_0",tags:["TTS","Music","VC","Edit","GGUF"],docs:["docs/models/vevo2.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"vevo2_q8_0",display_name:"Vevo2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Vevo2-GGUF",files:["Vevo2-GGUF/vevo2-q8_0.gguf"],strip_prefix:"Vevo2-GGUF"},{id:"vevo2_f16",display_name:"Vevo2 F16 GGUF",format:"gguf",precision:"f16",target_directory:"Vevo2-GGUF",files:["Vevo2-GGUF/vevo2-f16.gguf"],strip_prefix:"Vevo2-GGUF"},{id:"vevo2_orig",display_name:"Vevo2 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"Vevo2-GGUF",files:["Vevo2-GGUF/vevo2-orig.gguf"],strip_prefix:"Vevo2-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{ar_config:"model:contentstyle_modeling/posttrained/config.json",ar_amphion_config:"model:contentstyle_modeling/posttrained/amphion_config.json",ar_generation_config:"model:contentstyle_modeling/posttrained/generation_config.json",ar_tokenizer_config:"model:contentstyle_modeling/posttrained/tokenizer_config.json",ar_tokenizer_json:"model:contentstyle_modeling/posttrained/tokenizer.json",ar_vocab:"model:contentstyle_modeling/posttrained/vocab.json",ar_merges:"model:contentstyle_modeling/posttrained/merges.txt",ar_added_tokens:"model:contentstyle_modeling/posttrained/added_tokens.json",ar_special_tokens:"model:contentstyle_modeling/posttrained/special_tokens_map.json",fm_config:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa/config.json",fm_text_config:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/config.json",vocoder_config:"model:vocoder/config.json",whisper_config:"model:whisper-medium/config.json"},tensors:{content_style_tokenizer_weights:{source:"weights:",prefix:"content_style_tokenizer_weights"},prosody_tokenizer_weights:{source:"weights:",prefix:"prosody_tokenizer_weights"},ar_weights:{source:"weights:",prefix:"ar_weights"},fm_weights:{source:"weights:",prefix:"fm_weights"},fm_whisper_stats:{source:"weights:",prefix:"fm_whisper_stats"},fm_text_weights:{source:"weights:",prefix:"fm_text_weights"},fm_text_whisper_stats:{source:"weights:",prefix:"fm_text_whisper_stats"},vocoder_weights_0:{source:"weights:",prefix:"vocoder_weights_0"},vocoder_weights_1:{source:"weights:",prefix:"vocoder_weights_1"},vocoder_weights_2:{source:"weights:",prefix:"vocoder_weights_2"},whisper_weights:{source:"weights:",prefix:"whisper_weights"}}},{format:"safetensors",roots:{model:".",whisper:"../whisper-medium"},files:{ar_config:"model:contentstyle_modeling/posttrained/config.json",ar_amphion_config:"model:contentstyle_modeling/posttrained/amphion_config.json",ar_generation_config:"model:contentstyle_modeling/posttrained/generation_config.json",ar_tokenizer_config:"model:contentstyle_modeling/posttrained/tokenizer_config.json",ar_tokenizer_json:"model:contentstyle_modeling/posttrained/tokenizer.json",ar_vocab:"model:contentstyle_modeling/posttrained/vocab.json",ar_merges:"model:contentstyle_modeling/posttrained/merges.txt",ar_added_tokens:"model:contentstyle_modeling/posttrained/added_tokens.json",ar_special_tokens:"model:contentstyle_modeling/posttrained/special_tokens_map.json",fm_config:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa/config.json",fm_text_config:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/config.json",vocoder_config:"model:vocoder/config.json",whisper_config:"whisper:config.json"},tensors:{content_style_tokenizer_weights:"model:tokenizer/contentstyle_fvq16384_12.5hz/model.safetensors",prosody_tokenizer_weights:"model:tokenizer/prosody_fvq512_6.25hz/model.safetensors",ar_weights:"model:contentstyle_modeling/posttrained/model.safetensors",fm_weights:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa/model.safetensors",fm_whisper_stats:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa/whisper_stats.safetensors",fm_text_weights:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/model.safetensors",fm_text_whisper_stats:"model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/whisper_stats.safetensors",vocoder_weights_0:"model:vocoder/model.safetensors",vocoder_weights_1:"model:vocoder/model_1.safetensors",vocoder_weights_2:"model:vocoder/model_2.safetensors",whisper_weights:"whisper:model.safetensors"}}]},b8={schema_version:1,family:"vibeasr",display_name:"VibeVoice-ASR-BitNet",description:"VibeASR.cpp's CPU-first VibeVoice ASR port: an INT8 (I8_S) audio VAE encoder feeding a ternary (I2_S) Qwen2 decoder, ported to audio.cpp.",category:"asr",status:"community",tasks:["asr"],modes:["offline"],languages:["en","zh","fr","it","ko","pt","vi"],capabilities:{},options:{request:[{name:"output_format",type:"enum",description:"Prompt suffix asked of the decoder: plain transcription text, or JSON rows with Start/End/Speaker/Content.",values:["text","json"],required:!1,default:"text"},{name:"context",type:"string",description:"Extra context injected into the prompt (names, jargon) to bias the transcription.",required:!1,default:""},{name:"max_tokens",type:"int",description:"Cap on decoded tokens for one request.",required:!1,min:1,default:1024}],session:[{name:"encoder_graph_arena_mb",type:"int",description:"VAE encoder graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:64},{name:"prefill_graph_arena_mb",type:"int",description:"Decoder prefill graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:256},{name:"decode_graph_arena_mb",type:"int",description:"Decoder single-step graph arena size in MB. Must be positive; sufficient capacity depends on the graph.",required:!1,min:1,default:256}],load:[]},runtime:{tags:["gguf","cpu"]},packages:[{id:"vibeasr_bitnet_i2_s",display_name:"VibeVoice-ASR-BitNet I8_S encoder + I2_S decoder",description:"Upstream VibeASR.cpp GGUF package. The two GGUFs carry the VibeASR ggml fork's type ids and need one pass of tools/community_models/convert_vibeasr_gguf.py --in-place before audio.cpp can load them.",default:!0,format:"gguf",precision:"native",target_directory:"VibeVoice-ASR-BitNet",files:["vibeasr-vae-encoder-i8_s.gguf","vibeasr-lm-i2_s-embed-q6_k.gguf","tokenizer.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"microsoft/VibeVoice-ASR-BitNet",revision:"main",gated:!1}}],dependencies:[],ui:{recommended_package:"vibeasr_bitnet_i2_s",tags:["ASR","GGUF"],docs:["docs/models/vibeasr.md"],summary:"INT8 encoder plus ternary Qwen2 decoder transcription on CPU."},sources:[{format:"gguf",roots:{model:"."},files:{tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{},tensors:{vae_weights:"model:vibeasr-vae-encoder-i8_s.gguf",lm_weights:"model:vibeasr-lm-i2_s-embed-q6_k.gguf"}}]},y8={family:"vibevoice",display_name:"VibeVoice",description:"Microsoft long-form multi-speaker TTS model for expressive conversational audio such as podcasts, supporting up to 90 minutes of speech with as many as four speakers.",category:"tts",status:"supported",tasks:["tts"],modes:["offline","streaming"],languages:["en","zh"],options:{request:[{name:"voice_samples",type:"string",description:"Comma-separated reference WAV paths ordered by speaker ID; cannot be combined with voice_ref.",required:!1},{name:"num_inference_steps",type:"int",description:"Diffusion steps; defaults to the checkpoint configuration.",required:!1,min:1},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale.",required:!1,min:0,default:1.3},{name:"max_length_times",type:"float",description:"Positive generation length multiplier.",required:!1,default:2},{name:"max_tokens",type:"int",description:"Maximum generated tokens; zero uses the model-derived limit.",required:!1,min:0,default:0},{name:"do_sample",type:"bool",description:"Enable sampling.",required:!1,default:!1},{name:"temperature",type:"float",description:"Positive sampling temperature.",required:!1,default:1},{name:"top_k",type:"int",description:"Top-k sampling limit; zero disables filtering.",required:!1,min:0,default:50},{name:"top_p",type:"float",description:"Nucleus probability in (0, 1].",required:!1,default:1},{name:"seed",type:"int",description:"Sampling seed.",required:!1,min:0,max:4294967295,default:1234},{name:"prompt_noise_file",type:"path",description:"F32 prompt acoustic noise file.",required:!1},{name:"diffusion_noise_file",type:"path",description:"F32 initial diffusion noise file.",required:!1}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"tokenizer_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"connector_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"decoder_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"diffusion_head_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"lora",type:"path",description:"Decoder adapter file or PEFT directory applied when creating the session; do not also supply the load option.",required:!1},{name:"lora_scale",type:"float",description:"Session adapter scale override; omitted uses lora_alpha / r. Must be strictly positive when an adapter is supplied.",required:!1}],load:[{name:"lora",type:"path",description:"Decoder adapter file or PEFT directory, merged at load time.",required:!1},{name:"lora_scale",type:"float",description:"LoRA scale override; omitted uses lora_alpha / r. Must be strictly positive when an adapter is supplied.",required:!1}]},capabilities:{tts:["multi_speaker","long_form"]},runtime:{tags:["gguf"]},ui:{recommended_package:"vibevoice_1_5b_q8_0",tags:["TTS","GGUF"],docs:["docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"vibevoice_1_5b_q8_0",display_name:"VibeVoice 1.5B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VibeVoice-1.5B-GGUF",files:["VibeVoice-1.5B-GGUF/vibevoice-1.5b-q8_0.gguf"],strip_prefix:"VibeVoice-1.5B-GGUF"},{id:"vibevoice_1_5b_bf16",display_name:"VibeVoice 1.5B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VibeVoice-1.5B-GGUF",files:["VibeVoice-1.5B-GGUF/vibevoice-1.5b-bf16.gguf"],strip_prefix:"VibeVoice-1.5B-GGUF"},{id:"vibevoice_7b_q8_0",display_name:"VibeVoice 7B Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"VibeVoice-7B-GGUF",files:["vibevoice-7b-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"audio-cpp/VibeVoice-7B-GGUF",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",preprocessor_config:"model:preprocessor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},tensors:{model_weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",preprocessor_config:"model:preprocessor_config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},tensors:{model_weights:"model:model.safetensors.index.json"}}]},w8={family:"vibevoice_asr",display_name:"VibeVoice ASR",description:"Microsoft long-form speech-to-text model that processes up to 60 minutes of audio in one pass and produces structured transcripts with speakers, timestamps, content, hotwords, and 50+ language support.",category:"asr",status:"supported",tasks:["asr"],modes:["offline"],languages:["auto","51 languages"],options:{request:[{name:"context",type:"string",description:"Context hint; context_info is also accepted.",required:!1},{name:"language",type:"string",description:"ASR language label.",required:!1},{name:"max_tokens",type:"int",description:"Maximum generated text tokens.",required:!1,min:1,default:32768},{name:"temperature",type:"float",description:"Sampling temperature; zero uses deterministic decoding.",required:!1,min:0,default:0},{name:"top_p",type:"float",description:"Nucleus probability in (0, 1].",required:!1,default:1},{name:"top_k",type:"int",description:"Top-k sampling limit; zero disables filtering.",required:!1,min:0,default:50},{name:"num_beams",type:"int",description:"Deterministic beam search width.",required:!1,min:1,default:1},{name:"repetition_penalty",type:"float",description:"Positive generation repetition penalty.",required:!1,default:1},{name:"seed",type:"int",description:"Acoustic latent sampling seed.",required:!1,min:0,default:1234},{name:"audio_chunk_mode",type:"enum",description:"Pre-encoder audio splitting; auto uses fixed chunks.",required:!1,values:["auto","fixed","vad","none"],default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Positive audio chunk duration in seconds.",required:!1,default:1200}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"tokenizer_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"connector_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"decoder_weight_type",type:"enum",description:"Weight storage type; component-specific settings inherit weight_type.",required:!1,preset:"weight_type_full"},{name:"tokenizer_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:512},{name:"connector_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:128},{name:"decoder_weight_context_mb",type:"int",description:"Decoder weight context in MiB; 4096 on 64-bit builds, 1024 on 32-bit builds.",required:!1,min:1},{name:"max_history_steps",type:"int",description:"Maximum retained decoder history; zero uses the model limit. Cannot exceed checkpoint position capacity; zero uses that capacity.",required:!1,default:0,min:0},{name:"vad_model_path",type:"path",description:"Silero VAD model used with audio_chunk_mode=vad.",required:!1,default:"assets/framework/models/silero_vad"}],load:[]},capabilities:{asr:["segments","speaker_turns","vad_chunking"]},runtime:{tags:["gguf"]},ui:{recommended_package:"vibevoice_asr_q8_0",tags:["ASR","GGUF"],docs:["docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"vibevoice_asr_q8_0",display_name:"VibeVoice ASR Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VibeVoice-ASR-GGUF",files:["VibeVoice-ASR-GGUF/vibevoice-asr-q8_0.gguf"],strip_prefix:"VibeVoice-ASR-GGUF"},{id:"vibevoice_asr_f16",display_name:"VibeVoice ASR F16 GGUF",format:"gguf",precision:"f16",target_directory:"VibeVoice-ASR-GGUF",files:["VibeVoice-ASR-GGUF/vibevoice-asr-f16.gguf"],strip_prefix:"VibeVoice-ASR-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{model_weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{model_weights:"model:model.safetensors.index.json"}}]},k8={family:"vibevoice_asr_streaming",display_name:"VibeVoice ASR Streaming",description:"Microsoft VibeVoice ASR Streaming models (7B and 1.5B) for chunked streaming speech-to-text with persistent decoder state.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["en","zh","es","pt","de","ja","ko","fr","ru","it"],capabilities:{asr:["speaker_turns"]},options:{request:[{name:"language",type:"string",description:"ASR language label; empty unless provided in the request.",required:!1,default:""},{name:"context",type:"string",description:"Extra context or hotwords injected into the streaming prompt.",required:!1,default:""},{name:"max_tokens",type:"int",description:"Maximum generated transcript tokens per chunk.",required:!1,min:1,default:256},{name:"temperature",type:"float",description:"Sampling temperature; 0 uses deterministic decoding.",required:!1,min:0,default:0},{name:"top_p",type:"float",description:"Nucleus sampling probability.",required:!1,min:.001,max:1,default:1},{name:"top_k",type:"int",description:"Top-k sampling limit; default 50. Zero disables top-k filtering.",required:!1,min:0,default:50},{name:"num_beams",type:"int",description:"Compatibility-only; this checkpoint ignores beam search and uses its incremental decoder.",required:!1,min:1,default:1},{name:"repetition_penalty",type:"float",description:"Generation repetition penalty.",required:!1,min:.001,default:1},{name:"seed",type:"int",description:"Acoustic latent sampling seed; default 1234.",required:!1,default:1234},{name:"audio_chunk_mode",type:"enum",description:"Compatibility-only; ignored in offline and streaming modes. Processor chunk/lookahead settings determine segmentation.",values:["auto","fixed","vad","none"],required:!1,default:"auto"},{name:"audio_chunk_duration_sec",type:"float",description:"Compatibility-only; ignored in offline and streaming modes. Processor settings determine segmentation.",required:!1,min:.001,default:1200}],session:[{name:"weight_type",type:"enum",description:"Shared component weight storage.",required:!1,preset:"weight_type_full",default:"native"},{name:"tokenizer_weight_type",type:"enum",description:"Speech tokenizer weight storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"connector_weight_type",type:"enum",description:"Speech connector weight storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"decoder_weight_type",type:"enum",description:"Text decoder weight storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"tokenizer_weight_context_mb",type:"int",description:"Speech tokenizer weight metadata context. Size in MiB; must be positive.",required:!1,min:1,default:512},{name:"connector_weight_context_mb",type:"int",description:"Speech connector weight metadata context. Size in MiB; must be positive.",required:!1,min:1,default:128},{name:"decoder_weight_context_mb",type:"int",description:"Text decoder weight metadata context. Default 4096 on 64-bit builds and 1024 on 32-bit builds. Size in MiB; must be positive.",required:!1,min:1},{name:"max_history_steps",type:"int",description:"Decoder history limit; zero uses the model position capacity. Must be nonnegative and not exceed that capacity.",required:!1,min:0,default:0}],load:[]},runtime:{tags:["gguf"]},ui:{recommended_package:"vibevoice_asr_streaming_7b_q8_0",tags:["ASR","Streaming","GGUF"],docs:["docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/VibeVoice-ASR-Streaming-7B-GGUF",revision:"main",gated:!1}},packages:[{id:"vibevoice_asr_streaming_7b_q8_0",display_name:"VibeVoice ASR Streaming 7B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VibeVoice-ASR-Streaming-7B-GGUF",files:["vibevoice-asr-streaming-7b-q8_0.gguf"]},{id:"vibevoice_asr_streaming_7b_bf16",display_name:"VibeVoice ASR Streaming 7B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VibeVoice-ASR-Streaming-7B-GGUF",files:["vibevoice-asr-streaming-7b-bf16.gguf"]},{id:"vibevoice_asr_streaming_7b_q4_k",display_name:"VibeVoice ASR Streaming 7B Q4_K GGUF",format:"gguf",precision:"q4_k",target_directory:"VibeVoice-ASR-Streaming-7B-GGUF",files:["vibevoice-asr-streaming-7b-q4_k.gguf"]},{id:"vibevoice_asr_streaming_1_5b_q8_0",display_name:"VibeVoice ASR Streaming 1.5B Q8_0 GGUF",format:"gguf",precision:"q8_0",target_directory:"VibeVoice-ASR-Streaming-1.5B-GGUF",files:["vibevoice-asr-streaming-1.5b-q8_0.gguf"],download:{kind:"huggingface_snapshot",repo:"christopherthompson81/VibeVoice-ASR-Streaming-1.5B-GGUF",revision:"main",gated:!1}},{id:"vibevoice_asr_streaming_1_5b_bf16",display_name:"VibeVoice ASR Streaming 1.5B BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VibeVoice-ASR-Streaming-1.5B-GGUF",files:["vibevoice-asr-streaming-1.5b-bf16.gguf"],download:{kind:"huggingface_snapshot",repo:"christopherthompson81/VibeVoice-ASR-Streaming-1.5B-GGUF",revision:"main",gated:!1}},{id:"vibevoice_asr_streaming_1_5b_q4_k",display_name:"VibeVoice ASR Streaming 1.5B Q4_K GGUF",format:"gguf",precision:"q4_k",target_directory:"VibeVoice-ASR-Streaming-1.5B-GGUF",files:["vibevoice-asr-streaming-1.5b-q4_k.gguf"],download:{kind:"huggingface_snapshot",repo:"christopherthompson81/VibeVoice-ASR-Streaming-1.5B-GGUF",revision:"main",gated:!1}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{model_weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",tokenizer_vocab:"model:vocab.json",tokenizer_merges:"model:merges.txt"},optional_files:{preprocessor_config:"model:preprocessor_config.json"},tensors:{model_weights:"model:model.safetensors.index.json"}}]},x8={family:"vieneu_v3_turbo",display_name:"VieNeu-TTS v3 Turbo",description:"On-device Vietnamese/English TTS (48 kHz) with instant voice cloning from 3-5 s of reference audio, by Phạm Nguyễn Ngọc Bảo (pnnbao97). Takes SEA-G2P phonemes as text input.",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline"],languages:["vi","en"],capabilities:{clone:["speaker_reference"]},runtime:{tags:["gguf"]},options:{request:[{name:"auto_frame_cap",type:"bool",description:"Cap the generation budget using the chunk's phoneme count. Legacy frame_cap remains accepted.",required:!1,default:!0},{name:"text_chunk_min_size",type:"int",description:"Phoneme-string chunks shorter than this character count join a neighbour. Legacy text_chunk_min remains accepted.",required:!1,default:20},{name:"speaker_embedding_file",type:"path",description:"File containing a comma-separated 192-dimensional speaker embedding.",required:!1},{name:"speaker_embedding",type:"string",description:"Inline comma-separated 192-dimensional speaker embedding.",required:!1},{name:"reference_codes",type:"string",description:"Pre-encoded reference codes in row-major order, comma- or space-separated; codebooks per frame come from the checkpoint.",required:!1},{name:"reference_codes_file",type:"path",description:"Pre-encoded reference codes, one frame per line. Replaces audio encoding and can be used with a speaker embedding instead of reference audio.",required:!1},{name:"x_vector_only_mode",type:"bool",description:"Clone using only the speaker embedding. Defaults to true for embedding-only input, otherwise false.",required:!1},{name:"encode_reference_only",type:"bool",description:"Encode reference audio and return an acoustic-tokens artifact without generating speech.",required:!1,default:!1},{name:"max_tokens",type:"int",description:"Maximum generated frames per text chunk; uses the checkpoint max_new_tokens setting (300 fallback). Each frame represents 80 ms.",required:!1,min:1},{name:"do_sample",type:"bool",description:"Enable sampling for all codebooks unless subtalker_do_sample overrides later codebooks.",required:!1,default:!0},{name:"temperature",type:"float",description:"Sampling temperature for all codebooks unless overridden for the subtalker.",required:!1,default:.8},{name:"top_k",type:"int",description:"Top-k sampling limit for all codebooks unless overridden for the subtalker.",required:!1,default:25},{name:"top_p",type:"float",description:"Nucleus cutoff within top-k candidates, unless overridden for the subtalker.",required:!1,default:.95},{name:"repetition_penalty",type:"float",description:"Repetition penalty applied independently to each codebook.",required:!1,default:1.2},{name:"repetition_window",type:"int",description:"Recent frames remembered per codebook for repetition penalties; zero uses all history.",required:!1,min:0,default:64},{name:"babble_retries",type:"int",description:"Regenerations for short chunks that exceed their text; zero disables the guard.",required:!1,min:0,default:2},{name:"subtalker_temperature",type:"float",description:"Temperature override for later codebooks; omitted or negative inherits temperature.",required:!1},{name:"subtalker_top_k",type:"int",description:"Top-k override for later codebooks; omitted or negative inherits top_k.",required:!1},{name:"subtalker_top_p",type:"float",description:"Nucleus cutoff override for later codebooks; omitted or negative inherits top_p.",required:!1},{name:"subtalker_do_sample",type:"bool",description:"Sampling override for later codebooks; inherits do_sample when omitted.",required:!1},{name:"seed",type:"int",description:"Sampling seed; omitted draws a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Maximum character budget per phoneme-string chunk; must be positive.",required:!1,min:1,default:200}],session:[{name:"g2p_dict_file",type:"path",description:"SEA-G2P dictionary file (sea_g2p.bin). When set, input is Vietnamese/English text rather than precomputed phonemes.",required:!1},{name:"g2p_library",type:"path",description:"SEA-G2P shared library used with g2p_dict_file; searched by library name when omitted.",required:!1},{name:"mem_saver",type:"bool",description:"Release the talker cached-step graph after each request.",required:!1,default:!1},{name:"voice_prompt_cache_slots",type:"int",description:"Prepared voice-prompt cache slots; zero disables caching.",required:!1,min:0,default:1},{name:"weight_type",type:"enum",description:"Shared talker matmul storage.",required:!1,preset:"weight_type_full",default:"native"},{name:"conv_weight_type",type:"enum",description:"Speaker encoder convolution weight storage.",required:!1,values:["native","f32","f16"],default:"f32"},{name:"talker_weight_type",type:"enum",description:"Talker matmul storage; inherits weight_type when omitted.",required:!1,preset:"weight_type_full"},{name:"talker_graph_arena_mb",type:"int",description:"Talker graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:256},{name:"speech_decoder_graph_arena_mb",type:"int",description:"Codec decoder graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:32},{name:"speaker_encoder_graph_arena_mb",type:"int",description:"Speaker encoder graph metadata arena. Size in MiB; must be positive.",required:!1,min:1,default:32},{name:"talker_constant_context_mb",type:"int",description:"Talker constant metadata context. Size in MiB; must be positive.",required:!1,min:1,default:4096},{name:"code_predictor_constant_context_mb",type:"int",description:"Code predictor constant metadata context. Size in MiB; must be positive.",required:!1,min:1,default:1536},{name:"speech_decoder_constant_context_mb",type:"int",description:"Codec decoder constant metadata context. Size in MiB; must be positive.",required:!1,min:1,default:1536}],load:[]},ui:{recommended_package:"vieneu_v3_turbo_q8_0",tags:["TTS","Clone","GGUF"],docs:["docs/models/vieneu_v3_turbo.md","docs/tts.md","docs/gguf.md"]},packages:[{id:"vieneu_v3_turbo_q8_0",display_name:"VieNeu-TTS v3 Turbo Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VieNeu-TTS-v3-Turbo-GGUF",files:["gguf/vieneu-v3-turbo-q8_0.gguf","gguf/voices/manifest.json","gguf/voices/minh_quan_pro/ref_codes.txt","gguf/voices/minh_quan_pro/speaker.emb.txt"],download:{kind:"huggingface_snapshot",repo:"pnnbao-ump/VieNeu-TTS-v3-Turbo"},strip_prefix:"gguf"},{id:"vieneu_v3_turbo_bf16",display_name:"VieNeu-TTS v3 Turbo BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VieNeu-TTS-v3-Turbo-GGUF",files:["gguf/vieneu-v3-turbo-bf16.gguf","gguf/voices/manifest.json","gguf/voices/minh_quan_pro/ref_codes.txt","gguf/voices/minh_quan_pro/speaker.emb.txt"],download:{kind:"huggingface_snapshot",repo:"pnnbao-ump/VieNeu-TTS-v3-Turbo"},strip_prefix:"gguf"},{id:"vietneu_tts_v3_turbo_q8_0",display_name:"VieNeu-TTS v3 Turbo Q8_0 GGUF (first community port, July 2026 weights)",format:"gguf",precision:"q8_0",target_directory:"VieNeu-TTS-v3-Turbo-GGUF-2026-07",files:["model.gguf"],download:{kind:"huggingface_snapshot",repo:"phuocnguyen90/VieNeu-TTS-v3-Turbo-GGUF"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",speech_tokenizer_config:"model:speech_tokenizer/config.json"},optional_files:{generation_config:"model:generation_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"},speech_tokenizer_weights:{source:"weights:",prefix:"speech_tokenizer_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",speech_tokenizer_config:"model:speech_tokenizer/config.json"},optional_files:{generation_config:"model:generation_config.json",vocab:"model:vocab.json",merges:"model:merges.txt",tokenizer_json:"model:tokenizer.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{model_weights:"model:model.safetensors",speech_tokenizer_weights:"model:speech_tokenizer/model.safetensors"}}]},S8={schema_version:1,family:"voxcpm1",display_name:"VoxCPM1",description:"OpenBMB VoxCPM 0.5B tokenizer-free TTS model supporting short-reference voice cloning and streaming output (16kHz).",category:"tts",status:"supported",tasks:["tts","clone"],modes:["offline","streaming"],languages:["zh","en","ja","ko"],capabilities:{clone:["speaker_reference"]},dependencies:[],options:{request:[{name:"text_chunk_mode",type:"enum",description:"Text chunking mode; default tag_aware.",preset:"text_chunk_mode_full",required:!1,default:"tag_aware"},{name:"seed",type:"int",description:"Random seed for MiniCPM and diffusion sampling.",required:!1},{name:"max_tokens",type:"int",description:"Maximum MiniCPM output tokens; default 4096. Zero selects model max_length; negative counts are rejected.",required:!1,default:4096},{name:"min_tokens",type:"int",description:"Minimum MiniCPM output tokens before an EOS stop is honored; default 2.",required:!1,default:2},{name:"num_inference_steps",type:"int",description:"CFM diffusion sampling steps; default 10. Must be positive.",required:!1,default:10},{name:"guidance_scale",type:"float",description:"CFM classifier-free guidance rate. Must be nonnegative.",required:!1,default:2},{name:"retry_badcase",type:"bool",description:"Retry when generation is detected as a bad case; defaults to true offline and false in streaming. Streaming ignores an explicit true value with a warning.",required:!1},{name:"retry_badcase_max_times",type:"int",description:"Maximum total generation attempts when retrying bad cases, including the initial attempt; default 3. Must be positive.",required:!1,default:3},{name:"retry_badcase_ratio_threshold",type:"float",description:"Bad-case ratio threshold for retry decisions. Must be positive.",required:!1},{name:"prompt_text",type:"string",description:"Text prompt for prompt-continuation voice cloning.",required:!1},{name:"reference_text",type:"string",description:"Alias for prompt_text; text prompt for prompt-continuation voice cloning.",required:!1},{name:"text_chunk_size",type:"int",description:"Maximum characters per offline text chunk; must be positive. Does not control streaming chunk cadence.",required:!1,min:1,default:2048},{name:"language",type:"string",description:"Language hint for Chinese-script normalization; Cantonese/yue preserves Traditional characters. Inherits structured transcript or voice language when provided.",required:!1}],session:[{name:"lora",type:"path",description:"Native LoRA directory or checkpoint file with adjacent lora_config.json; merged into generator weights at session creation.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's configured alpha/r scaling; default 1.",required:!1,default:1},{name:"mem_saver",type:"bool",description:"Use tighter graph workspaces and release request runtime graphs; default false.",required:!1,default:!1},{name:"prompt_cache_slots",type:"int",description:"Prompt and prompt-audio embedding cache slots; default 1.",required:!1,default:1},{name:"weight_type",type:"enum",description:"Model weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"audiovae_weight_type",type:"enum",description:"AudioVAE weight storage type.",preset:"weight_type_full",required:!1,default:"native"},{name:"weight_context_mb",type:"int",description:"Model weight graph context size in MB.",required:!1},{name:"text_embedding_graph_arena_mb",type:"int",description:"Text embedding host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"lm_step_graph_arena_mb",type:"int",description:"LM step host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"projection_graph_arena_mb",type:"int",description:"Projection host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"local_encoder_graph_arena_mb",type:"int",description:"Local encoder host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"dit_graph_arena_mb",type:"int",description:"DiT estimator host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"audiovae_weight_context_mb",type:"int",description:"AudioVAE weight graph context size in MB.",required:!1},{name:"audiovae_graph_arena_mb",type:"int",description:"AudioVAE decoder host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"audiovae_encoder_graph_arena_mb",type:"int",description:"AudioVAE encoder host graph-metadata arena size in MiB, not device workspace.",required:!1},{name:"audiovae_latent_capacity",type:"int",description:"AudioVAE decoder latent frame capacity.",required:!1},{name:"audiovae_encoder_sample_capacity",type:"int",description:"AudioVAE encoder sample capacity.",required:!1}],load:[]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"voxcpm1_0_5b_q8_0",tags:["TTS","Clone","GGUF","Stream"],docs:["docs/models/voxcpm1.md","docs/tts.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"voxcpm1_0_5b_q8_0",display_name:"VoxCPM 0.5B Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VoxCPM1-GGUF",files:["VoxCPM1-GGUF/voxcpm-0.5b-q8_0-audiovae-f16.gguf"],strip_prefix:"VoxCPM1-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},optional_files:{special_tokens_map:"model:special_tokens_map.json"},tensors:{weights:{source:"weights:"},audiovae_weights:{source:"weights:"}}}]},T8={family:"voxcpm2",display_name:"VoxCPM2",description:"OpenBMB tokenizer-free TTS model supporting 30 languages and 9 Chinese dialects, with 48 kHz output, natural-language voice design, controllable short-reference voice cloning, and expressive style guidance.",category:"tts",status:"supported",tasks:["tts","clone","design"],modes:["offline","streaming"],languages:["ar","my","zh","zh dialects","da","nl","en","fi","fr","de","el","he","hi","id","it","ja","km","ko","lo","ms","no","pl","pt","ru","es","sw","sv","tl","th","tr","vi"],options:{request:[{name:"min_tokens",type:"int",description:"Minimum generated audio tokens.",required:!1,min:0,default:2},{name:"max_tokens",type:"int",description:"Maximum generated audio tokens. Zero resolves to model max_length; requires min_tokens <= resolved max_tokens <= model limit.",required:!1,min:0,default:4096},{name:"num_inference_steps",type:"int",description:"Flow sampling steps. Must be positive.",required:!1,default:10},{name:"guidance_scale",type:"float",description:"Classifier-free guidance scale. Must be nonnegative.",required:!1,default:2},{name:"retry_badcase",type:"bool",description:"Retry detected bad generations. Offline only; streaming requires false.",required:!1,default:!0},{name:"retry_badcase_max_times",type:"int",description:"Total attempts including the initial attempt, not extra retries; must be positive.",required:!1,default:3},{name:"retry_badcase_ratio_threshold",type:"float",description:"Bad-case audio/text length ratio threshold. Must be positive.",required:!1,default:6},{name:"seed",type:"int",description:"Sampling seed.",required:!1,min:0,max:4294967295,default:1234},{name:"cfm_noise_file",type:"path",description:"Precomputed flow noise file.",required:!1},{name:"stream_chunk_policy",type:"enum",description:"Streaming decoder cadence: grow emits one patch first, then doubles toward stream_frames_per_event; fixed uses the configured size. Ignored offline.",required:!1,values:["grow","fixed"],default:"grow"},{name:"stream_frames_per_event",type:"int",description:"Maximum generated latent patches per streaming decoder event. Set to 1 for one-patch emission. Ignored offline.",required:!1,min:1,default:4},{name:"stream_left_context",type:"int",description:"Previous patches decoded as streaming left context.",required:!1,min:0,max:8,default:3},{name:"prompt_text",type:"string",description:"Transcript for continuation prompt audio, distinct from the base voice reference.",required:!1},{name:"chunk_strategy",type:"enum",description:"Long-form continuation or independent generation per chunk. Offline only.",required:!1,values:["continuation","stateless"],default:"continuation"},{name:"text_chunk_size",type:"int",description:"Framework long-form text chunk size. Offline only.",required:!1,default:2048},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode. Offline only.",required:!1,values:["default","tag_aware","japanese","endline"],default:"tag_aware"}],session:[{name:"audiovae_tile_frames",type:"int",description:"Opt-in causal AudioVAE tiling. Maximum new latent frames per tile; zero preserves full decoding.",required:!1,default:0,min:0},{name:"perf_mode",type:"enum",description:"Opt-in packed attention and MLP projections. May change numerical results; off preserves standard execution.",required:!1,values:["off","cuda_perf"],default:"off"},{name:"lora",type:"path",description:"Native LoRA directory or checkpoint file with adjacent lora_config.json; merged into generator weights at session creation.",required:!1},{name:"lora_scale",type:"float",description:"Multiplier for the adapter's configured alpha/r scaling; default 1.",required:!1,default:1},{name:"weight_type",type:"enum",description:"Language-model weight storage; does not override AudioVAE storage.",required:!1,preset:"weight_type_full"},{name:"audiovae_weight_type",type:"enum",description:"AudioVAE weight storage; defaults independently to native, not the shared weight_type.",required:!1,preset:"weight_type_full"},{name:"prompt_cache_slots",type:"int",description:"Cached encoded prompt slots; zero disables reuse.",required:!1,min:0,default:1},{name:"mem_saver",type:"bool",description:"Release staged runtime graphs.",required:!1,default:!0},{name:"weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:3072},{name:"text_embedding_graph_arena_mb",type:"int",description:"Text embedding host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:64},{name:"lm_step_graph_arena_mb",type:"int",description:"LM step host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:1024},{name:"projection_graph_arena_mb",type:"int",description:"Projection host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:256},{name:"local_encoder_graph_arena_mb",type:"int",description:"Local encoder host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:512},{name:"dit_graph_arena_mb",type:"int",description:"DiT estimator host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:1024},{name:"audiovae_weight_context_mb",type:"int",description:"Context or graph arena size in MiB.",required:!1,min:1,default:768},{name:"audiovae_graph_arena_mb",type:"int",description:"AudioVAE decoder host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:1024},{name:"audiovae_encoder_graph_arena_mb",type:"int",description:"AudioVAE encoder host graph-metadata arena size in MiB, not device workspace.",required:!1,min:1,default:1024},{name:"audiovae_latent_capacity",type:"int",description:"Optional decoder graph reservation in latent frames, reused by shorter requests and doubled when exceeded; omitted builds the graph at each request's own frame count.",required:!1,min:1},{name:"exec_plan",type:"string",description:"JSON component execution plans. audiovae: impl=default/ggml; backend must match the session; no artifacts. params.threads is a nonnegative int: positive values require a CPU session and enable a dedicated AudioVAE backend with streaming decode overlap; also controls offline decoding and prompt encoding threads. Omitted/0 shares the session backend.",required:!1,default:"{}"},{name:"audiovae_encoder_sample_capacity",type:"int",description:"Reserved encoder sample capacity.",required:!1,min:1,default:24e4}],load:[]},capabilities:{clone:["speaker_reference"],design:["voice_design"]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"voxcpm2_q8_0",tags:["TTS","Clone","Design","GGUF","Stream"],docs:["docs/tts.md","docs/gguf.md","docs/models/vocalrender.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"voxcpm2_q8_0",display_name:"VoxCPM2 Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"VoxCPM2-GGUF",files:["VoxCPM2-GGUF/voxcpm2-q8_0.gguf"],strip_prefix:"VoxCPM2-GGUF"},{id:"voxcpm2_bf16",display_name:"VoxCPM2 BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"VoxCPM2-GGUF",files:["VoxCPM2-GGUF/voxcpm2-bf16.gguf"],strip_prefix:"VoxCPM2-GGUF"},{id:"voxcpm2_orig",display_name:"VoxCPM2 Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"VoxCPM2-GGUF",files:["VoxCPM2-GGUF/voxcpm2-orig.gguf"],strip_prefix:"VoxCPM2-GGUF"},{id:"voxcpm2_vocalrender_pro",display_name:"VocalRender-Pro (VoxCPM2) Original-Dtype GGUF",format:"gguf",precision:"orig",target_directory:"VoxCPM2-GGUF",files:["VoxCPM2-GGUF/finetune/vocalrender-pro-orig.gguf"],strip_prefix:"VoxCPM2-GGUF"},{id:"voxcpm2_safetensors",display_name:"VoxCPM2 Safetensors",format:"safetensors",precision:"native",target_directory:"VoxCPM2",files:["config.json","model.safetensors","tokenizer.json","tokenizer_config.json"],download:{kind:"huggingface_snapshot",repo:"OpenBMB/VoxCPM2"}}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{weights:{source:"weights:",prefix:"weights"},audiovae_weights:{source:"weights:",prefix:"audiovae_weights"}}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_config:"model:tokenizer_config.json",tokenizer_json:"model:tokenizer.json",special_tokens_map:"model:special_tokens_map.json"},tensors:{weights:"model:model.safetensors",audiovae_weights:"model:audiovae.safetensors"}}]},$8={family:"voxtral_realtime",display_name:"Voxtral Mini 4B Realtime",description:"Mistral 13-language realtime ASR model with a natively streaming causal audio encoder, configurable low-latency transcription delay, and accuracy competitive with offline open-source systems.",category:"asr",status:"supported",tasks:["asr"],modes:["offline","streaming"],languages:["en","zh","hi","es","ar","fr","pt","ru","de","ja","ko","it","nl"],options:{request:[{name:"max_tokens",type:"int",min:1,description:"Maximum generated transcript tokens; omitted uses the audio-derived limit. Offline decoding only; ignored by live streaming.",required:!1},{name:"do_sample",type:"bool",default:!1,description:"Sample rather than greedily decode.",required:!1},{name:"temperature",type:"float",min:0,default:1,description:"Sampling temperature; must be > 0.",required:!1},{name:"top_p",type:"float",min:0,max:1,default:1,description:"Nucleus sampling probability in (0, 1].",required:!1},{name:"top_k",type:"int",min:0,default:50,description:"Top-k sampling limit; zero disables filtering.",required:!1},{name:"seed",type:"int",min:0,default:1234,description:"Sampling seed.",required:!1}],session:[{name:"weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],default:"native",description:"Shared weight storage type.",required:!1},{name:"audio_encoder_weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],description:"Audio encoder weight storage; inherits weight_type.",required:!1},{name:"text_decoder_weight_type",type:"enum",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],description:"Text decoder weight storage; inherits weight_type.",required:!1},{name:"audio_encoder_graph_arena_mb",type:"int",min:1,default:512,description:"Audio encoder graph arena in MiB.",required:!1},{name:"audio_encoder_weight_context_mb",type:"int",min:1,default:128,description:"Audio encoder weight context in MiB.",required:!1},{name:"text_decoder_prefill_graph_arena_mb",type:"int",min:1,default:512,description:"Decoder prefill graph arena in MiB. Decoder uses the maximum of prefill and decode arena settings.",required:!1},{name:"text_decoder_decode_graph_arena_mb",type:"int",min:1,default:512,description:"Decoder step graph arena in MiB. Decoder uses the maximum of prefill and decode arena settings.",required:!1},{name:"text_decoder_weight_context_mb",type:"int",min:1,default:128,description:"Decoder weight context in MiB.",required:!1},{name:"stream_decode_cache_steps",type:"int",default:1024,description:"Streaming decoder cache capacity in 80 ms steps. Must be positive and no greater than checkpoint sliding_window.",required:!1},{name:"stream_batch_tokens",type:"int",min:1,default:1,description:"Audio tokens per streaming encoder forward.",required:!1}],load:[]},capabilities:{asr:["partial_results"]},runtime:{tags:["gguf","stream"]},ui:{recommended_package:"voxtral_realtime_q8_0",tags:["ASR","GGUF","Stream"],docs:["docs/models/voxtral_realtime.md","docs/asr.md","docs/gguf.md"]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"voxtral_realtime_q8_0",display_name:"Voxtral Mini 4B Realtime Q8_0 GGUF",default:!0,format:"gguf",precision:"q8_0",target_directory:"Voxtral-Mini-4B-Realtime-2602-GGUF",files:["Voxtral-Mini-4B-Realtime-2602-GGUF/voxtral-mini-4b-realtime-2602-q8_0.gguf"],strip_prefix:"Voxtral-Mini-4B-Realtime-2602-GGUF"},{id:"voxtral_realtime_q4_k",display_name:"Voxtral Mini 4B Realtime Q4_K GGUF",format:"gguf",precision:"q4_k",target_directory:"Voxtral-Mini-4B-Realtime-2602-GGUF",files:["Voxtral-Mini-4B-Realtime-2602-GGUF/voxtral-mini-4b-realtime-2602-q4_k.gguf"],strip_prefix:"Voxtral-Mini-4B-Realtime-2602-GGUF"},{id:"voxtral_realtime_bf16",display_name:"Voxtral Mini 4B Realtime BF16 GGUF",format:"gguf",precision:"bf16",target_directory:"Voxtral-Mini-4B-Realtime-2602-GGUF",files:["Voxtral-Mini-4B-Realtime-2602-GGUF/voxtral-mini-4b-realtime-2602-bf16.gguf"],strip_prefix:"Voxtral-Mini-4B-Realtime-2602-GGUF"}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tekken:"model:tekken.json"},optional_files:{params:"model:params.json",readme:"model:README.md"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",generation_config:"model:generation_config.json",processor_config:"model:processor_config.json",tekken:"model:tekken.json"},optional_files:{params:"model:params.json",readme:"model:README.md"},tensors:{weights:"model:model.safetensors"}}]},q8={schema_version:1,family:"voxtral_tts",display_name:"Voxtral 4B TTS",description:"Mistral's Ministral-based autoregressive and flow-matching TTS model with 20 embedded preset voices.",category:"tts",status:"supported",tasks:["tts"],modes:["offline","streaming"],languages:["en","fr","es","de","it","pt","nl","ar","hi"],runtime:{tags:["gguf"]},capabilities:{tts:["built_in_voices","long_form"]},options:{request:[{name:"voice_id",type:"enum",description:"Embedded preset voice; the released checkpoint does not contain the encoder needed for reference-audio cloning.",values:["casual_female","casual_male","cheerful_female","neutral_female","neutral_male","pt_male","pt_female","nl_male","nl_female","it_male","it_female","fr_male","fr_female","es_male","es_female","de_male","de_female","ar_male","hi_male","hi_female"],required:!1,default:"casual_male"},{name:"max_tokens",type:"int",description:"Maximum generated audio frames per text chunk; each frame represents 80 ms.",required:!1,min:1,default:2048},{name:"num_inference_steps",type:"int",description:"Euler integration steps for the per-frame acoustic flow model.",required:!1,min:1,default:7},{name:"guidance_scale",type:"float",description:"Acoustic classifier-free guidance scale; the AR backbone does not use CFG.",required:!1,min:0,default:1.2},{name:"seed",type:"int",description:"Acoustic noise seed; omitted requests select a random seed.",required:!1,min:0},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per framework long-form text chunk.",required:!1,min:1,default:300},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",values:["default","tag_aware","japanese","endline"],required:!1,default:"default"}],session:[{name:"weight_type",type:"enum",description:"Weight storage type; native preserves the package's tensor types.",values:["native","f32","f16","bf16","q4_0","q4_1","q5_0","q5_1","q2_k","q3_k","q4_k","q5_k","q6_k","q8_0","nvfp4"],required:!1,default:"native"},{name:"kv_cache_type",type:"enum",description:"AR key/value cache storage type.",values:["f32","f16","bf16"],required:!1,default:"f16"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"voxtral_4b_tts_2603_bf16",display_name:"Voxtral 4B TTS 2603 BF16 GGUF",default:!0,format:"gguf",precision:"bf16",target_directory:"Voxtral-4B-TTS-2603-GGUF",files:["Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-bf16.gguf"],strip_prefix:"Voxtral-4B-TTS-2603-GGUF"},{id:"voxtral_4b_tts_2603_q8_0",display_name:"Voxtral 4B TTS 2603 Q8_0 GGUF",default:!1,format:"gguf",precision:"q8_0",target_directory:"Voxtral-4B-TTS-2603-GGUF",files:["Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-q8_0.gguf"],strip_prefix:"Voxtral-4B-TTS-2603-GGUF"}],dependencies:[],ui:{recommended_package:"voxtral_4b_tts_2603_bf16",tags:["TTS","GGUF"],docs:["docs/models/voxtral_tts.md","docs/gguf.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:params.json",tokenizer_json:"model:tokenizer.json",tokenizer_config:"model:tokenizer_config.json"},tensors:{model_weights:"weights:"}}]},G8={schema_version:1,family:"whistle_asr",display_name:"Whistle ASR",description:"Whistle offline speech recognition with FP32 GGUF weights, a GGML encoder and a host decoder.",category:"asr",status:"experimental",tasks:["asr"],modes:["offline"],languages:["en","de","fr","es","it","nl","pl"],runtime:{tags:["gguf"]},capabilities:{},options:{request:[{name:"language",type:"string",description:"Force one supported language; omit to detect the language.",required:!1}],session:[{name:"exec_plan",type:"string",description:"JSON component execution plans. Component decoder accepts impl host/neon (default host), both on CPU independently of the encoder backend. The experimental neon implementation accelerates the vocabulary projection with the framework NEON library and requires ENGINE_ENABLE_NEON=ON and AArch64 NEON. No artifacts or params are used.",required:!1,default:"{}"}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/audio.cpp-gguf",revision:"main",gated:!1}},packages:[{id:"whistle_asr_f32",display_name:"Whistle ASR GGUF F32",default:!0,format:"gguf",precision:"f32",target_directory:"Whistle-GGUF",files:["Whistle-GGUF/whistle-f32.gguf"],strip_prefix:"Whistle-GGUF"}],dependencies:[],ui:{tags:["ASR","GGUF"],docs:["docs/models/whistle_asr.md"],recommended_package:"whistle_asr_f32"},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{config:"model:config.json",tokenizer_blob:"model:tokenizer.blob",mel_filterbank:"model:mel_filterbank_80.f32",hadamard_perm1:"model:hadamard_perm1.f32",hadamard_perm2:"model:hadamard_perm2.f32"},tensors:{weights:"weights:"}},{format:"safetensors",roots:{model:"."},files:{config:"model:config.json",tokenizer_blob:"model:tokenizer.blob",mel_filterbank:"model:mel_filterbank_80.f32",hadamard_perm1:"model:hadamard_perm1.f32",hadamard_perm2:"model:hadamard_perm2.f32"},tensors:{weights:"model:whistle.safetensors"}}]},F8={schema_version:1,family:"xtts_v2",display_name:"XTTS v2",description:"Coqui XTTS v2 cross-lingual text-to-speech with voice cloning: GPT-2 mel-code generator, perceiver conditioning resampler, HiFi-GAN decoder, and speaker encoder.",category:"tts",status:"community",tasks:["tts"],modes:["offline"],languages:["en","es","fr","de","it","pt","pl","tr","ru","nl","cs","ar","zh-cn","hu","ko","ja","hi"],capabilities:{tts:["speaker_reference"]},options:{request:[{name:"language",type:"string",description:"Source language for text conditioning (e.g. 'en'); also selects tokenizer normalization.",required:!1,default:"en"},{name:"temperature",type:"float",description:"AR sampling temperature; official default 0.75.",required:!1,min:0,default:.75},{name:"top_k",type:"int",description:"AR top-k sampling; official default 50.",required:!1,min:0,default:50},{name:"top_p",type:"float",description:"AR nucleus sampling threshold; official default 0.85.",required:!1,min:0,max:1,default:.85},{name:"repetition_penalty",type:"float",description:"AR repetition penalty; official default 10.0.",required:!1,min:1,default:10},{name:"max_mel_tokens",type:"int",description:"Maximum mel codes to generate; official default 605.",required:!1,min:1,default:605},{name:"seed",type:"int",description:"Sampling seed; omitted selects a random seed.",required:!1,min:0,max:4294967295},{name:"text_chunk_size",type:"int",description:"Maximum Unicode codepoints per framework text chunk; default 256.",required:!1,min:1,default:256},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"}],session:[{name:"conditionals_cache_slots",type:"int",description:"Prepared voice-conditioning cache slots; 0 disables caching.",required:!1,min:0,default:1}],load:[]},runtime:{tags:["gguf"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{vocoder:"model:xtts-v2-vocoder-f16.gguf"},tensors:{gpt_weights:{source:"weights:"},vocoder_weights:{source:"model:xtts-v2-vocoder-f16.gguf"}}}],packages:[{id:"xtts_v2_gguf_q8_0",display_name:"XTTS v2 GGUF (Q8_0)",default:!0,format:"gguf",precision:"q8_0",target_directory:"XTTS-v2-Q8",files:["q8_0/xtts-v2-gpt-q8_0.gguf","q8_0/xtts-v2-vocoder-f16.gguf","q8_0/mel_norms.bin"],download:{kind:"huggingface_snapshot",repo:"onicubag/xTTSv2-GGUF"},strip_prefix:"q8_0"},{id:"xtts_v2_gguf",display_name:"XTTS v2 GGUF (Original)",default:!1,format:"gguf",precision:"orig",target_directory:"XTTS-v2",files:["xtts-v2-gpt.gguf","xtts-v2-vocoder-f16.gguf","mel_norms.bin"],download:{kind:"huggingface_snapshot",repo:"onicubag/xTTSv2-GGUF"}},{id:"xtts_v2_gguf_q4_k_m",display_name:"XTTS v2 GGUF (Q4_K_M)",default:!1,format:"gguf",precision:"q4_k_m",target_directory:"XTTS-v2-Q4_K_M",files:["q4_k_m/xtts-v2-gpt-q4_k_m.gguf","q4_k_m/xtts-v2-vocoder-f16.gguf","q4_k_m/mel_norms.bin"],download:{kind:"huggingface_snapshot",repo:"onicubag/xTTSv2-GGUF"},strip_prefix:"q4_k_m"}],dependencies:[],ui:{tags:["TTS","Clone","GGUF"],docs:["docs/community_models/xtts_v2.md"],recommended_package:"xtts_v2_gguf_q8_0"}},A8={schema_version:1,family:"yue2",display_name:"YuE2",description:"YuE2 music generation model with symbolic ABC planning, semantic codec generation, NAR acoustic flow synthesis, and Oobleck VAE decode.",category:"audio_generation",status:"supported",tasks:["music"],modes:["offline"],languages:["en"],capabilities:{music:["lyrics","style_control"]},runtime:{tags:["gguf"]},dependencies:[],ui:{recommended_package:"yue2_main_q8_0",tags:["Music","GGUF"],docs:["docs/models/yue2.md","docs/music_generation.md","docs/gguf.md"]},options:{request:[{name:"style",type:"string",description:"Song style/tags.",required:!0},{name:"lyrics",type:"string",description:"Lyrics text. Leave empty for instrumental generation; if omitted, the CLI text input is used.",required:!1},{name:"cot",type:"enum",values:["off","melody","full"],description:"Symbolic planning route. off skips ABC generation; melody/full generate or consume ABC before music tokens.",required:!1,default:"full"},{name:"stop_after",type:"enum",values:["abc","semantic","audio"],description:"Last stage to run. abc writes the generated score only; semantic also writes the semantic token export; audio renders the full song.",required:!1,default:"audio"},{name:"abc",type:"string",description:"External ABC score text for melody/full routes.",required:!1},{name:"abc_file",type:"string",description:"Path to an external ABC score file for melody/full routes.",required:!1},{name:"semantic_prefix",type:"string",description:"JSON array of semantic codec indices to force as the start of the music stream.",required:!1},{name:"semantic_prefix_file",type:"string",description:"Path to a JSON array of semantic codec indices to force as the start of the music stream.",required:!1},{name:"nar_noise_file",type:"string",description:"Path to a raw float32 noise file for NAR generation, shaped [frames,64].",required:!1},{name:"export_semantic",type:"bool",description:"Attach the semantic token stream as a semantic artifact (JSON array of codec indices); default false.",required:!1,default:!1},{name:"guidance_scale",type:"float",description:"Semantic classifier-free guidance scale. Default follows the upstream route defaults. Omitted defaults to 1.01 with cot=off, otherwise 1.0.",required:!1,min:0,max:20},{name:"seed",type:"int",description:"Generation seed. Must be nonnegative and less than 2^63.",required:!1,min:0,default:1234},{name:"num_inference_steps",type:"int",description:"NAR midpoint ODE steps.",required:!1,min:1,default:8},{name:"abc_temperature",type:"float",description:"ABC planner sampling temperature.",required:!1,min:0,max:5},{name:"abc_top_p",type:"float",description:"ABC planner nucleus sampling probability. Must be in (0, 1].",required:!1,max:1},{name:"abc_top_k",type:"int",description:"ABC planner top-k sampling limit.",required:!1,min:1},{name:"abc_repetition_penalty",type:"float",description:"ABC planner repetition penalty. Must be positive.",required:!1},{name:"abc_penalty_window",type:"int",description:"ABC planner repetition penalty window.",required:!1,min:1},{name:"abc_min_tokens",type:"int",description:"Minimum ABC planner tokens before EOS is accepted.",required:!1,min:0},{name:"abc_max_tokens",type:"int",description:"Maximum ABC planner tokens. Zero is allowed when min_tokens is also zero.",required:!1,min:0},{name:"semantic_temperature",type:"float",description:"Semantic codec sampling temperature.",required:!1,min:0,max:5},{name:"semantic_top_p",type:"float",description:"Semantic codec nucleus sampling probability. Must be in (0, 1].",required:!1,max:1},{name:"semantic_top_k",type:"int",description:"Semantic codec top-k sampling limit.",required:!1,min:1},{name:"semantic_repetition_penalty",type:"float",description:"Semantic codec repetition penalty. Must be positive.",required:!1},{name:"semantic_penalty_window",type:"int",description:"Semantic codec repetition penalty window.",required:!1,min:1},{name:"semantic_min_tokens",type:"int",description:"Minimum semantic tokens before EOS is accepted.",required:!1,min:0},{name:"semantic_max_tokens",type:"int",description:"Maximum semantic codec tokens. Zero is allowed when min_tokens is also zero.",required:!1,min:0}],session:[{name:"ar_lora",type:"string",description:"AR adapter safetensors file; native, PEFT, and ComfyUI LoRA layouts. Absolute path or relative to the model root. Requires session reload.",required:!1},{name:"ar_lora_scale",type:"float",description:"AR LoRA delta scale; zero disables the adapter. Requires session reload.",required:!1,default:1},{name:"nar_lora",type:"string",description:"NAR adapter safetensors file. Absolute path or relative to the model root. Requires session reload.",required:!1},{name:"nar_lora_scale",type:"float",description:"NAR LoRA delta scale; full vae2llm/llm2vae replacements are unscaled. Zero disables the entire adapter. Requires session reload.",required:!1,default:1},{name:"weight_type",type:"enum",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"],description:"Shared weight storage type.",required:!1,default:"native"},{name:"model_weight_type",type:"enum",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"],description:"YuE2 MoT weight storage type. Omitted inherits weight_type.",required:!1},{name:"model_gguf",type:"string",description:"Yue2 main AR/NAR component GGUF file relative to the model root.",required:!1,default:"yue2-3b-q8_0.gguf"},{name:"vae_gguf",type:"string",description:"Yue2 VAE component GGUF file relative to the model root.",required:!1,default:"yue2-vae-f16.gguf"},{name:"vae_weight_type",type:"enum",values:["native","f32","f16","bf16","q8_0","q4_0","q4_k"],description:"YuE2 VAE weight storage type. Omitted inherits weight_type.",required:!1},{name:"model_weight_context_mb",type:"int",description:"YuE2 MoT weight context size in MiB.",required:!1,min:1,default:32},{name:"vae_weight_context_mb",type:"int",description:"YuE2 VAE weight context size in MiB.",required:!1,min:1,default:32},{name:"ar_prefill_graph_arena_mb",type:"int",description:"AR prefill graph arena size in MiB.",required:!1,min:1,default:32},{name:"ar_decode_graph_arena_mb",type:"int",description:"AR one-token decode graph arena size in MiB.",required:!1,min:1,default:32},{name:"nar_graph_arena_mb",type:"int",description:"NAR acoustic flow graph arena size in MiB.",required:!1,min:1,default:32},{name:"vae_graph_arena_mb",type:"int",description:"VAE decode graph arena size in MiB.",required:!1,min:1,default:32},{name:"attention",type:"enum",description:"NAR acoustic-flow attention lowering; auto selects the backend-appropriate implementation.",required:!1,values:["auto","flash","eager"],default:"auto"},{name:"perf_mode",type:"enum",description:"Performance preset; cuda_perf packs AR projections, aligns KV capacity to 256 tokens, retains stages and caps VAE tiles at 512 frames. Explicit controls override the preset. May change audio and substantially increase peak VRAM.",values:["off","cuda_perf"],required:!1,default:"off"},{name:"packed_projections",type:"bool",description:"Pack AR QKV and gate/up projections without changing weight dtype. Default false, true with cuda_perf. Explicit values override the preset.",required:!1},{name:"kv_cache_alignment",type:"int",description:"AR KV capacity alignment in tokens; values above 1 also use cached CUDA CFG attention windows of this size. Default 1, or 256 with cuda_perf; may use more memory and change numerics. Explicit values override the preset.",required:!1,min:1},{name:"mem_saver",type:"bool",description:"Release AR/NAR runtimes and VAE graphs after generation. Default true, false with cuda_perf. Disabling retains stages and can substantially increase peak VRAM.",required:!1},{name:"vae_tile_frames",type:"int",description:"Latent core frames per VAE tile; defaults to model configuration, capped at 512 with cuda_perf. Explicit values override the cap. The halo is unchanged; different boundaries can change numerical results.",required:!1,min:1},{name:"attention_tile_rows",type:"int",description:"Query rows per eager NAR attention tile; nonpositive values select automatic tiling to keep each score matrix below 3 GiB.",required:!1,default:0}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"audio-cpp/Yue2-3B-GGUF",revision:"main",gated:!1}},packages:[{id:"yue2_main_q8_0",display_name:"Yue2 3B Main Q8_0",default:!0,format:"gguf",precision:"q8_0",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-3b-q8_0.gguf"]},{id:"yue2_main_bf16",display_name:"Yue2 3B Main BF16",format:"gguf",precision:"bf16",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-3b-bf16.gguf"]},{id:"yue2_main_q4_0",display_name:"Yue2 3B Main Q4_0",format:"gguf",precision:"q4_0",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-3b-q4_0.gguf"]},{id:"yue2_vae_f16",display_name:"Yue2 VAE F16",format:"gguf",precision:"f16",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-vae-f16.gguf"]},{id:"yue2_vae_f32",display_name:"Yue2 VAE F32",format:"gguf",precision:"f32",target_directory:"Yue2-3B-GGUF",files:["sidecars/yue2-model-config.json","sidecars/yue2-generation-config.json","sidecars/yue2-qwen.tiktoken","sidecars/yue2-vae-config.json","yue2-vae-f32.gguf"]}],sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{model_config:"model:sidecars/yue2-model-config.json",generation_config:"model:sidecars/yue2-generation-config.json",tiktoken:"model:sidecars/yue2-qwen.tiktoken",vae_config:"model:sidecars/yue2-vae-config.json"},tensors:{model_weights:{source:"weights:",prefix:"model_weights"}}},{format:"safetensors",roots:{model:"YuE2-3B",vae:"YuE2-Vae"},files:{model_config:"model:config.json",generation_config:"model:yue2_generation_config.json",tiktoken:"model:qwen.tiktoken",vae_config:"vae:config.json"},tensors:{model_weights:"model:model.safetensors",vae_weights:"vae:model.safetensors"}}]},C8={schema_version:1,family:"zipvoice",display_name:"ZipVoice",description:"Community ZipVoice / ZipVoice-Distill flow-matching TTS with a TTSZipformer backbone (U-Net downsampling stacks, compact relative position attention), duration prediction from prompt ratio, Euler solver with t-shift and classifier-free guidance, and Vocos mel-24kHz vocoder (k2-fsa/ZipVoice).",category:"tts",status:"community",tasks:["tts","clone"],modes:["offline","streaming"],languages:["en","zh"],runtime:{tags:["server","stream"]},capabilities:{clone:["speaker_reference"]},options:{request:[{name:"reference_text",type:"string",description:"Transcript matching the reference voice audio; required for zero-shot cloning.",required:!0},{name:"text_chunk_size",type:"int",description:"Maximum characters per generated text chunk; default 128.",required:!1,min:1,default:128},{name:"text_chunk_mode",type:"enum",description:"Framework text chunking mode.",preset:"text_chunk_mode_full",required:!1,default:"word_budget"},{name:"guidance_scale",type:"float",description:"Guidance scale; inherits the session default (3.0 for both variants). ZipVoice-Distill uses a guidance-scale embedding; ZipVoice uses batched CFG. Zero disables guidance. Any finite nonnegative value is accepted.",required:!1,min:0,default:3},{name:"num_inference_steps",type:"int",description:"Euler ODE steps; inherits the session default (8 for both variants).",required:!1,min:1,max:64,default:8},{name:"shift",type:"float",description:"Shift timesteps toward low SNR (smaller = stronger shift); default 0.5. Must be finite and positive.",required:!1,default:.5},{name:"speed",type:"float",description:"Speech speed multiplier applied through the prompt-duration ratio; default 1.0. Must be finite and positive.",required:!1,default:1},{name:"feat_scale",type:"float",description:"Feature scale applied to log-mel features; default 0.1 (reference default). Must be finite and positive.",required:!1,default:.1},{name:"target_rms",type:"float",description:"Target RMS for prompt loudness normalization; 0 disables. Default 0.1. Negative values disable normalization; values above 1 are accepted.",required:!1,default:.1},{name:"seed",type:"int",description:"Noise seed; default 666 (reference default).",required:!1,min:0,default:666},{name:"language",type:"string",description:"espeak language for phonemization; default en-us.",required:!1,default:"en-us"}],session:[{name:"vocos_path",type:"string",description:"Path to the Vocos vocoder checkpoint (vocos.safetensors or GGUF); required unless bundled in the model GGUF or placed next to the checkpoint.",required:!1},{name:"guidance_scale",type:"float",description:"Default guidance scale for requests that do not set it; must be finite and nonnegative.",required:!1,min:0,default:3},{name:"num_inference_steps",type:"int",description:"Default Euler steps for requests that do not set it.",required:!1,min:1,max:64,default:8},{name:"shift",type:"float",description:"Default timestep shift for requests that do not set it; must be finite and positive.",required:!1,default:.5},{name:"espeak_library_path",type:"string",description:"Path to the espeak-ng shared library (e.g. /opt/homebrew/lib/libespeak-ng.dylib) for tokenizer=espeak.",required:!1},{name:"espeak_data_path",type:"string",description:"Path to the espeak-ng data directory or package for tokenizer=espeak.",required:!1}],load:[]},package_defaults:{download:{kind:"huggingface_snapshot",repo:"davidxifeng/zipvoice-gguf",revision:"main",gated:!1}},packages:[{id:"zipvoice_distill_gguf",display_name:"ZipVoice-Distill GGUF (local conversion)",description:"Self-contained GGUF: flow-matching model, bundled Vocos vocoder and the embedded text-frontend sidecars (tokens, config, zh tables) in one file. Converted from k2-fsa/ZipVoice with export_zipvoice_zh_dict.py + convert_zipvoice.py.",default:!0,format:"gguf",precision:"orig",target_directory:"ZipVoice-Distill-GGUF",files:["zipvoice-distill-orig.gguf"]},{id:"zipvoice_distill_q8_0",display_name:"ZipVoice-Distill GGUF (Q8_0)",description:"Self-contained Q8_0 GGUF with bundled Vocos and embedded text-frontend sidecars.",format:"gguf",precision:"q8_0",target_directory:"ZipVoice-Distill-GGUF",files:["zipvoice-distill-q8_0.gguf"]}],dependencies:[],ui:{recommended_package:"zipvoice_distill_gguf",tags:["TTS","Clone"],docs:["docs/models/zipvoice.md"]},sources:[{format:"gguf",roots:{model:".",weights:"$gguf"},files:{tokens:"model:tokens.txt",model_config:"model:model.json"},optional_files:{zh_chars:"model:zh_chars.tsv",zh_phrases:"model:zh_phrases.tsv",zh_syllables:"model:zh_syllables.tsv",zh_jieba_dict:"model:zh_jieba_dict.txt",zh_hmm_model:"model:zh_hmm_model.txt"},tensors:{model:{source:"weights:",prefix:"model"}},optional_tensors:{vocos_vocoder:{source:"weights:",prefix:"vocos"}}}]},M8={models:JSON.parse('[{"id":"ace-step","display_name":"ACE-Step 1.5 (music gen)","family":"ace_step","path":"models/Ace-Step1.5","task":"gen","mode":"offline","download_id":"ace_step","default_text":"upbeat pop music with bright vocals and energetic drums","session_options":{"ace_step.mem_saver":"true","ace_step.dit_weight_type":"q8_0","ace_step.text_encoder_weight_type":"q8_0","ace_step.planner_weight_type":"q8_0"},"min_vram_gb":8},{"id":"ming3-tts","display_name":"Ming 3.0 TTS 0.5B","family":"ming3_tts","path":"models/Ming-3.0-TTS-0.5B-GGUF","task":"tts","mode":"offline","download_id":"ming_3_0_tts_0_5b_bf16","default_options":{"language":"en"},"default_text":"Good evening. The harbor is quiet tonight."},{"id":"ming3-tts-clone","display_name":"Ming 3.0 TTS 0.5B Clone","family":"ming3_tts","path":"models/Ming-3.0-TTS-0.5B-GGUF","task":"clon","mode":"offline","download_id":"ming_3_0_tts_0_5b_bf16","default_options":{"language":"en"},"input_hint_en":"Upload a reference voice. Its transcript is optional and enables acoustic-prefix conditioning."},{"id":"ming3-tts-design","display_name":"Ming 3.0 TTS 0.5B Voice Design","family":"ming3_tts","path":"models/Ming-3.0-TTS-0.5B-GGUF","task":"vdes","mode":"offline","download_id":"ming_3_0_tts_0_5b_bf16","default_options":{"language":"en"}},{"id":"ming3-audio-asr","display_name":"Ming 3.0 Audio Tiny ASR","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"asr","mode":"offline","download_id":"ming3_audio_tiny_bf16"},{"id":"ming3-audio-understanding","display_name":"Ming 3.0 Audio Tiny Understanding","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"asr","workflow":"analysis","mode":"offline","download_id":"ming3_audio_tiny_bf16","default_options":{"prompt":"Describe the sounds in this recording."}},{"id":"ming3-audio-response","display_name":"Ming 3.0 Audio Tiny Spoken Response","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"s2s","mode":"offline","download_id":"ming3_audio_tiny_bf16","default_options":{"voice_id":"US_James","language":"en"}},{"id":"ming3-audio-tts","display_name":"Ming 3.0 Audio Tiny TTS","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"tts","mode":"offline","download_id":"ming3_audio_tiny_bf16","default_options":{"voice_id":"US_James","language":"en"}},{"id":"ming3-audio-clone","display_name":"Ming 3.0 Audio Tiny Clone","family":"ming3_audio","path":"models/Ming-3.0-Audio-Tiny-GGUF","task":"clon","mode":"offline","download_id":"ming3_audio_tiny_bf16","default_options":{"language":"en"},"input_hint_en":"Upload a reference voice. Add its transcript to enable acoustic-prefix conditioning."},{"id":"xtts-v2","display_name":"XTTS v2","family":"xtts_v2","path":"models/XTTS-v2-Q8","task":"tts","mode":"offline","download_id":"xtts_v2_gguf_q8_0","input_hint_en":"Upload a reference voice for multilingual speech synthesis."},{"id":"latentsync","display_name":"LatentSync 1.6 Lip Sync","family":"latentsync","path":"models/LatentSync-1.6-GGUF","task":"gen","mode":"offline","download_id":"latentsync_1_6_q8_0_f16","arena":false,"input_hint_en":"Choose a face video and driving speech audio."},{"id":"apollo","display_name":"Apollo","family":"apollo","path":"models/Apollo-GGUF","task":"s2s","mode":"offline","download_id":"apollo_orig"},{"id":"ast-audioset","display_name":"AST AudioSet","family":"ast_audioset","path":"models/AST-AudioSet-GGUF/ast-audioset-f32.gguf","task":"cls","mode":"offline","download_id":"ast_audioset_f32"},{"id":"audio-flamingo-3","display_name":"Audio Flamingo 3","family":"audio_flamingo","path":"models/Audio-Flamingo-GGUF/audio-flamingo-3-q4_k.gguf","task":"asr","mode":"offline","download_id":"audio_flamingo_3_q4_k","workflow":"analysis"},{"id":"audio-flamingo-next","display_name":"Audio Flamingo Next","family":"audio_flamingo","path":"models/Audio-Flamingo-GGUF/audio-flamingo-next-q4_k.gguf","task":"asr","mode":"offline","download_id":"audio_flamingo_next_q4_k","workflow":"analysis"},{"id":"audio8-tts","display_name":"Audio8 TTS Preview 0.6B (tts 克隆, GGUF Q8)","display_name_en":"Audio8 TTS Preview 0.6B (tts + clone, GGUF Q8)","family":"audio8_tts","path":"models/Audio8-TTS-Preview-0.6B-GGUF","task":"tts","mode":"offline","download_id":"audio8_tts_preview_0_6b_q8_0","min_vram_gb":4,"input_hint":"**Audio8 TTS Preview 0.6B**:多语种 TTS / 零样本克隆(支持 yue/zh/nl/en/fr/de/it/ja/ko/pl/es/auto);上传参考音色+参考文本即克隆,留空为普通 TTS;长文本自动分句。","input_hint_en":"**Audio8 TTS Preview 0.6B**: multilingual TTS and zero-shot clone (yue/zh/nl/en/fr/de/it/ja/ko/pl/es/auto). Upload a reference voice + transcript to clone; leave empty for plain TTS. Long text is chunked automatically."},{"id":"audiosr","display_name":"AudioSR (audio super-resolution)","family":"audiosr","path":"models/AudioSR-GGUF/audiosr-basic-f32.gguf","task":"s2s","mode":"offline","download_id":"audiosr_basic_f32","min_vram_gb":8,"input_hint_en":"**AudioSR**: upload a source audio file to generate a super-resolved output."},{"id":"auk-edit","display_name":"AuK (audio editing, community)","family":"auk","path":"models/AuK-Base-and-Flash-GGUF","task":"gen","mode":"offline","arena":false,"download_id":"auk_base_f32","default_text":"Remove the background noise and make the voice clearer.","min_vram_gb":20,"input_hint_en":"**AuK audio editing** (community): upload source audio and describe the requested speech, singing, acoustic, paralinguistic, enhancement, or separation edit."},{"id":"auk-tts","display_name":"AuK (speech generation, community)","family":"auk","path":"models/AuK-Base-and-Flash-GGUF","task":"tts","mode":"offline","arena":false,"download_id":"auk_base_f32","default_text":"The next train leaves in ten minutes.","min_vram_gb":20,"input_hint_en":"**AuK** (community): enter text plus a voice description, or provide an optional reference voice for zero-shot speech generation. Select compatible Base or AuK-Flash, Qwen, and VAE components before loading."},{"id":"breeze-tts-clone","display_name":"BreezeTTS 2 Clone","family":"breeze_tts","path":"models/Breeze-TTS-2-GGUF/breeze-tts-2-q8_0.gguf","task":"clon","mode":"offline","download_id":"breeze_tts_2_q8_0","min_vram_gb":8,"input_hint_en":"**BreezeTTS 2 Clone**: upload a reference voice and provide the matching reference transcript."},{"id":"breeze-tts","display_name":"BreezeTTS 2 VoiceDesign","family":"breeze_tts","path":"models/Breeze-TTS-2-GGUF/breeze-tts-2-q8_0.gguf","task":"vdes","mode":"offline","download_id":"breeze_tts_2_q8_0","min_vram_gb":8,"input_hint_en":"**BreezeTTS 2 VoiceDesign**: enter text and describe the target voice in Model parameters. No reference voice is required."},{"id":"bs-roformer","display_name":"BS-RoFormer (sep 人声分离)","display_name_en":"BS-RoFormer (vocal separation)","family":"bs_roformer","path":"models/BS-RoFormer-ep368-GGUF/bs-roformer-ep368-q8_0.gguf","task":"sep","mode":"offline","download_id":"bs_roformer_q8_0","min_vram_gb":3},{"id":"canary-asr","display_name":"Canary 180M Flash","family":"canary_asr","path":"models/Canary-180M-Flash-GGUF","task":"asr","mode":"offline","download_id":"canary_180m_flash_f32"},{"id":"ced-base","display_name":"CED Base","family":"ced","path":"models/CED-GGUF/ced-base-f32.gguf","task":"cls","mode":"offline","download_id":"ced_base_f32"},{"id":"ced-mini","display_name":"CED Mini","family":"ced","path":"models/CED-GGUF/ced-mini-f32.gguf","task":"cls","mode":"offline","download_id":"ced_mini_f32"},{"id":"ced-small","display_name":"CED Small","family":"ced","path":"models/CED-GGUF/ced-small-f32.gguf","task":"cls","mode":"offline","download_id":"ced_small_f32"},{"id":"ced-tiny","display_name":"CED Tiny","family":"ced","path":"models/CED-GGUF/ced-tiny-f32.gguf","task":"cls","mode":"offline","download_id":"ced_tiny_f32"},{"id":"chatterbox-vc","display_name":"Chatterbox (vc 声音转换)","display_name_en":"Chatterbox (voice conversion)","family":"chatterbox","path":"models/chatterbox","task":"vc","mode":"offline","download_id":"chatterbox","min_vram_gb":12,"input_hint":"**Chatterbox VC**:上传源语音和目标音色参考;模型保留源语音内容,将说话人音色转换为目标音色,输出 24kHz 单声道。","input_hint_en":"**Chatterbox VC**: upload source speech and a target-voice reference. It preserves the source content and converts the speaker identity; output is 24 kHz mono."},{"id":"chatterbox","display_name":"Chatterbox (voice clone)","family":"chatterbox","path":"models/chatterbox","task":"clon","mode":"offline","download_id":"chatterbox","min_vram_gb":12},{"id":"chatterbox-turbo","display_name":"Chatterbox Turbo (tts)","family":"chatterbox_turbo","path":"models/Chatterbox-Turbo-GGUF/chatterbox-turbo-q8_0.gguf","task":"tts","mode":"offline","download_id":"chatterbox_turbo_q8_0","min_vram_gb":4,"input_hint_en":"**Chatterbox Turbo**: fast English TTS with the built-in voice. No reference voice is required."},{"id":"citrinet-asr","display_name":"Citrinet ASR (asr)","family":"citrinet_asr","path":"models/citrinet","task":"asr","mode":"offline","download_id":"citrinet_asr","min_vram_gb":2},{"id":"cohere-asr","display_name":"Cohere Transcribe","family":"cohere_asr","path":"models/Cohere-Transcribe-GGUF","task":"asr","mode":"offline","download_id":"cohere_transcribe_bf16"},{"id":"r2t2-asr","display_name":"Confucius4-R2T2 (asr, 实时流式)","display_name_en":"Confucius4-R2T2 (asr, real-time streaming)","family":"confucius4_r2t2","path":"models/Confucius4-R2T2-GGUF/r2t2-q8_0.gguf","task":"asr","mode":"offline","download_id":"confucius4_r2t2_q8_0","min_vram_gb":5,"input_hint":"**Confucius4-R2T2**:网易有道实时流式 ASR,Qwen3-ASR-1.7B 微调,LSP 稳定前缀解码;提交文本永不回改,支持 80ms-2s 分块;Q8_0 GGUF(2.3G,自包含单文件),也支持 F16。","input_hint_en":"**Confucius4-R2T2**: NetEase Youdao real-time streaming ASR, a Qwen3-ASR 1.7B fine-tune with Longest Stable Prefix decoding. Committed text is never revised; 80 ms-2 s chunks; Q8_0 GGUF (2.3 GB, self-contained single file), F16 also available."},{"id":"confucius4-tts","display_name":"Confucius4-TTS (voice clone, GGUF)","display_name_en":"Confucius4-TTS (voice clone, GGUF)","family":"confucius4_tts","path":"models/Confucius4-TTS-GGUF","task":"clon","mode":"offline","download_id":"confucius4_tts_orig","min_vram_gb":8,"input_hint":"**Confucius4-TTS**:需要参考音色;当前中文/英语路径更可靠,非中英语种仍在验证中。","input_hint_en":"**Confucius4-TTS**: requires a reference voice. Chinese/English are the most reliable paths; other languages are still being validated."},{"id":"controlfoley","display_name":"ControlFoley (Foley/SFX)","family":"controlfoley","path":"models/ControlFoley-GGUF/controlfoley-large-44k-q8_0.gguf","task":"gen","mode":"offline","download_id":"controlfoley_large_44k_q8_0","min_vram_gb":12,"request_options":["video"],"input_hint_en":"**ControlFoley**: Foley generation from text, video, text+video, audio+video, or video only. Upload video in the Video field; upload source audio for AC-V2A."},{"id":"cosyvoice3","display_name":"CosyVoice3 Clone","family":"cosyvoice3","path":"models/CosyVoice3-GGUF/cosyvoice3-q8_0.gguf","task":"clon","mode":"offline","download_id":"cosyvoice3_q8_0","min_vram_gb":8,"input_hint_en":"**CosyVoice3 Clone**: upload a reference voice and provide the matching reference transcript. Use `template_name` for zero-shot or cross-lingual requests."},{"id":"cosyvoice3-instruct","display_name":"CosyVoice3 Instruct","family":"cosyvoice3","path":"models/CosyVoice3-GGUF/cosyvoice3-q8_0.gguf","task":"tts","mode":"offline","download_id":"cosyvoice3_q8_0","min_vram_gb":8,"input_hint_en":"**CosyVoice3 Instruct**: upload a reference voice, provide its transcript, and set `template_name=instruct` with an instruction."},{"id":"crisperwhisper","display_name":"CrisperWhisper 2.0 Large","family":"crisperwhisper","path":"models/CrisperWhisper2.0-GGUF/crisperwhisper-2-large-q8_0.gguf","task":"asr","mode":"offline","download_id":"crisperwhisper_2_large_q8_0"},{"id":"crisperwhisper-align","display_name":"CrisperWhisper 2.0 Large (alignment)","family":"crisperwhisper","path":"models/CrisperWhisper2.0-GGUF/crisperwhisper-2-large-q8_0.gguf","task":"align","mode":"offline","download_id":"crisperwhisper_2_large_q8_0","workflow":"analysis"},{"id":"deepfilternet2","display_name":"DeepFilterNet2","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/deepfilternet2/deepfilternet2.safetensors","load_options":{"utility":"deepfilternet2"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/deepfilternet2/deepfilternet2.safetensors"},{"id":"dots-tts-meanflow","display_name":"DotTTS MeanFlow (tts + clone)","family":"dots_tts","path":"models/DotTTS-MF-GGUF","task":"tts","mode":"offline","download_id":"dots_tts_mf_q8_0","min_vram_gb":8},{"id":"dots-tts-soar","display_name":"DotTTS SOAR (tts + clone)","family":"dots_tts","path":"models/DotTTS-SOAR-GGUF","task":"tts","mode":"offline","download_id":"dots_tts_soar_q8_0","min_vram_gb":8},{"id":"dramabox","display_name":"DramaBox (tts 克隆, GGUF Q8)","display_name_en":"DramaBox (tts + clone, GGUF Q8)","family":"dramabox","path":"models/DramaBox-GGUF","task":"tts","mode":"offline","download_id":"dramabox_q8_0","min_vram_gb":16,"input_hint":"**DramaBox**:英语 TTS / voice clone;上传参考音色可克隆,长文本建议写清楚说话人描述。","input_hint_en":"**DramaBox**: English TTS and voice clone. Upload a reference voice to clone; for long text, keep speaker wording explicit."},{"id":"echo-tts","display_name":"Echo-TTS (voice clone)","family":"echo_tts","path":"models/Echo-TTS-GGUF","task":"clon","mode":"offline","download_id":"echo_tts_q8_0","min_vram_gb":8,"input_hint_en":"**Echo-TTS**: English zero-shot cloning at 44.1 kHz. Upload a reference voice -- no transcript needed. Output is CC-BY-NC-SA and may not be used commercially."},{"id":"firered-stream-vad","display_name":"FireRed Stream-VAD","family":"firered_vad","path":"models/FireRedVAD-GGUF/firered-stream-vad-f32.gguf","task":"vad","mode":"offline","download_id":"firered_stream_vad_f32"},{"id":"firered-vad","display_name":"FireRed VAD","family":"firered_vad","path":"models/FireRedVAD-GGUF/firered-vad-f32.gguf","task":"vad","mode":"offline","download_id":"firered_vad_f32"},{"id":"firered-audio-asr","display_name":"FireRedAudio (ASR / audio QA)","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"asr","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio ASR**: upload audio, then use the text box as the transcription or audio-understanding instruction."},{"id":"firered-audio-acoustic-edit","display_name":"FireRedAudio Acoustic Edit","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"gen","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio Acoustic Edit**: upload source audio and use a trained acoustic instruction such as `shift the pitch by 3 steps`."},{"id":"firered-audio-tts","display_name":"FireRedAudio Clone","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"clon","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio Clone**: upload a reference voice and provide the matching reference transcript. For no-reference voice design, use the VoiceDesign entry."},{"id":"firered-audio-semantic-edit","display_name":"FireRedAudio Semantic Edit","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"gen","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio Semantic Edit**: upload source audio and describe the content edit in Model parameters."},{"id":"firered-audio-vdesign","display_name":"FireRedAudio VoiceDesign","family":"firered_audio","path":"models/FireRedAudio-GGUF/firered-audio-q8_0.gguf","task":"vdes","mode":"offline","download_id":"firered_audio_q8_0","min_vram_gb":10,"input_hint_en":"**FireRedAudio VoiceDesign**: describe the target voice in Voice description, then enter the text to synthesize."},{"id":"fireredtts3-base","display_name":"FireRedTTS3 Base (voice clone)","family":"fireredtts3","path":"models/FireRedTTS3-Base-GGUF/fireredtts3-base-q8_0.gguf","task":"clon","mode":"offline","download_id":"fireredtts3_base_q8_0","min_vram_gb":8,"input_hint_en":"**FireRedTTS3 Base**: zero-shot voice cloning. Upload a reference voice and provide the matching reference transcript."},{"id":"fireredtts3-instruct","display_name":"FireRedTTS3 Instruct Clone","family":"fireredtts3","path":"models/FireRedTTS3-Instruct-GGUF/fireredtts3-instruct-q8_0.gguf","task":"clon","mode":"offline","download_id":"fireredtts3_instruct_q8_0","min_vram_gb":8,"input_hint_en":"**FireRedTTS3 Instruct Clone**: official Instruct `generate_tts` path. Upload a reference voice and provide the matching reference transcript. For no-reference voice design, use the VoiceDesign entry."},{"id":"fireredtts3-instruct-vdesign","display_name":"FireRedTTS3 Instruct VoiceDesign","family":"fireredtts3","path":"models/FireRedTTS3-Instruct-GGUF/fireredtts3-instruct-q8_0.gguf","task":"vdes","mode":"offline","download_id":"fireredtts3_instruct_q8_0","min_vram_gb":8,"input_hint_en":"**FireRedTTS3 VoiceDesign**: describe the target voice in Voice description, then enter the text to synthesize."},{"id":"fish-drama3","display_name":"Fish Audio Drama 3","family":"fish_drama3","path":"models/Drama-3-GGUF/drama-3-backbone-4bit-experts-Q4_K_S.gguf","task":"tts","mode":"offline","arena":false,"download_id":"fish_drama3_q4_backbone","min_vram_gb":8,"session_options":{"fish_drama3.disk_experts":"true","fish_drama3.pin_experts":"true","fish_drama3.expert_cache_size":"8","fish_drama3.cpu_expert_layers":"0","fish_drama3.codec_backend":"same","fish_drama3.context_length":"4096"},"request_options":["reference_text","multi_reference_cond","text_chunk_size","temperature","top_p","top_k","max_tokens","seed"]},{"id":"fish-drama3-small","display_name":"Fish Audio Drama3-small","family":"fish_drama3","path":"models/Drama3-small-GGUF/drama3-small-IQ3_XXS.gguf","task":"tts","mode":"offline","arena":false,"download_id":"fish_drama3_small_iq3_xxs","min_vram_gb":7,"session_options":{"fish_drama3.disk_experts":"true","fish_drama3.pin_experts":"true","fish_drama3.expert_cache_size":"8","fish_drama3.cpu_expert_layers":"0","fish_drama3.codec_backend":"same","fish_drama3.context_length":"4096"}},{"id":"fish-audio-s2-pro","display_name":"Fish Audio S2 Pro (tts 克隆/控制标记, GGUF Q8)","display_name_en":"Fish Audio S2 Pro (tts + clone/control tags, GGUF Q8)","family":"fish_audio","path":"models/Fish-Audio-S2-Pro-GGUF","task":"tts","mode":"offline","download_id":"fish_audio_s2_pro","min_vram_gb":8,"input_hint":"**Fish Audio S2 Pro**:Q8_0 GGUF 包;中英+自动语种;上传参考音色即克隆;正文里可写行内控制标记(如 (laugh))。","input_hint_en":"**Fish Audio S2 Pro**: Q8_0 GGUF package; English/Chinese plus auto language. Upload a reference voice to clone; inline control tags such as (laugh) can be written in the text."},{"id":"flashsr","display_name":"FlashSR","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/flashsr/flashsr.safetensors","load_options":{"utility":"flashsr"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/flashsr/flashsr.safetensors"},{"id":"fun-asr-nano","display_name":"Fun-ASR-Nano 2512 (asr, GGUF Q8)","display_name_en":"Fun-ASR-Nano 2512 (asr, GGUF Q8)","family":"fun_asr_nano","path":"models/Fun-ASR-Nano-2512-GGUF","task":"asr","mode":"offline","download_id":"fun_asr_nano_2512_q8_0","min_vram_gb":4,"input_hint":"**Fun-ASR-Nano**:轻量离线 ASR;支持 auto/中文/英语/日语。","input_hint_en":"**Fun-ASR-Nano**: lightweight offline ASR; supports auto, Chinese, English and Japanese."},{"id":"gigaam-multilingual","display_name":"GigaAM Multilingual","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-multilingual-ctc-f16.gguf","download_id":"gigaam_multilingual_ctc_f16"},{"id":"gigaam-multilingual-large","display_name":"GigaAM Multilingual Large","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-multilingual-large-ctc-f16.gguf","download_id":"gigaam_multilingual_large_ctc_f16"},{"id":"gigaam-v3-ctc","display_name":"GigaAM v3 CTC","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-v3-ctc-f16.gguf","download_id":"gigaam_v3_ctc_f16"},{"id":"gigaam-v3-e2e-ctc","display_name":"GigaAM v3 E2E CTC","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-v3-e2e-ctc-f16.gguf","download_id":"gigaam_v3_e2e_ctc_f16"},{"id":"gigaam-v3-e2e-rnnt","display_name":"GigaAM v3 E2E RNN-T","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-v3-e2e-rnnt-f16.gguf","download_id":"gigaam_v3_e2e_rnnt_f16"},{"id":"gigaam-v3-rnnt","display_name":"GigaAM v3 RNN-T","family":"gigaam_asr","task":"asr","mode":"offline","path":"models/GigaAM-ASR-GGUF/gigaam-v3-rnnt-f16.gguf","download_id":"gigaam_v3_rnnt_f16"},{"id":"glm-tts","display_name":"GLM-TTS (tts 克隆, 社区)","display_name_en":"GLM-TTS (tts + clone, community)","family":"glm_tts","path":"models/GLM-TTS","task":"tts","mode":"offline","download_id":"glm_tts","min_vram_gb":8,"input_hint":"**GLM-TTS**(社区模型):中英 TTS / voice clone;上传参考音色即克隆。","input_hint_en":"**GLM-TTS** (community): Chinese/English TTS and voice clone. Upload a reference voice to clone."},{"id":"gradium-phonon-31m-en","display_name":"Gradium Phonon 31m English (tts)","family":"gradium_phonon","path":"models/phonon-31m-en","task":"tts","mode":"offline","download_id":"gradium_phonon_31m_en_q8_0","min_vram_gb":1},{"id":"granite5asr","display_name":"Granite Speech 5.0 470M TurboCTC (asr)","display_name_en":"Granite Speech 5.0 470M TurboCTC (asr)","family":"granite5asr","path":"models/Granite-Speech-5.0-470M-TurboCTC-GGUF/granite-speech-5.0-470m-turboctc-q8_0.gguf","task":"asr","mode":"offline","download_id":"granite5asr_q8_0","min_vram_gb":4,"input_hint":"**Granite Speech 5.0 TurboCTC**:IBM 470M 英语 ASR;超快 Conformer CTC 转写;支持长音频自动分段与流式模式。","input_hint_en":"**Granite Speech 5.0 TurboCTC**: IBM 470M English ASR with ultra-fast Conformer CTC architecture, supporting long-form audio segmentation and streaming mode."},{"id":"gtcrn-dns3","display_name":"GTCRN DNS3","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/gtcrn/gtcrn_dns3.safetensors","load_options":{"utility":"gtcrn_dns3"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/gtcrn/gtcrn_dns3.safetensors"},{"id":"gtcrn-streaming","display_name":"GTCRN Streaming","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/gtcrn/gtcrn_streaming.safetensors","load_options":{"utility":"gtcrn_streaming"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/gtcrn/gtcrn_streaming.safetensors"},{"id":"gtcrn-vctk","display_name":"GTCRN VCTK","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/gtcrn/gtcrn_vctk.safetensors","load_options":{"utility":"gtcrn_vctk"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/gtcrn/gtcrn_vctk.safetensors"},{"id":"heartmula","display_name":"HeartMuLa 3B (music gen)","family":"heartmula","path":"models/HeartMuLa","task":"gen","mode":"offline","download_id":"heartmula","session_options":{"heartmula.mem_saver":"true"},"min_vram_gb":24},{"id":"higgs-audio-stt","display_name":"Higgs Audio v3 STT (asr, 英语)","display_name_en":"Higgs Audio v3 STT (asr, English)","family":"higgs_audio_stt","path":"models/higgs-audio-v3-stt","task":"asr","mode":"offline","download_id":"higgs_audio_stt","min_vram_gb":8,"input_hint":"**Higgs Audio STT**:英语转写;可在文本框填指令(默认相当于 Transcribe the speech.);离线模式自动切分长音频。","input_hint_en":"**Higgs Audio STT**: English transcription. The text box accepts an instruction; offline mode automatically chunks long audio."},{"id":"higgs-audio-tts","display_name":"Higgs Audio v3 TTS 4B (tts 克隆, GGUF Q8)","display_name_en":"Higgs Audio v3 TTS 4B (tts + clone, GGUF Q8)","family":"higgs_audio_tts","path":"models/Higgs-Audio-v3-TTS-4B-GGUF","task":"tts","mode":"offline","download_id":"higgs_audio_v3_tts_4b","min_vram_gb":6,"input_hint":"**Higgs Audio v3 TTS**:Q8_0 GGUF 包(权重已量化,不用再设 weight_type);上传参考音色即声音克隆,留空用默认音色;长文本自动分段。","input_hint_en":"**Higgs Audio v3 TTS**: Q8_0 GGUF package (already quantized — no weight_type needed). Upload a reference voice to clone, or leave it empty for the default voice; long text is chunked automatically."},{"id":"htdemucs","display_name":"HTDemucs (sep 音源分离)","display_name_en":"HTDemucs (source separation)","family":"htdemucs","path":"models/htdemucs","task":"sep","mode":"offline","download_id":"htdemucs","min_vram_gb":3},{"id":"htdemucs_6stems","display_name":"HTDemucs 6-stem (sep 音源分离)","display_name_en":"HTDemucs 6-stem (source separation)","family":"htdemucs_6stems","path":"models/htdemucs_6stems","task":"sep","mode":"offline","download_id":"htdemucs_6stems","min_vram_gb":4},{"id":"hviske-asr","display_name":"Hviske v5.3 (asr, 丹麦语)","display_name_en":"Hviske v5.3 (asr, Danish)","family":"hviske_asr","path":"models/hviske-v5.3","task":"asr","mode":"offline","download_id":"hviske_asr","min_vram_gb":6,"input_hint":"**Hviske ASR**:丹麦语专用;模型侧自动分段。","input_hint_en":"**Hviske ASR**: dedicated Danish transcription with automatic model-side segmentation."},{"id":"hviske-v6","display_name":"Hviske v6 (Danish ASR)","family":"hviske_asr_v6","path":"models/Hviske-v6-GGUF/hviske-v6-bf16.gguf","task":"asr","mode":"offline","download_id":"hviske_asr_v6_bf16"},{"id":"index-echo-2b","display_name":"Index-Echo S2TT 2B","family":"index_echo","path":"models/Index-Echo-S2TT-GGUF/index-echo-s2tt-2b-orig.gguf","task":"asr","mode":"offline","download_id":"index_echo_s2tt_2b_orig"},{"id":"index-echo-9b","display_name":"Index-Echo S2TT 9B","family":"index_echo","path":"models/Index-Echo-S2TT-GGUF/index-echo-s2tt-9b-orig.gguf","task":"asr","mode":"offline","download_id":"index_echo_s2tt_9b_orig"},{"id":"index-tts2","display_name":"IndexTTS2 (tts 中英克隆+情感)","display_name_en":"IndexTTS2 (tts, zh/en clone + emotion)","family":"index_tts2","path":"models/IndexTTS-2","task":"tts","mode":"offline","download_id":"index_tts2","min_vram_gb":8},{"id":"index-tts2.5","display_name":"IndexTTS2.5 (tts 多语种克隆+情感, GGUF Q8)","display_name_en":"IndexTTS2.5 (tts, zh/en/ja/es/ar clone + emotion, GGUF Q8)","family":"index_tts2","path":"models/IndexTTS2.5-GGUF","task":"tts","mode":"offline","download_id":"index_tts2_5_q8_0","min_vram_gb":8,"input_hint":"**IndexTTS2.5**:中/英/日/西/阿零样本克隆;上传参考音色即克隆;可在『其它参数(JSON)』里传 `lang`(默认 auto:含汉字按中文,否则按英文)与情感选项。许可证为 bilibili Model Use License(非 OSI),商用前请确认条款。","input_hint_en":"**IndexTTS2.5**: zero-shot cloning in zh/en/ja/es/ar. Upload a reference voice to clone; pass `lang` (default auto: zh when the text contains Han characters, otherwise en) and emotion options through the JSON box. Weights are under the bilibili Model Use License (not OSI-approved) — check terms before commercial use."},{"id":"inflect-v2","display_name":"Inflect Micro v2 (tts 英语, 社区)","display_name_en":"Inflect Micro v2 (en tts, community)","family":"inflect_v2","path":"models/Inflect-Micro-v2","task":"tts","mode":"offline","download_id":"inflect_micro_v2","min_vram_gb":2,"input_hint":"**Inflect Micro v2**(社区模型):英语离线 TTS;Micro 是默认包,Nano 可通过模型管理器另装后手动选择路径。","input_hint_en":"**Inflect Micro v2** (community): English offline TTS. Micro is the default package; Nano can be installed separately and selected manually."},{"id":"irodori-tts-v3-500m","display_name":"Irodori-TTS 500M v3 (tts 日语)","display_name_en":"Irodori-TTS 500M v3 (ja tts)","family":"irodori_tts","path":"models/Irodori-TTS-500M-v3-GGUF","task":"tts","mode":"offline","download_id":"irodori_tts_500m_v3_q8_0","min_vram_gb":4},{"id":"irodori-tts-v3-vdesign","display_name":"Irodori-TTS 600M v3 VoiceDesign (vdes 日语)","display_name_en":"Irodori-TTS 600M v3 VoiceDesign (ja vdes)","family":"irodori_tts","path":"models/Irodori-TTS-600M-v3-VoiceDesign-GGUF","task":"vdes","mode":"offline","download_id":"irodori_tts_600m_v3_voicedesign_q8_0","min_vram_gb":4,"input_hint":"**Irodori-TTS v3 VoiceDesign**(日语):『音色描述』用日语 caption 描述音色(如「落ち着いた大人の男性。深く響く声。」),文本填要念的日语内容,无需参考音频。","input_hint_en":"**Irodori-TTS v3 VoiceDesign**: provide a Japanese voice caption and Japanese synthesis text. No reference recording is required."},{"id":"irodori-tts","display_name":"Irodori-TTS v4.1 Small (tts 日语, GGUF Q8)","display_name_en":"Irodori-TTS v4.1 Small (ja tts, GGUF Q8)","family":"irodori_tts","path":"models/Irodori-TTS-v4-Small-GGUF","task":"tts","mode":"offline","download_id":"irodori_tts_v4_small_q8_0","min_vram_gb":4,"input_hint":"**Irodori-TTS v4.1 Small**:日语 TTS;可不上传参考音色直接生成,也可上传参考音色进行克隆;可在声音设计页用日语 caption 描述音色。","input_hint_en":"**Irodori-TTS v4.1 Small**: Japanese TTS. Generate without a reference voice, clone from an uploaded reference, or use the voice-design page with a Japanese voice caption."},{"id":"irodori-tts-vdesign","display_name":"Irodori-TTS v4.1 Small VoiceDesign (vdes 日语, GGUF Q8)","display_name_en":"Irodori-TTS v4.1 Small VoiceDesign (ja vdes, GGUF Q8)","family":"irodori_tts","path":"models/Irodori-TTS-v4-Small-GGUF","task":"vdes","mode":"offline","download_id":"irodori_tts_v4_small_q8_0","min_vram_gb":4,"input_hint":"**Irodori-TTS v4.1 VoiceDesign**(日语):『音色描述』用日语 caption 描述音色(如「落ち着いた大人の男性。深く響く声。」),文本填要念的日语内容,无需参考音频。","input_hint_en":"**Irodori-TTS v4.1 VoiceDesign**: provide a Japanese voice caption and Japanese synthesis text. No reference recording is required."},{"id":"kitten-tts2","display_name":"Kitten TTS 2","family":"kitten_tts2","path":"models/kitten-tts2/kitten-tts2-q8-v2-multilingual.gguf","task":"tts","mode":"offline","download_id":"kitten_tts2_q8_v2","min_vram_gb":7,"input_hint":"Multilingual speech: choose a matching language preset or supply a reference clip and its transcript. Write numbers and abbreviations as spoken words."},{"id":"kitten-tts2-20261021","display_name":"Kitten TTS 2 (2026-10-21)","family":"kitten_tts2","path":"models/KittenTTS2-GGUF","task":"tts","mode":"offline","download_id":"kitten_tts2_20261021_q8_0","input_hint_en":"Updated multilingual checkpoint. Choose Q8 or Q4, then a voice preset or reference recording."},{"id":"kitten-tts","display_name":"KittenTTS Mini 0.8 (tts 英语, 社区)","display_name_en":"KittenTTS Mini 0.8 (en tts, community)","family":"kitten_tts","path":"models/KittenTTS-GGUF/kitten-tts-mini-0.8-orig.gguf","task":"tts","mode":"offline","download_id":"kitten_tts_mini_0_8_orig","min_vram_gb":1,"input_hint":"**KittenTTS Mini 0.8**(社区模型):轻量英语 TTS,内置八种音色,不需要上传参考音频。","input_hint_en":"**KittenTTS Mini 0.8** (community): lightweight English TTS with eight built-in voices; no reference audio is needed."},{"id":"kokoro-tts","display_name":"Kokoro 82M (tts, preset voices)","family":"kokoro_tts","path":"models/Kokoro-82M-GGUF/kokoro-82m-q8_0.gguf","task":"tts","mode":"offline","download_id":"kokoro_82m_q8_0","min_vram_gb":1,"input_hint_en":"**Kokoro 82M**: multilingual TTS with built-in preset voices. Choose a language and voice; no reference audio is needed."},{"id":"kroko-asr","display_name":"Kroko Community ASR (asr, GGUF Q8)","display_name_en":"Kroko Community ASR (asr, GGUF Q8)","family":"kroko_asr","path":"models/Kroko-ASR-GGUF","task":"asr","mode":"offline","download_id":"kroko_asr_community_q8_0","min_vram_gb":4,"input_hint":"**Kroko Community ASR**:GGUF Q8 包;离线转写,支持时间戳。","input_hint_en":"**Kroko Community ASR**: GGUF Q8 package for offline transcription with timestamps."},{"id":"kugelaudio","display_name":"KugelAudio-0-Open","family":"kugelaudio","path":"models/KugelAudio-0-Open-GGUF/kugelaudio-0-open-q8_0.gguf","task":"tts","mode":"offline","download_id":"kugelaudio_0_open_q8_0","builtin_voices":["default","clear","english_female","english_male"],"default_voice":"default"},{"id":"lfm2-audio-asr","display_name":"LFM2.5-Audio 1.5B (asr, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-GGUF","task":"asr","mode":"offline","download_id":"lfm2_audio_1_5b_q8_0","min_vram_gb":4,"input_hint_en":"**LFM2.5-Audio** (community): Liquid AI\'s English speech recognition from Liquid\'s published GGUFs. Audio longer than 30 s is split at pauses. Leave language empty."},{"id":"lfm2-audio-s2s","display_name":"LFM2.5-Audio 1.5B (s2s, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-GGUF","task":"s2s","mode":"offline","download_id":"lfm2_audio_1_5b_q8_0","min_vram_gb":4,"builtin_voices":[],"default_voice":"","input_hint_en":"**LFM2.5-Audio** (community): Liquid AI\'s English spoken chat from Liquid\'s published GGUFs. Record or choose a spoken question under Source audio and press Run: the reply streams in as speech and text, and each Run continues the conversation until New conversation. Replies use liquid-audio\'s system prompt, `Respond with interleaved text and audio.`"},{"id":"lfm2-audio-tts","display_name":"LFM2.5-Audio 1.5B (tts, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-GGUF","task":"tts","mode":"offline","download_id":"lfm2_audio_1_5b_q8_0","min_vram_gb":4,"default_text":"The next train leaves in ten minutes.","input_hint_en":"**LFM2.5-Audio** (community): Liquid AI\'s English speech from Liquid\'s published GGUFs, with four built-in voices (US or UK, male or female); no reference audio."},{"id":"lfm2-audio-jp-asr","display_name":"LFM2.5-Audio 1.5B JP (asr, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-JP-GGUF","task":"asr","mode":"offline","download_id":"lfm2_audio_1_5b_jp_q8_0","min_vram_gb":4,"input_hint_en":"**LFM2.5-Audio JP** (community): Liquid AI\'s Japanese speech recognition from Liquid\'s published GGUFs. Audio longer than 30 s is split at pauses. Leave language empty."},{"id":"lfm2-audio-jp-s2s","display_name":"LFM2.5-Audio 1.5B JP (s2s, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-JP-GGUF","task":"s2s","mode":"offline","download_id":"lfm2_audio_1_5b_jp_q8_0","min_vram_gb":4,"builtin_voices":[],"default_voice":"","input_hint_en":"**LFM2.5-Audio JP** (community): Liquid AI\'s Japanese spoken chat from Liquid\'s published GGUFs. Record or choose a spoken question under Source audio and press Run: the reply streams in as speech and text, and each Run continues the conversation until New conversation. Replies use liquid-audio\'s system prompt, `Respond with interleaved text and audio.`"},{"id":"lfm2-audio-jp-tts","display_name":"LFM2.5-Audio 1.5B JP (tts, community)","family":"lfm2_audio","path":"models/LFM2.5-Audio-1.5B-JP-GGUF","task":"tts","mode":"offline","download_id":"lfm2_audio_1_5b_jp_q8_0","min_vram_gb":4,"builtin_voices":[],"default_voice":"","default_text":"今日は天気がいいので、公園まで散歩に行きました。","input_hint_en":"**LFM2.5-Audio JP** (community): Liquid AI\'s Japanese speech from Liquid\'s published GGUFs, in the checkpoint\'s one voice; no reference audio."},{"id":"liveavatar","display_name":"LiveAvatar (audio to video, 社区)","display_name_en":"LiveAvatar (audio to video, community)","family":"liveavatar","path":"models/LiveAvatar-GGUF","task":"gen","mode":"offline","download_id":"liveavatar_nvfp4_lora","default_text":"A cheerful green cyclops baker in a warm rustic bakery, smiling and speaking to the camera while holding a tray of freshly baked pies. High-quality animated film style, expressive face, natural gestures, warm cinematic lighting.","min_vram_gb":24,"input_hint":"**LiveAvatar**(社区模型):上传驱动音频和参考人物图像,再输入场景描述以生成动画视频。","input_hint_en":"**LiveAvatar** (community): upload driving audio and a reference portrait, then describe the subject and scene to generate an animated video."},{"id":"outetts","display_name":"Llama-OuteTTS 1.0 1B (tts 克隆, 社区)","display_name_en":"Llama-OuteTTS 1.0 1B (tts + clone, community)","family":"outetts","path":"models/Llama-OuteTTS-1.0-1B","task":"tts","mode":"offline","download_id":"outetts_1_0_1b","min_vram_gb":4,"input_hint":"**OuteTTS 1.0 1B**(社区模型):23 种语言,DAC 编解码;上传参考音色即克隆。","input_hint_en":"**OuteTTS 1.0 1B** (community): 23 languages, IBM DAC codec. Upload a reference voice to clone."},{"id":"magpie-tts","display_name":"MagpieTTS Multilingual 357M v2607 (tts, preset voices)","display_name_en":"MagpieTTS Multilingual 357M v2607 (tts, preset voices)","family":"magpie_tts","path":"models/MagpieTTS-Multilingual-357M-GGUF","task":"tts","mode":"offline","download_id":"magpie_tts_q8_0","min_vram_gb":4,"input_hint":"**MagpieTTS**:多语种离线 TTS;使用打包 speaker map 里的 `voice_id`,不需要上传参考音频。当前 GGUF 包不包含日语 phoneme 表,因此日语路径不可用。","input_hint_en":"**MagpieTTS**: multilingual offline TTS with packaged speaker prompts selected by `voice_id`; no reference upload is needed. The current GGUF package does not include the Japanese phoneme table, so Japanese is not available."},{"id":"marblenet-vad","display_name":"MarbleNet VAD (vad, bundled)","family":"marblenet_vad","path":"assets/framework/models/marblenet_vad","task":"vad","mode":"offline","min_vram_gb":1},{"id":"maya1","display_name":"Maya1","family":"maya1","task":"tts","mode":"offline","path":"models/Maya1-GGUF/maya1-q8_0.gguf","download_id":"maya1_q8_0","arena":false},{"id":"meanvc2","display_name":"MeanVC2 (voice conversion)","display_name_en":"MeanVC2 (voice conversion)","family":"meanvc2","path":"models/MeanVC2-GGUF/meanvc2-120ms-40ms-fp32.gguf","task":"vc","mode":"offline","download_id":"meanvc2_120ms_40ms_f32","min_vram_gb":6,"input_hint":"**MeanVC2**:上传源语音和目标音色参考;默认 120 ms / 40 ms checkpoint 使用 F32 GGUF。","input_hint_en":"**MeanVC2**: upload source speech and a target-voice reference. The default 120 ms / 40 ms checkpoint uses F32 GGUF."},{"id":"mel-band-roformer","display_name":"Mel-Band RoFormer (sep 人声分离)","display_name_en":"Mel-Band RoFormer (vocal separation)","family":"mel_band_roformer","path":"models/mel-roformer-mlx","task":"sep","mode":"offline","download_id":"mel_band_roformer","min_vram_gb":3},{"id":"micro-wake-word","display_name":"microWakeWord (Okay Nabu)","family":"micro_wake_word","path":"models/MicroWakeWord-GGUF/micro-wake-word-okay-nabu-f32.gguf","task":"wake","mode":"offline","download_id":"micro_wake_word_okay_nabu_f32"},{"id":"midashenglm-gen","display_name":"MiDashengLM-Gen (audio generation)","family":"midashenglm_gen","path":"models/MiDashengLM-Gen-GGUF/midashenglm-gen-q8_0.gguf","task":"gen","mode":"offline","download_id":"midashenglm_gen_q8_0","min_vram_gb":8,"input_hint_en":"**MiDashengLM-Gen**: text-conditioned audio generation. The duration field controls the generation budget."},{"id":"minimax-h3","display_name":"MiniMax-H3 Q4 (sound generation)","family":"minimax_h3","path":"models/MiniMax-H3-Q4-GGUF/dit.gguf","task":"gen","mode":"offline","download_id":"minimax_h3","min_vram_gb":20,"default_options":{"num_inference_steps":12,"height":32,"width":32,"num_frames":241,"guidance_scale":1,"dit_acceleration":"none","return_video":false},"input_hint_en":"MiniMax-H3 uses a joint audio/video DiT. The default Q4 DiT is the quality-first choice; the optional CUDA-only INT8 ConvRot DiT trades slightly more VRAM for higher speed. Native Studio uses 12 denoising steps, a 32x32 latent canvas, quality-first full-DiT execution, and disables video decoding for practical audio-only generation on a 24 GB GPU."},{"id":"minimax-music3","display_name":"MiniMax-Music3 (song gen)","family":"minimax_music3","path":"models/MiniMax-Music3-GGUF","task":"gen","mode":"offline","download_id":"minimax_music3_q4_0","min_vram_gb":12},{"id":"miocodec","display_name":"MioCodec (vc; codec dependency)","family":"miocodec","path":"models/MioCodec-25Hz-44.1kHz-v2","task":"vc","mode":"offline","download_id":"miocodec_25hz_44k_v2","min_vram_gb":3},{"id":"miotts","display_name":"MioTTS 1.7B (tts; needs MioCodec)","family":"miotts","path":"models/MioTTS-1.7B","task":"tts","mode":"offline","download_id":"miotts_1_7b","min_vram_gb":8},{"id":"moonshine-asr-medium","display_name":"Moonshine Streaming Medium (asr, GGUF Q8)","display_name_en":"Moonshine Streaming Medium (asr, GGUF Q8)","family":"moonshine_asr","path":"models/Moonshine-Streaming-GGUF/moonshine-streaming-medium-q8_0.gguf","task":"asr","mode":"offline","download_id":"moonshine_streaming_medium_q8_0","min_vram_gb":2,"input_hint":"**Moonshine Streaming Medium**:英语 ASR,GGUF Q8 包;支持离线与流式模式。","input_hint_en":"**Moonshine Streaming Medium**: English ASR GGUF Q8 package with offline and streaming support."},{"id":"moonshine-asr-small","display_name":"Moonshine Streaming Small (asr, GGUF Q8)","display_name_en":"Moonshine Streaming Small (asr, GGUF Q8)","family":"moonshine_asr","path":"models/Moonshine-Streaming-GGUF/moonshine-streaming-small-q8_0.gguf","task":"asr","mode":"offline","download_id":"moonshine_streaming_small_q8_0","min_vram_gb":2,"input_hint":"**Moonshine Streaming Small**:英语 ASR,GGUF Q8 包;支持离线与流式模式。","input_hint_en":"**Moonshine Streaming Small**: English ASR GGUF Q8 package with offline and streaming support."},{"id":"moonshine-asr-tiny","display_name":"Moonshine Streaming Tiny (asr, GGUF Q8)","display_name_en":"Moonshine Streaming Tiny (asr, GGUF Q8)","family":"moonshine_asr","path":"models/Moonshine-Streaming-GGUF/moonshine-streaming-tiny-q8_0.gguf","task":"asr","mode":"offline","download_id":"moonshine_streaming_tiny_q8_0","min_vram_gb":1,"input_hint":"**Moonshine Streaming Tiny**:英语 ASR,轻量 GGUF Q8 包;支持离线与流式模式。","input_hint_en":"**Moonshine Streaming Tiny**: lightweight English ASR GGUF Q8 package with offline and streaming support."},{"id":"moss-transcribe-diarize","display_name":"MOSS-Transcribe-Diarize","family":"moss_transcribe_diarize","path":"models/MOSS-Transcribe-Diarize-GGUF","task":"asr","mode":"offline","download_id":"moss_transcribe_diarize_bf16"},{"id":"moss-tts-v15","display_name":"MOSS-TTS v1.5 8B (tts 克隆, 社区)","display_name_en":"MOSS-TTS v1.5 8B (tts + clone, community)","family":"moss_tts_v15","path":"models/MOSS-TTS-v1.5-GGUF/moss_tts_v15_q8_0_codec_f16.gguf","task":"tts","mode":"offline","download_id":"moss_tts_v15_q8_0_codec_f16","min_vram_gb":18,"input_hint":"**MOSS-TTS v1.5 8B**(社区模型):中英 TTS;上传短参考音频进行声音克隆,留空则使用模型生成的音色。Q8 克隆约需 18 GB 显存。","input_hint_en":"**MOSS-TTS v1.5 8B** (community): English/Chinese TTS. Upload a short reference clip for voice cloning, or leave it empty for a model-generated voice. Q8 cloning needs about 18 GB VRAM."},{"id":"moss-tts-local","display_name":"MOSS-TTS-Local v1.5 (tts)","family":"moss_tts_local","path":"models/MOSS-TTS-Local-Transformer-v1.5","task":"tts","mode":"offline","download_id":"moss_tts_local_v1_5","min_vram_gb":8},{"id":"moss-tts-nano","display_name":"MOSS-TTS-Nano 100M (tts)","family":"moss_tts_nano","path":"models/MOSS-TTS-Nano-100M","task":"tts","mode":"offline","download_id":"moss_tts_nano_100m","min_vram_gb":2},{"id":"moss-ttsd","display_name":"MOSS-TTSD","family":"moss_ttsd","task":"tts","mode":"offline","path":"models/MOSS-TTSD-GGUF/moss_ttsd_q8_0_codec_f16.gguf","download_id":"moss_ttsd_q8_0_codec_f16","arena":false,"default_text":"[S1] Hello, how are you? [S2] I am doing well, thank you."},{"id":"moss-voicegen","display_name":"MOSS-VoiceGenerator","family":"moss_voicegen","task":"vdes","mode":"offline","path":"models/MOSS-VoiceGenerator-GGUF/moss_voicegen_bf16_codec_f16_decode.gguf","download_id":"moss_voicegen_bf16_codec_f16_decode","arena":false},{"id":"mossformer2","display_name":"MossFormer2 (two-speaker separation)","family":"mossformer2","path":"models/MossFormer2-GGUF/mossformer2-ss-16k-f32.gguf","task":"sep","mode":"offline","download_id":"mossformer2_ss_16k_f32"},{"id":"muscriptor-small","display_name":"MuScriptor Small (audio to MIDI)","family":"muscriptor","path":"models/MuScriptor-Small-GGUF","task":"midi","mode":"offline","download_id":"muscriptor_small_f32","min_vram_gb":4},{"id":"nemotron-3-diar","display_name":"Nemotron 3 Diarization","family":"nemotron_3_diar","path":"models/Nemotron-3-Diarization-GGUF/nemotron-3-diarization-bf16.gguf","task":"diar","mode":"offline","download_id":"nemotron_3_diar_bf16","min_vram_gb":2,"input_hint_en":"**Nemotron 3 Diarization**: upload speech audio to produce speaker turns for up to eight speakers. It supports offline and streaming diarization."},{"id":"nemotron-asr","display_name":"Nemotron 3.5 ASR 0.6B (asr, 100+语种)","display_name_en":"Nemotron 3.5 ASR 0.6B (asr, 100+ languages)","family":"nemotron_asr","path":"models/nemotron-3.5-asr-streaming-0.6b","task":"asr","mode":"offline","download_id":"nemotron_asr","min_vram_gb":4,"input_hint":"**Nemotron ASR**:100+ 语种,语种码为 BCP-47(如 en-US / zh-CN),留空=auto;模型自带长音频处理。","input_hint_en":"**Nemotron ASR**: supports more than 100 languages using BCP-47 codes such as en-US or zh-CN. Leave language blank for automatic detection; long audio is handled by the model."},{"id":"neutts-2e","display_name":"NeuTTS 2E (tts, preset voices)","family":"neutts","path":"models/NeuTTS-2E-GGUF","task":"tts","mode":"offline","download_id":"neutts_2e_orig","min_vram_gb":4},{"id":"niagara-asr-19m","display_name":"Niagara ASR 19M (asr)","display_name_en":"Niagara ASR 19M (asr)","family":"niagara_asr","path":"models/Niagara-ASR-GGUF/niagara-19m-batch.en-f32.gguf","task":"asr","mode":"offline","download_id":"niagara_19m_f32","min_vram_gb":1,"input_hint":"**Niagara ASR 19M**:ABR 英语离线 ASR,F32 GGUF 权重。","input_hint_en":"**Niagara ASR 19M**: ABR English offline ASR with F32 GGUF weights."},{"id":"niagara-asr-38m","display_name":"Niagara ASR 38M (asr)","display_name_en":"Niagara ASR 38M (asr)","family":"niagara_asr","path":"models/Niagara-ASR-GGUF/niagara-38m-batch.en-f32.gguf","task":"asr","mode":"offline","download_id":"niagara_38m_f32","min_vram_gb":1,"input_hint":"**Niagara ASR 38M**:ABR 英语离线 ASR,F32 GGUF 权重。","input_hint_en":"**Niagara ASR 38M**: ABR English offline ASR with F32 GGUF weights."},{"id":"omnivoice","display_name":"OmniVoice (tts)","family":"omnivoice","path":"models/OmniVoice","task":"tts","mode":"offline","download_id":"omnivoice","min_vram_gb":10},{"id":"open-wake-word","display_name":"OpenWakeWord (Alexa)","family":"open_wake_word","path":"models/OpenWakeWord-GGUF/open-wake-word-alexa-f32.gguf","task":"wake","mode":"offline","download_id":"open_wake_word_alexa_f32"},{"id":"orukeet","display_name":"Orukeet r3 (asr, Parakeet 微调)","display_name_en":"Orukeet r3 (asr, Parakeet fine-tune)","family":"parakeet_tdt","path":"models/Orukeet-GGUF/orukeet-q8_0.gguf","task":"asr","mode":"offline","download_id":"orukeet_q8_0","min_vram_gb":4,"input_hint":"**Orukeet r3**:Parakeet-TDT 0.6B v3 微调权重,同引擎/同分词器;CC BY-SA 4.0,留空=自动语种。","input_hint_en":"**Orukeet r3**: fine-tuned Parakeet-TDT 0.6B v3 weights on the same engine and tokenizer; CC BY-SA 4.0, leave language empty for auto."},{"id":"owsm-base","display_name":"OWSM v4 Base 102M","family":"owsm","path":"models/OWSM-GGUF/owsm-v4-base-102m-f32.gguf","task":"asr","mode":"offline","download_id":"owsm_v4_base_102m_f32"},{"id":"owsm-medium","display_name":"OWSM v4 Medium 1B","family":"owsm","path":"models/OWSM-GGUF/owsm-v4-medium-1b-f32.gguf","task":"asr","mode":"offline","download_id":"owsm_v4_medium_1b_f32"},{"id":"owsm-small","display_name":"OWSM v4 Small 370M","family":"owsm","path":"models/OWSM-GGUF/owsm-v4-small-370m-f32.gguf","task":"asr","mode":"offline","download_id":"owsm_v4_small_370m_f32"},{"id":"owsm-ctc","display_name":"OWSM-CTC v4 1B","family":"owsm_ctc","path":"models/OWSM-CTC-GGUF/owsm-ctc-v4-1b-f32.gguf","task":"asr","mode":"offline","download_id":"owsm_ctc_v4_1b_f32"},{"id":"parakeet-tdt","display_name":"Parakeet-TDT 0.6B v3 (asr, 流式)","display_name_en":"Parakeet-TDT 0.6B v3 (asr + streaming)","family":"parakeet_tdt","path":"models/parakeet-tdt-0.6b-v3","task":"asr","mode":"offline","download_id":"parakeet_tdt","min_vram_gb":4,"input_hint":"**Parakeet-TDT**:离线/长音频/流式 ASR;支持多种欧洲语言,留空=自动。","input_hint_en":"**Parakeet-TDT**: offline, long-form and streaming ASR for many European languages; leave language empty for auto."},{"id":"personaplex","display_name":"PersonaPlex 7B v1 (speech conversation)","display_name_en":"PersonaPlex 7B v1 (speech conversation)","family":"personaplex","path":"models/PersonaPlex-GGUF","task":"s2s","mode":"offline","download_id":"personaplex_7b_v1_q4_k","min_vram_gb":8,"request_options":["voice_id","system_prompt","temperature","text_temperature","top_k","text_top_k","do_sample","seed"],"input_hint":"**PersonaPlex**:上传用户语音,模型返回语音回复;文本框可填写 assistant system/persona prompt;`voice_id` 选择打包音色,也可上传参考音色覆盖。","input_hint_en":"**PersonaPlex**: upload user speech and receive a spoken response. The text box provides the assistant system/persona prompt; `voice_id` selects a packaged voice, and an uploaded reference voice overrides it."},{"id":"piper-tts","display_name":"Piper Lessac Medium (tts 英语, 社区)","display_name_en":"Piper Lessac Medium (en tts, community)","family":"piper_tts","path":"models/Piper-TTS-GGUF/piper-en-us-lessac-medium-orig.gguf","task":"tts","mode":"offline","download_id":"piper_lessac_medium_orig","min_vram_gb":1,"input_hint":"**Piper Lessac Medium**(社区模型):轻量英语 TTS,使用打包的 Lessac 音色,不需要上传参考音频。","input_hint_en":"**Piper Lessac Medium** (community): lightweight English TTS with the packaged Lessac voice; no reference audio is needed."},{"id":"plapre","display_name":"Plapre 3 (Danish TTS)","family":"plapre","path":"models/Plapre-3-GGUF/plapre-3-bf16.gguf","task":"tts","mode":"offline","download_id":"plapre_3_bf16","default_text":"Godmorgen. Solen skinner, og vi tager en tur til havnen."},{"id":"pocket-tts","display_name":"Pocket TTS (tts)","family":"pocket_tts","path":"models/pocket-tts","task":"tts","mode":"offline","download_id":"pocket_tts","min_vram_gb":2},{"id":"pulsevad-2.1k","display_name":"PulseVAD 2.1K","family":"pulsevad","path":"models/PulseVAD-GGUF","task":"vad","mode":"offline","download_id":"pulsevad_2_1k_f32"},{"id":"pulsevad-81k","display_name":"PulseVAD 81K","family":"pulsevad","path":"models/PulseVAD-GGUF","task":"vad","mode":"offline","download_id":"pulsevad_81k_f32"},{"id":"qwen3-forced-aligner","display_name":"Qwen3 Forced Aligner (align)","family":"qwen3_forced_aligner","path":"models/Qwen3-ForcedAligner-0.6B","task":"align","mode":"offline","download_id":"qwen3_forced_aligner_0_6b","min_vram_gb":3},{"id":"qwen3-asr","display_name":"Qwen3-ASR 0.6B (asr)","family":"qwen3_asr","path":"models/Qwen3-ASR-0.6B","task":"asr","mode":"offline","download_id":"qwen3_asr_0_6b","min_vram_gb":3},{"id":"qwen3-asr-1.7b","display_name":"Qwen3-ASR 1.7B HF (asr)","family":"qwen3_asr","path":"models/Qwen3-ASR-1.7B-hf","task":"asr","mode":"offline","download_id":"qwen3_asr_1_7b_hf","min_vram_gb":6,"input_hint":"**Qwen3-ASR 1.7B**(HF 原生权重,免转换):精度高于 0.6B;长音频自动分段转写;8G 卡显存偏紧,长音频建议先短段试跑。","input_hint_en":"**Qwen3-ASR 1.7B**: native Hugging Face weights with no conversion required. It is more accurate than the 0.6B model and automatically chunks long audio; test short clips first on an 8 GB GPU."},{"id":"qwen3-tts","display_name":"Qwen3-TTS 0.6B (tts)","family":"qwen3_tts","path":"models/Qwen3-TTS-12Hz-0.6B-Base","task":"tts","mode":"offline","download_id":"qwen3_tts_0_6b_base","min_vram_gb":5},{"id":"qwen3-tts-1.7b","display_name":"Qwen3-TTS 1.7B Base (tts)","family":"qwen3_tts","path":"models/Qwen3-TTS-12Hz-1.7B-Base","task":"tts","mode":"offline","download_id":"qwen3_tts_1_7b_base","min_vram_gb":8},{"id":"qwen3-tts-1.7b-custom","display_name":"Qwen3-TTS 1.7B CustomVoice (tts)","family":"qwen3_tts","path":"models/Qwen3-TTS-12Hz-1.7B-CustomVoice","task":"tts","mode":"offline","download_id":"qwen3_tts_1_7b_custom_voice","min_vram_gb":8},{"id":"qwen3-tts-1.7b-vdesign","display_name":"Qwen3-TTS 1.7B VoiceDesign (vdes)","family":"qwen3_tts","path":"models/Qwen3-TTS-12Hz-1.7B-VoiceDesign","task":"vdes","mode":"offline","download_id":"qwen3_tts_1_7b_voice_design","min_vram_gb":8,"input_hint":"**Qwen3-TTS VoiceDesign**:在『音色描述』里用文字描述想要的声音(如“低沉磁性的中年男声,语速偏慢”),配上要念的文本即可,无需参考音频。","input_hint_en":"**Qwen3-TTS VoiceDesign**: describe the desired voice, then enter the text to synthesize. No reference recording is required."},{"id":"reuse","display_name":"RE-USE","family":"reuse","path":"models/RE-USE-GGUF/reuse-f32.gguf","task":"s2s","mode":"offline","download_id":"reuse_f32","workflow":"enhancement"},{"id":"rnnoise","display_name":"RNNoise","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/rnnoise/rnnoise10Gb_15.safetensors","load_options":{"utility":"rnnoise"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/rnnoise/rnnoise10Gb_15.safetensors"},{"id":"rvc","display_name":"RVC (vc, GGUF F16)","display_name_en":"RVC (voice conversion, GGUF F16)","family":"rvc","path":"models/RVC-GGUF","task":"vc","mode":"offline","download_id":"rvc_f16","min_vram_gb":4,"input_hint":"**RVC**:所选 GGUF 即目标音色;上传源语音即可转换;索引/音高等选项可用 JSON 传。","input_hint_en":"**RVC**: the selected GGUF is the target voice; upload source speech to convert. Index and pitch options can be passed through the JSON box."},{"id":"sam-audio-base","display_name":"SAM Audio Base","family":"sam_audio","task":"s2s","workflow":"separation","mode":"offline","path":"models/SAM-Audio-GGUF/sam-audio-base-q8_0.gguf","download_id":"sam_audio_base_q8_0","default_text":"man speaking"},{"id":"sam-audio-large","display_name":"SAM Audio Large","family":"sam_audio","task":"s2s","workflow":"separation","mode":"offline","path":"models/SAM-Audio-GGUF/sam-audio-large-q8_0.gguf","download_id":"sam_audio_large_q8_0","default_text":"man speaking"},{"id":"sam-audio-small","display_name":"SAM Audio Small","family":"sam_audio","task":"s2s","workflow":"separation","mode":"offline","path":"models/SAM-Audio-GGUF/sam-audio-small-q8_0.gguf","download_id":"sam_audio_small_q8_0","default_text":"man speaking"},{"id":"samsone-99m","display_name":"SAMSONE 99M","family":"samsone","task":"asr","workflow":"analysis","arena":false,"mode":"offline","path":"models/Samsone-GGUF/samsone-99m-q8_0.gguf","download_id":"samsone_99m_q8_0"},{"id":"samsone-134m","display_name":"SAMSONE 134M","family":"samsone","task":"asr","workflow":"analysis","arena":false,"mode":"offline","path":"models/Samsone-GGUF/samsone-134m-q8_0.gguf","download_id":"samsone_134m_q8_0"},{"id":"samsone-356m","display_name":"SAMSONE 356M","family":"samsone","task":"asr","workflow":"analysis","arena":false,"mode":"offline","path":"models/Samsone-GGUF/samsone-356m-q8_0.gguf","download_id":"samsone_356m_q8_0"},{"id":"sanotts","display_name":"sanoTTS voice family (tts, community)","family":"sanotts","path":"models/sanoTTS-heart-nano-GGUF/heart-nano-f32.gguf","task":"tts","mode":"offline","download_id":"sanotts_heart_nano_orig","min_vram_gb":1},{"id":"seed-vc-svc","display_name":"Seed-VC (svc 歌声转换)","display_name_en":"Seed-VC (singing voice conversion)","family":"seed_vc","path":"models/SeedVC-MLX","task":"svc","mode":"offline","download_id":"seed_vc","min_vram_gb":4,"input_hint":"**Seed-VC 歌声转换 (svc)**:上传源歌声 + 目标歌手参考音色,默认 route=v1_svc(带 F0 条件)。可在『其它参数(JSON)』里调 `auto_f0_adjust` / `semi_tone_shift` / `f0_condition`。","input_hint_en":"**Seed-VC singing conversion**: upload source singing and a target-singer reference. The default route is v1_svc with F0 conditioning."},{"id":"seed-vc","display_name":"Seed-VC (vc 语音转换)","display_name_en":"Seed-VC (voice conversion)","family":"seed_vc","path":"models/SeedVC-MLX","task":"vc","mode":"offline","download_id":"seed_vc","min_vram_gb":4},{"id":"sense-asr","display_name":"SenseVoice-Small (asr, 流式, 社区)","display_name_en":"SenseVoice-Small (asr + streaming, community)","family":"sense_asr","path":"models/SenseVoice-Small-GGUF","task":"asr","mode":"offline","download_id":"sensevoice_small_q8","min_vram_gb":4,"input_hint":"**SenseVoice-Small**(社区模型):多语种 ASR,事件/情感/语言标签,ITN 可开关;离线与流式模式。","input_hint_en":"**SenseVoice-Small** (community): multilingual ASR with event/emotion/language tags, optional ITN; offline and streaming modes."},{"id":"sheetsage2","display_name":"SheetSage2 (audio to ABC)","family":"sheetsage2","path":"models/SheetSage2-GGUF/sheetsage2-orig.gguf","task":"midi","mode":"offline","download_id":"sheetsage2_orig","min_vram_gb":8,"input_hint_en":"**SheetSage2**: upload a song or instrumental recording to transcribe it into an ABC score artifact."},{"id":"sherpa-kws","display_name":"Sherpa Zipformer KWS (Chinese / English)","family":"sherpa_kws","path":"models/Sherpa-KWS-GGUF/sherpa-kws-zipformer-zh-en-3m-f32.gguf","task":"wake","mode":"offline","download_id":"sherpa_kws_zipformer_zh_en_3m_f32"},{"id":"sidon","display_name":"Sidon","family":"sidon","path":"models/Sidon-GGUF/sidon-v0.1-f32.gguf","task":"s2s","mode":"offline","download_id":"sidon_f32","workflow":"enhancement"},{"id":"silero-vad","display_name":"Silero VAD (vad, bundled)","family":"silero_vad","path":"assets/framework/models/silero_vad","task":"vad","mode":"offline","min_vram_gb":1},{"id":"smart-turn","display_name":"Smart Turn v3.2","family":"smart_turn","path":"models/Smart-Turn-v3-GGUF/smart-turn-v3.2-f32.gguf","task":"turn","mode":"offline","download_id":"smart_turn_v3_2_f32","workflow":"analysis"},{"id":"soprano-tts","display_name":"Soprano TTS (tts)","family":"soprano_tts","path":"models/Soprano-1.1-80M-GGUF","task":"tts","mode":"offline","download_id":"soprano_1_1_80m_q8_0","min_vram_gb":1},{"id":"sopro-tts","display_name":"Sopro V2 Turbo (tts + clone)","family":"sopro_tts","path":"models/sopro-v2-turbo-GGUF/sopro-v2-turbo-f16.gguf","task":"tts","mode":"offline","download_id":"sopro_v2_turbo_f16","min_vram_gb":2,"request_options":["language","temperature","top_p","top_k","num_inference_steps","max_seconds","min_seconds","ref_seconds","text_chunk_size","seed"]},{"id":"sortformer-diar","display_name":"Sortformer Diarization 4spk (diar)","family":"sortformer_diar","path":"models/diar_sortformer_4spk-v1","task":"diar","mode":"offline","download_id":"sortformer_diar_4spk_v1","min_vram_gb":2},{"id":"stable-audio-medium","display_name":"Stable Audio 3 Medium (gen)","family":"stable_audio","path":"models/stable-audio-3-medium","task":"gen","mode":"offline","download_id":"stable_audio_3_medium","session_options":{"stable_audio.mem_saver":"true"},"min_vram_gb":10},{"id":"stable-audio-small-music","display_name":"Stable Audio 3 Small Music (gen)","family":"stable_audio","path":"models/stable-audio-3-small-music","task":"gen","mode":"offline","download_id":"stable_audio_3_small_music","min_vram_gb":4},{"id":"stable-audio-small-sfx","display_name":"Stable Audio 3 Small SFX (gen)","family":"stable_audio","path":"models/stable-audio-3-small-sfx","task":"gen","mode":"offline","download_id":"stable_audio_3_small_sfx","min_vram_gb":4},{"id":"supertonic","display_name":"Supertonic 3 (tts 预置音色/多语种)","display_name_en":"Supertonic 3 (tts, preset voices)","family":"supertonic","path":"models/supertonic-3","task":"tts","mode":"offline","download_id":"supertonic_3","min_vram_gb":2},{"id":"tf-gridnet","display_name":"TF-GridNet (two-speaker separation)","family":"tf_gridnet","path":"models/TF-GridNet-GGUF/tf-gridnet-wsj0-2mix-f32.gguf","task":"sep","mode":"offline","download_id":"tf_gridnet_wsj0_2mix_f32"},{"id":"tone-color-vc","display_name":"Tone Color VC","family":"tone_color_vc","task":"vc","mode":"offline","path":"models/Tone-Color-VC-GGUF/tone-color-vc-f32.gguf","download_id":"tone_color_vc_f32"},{"id":"universr-audio","display_name":"UniverSR Audio","family":"universr","path":"models/UniverSR-GGUF","task":"s2s","mode":"offline","download_id":"universr_audio_orig"},{"id":"universr-speech","display_name":"UniverSR Speech","family":"universr","path":"models/UniverSR-GGUF","task":"s2s","mode":"offline","download_id":"universr_speech_orig"},{"id":"vevo2-s2s","display_name":"Vevo2 (s2s 语音编辑, GGUF Q8)","display_name_en":"Vevo2 (speech editing, GGUF Q8)","family":"vevo2","path":"models/Vevo2-GGUF","task":"s2s","mode":"offline","download_id":"vevo2_gguf","min_vram_gb":6,"input_hint":"**Vevo2 语音编辑 (s2s)**:上传要编辑的源语音,并在『其它参数(JSON)』里填 `{\\"target_text\\": \\"替换后的完整句子\\"}`(编辑保持原说话人音色,可不上传目标音色)。","input_hint_en":"**Vevo2 speech editing**: upload source speech and set target_text to the complete replacement sentence in Additional options. Editing preserves the original speaker and does not require a target-voice reference."},{"id":"vevo2-svc","display_name":"Vevo2 (svc 歌声转换, GGUF Q8)","display_name_en":"Vevo2 (singing voice conversion, GGUF Q8)","family":"vevo2","path":"models/Vevo2-GGUF","task":"svc","mode":"offline","download_id":"vevo2_gguf","min_vram_gb":6,"input_hint":"**Vevo2 歌声转换 (svc)**:上传源歌声 + 目标歌手参考音色,默认 route=style_preserved_svc。style_converted_svc / singing_style_conversion 等风格转换 route 需在『其它参数(JSON)』里补 `style_ref`(服务器本地 wav 路径)/ `style_ref_text` / `target_text`。","input_hint_en":"**Vevo2 singing conversion**: upload source singing and a target-singer reference. The default route is style_preserved_svc; style-conversion routes also accept style_ref, style_ref_text and target_text in Additional options."},{"id":"vevo2","display_name":"Vevo2 (vc 语音转换, GGUF Q8)","display_name_en":"Vevo2 (voice conversion, GGUF Q8)","family":"vevo2","path":"models/Vevo2-GGUF","task":"vc","mode":"offline","download_id":"vevo2_gguf","min_vram_gb":6},{"id":"vibevoice","display_name":"VibeVoice 1.5B/7B (tts, long-form/multi-speaker)","family":"vibevoice","path":"models/VibeVoice-1.5B","task":"tts","mode":"offline","download_id":"vibevoice_1_5b","min_vram_gb":7},{"id":"vibevoice-7b","display_name":"VibeVoice 7B (tts, long-form/multi-speaker)","family":"vibevoice","path":"models/VibeVoice-7B-GGUF","task":"tts","mode":"offline","download_id":"vibevoice_7b_q8_0","min_vram_gb":16},{"id":"vibevoice-asr","display_name":"VibeVoice ASR (asr, 多语种+说话人分段)","display_name_en":"VibeVoice ASR (asr, multilingual + speaker turns)","family":"vibevoice_asr","path":"models/VibeVoice-ASR","task":"asr","mode":"offline","download_id":"vibevoice_asr","min_vram_gb":20,"input_hint":"**VibeVoice ASR**:自动语种,可输出分段/说话人轮次;文本框可填上下文提示(如 The recording is a meeting conversation.)。权重 17.3G,8G 卡跑不动。","input_hint_en":"**VibeVoice ASR**: automatic language detection with segment and speaker-turn output. The text box accepts a context prompt. Its 17.3 GB weights require substantially more than 8 GB VRAM."},{"id":"vibevoice-asr-streaming-1.5b","display_name":"VibeVoice ASR Streaming 1.5B (asr, 多语种+流式)","display_name_en":"VibeVoice ASR Streaming 1.5B (asr, multilingual + streaming)","family":"vibevoice_asr_streaming","path":"models/VibeVoice-ASR-Streaming-1.5B-GGUF/vibevoice-asr-streaming-1.5b-q8_0.gguf","task":"asr","mode":"offline","download_id":"vibevoice_asr_streaming_1_5b_q8_0","min_vram_gb":6,"input_hint":"**VibeVoice ASR Streaming 1.5B**:7B 的较小版本,功能相同,显存占用更低,准确率略低;文本框可填上下文提示。","input_hint_en":"**VibeVoice ASR Streaming 1.5B**: the smaller sibling of the 7B with the same features, lower VRAM use, and somewhat lower accuracy. The text box accepts a context prompt."},{"id":"vibevoice-asr-streaming-7b","display_name":"VibeVoice ASR Streaming 7B (asr, 多语种+流式)","display_name_en":"VibeVoice ASR Streaming 7B (asr, multilingual + streaming)","family":"vibevoice_asr_streaming","path":"models/VibeVoice-ASR-Streaming-7B-GGUF/vibevoice-asr-streaming-7b-q8_0.gguf","task":"asr","mode":"offline","download_id":"vibevoice_asr_streaming_7b_q8_0","min_vram_gb":18,"input_hint":"**VibeVoice ASR Streaming 7B**:多语种 ASR,支持长音频流式解码和说话人轮次;文本框可填上下文提示。","input_hint_en":"**VibeVoice ASR Streaming 7B**: multilingual ASR with long-audio streaming decode and speaker-turn output. The text box accepts a context prompt."},{"id":"vieneu-tts","display_name":"VieNeu-TTS v3 Turbo (tts 越南语, 社区)","display_name_en":"VieNeu-TTS v3 Turbo (vi tts, community)","family":"vieneu_v3_turbo","path":"models/VieNeu-TTS-v3-Turbo","task":"tts","mode":"offline","download_id":"vieneu_v3_turbo_v3_turbo","min_vram_gb":4,"input_hint":"**VieNeu-TTS v3 Turbo**(社区模型):越南语 / 英语;上传参考音色即克隆。","input_hint_en":"**VieNeu-TTS v3 Turbo** (community): Vietnamese and English. Upload a reference voice to clone."},{"id":"voxcpm1","display_name":"VoxCPM1 0.5B (tts + clone)","family":"voxcpm1","path":"models/VoxCPM1-GGUF","task":"tts","mode":"offline","download_id":"voxcpm1_0_5b_q8_0","min_vram_gb":4},{"id":"voxcpm2","display_name":"VoxCPM2 (tts)","family":"voxcpm2","path":"models/VoxCPM2","task":"tts","mode":"offline","download_id":"voxcpm2","session_options":{"voxcpm2.weight_type":"q8_0"},"min_vram_gb":6},{"id":"voxtral-realtime","display_name":"Voxtral Mini 4B Realtime (asr, 自动语种+流式)","display_name_en":"Voxtral Mini 4B Realtime (asr, auto + streaming)","family":"voxtral_realtime","path":"models/Voxtral-Mini-4B-Realtime-2602-GGUF","task":"asr","mode":"offline","download_id":"voxtral_realtime","min_vram_gb":8},{"id":"voxtral-tts","display_name":"Voxtral 4B TTS","family":"voxtral_tts","path":"models/Voxtral-4B-TTS-2603-GGUF/voxtral-4b-tts-2603-bf16.gguf","task":"tts","mode":"offline","download_id":"voxtral_4b_tts_2603_bf16","default_text":"The next train leaves in ten minutes. Please wait by platform five."},{"id":"whistle-asr","display_name":"Whistle ASR","family":"whistle_asr","path":"models/Whistle-GGUF/whistle-f32.gguf","task":"asr","mode":"offline","download_id":"whistle_asr_f32"},{"id":"yue2","display_name":"Yue2 3B (song gen)","family":"yue2","path":"models/Yue2-3B-GGUF","task":"gen","mode":"offline","download_id":"yue2_main_q8_0","default_text":"[Verse]\\nSoft morning light is touching the window.\\nI hear the city waking below.\\n[Chorus]\\nStay with the rhythm, let it carry us home.\\nSing with the sunrise, we are never alone.","min_vram_gb":12,"input_hint_en":"**Yue2 3B**: provide lyrics and a style prompt. The default inference combo is Main Q8_0 + VAE F16; choose other main/VAE files from Model parameters before loading."},{"id":"zipenhancer","display_name":"ZipEnhancer","family":"builtin_audio_utils","task":"s2s","workflow":"enhancement","mode":"offline","path":"models/Audio-Utilities/zipenhancer/zipenhancer.safetensors","load_options":{"utility":"zipenhancer"},"weights_url":"https://raw.githubusercontent.com/0xShug0/audio.cpp/main/assets/framework/audio_utilities/zipenhancer/zipenhancer.safetensors"},{"id":"zipvoice","display_name":"ZipVoice (中英零样本克隆)","display_name_en":"ZipVoice (zh/en zero-shot cloning)","family":"zipvoice","path":"models/ZipVoice-Distill-GGUF","task":"clon","mode":"offline","download_id":"zipvoice_distill_gguf","min_vram_gb":4,"input_hint":"**ZipVoice**:中/英零样本声音克隆(k2-fsa TTSZipformer flow-matching + Vocos,蒸馏版 8 步采样)。上传参考音频,并在『参考文本’里填入它的逐字转写——参考音频与参考文本必须配对;合成文本支持中文、英文及混排。权重 Apache-2.0。","input_hint_en":"**ZipVoice**: zero-shot voice cloning in zh/en (k2-fsa TTSZipformer flow matching + Vocos, distilled 8-step sampling). Upload a reference clip and put its exact transcript in the reference-text box — the clip and the transcript must match; synthesis text supports zh/en/mixed. Weights are Apache-2.0."}]')},E8={ming3_tts:[{name:"template_name",type:"text",label:"Prompt template",placeholder:"Automatic"},{name:"voice_id",type:"text",label:"IP voice name",placeholder:"US_James (IP template only)"},{name:"temperature",type:"number",label:"Temperature",default:0,minimum:0,step:.1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:2,step:.1},{name:"sigma",type:"number",label:"SDE noise scale",default:.25,minimum:0,step:.05},{name:"trim_silence",type:"bool",label:"Trim trailing silence",default:!0}],ming3_audio:[{name:"voice_id",type:"text",label:"Voice name",placeholder:"US_James"},{name:"prompt",type:"text",label:"Audio task prompt",placeholder:"Use task default"},{name:"system_prompt",type:"text",label:"System prompt"},{name:"enable_thinking",type:"bool",label:"Enable thinking",default:!1},{name:"max_audio_tokens",type:"number",label:"Maximum acoustic patches per chunk",default:1e3,minimum:1,step:1},{name:"temperature",type:"number",label:"Temperature",default:0,minimum:0,step:.1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:2,step:.1},{name:"disk_experts",scope:"session",session_option:"ming3_audio.disk_experts",type:"bool",label:"Offload expert weights",default:!1},{name:"pin_experts",scope:"session",session_option:"ming3_audio.pin_experts",type:"bool",label:"Keep experts in pinned host RAM",default:!1}],xtts_v2:[{name:"temperature",type:"slider",label:"Temperature",default:.75,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"Top-k",default:50,minimum:0,step:1},{name:"top_p",type:"slider",label:"Top-p",default:.85,minimum:0,maximum:1,step:.01},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:10,minimum:1,step:.5},{name:"max_mel_tokens",type:"number",label:"Maximum mel tokens",default:605,minimum:1,step:1}],latentsync:[{name:"num_inference_steps",type:"number",label:"Denoising steps",default:20,minimum:1,maximum:999,step:1},{name:"cache_interval",type:"number",label:"DeepCache interval",default:1,minimum:1,step:1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:1.5,minimum:0,step:.1},{name:"frames_per_chunk",type:"number",label:"Frames per chunk",default:16,minimum:1,maximum:24,step:1},{name:"fps",type:"number",label:"Frames per second",default:25,minimum:1,step:1},{name:"mem_saver",scope:"session",session_option:"latentsync.mem_saver",type:"bool",label:"Memory saver",default:!1}],ast_audioset:[{name:"top_k",type:"number",label:"Top classes",default:10,minimum:1,maximum:527,step:1}],ced:[{name:"top_k",type:"number",label:"Top classes",default:10,minimum:1,maximum:527,step:1}],fish_drama3:[{name:"text_chunk_size",type:"number",label:"Characters per chunk",default:128,minimum:1,step:1,info:"Smaller chunks reduce waveform-decoder peak memory; larger chunks reduce repeated prefills."},{name:"temperature",type:"slider",label:"Temperature",default:1,minimum:0,maximum:2,step:.05},{name:"top_p",type:"slider",label:"Top-p",default:.9,minimum:.01,maximum:1,step:.01},{name:"top_k",type:"number",label:"Top-k",default:4097,minimum:1,step:1},{name:"disk_experts",type:"bool",scope:"session",session_option:"fish_drama3.disk_experts",label:"Offload expert weights",default:!0,info:"Keep only selected expert weights on the GPU. Expert computation stays on the selected backend; changing this reloads the model."},{name:"pin_experts",type:"bool",scope:"session",session_option:"fish_drama3.pin_experts",label:"Preload experts in pinned host RAM",default:!0,info:"Requires expert offload. Faster uploads, but holds the full expert banks in pinned host RAM."},{name:"expert_cache_size",type:"number",scope:"session",session_option:"fish_drama3.expert_cache_size",label:"GPU expert slots per layer",default:8,minimum:8,maximum:256,step:1},{name:"context_length",type:"number",scope:"session",session_option:"fish_drama3.context_length",label:"Context capacity",default:4096,minimum:1,step:1,info:"Prompt and generated frames share this capacity, including all voice references and dialogue history."}],firered_vad:[{name:"threshold",type:"number",label:"Speech threshold",minimum:0,maximum:1,step:.05},{name:"min_silence_duration_ms",type:"number",label:"Minimum silence (ms)",default:200,minimum:0,step:10},{name:"speech_pad_ms",type:"number",label:"Speech padding (ms)",default:0,minimum:0,step:10}],hviske_asr_v6:[{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","silence","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s)",default:28,minimum:.001,maximum:30,step:.1},{name:"max_tokens",type:"number",label:"Maximum tokens",default:440,minimum:1,step:1},{name:"num_beams",type:"number",label:"Beam count",default:2,minimum:1,step:1},{name:"length_penalty",type:"number",label:"Length penalty",default:1,minimum:0,step:.1}],micro_wake_word:[{name:"threshold",type:"number",label:"Detection threshold",minimum:0,maximum:1,step:.05},{name:"sliding_window_size",type:"number",label:"Sliding window frames",minimum:1,step:1}],open_wake_word:[{name:"threshold",type:"number",label:"Detection threshold",default:.5,minimum:0,maximum:1,step:.05}],plapre:[{name:"temperature",type:"number",label:"Temperature",default:.8,minimum:0,step:.05},{name:"top_p",type:"number",label:"Top-p",default:.95,minimum:.01,maximum:1,step:.01},{name:"top_k",type:"number",label:"Top-k",default:50,minimum:-1,step:1},{name:"x_vector_only_mode",type:"bool",label:"Reference speaker embedding only",default:!1}],mossformer2:[{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s, 0 = whole recording)",default:2,minimum:0,step:.1},{name:"audio_chunk_overlap_sec",type:"number",label:"Chunk overlap (s)",default:.5,minimum:0,step:.1},{name:"normalize_output",type:"bool",label:"Normalize output",default:!0}],sherpa_kws:[{name:"keywords",type:"text",label:"Keyword tokens (one phrase per line)",lines:3,placeholder:"Leave empty to use embedded keywords"},{name:"max_active_paths",type:"number",label:"Active decoding paths",default:4,minimum:1,step:1},{name:"keywords_score",type:"number",label:"Keyword score",default:1,minimum:0,step:.1},{name:"keywords_threshold",type:"number",label:"Keyword threshold",default:.25,minimum:0,maximum:1,step:.05},{name:"num_trailing_blanks",type:"number",label:"Trailing blanks",default:1,minimum:0,step:1}],tf_gridnet:[{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s, 0 = whole recording)",default:2.4,minimum:0,step:.1},{name:"audio_chunk_overlap_sec",type:"number",label:"Chunk overlap (s)",default:1.6,minimum:0,step:.1},{name:"normalize_output",type:"bool",label:"Normalize output",default:!0}],voxtral_tts:[{name:"voice_id",type:"choice",label:"Voice preset",default:"casual_male",choices:["casual_female","casual_male","cheerful_female","neutral_female","neutral_male","pt_male","pt_female","nl_male","nl_female","it_male","it_female","fr_male","fr_female","es_male","es_female","de_male","de_female","ar_male","hi_male","hi_female"]},{name:"num_inference_steps",type:"number",label:"Diffusion steps",default:7,minimum:1,step:1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:1.2,minimum:0,step:.1},{name:"max_tokens",type:"number",label:"Maximum tokens",default:2048,minimum:1,step:1}],kugelaudio:[{name:"num_inference_steps",type:"number",label:"Diffusion steps",default:20,minimum:1,maximum:1e3,step:1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:3,minimum:0,step:.1},{name:"max_tokens",type:"number",label:"Maximum tokens",default:2048,minimum:1,step:1},{name:"do_sample",type:"bool",label:"Sample AR tokens",default:!1},{name:"temperature",type:"number",label:"Temperature",default:1,minimum:0,step:.1},{name:"text_chunk_size",type:"number",label:"Text chunk size",default:300,minimum:1,step:1},{name:"text_chunk_mode",type:"choice",label:"Text chunk mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],crisperwhisper:[{name:"transcription_mode",type:"choice",label:"Transcription mode",default:"verbatim",choices:["verbatim","intended","verbatimize"]},{name:"return_timestamps",type:"bool",label:"Word timestamps",default:!1},{name:"max_tokens",type:"number",label:"Maximum tokens",default:256,minimum:1,maximum:439,step:1},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s)",default:30,minimum:.02,maximum:30,step:.1},{name:"audio_chunk_overlap_sec",type:"number",label:"Chunk overlap (s)",default:4,minimum:0,step:.1}],index_echo:[{name:"target_language",type:"choice",label:"Translation language",default:"en",choices:["en","es","ja"]},{name:"max_text_tokens",type:"number",label:"Maximum text tokens",default:2e3,minimum:1,step:1},{name:"temperature",type:"number",label:"Temperature",default:0,minimum:0,maximum:2,step:.1},{name:"glossary",type:"text",label:"Glossary",default:""},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","quiet_energy","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s)",default:60,minimum:1,maximum:60,step:1}],audio_flamingo:[{name:"instruct",type:"text",label:"Question or instruction",default:"Transcribe the input speech.",lines:3},{name:"max_tokens",type:"number",label:"Maximum tokens",default:2048,minimum:1,step:1},{name:"do_sample",type:"bool",label:"Sample tokens",default:!1},{name:"temperature",type:"number",label:"Temperature",default:1,minimum:.01,step:.1},{name:"top_k",type:"number",label:"Top K",default:50,minimum:0,step:1},{name:"top_p",type:"number",label:"Top P",default:1,minimum:.01,maximum:1,step:.05},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:1,minimum:.01,step:.05}],owsm:[{name:"language",type:"text",label:"Input language (ISO 639-3)",default:"eng",placeholder:"eng, jpn, zho, auto"},{name:"target_language",type:"text",label:"Translation language (ISO 639-3)",default:""},{name:"return_timestamps",type:"bool",label:"Timestamp segments",default:!1},{name:"condition_on_previous_text",type:"bool",label:"Condition on previous text",default:!1},{name:"beam_size",type:"number",label:"Beam size",default:1,minimum:1,maximum:50002,step:1},{name:"max_tokens",type:"number",label:"Maximum tokens (0 = model limit)",default:0,minimum:0,maximum:374,step:1},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s)",default:30,minimum:.2,maximum:30,step:.1}],owsm_ctc:[{name:"language",type:"text",label:"Input language (ISO 639-3)",default:"eng",placeholder:"eng, jpn, zho, auto"},{name:"target_language",type:"text",label:"Translation language (ISO 639-3)",default:""},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","none"]}],reuse:[{name:"audio_chunk_duration_sec",type:"number",label:"Chunk duration (s, 0 = whole recording)",default:0,minimum:0,step:1},{name:"audio_chunk_overlap_sec",type:"number",label:"Chunk overlap (s)",default:1,minimum:0,step:.1}],smart_turn:[{name:"threshold",type:"number",label:"Completion threshold",default:.5,minimum:0,maximum:1,step:.05}],maya1:[{name:"instruct",type:"text",label:"Voice description",default:"Warm female voice with an American accent and conversational pacing.",lines:3},{name:"temperature",type:"number",label:"Temperature",default:.4,minimum:.01,step:.05},{name:"top_p",type:"number",label:"Top P",default:.9,minimum:0,maximum:1,step:.05},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:1.1,minimum:.01,step:.05}],gigaam_asr:[{name:"return_timestamps",type:"bool",label:"Word timestamps",default:!1},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","quiet_energy","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:25,minimum:.02,maximum:25,step:.1}],samsone:[{name:"instruct",type:"text",label:"Question or instruction",default:"describe the audio",lines:3},{name:"max_tokens",type:"number",label:"Maximum tokens",default:100,minimum:1,maximum:512,step:1}],sam_audio:[{name:"num_inference_steps",type:"number",label:"Inference steps",default:16,minimum:1,step:1},{name:"anchors",type:"text",label:"Time anchors (JSON)",default:"",placeholder:'[["+",0.5,2.0],["-",3.0,4.0]]'}],tone_color_vc:[{name:"temperature",type:"number",label:"Temperature",default:.3,minimum:0,step:.05}],moss_ttsd:[{name:"instruct",type:"text",label:"Delivery instruction",default:""},{name:"temperature",type:"number",label:"Temperature",default:1.5,minimum:0,step:.1},{name:"top_p",type:"number",label:"Top P",default:.6,minimum:0,maximum:1,step:.05},{name:"top_k",type:"number",label:"Top K",default:50,minimum:0,step:1},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:1.1,minimum:0,step:.05},{name:"max_frames",type:"number",label:"Maximum audio frames (0 = automatic)",default:0,minimum:0,step:1}],moss_voicegen:[{name:"temperature",type:"number",label:"Temperature",default:1.5,minimum:0,step:.1},{name:"top_p",type:"number",label:"Top P",default:.6,minimum:0,maximum:1,step:.05},{name:"top_k",type:"number",label:"Top K",default:50,minimum:0,step:1},{name:"repetition_penalty",type:"number",label:"Repetition penalty",default:1.1,minimum:0,step:.05}],canary_asr:[{name:"target_language",type:"choice",label:"Target language",default:"",choices:["","en","de","es","fr"]},{name:"pnc",type:"bool",label:"Punctuation and capitalization",default:!0},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:40,minimum:.02,maximum:40,step:.1}],cohere_asr:[{name:"pnc",type:"bool",label:"Punctuation and capitalization",default:!0},{name:"audio_chunk_mode",type:"choice",label:"Audio chunk mode",default:"auto",choices:["auto","quiet_energy","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:35,minimum:.04,maximum:35,step:.1}],moss_transcribe_diarize:[{name:"instruct",type:"text",label:"Instruction",default:"",lines:3}],apollo:[{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:0,minimum:0,step:1},{name:"audio_chunk_overlap_sec",type:"number",label:"Audio chunk overlap (s)",default:1,minimum:0,step:.1},{name:"edge_pad_duration_sec",type:"number",label:"Edge padding (s)",default:0,minimum:0,step:.1}],universr:[{name:"input_sample_rate",type:"choice",label:"Input bandwidth (Hz)",default:"",choices:["",8e3,12e3,16e3,24e3]},{name:"audio_chunk_duration_sec",type:"number",label:"Audio chunk duration (s)",default:0,minimum:0,step:1},{name:"sampler_mode",type:"choice",label:"Sampler",default:"midpoint",choices:["euler","midpoint","rk4"]},{name:"num_inference_steps",type:"number",label:"Inference steps",default:4,minimum:1,step:1},{name:"guidance_scale",type:"number",label:"Guidance scale",default:1.5,minimum:0,step:.1}],liveavatar:[{name:"reference_image_path",type:"text",label:"Reference image",default:""},{name:"generation_mode",type:"choice",label:"Generation mode",default:"offline",choices:["offline","liveavatar"]},{name:"height",type:"number",label:"Height",default:480,minimum:16,step:16,precision:0},{name:"width",type:"number",label:"Width",default:832,minimum:16,step:16,precision:0},{name:"num_frames",type:"number",label:"Frames per clip",default:48,minimum:1,step:1,precision:0},{name:"num_clips",type:"number",label:"Maximum clips",default:1,minimum:1,step:1,precision:0},{name:"num_inference_steps",type:"number",label:"Denoising steps",default:4,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"Guidance scale",default:0,minimum:0,maximum:10,step:.1},{name:"shift",type:"slider",label:"Scheduler shift",default:3,minimum:0,maximum:10,step:.1},{name:"negative_prompt",type:"text",label:"Negative prompt",default:""},{name:"fused_cfg",type:"bool",label:"Fused CFG",default:!0},{name:"sage_attention",type:"bool",label:"SageAttention",default:!0},{name:"memory_saver",type:"bool",label:"Memory saver",default:!0},{name:"denoiser_layerwise",type:"bool",label:"Layerwise denoiser",default:!1},{name:"denoiser_layerwise_batch",type:"number",label:"Layerwise batch",default:16,minimum:1,step:1,precision:0},{name:"vae_encoder_chunk_size",type:"number",label:"VAE encoder chunk",default:16,minimum:1,step:1,precision:0},{name:"vae_decoder_tile_size",type:"number",label:"VAE decoder tile",default:0,minimum:0,step:16,precision:0},{name:"target_cache_blocks",type:"number",label:"Target cache blocks",default:2,minimum:0,step:1,precision:0},{name:"vae_cache_f16",type:"bool",label:"F16 VAE cache",default:!0},{name:"denoiser_weight_streaming",type:"bool",scope:"session",session_option:"liveavatar.denoiser_weight_streaming",label:"Stream denoiser weights",default:!1}],pulsevad:[{name:"threshold",type:"slider",label:"Speech threshold",default:.5,minimum:0,maximum:1,step:.01},{name:"hop_size_samples",type:"number",label:"Hop size (samples)",default:1600,minimum:1,step:1},{name:"min_speech_duration_ms",type:"number",label:"Minimum speech (ms)",default:100,minimum:0,step:1},{name:"min_silence_duration_ms",type:"number",label:"Minimum silence (ms)",default:100,minimum:0,step:1}],echo_tts:[{name:"num_inference_steps",type:"slider",label:"num_inference_steps",label_en:"Sampling steps",default:40,minimum:8,maximum:40,step:1,precision:0,info:"Euler sampler steps."},{name:"text_guidance_scale",type:"slider",label:"text_guidance_scale",label_en:"Text guidance",default:3,minimum:0,maximum:10,step:.1},{name:"speaker_guidance_scale",type:"slider",label:"speaker_guidance_scale",label_en:"Speaker guidance",default:8,minimum:0,maximum:15,step:.1},{name:"truncation_factor",type:"slider",label:"truncation_factor",label_en:"Noise truncation",default:.8,minimum:0,maximum:1,step:.05},{name:"guidance_interval",type:"slider",label:"guidance_interval",label_en:"Guidance interval",default:1,minimum:1,maximum:3,step:1,precision:0,info:"Refresh the unconditional CFG lanes every Nth guided step. Higher is faster and works best with more steps; 1 is highest fidelity."},{name:"reference_duration_sec",type:"slider",label:"reference_duration_sec",label_en:"Reference trim (s)",default:15,minimum:1,maximum:60,step:1,info:"Trim the speaker reference before encoding. Around 10 s usually clones best."},{name:"seed",type:"number",label:"seed",label_en:"Seed",default:0,minimum:0,step:1,precision:0}],_comment:"WebUI TTS 高级参数控件配置:按模型 family 动态生成控件(gr.render)。每项字段:name=选项键;type=slider|number|bool|text|choice;scope=session 时写入 session_options,否则随请求 options 透传给模型;label/info=显示文案;default=默认值(应等于模型默认,已按 src/models//*.cpp 校对);minimum/maximum/step=数值范围;precision=0 表示整数;choices=下拉候选。seed/max_tokens 已有专用输入框,勿在此重复;参考文本用『参考文本』框(reference_text);文件路径/parity 类参数(如 *_noise_file)未纳入,可用『其它参数(JSON)』兜底框传。",qwen3_tts:[{name:"temperature",type:"slider",label:"temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:0,maximum:1,step:.01},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1.05,minimum:1,maximum:2,step:.01},{name:"do_sample",type:"bool",label:"do_sample",default:!0},{name:"instruct",type:"text",label:"instruct(仅 VoiceDesign/CustomVoice)",default:"",placeholder:"风格/音色指令,Base 版忽略"},{name:"speaker",type:"text",label:"speaker(仅 CustomVoice)",default:"",placeholder:"内置音色名,其它版忽略"}],vibevoice:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0,info:"扩散步数(官方默认 10),越大越慢越稳"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1.3,minimum:0,maximum:5,step:.1,info:"CFG 引导强度"},{name:"max_length_times",type:"number",label:"max_length_times",default:2,minimum:.1,step:.1,info:"最大输出长度倍数"},{name:"temperature",type:"slider",label:"temperature",default:1,minimum:.05,maximum:2,step:.05},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:.05,maximum:1,step:.01},{name:"do_sample",type:"bool",label:"do_sample",default:!1},{name:"voice_samples",type:"text",label:"voice_samples(多说话人,逗号分隔 wav,≤4)",default:"",placeholder:"D:/a.wav,D:/b.wav — 用此项时勿再上传参考音色"}],voxcpm2:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0,info:"CFM/DiT 步数"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:5,step:.1},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"tag_aware",choices:["default","tag_aware","japanese","endline"]},{name:"min_tokens",type:"number",label:"min_tokens",default:2,minimum:0,step:1,precision:0},{name:"retry_badcase",type:"bool",label:"retry_badcase(自动重试异常输出)",default:!0}],voxcpm1:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0,info:"CFM/DiT 步数"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:5,step:.1},{name:"min_tokens",type:"number",label:"min_tokens",default:2,minimum:0,step:1,precision:0},{name:"retry_badcase",type:"bool",label:"retry_badcase(自动重试异常输出)",default:!0}],miotts:[{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:0,maximum:1,step:.01},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1,minimum:1,maximum:1.5,step:.01},{name:"best_of_n",type:"number",label:"best_of_n(候选数,>1 自动开启)",default:1,minimum:1,maximum:8,step:1,precision:0}],chatterbox:[{name:"exaggeration",type:"slider",label:"exaggeration",default:.5,minimum:0,maximum:2,step:.05,info:"改动后需重新『加载模型』才生效"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:.5,minimum:0,maximum:1,step:.05,info:"改动后需重新『加载模型』才生效"},{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1.2,minimum:1,maximum:2,step:.01}],"chatterbox-vc":[{name:"s3gen_cfg_rate",type:"slider",label:"s3gen_cfg_rate(音色引导强度)",label_en:"s3gen_cfg_rate (voice guidance)",default:.7,minimum:0,maximum:2,step:.05},{name:"num_inference_steps",type:"number",label:"num_inference_steps(生成步数)",label_en:"num_inference_steps",default:10,minimum:1,maximum:100,step:1,precision:0}],kokoro_tts:[{name:"speed",type:"slider",label:"speed(语速倍率)",label_en:"speed (speech rate)",default:1,minimum:.5,maximum:2,step:.05}],kitten_tts:[{name:"speed",type:"slider",label:"speed(语速倍率)",label_en:"speed (speech rate)",default:1,minimum:.01,maximum:2,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size(长文本分段字符数)",label_en:"text_chunk_size",default:400,minimum:32,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],piper_tts:[{name:"speed",type:"slider",label:"speed(语速倍率)",label_en:"speed (speech rate)",default:1,minimum:.5,maximum:2,step:.05},{name:"variation",type:"slider",label:"variation(音色变化)",label_en:"variation",default:.667,minimum:0,maximum:1,step:.01},{name:"duration_variation",type:"slider",label:"duration_variation(时长变化)",label_en:"duration_variation",default:.8,minimum:0,maximum:2,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size(长文本分段字符数)",label_en:"text_chunk_size",default:280,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],omnivoice:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:32,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:5,step:.1},{name:"speed",type:"slider",label:"speed",default:1,minimum:.5,maximum:2,step:.05},{name:"instruct",type:"text",label:"instruct(风格/音色指令)",default:"",placeholder:"如:以轻快的语气朗读"}],sense_asr:[{name:"enable_itn",type:"bool",label:"enable_itn(逆文本规范化)",label_en:"enable_itn",default:!0},{name:"keep_tags",type:"bool",label:"keep_tags(保留语言/情绪/事件标签)",label_en:"keep_tags",default:!1},{name:"audio_chunk_mode",type:"choice",label:"audio_chunk_mode",default:"auto",choices:["auto","fixed","none"]},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec",default:30,minimum:.001,step:1}],"lfm2-audio-tts":[{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05,info_en:"Audio code sampling temperature; 0 is greedy."},{name:"top_k",type:"number",label:"top_k",default:64,minimum:0,step:1,precision:0},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:200,minimum:32,step:1,precision:0,info_en:"Codepoints of text per spoken turn."}],"lfm2-audio-jp-tts":[{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05,info_en:"Audio code sampling temperature; 0 is greedy."},{name:"top_k",type:"number",label:"top_k",default:64,minimum:0,step:1,precision:0},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:200,minimum:32,step:1,precision:0,info_en:"Codepoints of text per spoken turn."}],"lfm2-audio-s2s":[{name:"temperature",type:"slider",label:"temperature",default:1,minimum:0,maximum:2,step:.05,info_en:"Audio code sampling temperature; 0 is greedy."},{name:"top_k",type:"number",label:"top_k",default:4,minimum:0,step:1,precision:0},{name:"text_temperature",type:"slider",label:"text_temperature",default:0,minimum:0,maximum:2,step:.05,info_en:"Text token sampling temperature; 0 picks the most likely token, as liquid-audio does."},{name:"text_top_k",type:"number",label:"text_top_k",default:0,minimum:0,step:1,precision:0,info_en:"With text_temperature above 0, sample text tokens from the k most likely; 0 keeps all."}],"lfm2-audio-jp-s2s":[{name:"temperature",type:"slider",label:"temperature",default:1,minimum:0,maximum:2,step:.05,info_en:"Audio code sampling temperature; 0 is greedy."},{name:"top_k",type:"number",label:"top_k",default:4,minimum:0,step:1,precision:0},{name:"text_temperature",type:"slider",label:"text_temperature",default:0,minimum:0,maximum:2,step:.05,info_en:"Text token sampling temperature; 0 picks the most likely token, as liquid-audio does."},{name:"text_top_k",type:"number",label:"text_top_k",default:0,minimum:0,step:1,precision:0,info_en:"With text_temperature above 0, sample text tokens from the k most likely; 0 keeps all."}],lfm2_audio:[{name:"audio_chunk_mode",type:"choice",label:"audio_chunk_mode",default:"auto",choices:["auto","vad","fixed","none"],info_en:"auto keeps audio up to audio_chunk_seconds whole and splits longer audio at pauses; none transcribes it in one pass, which the model handles up to about a minute."},{name:"audio_chunk_seconds",type:"number",label:"audio_chunk_seconds",default:30,minimum:1,step:1},{name:"max_tokens",type:"number",label:"max_tokens",default:512,minimum:1,step:1,precision:0,info_en:"Transcript tokens allowed per chunk; a transcript that reaches it is cut off there."}],confucius4_r2t2:[{name:"chunk_size_ms",type:"slider",scope:"session",session_option:"confucius4_r2t2.chunk_size_ms",label:"chunk_size_ms(流式分块毫秒)",label_en:"chunk_size_ms (streaming chunk, ms)",default:320,minimum:80,maximum:2e3,step:10,precision:0,info:"80-2000ms:越小延迟越低;320ms 在 Apple Silicon 上延迟与速度较均衡。",info_en:"80-2000 ms. Lower means lower latency; 320 ms balances latency and speed on Apple Silicon."},{name:"unfixed_chunk_num",type:"number",scope:"session",session_option:"confucius4_r2t2.unfixed_chunk_num",label:"unfixed_chunk_num(前 N 块不用稳定前缀)",label_en:"unfixed_chunk_num (leading chunks without prefix)",default:2,minimum:0,maximum:10,step:1,precision:0,info:"开头若干块不使用已识别文本作为前缀提示。",info_en:"Leading chunks that decode without a stable-prefix prompt."},{name:"unfixed_token_num",type:"number",scope:"session",session_option:"confucius4_r2t2.unfixed_token_num",label:"unfixed_token_num(回滚 token 数)",label_en:"unfixed_token_num (rollback tokens)",default:5,minimum:0,maximum:20,step:1,precision:0,info:"作为前缀前从累积文本回滚的 token 数,用于降低边界抖动。",info_en:"Tokens rolled back from the accumulated text before it is used as the prefix prompt."},{name:"rollback_punctuation",type:"bool",scope:"session",session_option:"confucius4_r2t2.rollback_punctuation",label:"rollback_punctuation(句末标点不回滚)",label_en:"rollback_punctuation (keep trailing punctuation)",default:!1,info:"输出已以标点结尾时不再回滚 token。",info_en:"Do not roll back tokens when the output already ends with punctuation."},{name:"max_new_tokens",type:"number",scope:"session",session_option:"confucius4_r2t2.max_tokens",label:"max_new_tokens(每分块解码上限)",label_en:"max_new_tokens (per-chunk decode budget)",default:32,minimum:1,maximum:256,step:1,precision:0,info:"每个流式分块的贪婪解码上限(会话级,区别于离线 max_tokens)。",info_en:"Greedy decode budget per streaming chunk (session-scoped; distinct from offline max_tokens)."}],pocket_tts:[{name:"frames_after_eos",type:"number",label:"frames_after_eos(-1=自动)",default:-1,minimum:-1,step:1,precision:0}],gradium_phonon:[{name:"frames_after_eos",type:"number",label:"frames_after_eos(-1=自动)",label_en:"frames_after_eos (-1 = auto)",default:-1,minimum:-1,step:1,precision:0},{name:"temperature",type:"slider",label:"temperature",default:.3,minimum:.05,maximum:1,step:.05}],neutts:[{name:"voice_id",type:"choice",label:"voice_id(内置音色)",label_en:"voice_id (built-in voice)",default:"emily",choices:["dave","emily","greta","jo","juliette","mateo","paul","sophie","steven"]},{name:"emotion",type:"choice",label:"emotion(情绪)",label_en:"emotion",default:"neutral",choices:["angry","disgusted","sad","happy","fearful","neutral","surprised"]}],magpie_tts:[{name:"language",type:"choice",label:"language",default:"en",choices:["en","ar-AE","ar-MSA","ar-SA","de","es","fr","hi","it","ko","pt-BR","vi","zh"]},{name:"voice_id",type:"choice",label:"voice_id(打包音色)",label_en:"voice_id (packaged voice)",default:"Aria",choices:["Aria","Jason","John","Leo","Sofia"]},{name:"temperature",type:"slider",label:"temperature",default:.6,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:80,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2.5,minimum:0,maximum:6,step:.1},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:300,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],breeze_tts:[{name:"instruction",type:"text",label:"instruction",label_en:"Instruction",default:"",placeholder:"Describe the target voice for VoiceDesign."},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:600,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1,minimum:0,maximum:10,step:.1},{name:"temperature",type:"slider",label:"temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"depth_temperature",type:"slider",label:"depth_temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:0,maximum:1,step:.01}],"breeze-tts":[{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:600,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1,minimum:0,maximum:10,step:.1},{name:"temperature",type:"slider",label:"temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"depth_temperature",type:"slider",label:"depth_temperature",default:.9,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:1,minimum:0,maximum:1,step:.01}],cosyvoice3:[{name:"template_name",type:"choice",label:"template_name",default:"zero_shot",choices:["zero_shot","cross_lingual","instruct"]},{name:"instruction",type:"text",label:"instruction",label_en:"Instruction",default:"",placeholder:"Used by template_name=instruct."},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:600,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"min_tokens",type:"number",label:"min_tokens",default:0,minimum:0,step:1,precision:0},{name:"top_k",type:"number",label:"top_k",default:25,minimum:1,step:1,precision:0}],inflect_v2:[{name:"speaking_rate",type:"slider",label:"speaking_rate(语速倍率)",label_en:"speaking_rate",default:1,minimum:.5,maximum:2,step:.05},{name:"variation",type:"slider",label:"variation(音色变化)",label_en:"variation",default:.667,minimum:0,maximum:1,step:.01},{name:"text_chunk_size",type:"number",label:"text_chunk_size(长文本分段字符数)",label_en:"text_chunk_size",default:280,minimum:1,step:1,precision:0}],sanotts:[{name:"speaking_rate",type:"slider",label:"speaking_rate(语速倍率)",label_en:"speaking_rate",default:1,minimum:.5,maximum:2,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size(长文本分段字符数)",label_en:"text_chunk_size",default:280,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"word_budget",choices:["word_budget"]}],dramabox:[{name:"negative_prompt",type:"text",label:"negative_prompt(负向提示)",label_en:"negative_prompt",default:"",placeholder:"留空=模型内置质量提示",placeholder_en:"Blank = built-in quality prompt"},{name:"duration_sec",type:"number",label:"duration_sec(0=自动估时)",label_en:"duration_sec (0 = auto)",default:0,minimum:0,step:.5},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:30,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2.5,minimum:0,maximum:8,step:.1},{name:"spatio_temporal_guidance_scale",type:"slider",label:"spatio_temporal_guidance_scale",default:1.5,minimum:0,maximum:5,step:.1},{name:"duration_scale",type:"slider",label:"duration_scale(自动估时倍率)",label_en:"duration_scale",default:1.1,minimum:.5,maximum:2,step:.05},{name:"reference_duration_sec",type:"number",label:"reference_duration_sec(参考音频裁剪/重复秒数)",label_en:"reference_duration_sec",default:10,minimum:0,step:.5},{name:"guidance_rescale",type:"text",label:"guidance_rescale",default:"auto",placeholder:"auto 或数值"},{name:"audio_chunk_threshold_sec",type:"number",label:"audio_chunk_threshold_sec(长文本阈值)",label_en:"audio_chunk_threshold_sec",default:45,minimum:0,step:1},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec(长文本分段目标时长)",label_en:"audio_chunk_duration_sec",default:37,minimum:0,step:1},{name:"cross_fade_duration_sec",type:"number",label:"cross_fade_duration_sec(分段交叉淡化)",label_en:"cross_fade_duration_sec",default:.05,minimum:0,step:.01}],confucius4_tts:[{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:30,minimum:1,step:1,precision:0},{name:"num_beams",type:"number",label:"num_beams",default:3,minimum:1,step:1,precision:0},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:10,minimum:0,maximum:20,step:.1},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:25,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:.7,minimum:0,maximum:2,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:80,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]},{name:"cross_fade_duration_sec",type:"number",label:"cross_fade_duration_sec",default:.3,minimum:0,step:.05},{name:"edge_fade_duration_sec",type:"number",label:"edge_fade_duration_sec",default:.1,minimum:0,step:.05},{name:"edge_pad_duration_sec",type:"number",label:"edge_pad_duration_sec",default:.1,minimum:0,step:.05}],ace_step:[{name:"lora",type:"text",scope:"session",session_option:"ace_step.lora",label:"LoRA adapter",default:"",info:"Adapter file or PEFT directory on the server; relative paths use the model root."},{name:"lora_scale",type:"number",scope:"session",session_option:"ace_step.lora_scale",label:"LoRA strength",default:1,step:.1,info:"Multiplies the adapter metadata scale; zero disables the adapter."},{name:"route",type:"choice",label:"route(操作类型)",default:"text2music",choices:["text2music","complete","lego","extract","cover","cover-nofsq","repaint","remix"],info:"cover/remix=换词翻唱,非 text2music 需上传源音频;详见 webui/README.md"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:8,minimum:1,maximum:20,step:1,precision:0,info:"扩散步数(turbo 上限 20);remix 路由不填时默认 16,其他路由默认 8"},{name:"shift",type:"slider",label:"shift(时间步弯曲)",default:3,minimum:1,maximum:5,step:.5,info:"原版 turbo 默认 3.0;1.0 会明显劣化 remix 换词咬字"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1,minimum:0,maximum:5,step:.1},{name:"audio_cover_strength",type:"slider",label:"【cover】audio_cover_strength",default:1,minimum:0,maximum:1,step:.05,info:"1=贴近原曲,0=自由发挥;建议 0.5"},{name:"cover_noise_strength",type:"slider",label:"【cover】cover_noise_strength",default:0,minimum:0,maximum:1,step:.05,info:"保旋律强度;推荐 0.1~0.25"},{name:"source_caption",type:"text",label:"【remix】source_caption",default:"",placeholder:"源歌曲描述;『🔍 分析』自动填"},{name:"source_lyrics",type:"text",lines:4,label:"【remix】source_lyrics",default:"",placeholder:"源歌曲原歌词;『🔍 分析』自动填"},{name:"flow_edit_n_min",type:"slider",label:"【remix】flow_edit_n_min",default:0,minimum:0,maximum:1,step:.05,info:"调大更保源曲、换词更弱"},{name:"flow_edit_n_max",type:"slider",label:"【remix】flow_edit_n_max",default:1,minimum:0,maximum:1,step:.05,info:"唱不出新歌词时降到 0.7~0.9"},{name:"flow_edit_n_avg",type:"number",label:"【remix】flow_edit_n_avg",default:2,minimum:1,maximum:4,step:1,precision:0,info:"每步多次采样取平均(remix 默认 2);1=最快"},{name:"bpm",type:"number",label:"【曲谱】BPM",default:0,minimum:0,step:1,precision:0,info:"0=不指定"},{name:"keyscale",type:"text",label:"【曲谱】keyscale",default:"",placeholder:"如 F major"},{name:"timesignature",type:"text",label:"【曲谱】timesignature",default:"",placeholder:"如 4"}],minimax_music3:[{name:"num_inference_steps",type:"number",label:"Flow steps per window",default:30,minimum:1,maximum:200,step:1,precision:0,info:"Flow-matching Euler steps per 200-frame denoising window."},{name:"guidance_scale",type:"slider",label:"Flow guidance scale",default:1.7,minimum:0,maximum:10,step:.1},{name:"ar_guidance_scale",type:"slider",label:"AR guidance scale",default:1.5,minimum:0,maximum:10,step:.1,info:"Classifier-free guidance of the semantic and residual code sampling."},{name:"top_k",type:"number",label:"top_k",default:50,minimum:1,maximum:1024,step:1,precision:0}],auk:[{name:"model_gguf",type:"choice",scope:"session",session_option:"auk.model_gguf",label:"model_gguf",label_en:"Generator weights",default:"auk-base-f32.gguf",choices:["auk-base-f32.gguf","auk-base-f16.gguf","auk-base-q8_0.gguf","auk-flash-f32.gguf","auk-flash-f16.gguf","auk-flash-q8_0.gguf"],info:"Selects Base or AuK-Flash automatically. Reload the model after changing this value."},{name:"qwen_gguf",type:"choice",scope:"session",session_option:"auk.qwen_gguf",label:"qwen_gguf",label_en:"Qwen conditioner",default:"qwen2.5-omni-3b-bf16.gguf",choices:["qwen2.5-omni-3b-bf16.gguf","qwen2.5-omni-3b-q8_0.gguf"],info:"Reload the model after changing this value."},{name:"vae_gguf",type:"choice",scope:"session",session_option:"auk.vae_gguf",label:"vae_gguf",label_en:"VAE weights",default:"auk-vae-f32.gguf",choices:["auk-vae-f32.gguf"],info:"Reload the model after changing this value."},{name:"attention",type:"choice",scope:"session",session_option:"auk.attention",label:"attention",label_en:"Attention",default:"auto",choices:["auto","flash","eager"],info:"Flow-model attention mode. Reload the model after changing this value."},{name:"mem_saver",type:"bool",scope:"session",session_option:"auk.mem_saver",label:"mem_saver",label_en:"Memory saver",default:!1,info:"Release Qwen and generation weights between stages. Warm requests reload weights and rebuild graphs."},{name:"instruct",type:"text",label:"instruct",label_en:"Voice description",default:"",placeholder:"A warm male voice speaking clear English.",info:"Optional for TTS only. Without it, text carries the complete upstream instruction."},{name:"duration_sec",type:"number",label:"duration_sec",label_en:"Output duration (s)",default:"",minimum:.02,step:.02,info:"Required for speech generation without reference audio; otherwise the reference duration is used."},{name:"num_inference_steps",type:"number",label:"num_inference_steps",label_en:"Sampling steps",default:32,minimum:1,step:1,precision:0,info:"Base Euler steps. AuK-Flash always uses its fixed four-step schedule."},{name:"guidance_scale",type:"slider",label:"guidance_scale",label_en:"Guidance scale",default:2,minimum:0,maximum:10,step:.1,info:"Base guidance strength. AuK-Flash disables classifier-free guidance."},{name:"sway_sampling_coef",type:"number",label:"sway_sampling_coef",label_en:"Sway coefficient",default:-1,step:.1,info:"Base sampling schedule sway. AuK-Flash uses its fixed time grid."}],yue2:[{name:"ar_lora",type:"text",scope:"session",session_option:"yue2.ar_lora",label:"ar_lora",label_en:"AR LoRA adapter",default:"",placeholder:"/path/to/ar_lora_inst_v3abc.safetensors",info:"Unfused AR adapter for score and semantic planning; relative paths resolve against the model root. Reload the model after changing this value."},{name:"ar_lora_scale",type:"number",scope:"session",session_option:"yue2.ar_lora_scale",label:"ar_lora_scale",label_en:"AR LoRA strength",default:1,step:.1,info:"Scales the AR adapter deltas; 0 disables it. Reload the model after changing this value."},{name:"nar_lora",type:"text",scope:"session",session_option:"yue2.nar_lora",label:"nar_lora",label_en:"NAR LoRA adapter",default:"",placeholder:"/path/to/nar_lora_joint_v4.safetensors",info:"Unfused NAR adapter for acoustic detail; relative paths resolve against the model root. Reload the model after changing this value."},{name:"nar_lora_scale",type:"number",scope:"session",session_option:"yue2.nar_lora_scale",label:"nar_lora_scale",label_en:"NAR LoRA strength",default:1,step:.1,info:"Scales the LoRA deltas only; any full vae2llm/llm2vae projection replacements in the adapter stay at full strength. 0 disables the entire adapter. Reload the model after changing this value."},{name:"main_gguf",type:"choice",scope:"session",session_option:"yue2.model_gguf",label:"main_gguf",label_en:"Main weights",default:"yue2-3b-q8_0.gguf",choices:["yue2-3b-q8_0.gguf","yue2-3b-q4_0.gguf","yue2-3b-bf16.gguf"],info:"Reload the model after changing this value."},{name:"vae_gguf",type:"choice",scope:"session",session_option:"yue2.vae_gguf",label:"vae_gguf",label_en:"VAE weights",default:"yue2-vae-f16.gguf",choices:["yue2-vae-f16.gguf","yue2-vae-f32.gguf"],info:"Reload the model after changing this value."},{name:"style",type:"text",label:"style",label_en:"Style",default:"English, indie pop, bright acoustic guitar, soft drums, warm lead vocal, polished demo mix",placeholder:"English, city pop, groovy bass, synth, energetic vocal"},{name:"abc",type:"text",label:"abc",label_en:"ABC score",default:"",placeholder:"Optional ABC notation. Use cot=melody or cot=full.",lines:4},{name:"abc_file",type:"text",label:"abc_file",label_en:"ABC file path",default:"",placeholder:"/path/to/score.abc"},{name:"cot",type:"choice",label:"cot",label_en:"Planning route",default:"off",choices:["off","melody","full"],info:"off = direct generation; melody/full use or generate ABC planning."},{name:"guidance_scale",type:"slider",label:"guidance_scale",label_en:"Semantic guidance",default:1.01,minimum:0,maximum:5,step:.01},{name:"num_inference_steps",type:"number",label:"num_inference_steps",label_en:"NAR steps",default:8,minimum:1,maximum:64,step:1,precision:0},{name:"abc_temperature",type:"slider",label:"abc_temperature",label_en:"ABC temperature",default:.7,minimum:0,maximum:2,step:.05},{name:"abc_top_p",type:"slider",label:"abc_top_p",label_en:"ABC top-p",default:.9,minimum:.01,maximum:1,step:.01},{name:"abc_top_k",type:"number",label:"abc_top_k",label_en:"ABC top-k",default:30,minimum:1,step:1,precision:0},{name:"abc_repetition_penalty",type:"slider",label:"abc_repetition_penalty",label_en:"ABC repetition penalty",default:1.005,minimum:.1,maximum:2,step:.001},{name:"abc_penalty_window",type:"number",label:"abc_penalty_window",label_en:"ABC penalty window",default:100,minimum:1,step:1,precision:0},{name:"abc_min_tokens",type:"number",label:"abc_min_tokens",label_en:"ABC min tokens",default:32,minimum:0,step:1,precision:0},{name:"abc_max_tokens",type:"number",label:"abc_max_tokens",label_en:"ABC max tokens",default:4096,minimum:1,step:1,precision:0},{name:"semantic_temperature",type:"slider",label:"semantic_temperature",label_en:"Semantic temperature",default:1,minimum:0,maximum:2,step:.05},{name:"semantic_top_p",type:"slider",label:"semantic_top_p",label_en:"Semantic top-p",default:.95,minimum:.01,maximum:1,step:.01},{name:"semantic_top_k",type:"number",label:"semantic_top_k",label_en:"Semantic top-k",default:100,minimum:1,step:1,precision:0},{name:"semantic_repetition_penalty",type:"slider",label:"semantic_repetition_penalty",label_en:"Semantic repetition penalty",default:1.2,minimum:.1,maximum:2,step:.01},{name:"semantic_penalty_window",type:"number",label:"semantic_penalty_window",label_en:"Semantic penalty window",default:50,minimum:1,step:1,precision:0},{name:"semantic_min_tokens",type:"number",label:"semantic_min_tokens",label_en:"Semantic min tokens",default:200,minimum:0,step:1,precision:0},{name:"semantic_max_tokens",type:"number",label:"semantic_max_tokens",label_en:"Semantic max tokens",default:9e3,minimum:1,step:1,precision:0}],minimax_h3:[{name:"num_inference_steps",type:"number",label:"Denoising steps",default:12,minimum:1,maximum:50,step:1,precision:0,info:"Twelve denoising steps provide a practical quality and performance balance."},{name:"num_frames",type:"number",label:"Output frames",default:241,minimum:5,maximum:1441,step:4,precision:0,info:"Approximately 24 frames per output second; 241 frames produces about 10 seconds of audio."},{name:"guidance_scale",type:"slider",label:"Guidance scale",default:1,minimum:0,maximum:5,step:.1},{name:"sampler",type:"choice",label:"Sampler",default:"euler",choices:["euler","res_multistep","dpmpp_2m","unipc"]},{name:"dit_acceleration",type:"choice",label:"DiT acceleration",default:"none",choices:["none","spectrum","first_block_cache"],info:"None uses the quality-first full-DiT path. Acceleration modes are experimental and may distort some outputs."},{name:"return_video",type:"bool",label:"Decode video",default:!1,info:"Disabled by default to reduce memory use and return audio only."}],stable_audio:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:8,minimum:1,step:1,precision:0,info:"RF 扩散步数"},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:1,minimum:0,maximum:5,step:.1},{name:"audio_input_kind",type:"choice",label:"audio_input_kind(仅上传源音频时生效)",default:"init_audio",choices:["init_audio","inpaint_audio"]},{name:"init_noise_level",type:"slider",label:"init_noise_level(init_audio 强度)",default:1,minimum:0,maximum:1,step:.05}],seed_vc:[{name:"route",type:"choice",label:"route(转换路径)",default:"",choices:["","v2_vc","v1_whisper_bigvgan_vc","v1_xlsr_hift_vc","v1_svc"],info:"留空=按任务默认"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:30,minimum:1,step:1,precision:0,info:"CFM 扩散步数"},{name:"length_adjust",type:"slider",label:"length_adjust(时长伸缩)",default:1,minimum:.5,maximum:2,step:.05},{name:"intelligibility_cfg_rate",type:"slider",label:"intelligibility_cfg_rate(仅 v2_vc)",default:.7,minimum:0,maximum:1,step:.05},{name:"similarity_cfg_rate",type:"slider",label:"similarity_cfg_rate(仅 v2_vc)",default:.7,minimum:0,maximum:1,step:.05},{name:"inference_cfg_rate",type:"slider",label:"inference_cfg_rate(仅 v1 路径)",default:.7,minimum:0,maximum:1,step:.05}],rvc:[{name:"voice_id",type:"choice",label:"voice_id(打包音色)",label_en:"voice_id",default:"default",choices:["default","manthos","chocola","fraise"]},{name:"voice_model_path",type:"text",label:"voice_model_path(自定义 RVC .pth/.pt)",label_en:"voice_model_path",default:"",placeholder:"留空=使用打包音色"},{name:"retrieval_index_path",type:"text",label:"retrieval_index_path(FAISS index)",label_en:"retrieval_index_path",default:"",placeholder:"可选 .index 路径"},{name:"retrieval_blend",type:"slider",label:"retrieval_blend",default:0,minimum:0,maximum:1,step:.05},{name:"semitone_shift",type:"number",label:"semitone_shift(半音变调)",label_en:"semitone_shift",default:0,step:1,precision:0},{name:"pitch_filter_radius",type:"number",label:"pitch_filter_radius",default:3,minimum:0,step:1,precision:0},{name:"output_sample_rate",type:"number",label:"output_sample_rate(0=跟随音色)",label_en:"output_sample_rate (0 = voice default)",default:0,minimum:0,step:1e3,precision:0},{name:"rms_mix_rate",type:"slider",label:"rms_mix_rate",default:.25,minimum:0,maximum:1,step:.05},{name:"unvoiced_protection",type:"slider",label:"unvoiced_protection",default:.33,minimum:0,maximum:1,step:.01},{name:"speaker_id",type:"number",label:"speaker_id",default:0,minimum:0,step:1,precision:0},{name:"audio_pad_duration_sec",type:"number",label:"audio_pad_duration_sec",default:1,minimum:1,step:1,precision:0},{name:"split_query_sec",type:"number",label:"split_query_sec",default:5,minimum:1,step:1,precision:0},{name:"split_center_sec",type:"number",label:"split_center_sec",default:30,minimum:1,step:1,precision:0},{name:"split_threshold_sec",type:"number",label:"split_threshold_sec",default:32,minimum:1,step:1,precision:0}],meanvc2:[{name:"seed",type:"number",label:"seed",default:42,minimum:0,step:1,precision:0}],personaplex:[{name:"voice_id",type:"choice",label:"voice_id(打包音色)",label_en:"voice_id (packaged voice)",default:"NATF2",choices:["NATF0","NATF1","NATF2","NATF3","NATM0","NATM1","NATM2","NATM3","VARF0","VARF1","VARF2","VARF3","VARF4","VARM0","VARM1","VARM2","VARM3","VARM4"]},{name:"system_prompt",type:"text",label:"system_prompt",default:"",placeholder:"Leave blank to use the text box as the system prompt."},{name:"temperature",type:"slider",label:"temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"text_temperature",type:"slider",label:"text_temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:250,minimum:0,step:1,precision:0},{name:"text_top_k",type:"number",label:"text_top_k",default:250,minimum:0,step:1,precision:0},{name:"do_sample",type:"bool",label:"do_sample",default:!0}],vevo2:[{name:"route",type:"choice",label:"route(任务路线)",default:"",choices:["","style_preserved_vc","style_converted_vc","style_preserved_svc","style_converted_svc","singing_style_conversion","editing"],info:"留空=按任务默认;详见 webui/README.md"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:32,minimum:1,step:1,precision:0,info:"流匹配步数"},{name:"use_pitch_shift",type:"choice",label:"use_pitch_shift(自动音高对齐)",default:"",choices:["","true","false"],info:"留空=按路线默认"},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec(源音频分段秒数)",default:0,minimum:0,step:1,info:"0=关闭;仅用于 source-audio VC/SVC 路线"},{name:"cross_fade_duration_sec",type:"number",label:"cross_fade_duration_sec(分段重叠/淡化秒数)",default:1,minimum:0,step:.1,info:"source-audio 分段启用时作为输入重叠和输出交叉淡化时长"},{name:"temperature",type:"slider",label:"temperature(AR 路线用)",default:.7,minimum:0,maximum:2,step:.05,info:"默认取自模型 generation_config.json"},{name:"top_k",type:"number",label:"top_k(AR 路线用)",default:20,minimum:0,step:1,precision:0,info:"默认取自模型 generation_config.json"},{name:"top_p",type:"slider",label:"top_p(AR 路线用)",default:.8,minimum:0,maximum:1,step:.01}],heartmula:[{name:"tags",type:"text",label:"tags(逗号分隔)",default:"pop",placeholder:"pop,bright,drums,female vocals",info:"风格/情绪/乐器/人声标签"},{name:"temperature",type:"slider",label:"temperature",default:1,minimum:0,maximum:2,step:.05},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale(MuLa CFG)",default:1.5,minimum:0,maximum:5,step:.1},{name:"num_inference_steps",type:"number",label:"num_inference_steps(codec 步数)",default:10,minimum:1,step:1,precision:0},{name:"infinite_mode",type:"bool",label:"infinite_mode(长输出分段生成)",default:!1},{name:"codec_guidance_scale",type:"slider",label:"codec_guidance_scale",default:1.25,minimum:0,maximum:5,step:.05}],index_tts2:[{name:"lang",type:"choice",label:"lang(语种提示, 仅 IndexTTS2.5 模型)",label_en:"lang (language hint, IndexTTS2.5 models only)",default:"auto",choices:["auto","zh","en","ja","es","ar"],info:"仅对 IndexTTS2.5(多语种)模型生效:auto 含汉字按中文,否则按英文;日/西/阿建议显式选择",info_en:"Only applies to IndexTTS2.5 (multilingual) models: auto picks zh when the text contains Han characters, otherwise en; set ja/es/ar explicitly"},{name:"emotion_text",type:"text",label:"emotion_text(情绪参考文本)",label_en:"emotion_text (emotion reference text)",default:"",placeholder:"例:你吓死我了!你是鬼吗?",placeholder_en:"e.g. You scared me to death!",info:"填写后自动开启情感条件(use_emotion_text)",info_en:"Setting this enables emotion conditioning."},{name:"emotion_alpha",type:"slider",label:"emotion_alpha(情感强度)",label_en:"emotion_alpha",default:1,minimum:0,maximum:1,step:.05},{name:"use_emotion_text",type:"bool",label:"use_emotion_text(从朗读文本推断情感)",label_en:"use_emotion_text (infer from text)",default:!1},{name:"use_random_emotion",type:"bool",label:"use_random_emotion(随机情感)",label_en:"use_random_emotion",default:!1},{name:"interval_silence_ms",type:"number",label:"interval_silence_ms(分段间静音)",label_en:"interval_silence_ms",default:200,minimum:0,step:50,precision:0},{name:"duration_factor",type:"slider",label:"duration_factor(语速/时长倍率,>1 更慢,<1 更快)",label_en:"duration_factor (duration multiplier; >1 slower, <1 faster)",default:1,minimum:.5,maximum:2,step:.05,info:"对齐官方 IndexTTS2.5 的 duration_factor:缩放输出时长,不改变音色/内容",info_en:"Matches official IndexTTS2.5 duration_factor: scales output duration without changing timbre or content"}],zipvoice:[{name:"guidance_scale",type:"slider",label:"guidance_scale(引导强度,0=关闭)",label_en:"guidance_scale (0 disables CFG)",default:3,minimum:0,maximum:10,step:.5},{name:"num_inference_steps",type:"number",label:"num_inference_steps(Euler 步数)",label_en:"num_inference_steps",default:8,minimum:1,maximum:64,step:1,precision:0},{name:"t_shift",type:"slider",label:"t_shift(时间步偏移,越小越偏低 SNR)",label_en:"t_shift (timestep shift)",default:.5,minimum:.05,maximum:1,step:.05},{name:"speed",type:"slider",label:"speed(语速倍率)",label_en:"speed (duration multiplier)",default:1,minimum:.5,maximum:2,step:.05},{name:"lang",type:"text",label:"lang(英文段 espeak 语言)",label_en:"lang (espeak voice for English runs)",default:"en-us",placeholder:"en-us"}],irodori_tts:[{name:"num_inference_steps",type:"number",label:"num_inference_steps(RF 扩散步数)",label_en:"num_inference_steps",default:40,minimum:1,step:1,precision:0},{name:"duration_sec",type:"number",label:"duration_sec(0=模型自动预测时长)",label_en:"duration_sec (0 = auto)",default:0,minimum:0,step:.5},{name:"duration_scale",type:"slider",label:"duration_scale(语速倒数,越大越慢)",label_en:"duration_scale",default:1,minimum:.5,maximum:2,step:.05}],moss_tts_local:[{name:"do_sample",type:"bool",label:"do_sample",default:!0},{name:"temperature",type:"slider",label:"temperature",default:1.7,minimum:0,maximum:2.5,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:25,minimum:0,step:1,precision:0},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1,minimum:1,maximum:2,step:.01}],moss_tts_v15:[{name:"instruct",type:"text",label:"instruct(音色描述)",label_en:"instruct (voice description)",default:"",placeholder:"参考音频比文字描述更可靠",placeholder_en:"A reference recording is more reliable than a description."},{name:"language",type:"choice",label:"language(语言)",label_en:"language",default:"",choices:["","English","Chinese"]},{name:"temperature",type:"slider",label:"temperature",default:1.5,minimum:0,maximum:3,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.6,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1.1,minimum:1,maximum:2,step:.01}],moss_tts_nano:[{name:"do_sample",type:"bool",label:"do_sample",default:!0},{name:"temperature",type:"slider",label:"temperature",default:1.7,minimum:0,maximum:2.5,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:25,minimum:0,step:1,precision:0},{name:"repetition_penalty",type:"slider",label:"repetition_penalty",default:1,minimum:1,maximum:2,step:.01}],audiosr:[{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:50,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:3.5,minimum:0,maximum:10,step:.1},{name:"ddim_eta",type:"slider",label:"ddim_eta",default:1,minimum:0,maximum:1,step:.05},{name:"audio_chunk_duration_sec",type:"number",label:"audio_chunk_duration_sec",default:15,minimum:1,step:1},{name:"audio_chunk_overlap_sec",type:"number",label:"audio_chunk_overlap_sec",default:2,minimum:0,step:.5}],controlfoley:[{name:"duration_sec",type:"number",label:"duration_sec",default:8,minimum:.1,step:.5},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:25,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:4.5,minimum:0,maximum:10,step:.1},{name:"negative_prompt",type:"text",label:"negative_prompt",default:"",placeholder:"optional negative prompt"},{name:"mask_away_clip",type:"bool",label:"mask_away_clip",default:!1}],midashenglm_gen:[{name:"duration_sec",type:"number",label:"duration_sec",default:20,minimum:.1,step:.5},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"stop_threshold",type:"slider",label:"stop_threshold",default:.5,minimum:0,maximum:1,step:.05},{name:"min_stop_step",type:"number",label:"min_stop_step",default:5,minimum:0,step:1,precision:0}],"fireredtts3-base":[{name:"language",type:"choice",label:"language",default:"Chinese",choices:["Chinese","English","Cantonese","Japanese","Korean","Spanish","French","Russian","Arabic","Turkish","Indonesian","Portuguese","Italian","Dutch","Vietnamese","German","Ukrainian","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","ZH_Anhui","ZH_Fujian","ZH_Gansu","ZH_Guizhou","ZH_Hebei","ZH_Henan","ZH_Hubei","ZH_Hunan","ZH_Jiangxi","ZH_Liaoning","ZH_Minnan","ZH_Ningxia","ZH_Shaanxi","ZH_Shandong","ZH_Shanghai","ZH_Shanxi","ZH_Sichuan","ZH_Tianjin","ZH_Wenzhou","ZH_Wu","ZH_Yunnan"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"stop_threshold",type:"slider",label:"stop_threshold",default:.5,minimum:0,maximum:1,step:.05}],"fireredtts3-instruct":[{name:"template_name",type:"choice",label:"template_name",default:"instruct_tts",choices:["instruct_tts"]},{name:"language",type:"choice",label:"language",default:"Chinese",choices:["Chinese","English","Cantonese","Japanese","Korean","Spanish","French","Russian","Arabic","Turkish","Indonesian","Portuguese","Italian","Dutch","Vietnamese","German","Ukrainian","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","ZH_Anhui","ZH_Fujian","ZH_Gansu","ZH_Guizhou","ZH_Hebei","ZH_Henan","ZH_Hubei","ZH_Hunan","ZH_Jiangxi","ZH_Liaoning","ZH_Minnan","ZH_Ningxia","ZH_Shaanxi","ZH_Shandong","ZH_Shanghai","ZH_Shanxi","ZH_Tianjin","ZH_Wenzhou","ZH_Wu","ZH_Yunnan"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"stop_threshold",type:"slider",label:"stop_threshold",default:.5,minimum:0,maximum:1,step:.05},{name:"text_chunk_size",type:"number",label:"text_chunk_size",default:600,minimum:1,step:1,precision:0},{name:"text_chunk_mode",type:"choice",label:"text_chunk_mode",default:"default",choices:["default","tag_aware","japanese","endline"]}],"fireredtts3-instruct-vdesign":[{name:"template_name",type:"choice",label:"template_name",default:"voice_design",choices:["voice_design"]},{name:"language",type:"choice",label:"language",default:"Chinese",choices:["Chinese","English","Cantonese","Japanese","Korean","Spanish","French","Russian","Arabic","Turkish","Indonesian","Portuguese","Italian","Dutch","Vietnamese","German","Ukrainian","Thai","Polish","Romanian","Greek","Czech","Finnish","Hindi","ZH_Anhui","ZH_Fujian","ZH_Gansu","ZH_Guizhou","ZH_Hebei","ZH_Henan","ZH_Hubei","ZH_Hunan","ZH_Jiangxi","ZH_Liaoning","ZH_Minnan","ZH_Ningxia","ZH_Shaanxi","ZH_Shandong","ZH_Shanghai","ZH_Shanxi","ZH_Tianjin","ZH_Wenzhou","ZH_Wu","ZH_Yunnan"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"stop_threshold",type:"slider",label:"stop_threshold",default:.5,minimum:0,maximum:1,step:.05}],"firered-audio-tts":[{name:"template_name",type:"choice",label:"template_name",default:"tts_clone",choices:["tts_clone"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"max_new_audio_steps",type:"number",label:"max_new_audio_steps",default:750,minimum:1,step:1,precision:0},{name:"top_k",type:"number",label:"top_k",default:20,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"temperature",type:"slider",label:"temperature",default:.7,minimum:0,maximum:2,step:.05}],"firered-audio-vdesign":[{name:"template_name",type:"choice",label:"template_name",default:"voice_design",choices:["voice_design"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"max_new_audio_steps",type:"number",label:"max_new_audio_steps",default:750,minimum:1,step:1,precision:0}],"firered-audio-semantic-edit":[{name:"template_name",type:"choice",label:"template_name",default:"semantic_edit",choices:["semantic_edit"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"instruction",type:"text",label:"instruction",default:"",placeholder:"delete '比普通的茶叶要'"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"max_new_audio_steps",type:"number",label:"max_new_audio_steps",default:750,minimum:1,step:1,precision:0},{name:"max_new_text_tokens",type:"number",label:"max_new_text_tokens",default:512,minimum:1,step:1,precision:0}],"firered-audio-acoustic-edit":[{name:"template_name",type:"choice",label:"template_name",default:"acoustic_edit",choices:["acoustic_edit"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"instruction",type:"text",label:"instruction",default:"shift the pitch by 3 steps",placeholder:"shift the pitch by 3 steps"},{name:"num_inference_steps",type:"number",label:"num_inference_steps",default:10,minimum:1,step:1,precision:0},{name:"guidance_scale",type:"slider",label:"guidance_scale",default:2,minimum:0,maximum:10,step:.1},{name:"max_new_audio_steps",type:"number",label:"max_new_audio_steps",default:750,minimum:1,step:1,precision:0}],"firered-audio-asr":[{name:"template_name",type:"choice",label:"template_name",default:"asr",choices:["asr","understand"]},{name:"language",type:"choice",label:"language",default:"zh",choices:["zh","en"]},{name:"enable_thinking",type:"bool",label:"enable_thinking",default:!1},{name:"max_new_tokens",type:"number",label:"max_new_tokens",default:512,minimum:1,step:1,precision:0},{name:"top_k",type:"number",label:"top_k",default:20,minimum:0,step:1,precision:0},{name:"top_p",type:"slider",label:"top_p",default:.8,minimum:0,maximum:1,step:.01},{name:"temperature",type:"slider",label:"temperature",default:.7,minimum:0,maximum:2,step:.05}],sopro_tts:[{name:"language",type:"choice",label:"language",label_en:"Language tag",default:"",choices:["","en","pt","fr","de"],info:"Optional <|lang_xx|> tag; helps pronunciation on ambiguous text."},{name:"temperature",type:"slider",label:"temperature",label_en:"Temperature",default:.8,minimum:0,maximum:2,step:.05},{name:"top_p",type:"slider",label:"top_p",label_en:"Top-p",default:.9,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",label_en:"Top-k",default:25,minimum:0,step:1,precision:0,info:"0 disables top-k truncation."},{name:"num_inference_steps",type:"number",label:"num_inference_steps",label_en:"Acoustic steps",default:2,minimum:1,maximum:32,step:1,precision:0,info:"Rectified-flow Euler steps for the acoustic head."},{name:"max_seconds",type:"number",label:"max_seconds",label_en:"Max seconds per segment",default:30,minimum:1,maximum:60,step:.5,precision:1},{name:"min_seconds",type:"number",label:"min_seconds",label_en:"Min seconds per segment",default:.4,minimum:0,maximum:10,step:.1,precision:1,info:"Must not exceed max_seconds."},{name:"ref_seconds",type:"number",label:"ref_seconds",label_en:"Reference seconds",default:10,minimum:1,maximum:30,step:.5,precision:1,info:"Reference window used for cloning."},{name:"text_chunk_size",type:"number",label:"text_chunk_size",label_en:"Segment size",default:300,minimum:20,maximum:2e3,step:10,precision:0,info:"Max codepoints per synthesis segment."}],supertonic:[{name:"voice",type:"choice",label:"voice(预置音色:M 男声 / F 女声)",label_en:"voice (M = male, F = female presets)",default:"M1",choices:["M1","M2","M3","M4","M5","F1","F2","F3","F4","F5"]},{name:"speaking_rate",type:"slider",label:"speaking_rate(语速倍率)",label_en:"speaking_rate",default:1.05,minimum:.5,maximum:2,step:.05},{name:"num_inference_steps",type:"number",label:"num_inference_steps(流匹配步数)",label_en:"num_inference_steps",default:8,minimum:1,step:1,precision:0}],audio8_tts:[{name:"temperature",type:"slider",label:"temperature",default:.7,minimum:0,maximum:2,step:.05},{name:"top_p",type:"slider",label:"top_p",default:.9,minimum:0,maximum:1,step:.01},{name:"top_k",type:"number",label:"top_k",default:50,minimum:0,step:1,precision:0},{name:"max_tokens",type:"number",label:"max_tokens",default:1024,minimum:1,step:1,precision:0}]},U1=Object.assign({"../../../../model_specs/ace_step.json":d5,"../../../../model_specs/apollo.json":u5,"../../../../model_specs/ast_audioset.json":f5,"../../../../model_specs/audio8_asr.json":m5,"../../../../model_specs/audio8_tts.json":p5,"../../../../model_specs/audio_flamingo.json":g5,"../../../../model_specs/audiosr.json":h5,"../../../../model_specs/auk.json":_5,"../../../../model_specs/breeze_tts.json":v5,"../../../../model_specs/bs_roformer.json":b5,"../../../../model_specs/builtin_audio_utils.json":y5,"../../../../model_specs/canary_asr.json":w5,"../../../../model_specs/ced.json":k5,"../../../../model_specs/chatterbox.json":x5,"../../../../model_specs/chatterbox_turbo.json":S5,"../../../../model_specs/citrinet_asr.json":T5,"../../../../model_specs/cohere_asr.json":$5,"../../../../model_specs/confucius4_r2t2.json":q5,"../../../../model_specs/confucius4_tts.json":G5,"../../../../model_specs/controlfoley.json":F5,"../../../../model_specs/cosyvoice3.json":A5,"../../../../model_specs/crisperwhisper.json":C5,"../../../../model_specs/dots_tts.json":M5,"../../../../model_specs/dramabox.json":E5,"../../../../model_specs/echo_tts.json":z5,"../../../../model_specs/f5_tts.json":U5,"../../../../model_specs/firered_audio.json":B5,"../../../../model_specs/firered_vad.json":R5,"../../../../model_specs/fireredtts3.json":j5,"../../../../model_specs/fish_audio.json":P5,"../../../../model_specs/fish_drama3.json":N5,"../../../../model_specs/fun_asr_nano.json":O5,"../../../../model_specs/gigaam_asr.json":I5,"../../../../model_specs/glm_tts.json":L5,"../../../../model_specs/gradium_phonon.json":D5,"../../../../model_specs/granite5asr.json":V5,"../../../../model_specs/heartmula.json":H5,"../../../../model_specs/higgs_audio_stt.json":W5,"../../../../model_specs/higgs_audio_tts.json":Q5,"../../../../model_specs/htdemucs.json":K5,"../../../../model_specs/htdemucs_6stems.json":Y5,"../../../../model_specs/hviske_asr.json":X5,"../../../../model_specs/hviske_asr_v6.json":J5,"../../../../model_specs/index_echo.json":Z5,"../../../../model_specs/index_tts2.json":eS,"../../../../model_specs/inflect_v2.json":tS,"../../../../model_specs/irodori_tts.json":iS,"../../../../model_specs/kitten_tts.json":aS,"../../../../model_specs/kitten_tts2.json":nS,"../../../../model_specs/kokoro_tts.json":sS,"../../../../model_specs/kroko_asr.json":rS,"../../../../model_specs/kugelaudio.json":oS,"../../../../model_specs/latentsync.json":lS,"../../../../model_specs/lfm2_audio.json":cS,"../../../../model_specs/liveavatar.json":dS,"../../../../model_specs/magpie_tts.json":uS,"../../../../model_specs/maya1.json":fS,"../../../../model_specs/meanvc2.json":mS,"../../../../model_specs/mel_band_roformer.json":pS,"../../../../model_specs/micro_wake_word.json":gS,"../../../../model_specs/midashenglm_gen.json":hS,"../../../../model_specs/ming3_audio.json":_S,"../../../../model_specs/ming3_tts.json":vS,"../../../../model_specs/minimax_h3.json":bS,"../../../../model_specs/minimax_music3.json":yS,"../../../../model_specs/miocodec.json":wS,"../../../../model_specs/miotts.json":kS,"../../../../model_specs/mira_tts.json":xS,"../../../../model_specs/mms_forced_aligner.json":SS,"../../../../model_specs/moonshine_asr.json":TS,"../../../../model_specs/moss_transcribe_diarize.json":$S,"../../../../model_specs/moss_tts_local.json":qS,"../../../../model_specs/moss_tts_nano.json":GS,"../../../../model_specs/moss_tts_v15.json":FS,"../../../../model_specs/moss_ttsd.json":AS,"../../../../model_specs/moss_voicegen.json":CS,"../../../../model_specs/mossformer2.json":MS,"../../../../model_specs/muscriptor.json":ES,"../../../../model_specs/nemotron_3_diar.json":zS,"../../../../model_specs/nemotron_asr.json":US,"../../../../model_specs/neutts.json":BS,"../../../../model_specs/niagara_asr.json":RS,"../../../../model_specs/omnivoice.json":jS,"../../../../model_specs/open_wake_word.json":PS,"../../../../model_specs/outetts.json":NS,"../../../../model_specs/owsm.json":OS,"../../../../model_specs/owsm_ctc.json":IS,"../../../../model_specs/parakeet_tdt.json":LS,"../../../../model_specs/personaplex.json":DS,"../../../../model_specs/piper_tts.json":VS,"../../../../model_specs/plapre.json":HS,"../../../../model_specs/pocket_tts.json":WS,"../../../../model_specs/pulsevad.json":QS,"../../../../model_specs/qwen3_asr.json":KS,"../../../../model_specs/qwen3_forced_aligner.json":YS,"../../../../model_specs/qwen3_tts.json":XS,"../../../../model_specs/reuse.json":JS,"../../../../model_specs/rvc.json":ZS,"../../../../model_specs/sam_audio.json":e8,"../../../../model_specs/samsone.json":t8,"../../../../model_specs/sanotts.json":i8,"../../../../model_specs/seed_vc.json":a8,"../../../../model_specs/sense_asr.json":n8,"../../../../model_specs/sheetsage2.json":s8,"../../../../model_specs/sherpa_kws.json":r8,"../../../../model_specs/sidon.json":o8,"../../../../model_specs/smart_turn.json":l8,"../../../../model_specs/soprano_tts.json":c8,"../../../../model_specs/sopro_tts.json":d8,"../../../../model_specs/sortformer_diar.json":u8,"../../../../model_specs/sortformer_diar_v2.json":f8,"../../../../model_specs/stable_audio.json":m8,"../../../../model_specs/supertonic.json":p8,"../../../../model_specs/tf_gridnet.json":g8,"../../../../model_specs/tone_color_vc.json":h8,"../../../../model_specs/universr.json":_8,"../../../../model_specs/vevo2.json":v8,"../../../../model_specs/vibeasr.json":b8,"../../../../model_specs/vibevoice.json":y8,"../../../../model_specs/vibevoice_asr.json":w8,"../../../../model_specs/vibevoice_asr_streaming.json":k8,"../../../../model_specs/vieneu_v3_turbo.json":x8,"../../../../model_specs/voxcpm1.json":S8,"../../../../model_specs/voxcpm2.json":T8,"../../../../model_specs/voxtral_realtime.json":$8,"../../../../model_specs/voxtral_tts.json":q8,"../../../../model_specs/whistle_asr.json":G8,"../../../../model_specs/xtts_v2.json":F8,"../../../../model_specs/yue2.json":A8,"../../../../model_specs/zipvoice.json":C8}),hc=Object.values(U1).flatMap(t=>(t.packages||[]).map(e=>({...e,family:t.family}))),B1=new Map(Object.values(U1).map(t=>[t.family,t])),z8=new Set(["ming3_tts","ming3_audio","latentsync","xtts_v2","canary_asr","cohere_asr","moss_transcribe_diarize","confucius4_r2t2","audiosr","controlfoley","breeze_tts","cosyvoice3","firered_audio","fireredtts3","irodori_tts","kitten_tts2","kokoro_tts","meanvc2","midashenglm_gen","sanotts","mossformer2","plapre","voxtral_tts"]),U8=/[\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff]/u;function _c(t,e){for(const a of[t,e])if(a&&!U8.test(a))return a;return""}function B8(t,e,a){return _c(e,a)||t.replace(/_/g," ")}const R1=t=>t.replace(/\\/g,"/").replace(/^\.\//,"").replace(/^models\//i,"").replace(/\/$/,"").toLowerCase(),j1=t=>t.toLowerCase().replace(/[^a-z0-9]/g,"");function om(t){return t.find(e=>e.default)||t.find(e=>e.precision==="q8_0")||t[0]}function P1(t){const e=hc.filter(l=>l.family===t.family);if(!e.length)return[];if(t.family==="ace_step"||t.family==="minimax_music3"||!t.download_id)return e;const a=e.find(l=>l.id===t.download_id);if(a){const l=a.id.replace(/_(?:q8_0|q8|f16|fp16|bf16|safetensors|orig)$/i,""),u=e.filter(p=>p.id.replace(/_(?:q8_0|q8|f16|fp16|bf16|safetensors|orig)$/i,"")===l);return u.length?u:[a]}const n=j1(t.download_id),s=e.filter(l=>{const u=j1(l.id);return u.startsWith(n)||n.startsWith(u)});if(s.length)return s;const r=R1(t.path),o=e.filter(l=>R1(l.target_directory)===r);if(o.length){const l=new Set(o.map(p=>p.id.replace(/_(?:q8_0|q8|f16|fp16|bf16|safetensors|orig)$/i,""))),u=e.filter(p=>l.has(p.id.replace(/_(?:q8_0|q8|f16|fp16|bf16|safetensors|orig)$/i,"")));return u.length?u:o}return e}function R8(t){const e=hc.filter(s=>s.family===t.family&&s.format==="gguf");if(!e.length)return[];if(t.family==="sanotts"||t.family==="xtts_v2"||!t.download_id)return e;const a=e.find(s=>s.id===t.download_id);if(!a)return P1(t);const n=e.filter(s=>s.target_directory===a.target_directory);return n.length?n:[a]}function N1(t,e){return e&&t.id===e?0:t.default?1:["q4_k","q4_0","q8_0","q8"].includes(t.precision)?2:["f16","fp16","bf16"].includes(t.precision)?3:t.precision==="f32"?4:t.precision==="orig"?5:6}function vc(t){if(t.family==="sanotts"){if(t.id.includes("_heart_nano_"))return"Heart Nano";if(t.id.includes("_heart_"))return"Heart";if(t.id.includes("_amy_"))return"Amy";if(t.id.includes("_hfc_"))return"HFC";if(t.id.includes("_kristin_"))return"Kristin";if(t.id.includes("_vi_"))return"Vietnamese";if(t.id.includes("_id_"))return"Indonesian";if(t.id.includes("_cs_"))return"Czech";if(t.id.includes("_de_"))return"German";if(t.id.includes("_es_"))return"Spanish";if(t.id.includes("_fr_"))return"French";if(t.id.includes("_it_"))return"Italian";if(t.id.includes("_pt_"))return"Portuguese (Brazil)";if(t.id.includes("_ro_"))return"Romanian";if(t.id.includes("_ru_"))return"Russian";if(t.id.includes("_tr_"))return"Turkish";if(t.id.includes("_ne_"))return"Nepali";if(t.id.includes("_hi_"))return"Hindi"}if(t.family==="ace_step"){const e=t.precision==="bf16"?"BF16":["q8_0","q8"].includes(t.precision)?"Q8":t.precision.toUpperCase();return t.id.includes("_xl_turbo_")?`GGUF Turbo XL ${e}`:t.id.includes("_xl_sft_")?`GGUF Turbo XL SFT ${e}`:t.id.includes("_turbo_")?`GGUF Turbo ${e}`:`GGUF ${e}`}return t.family==="irodori_tts"&&t.id.includes("_anime_")?"Anime Q8":t.family==="yue2"?t.id==="yue2_main_q8_0"?"Main Q8_0":t.id==="yue2_main_q4_0"?"Main Q4_0":t.id==="yue2_main_bf16"?"Main BF16":t.id==="yue2_vae_f16"?"VAE F16":t.id==="yue2_vae_f32"?"VAE F32":t.display_name||"Yue2 component":t.family==="auk"?t.id==="auk_base_f32"?"Base F32":t.id==="auk_base_f16"?"Base F16":t.id==="auk_base_q8_0"?"Base Q8_0":t.id==="auk_flash_f32"?"AuK-Flash F32":t.id==="auk_flash_f16"?"AuK-Flash F16":t.id==="auk_flash_q8_0"?"AuK-Flash Q8_0":t.id==="auk_qwen_bf16"?"Qwen BF16":t.id==="auk_qwen_q8_0"?"Qwen Q8_0":t.id==="auk_vae_f32"?"VAE F32":t.display_name||"AuK component":t.format==="safetensors"?"Safetensors":t.id.includes("int8_dit")?"GGUF Q4 ConvRot":t.precision==="q4_k"||t.precision==="q4_0"?"GGUF Q4":t.precision==="q8_0"||t.precision==="q8"?"GGUF Q8":t.precision==="bf16"?"GGUF BF16":t.precision==="f16"||t.precision==="fp16"?"GGUF FP16":`GGUF ${t.precision.toUpperCase()}`}function bc(t){let e;if(t.format==="gguf"&&t.family==="minimax_h3"){const s=t.id.includes("int8_dit")?"dit_int8.gguf":"dit.gguf";e=t.files?.find(r=>r.toLowerCase().endsWith(`/${s}`))}else{if(t.format==="gguf"&&["auk","lfm2_audio","liveavatar","minimax_music3","yue2"].includes(t.family))return`models/${t.target_directory}`;t.format==="gguf"&&(e=t.files?.find(s=>s.toLowerCase().endsWith(".gguf")))}if(!e)return`models/${t.target_directory}`;let a=e.replace(/\\/g,"/");const n=(t.strip_prefix||"").replace(/\\/g,"/").replace(/\/$/,"");return n&&a.startsWith(`${n}/`)&&(a=a.slice(n.length+1)),`models/${t.target_directory}/${a}`.replace(/\/+/g,"/")}function Dd(t){if(t.family==="lfm2_audio"){const e=t.files?.find(a=>!a.startsWith("mmproj-"));return e?{"lfm2_audio.model_gguf":e}:void 0}if(t.family==="minimax_music3"){if(t.id==="minimax_music3_q8_0")return{"minimax_music3.language_model_gguf":"language_model_q8_0.gguf","minimax_music3.rvq_depth_decoder_gguf":"rvq_depth_decoder_q8_0.gguf","minimax_music3.flow_transformer_gguf":"transformer_q8_0.gguf"};if(t.id==="minimax_music3_bf16")return{"minimax_music3.language_model_gguf":"language_model_bf16.gguf","minimax_music3.rvq_depth_decoder_gguf":"rvq_depth_decoder_bf16.gguf","minimax_music3.flow_transformer_gguf":"transformer_bf16.gguf"};if(t.id==="minimax_music3_q4_0")return{"minimax_music3.language_model_gguf":"language_model_q4_0.gguf","minimax_music3.rvq_depth_decoder_gguf":"rvq_depth_decoder_q8_0.gguf","minimax_music3.flow_transformer_gguf":"transformer_q4_0.gguf"}}}function j8(t){if(["maya1","gigaam_asr","samsone","sam_audio","tone_color_vc","moss_ttsd","moss_voicegen","kugelaudio","crisperwhisper","index_echo","audio_flamingo","owsm","owsm_ctc","reuse","sidon","smart_turn"].includes(t.family)){const o=(t.download_id||"").replace(/_(?:q8_0|q4_k|bf16|f16|f32|orig)(?:_codec_f16(?:_decode)?)?$/,"");return hc.filter(l=>l.family===t.family&&l.format==="gguf"&&l.id.replace(/_(?:q8_0|q4_k|bf16|f16|f32|orig)(?:_codec_f16(?:_decode)?)?$/,"")===o).sort((l,u)=>+(u.id===t.download_id)-+(l.id===t.download_id)).map(l=>({id:l.id,label:vc(l),path:bc(l),format:l.format,precision:l.precision}))}const e=z8.has(t.family);if(t.family==="auk"){const o=hc.filter(u=>u.family===t.family&&u.format==="gguf"),l=new Map([["auk_base_f32",0],["auk_base_f16",1],["auk_base_q8_0",2],["auk_flash_f32",3],["auk_flash_f16",4],["auk_flash_q8_0",5],["auk_qwen_bf16",6],["auk_qwen_q8_0",7],["auk_vae_f32",8]]);return o.sort((u,p)=>(l.get(u.id)??99)-(l.get(p.id)??99)).map(u=>({id:u.id,label:vc(u),path:bc(u),format:u.format,precision:u.precision,session_options:Dd(u)}))}if(t.family==="yue2"){const o=hc.filter(u=>u.family===t.family&&u.format==="gguf"),l=new Map([["yue2_main_q8_0",0],["yue2_main_q4_0",1],["yue2_main_bf16",2],["yue2_vae_f16",3],["yue2_vae_f32",4]]);return o.filter(u=>u.format==="gguf").sort((u,p)=>(l.get(u.id)??99)-(l.get(p.id)??99)).map(u=>({id:u.id,label:vc(u),path:bc(u),format:u.format,precision:u.precision,session_options:Dd(u)}))}const a=e?R8(t):P1(t);if(t.family==="ace_step"||t.family==="minimax_music3"||e)return a.filter(o=>o.format==="gguf").sort((o,l)=>e?N1(o,t.download_id)-N1(l,t.download_id):+(l.default===!0)-+(o.default===!0)).map(o=>({id:o.id,label:vc(o),path:bc(o),format:o.format,precision:o.precision,session_options:Dd(o)}));const n=om(a.filter(o=>o.format==="gguf"&&["q8_0","q8"].includes(o.precision))),s=om(a.filter(o=>o.format==="gguf"&&["f16","fp16"].includes(o.precision)))||om(a.filter(o=>o.format==="gguf"&&o.precision==="bf16")),r=!n&&!s?a.filter(o=>o.format==="gguf"):[];return[n,s,...r].filter(o=>o!==void 0).map(o=>({id:o.id,label:vc(o),path:bc(o),format:o.format,precision:o.precision,session_options:Dd(o)}))}const vn=M8.models.flatMap(t=>{const e=j8(t);if(t.download_id&&e.length===0)return[];const a=e[0],n=B1.get(t.family);return[{...t,display_name:_c(t.display_name_en,t.display_name)||t.id,input_hint:_c(t.input_hint_en,t.input_hint),download_id:a?.id||t.download_id,install_packages:e,path:a?.path||t.path,request_options:n?.options?.request?.map(s=>s.name),required_request_options:n?.options?.request?.filter(s=>s.required===!0).map(s=>s.name),builtin_voices:t.builtin_voices??n?.ui?.builtin_voices,default_voice:t.default_voice??n?.ui?.default_voice}]}),Vd=Object.fromEntries(Object.entries(E8).filter(t=>Array.isArray(t[1])).map(([t,e])=>[t,e.map(a=>({...a,label:B8(a.name,a.label_en,a.label),placeholder:_c(a.placeholder_en,a.placeholder),info:_c(a.info_en,a.info)}))]));for(const[t,e]of B1){const a=e.options?.session?.find(r=>r.name==="lora"),n=e.options?.session?.find(r=>r.name==="lora_scale"),s=Vd[t]||[];!a||!n||s.some(r=>r.session_option===`${t}.lora`)||(Vd[t]=[...s,{name:"lora",group:"lora",scope:"session",session_option:`${t}.lora`,type:"text",label:"Adapter path",default:"",info:a.description},{name:"lora_scale",group:"lora",scope:"session",session_option:`${t}.lora_scale`,type:"number",label:"Strength",default:n.default??"",minimum:n.min,maximum:n.max,step:.1,info:n.description}])}const P8={tts:"Text to speech",clon:"Voice cloning",asr:"Transcription",gen:"Music & sound",midi:"Audio to MIDI",vc:"Voice conversion",svc:"Singing conversion",s2s:"Speech editing",sep:"Source separation",vad:"Voice activity",diar:"Speaker diarization",align:"Forced alignment",vdes:"Voice design",spk:"Speaker analysis",turn:"Turn detection",wake:"Wake-word detection",cls:"Audio classification"},N8={code:"it",name:"Italiano",translations:JSON.parse(`{"request.minimaxFrames":"{frames} fotogrammi di output allineati","param.minimax_h3.num_inference_steps.label":"Passaggi di denoising","param.minimax_h3.num_inference_steps.info":"Dodici passaggi di denoising offrono un buon equilibrio tra qualità e prestazioni.","param.minimax_h3.num_frames.label":"Fotogrammi di output","param.minimax_h3.num_frames.info":"Calcolati dalla durata a circa 24 fotogrammi per secondo di output. Modificando i fotogrammi si aggiorna anche la durata.","param.minimax_h3.guidance_scale.label":"Scala di guida","param.minimax_h3.sampler.label":"Campionatore","param.minimax_h3.dit_acceleration.label":"Accelerazione DiT","param.minimax_h3.dit_acceleration.info":"None usa il percorso DiT completo orientato alla qualità. Le modalità accelerate sono sperimentali e possono distorcere alcuni risultati.","param.minimax_h3.return_video.label":"Decodifica video","param.minimax_h3.return_video.info":"Disattivata per impostazione predefinita per ridurre l'uso della memoria e restituire solo l'audio.","model.minimax_h3.hint":"MiniMax-H3 usa un DiT audio/video congiunto. GGUF Q4 privilegia la qualità; GGUF Q4 ConvRot, solo CUDA, usa un po' più VRAM per una maggiore velocità. Il percorso DiT completo predefinito privilegia la qualità audio e disattiva la decodifica video.","status.modelReady":"{model} è caricato e pronto.","status.runningTask":"Esecuzione di {task}...","status.completeIn":"Completato in {seconds} s.","status.packageAvailable":"{model} userà {format}. Ora è disponibile nello Studio.","app.nativeStudio":"Studio nativo","nav.studio":"Studio","nav.arena":"Arena","nav.models":"Modelli","nav.runtime":"Runtime","language.label":"Lingua dell'interfaccia","theme.label":"Tema","theme.system":"Sistema","theme.dark":"Scuro","theme.light":"Chiaro","workflow.tts":"Sintesi vocale","workflow.asr":"ASR / Trascrizione","workflow.music":"Generazione di musica e video","workflow.vc":"Conversione vocale","workflow.sep":"Separazione sorgenti","workflow.analysis":"Analisi audio","workflow.design":"Progettazione voce","studio.eyebrow":"INTELLIGENZA AUDIO LOCALE","studio.title":"Studio audio","studio.subtitle.tts":"Genera una voce naturale dal testo, con voci predefinite e clonazione quando supportate.","studio.subtitle.asr":"Trascrivi l'audio parlato in testo, con controlli di lingua e timestamp quando supportati.","studio.subtitle.music":"Crea musica e suoni da una descrizione, un testo o un audio di riferimento.","studio.subtitle.vc":"Trasforma una registrazione in un'altra voce conservando l'interpretazione parlata o cantata.","studio.subtitle.sep":"Separa una registrazione in voce, strumenti o altre tracce audio disponibili.","studio.subtitle.analysis":"Analizza attività vocale, parlanti, tempi e allineamento dell'audio.","studio.subtitle.design":"Crea o perfeziona una voce da una descrizione e dai controlli di riferimento supportati.","studio.model":"Modello","studio.noModel":"Nessun modello selezionato","studio.resident":"Caricato","studio.notInstalled":"Non installato","studio.available":"Disponibile","studio.chooseInstalled":"Scegli un modello installato","studio.notDownloaded":"non scaricato","studio.pathFound":"Percorso trovato","studio.pathMissing":"Percorso mancante","studio.pathUnknown":"Percorso non verificato","studio.load":"Carica modello","studio.unload":"Scarica modello","studio.working":"Elaborazione…","studio.bundledLoaded":"Integrato · caricato","request.label":"RICHIESTA","request.title":"Input e controlli","request.prompt":"Prompt","request.text":"Testo","request.splitLongText":"Dividi e unisci testi lunghi","request.charactersPerChunk":"Caratteri per segmento","request.language":"Lingua","request.autoLanguage":"vuoto = automatico","request.seed":"Seed","request.randomSeed":"-1 = casuale","request.maxTokens":"Token massimi","request.sourceAudio":"Audio sorgente","request.recordMicrophone":"Registra microfono","voice.quickStart":"Voci demo per avvio rapido","voice.useReference":"Usa un file audio di riferimento qui sotto","voice.reference":"Voce di riferimento","voice.required":"obbligatoria","voice.optional":"opzionale","voice.referenceText":"Testo di riferimento","voice.transcript":"Trascrizione di riferimento","voice.saved":"Voci salvate","voice.browserOnly":"solo in questo browser","voice.chooseSaved":"Scegli una voce salvata...","voice.libraryName":"Nome nella libreria","voice.save":"Salva voce","common.delete":"Elimina","common.cancel":"Annulla","common.close":"Chiudi","common.refresh":"Aggiorna","common.browse":"Sfoglia","common.apply":"Applica","options.modelParameters":"Parametri del modello","options.additional":"Opzioni aggiuntive","run.run":"Esegui","run.cancel":"Annulla","run.working":"Elaborazione…","result.title":"Risultato","result.label":"RISULTATO","result.saveWav":"Salva WAV","result.empty":"L'audio generato e i risultati strutturati appariranno qui.","models.eyebrow":"LIBRERIA MODELLI","models.title":"Pacchetti locali","models.subtitle":"Scarica e gestisci i pacchetti dei modelli senza uscire dall'interfaccia.","models.folder":"Cartella modelli","models.useDefault":"Usa predefinita","models.showTypes":"Mostra tipi di modello","models.stopDownload":"Interrompi download","models.cleanPartial":"Elimina download parziale","runtime.title":"Registro sessione","runtime.status":"Stato","runtime.backend":"Backend","runtime.registered":"Registrati","runtime.resident":"Caricati","runtime.noEvents":"Nessun evento.","folder.title":"Scegli una cartella","folder.up":"Livello superiore","folder.select":"Seleziona questa cartella","common.applying":"Applicazione…","common.disabled":"Disabilitato","common.enabled":"Abilitato","file.choose":"Scegli file","file.none":"Nessun file selezionato","folder.closeLabel":"Chiudi selettore cartelle","folder.empty":"Questa cartella non contiene sottocartelle.","folder.eyebrow":"CARTELLA MODELLI","folder.loading":"Caricamento...","folder.loadingFolders":"Caricamento cartelle...","footer.embedded":"SvelteKit · incorporato in audiocpp_server","models.checkingSize":"verifica dimensione…","models.default":"Predefinita","models.downloaded":"Scaricato","models.folderHint":"download, rilevamento locale e caricamento dei modelli","models.folderPlaceholder":"cartella models accanto ad audiocpp_server","models.hfAccess":"Accesso HF richiesto","models.model":"modello","models.queued":"in coda","models.reinstall":"Reinstalla","models.selected":"Selezionato","models.sharedPackage":"Usa il pacchetto condiviso {name} mostrato sopra.","models.sizeUnavailable":"dimensione non disponibile","models.stopping":"arresto","models.update":"Aggiorna","models.updateAvailable":"Aggiornamento disponibile","models.upToDate":"Aggiornato","models.variants":"varianti","models.versionUnknown":"Versione sconosciuta","nav.primary":"Navigazione principale","nav.workflows":"Flussi di lavoro audio","arena.eyebrow":"ARENA","arena.title.tts":"Confronto TTS","arena.title.vc":"Confronto conversione vocale","arena.title.asr":"Confronto ASR","arena.subtitle":"Esegue lo stesso input sui modelli installati e sui pacchetti scelti, uno dopo l'altro.","arena.subtitle.tts":"Esegue lo stesso testo sui modelli TTS e sui pacchetti scelti.","arena.subtitle.vc":"Esegue lo stesso audio sorgente sui modelli di conversione vocale scelti.","arena.subtitle.asr":"Esegue lo stesso audio sorgente sui modelli ASR scelti e confronta le trascrizioni.","arena.mode.tts":"TTS","arena.mode.vc":"Conversione vocale","arena.mode.asr":"ASR","arena.input.label":"Input","arena.input.title":"Richiesta condivisa","arena.input.textPlaceholder":"Inserisci un prompt da confrontare tra modelli TTS","arena.input.groundTruth":"Testo atteso","arena.input.groundTruthPlaceholder":"Incolla la trascrizione attesa per calcolare il WER","arena.shared":"condivisa","arena.voice.label":"Voce","arena.voice.modelDefault":"Predefinita del modello","arena.voice.builtin":"Voce demo integrata","arena.voice.reference":"Audio di riferimento","arena.voice.builtinNote":"Le voci integrate vengono passate come voice ID a ogni modello. Questo tipo di voce non richiede testo di riferimento.","arena.voice.targetSpeaker":"Audio parlante target","arena.voice.clearTarget":"Cancella target","arena.voice.clearReference":"Cancella riferimento","arena.options.shared":"Opzioni condivise","arena.queue.label":"Coda","arena.queue.title":"Modelli","arena.queue.add":"Aggiungi","arena.queue.remove":"Rimuovi","arena.queue.clear":"Cancella","arena.queue.empty":"Aggiungi modelli installati o pacchetti di precisione da confrontare.","arena.run":"Esegui arena","arena.package.label":"Pacchetto","arena.package.configured":"Configurato","arena.results.title":"Confronta output","arena.results.empty":"Nessun risultato arena.","arena.metric.wall":"tempo","arena.metric.rtf":"rtf","arena.metric.wer":"wer","arena.itemStatus.queued":"in coda","arena.itemStatus.loading":"caricamento","arena.itemStatus.running":"esecuzione","arena.itemStatus.done":"completato","arena.itemStatus.failed":"fallito","arena.itemStatus.skipped":"saltato","arena.status.duplicate":"{model} {package} è già nell'arena.","arena.status.loadingModel":"Caricamento modello","arena.status.runningRequest":"Esecuzione richiesta","arena.status.addModel":"Aggiungi almeno un modello all'arena.","arena.status.running":"Esecuzione arena {mode}...","arena.status.complete":"Esecuzione arena completata.","arena.note.skippedTargetVoice":"Saltato perché questo modello VC richiede audio del parlante target.","arena.note.skippedReferenceText":"Saltato perché questo modello richiede testo di riferimento per l'input voce selezionato.","arena.note.builtinVoice":"Voce integrata usata: {voice}.","arena.note.referenceVoice":"Voce di riferimento usata.","arena.note.referenceUnsupported":"Voce predefinita usata; la voce di riferimento non è supportata.","arena.note.defaultVoice":"Voce predefinita usata: {voice}.","arena.note.skippedReferenceVoice":"Saltato perché questo modello richiede una voce di riferimento.","arena.error.seed":"Il seed deve essere -1 o un intero unsigned a 32 bit (0-4294967295).","arena.error.jsonObject":"deve essere un oggetto","arena.error.invalidJson":"JSON opzioni arena non valido: {error}","arena.error.unregistered":"Il modello configurato non è registrato da questo server.","arena.error.notDownloaded":"{package} non è scaricato.","arena.error.loadFailed":"Il modello non è stato caricato.","arena.error.missingCatalog":"Il modello non è più nel catalogo.","arena.error.enterTtsText":"Inserisci testo per l'arena TTS.","arena.error.chooseAsrSource":"Scegli audio sorgente per l'arena ASR.","arena.error.chooseVcSource":"Scegli audio sorgente per l'arena VC.","arena.error.noAudio":"La risposta non include audio.","request.alignmentText":"Testo di allineamento","request.context":"Prompt di contesto","request.contextHint":"terminologia o nomi opzionali","request.duration":"Durata in secondi","request.liveDescription":"Elabora richieste consecutive di quattro secondi usando la modalità streaming del modello.","request.liveTitle":"Trascrizione microfono in diretta","request.lyrics":"Testo della canzone","request.optional":"opzionale","request.recordingMicrophone":"Registrazione microfono","request.soundPlaceholder":"Descrivi il suono o la musica…","request.startLive":"Avvia diretta","request.stopLive":"Ferma diretta","request.stopRecording":"Ferma registrazione","request.textPlaceholder":"Inserisci il testo…","request.voiceDescription":"Descrizione della voce","request.voiceDescriptionPlaceholder":"Una voce calda e calma con ritmo misurato…","result.track":"traccia","result.tracks":"tracce","runtime.eyebrow":"RUNTIME","runtime.subtitle":"Eventi del ciclo di vita e delle richieste nel browser.","status.ready":"Pronto","studio.estimatedVram":"VRAM stimata: {value} GB","studio.vram":"VRAM —","task.align":"Allineamento forzato","task.asr":"Trascrizione","task.clon":"Clonazione vocale","task.diar":"Diarizzazione parlanti","task.gen":"Generazione musicale","task.s2s":"Modifica del parlato","task.sep":"Separazione sorgenti","task.svc":"Conversione della voce cantata","task.tts":"Sintesi vocale","task.vad":"Attività vocale","task.vc":"Conversione vocale","task.vdes":"Progettazione voce","voice.bundledNote":"L'audio di riferimento incluso e la relativa trascrizione vengono forniti automaticamente.","voice.namePlaceholder":"La mia voce di riferimento","voice.recommendedClone":"consigliata per la clonazione","voice.recording":"Registrazione voce di riferimento","voice.requiredClone":"obbligatoria per questa clonazione vocale","voice.transcriptPlaceholder":"Digita le parole esatte dell'audio di riferimento oppure carica il file .txt corrispondente."}`)},O8={code:"ja",name:"日本語",translations:{"request.minimaxFrames":"位置合わせ済みの出力フレーム数: {frames}","param.minimax_h3.num_inference_steps.label":"ノイズ除去ステップ数","param.minimax_h3.num_inference_steps.info":"ノイズ除去を12ステップにすると、品質と処理速度のバランスがよくなります。","param.minimax_h3.num_frames.label":"出力フレーム数","param.minimax_h3.num_frames.info":"出力の長さから、毎秒約24フレームとして計算します。フレーム数を変更すると、出力の長さも更新されます。","param.minimax_h3.guidance_scale.label":"ガイダンススケール","param.minimax_h3.sampler.label":"サンプラー","param.minimax_h3.dit_acceleration.label":"DiT高速化","param.minimax_h3.dit_acceleration.info":"Noneでは、品質を重視した完全なDiT処理を使用します。高速化モードは実験的な機能であり、出力に歪みが生じる場合があります。","param.minimax_h3.return_video.label":"動画のデコード","param.minimax_h3.return_video.info":"メモリ使用量を抑えて音声のみを返すため、デフォルトでは無効になっています。","model.minimax_h3.hint":"MiniMax-H3は音声と動画を統合したDiTを使用します。GGUF Q4は品質を重視します。CUDA専用のGGUF Q4 ConvRotは、VRAM使用量がやや増える代わりに処理が高速になります。デフォルトの完全なDiT処理では音声品質を重視し、動画のデコードを無効にします。","status.modelReady":"{model}の読み込みが完了し、使用可能になりました。","status.runningTask":"{task}を実行中…","status.completeIn":"{seconds}秒で完了しました。","status.packageAvailable":"{model}は{format}を使用します。スタジオで利用できるようになりました。","app.nativeStudio":"ネイティブスタジオ","nav.studio":"スタジオ","nav.arena":"アリーナ","nav.models":"モデル","nav.runtime":"ランタイム","language.label":"表示言語","theme.label":"テーマ","theme.system":"システム設定に従う","theme.dark":"ダーク","theme.light":"ライト","workflow.tts":"音声合成","workflow.asr":"音声認識 / 文字起こし","workflow.music":"音楽・動画生成","workflow.vc":"声質変換","workflow.sep":"音源分離","workflow.analysis":"音声解析","workflow.design":"声のデザイン","studio.eyebrow":"ローカル音声AI","studio.title":"オーディオスタジオ","studio.subtitle.tts":"テキストから自然な音声を生成します。対応モデルでは、プリセット音声や音声クローンを利用できます。","studio.subtitle.asr":"音声をテキストに書き起こします。対応モデルでは、言語やタイムスタンプを設定できます。","studio.subtitle.music":"説明文、歌詞、参照音声から音楽やサウンドを作成します。","studio.subtitle.vc":"話し方や歌い方を保ちながら、録音した音声を別の声に変換します。","studio.subtitle.sep":"録音した音声を、ボーカル、楽器などの対応する音声トラックに分離します。","studio.subtitle.analysis":"音声の発話区間、話者、タイミング、アラインメントを解析します。","studio.subtitle.design":"説明文と対応する参照設定を使って、声を作成・調整します。","studio.model":"モデル","studio.noModel":"モデルが選択されていません","studio.resident":"読み込み済み","studio.notInstalled":"未インストール","studio.available":"利用可能","studio.chooseInstalled":"インストール済みのモデルを選択","studio.notDownloaded":"未ダウンロード","studio.pathFound":"パスが見つかりました","studio.pathMissing":"パスが見つかりません","studio.pathUnknown":"パス未確認","studio.load":"モデルを読み込む","studio.unload":"モデルを解放","studio.working":"処理中…","studio.bundledLoaded":"内蔵 · 読み込み済み","request.label":"リクエスト","request.title":"入力と設定","request.prompt":"プロンプト","request.text":"テキスト","request.splitLongText":"長文を分割して結果を結合","request.charactersPerChunk":"セグメントあたりの文字数","request.language":"言語","request.autoLanguage":"空欄 = 自動","request.seed":"シード値","request.randomSeed":"-1 = ランダム","request.maxTokens":"最大トークン数","request.sourceAudio":"入力音声","request.recordMicrophone":"マイクで録音","voice.quickStart":"すぐに試せるデモ音声","voice.configured":"設定済みの音声","voice.useReference":"以下の参照音声ファイルを使用","voice.reference":"参照音声","voice.required":"必須","voice.optional":"任意","voice.referenceText":"参照テキスト","voice.transcript":"参照音声の文字起こし","voice.saved":"保存済みの音声","voice.browserOnly":"このブラウザー内のみ","voice.chooseSaved":"保存済みの音声を選択…","voice.libraryName":"ライブラリ内の名前","voice.save":"音声を保存","common.delete":"削除","common.cancel":"キャンセル","common.close":"閉じる","common.refresh":"更新","common.browse":"参照","common.apply":"適用","options.modelParameters":"モデルのパラメーター","options.additional":"追加オプション","run.run":"実行","run.cancel":"キャンセル","run.working":"処理中…","result.title":"結果","result.label":"結果","result.saveWav":"WAVを保存","result.empty":"生成された音声と構造化された結果がここに表示されます。","models.eyebrow":"モデルライブラリ","models.title":"ローカルパッケージ","models.subtitle":"この画面からモデルパッケージをダウンロード・管理できます。","models.folder":"モデルフォルダー","models.useDefault":"デフォルトを使用","models.showTypes":"モデルの種類を表示","models.stopDownload":"ダウンロードを停止","models.cleanPartial":"未完了のダウンロードを削除","runtime.title":"セッションログ","runtime.status":"状態","runtime.backend":"バックエンド","runtime.registered":"登録済み","runtime.resident":"読み込み済み","runtime.noEvents":"イベントはありません。","folder.title":"フォルダーを選択","folder.up":"上の階層へ","folder.select":"このフォルダーを選択","common.applying":"適用中…","common.disabled":"無効","common.enabled":"有効","file.choose":"ファイルを選択","file.none":"ファイルが選択されていません","folder.closeLabel":"フォルダー選択を閉じる","folder.empty":"このフォルダーにはサブフォルダーがありません。","folder.eyebrow":"モデルフォルダー","folder.loading":"読み込み中…","folder.loadingFolders":"フォルダーを読み込み中…","footer.embedded":"SvelteKit · audiocpp_serverに組み込み","models.checkingSize":"サイズを確認中…","models.default":"デフォルト","models.downloaded":"ダウンロード済み","models.folderHint":"モデルのダウンロード、ローカルでの検出、読み込みに使用","models.folderPlaceholder":"audiocpp_serverと同じ場所にあるmodelsフォルダー","models.hfAccess":"HFへのアクセスが必要","models.model":"モデル","models.queued":"待機中","models.reinstall":"再インストール","models.selected":"選択済み","models.sharedPackage":"上に表示されている共有パッケージ{name}を使用します。","models.sizeUnavailable":"サイズを取得できません","models.stopping":"停止中","models.update":"更新","models.updateAvailable":"更新があります","models.upToDate":"最新です","models.variants":"バリエーション","models.versionUnknown":"バージョン不明","nav.primary":"メインナビゲーション","nav.workflows":"音声ワークフロー","arena.eyebrow":"アリーナ","arena.title.tts":"音声合成の比較","arena.title.vc":"声質変換の比較","arena.title.asr":"音声認識の比較","arena.subtitle":"インストール済みのモデルと選択したパッケージで、同じ入力を順番に処理します。","arena.subtitle.tts":"選択した音声合成モデルとパッケージで、同じテキストを処理します。","arena.subtitle.vc":"選択した声質変換モデルで、同じ入力音声を処理します。","arena.subtitle.asr":"選択した音声認識モデルで同じ入力音声を処理し、文字起こし結果を比較します。","arena.mode.tts":"音声合成","arena.mode.vc":"声質変換","arena.mode.asr":"音声認識","arena.input.label":"入力","arena.input.title":"共通のリクエスト","arena.input.textPlaceholder":"音声合成モデル間で比較するプロンプトを入力","arena.input.groundTruth":"正解テキスト","arena.input.groundTruthPlaceholder":"単語誤り率(WER)を計算するための正解の文字起こしを貼り付け","arena.shared":"共通","arena.voice.label":"声","arena.voice.modelDefault":"モデルのデフォルト","arena.voice.builtin":"内蔵デモ音声","arena.voice.reference":"参照音声","arena.voice.builtinNote":"内蔵音声は、音声IDとして各モデルに渡されます。この種類の音声には参照テキストは不要です。","arena.voice.targetSpeaker":"変換先の話者の音声","arena.voice.clearTarget":"変換先の音声をクリア","arena.voice.clearReference":"参照音声をクリア","arena.options.shared":"共通オプション","arena.queue.label":"キュー","arena.queue.title":"モデル","arena.queue.add":"追加","arena.queue.remove":"削除","arena.queue.clear":"クリア","arena.queue.empty":"比較するインストール済みモデル、または精度別のパッケージを追加してください。","arena.run":"比較を実行","arena.package.label":"パッケージ","arena.package.configured":"設定済み","arena.results.title":"出力を比較","arena.results.empty":"比較結果はありません。","arena.metric.wall":"経過時間","arena.metric.rtf":"RTF","arena.metric.wer":"WER","arena.itemStatus.queued":"待機中","arena.itemStatus.loading":"読み込み中","arena.itemStatus.running":"実行中","arena.itemStatus.done":"完了","arena.itemStatus.failed":"失敗","arena.itemStatus.skipped":"スキップ","arena.status.duplicate":"{model} {package}はすでにアリーナに追加されています。","arena.status.loadingModel":"モデルを読み込み中","arena.status.runningRequest":"リクエストを実行中","arena.status.addModel":"アリーナにモデルを1つ以上追加してください。","arena.status.running":"アリーナで{mode}を実行中…","arena.status.complete":"アリーナでの実行が完了しました。","arena.note.skippedTargetVoice":"この声質変換モデルには変換先の話者の音声が必要なため、スキップしました。","arena.note.skippedReferenceText":"このモデルでは、選択した音声入力に参照テキストが必要なため、スキップしました。","arena.note.builtinVoice":"内蔵音声を使用しました: {voice}。","arena.note.referenceVoice":"参照音声を使用しました。","arena.note.referenceUnsupported":"参照音声に対応していないため、デフォルトの音声を使用しました。","arena.note.defaultVoice":"デフォルトの音声を使用しました: {voice}。","arena.note.skippedReferenceVoice":"このモデルには参照音声が必要なため、スキップしました。","arena.error.seed":"シード値は-1、または32ビット符号なし整数(0~4294967295)で指定してください。","arena.error.jsonObject":"オブジェクトである必要があります","arena.error.invalidJson":"アリーナのオプションJSONが無効です: {error}","arena.error.unregistered":"設定されたモデルは、このサーバーに登録されていません。","arena.error.notDownloaded":"{package}はダウンロードされていません。","arena.error.loadFailed":"モデルを読み込めませんでした。","arena.error.missingCatalog":"モデルはカタログに存在しなくなりました。","arena.error.enterTtsText":"音声合成の比較に使用するテキストを入力してください。","arena.error.chooseAsrSource":"音声認識の比較に使用する入力音声を選択してください。","arena.error.chooseVcSource":"声質変換の比較に使用する入力音声を選択してください。","arena.error.noAudio":"応答に音声が含まれていません。","request.alignmentText":"アラインメント用テキスト","request.context":"コンテキストプロンプト","request.contextHint":"用語や名前など(任意)","request.duration":"長さ(秒)","request.liveDescription":"モデルのストリーミングモードを使い、4秒ごとのリクエストを連続して処理します。","request.liveTitle":"マイク音声のリアルタイム文字起こし","request.lyrics":"歌詞","request.optional":"任意","request.recordingMicrophone":"マイクで録音中","request.soundPlaceholder":"サウンドや音楽の特徴を入力…","request.startLive":"リアルタイム文字起こしを開始","request.stopLive":"リアルタイム文字起こしを停止","request.stopRecording":"録音を停止","request.textPlaceholder":"テキストを入力…","request.voiceDescription":"声の説明","request.voiceDescriptionPlaceholder":"温かみのある落ち着いた声で、ゆったりとしたテンポ…","result.track":"トラック","result.tracks":"トラック","runtime.eyebrow":"ランタイム","runtime.subtitle":"ブラウザー内のライフサイクルとリクエストに関するイベント。","status.ready":"準備完了","studio.estimatedVram":"推定VRAM使用量: {value} GB","studio.vram":"VRAM —","task.align":"強制アラインメント","task.asr":"文字起こし","task.clon":"音声クローン","task.diar":"話者ダイアライゼーション","task.gen":"音楽生成","task.s2s":"発話の編集","task.sep":"音源分離","task.svc":"歌声変換","task.tts":"音声合成","task.vad":"音声区間検出","task.vc":"声質変換","task.vdes":"声のデザイン","voice.bundledNote":"同梱の参照音声と対応する文字起こしが自動的に入力されます。","voice.namePlaceholder":"自分の参照音声","voice.recommendedClone":"音声クローンに推奨","voice.recording":"参照音声を録音中","voice.requiredClone":"この音声クローンには必須","voice.transcriptPlaceholder":"参照音声で話されている内容を正確に入力するか、対応する.txtファイルを読み込んでください。"}},I8={code:"pl",name:"Polski",translations:JSON.parse('{"request.minimaxFrames":"{frames} wyrównanych klatek wyjściowych","param.minimax_h3.num_inference_steps.label":"Kroki odszumiania","param.minimax_h3.num_inference_steps.info":"Dwanaście kroków odszumiania zapewnia praktyczną równowagę jakości i wydajności.","param.minimax_h3.num_frames.label":"Klatki wyjściowe","param.minimax_h3.num_frames.info":"Obliczane z czasu trwania przy około 24 klatkach na sekundę wyjścia. Zmiana liczby klatek aktualizuje również czas trwania.","param.minimax_h3.guidance_scale.label":"Skala naprowadzania","param.minimax_h3.sampler.label":"Próbnik","param.minimax_h3.dit_acceleration.label":"Przyspieszenie DiT","param.minimax_h3.dit_acceleration.info":"None używa pełnej ścieżki DiT nastawionej na jakość. Tryby przyspieszone są eksperymentalne i mogą zniekształcać niektóre wyniki.","param.minimax_h3.return_video.label":"Dekoduj wideo","param.minimax_h3.return_video.info":"Domyślnie wyłączone, aby zmniejszyć zużycie pamięci i zwracać tylko dźwięk.","model.minimax_h3.hint":"MiniMax-H3 korzysta ze wspólnego DiT audio/wideo. GGUF Q4 stawia na jakość; dostępny tylko dla CUDA GGUF Q4 ConvRot używa nieco więcej VRAM, aby działać szybciej. Domyślna pełna ścieżka DiT nadaje priorytet jakości dźwięku, a dekodowanie wideo jest wyłączone.","status.modelReady":"{model} jest załadowany i gotowy.","status.runningTask":"Uruchamianie: {task}...","status.completeIn":"Ukończono w {seconds} s.","status.packageAvailable":"{model} użyje {format}. Model jest dostępny w Studio.","app.nativeStudio":"Studio natywne","nav.studio":"Studio","nav.arena":"Arena","nav.models":"Modele","nav.runtime":"Środowisko","language.label":"Język interfejsu","theme.label":"Motyw","theme.system":"System","theme.dark":"Ciemny","theme.light":"Jasny","workflow.tts":"Synteza mowy","workflow.asr":"ASR / Transkrypcja","workflow.music":"Generowanie muzyki i wideo","workflow.vc":"Konwersja głosu","workflow.sep":"Separacja źródeł","workflow.analysis":"Analiza dźwięku","workflow.design":"Projektowanie głosu","studio.eyebrow":"LOKALNA INTELIGENCJA AUDIO","studio.title":"Studio audio","studio.subtitle.tts":"Generuj naturalną mowę z tekstu, korzystając z gotowych głosów i klonowania, gdy model je obsługuje.","studio.subtitle.asr":"Transkrybuj mowę z nagrań na tekst, korzystając z ustawień języka i znaczników czasu, gdy są obsługiwane.","studio.subtitle.music":"Twórz muzykę i dźwięki na podstawie opisu, tekstu piosenki lub nagrania referencyjnego.","studio.subtitle.vc":"Przekształcaj nagranie w inny głos, zachowując sposób mówienia lub śpiewania.","studio.subtitle.sep":"Rozdzielaj nagranie na wokal, instrumenty lub inne dostępne ścieżki.","studio.subtitle.analysis":"Analizuj aktywność mowy, mówców, czas i wyrównanie nagrania.","studio.subtitle.design":"Twórz lub dopracowuj głos na podstawie opisu i obsługiwanych ustawień referencyjnych.","studio.model":"Model","studio.noModel":"Nie wybrano modelu","studio.resident":"Załadowany","studio.notInstalled":"Nie zainstalowano","studio.available":"Dostępny","studio.chooseInstalled":"Wybierz zainstalowany model","studio.notDownloaded":"nie pobrano","studio.pathFound":"Ścieżka znaleziona","studio.pathMissing":"Brak ścieżki","studio.pathUnknown":"Ścieżka niesprawdzona","studio.load":"Załaduj model","studio.unload":"Wyładuj model","studio.working":"Przetwarzanie…","studio.bundledLoaded":"Wbudowany · załadowany","request.label":"ŻĄDANIE","request.title":"Dane wejściowe i ustawienia","request.prompt":"Polecenie","request.text":"Tekst","request.splitLongText":"Dziel i łącz długi tekst","request.charactersPerChunk":"Znaki na fragment","request.language":"Język","request.autoLanguage":"puste = automatycznie","request.seed":"Ziarno","request.randomSeed":"-1 = losowe","request.maxTokens":"Maksymalna liczba tokenów","request.sourceAudio":"Dźwięk źródłowy","request.recordMicrophone":"Nagraj mikrofon","voice.quickStart":"Szybkie głosy demonstracyjne","voice.useReference":"Użyj pliku dźwiękowego poniżej","voice.reference":"Głos referencyjny","voice.required":"wymagany","voice.optional":"opcjonalny","voice.referenceText":"Tekst referencyjny","voice.transcript":"Transkrypcja referencyjna","voice.saved":"Zapisane głosy","voice.browserOnly":"tylko w tej przeglądarce","voice.chooseSaved":"Wybierz zapisany głos...","voice.libraryName":"Nazwa w bibliotece","voice.save":"Zapisz głos","common.delete":"Usuń","common.cancel":"Anuluj","common.close":"Zamknij","common.refresh":"Odśwież","common.browse":"Przeglądaj","common.apply":"Zastosuj","options.modelParameters":"Parametry modelu","options.additional":"Dodatkowe opcje","run.run":"Uruchom","run.cancel":"Anuluj","run.working":"Przetwarzanie…","result.title":"Wynik","result.label":"WYNIK","result.saveWav":"Zapisz WAV","result.empty":"W tym miejscu pojawi się wygenerowany dźwięk i wyniki strukturalne.","models.eyebrow":"BIBLIOTEKA MODELI","models.title":"Pakiety lokalne","models.subtitle":"Pobieraj i zarządzaj pakietami modeli bez opuszczania interfejsu.","models.folder":"Folder modeli","models.useDefault":"Użyj domyślnego","models.showTypes":"Pokaż typy modeli","models.stopDownload":"Zatrzymaj pobieranie","models.cleanPartial":"Usuń częściowe pobieranie","runtime.title":"Dziennik sesji","runtime.status":"Stan","runtime.backend":"Backend","runtime.registered":"Zarejestrowane","runtime.resident":"Załadowane","runtime.noEvents":"Brak zdarzeń.","folder.title":"Wybierz folder","folder.up":"Poziom wyżej","folder.select":"Wybierz ten folder","common.applying":"Stosowanie…","common.disabled":"Wyłączone","common.enabled":"Włączone","file.choose":"Wybierz plik","file.none":"Nie wybrano pliku","folder.closeLabel":"Zamknij przeglądarkę folderów","folder.empty":"Ten folder nie zawiera podfolderów.","folder.eyebrow":"FOLDER MODELI","folder.loading":"Ładowanie...","folder.loadingFolders":"Ładowanie folderów...","footer.embedded":"SvelteKit · wbudowany w audiocpp_server","models.checkingSize":"sprawdzanie rozmiaru…","models.default":"Domyślnie","models.downloaded":"Pobrano","models.folderHint":"pobieranie, wykrywanie lokalne i ładowanie modeli","models.folderPlaceholder":"folder models obok audiocpp_server","models.hfAccess":"Wymagany dostęp do HF","models.model":"model","models.queued":"w kolejce","models.reinstall":"Zainstaluj ponownie","models.selected":"Wybrano","models.sharedPackage":"Używa wspólnego pakietu {name} pokazanego powyżej.","models.sizeUnavailable":"rozmiar niedostępny","models.stopping":"zatrzymywanie","models.update":"Aktualizuj","models.updateAvailable":"Dostępna aktualizacja","models.upToDate":"Aktualny","models.variants":"warianty","models.versionUnknown":"Nieznana wersja","nav.primary":"Główna nawigacja","nav.workflows":"Przepływy pracy audio","arena.eyebrow":"ARENA","arena.title.tts":"Porównanie TTS","arena.title.vc":"Porównanie konwersji głosu","arena.title.asr":"Porównanie ASR","arena.subtitle":"Uruchamia ten sam input na wybranych zainstalowanych modelach i wariantach pakietów, jeden po drugim.","arena.subtitle.tts":"Uruchamia ten sam tekst na wybranych modelach TTS i wariantach pakietów.","arena.subtitle.vc":"Uruchamia to samo audio źródłowe na wybranych modelach konwersji głosu.","arena.subtitle.asr":"Uruchamia to samo audio źródłowe na wybranych modelach ASR i porównuje transkrypcje.","arena.mode.tts":"TTS","arena.mode.vc":"Konwersja głosu","arena.mode.asr":"ASR","arena.input.label":"Dane wejściowe","arena.input.title":"Wspólne żądanie","arena.input.textPlaceholder":"Wpisz jeden prompt do porównania modeli TTS","arena.input.groundTruth":"Tekst referencyjny","arena.input.groundTruthPlaceholder":"Wklej oczekiwaną transkrypcję, aby obliczyć WER","arena.shared":"wspólne","arena.voice.label":"Głos","arena.voice.modelDefault":"Domyślny modelu","arena.voice.builtin":"Wbudowany głos demo","arena.voice.reference":"Audio referencyjne","arena.voice.builtinNote":"Wbudowane głosy są przekazywane jako voice ID do każdego modelu. Ten typ głosu nie wymaga tekstu referencyjnego.","arena.voice.targetSpeaker":"Audio głosu docelowego","arena.voice.clearTarget":"Wyczyść cel","arena.voice.clearReference":"Wyczyść referencję","arena.options.shared":"Wspólne opcje","arena.queue.label":"Kolejka","arena.queue.title":"Modele","arena.queue.add":"Dodaj","arena.queue.remove":"Usuń","arena.queue.clear":"Wyczyść","arena.queue.empty":"Dodaj zainstalowane modele lub pakiety precyzji do porównania.","arena.run":"Uruchom arenę","arena.package.label":"Pakiet","arena.package.configured":"Skonfigurowany","arena.results.title":"Porównaj wyniki","arena.results.empty":"Brak wyników areny.","arena.metric.wall":"czas","arena.metric.rtf":"rtf","arena.metric.wer":"wer","arena.itemStatus.queued":"w kolejce","arena.itemStatus.loading":"ładowanie","arena.itemStatus.running":"uruchomione","arena.itemStatus.done":"gotowe","arena.itemStatus.failed":"błąd","arena.itemStatus.skipped":"pominięto","arena.status.duplicate":"{model} {package} jest już w arenie.","arena.status.loadingModel":"Ładowanie modelu","arena.status.runningRequest":"Uruchamianie żądania","arena.status.addModel":"Dodaj co najmniej jeden model do areny.","arena.status.running":"Uruchamianie areny {mode}...","arena.status.complete":"Arena zakończona.","arena.note.skippedTargetVoice":"Pominięto, ponieważ ten model VC wymaga audio głosu docelowego.","arena.note.skippedReferenceText":"Pominięto, ponieważ ten model wymaga tekstu referencyjnego dla wybranego wejścia głosu.","arena.note.builtinVoice":"Użyto wbudowanego głosu: {voice}.","arena.note.referenceVoice":"Użyto głosu referencyjnego.","arena.note.referenceUnsupported":"Użyto domyślnego głosu; głos referencyjny nie jest obsługiwany.","arena.note.defaultVoice":"Użyto domyślnego głosu: {voice}.","arena.note.skippedReferenceVoice":"Pominięto, ponieważ ten model wymaga głosu referencyjnego.","arena.error.seed":"Ziarno musi być -1 albo 32-bitową liczbą unsigned (0-4294967295).","arena.error.jsonObject":"musi być obiektem","arena.error.invalidJson":"Nieprawidłowy JSON opcji areny: {error}","arena.error.unregistered":"Skonfigurowany model nie jest zarejestrowany przez ten serwer.","arena.error.notDownloaded":"{package} nie został pobrany.","arena.error.loadFailed":"Model nie został załadowany.","arena.error.missingCatalog":"Modelu nie ma już w katalogu.","arena.error.enterTtsText":"Wpisz tekst dla areny TTS.","arena.error.chooseAsrSource":"Wybierz audio źródłowe dla areny ASR.","arena.error.chooseVcSource":"Wybierz audio źródłowe dla areny VC.","arena.error.noAudio":"Odpowiedź nie zawiera audio.","request.alignmentText":"Tekst do wyrównania","request.context":"Kontekst","request.contextHint":"opcjonalna terminologia lub nazwy","request.duration":"Czas trwania w sekundach","request.liveDescription":"Przetwarza kolejne czterosekundowe żądania w trybie strumieniowym modelu.","request.liveTitle":"Transkrypcja mikrofonu na żywo","request.lyrics":"Tekst utworu","request.optional":"opcjonalne","request.recordingMicrophone":"Nagrywanie mikrofonu","request.soundPlaceholder":"Opisz dźwięk lub muzykę…","request.startLive":"Uruchom na żywo","request.stopLive":"Zatrzymaj na żywo","request.stopRecording":"Zatrzymaj nagrywanie","request.textPlaceholder":"Wprowadź tekst…","request.voiceDescription":"Opis głosu","request.voiceDescriptionPlaceholder":"Ciepły, spokojny głos o umiarkowanym tempie…","result.track":"ścieżka","result.tracks":"ścieżki","runtime.eyebrow":"ŚRODOWISKO","runtime.subtitle":"Zdarzenia cyklu życia i żądań po stronie przeglądarki.","status.ready":"Gotowe","studio.estimatedVram":"Szacowane VRAM: {value} GB","studio.vram":"VRAM —","task.align":"Wymuszone wyrównanie","task.asr":"Transkrypcja","task.clon":"Klonowanie głosu","task.diar":"Diarizacja mówców","task.gen":"Generowanie muzyki","task.s2s":"Edycja mowy","task.sep":"Separacja źródeł","task.svc":"Konwersja głosu śpiewanego","task.tts":"Synteza mowy","task.vad":"Aktywność głosowa","task.vc":"Konwersja głosu","task.vdes":"Projektowanie głosu","voice.bundledNote":"Dołączone audio referencyjne i jego transkrypcja zostaną użyte automatycznie.","voice.namePlaceholder":"Mój głos referencyjny","voice.recommendedClone":"zalecana do klonowania","voice.recording":"Nagrywanie głosu referencyjnego","voice.requiredClone":"wymagana dla tego klonowania głosu","voice.transcriptPlaceholder":"Wpisz dokładne słowa z audio referencyjnego lub wczytaj pasujący plik .txt powyżej."}')},L8={code:"ru",name:"Русский",translations:JSON.parse('{"request.minimaxFrames":"{frames} выровненных выходных кадров","param.minimax_h3.num_inference_steps.label":"Шаги шумоподавления","param.minimax_h3.num_inference_steps.info":"Двенадцать шагов обеспечивают практичный баланс качества и производительности.","param.minimax_h3.num_frames.label":"Выходные кадры","param.minimax_h3.num_frames.info":"Рассчитываются из длительности примерно по 24 кадра на секунду вывода. Изменение числа кадров также обновляет длительность.","param.minimax_h3.guidance_scale.label":"Масштаб управления","param.minimax_h3.sampler.label":"Сэмплер","param.minimax_h3.dit_acceleration.label":"Ускорение DiT","param.minimax_h3.dit_acceleration.info":"None использует полный DiT с приоритетом качества. Режимы ускорения экспериментальны и могут искажать некоторые результаты.","param.minimax_h3.return_video.label":"Декодировать видео","param.minimax_h3.return_video.info":"По умолчанию выключено для снижения расхода памяти и возврата только аудио.","model.minimax_h3.hint":"MiniMax-H3 использует совместный аудио/видео DiT. GGUF Q4 ориентирован на качество; доступный только в CUDA GGUF Q4 ConvRot использует немного больше VRAM ради скорости. Полный DiT по умолчанию отдаёт приоритет качеству звука, а декодирование видео отключено.","status.modelReady":"{model} загружен и готов.","status.runningTask":"Выполняется: {task}...","status.completeIn":"Завершено за {seconds} с.","status.packageAvailable":"{model} будет использовать {format}. Модель доступна в Studio.","app.nativeStudio":"Нативная студия","nav.studio":"Студия","nav.arena":"Арена","nav.models":"Модели","nav.runtime":"Среда","language.label":"Язык интерфейса","theme.label":"Тема","theme.system":"Системная","theme.dark":"Тёмная","theme.light":"Светлая","workflow.tts":"Синтез речи","workflow.asr":"ASR / Распознавание","workflow.music":"Генерация музыки и видео","workflow.vc":"Преобразование голоса","workflow.sep":"Разделение источников","workflow.analysis":"Анализ аудио","workflow.design":"Дизайн голоса","studio.eyebrow":"ЛОКАЛЬНЫЙ АУДИО ИНТЕЛЛЕКТ","studio.title":"Аудиостудия","studio.subtitle.tts":"Создавайте естественную речь из текста с готовыми голосами и клонированием, если они поддерживаются.","studio.subtitle.asr":"Преобразуйте речь из аудио в текст с настройками языка и временных меток, если они поддерживаются.","studio.subtitle.music":"Создавайте музыку и звуки по описанию, тексту песни или эталонному аудио.","studio.subtitle.vc":"Преобразуйте запись в другой голос, сохраняя манеру речи или пения.","studio.subtitle.sep":"Разделяйте запись на вокал, инструменты и другие доступные аудиодорожки.","studio.subtitle.analysis":"Анализируйте речевую активность, говорящих, время и выравнивание аудио.","studio.subtitle.design":"Создавайте и настраивайте голос по текстовому описанию и поддерживаемым эталонным параметрам.","studio.model":"Модель","studio.noModel":"Модель не выбрана","studio.resident":"Загружена","studio.notInstalled":"Не установлена","studio.available":"Доступна","studio.chooseInstalled":"Выберите установленную модель","studio.notDownloaded":"не скачана","studio.pathFound":"Путь найден","studio.pathMissing":"Путь отсутствует","studio.pathUnknown":"Путь не проверен","studio.load":"Загрузить модель","studio.unload":"Выгрузить модель","studio.working":"Обработка…","studio.bundledLoaded":"Встроена · загружена","request.label":"ЗАПРОС","request.title":"Ввод и управление","request.prompt":"Запрос","request.text":"Текст","request.splitLongText":"Разделять и объединять длинный текст","request.charactersPerChunk":"Символов в части","request.language":"Язык","request.autoLanguage":"пусто = автоматически","request.seed":"Seed","request.randomSeed":"-1 = случайно","request.maxTokens":"Максимум токенов","request.sourceAudio":"Исходное аудио","request.recordMicrophone":"Записать микрофон","voice.quickStart":"Демонстрационные голоса","voice.useReference":"Использовать файл эталонного аудио ниже","voice.reference":"Эталонный голос","voice.required":"обязательно","voice.optional":"необязательно","voice.referenceText":"Эталонный текст","voice.transcript":"Эталонная расшифровка","voice.saved":"Сохранённые голоса","voice.browserOnly":"только в этом браузере","voice.chooseSaved":"Выберите сохранённый голос...","voice.libraryName":"Имя в библиотеке","voice.save":"Сохранить голос","common.delete":"Удалить","common.cancel":"Отмена","common.close":"Закрыть","common.refresh":"Обновить","common.browse":"Обзор","common.apply":"Применить","options.modelParameters":"Параметры модели","options.additional":"Дополнительные параметры","run.run":"Запустить","run.cancel":"Отмена","run.working":"Обработка…","result.title":"Результат","result.label":"РЕЗУЛЬТАТ","result.saveWav":"Сохранить WAV","result.empty":"Здесь появятся созданное аудио и структурированные результаты.","models.eyebrow":"БИБЛИОТЕКА МОДЕЛЕЙ","models.title":"Локальные пакеты","models.subtitle":"Скачивайте пакеты моделей и управляйте ими прямо в интерфейсе.","models.folder":"Папка моделей","models.useDefault":"По умолчанию","models.showTypes":"Типы моделей","models.stopDownload":"Остановить загрузку","models.cleanPartial":"Удалить частичную загрузку","runtime.title":"Журнал сеанса","runtime.status":"Состояние","runtime.backend":"Backend","runtime.registered":"Зарегистрировано","runtime.resident":"Загружено","runtime.noEvents":"Событий пока нет.","folder.title":"Выберите папку","folder.up":"На уровень выше","folder.select":"Выбрать эту папку","common.applying":"Применение…","common.disabled":"Выключено","common.enabled":"Включено","file.choose":"Выбрать файл","file.none":"Файл не выбран","folder.closeLabel":"Закрыть выбор папки","folder.empty":"В этой папке нет вложенных папок.","folder.eyebrow":"ПАПКА МОДЕЛЕЙ","folder.loading":"Загрузка...","folder.loadingFolders":"Загрузка папок...","footer.embedded":"SvelteKit · встроен в audiocpp_server","models.checkingSize":"проверка размера…","models.default":"По умолчанию","models.downloaded":"Скачано","models.folderHint":"загрузка, локальное обнаружение и загрузка моделей","models.folderPlaceholder":"папка models рядом с audiocpp_server","models.hfAccess":"Требуется доступ HF","models.model":"модель","models.queued":"в очереди","models.reinstall":"Переустановить","models.selected":"Выбрано","models.sharedPackage":"Использует общий пакет {name}, показанный выше.","models.sizeUnavailable":"размер недоступен","models.stopping":"остановка","models.update":"Обновить","models.updateAvailable":"Доступно обновление","models.upToDate":"Актуально","models.variants":"варианты","models.versionUnknown":"Версия неизвестна","nav.primary":"Основная навигация","nav.workflows":"Рабочие процессы аудио","arena.eyebrow":"АРЕНА","arena.title.tts":"Сравнение TTS","arena.title.vc":"Сравнение преобразования голоса","arena.title.asr":"Сравнение ASR","arena.subtitle":"Запускает один и тот же ввод через выбранные установленные модели и варианты пакетов по очереди.","arena.subtitle.tts":"Запускает один и тот же текст через выбранные модели TTS и варианты пакетов.","arena.subtitle.vc":"Запускает одно и то же исходное аудио через выбранные модели преобразования голоса.","arena.subtitle.asr":"Запускает одно и то же исходное аудио через выбранные модели ASR и сравнивает расшифровки.","arena.mode.tts":"TTS","arena.mode.vc":"Преобразование голоса","arena.mode.asr":"ASR","arena.input.label":"Ввод","arena.input.title":"Общий запрос","arena.input.textPlaceholder":"Введите один запрос для сравнения моделей TTS","arena.input.groundTruth":"Эталонный текст","arena.input.groundTruthPlaceholder":"Вставьте ожидаемую расшифровку для расчёта WER","arena.shared":"общий","arena.voice.label":"Голос","arena.voice.modelDefault":"По умолчанию модели","arena.voice.builtin":"Встроенный демо-голос","arena.voice.reference":"Эталонное аудио","arena.voice.builtinNote":"Встроенные голоса передаются каждой модели как voice ID. Для этого источника голоса эталонный текст не требуется.","arena.voice.targetSpeaker":"Аудио целевого говорящего","arena.voice.clearTarget":"Очистить цель","arena.voice.clearReference":"Очистить эталон","arena.options.shared":"Общие параметры","arena.queue.label":"Очередь","arena.queue.title":"Модели","arena.queue.add":"Добавить","arena.queue.remove":"Удалить","arena.queue.clear":"Очистить","arena.queue.empty":"Добавьте установленные модели или пакеты точности для сравнения.","arena.run":"Запустить арену","arena.package.label":"Пакет","arena.package.configured":"Настроено","arena.results.title":"Сравнить вывод","arena.results.empty":"Результатов арены пока нет.","arena.metric.wall":"время","arena.metric.rtf":"rtf","arena.metric.wer":"wer","arena.itemStatus.queued":"в очереди","arena.itemStatus.loading":"загрузка","arena.itemStatus.running":"выполняется","arena.itemStatus.done":"готово","arena.itemStatus.failed":"ошибка","arena.itemStatus.skipped":"пропущено","arena.status.duplicate":"{model} {package} уже есть в арене.","arena.status.loadingModel":"Загрузка модели","arena.status.runningRequest":"Выполнение запроса","arena.status.addModel":"Добавьте хотя бы одну модель в арену.","arena.status.running":"Выполняется арена {mode}...","arena.status.complete":"Выполнение арены завершено.","arena.note.skippedTargetVoice":"Пропущено: этой VC-модели нужно аудио целевого говорящего.","arena.note.skippedReferenceText":"Пропущено: этой модели нужен эталонный текст для выбранного голосового ввода.","arena.note.builtinVoice":"Использован встроенный голос: {voice}.","arena.note.referenceVoice":"Использован эталонный голос.","arena.note.referenceUnsupported":"Использован голос по умолчанию; эталонный голос не поддерживается.","arena.note.defaultVoice":"Использован голос по умолчанию: {voice}.","arena.note.skippedReferenceVoice":"Пропущено: этой модели нужен эталонный голос.","arena.error.seed":"Seed должен быть -1 или 32-битным unsigned-целым (0-4294967295).","arena.error.jsonObject":"должен быть объектом","arena.error.invalidJson":"Недопустимый JSON параметров арены: {error}","arena.error.unregistered":"Настроенная модель не зарегистрирована этим сервером.","arena.error.notDownloaded":"{package} не скачан.","arena.error.loadFailed":"Модель не загрузилась.","arena.error.missingCatalog":"Модели больше нет в каталоге.","arena.error.enterTtsText":"Введите текст для арены TTS.","arena.error.chooseAsrSource":"Выберите исходное аудио для арены ASR.","arena.error.chooseVcSource":"Выберите исходное аудио для арены VC.","arena.error.noAudio":"Ответ не содержит аудио.","request.alignmentText":"Текст для выравнивания","request.context":"Контекстный запрос","request.contextHint":"необязательные термины или имена","request.duration":"Длительность в секундах","request.liveDescription":"Обрабатывает последовательные четырёхсекундные запросы в потоковом режиме модели.","request.liveTitle":"Распознавание с микрофона в реальном времени","request.lyrics":"Текст песни","request.optional":"необязательно","request.recordingMicrophone":"Запись микрофона","request.soundPlaceholder":"Опишите звук или музыку…","request.startLive":"Запустить","request.stopLive":"Остановить","request.stopRecording":"Остановить запись","request.textPlaceholder":"Введите текст…","request.voiceDescription":"Описание голоса","request.voiceDescriptionPlaceholder":"Тёплый спокойный голос с размеренным темпом…","result.track":"дорожка","result.tracks":"дорожки","runtime.eyebrow":"СРЕДА","runtime.subtitle":"События жизненного цикла и запросов в браузере.","status.ready":"Готово","studio.estimatedVram":"Оценка VRAM: {value} ГБ","studio.vram":"VRAM —","task.align":"Принудительное выравнивание","task.asr":"Распознавание речи","task.clon":"Клонирование голоса","task.diar":"Диаризация говорящих","task.gen":"Генерация музыки","task.s2s":"Редактирование речи","task.sep":"Разделение источников","task.svc":"Преобразование вокала","task.tts":"Синтез речи","task.vad":"Голосовая активность","task.vc":"Преобразование голоса","task.vdes":"Дизайн голоса","voice.bundledNote":"Встроенное эталонное аудио и соответствующая расшифровка подставляются автоматически.","voice.namePlaceholder":"Мой эталонный голос","voice.recommendedClone":"рекомендуется для клонирования","voice.recording":"Запись эталонного голоса","voice.requiredClone":"требуется для этого клонирования","voice.transcriptPlaceholder":"Введите точные слова из эталонного аудио или загрузите соответствующий файл .txt выше."}')},D8={code:"vi",name:"Tiếng Việt",translations:JSON.parse('{"app.nativeStudio":"Phòng thu trên máy","nav.studio":"Phòng thu","nav.arena":"So sánh","nav.models":"Model","nav.runtime":"Trạng thái","nav.configuration":"Cấu hình","nav.primary":"Điều hướng chính","nav.workflows":"Các tác vụ âm thanh","language.label":"Ngôn ngữ giao diện","theme.label":"Giao diện","theme.system":"Theo hệ thống","theme.dark":"Tối","theme.mocha":"Catppuccin Mocha","theme.light":"Sáng","arena.eyebrow":"SO SÁNH","arena.title.tts":"So sánh giọng đọc","arena.title.vc":"So sánh chuyển đổi giọng","arena.title.asr":"So sánh nhận dạng giọng nói","arena.subtitle":"Chạy lần lượt cùng một đầu vào với các model và biến thể đã cài được chọn.","arena.subtitle.tts":"Đọc cùng một văn bản bằng các model giọng đọc và biến thể được chọn.","arena.subtitle.vc":"Chuyển đổi cùng một âm thanh nguồn bằng các model được chọn.","arena.subtitle.asr":"Nhận dạng cùng một âm thanh nguồn bằng các model được chọn và so sánh bản chép lời.","arena.mode.tts":"Đọc văn bản","arena.mode.vc":"Chuyển đổi giọng","arena.mode.asr":"Nhận dạng giọng nói","arena.input.label":"Đầu vào","arena.input.title":"Yêu cầu dùng chung","arena.input.textPlaceholder":"Nhập văn bản để so sánh các model giọng đọc","arena.input.groundTruth":"Bản chép lời chuẩn","arena.input.groundTruthPlaceholder":"Dán bản chép lời chuẩn để tính tỷ lệ lỗi từ (WER)","arena.shared":"dùng chung","arena.voice.label":"Giọng","arena.voice.modelDefault":"Mặc định của model","arena.voice.builtin":"Giọng mẫu có sẵn","arena.voice.reference":"Âm thanh tham chiếu","arena.voice.builtinNote":"Giọng có sẵn được gửi dưới dạng mã giọng cho từng model. Không cần bản chép lời với nguồn giọng này.","arena.voice.targetSpeaker":"Âm thanh giọng đích","arena.voice.clearTarget":"Bỏ giọng đích","arena.voice.clearReference":"Bỏ tham chiếu","arena.options.shared":"Tùy chọn dùng chung","arena.queue.label":"Hàng đợi","arena.queue.title":"Model","arena.queue.add":"Thêm","arena.queue.remove":"Bỏ","arena.queue.clear":"Xóa hàng đợi","arena.queue.empty":"Thêm model hoặc biến thể kiểu dữ liệu đã cài để so sánh.","arena.run":"Chạy so sánh","arena.package.label":"Gói","arena.package.configured":"Đã cấu hình","arena.results.title":"So sánh kết quả","arena.results.empty":"Chưa có kết quả so sánh.","arena.metric.wall":"thời gian","arena.metric.rtf":"RTF","arena.metric.wer":"WER","arena.itemStatus.queued":"đang chờ","arena.itemStatus.loading":"đang nạp","arena.itemStatus.running":"đang chạy","arena.itemStatus.done":"hoàn tất","arena.itemStatus.failed":"thất bại","arena.itemStatus.skipped":"đã bỏ qua","arena.status.duplicate":"{model} {package} đã có trong danh sách so sánh.","arena.status.loadingModel":"Đang nạp model","arena.status.runningRequest":"Đang chạy yêu cầu","arena.status.addModel":"Thêm ít nhất một model để so sánh.","arena.status.running":"Đang chạy so sánh {mode}...","arena.status.complete":"Đã hoàn tất so sánh.","arena.note.skippedTargetVoice":"Đã bỏ qua vì model chuyển đổi giọng này cần âm thanh giọng đích.","arena.note.skippedReferenceText":"Đã bỏ qua vì model này cần bản chép lời cho giọng tham chiếu đã chọn.","arena.note.builtinVoice":"Đã dùng giọng có sẵn: {voice}.","arena.note.referenceVoice":"Đã dùng giọng tham chiếu.","arena.note.referenceUnsupported":"Đã dùng giọng mặc định; model không hỗ trợ giọng tham chiếu.","arena.note.defaultVoice":"Đã dùng giọng mặc định: {voice}.","arena.note.skippedReferenceVoice":"Đã bỏ qua vì model này cần giọng tham chiếu.","arena.error.seed":"Seed phải là -1 hoặc số nguyên không dấu 32 bit (từ 0 đến 4294967295).","arena.error.jsonObject":"phải là một đối tượng JSON","arena.error.invalidJson":"JSON tùy chọn so sánh không hợp lệ: {error}","arena.error.unregistered":"Model đã cấu hình chưa được đăng ký trên máy chủ này.","arena.error.notDownloaded":"Chưa tải {package}.","arena.error.loadFailed":"Không nạp được model.","arena.error.missingCatalog":"Model không còn trong danh mục.","arena.error.enterTtsText":"Nhập văn bản để so sánh giọng đọc.","arena.error.chooseAsrSource":"Chọn âm thanh nguồn để so sánh nhận dạng giọng nói.","arena.error.chooseVcSource":"Chọn âm thanh nguồn để so sánh chuyển đổi giọng.","arena.error.noAudio":"Phản hồi không có âm thanh.","workflow.tts":"Đọc văn bản","workflow.asr":"Nhận dạng / Chép lời","workflow.music":"Tạo nhạc / video","workflow.vc":"Chuyển đổi giọng / S2S","workflow.enhancement":"Cải thiện / Khử nhiễu","models.tools":"công cụ","workflow.sep":"Tách nguồn âm thanh","workflow.analysis":"Phân tích âm thanh","workflow.design":"Thiết kế giọng","task.tts":"Đọc văn bản","task.clon":"Sao chép giọng","task.asr":"Chép lời","task.gen":"Tạo nhạc","task.midi":"Âm thanh sang MIDI","task.vc":"Chuyển đổi giọng","task.svc":"Chuyển đổi giọng hát","task.s2s":"Chỉnh sửa lời nói","task.sep":"Tách nguồn âm thanh","task.vad":"Phát hiện giọng nói","task.diar":"Phân tách người nói","task.align":"Căn chỉnh lời và âm thanh","task.vdes":"Thiết kế giọng","studio.eyebrow":"XỬ LÝ ÂM THANH TẠI MÁY","studio.title":"Phòng thu âm thanh","studio.subtitle.tts":"Tạo giọng đọc tự nhiên từ văn bản, với giọng có sẵn và sao chép giọng khi model hỗ trợ.","studio.subtitle.asr":"Chuyển lời nói thành văn bản, với tùy chọn ngôn ngữ và mốc thời gian khi model hỗ trợ.","studio.subtitle.music":"Tạo nhạc và âm thanh từ mô tả, lời bài hát hoặc âm thanh tham chiếu khi model hỗ trợ.","studio.subtitle.vc":"Chuyển đổi giọng nói, giọng hát hoặc nhận câu trả lời bằng giọng nói từ âm thanh đầu vào.","studio.subtitle.sep":"Tách bản ghi thành giọng hát, nhạc cụ hoặc các nguồn âm thanh mà model hỗ trợ.","studio.subtitle.analysis":"Phân tích giọng nói, người nói, mốc thời gian và căn chỉnh lời với âm thanh.","studio.subtitle.enhancement":"Cải thiện âm thanh, loại bỏ tiếng ồn nền hoặc khôi phục dải tần.","studio.subtitle.design":"Tạo hoặc tinh chỉnh giọng từ mô tả bằng văn bản và các tùy chọn tham chiếu được hỗ trợ.","studio.model":"Model","studio.noModel":"Chưa chọn model","studio.resident":"Đã nạp","studio.notInstalled":"Chưa cài","studio.available":"Có sẵn","studio.chooseInstalled":"Chọn một model đã cài","studio.notDownloaded":"chưa tải","studio.pathFound":"Đã tìm thấy đường dẫn","studio.pathMissing":"Không tìm thấy đường dẫn","studio.pathUnknown":"Chưa kiểm tra đường dẫn","studio.estimatedVram":"VRAM ước tính: {value} GB","studio.vram":"VRAM —","studio.load":"Nạp model","studio.unload":"Giải phóng model","studio.working":"Đang xử lý…","studio.bundledLoaded":"Có sẵn · đã nạp","request.label":"YÊU CẦU","request.title":"Đầu vào và tùy chọn","request.prompt":"Mô tả","request.alignmentText":"Văn bản cần căn chỉnh","request.text":"Văn bản","request.soundPlaceholder":"Mô tả âm thanh hoặc bản nhạc…","request.textPlaceholder":"Nhập văn bản…","request.splitLongText":"Chia và ghép văn bản dài","request.charactersPerChunk":"Số ký tự mỗi đoạn","request.lyrics":"Lời bài hát","request.optional":"không bắt buộc","request.context":"Ngữ cảnh","request.contextHint":"thuật ngữ hoặc tên riêng, không bắt buộc","request.voiceDescription":"Mô tả giọng","request.voiceDescriptionPlaceholder":"Giọng ấm áp, điềm tĩnh, nhịp đọc vừa phải…","request.language":"Ngôn ngữ","request.autoLanguage":"để trống = tự nhận dạng","request.seed":"Seed","request.randomSeed":"-1 = ngẫu nhiên","request.maxTokens":"Số token tối đa","request.duration":"Thời lượng (giây)","request.autoDuration":"-1 = tự động","request.rewriteCaption":"Viết lại mô tả","request.rewritingCaption":"Đang viết lại mô tả...","request.minimaxFrames":"{frames} khung hình đầu ra đã căn chỉnh","request.sourceAudio":"Âm thanh nguồn","request.stopRecording":"Dừng ghi âm","request.recordingMicrophone":"Đang ghi âm từ micro","request.recordMicrophone":"Ghi âm từ micro","request.liveTitle":"Chép lời trực tiếp từ micro","request.liveDescription":"Xử lý liên tiếp các đoạn âm thanh dài bốn giây bằng chế độ phát trực tiếp của model.","request.stopLive":"Dừng chép lời trực tiếp","request.startLive":"Bắt đầu chép lời trực tiếp","voice.quickStart":"Giọng có sẵn để thử nhanh","voice.configured":"Giọng đã cấu hình","voice.useReference":"Dùng tệp âm thanh tham chiếu bên dưới","voice.bundledNote":"Âm thanh tham chiếu có sẵn và bản chép lời tương ứng được cung cấp tự động.","voice.reference":"Giọng tham chiếu","voice.required":"bắt buộc","voice.optional":"không bắt buộc","voice.referenceText":"Văn bản tham chiếu","voice.recording":"Đang ghi âm giọng tham chiếu","voice.transcript":"Bản chép lời mẫu","voice.requiredClone":"bắt buộc để sao chép giọng này","voice.recommendedClone":"nên có để sao chép giọng","voice.transcriptPlaceholder":"Nhập đúng lời nói trong âm thanh mẫu, hoặc tải tệp .txt tương ứng ở trên.","voice.saved":"Giọng đã lưu","voice.browserOnly":"chỉ lưu trong trình duyệt này","voice.chooseSaved":"Chọn giọng đã lưu...","voice.libraryName":"Tên giọng trong thư viện","voice.namePlaceholder":"Giọng tham chiếu của tôi","voice.save":"Lưu giọng","voice.clearReference":"Bỏ giọng tham chiếu","voice.preset":"Giọng có sẵn","voice.speakerReferences":"Giọng tham chiếu của người nói","voice.upToFour":"không bắt buộc, tối đa 4","voice.speaker":"Người nói {number}","voice.dialoguePlaceholder":"[S1] Lời trong giọng tham chiếu của người nói 1. [S2] Lời trong giọng tham chiếu của người nói 2.","settings.load":"Nạp thiết lập JSON","settings.save":"Lưu thiết lập JSON","history.title":"Lịch sử chạy (Thử nghiệm)","history.clear":"Xóa lịch sử","history.deleteRun":"Xóa lần chạy {id}","history.wrongModel":"Không thể mở lịch sử của {label}: model hiện tại là {model}.","history.wait":"Chờ yêu cầu hiện tại hoặc việc khôi phục thiết lập hoàn tất.","configuration.history":"Lịch sử chạy","configuration.historyLimit":"Số lần chạy tối đa được lưu","configuration.save":"Lưu cấu hình","configuration.saved":"Đã lưu cấu hình.","studio.weightsPath":"Đường dẫn trọng số trên máy chủ","studio.downloadWeights":"Tải trọng số SafeTensors","studio.format":"Định dạng model","studio.configured":"Đã cấu hình","studio.serverConfigured":"Được thiết lập trong cấu hình máy chủ","studio.loadPackage":"Nạp {package}","studio.unloadPackage":"Giải phóng {package}","studio.packageNotDownloaded":"Chưa tải {package}","run.chooseModel":"Chọn một model đã cài trước","run.installModel":"Cài model này trong mục Model trước","run.elapsed":"Thời gian xử lý đã trôi qua","result.saveArtifact":"Lưu {format}","result.videoPreview":"Xem trước video","param.omnivoice.num_inference_steps.label":"Số bước tạo giọng","param.omnivoice.guidance_scale.label":"Mức bám sát tham chiếu","param.omnivoice.speed.label":"Tốc độ đọc","param.omnivoice.instruct.label":"Chỉ dẫn phong cách / chất giọng","param.omnivoice.instruct.placeholder":"Ví dụ: Đọc với giọng nhẹ nhàng, chậm rãi","common.delete":"Xóa","common.enabled":"Đã bật","common.disabled":"Đã tắt","common.cancel":"Hủy","common.close":"Đóng","common.refresh":"Làm mới","common.browse":"Duyệt thư mục","common.apply":"Áp dụng","common.applying":"Đang áp dụng…","file.choose":"Chọn tệp","file.none":"Chưa chọn tệp","file.preview":"Nghe / xem trước","file.clear":"Bỏ tệp","options.modelParameters":"Tham số model","options.additional":"Tùy chọn bổ sung","param.minimax_h3.num_inference_steps.label":"Số bước khử nhiễu","param.minimax_h3.num_inference_steps.info":"Mười hai bước khử nhiễu giúp cân bằng chất lượng và tốc độ.","param.minimax_h3.num_frames.label":"Số khung hình đầu ra","param.minimax_h3.num_frames.info":"Được tính từ thời lượng với khoảng 24 khung hình mỗi giây đầu ra. Đổi số khung hình cũng cập nhật thời lượng.","param.minimax_h3.guidance_scale.label":"Mức bám sát mô tả","param.minimax_h3.sampler.label":"Bộ lấy mẫu","param.minimax_h3.dit_acceleration.label":"Tăng tốc DiT","param.minimax_h3.dit_acceleration.info":"None dùng toàn bộ DiT để ưu tiên chất lượng. Các chế độ tăng tốc đang thử nghiệm và có thể làm méo một số kết quả.","param.minimax_h3.return_video.label":"Giải mã video","param.minimax_h3.return_video.info":"Mặc định tắt để giảm bộ nhớ sử dụng và chỉ trả về âm thanh.","model.minimax_h3.hint":"MiniMax-H3 dùng DiT kết hợp âm thanh và video. GGUF Q4 ưu tiên chất lượng; GGUF Q4 ConvRot chỉ chạy trên CUDA, dùng thêm một ít VRAM để tăng tốc. Chế độ DiT đầy đủ mặc định ưu tiên chất lượng âm thanh và tắt giải mã video.","run.run":"Chạy","run.cancel":"Hủy","run.working":"Đang xử lý…","result.label":"KẾT QUẢ","result.title":"Đầu ra","result.track":"bản âm thanh","result.tracks":"bản âm thanh","result.saveWav":"Lưu WAV","result.empty":"Âm thanh và kết quả xử lý sẽ xuất hiện ở đây.","models.eyebrow":"THƯ VIỆN MODEL","models.title":"Các gói trên máy","models.subtitle":"Tải và quản lý các gói model ngay trong giao diện này.","models.folder":"Thư mục model","models.folderHint":"nơi tải, tìm và nạp model","models.folderPlaceholder":"thư mục models bên cạnh audiocpp_server","models.default":"Mặc định","models.useDefault":"Dùng mặc định","models.showTypes":"Hiện các loại model","models.model":"model","models.variants":"biến thể","models.update":"Cập nhật","models.reinstall":"Cài lại","models.upToDate":"Đã cập nhật","models.updateAvailable":"Có bản cập nhật","models.versionUnknown":"Chưa rõ phiên bản","models.selected":"Đã chọn","models.downloaded":"Đã tải","models.queued":"đang chờ","models.stopping":"đang dừng","models.checkingSize":"đang kiểm tra dung lượng…","models.hfAccess":"Cần quyền truy cập Hugging Face","models.sizeUnavailable":"chưa rõ dung lượng","models.stopDownload":"Dừng tải","models.cleanPartial":"Xóa phần tải dở","models.sharedPackage":"Dùng chung gói {name} ở trên.","runtime.eyebrow":"TRẠNG THÁI","runtime.title":"Nhật ký phiên","runtime.subtitle":"Các sự kiện hoạt động và yêu cầu từ trình duyệt.","runtime.status":"Trạng thái","runtime.backend":"Bộ xử lý","runtime.registered":"Đã đăng ký","runtime.resident":"Đã nạp","runtime.noEvents":"Chưa có sự kiện.","status.ready":"Sẵn sàng","status.modelReady":"{model} đã nạp và sẵn sàng.","status.runningTask":"Đang chạy {task}...","status.completeIn":"Hoàn tất sau {seconds} giây.","status.packageAvailable":"{model} sẽ dùng {format}. Đã có thể dùng trong Phòng thu.","folder.eyebrow":"THƯ MỤC MODEL","folder.title":"Chọn thư mục","folder.closeLabel":"Đóng trình duyệt thư mục","folder.loading":"Đang tải...","folder.up":"Lên một cấp","folder.loadingFolders":"Đang tải danh sách thư mục...","folder.empty":"Thư mục này không có thư mục con.","folder.select":"Chọn thư mục này","footer.embedded":"SvelteKit · tích hợp trong audiocpp_server"}')},V8={code:"zh",name:"中文",translations:{"request.minimaxFrames":"{frames} 个对齐输出帧","param.minimax_h3.num_inference_steps.label":"去噪步数","param.minimax_h3.num_inference_steps.info":"十二个去噪步骤可在质量和性能之间取得实用的平衡。","param.minimax_h3.num_frames.label":"输出帧数","param.minimax_h3.num_frames.info":"根据时长自动计算,每秒输出约 24 帧。编辑帧数也会更新时长。","param.minimax_h3.guidance_scale.label":"引导强度","param.minimax_h3.sampler.label":"采样器","param.minimax_h3.dit_acceleration.label":"DiT 加速","param.minimax_h3.dit_acceleration.info":"“none”使用质量优先的完整 DiT 路径。加速模式为实验性功能,可能使某些输出失真。","param.minimax_h3.return_video.label":"解码视频","param.minimax_h3.return_video.info":"默认禁用以减少内存占用,并仅返回音频。","model.minimax_h3.hint":"MiniMax-H3 使用联合音频/视频 DiT。GGUF Q4 是质量优先版本;仅支持 CUDA 的 GGUF Q4 ConvRot 使用稍多显存以提高速度。默认完整 DiT 路径优先保证音频质量,并禁用视频解码。","status.modelReady":"{model} 已加载并准备就绪。","status.runningTask":"正在运行{task}...","status.completeIn":"已在 {seconds} 秒内完成。","status.packageAvailable":"{model} 将使用 {format},现可在工作室中使用。","app.nativeStudio":"原生工作室","nav.studio":"工作室","nav.arena":"对比场","nav.models":"模型","nav.runtime":"运行环境","language.label":"界面语言","theme.label":"主题","theme.system":"跟随系统","theme.dark":"深色","theme.light":"浅色","workflow.tts":"文本转语音","workflow.asr":"ASR / 转录","workflow.music":"音乐 / 视频生成","workflow.vc":"语音转换","workflow.sep":"音源分离","workflow.analysis":"音频分析","workflow.design":"音色设计","studio.eyebrow":"本地音频智能","studio.title":"音频工作室","studio.subtitle.tts":"从文本生成自然语音,并在模型支持时使用预设音色或声音克隆。","studio.subtitle.asr":"将语音音频转为文本,并在模型支持时设置语言和时间戳。","studio.subtitle.music":"根据描述、歌词或参考音频创作音乐和声音。","studio.subtitle.vc":"将录音转换为另一种声音,同时保留原有的说话或演唱表现。","studio.subtitle.sep":"将录音分离为人声、乐器或其他可用音轨。","studio.subtitle.analysis":"分析语音活动、说话人、时间信息和音频对齐。","studio.subtitle.design":"根据文字描述和支持的参考控制创建或调整声音。","studio.model":"模型","studio.noModel":"未选择模型","studio.resident":"已加载","studio.notInstalled":"未安装","studio.available":"可用","studio.chooseInstalled":"选择已安装的模型","studio.notDownloaded":"未下载","studio.pathFound":"已找到路径","studio.pathMissing":"路径不存在","studio.pathUnknown":"尚未检查路径","studio.load":"加载模型","studio.unload":"卸载模型","studio.working":"处理中…","studio.bundledLoaded":"内置 · 已加载","request.label":"请求","request.title":"输入与控制","request.prompt":"提示词","request.text":"文本","request.splitLongText":"拆分并合并长文本","request.charactersPerChunk":"每段字符数","request.language":"语言","request.autoLanguage":"留空 = 自动","request.seed":"随机种子","request.randomSeed":"-1 = 随机","request.maxTokens":"最大令牌数","request.sourceAudio":"源音频","request.recordMicrophone":"录制麦克风","voice.quickStart":"快速开始演示音色","voice.useReference":"使用下方参考音频文件","voice.reference":"参考音色","voice.required":"必需","voice.optional":"可选","voice.referenceText":"参考文本","voice.transcript":"参考转录","voice.saved":"已保存音色","voice.browserOnly":"仅存储在此浏览器中","voice.chooseSaved":"选择已保存音色...","voice.libraryName":"库名称","voice.save":"保存音色","common.delete":"删除","common.cancel":"取消","common.close":"关闭","common.refresh":"刷新","common.browse":"浏览","common.apply":"应用","options.modelParameters":"模型参数","options.additional":"其他选项","run.run":"运行","run.cancel":"取消","run.working":"处理中…","result.title":"输出","result.label":"结果","result.saveWav":"保存 WAV","result.empty":"生成的音频和结构化结果将显示在这里。","models.eyebrow":"模型库","models.title":"本地软件包","models.subtitle":"无需离开原生界面即可下载和管理模型包。","models.folder":"模型文件夹","models.useDefault":"使用默认值","models.showTypes":"显示模型类型","models.stopDownload":"停止下载","models.cleanPartial":"清理部分下载","runtime.title":"会话日志","runtime.status":"状态","runtime.backend":"后端","runtime.registered":"已注册","runtime.resident":"已加载","runtime.noEvents":"暂无事件。","folder.title":"选择文件夹","folder.up":"上一级","folder.select":"选择此文件夹","common.applying":"正在应用…","common.disabled":"已禁用","common.enabled":"已启用","file.choose":"选择文件","file.none":"未选择文件","folder.closeLabel":"关闭文件夹浏览器","folder.empty":"此文件夹没有子文件夹。","folder.eyebrow":"模型文件夹","folder.loading":"正在加载...","folder.loadingFolders":"正在加载文件夹...","footer.embedded":"SvelteKit · 内置于 audiocpp_server","models.checkingSize":"正在检查大小…","models.default":"默认","models.downloaded":"已下载","models.folderHint":"用于下载、本地检测和模型加载","models.folderPlaceholder":"audiocpp_server 旁的 models 文件夹","models.hfAccess":"需要 HF 访问权限","models.model":"模型","models.queued":"排队中","models.reinstall":"重新安装","models.selected":"已选择","models.sharedPackage":"使用上方显示的共享 {name} 软件包。","models.sizeUnavailable":"大小不可用","models.stopping":"正在停止","models.update":"更新","models.updateAvailable":"有可用更新","models.upToDate":"已是最新","models.variants":"变体","models.versionUnknown":"版本未知","nav.primary":"主导航","nav.workflows":"音频工作流程","arena.eyebrow":"对比场","arena.title.tts":"TTS 对比","arena.title.vc":"语音转换对比","arena.title.asr":"ASR 对比","arena.subtitle":"用同一输入依次运行已选择的已安装模型和精度包,方便比较输出。","arena.subtitle.tts":"用同一文本依次运行已选择的 TTS 模型和精度包。","arena.subtitle.vc":"用同一源音频依次运行已选择的语音转换模型。","arena.subtitle.asr":"用同一源音频依次运行已选择的 ASR 模型并比较转录结果。","arena.mode.tts":"TTS","arena.mode.vc":"语音转换","arena.mode.asr":"ASR","arena.input.label":"输入","arena.input.title":"共享请求","arena.input.textPlaceholder":"输入一段文本,用于对比多个 TTS 模型","arena.input.groundTruth":"真实文本","arena.input.groundTruthPlaceholder":"粘贴期望转录文本以计算 WER","arena.shared":"共享","arena.voice.label":"声音","arena.voice.modelDefault":"模型默认","arena.voice.builtin":"内置演示声音","arena.voice.reference":"参考音频","arena.voice.builtinNote":"内置声音会作为 voice ID 传给每个模型。此声音来源不需要参考文本。","arena.voice.targetSpeaker":"目标说话人音频","arena.voice.clearTarget":"清除目标","arena.voice.clearReference":"清除参考","arena.options.shared":"共享选项","arena.queue.label":"队列","arena.queue.title":"模型","arena.queue.add":"添加","arena.queue.remove":"移除","arena.queue.clear":"清空","arena.queue.empty":"添加已安装模型或精度包进行对比。","arena.run":"运行对比","arena.package.label":"软件包","arena.package.configured":"已配置","arena.results.title":"比较输出","arena.results.empty":"暂无对比结果。","arena.metric.wall":"耗时","arena.metric.rtf":"RTF","arena.metric.wer":"WER","arena.itemStatus.queued":"排队中","arena.itemStatus.loading":"加载中","arena.itemStatus.running":"运行中","arena.itemStatus.done":"完成","arena.itemStatus.failed":"失败","arena.itemStatus.skipped":"跳过","arena.status.duplicate":"{model} {package} 已在对比队列中。","arena.status.loadingModel":"正在加载模型","arena.status.runningRequest":"正在运行请求","arena.status.addModel":"请至少添加一个模型到对比场。","arena.status.running":"正在运行 {mode} 对比...","arena.status.complete":"对比运行完成。","arena.note.skippedTargetVoice":"已跳过:此语音转换模型需要目标说话人音频。","arena.note.skippedReferenceText":"已跳过:此模型对所选声音输入需要参考文本。","arena.note.builtinVoice":"使用内置声音:{voice}。","arena.note.referenceVoice":"使用参考声音。","arena.note.referenceUnsupported":"使用模型默认声音;此模型不支持参考声音。","arena.note.defaultVoice":"使用默认声音:{voice}。","arena.note.skippedReferenceVoice":"已跳过:此模型需要参考声音。","arena.error.seed":"Seed 必须为 -1 或 0 到 4294967295 的无符号 32 位整数。","arena.error.jsonObject":"必须是对象","arena.error.invalidJson":"对比场选项 JSON 无效:{error}","arena.error.unregistered":"此服务器未注册已配置模型。","arena.error.notDownloaded":"{package} 未下载。","arena.error.loadFailed":"模型未加载。","arena.error.missingCatalog":"模型已不在目录中。","arena.error.enterTtsText":"请输入 TTS 对比文本。","arena.error.chooseAsrSource":"请选择 ASR 对比的源音频。","arena.error.chooseVcSource":"请选择语音转换对比的源音频。","arena.error.noAudio":"响应中没有音频。","request.alignmentText":"对齐文本","request.context":"上下文提示","request.contextHint":"可选术语或名称","request.duration":"持续时间(秒)","request.liveDescription":"使用模型的流式模式连续处理四秒请求。","request.liveTitle":"实时麦克风转录","request.lyrics":"歌词","request.optional":"可选","request.recordingMicrophone":"正在录制麦克风","request.soundPlaceholder":"描述声音或音乐…","request.startLive":"开始实时处理","request.stopLive":"停止实时处理","request.stopRecording":"停止录制","request.textPlaceholder":"输入文本…","request.voiceDescription":"音色描述","request.voiceDescriptionPlaceholder":"温暖、平静且语速适中的声音…","result.track":"音轨","result.tracks":"音轨","runtime.eyebrow":"运行环境","runtime.subtitle":"浏览器端生命周期和请求事件。","status.ready":"就绪","studio.estimatedVram":"预计 VRAM:{value} GB","studio.vram":"VRAM —","task.align":"强制对齐","task.asr":"语音转录","task.clon":"声音克隆","task.diar":"说话人分离","task.gen":"音乐生成","task.s2s":"语音编辑","task.sep":"音源分离","task.svc":"歌声音色转换","task.tts":"文本转语音","task.vad":"语音活动检测","task.vc":"语音转换","task.vdes":"音色设计","voice.bundledNote":"内置参考音频及其匹配转录将自动提供。","voice.namePlaceholder":"我的参考音色","voice.recommendedClone":"建议用于克隆","voice.recording":"正在录制参考音色","voice.requiredClone":"此声音克隆必需","voice.transcriptPlaceholder":"输入参考音频中的准确文字,或加载上方匹配的 .txt 文件。"}},lm={"app.nativeStudio":"Native Studio","nav.studio":"Studio","nav.arena":"Arena","nav.models":"Models","nav.runtime":"Runtime","nav.configuration":"Configuration","nav.primary":"Primary navigation","nav.workflows":"Audio workflows","language.label":"Interface language","theme.label":"Theme","theme.system":"System","theme.dark":"Dark","theme.mocha":"Catppuccin Mocha","theme.light":"Light","theme.paper":"Paper","arena.eyebrow":"ARENA","arena.title.tts":"TTS comparison","arena.title.vc":"Voice conversion comparison","arena.title.asr":"ASR comparison","arena.subtitle":"Run the same input through selected installed models and package variants, one after another.","arena.subtitle.tts":"Run the same text through selected TTS models and package variants.","arena.subtitle.vc":"Run the same source audio through selected voice conversion models.","arena.subtitle.asr":"Run the same source audio through selected ASR models and compare transcripts.","arena.mode.tts":"TTS","arena.mode.vc":"Voice conversion","arena.mode.asr":"ASR","arena.input.label":"Input","arena.input.title":"Shared request","arena.input.textPlaceholder":"Enter one prompt to compare across TTS models","arena.input.groundTruth":"Ground truth text","arena.input.groundTruthPlaceholder":"Paste the expected transcript to calculate WER","arena.shared":"shared","arena.voice.label":"Voice","arena.voice.modelDefault":"Model default","arena.voice.builtin":"Built-in demo voice","arena.voice.reference":"Reference audio","arena.voice.builtinNote":"Built-in voices are passed as voice IDs for each model. Reference text is not required for this voice source.","arena.voice.targetSpeaker":"Target speaker audio","arena.voice.clearTarget":"Clear target","arena.voice.clearReference":"Clear reference","arena.options.shared":"Shared options","arena.queue.label":"Queue","arena.queue.title":"Models","arena.queue.add":"Add","arena.queue.remove":"Remove","arena.queue.clear":"Clear","arena.queue.empty":"Add installed models or dtype packages to compare.","arena.run":"Run arena","arena.package.label":"Package","arena.package.configured":"Configured","arena.results.title":"Compare outputs","arena.results.orderSelection":"Order: selection order","arena.results.orderRtf":"Order: RTF, lowest first · completed results first","arena.results.empty":"No arena results yet.","arena.metric.wall":"wall","arena.metric.rtf":"rtf","arena.metric.wer":"wer","arena.itemStatus.queued":"queued","arena.itemStatus.loading":"loading","arena.itemStatus.running":"running","arena.itemStatus.done":"done","arena.itemStatus.failed":"failed","arena.itemStatus.skipped":"skipped","arena.status.duplicate":"{model} {package} is already in the arena.","arena.status.loadingModel":"Loading model","arena.status.runningRequest":"Running request","arena.status.addModel":"Add at least one model to the arena.","arena.status.running":"Running {mode} arena...","arena.status.complete":"Arena run complete.","arena.note.skippedTargetVoice":"Skipped because this VC model requires target speaker audio.","arena.note.skippedReferenceText":"Skipped because this model requires reference text for the selected voice input.","arena.note.builtinVoice":"Used built-in voice: {voice}.","arena.note.referenceVoice":"Used reference voice.","arena.note.referenceUnsupported":"Used default voice; reference voice is not supported.","arena.note.defaultVoice":"Used default voice: {voice}.","arena.note.skippedReferenceVoice":"Skipped because this model requires a reference voice.","arena.error.seed":"Seed must be -1 or an unsigned 32-bit integer (0 to 4294967295).","arena.error.jsonObject":"must be an object","arena.error.invalidJson":"Arena options JSON is invalid: {error}","arena.error.unregistered":"Configured model is not registered by this server.","arena.error.notDownloaded":"{package} is not downloaded.","arena.error.loadFailed":"Model did not load.","arena.error.missingCatalog":"Model is no longer in the catalog.","arena.error.enterTtsText":"Enter text for the TTS arena.","arena.error.chooseAsrSource":"Choose source audio for the ASR arena.","arena.error.chooseVcSource":"Choose source audio for the VC arena.","arena.error.noAudio":"Response did not include audio.","workflow.tts":"Text to speech","workflow.asr":"ASR / Transcription","workflow.music":"Music / video generation","workflow.vc":"Voice Conversion / S2S","workflow.enhancement":"Enhancement / denoising","models.tools":"tools","workflow.sep":"Source separation","workflow.analysis":"Audio analysis","workflow.design":"Voice design","task.tts":"Text to speech","task.clon":"Voice cloning","task.asr":"Transcription","task.gen":"Music generation","task.midi":"Audio to MIDI","task.vc":"Voice conversion","task.svc":"Singing voice conversion","task.s2s":"Speech editing","task.sep":"Source separation","task.vad":"Voice activity","task.diar":"Speaker diarization","task.align":"Forced alignment","task.vdes":"Voice design","task.wake":"Wake-word detection","task.cls":"Audio classification","studio.eyebrow":"LOCAL AUDIO INTELLIGENCE","studio.title":"Audio studio","studio.subtitle.tts":"Generate natural speech from text, with voice presets and cloning when supported.","studio.subtitle.asr":"Transcribe spoken audio into text, with language and timestamp controls when supported.","studio.subtitle.music":"Create music and sound from a prompt, lyrics, or reference audio when supported.","studio.subtitle.vc":"Convert spoken or sung voices, or get a spoken reply to audio input.","studio.subtitle.sep":"Split a recording into vocals, instruments, or other available audio stems.","studio.subtitle.analysis":"Analyze audio for speech activity, speakers, timing, and alignment.","studio.subtitle.enhancement":"Enhance audio, remove background noise, or restore bandwidth.","studio.subtitle.design":"Create or refine a voice from a written description and supported reference controls.","studio.model":"Model","studio.noModel":"No model selected","studio.resident":"Resident","studio.notInstalled":"Not installed","studio.available":"Available","studio.chooseInstalled":"Choose an installed model","studio.notDownloaded":"not downloaded","studio.pathFound":"Path found","studio.pathMissing":"Path missing","studio.pathUnknown":"Path not inspected","studio.estimatedVram":"{value} GB estimated VRAM","studio.vram":"VRAM —","studio.load":"Load model","studio.unload":"Unload model","studio.working":"Working…","studio.bundledLoaded":"Bundled · loaded","request.label":"REQUEST","request.title":"Input & controls","request.prompt":"Prompt","request.alignmentText":"Alignment text","request.text":"Text","request.soundPlaceholder":"Describe the sound or music…","request.textPlaceholder":"Enter the text…","request.splitLongText":"Split and merge long text","request.charactersPerChunk":"Characters per chunk","request.lyrics":"Lyrics","request.optional":"optional","request.context":"Context prompt","request.contextHint":"optional terminology or names","request.voiceDescription":"Voice description","request.voiceDescriptionPlaceholder":"A warm, calm voice with measured pacing…","request.language":"Language","request.autoLanguage":"blank = auto","request.seed":"Seed","request.randomSeed":"-1 = random","request.maxTokens":"Maximum tokens","request.duration":"Duration seconds","request.autoDuration":"-1 = auto","request.rewriteCaption":"Rewrite caption","request.rewritingCaption":"Rewriting caption...","request.minimaxFrames":"{frames} aligned output frames","request.sourceAudio":"Source audio","request.stopRecording":"Stop recording","request.recordingMicrophone":"Recording microphone","request.recordMicrophone":"Record microphone","request.liveTitle":"Live microphone transcription","request.liveDescription":"Processes consecutive four-second requests using the model's streaming mode.","request.stopLive":"Stop live","request.startLive":"Start live","voice.quickStart":"Quick-start voice presets (demo voices)","voice.configured":"Configured voices","voice.useReference":"Use a reference audio file below","voice.bundledNote":"The bundled reference audio and its matching transcript are supplied automatically.","voice.reference":"Reference voice","voice.required":"required","voice.optional":"optional","voice.referenceText":"Reference text","voice.recording":"Recording voice reference","voice.transcript":"Reference transcript","voice.requiredClone":"required for this voice clone","voice.recommendedClone":"recommended for cloning","voice.transcriptPlaceholder":"Type the exact words spoken in the reference audio, or load a matching .txt file above.","voice.saved":"Saved voices","voice.browserOnly":"stored only in this browser","voice.chooseSaved":"Choose a saved voice...","voice.libraryName":"Library name","voice.namePlaceholder":"My reference voice","voice.save":"Save voice","voice.clearReference":"Clear reference","voice.preset":"Voice preset","voice.speakerReferences":"Speaker references","voice.upToFour":"optional, up to 4","voice.speaker":"Speaker {number}","voice.dialoguePlaceholder":"[S1] Words spoken in Speaker 1's reference. [S2] Words spoken in Speaker 2's reference.","settings.load":"Load settings JSON","settings.save":"Save settings JSON","history.title":"Run history (Experimental)","history.clear":"Clear history","history.deleteRun":"Delete generation {id}","history.wrongModel":"Cannot open history for {label}: the current model is {model}.","history.wait":"Wait for the current request or settings restore to finish.","configuration.history":"Run History","configuration.historyLimit":"Maximum retained runs","configuration.save":"Save configuration","configuration.saved":"Configuration saved.","studio.weightsPath":"Weights path on server","studio.downloadWeights":"Download SafeTensors weights","studio.format":"Model format","studio.configured":"Configured","studio.serverConfigured":"Configured by server config","studio.loadPackage":"Load {package}","studio.unloadPackage":"Unload {package}","studio.packageNotDownloaded":"{package} is not downloaded","run.chooseModel":"Choose an installed model first","run.installModel":"Install this model from the Models tab first","run.elapsed":"Elapsed generation time","result.saveArtifact":"Save {format}","result.videoPreview":"Video preview","common.delete":"Delete","common.enabled":"Enabled","common.disabled":"Disabled","common.cancel":"Cancel","common.close":"Close","common.refresh":"Refresh","common.browse":"Browse","common.apply":"Apply","common.applying":"Applying…","file.choose":"Choose file","file.none":"No file chosen","file.preview":"Preview","file.clear":"Clear file","options.modelParameters":"Model parameters","options.additional":"Additional options","param.minimax_h3.num_inference_steps.label":"Denoising steps","param.minimax_h3.num_inference_steps.info":"Twelve denoising steps provide a practical quality and performance balance.","param.minimax_h3.num_frames.label":"Output frames","param.minimax_h3.num_frames.info":"Calculated from duration at approximately 24 frames per output second. Editing frames also updates duration.","param.minimax_h3.guidance_scale.label":"Guidance scale","param.minimax_h3.sampler.label":"Sampler","param.minimax_h3.dit_acceleration.label":"DiT acceleration","param.minimax_h3.dit_acceleration.info":"None uses the quality-first full-DiT path. Acceleration modes are experimental and may distort some outputs.","param.minimax_h3.return_video.label":"Decode video","param.minimax_h3.return_video.info":"Disabled by default to reduce memory use and return audio only.","model.minimax_h3.hint":"MiniMax-H3 uses a joint audio/video DiT. GGUF Q4 is the quality-first choice; CUDA-only GGUF Q4 ConvRot uses slightly more VRAM for higher speed. The default full-DiT path prioritizes audio quality and video decoding is disabled.","run.run":"Run","run.cancel":"Cancel","run.working":"Working…","result.label":"RESULT","result.title":"Output","result.track":"track","result.tracks":"tracks","result.saveWav":"Save WAV","result.empty":"Generated audio and structured results appear here.","models.eyebrow":"MODEL LIBRARY","models.title":"Local packages","models.subtitle":"Download and manage model packages without leaving the native interface.","models.folder":"Models folder","models.folderHint":"downloads, local detection, and model loading","models.folderPlaceholder":"models folder beside audiocpp_server","models.default":"Default","models.useDefault":"Use default","models.showTypes":"Show model types","models.model":"model","models.variants":"variants","models.update":"Update","models.reinstall":"Reinstall","models.upToDate":"Up to date","models.updateAvailable":"Update available","models.versionUnknown":"Version unknown","models.selected":"Selected","models.downloaded":"Downloaded","models.queued":"queued","models.stopping":"stopping","models.checkingSize":"checking size…","models.hfAccess":"HF access required","models.sizeUnavailable":"size unavailable","models.stopDownload":"Stop download","models.cleanPartial":"Clean partial download","models.sharedPackage":"Uses the shared {name} package shown above.","runtime.eyebrow":"RUNTIME","runtime.title":"Session log","runtime.subtitle":"Browser-side lifecycle and request events.","runtime.status":"Status","runtime.backend":"Backend","runtime.registered":"Registered","runtime.resident":"Resident","runtime.noEvents":"No events yet.","runtime.serverLogNotice":"This panel shows UI events, not server logs. Add --log --log-file server.log to your server startup command, then open server.log on the server machine.","status.ready":"Ready","status.modelReady":"{model} is resident and ready.","status.runningTask":"Running {task}...","status.completeIn":"Complete in {seconds}s.","status.packageAvailable":"{model} will use {format}. It is available in Studio.","folder.eyebrow":"MODELS FOLDER","folder.title":"Choose a folder","folder.closeLabel":"Close folder browser","folder.loading":"Loading...","folder.up":"Up one level","folder.loadingFolders":"Loading folders...","folder.empty":"This folder has no subfolders.","folder.select":"Select this folder","footer.embedded":"SvelteKit · embedded in audiocpp_server"},H8=Object.assign({"../../lang/lang_it.json":N8,"../../lang/lang_ja.json":O8,"../../lang/lang_pl.json":I8,"../../lang/lang_ru.json":L8,"../../lang/lang_vi.json":D8,"../../lang/lang_zh.json":V8}),Hd=new Map([["en",lm]]),O1=[{code:"en",name:"English"}];for(const[t,e]of Object.entries(H8).sort(([a],[n])=>a.localeCompare(n))){const a=t.match(/lang_([^/\\.]+)\.json$/)?.[1]?.toLowerCase(),n=(e.code||a||"").trim().toLowerCase();!n||n==="en"||!e.name||!e.translations||(Hd.set(n,e.translations),O1.push({code:n,name:e.name}))}const W8=O1;function I1(t){const e=Hd.get(t)||lm;return(a,n={},s=a)=>{let r=e[a]||lm[a]||s;for(const[o,l]of Object.entries(n))r=r.replaceAll(`{${o}}`,String(l));return r}}function L1(t){for(const e of t){const a=e.toLowerCase();if(Hd.has(a))return a;const n=a.split("-")[0];if(Hd.has(n))return n}return"en"}var Q8=ue(' '),K8=ue('',2),Y8=ue(''),X8=ue('
');function Ln(t,e){Wa(e,!1);const a=se(),n=se(),s=se();let r=$e(e,"file",8,null),o=$e(e,"src",8,""),l=$e(e,"name",8,""),u=$e(e,"kind",8,"audio"),p=$e(e,"label",8,"Preview"),g=se(""),h=se(null),f=se("");function m(){i(g)&&(URL.revokeObjectURL(i(g)),M(g,""))}fl(m),We(()=>(Z(r()),i(h)),()=>{r()!==i(h)&&(m(),M(h,r()),r()&&M(g,URL.createObjectURL(r())))}),We(()=>(i(g),Z(o())),()=>{M(a,i(g)||o())}),We(()=>(i(a),i(f)),()=>{M(n,!!i(a)&&i(f)===i(a))}),We(()=>(Z(r()),Z(l())),()=>{M(s,r()?.name||l())}),Yn(),xn();var d=Us(),c=At(d);{var _=b=>{var v=X8(),k=E(v),y=E(k),T=E(y,!0);F(y);var O=R(y,2);{var j=x=>{var B=Q8(),D=E(B,!0);F(B),ce(()=>X(D,i(s))),te(x,B)};qe(O,x=>{i(s)&&x(j)})}F(k);var $=R(k,2);{var P=x=>{var B=K8();ce(()=>ye(B,"src",i(a))),Te("error",B,()=>M(f,i(a))),te(x,B)},L=x=>{var B=Y8();ce(()=>ye(B,"src",i(a))),Te("error",B,()=>M(f,i(a))),te(x,B)};qe($,x=>{u()==="video"?x(P):x(L,-1)})}F(v),ce(()=>X(T,p())),te(b,v)};qe(c,b=>{i(a)&&!i(n)&&b(_)})}te(t,d),Qa()}var J8=ue('
LoRA adapter
');function cm(t,e){let a=$e(e,"selected",8,0);var n=J8(),s=E(n),r=E(s);F4(r,{size:16});var o=R(r,2),l=E(o,!0);F(o),F(s);var u=R(s,2),p=E(u);Mx(p,e,"default",{}),F(u),F(n),ce(()=>X(l,a()>1?`${a()} selected`:a()?"Selected":"None")),te(t,n)}var D1=ue(" "),Z8=ue('

',1);function eT(t,e){Wa(e,!1);const a=se(),n=se(),s=se();let r=$e(e,"specs",8),o=$e(e,"values",8),l=$e(e,"editable",8,!1),u=$e(e,"busy",8,!1),p=$e(e,"onChange",8),g=$e(e,"onBrowse",8);We(()=>Z(r()),()=>{M(a,r().find(d=>d.name==="lora"))}),We(()=>Z(r()),()=>{M(n,r().find(d=>d.name==="lora_scale"))}),We(()=>Z(o()),()=>{M(s,String(o().lora??"").trim())}),Yn(),xn();var h=Us(),f=At(h);{var m=d=>{{let c=Pt(()=>i(s)?1:0);cm(d,{get selected(){return i(c)},children:(_,b)=>{var v=Z8(),k=At(v),y=E(k,!0);F(k);var T=R(k,2),O=E(T),j=R(E(O),2),$=E(j);Dt($);var P=R($,2);F(j),F(O);var L=R(O,2),x=R(E(L),2);Dt(x),F(L),F(T);var B=R(T,2);{var D=V=>{var I=D1(),w=E(I,!0);F(I),ce(()=>X(w,(i(a),q(()=>i(a).info)))),te(V,I)};qe(B,V=>{i(a),q(()=>i(a).info)&&V(D)})}var A=R(B,2);{var G=V=>{var I=D1(),w=E(I,!0);F(I),ce(()=>X(w,(i(n),q(()=>i(n).info)))),te(V,I)};qe(A,V=>{i(n),q(()=>i(n).info)&&V(G)})}var U=R(A,2);ce((V,I)=>{X(y,l()?"Applied when the model loads. Reload or generate to apply changes.":"Managed by the server configuration. Set the adapter and strength in its session options."),Ki($,V),$.disabled=u()||!l(),P.disabled=u()||!l(),ye(x,"step",(i(n),q(()=>i(n).step))),ye(x,"min",(i(n),q(()=>i(n).minimum))),ye(x,"max",(i(n),q(()=>i(n).maximum))),Ki(x,I),x.disabled=u()||!l()||!i(s),U.disabled=u()||!l()||!i(s)},[()=>(Z(o()),q(()=>String(o().lora??""))),()=>(Z(o()),q(()=>String(o().lora_scale??"")))]),Te("input",$,V=>p()(i(a),V.currentTarget.value.trim())),Te("click",P,()=>g()(i(a))),Te("input",x,V=>{V.currentTarget.value===""?p()(i(n),""):Number.isFinite(V.currentTarget.valueAsNumber)&&p()(i(n),V.currentTarget.valueAsNumber)}),Te("click",U,()=>{p()(i(a),""),p()(i(n),i(n).default??"")}),te(_,v)},$$slots:{default:!0}})}};qe(f,d=>{i(a)&&i(n)&&d(m)})}te(t,h),Qa()}var Wd=ue(""),V1=ue(""),tT=ue(" ",1);function H1(t,e){Wa(e,!1);let a=$e(e,"id",8),n=$e(e,"value",8,""),s=$e(e,"presets",24,()=>[]),r=$e(e,"savedVoices",24,()=>[]),o=$e(e,"presetLabel",8),l=$e(e,"emptyLabel",8),u=$e(e,"allowEmpty",8,!0),p=$e(e,"referenceOption",8,!1),g=$e(e,"disabled",8,!1),h=$e(e,"tr",8),f=$e(e,"onselect",8);xn();var m=tT(),d=At(m),c=E(d,!0);F(d);var _=R(d,2),b=E(_);{var v=L=>{var x=Wd(),B=E(x,!0);F(x),x.value=x.__value="",ce(()=>X(B,l())),te(L,x)};qe(b,L=>{u()&&L(v)})}var k=R(b);{var y=L=>{var x=Wd(),B=E(x,!0);F(x),x.value=x.__value="reference",ce(D=>X(B,D),[()=>(Z(h()),q(()=>h()("arena.voice.reference")))]),te(L,x)};qe(k,L=>{p()&&L(y)})}var T=R(k);{var O=L=>{var x=V1();jt(x,5,s,ei,(B,D)=>{var A=Wd(),G=E(A,!0);F(A);var U={};ce(()=>{X(G,i(D)),U!==(U=`preset:${i(D)}`)&&(A.value=A.__value=`preset:${i(D)}`)}),te(B,A)}),F(x),ce(()=>ye(x,"label",o())),te(L,x)};qe(T,L=>{Z(s()),q(()=>s().length)&&L(O)})}var j=R(T);{var $=L=>{var x=V1();jt(x,5,r,ei,(B,D)=>{var A=Wd(),G=E(A,!0);F(A);var U={};ce(()=>{X(G,(i(D),q(()=>i(D).name))),U!==(U=(i(D),q(()=>`saved:${i(D).id}`)))&&(A.value=(A.__value=(i(D),q(()=>`saved:${i(D).id}`)))??"")}),te(B,A)}),F(x),ce(B=>ye(x,"label",B),[()=>(Z(h()),q(()=>h()("voice.saved")))]),te(L,x)};qe(j,L=>{Z(r()),q(()=>r().length)&&L($)})}F(_);var P;On(_),ce(L=>{ye(d,"for",a()),X(c,L),ye(_,"id",a()),_.disabled=g(),P!==(P=n())&&(_.value=(_.__value=n())??"",kn(_,n()))},[()=>(Z(h()),q(()=>h()("arena.voice.label")))]),Te("change",_,L=>f()(L.currentTarget.value)),te(t,m),Qa()}const iT=/^\s*(Speaker\s+\d+\s*:)\s*(.*)$/i,W1=new Set(["。","!","?","!","?",";",";","…","."]),aT=new Set(["mr","mrs","ms","dr","prof","sr","jr","st","mt","rev","hon","vs","etc","eg","ie","approx","dept","est","fig","no","vol","jan","feb","mar","apr","jun","jul","aug","sep","sept","oct","nov","dec","inc","ltd","co","corp"]);function Q1(t){return t>="0"&&t<="9"}function nT(t){return/[\p{L}\p{N}']/u.test(t)}function sT(t,e){const a=t[e+1];if(a!==void 0&&!/\s/.test(a)||e>0&&Q1(t[e-1])&&a!==void 0&&Q1(a))return!1;let n=e;for(;n>0&&nT(t[n-1]);)n-=1;const s=t.slice(n,e);return s.length===1&&/\p{L}/u.test(s)?!1:!aT.has(s.toLowerCase())}function rT(t){const e=[];let a=0;for(let n=0;ne;){let s=n.lastIndexOf(" ",e);s<=0&&(s=e);const r=n.slice(0,s).trim();r&&a.push(r),n=n.slice(s).trim()}return n&&a.push(n),a}function lT(t,e){const a=iT.exec(t),n=a?`${a[1]} `:"",s=a?a[2]:t.trim(),r=Math.max(1,e-n.length),o=rT(s);o.length||o.push(s);const l=[];let u="",p="";for(const g of o){const h=g.trimEnd();if(!h)continue;const f=g.slice(h.length);if(u&&u.length+p.length+h.length>r&&(l.push(n+u.trim()),u="",p=""),h.length<=r){u=u?`${u}${p}${h}`:h,p=f;continue}u&&(l.push(n+u.trim()),u="",p="");for(const m of oT(h,r))l.push(n+m)}return u&&l.push(n+u.trim()),l.length?l:[t]}function cT(t,e){const a=[];for(const o of t.split(/\r?\n/))o.trim()&&a.push(...o.length>e?lT(o,e):[o]);const n=[];let s=[],r=0;for(const o of a){const l=s.length?1:0;s.length&&r+l+o.length>e&&(n.push(s.join(` `)),s=[],r=0),s.push(o),r+=(s.length>1?1:0)+o.length}return s.length&&n.push(s.join(` -`)),n.length?n:t.trim()?[t]:[]}function cm(t){return t==="vibevoice"?600:t==="voxcpm2"?60:1e3}const H1="audiocpp.ui.theme",eT=[{id:"mocha",label:"Catppuccin Mocha"},{id:"system",label:"System"},{id:"dark",label:"Dark"},{id:"light",label:"Light"},{id:"paper",label:"Paper"}];function W1(t){return t==="dark"||t==="light"||t==="system"||t==="mocha"||t==="paper"?t:"mocha"}function tT(t,e){return t!=="system"?t:e?"dark":"light"}var Q1=ue(""),Od=ue(' '),iT=ue('
'),aT=ue('
'),nT=ue('
'),sT=ue(''),rT=ue(""),oT=ue('
'),lT=ue(''),cT=ue('
'),dT=ue('
Components
Sampling and memory
');function uT(t,e){Ya(e,!1);const a=oe(),n=oe(),s=oe(),r=oe(),o=oe();let l=Ge(e,"task",8,"tts"),u=Ge(e,"busy",8,!1),p=Ge(e,"paramSpecs",24,()=>[]),g=Ge(e,"advancedValues",24,()=>({})),h=Ge(e,"tr",8,(B,V,I=B)=>I),m=Ge(e,"localizedParameterText",8,(B,V)=>V==="label"?B.name:""),f=Ge(e,"setParameterValue",8,()=>{});const d=["model_gguf","qwen_gguf","vae_gguf"],c=["num_inference_steps","guidance_scale","sway_sampling_coef"],_=["attention","mem_saver"];function b(B){return B.map(V=>p().find(I=>I.name===V)).filter(V=>V!==void 0)}Ke(()=>{},()=>{E(a,b(d))}),Ke(()=>{},()=>{E(n,b(c))}),Ke(()=>{},()=>{E(s,b(_))}),Ke(()=>Z(g()),()=>{E(r,String(g().model_gguf||"auk-base-f32.gguf"))}),Ke(()=>i(r),()=>{E(o,i(r).startsWith("auk-flash-")?"AuK-Flash":"Base")}),ds(),An();var v=dT(),w=z(v),y=j(z(w),2),T=z(y,!0);A(y),A(w);var O=j(w,2);Mt(O,5,()=>i(a),Xt,(B,V)=>{var I=iT(),k=z(I),S=z(k,!0);A(k);var F=j(k,2);Mt(F,5,()=>(i(V),q(()=>i(V).choices||[])),Xt,(re,he)=>{var ie=Q1(),ye=z(ie,!0);A(ie);var se={};de(()=>{X(ye,i(he)),se!==(se=i(he))&&(ie.value=(ie.__value=i(he))??"")}),te(re,ie)}),A(F);var H;jn(F);var Q=j(F,2);{var Y=re=>{var he=Od(),ie=z(he,!0);A(he),de(ye=>X(ie,ye),[()=>(Z(m()),i(V),Z(h()),q(()=>m()(i(V),"info",h())))]),te(re,he)},C=Si(()=>(Z(m()),i(V),Z(h()),q(()=>m()(i(V),"info",h()))));qe(Q,re=>{i(C)&&re(Y)})}A(I),de((re,he)=>{be(k,"for",(i(V),q(()=>"auk-param-"+i(V).name))),X(S,re),be(F,"id",(i(V),q(()=>"auk-param-"+i(V).name))),F.disabled=u(),H!==(H=he)&&(F.value=(F.__value=he)??"",yn(F,he))},[()=>(Z(m()),i(V),Z(h()),q(()=>m()(i(V),"label",h()))),()=>(Z(g()),i(V),q(()=>String(g()[i(V).name]??i(V).default??"")))]),$e("change",F,re=>f()(i(V),re.currentTarget.value)),te(B,I)}),A(O);var R=j(O,2),$=z(R);{var P=B=>{var V=Ls(),I=Et(V);Mt(I,1,()=>q(()=>b(["instruct"])),Xt,(k,S)=>{var F=aT(),H=z(F),Q=z(H),Y=j(Q),C=z(Y,!0);A(Y),A(H);var re=j(H,2);La(re);var he=j(re,2);{var ie=se=>{var we=Od(),ae=z(we,!0);A(we),de(Re=>X(ae,Re),[()=>(Z(m()),i(S),Z(h()),q(()=>m()(i(S),"info",h())))]),te(se,we)},ye=Si(()=>(Z(m()),i(S),Z(h()),q(()=>m()(i(S),"info",h()))));qe(he,se=>{i(ye)&&se(ie)})}A(F),de((se,we,ae,Re)=>{X(Q,`${se??""} `),X(C,we),re.disabled=u(),sa(re,ae),be(re,"placeholder",Re)},[()=>(Z(m()),i(S),Z(h()),q(()=>m()(i(S),"label",h()))),()=>(Z(h()),q(()=>h()("request.optional"))),()=>(Z(g()),q(()=>String(g().instruct??""))),()=>(Z(m()),i(S),Z(h()),q(()=>m()(i(S),"placeholder",h())))]),$e("input",re,se=>f()(i(S),se.currentTarget.value)),te(k,F)}),te(B,V)};qe($,B=>{l()==="tts"&&B(P)})}var L=j($,2);Mt(L,1,()=>q(()=>b(["duration_sec"])),Xt,(B,V)=>{var I=nT(),k=z(I),S=z(k),F=j(S),H=z(F,!0);A(F),A(k);var Q=j(k,2);It(Q);var Y=j(Q,2);{var C=he=>{var ie=Od(),ye=z(ie,!0);A(ie),de(se=>X(ye,se),[()=>(Z(m()),i(V),Z(h()),q(()=>m()(i(V),"info",h())))]),te(he,ie)},re=Si(()=>(Z(m()),i(V),Z(h()),q(()=>m()(i(V),"info",h()))));qe(Y,he=>{i(re)&&he(C)})}A(I),de((he,ie,ye,se)=>{X(S,`${he??""} `),X(H,ie),Q.disabled=u(),be(Q,"min",(i(V),q(()=>i(V).minimum))),be(Q,"max",(i(V),q(()=>i(V).maximum))),be(Q,"step",(i(V),q(()=>i(V).step))),sa(Q,ye),be(Q,"placeholder",se)},[()=>(Z(m()),i(V),Z(h()),q(()=>m()(i(V),"label",h()))),()=>(Z(h()),q(()=>h()("request.optional"))),()=>(Z(g()),q(()=>String(g().duration_sec??""))),()=>(Z(m()),i(V),Z(h()),q(()=>m()(i(V),"placeholder",h())))]),$e("input",Q,he=>f()(i(V),he.currentTarget.value===""?"":he.currentTarget.valueAsNumber)),te(B,I)}),A(R);var x=j(R,2),U=z(x),D=j(z(U)),M=z(D,!0);A(D),A(U);var G=j(U,2);Mt(G,5,()=>(i(n),i(s),q(()=>[...i(n),...i(s)])),Xt,(B,V)=>{var I=cT(),k=z(I),S=z(k,!0);A(k);var F=j(k,2);{var H=ye=>{var se=sT(),we=z(se);It(we);var ae=j(we,3,!0);A(se),de((Re,ee)=>{be(we,"id",(i(V),q(()=>"auk-param-"+i(V).name))),we.disabled=u(),vd(we,Re),X(ae,ee)},[()=>(Z(g()),i(V),q(()=>!!g()[i(V).name])),()=>(Z(g()),i(V),Z(h()),q(()=>g()[i(V).name]?h()("common.enabled"):h()("common.disabled")))]),$e("change",we,Re=>f()(i(V),Re.currentTarget.checked)),te(ye,se)},Q=ye=>{var se=rT();Mt(se,5,()=>(i(V),q(()=>i(V).choices||[])),Xt,(ae,Re)=>{var ee=Q1(),Oe=z(ee,!0);A(ee);var Ie={};de(()=>{X(Oe,i(Re)),Ie!==(Ie=i(Re))&&(ee.value=(ee.__value=i(Re))??"")}),te(ae,ee)}),A(se);var we;jn(se),de(ae=>{be(se,"id",(i(V),q(()=>"auk-param-"+i(V).name))),se.disabled=u(),we!==(we=ae)&&(se.value=(se.__value=ae)??"",yn(se,ae))},[()=>(Z(g()),i(V),q(()=>String(g()[i(V).name]??i(V).default??"")))]),$e("change",se,ae=>f()(i(V),ae.currentTarget.value)),te(ye,se)},Y=ye=>{var se=oT(),we=z(se);It(we);var ae=j(we,2),Re=z(ae,!0);A(ae),A(se),de((ee,Oe)=>{be(we,"id",(i(V),q(()=>"auk-param-"+i(V).name))),we.disabled=u(),be(we,"min",(i(V),q(()=>i(V).minimum))),be(we,"max",(i(V),q(()=>i(V).maximum))),be(we,"step",(i(V),q(()=>i(V).step))),sa(we,ee),X(Re,Oe)},[()=>(Z(g()),i(V),q(()=>Number(g()[i(V).name]??i(V).default))),()=>(Z(g()),i(V),q(()=>String(g()[i(V).name])))]),$e("input",we,ee=>f()(i(V),ee.currentTarget.valueAsNumber)),te(ye,se)},C=ye=>{var se=lT();It(se),de(we=>{be(se,"id",(i(V),q(()=>"auk-param-"+i(V).name))),se.disabled=u(),be(se,"min",(i(V),q(()=>i(V).minimum))),be(se,"max",(i(V),q(()=>i(V).maximum))),be(se,"step",(i(V),q(()=>i(V).step))),sa(se,we)},[()=>(Z(g()),i(V),q(()=>String(g()[i(V).name]??"")))]),$e("input",se,we=>f()(i(V),we.currentTarget.valueAsNumber)),te(ye,se)};qe(F,ye=>{i(V),q(()=>i(V).type==="bool")?ye(H):(i(V),q(()=>i(V).type==="choice")?ye(Q,1):(i(V),q(()=>i(V).type==="slider")?ye(Y,2):ye(C,-1)))})}var re=j(F,2);{var he=ye=>{var se=Od(),we=z(se,!0);A(se),de(ae=>X(we,ae),[()=>(Z(m()),i(V),Z(h()),q(()=>m()(i(V),"info",h())))]),te(ye,se)},ie=Si(()=>(Z(m()),i(V),Z(h()),q(()=>m()(i(V),"info",h()))));qe(re,ye=>{i(ie)&&ye(he)})}A(I),de(ye=>{be(k,"for",(i(V),q(()=>"auk-param-"+i(V).name))),X(S,ye)},[()=>(Z(m()),i(V),Z(h()),q(()=>m()(i(V),"label",h())))]),te(B,I)}),A(G),A(x),A(v),de(()=>{X(T,i(o)),X(M,(i(n),i(s),q(()=>i(n).length+i(s).length)))}),te(t,v),Xa()}const Nr=tl({modelId:"",turns:[]});let fT=1;const mT={subscribe:Nr.subscribe};function dm(t){t.questionUrl&&URL.revokeObjectURL(t.questionUrl),t.replyUrl&&URL.revokeObjectURL(t.replyUrl),t.questionUrl="",t.replyUrl=""}function pT(){for(const t of ad(Nr).turns)dm(t);Nr.set({modelId:"",turns:[]})}function K1(t){return t.filter(e=>e.state==="done"&&e.reply&&!e.leftOut)}function gT(t,e,a){const n=ad(Nr),s=n.turns.filter(l=>l.state!=="failed"&&l.state!=="stopped");for(const l of n.turns)s.includes(l)||dm(l);const r=s.length>0&&n.modelId!==t,o={key:fT++,state:e,seed:a,questionPath:"",questionUrl:"",replyText:"",replyUrl:"",reply:null,cut:!1,steps:"",leftOut:!1,live:!0,firstAudioMs:null,message:""};return Nr.set({modelId:r?n.modelId:t,turns:[...s,o]}),{turn:o,history:r?[]:K1(s)}}function To(t,e){Object.assign(t,e),Nr.update(a=>a)}function hT(t,e,a){Object.assign(e,a,{state:"done"});const n=ad(Nr),s=n.modelId!==t;if(s)for(const r of n.turns)r!==e&&dm(r);return Nr.set(s?{modelId:t,turns:[e]}:n),s}function Y1(t){const e=atob(t),a=new Uint8Array(e.length);for(let n=0;nString.fromCharCode(t[l],t[l+1],t[l+2],t[l+3]);if(t.length<12||a(0)!=="RIFF"||a(8)!=="WAVE")throw new Error("The reply audio is not a WAV file.");let n=0,s=0,r=0,o=0;for(let l=12;l+8<=t.length;){const u=a(l),p=e.getUint32(l+4,!0),g=l+8;if(u==="fmt "&&g+16<=t.length)n=e.getUint16(g,!0),s=e.getUint16(g+2,!0),r=e.getUint32(g+4,!0),o=e.getUint16(g+14,!0);else if(u==="data"){if(n!==1||o!==16||s<1||r<1)throw new Error("The reply audio is not 16-bit PCM.");const h=Math.floor(Math.min(p,t.length-g)/(2*s)),m=new Float32Array(h);for(let f=0;f{};beginTurn(e){if(this.open=!0,this.stop(),this.enabled=e,this.lead=.15,!!e){if(!this.context)try{this.context=new AudioContext({sampleRate:24e3,latencyHint:"interactive"})}catch{this.unavailable=!0,this.enabled=!1;return}this.context.resume().catch(()=>{})}}endTurn(){this.open=!1,this.suspendIfIdle()}get blocked(){return this.enabled&&this.context!==null&&this.context.state!=="running"}get playing(){return this.sources.size>0}push(e,a){const n=this.context;if(!this.enabled||!n||!e.length)return null;const s=n.currentTime;!this.frames||a!==this.rate?(this.startTime=s+this.lead,this.frames=0,this.rate=a):this.startTime+this.frames/this.rate{o.disconnect(),this.sources.delete(o),this.sources.size||(this.onchange(),this.suspendIfIdle())};const l=this.startTime+this.frames/this.rate;return o.start(l),this.frames+=e.length,this.sources.add(o),this.sources.size===1&&this.onchange(),Math.max(0,l-s)}stop(){this.enabled=!1,this.frames=0;const e=this.sources.size>0;for(const a of this.sources)a.onended=null,a.stop(),a.disconnect();this.sources.clear(),e&&this.onchange(),this.suspendIfIdle()}close(){this.stop(),this.context?.close().catch(()=>{}),this.context=null}suspendIfIdle(){!this.open&&!this.sources.size&&this.context?.state==="running"&&this.context.suspend().catch(()=>{})}}var bT=ue(''),yT=ue(' '),wT=ue(`This entry's id is not the catalog's (lfm2-audio-s2s or lfm2-audio-jp-s2s), so Model parameters shows the family's ASR settings; turns leave them out and use Max tokens.`),kT=ue(''),xT=ue(''),ST=ue('…'),TT=ue(''),$T=ue(' '),qT=ue('
  • You
    Reply

  • '),GT=ue('
      '),FT=ue('

      Record or choose a spoken question under Source audio, then press Run. Each Run adds a turn, and the earlier turns go with it.

      '),AT=ue('Live playback is not available; each reply is in its player when it finishes.'),CT=ue('The browser did not let live audio start; each reply is in its player when it finishes.'),MT=ue('
      Conversation
      ');function ET(t,e){Ya(e,!1);const a=()=>sd(mT,"$conversation",n),[n,s]=Ju(),r=oe(),o=oe(),l=oe(),u=oe(),p=oe();let g=Ge(e,"modelId",8,""),h=Ge(e,"busy",8,!1),m=Ge(e,"server",8,null),f=Ge(e,"loadedModels",24,()=>[]),d=Ge(e,"catalogEntries",24,()=>[]),c=Ge(e,"paramSpecs",24,()=>[]),_=Ge(e,"sourceFile",8,null),b=Ge(e,"sourceRecording",8,!1),v=Ge(e,"clearSource",8,()=>{}),w=Ge(e,"log",8,()=>{}),y=Ge(e,"setPanelRunner",8,()=>()=>{});const T=oe(new vT);let O=oe(!0),R=oe(!1),$=oe(!1),P=oe(!1),L=oe(null),x=null,U=oe(g());hi(T,i(T).onchange=()=>{E(R,i(T).playing)});function D(pe){return d().find(Se=>Se.id===pe)?.display_name||pe}function M(pe){!i(L)||i(L).scrollTop+i(L).clientHeight{i(L)&&hi(L,i(L).scrollTop=i(L).scrollHeight)})}function G(pe){if(pe.aborted)throw new DOMException("The turn was stopped.","AbortError")}function B(pe){const Se=pe;return typeof Se=="object"&&Se!==null&&Se.id==="lfm2_audio.reply"&&typeof Se.kind=="string"&&typeof Se.payload=="string"}function V(pe){return JSON.stringify(pe,(Se,Me)=>(Se==="audio"||Se==="payload")&&typeof Me=="string"?``:Me,2)}function I(pe,Se,Me,ge){const ze={audio:Me,seed:pe.seed,options:Se};return pe.maxTokens!==void 0&&(ze.max_tokens=pe.maxTokens),pe.language&&(ze.language=pe.language),ge.length&&(ze.artifacts=ge.flatMap(Qe=>[{id:"lfm2_audio.question",kind:"custom",path:Qe.questionPath},Qe.reply])),{model:pe.modelId,request:ze}}function k(pe,Se,Me){const ge={};typeof Me.text=="string"&&(ge.replyText=Me.text);let ze=null;typeof Me.audio=="string"&&(ze=new Blob([Y1(Me.audio)],{type:"audio/wav"}),ge.replyUrl=URL.createObjectURL(ze));const Qe=(Array.isArray(Me.artifacts)?Me.artifacts:[]).find(B);return Qe?(ge.reply={id:Qe.id,kind:Qe.kind,payload:Qe.payload},Qe.meta&&(ge.reply.meta=Qe.meta),ge.cut=Qe.meta?.ended==="false",ge.steps=Qe.meta?.steps||""):ge.message="The server returned no reply artifact, so this turn does not go with the next question.",hT(pe,Se,ge)&&w()(`New LFM2.5-Audio conversation with ${D(pe)}.`),ze}async function S(pe){if(b())throw pe.warning("Stop the recording first.");const Se=_();if(!Se)throw pe.warning("Record or choose source audio first.");i(T).beginTurn(i(O));const Me=d().find(Pe=>Pe.id===pe.modelId)?.configured===!0,ge=m()?.ui_management===!0&&!Me||f().some(Pe=>Pe.id===pe.modelId&&Pe.mode==="streaming");ge&&i(O)&&!i(T).unavailable&&document.querySelectorAll("audio, video").forEach(Pe=>Pe.pause()),E(P,i(T).unavailable),E($,!1);const ze=performance.now(),Qe={...pe.options,return_codes:!0};if(i(p))for(const Pe of c())delete Qe[Pe.name];const{turn:Ee,history:xe}=gT(pe.modelId,m()?.ui_management&&!Me?"loading":"uploading",pe.seed),He=new AbortController,nt=()=>He.abort();pe.signal.aborted?nt():pe.signal.addEventListener("abort",nt),x=He;const je=He.signal;let Zt="load";try{await pe.ensureLoaded("streaming"),G(je),Zt="read",To(Ee,{state:"uploading",live:ge}),pe.setStatus("Uploading the question…");const Pe=await jr(Se);G(je),Zt="upload";const We=await So(Pe,je);G(je),Zt="run";const $t=I(pe,Qe,We,xe);To(Ee,{state:"waiting",questionPath:We,questionUrl:URL.createObjectURL(Pe)}),pe.setStatus(ge?"Waiting for the reply…":"Waiting for the whole reply: this server runs the entry offline, so the reply does not stream.");let dt;if(ge){let qt=0,Nt=!0;for await(const xt of t5($t,je)){if(xt.type==="task.stream.done"){dt=xt.result;continue}const ri=xt.event,di=ri.partial_text,gn=typeof di?.text=="string"?di.text:"";let Kt=Ee.firstAudioMs;if(Nt&&typeof ri.audio=="string")try{const ta=_T(Y1(ri.audio));qt+=ta.samples.length/ta.sampleRate;const Va=i(T).push(ta.samples,ta.sampleRate);Kt===null&&(Kt=performance.now()-ze+(Va??0)*1e3,E($,i(T).blocked),i($)&&i(T).stop())}catch(ta){Nt=!1,i(T).stop(),i(O)&&(E(P,!0),w()(`Live playback stopped: ${ta instanceof Error?ta.message:String(ta)}`))}(Ee.state!=="streaming"||gn||Kt!==Ee.firstAudioMs)&&To(Ee,{state:"streaming",replyText:Ee.replyText+gn,firstAudioMs:Kt}),pe.setStatus(Nt?`Streaming the reply: ${Math.floor(qt)} s`:"Streaming the reply…")}}else dt=await _l($t,je);G(je);const wt=k(pe.modelId,Ee,dt);return _()===Se&&v()(),{audio:wt,text:Ee.replyText,json:V(dt)}}catch(Pe){if(i(T).stop(),je.aborted||Pe?.name==="AbortError")throw To(Ee,{state:"stopped",message:"Stopped before the reply finished; this turn is not part of the conversation."}),Pe?.name==="AbortError"?Pe:new DOMException("The turn was stopped.","AbortError");if(Pe instanceof M1){const $t="The connection closed before the reply finished; this turn is not part of the conversation.";throw To(Ee,{state:"stopped",message:$t}),new Error($t)}let We=Pe instanceof Error?Pe.message:String(Pe);throw Zt==="read"?We=`Could not read the question: ${We}`:Zt==="upload"?We=`Upload failed: ${We}`:Zt==="run"&&xe.some($t=>We.includes($t.questionPath))&&(We+=" The server no longer has the questions this conversation uploaded, as after a restart; start a new conversation."),To(Ee,{state:"failed",message:We}),new Error(We)}finally{pe.signal.removeEventListener("abort",nt),x===He&&(x=null),i(T).endTurn()}}function F(){h()||(i(T).stop(),pT())}function H(pe){h()||i(l)||To(pe,{leftOut:!pe.leftOut})}function Q(){i(T).stop()}function Y(pe){return pe.state==="loading"?"loading the model":pe.state!=="done"?pe.state:pe.leftOut?"left out":pe.cut?"cut at max_tokens":"done"}function C(pe){const Se=[`seed ${pe.seed}`];return pe.firstAudioMs!==null&&Se.push(`first audio ${(pe.firstAudioMs/1e3).toFixed(2)} s`),pe.steps&&Se.push(`${pe.steps} steps`),pe.live||Se.push("not streamed"),Se.join(" · ")}Fs(()=>y()(S)),ul(()=>{x?.abort(),i(T).close()}),Ke(()=>a(),()=>{E(r,a().turns)}),Ke(()=>a(),()=>{E(o,a().modelId)}),Ke(()=>(i(r),i(o),Z(g())),()=>{E(l,i(r).length>0&&i(o)!==g())}),Ke(()=>(i(l),i(r)),()=>{E(u,i(l)?0:K1(i(r)).length)}),Ke(()=>a(),()=>{M(a())}),Ke(()=>Z(c()),()=>{E(p,c().some(pe=>pe.name==="audio_chunk_mode"))}),Ke(()=>(Z(g()),i(U),i(T)),()=>{g()!==i(U)&&(E(U,g()),i(T).stop())}),Ke(()=>(i(O),i(T)),()=>{i(O)||i(T).stop()}),ds(),An();var re=MT();$e("play",cf,Q,!0);var he=z(re),ie=z(he),ye=j(z(ie),2),se=z(ye,!0);A(ye),A(ie);var we=j(ie,2),ae=z(we);{var Re=pe=>{var Se=bT();$e("click",Se,Q),te(pe,Se)};qe(ae,pe=>{i(R)&&pe(Re)})}var ee=j(ae,2);A(we),A(he);var Oe=j(he,2);{var Ie=pe=>{var Se=yT(),Me=z(Se);A(Se),de((ge,ze)=>X(Me,`These turns are with ${ge??""}. Run starts a new conversation with ${ze??""}.`),[()=>(i(o),q(()=>D(i(o)))),()=>(Z(g()),q(()=>D(g())))]),te(pe,Se)};qe(Oe,pe=>{i(l)&&pe(Ie)})}var tt=j(Oe,2);{var Xe=pe=>{var Se=wT();te(pe,Se)};qe(tt,pe=>{i(p)&&pe(Xe)})}var Le=j(tt,2);{var Te=pe=>{var Se=GT();Mt(Se,7,()=>i(r),Me=>Me.key,(Me,ge,ze)=>{var Qe=qT();let Ee;var xe=z(Qe),He=z(xe),nt=z(He);A(He);var je=j(He,2);let Zt;var Pe=z(je,!0);A(je);var We=j(je,2),$t=z(We,!0);A(We);var dt=j(We,2);{var wt=yi=>{var mi=kT(),pi=z(mi,!0);A(mi),de(()=>{mi.disabled=h()||i(l),be(mi,"aria-label",(i(ge),Z(i(ze)),q(()=>`${i(ge).leftOut?"Include":"Leave out"} turn ${i(ze)+1}`))),X(pi,(i(ge),q(()=>i(ge).leftOut?"Include":"Leave out")))}),$e("click",mi,()=>H(i(ge))),te(yi,mi)};qe(dt,yi=>{i(ge),q(()=>i(ge).state==="done"&&i(ge).reply)&&yi(wt)})}A(xe);var qt=j(xe,2),Nt=j(z(qt),2);{var xt=yi=>{var mi=xT();de(()=>{be(mi,"src",(i(ge),q(()=>i(ge).questionUrl))),be(mi,"aria-label",`Turn ${i(ze)+1} question`)}),te(yi,mi)},ri=yi=>{var mi=ST();te(yi,mi)};qe(Nt,yi=>{i(ge),q(()=>i(ge).questionUrl)?yi(xt):yi(ri,-1)})}A(qt);var di=j(qt,2),gn=j(z(di),2),Kt=z(gn),ta=z(Kt,!0);A(Kt);var Va=j(Kt,2);{var Ja=yi=>{var mi=TT(),pi=z(mi),Pi=j(pi,2);A(mi),de(()=>{be(pi,"src",(i(ge),q(()=>i(ge).replyUrl))),be(pi,"aria-label",`Turn ${i(ze)+1} reply`),be(Pi,"href",(i(ge),q(()=>i(ge).replyUrl))),be(Pi,"download",`${i(o)}-turn-${i(ze)+1}-reply.wav`)}),te(yi,mi)};qe(Va,yi=>{i(ge),q(()=>i(ge).replyUrl)&&yi(Ja)})}A(gn),A(di);var on=j(di,2);{var hn=yi=>{var mi=$T(),pi=z(mi,!0);A(mi),de(()=>X(pi,(i(ge),q(()=>i(ge).message)))),te(yi,mi)};qe(on,yi=>{i(ge),q(()=>i(ge).message)&&yi(hn)})}A(Qe),de((yi,mi)=>{be(Qe,"data-state",(i(ge),q(()=>i(ge).state))),Ee=Gi(Qe,1,"svelte-18zfjku",null,Ee,{"left-out":i(ge).leftOut}),X(nt,`Turn ${i(ze)+1}`),Zt=Gi(je,1,"badge svelte-18zfjku",null,Zt,{bad:i(ge).state==="failed"||i(ge).state==="stopped"}),X(Pe,yi),X($t,mi),X(ta,(i(ge),q(()=>i(ge).replyText||(i(ge).state==="done"?"(no text)":"…"))))},[()=>(i(ge),q(()=>Y(i(ge)))),()=>(i(ge),q(()=>C(i(ge))))]),te(Me,Qe)}),A(Se),$a(Se,Me=>E(L,Me),()=>i(L)),te(pe,Se)},et=pe=>{var Se=FT();te(pe,Se)};qe(Le,pe=>{i(r),q(()=>i(r).length)?pe(Te):pe(et,-1)})}var ce=j(Le,2),_e=z(ce);It(_e),Ea(3),A(ce);var ne=j(ce,2);{var me=pe=>{var Se=AT();te(pe,Se)},ve=pe=>{var Se=CT();te(pe,Se)};qe(ne,pe=>{i(P)?pe(me):i($)&&pe(ve,1)})}A(re),de(()=>{X(se,i(u)?`${i(u)} earlier ${i(u)===1?"turn goes":"turns go"} with the next question`:"The next question starts the conversation"),ee.disabled=(Z(h()),i(r),q(()=>h()||!i(r).length))}),$e("click",ee,F),V_(_e,()=>i(O),pe=>E(O,pe)),te(t,re),Xa(),s()}var zT=ue(''),UT=ue('LiveAvatar reference'),BT=ue('Uploading reference image…'),RT=ue(' '),jT=ue(' Recording microphone…',1),PT=ue(" "),NT=ue(' ',1),OT=ue(""),IT=ue(''),LT=ue('
      '),DT=ue(''),VT=ue('
      '),HT=ue(''),WT=ue(' ',1),QT=ue('
      '),KT=ue('
      Memory and execution
      ');function YT(t,e){Ya(e,!1);const a=oe(),n=oe();let s=Ge(e,"busy",8,!1),r=Ge(e,"loraUploading",12,!1),o=Ge(e,"paramSpecs",24,()=>[]),l=Ge(e,"advancedValues",24,()=>({})),u=Ge(e,"setParameterValue",8,()=>{}),p=Ge(e,"sourceFile",8,null),g=Ge(e,"sourceRecording",8,!1),h=Ge(e,"sourceRecordingBlocked",8,!1),m=Ge(e,"setSourceFile",8,()=>{}),f=Ge(e,"startSourceRecording",8,()=>{}),d=Ge(e,"stopSourceRecording",8,()=>{});const c=["generation_mode","height","width","num_frames","num_clips","num_inference_steps","guidance_scale","shift","negative_prompt"],_=["sage_attention","memory_saver","fused_cfg","denoiser_layerwise","denoiser_layerwise_batch","target_cache_blocks","vae_cache_f16","vae_encoder_chunk_size","vae_decoder_tile_size","denoiser_weight_streaming"];let b=oe(null),v=oe(null),w=oe(null),y=oe(""),T=oe(""),O=null;function R(Le,Te){const et=o().find(ce=>ce.name===Le);et&&u()(et,Te)}function $(){O?.abort(),O=null,r(!1),E(b,null),E(T,""),i(y)&&URL.revokeObjectURL(i(y)),E(y,""),i(v)&&hi(v,i(v).value=""),R("reference_image_path","")}async function P(Le){if(Le){O?.abort(),E(T,""),E(b,Le),i(y)&&URL.revokeObjectURL(i(y)),E(y,URL.createObjectURL(Le)),r(!0),O=new AbortController;try{const Te=await cc(Le,O.signal);R("reference_image_path",Te)}catch(Te){O.signal.aborted||(E(T,Te instanceof Error?Te.message:String(Te)),R("reference_image_path",""))}finally{r(!1),O=null}}}function L(Le){m()(Le)}function x(){i(w)&&hi(w,i(w).value=""),m()(null)}ul(()=>{O?.abort(),i(y)&&URL.revokeObjectURL(i(y))}),Ke(()=>Z(o()),()=>{E(a,c.map(Le=>o().find(Te=>Te.name===Le)).filter(Le=>Le!==void 0))}),Ke(()=>Z(o()),()=>{E(n,_.map(Le=>o().find(Te=>Te.name===Le)).filter(Le=>Le!==void 0))}),ds(),An();var U=KT(),D=z(U),M=j(z(D),2);$a(M,Le=>E(v,Le),()=>i(v));var G=j(M,2),B=j(z(G),2),V=z(B,!0);A(B);var I=j(B,2);{var k=Le=>{var Te=zT();de(()=>Te.disabled=s()),$e("click",Te,$),te(Le,Te)};qe(I,Le=>{i(b)&&Le(k)})}A(G);var S=j(G,2);{var F=Le=>{var Te=UT();de(()=>be(Te,"src",i(y))),te(Le,Te)};qe(S,Le=>{i(y)&&Le(F)})}var H=j(S,2);{var Q=Le=>{var Te=BT();te(Le,Te)};qe(H,Le=>{r()&&Le(Q)})}var Y=j(H,2);{var C=Le=>{var Te=RT(),et=z(Te,!0);A(Te),de(()=>X(et,i(T))),te(Le,Te)};qe(Y,Le=>{i(T)&&Le(C)})}A(D);var re=j(D,2),he=j(z(re),2);$a(he,Le=>E(w,Le),()=>i(w));var ie=j(he,2),ye=j(z(ie)),se=z(ye,!0);A(ye),A(ie);var we=j(ie,2),ae=z(we);{var Re=Le=>{var Te=jT(),et=Et(Te);Ea(2),$e("click",et,function(...ce){d()?.apply(this,ce)}),te(Le,Te)},ee=Le=>{var Te=NT(),et=Et(Te),ce=j(et,2),_e=j(ce,2);{var ne=me=>{var ve=PT(),pe=z(ve,!0);A(ve),de(()=>X(pe,(Z(p()),q(()=>p().name)))),te(me,ve)};qe(_e,me=>{p()&&me(ne)})}de(()=>{et.disabled=h(),ce.disabled=!p()}),$e("click",et,function(...me){f()?.apply(this,me)}),$e("click",ce,x),te(Le,Te)};qe(ae,Le=>{g()?Le(Re):Le(ee,-1)})}A(we);var Oe=j(we,2);Nn(Oe,{get file(){return p()},kind:"audio",label:"Audio preview"}),A(re);var Ie=j(re,2);Mt(Ie,5,()=>i(a),Xt,(Le,Te)=>{var et=VT();let ce;var _e=z(et),ne=z(_e,!0);A(_e);var me=j(_e,2);{var ve=Me=>{var ge=IT();Mt(ge,5,()=>(i(Te),q(()=>i(Te).choices||[])),Xt,(Qe,Ee)=>{var xe=OT(),He=z(xe,!0);A(xe);var nt={};de(()=>{X(He,i(Ee)),nt!==(nt=i(Ee))&&(xe.value=(xe.__value=i(Ee))??"")}),te(Qe,xe)}),A(ge);var ze;jn(ge),de(Qe=>{be(ge,"id",(i(Te),q(()=>"liveavatar-"+i(Te).name))),ze!==(ze=Qe)&&(ge.value=(ge.__value=Qe)??"",yn(ge,Qe))},[()=>(Z(l()),i(Te),q(()=>String(l()[i(Te).name]??i(Te).default??"")))]),$e("change",ge,Qe=>u()(i(Te),Qe.currentTarget.value)),te(Me,ge)},pe=Me=>{var ge=LT(),ze=z(ge);It(ze);var Qe=j(ze,2),Ee=z(Qe,!0);A(Qe),A(ge),de((xe,He)=>{be(ze,"id",(i(Te),q(()=>"liveavatar-"+i(Te).name))),be(ze,"min",(i(Te),q(()=>i(Te).minimum))),be(ze,"max",(i(Te),q(()=>i(Te).maximum))),be(ze,"step",(i(Te),q(()=>i(Te).step))),sa(ze,xe),X(Ee,He)},[()=>(Z(l()),i(Te),q(()=>Number(l()[i(Te).name]??i(Te).default))),()=>(Z(l()),i(Te),q(()=>String(l()[i(Te).name])))]),$e("input",ze,xe=>u()(i(Te),xe.currentTarget.valueAsNumber)),te(Me,ge)},Se=Me=>{var ge=DT();It(ge),de(ze=>{be(ge,"id",(i(Te),q(()=>"liveavatar-"+i(Te).name))),be(ge,"type",(i(Te),q(()=>i(Te).type==="number"?"number":"text"))),be(ge,"min",(i(Te),q(()=>i(Te).minimum))),be(ge,"max",(i(Te),q(()=>i(Te).maximum))),be(ge,"step",(i(Te),q(()=>i(Te).step))),sa(ge,ze)},[()=>(Z(l()),i(Te),q(()=>String(l()[i(Te).name]??i(Te).default??"")))]),$e("input",ge,ze=>u()(i(Te),i(Te).type==="number"?ze.currentTarget.valueAsNumber:ze.currentTarget.value)),te(Me,ge)};qe(me,Me=>{i(Te),q(()=>i(Te).type==="choice")?Me(ve):(i(Te),q(()=>i(Te).type==="slider")?Me(pe,1):Me(Se,-1))})}A(et),de(Me=>{ce=Gi(et,1,"field svelte-4cgukj",null,ce,{wide:i(Te).type==="text"}),be(_e,"for",(i(Te),q(()=>"liveavatar-"+i(Te).name))),X(ne,Me)},[()=>(i(Te),q(()=>i(Te).label||i(Te).name.replace(/_/g," ")))]),te(Le,et)}),A(Ie);var tt=j(Ie,2),Xe=j(z(tt),2);Mt(Xe,5,()=>i(n),Xt,(Le,Te)=>{var et=QT(),ce=z(et);{var _e=me=>{var ve=HT(),pe=z(ve);It(pe);var Se=j(pe,3,!0);A(ve),de((Me,ge)=>{be(ve,"for",(i(Te),q(()=>"liveavatar-"+i(Te).name))),be(pe,"id",(i(Te),q(()=>"liveavatar-"+i(Te).name))),vd(pe,Me),X(Se,ge)},[()=>(Z(l()),i(Te),q(()=>!!l()[i(Te).name])),()=>(i(Te),q(()=>i(Te).label||i(Te).name.replace(/_/g," ")))]),$e("change",pe,Me=>u()(i(Te),Me.currentTarget.checked)),te(me,ve)},ne=me=>{var ve=WT(),pe=Et(ve),Se=z(pe,!0);A(pe);var Me=j(pe,2);It(Me),de((ge,ze)=>{be(pe,"for",(i(Te),q(()=>"liveavatar-"+i(Te).name))),X(Se,ge),be(Me,"id",(i(Te),q(()=>"liveavatar-"+i(Te).name))),be(Me,"min",(i(Te),q(()=>i(Te).minimum))),be(Me,"max",(i(Te),q(()=>i(Te).maximum))),be(Me,"step",(i(Te),q(()=>i(Te).step))),sa(Me,ze)},[()=>(i(Te),q(()=>i(Te).label||i(Te).name.replace(/_/g," "))),()=>(Z(l()),i(Te),q(()=>Number(l()[i(Te).name]??i(Te).default)))]),$e("input",Me,ge=>u()(i(Te),ge.currentTarget.valueAsNumber)),te(me,ve)};qe(ce,me=>{i(Te),q(()=>i(Te).type==="bool")?me(_e):me(ne,-1)})}A(et),te(Le,et)}),A(Xe),A(tt),A(U),de(()=>{M.disabled=s()||r(),X(V,(i(b),q(()=>i(b)?.name||"No image selected"))),he.disabled=s()||g(),X(se,(Z(p()),q(()=>p()?.name||"No file chosen")))}),$e("change",M,Le=>P(Le.currentTarget.files?.[0]||null)),$e("change",he,Le=>L(Le.currentTarget.files?.[0]||null)),te(t,U),Xa()}var X1=ue(""),J1=ue(' '),XT=ue('
      '),Z1=ue(' '),JT=ue(`
      LoRA requirements vary. Read the original adapter's documentation for usage instructions.
      `),ZT=ue('
      Unfused NAR adapter for acoustic detail; relative paths resolve against the model root. Reload the model after changing this value.
      Scales the LoRA deltas only; any full vae2llm/llm2vae projection replacement in the adapter stays at full strength.
      '),e$=ue(""),um=ue('
      '),t$=ue(""),i$=ue('
      '),a$=ue(" "),ev=ue(' '),n$=ue('
      '),s$=ue('Extract or paste ABC to preview the score.'),tv=ue(''),iv=ue('
      '),r$=ue('
      Yue2 ABC conditioning
      Cover source Use SheetSage2 + MERT2 to extract an editable ABC score from a song.
      Warning: VRAM may remain in use after unloading.
      ABC score editor Edit the extracted score here. The sheet preview updates from this ABC.
      Sheet preview Rendered from the editable ABC score.
      Yue2 semantic sampling
      Yue2 ABC planner sampling
      ');function o$(t,e){Ya(e,!1);const a=oe(),n=oe(),s=oe(),r=oe(),o=oe();let l=Ge(e,"lyrics",12,""),u=Ge(e,"seed",12,1234),p=Ge(e,"loraUploading",12,!1),g=Ge(e,"busy",8,!1),h=Ge(e,"paramSpecs",24,()=>[]),m=Ge(e,"advancedValues",24,()=>({})),f=Ge(e,"catalogEntries",24,()=>[]),d=Ge(e,"loadedModels",24,()=>[]),c=Ge(e,"server",8,null),_=Ge(e,"modelPathFor",8,Fe=>Fe.path),b=Ge(e,"sessionOptionsFor",8,Fe=>Fe.session_options||{}),v=Ge(e,"refreshModels",8,async()=>{}),w=Ge(e,"log",8,()=>{}),y=Ge(e,"tr",8,(Fe,fe,Ve=Fe)=>Ve),T=Ge(e,"localizedParameterText",8,(Fe,fe)=>fe==="label"?Fe.name:""),O=Ge(e,"setParameterValue",8,()=>{});const R=["main_gguf","vae_gguf"],$=["style","cot","guidance_scale","num_inference_steps"],P=["abc","abc_file"],L=["semantic_temperature","semantic_top_p","semantic_top_k","semantic_repetition_penalty","semantic_penalty_window","semantic_min_tokens","semantic_max_tokens"],x=["abc_temperature","abc_top_p","abc_top_k","abc_repetition_penalty","abc_penalty_window","abc_min_tokens","abc_max_tokens"];let U=oe(null),D=oe(null),M=oe(null),G=oe(""),B=oe(""),V=null;ul(()=>V?.abort());async function I(Fe,fe){if(!Fe)return;const Ve=rt=>{E(fe==="ar"?G:B,rt)};if(E(G,""),E(B,""),!Fe.name.toLowerCase().endsWith(".safetensors")){Ve(`Select an unfused ${fe.toUpperCase()} .safetensors adapter.`);return}p(!0),V=new AbortController;try{const rt=await cc(Fe,V.signal);ae(fe==="ar"?"ar_lora":"nar_lora",rt),w()(`YuE2 ${fe.toUpperCase()} LoRA selected: ${Fe.name}`)}catch(rt){V.signal.aborted||Ve(rt instanceof Error?rt.message:String(rt))}finally{p(!1),V=null,i(D)&&hi(D,i(D).value=""),i(M)&&hi(M,i(M).value="")}}let k=oe(null),S=oe(!1);const F="audiocpp.ui.yue2.unloadSheetSageAfterConversion";let H=oe(!0);Fs(()=>{E(H,localStorage.getItem(F)!=="false")});let Q=oe(""),Y=oe(""),C=oe(""),re=oe(null),he="",ie=oe(""),ye=null;function se(Fe,fe){return Fe.map(Ve=>fe.find(rt=>rt.name===Ve)).filter(Ve=>Ve!==void 0)}function we(Fe){return h().find(fe=>fe.name===Fe)}function ae(Fe,fe){const Ve=we(Fe);Ve&&O()(Ve,fe)}function Re(Fe){try{return atob(Fe)}catch{return Fe}}function ee(Fe){if(typeof Fe.text=="string"&&Fe.text.trim())return Fe.text;const fe=Array.isArray(Fe.artifacts)?Fe.artifacts:[];for(const Ve of fe){if(!Ve||typeof Ve!="object")continue;const rt=Ve,ei=String(rt.meta?.format||rt.meta?.extension||rt.id||"");if(/abc|score/i.test(ei)&&typeof rt.payload=="string")return Re(rt.payload)}return""}function Oe(){return f().find(Fe=>Fe.family==="sheetsage2")||null}async function Ie(Fe){if(d().some(rt=>rt.id===Fe.id&&rt.loaded))return;const fe=await Bd();if(!fe.find(rt=>rt.id===Fe.id&&rt.loaded)){if(!c()?.ui_management){if(!fe.some(rt=>rt.id===Fe.id))throw new Error("SheetSage2 is not registered. Add SheetSage2 to server config.");return}await am({id:Fe.id,path:_()(Fe),family:Fe.family,task:Fe.task,mode:Fe.mode||"offline",load_options:Fe.load_options||{},session_options:b()(Fe)})}}async function tt(){if(!i(U)||i(S))return;E(S,!0),E(Y,""),E(Q,"Preparing SheetSage2 cover score transcription...");const Fe=i(H);let fe=null;try{const Ve=Oe();if(!Ve)throw new Error("SheetSage2 is not available in the model catalog.");await Ie(Ve),fe=Ve.id,await v()(),E(Q,"Uploading source song...");const rt=await cc(i(U));E(Q,"Transcribing source song to ABC with SheetSage2...");const ei=await _l({model:Ve.id,request:{audio:rt,options:{}}}),ti=ee(ei);if(!ti.trim())throw new Error("SheetSage2 did not return an ABC score.");E(C,ti),ae("abc",ti),ae("abc_file",""),ae("cot","melody"),E(Q,"ABC score imported. Review/edit the sheet before generating the cover."),w()("SheetSage2 cover score imported into Yue2 ABC conditioning.")}catch(Ve){E(Y,Ve instanceof Error?Ve.message:String(Ve)),E(Q,""),w()(`SheetSage2 cover transcription failed: ${i(Y)}`)}finally{if(Fe&&fe){try{c()?.ui_management?await Pr(fe):await Ua("/v1/tasks/unload_models",{method:"POST",body:JSON.stringify({model_ids:[fe]})}),w()("SheetSage2 unloaded after cover transcription.")}catch(Ve){const rt=`SheetSage2 unload failed: ${Ve instanceof Error?Ve.message:String(Ve)}`;E(Y,[i(Y),rt].filter(Boolean).join(" ")),w()(rt)}try{await v()()}catch(Ve){const rt=`Model status refresh failed: ${Ve instanceof Error?Ve.message:String(Ve)}`;E(Y,[i(Y),rt].filter(Boolean).join(" ")),w()(rt)}}E(S,!1)}}function Xe(){E(U,null),i(k)&&hi(k,i(k).value="")}function Le(Fe){E(C,Fe),ae("abc",Fe),Fe.trim()&&ae("abc_file","")}async function Te(Fe){const fe=Fe.trim();if(i(re)){if(!fe){i(re).replaceChildren(),he="",E(ie,"");return}if(fe!==he&&(await Er(),!!i(re)))try{ye||(ye=(await oc(()=>Promise.resolve().then(()=>fM),void 0,qn&&qn.tagName.toUpperCase()==="SCRIPT"&&qn.src||new URL("_app/immutable/bundle.T-B6mb94.js",document.baseURI).href)).renderAbc),i(re).replaceChildren(),ye(i(re),fe,{add_classes:!0,responsive:"resize"}),he=fe,E(ie,"")}catch(Ve){i(re).replaceChildren(),he="",E(ie,Ve instanceof Error?Ve.message:String(Ve))}}}Ke(()=>Z(h()),()=>{E(a,se(R,h()))}),Ke(()=>Z(h()),()=>{E(n,se($,h()))}),Ke(()=>Z(h()),()=>{E(s,se(P,h()))}),Ke(()=>Z(h()),()=>{E(r,se(L,h()))}),Ke(()=>Z(h()),()=>{E(o,se(x,h()))}),Ke(()=>(Z(m()),i(C),i(S)),()=>{String(m().abc||"")!==i(C)&&!i(S)&&E(C,String(m().abc||""))}),Ke(()=>i(C),()=>{Te(i(C))}),ds(),An();var et=r$(),ce=z(et),_e=z(ce),ne=z(_e),me=j(ne),ve=z(me,!0);A(me),A(_e);var pe=j(_e,2);La(pe),A(ce);var Se=j(ce,2),Me=z(Se),ge=z(Me),ze=z(ge),Qe=j(ze),Ee=z(Qe,!0);A(Qe),A(ge);var xe=j(ge,2);It(xe),A(Me);var He=j(Me,2);Mt(He,1,()=>i(a),Xt,(Fe,fe)=>{var Ve=XT(),rt=z(Ve),ei=z(rt,!0);A(rt);var ti=j(rt,2);Mt(ti,5,()=>(i(fe),q(()=>i(fe).choices||[])),Xt,(jt,Ai)=>{var Ni=X1(),W=z(Ni,!0);A(Ni);var St={};de(()=>{X(W,i(Ai)),St!==(St=i(Ai))&&(Ni.value=(Ni.__value=i(Ai))??"")}),te(jt,Ni)}),A(ti);var Ot;jn(ti);var _t=j(ti,2);{var oi=jt=>{var Ai=J1(),Ni=z(Ai,!0);A(Ai),de(W=>X(Ni,W),[()=>(Z(T()),i(fe),Z(y()),q(()=>T()(i(fe),"info",y())))]),te(jt,Ai)},Rt=Si(()=>(Z(T()),i(fe),Z(y()),q(()=>T()(i(fe),"info",y()))));qe(_t,jt=>{i(Rt)&&jt(oi)})}A(Ve),de((jt,Ai)=>{be(rt,"for",(i(fe),q(()=>"param-"+i(fe).name))),X(ei,jt),be(ti,"id",(i(fe),q(()=>"param-"+i(fe).name))),Ot!==(Ot=Ai)&&(ti.value=(ti.__value=Ai)??"",yn(ti,Ai))},[()=>(Z(T()),i(fe),Z(y()),q(()=>T()(i(fe),"label",y()))),()=>(Z(m()),i(fe),q(()=>String(m()[i(fe).name]??"")))]),$e("change",ti,jt=>O()(i(fe),jt.currentTarget.value)),te(Fe,Ve)}),A(Se);var nt=j(Se,2);{var je=Fe=>{var fe=JT(),Ve=z(fe),rt=j(z(Ve),2);It(rt);var ei=j(rt,2);$a(ei,W=>E(D,W),()=>i(D));var ti=j(ei,2),Ot=z(ti),_t=z(Ot,!0);A(Ot);var oi=j(Ot,2);A(ti);var Rt=j(ti,4);{var jt=W=>{var St=Z1(),Xi=z(St,!0);A(St),de(()=>X(Xi,i(G))),te(W,St)};qe(Rt,W=>{i(G)&&W(jt)})}A(Ve);var Ai=j(Ve,2),Ni=j(z(Ai),2);It(Ni),A(Ai),A(fe),de((W,St)=>{rt.disabled=g()||p(),sa(rt,W),ei.disabled=g()||p(),Ot.disabled=g()||p(),X(_t,p()?"Uploading...":"Choose AR LoRA"),oi.disabled=(Z(g()),Z(p()),Z(m()),q(()=>g()||p()||!m().ar_lora)),Ni.disabled=(Z(g()),Z(p()),Z(m()),q(()=>g()||p()||!m().ar_lora)),sa(Ni,St)},[()=>(Z(m()),q(()=>String(m().ar_lora??""))),()=>(Z(m()),q(()=>Number(m().ar_lora_scale??1)))]),$e("input",rt,W=>ae("ar_lora",W.currentTarget.value.trim())),$e("change",ei,W=>I(W.currentTarget.files?.[0]||null,"ar")),$e("click",Ot,()=>i(D)?.click()),$e("click",oi,()=>{ae("ar_lora",""),E(G,"")}),$e("change",Ni,W=>{Number.isFinite(W.currentTarget.valueAsNumber)&&ae("ar_lora_scale",W.currentTarget.valueAsNumber)}),te(Fe,fe)},Zt=Si(()=>q(()=>we("ar_lora")));qe(nt,Fe=>{i(Zt)&&Fe(je)})}var Pe=j(nt,2);{var We=Fe=>{var fe=ZT(),Ve=z(fe),rt=j(z(Ve),2);It(rt);var ei=j(rt,2);$a(ei,W=>E(M,W),()=>i(M));var ti=j(ei,2),Ot=z(ti),_t=z(Ot,!0);A(Ot);var oi=j(Ot,2);A(ti);var Rt=j(ti,2);{var jt=W=>{var St=Z1(),Xi=z(St,!0);A(St),de(()=>X(Xi,i(B))),te(W,St)};qe(Rt,W=>{i(B)&&W(jt)})}Ea(2),A(Ve);var Ai=j(Ve,2),Ni=j(z(Ai),2);It(Ni),Ea(2),A(Ai),A(fe),de((W,St)=>{rt.disabled=g()||p(),sa(rt,W),ei.disabled=g()||p(),Ot.disabled=g()||p(),X(_t,p()?"Uploading...":"Choose NAR LoRA"),oi.disabled=(Z(g()),Z(p()),Z(m()),q(()=>g()||p()||!m().nar_lora)),Ni.disabled=(Z(g()),Z(m()),q(()=>g()||!m().nar_lora)),sa(Ni,St)},[()=>(Z(m()),q(()=>String(m().nar_lora??""))),()=>(Z(m()),q(()=>Number(m().nar_lora_scale??1)))]),$e("input",rt,W=>ae("nar_lora",W.currentTarget.value.trim())),$e("change",ei,W=>I(W.currentTarget.files?.[0]||null,"nar")),$e("click",Ot,()=>i(M)?.click()),$e("click",oi,()=>{ae("nar_lora",""),E(B,"")}),$e("change",Ni,W=>{Number.isFinite(W.currentTarget.valueAsNumber)&&ae("nar_lora_scale",W.currentTarget.valueAsNumber)}),te(Fe,fe)},$t=Si(()=>q(()=>we("nar_lora")));qe(Pe,Fe=>{i($t)&&Fe(We)})}var dt=j(Pe,2);Mt(dt,5,()=>i(n),Xt,(Fe,fe)=>{var Ve=i$();let rt;var ei=z(Ve),ti=z(ei,!0);A(ei);var Ot=j(ei,2);{var _t=W=>{var St=e$();Mt(St,5,()=>(i(fe),q(()=>i(fe).choices||[])),Xt,(cn,tr)=>{var vn=X1(),vr=z(vn,!0);A(vn);var Wr={};de(()=>{X(vr,i(tr)),Wr!==(Wr=i(tr))&&(vn.value=(vn.__value=i(tr))??"")}),te(cn,vn)}),A(St);var Xi;jn(St),de(cn=>{be(St,"id",(i(fe),q(()=>"param-"+i(fe).name))),Xi!==(Xi=cn)&&(St.value=(St.__value=cn)??"",yn(St,cn))},[()=>(Z(m()),i(fe),q(()=>String(m()[i(fe).name]??"")))]),$e("change",St,cn=>O()(i(fe),cn.currentTarget.value)),te(W,St)},oi=W=>{var St=um(),Xi=z(St);It(Xi);var cn=j(Xi,2),tr=z(cn,!0);A(cn),A(St),de((vn,vr)=>{be(Xi,"id",(i(fe),q(()=>"param-"+i(fe).name))),be(Xi,"min",(i(fe),q(()=>i(fe).minimum))),be(Xi,"max",(i(fe),q(()=>i(fe).maximum))),be(Xi,"step",(i(fe),q(()=>i(fe).step))),sa(Xi,vn),X(tr,vr)},[()=>(Z(m()),i(fe),q(()=>Number(m()[i(fe).name]??i(fe).default))),()=>(Z(m()),i(fe),q(()=>String(m()[i(fe).name])))]),$e("input",Xi,vn=>O()(i(fe),vn.currentTarget.valueAsNumber)),te(W,St)},Rt=W=>{var St=t$();It(St),de((Xi,cn)=>{be(St,"id",(i(fe),q(()=>"param-"+i(fe).name))),be(St,"type",(i(fe),q(()=>i(fe).type==="number"?"number":"text"))),be(St,"min",(i(fe),q(()=>i(fe).minimum))),be(St,"max",(i(fe),q(()=>i(fe).maximum))),be(St,"step",(i(fe),q(()=>i(fe).step))),sa(St,Xi),be(St,"placeholder",cn)},[()=>(Z(m()),i(fe),q(()=>String(m()[i(fe).name]??""))),()=>(Z(T()),i(fe),Z(y()),q(()=>T()(i(fe),"placeholder",y())))]),$e("input",St,Xi=>O()(i(fe),i(fe).type==="number"?Xi.currentTarget.valueAsNumber:Xi.currentTarget.value)),te(W,St)};qe(Ot,W=>{i(fe),q(()=>i(fe).type==="choice")?W(_t):(i(fe),q(()=>i(fe).type==="slider")?W(oi,1):W(Rt,-1))})}var jt=j(Ot,2);{var Ai=W=>{var St=J1(),Xi=z(St,!0);A(St),de(cn=>X(Xi,cn),[()=>(Z(T()),i(fe),Z(y()),q(()=>T()(i(fe),"info",y())))]),te(W,St)},Ni=Si(()=>(Z(T()),i(fe),Z(y()),q(()=>T()(i(fe),"info",y()))));qe(jt,W=>{i(Ni)&&W(Ai)})}A(Ve),de(W=>{rt=Gi(Ve,1,"yue2-field svelte-15djq8z",null,rt,{wide:i(fe).type==="text"}),be(ei,"for",(i(fe),q(()=>"param-"+i(fe).name))),X(ti,W)},[()=>(Z(T()),i(fe),Z(y()),q(()=>T()(i(fe),"label",y())))]),te(Fe,Ve)}),A(dt);var wt=j(dt,2),qt=z(wt),Nt=j(z(qt)),xt=z(Nt,!0);A(Nt),A(qt);var ri=j(qt,2),di=z(ri),gn=z(di),Kt=j(z(gn),2),ta=z(Kt,!0);A(Kt),A(gn);var Va=j(gn,2),Ja=z(Va);It(Ja),Ea(2),A(Va);var on=j(Va,4);$a(on,Fe=>E(k,Fe),()=>i(k));var hn=j(on,2),yi=j(z(hn),2),mi=z(yi,!0);A(yi),A(hn);var pi=j(hn,2),Pi=z(pi),Za=j(Pi,2);{var pa=Fe=>{var fe=a$(),Ve=z(fe,!0);A(fe),de(()=>X(Ve,i(Q))),te(Fe,fe)};qe(Za,Fe=>{i(Q)&&Fe(pa)})}var ln=j(Za,2);{var wa=Fe=>{var fe=ev(),Ve=z(fe,!0);A(fe),de(()=>X(Ve,i(Y))),te(Fe,fe)};qe(ln,Fe=>{i(Y)&&Fe(wa)})}A(pi);var Qi=j(pi,2);{let Fe=Qt(()=>(Z(y()),q(()=>y()("file.preview"))));Nn(Qi,{get file(){return i(U)},kind:"audio",get label(){return i(Fe)}})}A(di);var vi=j(di,2),Cn=j(z(vi),2);La(Cn);var en=j(Cn,2);{var Ln=Fe=>{var fe=n$(),Ve=z(fe),rt=z(Ve,!0);A(Ve);var ei=j(Ve,2);It(ei),A(fe),de((ti,Ot,_t)=>{X(rt,ti),sa(ei,Ot),be(ei,"placeholder",_t)},[()=>(Z(T()),Z(y()),q(()=>T()(we("abc_file"),"label",y()))),()=>(Z(m()),q(()=>String(m().abc_file??""))),()=>(Z(T()),Z(y()),q(()=>T()(we("abc_file"),"placeholder",y())))]),$e("input",ei,ti=>ae("abc_file",ti.currentTarget.value)),te(Fe,fe)},Ha=Si(()=>q(()=>we("abc_file")));qe(en,Fe=>{i(Ha)&&Fe(Ln)})}A(vi);var Wa=j(vi,2),kn=j(z(Wa),2),er=z(kn);{var _n=Fe=>{var fe=s$();te(Fe,fe)},bi=Si(()=>(i(C),q(()=>!i(C).trim())));qe(er,Fe=>{i(bi)&&Fe(_n)})}A(kn),$a(kn,Fe=>E(re,Fe),()=>i(re));var Dn=j(kn,2);{var Jn=Fe=>{var fe=ev(),Ve=z(fe,!0);A(fe),de(()=>X(Ve,i(ie))),te(Fe,fe)};qe(Dn,Fe=>{i(ie)&&Fe(Jn)})}A(Wa),A(ri),A(wt);var Zn=j(wt,2),zs=z(Zn),_r=j(z(zs)),Us=z(_r,!0);A(_r),A(zs);var Vi=j(zs,2);Mt(Vi,5,()=>i(r),Xt,(Fe,fe)=>{var Ve=iv(),rt=z(Ve),ei=z(rt,!0);A(rt);var ti=j(rt,2);{var Ot=oi=>{var Rt=um(),jt=z(Rt);It(jt);var Ai=j(jt,2),Ni=z(Ai,!0);A(Ai),A(Rt),de((W,St)=>{be(jt,"id",(i(fe),q(()=>"param-"+i(fe).name))),be(jt,"min",(i(fe),q(()=>i(fe).minimum))),be(jt,"max",(i(fe),q(()=>i(fe).maximum))),be(jt,"step",(i(fe),q(()=>i(fe).step))),sa(jt,W),X(Ni,St)},[()=>(Z(m()),i(fe),q(()=>Number(m()[i(fe).name]??i(fe).default))),()=>(Z(m()),i(fe),q(()=>String(m()[i(fe).name])))]),$e("input",jt,W=>O()(i(fe),W.currentTarget.valueAsNumber)),te(oi,Rt)},_t=oi=>{var Rt=tv();It(Rt),de(jt=>{be(Rt,"id",(i(fe),q(()=>"param-"+i(fe).name))),be(Rt,"min",(i(fe),q(()=>i(fe).minimum))),be(Rt,"max",(i(fe),q(()=>i(fe).maximum))),be(Rt,"step",(i(fe),q(()=>i(fe).step))),sa(Rt,jt)},[()=>(Z(m()),i(fe),q(()=>String(m()[i(fe).name]??"")))]),$e("input",Rt,jt=>O()(i(fe),jt.currentTarget.valueAsNumber)),te(oi,Rt)};qe(ti,oi=>{i(fe),q(()=>i(fe).type==="slider")?oi(Ot):oi(_t,-1)})}A(Ve),de(oi=>{be(rt,"for",(i(fe),q(()=>"param-"+i(fe).name))),X(ei,oi)},[()=>(Z(T()),i(fe),Z(y()),q(()=>T()(i(fe),"label",y())))]),te(Fe,Ve)}),A(Vi),A(Zn);var Ti=j(Zn,2),ka=z(Ti),Ei=j(z(ka)),Yi=z(Ei,!0);A(Ei),A(ka);var zi=j(ka,2);Mt(zi,5,()=>i(o),Xt,(Fe,fe)=>{var Ve=iv(),rt=z(Ve),ei=z(rt,!0);A(rt);var ti=j(rt,2);{var Ot=oi=>{var Rt=um(),jt=z(Rt);It(jt);var Ai=j(jt,2),Ni=z(Ai,!0);A(Ai),A(Rt),de((W,St)=>{be(jt,"id",(i(fe),q(()=>"param-"+i(fe).name))),be(jt,"min",(i(fe),q(()=>i(fe).minimum))),be(jt,"max",(i(fe),q(()=>i(fe).maximum))),be(jt,"step",(i(fe),q(()=>i(fe).step))),sa(jt,W),X(Ni,St)},[()=>(Z(m()),i(fe),q(()=>Number(m()[i(fe).name]??i(fe).default))),()=>(Z(m()),i(fe),q(()=>String(m()[i(fe).name])))]),$e("input",jt,W=>O()(i(fe),W.currentTarget.valueAsNumber)),te(oi,Rt)},_t=oi=>{var Rt=tv();It(Rt),de(jt=>{be(Rt,"id",(i(fe),q(()=>"param-"+i(fe).name))),be(Rt,"min",(i(fe),q(()=>i(fe).minimum))),be(Rt,"max",(i(fe),q(()=>i(fe).maximum))),be(Rt,"step",(i(fe),q(()=>i(fe).step))),sa(Rt,jt)},[()=>(Z(m()),i(fe),q(()=>String(m()[i(fe).name]??"")))]),$e("input",Rt,jt=>O()(i(fe),jt.currentTarget.valueAsNumber)),te(oi,Rt)};qe(ti,oi=>{i(fe),q(()=>i(fe).type==="slider")?oi(Ot):oi(_t,-1)})}A(Ve),de(oi=>{be(rt,"for",(i(fe),q(()=>"param-"+i(fe).name))),X(ei,oi)},[()=>(Z(T()),i(fe),Z(y()),q(()=>T()(i(fe),"label",y())))]),te(Fe,Ve)}),A(zi),A(Ti),A(et),de((Fe,fe,Ve,rt,ei)=>{X(ne,`${Fe??""} `),X(ve,fe),X(ze,`${Ve??""} `),X(Ee,rt),X(xt,(i(s),q(()=>i(s).length))),Kt.disabled=!i(U)||i(S),X(ta,i(S)?"Transcribing...":"Extract ABC"),vd(Ja,i(H)),Ja.disabled=i(S),X(mi,ei),Pi.disabled=!i(U)||i(S),sa(Cn,i(C)),X(Us,(i(r),q(()=>i(r).length))),X(Yi,(i(o),q(()=>i(o).length)))},[()=>(Z(y()),q(()=>y()("request.lyrics"))),()=>(Z(y()),q(()=>y()("request.optional"))),()=>(Z(y()),q(()=>y()("request.seed"))),()=>(Z(y()),q(()=>y()("request.randomSeed"))),()=>(i(U),Z(y()),q(()=>i(U)?.name||y()("file.none")))]),Fi(pe,l),Fi(xe,u),$e("click",Kt,tt),$e("change",Ja,Fe=>{E(H,Fe.currentTarget.checked),localStorage.setItem(F,String(i(H)))}),$e("change",on,Fe=>E(U,Fe.currentTarget.files?.[0]||null)),$e("click",Pi,Xe),$e("input",Cn,Fe=>Le(Fe.currentTarget.value)),te(t,et),Xa()}var l$=ue(""),c$=ue(' ',1),d$=ue(''),u$=ue('
      ');function av(t,e){Ya(e,!1);let a=Ge(e,"id",8),n=Ge(e,"file",12,null),s=Ge(e,"transcript",12,""),r=Ge(e,"busy",8,!1),o=Ge(e,"savedVoices",24,()=>[]),l=oe("");function u($){E(l,$);const P=o().find(L=>L.id===$);P&&(n(new File([P.audio],`${P.name}.wav`,{type:P.audio.type||"audio/wav"})),s(P.transcript))}An();var p=u$(),g=z(p);{var h=$=>{var P=c$(),L=Et(P),x=j(L,2),U=z(x);U.value=U.__value="";var D=j(U);Mt(D,1,o,Xt,(G,B)=>{var V=l$(),I=z(V,!0);A(V);var k={};de(()=>{X(I,(i(B),q(()=>i(B).name))),k!==(k=(i(B),q(()=>i(B).id)))&&(V.value=(V.__value=(i(B),q(()=>i(B).id)))??"")}),te(G,V)}),A(x);var M;jn(x),de(()=>{be(L,"for",`${a()}-library`),be(x,"id",`${a()}-library`),x.disabled=r(),M!==(M=i(l))&&(x.value=(x.__value=i(l))??"",yn(x,i(l)))}),$e("change",x,G=>u(G.currentTarget.value)),te($,P)};qe(g,$=>{Z(o()),q(()=>o().length)&&$(h)})}var m=j(g,2),f=z(m),d=j(f,2);{var c=$=>{var P=d$(),L=z(P);O4(L,{size:14}),A(P),de(()=>P.disabled=r()),$e("click",P,()=>{n(null),E(l,"")}),te($,P)};qe(d,$=>{n()&&$(c)})}A(m);var _=j(m,2),b=j(_,2),v=z(b);b4(v,{size:17});var w=j(v,2),y=z(w,!0);A(w),A(b);var T=j(b,2);Nn(T,{get file(){return n()},kind:"audio",label:"Reference preview"});var O=j(T,2),R=j(O,2);La(R),A(p),de(()=>{be(f,"for",`${a()}-audio`),be(_,"id",`${a()}-audio`),_.disabled=r(),be(b,"for",`${a()}-audio`),X(y,(Z(n()),q(()=>n()?.name||"No recording selected"))),be(O,"for",`${a()}-transcript`),be(R,"id",`${a()}-transcript`),R.disabled=r()}),$e("change",_,$=>{n($.currentTarget.files?.[0]||null),E(l,""),$.currentTarget.value=""}),Fi(R,s),te(t,p),Xa()}var f$=ue('

      Reference voice (optional)

      Text to generate

      ',1),m$=ue(''),p$=ue('
      ',1),g$=ue(""),h$=ue('
      '),_$=ue('

      Multi-speaker generation is still under testing. Voice assignment and consistency may vary.

      Cast

      Dialogue

      ',1),v$=ue('
      ');function b$(t,e){Ya(e,!1);const a=oe(),n=oe();let s=Ge(e,"busy",8,!1),r=Ge(e,"savedVoices",24,()=>[]),o=Ge(e,"setPanelRunner",8,()=>()=>{});const l=16,u=I=>({id:I,name:`Speaker ${I+1}`,file:null,transcript:""});let p=oe("single"),g=oe(null),h=oe(""),m=oe(""),f=oe([u(0),u(1)]),d=oe(0),c=2,_=oe([{id:0,speaker:0,text:""},{id:1,speaker:1,text:""}]);function b(){const I=Array.from({length:l},(k,S)=>S).find(k=>!i(f).some(S=>S.id===k));I!==void 0&&(E(f,[...i(f),u(I)]),E(d,I))}function v(I){E(f,i(f).filter(k=>k.id!==I)),E(d,i(f)[0].id)}function w(I,k){const S=[...i(_)];[S[I],S[I+k]]=[S[I+k],S[I]],E(_,S)}function y(){E(_,[...i(_),{id:c++,speaker:i(d),text:""}])}function T(){i(p)==="single"?E(m,"The observatory opens at sunset. Tonight, we will follow the planets across the sky and listen for the first signs of a coming storm."):E(_,[{id:c++,speaker:i(f)[0].id,text:"The observatory opens at sunset. Did you bring the star charts?"},{id:c++,speaker:i(f)[1].id,text:"Yes, and the sky is finally clear. We should have a wonderful view tonight."}])}async function O(I){const k=i(p)==="single",S=i(f).map(ie=>({...ie})),F=i(_).map(ie=>({...ie})),H=i(g),Q=i(h).trim();let Y=i(m).trim();if(k){if(H&&!Q)throw I.warning("Enter the words spoken in the reference recording.");if(!Y)throw I.warning("Enter the text to generate.")}else{if(!F.length||F.some(ye=>!ye.text.trim()))throw I.warning("Enter text for every dialogue turn, or remove the empty turns.");const ie=new Set(F.map(ye=>ye.speaker));if(ie.size<2)throw I.warning("Assign dialogue to at least two different speakers.");for(const ye of S.filter(se=>ie.has(se.id)))if(!ye.file||!ye.transcript.trim())throw E(d,ye.id),I.warning(`${ye.name}: add a reference recording and its exact transcript.`);Y=F.map(ye=>`<|speaker:${ye.speaker}|> ${ye.text.trim()}`).join(` -`)}await I.ensureLoaded("offline");const C={...I.options},re={model:I.modelId,input:Y,seed:I.seed,response_format:"wav",options:C};if(I.maxTokens!==void 0&&(re.max_tokens=I.maxTokens),k)H&&(I.setStatus("Preparing voice reference..."),re.voice_ref=await So(await jr(H),I.signal),re.reference_text=Q);else{I.setStatus("Preparing voice references...");const ie=new Set(F.map(se=>se.speaker)),ye=[];for(const se of S.filter(we=>ie.has(we.id))){const we=await jr(se.file);ye.push({text:`<|speaker:${se.id}|> ${se.transcript.trim()}`,audio_path:await So(we,I.signal)})}C.multi_reference_cond=JSON.stringify(ye)}I.setStatus(k?H?"Cloning voice...":"Generating speech...":"Generating multi-speaker dialogue...");const he=await nm(re,I.signal);return{audio:he.blob,text:"",json:JSON.stringify({mode:k?H?"single_voice_clone":"tts":"multi_speaker",speakers:k?1:new Set(F.map(ie=>ie.speaker)).size,seed:I.seed,text_chunk_size:C.text_chunk_size,wall_ms:he.wallMs,rtf:he.rtf},null,2)}}Fs(()=>o()(O)),Ke(()=>(i(f),i(d)),()=>{E(a,i(f).findIndex(I=>I.id===i(d)))}),Ke(()=>i(f),()=>{E(n,i(f).filter(I=>I.file&&I.transcript.trim()).length)}),ds(),An();var R=v$(),$=z(R),P=z($);let L;var x=z(P);Zf(x,{size:17}),Ea(),A(P);var U=j(P,2);let D;var M=z(U);lc(M,{size:17}),Ea(2),A(U),A($);var G=j($,2);{var B=I=>{var k=f$(),S=Et(k),F=z(S),H=z(F);Zf(H,{size:17}),Ea(),A(F);var Q=j(F,2);av(Q,{id:"drama-single",get busy(){return s()},get savedVoices(){return r()},get file(){return i(g)},set file(ae){E(g,ae)},get transcript(){return i(h)},set transcript(ae){E(h,ae)},$$legacy:!0}),A(S);var Y=j(S,2),C=z(Y),re=z(C),he=z(re);Ed(he,{size:17}),Ea(),A(re);var ie=j(re,2);A(C);var ye=j(C,4);La(ye);var se=j(ye,2),we=z(se);A(se),A(Y),de(ae=>{ie.disabled=s(),ye.disabled=s(),X(we,`${ae??""} characters`)},[()=>(i(m),q(()=>i(m).length.toLocaleString()))]),$e("click",ie,T),Fi(ye,()=>i(m),ae=>E(m,ae)),te(I,k)},V=I=>{var k=_$(),S=j(Et(k),2),F=z(S),H=z(F),Q=z(H);lc(Q,{size:17});var Y=j(Q,2),C=z(Y);A(Y),A(H);var re=j(H,2),he=z(re);q1(he,{size:15}),Ea(),A(re),A(F);var ie=j(F,2),ye=z(ie);Mt(ye,5,()=>i(f),ne=>ne.id,(ne,me)=>{var ve=m$();let pe;var Se=z(ve),Me=z(Se,!0);A(Se);var ge=j(Se),ze=z(ge,!0);A(ge);var Qe=j(ge,2);{var Ee=He=>{m4(He,{size:14,"aria-label":"Reference ready"})},xe=Si(()=>(i(me),q(()=>i(me).file&&i(me).transcript.trim())));qe(Qe,He=>{i(xe)&&He(Ee)})}A(ve),de(()=>{ve.disabled=s(),be(ve,"aria-pressed",(i(d),i(me),q(()=>i(d)===i(me).id))),pe=Gi(ve,1,"svelte-z6u13w",null,pe,{chosen:i(d)===i(me).id}),X(Me,(i(me),q(()=>i(me).id+1))),X(ze,(i(me),q(()=>i(me).name)))}),$e("click",ve,()=>E(d,i(me).id)),te(ne,ve)}),A(ye);var se=j(ye,2),we=z(se);xx(we,()=>i(d),ne=>{var me=p$(),ve=Et(me),pe=z(ve),Se=j(z(pe));It(Se),A(pe);var Me=j(pe,2),ge=z(Me);zd(ge,{size:16}),A(Me),A(ve);var ze=j(ve,2);{let Qe=Qt(()=>`drama-speaker-${i(d)}`);av(ze,{get id(){return i(Qe)},get busy(){return s()},get savedVoices(){return r()},get file(){return i(f)[i(a)].file},set file(Ee){hi(f,i(f)[i(a)].file=Ee)},get transcript(){return i(f)[i(a)].transcript},set transcript(Ee){hi(f,i(f)[i(a)].transcript=Ee)},$$legacy:!0})}de((Qe,Ee)=>{Se.disabled=s(),be(Me,"title",Qe),Me.disabled=Ee},[()=>(i(_),i(d),q(()=>i(_).some(Qe=>Qe.speaker===i(d))?"Reassign or remove this speaker's dialogue first":"Remove speaker")),()=>(Z(s()),i(f),i(_),i(d),q(()=>s()||i(f).length<=2||i(_).some(Qe=>Qe.speaker===i(d))))]),Fi(Se,()=>i(f)[i(a)].name,Qe=>hi(f,i(f)[i(a)].name=Qe)),$e("click",Me,()=>v(i(d))),te(ne,me)}),A(se),A(ie);var ae=j(ie,2),Re=z(ae);A(ae),A(S);var ee=j(S,2),Oe=z(ee),Ie=z(Oe),tt=z(Ie);Ed(tt,{size:17});var Xe=j(tt,2),Le=z(Xe);A(Xe),A(Ie);var Te=j(Ie,2);A(Oe);var et=j(Oe,2);Mt(et,7,()=>i(_),ne=>ne.id,(ne,me,ve)=>{var pe=h$(),Se=z(pe),Me=z(Se),ge=z(Me,!0);A(Me);var ze=j(Me,2),Qe=z(ze);A(ze);var Ee=j(ze,2);Mt(Ee,5,()=>i(f),Xt,(qt,Nt)=>{var xt=g$(),ri=z(xt,!0);A(xt);var di={};de(()=>{X(ri,(i(Nt),q(()=>i(Nt).name))),di!==(di=(i(Nt),q(()=>i(Nt).id)))&&(xt.value=(xt.__value=(i(Nt),q(()=>i(Nt).id)))??"")}),te(qt,xt)}),A(Ee);var xe=j(Ee,2),He=z(xe),nt=z(He);c4(nt,{size:14}),A(He);var je=j(He,2),Zt=z(je);o4(Zt,{size:14}),A(je);var Pe=j(je,2),We=z(Pe);zd(We,{size:14}),A(Pe),A(xe),A(Se);var $t=j(Se,2),dt=z($t);A($t);var wt=j($t,2);La(wt),A(pe),de(qt=>{X(ge,qt),be(ze,"for",(i(me),q(()=>`drama-line-speaker-${i(me).id}`))),X(Qe,`Turn ${i(ve)+1} speaker`),be(Ee,"id",(i(me),q(()=>`drama-line-speaker-${i(me).id}`))),Ee.disabled=s(),He.disabled=s()||i(ve)===0,je.disabled=(Z(s()),Z(i(ve)),i(_),q(()=>s()||i(ve)===i(_).length-1)),Pe.disabled=s(),be($t,"for",(i(me),q(()=>`drama-line-${i(me).id}`))),X(dt,`Turn ${i(ve)+1} text`),be(wt,"id",(i(me),q(()=>`drama-line-${i(me).id}`))),wt.disabled=s()},[()=>(Z(i(ve)),q(()=>String(i(ve)+1).padStart(2,"0")))]),yo(Ee,()=>i(me).speaker,qt=>(i(me).speaker=qt,pd(()=>i(_)),pd(()=>{s(),i(f)}))),$e("click",He,()=>w(i(ve),-1)),$e("click",je,()=>w(i(ve),1)),$e("click",Pe,()=>E(_,i(_).filter(qt=>qt.id!==i(me).id))),Fi(wt,()=>i(me).text,qt=>(i(me).text=qt,pd(()=>i(_)),pd(()=>{s(),i(f)}))),te(ne,pe)}),A(et);var ce=j(et,2),_e=z(ce);q1(_e,{size:15}),Ea(),A(ce),A(ee),de(()=>{X(C,`${i(f),q(()=>i(f).length)??""} / 16`),re.disabled=(Z(s()),i(f),q(()=>s()||i(f).length>=l)),X(Re,`${i(n)??""} of ${i(f),q(()=>i(f).length)??""} references ready`),X(Le,`${i(_),q(()=>i(_).length)??""} turns`),Te.disabled=s(),ce.disabled=s()}),$e("click",re,b),$e("click",Te,T),$e("click",ce,y),te(I,k)};qe(G,I=>{i(p)==="single"?I(B):I(V,-1)})}A(R),de(()=>{be(P,"aria-pressed",i(p)==="single"),P.disabled=s(),L=Gi(P,1,"svelte-z6u13w",null,L,{chosen:i(p)==="single"}),be(U,"aria-pressed",i(p)==="multi"),U.disabled=s(),D=Gi(U,1,"svelte-z6u13w",null,D,{chosen:i(p)==="multi"})}),$e("click",P,()=>E(p,"single")),$e("click",U,()=>E(p,"multi")),te(t,R),Xa()}function Ce(t){if(!t)throw new Error("Assertion failed.")}const y$=Math.PI/180,w$=t=>{const e=(t%360+360)%360;if(e===0||e===90||e===180||e===270)return e;throw new Error(`Invalid rotation ${t}.`)},nv=[1,0,0,0,1,0,0,0,1],k$=(t,e,a)=>{const[n,s,,r,o]=t,l=Math.abs(n)*e+Math.abs(r)*a,u=Math.abs(s)*e+Math.abs(o)*a;return fm(fm(sv(-e/2,-a/2),t),sv(l/2,u/2))},x$=t=>{const e=t*y$,a=Math.round(Math.cos(e)),n=Math.round(Math.sin(e));return[a,n,0,-n,a,0,0,0,1]},sv=(t,e)=>[1,0,0,0,1,0,t,e,1],S$=(t,e)=>[t,0,0,0,e,0,0,0,1],fm=(t,e)=>{const a=new Array(9);for(let n=0;n<3;n++)for(let s=0;s<3;s++)a[3*n+s]=t[3*n]*e[s]+t[3*n+1]*e[3+s]+t[3*n+2]*e[6+s];return a},T$=(t,e,a,n)=>({rotation:w$(t+(e?-a:a)),flip:e!==n}),As=t=>t&&t[t.length-1],fr=t=>t>=0&&t<2**32,$$=t=>t>=-2147483648&&t<2**31,Ze=t=>{let e=0;for(;t.readBits(1)===0&&e<32;)e++;if(e>=32)throw new Error("Invalid exponential-Golomb code.");return(1<{const e=Ze(t);return(e&1)===0?-(e>>1):e+1>>1},_s=t=>t.constructor===Uint8Array?t:ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),Ds=t=>t.constructor===DataView?t:ArrayBuffer.isView(t)?new DataView(t.buffer,t.byteOffset,t.byteLength):new DataView(t),q$=typeof globalThis.TextEncoder<"u"?globalThis.TextEncoder:class{constructor(){this.encoding="utf-8"}encode(e=""){const a=new Uint8Array(3*e.length);let n=0;for(let s=0;s>6,a[n++]=128|r&63;else if(r<55296||r>57343)a[n++]=224|r>>12,a[n++]=128|r>>6&63,a[n++]=128|r&63;else{const o=s+1=56320&&o<=57343?(r=65536+(r-55296<<10)+(o-56320),s++,a[n++]=240|r>>18,a[n++]=128|r>>12&63,a[n++]=128|r>>6&63,a[n++]=128|r&63):(a[n++]=239,a[n++]=191,a[n++]=189)}}return a.slice(0,n)}},Vs=new q$,Id={bt709:1,bt470bg:5,smpte170m:6,bt2020:9,smpte432:12},Ld={bt709:1,smpte170m:6,linear:8,"iec61966-2-1":13,pq:16,hlg:18},Dd={rgb:0,bt709:1,bt470bg:5,smpte170m:6,"bt2020-ncl":9},G$=t=>!t||t.primaries==null&&t.transfer==null&&t.matrix==null&&t.fullRange==null,Vd=t=>t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer||ArrayBuffer.isView(t);class rv{constructor(){this.currentPromise=Promise.resolve(),this.pending=0}async acquire(){let e;const a=new Promise(s=>{let r=!1;e=()=>{r||(s(),this.pending--,r=!0)}}),n=this.currentPromise;return this.currentPromise=a,this.pending++,await n,e}}const ov=(t,e,a)=>{let n=0,s=t.length-1,r=-1;for(;n<=s;){const o=n+(s-n+1)/2|0;a(t[o])<=e?(r=o,n=o+1):s=o-1}return r},lv=()=>{let t,e;return{promise:new Promise((n,s)=>{t=n,e=s}),resolve:t,reject:e}},$o=t=>{throw new Error(`Unexpected value: ${t}`)},F$=(t,e,a)=>{const n=t.getUint8(e),s=t.getUint8(e+1),r=t.getUint8(e+2);return n<<16|s<<8|r},mm=(t,e,a,n)=>{a=a>>>0,a=a&16777215,n?(t.setUint8(e,a&255),t.setUint8(e+1,a>>>8&255),t.setUint8(e+2,a>>>16&255)):(t.setUint8(e,a>>>16&255),t.setUint8(e+1,a>>>8&255),t.setUint8(e+2,a&255))},A$=(t,e,a,n)=>{a=wn(a,-8388608,8388607),a<0&&(a=a+16777216&16777215),mm(t,e,a,n)},wn=(t,e,a)=>Math.max(e,Math.min(a,t)),C$=(t,e,a)=>t+(e-t)*a,M$="und",cv=(t,e)=>Math.round(t/e)*e,dv=(t,e)=>Math.round(t*e)/e,uv=(t,e)=>Math.floor(t*e)/e,E$=t=>{let e=0;for(;t!==0;)t&=t-1,e++;return e},z$=/^[a-z]{3}$/,U$=t=>z$.test(t),Or=1e6*(1+Number.EPSILON),B$=(t,e)=>{const a=t<0?-1:1;t=Math.abs(t);let n=0,s=1,r=1,o=0,l=t;for(;;){const u=Math.floor(l),p=u*r+n,g=u*o+s;if(g>e)return{num:a*r,den:o};if(n=r,s=o,r=p,o=g,l=1/(l-u),!isFinite(l))break}return{num:a*r,den:o}};class fv{constructor(){this.currentPromise=Promise.resolve()}call(e){return this.currentPromise=this.currentPromise.then(e)}}let pm=null;const R$=()=>pm!==null?pm:pm=!!(typeof navigator<"u"&&(navigator.vendor?.match(/apple/i)||/AppleWebKit/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)||/\b(iPad|iPhone|iPod)\b/.test(navigator.userAgent)));let gm=null;const mv=()=>gm!==null?gm:gm=typeof navigator<"u"&&navigator.userAgent?.includes("Firefox");let hm=null;const j$=()=>hm!==null?hm:hm=!!(typeof navigator<"u"&&(navigator.vendor?.includes("Google Inc")||/Chrome/.test(navigator.userAgent))),pv=t=>typeof globalThis.isSecureContext<"u"&&!globalThis.isSecureContext?`${t} is not available in this environment; this may be because this page is running in an insecure context. Try serving your page over HTTPS or use localhost.`:`${t} is not available in this environment.`,P$=(async()=>{})().constructor,Ir=t=>t instanceof P$||t instanceof Promise?!0:typeof t?.then=="function",gv=function*(t){for(const e in t){const a=t[e];a!==void 0&&(yield{key:e,value:a})}},N$=()=>{Symbol.dispose??=Symbol("Symbol.dispose")},O$=t=>typeof t=="number"&&!Number.isNaN(t),I$=(t,e)=>{let a=-1,n=1/0;for(let s=0;s{Ce(Number.isInteger(t.num)),Ce(Number.isInteger(t.den)),Ce(t.den!==0);let e=Math.abs(t.num),a=Math.abs(t.den);for(;a!==0;){const s=e%a;e=a,a=s}const n=e||1;return{num:t.num/n,den:t.den/n}},_m=(t,e)=>{if(typeof t!="object"||!t)throw new TypeError(`${e} must be an object.`);if(!Number.isInteger(t.left)||t.left<0)throw new TypeError(`${e}.left must be a non-negative integer.`);if(!Number.isInteger(t.top)||t.top<0)throw new TypeError(`${e}.top must be a non-negative integer.`);if(!Number.isInteger(t.width)||t.width<0)throw new TypeError(`${e}.width must be a non-negative integer.`);if(!Number.isInteger(t.height)||t.height<0)throw new TypeError(`${e}.height must be a non-negative integer.`)},L$=t=>new Promise(e=>setTimeout(e,t)),_v=t=>Array.isArray(t)?t:[t];class vm{constructor(){this._listeners=new Map}on(e,a,n){this._listeners.has(e)||this._listeners.set(e,new Set);const s={fn:a,once:n?.once??!1};return this._listeners.get(e).add(s),()=>{this._listeners.get(e)?.delete(s)}}_emit(...e){const[a,n]=e,s=this._listeners.get(a);if(s)for(const r of s){try{r.fn(n)}catch(o){console.error(o)}r.once&&s.delete(r)}}}const D$=t=>t!==null&&typeof t=="object"&&Object.getPrototypeOf(t)===Object.prototype&&Object.values(t).every(e=>typeof e=="string");var Hs;(function(t){t[t.Silent=0]="Silent",t[t.Errors=1]="Errors",t[t.Warnings=2]="Warnings",t[t.Info=3]="Info"})(Hs||(Hs={}));class qa{constructor(){}static get level(){return qa._level}static set level(e){if(e!==Hs.Silent&&e!==Hs.Errors&&e!==Hs.Warnings&&e!==Hs.Info)throw new TypeError("Invalid log level. Use one of the values of the LogLevel enum.");qa._level=e}static get _emitter(){return qa._emitterInstance??=new vm}static on(e,a,n){return qa._emitter.on(e,a,n)}static _error(...e){qa._emitter._emit("error",e),qa._level>=Hs.Errors&&console.error(...e)}static _warn(...e){qa._emitter._emit("warn",e),qa._level>=Hs.Warnings&&console.warn(...e)}static _info(...e){qa._emitter._emit("info",e),qa._level>=Hs.Info&&console.info(...e)}}qa._level=Hs.Info,qa._emitterInstance=null;class vv{constructor(e,a){if(this.data=e,this.mimeType=a,!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(typeof a!="string")throw new TypeError("mimeType must be a string.")}}class V${constructor(e,a,n,s){if(this.data=e,this.mimeType=a,this.name=n,this.description=s,!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(a!==void 0&&typeof a!="string")throw new TypeError("mimeType, when provided, must be a string.");if(n!==void 0&&typeof n!="string")throw new TypeError("name, when provided, must be a string.");if(s!==void 0&&typeof s!="string")throw new TypeError("description, when provided, must be a string.")}}const H$=t=>{if(!t||typeof t!="object")throw new TypeError("tags must be an object.");if(t.title!==void 0&&typeof t.title!="string")throw new TypeError("tags.title, when provided, must be a string.");if(t.description!==void 0&&typeof t.description!="string")throw new TypeError("tags.description, when provided, must be a string.");if(t.artist!==void 0&&typeof t.artist!="string")throw new TypeError("tags.artist, when provided, must be a string.");if(t.album!==void 0&&typeof t.album!="string")throw new TypeError("tags.album, when provided, must be a string.");if(t.albumArtist!==void 0&&typeof t.albumArtist!="string")throw new TypeError("tags.albumArtist, when provided, must be a string.");if(t.trackNumber!==void 0&&(!Number.isInteger(t.trackNumber)||t.trackNumber<=0))throw new TypeError("tags.trackNumber, when provided, must be a positive integer.");if(t.tracksTotal!==void 0&&(!Number.isInteger(t.tracksTotal)||t.tracksTotal<=0))throw new TypeError("tags.tracksTotal, when provided, must be a positive integer.");if(t.discNumber!==void 0&&(!Number.isInteger(t.discNumber)||t.discNumber<=0))throw new TypeError("tags.discNumber, when provided, must be a positive integer.");if(t.discsTotal!==void 0&&(!Number.isInteger(t.discsTotal)||t.discsTotal<=0))throw new TypeError("tags.discsTotal, when provided, must be a positive integer.");if(t.genre!==void 0&&typeof t.genre!="string")throw new TypeError("tags.genre, when provided, must be a string.");if(t.date!==void 0&&(!(t.date instanceof Date)||Number.isNaN(t.date.getTime())))throw new TypeError("tags.date, when provided, must be a valid Date.");if(t.beatsPerMinute!==void 0&&(!Number.isInteger(t.beatsPerMinute)||t.beatsPerMinute<=0))throw new TypeError("tags.beatsPerMinute, when provided, must be a positive integer.");if(t.lyrics!==void 0&&typeof t.lyrics!="string")throw new TypeError("tags.lyrics, when provided, must be a string.");if(t.images!==void 0){if(!Array.isArray(t.images))throw new TypeError("tags.images, when provided, must be an array.");for(const e of t.images){if(!e||typeof e!="object")throw new TypeError("Each image in tags.images must be an object.");if(!(e.data instanceof Uint8Array))throw new TypeError("Each image.data must be a Uint8Array.");if(typeof e.mimeType!="string")throw new TypeError("Each image.mimeType must be a string.");if(!["coverFront","coverBack","unknown"].includes(e.kind))throw new TypeError("Each image.kind must be 'coverFront', 'coverBack', or 'unknown'.")}}if(t.comment!==void 0&&typeof t.comment!="string")throw new TypeError("tags.comment, when provided, must be a string.");if(t.raw!==void 0){if(!t.raw||typeof t.raw!="object")throw new TypeError("tags.raw, when provided, must be an object.");for(const e of Object.values(t.raw))if(e!==null&&typeof e!="string"&&!(Array.isArray(e)&&e.every(a=>typeof a=="string"))&&!(e instanceof Uint8Array)&&!(e instanceof vv)&&!(e instanceof V$)&&!D$(e))throw new TypeError("Each value in tags.raw must be a string, string array, Uint8Array, RichImageData, AttachedFile, Record, or null.")}},W$=t=>{if(!t||typeof t!="object")throw new TypeError("disposition must be an object.");if(t.default!==void 0&&typeof t.default!="boolean")throw new TypeError("disposition.default must be a boolean.");if(t.primary!==void 0&&typeof t.primary!="boolean")throw new TypeError("disposition.primary must be a boolean.");if(t.forced!==void 0&&typeof t.forced!="boolean")throw new TypeError("disposition.forced must be a boolean.");if(t.original!==void 0&&typeof t.original!="boolean")throw new TypeError("disposition.original must be a boolean.");if(t.commentary!==void 0&&typeof t.commentary!="boolean")throw new TypeError("disposition.commentary must be a boolean.");if(t.hearingImpaired!==void 0&&typeof t.hearingImpaired!="boolean")throw new TypeError("disposition.hearingImpaired must be a boolean.");if(t.visuallyImpaired!==void 0&&typeof t.visuallyImpaired!="boolean")throw new TypeError("disposition.visuallyImpaired must be a boolean.")};class Da{constructor(e){this.bytes=e,this.pos=0}seekToByte(e){this.pos=8*e}readBit(){const e=Math.floor(this.pos/8),a=this.bytes[e]??0,n=7-(this.pos&7),s=(a&1<>n;return this.pos++,s}readBits(e){if(e===1)return this.readBit();let a=0;for(let n=0;n>n-s-1<0&&this.writeBits(s,a.readBits(s))}readAlignedByte(){if(this.pos%8!==0)throw new Error("Bitstream is not byte-aligned.");const e=this.pos/8,a=this.bytes[e]??0;return this.pos+=8,a}skipBits(e){this.pos+=e}getBitsLeft(){return this.bytes.length*8-this.pos}clone(){const e=new Da(this.bytes);return e.pos=this.pos,e}}const Hd=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],bm=[-1,1,2,3,4,5,6,8],Q$=t=>{if(!t||t.byteLength<2)throw new TypeError("AAC description must be at least 2 bytes long.");const e=new Da(t),a=ym(e),{frequencyIndex:n,sampleRate:s}=wm(e),r=e.readBits(4);let o=null;r>=1&&r<=7&&(o=bm[r]);let l=a,u=!1,p=s;if(a===5||a===29)u=a===29,p=wm(e).sampleRate,l=ym(e),l===22&&e.skipBits(4);else for(;e.getBitsLeft()>15;){const g=e.pos;if(e.readBits(11)!==695){e.pos=g+1;continue}ym(e)===5&&e.readBits(1)&&(p=wm(e).sampleRate,e.getBitsLeft()>11&&e.readBits(11)===1352&&(u=!!e.readBits(1)));break}return o!==null&&o>1&&(u=!1),{objectType:a,coreObjectType:l,frequencyIndex:n,channelConfiguration:r,outputSampleRate:p,outputNumberOfChannels:u&&o===1?2:o}},ym=t=>{const e=t.readBits(5);return e===31?32+t.readBits(6):e},wm=t=>{const e=t.readBits(4);return e===15?{frequencyIndex:e,sampleRate:t.readBits(24)}:{frequencyIndex:e,sampleRate:e{const e=t.objectType===5||t.objectType===29,a=t.objectType===29,n=e?t.outputSampleRate/2:t.outputSampleRate,s=a?1:t.outputNumberOfChannels,r=bm.indexOf(s);if(r===-1)throw new TypeError(`Unsupported number of channels: ${t.outputNumberOfChannels}`);let o=16;t.objectType>=32&&(o+=6),km(n)===15&&(o+=24),e&&(o+=9,km(t.outputSampleRate)===15&&(o+=24));const l=Math.ceil(o/8),u=new Uint8Array(l),p=new Da(u);return yv(p,t.objectType),wv(p,n),p.writeBits(4,r),e&&(wv(p,t.outputSampleRate),yv(p,2)),p.writeBits(3,0),u},yv=(t,e)=>{e<32?t.writeBits(5,e):(t.writeBits(5,31),t.writeBits(6,e-32))},wv=(t,e)=>{const a=km(e);t.writeBits(4,a),a===15&&t.writeBits(24,e)},km=t=>{const e=Hd.indexOf(t);return e===-1?15:e};const K$=[48e3,44100,32e3],Y$=[24e3,22050,16e3];var pr;(function(t){t[t.NON_IDR_SLICE=1]="NON_IDR_SLICE",t[t.SLICE_DPA=2]="SLICE_DPA",t[t.SLICE_DPB=3]="SLICE_DPB",t[t.SLICE_DPC=4]="SLICE_DPC",t[t.IDR=5]="IDR",t[t.SEI=6]="SEI",t[t.SPS=7]="SPS",t[t.PPS=8]="PPS",t[t.AUD=9]="AUD",t[t.SPS_EXT=13]="SPS_EXT"})(pr||(pr={}));var vs;(function(t){t[t.RASL_N=8]="RASL_N",t[t.RASL_R=9]="RASL_R",t[t.BLA_W_LP=16]="BLA_W_LP",t[t.RSV_IRAP_VCL23=23]="RSV_IRAP_VCL23",t[t.VPS_NUT=32]="VPS_NUT",t[t.SPS_NUT=33]="SPS_NUT",t[t.PPS_NUT=34]="PPS_NUT",t[t.AUD_NUT=35]="AUD_NUT",t[t.PREFIX_SEI_NUT=39]="PREFIX_SEI_NUT",t[t.SUFFIX_SEI_NUT=40]="SUFFIX_SEI_NUT"})(vs||(vs={}));const pc=function*(t){let e=0,a=-1;for(;e=t.length-2)break;e=n;let s=0;if(e+3a&&(yield{offset:a,length:e-a}),a=e+s,e=a}a!==-1&&a{if(e.description){const s=(_s(e.description)[4]&3)+1;return kv(t,s)}else return pc(t)},xv=t=>t&31,Wd=t=>{const e=[],a=t.length;for(let n=0;n{const a=t.reduce((r,o)=>r+e+o.byteLength,0),n=new Uint8Array(a);let s=0;for(const r of t){const o=new DataView(n.buffer,n.byteOffset,n.byteLength);switch(e){case 1:o.setUint8(s,r.byteLength);break;case 2:o.setUint16(s,r.byteLength,!1);break;case 3:mm(o,s,r.byteLength,!1);break;case 4:o.setUint32(s,r.byteLength,!1);break}s+=e,n.set(r,s),s+=r.byteLength}return n},Z$=t=>{try{const e=[],a=[],n=[];for(const l of pc(t)){const u=t.subarray(l.offset,l.offset+l.length),p=xv(u[0]);p===pr.SPS?e.push(u):p===pr.PPS?a.push(u):p===pr.SPS_EXT&&n.push(u)}if(e.length===0||a.length===0)return null;const s=e[0],r=tq(s);Ce(r!==null);const o=r.profileIdc===100||r.profileIdc===110||r.profileIdc===122||r.profileIdc===144;return{configurationVersion:1,avcProfileIndication:r.profileIdc,profileCompatibility:r.constraintFlags,avcLevelIndication:r.levelIdc,lengthSizeMinusOne:3,sequenceParameterSets:e,pictureParameterSets:a,chromaFormat:o?r.chromaFormatIdc:null,bitDepthLumaMinus8:o?r.bitDepthLumaMinus8:null,bitDepthChromaMinus8:o?r.bitDepthChromaMinus8:null,sequenceParameterSetExt:o?n:null}}catch(e){return qa._error("Error building AVC Decoder Configuration Record:",e),null}},eq=t=>{const e=[];e.push(t.configurationVersion),e.push(t.avcProfileIndication),e.push(t.profileCompatibility),e.push(t.avcLevelIndication),e.push(252|t.lengthSizeMinusOne&3),e.push(224|t.sequenceParameterSets.length&31);for(const a of t.sequenceParameterSets){const n=a.byteLength;e.push(n>>8),e.push(n&255);for(let s=0;s>8),e.push(n&255);for(let s=0;s>8),e.push(n&255);for(let s=0;s{try{const e=Wd(t),a=new Da(e);if(a.skipBits(1),a.skipBits(2),a.readBits(5)!==7)return null;const s=a.readAlignedByte(),r=a.readAlignedByte(),o=a.readAlignedByte();Ze(a);let l=1,u=0,p=0,g=0;if((s===100||s===110||s===122||s===244||s===44||s===83||s===86||s===118||s===128)&&(l=Ze(a),l===3&&(g=a.readBits(1)),u=Ze(a),p=Ze(a),a.skipBits(1),a.readBits(1))){for(let B=0;B<(l!==3?8:12);B++)if(a.readBits(1)){const I=B<6?16:64;let k=8,S=8;for(let F=0;FF.level>=o)??As(Qd),S=Math.min(Math.floor(k.maxDpbMbs/(B*I)),16);P=S,L=S}}return Ce(L!==null),{emulationUnpreventedBytes:e,profileIdc:s,constraintFlags:r,levelIdc:o,frameMbsOnlyFlag:v,chromaFormatIdc:l,bitDepthLumaMinus8:u,bitDepthChromaMinus8:p,codedWidth:d,codedHeight:c,displayWidth:_,displayHeight:b,pixelAspectRatio:$,colourPrimaries:y,matrixCoefficients:O,transferCharacteristics:T,fullRangeFlag:R,numReorderFrames:P,maxDecFrameBuffering:L,vuiParametersFlagBitOffset:D,bitstreamRestrictionFlagBitOffset:x,bitstreamRestrictionFlag:U}}catch(e){return qa._error("Error parsing AVC SPS:",e),null}},Tv=t=>{const e=Ze(t);t.skipBits(4),t.skipBits(4);for(let a=0;a<=e;a++)Ze(t),Ze(t),t.skipBits(1);t.skipBits(5),t.skipBits(5),t.skipBits(5),t.skipBits(5)},iq=(t,e)=>{if(e.description){const s=(_s(e.description)[21]&3)+1;return kv(t,s)}else return pc(t)},xm=t=>t>>1&63,aq=t=>{try{const e=new Da(Wd(t));e.skipBits(16),e.readBits(4);const a=e.readBits(3),n=e.readBits(1),{general_profile_space:s,general_tier_flag:r,general_profile_idc:o,general_profile_compatibility_flags:l,general_constraint_indicator_flags:u,general_level_idc:p}=sq(e,a);Ze(e);const g=Ze(e);let h=0;g===3&&(h=e.readBits(1));const m=Ze(e),f=Ze(e);let d=m,c=f;if(e.readBits(1)){const U=Ze(e),D=Ze(e),M=Ze(e),G=Ze(e);let B=1,V=1;const I=h===0?g:0;I===1?(B=2,V=2):I===2&&(B=2,V=1),d-=(U+D)*B,c-=(M+G)*V}const _=Ze(e),b=Ze(e);Ze(e);const w=e.readBits(1)?0:a;let y=0;for(let U=w;U<=a;U++)Ze(e),y=Ze(e),Ze(e);Ze(e),Ze(e),Ze(e),Ze(e),Ze(e),Ze(e),e.readBits(1)&&e.readBits(1)&&rq(e),e.skipBits(1),e.skipBits(1),e.readBits(1)&&(e.skipBits(4),e.skipBits(4),Ze(e),Ze(e),e.skipBits(1));const T=Ze(e);if(oq(e,T),e.readBits(1)){const U=Ze(e);for(let D=0;D{try{const e=[],a=[],n=[],s=[];for(const p of pc(t)){const g=t.subarray(p.offset,p.offset+p.length),h=xm(g[0]);h===vs.VPS_NUT?e.push(g):h===vs.SPS_NUT?a.push(g):h===vs.PPS_NUT?n.push(g):(h===vs.PREFIX_SEI_NUT||h===vs.SUFFIX_SEI_NUT)&&s.push(g)}if(a.length===0||n.length===0)return null;const r=aq(a[0]);if(!r)return null;let o=0;if(n.length>0){const p=n[0],g=new Da(Wd(p));g.skipBits(16),Ze(g),Ze(g),g.skipBits(1),g.skipBits(1),g.skipBits(3),g.skipBits(1),g.skipBits(1),Ze(g),Ze(g),mr(g),g.skipBits(1),g.skipBits(1),g.readBits(1)&&Ze(g),mr(g),mr(g),g.skipBits(1),g.skipBits(1),g.skipBits(1),g.skipBits(1);const h=g.readBits(1),m=g.readBits(1);!h&&!m?o=0:h&&!m?o=2:!h&&m?o=3:o=0}const l=[...e.length?[{arrayCompleteness:1,nalUnitType:vs.VPS_NUT,nalUnits:e}]:[],...a.length?[{arrayCompleteness:1,nalUnitType:vs.SPS_NUT,nalUnits:a}]:[],...n.length?[{arrayCompleteness:1,nalUnitType:vs.PPS_NUT,nalUnits:n}]:[],...s.length?[{arrayCompleteness:1,nalUnitType:xm(s[0][0]),nalUnits:s}]:[]];return{configurationVersion:1,generalProfileSpace:r.generalProfileSpace,generalTierFlag:r.generalTierFlag,generalProfileIdc:r.generalProfileIdc,generalProfileCompatibilityFlags:r.generalProfileCompatibilityFlags,generalConstraintIndicatorFlags:r.generalConstraintIndicatorFlags,generalLevelIdc:r.generalLevelIdc,minSpatialSegmentationIdc:r.minSpatialSegmentationIdc,parallelismType:o,chromaFormatIdc:r.chromaFormatIdc,bitDepthLumaMinus8:r.bitDepthLumaMinus8,bitDepthChromaMinus8:r.bitDepthChromaMinus8,avgFrameRate:0,constantFrameRate:0,numTemporalLayers:r.spsMaxSubLayersMinus1+1,temporalIdNested:r.spsTemporalIdNestingFlag,lengthSizeMinusOne:3,arrays:l}}catch(e){return qa._error("Error building HEVC Decoder Configuration Record:",e),null}},sq=(t,e)=>{const a=t.readBits(2),n=t.readBits(1),s=t.readBits(5);let r=0;for(let g=0;g<32;g++)r=r<<1|t.readBits(1);const o=new Uint8Array(6);for(let g=0;g<6;g++)o[g]=t.readBits(8);const l=t.readBits(8),u=[],p=[];for(let g=0;g0)for(let g=e;g<8;g++)t.skipBits(2);for(let g=0;g{for(let e=0;e<4;e++)for(let a=0;a<(e===3?2:6);a++)if(!t.readBits(1))Ze(t);else{const s=Math.min(64,1<<4+(e<<1));e>1&&mr(t);for(let r=0;r{const a=[];for(let n=0;n{let s=0,r=0,o=0;if(e!==0&&(r=t.readBits(1)),r){if(e===a){const u=Ze(t);o=e-(u+1)}else o=e-1;t.readBits(1),Ze(t);const l=n[o]??0;for(let u=0;u<=l;u++)t.readBits(1)||t.readBits(1);s=n[o]}else{const l=Ze(t),u=Ze(t);for(let p=0;p{let a=2,n=2,s=2,r=0,o=0,l={num:1,den:1};if(t.readBits(1)){const u=t.readBits(8);if(u===255)l={num:t.readBits(16),den:t.readBits(16)};else{const p=Sv[u];p&&(l=p)}}return t.readBits(1)&&t.readBits(1),t.readBits(1)&&(t.readBits(3),r=t.readBits(1),t.readBits(1)&&(a=t.readBits(8),n=t.readBits(8),s=t.readBits(8))),t.readBits(1)&&(Ze(t),Ze(t)),t.readBits(1),t.readBits(1),t.readBits(1),t.readBits(1)&&(Ze(t),Ze(t),Ze(t),Ze(t)),t.readBits(1)&&(t.readBits(32),t.readBits(32),t.readBits(1)&&Ze(t),t.readBits(1)&&dq(t,!0,e)),t.readBits(1)&&(t.readBits(1),t.readBits(1),t.readBits(1),o=Ze(t),Ze(t),Ze(t),Ze(t),Ze(t)),{pixelAspectRatio:l,colourPrimaries:a,transferCharacteristics:n,matrixCoefficients:s,fullRangeFlag:r,minSpatialSegmentationIdc:o}},dq=(t,e,a)=>{let n=!1,s=!1,r=!1;n=t.readBits(1)===1,s=t.readBits(1)===1,(n||s)&&(r=t.readBits(1)===1,r&&(t.readBits(8),t.readBits(5),t.readBits(1),t.readBits(5)),t.readBits(4),t.readBits(4),r&&t.readBits(4),t.readBits(5),t.readBits(5),t.readBits(5));for(let o=0;o<=a;o++){const l=t.readBits(1)===1;let u=!0;l||(u=t.readBits(1)===1);let p=!1;u?Ze(t):p=t.readBits(1)===1;let g=1;p||(g=Ze(t)+1),n&&$v(t,g,r),s&&$v(t,g,r)}},$v=(t,e,a)=>{for(let n=0;n{const e=[];e.push(t.configurationVersion),e.push((t.generalProfileSpace&3)<<6|(t.generalTierFlag&1)<<5|t.generalProfileIdc&31),e.push(t.generalProfileCompatibilityFlags>>>24&255),e.push(t.generalProfileCompatibilityFlags>>>16&255),e.push(t.generalProfileCompatibilityFlags>>>8&255),e.push(t.generalProfileCompatibilityFlags&255),e.push(...t.generalConstraintIndicatorFlags),e.push(t.generalLevelIdc&255),e.push(240|t.minSpatialSegmentationIdc>>8&15),e.push(t.minSpatialSegmentationIdc&255),e.push(252|t.parallelismType&3),e.push(252|t.chromaFormatIdc&3),e.push(248|t.bitDepthLumaMinus8&7),e.push(248|t.bitDepthChromaMinus8&7),e.push(t.avgFrameRate>>8&255),e.push(t.avgFrameRate&255),e.push((t.constantFrameRate&3)<<6|(t.numTemporalLayers&7)<<3|(t.temporalIdNested&1)<<2|t.lengthSizeMinusOne&3),e.push(t.arrays.length&255);for(const a of t.arrays){e.push((a.arrayCompleteness&1)<<7|0|a.nalUnitType&63),e.push(a.nalUnits.length>>8&255),e.push(a.nalUnits.length&255);for(const n of a.nalUnits){e.push(n.length>>8&255),e.push(n.length&255);for(let s=0;s{let n=0;for(let s=0;s<8;s++){const r=e.readAlignedByte();if(n+=(r&127)*2**(s*7),!(r&128))break;if(s===7&&r&128)return null}return n>2**32-1?null:n};for(;e.getBitsLeft()>=8;){e.skipBits(1);const n=e.readBits(4),s=e.readBits(1),r=e.readBits(1);e.skipBits(1),s&&e.skipBits(8);let o;if(r){const l=a();if(l===null)return;o=l}else o=Math.floor(e.getBitsLeft()/8);Ce(e.pos%8===0),yield{type:n,data:t.subarray(e.pos/8,e.pos/8+o)},e.skipBits(o*8)}},mq=t=>{const e=Ds(t),a=e.getUint8(9),n=e.getUint16(10,!0),s=e.getUint32(12,!0),r=e.getInt16(16,!0),o=e.getUint8(18);let l=null;return o&&(l=t.subarray(19,21+a)),{outputChannelCount:a,preSkip:n,inputSampleRate:s,outputGain:r,channelMappingFamily:o,channelMappingTable:l}},pq=(t,e,a)=>{switch(t){case"avc":{for(const n of X$(a,e)){const s=a[n.offset],r=xv(s);if(r>=pr.NON_IDR_SLICE&&r<=pr.SLICE_DPC)return"delta";if(r===pr.IDR)return"key";if(r===pr.SEI&&!j$()){const o=a.subarray(n.offset,n.offset+n.length),l=Wd(o);let u=1;do{let p=0;for(;;){const m=l[u++];if(m===void 0||(p+=m,m<255))break}let g=0;for(;;){const m=l[u++];if(m===void 0||(g+=m,m<255))break}if(p===6){const m=new Da(l);m.pos=8*u;const f=Ze(m),d=m.readBits(1);if(f===0&&d===1)return"key"}u+=g}while(u{if(t.length<7||t[0]!==11||t[1]!==119)return null;const e=new Da(t);e.skipBits(16),e.skipBits(16);const a=e.readBits(2);if(a===3)return null;const n=e.readBits(6),s=e.readBits(5);if(s>8)return null;const r=e.readBits(3),o=e.readBits(3);(o&1)!==0&&o!==1&&e.skipBits(2),(o&4)!==0&&e.skipBits(2),o===2&&e.skipBits(2);const l=e.readBits(1),u=Math.floor(n/2);return{fscod:a,bsid:s,bsmod:r,acmod:o,lfeon:l,bitRateCode:u}},hq=[1,2,3,6],_q=t=>{if(t.length<6||t[0]!==11||t[1]!==119)return null;const e=new Da(t);e.skipBits(16);const a=e.readBits(2);if(e.skipBits(3),a!==0&&a!==2)return null;const n=e.readBits(11),s=e.readBits(2);let r=0,o;s===3?(r=e.readBits(2),o=3):o=e.readBits(2);const l=e.readBits(3),u=e.readBits(1),p=e.readBits(5);if(p<11||p>16)return null;const g=hq[o];let h;return s<3?h=K$[s]/1e3:h=Y$[r]/1e3,{dataRate:Math.round((n+1)*h/(g*16)),substreams:[{fscod:s,fscod2:r,bsid:p,bsmod:0,acmod:l,lfeon:u,numDepSub:0,chanLoc:0}]}},vq=1683496997,bq=18,yq=10,Fv=32,wq=20,kq=8,xq=[0,8e3,16e3,32e3,0,0,11025,22050,44100,0,0,12e3,24e3,48e3,96e3,192e3],Sq=[32e3,56e3,64e3,96e3,112e3,128e3,192e3,224e3,256e3,32e4,384e3,448e3,512e3,576e3,64e4,768e3,96e4,1024e3,1152e3,128e4,1344e3,1408e3,1411200,1472e3,1536e3,192e4,2048e3,3072e3,384e4,0,0,0],Tq=[16,16,20,20,0,24,24,0],Av=[1,2,2,2,2,3,3,4,4,5,6,6,6,7,8,8],$q=[1,2,2,2,2,3,18,19,6,7,518,323,83,519,582,535],qq=8,Gq=[32e3,44100,48e3,0],Fq=[8e3,16e3,32e3,64e3,128e3,22050,44100,88200,176400,352800,12e3,24e3,48e3,96e3,192e3,384e3],Aq=[512,1024,2048,4096],Cq=t=>{const e=Mq(t),a=Ds(t);let n=e?Math.ceil(e.frameSize/4)*4:0,s=null;for(;n+4<=t.length&&a.getUint32(n)===vq;){const o=Eq(t.subarray(n));if(!o)break;s??=o,n+=o.frameSize}if(e)return{frameSize:s?n:e.frameSize,sampleRate:e.sampleRate,numberOfChannels:e.numberOfChannels,sampleCount:e.sampleCount,channelLayout:e.channelLayout,pcmResolution:e.pcmResolution,bitRate:e.bitRate,core:e,hasExtensions:s!==null};if(!s?.asset)return null;const{asset:r}=s;return{frameSize:n,sampleRate:r.sampleRate,numberOfChannels:r.numberOfChannels,sampleCount:r.sampleCount,channelLayout:r.channelLayout,pcmResolution:r.pcmResolution,bitRate:0,core:null,hasExtensions:!0}},Mq=t=>{if(t.length=Av.length)return null;const o=xq[e.readBits(4)];if(o===0)return null;const l=Sq[e.readBits(5)];if(e.readBits(1)!==0)return null;e.skipBits(4),e.skipBits(5);const u=e.readBits(2);if(u===3)return null;e.skipBits(1),a&&e.skipBits(16),e.skipBits(7);const p=Tq[e.readBits(3)];if(p===0)return null;const g=u!==0;return{frameSize:s,sampleRate:o,numberOfChannels:Av[r]+(g?1:0),sampleCount:n*Fv,channelLayout:$q[r]|(g?qq:0),amode:r,lfePresent:g,bitRate:l,pcmResolution:p}},Eq=t=>{if(t.length2&&e.skipBits(1),c>6&&e.skipBits(1),e.readBits(1))){const b=e.readBits(2)+1<<2;_=e.readBits(b)}return u===0||e.getBitsLeft()<0?l:{frameSize:o,asset:{sampleRate:d,numberOfChannels:c,sampleCount:Math.round(p*d/u),channelLayout:_,pcmResolution:f}}},zq=t=>{const e=new Uint8Array(wq),a=Ds(e);a.setUint32(0,t.sampleRate),a.setUint32(4,t.bitRate),a.setUint32(8,t.bitRate),e[12]=t.pcmResolution;const n=t.core&&!t.hasExtensions?1:0,s=new Da(e);return s.seekToByte(13),s.writeBits(2,Math.max(Aq.indexOf(t.sampleCount),0)),s.writeBits(5,n),s.writeBits(1,t.core?.lfePresent?1:0),s.writeBits(6,t.core?.amode??0),s.writeBits(14,t.core?t.core.frameSize-1:0),s.writeBits(1,0),s.writeBits(3,0),s.writeBits(16,t.channelLayout),s.writeBits(1,0),s.writeBits(1,0),s.writeBits(1,0),s.writeBits(5,0),e};const gr=["avc","hevc","vp9","av1","vp8","prores"],Cs=["pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be","pcm-u8","pcm-s8","ulaw","alaw"],Sm=["aac","opus","mp3","vorbis","flac","ac3","eac3","dts"],qo=[...Sm,...Cs],gc=["webvtt"],Qd=[{maxMacroblocks:99,maxBitrate:64e3,maxDpbMbs:396,level:10},{maxMacroblocks:396,maxBitrate:192e3,maxDpbMbs:900,level:11},{maxMacroblocks:396,maxBitrate:384e3,maxDpbMbs:2376,level:12},{maxMacroblocks:396,maxBitrate:768e3,maxDpbMbs:2376,level:13},{maxMacroblocks:396,maxBitrate:2e6,maxDpbMbs:2376,level:20},{maxMacroblocks:792,maxBitrate:4e6,maxDpbMbs:4752,level:21},{maxMacroblocks:1620,maxBitrate:4e6,maxDpbMbs:8100,level:22},{maxMacroblocks:1620,maxBitrate:1e7,maxDpbMbs:8100,level:30},{maxMacroblocks:3600,maxBitrate:14e6,maxDpbMbs:18e3,level:31},{maxMacroblocks:5120,maxBitrate:2e7,maxDpbMbs:20480,level:32},{maxMacroblocks:8192,maxBitrate:2e7,maxDpbMbs:32768,level:40},{maxMacroblocks:8192,maxBitrate:5e7,maxDpbMbs:32768,level:41},{maxMacroblocks:8704,maxBitrate:5e7,maxDpbMbs:34816,level:42},{maxMacroblocks:22080,maxBitrate:135e6,maxDpbMbs:110400,level:50},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:51},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:52},{maxMacroblocks:139264,maxBitrate:24e7,maxDpbMbs:696320,level:60},{maxMacroblocks:139264,maxBitrate:48e7,maxDpbMbs:696320,level:61},{maxMacroblocks:139264,maxBitrate:8e8,maxDpbMbs:696320,level:62}],Cv=[{maxPictureSize:36864,maxBitrate:128e3,tier:"L",level:30},{maxPictureSize:122880,maxBitrate:15e5,tier:"L",level:60},{maxPictureSize:245760,maxBitrate:3e6,tier:"L",level:63},{maxPictureSize:552960,maxBitrate:6e6,tier:"L",level:90},{maxPictureSize:983040,maxBitrate:1e7,tier:"L",level:93},{maxPictureSize:2228224,maxBitrate:12e6,tier:"L",level:120},{maxPictureSize:2228224,maxBitrate:3e7,tier:"H",level:120},{maxPictureSize:2228224,maxBitrate:2e7,tier:"L",level:123},{maxPictureSize:2228224,maxBitrate:5e7,tier:"H",level:123},{maxPictureSize:8912896,maxBitrate:25e6,tier:"L",level:150},{maxPictureSize:8912896,maxBitrate:1e8,tier:"H",level:150},{maxPictureSize:8912896,maxBitrate:4e7,tier:"L",level:153},{maxPictureSize:8912896,maxBitrate:16e7,tier:"H",level:153},{maxPictureSize:8912896,maxBitrate:6e7,tier:"L",level:156},{maxPictureSize:8912896,maxBitrate:24e7,tier:"H",level:156},{maxPictureSize:35651584,maxBitrate:6e7,tier:"L",level:180},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:180},{maxPictureSize:35651584,maxBitrate:12e7,tier:"L",level:183},{maxPictureSize:35651584,maxBitrate:48e7,tier:"H",level:183},{maxPictureSize:35651584,maxBitrate:24e7,tier:"L",level:186},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:186}],Mv=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}],Ev=[{maxPictureSize:147456,maxBitrate:15e5,tier:"M",level:0},{maxPictureSize:278784,maxBitrate:3e6,tier:"M",level:1},{maxPictureSize:665856,maxBitrate:6e6,tier:"M",level:4},{maxPictureSize:1065024,maxBitrate:1e7,tier:"M",level:5},{maxPictureSize:2359296,maxBitrate:12e6,tier:"M",level:8},{maxPictureSize:2359296,maxBitrate:3e7,tier:"H",level:8},{maxPictureSize:2359296,maxBitrate:2e7,tier:"M",level:9},{maxPictureSize:2359296,maxBitrate:5e7,tier:"H",level:9},{maxPictureSize:8912896,maxBitrate:3e7,tier:"M",level:12},{maxPictureSize:8912896,maxBitrate:1e8,tier:"H",level:12},{maxPictureSize:8912896,maxBitrate:4e7,tier:"M",level:13},{maxPictureSize:8912896,maxBitrate:16e7,tier:"H",level:13},{maxPictureSize:8912896,maxBitrate:6e7,tier:"M",level:14},{maxPictureSize:8912896,maxBitrate:24e7,tier:"H",level:14},{maxPictureSize:35651584,maxBitrate:6e7,tier:"M",level:15},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:15},{maxPictureSize:35651584,maxBitrate:6e7,tier:"M",level:16},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:16},{maxPictureSize:35651584,maxBitrate:1e8,tier:"M",level:17},{maxPictureSize:35651584,maxBitrate:48e7,tier:"H",level:17},{maxPictureSize:35651584,maxBitrate:16e7,tier:"M",level:18},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:18},{maxPictureSize:35651584,maxBitrate:16e7,tier:"M",level:19},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:19}],hc=["ap4x","ap4h","apch","apcn","apcs","apco"],Tm=["dtsc","dtsh","dtsl","dtse"],Uq=[{fourCc:"apco",bitrate:45e6,alpha:!1},{fourCc:"apcs",bitrate:102e6,alpha:!1},{fourCc:"apcn",bitrate:147e6,alpha:!1},{fourCc:"apch",bitrate:22e7,alpha:!1},{fourCc:"ap4h",bitrate:33e7,alpha:!0},{fourCc:"ap4x",bitrate:5e8,alpha:!0}],Bq=(t,e,a,n,s)=>{if(t==="avc"){const o=Math.ceil(e/16)*Math.ceil(a/16),l=Qd.find(m=>o<=m.maxMacroblocks&&n<=m.maxBitrate)??As(Qd),u=l?l.level:0,p="64".padStart(2,"0"),g="00",h=u.toString(16).padStart(2,"0");return`avc1.${p}${g}${h}`}else if(t==="hevc"){const u=e*a,p=Cv.find(h=>u<=h.maxPictureSize&&n<=h.maxBitrate)??As(Cv);return`hev1.1.6.${p.tier}${p.level}.B0`}else{if(t==="vp8")return"vp8";if(t==="vp9"){const o=e*a;return`vp09.00.${(Mv.find(p=>o<=p.maxPictureSize&&n<=p.maxBitrate)??As(Mv)).level.toString().padStart(2,"0")}.08`}else if(t==="av1"){const o=e*a,l=Ev.find(g=>o<=g.maxPictureSize&&n<=g.maxBitrate)??As(Ev);return`av01.0.${l.level.toString().padStart(2,"0")}${l.tier}.08`}else if(t==="prores"){const o=Math.pow(e*a/2073600,.95),l=Uq.filter(g=>g.alpha===s);let u=l[0].fourCc,p=1/0;for(const{fourCc:g,bitrate:h}of l){const m=Math.abs(h*o-n);m{const e=t.split("."),s=(1<<7)+1,r=Number(e[1]),o=e[2],l=Number(o.slice(0,-1)),u=(r<<5)+l,p=o.slice(-1)==="H"?1:0,g=Number(e[3]),h=g===8?0:1,m=g===12?1:0,f=e[4]?Number(e[4]):0,d=e[5]?Number(e[5][0]):1,c=e[5]?Number(e[5][1]):1,_=e[5]?Number(e[5][2]):0,b=(p<<7)+(h<<6)+(m<<5)+(f<<4)+(d<<3)+(c<<2)+_;return[s,u,b,0]},jq=(t,e,a)=>{if(t==="aac")return e>=2&&a<=24e3?"mp4a.40.29":a<=24e3?"mp4a.40.5":"mp4a.40.2";if(t==="mp3")return"mp3";if(t==="opus")return"opus";if(t==="vorbis")return"vorbis";if(t==="flac")return"flac";if(t==="ac3")return"ac-3";if(t==="eac3")return"ec-3";if(t==="dts")return"dtsc";if(Cs.includes(t))return t;throw new TypeError(`Unhandled codec '${t}'.`)},zv=/^pcm-([usf])(\d+)(be)?$/,Go=t=>{if(Ce(Cs.includes(t)),t==="ulaw")return{dataType:"ulaw",sampleSize:1,littleEndian:!0,silentValue:255};if(t==="alaw")return{dataType:"alaw",sampleSize:1,littleEndian:!0,silentValue:213};const e=zv.exec(t);Ce(e);let a;e[1]==="u"?a="unsigned":e[1]==="s"?a="signed":a="float";const n=Number(e[2])/8,s=e[3]!=="be",r=t==="pcm-u8"?2**7:0;return{dataType:a,sampleSize:n,littleEndian:s,silentValue:r}},Kd=t=>t.startsWith("avc1")||t.startsWith("avc3")?"avc":t.startsWith("hev1")||t.startsWith("hvc1")?"hevc":t==="vp8"?"vp8":t.startsWith("vp09")?"vp9":t.startsWith("av01")?"av1":hc.includes(t)?"prores":t==="mp3"||t==="mp4a.69"||t==="mp4a.6B"||t==="mp4a.6b"||t==="mp4a.40.34"?"mp3":t.startsWith("mp4a.40.")||t==="mp4a.67"?"aac":t==="opus"?"opus":t==="vorbis"?"vorbis":t==="flac"?"flac":t==="ac-3"||t==="ac3"?"ac3":t==="ec-3"||t==="eac3"?"eac3":Tm.includes(t)?"dts":t==="ulaw"?"ulaw":t==="alaw"?"alaw":zv.test(t)?t:t==="webvtt"?"webvtt":null,Pq=t=>t==="avc"?{avc:{format:"avc"}}:t==="hevc"?{hevc:{format:"hevc"}}:{},Nq=t=>t==="aac"?{aac:{format:"aac"}}:t==="opus"?{opus:{format:"opus"}}:{},Oq=["avc1","avc3","hev1","hvc1","vp8","vp09","av01",...hc],Iq=/^(avc1|avc3)\.[0-9a-fA-F]{6}$/,Lq=/^(hev1|hvc1)\.(?:[ABC]?\d+)\.[0-9a-fA-F]{1,8}\.[LH]\d+(?:\.[0-9a-fA-F]{1,2}){0,6}$/,Dq=/^vp09(?:\.\d{2}){3}(?:(?:\.\d{2}){5})?$/,Vq=/^av01\.\d\.\d{2}[MH]\.\d{2}(?:\.\d\.\d{3}\.\d{2}\.\d{2}\.\d{2}\.\d)?$/,Uv=(t,e)=>{if(!t)throw new TypeError("Video chunk metadata must be provided.");if(typeof t!="object")throw new TypeError("Video chunk metadata must be an object.");if(!t.decoderConfig)throw new TypeError("Video chunk metadata must include a decoder configuration.");if(typeof t.decoderConfig!="object")throw new TypeError("Video chunk metadata decoder configuration must be an object.");if(typeof t.decoderConfig.codec!="string")throw new TypeError("Video chunk metadata decoder configuration must specify a codec string.");if(!Oq.some(a=>t.decoderConfig.codec.startsWith(a)))throw new TypeError("Video chunk metadata decoder configuration codec string must be a valid video codec string as specified in the Mediabunny Codec Registry.");if(!Number.isInteger(t.decoderConfig.codedWidth)||t.decoderConfig.codedWidth<=0)throw new TypeError("Video chunk metadata decoder configuration must specify a valid codedWidth (positive integer).");if(!Number.isInteger(t.decoderConfig.codedHeight)||t.decoderConfig.codedHeight<=0)throw new TypeError("Video chunk metadata decoder configuration must specify a valid codedHeight (positive integer).");if(t.decoderConfig.displayAspectWidth!==void 0&&(!Number.isInteger(t.decoderConfig.displayAspectWidth)||t.decoderConfig.displayAspectWidth<=0))throw new TypeError("Video chunk metadata decoder configuration displayAspectWidth, when defined, must be a positive integer.");if(t.decoderConfig.displayAspectHeight!==void 0&&(!Number.isInteger(t.decoderConfig.displayAspectHeight)||t.decoderConfig.displayAspectHeight<=0))throw new TypeError("Video chunk metadata decoder configuration displayAspectHeight, when defined, must be a positive integer.");if(t.decoderConfig.displayAspectWidth!==void 0!=(t.decoderConfig.displayAspectHeight!==void 0))throw new TypeError("Video chunk metadata decoder configuration must specify both displayAspectWidth and displayAspectHeight, or neither.");if(t.decoderConfig.description!==void 0&&!Vd(t.decoderConfig.description))throw new TypeError("Video chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.");if(t.decoderConfig.colorSpace!==void 0){const{colorSpace:a}=t.decoderConfig;if(typeof a!="object")throw new TypeError("Video chunk metadata decoder configuration colorSpace, when provided, must be an object.");const n=Object.keys(Id);if(a.primaries!=null&&!n.includes(a.primaries))throw new TypeError(`Video chunk metadata decoder configuration colorSpace primaries, when defined, must be one of ${n.join(", ")}.`);const s=Object.keys(Ld);if(a.transfer!=null&&!s.includes(a.transfer))throw new TypeError(`Video chunk metadata decoder configuration colorSpace transfer, when defined, must be one of ${s.join(", ")}.`);const r=Object.keys(Dd);if(a.matrix!=null&&!r.includes(a.matrix))throw new TypeError(`Video chunk metadata decoder configuration colorSpace matrix, when defined, must be one of ${r.join(", ")}.`);if(a.fullRange!=null&&typeof a.fullRange!="boolean")throw new TypeError("Video chunk metadata decoder configuration colorSpace fullRange, when defined, must be a boolean.")}if(t.decoderConfig.codec.startsWith("avc1")||t.decoderConfig.codec.startsWith("avc3")){if(!Iq.test(t.decoderConfig.codec))throw new TypeError("Video chunk metadata decoder configuration codec string for AVC must be a valid AVC codec string as specified in Section 3.4 of RFC 6381.")}else if(t.decoderConfig.codec.startsWith("hev1")||t.decoderConfig.codec.startsWith("hvc1")){if(!Lq.test(t.decoderConfig.codec))throw new TypeError("Video chunk metadata decoder configuration codec string for HEVC must be a valid HEVC codec string as specified in Section E.3 of ISO 14496-15.")}else if(t.decoderConfig.codec.startsWith("vp8")){if(t.decoderConfig.codec!=="vp8")throw new TypeError('Video chunk metadata decoder configuration codec string for VP8 must be "vp8".')}else if(t.decoderConfig.codec.startsWith("vp09")){if(!Dq.test(t.decoderConfig.codec))throw new TypeError('Video chunk metadata decoder configuration codec string for VP9 must be a valid VP9 codec string as specified in Section "Codecs Parameter String" of https://www.webmproject.org/vp9/mp4/.')}else if(t.decoderConfig.codec.startsWith("av01")){if(!Vq.test(t.decoderConfig.codec))throw new TypeError('Video chunk metadata decoder configuration codec string for AV1 must be a valid AV1 codec string as specified in Section "Codecs Parameter String" of https://aomediacodec.github.io/av1-isobmff/.')}else if(hc.some(a=>t.decoderConfig.codec.startsWith(a))&&!hc.some(a=>t.decoderConfig.codec===a))throw new TypeError(`Video chunk metadata decoder configuration codec string for ProRes must be one of the valid ProRes four-character codes: ${hc.join(", ")}.`);if(e!==null&&Kd(t.decoderConfig.codec)!==e)throw new TypeError(`Video chunk metadata decoder configuration codec string '${t.decoderConfig.codec}' does not fit to the track codec '${e}'.`)},Hq=["mp4a","mp3","opus","vorbis","flac","ulaw","alaw","pcm","ac-3","ec-3","dts"],Bv=(t,e)=>{if(!t)throw new TypeError("Audio chunk metadata must be provided.");if(typeof t!="object")throw new TypeError("Audio chunk metadata must be an object.");if(!t.decoderConfig)throw new TypeError("Audio chunk metadata must include a decoder configuration.");if(typeof t.decoderConfig!="object")throw new TypeError("Audio chunk metadata decoder configuration must be an object.");if(typeof t.decoderConfig.codec!="string")throw new TypeError("Audio chunk metadata decoder configuration must specify a codec string.");if(!Hq.some(a=>t.decoderConfig.codec.startsWith(a)))throw new TypeError("Audio chunk metadata decoder configuration codec string must be a valid audio codec string as specified in the Mediabunny Codec Registry.");if(!Number.isInteger(t.decoderConfig.sampleRate)||t.decoderConfig.sampleRate<=0)throw new TypeError("Audio chunk metadata decoder configuration must specify a valid sampleRate (positive integer).");if(!Number.isInteger(t.decoderConfig.numberOfChannels)||t.decoderConfig.numberOfChannels<=0)throw new TypeError("Audio chunk metadata decoder configuration must specify a valid numberOfChannels (positive integer).");if(t.decoderConfig.description!==void 0&&!Vd(t.decoderConfig.description))throw new TypeError("Audio chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.");if(t.decoderConfig.codec.startsWith("mp4a")&&t.decoderConfig.codec!=="mp4a.69"&&t.decoderConfig.codec!=="mp4a.6B"&&t.decoderConfig.codec!=="mp4a.6b"){if(!["mp4a.40.2","mp4a.40.02","mp4a.40.5","mp4a.40.05","mp4a.40.29","mp4a.67"].includes(t.decoderConfig.codec))throw new TypeError("Audio chunk metadata decoder configuration codec string for AAC must be a valid AAC codec string as specified in https://www.w3.org/TR/webcodecs-aac-codec-registration/.")}else if(t.decoderConfig.codec.startsWith("mp3")||t.decoderConfig.codec.startsWith("mp4a")){if(t.decoderConfig.codec!=="mp3"&&t.decoderConfig.codec!=="mp4a.69"&&t.decoderConfig.codec!=="mp4a.6B"&&t.decoderConfig.codec!=="mp4a.6b")throw new TypeError('Audio chunk metadata decoder configuration codec string for MP3 must be "mp3", "mp4a.69" or "mp4a.6B".')}else if(t.decoderConfig.codec.startsWith("opus")){if(t.decoderConfig.codec!=="opus")throw new TypeError('Audio chunk metadata decoder configuration codec string for Opus must be "opus".');if(t.decoderConfig.description&&t.decoderConfig.description.byteLength<18)throw new TypeError("Audio chunk metadata decoder configuration description, when specified, is expected to be an Identification Header as specified in Section 5.1 of RFC 7845.")}else if(t.decoderConfig.codec.startsWith("vorbis")){if(t.decoderConfig.codec!=="vorbis")throw new TypeError('Audio chunk metadata decoder configuration codec string for Vorbis must be "vorbis".');if(!t.decoderConfig.description)throw new TypeError("Audio chunk metadata decoder configuration for Vorbis must include a description, which is expected to adhere to the format described in https://www.w3.org/TR/webcodecs-vorbis-codec-registration/.")}else if(t.decoderConfig.codec.startsWith("flac")){if(t.decoderConfig.codec!=="flac")throw new TypeError('Audio chunk metadata decoder configuration codec string for FLAC must be "flac".');if(!t.decoderConfig.description||t.decoderConfig.description.byteLength<42)throw new TypeError("Audio chunk metadata decoder configuration for FLAC must include a description, which is expected to adhere to the format described in https://www.w3.org/TR/webcodecs-flac-codec-registration/.")}else if(t.decoderConfig.codec.startsWith("ac-3")||t.decoderConfig.codec.startsWith("ac3")){if(t.decoderConfig.codec!=="ac-3")throw new TypeError('Audio chunk metadata decoder configuration codec string for AC-3 must be "ac-3".')}else if(t.decoderConfig.codec.startsWith("ec-3")||t.decoderConfig.codec.startsWith("eac3")){if(t.decoderConfig.codec!=="ec-3")throw new TypeError('Audio chunk metadata decoder configuration codec string for EC-3 must be "ec-3".')}else if(t.decoderConfig.codec.startsWith("dts")){if(!Tm.includes(t.decoderConfig.codec))throw new TypeError(`Audio chunk metadata decoder configuration codec string for DTS must be one of the following four-character codes: ${Tm.join(", ")}.`)}else if((t.decoderConfig.codec.startsWith("pcm")||t.decoderConfig.codec.startsWith("ulaw")||t.decoderConfig.codec.startsWith("alaw"))&&!Cs.includes(t.decoderConfig.codec))throw new TypeError(`Audio chunk metadata decoder configuration codec string for PCM must be one of the supported PCM codecs (${Cs.join(", ")}).`);if(e!==null&&Kd(t.decoderConfig.codec)!==e)throw new TypeError(`Audio chunk metadata decoder configuration codec string '${t.decoderConfig.codec}' does not fit to the track codec '${e}'.`)},Wq=t=>{if(!t)throw new TypeError("Subtitle metadata must be provided.");if(typeof t!="object")throw new TypeError("Subtitle metadata must be an object.");if(!t.config)throw new TypeError("Subtitle metadata must include a config object.");if(typeof t.config!="object")throw new TypeError("Subtitle metadata config must be an object.");if(typeof t.config.description!="string")throw new TypeError("Subtitle metadata config description must be a string.")};const Rv=new Uint8Array(0);class Ws{constructor(e,a,n,s,r=-1,o,l){if(this.data=e,this.type=a,this.timestamp=n,this.duration=s,this.sequenceNumber=r,e===Rv&&o===void 0)throw new Error("Internal error: byteLength must be explicitly provided when constructing metadata-only packets.");if(o===void 0&&(o=e.byteLength),!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(a!=="key"&&a!=="delta")throw new TypeError('type must be either "key" or "delta".');if(!Number.isFinite(n))throw new TypeError("timestamp must be a number.");if(!Number.isFinite(s)||s<0)throw new TypeError("duration must be a non-negative number.");if(!Number.isFinite(r))throw new TypeError("sequenceNumber must be a number.");if(!Number.isInteger(o)||o<0)throw new TypeError("byteLength must be a non-negative integer.");if(l!==void 0&&(typeof l!="object"||!l))throw new TypeError("sideData, when provided, must be an object.");if(l?.alpha!==void 0&&!(l.alpha instanceof Uint8Array))throw new TypeError("sideData.alpha, when provided, must be a Uint8Array.");if(l?.alphaByteLength!==void 0&&(!Number.isInteger(l.alphaByteLength)||l.alphaByteLength<0))throw new TypeError("sideData.alphaByteLength, when provided, must be a non-negative integer.");this.byteLength=o,this.sideData=l??{},this.sideData.alpha&&this.sideData.alphaByteLength===void 0&&(this.sideData.alphaByteLength=this.sideData.alpha.byteLength)}get isMetadataOnly(){return this.data===Rv}get microsecondTimestamp(){return Math.trunc(Or*this.timestamp)}get microsecondDuration(){return Math.trunc(Or*this.duration)}toEncodedVideoChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if(typeof EncodedVideoChunk>"u")throw new Error("EncodedVideoChunk is not available in this environment.");return new EncodedVideoChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}alphaToEncodedVideoChunk(e=this.type){if(!this.sideData.alpha)throw new TypeError("This packet does not contain alpha side data.");if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if(typeof EncodedVideoChunk>"u")throw new Error("EncodedVideoChunk is not available in this environment.");return new EncodedVideoChunk({data:this.sideData.alpha,type:e,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}toEncodedAudioChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to an audio chunk.");if(typeof EncodedAudioChunk>"u")throw new Error("EncodedAudioChunk is not available in this environment.");return new EncodedAudioChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}static fromEncodedChunk(e,a){if(!(e instanceof EncodedVideoChunk||e instanceof EncodedAudioChunk))throw new TypeError("chunk must be an EncodedVideoChunk or EncodedAudioChunk.");const n=new Uint8Array(e.byteLength);return e.copyTo(n),new Ws(n,e.type,e.timestamp/1e6,(e.duration??0)/1e6,void 0,void 0,a)}clone(e){if(e!==void 0&&(typeof e!="object"||e===null))throw new TypeError("options, when provided, must be an object.");if(e?.data!==void 0&&!(e.data instanceof Uint8Array))throw new TypeError("options.data, when provided, must be a Uint8Array.");if(e?.type!==void 0&&e.type!=="key"&&e.type!=="delta")throw new TypeError('options.type, when provided, must be either "key" or "delta".');if(e?.timestamp!==void 0&&!Number.isFinite(e.timestamp))throw new TypeError("options.timestamp, when provided, must be a number.");if(e?.duration!==void 0&&!Number.isFinite(e.duration))throw new TypeError("options.duration, when provided, must be a number.");if(e?.sequenceNumber!==void 0&&!Number.isFinite(e.sequenceNumber))throw new TypeError("options.sequenceNumber, when provided, must be a number.");if(e?.sideData!==void 0&&(typeof e.sideData!="object"||e.sideData===null))throw new TypeError("options.sideData, when provided, must be an object.");return new Ws(e?.data??this.data,e?.type??this.type,e?.timestamp??this.timestamp,e?.duration??this.duration,e?.sequenceNumber??this.sequenceNumber,this.byteLength,e?.sideData??this.sideData)}}const Qq=t=>{let a=(t.hasVideo?"video/":t.hasAudio?"audio/":"application/")+(t.isQuickTime?"quicktime":"mp4");if(t.codecStrings.length>0){const n=[...new Set(t.codecStrings)];a+=`; codecs="${n.join(", ")}"`}return a};const $m=8,jv=16;const Kq=7,Yq=9,Pv=t=>{const e=t.filePos,a=_G(t,9),n=new Da(a);if(n.readBits(12)!==4095||(n.skipBits(1),n.readBits(2)!==0))return null;const o=n.readBits(1),l=n.readBits(2)+1,u=n.readBits(4);if(u===15)return null;n.skipBits(1);const p=n.readBits(3);if(p===0)throw new Error("ADTS frames with channel configuration 0 are not supported.");n.skipBits(1),n.skipBits(1),n.skipBits(1),n.skipBits(1);const g=n.readBits(13);n.skipBits(11);const h=n.readBits(2)+1;if(h!==1)throw new Error("ADTS frames with more than one AAC frame are not supported.");let m=null;return o===1?t.filePos-=2:m=n.readBits(16),{objectType:l,samplingFrequencyIndex:u,channelConfiguration:p,frameLength:g,numberOfAacFrames:h,crcCheck:m,startPos:e}};var Xq=function(t,e,a){if(e!=null){if(typeof e!="object"&&typeof e!="function")throw new TypeError("Object expected.");var n,s;if(a){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=e[Symbol.asyncDispose]}if(n===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=e[Symbol.dispose],a&&(s=n)}if(typeof n!="function")throw new TypeError("Object not disposable.");s&&(n=function(){try{s.call(this)}catch(r){return Promise.reject(r)}}),t.stack.push({value:e,dispose:n,async:a})}else a&&t.stack.push({async:!0});return e},Jq=(function(t){return function(e){function a(o){e.error=e.hasError?new t(o,e.error,"An error was suppressed during disposal."):o,e.hasError=!0}var n,s=0;function r(){for(;n=e.stack.pop();)try{if(!n.async&&s===1)return s=0,e.stack.push(n),Promise.resolve().then(r);if(n.dispose){var o=n.dispose.call(n.value);if(n.async)return s|=2,Promise.resolve(o).then(r,function(l){return a(l),r()})}else s|=1}catch(l){a(l)}if(s===1)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}return r()}})(typeof SuppressedError=="function"?SuppressedError:function(t,e,a){var n=new Error(a);return n.name="SuppressedError",n.error=t,n.suppressed=e,n});N$();let Nv=-1/0,Ov=-1/0,_c=null;typeof FinalizationRegistry<"u"&&(_c=new FinalizationRegistry(t=>{const e=performance.now();t.type==="video"?(e-Nv>=1e3&&(qa._error("A VideoSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your VideoSamples as soon as you're done using them."),Nv=e),typeof VideoFrame<"u"&&t.data instanceof VideoFrame&&t.data.close()):(e-Ov>=1e3&&(qa._error("An AudioSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your AudioSamples as soon as you're done using them."),Ov=e),typeof AudioData<"u"&&t.data instanceof AudioData&&t.data.close())}));class Fo{constructor(){this._referenceCount=0,this._lastAllocationBuffer=null}}const qm=["I420","I420P10","I420P12","I420A","I420AP10","I420AP12","I422","I422P10","I422P12","I422A","I422AP10","I422AP12","I444","I444P10","I444P12","I444A","I444AP10","I444AP12","NV12","RGBA","RGBX","BGRA","BGRX"],Zq=new Set(qm);class Qn{get codedWidth(){return this.visibleRect.width}get codedHeight(){return this.visibleRect.height}get displayWidth(){return this.rotation%180===0?this.squarePixelWidth:this.squarePixelHeight}get displayHeight(){return this.rotation%180===0?this.squarePixelHeight:this.squarePixelWidth}get microsecondTimestamp(){return Math.trunc(Or*this.timestamp)}get microsecondDuration(){return Math.trunc(Or*this.duration)}get hasAlpha(){return this.format&&this.format.includes("A")}constructor(e,a){if(this._closed=!1,e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer||ArrayBuffer.isView(e)){if(!a||typeof a!="object")throw new TypeError("init must be an object.");if(a.format===void 0||!Zq.has(a.format))throw new TypeError("init.format must be one of: "+qm.join(", "));if(!Number.isInteger(a.codedWidth)||a.codedWidth<=0)throw new TypeError("init.codedWidth must be a positive integer.");if(!Number.isInteger(a.codedHeight)||a.codedHeight<=0)throw new TypeError("init.codedHeight must be a positive integer.");if(a.rotation!==void 0&&![0,90,180,270].includes(a.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(a.flip!==void 0&&typeof a.flip!="boolean")throw new TypeError("init.flip, when provided, must be a boolean.");if(!Number.isFinite(a.timestamp))throw new TypeError("init.timestamp must be a number.");if(a.duration!==void 0&&(!Number.isFinite(a.duration)||a.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if(a.layout!==void 0){if(!Array.isArray(a.layout))throw new TypeError("init.layout, when provided, must be an array.");for(const r of a.layout){if(!r||typeof r!="object"||Array.isArray(r))throw new TypeError("Each entry in init.layout must be an object.");if(!Number.isInteger(r.offset)||r.offset<0)throw new TypeError("plane.offset must be a non-negative integer.");if(!Number.isInteger(r.stride)||r.stride<0)throw new TypeError("plane.stride must be a non-negative integer.")}}if(a.visibleRect!==void 0&&_m(a.visibleRect,"init.visibleRect"),a.displayWidth!==void 0&&(!Number.isInteger(a.displayWidth)||a.displayWidth<=0))throw new TypeError("init.displayWidth, when provided, must be a positive integer.");if(a.displayHeight!==void 0&&(!Number.isInteger(a.displayHeight)||a.displayHeight<=0))throw new TypeError("init.displayHeight, when provided, must be a positive integer.");if(a.displayWidth!==void 0!=(a.displayHeight!==void 0))throw new TypeError("init.displayWidth and init.displayHeight must be either both provided or both omitted.");this.format=a.format,this.rotation=a.rotation??0,this.flip=a.flip??!1,this.timestamp=a.timestamp,this.duration=a.duration??0;const n=a.layout??iG(a.format,a.codedWidth,a.codedHeight);let s=a.colorSpace??null;s===null&&(this.format==="RGBA"||this.format==="RGBX"||this.format==="BGRA"||this.format==="BGRX"?s={primaries:"bt709",transfer:"iec61966-2-1",matrix:"rgb",fullRange:!0}:s={primaries:"bt709",transfer:"bt709",matrix:"bt709",fullRange:!1}),this.visibleRect={left:a.visibleRect?.left??0,top:a.visibleRect?.top??0,width:a.visibleRect?.width??a.codedWidth,height:a.visibleRect?.height??a.codedHeight},a.displayWidth!==void 0?(this.squarePixelWidth=this.rotation%180===0?a.displayWidth:a.displayHeight,this.squarePixelHeight=this.rotation%180===0?a.displayHeight:a.displayWidth):(this.squarePixelWidth=this.visibleRect.width,this.squarePixelHeight=this.visibleRect.height),this._data=a._doNotCopy?_s(e):_s(e).slice(),this._layout=n,this.colorSpace=new Gm(s)}else if(typeof VideoFrame<"u"&&e instanceof VideoFrame){if(a?.rotation!==void 0&&![0,90,180,270].includes(a.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(a?.flip!==void 0&&typeof a.flip!="boolean")throw new TypeError("init.flip, when provided, must be a boolean.");if(a?.timestamp!==void 0&&!Number.isFinite(a?.timestamp))throw new TypeError("init.timestamp, when provided, must be a number.");if(a?.duration!==void 0&&(!Number.isFinite(a.duration)||a.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");a?.visibleRect!==void 0&&_m(a.visibleRect,"init.visibleRect"),this._data=e,this._layout=null,this.format=e.format,this.visibleRect={left:e.visibleRect?.x??0,top:e.visibleRect?.y??0,width:e.visibleRect?.width??e.codedWidth,height:e.visibleRect?.height??e.codedHeight},this.rotation=a?.rotation??0,this.flip=a?.flip??!1,this.squarePixelWidth=e.displayWidth,this.squarePixelHeight=e.displayHeight,this.timestamp=a?.timestamp??e.timestamp/1e6,this.duration=a?.duration??(e.duration??0)/1e6,this.colorSpace=new Gm(e.colorSpace)}else if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof SVGImageElement<"u"&&e instanceof SVGImageElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas){if(!a||typeof a!="object")throw new TypeError("init must be an object.");if(a.rotation!==void 0&&![0,90,180,270].includes(a.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(a.flip!==void 0&&typeof a.flip!="boolean")throw new TypeError("init.flip, when provided, must be a boolean.");if(!Number.isFinite(a.timestamp))throw new TypeError("init.timestamp must be a number.");if(a.duration!==void 0&&(!Number.isFinite(a.duration)||a.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if(a.visibleRect!==void 0&&_m(a.visibleRect,"init.visibleRect"),typeof VideoFrame<"u")return new Qn(new VideoFrame(e,{timestamp:Math.trunc(a.timestamp*Or),duration:Math.trunc((a.duration??0)*Or)||void 0,visibleRect:a.visibleRect&&{x:a.visibleRect.left,y:a.visibleRect.top,width:a.visibleRect.width,height:a.visibleRect.height}}),a);let n=0,s=0;if("naturalWidth"in e?(n=e.naturalWidth,s=e.naturalHeight):"videoWidth"in e?(n=e.videoWidth,s=e.videoHeight):"width"in e&&(n=Number(e.width),s=Number(e.height)),!n||!s)throw new TypeError("Could not determine dimensions.");const r=a.visibleRect??{left:0,top:0,width:n,height:s},o=new OffscreenCanvas(r.width,r.height),l=o.getContext("2d",{alpha:mv(),willReadFrequently:!0});if(!l)throw new Error("OffscreenCanvas must have support for the '2d' context in order to create a VideoSample from this data.");l.drawImage(e,-r.left,-r.top),this._data=o,this._layout=null,this.format="RGBX",this.visibleRect={left:0,top:0,width:r.width,height:r.height},this.squarePixelWidth=r.width,this.squarePixelHeight=r.height,this.rotation=a.rotation??0,this.flip=a.flip??!1,this.timestamp=a.timestamp,this.duration=a.duration??0,this.colorSpace=new Gm({matrix:"rgb",primaries:"bt709",transfer:"iec61966-2-1",fullRange:!0})}else if(e instanceof Fo){if(!a||typeof a!="object")throw new TypeError("init must be an object.");if(a.rotation!==void 0&&![0,90,180,270].includes(a.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(a.flip!==void 0&&typeof a.flip!="boolean")throw new TypeError("init.flip, when provided, must be a boolean.");if(!Number.isFinite(a.timestamp))throw new TypeError("init.timestamp must be a number.");if(a.duration!==void 0&&(!Number.isFinite(a.duration)||a.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if(this._data=e,e._referenceCount++,this.format=e.getFormat(),this.format!==null&&!qm.includes(this.format))throw new TypeError("getFormat() must return a VideoSamplePixelFormat or null.");if(this.visibleRect={left:0,top:0,width:e.getCodedWidth(),height:e.getCodedHeight()},!Number.isInteger(this.visibleRect.width)||this.visibleRect.width<=0)throw new TypeError("getCodedWidth() must return a positive integer.");if(!Number.isInteger(this.visibleRect.height)||this.visibleRect.height<=0)throw new TypeError("getCodedHeight() must return a positive integer.");if(this.squarePixelWidth=e.getSquarePixelWidth(),!Number.isInteger(this.squarePixelWidth)||this.squarePixelWidth<=0)throw new TypeError("getSquarePixelWidth() must return a positive integer.");if(this.squarePixelHeight=e.getSquarePixelHeight(),!Number.isInteger(this.squarePixelHeight)||this.squarePixelHeight<=0)throw new TypeError("getSquarePixelHeight() must return a positive integer.");this.rotation=a.rotation??0,this.flip=a.flip??!1,this.timestamp=a.timestamp,this.duration=a.duration??0,this.colorSpace=e.getColorSpace()}else throw new TypeError("Invalid data type: Must be a BufferSource, CanvasImageSource, or VideoSampleResource.");this.encodeOptions=a?.encodeOptions??{},this.pixelAspectRatio=hv({num:this.squarePixelWidth*this.codedHeight,den:this.squarePixelHeight*this.codedWidth}),_c?.register(this,{type:"video",data:this._data},this)}clone(){if(this._closed)throw new Error("VideoSample is closed.");return Ce(this._data!==null),this._data instanceof Fo?new Qn(this._data,{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip,encodeOptions:this.encodeOptions}):bc(this._data)?new Qn(this._data.clone(),{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip,encodeOptions:this.encodeOptions}):this._data instanceof Uint8Array?(Ce(this._layout),new Qn(this._data,{format:this.format,layout:this._layout,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation,flip:this.flip,visibleRect:this.visibleRect,displayWidth:this.displayWidth,displayHeight:this.displayHeight,encodeOptions:this.encodeOptions,_doNotCopy:!0})):new Qn(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation,flip:this.flip,visibleRect:this.visibleRect,displayWidth:this.displayWidth,displayHeight:this.displayHeight,encodeOptions:this.encodeOptions})}close(){this._closed||(_c?.unregister(this),this._data instanceof Fo?(this._data._referenceCount--,this._data._referenceCount===0&&this._data.close()):bc(this._data)?this._data.close():this._data=null,this._closed=!0)}allocationSize(e={}){if(Vv(e),this._closed)throw new Error("VideoSample is closed.");if((e.format??this.format)==null)throw new Error("Cannot get allocation size when format is null.");return bc(this._data)?this._data.allocationSize(e):Hv(this,e).allocationSize}async copyTo(e,a={}){if(!Vd(e))throw new TypeError("destination must be an ArrayBuffer or an ArrayBuffer view.");if(Vv(a),this._closed)throw new Error("VideoSample is closed.");if((a.format??this.format)==null)throw new Error("Cannot copy video sample data when format is null.");if(Ce(this._data!==null),bc(this._data))return this._data.copyTo(e,a);if(a.format&&!["RGBA","RGBX","BGRA","BGRX"].includes(this.format)&&["RGBA","RGBX","BGRA","BGRX"].includes(a.format))if(this._data instanceof Fo){const p={stack:[],error:void 0,hasError:!1};try{const g=Xq(p,await this._data.toRgbSample({timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip},a.colorSpace??"srgb"),!1);if(!(g instanceof Qn))throw new TypeError("toRgbSample() must return a VideoSample.");if(!["RGBA","RGBX","BGRA","BGRX"].includes(g.format))throw new Error(`Sample returned by toRgbSample was expected to have an RGB format, got '${g.format}' instead.`);return await g.copyTo(e,a)}catch(g){p.error=g,p.hasError=!0}finally{Jq(p)}}else{if(typeof VideoFrame>"u")throw new Error("For this sample, converting from a non-RGB to an RGB format requires VideoFrame to be defined.");const p=this.toVideoFrame(),g=await p.copyTo(e,a);return p.close(),g}const n=Hv(this,a);Ce(this.format);const s=_s(e);if(s.byteLength!(g.data instanceof Uint8Array)||!Number.isInteger(g.stride)||g.stride<0))throw new TypeError('getDataPlanes() must return an array of objects with a Uint8Array "data" property and a non-negative integer "stride" property.');o=p}else if(this._data instanceof Uint8Array)Ce(this._layout),Ce(this._layout.length===r.length),o=this._layout.map((p,g)=>{const h=Math.ceil(this.codedHeight/r[g].heightDivisor);return{data:this._data.subarray(p.offset,p.offset+p.stride*h),stride:p.stride}});else{const g=this._data.getContext("2d");Ce(g);const h=g.getImageData(0,0,this.codedWidth,this.codedHeight);o=[{data:_s(h.data),stride:4*this.codedWidth}]}const l=[],u=r.length;for(let p=0;pm.byteLength)throw new Error("Source buffer OOB read.");if(d+c>s.byteLength)throw new Error("Destination buffer OOB write.");const v=m.subarray(f,f+c);s.set(v,d),f+=h,d+=g.destinationStride}l.push(_)}if(a.format!==void 0){const p=this.format.startsWith("RGB")!==a.format.startsWith("RGB"),g=this.format.includes("X")&&a.format.includes("A");if(p||g)for(let h=0;ho+l.data.byteLength,0),n=new Uint8Array(a);let s=0;const r=[];for(const o of e)n.set(o.data,s),r.push(s),s+=o.data.byteLength;return new VideoFrame(n,{format:this.format,layout:e.map((o,l)=>({offset:r[l],stride:o.stride})),codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration,colorSpace:this.colorSpace,visibleRect:this.visibleRect,displayWidth:this.squarePixelWidth,displayHeight:this.squarePixelHeight})}else return bc(this._data)?new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0}):this._data instanceof Uint8Array?(Ce(this._layout),new VideoFrame(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,layout:this._layout,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0,colorSpace:this.colorSpace,visibleRect:this.visibleRect,displayWidth:this.squarePixelWidth,displayHeight:this.squarePixelHeight})):new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0})}draw(e,a,n,s,r,o,l,u,p){let g=0,h=0,m=this.displayWidth,f=this.displayHeight,d=0,c=0,_=this.displayWidth,b=this.displayHeight;if(o!==void 0?(g=a,h=n,m=s,f=r,d=o,c=l,u!==void 0?(_=u,b=p):(_=m,b=f)):(d=a,c=n,s!==void 0&&(_=s,b=r)),!(typeof CanvasRenderingContext2D<"u"&&e instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<"u"&&e instanceof OffscreenCanvasRenderingContext2D))throw new TypeError("context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.");if(!Number.isFinite(g))throw new TypeError("sx must be a number.");if(!Number.isFinite(h))throw new TypeError("sy must be a number.");if(!Number.isFinite(m)||m<0)throw new TypeError("sWidth must be a non-negative number.");if(!Number.isFinite(f)||f<0)throw new TypeError("sHeight must be a non-negative number.");if(!Number.isFinite(d))throw new TypeError("dx must be a number.");if(!Number.isFinite(c))throw new TypeError("dy must be a number.");if(!Number.isFinite(_)||_<0)throw new TypeError("dWidth must be a non-negative number.");if(!Number.isFinite(b)||b<0)throw new TypeError("dHeight must be a non-negative number.");if(this._closed)throw new Error("VideoSample is closed.");({sx:g,sy:h,sWidth:m,sHeight:f}=this._unmapSourceRegion(g,h,m,f,this.rotation,this.flip));const v=this.toCanvasImageSource();e.save();const w=d+_/2,y=c+b/2;e.translate(w,y),this.flip&&e.scale(-1,1),e.rotate(this.rotation*Math.PI/180);const T=this.rotation%180===0?1:_/b;e.scale(1/T,T),e.drawImage(v,g,h,m,f,-_/2,-b/2,_,b),e.restore()}drawWithFit(e,a){if(!(typeof CanvasRenderingContext2D<"u"&&e instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<"u"&&e instanceof OffscreenCanvasRenderingContext2D))throw new TypeError("context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.");if(!a||typeof a!="object")throw new TypeError("options must be an object.");if(!["fill","contain","cover"].includes(a.fit))throw new TypeError("options.fit must be 'fill', 'contain', or 'cover'.");if(a.rotation!==void 0&&![0,90,180,270].includes(a.rotation))throw new TypeError("options.rotation, when provided, must be 0, 90, 180, or 270.");if(a.flip!==void 0&&typeof a.flip!="boolean")throw new TypeError("options.flip, when provided, must be a boolean.");a.crop!==void 0&&Fm(a.crop,"options.");const n=e.canvas.width,s=e.canvas.height,r=a.rotation??this.rotation,o=a.flip??this.flip,[l,u]=r%180===0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth];let p=a.crop;p&&(p=Dv(p,l,u));let g,h,m,f;const{sx:d,sy:c,sWidth:_,sHeight:b}=this._unmapSourceRegion(a.crop?.left??0,a.crop?.top??0,a.crop?.width??l,a.crop?.height??u,r,o);if(a.fit==="fill")g=0,h=0,m=n,f=s;else{const[w,y]=a.crop?[a.crop.width,a.crop.height]:[l,u],T=a.fit==="contain"?Math.min(n/w,s/y):Math.max(n/w,s/y);m=w*T,f=y*T,g=(n-m)/2,h=(s-f)/2}e.save();const v=r%180===0?1:m/f;e.translate(n/2,s/2),o&&e.scale(-1,1),e.rotate(r*Math.PI/180),e.scale(1/v,v),e.translate(-n/2,-s/2),e.drawImage(this.toCanvasImageSource(),d,c,_,b,g,h,m,f),e.restore()}_unmapSourceRegion(e,a,n,s,r,o){return o&&(e=(r%180===0?this.squarePixelWidth:this.squarePixelHeight)-e-n),r===90?[e,a,n,s]=[a,this.squarePixelHeight-e-n,s,n]:r===180?[e,a]=[this.squarePixelWidth-e-n,this.squarePixelHeight-a-s]:r===270&&([e,a,n,s]=[this.squarePixelWidth-a-s,e,s,n]),{sx:e,sy:a,sWidth:n,sHeight:s}}_drawWithFitAndMipmapping(e,a,n){const s=e.width,r=e.height,[o,l]=n.rotation%180===0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth],u=n.crop?n.crop.width:o,p=n.crop?n.crop.height:l;let g=0;2*s0?Lv(h,m):{canvas:e,context:a,isNew:n.targetIsFresh};d.imageSmoothingQuality="high",n.fillBlack?(d.fillStyle="black",d.fillRect(0,0,h,m)):c||d.clearRect(0,0,h,m),this.drawWithFit(d,{fit:n.fit,rotation:n.rotation,flip:n.flip,crop:n.crop}),d.globalCompositeOperation="copy";for(let _=g;_>1;_--){const b=s*2**_,v=r*2**_;d.drawImage(f,0,0,b,v,0,0,b/2,v/2)}d.globalCompositeOperation="source-over",g>0&&(a.imageSmoothingQuality="high",a.globalCompositeOperation="copy",a.drawImage(f,0,0,2*s,2*r,0,0,s,r),a.globalCompositeOperation="source-over")}toCanvasImageSource(){if(this._closed)throw new Error("VideoSample is closed.");if(Ce(this._data!==null),this._data instanceof Fo||this._data instanceof Uint8Array){const e=this.toVideoFrame();return queueMicrotask(()=>e.close()),e}else return this._data}async transform(e){if(!e||typeof e!="object")throw new TypeError("options must be an object.");if(e.width!==void 0&&(!Number.isInteger(e.width)||e.width<=0))throw new TypeError("options.width, when provided, must be a positive integer.");if(e.height!==void 0&&(!Number.isInteger(e.height)||e.height<=0))throw new TypeError("options.height, when provided, must be a positive integer.");if(e.roundDimensionsTo!==void 0&&(!Number.isInteger(e.roundDimensionsTo)||e.roundDimensionsTo<=0))throw new TypeError("options.roundDimensionsTo, when provided, must be a positive integer.");if(e.fit!==void 0&&!["fill","contain","cover"].includes(e.fit))throw new TypeError('options.fit, when provided, must be one of "fill", "contain", or "cover".');if(e.width!==void 0&&e.height!==void 0&&e.fit===void 0)throw new TypeError("When both options.width and options.height are provided, options.fit must also be provided.");if(e.rotate!==void 0&&![0,90,180,270].includes(e.rotate))throw new TypeError("options.rotate, when provided, must be 0, 90, 180 or 270.");if(e.flip!==void 0&&typeof e.flip!="boolean")throw new TypeError("options.flip, when provided, must be a boolean.");if(e.crop!==void 0&&Fm(e.crop,"options."),e.alpha!==void 0&&!["keep","discard"].includes(e.alpha))throw new TypeError("options.alpha, when provided, must be 'keep' or 'discard'.");const{rotation:a,flip:n}=T$(this.rotation,this.flip,e.rotate??0,e.flip??!1),[s,r]=a%180===0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth];let o=e.crop;o&&(o=Dv(o,s,r));const l=o?o.width:s,u=o?o.height:r,p=l/u;let g,h;e.width!==void 0&&e.height===void 0?(g=e.width,h=g/p):e.width===void 0&&e.height!==void 0?(h=e.height,g=h*p):e.width!==void 0&&e.height!==void 0?(g=e.width,h=e.height):(g=l,h=u),g=cv(g,e.roundDimensionsTo??1),h=cv(h,e.roundDimensionsTo??1);const m={width:g,height:h,fit:e.fit??"fill",rotation:a,flip:n,crop:o??{left:0,top:0,width:s,height:r},alpha:e.alpha??"keep"};for(const _ of eG){let b=_(this,m);if(Ir(b)&&(b=await b),b!==null)return b}const{canvas:f,context:d,isNew:c}=Lv(m.width,m.height);return this._drawWithFitAndMipmapping(f,d,{fit:m.fit,rotation:m.rotation,flip:m.flip,crop:m.crop,targetIsFresh:c,fillBlack:m.alpha==="discard"}),new Qn(f,{timestamp:this.timestamp,duration:this.duration,rotation:0,flip:!1})}setRotation(e){if(![0,90,180,270].includes(e))throw new TypeError("newRotation must be 0, 90, 180, or 270.");this.rotation=e}setFlip(e){if(typeof e!="boolean")throw new TypeError("newFlip must be a boolean.");this.flip=e}setTimestamp(e){if(!Number.isFinite(e))throw new TypeError("newTimestamp must be a number.");this.timestamp=e}setDuration(e){if(!Number.isFinite(e)||e<0)throw new TypeError("newDuration must be a non-negative number.");this.duration=e}setEncodeOptions(e){if(!e||typeof e!="object")throw new TypeError("newEncodeOptions must be an object.");this.encodeOptions=e}[Symbol.dispose](){this.close()}}const eG=[],tG=3,vc=[];let Iv=0;const Lv=(t,e)=>{for(const s of vc)if(s.canvas.width===t&&s.canvas.height===e)return s.age=Iv++,{canvas:s.canvas,context:s.context,isNew:!1};let a;if(typeof OffscreenCanvas<"u")a=new OffscreenCanvas(t,e);else{if(typeof window>"u"||typeof document>"u")throw new Error("Cannot transform VideoSamples in this environment. Either run in an environment with OffscreenCanvas or HTMLCanvasElement, or supply a custom VideoSample transformer using registerVideoSampleTransformer().");a=document.createElement("canvas"),a.width=t,a.height=e}const n=a.getContext("2d",{alpha:!0,willReadFrequently:!1});if(!n)throw new Error("The '2d' canvas context is required to transform VideoSamples. Register a custom transformer using registerVideoSampleTransformer to work around this limitation.");return vc.length>=tG&&vc.splice(I$(vc,s=>s.age),1),vc.push({canvas:a,context:n,age:Iv++}),{canvas:a,context:n,isNew:!0}};class Gm{constructor(e){if(e!==void 0){if(!e||typeof e!="object")throw new TypeError("init.colorSpace, when provided, must be an object.");const a=Object.keys(Id);if(e.primaries!=null&&!a.includes(e.primaries))throw new TypeError(`init.colorSpace.primaries, when provided, must be one of ${a.join(", ")}.`);const n=Object.keys(Ld);if(e.transfer!=null&&!n.includes(e.transfer))throw new TypeError(`init.colorSpace.transfer, when provided, must be one of ${n.join(", ")}.`);const s=Object.keys(Dd);if(e.matrix!=null&&!s.includes(e.matrix))throw new TypeError(`init.colorSpace.matrix, when provided, must be one of ${s.join(", ")}.`);if(e.fullRange!=null&&typeof e.fullRange!="boolean")throw new TypeError("init.colorSpace.fullRange, when provided, must be a boolean.")}this.primaries=e?.primaries??null,this.transfer=e?.transfer??null,this.matrix=e?.matrix??null,this.fullRange=e?.fullRange??null}toJSON(){return{primaries:this.primaries,transfer:this.transfer,matrix:this.matrix,fullRange:this.fullRange}}}const bc=t=>typeof VideoFrame<"u"&&t instanceof VideoFrame,Dv=(t,e,a)=>{const n=Math.min(t.left,e),s=Math.min(t.top,a),r=Math.min(t.width,e-n),o=Math.min(t.height,a-s);return Ce(r>=0),Ce(o>=0),{left:n,top:s,width:r,height:o}},Fm=(t,e)=>{if(!t||typeof t!="object")throw new TypeError(e+"crop, when provided, must be an object.");if(!Number.isInteger(t.left)||t.left<0)throw new TypeError(e+"crop.left must be a non-negative integer.");if(!Number.isInteger(t.top)||t.top<0)throw new TypeError(e+"crop.top must be a non-negative integer.");if(!Number.isInteger(t.width)||t.width<0)throw new TypeError(e+"crop.width must be a non-negative integer.");if(!Number.isInteger(t.height)||t.height<0)throw new TypeError(e+"crop.height must be a non-negative integer.")},Vv=t=>{if(!t||typeof t!="object")throw new TypeError("options must be an object.");if(t.colorSpace!==void 0&&!["display-p3","srgb"].includes(t.colorSpace))throw new TypeError("options.colorSpace, when provided, must be 'display-p3' or 'srgb'.");if(t.format!==void 0&&typeof t.format!="string")throw new TypeError("options.format, when provided, must be a string.");if(t.layout!==void 0){if(!Array.isArray(t.layout))throw new TypeError("options.layout, when provided, must be an array.");for(const e of t.layout){if(!e||typeof e!="object")throw new TypeError("Each entry in options.layout must be an object.");if(!Number.isInteger(e.offset)||e.offset<0)throw new TypeError("plane.offset must be a non-negative integer.");if(!Number.isInteger(e.stride)||e.stride<0)throw new TypeError("plane.stride must be a non-negative integer.")}}if(t.rect!==void 0){if(!t.rect||typeof t.rect!="object")throw new TypeError("options.rect, when provided, must be an object.");if(t.rect.x!==void 0&&(!Number.isInteger(t.rect.x)||t.rect.x<0))throw new TypeError("options.rect.x, when provided, must be a non-negative integer.");if(t.rect.y!==void 0&&(!Number.isInteger(t.rect.y)||t.rect.y<0))throw new TypeError("options.rect.y, when provided, must be a non-negative integer.");if(t.rect.width!==void 0&&(!Number.isInteger(t.rect.width)||t.rect.width<0))throw new TypeError("options.rect.width, when provided, must be a non-negative integer.");if(t.rect.height!==void 0&&(!Number.isInteger(t.rect.height)||t.rect.height<0))throw new TypeError("options.rect.height, when provided, must be a non-negative integer.")}},iG=(t,e,a)=>{const n=Yd(t),s=[];let r=0;for(const o of n){const l=Math.ceil(e/o.widthDivisor),u=Math.ceil(a/o.heightDivisor),p=l*o.sampleBytes,g=p*u;s.push({offset:r,stride:p}),r+=g}return s},Yd=t=>{const e=(a,n,s,r,o)=>{const l=[{sampleBytes:a,widthDivisor:1,heightDivisor:1},{sampleBytes:n,widthDivisor:s,heightDivisor:r},{sampleBytes:n,widthDivisor:s,heightDivisor:r}];return o&&l.push({sampleBytes:a,widthDivisor:1,heightDivisor:1}),l};switch(t){case"I420":return e(1,1,2,2,!1);case"I420P10":case"I420P12":return e(2,2,2,2,!1);case"I420A":return e(1,1,2,2,!0);case"I420AP10":case"I420AP12":return e(2,2,2,2,!0);case"I422":return e(1,1,2,1,!1);case"I422P10":case"I422P12":return e(2,2,2,1,!1);case"I422A":return e(1,1,2,1,!0);case"I422AP10":case"I422AP12":return e(2,2,2,1,!0);case"I444":return e(1,1,1,1,!1);case"I444P10":case"I444P12":return e(2,2,1,1,!1);case"I444A":return e(1,1,1,1,!0);case"I444AP10":case"I444AP12":return e(2,2,1,1,!0);case"NV12":return[{sampleBytes:1,widthDivisor:1,heightDivisor:1},{sampleBytes:2,widthDivisor:2,heightDivisor:2}];case"RGBA":case"RGBX":case"BGRA":case"BGRX":return[{sampleBytes:4,widthDivisor:1,heightDivisor:1}];default:$o(t),Ce(!1)}},Hv=(t,e)=>{const a={left:0,top:0,width:t.codedWidth,height:t.codedHeight},n=e.rect,s=aG(a,n,t.codedWidth,t.codedHeight,t.format),r=e.layout;let o;if(!e.format||e.format===t.format)o=t.format;else if(["RGBA","RGBX","BGRA","BGRX"].includes(e.format))o=e.format;else throw new Error("NotSupportedError: Invalid destination format.");return sG(s,o,r)},aG=(t,e,a,n,s)=>{const r={...t};if(e!==void 0){if(e.width===0||e.height===0)throw new TypeError("visibleRect dimensions cannot be zero.");if((e.x||0)+(e.width||0)>a)throw new TypeError("visibleRect exceeds codedWidth.");if((e.y||0)+(e.height||0)>n)throw new TypeError("visibleRect exceeds codedHeight.");r.x=e.x||0,r.y=e.y||0,r.width=e.width||0,r.height=e.height||0}if(!nG(s,r))throw new TypeError("visibleRect alignment is invalid for the format.");return r},nG=(t,e)=>{if(t===null)return!0;const a=Yd(t);for(let n=0;n{const n=Yd(e),s=n.length;if(a!==void 0&&a.length!==s)throw new TypeError(`Layout must have ${s} planes.`);let r=0;const o=[],l=[];for(let u=0;u4294967295)throw new TypeError("Allocation size exceeds limit.");l.push(c),r=Math.max(r,c);for(let _=0;_ 0.");if(!Number.isInteger(e.numberOfChannels)||e.numberOfChannels===0)throw new TypeError("Invalid AudioDataInit: numberOfChannels must be an integer > 0.");if(!Number.isFinite(e?.timestamp))throw new TypeError("init.timestamp must be a number.");const a=e.data.byteLength/(Lr(e.format)*e.numberOfChannels);if(!Number.isInteger(a))throw new TypeError("Invalid AudioDataInit: data size is not a multiple of frame size.");this.format=e.format,this.sampleRate=e.sampleRate,this.numberOfFrames=a,this.numberOfChannels=e.numberOfChannels,this.timestamp=e.timestamp,this.duration=a/e.sampleRate;let n;if(e.data instanceof ArrayBuffer)n=new Uint8Array(e.data);else if(ArrayBuffer.isView(e.data))n=new Uint8Array(e.data.buffer,e.data.byteOffset,e.data.byteLength);else throw new TypeError("Invalid AudioDataInit: data is not a BufferSource.");const s=this.numberOfFrames*this.numberOfChannels*Lr(this.format);if(n.byteLength=this.numberOfFrames)throw new RangeError("frameOffset out of range");const s=e.frameCount!==void 0?e.frameCount:this.numberOfFrames-n;if(s>this.numberOfFrames-n)throw new RangeError("frameCount out of range");const r=Lr(a),o=Ao(a);if(o&&e.planeIndex>=this.numberOfChannels)throw new RangeError("planeIndex out of range");if(!o&&e.planeIndex!==0)throw new RangeError("planeIndex out of range");return(o?s:s*this.numberOfChannels)*r}copyTo(e,a){if(!Vd(e))throw new TypeError("destination must be an ArrayBuffer or an ArrayBuffer view.");if(!a||typeof a!="object")throw new TypeError("options must be an object.");if(!Number.isInteger(a.planeIndex)||a.planeIndex<0)throw new TypeError("planeIndex must be a non-negative integer.");if(a.format!==void 0&&!Xd.has(a.format))throw new TypeError("Invalid format.");if(a.frameOffset!==void 0&&(!Number.isInteger(a.frameOffset)||a.frameOffset<0))throw new TypeError("frameOffset must be a non-negative integer.");if(a.frameCount!==void 0&&(!Number.isInteger(a.frameCount)||a.frameCount<0))throw new TypeError("frameCount must be a non-negative integer.");if(this._closed)throw new Error("AudioSample is closed.");const{format:n,frameCount:s,frameOffset:r}=a;let{planeIndex:o}=a,l=this.format;const u=n??this.format;if(!u)throw new Error("Destination format not determined");const p=this.numberOfFrames,g=this.numberOfChannels,h=r??0;if(h>=p)throw new RangeError("frameOffset out of range");const m=s!==void 0?s:p-h;if(m>p-h)throw new RangeError("frameCount out of range");const f=Lr(u),d=Ao(u);if(d&&o>=g)throw new RangeError("planeIndex out of range");if(!d&&o!==0)throw new RangeError("planeIndex out of range");const _=(d?m:m*g)*f;if(e.byteLength<_)throw new RangeError("Destination buffer is too small");const b=Ds(e),v=Qv(u);if(wc(this._data))if(R$()&&g>2&&u!==l){oG(this._data,b,l,u,g,o,h,m);return}else try{this._data.copyTo(e,{planeIndex:o,frameOffset:h,frameCount:m,format:u});return}catch($){if(u==="f32-planar")throw $;l="f32-planar"}const w=Wv(l),y=Lr(l),T=Ao(l);let O;if(this._data instanceof yc){const $=P=>{const L=this._data.getDataPlane(P);if(!(L instanceof Uint8Array))throw new TypeError("getDataPlane() must return a Uint8Array.");const x=p*y*(T?1:g);if(L.byteLength!==x)throw new TypeError(`Data plane ${P} has invalid size. Expected exactly ${x} bytes, got ${L.byteLength} bytes.`);return L};if(T)if(d)O=$(o),o=0;else{O=new Uint8Array(p*y*g);for(let P=0;Pthis.numberOfFrames)throw new RangeError("startFrame out of range.");if(a>this.numberOfFrames)throw new RangeError("endFrame out of range.");if(a0)for(let l=0;l0&&this.copyTo(r,{planeIndex:0,format:this.format,frameOffset:e,frameCount:n});return new Kn({data:r,format:this.format,sampleRate:this.sampleRate,numberOfChannels:this.numberOfChannels,timestamp:this.timestamp+e/this.sampleRate})}close(){this._closed||(_c?.unregister(this),this._data instanceof yc?(this._data._referenceCount--,this._data._referenceCount===0&&this._data.close()):wc(this._data)?this._data.close():this._data=new Uint8Array(0),this._closed=!0)}toAudioData(){if(this._closed)throw new Error("AudioSample is closed.");return this._data instanceof yc?this._createAudioDataFromData():wc(this._data)?this._data.timestamp===this.microsecondTimestamp?this._data.clone():this._createAudioDataFromData():new AudioData({format:this.format,sampleRate:this.sampleRate,numberOfFrames:this.numberOfFrames,numberOfChannels:this.numberOfChannels,timestamp:this.microsecondTimestamp,data:this._data.buffer instanceof ArrayBuffer?this._data.buffer:this._data.slice()})}_createAudioDataFromData(){if(Ao(this.format)){const e=this.allocationSize({planeIndex:0,format:this.format}),a=new ArrayBuffer(e*this.numberOfChannels);for(let n=0;n0;){const g=Math.min(l,p),h=new Float32Array(s*g);for(let m=0;m0;){const h=Math.min(l,p),m=new Float32Array(s*h);for(let d=0;d{switch(t){case"u8":case"u8-planar":return 1;case"s16":case"s16-planar":return 2;case"s32":case"s32-planar":return 4;case"f32":case"f32-planar":return 4;default:throw new Error("Unknown AudioSampleFormat")}},Ao=t=>{switch(t){case"u8-planar":case"s16-planar":case"s32-planar":case"f32-planar":return!0;default:return!1}},Wv=t=>{switch(t){case"u8":case"u8-planar":return(e,a)=>(e.getUint8(a)-128)/128;case"s16":case"s16-planar":return(e,a)=>e.getInt16(a,!0)/32768;case"s32":case"s32-planar":return(e,a)=>e.getInt32(a,!0)/2147483648;case"f32":case"f32-planar":return(e,a)=>e.getFloat32(a,!0)}},Qv=t=>{switch(t){case"u8":case"u8-planar":return(e,a,n)=>e.setUint8(a,wn(Math.round(n*128)+128,0,255));case"s16":case"s16-planar":return(e,a,n)=>e.setInt16(a,wn(Math.round(n*32768),-32768,32767),!0);case"s32":case"s32-planar":return(e,a,n)=>e.setInt32(a,wn(Math.round(n*2147483648),-2147483648,2147483647),!0);case"f32":case"f32-planar":return(e,a,n)=>e.setFloat32(a,n,!0)}},wc=t=>typeof AudioData<"u"&&t instanceof AudioData,rG=t=>{switch(t){case"u8-planar":return"u8";case"s16-planar":return"s16";case"s32-planar":return"s32";case"f32-planar":return"f32";default:return t}},oG=(t,e,a,n,s,r,o,l)=>{const u=Wv(a),p=Qv(n),g=Lr(a),h=Lr(n),m=Ao(a);if(Ao(n))if(m){const d=new ArrayBuffer(l*g),c=Ds(d);t.copyTo(d,{planeIndex:r,frameOffset:o,frameCount:l,format:a});for(let _=0;_{const a=t.allocationSize({format:e,planeIndex:0}),n=new ArrayBuffer(a);return t.copyTo(n,{format:e,planeIndex:0}),new Kn({data:n,format:e,numberOfChannels:t.numberOfChannels,sampleRate:t.sampleRate,timestamp:t.timestamp,duration:t.duration})};const Kv=new Map,Yv=new Map,cG=t=>{if(!t||typeof t!="object")throw new TypeError("Encoding config must be an object.");if(!gr.includes(t.codec))throw new TypeError(`Invalid video codec '${t.codec}'. Must be one of: ${gr.join(", ")}.`);const e=t.bitrate;if(t.quality===void 0&&e===void 0)throw new TypeError("config.quality must be provided.");if(t.quality!==void 0&&e!==void 0)throw new TypeError("config.quality and config.bitrate cannot both be provided.");if(t.quality!==void 0&&!(t.quality instanceof On))throw new TypeError("config.quality, when provided, must be a Quality.");if(e!==void 0&&!(e instanceof On)&&(!Number.isInteger(e)||e<=0))throw new TypeError("config.bitrate, when provided, must be a positive integer or a quality.");if(t.keyFrameInterval!==void 0&&(!Number.isFinite(t.keyFrameInterval)||t.keyFrameInterval<0))throw new TypeError("config.keyFrameInterval, when provided, must be a non-negative number.");if(t.sizeChangeBehavior!==void 0&&!["deny","passThrough","fill","contain","cover"].includes(t.sizeChangeBehavior))throw new TypeError("config.sizeChangeBehavior, when provided, must be 'deny', 'passThrough', 'fill', 'contain' or 'cover'.");if(t.transform!==void 0){if(typeof t.transform!="object"||!t.transform)throw new TypeError("config.transform, when provided, must be an object.");if(t.transform.width!==void 0&&(!Number.isInteger(t.transform.width)||t.transform.width<=0))throw new TypeError("config.transform.width, when provided, must be a positive integer.");if(t.transform.height!==void 0&&(!Number.isInteger(t.transform.height)||t.transform.height<=0))throw new TypeError("config.transform.height, when provided, must be a positive integer.");if(t.transform.fit!==void 0&&!["fill","contain","cover"].includes(t.transform.fit))throw new TypeError('config.transform.fit, when provided, must be one of "fill", "contain", or "cover".');if(t.transform.width!==void 0&&t.transform.height!==void 0&&t.transform.fit===void 0&&!["fill","contain","cover"].includes(t.sizeChangeBehavior))throw new TypeError("When both config.transform.width and config.transform.height are provided, config.transform.fit must also be provided.");if(t.transform.fit!==void 0&&["fill","contain","cover"].includes(t.sizeChangeBehavior)&&t.transform.fit!==t.sizeChangeBehavior)throw new TypeError("config.transform.fit, when provided, cannot differ from config.sizeChangeBehavior when config.sizeChangeBehavior is 'fill', 'contain' or 'cover', as sizeChangeBehavior already determines the fitting algorithm.");if(t.transform.rotate!==void 0&&![0,90,180,270].includes(t.transform.rotate))throw new TypeError("config.transform.rotate, when provided, must be 0, 90, 180 or 270.");if(t.transform.flip!==void 0&&typeof t.transform.flip!="boolean")throw new TypeError("config.transform.flip, when provided, must be a boolean.");if(t.transform.crop!==void 0&&Fm(t.transform.crop,"config.transform."),t.transform.process!==void 0&&typeof t.transform.process!="function")throw new TypeError("config.transform.process, when provided, must be a function.");if(t.transform.frameRate!==void 0&&(!Number.isFinite(t.transform.frameRate)||t.transform.frameRate<=0))throw new TypeError("config.transform.frameRate, when provided, must be a finite positive number.");if(t.transform.force!==void 0&&typeof t.transform.force!="boolean")throw new TypeError("config.transform.force, when provided, must be a boolean.")}if(t.onEncodedPacket!==void 0&&typeof t.onEncodedPacket!="function")throw new TypeError("config.onEncodedPacket, when provided, must be a function.");if(t.onEncoderConfig!==void 0&&typeof t.onEncoderConfig!="function")throw new TypeError("config.onEncoderConfig, when provided, must be a function.");if(t.onEncodedSample!==void 0&&typeof t.onEncodedSample!="function")throw new TypeError("config.onEncodedSample, when provided, must be a function.");Xv(t.codec,t)},Xv=(t,e)=>{if(!e||typeof e!="object")throw new TypeError("Encoding options must be an object.");if(e.alpha!==void 0&&!["discard","keep"].includes(e.alpha))throw new TypeError("options.alpha, when provided, must be 'discard' or 'keep'.");const a=e.bitrateMode;if(a!==void 0&&!["constant","variable"].includes(a))throw new TypeError("bitrateMode, when provided, must be 'constant' or 'variable'.");if(e.latencyMode!==void 0&&!["quality","realtime"].includes(e.latencyMode))throw new TypeError("latencyMode, when provided, must be 'quality' or 'realtime'.");if(e.fullCodecString!==void 0&&typeof e.fullCodecString!="string")throw new TypeError("fullCodecString, when provided, must be a string.");if(e.fullCodecString!==void 0&&Kd(e.fullCodecString)!==t)throw new TypeError(`fullCodecString, when provided, must be a string that matches the specified codec (${t}).`);if(e.hardwareAcceleration!==void 0&&!["no-preference","prefer-hardware","prefer-software"].includes(e.hardwareAcceleration))throw new TypeError("hardwareAcceleration, when provided, must be 'no-preference', 'prefer-hardware' or 'prefer-software'.");if(e.scalabilityMode!==void 0&&typeof e.scalabilityMode!="string")throw new TypeError("scalabilityMode, when provided, must be a string.");if(e.contentHint!==void 0&&typeof e.contentHint!="string")throw new TypeError("contentHint, when provided, must be a string.")},Jv=t=>{const e=t.bitrateMode,a=t.quality._toVideoRateControl(t.codec,t.width,t.height,e),n=(r,o,l)=>({codec:t.fullCodecString??Bq(t.codec,t.width,t.height,l,t.alpha==="keep"),width:t.width,height:t.height,displayWidth:t.squarePixelWidth,displayHeight:t.squarePixelHeight,bitrate:r,bitrateMode:o,alpha:t.alpha??"discard",framerate:t.framerate,latencyMode:t.latencyMode,hardwareAcceleration:t.hardwareAcceleration,scalabilityMode:t.scalabilityMode,contentHint:t.contentHint,...Pq(t.codec)}),s=[];return a.quantizer!==null&&s.push({config:n(void 0,"quantizer",a.bitrate),quantizer:a.quantizer}),a.bitrateMode!=="quantizer"&&s.push({config:n(a.bitrate,a.bitrateMode,a.bitrate),quantizer:null}),Ce(s.length>0),s},dG=t=>{if(!t||typeof t!="object")throw new TypeError("Encoding config must be an object.");if(!qo.includes(t.codec))throw new TypeError(`Invalid audio codec '${t.codec}'. Must be one of: ${qo.join(", ")}.`);const e=t.bitrate;if(t.quality===void 0&&e===void 0&&!(Cs.includes(t.codec)||t.codec==="flac"))throw new TypeError("config.quality must be provided for compressed audio codecs.");if(t.quality!==void 0&&e!==void 0)throw new TypeError("config.quality and config.bitrate cannot both be provided.");if(t.quality!==void 0&&!(t.quality instanceof On))throw new TypeError("config.quality, when provided, must be a Quality.");if(e!==void 0&&!(e instanceof On)&&(!Number.isInteger(e)||e<=0))throw new TypeError("config.bitrate, when provided, must be a positive integer or a quality.");if(t.transform!==void 0){if(typeof t.transform!="object"||!t.transform)throw new TypeError("config.transform, when provided, must be an object.");if(t.transform.numberOfChannels!==void 0&&(!Number.isInteger(t.transform.numberOfChannels)||t.transform.numberOfChannels<=0))throw new TypeError("config.transform.numberOfChannels, when provided, must be a positive integer.");if(t.transform.sampleRate!==void 0&&(!Number.isInteger(t.transform.sampleRate)||t.transform.sampleRate<=0))throw new TypeError("config.transform.sampleRate, when provided, must be a positive integer.");if(t.transform.sampleFormat!==void 0&&!["u8","s16","s32","f32"].includes(t.transform.sampleFormat))throw new TypeError("config.transform.sampleFormat, when provided, must be one of: u8, s16, s32, f32.");if(t.transform.process!==void 0&&typeof t.transform.process!="function")throw new TypeError("config.transform.process, when provided, must be a function.")}if(t.onEncodedPacket!==void 0&&typeof t.onEncodedPacket!="function")throw new TypeError("config.onEncodedPacket, when provided, must be a function.");if(t.onEncoderConfig!==void 0&&typeof t.onEncoderConfig!="function")throw new TypeError("config.onEncoderConfig, when provided, must be a function.");if(t.onEncodedSample!==void 0&&typeof t.onEncodedSample!="function")throw new TypeError("config.onEncodedSample, when provided, must be a function.");Zv(t.codec,t)},Zv=(t,e)=>{if(!e||typeof e!="object")throw new TypeError("Encoding options must be an object.");const a=e.bitrateMode;if(a!==void 0&&!["constant","variable"].includes(a))throw new TypeError("bitrateMode, when provided, must be 'constant' or 'variable'.");if(e.fullCodecString!==void 0&&typeof e.fullCodecString!="string")throw new TypeError("fullCodecString, when provided, must be a string.");if(e.fullCodecString!==void 0&&Kd(e.fullCodecString)!==t)throw new TypeError(`fullCodecString, when provided, must be a string that matches the specified codec (${t}).`)},eb=t=>{const e=t.bitrateMode;return{codec:t.fullCodecString??jq(t.codec,t.numberOfChannels,t.sampleRate),numberOfChannels:t.numberOfChannels,sampleRate:t.sampleRate,bitrate:t.quality?._toAudioBitrate(t.codec),bitrateMode:t.quality?._bitrateMode??e,...Nq(t.codec)}};class On{constructor(e){if((typeof e=="number"||typeof e=="string")&&(e={quality:e}),!e||typeof e!="object")throw new TypeError("options must be an object.");if(e.bitrateMode!==void 0&&!["constant","variable"].includes(e.bitrateMode))throw new TypeError("options.bitrateMode, when provided, must be 'constant' or 'variable'.");if("quality"in e){if(typeof e.quality=="string"?!(e.quality in tb):typeof e.quality!="number"||Number.isNaN(e.quality))throw new TypeError("options.quality must be a number, or one of 'very-low', 'low', 'medium', 'high' or 'very-high'.");if(e.preferBitrate!==void 0&&typeof e.preferBitrate!="boolean")throw new TypeError("options.preferBitrate, when provided, must be a boolean.");if("bitrate"in e||"quantizer"in e)throw new TypeError("options.quality cannot be combined with options.bitrate or options.quantizer.");this._quality=typeof e.quality=="string"?tb[e.quality]:e.quality,this._preferBitrate=e.preferBitrate??!1,this._bitrate=void 0,this._quantizer=void 0}else{if(e.bitrate!==void 0&&(!Number.isInteger(e.bitrate)||e.bitrate<=0))throw new TypeError("options.bitrate, when provided, must be a positive integer.");if(e.quantizer!==void 0&&(!Number.isInteger(e.quantizer)||e.quantizer<0))throw new TypeError("options.quantizer, when provided, must be a non-negative integer.");if(e.bitrate===void 0&&e.quantizer===void 0)throw new TypeError("At least one of options.bitrate or options.quantizer must be set.");if("preferBitrate"in e)throw new TypeError("options.preferBitrate can only be combined with options.quality.");this._quality=void 0,this._preferBitrate=!1,this._bitrate=e.bitrate,this._quantizer=e.quantizer}this._bitrateMode=e.bitrateMode}_toVideoRateControl(e,a,n,s){const r=uG[e];let o=null,l=this._bitrateMode??s??"variable";if(this._quantizer!==void 0){if(r)if(this._quantizerr.max){if(this._bitrate===void 0)throw new Error(`Quantizer ${this._quantizer} is out of range for codec '${e}'; must be between ${r.min} and ${r.max}.`)}else o=this._quantizer,this._bitrate===void 0&&(l="quantizer");else if(this._bitrate===void 0)throw new Error(`Codec '${e}' does not support quantizer-based encoding. Provide a bitrate in the Quality to define a fallback.`)}else this._bitrate===void 0&&r&&!this._preferBitrate&&(Ce(this._quality!==void 0),o=wn(Math.round(C$(r.worst,r.best,this._quality)),r.min,r.max));let u;if(this._bitrate!==void 0)u=this._bitrate;else{let p=this._quality;p===void 0&&(Ce(o!==null&&r),p=wn((o-r.worst)/(r.best-r.worst),0,1)),u=ib(e,a,n,Am(p))}return{quantizer:o,bitrate:u,bitrateMode:l}}_toVideoBitrate(e,a,n){return this._bitrate!==void 0?this._bitrate:(Ce(this._quality!==void 0),ib(e,a,n,Am(this._quality)))}_toAudioBitrate(e){if(Cs.includes(e)||e==="flac")return;if(this._bitrate!==void 0)return this._bitrate;if(this._quality===void 0)throw new Error("This Quality defines neither a quality level nor a bitrate and therefore cannot be used for audio encoding.");const a=Am(this._quality),s={aac:128e3,opus:64e3,mp3:16e4,vorbis:64e3,ac3:384e3,eac3:192e3,dts:768e3}[e];if(!s)throw new Error(`Unhandled codec: ${e}`);let r=s*a;return e==="aac"?r=[96e3,128e3,16e4,192e3].reduce((l,u)=>Math.abs(u-r)Math.abs(u-r).3*Math.exp(2.5538*t),ib=(t,e,a,n)=>{const s=e*a,r=1920*1080,o=3e6,l=Math.pow(s/r,.95),u=o*l,p={avc:1,hevc:.6,vp9:.6,av1:.4,vp8:1.2,prores:22e7/o},h=u*p[t]*n;return Math.ceil(h/1e3)*1e3},ab=(t,e)=>{if(t==="avc")return{avc:{quantizer:e}};if(t==="hevc")return{hevc:{quantizer:e}};if(t==="vp9")return{vp9:{quantizer:e}};if(t==="av1")return{av1:{quantizer:e}};Ce(!1)},fG=async(t,e={})=>{const{width:a=1280,height:n=720,quality:s,bitrate:r,frameRate:o,...l}=e;if(!gr.includes(t))return!1;if(!Number.isInteger(a)||a<=0)throw new TypeError("width must be a positive integer.");if(!Number.isInteger(n)||n<=0)throw new TypeError("height must be a positive integer.");if(s!==void 0&&!(s instanceof On))throw new TypeError("quality, when provided, must be a Quality.");if(s!==void 0&&r!==void 0)throw new TypeError("quality and bitrate cannot both be provided.");if(r!==void 0&&!(r instanceof On)&&(!Number.isInteger(r)||r<=0))throw new TypeError("bitrate must be a positive integer or a quality.");if(o!==void 0&&(!Number.isFinite(o)||o<=0))throw new TypeError("frameRate, when provided, must be a finite positive number.");Xv(t,l);const u=Jd(s,r)??new On("medium");let p;try{p=Jv({codec:t,width:a,height:n,quality:u,framerate:o,...l,alpha:"discard"})}catch{return!1}const g=JSON.stringify(p),h=Kv.get(g);if(h)return h;const m=(async()=>{for(const{config:d}of p)if(nb.some(c=>c.supports(t,d)))return!0;if(typeof VideoEncoder>"u"||(a%2===1||n%2===1)&&t==="avc")return!1;for(const{config:d,quantizer:c}of p){try{if(!(await VideoEncoder.isConfigSupported(d)).supported)continue}catch{continue}if(!mv()||await new Promise(async b=>{try{const v=new VideoEncoder({output:()=>{},error:()=>b(!1)});v.configure(d);const w=new Uint8Array(a*n*4),y=new VideoFrame(w,{format:"RGBA",codedWidth:a,codedHeight:n,timestamp:0});v.encode(y,c!==null?ab(t,c):void 0),y.close(),await v.flush(),b(!0)}catch{b(!1)}}))return!0}return!1})();return Kv.set(g,m),m},mG=async(t,e={})=>{const{numberOfChannels:a=2,sampleRate:n=48e3,quality:s,bitrate:r,...o}=e;if(!qo.includes(t))return!1;if(!Number.isInteger(a)||a<=0)throw new TypeError("numberOfChannels must be a positive integer.");if(!Number.isInteger(n)||n<=0)throw new TypeError("sampleRate must be a positive integer.");if(s!==void 0&&!(s instanceof On))throw new TypeError("quality, when provided, must be a Quality.");if(s!==void 0&&r!==void 0)throw new TypeError("quality and bitrate cannot both be provided.");if(r!==void 0&&!(r instanceof On)&&(!Number.isInteger(r)||r<=0))throw new TypeError("bitrate must be a positive integer.");Zv(t,o);const l=Jd(s,r)??new On("medium"),u=eb({codec:t,numberOfChannels:a,sampleRate:n,quality:l,...o}),p=JSON.stringify(u),g=Yv.get(p);if(g)return g;const h=(async()=>{if(sb.some(m=>m.supports(t,u))||Cs.includes(t))return!0;if(typeof AudioEncoder>"u")return!1;try{return(await AudioEncoder.isConfigSupported(u)).supported===!0}catch{return!1}})();return Yv.set(p,h),h},Jd=(t,e)=>{if(t!==void 0)return t;if(e!==void 0)return e instanceof On?e:new On({bitrate:e})};const nb=[],sb=[];const pG=t=>{let n=t>>2,s=4096,r=0,o=12,l=0;for(n<0&&(n=-n,r=128),n+=33,n>8191&&(n=8191);(n&s)!==s&&o>=5;)s>>=1,o--;return l=n>>o-4&15,~(r|o-5<<4|l)&255},gG=t=>{let a=2048,n=0,s=11,r=0,o=t>>3;for(o<0?o=-o-1:n=128,o>4095&&(o=4095);(o&a)!==a&&s>=5;)a>>=1,s--;return r=o>>(s===4?1:s-4)&15,(n|s-4<<4|r)^85};class kc{constructor(e,a,n,s,r){this.bytes=e,this.view=a,this.offset=n,this.start=s,this.end=r,this.bufferPos=s-n}static tempFromBytes(e){return new kc(e,Ds(e),0,0,e.length)}get length(){return this.end-this.start}get filePos(){return this.offset+this.bufferPos}set filePos(e){this.bufferPos=e-this.offset}get remainingLength(){return Math.max(this.end-this.filePos,0)}skip(e){this.bufferPos+=e}slice(e,a=this.end-e){if(ethis.end)throw new RangeError("Slicing outside of original slice.");return new kc(this.bytes,this.view,this.offset,e,e+a)}}const hG=(t,e)=>{if(t.filePost.end)throw new RangeError(`Tried reading [${t.filePos}, ${t.filePos+e}), but slice is [${t.start}, ${t.end}). This is likely an internal error, please report it alongside the file that caused it.`)},_G=(t,e)=>{hG(t,e);const a=t.bytes.subarray(t.bufferPos,t.bufferPos+e);return t.bufferPos+=e,a};class vG{constructor(e){this.mutex=new rv,this.trackTimestampInfo=new WeakMap,this.output=e}onTrackClose(e){}validateTimestamp(e,a,n){let s=this.trackTimestampInfo.get(e);if(s){if(n&&(s.maxTimestampBeforeLastKeyPacket=s.maxTimestamp),s.maxTimestampBeforeLastKeyPacket!==null&&a/g,bG=t=>{const e=Math.floor(t/36e5),a=Math.floor(t%(3600*1e3)/(60*1e3)),n=Math.floor(t%(60*1e3)/1e3),s=t%1e3;return e.toString().padStart(2,"0")+":"+a.toString().padStart(2,"0")+":"+n.toString().padStart(2,"0")+"."+s.toString().padStart(3,"0")};class Zd{constructor(e){this.writer=e,this.helper=new Uint8Array(8),this.helperView=new DataView(this.helper.buffer),this.offsets=new WeakMap}writeU32(e){this.helperView.setUint32(0,e,!1),this.writer.write(this.helper.subarray(0,4))}writeU64(e){this.helperView.setUint32(0,Math.floor(e/2**32),!1),this.helperView.setUint32(4,e,!1),this.writer.write(this.helper.subarray(0,8))}writeAscii(e){for(let a=0;a[(t%256+256)%256],kt=t=>(bs.setUint16(0,t,!1),[Jt[0],Jt[1]]),Cm=t=>(bs.setInt16(0,t,!1),[Jt[0],Jt[1]]),ob=t=>(bs.setUint32(0,t,!1),[Jt[1],Jt[2],Jt[3]]),Ne=t=>(bs.setUint32(0,t,!1),[Jt[0],Jt[1],Jt[2],Jt[3]]),Qs=t=>(bs.setInt32(0,t,!1),[Jt[0],Jt[1],Jt[2],Jt[3]]),Ms=t=>(bs.setUint32(0,Math.floor(t/2**32),!1),bs.setUint32(4,t,!1),[Jt[0],Jt[1],Jt[2],Jt[3],Jt[4],Jt[5],Jt[6],Jt[7]]),lb=t=>(bs.setInt32(0,Math.floor(t/2**32),!1),bs.setUint32(4,t,!1),[Jt[0],Jt[1],Jt[2],Jt[3],Jt[4],Jt[5],Jt[6],Jt[7]]),cb=t=>(bs.setInt16(0,2**8*t,!1),[Jt[0],Jt[1]]),ys=t=>(bs.setInt32(0,2**16*t,!1),[Jt[0],Jt[1],Jt[2],Jt[3]]),Mm=t=>(bs.setInt32(0,2**30*t,!1),[Jt[0],Jt[1],Jt[2],Jt[3]]),Em=(t,e)=>{const a=[];let n=t;do{let s=n&127;n>>=7,a.length>0&&(s|=128),a.push(s)}while(n>0||e);return a.reverse()},Wi=(t,e=!1)=>{const a=Array(t.length).fill(null).map((n,s)=>t.charCodeAt(s));return e&&a.push(0),a},db=t=>[ys(t[0]),ys(t[1]),Mm(t[2]),ys(t[3]),ys(t[4]),Mm(t[5]),ys(t[6]),ys(t[7]),Mm(t[8])],ht=(t,e,a)=>({type:t,contents:e&&new Uint8Array(e.flat(10)),children:a}),xi=(t,e,a,n,s)=>ht(t,[ya(e),ob(a),n??[]],s),yG=t=>t.isQuickTime?ht("ftyp",[Wi("qt "),Ne(512),Wi("qt ")]):t.fragmented?t.cmaf?ht("ftyp",[Wi("iso5"),Ne(512),Wi("iso5"),Wi("iso6"),Wi("mp41"),Wi("cmfc"),Wi("dash")]):ht("ftyp",[Wi("iso5"),Ne(512),Wi("iso5"),Wi("iso6"),Wi("mp41")]):ht("ftyp",[Wi("isom"),Ne(512),Wi("isom"),t.holdsAvc?Wi("avc1"):[],Wi("mp41")]),ub=()=>ht("styp",[Wi("iso5"),Ne(0),Wi("iso5"),Wi("iso6"),Wi("mp41"),Wi("cmfc"),Wi("dash")]),fb=(t,e)=>{const a=Math.max(0,t.minWrittenTimestamp);let n=Math.max(0,t.maxWrittenEndTimestamp-a);return Number.isFinite(n)||(n=0),xi("sidx",1,0,[Ne(1),Ne(Yn),Ms(ea(a,Yn)),Ms(0),kt(0),kt(1),Ne(e&2147483647),Ne(ea(n,Yn)),Ne(0)])},eu=t=>({type:"mdat",largeSize:t}),wG=t=>({type:"free",size:t}),xc=t=>ht("moov",void 0,[kG(t.creationTime,t.trackDatas),...t.trackDatas.map(e=>xG(e,t.creationTime)),t.isFragmented?r7(t.trackDatas):null,b7(t)]),kG=(t,e)=>{const a=Math.max(0,...e.map(o=>Math.max(0,ea(vl(o),Yn)+ea(o.startTimestampOffset??0,Yn)))),n=Math.max(0,...e.map(o=>o.track.id))+1,s=!fr(t)||!fr(a),r=s?Ms:Ne;return xi("mvhd",+s,0,[r(t),r(t),Ne(Yn),r(a),ys(1),cb(1),Array(10).fill(0),db(nv),Array(24).fill(0),Ne(n)])},xG=(t,e)=>{const a=A7(t),n=t.startTimestampOffset!==null&&t.startTimestampOffset!==0;return ht("trak",void 0,[SG(t,e),n?TG(t):null,$G(t,e),a.name!==void 0?ht("udta",void 0,[ht("name",[...Vs.encode(a.name)])]):null])},SG=(t,e)=>{const a=Math.max(0,ea(vl(t),Yn)+ea(t.startTimestampOffset??0,Yn)),n=!fr(e)||!fr(a),s=n?Ms:Ne;let r;if(t.type==="video"&&t.track.metadata.transformationMatrix)r=t.track.metadata.transformationMatrix;else if(t.type==="video"){const{rotation:u,flip:p}=t.track.metadata,g=fm(x$(u??0),S$(p?-1:1,1));r=k$(g,t.info.width,t.info.height)}else r=nv;let o=2;t.track.metadata.disposition?.default!==!1&&(o|=1);const l=t.type==="video"?0:t.type==="audio"?1:t.type==="subtitle"?2:$o(t);return xi("tkhd",+n,o,[s(e),s(e),Ne(t.track.id),Ne(0),s(a),Array(8).fill(0),kt(0),kt(l),cb(t.type==="audio"?1:0),kt(0),db(r),ys(t.type==="video"?t.info.width:0),ys(t.type==="video"?t.info.height:0)])},TG=t=>{const e=t.startTimestampOffset;if(Ce(e!==null),e>0){const a=ea(e,Yn),n=ea(vl(t),Yn),s=!fr(a)||!fr(n),r=s?Ms:Ne,o=s?lb:Qs;return ht("edts",void 0,[xi("elst",s?1:0,0,[Ne(2),r(a),o(-1),ys(1),r(n),o(0),ys(1)])])}else{const a=ea(-e,t.timescale),n=Math.max(0,ea(vl(t),Yn)+ea(e,Yn)),s=!$$(a)||!fr(n),r=s?Ms:Ne,o=s?lb:Qs;return ht("edts",void 0,[xi("elst",s?1:0,0,[Ne(1),r(n),o(a),ys(1)])])}},$G=(t,e)=>ht("mdia",void 0,[qG(t,e),zm(!0,GG[t.type],FG[t.type]),AG(t)]),qG=(t,e)=>{const a=ea(vl(t),t.timescale),n=!fr(e)||!fr(a),s=n?Ms:Ne;return xi("mdhd",+n,0,[s(e),s(e),Ne(t.timescale),s(a),kt(bb(t.track.metadata.languageCode??M$)),kt(0)])},GG={video:"vide",audio:"soun",subtitle:"text"},FG={video:"MediabunnyVideoHandler",audio:"MediabunnySoundHandler",subtitle:"MediabunnyTextHandler"},zm=(t,e,a,n="\0\0\0\0")=>xi("hdlr",0,0,[t?Wi("mhlr"):Ne(0),Wi(e),Wi(n),Ne(0),Ne(0),Wi(a,!0)]),AG=t=>ht("minf",void 0,[CG[t.type](),MG(),UG(t)]),CG={video:()=>xi("vmhd",0,1,[kt(0),kt(0),kt(0),kt(0)]),audio:()=>xi("smhd",0,0,[kt(0),kt(0)]),subtitle:()=>xi("nmhd",0,0)},MG=()=>ht("dinf",void 0,[EG()]),EG=()=>xi("dref",0,0,[Ne(1)],[zG()]),zG=()=>xi("url ",0,1),UG=t=>{const e=t.compositionTimeOffsetTable.length>1||t.compositionTimeOffsetTable.some(a=>a.sampleCompositionTimeOffset!==0);return ht("stbl",void 0,[BG(t),ZG(t),e?n7(t):null,e?s7(t):null,t7(t),i7(t),a7(t),e7(t)])},BG=t=>{let e;if(t.type==="video")e=RG(x7(t.track.source._codec,t.info.decoderConfig.codec),t);else if(t.type==="audio"){const a=vb(t.track.source._codec,t.info.decoderConfig.codec,t.muxer.isQuickTime);Ce(a),e=LG(a,t)}else t.type==="subtitle"&&(e=XG($7[t.track.source._codec],t));return Ce(e),xi("stsd",0,0,[Ne(1)],[e])},RG=(t,e)=>ht(t,[Array(6).fill(0),kt(1),kt(0),kt(0),Array(12).fill(0),kt(e.info.width),kt(e.info.height),Ne(4718592),Ne(4718592),Ne(0),kt(1),ya(10),Wi("Mediabunny"),Array(21).fill(0),kt(e.info.hasAlphaChannel?32:24),Cm(65535)],[S7[e.track.source._codec]?.(e)??null,jG(e),G$(e.info.decoderConfig.colorSpace)?null:PG(e),Um(e)]),Um=t=>t.avgBitrate===0&&t.maxBitrate===0?null:ht("btrt",[Ne(0),Ne(t.maxBitrate),Ne(t.avgBitrate)]),jG=t=>t.info.pixelAspectRatio.num===t.info.pixelAspectRatio.den?null:ht("pasp",[Ne(t.info.pixelAspectRatio.num),Ne(t.info.pixelAspectRatio.den)]),PG=t=>{const e=t.info.decoderConfig.colorSpace;return ht("colr",[Wi(t.muxer.isQuickTime?"nclc":"nclx"),kt(e?.primaries!=null?Id[e.primaries]:2),kt(e?.transfer!=null?Ld[e.transfer]:2),kt(e?.matrix!=null?Dd[e.matrix]:2),t.muxer.isQuickTime?[]:ya((e?.fullRange?1:0)<<7)])},NG=t=>t.info.decoderConfig&&ht("avcC",[..._s(t.info.decoderConfig.description)]),OG=t=>t.info.decoderConfig&&ht("hvcC",[..._s(t.info.decoderConfig.description)]),mb=t=>{if(!t.info.decoderConfig)return null;const e=t.info.decoderConfig,a=e.codec.split("."),n=Number(a[1]),s=Number(a[2]),r=Number(a[3]),o=a[4]?Number(a[4]):1,l=a[8]?Number(a[8]):Number(e.colorSpace?.fullRange??0),u=(r<<4)+(o<<1)+l,p=a[5]?Number(a[5]):e.colorSpace?.primaries?Id[e.colorSpace.primaries]:1,g=a[6]?Number(a[6]):e.colorSpace?.transfer?Ld[e.colorSpace.transfer]:1,h=a[7]?Number(a[7]):e.colorSpace?.matrix?Dd[e.colorSpace.matrix]:1;return xi("vpcC",1,0,[ya(n),ya(s),ya(u),ya(p),ya(g),ya(h),kt(0)])},IG=t=>ht("av1C",Rq(t.info.decoderConfig.codec)),LG=(t,e)=>{let a=0,n,s=16;const r=Cs.includes(e.track.source._codec);if(r){const o=e.track.source._codec,{sampleSize:l}=Go(o);s=8*l,s>16&&(a=1)}if(e.muxer.isQuickTime&&(a=1),a===0)n=[Array(6).fill(0),kt(1),kt(a),kt(0),Ne(0),kt(e.info.numberOfChannels),kt(s),kt(0),kt(0),kt(e.info.sampleRate<2**16?e.info.sampleRate:0),kt(0)];else{const o=r?0:-2;n=[Array(6).fill(0),kt(1),kt(a),kt(0),Ne(0),kt(e.info.numberOfChannels),kt(Math.min(s,16)),Cm(o),kt(0),kt(e.info.sampleRate<2**16?e.info.sampleRate:0),kt(0),r?[Ne(1),Ne(s/8),Ne(e.info.numberOfChannels*s/8)]:[Ne(0),Ne(0),Ne(0)],Ne(2)]}return ht(t,n,[T7(e.track.source._codec,e.muxer.isQuickTime)?.(e)??null,Um(e)])},Bm=t=>{let e;switch(t.track.source._codec){case"aac":e=64;break;case"mp3":e=107;break;case"vorbis":e=221;break;default:throw new Error(`Unhandled audio codec: ${t.track.source._codec}`)}let a=[...ya(e),...ya(21),...ob(0),...Ne(t.maxBitrate),...Ne(t.avgBitrate)];if(t.info.decoderConfig.description){const n=_s(t.info.decoderConfig.description);a=[...a,...ya(5),...Em(n.byteLength),...n]}return a=[...kt(1),...ya(0),...ya(4),...Em(a.length),...a,...ya(6),...ya(1),...ya(2)],a=[...ya(3),...Em(a.length),...a],xi("esds",0,0,a)},Dr=t=>ht("wave",void 0,[DG(t),VG(t),ht("\0\0\0\0")]),DG=t=>ht("frma",[Wi(vb(t.track.source._codec,t.info.decoderConfig.codec,t.muxer.isQuickTime))]),VG=t=>{const{littleEndian:e}=Go(t.track.source._codec);return ht("enda",[kt(+e)])},HG=t=>{let e=t.info.numberOfChannels,a=3840,n=t.info.sampleRate,s=0,r=0,o=new Uint8Array(0);const l=t.info.decoderConfig?.description;if(l){Ce(l.byteLength>=18);const u=_s(l),p=mq(u);e=p.outputChannelCount,a=p.preSkip,n=p.inputSampleRate,s=p.outputGain,r=p.channelMappingFamily,p.channelMappingTable&&(o=p.channelMappingTable)}return ht("dOps",[ya(0),ya(e),kt(a),Ne(n),Cm(s),ya(r),...o])},WG=t=>{const e=t.info.decoderConfig?.description;Ce(e);const a=_s(e);return xi("dfLa",0,0,[...a.subarray(4)])},Ks=t=>{const{littleEndian:e,sampleSize:a}=Go(t.track.source._codec),n=+e;return xi("pcmC",0,0,[ya(n),ya(8*a)])},QG=t=>{Ce(t.info.primingPacket);const e=gq(t.info.primingPacket.data);if(!e)throw new Error("Couldn't extract AC-3 frame info from the audio packet. Ensure the packets contain valid AC-3 sync frames (as specified in ETSI TS 102 366).");const a=new Uint8Array(3),n=new Da(a);return n.writeBits(2,e.fscod),n.writeBits(5,e.bsid),n.writeBits(3,e.bsmod),n.writeBits(3,e.acmod),n.writeBits(1,e.lfeon),n.writeBits(5,e.bitRateCode),n.writeBits(5,0),ht("dac3",[...a])},KG=t=>{Ce(t.info.primingPacket);const e=_q(t.info.primingPacket.data);if(!e)throw new Error("Couldn't extract E-AC-3 frame info from the audio packet. Ensure the packets contain valid E-AC-3 sync frames (as specified in ETSI TS 102 366).");let a=16;for(const o of e.substreams)a+=23,o.numDepSub>0?a+=9:a+=1;const n=Math.ceil(a/8),s=new Uint8Array(n),r=new Da(s);r.writeBits(13,e.dataRate),r.writeBits(3,e.substreams.length-1);for(const o of e.substreams)r.writeBits(2,o.fscod),r.writeBits(5,o.bsid),r.writeBits(1,0),r.writeBits(1,0),r.writeBits(3,o.bsmod),r.writeBits(3,o.acmod),r.writeBits(1,o.lfeon),r.writeBits(3,0),r.writeBits(4,o.numDepSub),o.numDepSub>0?r.writeBits(9,o.chanLoc):r.writeBits(1,0);return ht("dec3",[...s])},YG=t=>{Ce(t.info.primingPacket);const e=Cq(t.info.primingPacket.data);if(!e)throw new Error("Couldn't extract DTS frame info from the audio packet. Ensure the packets contain valid DTS frames as specified in ETSI TS 102 114.");return ht("ddts",[...zq(e)])},XG=(t,e)=>ht(t,[Array(6).fill(0),kt(1)],[q7[e.track.source._codec](e),Um(e)]),JG=t=>ht("vttC",[...Vs.encode(t.info.config.description)]),ZG=t=>xi("stts",0,0,[Ne(t.timeToSampleTable.length),t.timeToSampleTable.map(e=>[Ne(e.sampleCount),Ne(e.sampleDelta)])]),e7=t=>{if(t.samples.every(a=>a.type==="key"))return null;const e=[...t.samples.entries()].filter(([,a])=>a.type==="key");return xi("stss",0,0,[Ne(e.length),e.map(([a])=>Ne(a+1))])},t7=t=>xi("stsc",0,0,[Ne(t.compactlyCodedChunkTable.length),t.compactlyCodedChunkTable.map(e=>[Ne(e.firstChunk),Ne(e.samplesPerChunk),Ne(1)])]),i7=t=>{if(t.type==="audio"&&t.info.requiresPcmTransformation){const{sampleSize:e}=Go(t.track.source._codec);return xi("stsz",0,0,[Ne(e*t.info.numberOfChannels),Ne(t.samples.reduce((a,n)=>a+ea(n.duration,t.timescale),0))])}return xi("stsz",0,0,[Ne(0),Ne(t.samples.length),t.samples.map(e=>Ne(e.size))])},a7=t=>t.finalizedChunks.length>0&&As(t.finalizedChunks).offset>=2**32?xi("co64",0,0,[Ne(t.finalizedChunks.length),t.finalizedChunks.map(e=>Ms(e.offset))]):xi("stco",0,0,[Ne(t.finalizedChunks.length),t.finalizedChunks.map(e=>Ne(e.offset))]),n7=t=>xi("ctts",1,0,[Ne(t.compositionTimeOffsetTable.length),t.compositionTimeOffsetTable.map(e=>[Ne(e.sampleCount),Qs(e.sampleCompositionTimeOffset)])]),s7=t=>{let e=1/0,a=-1/0,n=1/0,s=-1/0;Ce(t.compositionTimeOffsetTable.length>0),Ce(t.samples.length>0);for(let o=0;o=2**31?null:xi("cslg",0,0,[Qs(r),Qs(e),Qs(a),Qs(n),Qs(s)])},r7=t=>ht("mvex",void 0,t.map(o7)),o7=t=>xi("trex",0,0,[Ne(t.track.id),Ne(1),Ne(0),Ne(0),Ne(0)]),pb=(t,e)=>ht("moof",void 0,[l7(t),...e.map(c7)]),l7=t=>xi("mfhd",0,0,[Ne(t)]),gb=t=>{let e=0,a=0;const n=0,s=0,r=t.type==="delta";return a|=+r,r?e|=1:e|=2,e<<24|a<<16|n<<8|s},c7=t=>ht("traf",void 0,[d7(t),u7(t),f7(t)]),d7=t=>{Ce(t.currentChunk);let e=0;e|=8,e|=16,e|=32,e|=131072;const a=t.currentChunk.samples[1]??t.currentChunk.samples[0],n={duration:a.timescaleUnitsToNextSample,size:a.size,flags:gb(a)};return xi("tfhd",0,e,[Ne(t.track.id),Ne(n.duration),Ne(n.size),Ne(n.flags)])},u7=t=>(Ce(t.currentChunk),xi("tfdt",1,0,[Ms(ea(t.currentChunk.startTimestamp,t.timescale))])),f7=t=>{Ce(t.currentChunk);const e=t.currentChunk.samples.map(c=>c.timescaleUnitsToNextSample),a=t.currentChunk.samples.map(c=>c.size),n=t.currentChunk.samples.map(gb),s=t.currentChunk.samples.map(c=>ea(c.timestamp-c.decodeTimestamp,t.timescale)),r=new Set(e),o=new Set(a),l=new Set(n),u=new Set(s),p=l.size===2&&n[0]!==n[1],g=r.size>1,h=o.size>1,m=!p&&l.size>1,f=u.size>1||[...u].some(c=>c!==0);let d=0;return d|=1,d|=4*+p,d|=256*+g,d|=512*+h,d|=1024*+m,d|=2048*+f,xi("trun",1,d,[Ne(t.currentChunk.samples.length),Ne(t.currentChunk.offset-t.currentChunk.moofOffset||0),p?Ne(n[0]):[],t.currentChunk.samples.map((c,_)=>[g?Ne(e[_]):[],h?Ne(a[_]):[],m?Ne(n[_]):[],f?Qs(s[_]):[]])])},m7=t=>ht("mfra",void 0,[...t.map(p7),g7()]),p7=t=>xi("tfra",1,0,[Ne(t.track.id),Ne(63),Ne(t.finalizedChunks.length),t.finalizedChunks.map(a=>[Ms(ea(a.samples[0].timestamp,t.timescale)),Ms(a.moofOffset),Ne(a.trafIndex+1),Ne(1),Ne(1)])]),g7=()=>xi("mfro",0,0,[Ne(0)]),h7=()=>ht("vtte"),_7=(t,e,a,n,s)=>ht("vttc",void 0,[s!==null?ht("vsid",[Qs(s)]):null,a!==null?ht("iden",[...Vs.encode(a)]):null,e!==null?ht("ctim",[...Vs.encode(bG(e))]):null,n!==null?ht("sttg",[...Vs.encode(n)]):null,ht("payl",[...Vs.encode(t)])]),v7=t=>ht("vtta",[...Vs.encode(t)]),b7=t=>{const e=[],a=t.format._options.metadataFormat??"auto",n=t.output._metadataTags;if(a==="mdir"||a==="auto"&&!t.isQuickTime){const s=w7(n);s&&e.push(s)}else if(a==="mdta"){const s=k7(n);s&&e.push(s)}else(a==="udta"||a==="auto"&&t.isQuickTime)&&y7(e,t.output._metadataTags);return e.length===0?null:ht("udta",void 0,e)},y7=(t,e)=>{for(const{key:a,value:n}of gv(e))switch(a){case"title":t.push(Ys("©nam",n));break;case"description":t.push(Ys("©des",n));break;case"artist":t.push(Ys("©ART",n));break;case"album":t.push(Ys("©alb",n));break;case"albumArtist":t.push(Ys("albr",n));break;case"genre":t.push(Ys("©gen",n));break;case"date":t.push(Ys("©day",n.toISOString().slice(0,10)));break;case"comment":t.push(Ys("©cmt",n));break;case"lyrics":t.push(Ys("©lyr",n));break;case"raw":break;case"discNumber":case"discsTotal":case"trackNumber":case"tracksTotal":case"beatsPerMinute":case"images":break;default:$o(a)}if(e.raw)for(const a in e.raw){const n=e.raw[a];n==null||a.length!==4||t.some(s=>s.type===a)||(typeof n=="string"?t.push(Ys(a,n)):n instanceof Uint8Array&&t.push(ht(a,Array.from(n))))}},Ys=(t,e)=>{const a=Vs.encode(e);return ht(t,[kt(a.length),kt(bb("und")),Array.from(a)])},hb={"image/jpeg":13,"image/png":14,"image/bmp":27},_b=(t,e)=>{const a=[];for(const{key:n,value:s}of gv(t))switch(n){case"title":a.push({key:e?"title":"©nam",value:Es(s)});break;case"description":a.push({key:e?"description":"©des",value:Es(s)});break;case"artist":a.push({key:e?"artist":"©ART",value:Es(s)});break;case"album":a.push({key:e?"album":"©alb",value:Es(s)});break;case"albumArtist":a.push({key:e?"album_artist":"aART",value:Es(s)});break;case"comment":a.push({key:e?"comment":"©cmt",value:Es(s)});break;case"genre":a.push({key:e?"genre":"©gen",value:Es(s)});break;case"beatsPerMinute":e||a.push({key:"tmpo",value:ht("data",[Ne(21),Ne(0),kt(s)])});break;case"lyrics":a.push({key:e?"lyrics":"©lyr",value:Es(s)});break;case"date":a.push({key:e?"date":"©day",value:Es(s.toISOString().slice(0,10))});break;case"images":for(const r of s)r.kind==="coverFront"&&a.push({key:"covr",value:ht("data",[Ne(hb[r.mimeType]??0),Ne(0),Array.from(r.data)])});break;case"trackNumber":if(e){const r=t.tracksTotal!==void 0?`${s}/${t.tracksTotal}`:s.toString();a.push({key:"track",value:Es(r)})}else a.push({key:"trkn",value:ht("data",[Ne(0),Ne(0),kt(0),kt(s),kt(t.tracksTotal??0),kt(0)])});break;case"discNumber":e||a.push({key:"disc",value:ht("data",[Ne(0),Ne(0),kt(0),kt(s),kt(t.discsTotal??0),kt(0)])});break;case"tracksTotal":case"discsTotal":break;case"raw":break;default:$o(n)}if(t.raw)for(const n in t.raw){const s=t.raw[n];s==null||!e&&n.length!==4||a.some(r=>r.key===n)||(typeof s=="string"?a.push({key:n,value:Es(s)}):s instanceof Uint8Array?a.push({key:n,value:ht("data",[Ne(0),Ne(0),Array.from(s)])}):s instanceof vv&&a.push({key:n,value:ht("data",[Ne(hb[s.mimeType]??0),Ne(0),Array.from(s.data)])}))}return a},w7=t=>{const e=_b(t,!1);return e.length===0?null:xi("meta",0,0,void 0,[zm(!1,"mdir","","appl"),ht("ilst",void 0,e.map(a=>ht(a.key,void 0,[a.value])))])},k7=t=>{const e=_b(t,!0);return e.length===0?null:ht("meta",void 0,[zm(!1,"mdta",""),xi("keys",0,0,[Ne(e.length)],e.map(a=>ht("mdta",[...Vs.encode(a.key)]))),ht("ilst",void 0,e.map((a,n)=>{const s=String.fromCharCode(...Ne(n+1));return ht(s,void 0,[a.value])}))])},Es=t=>ht("data",[Ne(1),Ne(0),...Vs.encode(t)]),x7=(t,e)=>{switch(t){case"avc":return e.startsWith("avc3")?"avc3":"avc1";case"hevc":return"hvc1";case"vp8":return"vp08";case"vp9":return"vp09";case"av1":return"av01";case"prores":return e}},S7={avc:NG,hevc:OG,vp8:mb,vp9:mb,av1:IG,prores:null},vb=(t,e,a)=>{switch(t){case"aac":return"mp4a";case"mp3":return"mp4a";case"opus":return"Opus";case"vorbis":return"mp4a";case"flac":return"fLaC";case"ulaw":return"ulaw";case"alaw":return"alaw";case"pcm-u8":return"raw ";case"pcm-s8":return"sowt";case"ac3":return"ac-3";case"eac3":return"ec-3";case"dts":return e}if(a)switch(t){case"pcm-s16":return"sowt";case"pcm-s16be":return"twos";case"pcm-s24":return"in24";case"pcm-s24be":return"in24";case"pcm-s32":return"in32";case"pcm-s32be":return"in32";case"pcm-f32":return"fl32";case"pcm-f32be":return"fl32";case"pcm-f64":return"fl64";case"pcm-f64be":return"fl64"}else switch(t){case"pcm-s16":return"ipcm";case"pcm-s16be":return"ipcm";case"pcm-s24":return"ipcm";case"pcm-s24be":return"ipcm";case"pcm-s32":return"ipcm";case"pcm-s32be":return"ipcm";case"pcm-f32":return"fpcm";case"pcm-f32be":return"fpcm";case"pcm-f64":return"fpcm";case"pcm-f64be":return"fpcm"}},T7=(t,e)=>{switch(t){case"aac":return Bm;case"mp3":return Bm;case"opus":return HG;case"vorbis":return Bm;case"flac":return WG;case"ac3":return QG;case"eac3":return KG;case"dts":return YG}if(e)switch(t){case"pcm-s24":return Dr;case"pcm-s24be":return Dr;case"pcm-s32":return Dr;case"pcm-s32be":return Dr;case"pcm-f32":return Dr;case"pcm-f32be":return Dr;case"pcm-f64":return Dr;case"pcm-f64be":return Dr}else switch(t){case"pcm-s16":return Ks;case"pcm-s16be":return Ks;case"pcm-s24":return Ks;case"pcm-s24be":return Ks;case"pcm-s32":return Ks;case"pcm-s32be":return Ks;case"pcm-f32":return Ks;case"pcm-f32be":return Ks;case"pcm-f64":return Ks;case"pcm-f64be":return Ks}return null},$7={webvtt:"wvtt"},q7={webvtt:JG},bb=t=>{Ce(t.length===3);let e=0;for(let a=0;a<3;a++)e<<=5,e+=t.charCodeAt(a)-96;return e};class Rm{constructor(e,a){if(this.finalized=!1,this.started=!1,this.pos=0,this.trackedWrites=null,this.trackedStart=-1,this.trackedEnd=-1,e._writerAcquired)throw new Error("Can't have multiple Writers for the same Target.");this.target=e,e._setMonotonicity(a),e._writerAcquired=!0}start(){Ce(!this.started),this.target._start(),this.started=!0}write(e){Ce(this.started&&!this.finalized),this.maybeTrackWrites(e),this.target._write(e,this.pos),this.pos+=e.byteLength}seek(e){this.pos=e}getPos(){return this.pos}async flush(){return Ce(this.started&&!this.finalized),this.target._flush()}async finalize(){Ce(this.started&&!this.finalized),await this.target._finalize(),this.finalized=!0}maybeTrackWrites(e){if(!this.trackedWrites)return;let a=this.getPos();if(aPm)throw new Error(`ArrayBuffer exceeded maximum size of ${Pm} bytes. Please consider using another target.`);if(this._supportsResize)this._buffer.resize(a);else{const n=new ArrayBuffer(a),s=new Uint8Array(n);s.set(this._bytes,0),this._buffer=n,this._bytes=s}}}_start(){}_write(e,a){this._ensureSize(a+e.byteLength),this._bytes.set(e,a),this._maxPos=Math.max(this._maxPos,a+e.byteLength),this._dispatchWrite(a,a+e.byteLength)}async _flush(){}async _finalize(){this.buffer=this._buffer.slice(0,this._maxPos),this._options.onFinalize&&await this._options.onFinalize(this.buffer),this._emit("finalized")}async _close(){}_getSlice(e,a){return this._bytes.slice(e,a)}}class G7 extends hr{constructor(e,a){super(),this._baseTarget=e,this._offset=a}_start(){}_write(e,a){this._baseTarget._write(e,this._offset+a),this._dispatchWrite(a,a+e.byteLength)}_flush(){return this._baseTarget._flush()}async _finalize(){this._emit("finalized")}async _close(){}_setMonotonicity(e){super._setMonotonicity(e),this._baseTarget._setMonotonicity(e)}}class Nm{constructor(e,a){if(this.rootPath=e,this.getTarget=a,typeof e!="string")throw new TypeError("rootPath must be a string.");if(typeof a!="function")throw new TypeError("getTarget must be a function.")}}const Yn=57600,F7=2082844800,A7=t=>{const e={},a=t.track;return a.metadata.name!==void 0&&(e.name=a.metadata.name),e},ea=(t,e,a=!0)=>{const n=t*e;return a?Math.round(n):n},vl=t=>{if(t.samples.length===0)return 0;let e=1/0,a=-1/0;for(let n=0;na&&(a=s.timestamp+s.duration)}return e===1/0?0:a-e};class C7 extends vG{constructor(e,a){super(e),this.writer=null,this.boxWriter=null,this.initWriter=null,this.initBoxWriter=null,this.auxTarget=new tu,this.auxWriter=new Rm(this.auxTarget,!1),this.auxBoxWriter=new Zd(this.auxWriter),this.mdat=null,this.ftypSize=null,this.trackDatas=[],this.allTracksKnown=lv(),this.creationTime=Math.floor(Date.now()/1e3)+F7,this.finalizedChunks=[],this.wroteFragmentedHeader=!1,this.nextFragmentNumber=1,this.maxWrittenTimestamp=-1/0,this.minWrittenTimestamp=1/0,this.maxWrittenEndTimestamp=-1/0,this.segmentHeaderSize=null,this.format=a,this.formatOptions={...a._options},this.isQuickTime=a instanceof $b,this.isCmaf=a instanceof Tb,this.minimumFragmentDuration=this.formatOptions.minimumFragmentDuration??(a instanceof Tb?1/0:1),this.auxWriter.start()}async start(){const e=await this.mutex.acquire();if(this.isCmaf?(this.fastStart="fragmented",this.isFragmented=!0):(this.writer=await this.output._getRootWriter(n=>this.formatOptions.fastStart!==void 0?this.formatOptions.fastStart==="fragmented":n instanceof tu),this.boxWriter=new Zd(this.writer),this.fastStart=this.formatOptions.fastStart??(this.writer.target instanceof tu?"in-memory":!1),this.isFragmented=this.fastStart==="fragmented"),this.isCmaf){if(!this.output._hasInitTarget())throw new Error("CMAF outputs require the initTarget field in OutputOptions to be set; the init segment will be written to it.");const n=await this.output._getInitTarget(),s=new Rm(n,!0);s.start(),this.initWriter=s,this.initBoxWriter=new Zd(s)}const a=this.output.tracks.some(n=>n.isVideoTrack()&&n.source._codec==="avc");{const n=this.initBoxWriter??this.boxWriter;if(Ce(n),this.formatOptions.onFtyp&&n.writer.startTrackingWrites(),n.writeBox(yG({isQuickTime:this.isQuickTime,holdsAvc:a,fragmented:this.isFragmented,cmaf:this.isCmaf})),this.formatOptions.onFtyp){const{data:s,start:r}=n.writer.stopTrackingWrites();this.formatOptions.onFtyp(s,r)}this.ftypSize=n.writer.getPos(),this.isCmaf&&await this.initWriter.flush()}if(this.fastStart!=="in-memory")if(this.fastStart==="reserve"){for(const n of this.output.tracks)if(n.metadata.maximumPacketCount===void 0)throw new Error("All tracks must specify maximumPacketCount in their metadata when using fastStart: 'reserve'.")}else this.isFragmented||(Ce(this.writer),Ce(this.boxWriter),this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat=eu(!0),this.boxWriter.writeBox(this.mdat));await this.writer?.flush();for(const n of this.output.tracks)n.isVideoTrack()&&n.metadata.decoderConfig?this.getVideoTrackData(n,n.metadata.primingPacket??null,{decoderConfig:n.metadata.decoderConfig}):n.isAudioTrack()&&n.metadata.decoderConfig&&this.getAudioTrackData(n,n.metadata.primingPacket??null,{decoderConfig:n.metadata.decoderConfig});e()}allTracksAreKnown(){for(const e of this.output.tracks)if(!e.source._closed&&!this.trackDatas.some(a=>a.track===e))return!1;return!0}async getMimeType(){await this.allTracksKnown.promise;const e=this.trackDatas.map(a=>a.type==="video"||a.type==="audio"?a.info.decoderConfig.codec:{webvtt:"wvtt"}[a.track.source._codec]);return Qq({isQuickTime:this.isQuickTime,hasVideo:this.trackDatas.some(a=>a.type==="video"),hasAudio:this.trackDatas.some(a=>a.type==="audio"),codecStrings:e})}getVideoTrackData(e,a,n){const s=this.trackDatas.find(f=>f.track===e);if(s)return s;Uv(n,e.source._codec),Ce(n),Ce(n.decoderConfig);const r={...n.decoderConfig};Ce(r.codedWidth!==void 0),Ce(r.codedHeight!==void 0);let o=!1;if(e.source._codec==="avc"&&!r.description){if(!a)throw new Error("No AVC description provided; you must therefore provide a priming packet.");const f=Z$(a.data);if(!f)throw new Error("Couldn't extract an AVCDecoderConfigurationRecord from the AVC packet. Make sure the packets are in Annex B format (as specified in ITU-T-REC-H.264) when not providing a description, or provide a description (must be an AVCDecoderConfigurationRecord as specified in ISO 14496-15) and ensure the packets are in AVCC format.");r.description=eq(f),o=!0}else if(e.source._codec==="hevc"&&!r.description){if(!a)throw new Error("No HEVC description provided; you must therefore provide a priming packet.");const f=nq(a.data);if(!f)throw new Error("Couldn't extract an HEVCDecoderConfigurationRecord from the HEVC packet. Make sure the packets are in Annex B format (as specified in ITU-T-REC-H.265) when not providing a description, or provide a description (must be an HEVCDecoderConfigurationRecord as specified in ISO 14496-15) and ensure the packets are in HEVC format.");r.description=uq(f),o=!0}const l=B$(1/(e.metadata.frameRate??Yn),1e6).den,u=r.displayAspectWidth,p=r.displayAspectHeight,g=u===void 0||p===void 0?{num:1,den:1}:hv({num:u*r.codedHeight,den:p*r.codedWidth}),h=r.codec==="ap4h"||r.codec==="ap4x",m={muxer:this,track:e,type:"video",info:{width:r.codedWidth,height:r.codedHeight,pixelAspectRatio:g,decoderConfig:r,requiresAnnexBTransformation:o,hasAlphaChannel:h},timescale:l,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:e.source._nominalBitrate??e.metadata.averageBitrate??0,maxBitrate:e.source._nominalBitrate??e.metadata.bitrate??0};return this.trackDatas.push(m),this.trackDatas.sort((f,d)=>f.track.id-d.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),m}getAudioTrackData(e,a,n){const s=this.trackDatas.find(u=>u.track===e);if(s)return s;Bv(n,e.source._codec),Ce(n),Ce(n.decoderConfig);const r={...n.decoderConfig};let o=!1;if(e.source._codec==="aac"&&!r.description){if(!a)throw new Error("No AAC description provided; you must therefore provide a priming packet.");const u=Pv(kc.tempFromBytes(a.data));if(!u)throw new Error("Couldn't parse ADTS header from the AAC packet. Make sure the packets are in ADTS format (as specified in ISO 13818-7) when not providing a description, or provide a description (must be an AudioSpecificConfig as specified in ISO 14496-3) and ensure the packets are raw AAC data.");const p=Hd[u.samplingFrequencyIndex],g=bm[u.channelConfiguration];if(p===void 0||g===void 0)throw new Error("Invalid ADTS frame header.");r.description=bv({objectType:u.objectType,outputSampleRate:p,outputNumberOfChannels:g}),o=!0}if(!a){if(e.source._codec==="ac3"||e.source._codec==="eac3")throw new Error("AC-3/E-AC-3 require a priming packet.");if(e.source._codec==="dts")throw new Error("DTS requires a priming packet.")}const l={muxer:this,track:e,type:"audio",info:{numberOfChannels:n.decoderConfig.numberOfChannels,sampleRate:n.decoderConfig.sampleRate,decoderConfig:r,requiresPcmTransformation:!this.isFragmented&&Cs.includes(e.source._codec),expectedNextPcmPacketTimestamp:null,requiresAdtsStripping:o,primingPacket:a},timescale:r.sampleRate,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:e.source._nominalBitrate??e.metadata.averageBitrate??0,maxBitrate:e.source._nominalBitrate??e.metadata.bitrate??0};return this.trackDatas.push(l),this.trackDatas.sort((u,p)=>u.track.id-p.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),l}getSubtitleTrackData(e,a){const n=this.trackDatas.find(r=>r.track===e);if(n)return n;Wq(a),Ce(a),Ce(a.config);const s={muxer:this,track:e,type:"subtitle",info:{config:a.config},timescale:1e3,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:e.source._nominalBitrate??e.metadata.averageBitrate??0,maxBitrate:e.source._nominalBitrate??e.metadata.bitrate??0,lastCueEndTimestamp:null,cueQueue:[],nextSourceId:0,cueToSourceId:new WeakMap};return this.trackDatas.push(s),this.trackDatas.sort((r,o)=>r.track.id-o.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),s}async addEncodedVideoPacket(e,a,n){const s=await this.mutex.acquire();try{const r=this.getVideoTrackData(e,a,n);let o=a.data;if(r.info.requiresAnnexBTransformation){const u=[...pc(o)].map(p=>o.subarray(p.offset,p.offset+p.length));if(u.length===0)throw new Error("Failed to transform packet data. Make sure all packets are provided in Annex B format, as specified in ITU-T-REC-H.264 and ITU-T-REC-H.265.");o=J$(u,4)}this.validateTimestamp(r.track,a.timestamp,a.type==="key");const l=this.createSampleForTrack(r,o,a.timestamp,a.duration,a.type);await this.registerSample(r,l)}finally{s()}}async addEncodedAudioPacket(e,a,n){const s=await this.mutex.acquire();try{const r=this.getAudioTrackData(e,a,n);let o=a.data;if(r.info.requiresAdtsStripping){const g=Pv(kc.tempFromBytes(o));if(!g)throw new Error("Expected ADTS frame, didn't get one.");const h=g.crcCheck===null?Kq:Yq;o=o.subarray(h)}this.validateTimestamp(r.track,a.timestamp,a.type==="key");let l=a.timestamp,u=a.duration;if(r.info.requiresPcmTransformation){const h=Go(r.info.decoderConfig.codec).sampleSize*r.info.numberOfChannels;if(u=o.byteLength/h/r.info.sampleRate,r.info.expectedNextPcmPacketTimestamp!==null){const m=l-r.info.expectedNextPcmPacketTimestamp;if(m<.01)l=r.info.expectedNextPcmPacketTimestamp;else{const f=await this.padWithSilence(r,r.info.expectedNextPcmPacketTimestamp,m);l=r.info.expectedNextPcmPacketTimestamp+f}}r.info.expectedNextPcmPacketTimestamp=l+u}const p=this.createSampleForTrack(r,o,l,u,a.type);await this.registerSample(r,p)}finally{s()}}async padWithSilence(e,a,n){const s=ea(n,e.timescale);if(n=s/e.timescale,s>0){const{sampleSize:r,silentValue:o}=Go(e.info.decoderConfig.codec),l=s*e.info.numberOfChannels,u=new Uint8Array(r*l).fill(o),p=this.createSampleForTrack(e,new Uint8Array(u.buffer),a,n,"key");await this.registerSample(e,p)}return n}async addSubtitleCue(e,a,n){const s=await this.mutex.acquire();try{const r=this.getSubtitleTrackData(e,n);this.validateTimestamp(r.track,a.timestamp,!0),e.source._codec==="webvtt"&&(r.cueQueue.push(a),await this.processWebVTTCues(r,a.timestamp))}finally{s()}}async processWebVTTCues(e,a){for(;e.cueQueue.length>0;){e.lastCueEndTimestamp??=Math.min(0,e.cueQueue[0].timestamp);const n=new Set([]);for(const p of e.cueQueue)Ce(p.timestamp<=a),Ce(e.lastCueEndTimestamp<=p.timestamp+p.duration),n.add(Math.max(p.timestamp,e.lastCueEndTimestamp)),n.add(p.timestamp+p.duration);const s=[...n].sort((p,g)=>p-g),r=s[0],o=s[1]??r;if(a=o)break;rb.lastIndex=0;const h=rb.test(g.text),m=g.timestamp+g.duration;let f=e.cueToSourceId.get(g);if(f===void 0&&os.timestamp).sort((s,r)=>s-r);this.isFragmented?e.startTimestampOffset??=Math.min(n[0],0):e.startTimestampOffset??=n[0];for(let s=0;s=0),e.lastTimescaleUnits+=p,e.lastSample.timescaleUnitsToNextSample=p,!this.isFragmented){let g=As(e.timeToSampleTable);if(Ce(g),g.sampleCount===1){g.sampleDelta=p;const m=e.timeToSampleTable[e.timeToSampleTable.length-2];m&&m.sampleDelta===p&&(m.sampleCount++,e.timeToSampleTable.pop(),g=m)}else g.sampleDelta!==p&&(g.sampleCount--,e.timeToSampleTable.push(g={sampleCount:1,sampleDelta:p}));g.sampleDelta===l?g.sampleCount++:e.timeToSampleTable.push({sampleCount:1,sampleDelta:l});const h=As(e.compositionTimeOffsetTable);Ce(h),h.sampleCompositionTimeOffset===o?h.sampleCount++:e.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:o})}}else e.lastTimescaleUnits=ea(r.decodeTimestamp,e.timescale,!1),this.isFragmented||(e.timeToSampleTable.push({sampleCount:1,sampleDelta:l}),e.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:o}));e.lastSample=r}if(e.timestampProcessingQueue.length=0,Ce(e.lastSample),Ce(e.lastTimescaleUnits!==null),a!==void 0&&e.lastSample.timescaleUnitsToNextSample===0){Ce(a.type==="key");const s=ea(a.timestamp,e.timescale,!1),r=Math.round(s-e.lastTimescaleUnits);e.lastSample.timescaleUnitsToNextSample=r}}async registerSample(e,a){a.type==="key"&&this.processTimestamps(e,a),e.timestampProcessingQueue.push(a),this.isFragmented?(e.sampleQueue.push(a),await this.interleaveSamples()):this.fastStart==="reserve"?await this.registerSampleFastStartReserve(e,a):await this.addSampleToTrack(e,a)}async addSampleToTrack(e,a){if(!this.isFragmented&&(e.samples.push(a),this.fastStart==="reserve")){const s=e.track.metadata.maximumPacketCount;if(Ce(s!==void 0),e.samples.length>s)throw new Error(`Track #${e.track.id} has already reached the maximum packet count (${s}). Either add less packets or increase the maximum packet count.`)}let n=!1;if(!e.currentChunk)n=!0;else{e.currentChunk.startTimestamp=Math.min(e.currentChunk.startTimestamp,a.timestamp);const s=a.timestamp-e.currentChunk.startTimestamp;if(this.isFragmented){const r=this.trackDatas.every(o=>{if(e===o)return a.type==="key";const l=o.sampleQueue[0];return l?l.type==="key":o.closed});s>=this.minimumFragmentDuration&&r&&a.timestamp>this.maxWrittenTimestamp&&(n=!0,await this.finalizeFragment())}else n=s>=.5}n&&(e.currentChunk&&await this.finalizeCurrentChunk(e),e.currentChunk={startTimestamp:a.timestamp,samples:[],offset:null,moofOffset:null,trafIndex:null}),Ce(e.currentChunk),e.currentChunk.samples.push(a),this.isFragmented&&(this.maxWrittenTimestamp=Math.max(this.maxWrittenTimestamp,a.timestamp),this.maxWrittenEndTimestamp=Math.max(this.maxWrittenEndTimestamp,a.timestamp+a.duration),this.minWrittenTimestamp=Math.min(this.minWrittenTimestamp,a.timestamp))}async finalizeCurrentChunk(e){if(Ce(!this.isFragmented),Ce(this.writer),!e.currentChunk)return;e.finalizedChunks.push(e.currentChunk),this.finalizedChunks.push(e.currentChunk);let a=e.currentChunk.samples.length;if(e.type==="audio"&&e.info.requiresPcmTransformation&&(a=e.currentChunk.samples.reduce((n,s)=>n+ea(s.duration,e.timescale),0)),(e.compactlyCodedChunkTable.length===0||As(e.compactlyCodedChunkTable).samplesPerChunk!==a)&&e.compactlyCodedChunkTable.push({firstChunk:e.finalizedChunks.length,samplesPerChunk:a}),this.fastStart==="in-memory"){e.currentChunk.offset=0;return}e.currentChunk.offset=this.writer.getPos();for(const n of e.currentChunk.samples)Ce(n.data),this.writer.write(n.data),n.data=null;await this.writer.flush()}async interleaveSamples(e=!1){if(Ce(this.isFragmented),!(!e&&!this.allTracksAreKnown()))e:for(;;){let a=null,n=1/0;for(const r of this.trackDatas){if(!e&&r.sampleQueue.length===0&&!r.closed)break e;r.sampleQueue.length>0&&r.sampleQueue[0].timestampf.currentChunk);if(a.length===0){e&&await this.writer.flush();return}const n=this.nextFragmentNumber++,s=pb(n,a),r=this.writer.getPos(),o=r+this.boxWriter.measureBox(s);let l=o+$m,u=1/0;for(let f=0;f=2**32;if(g)for(const f of a)f.currentChunk.offset+=jv-$m;this.formatOptions.onMoof&&this.writer.startTrackingWrites();const h=pb(n,a);if(this.boxWriter.writeBox(h),this.formatOptions.onMoof){const{data:f,start:d}=this.writer.stopTrackingWrites();this.formatOptions.onMoof(f,d,u)}Ce(this.writer.getPos()===o),this.formatOptions.onMdat&&this.writer.startTrackingWrites();const m=eu(g);m.size=p,this.boxWriter.writeBox(m),this.writer.seek(o+(g?jv:$m));for(const f of a)for(const d of f.currentChunk.samples)this.writer.write(d.data),d.data=null;if(this.formatOptions.onMdat){const{data:f,start:d}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(f,d)}for(const f of a)f.finalizedChunks.push(f.currentChunk),this.finalizedChunks.push(f.currentChunk),f.currentChunk=null;e&&await this.writer.flush()}async registerSampleFastStartReserve(e,a){this.allTracksAreKnown()?(this.mdat||await this.createFastStartReserveMdat(),await this.addSampleToTrack(e,a)):e.sampleQueue.push(a)}async createFastStartReserveMdat(){Ce(this.writer),Ce(this.boxWriter),this.ensureOneEnabledTrack();const e=xc(this),n=this.boxWriter.measureBox(e)+this.computeSampleTableSizeUpperBound()+4096;Ce(this.ftypSize!==null),this.writer.seek(this.ftypSize+n),this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat=eu(!0),this.boxWriter.writeBox(this.mdat);for(const s of this.trackDatas){for(const r of s.sampleQueue)await this.addSampleToTrack(s,r);s.sampleQueue.length=0}}computeSampleTableSizeUpperBound(){Ce(this.fastStart==="reserve");let e=0;for(const a of this.trackDatas){const n=a.track.metadata.maximumPacketCount;Ce(n!==void 0),e+=8*Math.ceil(2/3*n),e+=4*n,e+=8*Math.ceil(2/3*n),e+=12*Math.ceil(2/3*n),e+=4*n,e+=8*n}return e}async onTrackClose(e){const a=await this.mutex.acquire(),n=this.trackDatas.find(s=>s.track===e);n&&(n.closed=!0,n.type==="subtitle"&&e.source._codec==="webvtt"&&await this.processWebVTTCues(n,1/0),this.processTimestamps(n)),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),this.isFragmented&&await this.interleaveSamples(),a()}ensureOneEnabledTrack(){for(const e of["video","audio","subtitle"]){const a=this.trackDatas.filter(s=>s.type===e);if(a.length===0)continue;if(!a.some(s=>s.track.metadata.disposition?.default!==!1)){const s=a[0];s.track.metadata.disposition={...s.track.metadata.disposition,default:!0}}}}async forceFragmentFinalization(){Ce(this.isFragmented);const e=await this.mutex.acquire();try{for(const a of this.trackDatas)a.type==="subtitle"&&a.track.source._codec==="webvtt"&&await this.processWebVTTCues(a,1/0),this.processTimestamps(a);await this.interleaveSamples(!0),await this.finalizeFragment()}finally{e()}}async finalize(){const e=await this.mutex.acquire();this.allTracksKnown.resolve(),this.ensureOneEnabledTrack(),!this.mdat&&this.fastStart==="reserve"&&await this.createFastStartReserveMdat();for(const a of this.trackDatas)a.closed=!0,a.type==="subtitle"&&a.track.source._codec==="webvtt"&&await this.processWebVTTCues(a,1/0),this.processTimestamps(a);if(this.isFragmented)await this.interleaveSamples(!0),await this.finalizeFragment(!1);else for(const a of this.trackDatas){await this.finalizeCurrentChunk(a);const n=vl(a);if(n>0){let l=0;for(const u of a.samples)l+=u.size;a.avgBitrate=Math.round(8*l/n)}else a.avgBitrate=0;let s=0,r=0,o=0;for(let l=0;l=1;)r-=a.samples[s].size,s++;o=Math.max(o,r)}if(a.maxBitrate=8*o,a.startTimestampOffset!==null)for(let l=0;l=2**32&&(this.mdat.largeSize=!0)}this.formatOptions.onMoov&&this.writer.startTrackingWrites();const n=xc(this);if(this.boxWriter.writeBox(n),this.formatOptions.onMoov){const{data:s,start:r}=this.writer.stopTrackingWrites();this.formatOptions.onMoov(s,r)}this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat.size=a,this.boxWriter.writeBox(this.mdat);for(const s of this.finalizedChunks)for(const r of s.samples)Ce(r.data),this.writer.write(r.data),r.data=null;if(this.formatOptions.onMdat){const{data:s,start:r}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(s,r)}}else if(this.isFragmented)if(this.isCmaf){const a=this.segmentHeaderSize!==null?this.writer.getPos()-this.segmentHeaderSize:0;this.writer.seek(0),this.boxWriter.writeBox(ub()),this.boxWriter.writeBox(fb(this,a))}else{const a=this.writer.getPos(),n=m7(this.trackDatas);this.boxWriter.writeBox(n);const s=this.writer.getPos()-a;this.writer.seek(this.writer.getPos()-4),this.boxWriter.writeU32(s)}else{Ce(this.mdat);const a=this.boxWriter.offsets.get(this.mdat);Ce(a!==void 0);const n=this.writer.getPos()-a;if(this.mdat.size=n,this.mdat.largeSize=n>=2**32,this.boxWriter.patchBox(this.mdat),this.formatOptions.onMdat){const{data:r,start:o}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(r,o)}const s=xc(this);if(this.fastStart==="reserve"){Ce(this.ftypSize!==null),this.writer.seek(this.ftypSize),this.formatOptions.onMoov&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(s);const r=this.boxWriter.offsets.get(this.mdat)-this.writer.getPos();this.boxWriter.writeBox(wG(r))}else this.formatOptions.onMoov&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(s);if(this.formatOptions.onMoov){const{data:r,start:o}=this.writer.stopTrackingWrites();this.formatOptions.onMoov(r,o)}}e()}}class M7{constructor(e){this.sourceSampleRate=null,this.sourceNumberOfChannels=null,this.startTime=null,this.bufferStartFrame=0,this.maxWrittenFrame=null,this.targetSampleRate=e.targetSampleRate,this.targetNumberOfChannels=e.targetNumberOfChannels,this.onSample=e.onSample,this.bufferSizeInFrames=Math.floor(this.targetSampleRate*5),this.bufferSizeInSamples=this.bufferSizeInFrames*this.targetNumberOfChannels}doChannelMixerSetup(){Ce(this.sourceNumberOfChannels!==null);const e=this.sourceNumberOfChannels,a=this.targetNumberOfChannels;e===1&&a===2?this.channelMixer=(n,s)=>n[s*e]:e===1&&a===4?this.channelMixer=(n,s,r)=>n[s*e]*+(r<2):e===1&&a===6?this.channelMixer=(n,s,r)=>n[s*e]*+(r===2):e===2&&a===1?this.channelMixer=(n,s)=>{const r=s*e;return .5*(n[r]+n[r+1])}:e===2&&a===4?this.channelMixer=(n,s,r)=>r<2?n[s*e+r]:0:e===2&&a===6?this.channelMixer=(n,s,r)=>r<2?n[s*e+r]:0:e===4&&a===1?this.channelMixer=(n,s)=>{const r=s*e;return .25*(n[r]+n[r+1]+n[r+2]+n[r+3])}:e===4&&a===2?this.channelMixer=(n,s,r)=>{const o=s*e;return .5*(n[o+r]+n[o+r+2])}:e===4&&a===6?this.channelMixer=(n,s,r)=>{const o=s*e;return r<2?n[o+r]:r===2||r===3?0:n[o+r-2]}:e===6&&a===1?this.channelMixer=(n,s)=>{const r=s*e;return Math.SQRT1_2*(n[r]+n[r+1])+n[r+2]+.5*(n[r+4]+n[r+5])}:e===6&&a===2?this.channelMixer=(n,s,r)=>{const o=s*e;return n[o+r]+Math.SQRT1_2*(n[o+2]+n[o+r+4])}:e===6&&a===4?this.channelMixer=(n,s,r)=>{const o=s*e;return r<2?n[o+r]+Math.SQRT1_2*n[o+2]:n[o+r+2]}:this.channelMixer=(n,s,r)=>r=this.bufferStartFrame+this.bufferCapacityInFrames;)await this.finalizeCurrentBuffer(),this.bufferStartFrame+=this.bufferSizeInFrames;const g=p-this.bufferStartFrame;Ce(g=0&&d=0&&c=this.bufferSizeInFrames?this.maxWrittenFrame-this.bufferSizeInFrames:null}async finalize(){for(;this.maxWrittenFrame!==null;)await this.finalizeCurrentBuffer(),this.bufferStartFrame+=this.bufferSizeInFrames}}var E7=function(t,e,a){if(e!=null){if(typeof e!="object"&&typeof e!="function")throw new TypeError("Object expected.");var n,s;if(a){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=e[Symbol.asyncDispose]}if(n===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=e[Symbol.dispose],a&&(s=n)}if(typeof n!="function")throw new TypeError("Object not disposable.");s&&(n=function(){try{s.call(this)}catch(r){return Promise.reject(r)}}),t.stack.push({value:e,dispose:n,async:a})}else a&&t.stack.push({async:!0});return e},z7=(function(t){return function(e){function a(o){e.error=e.hasError?new t(o,e.error,"An error was suppressed during disposal."):o,e.hasError=!0}var n,s=0;function r(){for(;n=e.stack.pop();)try{if(!n.async&&s===1)return s=0,e.stack.push(n),Promise.resolve().then(r);if(n.dispose){var o=n.dispose.call(n.value);if(n.async)return s|=2,Promise.resolve(o).then(r,function(l){return a(l),r()})}else s|=1}catch(l){a(l)}if(s===1)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}return r()}})(typeof SuppressedError=="function"?SuppressedError:function(t,e,a){var n=new Error(a);return n.name="SuppressedError",n.error=t,n.suppressed=e,n});class Om{constructor(){this._connectedTrack=null,this._closingPromise=null,this._closed=!1,this._nominalBitrate=null}_ensureValidAdd(){if(!this._connectedTrack)throw new Error("Source is not connected to an output track.");if(this._connectedTrack.output.state==="canceled")throw new Error("Output has been canceled.");if(this._connectedTrack.output.state==="finalizing"||this._connectedTrack.output.state==="finalized")throw new Error("Output has been finalized.");if(this._connectedTrack.output.state==="pending")throw new Error("Output has not started.");if(this._closed)throw new Error("Source is closed.")}async _start(){}async _flushAndClose(e){}close(){if(this._closingPromise)return;const e=this._connectedTrack;if(!e)throw new Error("Cannot call close without connecting the source to an output track.");if(e.output.state==="pending")throw new Error("Cannot call close before output has been started.");this._closingPromise=(async()=>{await this._flushAndClose(!1),this._closed=!0,!(e.output.state==="finalizing"||e.output.state==="finalized")&&e.output._muxer.onTrackClose(e)})()}async _flushOrWaitForOngoingClose(e){return this._closingPromise??=(async()=>{await this._flushAndClose(e),this._closed=!0})()}}class yb extends Om{constructor(e){if(super(),!gr.includes(e))throw new TypeError(`Invalid video codec '${e}'. Must be one of: ${gr.join(", ")}.`);this._codec=e}}const wb=(t,e)=>{if(t.metadata.hasOnlyKeyPackets&&e.type!=="key")throw new Error("Cannot add non-key packets to a hasOnlyKeyPackets video track.")};class U7{setError(e){this.errorSet||(this.error=e,this.errorSet=!0)}constructor(e,a){this.source=e,this.encodingConfig=a,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.muxer=null,this.lastMultipleOfKeyFrameInterval=-1,this.emittedEncoderPackets=0,this.codedWidth=null,this.codedHeight=null,this.outputWidth=null,this.outputHeight=null,this.frameRateLastSample=null,this.frameRateLastTimestamp=null,this.frameRateLastEndTimestamp=null,this.preciseTimings=[],this.customEncoder=null,this.customEncoderCallSerializer=new fv,this.customEncoderQueueSize=0,this.defaultEncodeOptions={},this.alphaEncoder=null,this.splitter=null,this.splitterCreationFailed=!1,this.alphaFrameQueue=[],this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(e,a,n){const s=e;try{this.checkForEncoderError(),this.source._ensureValidAdd();const r=this.encodingConfig,o=r.sizeChangeBehavior??"deny";let l=!1;if(this.codedWidth!==null&&this.codedHeight!==null){if((e.codedWidth!==this.codedWidth||e.codedHeight!==this.codedHeight)&&(l=!0,o==="deny"))throw new Error(`Video sample size must remain constant. Expected ${this.codedWidth}x${this.codedHeight}, got ${e.codedWidth}x${e.codedHeight}. To allow the sample size to change over time, set \`sizeChangeBehavior\` to a value other than 'deny' in the encoding options.`)}else this.codedWidth=e.codedWidth,this.codedHeight=e.codedHeight;if(r.transform?.width!==void 0||r.transform?.height!==void 0||r.transform?.rotate!==void 0||r.transform?.flip!==void 0||r.transform?.crop!==void 0||r.transform?.force===!0||l&&o!=="passThrough"){let h=r.transform?.width,m=r.transform?.height,f=r.transform?.fit??"fill";l&&o!=="passThrough"&&(Ce(this.outputWidth),Ce(this.outputHeight),Ce(o!=="deny"),h=this.outputWidth,m=this.outputHeight,f=o);const d=await e.transform({width:h,height:m,roundDimensionsTo:2,crop:r.transform?.crop,rotate:r.transform?.rotate,flip:r.transform?.flip,fit:f,alpha:r.alpha});(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=d.displayWidth,this.outputHeight=d.displayHeight),a&&e.close(),e=d,a=!0}else(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=e.codedWidth,this.outputHeight=e.codedHeight);const g=r.transform?.frameRate;if(g!==void 0){const h=e.timestamp+e.duration,m=uv(e.timestamp,g);if(this.frameRateLastSample!==null)if(m<=this.frameRateLastTimestamp){this.frameRateLastSample.close(),this.frameRateLastSample=e.clone(),this.frameRateLastEndTimestamp=h;return}else await this.padFrameRate(m,n);e===s&&(e=e.clone(),a=!0),e.setTimestamp(m),e.setDuration(1/g),this.frameRateLastSample?.close(),this.frameRateLastSample=e.clone(),this.frameRateLastTimestamp=m,this.frameRateLastEndTimestamp=h}await this.processAndEncode(e,n)}finally{a&&e.close()}}async processAndEncode(e,a){const n=this.encodingConfig;let s;if(n.transform?.process){let r=n.transform.process(e);if(Ir(r)&&(r=await r),r===null)return;Array.isArray(r)||(r=[r]);const o=[];try{for(const l of r)l instanceof Qn?o.push(l):typeof VideoFrame<"u"&&l instanceof VideoFrame?o.push(new Qn(l)):o.push(new Qn(l,{timestamp:e.timestamp,duration:e.duration}))}catch(l){for(const u of o)u!==e&&u.close();for(const u of r)(u instanceof Qn&&u!==e||typeof VideoFrame<"u"&&u instanceof VideoFrame)&&u.close();throw l}s=o}else s=[e];try{for(const r of s){if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(r),this.encoderInitialized||await this.ensureEncoderPromise),Ce(this.encoderInitialized),this.closed)break;const o=this.encodingConfig.keyFrameInterval??2,l=Math.floor(r.timestamp/o),u={...this.defaultEncodeOptions,...r.encodeOptions,...a},p={...u,keyFrame:u.keyFrame!==void 0?u.keyFrame:o===0||l!==this.lastMultipleOfKeyFrameInterval};if(this.lastMultipleOfKeyFrameInterval=l,this.encodingConfig.onEncodedSample?.(r),this.customEncoder){this.customEncoderQueueSize++;const g=r.clone(),h=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(g,p)).catch(m=>this.setError(m)).finally(()=>{this.customEncoderQueueSize--,g.close()});this.customEncoderQueueSize>=4&&await h}else{Ce(this.encoder);const g=r.toVideoFrame(),h=ov(this.preciseTimings,g.timestamp,f=>f.microsecondTimestamp),m=h!==-1?this.preciseTimings[h]:null;if(m&&m.microsecondTimestamp===g.timestamp?(m.timestamp!==r.timestamp&&(m.timestampIsValid=!1),m.duration!==r.duration&&(m.durationIsValid=!1)):(this.preciseTimings.splice(h+1,0,{microsecondTimestamp:g.timestamp,timestamp:r.timestamp,duration:r.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift()),this.alphaEncoder)if(!!g.format&&!g.format.includes("A")||this.splitterCreationFailed){this.alphaFrameQueue.push(null);try{this.encoder.encode(g,p)}finally{g.close()}}else{this.splitter||(this.splitter=new B7);const{colorFrame:d,alphaFrame:c}=await this.splitter.split(g);this.alphaFrameQueue.push(c);try{this.encoder.encode(d,p)}finally{d.close()}}else try{this.encoder.encode(g,p)}finally{g.close()}this.encoder.encodeQueueSize>=4&&await new Promise(f=>this.encoder.addEventListener("dequeue",f,{once:!0}))}await this.lastMuxerPromise}}finally{for(const r of s)r!==e&&r.close()}}async padFrameRate(e,a){const n=this.encodingConfig.transform.frameRate;Ce(this.frameRateLastSample);const s=Math.round((e-this.frameRateLastTimestamp)*n);for(let r=1;r{const a=Jd(this.encodingConfig.quality,this.encodingConfig.bitrate);Ce(a!==void 0);const n=Jv({...this.encodingConfig,quality:a,width:e.codedWidth,height:e.codedHeight,squarePixelWidth:e.squarePixelWidth,squarePixelHeight:e.squarePixelHeight,framerate:this.source._connectedTrack?.metadata.frameRate});let s=null,r;for(const l of n){const u=l.config;if(this.encodingConfig.onEncoderConfig?.(u),r=nb.find(g=>g.supports(this.encodingConfig.codec,u)),r){s=l;break}if(typeof VideoEncoder>"u")continue;if(u.alpha="discard",this.encodingConfig.alpha==="keep"&&(u.latencyMode="quality"),(u.width%2===1||u.height%2===1)&&(this.encodingConfig.codec==="avc"||this.encodingConfig.codec==="hevc"))throw new Error(`The dimensions ${u.width}x${u.height} are not supported for codec '${this.encodingConfig.codec}'; both width and height must be even numbers. Make sure to round your dimensions to the nearest even number.`);try{if((await VideoEncoder.isConfigSupported(u)).supported){s=l;break}}catch{}}if(!s){if(typeof VideoEncoder>"u")throw new Error(pv("VideoEncoder"));const l=n[0].config,u=n.map(({config:p,quantizer:g})=>g!==null?`quantizer ${g}`:`${p.bitrate} bps`);throw new Error(`This specific encoder configuration (${l.codec}, ${u.join(" / ")}, ${l.width}x${l.height}, hardware acceleration: ${l.hardwareAcceleration??"no-preference"}) is not supported in this environment. Consider using another codec or changing your video parameters.`)}const o=s.config;if(s.quantizer!==null?this.defaultEncodeOptions=ab(this.encodingConfig.codec,s.quantizer):this.source._nominalBitrate=o.bitrate??null,r)this.customEncoder=new r,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=o,this.customEncoder.onPacket=(l,u)=>{if(!(l instanceof Ws))throw new TypeError("The first argument passed to onPacket must be an EncodedPacket.");if(u!==void 0&&(!u||typeof u!="object"))throw new TypeError("The second argument passed to onPacket must be an object or undefined.");wb(this.source._connectedTrack,l),this.encodingConfig.onEncodedPacket?.(l,u),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,l,u).catch(p=>{this.setError(p)})},this.customEncoder.onError=l=>{this.setError(l)},await this.customEncoder.init();else{const l=[],u=[];let p=0,g=0;const h=(f,d,c)=>{const _={};if(d){const T=new Uint8Array(d.byteLength);d.copyTo(T),_.alpha=T}let b=Ws.fromEncodedChunk(f,_);const v=ov(this.preciseTimings,f.timestamp,T=>T.microsecondTimestamp),w=v!==-1?this.preciseTimings[v]:null;let y=null;this.emittedEncoderPackets===0&&b.type==="delta"&&c?.decoderConfig&&(y=pq(this.encodingConfig.codec,c.decoderConfig,b.data)),(w&&w.microsecondTimestamp===f.timestamp||y!==null)&&(b=b.clone({timestamp:w?.timestampIsValid?w.timestamp:void 0,duration:w?.durationIsValid?w.duration:void 0,type:y??void 0})),wb(this.source._connectedTrack,b),this.encodingConfig.onEncodedPacket?.(b,c),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,b,c).catch(T=>{this.setError(T)}),this.emittedEncoderPackets++},m=new Error("Encoding error").stack;if(this.encoder=new VideoEncoder({output:(f,d)=>{if(!this.alphaEncoder){h(f,null,d);return}const c=this.alphaFrameQueue.shift();Ce(c!==void 0),c?(this.alphaEncoder.encode(c,{...this.defaultEncodeOptions,keyFrame:f.type==="key"}),g++,c.close(),l.push({chunk:f,meta:d})):g===0?h(f,null,d):(u.push(p+g),l.push({chunk:f,meta:d}))},error:f=>{f.stack=m,this.setError(f)}}),this.encoder.configure(o),this.encodingConfig.alpha==="keep"){const f=new Error("Encoding error").stack;this.alphaEncoder=new VideoEncoder({output:(d,c)=>{g--;const _=l.shift();for(Ce(_!==void 0),h(_.chunk,d,_.meta),p++;u.length>0&&u[0]===p;){u.shift();const b=l.shift();Ce(b!==void 0),h(b.chunk,null,b.meta)}},error:d=>{d.stack=f,this.setError(d)}}),this.alphaEncoder.configure(o)}}Ce(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}async flushAndClose(e){try{if(!e&&(this.checkForEncoderError(),this.frameRateLastSample)){const a=this.encodingConfig.transform.frameRate,n=uv(this.frameRateLastEndTimestamp,a);await this.padFrameRate(n)}this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&(await this.encoder.flush(),await this.alphaEncoder?.flush(),await L$(25)))}finally{this.closed=!0,this.frameRateLastSample?.close(),this.frameRateLastSample=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(a=>this.setError(a)):this.encoder&&(this.encoder.state!=="closed"&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!=="closed"&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(a=>a?.close()),this.alphaFrameQueue.length=0,this.splitter?.close())}e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}}let Im=null;class B7{constructor(){this.worker=null,this.pendingRequests=new Map,this.nextRequestId=0}split(e){if(!this.worker){if(!Im){const s=new Blob([`(${R7.toString()})()`],{type:"application/javascript"});Im=URL.createObjectURL(s)}this.worker=new Worker(Im),this.worker.addEventListener("message",s=>{const r=s.data,o=this.pendingRequests.get(r.id);o&&(this.pendingRequests.delete(r.id),"error"in r?o.reject(new Error(r.error)):o.resolve({colorFrame:r.colorFrame,alphaFrame:r.alphaFrame}))}),this.worker.addEventListener("error",s=>{const r=new Error(s.message||"Color/alpha splitter worker error.");for(const o of this.pendingRequests.values())o.reject(r);this.pendingRequests.clear()})}const a=this.nextRequestId++,n=lv();return this.pendingRequests.set(a,n),this.worker.postMessage({id:a,sourceFrame:e},{transfer:[e]}),n.promise}close(){this.worker?.terminate(),this.worker=null;const e=new Error("Color/alpha splitter closed.");for(const a of this.pendingRequests.values())a.reject(e);this.pendingRequests.clear()}}const R7=()=>{let t=null,e=Promise.resolve();self.addEventListener("message",r=>{const{id:o,sourceFrame:l}=r.data;e=e.then(async()=>{try{const{colorFrame:u,alphaFrame:p}=await a(l);self.postMessage({id:o,colorFrame:u,alphaFrame:p},{transfer:[u,p]})}catch(u){self.postMessage({id:o,error:u.message})}finally{l.close()}})});const a=async r=>{const o=r.format;if(!o)throw new Error("CPU color/alpha splitting requires a known VideoFrame format.");const l=r.allocationSize();if((!t||t.byteLength!==l)&&(t=new Uint8Array(l)),await r.copyTo(t),o==="RGBA"||o==="BGRA")return n(t,o,r);if(o==="I420A"||o==="I420AP10"||o==="I420AP12"||o==="I422A"||o==="I422AP10"||o==="I422AP12"||o==="I444A"||o==="I444AP10"||o==="I444AP12")return s(t,o,r);throw new Error(`CPU color/alpha splitting does not support format '${o}'.`)},n=(r,o,l)=>{const u=l.visibleRect?.width??l.codedWidth,p=l.visibleRect?.height??l.codedHeight,g=u*p,h=Math.ceil(u/2),m=Math.ceil(p/2),f=g+h*m*2,d=new Uint8Array(f);for(let v=0,w=3;v{const u=l.visibleRect?.width??l.codedWidth,p=l.visibleRect?.height??l.codedHeight,g=o.includes("P10"),h=o.includes("P12"),m=g||h?2:1;let f,d;o.startsWith("I420")?(f=Math.ceil(u/2),d=Math.ceil(p/2)):o.startsWith("I422")?(f=Math.ceil(u/2),d=p):(f=u,d=p);const c=u*p,_=f*d,b=c*m,v=_*m,w=c*m,y=b+v*2,T=o.replace("A",""),O=Math.ceil(u/2),R=Math.ceil(p/2),$=O*R,P=$*m,L=w+2*P,x=new Uint8Array(L),U=y;x.set(r.subarray(U,U+w),0);const D=w,M=g?512:h?2048:128;m===1?x.fill(M,D):new Uint16Array(x.buffer,D,2*$).fill(M);const G=g?"I420P10":h?"I420P12":"I420",B=new VideoFrame(r.subarray(0,y),{format:T,codedWidth:u,codedHeight:p,timestamp:l.timestamp,duration:l.duration??void 0}),V={format:G,codedWidth:u,codedHeight:p,timestamp:l.timestamp,duration:l.duration??void 0,transfer:[x.buffer]},I=new VideoFrame(x,V);return{colorFrame:B,alphaFrame:I}}};class j7 extends yb{constructor(e,a){if(!(typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas))throw new TypeError("canvas must be an HTMLCanvasElement or OffscreenCanvas.");cG(a),super(a.codec),this._encoder=new U7(this,a),this._canvas=e}add(e,a=0,n){if(!Number.isFinite(e))throw new TypeError("timestamp must be a finite number.");if(!Number.isFinite(a)||a<0)throw new TypeError("duration must be a non-negative number.");const s=new Qn(this._canvas,{timestamp:e,duration:a});return this._encoder.add(s,!0,n)}_flushAndClose(e){return this._encoder.flushAndClose(e)}}class kb extends Om{constructor(e){if(super(),!qo.includes(e))throw new TypeError(`Invalid audio codec '${e}'. Must be one of: ${qo.join(", ")}.`);this._codec=e}}class P7{setError(e){this.errorSet||(this.error=e,this.errorSet=!0)}constructor(e,a){this.source=e,this.encodingConfig=a,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.muxer=null,this.lastNumberOfChannels=null,this.lastSampleRate=null,this.isPcmEncoder=!1,this.outputSampleSize=null,this.writeOutputValue=null,this.customEncoder=null,this.customEncoderCallSerializer=new fv,this.customEncoderQueueSize=0,this.lastEndSampleIndex=null,this.resampler=null,this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(e,a){try{if(this.checkForEncoderError(),this.source._ensureValidAdd(),this.lastNumberOfChannels!==null&&this.lastSampleRate!==null){if(e.numberOfChannels!==this.lastNumberOfChannels||e.sampleRate!==this.lastSampleRate)throw new Error(`Audio parameters must remain constant. Expected ${this.lastNumberOfChannels} channels at ${this.lastSampleRate} Hz, got ${e.numberOfChannels} channels at ${e.sampleRate} Hz.`)}else this.lastNumberOfChannels=e.numberOfChannels,this.lastSampleRate=e.sampleRate;const n=this.encodingConfig;n.transform?.numberOfChannels!==void 0||n.transform?.sampleRate!==void 0?(this.resampler||(this.resampler=new M7({targetNumberOfChannels:n.transform.numberOfChannels??e.numberOfChannels,targetSampleRate:n.transform.sampleRate??e.sampleRate,onSample:async r=>{await this.processAndEncode(r,!0)}})),await this.resampler.add(e)):await this.processAndEncode(e,a)}finally{a&&e.close()}}async processAndEncode(e,a){const n=this.encodingConfig;if(n.transform?.sampleFormat!==void 0&&rG(e.format)!==n.transform.sampleFormat){const s=lG(e,n.transform.sampleFormat);a&&e.close(),e=s,a=!0}if(n.transform?.process)try{let s=n.transform.process(e);if(Ir(s)&&(s=await s),s===null)return;Array.isArray(s)||(s=[s]);try{for(const r of s)if(!(r instanceof Kn))throw new TypeError("The audio process function must return an AudioSample, null, or an array of AudioSamples.");for(const r of s)await this.encodeSample(r,!0)}finally{for(const r of s)r instanceof Kn&&r.close()}}finally{a&&e.close()}else await this.encodeSample(e,a)}async encodeSample(e,a){try{if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),Ce(this.encoderInitialized),this.closed)return;{const n=Math.round(e.timestamp*e.sampleRate),s=Math.round((e.timestamp+e.duration)*e.sampleRate);if(this.lastEndSampleIndex===null)this.lastEndSampleIndex=s;else{const r=n-this.lastEndSampleIndex;if(r>=64){const o=new Kn({data:new Float32Array(r*e.numberOfChannels),format:"f32-planar",sampleRate:e.sampleRate,numberOfChannels:e.numberOfChannels,numberOfFrames:r,timestamp:this.lastEndSampleIndex/e.sampleRate});await this.encodeSample(o,!0)}this.lastEndSampleIndex+=e.numberOfFrames}}if(this.encodingConfig.onEncodedSample?.(e),this.customEncoder){this.customEncoderQueueSize++;const n=e.clone(),s=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(n)).catch(r=>this.setError(r)).finally(()=>{this.customEncoderQueueSize--,n.close()});this.customEncoderQueueSize>=4&&await s,await this.lastMuxerPromise}else if(this.isPcmEncoder)await this.doPcmEncoding(e,a);else{Ce(this.encoder);const n=e.toAudioData();this.encoder.encode(n),n.close(),a&&e.close(),this.encoder.encodeQueueSize>=4&&await new Promise(s=>this.encoder.addEventListener("dequeue",s,{once:!0})),await this.lastMuxerPromise}}finally{a&&e.close()}}async doPcmEncoding(e,a){Ce(this.outputSampleSize),Ce(this.writeOutputValue);const{numberOfChannels:n,numberOfFrames:s,sampleRate:r,timestamp:o}=e,l=2048,u=[];for(let c=0;c{const{numberOfChannels:a,sampleRate:n}=e,s=Jd(this.encodingConfig.quality,this.encodingConfig.bitrate),r=eb({numberOfChannels:a,sampleRate:n,...this.encodingConfig,quality:s});this.encodingConfig.onEncoderConfig?.(r),this.source._nominalBitrate=r.bitrate??null;const o=sb.find(l=>l.supports(this.encodingConfig.codec,r));if(o)this.customEncoder=new o,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=r,this.customEncoder.onPacket=(l,u)=>{if(!(l instanceof Ws))throw new TypeError("The first argument passed to onPacket must be an EncodedPacket.");if(u!==void 0&&(!u||typeof u!="object"))throw new TypeError("The second argument passed to onPacket must be an object or undefined.");this.encodingConfig.onEncodedPacket?.(l,u),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,l,u).catch(p=>{this.setError(p)})},this.customEncoder.onError=l=>{this.setError(l)},await this.customEncoder.init();else if(Cs.includes(this.encodingConfig.codec))this.initPcmEncoder();else{if(typeof AudioEncoder>"u")throw new Error(pv("AudioEncoder"));let l;try{l=(await AudioEncoder.isConfigSupported(r)).supported??!1}catch{l=!1}if(!l)throw new Error(`This specific encoder configuration (${r.codec}, ${r.bitrate} bps, ${r.numberOfChannels} channels, ${r.sampleRate} Hz) is not supported in this environment. Consider using another codec or changing your audio parameters.`);const u=new Error("Encoding error").stack;this.encoder=new AudioEncoder({output:(p,g)=>{if(this.encodingConfig.codec==="aac"&&g?.decoderConfig){let m=!1;if(!g.decoderConfig.description||g.decoderConfig.description.byteLength<2?m=!0:m=Q$(_s(g.decoderConfig.description)).objectType===0,m){const f=Number(As(r.codec.split(".")));g.decoderConfig.description=bv({objectType:f,outputNumberOfChannels:g.decoderConfig.numberOfChannels,outputSampleRate:g.decoderConfig.sampleRate})}}let h=Ws.fromEncodedChunk(p);h=h.clone({timestamp:dv(h.timestamp,r.sampleRate),duration:p.duration!=null?dv(h.duration,r.sampleRate):void 0}),this.encodingConfig.onEncodedPacket?.(h,g),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,h,g).catch(m=>{this.setError(m)})},error:p=>{p.stack=u,this.setError(p)}}),this.encoder.configure(r)}Ce(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}initPcmEncoder(){this.isPcmEncoder=!0;const e=this.encodingConfig.codec,{dataType:a,sampleSize:n,littleEndian:s}=Go(e);switch(this.outputSampleSize=n,n){case 1:a==="unsigned"?this.writeOutputValue=(r,o,l)=>r.setUint8(o,wn(Math.round(l*128)+128,0,255)):a==="signed"?this.writeOutputValue=(r,o,l)=>{r.setInt8(o,wn(Math.round(l*128),-128,127))}:a==="ulaw"?this.writeOutputValue=(r,o,l)=>{const u=wn(Math.round(l*32768),-32768,32767);r.setUint8(o,pG(u))}:a==="alaw"?this.writeOutputValue=(r,o,l)=>{const u=wn(Math.round(l*32768),-32768,32767);r.setUint8(o,gG(u))}:Ce(!1);break;case 2:a==="unsigned"?this.writeOutputValue=(r,o,l)=>r.setUint16(o,wn(Math.round(l*32768)+32768,0,65535),s):a==="signed"?this.writeOutputValue=(r,o,l)=>r.setInt16(o,wn(Math.round(l*32768),-32768,32767),s):Ce(!1);break;case 3:a==="unsigned"?this.writeOutputValue=(r,o,l)=>mm(r,o,wn(Math.round(l*8388608)+8388608,0,16777215),s):a==="signed"?this.writeOutputValue=(r,o,l)=>A$(r,o,wn(Math.round(l*8388608),-8388608,8388607),s):Ce(!1);break;case 4:a==="unsigned"?this.writeOutputValue=(r,o,l)=>r.setUint32(o,wn(Math.round(l*2147483648)+2147483648,0,4294967295),s):a==="signed"?this.writeOutputValue=(r,o,l)=>r.setInt32(o,wn(Math.round(l*2147483648),-2147483648,2147483647),s):a==="float"?this.writeOutputValue=(r,o,l)=>r.setFloat32(o,l,s):Ce(!1);break;case 8:a==="float"?this.writeOutputValue=(r,o,l)=>r.setFloat64(o,l,s):Ce(!1);break;default:$o(n),Ce(!1)}}async flushAndClose(e){try{e||(this.checkForEncoderError(),this.resampler&&await this.resampler.finalize()),this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&await this.encoder.flush())}finally{this.closed=!0,this.resampler=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(a=>this.setError(a)):this.encoder&&this.encoder.state!=="closed"&&this.encoder.close()}e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.isPcmEncoder?0:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}}class N7 extends kb{constructor(e,a={}){if(dG(e),typeof a!="object"||!a)throw new TypeError("options must be an object.");if(a.startTimestamp!==void 0&&!Number.isFinite(a.startTimestamp))throw new TypeError("options.startTimestamp, when provided, must be a finite number.");super(e.codec),this._encoder=new P7(this,e),this._accumulatedTime=a.startTimestamp??0}async add(e){if(!(e instanceof AudioBuffer))throw new TypeError("audioBuffer must be an AudioBuffer.");const a=Kn._fromAudioBuffer(e,this._accumulatedTime);this._accumulatedTime+=e.duration;for(const n of a)await this._encoder.add(n,!0)}_flushAndClose(e){return this._encoder.flushAndClose(e)}}class O7 extends Om{constructor(e){if(super(),!gc.includes(e))throw new TypeError(`Invalid subtitle codec '${e}'. Must be one of: ${gc.join(", ")}.`);this._codec=e}}class xb{get supportsVideoRotationMetadata(){return this.supportsVideoTransformationMetadata}getSupportedVideoCodecs(){return this.getSupportedCodecs().filter(e=>gr.includes(e))}getSupportedAudioCodecs(){return this.getSupportedCodecs().filter(e=>qo.includes(e))}getSupportedSubtitleCodecs(){return this.getSupportedCodecs().filter(e=>gc.includes(e))}_codecUnsupportedHint(e){return""}_isFragmentedIsobmff(){return!1}}class Lm extends xb{constructor(e={}){if(!e||typeof e!="object")throw new TypeError("options must be an object.");if(e.fastStart!==void 0&&![!1,"in-memory","reserve","fragmented"].includes(e.fastStart))throw new TypeError("options.fastStart, when provided, must be false, 'in-memory', 'reserve', or 'fragmented'.");if(e.minimumFragmentDuration!==void 0&&(!O$(e.minimumFragmentDuration)||e.minimumFragmentDuration<0))throw new TypeError("options.minimumFragmentDuration, when provided, must be a non-negative number.");if(e.onFtyp!==void 0&&typeof e.onFtyp!="function")throw new TypeError("options.onFtyp, when provided, must be a function.");if(e.onMoov!==void 0&&typeof e.onMoov!="function")throw new TypeError("options.onMoov, when provided, must be a function.");if(e.onMdat!==void 0&&typeof e.onMdat!="function")throw new TypeError("options.onMdat, when provided, must be a function.");if(e.onMoof!==void 0&&typeof e.onMoof!="function")throw new TypeError("options.onMoof, when provided, must be a function.");if(e.metadataFormat!==void 0&&!["mdir","mdta","udta","auto"].includes(e.metadataFormat))throw new TypeError("options.metadataFormat, when provided, must be either 'auto', 'mdir', 'mdta', or 'udta'.");super(),this._options=e}getSupportedTrackCounts(){return{video:{min:0,max:4294967295},audio:{min:0,max:4294967295},subtitle:{min:0,max:4294967295},total:{min:0,max:4294967295}}}get supportsVideoTransformationMetadata(){return!0}get supportsTimestampedMediaData(){return!0}get negativeTimestampSupport(){return"full"}_createMuxer(e){return new C7(e,this)}_isFragmentedIsobmff(){return this._options.fastStart==="fragmented"}}class Sb extends Lm{constructor(e){super(e)}get _name(){return"MP4"}get fileExtension(){return".mp4"}get mimeType(){return"video/mp4"}getSupportedCodecs(){return[...gr,...Sm,"pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be",...gc]}_codecUnsupportedHint(e){return new $b().getSupportedCodecs().includes(e)?" Switching to MOV will grant support for this codec.":""}}class Tb extends Lm{constructor(e){super(e)}get _name(){return"CMAF"}get fileExtension(){return".m4s"}get mimeType(){return"video/mp4"}getSupportedCodecs(){return[...gr,...Sm,"pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be",...gc]}}class $b extends Lm{constructor(e){super(e)}get _name(){return"MOV"}get fileExtension(){return".mov"}get mimeType(){return"video/quicktime"}getSupportedCodecs(){return[...gr,...qo]}_codecUnsupportedHint(e){return new Sb().getSupportedCodecs().includes(e)?" Switching to MP4 will grant support for this codec.":""}}const qb=["video","audio","subtitle"];class Sc{constructor(e,a,n,s,r){this.id=e,this.output=a,this.type=n,this.source=s,this.metadata=r}isVideoTrack(){return this.type==="video"}isAudioTrack(){return this.type==="audio"}isSubtitleTrack(){return this.type==="subtitle"}canBePairedWith(e){if(!(e instanceof Sc))throw new TypeError("other must be an OutputTrack.");if(this===e)return!1;const a=_v(this.metadata.group),n=_v(e.metadata.group);for(const s of a)if(this.type!==e.type&&n.some(l=>s===l)||n.some(l=>s._pairedGroups.has(l)))return!0;return!1}}class I7 extends Sc{constructor(e,a,n,s){super(e,a,"video",n,s)}}class L7 extends Sc{constructor(e,a,n,s){super(e,a,"audio",n,s)}}class D7 extends Sc{constructor(e,a,n,s){super(e,a,"subtitle",n,s)}}class Tc{constructor(){this._pairedGroups=new Set}pairWith(e){if(!(e instanceof Tc))throw new TypeError("other must be an OutputTrackGroup.");if(this===e)throw new TypeError("Cannot pair a group with itself.");this._pairedGroups.add(e),e._pairedGroups.add(this)}}const Dm=t=>{if(!t||typeof t!="object")throw new TypeError("metadata must be an object.");if(t.languageCode!==void 0&&!U$(t.languageCode))throw new TypeError("metadata.languageCode, when provided, must be a three-letter, ISO 639-2/T language code.");if(t.name!==void 0&&typeof t.name!="string")throw new TypeError("metadata.name, when provided, must be a string.");if(t.disposition!==void 0&&W$(t.disposition),t.maximumPacketCount!==void 0&&(!Number.isInteger(t.maximumPacketCount)||t.maximumPacketCount<0))throw new TypeError("metadata.maximumPacketCount, when provided, must be a non-negative integer.");if(t.bitrate!==void 0&&(!Number.isFinite(t.bitrate)||t.bitrate<0))throw new TypeError("metadata.bitrate, when provided, must be a non-negative number.");if(t.averageBitrate!==void 0&&(!Number.isFinite(t.averageBitrate)||t.averageBitrate<0))throw new TypeError("metadata.averageBitrate, when provided, must be a non-negative number.");if(t.group!==void 0&&!(t.group instanceof Tc)&&(!Array.isArray(t.group)||t.group.some(e=>!(e instanceof Tc))))throw new TypeError("metadata.group, when provided, must be an OutputTrackGroup instance or an array of OutputTrackGroup instances.")};class V7 extends vm{get target(){const e="Output.target cannot be used when using PathedTarget with an async callback. Use the 'target' event instead.";if(this._rootTargetPromise)throw new TypeError(e);const a=this._getRootTarget();if(Ir(a))throw new TypeError(e);return a}constructor(e){if(super(),this.state="pending",this.defaultTrackGroup=new Tc,this.tracks=[],this._onFinalize=null,this._unfinalizedTargets=new Set,this._rootWriterPromise=null,this._startPromise=null,this._cancelPromise=null,this._finalizePromise=null,this._mutex=new rv,this._metadataTags={},this._rootTarget=null,this._rootTargetPromise=null,this._firstMediaStreamTimestamp=null,!e||typeof e!="object")throw new TypeError("options must be an object.");if(!(e.format instanceof xb))throw new TypeError("options.format must be an OutputFormat.");if(!(e.target instanceof hr||e.target instanceof Nm))throw new TypeError("options.target must be a Target or a PathedTarget.");if(e.target instanceof hr&&this._rememberTarget(e.target),e.initTarget!==void 0&&!(e.initTarget instanceof hr)&&typeof e.initTarget!="function")throw new Error("options.initTarget, when provided, must be a Target or a function that returns or resolves to a Target.");if(e.onFinalize!==void 0&&typeof e.onFinalize!="function")throw new TypeError("options.onFinalize, when provided, must be a function.");this.format=e.format,this._target=e.target,this._onFinalize=e.onFinalize??null,this._initTarget=e.initTarget??null,this._initTarget instanceof hr&&this._rememberTarget(this._initTarget),this._muxer=e.format._createMuxer(this)}_getTargetValidated(e){Ce(this._target instanceof Nm);const a=this._target.getTarget(e),n=s=>{if(!(s instanceof hr))throw new TypeError("getTarget must return a Target.");return s};return Ir(a)?a.then(n):n(a)}async _getTarget(e){Ce(this._target instanceof Nm);const a=await this._getTargetValidated(e);return this._emit("target",{target:a,request:e,isRoot:e.isRoot}),this.state==="canceled"?await a._close():this._rememberTarget(a),a}_rememberTarget(e){this._unfinalizedTargets.add(e),e.on("finalized",()=>this._unfinalizedTargets.delete(e),{once:!0})}async _getInitTarget(){if(Ce(this._initTarget!==null),this._initTarget instanceof hr)return this._initTarget;const e=await this._initTarget();return this.state==="canceled"?await e._close():this._rememberTarget(e),e}_hasInitTarget(){return this._initTarget!==null}_getRootTarget(){if(this._rootTarget)return this._rootTarget;if(this._rootTargetPromise)return this._rootTargetPromise;if(this._target instanceof hr)return this._emit("target",{target:this._target,request:null,isRoot:!0}),this._rootTarget=this._target,this._target;const e={path:this._target.rootPath,isRoot:!0,mimeType:this.format.mimeType},a=this._getTargetValidated(e),n=s=>(this.state==="canceled"?s._close():this._rememberTarget(s),this._emit("target",{target:s,request:e,isRoot:!0}),this._rootTarget=s,s);return Ir(a)?this._rootTargetPromise=a.then(n):n(a)}_getRootWriter(e){return this._rootWriterPromise??=(async()=>{const a=await this._getRootTarget(),n=new Rm(a,typeof e=="boolean"?e:e(a));return n.start(),n})()}addVideoTrack(e,a={}){if(!(e instanceof yb))throw new TypeError("source must be a VideoSource.");if(Dm(a),a.rotation!==void 0&&![0,90,180,270].includes(a.rotation))throw new TypeError(`Invalid video rotation: ${a.rotation}. Has to be 0, 90, 180 or 270.`);if(a.flip!==void 0&&typeof a.flip!="boolean")throw new TypeError("metadata.flip, when provided, must be a boolean.");if(a.transformationMatrix!==void 0&&(!Array.isArray(a.transformationMatrix)||a.transformationMatrix.length!==9||!a.transformationMatrix.every(s=>Number.isFinite(s))))throw new TypeError("metadata.transformationMatrix, when provided, must be an array of 9 finite numbers.");if(a.frameRate!==void 0&&(!Number.isFinite(a.frameRate)||a.frameRate<=0))throw new TypeError(`Invalid video frame rate: ${a.frameRate}. Must be a positive number.`);if(a.decoderConfig!==void 0&&Uv({decoderConfig:a.decoderConfig},e._codec),a.primingPacket!==void 0){if(!(a.primingPacket instanceof Ws))throw new TypeError("metadata.primingPacket, when provided, must be an EncodedPacket.");if(a.decoderConfig===void 0)throw new TypeError("metadata.primingPacket can only be provided alongside metadata.decoderConfig.")}const n={...a};return n.group??=this.defaultTrackGroup,this._addTrack(new I7(this.tracks.length+1,this,e,n))}addAudioTrack(e,a={}){if(!(e instanceof kb))throw new TypeError("source must be an AudioSource.");if(Dm(a),a.decoderConfig!==void 0&&Bv({decoderConfig:a.decoderConfig},e._codec),a.primingPacket!==void 0){if(!(a.primingPacket instanceof Ws))throw new TypeError("metadata.primingPacket, when provided, must be an EncodedPacket.");if(a.decoderConfig===void 0)throw new TypeError("metadata.primingPacket can only be provided alongside metadata.decoderConfig.")}const n={...a};return n.group??=this.defaultTrackGroup,this._addTrack(new L7(this.tracks.length+1,this,e,n))}addSubtitleTrack(e,a={}){if(!(e instanceof O7))throw new TypeError("source must be a SubtitleSource.");Dm(a);const n={...a};return n.group??=this.defaultTrackGroup,this._addTrack(new D7(this.tracks.length+1,this,e,n))}setMetadataTags(e){if(H$(e),this.state!=="pending")throw new Error("Cannot set metadata tags after output has been started or canceled.");this._metadataTags=e}_addTrack(e){if(this.state!=="pending")throw new Error("Cannot add track after output has been started or canceled.");if(e.source._connectedTrack)throw new Error("Source is already used for a track.");const a=this.format.getSupportedTrackCounts(),n=this.tracks.reduce((o,l)=>o+(l.type===e.type?1:0),0),s=a[e.type].max;if(n===s)throw new Error(s===0?`${this.format._name} does not support ${e.type} tracks.`:`${this.format._name} does not support more than ${s} ${e.type} track${s===1?"":"s"}.`);const r=a.total.max;if(this.tracks.length===r)throw new Error(`${this.format._name} does not support more than ${r} tracks${r===1?"":"s"} in total.`);if(e.isVideoTrack()){const o=this.format.getSupportedVideoCodecs();if(o.length===0)throw new Error(`${this.format._name} does not support video tracks.`+this.format._codecUnsupportedHint(e.source._codec));if(!o.includes(e.source._codec))throw new Error(`Codec '${e.source._codec}' cannot be contained within ${this.format._name}. Supported video codecs are: ${o.map(l=>`'${l}'`).join(", ")}.`+this.format._codecUnsupportedHint(e.source._codec))}else if(e.isAudioTrack()){const o=this.format.getSupportedAudioCodecs();if(o.length===0)throw new Error(`${this.format._name} does not support audio tracks.`+this.format._codecUnsupportedHint(e.source._codec));if(!o.includes(e.source._codec))throw new Error(`Codec '${e.source._codec}' cannot be contained within ${this.format._name}. Supported audio codecs are: ${o.map(l=>`'${l}'`).join(", ")}.`+this.format._codecUnsupportedHint(e.source._codec))}else if(e.isSubtitleTrack()){const o=this.format.getSupportedSubtitleCodecs();if(o.length===0)throw new Error(`${this.format._name} does not support subtitle tracks.`+this.format._codecUnsupportedHint(e.source._codec));if(!o.includes(e.source._codec))throw new Error(`Codec '${e.source._codec}' cannot be contained within ${this.format._name}. Supported subtitle codecs are: ${o.map(l=>`'${l}'`).join(", ")}.`+this.format._codecUnsupportedHint(e.source._codec))}return this.tracks.push(e),e.source._connectedTrack=e,e}hasEnoughTracks(){const e=this.format.getSupportedTrackCounts();for(const n of qb){const s=this.tracks.reduce((o,l)=>o+(l.type===n?1:0),0),r=e[n].min;if(so+(l.type===n?1:0),0),r=e[n].min;if(s{this.state="started";const n=this._mutex.acquire();try{await this._muxer.start();const s=this.tracks.map(r=>r.source._start());await Promise.all(s)}finally{(await n)()}})()}getMimeType(){return this._muxer.getMimeType()}async cancel(){if(this.state==="canceled")return this._cancelPromise??void 0;if(this.state==="finalizing"||this.state==="finalized"){this.state==="finalized"&&qa._warn("Output has already been finalized.");return}return this._cancelPromise=(async()=>{this.state="canceled";const e=await this._mutex.acquire();try{const a=this.tracks.map(n=>n.source._flushOrWaitForOngoingClose(!0));await Promise.all(a),await Promise.all([...this._unfinalizedTargets].map(n=>n._close())),this._unfinalizedTargets.clear()}finally{e()}})()}async finalize(){if(this.state==="pending")throw new Error("Cannot finalize before starting.");if(this.state==="canceled")throw new Error("Cannot finalize after canceling.");return this._finalizePromise?(qa._warn("Output has already been finalized."),this._finalizePromise):this._finalizePromise=(async()=>{this.state="finalizing";const e=await this._mutex.acquire();try{const a=this.tracks.map(n=>n.source._flushOrWaitForOngoingClose(!1));if(await Promise.all(a),await this._muxer.finalize(),this._rootWriterPromise){const n=await this._rootWriterPromise;n.finalized||(await n.flush(),await n.finalize())}this._onFinalize&&await this._onFinalize(),this.state="finalized"}catch(a){throw this.state="canceled",a}finally{await Promise.all([...this._unfinalizedTargets].map(a=>a._close().catch(()=>{}))),this._unfinalizedTargets.clear(),e()}})()}}function Vm(t,e,a){const n=Number(t);if(!Number.isSafeInteger(n)||n<=0)throw new Error(`${a} video has invalid ${e} metadata`);return n}function H7(t,e,a){const n=atob(t.slice(e,e+a)),s=new Uint8Array(n.length);for(let r=0;r"u")throw new Error("This browser does not support H.264 encoding through WebCodecs");const r=Vm(e.width,"width",n),o=Vm(e.height,"height",n),l=Vm(e.frames,"frame count",n),u=Number(e.fps);if(!Number.isFinite(u)||u<=0)throw new Error(`${n} video has invalid frame rate metadata`);const p=r*o*3,g=p/3*4,h=Math.ceil(p*l/3)*4;if(t.length!==h)throw new Error(`${n} RGB24 payload size does not match its video metadata`);const m=document.createElement("canvas");m.width=r,m.height=o;const f=m.getContext("2d",{alpha:!1});if(!f)throw new Error(`Unable to create the ${n} video canvas`);const d=new AudioContext;try{const c=await d.decodeAudioData(await a.arrayBuffer()),_=Q7(d,c,l/u),b=new On("high"),v=new On("high");if(!await fG("avc",{width:r,height:o,quality:b}))throw new Error(`This browser cannot encode H.264 video for ${n} MP4 output`);const w={numberOfChannels:_.numberOfChannels,sampleRate:_.sampleRate,quality:v},y=typeof AudioEncoder<"u"&&await mG(s,w),T=new tu,O=new V7({format:new Sb({fastStart:"in-memory"}),target:T}),R=new j7(m,{codec:"avc",quality:b,keyFrameInterval:2,onEncodedPacket:(L,x)=>{const U=x?.decoderConfig,D=U?.description;if(x&&U&&D!==void 0){const M={...U};if(D&&typeof D=="object"&&"byteLength"in D){const G=ArrayBuffer.isView(D)?new Uint8Array(D.buffer,D.byteOffset,D.byteLength):new Uint8Array(D);M.description=G.slice().buffer}else delete M.description;x.decoderConfig=M}}}),$=y?new N7({codec:s,quality:v}):null;O.addVideoTrack(R),$&&O.addAudioTrack($),await O.start(),$&&await $.add(_);const P=1/u;for(let L=0;Ltypeof l?.payload=="string"&&l.meta?.format==="rgb24"):void 0;if(!o||typeof o.payload!="string")return{artifacts:r,warning:`${a} returned no RGB24 video artifact.`};if(!e)return{artifacts:r,warning:`${a} MP4 encoding requires the driving audio.`};try{const l=await K7(o.payload,o.meta||{},e,a,s);return r.push({id:`${n}_video`,extension:"mp4",mime:"video/mp4",url:URL.createObjectURL(l.blob)}),{artifacts:r,warning:l.audioIncluded?"":`Browser ${s.toUpperCase()} encoding is unavailable; the MP4 has no audio track.`}}catch(l){return{artifacts:r,warning:`${a} MP4 encoding failed: ${l instanceof Error?l.message:String(l)}`}}}var Y7=ue('
      ');function X7(t,e){Ya(e,!1);let a=Ge(e,"busy",8,!1),n=Ge(e,"sourceFile",8,null),s=Ge(e,"setPanelRunner",8,()=>()=>{}),r=oe(null),o=oe(null);async function l(c){if(!i(r))throw c.warning("Choose a face video.");if(!n())throw c.warning("Choose the speech audio that will drive the lips.");const _=i(r),b=n();await c.ensureLoaded("offline"),c.setStatus("Uploading video and speech audio...");const v=await cc(_,c.signal),w=await So(await jr(b,16e3),c.signal);c.setStatus("Synchronizing lip motion...");const y=await _l({model:c.modelId,request:{audio:w,options:{...c.options,seed:c.seed,reference_video_file:v}}},c.signal);c.setStatus("Encoding MP4...");const T=await Gb(y,b,"LatentSync","latentsync","opus");if(T.warning||!T.artifacts.some(O=>O.mime==="video/mp4")){for(const O of T.artifacts)URL.revokeObjectURL(O.url);throw new Error(T.warning)}return{audio:null,text:T.warning,artifacts:T.artifacts,json:JSON.stringify(y,(O,R)=>O==="payload"&&typeof R=="string"?``:R,2)}}Fs(()=>s()(l)),An();var u=Y7(),p=j(z(u),2);$a(p,c=>E(o,c),()=>i(o));var g=j(p,2),h=j(z(g)),m=z(h,!0);A(h),A(g);var f=j(g,2),d=j(f,2);Nn(d,{get file(){return i(r)},kind:"video",label:"Face video preview"}),A(u),de(()=>{p.disabled=a(),X(m,(i(r),q(()=>i(r)?.name||"No video selected"))),f.disabled=!i(r)||a()}),$e("change",p,c=>E(r,c.currentTarget.files?.[0]||null)),$e("click",f,()=>{E(r,null),i(o)&&hi(o,i(o).value="")}),te(t,u),Xa()}const J7={latentsync:{component:X7,requestMode:"panel",blocksRunWhileUploading:!1,replacesGenericControls:{text:!0,language:!0,duration:!0,voice:!0,chunking:!0}},fish_drama3:{component:b$,requestMode:"panel",blocksRunWhileUploading:!1,replacesGenericControls:{text:!0,language:!0,voice:!0,chunking:!0,settingsImport:!0,advancedJson:!0}},auk:{component:uT,requestMode:"default",blocksRunWhileUploading:!1,replacesGenericControls:{packageButtons:!0,text:!1,genSource:!1,language:!0,seed:!1,duration:!0,params:!0,advancedJson:!1}},lfm2_audio:{component:ET,tasks:["s2s"],requestMode:"panel",blocksRunWhileUploading:!1,replacesGenericControls:{packageButtons:!1,text:!1,genSource:!1,language:!1,seed:!1,duration:!1,params:!1,advancedJson:!1}},liveavatar:{component:YT,requestMode:"default",blocksRunWhileUploading:!0,replacesGenericControls:{packageButtons:!1,text:!1,genSource:!1,language:!0,seed:!1,duration:!0,params:!0,advancedJson:!0}},yue2:{component:o$,requestMode:"yue2",blocksRunWhileUploading:!0,replacesGenericControls:{packageButtons:!0,text:!0,genSource:!0,language:!0,seed:!0,duration:!0,params:!0,advancedJson:!0}}};function Z7(t,e){if(!t)return;const a=J7[t],n=a?.tasks;if(!(n&&!n.includes(e||"")))return a}var eF=ue('
      LoRA
      '),tF=ue('
      ',1);function iF(t,e){Ya(e,!1);const a=oe(),n=oe();let s=Ge(e,"modelId",8),r=Ge(e,"text",12,""),o=Ge(e,"lyrics",12,""),l=Ge(e,"language",12,""),u=Ge(e,"duration",12,30),p=Ge(e,"seed",24,()=>-1),g=Ge(e,"busy",8,!1),h=Ge(e,"adapterEditable",8,!1),m=Ge(e,"rewritingCaption",12,!1),f=Ge(e,"advancedValues",28,()=>({})),d=Ge(e,"paramSpecs",24,()=>[]),c=Ge(e,"outputText",12,""),_=Ge(e,"outputJson",12,""),b=Ge(e,"status",12,""),v=Ge(e,"warningStatus",12,""),w=Ge(e,"errorStatus",12,""),y=Ge(e,"ensureLoaded",8),T=Ge(e,"requestOptions",8),O=Ge(e,"resolveRequestSeed",8),R=Ge(e,"setParameterValue",8),$=Ge(e,"log",8),P=Ge(e,"tr",8);function L(Q){if(Array.isArray(Q.artifacts)){const Y=Q.artifacts.find(C=>typeof C=="object"&&C!==null&&C.id==="ace_step_caption_plan"&&typeof C.payload=="string");if(Y){const C=Uint8Array.from(atob(Y.payload),re=>re.charCodeAt(0));return JSON.parse(new TextDecoder().decode(C))}}return typeof Q.text=="string"?{caption:Q.text}:{}}async function x(){if(!(g()||m())){if(!r().trim()&&!o().trim()){b("Enter a caption or lyrics to rewrite."),v(b()),w("");return}m(!0),v(""),w(""),b(P()("request.rewritingCaption"));try{await y()();const Q={text:r(),seed:O()(p()),duration_seconds:u(),options:{...T()(),rewrite_caption:!0}};l().trim()&&(Q.language=l()),o().trim()&&(Q.lyrics=o());const Y=await _l({model:s(),request:Q}),C=L(Y);typeof C.caption=="string"&&C.caption.trim()&&r(C.caption),typeof C.language=="string"&&C.language.trim()&&l(C.language),typeof C.duration_seconds=="number"&&Number.isFinite(C.duration_seconds)&&C.duration_seconds>0&&u(C.duration_seconds);const re={...f()};typeof C.bpm=="number"&&Number.isFinite(C.bpm)&&(re.bpm=C.bpm),typeof C.keyscale=="string"&&(re.keyscale=C.keyscale),typeof C.timesignature=="string"&&(re.timesignature=C.timesignature),f(re),c(typeof Y.text=="string"?Y.text:""),_(JSON.stringify(C,null,2)),b("Caption rewritten.")}catch(Q){b(Q instanceof Error?Q.message:String(Q)),w(b()),$()(`Caption rewrite failed: ${b()}`)}finally{m(!1)}}}Ke(()=>Z(d()),()=>{E(a,d().find(Q=>Q.name==="lora"))}),Ke(()=>Z(d()),()=>{E(n,d().find(Q=>Q.name==="lora_scale"))}),ds(),An();var U=tF(),D=Et(U),M=z(D),G=j(M),B=z(G,!0);A(G),A(D);var V=j(D,2);La(V);var I=j(V,2),k=z(I),S=z(k,!0);A(k),A(I);var F=j(I,2);{var H=Q=>{var Y=eF(),C=z(Y),re=j(z(C)),he=z(re,!0);A(re),A(C);var ie=j(C,2),ye=z(ie),se=z(ye),we=j(z(se)),ae=z(we,!0);A(we),A(se);var Re=j(se,2);It(Re),A(ye);var ee=j(ye,2),Oe=j(z(ee),2);It(Oe),A(ee);var Ie=j(ee,2);A(ie),A(Y),de((tt,Xe,Le)=>{X(he,(Z(f()),q(()=>f().lora?"Selected":"None"))),X(ae,tt),Re.disabled=g()||m()||!h(),be(Re,"title",h()?"":"Set adapter session options in the server configuration."),sa(Re,Xe),Oe.disabled=(Z(g()),Z(m()),Z(h()),Z(f()),q(()=>g()||m()||!h()||!f().lora)),sa(Oe,Le),Ie.disabled=(Z(g()),Z(m()),Z(h()),Z(f()),q(()=>g()||m()||!h()||!f().lora))},[()=>(Z(P()),q(()=>P()("request.optional"))),()=>(Z(f()),q(()=>String(f().lora??""))),()=>(Z(f()),q(()=>Number(f().lora_scale??1)))]),$e("input",Re,tt=>R()(i(a),tt.currentTarget.value.trim())),$e("input",Oe,tt=>{Number.isFinite(tt.currentTarget.valueAsNumber)&&R()(i(n),tt.currentTarget.valueAsNumber)}),$e("click",Ie,()=>R()(i(a),"")),te(Q,Y)};qe(F,Q=>{i(a)&&i(n)&&Q(H)})}de((Q,Y,C,re)=>{X(M,`${Q??""} `),X(B,Y),k.disabled=C,X(S,re)},[()=>(Z(P()),q(()=>P()("request.lyrics"))),()=>(Z(P()),q(()=>P()("request.optional"))),()=>(Z(g()),Z(m()),Z(r()),Z(o()),q(()=>g()||m()||!r().trim()&&!o().trim())),()=>(Z(m()),Z(P()),q(()=>m()?P()("request.rewritingCaption"):P()("request.rewriteCaption")))]),Fi(V,o),$e("click",k,x),te(t,U),Xa()}var aF=ue(' ',1),Fb=ue(" "),nF=ue('
      ',1),sF=ue(' ',1),rF=ue('
      '),oF=ue('
      '),lF=ue('
      ',1),cF=ue(' ',1),dF=ue('
      '),Hm=ue(""),uF=ue('
      '),fF=ue('
      '),mF=ue('

      '),pF=ue(''),gF=ue('
       
      '),hF=ue("
      "),_F=ue('
      '),vF=ue("

      "),bF=ue('

      '),yF=ue('
      '),wF=ue('

      ',1),kF=ue('
      ~

      '),xF=ue('

      JSON

      ',1);function SF(t,e){Ya(e,!1);const a=oe();let n=Ge(e,"activeCatalog",24,()=>[]),s=Ge(e,"loadedModels",24,()=>[]),r=Ge(e,"savedVoices",24,()=>[]),o=Ge(e,"server",8,null),l=Ge(e,"modelsFolder",8,""),u=Ge(e,"maxTokens",8,1024),p=Ge(e,"entrySelectable",8,()=>!0),g=Ge(e,"studioPackageSlots",8,()=>[]),h=Ge(e,"packageIsAvailable",8,()=>!1),m=Ge(e,"packageSessionOptionsMatch",8,()=>!0),f=Ge(e,"supportsMaxTokens",8,()=>!1),d=Ge(e,"supportsRequestOption",8,()=>!1),c=Ge(e,"requiresRequestOption",8,()=>!1),_=Ge(e,"refresh",8,async()=>{}),b=Ge(e,"log",8,()=>{}),v=Ge(e,"tr",8,(le,Ae,Ue=le)=>Ue);class w extends Error{}let y=oe("tts"),T=oe(""),O=oe(""),R=oe(""),$=oe(""),P=oe(1234),L=oe(null),x=oe(null),U=oe(""),D=oe("default"),M=oe(""),G=oe(""),B=oe(null),V=oe(null),I=oe(""),k=oe("{}"),S=oe([]),F=oe(!1),H=null,Q=oe(""),Y=oe([]),C=oe(),re=oe([]),he=oe([]),ie=oe([]),ye=oe([]),se=oe(""),we=oe(""),ae=oe("");const Re={demo_1_man:"demo_1_man",demo_2_man:"demo_2_man",demo_3_woman:"demo_3_woman",demo_4_woman:"demo_4_woman"};async function ee(){try{E(ie,await C1())}catch(le){E(ie,[]),b()(`Arena voices unavailable: ${le instanceof Error?le.message:le}`)}}function Oe(le){if(!l())return le;const Ae=le.replace(/\\/g,"/");if(Ae==="models")return l();if(!Ae.startsWith("models/"))return le;const Ue=Ae.slice(7),pt=l().includes("\\")?"\\":"/";return`${l().replace(/[\\/]+$/,"")}${pt}${Ue.replace(/\//g,pt)}`}function Ie(le){return le.replace(/\\/g,"/").replace(/\/$/,"").toLowerCase()}function tt(le,Ae){const Ue=Ie(Ae),pt=Ie(le);return Ue===pt||Ue.endsWith(`/${pt}`)}function Xe(le){return!!o()&&(!o()?.ui_management||le.configured===!0)}function Le(le,Ae){return Xe(le)?le.path:Oe(Ae?.path||le.path)}function Te(le,Ae){return{...le.session_options||{},...Ae?.session_options||{}}}function et(le){if(!Number.isInteger(le)||le<-1||le>4294967295)throw new Error(v()("arena.error.seed"));if(le>=0)return le;const Ae=new Uint32Array(1);return globalThis.crypto.getRandomValues(Ae),Ae[0]}function ce(le){return["clon","vc","svc"].includes(le.task)&&le.family!=="rvc"||le.task==="s2s"&&le.family==="personaplex"||le.task==="tts"&&!["supertonic"].includes(le.family)}function _e(le){return["clon","vc","svc"].includes(le.task)&&le.family!=="rvc"}function ne(le){return le.task==="tts"&&le.family==="qwen3_tts"&&!le.id.includes("custom")}function me(le,Ae){return c()(le,"reference_text")||Ae&&ne(le)}function ve(le){return i(y)==="vc"&&le.task==="vc"&&le.family!=="rvc"}function pe(){return i(y)==="tts"&&i(D)==="builtin"&&i(M)?Re[i(M)]||i(M):""}function Se(le){return le.normalize("NFKC").toLowerCase().replace(/[^\p{L}\p{N}']+/gu," ").trim().split(/\s+/).filter(Boolean)}function Me(le,Ae){const Ue=Se(le),pt=Se(Ae);if(!Ue.length)return"";const yt=Array.from({length:pt.length+1},(Je,Ft)=>Ft),at=new Array(pt.length+1);for(let Je=1;Je<=Ue.length;Je+=1){at[0]=Je;for(let Ft=1;Ft<=pt.length;Ft+=1){const ra=yt[Ft-1]+(Ue[Je-1]===pt[Ft-1]?0:1),oa=yt[Ft]+1,Ui=at[Ft-1]+1;at[Ft]=Math.min(ra,oa,Ui)}for(let Ft=0;Ft<=pt.length;Ft+=1)yt[Ft]=at[Ft]}return`${(yt[pt.length]/Ue.length*100).toFixed(2)}%`}function ge(le){const Ae=Number.parseFloat(le);return Number.isFinite(Ae)?Ae:Number.POSITIVE_INFINITY}function ze(le,Ae){const Ue=le.status==="done",pt=Ae.status==="done";if(Ue!==pt)return Ue?-1:1;if(Ue&&pt){const yt=ge(le.rtf)-ge(Ae.rtf);if(yt!==0)return yt}return i(S).indexOf(le)-i(S).indexOf(Ae)}function Qe(le){return v()(`arena.itemStatus.${le}`,{},le)}function Ee(le){if(nt(),le.startsWith("saved:")){const Ae=r().find(Ue=>Ue.id===le.slice(6));if(!Ae)return;E(G,Ae.id),E(D,"reference"),E(B,new File([Ae.audio],`${Ae.name}.wav`,{type:Ae.audio.type||"audio/wav"})),E(I,Ae.transcript)}else le.startsWith("preset:")?(E(D,"builtin"),E(M,le.slice(7))):le==="reference"&&E(D,"reference")}function xe(le){(i(G)||i(M))&&E(I,""),E(G,""),E(M,""),E(B,le),le&&E(D,"reference")}function He(){E(L,null),i(x)&&hi(x,i(x).value="")}function nt(){E(D,"default"),E(G,""),E(M,""),E(B,null),E(I,""),i(V)&&hi(V,i(V).value="")}function je(le){return n().find(Ae=>Ae.id===le.entryId)}function Zt(le,Ae){return(le.install_packages||[]).find(Ue=>Ue.id===Ae.packageId)}function Pe(le,Ae){E(S,i(S).map(Ue=>Ue.id===le?{...Ue,...Ae}:Ue))}function We(){for(const le of i(S))le.outputUrl&&URL.revokeObjectURL(le.outputUrl);E(S,i(S).map(le=>({...le,status:"queued",note:"",error:"",outputUrl:"",outputText:"",wallMs:"",rtf:"",wer:""})))}function $t(){for(const le of i(S))le.outputUrl&&URL.revokeObjectURL(le.outputUrl);E(S,[])}function dt(){if(!i(C))return;const le=i(re).find(Ue=>Ue.id===i(O));if(i(S).some(Ue=>Ue.entryId===i(C)?.id&&Ue.packageId===le?.id)){E(Q,v()("arena.status.duplicate",{model:i(C).display_name,package:le?.label||""}));return}E(S,[...i(S),{id:crypto.randomUUID(),entryId:i(C).id,packageId:le?.id,label:i(C).display_name,packageLabel:le?.label||v()("arena.package.configured"),status:"queued",note:"",error:"",outputUrl:"",outputText:"",wallMs:"",rtf:"",wer:""}])}function wt(le){const Ae=i(S).find(Ue=>Ue.id===le);Ae?.outputUrl&&URL.revokeObjectURL(Ae.outputUrl),E(S,i(S).filter(Ue=>Ue.id!==le))}function qt(){try{const le=JSON.parse(i(k)||"{}");if(Array.isArray(le)||le===null)throw new Error(v()("arena.error.jsonObject"));return le}catch(le){throw new Error(v()("arena.error.invalidJson",{error:le instanceof Error?le.message:String(le)}))}}async function Nt(le){if(!le)return;const Ae=await jr(le);return So(Ae,H?.signal)}async function xt(le,Ae){if(Xe(le)){if(!s().some(at=>at.id===le.id&&at.loaded))throw new Error(v()("arena.error.unregistered"));return}if(Ae&&!h()(le,Ae))throw new w(v()("arena.error.notDownloaded",{package:Ae.label}));const Ue=Le(le,Ae);if(s().find(at=>at.id===le.id&&at.loaded&&tt(Ue,at.path)&&(!Ae||m()(le,Ae,at))))return;const yt=s().filter(at=>at.loaded&&(at.id!==le.id||!tt(Ue,at.path)));for(const at of yt)await Pr(at.id);if(yt.length&&await _()(),await am({id:le.id,path:Ue,family:le.family,task:le.task,mode:le.mode||"offline",load_options:le.load_options||{},session_options:Te(le,Ae)}),await _()(),!s().some(at=>at.id===le.id&&at.loaded&&tt(Ue,at.path)&&(!Ae||m()(le,Ae,at))))throw new Error(v()("arena.error.loadFailed"))}async function ri(le,Ae){const Ue=je(le);if(!Ue){Pe(le.id,{status:"failed",error:v()("arena.error.missingCatalog")});return}const pt=Zt(Ue,le),yt=performance.now();try{Pe(le.id,{status:"loading",note:v()("arena.status.loadingModel"),error:""}),await xt(Ue,pt),Pe(le.id,{status:"running",note:v()("arena.status.runningRequest")});const at={...Ue.default_options||{},...Ae},Je=pe(),Ft=i(D)==="reference"&&!!i(B);if(ve(Ue)&&!Ft){Pe(le.id,{status:"skipped",note:v()("arena.note.skippedTargetVoice"),error:""});return}if(i(y)==="tts"&&me(Ue,Ft)&&!i(I).trim()){Pe(le.id,{status:"skipped",note:v()("arena.note.skippedReferenceText"),error:""});return}const oa=Ft&&ce(Ue)?await Nt(i(B)):void 0;let Ui="";if(Je)Ui=v()("arena.note.builtinVoice",{voice:i(M)});else if(Ft&&oa)Ui=v()("arena.note.referenceVoice");else if(Ft&&!ce(Ue))Ui=v()("arena.note.referenceUnsupported");else if(Ue.default_voice)Ui=v()("arena.note.defaultVoice",{voice:Ue.default_voice});else if(_e(Ue)&&!Je){Pe(le.id,{status:"skipped",note:v()("arena.note.skippedReferenceVoice"),error:""});return}if(i(y)==="tts"){if(!i(R).trim())throw new w(v()("arena.error.enterTtsText"));const Bi={model:Ue.id,input:i(R),language:i($),seed:et(i(P)),options:at};f()(Ue)&&(Bi.max_tokens=u()),oa?Bi.voice_ref=oa:Je?Bi.voice=Je:Ue.default_voice&&(Bi.voice=Ue.default_voice),Ft&&i(I).trim()&&d()(Ue,"reference_text")&&(Bi.reference_text=i(I));const ca=await nm(Bi,H?.signal);Pe(le.id,{status:"done",note:Ui,outputUrl:URL.createObjectURL(ca.blob),wallMs:ca.wallMs||`${(performance.now()-yt).toFixed(1)}`,rtf:ca.rtf||""});return}if(i(y)==="asr"){const Bi=await Nt(i(L));if(!Bi)throw new w(v()("arena.error.chooseAsrSource"));const ca=await sm({model:Ue.id,audio:Bi,language:i($),options:at},H?.signal),es=typeof ca.text=="string"?ca.text:"",Vn=ca.timing;Pe(le.id,{status:"done",note:Ui,outputText:es,wallMs:typeof Vn?.wall_ms=="number"?String(Vn.wall_ms):"",rtf:typeof Vn?.rtf=="number"?String(Vn.rtf):"",wer:i(U).trim()?Me(i(U),es):""});return}const Oi=await Nt(i(L));if(!Oi)throw new w(v()("arena.error.chooseVcSource"));const Ra={audio:Oi,seed:et(i(P)),options:at};i(R).trim()&&(Ra.text=i(R)),i($).trim()&&(Ra.language=i($)),oa?Ra.voice_ref=oa:Je&&(Ra.voice_id=Je);const Ci=await _l({model:Ue.id,request:Ra},H?.signal),Ga=typeof Ci.audio=="string"?Ci.audio:Array.isArray(Ci.named_audio_outputs)&&typeof Ci.named_audio_outputs[0]?.audio=="string"?Ci.named_audio_outputs[0].audio:"";if(!Ga)throw new Error(v()("arena.error.noAudio"));const la=Ci.timing;Pe(le.id,{status:"done",note:Ui,outputUrl:rm(Ga),wallMs:typeof la?.wall_ms=="number"?String(la.wall_ms):"",rtf:typeof la?.rtf=="number"?String(la.rtf):""})}catch(at){Pe(le.id,{status:at instanceof w?"skipped":"failed",error:at instanceof Error?at.message:String(at),note:""}),b()(`Arena row failed: ${at instanceof Error?at.message:at}`)}}async function di(){if(!i(F)){if(!i(S).length){E(Q,v()("arena.status.addModel"));return}E(F,!0),H=new AbortController,We(),E(Q,v()("arena.status.running",{mode:i(ae)})),b()(i(Q));try{const le=qt();for(const Ae of i(S)){if(H?.signal.aborted)break;await ri(Ae,le)}E(Q,v()("arena.status.complete")),b()(i(Q))}catch(le){E(Q,le instanceof Error?le.message:String(le))}finally{E(F,!1),H=null}}}function gn(){H?.abort()}ul(()=>{H?.abort();for(const le of i(S))le.outputUrl&&URL.revokeObjectURL(le.outputUrl)}),Fs(ee),Ke(()=>(Z(n()),i(y)),()=>{E(Y,n().filter(le=>le.arena!==!1&&(i(y)==="tts"?["tts","clon"].includes(le.task):i(y)==="vc"?le.task==="vc":le.task==="asr")))}),Ke(()=>(i(T),i(Y)),()=>{(!i(T)||!i(Y).some(le=>le.id===i(T)))&&E(T,i(Y)[0]?.id||"")}),Ke(()=>(i(Y),i(T)),()=>{E(C,i(Y).find(le=>le.id===i(T))||i(Y)[0])}),Ke(()=>(i(C),Z(g())),()=>{E(re,i(C)?g()(i(C)).map(le=>le.choice).filter(le=>!!le):[])}),Ke(()=>(i(re),i(O)),()=>{i(re).length&&!i(re).some(le=>le.id===i(O))&&E(O,i(re)[0].id)}),Ke(()=>i(ie),()=>{E(ye,[...i(ie)].sort((le,Ae)=>le.localeCompare(Ae,"en",{sensitivity:"base",numeric:!0})))}),Ke(()=>(i(D),i(ye)),()=>{i(D)==="builtin"&&!i(ye).length&&E(D,"default")}),Ke(()=>(i(y),i(D)),()=>{i(y)==="vc"&&i(D)!=="reference"&&(E(D,"reference"),E(M,""))}),Ke(()=>(i(D),i(ye),i(M)),()=>{i(D)==="builtin"&&!i(ye).includes(i(M))&&E(M,i(ye)[0]||"")}),Ke(()=>(i(D),i(M),Rd),()=>{E(a,i(D)==="builtin"&&i(M)?Rd(i(M)):"")}),Ke(()=>(i(y),Z(v())),()=>{E(se,i(y)==="tts"?v()("arena.title.tts"):i(y)==="vc"?v()("arena.title.vc"):v()("arena.title.asr"))}),Ke(()=>(i(y),Z(v())),()=>{E(we,i(y)==="tts"?v()("arena.subtitle.tts"):i(y)==="vc"?v()("arena.subtitle.vc"):v()("arena.subtitle.asr"))}),Ke(()=>(i(y),Z(v())),()=>{E(ae,i(y)==="tts"?v()("arena.mode.tts"):i(y)==="vc"?v()("arena.mode.vc"):v()("arena.mode.asr"))}),Ke(()=>i(S),()=>{E(he,i(S).every(le=>["done","failed","skipped"].includes(le.status))?[...i(S)].sort(ze):i(S))}),ds();var Kt={runArena:di};An();var ta=xF(),Va=Et(ta),Ja=z(Va),on=z(Ja),hn=z(on,!0);A(on);var yi=j(on,2),mi=z(yi,!0);A(yi);var pi=j(yi,2),Pi=z(pi,!0);A(pi),A(Ja);var Za=j(Ja,2),pa=z(Za);let ln;var wa=z(pa,!0);A(pa);var Qi=j(pa,2);let vi;var Cn=z(Qi,!0);A(Qi);var en=j(Qi,2);let Ln;var Ha=z(en,!0);A(en),A(Za),A(Va);var Wa=j(Va,2),kn=z(Wa),er=z(kn),_n=z(er),bi=z(_n),Dn=z(bi,!0);A(bi);var Jn=j(bi),Zn=z(Jn,!0);A(Jn),A(_n);var zs=j(_n,2),_r=z(zs,!0);A(zs),A(er);var Us=j(er,2);{var Vi=le=>{var Ae=aF(),Ue=Et(Ae),pt=z(Ue,!0);A(Ue);var yt=j(Ue,2);La(yt),de((at,Je)=>{X(pt,at),be(yt,"placeholder",Je)},[()=>(Z(v()),q(()=>v()("request.text"))),()=>(Z(v()),q(()=>v()("arena.input.textPlaceholder")))]),Fi(yt,()=>i(R),at=>E(R,at)),te(le,Ae)},Ti=le=>{var Ae=nF(),Ue=Et(Ae),pt=z(Ue,!0);A(Ue);var yt=j(Ue,2);$a(yt,Bi=>E(x,Bi),()=>i(x));var at=j(yt,2),Je=z(at),Ft=z(Je,!0);A(Je);var ra=j(Je),oa=z(ra,!0);A(ra),A(at);var Ui=j(at,2),Oi=z(Ui),Ra=z(Oi,!0);A(Oi);var Ci=j(Oi,2);{var Ga=Bi=>{var ca=Fb(),es=z(ca,!0);A(ca),de(()=>X(es,(i(L),q(()=>i(L).name)))),te(Bi,ca)};qe(Ci,Bi=>{i(L)&&Bi(Ga)})}A(Ui);var la=j(Ui,2);{let Bi=Qt(()=>(Z(v()),q(()=>v()("file.preview"))));Nn(la,{get file(){return i(L)},kind:"audio",get label(){return i(Bi)}})}de((Bi,ca,es,Vn)=>{X(pt,Bi),X(Ft,ca),X(oa,es),Oi.disabled=!i(L),X(Ra,Vn)},[()=>(Z(v()),q(()=>v()("request.sourceAudio"))),()=>(Z(v()),q(()=>v()("file.choose"))),()=>(i(L),Z(v()),q(()=>i(L)?.name||v()("file.none"))),()=>(Z(v()),q(()=>v()("file.clear")))]),$e("change",yt,Bi=>E(L,Bi.currentTarget.files?.[0]||null)),$e("click",Oi,He),te(le,Ae)};qe(Us,le=>{i(y)==="tts"?le(Vi):le(Ti,-1)})}var ka=j(Us,2);{var Ei=le=>{var Ae=sF(),Ue=Et(Ae),pt=z(Ue),yt=j(pt),at=z(yt,!0);A(yt),A(Ue);var Je=j(Ue,2);La(Je),de((Ft,ra,oa)=>{X(pt,`${Ft??""} `),X(at,ra),be(Je,"placeholder",oa)},[()=>(Z(v()),q(()=>v()("arena.input.groundTruth"))),()=>(Z(v()),q(()=>v()("request.optional"))),()=>(Z(v()),q(()=>v()("arena.input.groundTruthPlaceholder")))]),Fi(Je,()=>i(U),Ft=>E(U,Ft)),te(le,Ae)};qe(ka,le=>{i(y)==="asr"&&le(Ei)})}var Yi=j(ka,2),zi=z(Yi),Fe=z(zi),fe=z(Fe),Ve=j(fe),rt=z(Ve,!0);A(Ve),A(Fe);var ei=j(Fe,2);It(ei),A(zi);var ti=j(zi,2);{var Ot=le=>{var Ae=rF(),Ue=z(Ae),pt=z(Ue,!0);A(Ue);var yt=j(Ue,2);It(yt),A(Ae),de(at=>X(pt,at),[()=>(Z(v()),q(()=>v()("request.seed")))]),Fi(yt,()=>i(P),at=>E(P,at)),te(le,Ae)};qe(ti,le=>{i(y)!=="asr"&&le(Ot)})}A(Yi);var _t=j(Yi,2);{var oi=le=>{var Ae=oF(),Ue=z(Ae),pt=z(Ue);{let Ui=Qt(()=>i(G)?`saved:${i(G)}`:i(D)==="builtin"?`preset:${i(M)}`:i(D)==="reference"?"reference":""),Oi=Qt(()=>i(y)==="tts"?i(ye):[]),Ra=Qt(()=>(Z(v()),q(()=>v()("arena.voice.builtin")))),Ci=Qt(()=>(Z(v()),q(()=>v()("arena.voice.modelDefault")))),Ga=Qt(()=>i(y)==="tts");L1(pt,{id:"arena-voice-mode",get value(){return i(Ui)},get presets(){return i(Oi)},get savedVoices(){return r()},get presetLabel(){return i(Ra)},get emptyLabel(){return i(Ci)},get allowEmpty(){return i(Ga)},referenceOption:!0,get tr(){return v()},get disabled(){return i(F)},onselect:Ee})}A(Ue);var yt=j(Ue,2),at=z(yt),Je=z(at),Ft=j(Je),ra=z(Ft,!0);A(Ft),A(at);var oa=j(at,2);La(oa),A(yt),A(Ae),de((Ui,Oi)=>{X(Je,`${Ui??""} `),X(ra,Oi)},[()=>(Z(v()),q(()=>v()("voice.referenceText"))),()=>(Z(v()),q(()=>v()("request.optional")))]),Fi(oa,()=>i(I),Ui=>E(I,Ui)),te(le,Ae)};qe(_t,le=>{i(y)!=="asr"&&le(oi)})}var Rt=j(_t,2);{var jt=le=>{var Ae=lF(),Ue=Et(Ae),pt=z(Ue,!0);A(Ue);var yt=j(Ue,2);{let at=Qt(()=>(Z(v()),q(()=>v()("file.preview"))));Nn(yt,{get src(){return i(a)},get name(){return i(M)},kind:"audio",get label(){return i(at)}})}de(at=>X(pt,at),[()=>(Z(v()),q(()=>v()("arena.voice.builtinNote")))]),te(le,Ae)},Ai=le=>{var Ae=cF(),Ue=Et(Ae),pt=z(Ue),yt=j(pt),at=z(yt,!0);A(yt),A(Ue);var Je=j(Ue,2);$a(Je,Ci=>E(V,Ci),()=>i(V));var Ft=j(Je,2),ra=z(Ft),oa=z(ra,!0);A(ra);var Ui=j(ra),Oi=z(Ui,!0);A(Ui),A(Ft);var Ra=j(Ft,2);{let Ci=Qt(()=>(Z(v()),q(()=>v()("file.preview"))));Nn(Ra,{get file(){return i(B)},kind:"audio",get label(){return i(Ci)}})}de((Ci,Ga,la,Bi)=>{X(pt,`${Ci??""} `),X(at,Ga),X(oa,la),X(Oi,Bi)},[()=>(i(y),Z(v()),q(()=>i(y)==="vc"?v()("arena.voice.targetSpeaker"):v()("voice.reference"))),()=>(i(y),Z(v()),q(()=>i(y)==="vc"?v()("voice.required"):v()("voice.optional"))),()=>(Z(v()),q(()=>v()("file.choose"))),()=>(i(B),Z(v()),q(()=>i(B)?.name||v()("file.none")))]),$e("change",Je,Ci=>xe(Ci.currentTarget.files?.[0]||null)),te(le,Ae)};qe(Rt,le=>{i(D)==="builtin"?le(jt):(i(y)==="vc"||i(D)==="reference")&&le(Ai,1)})}var Ni=j(Rt,2);{var W=le=>{var Ae=dF(),Ue=z(Ae),pt=z(Ue,!0);A(Ue);var yt=j(Ue,2);{var at=Je=>{var Ft=Fb(),ra=z(Ft,!0);A(Ft),de(()=>X(ra,(i(B),q(()=>i(B).name)))),te(Je,Ft)};qe(yt,Je=>{i(B)&&Je(at)})}A(Ae),de((Je,Ft)=>{Ue.disabled=Je,X(pt,Ft)},[()=>(i(D),i(B),i(I),q(()=>i(D)==="default"&&!i(B)&&!i(I).trim())),()=>(i(y),Z(v()),q(()=>i(y)==="vc"?v()("arena.voice.clearTarget"):v()("arena.voice.clearReference")))]),$e("click",Ue,nt),te(le,Ae)};qe(Ni,le=>{i(y)!=="asr"&&le(W)})}var St=j(Ni,2),Xi=z(St),cn=z(Xi);Ea(),A(Xi);var tr=j(Xi,2);La(tr),A(St),A(kn);var vn=j(kn,2),vr=z(vn),Wr=z(vr),Mo=z(Wr),Qr=z(Mo,!0);A(Mo);var Kr=j(Mo),Jg=z(Kr,!0);A(Kr),A(Wr);var Fc=j(Wr,2),Zg=z(Fc,!0);A(Fc),A(vr);var ir=j(vr,2),Ac=z(ir),Cc=z(Ac),Yr=z(Cc,!0);A(Cc);var Eo=j(Cc,2);Mt(Eo,5,()=>i(Y),Xt,(le,Ae)=>{var Ue=Hm(),pt=z(Ue,!0);A(Ue);var yt={};de(at=>{Ue.disabled=at,X(pt,(i(Ae),q(()=>i(Ae).display_name))),yt!==(yt=(i(Ae),q(()=>i(Ae).id)))&&(Ue.value=(Ue.__value=(i(Ae),q(()=>i(Ae).id)))??"")},[()=>(Z(p()),i(Ae),q(()=>!p()(i(Ae))))]),te(le,Ue)}),A(Eo),A(Ac);var Xr=j(Ac,2),Jr=z(Xr),eh=z(Jr,!0);A(Jr);var ws=j(Jr,2),Mc=z(ws);Mt(Mc,1,()=>i(re),Xt,(le,Ae)=>{var Ue=Hm(),pt=z(Ue);A(Ue);var yt={};de((at,Je)=>{Ue.disabled=at,X(pt,`${i(Ae),q(()=>i(Ae).label)??""}${Je??""}`),yt!==(yt=(i(Ae),q(()=>i(Ae).id)))&&(Ue.value=(Ue.__value=(i(Ae),q(()=>i(Ae).id)))??"")},[()=>(i(C),Z(h()),i(Ae),q(()=>i(C)?!h()(i(C),i(Ae)):!0)),()=>(i(C),Z(h()),i(Ae),Z(v()),q(()=>i(C)&&h()(i(C),i(Ae))?"":` · ${v()("studio.notDownloaded")}`))]),te(le,Ue)});var cu=j(Mc);{var du=le=>{var Ae=Hm(),Ue=z(Ae,!0);A(Ae),Ae.value=Ae.__value="",de(pt=>X(Ue,pt),[()=>(Z(v()),q(()=>v()("arena.package.configured")))]),te(le,Ae)};qe(cu,le=>{i(re),i(C),q(()=>!i(re).length&&i(C))&&le(du)})}A(ws),A(Xr);var wl=j(Xr,2),Ec=z(wl,!0);A(wl),A(ir);var zc=j(ir,2);{var Ba=le=>{var Ae=fF();Mt(Ae,5,()=>i(S),Xt,(Ue,pt)=>{var yt=uF();let at;var Je=z(yt),Ft=z(Je),ra=z(Ft,!0);A(Ft);var oa=j(Ft,2),Ui=z(oa,!0);A(oa),A(Je);var Oi=j(Je,2),Ra=z(Oi,!0);A(Oi);var Ci=j(Oi,2),Ga=z(Ci,!0);A(Ci),A(yt),de((la,Bi)=>{at=Gi(yt,1,"",null,at,{done:i(pt).status==="done",failed:i(pt).status==="failed",skipped:i(pt).status==="skipped"}),X(ra,(i(pt),q(()=>i(pt).label))),X(Ui,(i(pt),q(()=>i(pt).packageLabel))),X(Ra,la),Ci.disabled=i(F),X(Ga,Bi)},[()=>(i(pt),q(()=>Qe(i(pt).status))),()=>(Z(v()),q(()=>v()("arena.queue.remove")))]),$e("click",Ci,()=>wt(i(pt).id)),te(Ue,yt)}),A(Ae),te(le,Ae)},uu=le=>{var Ae=mF(),Ue=z(Ae),pt=z(Ue,!0);A(Ue),A(Ae),de(yt=>X(pt,yt),[()=>(Z(v()),q(()=>v()("arena.queue.empty")))]),te(le,Ae)};qe(zc,le=>{i(S),q(()=>i(S).length)?le(Ba):le(uu,-1)})}A(vn);var Qa=j(vn,2),Bs=z(Qa),ga=z(Bs),kl=z(ga),Mn=z(kl,!0);A(kl);var wi=j(kl),zo=z(wi,!0);A(wi),A(ga);var Uo=j(ga,2),Bo=z(Uo);A(Uo),A(Bs);var fu=j(Bs,2);{var br=le=>{var Ae=wF(),Ue=Et(Ae),pt=z(Ue,!0);A(Ue);var yt=j(Ue,2);Mt(yt,5,()=>i(he),Xt,(at,Je,Ft)=>{var ra=yF();let oa;var Ui=z(ra),Oi=z(Ui),Ra=z(Oi,!0);A(Oi);var Ci=j(Oi,2),Ga=z(Ci),la=z(Ga,!0);A(Ga);var Bi=j(Ga,2),ca=z(Bi,!0);A(Bi),A(Ci);var es=j(Ci,2),Vn=z(es,!0);A(es),A(Ui);var Zr=j(Ui,2);{var Bc=da=>{var xa=pF();de(()=>be(xa,"src",(i(Je),q(()=>i(Je).outputUrl)))),te(da,xa)};qe(Zr,da=>{i(Je),q(()=>i(Je).outputUrl)&&da(Bc)})}var _u=j(Zr,2);{var th=da=>{var xa=gF(),Rs=z(xa,!0);A(xa),de(()=>X(Rs,(i(Je),q(()=>i(Je).outputText)))),te(da,xa)};qe(_u,da=>{i(Je),q(()=>i(Je).outputText)&&da(th)})}var Rc=j(_u,2);{var $l=da=>{var xa=_F(),Rs=z(xa),tn=z(Rs),js=z(tn,!0);A(tn);var No=j(tn),vu=z(No,!0);A(No),A(Rs);var Sr=j(Rs,2),ql=z(Sr),nh=z(ql,!0);A(ql);var bu=j(ql),Gl=z(bu,!0);A(bu),A(Sr);var sh=j(Sr,2);{var Fl=Oo=>{var En=hF(),eo=z(En),Al=z(eo,!0);A(eo);var yu=j(eo),rh=z(yu,!0);A(yu),A(En),de(wu=>{X(Al,wu),X(rh,(i(Je),q(()=>i(Je).wer)))},[()=>(Z(v()),q(()=>v()("arena.metric.wer")))]),te(Oo,En)};qe(sh,Oo=>{i(Je),q(()=>i(Je).wer)&&Oo(Fl)})}A(xa),de((Oo,En)=>{X(js,Oo),X(vu,(i(Je),q(()=>i(Je).wallMs||"?"))),X(nh,En),X(Gl,(i(Je),q(()=>i(Je).rtf||"?")))},[()=>(Z(v()),q(()=>v()("arena.metric.wall"))),()=>(Z(v()),q(()=>v()("arena.metric.rtf")))]),te(da,xa)};qe(Rc,da=>{i(Je),q(()=>i(Je).outputUrl||i(Je).outputText||i(Je).wallMs||i(Je).rtf||i(Je).wer)&&da($l)})}var jo=j(Rc,2);{var ih=da=>{var xa=vF(),Rs=z(xa,!0);A(xa),de(()=>X(Rs,(i(Je),q(()=>i(Je).note)))),te(da,xa)};qe(jo,da=>{i(Je),q(()=>i(Je).note)&&da(ih)})}var Po=j(jo,2);{var ah=da=>{var xa=bF(),Rs=z(xa,!0);A(xa),de(()=>X(Rs,(i(Je),q(()=>i(Je).error)))),te(da,xa)};qe(Po,da=>{i(Je),q(()=>i(Je).error)&&da(ah)})}A(ra),de((da,xa)=>{oa=Gi(ra,1,"",null,oa,{done:i(Je).status==="done",failed:i(Je).status==="failed",skipped:i(Je).status==="skipped"}),X(Ra,da),X(la,(i(Je),q(()=>i(Je).label))),X(ca,(i(Je),q(()=>i(Je).packageLabel))),X(Vn,xa)},[()=>q(()=>String(Ft+1).padStart(2,"0")),()=>(i(Je),q(()=>Qe(i(Je).status)))]),te(at,ra)}),A(yt),de(at=>X(pt,at),[()=>(i(S),Z(v()),q(()=>i(S).every(at=>["done","failed","skipped"].includes(at.status))?v()("arena.results.orderRtf"):v()("arena.results.orderSelection")))]),te(le,Ae)},Uc=le=>{var Ae=kF(),Ue=j(z(Ae)),pt=z(Ue,!0);A(Ue),A(Ae),de(yt=>X(pt,yt),[()=>(Z(v()),q(()=>v()("arena.results.empty")))]),te(le,Ae)};qe(fu,le=>{i(S),q(()=>i(S).length)?le(br):le(Uc,-1)})}A(Qa);var mu=j(Qa,2),yr=z(mu),wr=z(yr),xl=z(wr),Ro=z(xl,!0);A(xl),Ea(2),A(wr);var kr=j(wr,2),Sl=z(kr,!0);A(kr);var xr=j(kr,2),pu=z(xr,!0);A(xr),A(yr);var Tl=j(yr,2);let gu;var hu=z(Tl,!0);return A(Tl),A(mu),A(Wa),de((le,Ae,Ue,pt,yt,at,Je,Ft,ra,oa,Ui,Oi,Ra,Ci,Ga,la,Bi,ca,es,Vn,Zr,Bc)=>{X(hn,le),X(mi,i(se)),X(Pi,i(we)),ln=Gi(pa,1,"",null,ln,{active:i(y)==="tts"}),X(wa,Ae),vi=Gi(Qi,1,"",null,vi,{active:i(y)==="vc"}),X(Cn,Ue),Ln=Gi(en,1,"",null,Ln,{active:i(y)==="asr"}),X(Ha,pt),X(Dn,yt),X(Zn,at),X(_r,i(ae)),X(fe,`${Je??""} `),X(rt,Ft),be(ei,"placeholder",ra),X(cn,`${oa??""} `),X(Qr,Ui),X(Jg,Oi),X(Zg,(i(S),q(()=>i(S).length))),X(Yr,Ra),X(eh,Ci),wl.disabled=!i(C),X(Ec,Ga),X(Mn,la),X(zo,Bi),X(Bo,`${ca??""} / ${i(S),q(()=>i(S).length)??""}`),wr.disabled=(i(F),i(S),q(()=>i(F)||!i(S).length)),X(Ro,es),kr.disabled=!i(F),X(Sl,Vn),xr.disabled=(i(F),i(S),q(()=>i(F)||!i(S).length)),X(pu,Zr),gu=Gi(Tl,1,"status",null,gu,{busy:i(F)}),X(hu,Bc)},[()=>(Z(v()),q(()=>v()("arena.eyebrow"))),()=>(Z(v()),q(()=>v()("arena.mode.tts"))),()=>(Z(v()),q(()=>v()("arena.mode.vc"))),()=>(Z(v()),q(()=>v()("arena.mode.asr"))),()=>(Z(v()),q(()=>v()("arena.input.label"))),()=>(Z(v()),q(()=>v()("arena.input.title"))),()=>(Z(v()),q(()=>v()("request.language"))),()=>(Z(v()),q(()=>v()("request.optional"))),()=>(Z(v()),q(()=>v()("request.autoLanguage"))),()=>(Z(v()),q(()=>v()("arena.options.shared"))),()=>(Z(v()),q(()=>v()("arena.queue.label"))),()=>(Z(v()),q(()=>v()("arena.queue.title"))),()=>(Z(v()),q(()=>v()("studio.model"))),()=>(Z(v()),q(()=>v()("arena.package.label"))),()=>(Z(v()),q(()=>v()("arena.queue.add"))),()=>(Z(v()),q(()=>v()("result.label"))),()=>(Z(v()),q(()=>v()("arena.results.title"))),()=>(i(S),q(()=>i(S).filter(le=>le.status==="done").length)),()=>(i(F),Z(v()),q(()=>i(F)?v()("run.working"):v()("arena.run"))),()=>(Z(v()),q(()=>v()("run.cancel"))),()=>(Z(v()),q(()=>v()("arena.queue.clear"))),()=>(i(Q),Z(v()),q(()=>i(Q)||v()("status.ready")))]),$e("click",pa,()=>E(y,"tts")),$e("click",Qi,()=>E(y,"vc")),$e("click",en,()=>E(y,"asr")),Fi(ei,()=>i($),le=>E($,le)),Fi(tr,()=>i(k),le=>E(k,le)),yo(Eo,()=>i(T),le=>E(T,le)),$e("change",Eo,()=>E(O,"")),yo(ws,()=>i(O),le=>E(O,le)),$e("click",wl,dt),$e("click",wr,di),$e("click",kr,gn),$e("click",xr,$t),te(t,ta),H_(e,"runArena",di),Xa(Kt)}const Ab="audiocpp.ui.configuration",iu=tl({historyLimit:10}),au=tl("");function Cb(t){if(!Number.isSafeInteger(t.historyLimit)||t.historyLimit<1)throw new Error("History length must be a positive integer.")}function TF(){const t=localStorage.getItem(Ab);if(t===null)return;const e=JSON.parse(t);Cb(e),iu.set({historyLimit:e.historyLimit})}function $F(t){Cb(t),localStorage.setItem(Ab,JSON.stringify(t)),iu.set(t),au.set("")}var qF=ue(''),GF=ue('
      '),FF=ue('

      ');function AF(t,e){Ya(e,!1);const a=()=>sd(iu,"$uiConfiguration",s),n=()=>sd(au,"$uiConfigurationError",s),[s,r]=Ju();let o=Ge(e,"tr",8),l=oe(a().historyLimit),u=oe("");function p(){try{$F({historyLimit:i(l)}),E(u,"configuration.saved")}catch(P){au.set(P instanceof Error?P.message:String(P)),E(u,"")}}Ke(()=>a(),()=>{E(l,a().historyLimit)}),ds(),An();var g=FF(),h=z(g),m=z(h,!0);A(h);var f=j(h,2),d=z(f),c=z(d,!0);A(d);var _=j(d,2),b=z(_,!0);A(_);var v=j(_,2);It(v);var w=j(v,2),y=z(w,!0);A(w);var T=j(w,2);{var O=P=>{var L=qF(),x=z(L,!0);A(L),de(()=>X(x,n())),te(P,L)};qe(T,P=>{n()&&P(O)})}var R=j(T,2);{var $=P=>{var L=GF(),x=z(L,!0);A(L),de(U=>X(x,U),[()=>(Z(o()),i(u),q(()=>o()(i(u))))]),te(P,L)};qe(R,P=>{i(u)&&P($)})}A(f),A(g),de((P,L,x,U)=>{X(m,P),X(c,L),X(b,x),X(y,U)},[()=>(Z(o()),q(()=>o()("nav.configuration"))),()=>(Z(o()),q(()=>o()("configuration.history"))),()=>(Z(o()),q(()=>o()("configuration.historyLimit"))),()=>(Z(o()),q(()=>o()("configuration.save")))]),Fi(v,()=>i(l),P=>E(l,P)),$e("submit",f,Ox(p)),te(t,g),Xa(),r()}var CF=ue(' '),Wm=ue(""),MF=ue(''),EF=ue('
      '),zF=ue('
      Downloads
      '),UF=ue('

      '),BF=ue(' '),RF=ue('Update available'),jF=ue(''),PF=ue('
      Manage
      '),NF=ue(''),OF=ue(''),IF=ue('

      '),LF=ue('
      ',1),DF=ue('View weights ↗'),VF=ue('Manual setup
      ',1),HF=ue('
      '),WF=ue('
      '),QF=ue('
      No models match these filters.
      '),KF=ue('

      Model Library

      Models folder
      ');function YF(t,e){Ya(e,!1);const a=oe(),n=oe();let s=Ge(e,"groups",8),r=Ge(e,"packageSizes",8),o=Ge(e,"installJobs",8),l=Ge(e,"packageSizeState",8),u=Ge(e,"modelsFolderInput",12),p=Ge(e,"modelsFolder",8),g=Ge(e,"modelsFolderHistory",24,()=>[]),h=Ge(e,"defaultModelsFolder",8),m=Ge(e,"applyingModelsFolder",8),f=Ge(e,"modelsFolderIsDefault",8),d=Ge(e,"openFolderBrowser",8),c=Ge(e,"applyModelsFolder",8),_=Ge(e,"installPackage",8),b=Ge(e,"removePackage",8),v=Ge(e,"stopPackageDownload",8),w=Ge(e,"cleanPartialDownload",8),y=Ge(e,"openModel",8),T=Ge(e,"taskLabel",8),O=Ge(e,"formatBytes",8),R=Ge(e,"installProgressLabel",8),$=Ge(e,"workflowForEntry",8),P=Ge(e,"workflows",8),L=oe(""),x=oe(""),U=oe("all"),D=oe({});const M=Ee=>!!Ee&&["queued","running","cancelling"].includes(Ee.state);function G(Ee,xe,He,nt){if(xe[Ee.id]?.installed)return"Installed";const je=He[Ee.id];return M(je)?je.state==="queued"?"Queued":je.state==="cancelling"?"Stopping":"Downloading":je&&["failed","cancelled"].includes(je.state)?je.state==="failed"?"Download failed":"Incomplete":xe[Ee.id]?"Not installed":nt==="failed"?"Status unavailable":"Checking"}function B(Ee,xe,He){const nt=Ee.install_packages||[];return nt.find(je=>je.id===xe[Ee.id])||nt.find(je=>He[je.id]?.installed)||nt[0]}function V(Ee,xe){return new Set(Ee.flatMap(He=>(He.install_packages||[]).filter(nt=>xe[nt.id]?.installed).map(nt=>nt.id))).size}Ke(()=>(Z(s()),i(L),Z(r()),i(x),Z($()),i(U)),()=>{E(a,s().map(Ee=>({...Ee,entries:Ee.entries.filter(xe=>{const He=`${Ee.label} ${xe.display_name} ${xe.family}`.toLowerCase().includes(i(L).trim().toLowerCase()),nt=V([xe],r())>0,je=!!xe.install_packages?.length&&xe.install_packages.every(Zt=>!!r()[Zt.id]);return He&&(!i(x)||$()(xe)===i(x))&&(i(U)==="all"||(i(U)==="installed"?nt:je&&!nt))})})).filter(Ee=>Ee.entries.length))}),Ke(()=>Z(o()),()=>{E(n,Object.values(o()).filter(M))}),ds(),An();var I=KF(),k=z(I),S=z(k),F=j(z(S)),H=z(F);A(F),A(S);var Q=j(S,2);{var Y=Ee=>{var xe=CF(),He=z(xe);A(xe),de(()=>X(He,`${i(n),q(()=>i(n).length)??""} active downloads`)),te(Ee,xe)};qe(Q,Ee=>{i(n),q(()=>i(n).length)&&Ee(Y)})}A(k);var C=j(k,2),re=z(C),he=j(z(re)),ie=z(he,!0);A(he),A(re);var ye=j(re,2),se=z(ye);It(se);var we=j(se,2),ae=j(we,2),Re=j(ae,2);A(ye);var ee=j(ye,2),Oe=j(z(ee),2),Ie=z(Oe);Ie.value=Ie.__value="";var tt=j(Ie);Mt(tt,1,g,Xt,(Ee,xe)=>{var He=Wm(),nt=z(He,!0);A(He);var je={};de(()=>{X(nt,i(xe)),je!==(je=i(xe))&&(He.value=(He.__value=i(xe))??"")}),te(Ee,He)}),A(Oe);var Xe;jn(Oe),A(ee),A(C);var Le=j(C,2),Te=z(Le);It(Te);var et=j(Te,2),ce=z(et);ce.value=ce.__value="";var _e=j(ce);Mt(_e,1,P,Xt,(Ee,xe)=>{var He=Wm(),nt=z(He,!0);A(He);var je={};de(()=>{X(nt,(i(xe),q(()=>i(xe).label))),je!==(je=(i(xe),q(()=>i(xe).id)))&&(He.value=(He.__value=(i(xe),q(()=>i(xe).id)))??"")}),te(Ee,He)}),A(et);var ne=j(et,2),me=z(ne);me.value=me.__value="all";var ve=j(me);ve.value=ve.__value="installed";var pe=j(ve);pe.value=pe.__value="missing",A(ne),A(Le);var Se=j(Le,2),Me=z(Se);A(Se);var ge=j(Se,2);{var ze=Ee=>{var xe=zF(),He=j(z(xe));Mt(He,1,()=>i(n),Xt,(nt,je)=>{const Zt=Qt(()=>(Z(s()),i(je),q(()=>s().flatMap(xt=>xt.entries).find(xt=>xt.install_packages?.some(ri=>ri.id===i(je).id)))));var Pe=EF(),We=z(Pe),$t=z(We,!0);A(We);var dt=j(We),wt=z(dt,!0);A(dt);var qt=j(dt);{var Nt=xt=>{var ri=MF();de(()=>ri.disabled=(i(je),q(()=>i(je).state==="cancelling"))),$e("click",ri,()=>v()(i(Zt),i(je))),te(xt,ri)};qe(qt,xt=>{i(Zt)&&xt(Nt)})}A(Pe),de(xt=>{X($t,(Z(i(Zt)),i(je),q(()=>i(Zt)?.display_name||i(je).id))),X(wt,xt)},[()=>(Z(R()),i(je),q(()=>R()(i(je))))]),te(nt,Pe)}),A(xe),te(Ee,xe)};qe(ge,Ee=>{i(n),q(()=>i(n).length)&&Ee(ze)})}var Qe=j(ge,2);Mt(Qe,1,()=>i(a),Ee=>Ee.family,(Ee,xe)=>{var He=WF(),nt=z(He);{var je=Pe=>{var We=UF(),$t=z(We),dt=z($t,!0);A($t);var wt=j($t);let qt;var Nt=z(wt,!0);A(wt),A(We),de((xt,ri)=>{X(dt,(i(xe),q(()=>i(xe).label))),qt=Gi(wt,1,"svelte-1vlt8au",null,qt,xt),X(Nt,ri)},[()=>({installed:V(i(xe).entries,r())>0}),()=>(i(xe),Z(r()),q(()=>V(i(xe).entries,r())?`${V(i(xe).entries,r())} package${V(i(xe).entries,r())===1?"":"s"} installed`:i(xe).entries.every(xt=>!xt.install_packages?.length)?"Manual setup":i(xe).entries.some(xt=>xt.install_packages?.some(ri=>!r()[ri.id]))?"Status pending":"Not installed"))]),te(Pe,We)};qe(nt,Pe=>{i(xe),q(()=>i(xe).entries.length>1)&&Pe(je)})}var Zt=j(nt,2);Mt(Zt,1,()=>(i(xe),q(()=>i(xe).entries)),Pe=>Pe.id,(Pe,We)=>{const $t=Qt(()=>(i(We),q(()=>new Set((i(We).install_packages||[]).map(pi=>pi.id)).size))),dt=Qt(()=>(i(We),i(D),Z(r()),q(()=>B(i(We),i(D),r())))),wt=Qt(()=>(Z(i(dt)),Z(o()),q(()=>i(dt)?o()[i(dt).id]:void 0))),qt=Qt(()=>(Z(i(dt)),Z(r()),q(()=>i(dt)&&r()[i(dt).id]?.installed))),Nt=Qt(()=>(i(xe),Z(o()),q(()=>i(xe).entries.some(pi=>pi.install_packages?.some(Pi=>M(o()[Pi.id]))))));var xt=HF(),ri=z(xt),di=z(ri),gn=z(di,!0);A(di);var Kt=j(di),ta=z(Kt,!0);A(Kt);var Va=j(Kt);{var Ja=pi=>{var Pi=BF(),Za=z(Pi);A(Pi),de(pa=>X(Za,`${pa??""} of ${i($t)??""} packages installed`),[()=>(i(We),Z(r()),q(()=>V([i(We)],r())))]),te(pi,Pi)},on=Si(()=>(Z(i($t)),i(We),Z(r()),q(()=>i($t)&&i(We).install_packages?.every(pi=>!!r()[pi.id]))));qe(Va,pi=>{i(on)&&pi(Ja)})}A(ri);var hn=j(ri,2);{var yi=pi=>{var Pi=LF(),Za=Et(Pi),pa=z(Za),ln=z(pa);A(pa);var wa=j(pa);Mt(wa,5,()=>(i(We),q(()=>i(We).install_packages||[])),Xt,(Vi,Ti)=>{var ka=Wm(),Ei=z(ka);A(ka);var Yi={};de(zi=>{X(Ei,`${i(Ti),q(()=>i(Ti).label)??""} · ${zi??""}`),Yi!==(Yi=(i(Ti),q(()=>i(Ti).id)))&&(ka.value=(ka.__value=(i(Ti),q(()=>i(Ti).id)))??"")},[()=>(i(Ti),Z(r()),Z(o()),Z(l()),q(()=>G(i(Ti),r(),o(),l())))]),te(Vi,ka)}),A(wa);var Qi;jn(wa);var vi=j(wa),Cn=z(vi,!0);A(vi),A(Za);var en=j(Za,2);let Ln;var Ha=z(en),Wa=z(Ha,!0);A(Ha);var kn=j(Ha);{var er=Vi=>{var Ti=RF();te(Vi,Ti)};qe(kn,Vi=>{Z(i(qt)),Z(r()),Z(i(dt)),q(()=>i(qt)&&r()[i(dt).id]?.version_state==="update_available")&&Vi(er)})}A(en);var _n=j(en,2),bi=z(_n),Dn=z(bi,!0);A(bi);var Jn=j(bi,2);{var Zn=Vi=>{var Ti=PF(),ka=z(Ti),Ei=j(ka),Yi=z(Ei);{var zi=fe=>{var Ve=jF();de(()=>Ve.disabled=i(Nt)),$e("click",Ve,()=>_()(i(We),i(dt),!0)),te(fe,Ve)};qe(Yi,fe=>{Z(r()),Z(i(dt)),q(()=>r()[i(dt).id]?.version_state==="update_available")&&fe(zi)})}var Fe=j(Yi);A(Ei),A(Ti),de(()=>{be(ka,"aria-label",(i(We),q(()=>`Manage ${i(We).display_name}`))),Fe.disabled=i(Nt)}),$e("click",Fe,()=>b()(i(We),i(dt))),te(Vi,Ti)};qe(Jn,Vi=>{i(qt)&&Vi(Zn)})}A(_n);var zs=j(_n,2);{var _r=Vi=>{var Ti=IF();let ka;var Ei=z(Ti),Yi=z(Ei,!0);A(Ei);var zi=j(Ei),Fe=j(zi),fe=z(Fe,!0);A(Fe);var Ve=j(Fe);{var rt=Ot=>{var _t=NF();de(()=>_t.disabled=(Z(i(wt)),q(()=>i(wt).state==="cancelling"))),$e("click",_t,()=>v()(i(We),i(wt))),te(Ot,_t)},ei=Si(()=>(Z(i(wt)),q(()=>M(i(wt))))),ti=Ot=>{var _t=OF();$e("click",_t,()=>w()(i(We),i(wt))),te(Ot,_t)};qe(Ve,Ot=>{i(ei)?Ot(rt):Ot(ti,-1)})}A(Ti),de(Ot=>{ka=Gi(Ti,1,"job svelte-1vlt8au",null,ka,{failed:i(wt).state==="failed"}),X(Yi,Ot),sa(zi,(Z(i(wt)),q(()=>i(wt).progress_percent>=0?i(wt).progress_percent:void 0))),X(fe,(Z(i(wt)),q(()=>i(wt).message)))},[()=>(Z(R()),Z(i(wt)),q(()=>R()(i(wt))))]),te(Vi,Ti)},Us=Si(()=>(Z(i(wt)),q(()=>i(wt)&&!["complete","cleaned"].includes(i(wt).state))));qe(zs,Vi=>{i(Us)&&Vi(_r)})}de((Vi,Ti)=>{be(pa,"for",(i(We),q(()=>`package-${i(We).id}`))),X(ln,`Package (${i($t)??""})`),be(wa,"id",(i(We),q(()=>`package-${i(We).id}`))),Qi!==(Qi=(Z(i(dt)),q(()=>i(dt).id)))&&(wa.value=(wa.__value=(Z(i(dt)),q(()=>i(dt).id)))??"",yn(wa,(Z(i(dt)),q(()=>i(dt).id)))),X(Cn,Vi),Ln=Gi(en,1,"state svelte-1vlt8au",null,Ln,{installed:i(qt)}),X(Wa,Ti),bi.disabled=(Z(i(qt)),Z(i(Nt)),Z(r()),Z(i(dt)),q(()=>!i(qt)&&(i(Nt)||!r()[i(dt).id]))),X(Dn,i(qt)?"Open in Studio":"Download")},[()=>(Z(r()),Z(i(dt)),Z(O()),q(()=>r()[i(dt).id]?.size_bytes?`${O()(r()[i(dt).id].size_bytes)} download`:"Download size unavailable")),()=>(Z(i(qt)),Z(i(dt)),Z(r()),Z(o()),Z(l()),q(()=>i(qt)?"✓ Installed":G(i(dt),r(),o(),l())))]),$e("change",wa,Vi=>E(D,{...i(D),[i(We).id]:Vi.currentTarget.value})),$e("click",bi,()=>i(qt)?y()(i(We),i(dt)):_()(i(We),i(dt))),te(pi,Pi)},mi=pi=>{var Pi=VF(),Za=j(Et(Pi)),pa=z(Za);{var ln=Qi=>{var vi=DF();de(()=>be(vi,"href",(i(We),q(()=>i(We).weights_url)))),te(Qi,vi)};qe(pa,Qi=>{i(We),q(()=>i(We).weights_url)&&Qi(ln)})}var wa=j(pa);A(Za),$e("click",wa,()=>y()(i(We))),te(pi,Pi)};qe(hn,pi=>{i(dt)?pi(yi):pi(mi,-1)})}A(xt),de(pi=>{X(gn,(i(We),q(()=>i(We).display_name))),X(ta,pi)},[()=>(Z(T()),i(We),q(()=>T()(i(We))))]),te(Pe,xt)}),A(He),te(Ee,He)},Ee=>{var xe=QF(),He=j(z(xe));A(xe),$e("click",He,()=>{E(L,""),E(x,""),E(U,"all")}),te(Ee,xe)}),A(I),de((Ee,xe,He,nt,je)=>{X(H,`${Ee??""} models · ${xe??""} packages installed`),X(ie,p()||h()),be(se,"placeholder",h()),we.disabled=m(),ae.disabled=He,Re.disabled=m()||f(),Oe.disabled=(Z(m()),Z(g()),q(()=>m()||!g().length)),Xe!==(Xe=nt)&&(Oe.value=(Oe.__value=nt)??"",yn(Oe,nt)),X(Me,`${je??""} models · A–Z`)},[()=>(Z(s()),q(()=>s().reduce((Ee,xe)=>Ee+xe.entries.length,0))),()=>(Z(s()),Z(r()),q(()=>V(s().flatMap(Ee=>Ee.entries),r()))),()=>(Z(m()),Z(u()),Z(p()),q(()=>m()||!u().trim()||u().trim()===p())),()=>(Z(g()),Z(u()),q(()=>g().includes(u())?u():"")),()=>(i(a),q(()=>i(a).reduce((Ee,xe)=>Ee+xe.entries.length,0)))]),Fi(se,u),$e("click",we,()=>d()()),$e("click",ae,()=>c()(!1)),$e("click",Re,()=>c()(!0)),$e("change",Oe,Ee=>u(Ee.currentTarget.value)),Fi(Te,()=>i(L),Ee=>E(L,Ee)),yo(et,()=>i(x),Ee=>E(x,Ee)),yo(ne,()=>i(U),Ee=>E(U,Ee)),te(t,I),Xa()}const XF="audiocpp-native-studio",nu="voices";function JF(){return new Promise((t,e)=>{const a=indexedDB.open(XF,1);a.onupgradeneeded=()=>{a.result.objectStoreNames.contains(nu)||a.result.createObjectStore(nu,{keyPath:"id"})},a.onsuccess=()=>t(a.result),a.onerror=()=>e(a.error||new Error("Could not open the voice library."))})}function Qm(t,e){return JF().then(a=>new Promise((n,s)=>{const r=a.transaction(nu,t),o=e(r.objectStore(nu));o.onerror=()=>s(o.error||new Error("Voice library operation failed.")),r.oncomplete=()=>{a.close(),n(o.result)},r.onabort=()=>{a.close(),s(r.error||new Error("Voice library transaction was aborted."))},r.onerror=()=>{a.close(),s(r.error||new Error("Voice library transaction failed."))}}))}async function Mb(){return(await Qm("readonly",e=>e.getAll())).sort((e,a)=>a.createdAt-e.createdAt)}function ZF(t){return Qm("readwrite",e=>e.put(t))}function eA(t){return Qm("readwrite",e=>e.delete(t))}var tA=ue(''),iA=ue(''),aA=ue(''),nA=ue('

      '),sA=ue('
      ',1),rA=ue('

      Select a voice

      '),oA=ue('

      Voices

      ');function lA(t,e){Ya(e,!1);const a=oe(),n=oe(),s=oe();let r=Ge(e,"ontext",8),o=Ge(e,"onchange",8),l=oe([]),u=oe(),p=oe(),g=oe(""),h=oe(!1),m=oe(""),f=oe();function d(){return!i(h)&&(!i(n)||confirm("Discard unsaved voice edits?"))}async function c(){E(l,await Mb())}function _(se){i(n)&&!confirm("Discard unsaved voice edits?")||(E(p,se),E(u,{...se}),E(m,""))}async function b(se){if(!(!se||i(h))){if(i(n)&&!confirm("Discard unsaved voice edits?")){hi(f,i(f).value="");return}E(h,!0),E(m,"");try{const we=await jr(se);E(u,{id:crypto.randomUUID(),name:se.name.replace(/\.[^.]+$/,""),transcript:"",audio:we,createdAt:Date.now()}),E(p,void 0)}catch(we){E(m,`Cannot import ${se.name}: ${String(we)}`)}finally{E(h,!1),hi(f,i(f).value="")}}}async function v(){if(i(u)){if(!i(u).name.trim()){E(m,"Give this voice a name.");return}E(h,!0),E(m,"");try{const se={...i(u),name:i(u).name.trim()};await ZF(se),await c(),E(p,se),E(u,{...se}),await o()()}catch(se){E(m,String(se))}finally{E(h,!1)}}}async function w(){if(!(!i(u)||!confirm(`Delete voice "${i(u).name}"?`))){E(h,!0),E(m,"");try{i(p)&&await eA(i(u).id),E(u,void 0),E(p,void 0),await c(),await o()()}catch(se){E(m,String(se))}finally{E(h,!1)}}}async function y(){if(!(!i(u)||i(n)||i(h))){E(m,"");try{await r()(i(u))}catch(se){E(m,String(se))}}}function T(){if(!i(u))return;const se=URL.createObjectURL(i(u).audio),we=document.createElement("a");we.href=se,we.download=`${i(u).name}.wav`,we.click(),setTimeout(()=>URL.revokeObjectURL(se),1e3)}Fs(()=>{c().catch(se=>E(m,String(se)))}),Ke(()=>(i(l),i(g)),()=>{E(a,i(l).filter(se=>`${se.name} ${se.transcript}`.toLowerCase().includes(i(g).toLowerCase())))}),Ke(()=>(i(u),i(p)),()=>{E(n,!!i(u)&&(!i(p)||i(u).name!==i(p).name||i(u).transcript!==i(p).transcript||i(u).audio!==i(p).audio))}),Ke(()=>i(u),()=>{E(s,i(u)?new File([i(u).audio],`${i(u).name}.wav`,{type:"audio/wav"}):null)}),ds();var O={canClose:d};An();var R=oA();$e("beforeunload",cd,se=>{(i(n)||i(h))&&(se.preventDefault(),se.returnValue="")});var $=z(R),P=z($),L=z(P);lc(L,{size:25});var x=j(L,2),U=z(x);A(x),A(P);var D=j(P,2),M=z(D);F1(M,{size:16}),Ea(),A(D);var G=j(D,2);$a(G,se=>E(f,se),()=>i(f)),A($);var B=j($,2);{var V=se=>{var we=tA(),ae=z(we,!0);A(we),de(()=>X(ae,i(m))),te(se,we)};qe(B,se=>{i(m)&&se(V)})}var I=j(B,2),k=z(I),S=z(k),F=z(S);A4(F,{size:16});var H=j(F);It(H),A(S);var Q=j(S,2);Mt(Q,5,()=>i(a),se=>se.id,(se,we)=>{var ae=iA();let Re;var ee=z(ae),Oe=z(ee,!0);A(ee);var Ie=j(ee),tt=z(Ie,!0);A(Ie);var Xe=j(Ie,2),Le=z(Xe,!0);A(Xe),A(ae),de(Te=>{ae.disabled=i(h),Re=Gi(ae,1,"voice-tile svelte-19fh7lt",null,Re,{active:i(u)?.id===i(we).id}),X(Oe,Te),X(tt,(i(we),q(()=>i(we).name))),X(Le,(i(we),q(()=>i(we).transcript||"No transcript")))},[()=>(i(we),q(()=>i(we).name.slice(0,1).toUpperCase()))]),$e("click",ae,()=>_(i(we))),te(se,ae)}),A(Q);var Y=j(Q,2);{var C=se=>{var we=nA(),ae=z(we);lc(ae,{size:36});var Re=j(ae),ee=z(Re,!0);A(Re);var Oe=j(Re);{var Ie=tt=>{var Xe=aA(),Le=z(Xe);F1(Le,{size:16}),Ea(),A(Xe),de(()=>Xe.disabled=i(h)),$e("click",Xe,()=>i(f).click()),te(tt,Xe)};qe(Oe,tt=>{i(g)||tt(Ie)})}A(we),de(()=>X(ee,i(g)?"No matching voices":"Your voice collection is empty")),te(se,we)};qe(Y,se=>{i(a),q(()=>!i(a).length)&&se(C)})}A(k);var re=j(k,2),he=z(re);{var ie=se=>{var we=sA(),ae=Et(we),Re=j(z(ae));It(Re),A(ae);var ee=j(ae,2);Nn(ee,{get file(){return i(s)},label:"Voice preview"});var Oe=j(ee,2),Ie=j(z(Oe));La(Ie),A(Oe);var tt=j(Oe,2),Xe=z(tt),Le=z(Xe);G4(Le,{size:16});var Te=j(Le,1,!0);A(Xe);var et=j(Xe,2),ce=z(et);_4(ce,{size:16}),A(et);var _e=j(et,2),ne=z(_e);zd(ne,{size:16}),A(_e),A(tt);var me=j(tt,2),ve=z(me),pe=z(ve);Yf(pe,{size:16}),Ea(),A(ve),A(me),de(()=>{Re.disabled=i(h),Ie.disabled=i(h),Xe.disabled=i(h)||!i(n),X(Te,i(n)?"Save voice":"Saved"),et.disabled=i(h),_e.disabled=i(h),ve.disabled=i(h)||i(n)}),Fi(Re,()=>i(u).name,Se=>hi(u,i(u).name=Se)),Fi(Ie,()=>i(u).transcript,Se=>hi(u,i(u).transcript=Se)),$e("click",Xe,v),$e("click",et,T),$e("click",_e,w),$e("click",ve,y),te(se,we)},ye=se=>{var we=rA(),ae=z(we);Jf(ae,{size:32}),Ea(),A(we),te(se,we)};qe(he,se=>{i(u)?se(ie):se(ye,-1)})}return A(re),A(I),A(R),de(()=>{X(U,`${i(l),q(()=>i(l).length)??""} saved · This browser`),D.disabled=i(h)}),$e("click",D,()=>i(f).click()),$e("change",G,se=>b(se.currentTarget.files?.[0])),Fi(H,()=>i(g),se=>E(g,se)),te(t,R),H_(e,"canClose",d),Xa(O)}var su=ue(""),$c=ue(""),cA=ue(""),dA=ue(""),uA=ue(' ',1),fA=ue('
      '),mA=ue('
      '),pA=ue(''),gA=ue('
      '),hA=ue('
      '),_A=ue(' ',1),vA=ue(' ',1),bA=ue(' ',1),qc=ue(" "),yA=ue(''),wA=ue(''),kA=ue(''),xA=ue('
      '),SA=ue('
      '),TA=ue(''),$A=ue(''),qA=ue('
      '),Eb=ue(" "),GA=ue('
      '),FA=ue(' ',1),AA=ue(' ',1),CA=ue(''),MA=ue(''),EA=ue('
      '),zA=ue('
      '),UA=ue('
      '),BA=ue('
      '),zb=ue(" ",1),RA=ue('
      '),jA=ue('
      '),PA=ue(' ',1),NA=ue(' ',1),OA=ue('
      '),IA=ue(' ',1),LA=ue('
      '),DA=ue('
      '),VA=ue(' ',1),HA=ue('
      '),WA=ue(''),QA=ue(""),KA=ue('
      '),YA=ue(""),XA=ue("
      "),JA=ue('
      '),ZA=ue('
      JSON
      '),eC=ue(' '),tC=ue('

      ',1),iC=ue('

      ',1),aC=ue(' '),nC=ue(' '),sC=ue(''),Ub=ue('
      '),rC=ue(""),oC=ue('
      ∿

      '),lC=ue(''),cC=ue('
      Response JSON
       
      '),dC=ue(''),uC=ue('
    1. '),fC=ue('
        '),mC=ue('

        ',1),pC=ue('

         
        ',1),gC=ue('
        '),hC=ue('
        '),Bb=ue('
        '),_C=ue(''),vC=ue('
        '),bC=ue('
        '),yC=ue('
        A
        audio.cpp
        audio.cpp native WebUI
        ',1);function wC(t,e){Ya(e,!1);const a=()=>sd(iu,"$uiConfiguration",n),[n,s]=Ju(),r=oe(),o=oe(),l=oe(),u=oe(),p=oe(),g=oe(),h=oe(),m=oe(),f=oe(),d=oe(),c=oe(),_=oe(),b=oe(),v=oe(),w=oe(),y=oe(),T=oe(),O=oe(),R=oe(),$=oe(),P=oe(),L=oe(),x=oe(),U=oe(),D=oe(),M=oe(),G=oe(),B=oe(),V=oe(),I=oe(),k=oe(),S=oe();let F=oe("studio"),H=oe(null),Q=oe(null),Y=oe(pn[0]?.id||""),C=oe(pn[0]),re=oe(i(C)?.path||""),he=oe([]),ie=oe(null),ye=oe(null),se=oe(!1),we=oe(!1),ae=oe(!1),Re=oe(!1),ee=oe("Ready"),Oe=oe(""),Ie=oe(""),tt=oe(""),Xe=oe(""),Le=oe("English"),Te=oe(""),et=oe(""),ce=oe(""),_e=oe(""),ne=oe(30),me=oe(1234),ve=oe(1024),pe=oe(0),Se=oe(null),Me=oe(null),ge=oe(null),ze=oe([null,null,null,null]),Qe=oe(null),Ee=oe(null),xe=oe(null),He=oe([null,null,null,null]),nt=oe(null),je=oe(null),Zt=oe("{}"),Pe=oe({}),We=oe([]),$t=oe([]),dt=oe([]),wt=oe(""),qt=oe(""),Nt=oe(null),xt=oe([]),ri=oe(""),di=oe(!1),gn=1,Kt=oe(null),ta=oe(""),Va=oe(0),Ja=null,on=oe(null),hn={},yi={},mi=!1,pi=oe([]),Pi=null,Za=null,pa=oe(!0),ln=oe(cm(i(C)?.family||"")),wa=oe([]),Qi=oe(""),vi=oe(null),Cn=oe(null),en=null,Ln=null,Ha=null,Wa=oe(!1),kn=!1,er=Promise.resolve(),_n=0,bi=oe({}),Dn=oe(""),Jn=oe(""),Zn=oe([]),zs=oe(""),_r=oe(!0),Us=oe(!1),Vi=oe(!1),Ti=oe(!1),ka=oe(""),Ei=oe(null),Yi=null,zi={},Fe=oe({}),fe=oe("idle"),Ve=null,rt=!1,ei={},ti=oe([]),Ot=oe([]),_t=oe(""),oi=oe("en"),Rt=oe("mocha"),jt=!0,Ai=null,Ni=null,W=oe(N1(i(oi)));const St={demo_1_man:"demo_1_man",demo_2_man:"demo_2_man",demo_3_woman:"demo_3_woman",demo_4_woman:"demo_4_woman"},Xi=new Set(["ming3_tts","ming3_audio","latentsync","xtts_v2","kugelaudio","crisperwhisper","index_echo","audio_flamingo","owsm","owsm_ctc","reuse","sidon","smart_turn","maya1","gigaam_asr","samsone","sam_audio","tone_color_vc","moss_ttsd","moss_voicegen","canary_asr","cohere_asr","moss_transcribe_diarize","audiosr","controlfoley","breeze_tts","cosyvoice3","firered_audio","fireredtts3","irodori_tts","kitten_tts2","kokoro_tts","meanvc2","midashenglm_gen","plapre"]),cn={};function tr(N){E(oi,O1([N])),localStorage.setItem("audiocpp.ui.language",i(oi)),document.documentElement.lang=i(oi)}function vn(N=i(Rt)){const K=tT(N,jt);document.documentElement.dataset.theme=K,document.querySelector('meta[name="theme-color"]')?.setAttribute("content",getComputedStyle(document.documentElement).getPropertyValue("--bg").trim())}function vr(N){E(Rt,W1(N)),localStorage.setItem(H1,i(Rt)),vn(i(Rt))}async function Wr(){try{if("serviceWorker"in navigator){const N=await navigator.serviceWorker.getRegistrations();await Promise.all(N.map(K=>K.unregister()))}if("caches"in window){const N=await window.caches.keys();await Promise.all(N.map(K=>window.caches.delete(K)))}}catch(N){console.warn("Unable to clear legacy WebUI caches:",N)}}function Mo(N,K,J=i(W)){return J(`workflow.${N==="conversion"?"vc":N==="separation"?"sep":N}`,{},K)}function Qr(N,K=i(W),J){return N?J&&(J.workflow||la(J)==="enhancement")?Mo(la(J),N,K):K(`task.${N}`,{},M8[N]||N):K("studio.title")}function Kr(N,K,J=i(W)){const ke=K==="label"?N.label_en||N.label||N.name.replace(/_/g," "):K==="info"?N.info_en||N.info||"":N.placeholder_en||N.placeholder||"";return J(`param.${i(C)?.family}.${N.name}.${K}`,{},ke)}function Jg(N=i(W)){const K=i(C)?.input_hint_en||i(C)?.input_hint||"";return N(`model.${i(C)?.family}.hint`,{},K)}function Fc(N){const K=Math.max(1,Number.isFinite(N)?N:1)*24;return Math.max(5,Math.round((K-3)/17)*17+3)}function Zg(N){const K=i(C)?.family==="ace_step"?-1:1;E(ne,Math.max(K,Number.isFinite(N)?N:K)),i(C)?.family==="minimax_h3"&&E(Pe,{...i(Pe),num_frames:Fc(i(ne))})}function ir(N,K){if(E(Pe,{...i(Pe),[N.name]:K}),i(C)?.family==="ace_step"&&N.name==="lora"&&K===""&&(hn={...hn},delete hn["ace_step.lora"]),["auk","yue2","liveavatar","fish_drama3","ace_step"].includes(i(C)?.family||"")&&N.scope==="session"&&E(l,i(he).some(J=>J.id===i(Y)&&J.loaded&&Ro(J,i(C)))),i(C)?.family==="minimax_h3"&&N.name==="num_frames"){const J=Number(K);Number.isFinite(J)&&J>0&&E(ne,J/24)}}function Ac(N=i(C)){N?.family!=="yue2"||i(_e).trim()||E(_e,N.default_text||"")}function Cc(){return i(tt).trim()?i(tt):i(C).default_text||""}const Yr=[{id:"tts",label:"Text to speech",filterLabel:"TTS",tasks:["tts","clon"]},{id:"asr",label:"ASR / Transcription",filterLabel:"ASR",tasks:["asr"]},{id:"music",label:"Music / video generation",filterLabel:"Music / video generation",tasks:["gen"]},{id:"conversion",label:"Voice Conversion / S2S",filterLabel:"Voice Conversion / S2S",tasks:["vc","svc","s2s"]},{id:"enhancement",label:"Enhancement / denoising",filterLabel:"Enhancement / denoising",tasks:["s2s"]},{id:"separation",label:"Source separation",filterLabel:"Separation",tasks:["sep","s2s"]},{id:"analysis",label:"Audio analysis",filterLabel:"Analysis",tasks:["vad","diar","align","spk","midi","asr","turn","wake","cls"]},{id:"design",label:"Voice design",filterLabel:"Voice design",tasks:["vdes"]}],Eo={fish_drama3:"Fish Audio Drama 3",kugelaudio:"KugelAudio",crisperwhisper:"CrisperWhisper",index_echo:"Index-Echo S2TT",audio_flamingo:"Audio Flamingo",owsm:"OWSM",owsm_ctc:"OWSM-CTC",reuse:"RE-USE",sidon:"Sidon",smart_turn:"Smart Turn",gigaam_asr:"GigaAM ASR",ced:"CED",firered_vad:"FireRed VAD",samsone:"SAMSONE",sam_audio:"SAM Audio",builtin_audio_utils:"Audio utilities",qwen3_tts:"Qwen3-TTS",irodori_tts:"Irodori-TTS",chatterbox:"Chatterbox",stable_audio:"Stable Audio 3",qwen3_asr:"Qwen3-ASR",vevo2:"Vevo2",seed_vc:"Seed-VC",breeze_tts:"BreezeTTS 2",cosyvoice3:"CosyVoice3",magpie_tts:"MagpieTTS",meanvc2:"MeanVC2",niagara_asr:"Niagara ASR",canary_asr:"Canary 180M Flash",cohere_asr:"Cohere Transcribe",moss_transcribe_diarize:"MOSS-Transcribe-Diarize",apollo:"Apollo",universr:"UniverSR",pulsevad:"PulseVAD",nemotron_3_diar:"Nemotron 3 Diarization",lfm2_audio:"LFM2.5-Audio",personaplex:"PersonaPlex"},Xr={canary_asr:0,cohere_asr:256,moss_transcribe_diarize:5120},Jr={canary_asr:["en","de","es","fr"],cohere_asr:["en","fr","de","es","it","pt","nl","pl","el","ar","ja","zh","vi","ko"],confucius4_r2t2:["Auto","Chinese","English","Cantonese","Japanese","Korean","Arabic","German","French","Spanish","Portuguese","Indonesian","Italian","Russian","Thai","Vietnamese","Turkish","Hindi","Malay","Dutch","Swedish","Danish","Finnish","Polish","Czech","Filipino","Persian","Greek","Romanian","Hungarian","Macedonian"]};function eh(N){const ke=(N.replace(/\\/g,"/").split("/").filter(Boolean).pop()||"").match(/(?:^|[-_])(\d+(?:\.\d+)?[bm])(?:[-_]|$)/i);return ke?ke[1].toUpperCase():""}function ws(N,K){const J=Uc(K),ke=Uc(Uo(N));if(J===ke)return!0;const Be=Uc(N).replace(/^models\//,"");return J===Be||J.endsWith(`/${Be}`)}function Mc(N,K){return N.family!==K.family||N.task!==K.task?!1:ws(N.path,K.path)?!0:!!(N.install_packages||[]).some(J=>ws(J.path,K.path))}function cu(N){const K=pn.find(J=>J.id===N.id);return K&&Mc(K,N)?K:pn.find(J=>Mc(J,N))}function du(N,K){const J=eh(N.path),ke=Eo[N.family]||K?.display_name||N.family;return J&&!ke.toLowerCase().includes(J.toLowerCase())?`${ke} ${J}`:ke}function wl(N){return cu(N)?.display_name||du(N)}function Ec(N,K){return N.localeCompare(K,"en",{sensitivity:"base",numeric:!0})}function zc(N=!1){return(N?i(he).filter(J=>J.configured&&!pn.some(ke=>ke.id===J.id)):i(he)).map(J=>{const ke=cu(J),Be=pn.find(Yt=>Yt.family===J.family&&Yt.task===J.task),Ye=ke||Be,ut=Yt=>Yt&&N?`${Yt} (${J.id})`:Yt;return{...Ye||{id:J.id,display_name:J.id,family:J.family,path:J.path,task:J.task,mode:J.mode},id:J.id,display_name:ut(ke?ke.display_name:du(J,Ye)),display_name_en:ut(ke?ke.display_name_en:Ye?.display_name_en),family:J.family,path:J.path,task:J.task,mode:J.mode,install_packages:[],configured:!0}})}function Ba(N){return!i(ie)||!N?!1:!i(ie).ui_management||N.configured===!0}function uu(N){return Array.from(N.reduce((K,J)=>{const ke=K.get(J.family)||[];return ke.push(J),K.set(J.family,ke),K},new Map)).map(([K,J])=>({family:K,entries:[...J].sort((ke,Be)=>Ec(ke.display_name,Be.display_name)),label:J.length>1&&Eo[K]||J[0].display_name})).sort((K,J)=>Ec(K.label,J.label))}let Qa=oe("tts"),Bs={},ga=oe(pn),kl=oe(uu(pn));class Mn extends Error{}function wi(N){const K=`${new Date().toLocaleTimeString()} ${N}`;E(pi,[K,...i(pi)].slice(0,200))}function zo(N){if(!Number.isFinite(N)||N<=0)return"0 B";const K=["B","KB","MB","GB","TB"],J=Math.min(Math.floor(Math.log(N)/Math.log(1024)),K.length-1);return`${(N/1024**J).toFixed(J<2?0:1)} ${K[J]}`}function Uo(N){if(!i(Dn))return N;const K=N.replace(/\\/g,"/");if(K==="models")return i(Dn);if(!K.startsWith("models/"))return N;const J=K.slice(7),ke=i(Dn).includes("\\")?"\\":"/";return`${i(Dn).replace(/[\\/]+$/,"")}${ke}${J.replace(/\//g,ke)}`}function Bo(N){const K=N.install_packages||[];return K.find(J=>J.id===zi[N.id])||K[0]}function fu(N,K){return Bo(N)?.id===K.id}function br(N){return Ba(N)?N.path:Uo(Bo(N)?.path||N.path)}function Uc(N){return N.replace(/\\/g,"/").replace(/\/$/,"").toLowerCase()}function mu(N,K){return ws(N.path,K)}function yr(N){const K=Bo(N),J=N.id===i(Y)?Oo():{};return{...N.session_options||{},...K?.session_options||{},...N.id===i(Y)?hn:{},...J}}function wr(N,K,J){const ke=yr(N);N.family==="lfm2_audio"&&(ke["lfm2_audio.model_gguf"]=K.session_options?.["lfm2_audio.model_gguf"]);const Be=Array.from(new Set((N.install_packages||[]).flatMap(ut=>Object.keys(ut.session_options||{}))));if(N.id===i(Y))for(const ut of i(We).filter(Yt=>Yt.scope==="session"))Be.push(ut.session_option||ut.name);if(!Be.length)return!0;const Ye=J.session_options||{};return Be.every(ut=>Ye[ut]===ke[ut])}function xl(N,K,J){return mu(J,K.path)&&wr(N,J,K)}function Ro(N,K){if(!K)return ws(i(re),N.path);const J=Bo(K);return J?ws(i(re),N.path)&&wr(K,J,N):ws(i(re),N.path)}function kr(N,K=i(he)){return K.find(J=>J.id===N.id&&J.loaded)}function Sl(N,K,J=i(he)){const ke=kr(N,J);return!!(ke&&xl(N,ke,K))}function xr(N,K,J=i(he),ke=i(Fe)){return Sl(N,K,J)||ke[K.id]?.installed===!0}function pu(N){const K=N.install_packages||[];if(N.family==="ace_step"||N.family==="minimax_music3"||Xi.has(N.family))return K.map(Be=>({key:Be.id,label:Be.label,choice:Be}));const J=K.find(Be=>Be.format==="gguf"&&["q8","q8_0"].includes(Be.precision)),ke=K.find(Be=>Be.format==="gguf"&&["f16","fp16","bf16"].includes(Be.precision));return!J&&!ke?K.map(Be=>({key:Be.id,label:Be.label,choice:Be})):[{key:"q8",label:J?.label||"GGUF Q8",choice:J},{key:"fp16",label:ke?.label||"GGUF FP16",choice:ke}]}function Tl(N){if(!Number.isInteger(N)||N<-1||N>4294967295)throw new Error("Seed must be -1 or an unsigned 32-bit integer (0 to 4294967295).");if(N>=0)return N;const K=new Uint32Array(1);return globalThis.crypto.getRandomValues(K),K[0]}function gu(N,K){return(N+K)%4294967296}function hu(N){return N.replace(/\.[^.]+$/,"").trim().toLowerCase()}function le(N){const K=!!(N&&(i(_t)||i(Qi)||i(ge)&&i(ge).name!==N.name));N&&(E(_t,""),E(Qi,"")),E(ge,N),K&&(E(nt,null),E(et,""),i(je)&&hi(je,i(je).value=""),E(ee,"Reference voice changed. Choose or enter its matching transcript."),E(Oe,i(ee)))}function Ae(){E(_t,""),E(Qi,""),E(ge,null),E(nt,null),E(et,""),i(xe)&&hi(xe,i(xe).value=""),i(je)&&hi(je,i(je).value="")}function Ue(){E(Se,null),i(Qe)&&hi(Qe,i(Qe).value="")}function pt(){E(Me,null),i(Ee)&&hi(Ee,i(Ee).value="")}function yt(N,K){E(ze,i(ze).map((J,ke)=>ke===N?K:J))}function at(N){yt(N,null),i(He)[N]&&hi(He,i(He)[N].value="")}function Je(N){E(_t,N),N&&(E(Qi,""),E(ge,null),E(nt,null),E(et,""),i(xe)&&hi(xe,i(xe).value=""),i(je)&&hi(je,i(je).value=""))}async function Ft(N){if(E(nt,N),!!N)try{const K=(await N.text()).replace(/^\uFEFF/,"").trim();if(!K)throw new Error("The selected reference text file is empty.");E(et,K);const J=!i(ge)||hu(N.name)===hu(i(ge).name);E(ee,J?`Loaded reference transcript from ${N.name}.`:`Loaded ${N.name}. Its name does not match ${i(ge)?.name}; verify that it is the correct transcript.`),E(Oe,J?"":i(ee))}catch(K){E(nt,null),E(et,""),i(je)&&hi(je,i(je).value=""),E(ee,K instanceof Error?K.message:String(K)),E(Oe,"")}}function ra(N){return N.state==="complete"||N.state==="cleaned"?100:N.progress_percent>=0?Math.min(100,Math.max(0,N.progress_percent)):0}function oa(N){const K=ra(N);return N.total_bytes>0?`${K}% · ${zo(N.downloaded_bytes)} / ${zo(N.total_bytes)}`:N.downloaded_bytes>0?`${zo(N.downloaded_bytes)} downloaded`:N.state==="failed"?"Download failed":N.state==="cleaned"?"Partial files cleaned":N.state==="complete"?"100% · complete":N.state==="queued"?"0% · queued":"Connecting and checking package files…"}function Ui(N,K){return(N.install_packages||[]).map(J=>K[J.id]).filter(J=>J!==void 0)}function Oi(N){return N.family==="ming3_audio"&&["tts","clon"].includes(N.task)?!1:N.request_options!==void 0?N.request_options.includes("max_tokens"):["tts","clon","gen","s2s","vdes"].includes(N.task)}function Ra(N,K){return N.request_options===void 0||N.request_options.includes(K)}function Ci(N,K){return N.required_request_options?.includes(K)===!0}function Ga(N){return i(S).has(N.id)}function la(N){return N.workflow?N.workflow:["apollo","universr","audiosr"].includes(N.family)?"enhancement":Yr.find(K=>K.tasks.some(J=>J===N.task))?.id||"tts"}function Bi(N,K=i(W)){return N==="Ready"?K("status.ready"):N}async function ca(){if(!(!i(ie)?.ui_management||rt)){rt=!0;try{const N=await X4();E(fe,N.state),N.data.length&&(E(Fe,Object.fromEntries(N.data.map(J=>[J.id,J]))),N.state==="complete"&&Zr(i(Fe)));const K=N.state==="idle"||N.state==="running"||N.data.length===0;K&&Ve===null?Ve=window.setInterval(ca,1e3):!K&&Ve!==null&&(window.clearInterval(Ve),Ve=null)}catch(N){E(fe,"failed"),wi(`Package sizes unavailable: ${N instanceof Error?N.message:N}`)}finally{rt=!1}}}function es(){if(!(i(F)==="voices"&&!i(H)?.canClose())){if(!i(ie)?.ui_management){E(F,"studio"),E(ee,"Model management is disabled for this configured server."),E(Oe,i(ee)),E(Ie,"");return}E(F,"models"),i(fe)==="idle"&&E(fe,"running"),ca()}}function Vn(N,K){zi={...zi,[N.id]:K.id},localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(zi)),N.id===i(Y)&&E(re,Uo(K.path))}function Zr(N=i(Fe)){const K={...zi};let J=!1;for(const ke of pn){const Be=ke.install_packages||[];if(!Be.length)continue;const Ye=Be.find(ua=>ua.id===K[ke.id]),ut=Ye?i(bi)[Ye.id]:void 0;if(ut&&["queued","running","cancelling"].includes(ut.state)||Ye&&N[Ye.id]?.installed)continue;const Dt=Be.find(ua=>N[ua.id]?.installed);Dt?K[ke.id]!==Dt.id&&(K[ke.id]=Dt.id,J=!0):K[ke.id]!==void 0&&(delete K[ke.id],J=!0)}return J?(zi=K,localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(zi)),i(Y)&&E(re,br(i(C))),!0):!1}function Bc(N=i(he)){const K={...zi};let J=!1;for(const ke of pn){const Be=kr(ke,N);if(!Be)continue;const Ye=(ke.install_packages||[]).find(ut=>xl(ke,Be,ut));Ye&&K[ke.id]!==Ye.id&&(K[ke.id]=Ye.id,J=!0)}return J?(zi=K,localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(zi)),i(Y)&&E(re,br(i(C))),!0):!1}async function _u(N=i(Fe)){const K=pn.filter(J=>{const ke=kr(J);if(!ke)return!1;const Be=(J.install_packages||[]).find(Ye=>xl(J,ke,Ye));return!!(Be&&N[Be.id]?.installed===!1)});if(!K.length)return!1;for(const J of K)await Pr(J.id);return await tn(),!0}async function th(){i(F)==="voices"&&!i(H)?.canClose()||(E(F,"studio"),await xu(),await tn(),i(ie)?.ui_management&&(await ca(),await _u(),Zr()&&i(Y)&&await js()))}function Rc(N){E(Dn,N.models_root),E(Jn,N.models_root),E(zs,N.default_models_root),E(_r,N.is_default),E(re,br(i(C))),E(Zn,[N.models_root,...i(Zn),N.default_models_root].filter((K,J,ke)=>K&&ke.indexOf(K)===J).slice(0,10)),localStorage.setItem("audiocpp.ui.modelsFolderHistory",JSON.stringify(i(Zn)))}function $l(){E(Y,""),E(_t,""),E(Ot,[]),E(Me,null),E(re,""),E(ye,null),E(We,[]),E(Pe,{}),E(Zt,"{}"),localStorage.removeItem("audiocpp.ui.model"),En()}function jo(N=!1){return Ba(i(C))||!i(Y)||!N&&i(l)||i(ye)!==!1?!1:($l(),!0)}async function ih(N=!1){if(!(!i(ie)?.ui_management||i(Us))){E(Us,!0),E(Oe,""),E(Ie,""),E(ee,N?"Restoring the default models folder…":"Changing models folder…");try{const K=await A1(N?"":i(Jn).trim());Rc(K),K.is_default?localStorage.removeItem("audiocpp.ui.modelsFolder"):localStorage.setItem("audiocpp.ui.modelsFolder",K.models_root),E(bi,{}),E(Fe,{}),E(fe,"idle"),ei={},Yi!==null&&(window.clearInterval(Yi),Yi=null),Ve!==null&&(window.clearInterval(Ve),Ve=null),await ca(),await js();const J=jo();E(ee,J?`Models folder: ${K.models_root}. No installed model is selected.`:`Models folder: ${K.models_root}`),wi(i(ee))}catch(K){E(ee,K instanceof Error?K.message:String(K)),E(Ie,i(ee)),wi(`Models folder change failed: ${i(ee)}`)}finally{E(Us,!1)}}}async function Po(N=""){E(Vi,!0),E(Ti,!0),E(ka,"");try{E(Ei,await Z4(N||i(Jn).trim()||i(Dn)))}catch(K){E(ka,K instanceof Error?K.message:String(K))}finally{E(Ti,!1)}}function ah(){i(Ei)&&(E(Jn,i(Ei).current),E(Vi,!1))}function da(){hn={},yi={},mi=!1;const N=j1[i(C)?.id]||j1[i(C)?.family]||[],K=i(C)?.family==="controlfoley"||i(C)?.family==="midashenglm_gen";if(E(We,N.filter(J=>!(["vibevoice","moss_ttsd"].includes(i(C)?.family)&&J.name==="voice_samples")&&!(K&&J.name==="duration_sec"))),E(Pe,Object.fromEntries(N.map(J=>[J.name,J.default??""]))),i(C)?.family==="ace_step"&&Ba(i(C))){const J=i(he).find(ke=>ke.id===i(Y))?.session_options;E(Pe,{...i(Pe),lora:J?.["ace_step.lora"]??"",lora_scale:Number(J?.["ace_step.lora_scale"]??1)})}if(i(C)?.family in Xr&&E(pe,Xr[i(C).family]),i(C)?.family==="confucius4_r2t2"?E(Xe,"Auto"):["owsm","owsm_ctc","index_echo","audio_flamingo","kugelaudio","smart_turn","reuse","sidon","hviske_asr_v6","voxtral_tts"].includes(i(C)?.family)?E(Xe,""):i(C)?.family in Jr&&E(Xe,"en"),i(C)?.family==="minimax_h3"?(E(ne,15),E(Pe,{...i(Pe),num_frames:Fc(i(ne)),dit_acceleration:"none"})):i(C)?.task==="gen"&&E(ne,30),i(C)?.family==="yue2"){if(Ba(i(C))){const J=i(he).find(ke=>ke.id===i(Y))?.session_options;E(Pe,{...i(Pe),ar_lora:J?.["yue2.ar_lora"]??"",ar_lora_scale:Number(J?.["yue2.ar_lora_scale"]??1),nar_lora:J?.["yue2.nar_lora"]??"",nar_lora_scale:Number(J?.["yue2.nar_lora_scale"]??1)})}E(tt,""),E(_e,""),Ac()}else["liveavatar","moss_ttsd","sam_audio"].includes(i(C)?.family)?E(tt,i(C).default_text||""):i(C)?.family==="ming3_audio"&&i(C).task==="s2s"?E(tt,""):!i(tt).trim()&&i(C)?.default_text&&E(tt,i(C).default_text);i(C)?.builtin_voices?.length&&i(C).default_voice&&!i(_t)&&E(_t,i(C).default_voice),E(Zt,"{}")}let xa=!1;function Rs(){if(!i(ie)||i(ie).ui_management)return;const N=zc();if(!N.length){$l();return}const J=(i(Y)?N.find(Be=>Be.id===i(Y)):void 0)||N[0],ke=!xa||i(Y)!==J.id;ke&&(E(_t,""),E(Ot,[])),E(Y,J.id),E(C,J),E(Qa,la(J)),Bs={...Bs,[i(Qa)]:J.id},E(re,J.path),E(ye,!0),localStorage.setItem("audiocpp.ui.model",J.id),ke&&(E(ln,cm(J.family)),da()),xa=!0}async function tn(){try{await(async N=>{var K=Ru(N,2);E(ie,K[0]),E(he,K[1])})(await Promise.all([L4(),Bd()])),i(ie).ui_management?Bc():Rs()}catch(N){E(ee,N instanceof Error?N.message:String(N))}}async function js(){if(!i(Y)||!i(re).trim()){E(ye,null);return}if(Ba(i(C))){E(ye,i(he).some(N=>N.id===i(Y)));return}E(ye,null);try{E(ye,(await V4(i(re))).exists)}catch{E(ye,null)}}function No(N){if(E(ri,""),!N){$l(),E(ee,"No model selected. Choose an installed model or download one from the Models tab.");return}const K=i(ga).find(J=>J.id===N);!K||!Ga(K)||(E(Y,N),E(C,K),E(_t,""),E(Ot,[]),E(Qa,la(K)),Bs={...Bs,[i(Qa)]:N},E(re,br(K)),E(ln,cm(K.family)),localStorage.setItem("audiocpp.ui.model",N),da(),js(),Su())}function vu(N){const K=Yr.find(Ye=>Ye.id===N);if(!K||(E(Qa,N),i(Y)&&la(i(C))===N))return;const J=Bs[N],Be=(J?i(ga).find(Ye=>Ye.id===J&&la(Ye)===N&&Ga(Ye)):void 0)||i(ga).find(Ye=>la(Ye)===N&&Ga(Ye));if(Be){No(Be.id);return}$l(),E(ee,`No installed models are available for ${K.label}. Install one from the Models tab.`)}async function Sr(N){if(!i(d)){if(!i(Y)){E(ee,"Choose an installed model before loading."),E(Oe,i(ee)),E(Ie,"");return}if(Ba(i(C))){E(ee,i(ie)?.ui_management?"This model is configured by the server and loads on its first request.":"This server was not started with UI management enabled."),E(Oe,i(ee)),E(Ie,"");return}E(se,!0),E(Oe,""),E(Ie,""),E(ee,`Loading ${i(C).display_name}…`),wi(i(ee));try{const K=i(he).filter(J=>J.loaded&&(J.id!==i(C).id||!ws(i(re),J.path)||!Ro(J,i(C))));for(const J of K)wi(`Unloading ${wl(J)} before loading ${i(C).display_name}.`),await Pr(J.id);K.length&&await tn(),await am({id:i(C).id,path:i(re),family:i(C).family,task:i(C).task,mode:N||i(C).mode||"offline",load_options:{...i(C).load_options||{},...yi},session_options:yr(i(C))}),await tn(),await Su(),E(ee,i(W)("status.modelReady",{model:i(C).display_name})),E(Ie,""),wi(i(ee))}catch(K){throw E(ee,K instanceof Error?K.message:String(K)),E(Ie,i(ee)),wi(`Load failed: ${i(ee)}`),K}finally{E(se,!1)}}}async function ql(){if(!i(Y))return;const N=i(C).display_name;E(se,!0);try{Ba(i(C))?await D4([i(C).id]):await Pr(i(C).id),await tn(),await Su();const K=jo(!0);E(ee,K?`${N} unloaded. No installed model is selected.`:`${N} unloaded.`),wi(i(ee))}catch(K){E(ee,K instanceof Error?K.message:String(K))}finally{E(se,!1)}}async function nh(N){if(!(i(se)||!xr(i(C),N))){if(Sl(i(C),N)){await ql();return}if(Vn(i(C),N),await js(),i(ye)!==!0){E(ee,`${i(C).display_name} ${N.label} is not available at the expected path.`),E(Ie,i(ee));return}await Sr()}}async function bu(){i(se)||!i(Y)||i(ye)===!1||(i(l)?await ql():await Sr())}async function Gl(N){if(!N)return;const K=i(C).task==="sep"||i(C).family==="apollo"?44100:["asr","vad","diar","align","midi","wake","cls"].includes(i(C).task)?16e3:void 0,J=await jr(N,K);return So(J,Pi?.signal)}async function sh(){if(i(C).family==="moss_ttsd"){const Be=i(ze).map(Boolean).lastIndexOf(!0);return Be<0?void 0:(await Promise.all(i(ze).slice(0,Math.max(2,Be+1)).map(async ut=>ut&&await Gl(ut)||""))).join(",")}const N=i(ze).findIndex(Be=>!Be);if(N>=0&&i(ze).slice(N+1).some(Boolean))throw new Mn("VibeVoice speaker references must be filled from Speaker 1 without gaps.");const J=i(ze).filter(Be=>!!Be);return J.length?(await Promise.all(J.map(Be=>Gl(Be)))).filter(Be=>!!Be).join(","):void 0}function Fl(){let N={};try{if(N=JSON.parse(i(Zt)||"{}"),Array.isArray(N)||N===null)throw new Error("must be an object")}catch(ke){throw new Error(`Advanced JSON is invalid: ${ke instanceof Error?ke.message:ke}`)}const K=i(C).default_options||{},J=Object.fromEntries(Object.entries(i(Pe)).filter(([ke,Be])=>{const Ye=i(We).find(ut=>ut.name===ke);return!(Ye?.scope==="session"||Be===""&&Ye&&Ye.default===void 0||i(C)?.family==="canary_asr"&&ke==="target_language"&&Be===""||i(C)?.family==="universr"&&ke==="input_sample_rate"&&Be===""||i(C)?.family==="auk"&&typeof Be=="string"&&Be.trim().length===0||i(m)&&typeof Be=="string"&&Be.trim().length===0)}));return{...K,...J,...N}}function Oo(){const N=Object.fromEntries(i(We).filter(K=>K.scope==="session").map(K=>[K.session_option||K.name,String(i(Pe)[K.name]??K.default??"")]).filter(([,K])=>K.length>0));if(i(C)?.family==="auk"){const K=String(i(Pe).model_gguf||"auk-base-f32.gguf");N["auk.variant"]=K.startsWith("auk-flash-")?"flash":"base"}return N}function En(){if(i(Kt)===null){for(const N of i($t))URL.revokeObjectURL(N.url);for(const N of i(dt))URL.revokeObjectURL(N.url);i(Nt)&&URL.revokeObjectURL(i(Nt).url)}E($t,[]),E(dt,[]),E(wt,""),E(qt,""),E(Nt,null),E(Kt,null),E(ta,"")}function eo(N){for(const K of N.audio)URL.revokeObjectURL(K.url);for(const K of N.artifacts)URL.revokeObjectURL(K.url);URL.revokeObjectURL(N.settings.url)}async function Al(N,K=!1){if(N.modelId!==i(Y)||N.task!==i(C).task){E(ri,i(W)("history.wrongModel",{label:N.label,model:i(C).display_name})),wi(i(ri));return}if(K){if(i(ae)||i(se)||i(di)){E(ri,i(W)("history.wait"));return}E(di,!0);try{await tk(N.settingsJson)}catch(J){E(ri,J instanceof Error?J.message:String(J)),wi(`History settings restore failed: ${i(ri)}`);return}finally{E(di,!1)}return Al(N)}E(ri,""),En(),E(Kt,N.id),E(ta,N.modelId),E($t,N.audio),E(dt,N.artifacts),E(wt,N.text),E(qt,N.json),E(Nt,N.settings)}function yu(N){const K=i(xt).find(ke=>ke.id===N);if(!K)return;const J=i(Kt)===N;if(J&&En(),E(xt,i(xt).filter(ke=>ke.id!==N)),eo(K),J){const ke=i(xt).find(Be=>Be.modelId===i(Y)&&Be.task===i(C).task);ke&&Al(ke)}}function rh(){i(Kt)!==null&&En();for(const N of i(xt))eo(N);E(xt,[]),E(ri,"")}function wu(N){const K=i(xt).slice(N);if(!K.length)return;const J=K.some(ke=>ke.id===i(Kt));J&&En(),E(xt,i(xt).slice(0,N));for(const ke of K)eo(ke);if(J){const ke=i(xt).find(Be=>Be.modelId===i(Y)&&Be.task===i(C).task);ke&&Al(ke)}}async function ku(){if(Ba(i(C))){if(mi)throw new Error("The imported model settings require a reload through the server configuration.");if(!i(he).some(N=>N.id===i(Y)))throw new Error("Configured model is not registered by this server.");return}if(!i(l)||mi){if(mi&&i(he).some(N=>N.id===i(Y)&&N.loaded)&&(await Pr(i(Y)),await tn()),await Sr(),await tn(),!i(he).some(N=>N.id===i(Y)&&N.loaded&&Ro(N,i(C))))throw new Error("Model did not load.");mi=!1}}async function tk(N){const K=JSON.parse(N);if(K.schema_version!==1||typeof K.model?.id!="string"||!Array.isArray(K.requests)||!K.requests.length||!K.requests.every(vt=>vt&&vt.body&&typeof vt.body=="object"&&!Array.isArray(vt.body)))throw new Error("Choose an audio.cpp settings JSON exported with Save settings JSON.");const J=i(ga).find(vt=>vt.id===K.model.id);if(!J||J.family!==K.model.family||J.task!==K.model.task)throw new Error(`The exported model is not available in this UI: ${K.model.id}`);if(!Ga(J))throw new Error(`Install ${J.display_name} before importing its settings.`);const ke=K.model.package_id?J.install_packages?.find(vt=>vt.id===K.model.package_id):void 0;if(K.model.package_id&&!ke)throw new Error(`The exported package is not available: ${K.model.package_id}`);if(ke&&!xr(J,ke,i(he),i(Fe)))throw new Error(`Install ${ke.label} before importing its settings.`);const Be=K.requests[0].body,Ye=Be.request||Be,ut=K.ui,Yt=K.resolved_seed;if(!Number.isInteger(Yt)||Yt<0||Yt>4294967295)throw new Error("The settings JSON has an invalid resolved seed.");const Dt={...J.load_options||{},...J.id===i(Y)?yi:{}};No(J.id),ke&&(zi={...zi,[J.id]:ke.id},localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(zi))),E(re,ke?br(J):K.model.path),hn={...K.model.session_options||{}},yi={...K.model.load_options||{}},E(Pe,{...i(Pe),...ut?.advanced_values||Object.fromEntries(Object.entries(Ye.options||{}).filter(([vt])=>i(We).some(Ki=>Ki.name===vt)))});for(const vt of i(We).filter(Ki=>Ki.scope==="session")){const Ki=hn[vt.session_option||vt.name];if(Ki!==void 0){if(vt.type==="bool"&&!["true","false"].includes(Ki))throw new Error(`Invalid boolean setting: ${vt.name}`);if(["number","slider"].includes(vt.type)&&!Number.isFinite(Number(Ki)))throw new Error(`Invalid numeric setting: ${vt.name}`);hi(Pe,i(Pe)[vt.name]=vt.type==="bool"?Ki==="true":["number","slider"].includes(vt.type)?Number(Ki):Ki)}}E(tt,ut?.text??(K.requests[0].endpoint==="/v1/audio/speech"?K.requests.map(vt=>vt.body.input).join(` +`)),n.length?n:t.trim()?[t]:[]}function dm(t){return t==="vibevoice"?600:t==="voxcpm2"?60:1e3}const K1="audiocpp.ui.theme",dT=[{id:"mocha",label:"Catppuccin Mocha"},{id:"system",label:"System"},{id:"dark",label:"Dark"},{id:"light",label:"Light"},{id:"paper",label:"Paper"}];function Y1(t){return t==="dark"||t==="light"||t==="system"||t==="mocha"||t==="paper"?t:"mocha"}function uT(t,e){return t!=="system"?t:e?"dark":"light"}var X1=ue(""),Qd=ue(' '),fT=ue('
        '),mT=ue('
        '),pT=ue('
        '),gT=ue(''),hT=ue(""),_T=ue('
        '),vT=ue(''),bT=ue('
        '),yT=ue('
        Components
        Sampling and memory
        ');function wT(t,e){Wa(e,!1);const a=se(),n=se(),s=se(),r=se(),o=se();let l=$e(e,"task",8,"tts"),u=$e(e,"busy",8,!1),p=$e(e,"paramSpecs",24,()=>[]),g=$e(e,"advancedValues",24,()=>({})),h=$e(e,"tr",8,(U,V,I=U)=>I),f=$e(e,"localizedParameterText",8,(U,V)=>V==="label"?U.name:""),m=$e(e,"setParameterValue",8,()=>{});const d=["model_gguf","qwen_gguf","vae_gguf"],c=["num_inference_steps","guidance_scale","sway_sampling_coef"],_=["attention","mem_saver"];function b(U){return U.map(V=>p().find(I=>I.name===V)).filter(V=>V!==void 0)}We(()=>{},()=>{M(a,b(d))}),We(()=>{},()=>{M(n,b(c))}),We(()=>{},()=>{M(s,b(_))}),We(()=>Z(g()),()=>{M(r,String(g().model_gguf||"auk-base-f32.gguf"))}),We(()=>i(r),()=>{M(o,i(r).startsWith("auk-flash-")?"AuK-Flash":"Base")}),Yn(),xn();var v=yT(),k=E(v),y=R(E(k),2),T=E(y,!0);F(y),F(k);var O=R(k,2);jt(O,5,()=>i(a),ei,(U,V)=>{var I=fT(),w=E(I),S=E(w,!0);F(w);var C=R(w,2);jt(C,5,()=>(i(V),q(()=>i(V).choices||[])),ei,(z,be)=>{var ae=X1(),ge=E(ae,!0);F(ae);var ie={};ce(()=>{X(ge,i(be)),ie!==(ie=i(be))&&(ae.value=(ae.__value=i(be))??"")}),te(z,ae)}),F(C);var H;On(C);var Y=R(C,2);{var ee=z=>{var be=Qd(),ae=E(be,!0);F(be),ce(ge=>X(ae,ge),[()=>(Z(f()),i(V),Z(h()),q(()=>f()(i(V),"info",h())))]),te(z,be)},W=wi(()=>(Z(f()),i(V),Z(h()),q(()=>f()(i(V),"info",h()))));qe(Y,z=>{i(W)&&z(ee)})}F(I),ce((z,be)=>{ye(w,"for",(i(V),q(()=>"auk-param-"+i(V).name))),X(S,z),ye(C,"id",(i(V),q(()=>"auk-param-"+i(V).name))),C.disabled=u(),H!==(H=be)&&(C.value=(C.__value=be)??"",kn(C,be))},[()=>(Z(f()),i(V),Z(h()),q(()=>f()(i(V),"label",h()))),()=>(Z(g()),i(V),q(()=>String(g()[i(V).name]??i(V).default??"")))]),Te("change",C,z=>m()(i(V),z.currentTarget.value)),te(U,I)}),F(O);var j=R(O,2),$=E(j);{var P=U=>{var V=Us(),I=At(V);jt(I,1,()=>q(()=>b(["instruct"])),ei,(w,S)=>{var C=mT(),H=E(C),Y=E(H),ee=R(Y),W=E(ee,!0);F(ee),F(H);var z=R(H,2);Ka(z);var be=R(z,2);{var ae=ie=>{var _e=Qd(),le=E(_e,!0);F(_e),ce(Ee=>X(le,Ee),[()=>(Z(f()),i(S),Z(h()),q(()=>f()(i(S),"info",h())))]),te(ie,_e)},ge=wi(()=>(Z(f()),i(S),Z(h()),q(()=>f()(i(S),"info",h()))));qe(be,ie=>{i(ge)&&ie(ae)})}F(C),ce((ie,_e,le,Ee)=>{X(Y,`${ie??""} `),X(W,_e),z.disabled=u(),Ki(z,le),ye(z,"placeholder",Ee)},[()=>(Z(f()),i(S),Z(h()),q(()=>f()(i(S),"label",h()))),()=>(Z(h()),q(()=>h()("request.optional"))),()=>(Z(g()),q(()=>String(g().instruct??""))),()=>(Z(f()),i(S),Z(h()),q(()=>f()(i(S),"placeholder",h())))]),Te("input",z,ie=>m()(i(S),ie.currentTarget.value)),te(w,C)}),te(U,V)};qe($,U=>{l()==="tts"&&U(P)})}var L=R($,2);jt(L,1,()=>q(()=>b(["duration_sec"])),ei,(U,V)=>{var I=pT(),w=E(I),S=E(w),C=R(S),H=E(C,!0);F(C),F(w);var Y=R(w,2);Dt(Y);var ee=R(Y,2);{var W=be=>{var ae=Qd(),ge=E(ae,!0);F(ae),ce(ie=>X(ge,ie),[()=>(Z(f()),i(V),Z(h()),q(()=>f()(i(V),"info",h())))]),te(be,ae)},z=wi(()=>(Z(f()),i(V),Z(h()),q(()=>f()(i(V),"info",h()))));qe(ee,be=>{i(z)&&be(W)})}F(I),ce((be,ae,ge,ie)=>{X(S,`${be??""} `),X(H,ae),Y.disabled=u(),ye(Y,"min",(i(V),q(()=>i(V).minimum))),ye(Y,"max",(i(V),q(()=>i(V).maximum))),ye(Y,"step",(i(V),q(()=>i(V).step))),Ki(Y,ge),ye(Y,"placeholder",ie)},[()=>(Z(f()),i(V),Z(h()),q(()=>f()(i(V),"label",h()))),()=>(Z(h()),q(()=>h()("request.optional"))),()=>(Z(g()),q(()=>String(g().duration_sec??""))),()=>(Z(f()),i(V),Z(h()),q(()=>f()(i(V),"placeholder",h())))]),Te("input",Y,be=>m()(i(V),be.currentTarget.value===""?"":be.currentTarget.valueAsNumber)),te(U,I)}),F(j);var x=R(j,2),B=E(x),D=R(E(B)),A=E(D,!0);F(D),F(B);var G=R(B,2);jt(G,5,()=>(i(n),i(s),q(()=>[...i(n),...i(s)])),ei,(U,V)=>{var I=bT(),w=E(I),S=E(w,!0);F(w);var C=R(w,2);{var H=ge=>{var ie=gT(),_e=E(ie);Dt(_e);var le=R(_e,3,!0);F(ie),ce((Ee,Se)=>{ye(_e,"id",(i(V),q(()=>"auk-param-"+i(V).name))),_e.disabled=u(),Sd(_e,Ee),X(le,Se)},[()=>(Z(g()),i(V),q(()=>!!g()[i(V).name])),()=>(Z(g()),i(V),Z(h()),q(()=>g()[i(V).name]?h()("common.enabled"):h()("common.disabled")))]),Te("change",_e,Ee=>m()(i(V),Ee.currentTarget.checked)),te(ge,ie)},Y=ge=>{var ie=hT();jt(ie,5,()=>(i(V),q(()=>i(V).choices||[])),ei,(le,Ee)=>{var Se=X1(),pe=E(Se,!0);F(Se);var De={};ce(()=>{X(pe,i(Ee)),De!==(De=i(Ee))&&(Se.value=(Se.__value=i(Ee))??"")}),te(le,Se)}),F(ie);var _e;On(ie),ce(le=>{ye(ie,"id",(i(V),q(()=>"auk-param-"+i(V).name))),ie.disabled=u(),_e!==(_e=le)&&(ie.value=(ie.__value=le)??"",kn(ie,le))},[()=>(Z(g()),i(V),q(()=>String(g()[i(V).name]??i(V).default??"")))]),Te("change",ie,le=>m()(i(V),le.currentTarget.value)),te(ge,ie)},ee=ge=>{var ie=_T(),_e=E(ie);Dt(_e);var le=R(_e,2),Ee=E(le,!0);F(le),F(ie),ce((Se,pe)=>{ye(_e,"id",(i(V),q(()=>"auk-param-"+i(V).name))),_e.disabled=u(),ye(_e,"min",(i(V),q(()=>i(V).minimum))),ye(_e,"max",(i(V),q(()=>i(V).maximum))),ye(_e,"step",(i(V),q(()=>i(V).step))),Ki(_e,Se),X(Ee,pe)},[()=>(Z(g()),i(V),q(()=>Number(g()[i(V).name]??i(V).default))),()=>(Z(g()),i(V),q(()=>String(g()[i(V).name])))]),Te("input",_e,Se=>m()(i(V),Se.currentTarget.valueAsNumber)),te(ge,ie)},W=ge=>{var ie=vT();Dt(ie),ce(_e=>{ye(ie,"id",(i(V),q(()=>"auk-param-"+i(V).name))),ie.disabled=u(),ye(ie,"min",(i(V),q(()=>i(V).minimum))),ye(ie,"max",(i(V),q(()=>i(V).maximum))),ye(ie,"step",(i(V),q(()=>i(V).step))),Ki(ie,_e)},[()=>(Z(g()),i(V),q(()=>String(g()[i(V).name]??"")))]),Te("input",ie,_e=>m()(i(V),_e.currentTarget.valueAsNumber)),te(ge,ie)};qe(C,ge=>{i(V),q(()=>i(V).type==="bool")?ge(H):(i(V),q(()=>i(V).type==="choice")?ge(Y,1):(i(V),q(()=>i(V).type==="slider")?ge(ee,2):ge(W,-1)))})}var z=R(C,2);{var be=ge=>{var ie=Qd(),_e=E(ie,!0);F(ie),ce(le=>X(_e,le),[()=>(Z(f()),i(V),Z(h()),q(()=>f()(i(V),"info",h())))]),te(ge,ie)},ae=wi(()=>(Z(f()),i(V),Z(h()),q(()=>f()(i(V),"info",h()))));qe(z,ge=>{i(ae)&&ge(be)})}F(I),ce(ge=>{ye(w,"for",(i(V),q(()=>"auk-param-"+i(V).name))),X(S,ge)},[()=>(Z(f()),i(V),Z(h()),q(()=>f()(i(V),"label",h())))]),te(U,I)}),F(G),F(x),F(v),ce(()=>{X(T,i(o)),X(A,(i(n),i(s),q(()=>i(n).length+i(s).length)))}),te(t,v),Qa()}const Lr=il({modelId:"",turns:[]});let kT=1;const xT={subscribe:Lr.subscribe};function um(t){t.questionUrl&&URL.revokeObjectURL(t.questionUrl),t.replyUrl&&URL.revokeObjectURL(t.replyUrl),t.questionUrl="",t.replyUrl=""}function ST(){for(const t of cd(Lr).turns)um(t);Lr.set({modelId:"",turns:[]})}function J1(t){return t.filter(e=>e.state==="done"&&e.reply&&!e.leftOut)}function TT(t,e,a){const n=cd(Lr),s=n.turns.filter(l=>l.state!=="failed"&&l.state!=="stopped");for(const l of n.turns)s.includes(l)||um(l);const r=s.length>0&&n.modelId!==t,o={key:kT++,state:e,seed:a,questionPath:"",questionUrl:"",replyText:"",replyUrl:"",reply:null,cut:!1,steps:"",leftOut:!1,live:!0,firstAudioMs:null,message:""};return Lr.set({modelId:r?n.modelId:t,turns:[...s,o]}),{turn:o,history:r?[]:J1(s)}}function $o(t,e){Object.assign(t,e),Lr.update(a=>a)}function $T(t,e,a){Object.assign(e,a,{state:"done"});const n=cd(Lr),s=n.modelId!==t;if(s)for(const r of n.turns)r!==e&&um(r);return Lr.set(s?{modelId:t,turns:[e]}:n),s}function Z1(t){const e=atob(t),a=new Uint8Array(e.length);for(let n=0;nString.fromCharCode(t[l],t[l+1],t[l+2],t[l+3]);if(t.length<12||a(0)!=="RIFF"||a(8)!=="WAVE")throw new Error("The reply audio is not a WAV file.");let n=0,s=0,r=0,o=0;for(let l=12;l+8<=t.length;){const u=a(l),p=e.getUint32(l+4,!0),g=l+8;if(u==="fmt "&&g+16<=t.length)n=e.getUint16(g,!0),s=e.getUint16(g+2,!0),r=e.getUint32(g+4,!0),o=e.getUint16(g+14,!0);else if(u==="data"){if(n!==1||o!==16||s<1||r<1)throw new Error("The reply audio is not 16-bit PCM.");const h=Math.floor(Math.min(p,t.length-g)/(2*s)),f=new Float32Array(h);for(let m=0;m{};beginTurn(e){if(this.open=!0,this.stop(),this.enabled=e,this.lead=.15,!!e){if(!this.context)try{this.context=new AudioContext({sampleRate:24e3,latencyHint:"interactive"})}catch{this.unavailable=!0,this.enabled=!1;return}this.context.resume().catch(()=>{})}}endTurn(){this.open=!1,this.suspendIfIdle()}get blocked(){return this.enabled&&this.context!==null&&this.context.state!=="running"}get playing(){return this.sources.size>0}push(e,a){const n=this.context;if(!this.enabled||!n||!e.length)return null;const s=n.currentTime;!this.frames||a!==this.rate?(this.startTime=s+this.lead,this.frames=0,this.rate=a):this.startTime+this.frames/this.rate{o.disconnect(),this.sources.delete(o),this.sources.size||(this.onchange(),this.suspendIfIdle())};const l=this.startTime+this.frames/this.rate;return o.start(l),this.frames+=e.length,this.sources.add(o),this.sources.size===1&&this.onchange(),Math.max(0,l-s)}stop(){this.enabled=!1,this.frames=0;const e=this.sources.size>0;for(const a of this.sources)a.onended=null,a.stop(),a.disconnect();this.sources.clear(),e&&this.onchange(),this.suspendIfIdle()}close(){this.stop(),this.context?.close().catch(()=>{}),this.context=null}suspendIfIdle(){!this.open&&!this.sources.size&&this.context?.state==="running"&&this.context.suspend().catch(()=>{})}}var FT=ue(''),AT=ue(' '),CT=ue(`This entry's id is not the catalog's (lfm2-audio-s2s or lfm2-audio-jp-s2s), so Model parameters shows the family's ASR settings; turns leave them out and use Max tokens.`),MT=ue(''),ET=ue(''),zT=ue('…'),UT=ue(''),BT=ue(' '),RT=ue('
      • You
        Reply

      • '),jT=ue('
          '),PT=ue('

          Record or choose a spoken question under Source audio, then press Run. Each Run adds a turn, and the earlier turns go with it.

          '),NT=ue('Live playback is not available; each reply is in its player when it finishes.'),OT=ue('The browser did not let live audio start; each reply is in its player when it finishes.'),IT=ue('
          Conversation
          ');function LT(t,e){Wa(e,!1);const a=()=>ud(xT,"$conversation",n),[n,s]=Ju(),r=se(),o=se(),l=se(),u=se(),p=se();let g=$e(e,"modelId",8,""),h=$e(e,"busy",8,!1),f=$e(e,"server",8,null),m=$e(e,"loadedModels",24,()=>[]),d=$e(e,"catalogEntries",24,()=>[]),c=$e(e,"paramSpecs",24,()=>[]),_=$e(e,"sourceFile",8,null),b=$e(e,"sourceRecording",8,!1),v=$e(e,"clearSource",8,()=>{}),k=$e(e,"log",8,()=>{}),y=$e(e,"setPanelRunner",8,()=>()=>{});const T=se(new GT);let O=se(!0),j=se(!1),$=se(!1),P=se(!1),L=se(null),x=null,B=se(g());fi(T,i(T).onchange=()=>{M(j,i(T).playing)});function D(me){return d().find(Fe=>Fe.id===me)?.display_name||me}function A(me){!i(L)||i(L).scrollTop+i(L).clientHeight{i(L)&&fi(L,i(L).scrollTop=i(L).scrollHeight)})}function G(me){if(me.aborted)throw new DOMException("The turn was stopped.","AbortError")}function U(me){const Fe=me;return typeof Fe=="object"&&Fe!==null&&Fe.id==="lfm2_audio.reply"&&typeof Fe.kind=="string"&&typeof Fe.payload=="string"}function V(me){return JSON.stringify(me,(Fe,Ue)=>(Fe==="audio"||Fe==="payload")&&typeof Ue=="string"?``:Ue,2)}function I(me,Fe,Ue,he){const Ae={audio:Ue,seed:me.seed,options:Fe};return me.maxTokens!==void 0&&(Ae.max_tokens=me.maxTokens),me.language&&(Ae.language=me.language),he.length&&(Ae.artifacts=he.flatMap(He=>[{id:"lfm2_audio.question",kind:"custom",path:He.questionPath},He.reply])),{model:me.modelId,request:Ae}}function w(me,Fe,Ue){const he={};typeof Ue.text=="string"&&(he.replyText=Ue.text);let Ae=null;typeof Ue.audio=="string"&&(Ae=new Blob([Z1(Ue.audio)],{type:"audio/wav"}),he.replyUrl=URL.createObjectURL(Ae));const He=(Array.isArray(Ue.artifacts)?Ue.artifacts:[]).find(U);return He?(he.reply={id:He.id,kind:He.kind,payload:He.payload},He.meta&&(he.reply.meta=He.meta),he.cut=He.meta?.ended==="false",he.steps=He.meta?.steps||""):he.message="The server returned no reply artifact, so this turn does not go with the next question.",$T(me,Fe,he)&&k()(`New LFM2.5-Audio conversation with ${D(me)}.`),Ae}async function S(me){if(b())throw me.warning("Stop the recording first.");const Fe=_();if(!Fe)throw me.warning("Record or choose source audio first.");i(T).beginTurn(i(O));const Ue=d().find(nt=>nt.id===me.modelId)?.configured===!0,he=f()?.ui_management===!0&&!Ue||m().some(nt=>nt.id===me.modelId&&nt.mode==="streaming");he&&i(O)&&!i(T).unavailable&&document.querySelectorAll("audio, video").forEach(nt=>nt.pause()),M(P,i(T).unavailable),M($,!1);const Ae=performance.now(),He={...me.options,return_codes:!0};if(i(p))for(const nt of c())delete He[nt.name];const{turn:Be,history:Ge}=TT(me.modelId,f()?.ui_management&&!Ue?"loading":"uploading",me.seed),Ie=new AbortController,ct=()=>Ie.abort();me.signal.aborted?ct():me.signal.addEventListener("abort",ct),x=Ie;const Ve=Ie.signal;let Gt="load";try{await me.ensureLoaded("streaming"),G(Ve),Gt="read",$o(Be,{state:"uploading",live:he}),me.setStatus("Uploading the question…");const nt=await Or(Fe);G(Ve),Gt="upload";const Re=await To(nt,Ve);G(Ve),Gt="run";const St=I(me,He,Re,Ge);$o(Be,{state:"waiting",questionPath:Re,questionUrl:URL.createObjectURL(nt)}),me.setStatus(he?"Waiting for the reply…":"Waiting for the whole reply: this server runs the entry offline, so the reply does not stream.");let rt;if(he){let Ft=0,Qt=!0;for await(const Mt of c5(St,Ve)){if(Mt.type==="task.stream.done"){rt=Mt.result;continue}const zt=Mt.event,Si=zt.partial_text,Bi=typeof Si?.text=="string"?Si.text:"";let Ii=Be.firstAudioMs;if(Qt&&typeof zt.audio=="string")try{const Ti=qT(Z1(zt.audio));Ft+=Ti.samples.length/Ti.sampleRate;const Sa=i(T).push(Ti.samples,Ti.sampleRate);Ii===null&&(Ii=performance.now()-Ae+(Sa??0)*1e3,M($,i(T).blocked),i($)&&i(T).stop())}catch(Ti){Qt=!1,i(T).stop(),i(O)&&(M(P,!0),k()(`Live playback stopped: ${Ti instanceof Error?Ti.message:String(Ti)}`))}(Be.state!=="streaming"||Bi||Ii!==Be.firstAudioMs)&&$o(Be,{state:"streaming",replyText:Be.replyText+Bi,firstAudioMs:Ii}),me.setStatus(Qt?`Streaming the reply: ${Math.floor(Ft)} s`:"Streaming the reply…")}}else rt=await vl(St,Ve);G(Ve);const Tt=w(me.modelId,Be,rt);return _()===Fe&&v()(),{audio:Tt,text:Be.replyText,json:V(rt)}}catch(nt){if(i(T).stop(),Ve.aborted||nt?.name==="AbortError")throw $o(Be,{state:"stopped",message:"Stopped before the reply finished; this turn is not part of the conversation."}),nt?.name==="AbortError"?nt:new DOMException("The turn was stopped.","AbortError");if(nt instanceof z1){const St="The connection closed before the reply finished; this turn is not part of the conversation.";throw $o(Be,{state:"stopped",message:St}),new Error(St)}let Re=nt instanceof Error?nt.message:String(nt);throw Gt==="read"?Re=`Could not read the question: ${Re}`:Gt==="upload"?Re=`Upload failed: ${Re}`:Gt==="run"&&Ge.some(St=>Re.includes(St.questionPath))&&(Re+=" The server no longer has the questions this conversation uploaded, as after a restart; start a new conversation."),$o(Be,{state:"failed",message:Re}),new Error(Re)}finally{me.signal.removeEventListener("abort",ct),x===Ie&&(x=null),i(T).endTurn()}}function C(){h()||(i(T).stop(),ST())}function H(me){h()||i(l)||$o(me,{leftOut:!me.leftOut})}function Y(){i(T).stop()}function ee(me){return me.state==="loading"?"loading the model":me.state!=="done"?me.state:me.leftOut?"left out":me.cut?"cut at max_tokens":"done"}function W(me){const Fe=[`seed ${me.seed}`];return me.firstAudioMs!==null&&Fe.push(`first audio ${(me.firstAudioMs/1e3).toFixed(2)} s`),me.steps&&Fe.push(`${me.steps} steps`),me.live||Fe.push("not streamed"),Fe.join(" · ")}Bs(()=>y()(S)),fl(()=>{x?.abort(),i(T).close()}),We(()=>a(),()=>{M(r,a().turns)}),We(()=>a(),()=>{M(o,a().modelId)}),We(()=>(i(r),i(o),Z(g())),()=>{M(l,i(r).length>0&&i(o)!==g())}),We(()=>(i(l),i(r)),()=>{M(u,i(l)?0:J1(i(r)).length)}),We(()=>a(),()=>{A(a())}),We(()=>Z(c()),()=>{M(p,c().some(me=>me.name==="audio_chunk_mode"))}),We(()=>(Z(g()),i(B),i(T)),()=>{g()!==i(B)&&(M(B,g()),i(T).stop())}),We(()=>(i(O),i(T)),()=>{i(O)||i(T).stop()}),Yn(),xn();var z=IT();Te("play",cf,Y,!0);var be=E(z),ae=E(be),ge=R(E(ae),2),ie=E(ge,!0);F(ge),F(ae);var _e=R(ae,2),le=E(_e);{var Ee=me=>{var Fe=FT();Te("click",Fe,Y),te(me,Fe)};qe(le,me=>{i(j)&&me(Ee)})}var Se=R(le,2);F(_e),F(be);var pe=R(be,2);{var De=me=>{var Fe=AT(),Ue=E(Fe);F(Fe),ce((he,Ae)=>X(Ue,`These turns are with ${he??""}. Run starts a new conversation with ${Ae??""}.`),[()=>(i(o),q(()=>D(i(o)))),()=>(Z(g()),q(()=>D(g())))]),te(me,Fe)};qe(pe,me=>{i(l)&&me(De)})}var et=R(pe,2);{var Qe=me=>{var Fe=CT();te(me,Fe)};qe(et,me=>{i(p)&&me(Qe)})}var Pe=R(et,2);{var xe=me=>{var Fe=jT();jt(Fe,7,()=>i(r),Ue=>Ue.key,(Ue,he,Ae)=>{var He=RT();let Be;var Ge=E(He),Ie=E(Ge),ct=E(Ie);F(Ie);var Ve=R(Ie,2);let Gt;var nt=E(Ve,!0);F(Ve);var Re=R(Ve,2),St=E(Re,!0);F(Re);var rt=R(Re,2);{var Tt=mi=>{var hi=MT(),ii=E(hi,!0);F(hi),ce(()=>{hi.disabled=h()||i(l),ye(hi,"aria-label",(i(he),Z(i(Ae)),q(()=>`${i(he).leftOut?"Include":"Leave out"} turn ${i(Ae)+1}`))),X(ii,(i(he),q(()=>i(he).leftOut?"Include":"Leave out")))}),Te("click",hi,()=>H(i(he))),te(mi,hi)};qe(rt,mi=>{i(he),q(()=>i(he).state==="done"&&i(he).reply)&&mi(Tt)})}F(Ge);var Ft=R(Ge,2),Qt=R(E(Ft),2);{var Mt=mi=>{var hi=ET();ce(()=>{ye(hi,"src",(i(he),q(()=>i(he).questionUrl))),ye(hi,"aria-label",`Turn ${i(Ae)+1} question`)}),te(mi,hi)},zt=mi=>{var hi=zT();te(mi,hi)};qe(Qt,mi=>{i(he),q(()=>i(he).questionUrl)?mi(Mt):mi(zt,-1)})}F(Ft);var Si=R(Ft,2),Bi=R(E(Si),2),Ii=E(Bi),Ti=E(Ii,!0);F(Ii);var Sa=R(Ii,2);{var bn=mi=>{var hi=UT(),ii=E(hi),_a=R(ii,2);F(hi),ce(()=>{ye(ii,"src",(i(he),q(()=>i(he).replyUrl))),ye(ii,"aria-label",`Turn ${i(Ae)+1} reply`),ye(_a,"href",(i(he),q(()=>i(he).replyUrl))),ye(_a,"download",`${i(o)}-turn-${i(Ae)+1}-reply.wav`)}),te(mi,hi)};qe(Sa,mi=>{i(he),q(()=>i(he).replyUrl)&&mi(bn)})}F(Bi),F(Si);var Tn=R(Si,2);{var $n=mi=>{var hi=BT(),ii=E(hi,!0);F(hi),ce(()=>X(ii,(i(he),q(()=>i(he).message)))),te(mi,hi)};qe(Tn,mi=>{i(he),q(()=>i(he).message)&&mi($n)})}F(He),ce((mi,hi)=>{ye(He,"data-state",(i(he),q(()=>i(he).state))),Be=Gi(He,1,"svelte-18zfjku",null,Be,{"left-out":i(he).leftOut}),X(ct,`Turn ${i(Ae)+1}`),Gt=Gi(Ve,1,"badge svelte-18zfjku",null,Gt,{bad:i(he).state==="failed"||i(he).state==="stopped"}),X(nt,mi),X(St,hi),X(Ti,(i(he),q(()=>i(he).replyText||(i(he).state==="done"?"(no text)":"…"))))},[()=>(i(he),q(()=>ee(i(he)))),()=>(i(he),q(()=>W(i(he))))]),te(Ue,He)}),F(Fe),Ga(Fe,Ue=>M(L,Ue),()=>i(L)),te(me,Fe)},lt=me=>{var Fe=PT();te(me,Fe)};qe(Pe,me=>{i(r),q(()=>i(r).length)?me(xe):me(lt,-1)})}var re=R(Pe,2),ke=E(re);Dt(ke),ja(3),F(re);var ne=R(re,2);{var fe=me=>{var Fe=NT();te(me,Fe)},we=me=>{var Fe=OT();te(me,Fe)};qe(ne,me=>{i(P)?me(fe):i($)&&me(we,1)})}F(z),ce(()=>{X(ie,i(u)?`${i(u)} earlier ${i(u)===1?"turn goes":"turns go"} with the next question`:"The next question starts the conversation"),Se.disabled=(Z(h()),i(r),q(()=>h()||!i(r).length))}),Te("click",Se,C),W_(ke,()=>i(O),me=>M(O,me)),te(t,z),Qa(),s()}var DT=ue(''),VT=ue('LiveAvatar reference'),HT=ue('Uploading reference image…'),WT=ue(' '),QT=ue(' Recording microphone…',1),KT=ue(" "),YT=ue(' ',1),XT=ue(""),JT=ue(''),ZT=ue('
          '),e$=ue(''),t$=ue('
          '),i$=ue(''),a$=ue(' ',1),n$=ue('
          '),s$=ue('
          Memory and execution
          ');function r$(t,e){Wa(e,!1);const a=se(),n=se();let s=$e(e,"busy",8,!1),r=$e(e,"loraUploading",12,!1),o=$e(e,"paramSpecs",24,()=>[]),l=$e(e,"advancedValues",24,()=>({})),u=$e(e,"setParameterValue",8,()=>{}),p=$e(e,"sourceFile",8,null),g=$e(e,"sourceRecording",8,!1),h=$e(e,"sourceRecordingBlocked",8,!1),f=$e(e,"setSourceFile",8,()=>{}),m=$e(e,"startSourceRecording",8,()=>{}),d=$e(e,"stopSourceRecording",8,()=>{});const c=["generation_mode","height","width","num_frames","num_clips","num_inference_steps","guidance_scale","shift","negative_prompt"],_=["sage_attention","memory_saver","fused_cfg","denoiser_layerwise","denoiser_layerwise_batch","target_cache_blocks","vae_cache_f16","vae_encoder_chunk_size","vae_decoder_tile_size","denoiser_weight_streaming"];let b=se(null),v=se(null),k=se(null),y=se(""),T=se(""),O=null;function j(Pe,xe){const lt=o().find(re=>re.name===Pe);lt&&u()(lt,xe)}function $(){O?.abort(),O=null,r(!1),M(b,null),M(T,""),i(y)&&URL.revokeObjectURL(i(y)),M(y,""),i(v)&&fi(v,i(v).value=""),j("reference_image_path","")}async function P(Pe){if(Pe){O?.abort(),M(T,""),M(b,Pe),i(y)&&URL.revokeObjectURL(i(y)),M(y,URL.createObjectURL(Pe)),r(!0),O=new AbortController;try{const xe=await gc(Pe,O.signal);j("reference_image_path",xe)}catch(xe){O.signal.aborted||(M(T,xe instanceof Error?xe.message:String(xe)),j("reference_image_path",""))}finally{r(!1),O=null}}}function L(Pe){f()(Pe)}function x(){i(k)&&fi(k,i(k).value=""),f()(null)}fl(()=>{O?.abort(),i(y)&&URL.revokeObjectURL(i(y))}),We(()=>Z(o()),()=>{M(a,c.map(Pe=>o().find(xe=>xe.name===Pe)).filter(Pe=>Pe!==void 0))}),We(()=>Z(o()),()=>{M(n,_.map(Pe=>o().find(xe=>xe.name===Pe)).filter(Pe=>Pe!==void 0))}),Yn(),xn();var B=s$(),D=E(B),A=R(E(D),2);Ga(A,Pe=>M(v,Pe),()=>i(v));var G=R(A,2),U=R(E(G),2),V=E(U,!0);F(U);var I=R(U,2);{var w=Pe=>{var xe=DT();ce(()=>xe.disabled=s()),Te("click",xe,$),te(Pe,xe)};qe(I,Pe=>{i(b)&&Pe(w)})}F(G);var S=R(G,2);{var C=Pe=>{var xe=VT();ce(()=>ye(xe,"src",i(y))),te(Pe,xe)};qe(S,Pe=>{i(y)&&Pe(C)})}var H=R(S,2);{var Y=Pe=>{var xe=HT();te(Pe,xe)};qe(H,Pe=>{r()&&Pe(Y)})}var ee=R(H,2);{var W=Pe=>{var xe=WT(),lt=E(xe,!0);F(xe),ce(()=>X(lt,i(T))),te(Pe,xe)};qe(ee,Pe=>{i(T)&&Pe(W)})}F(D);var z=R(D,2),be=R(E(z),2);Ga(be,Pe=>M(k,Pe),()=>i(k));var ae=R(be,2),ge=R(E(ae)),ie=E(ge,!0);F(ge),F(ae);var _e=R(ae,2),le=E(_e);{var Ee=Pe=>{var xe=QT(),lt=At(xe);ja(2),Te("click",lt,function(...re){d()?.apply(this,re)}),te(Pe,xe)},Se=Pe=>{var xe=YT(),lt=At(xe),re=R(lt,2),ke=R(re,2);{var ne=fe=>{var we=KT(),me=E(we,!0);F(we),ce(()=>X(me,(Z(p()),q(()=>p().name)))),te(fe,we)};qe(ke,fe=>{p()&&fe(ne)})}ce(()=>{lt.disabled=h(),re.disabled=!p()}),Te("click",lt,function(...fe){m()?.apply(this,fe)}),Te("click",re,x),te(Pe,xe)};qe(le,Pe=>{g()?Pe(Ee):Pe(Se,-1)})}F(_e);var pe=R(_e,2);Ln(pe,{get file(){return p()},kind:"audio",label:"Audio preview"}),F(z);var De=R(z,2);jt(De,5,()=>i(a),ei,(Pe,xe)=>{var lt=t$();let re;var ke=E(lt),ne=E(ke,!0);F(ke);var fe=R(ke,2);{var we=Ue=>{var he=JT();jt(he,5,()=>(i(xe),q(()=>i(xe).choices||[])),ei,(He,Be)=>{var Ge=XT(),Ie=E(Ge,!0);F(Ge);var ct={};ce(()=>{X(Ie,i(Be)),ct!==(ct=i(Be))&&(Ge.value=(Ge.__value=i(Be))??"")}),te(He,Ge)}),F(he);var Ae;On(he),ce(He=>{ye(he,"id",(i(xe),q(()=>"liveavatar-"+i(xe).name))),Ae!==(Ae=He)&&(he.value=(he.__value=He)??"",kn(he,He))},[()=>(Z(l()),i(xe),q(()=>String(l()[i(xe).name]??i(xe).default??"")))]),Te("change",he,He=>u()(i(xe),He.currentTarget.value)),te(Ue,he)},me=Ue=>{var he=ZT(),Ae=E(he);Dt(Ae);var He=R(Ae,2),Be=E(He,!0);F(He),F(he),ce((Ge,Ie)=>{ye(Ae,"id",(i(xe),q(()=>"liveavatar-"+i(xe).name))),ye(Ae,"min",(i(xe),q(()=>i(xe).minimum))),ye(Ae,"max",(i(xe),q(()=>i(xe).maximum))),ye(Ae,"step",(i(xe),q(()=>i(xe).step))),Ki(Ae,Ge),X(Be,Ie)},[()=>(Z(l()),i(xe),q(()=>Number(l()[i(xe).name]??i(xe).default))),()=>(Z(l()),i(xe),q(()=>String(l()[i(xe).name])))]),Te("input",Ae,Ge=>u()(i(xe),Ge.currentTarget.valueAsNumber)),te(Ue,he)},Fe=Ue=>{var he=e$();Dt(he),ce(Ae=>{ye(he,"id",(i(xe),q(()=>"liveavatar-"+i(xe).name))),ye(he,"type",(i(xe),q(()=>i(xe).type==="number"?"number":"text"))),ye(he,"min",(i(xe),q(()=>i(xe).minimum))),ye(he,"max",(i(xe),q(()=>i(xe).maximum))),ye(he,"step",(i(xe),q(()=>i(xe).step))),Ki(he,Ae)},[()=>(Z(l()),i(xe),q(()=>String(l()[i(xe).name]??i(xe).default??"")))]),Te("input",he,Ae=>u()(i(xe),i(xe).type==="number"?Ae.currentTarget.valueAsNumber:Ae.currentTarget.value)),te(Ue,he)};qe(fe,Ue=>{i(xe),q(()=>i(xe).type==="choice")?Ue(we):(i(xe),q(()=>i(xe).type==="slider")?Ue(me,1):Ue(Fe,-1))})}F(lt),ce(Ue=>{re=Gi(lt,1,"field svelte-4cgukj",null,re,{wide:i(xe).type==="text"}),ye(ke,"for",(i(xe),q(()=>"liveavatar-"+i(xe).name))),X(ne,Ue)},[()=>(i(xe),q(()=>i(xe).label||i(xe).name.replace(/_/g," ")))]),te(Pe,lt)}),F(De);var et=R(De,2),Qe=R(E(et),2);jt(Qe,5,()=>i(n),ei,(Pe,xe)=>{var lt=n$(),re=E(lt);{var ke=fe=>{var we=i$(),me=E(we);Dt(me);var Fe=R(me,3,!0);F(we),ce((Ue,he)=>{ye(we,"for",(i(xe),q(()=>"liveavatar-"+i(xe).name))),ye(me,"id",(i(xe),q(()=>"liveavatar-"+i(xe).name))),Sd(me,Ue),X(Fe,he)},[()=>(Z(l()),i(xe),q(()=>!!l()[i(xe).name])),()=>(i(xe),q(()=>i(xe).label||i(xe).name.replace(/_/g," ")))]),Te("change",me,Ue=>u()(i(xe),Ue.currentTarget.checked)),te(fe,we)},ne=fe=>{var we=a$(),me=At(we),Fe=E(me,!0);F(me);var Ue=R(me,2);Dt(Ue),ce((he,Ae)=>{ye(me,"for",(i(xe),q(()=>"liveavatar-"+i(xe).name))),X(Fe,he),ye(Ue,"id",(i(xe),q(()=>"liveavatar-"+i(xe).name))),ye(Ue,"min",(i(xe),q(()=>i(xe).minimum))),ye(Ue,"max",(i(xe),q(()=>i(xe).maximum))),ye(Ue,"step",(i(xe),q(()=>i(xe).step))),Ki(Ue,Ae)},[()=>(i(xe),q(()=>i(xe).label||i(xe).name.replace(/_/g," "))),()=>(Z(l()),i(xe),q(()=>Number(l()[i(xe).name]??i(xe).default)))]),Te("input",Ue,he=>u()(i(xe),he.currentTarget.valueAsNumber)),te(fe,we)};qe(re,fe=>{i(xe),q(()=>i(xe).type==="bool")?fe(ke):fe(ne,-1)})}F(lt),te(Pe,lt)}),F(Qe),F(et),F(B),ce(()=>{A.disabled=s()||r(),X(V,(i(b),q(()=>i(b)?.name||"No image selected"))),be.disabled=s()||g(),X(ie,(Z(p()),q(()=>p()?.name||"No file chosen")))}),Te("change",A,Pe=>P(Pe.currentTarget.files?.[0]||null)),Te("change",be,Pe=>L(Pe.currentTarget.files?.[0]||null)),te(t,B),Qa()}var ev=ue(""),tv=ue(' '),o$=ue('
          '),iv=ue(' '),l$=ue(`
          LoRA requirements vary. Read the original adapter's documentation for usage instructions.
          `),c$=ue('
          Unfused NAR adapter for acoustic detail; relative paths resolve against the model root. Reload the model after changing this value.
          Scales the LoRA deltas only; any full vae2llm/llm2vae projection replacement in the adapter stays at full strength.',1),d$=ue(" ",1),u$=ue(""),fm=ue('
          '),f$=ue(""),m$=ue('
          '),p$=ue(" "),av=ue(' '),g$=ue('
          '),h$=ue('Extract or paste ABC to preview the score.'),nv=ue(''),sv=ue('
          '),_$=ue('
          Yue2 ABC conditioning
          Cover source Use SheetSage2 + MERT2 to extract an editable ABC score from a song.
          Warning: VRAM may remain in use after unloading.
          ABC score editor Edit the extracted score here. The sheet preview updates from this ABC.
          Sheet preview Rendered from the editable ABC score.
          Yue2 semantic sampling
          Yue2 ABC planner sampling
          ');function v$(t,e){Wa(e,!1);const a=se(),n=se(),s=se(),r=se(),o=se();let l=$e(e,"lyrics",12,""),u=$e(e,"seed",12,1234),p=$e(e,"loraUploading",12,!1),g=$e(e,"busy",8,!1),h=$e(e,"paramSpecs",24,()=>[]),f=$e(e,"advancedValues",24,()=>({})),m=$e(e,"catalogEntries",24,()=>[]),d=$e(e,"loadedModels",24,()=>[]),c=$e(e,"server",8,null),_=$e(e,"modelPathFor",8,Ne=>Ne.path),b=$e(e,"sessionOptionsFor",8,Ne=>Ne.session_options||{}),v=$e(e,"refreshModels",8,async()=>{}),k=$e(e,"log",8,()=>{}),y=$e(e,"tr",8,(Ne,de,Ke=Ne)=>Ke),T=$e(e,"localizedParameterText",8,(Ne,de)=>de==="label"?Ne.name:""),O=$e(e,"setParameterValue",8,()=>{});const j=["main_gguf","vae_gguf"],$=["style","cot","guidance_scale","num_inference_steps"],P=["abc","abc_file"],L=["semantic_temperature","semantic_top_p","semantic_top_k","semantic_repetition_penalty","semantic_penalty_window","semantic_min_tokens","semantic_max_tokens"],x=["abc_temperature","abc_top_p","abc_top_k","abc_repetition_penalty","abc_penalty_window","abc_min_tokens","abc_max_tokens"];let B=se(null),D=se(null),A=se(null),G=se(""),U=se(""),V=null;fl(()=>V?.abort());async function I(Ne,de){if(!Ne)return;const Ke=tt=>{M(de==="ar"?G:U,tt)};if(M(G,""),M(U,""),!Ne.name.toLowerCase().endsWith(".safetensors")){Ke(`Select an unfused ${de.toUpperCase()} .safetensors adapter.`);return}p(!0),V=new AbortController;try{const tt=await gc(Ne,V.signal);le(de==="ar"?"ar_lora":"nar_lora",tt),k()(`YuE2 ${de.toUpperCase()} LoRA selected: ${Ne.name}`)}catch(tt){V.signal.aborted||Ke(tt instanceof Error?tt.message:String(tt))}finally{p(!1),V=null,i(D)&&fi(D,i(D).value=""),i(A)&&fi(A,i(A).value="")}}let w=se(null),S=se(!1);const C="audiocpp.ui.yue2.unloadSheetSageAfterConversion";let H=se(!0);Bs(()=>{M(H,localStorage.getItem(C)!=="false")});let Y=se(""),ee=se(""),W=se(""),z=se(null),be="",ae=se(""),ge=null;function ie(Ne,de){return Ne.map(Ke=>de.find(tt=>tt.name===Ke)).filter(Ke=>Ke!==void 0)}function _e(Ne){return h().find(de=>de.name===Ne)}function le(Ne,de){const Ke=_e(Ne);Ke&&O()(Ke,de)}function Ee(Ne){try{return atob(Ne)}catch{return Ne}}function Se(Ne){if(typeof Ne.text=="string"&&Ne.text.trim())return Ne.text;const de=Array.isArray(Ne.artifacts)?Ne.artifacts:[];for(const Ke of de){if(!Ke||typeof Ke!="object")continue;const tt=Ke,Ct=String(tt.meta?.format||tt.meta?.extension||tt.id||"");if(/abc|score/i.test(Ct)&&typeof tt.payload=="string")return Ee(tt.payload)}return""}function pe(){return m().find(Ne=>Ne.family==="sheetsage2")||null}async function De(Ne){if(d().some(tt=>tt.id===Ne.id&&tt.loaded))return;const de=await Id();if(!de.find(tt=>tt.id===Ne.id&&tt.loaded)){if(!c()?.ui_management){if(!de.some(tt=>tt.id===Ne.id))throw new Error("SheetSage2 is not registered. Add SheetSage2 to server config.");return}await am({id:Ne.id,path:_()(Ne),family:Ne.family,task:Ne.task,mode:Ne.mode||"offline",load_options:Ne.load_options||{},session_options:b()(Ne)})}}async function et(){if(!i(B)||i(S))return;M(S,!0),M(ee,""),M(Y,"Preparing SheetSage2 cover score transcription...");const Ne=i(H);let de=null;try{const Ke=pe();if(!Ke)throw new Error("SheetSage2 is not available in the model catalog.");await De(Ke),de=Ke.id,await v()(),M(Y,"Uploading source song...");const tt=await gc(i(B));M(Y,"Transcribing source song to ABC with SheetSage2...");const Ct=await vl({model:Ke.id,request:{audio:tt,options:{}}}),gt=Se(Ct);if(!gt.trim())throw new Error("SheetSage2 did not return an ABC score.");M(W,gt),le("abc",gt),le("abc_file",""),le("cot","melody"),M(Y,"ABC score imported. Review/edit the sheet before generating the cover."),k()("SheetSage2 cover score imported into Yue2 ABC conditioning.")}catch(Ke){M(ee,Ke instanceof Error?Ke.message:String(Ke)),M(Y,""),k()(`SheetSage2 cover transcription failed: ${i(ee)}`)}finally{if(Ne&&de){try{c()?.ui_management?await Ir(de):await Na("/v1/tasks/unload_models",{method:"POST",body:JSON.stringify({model_ids:[de]})}),k()("SheetSage2 unloaded after cover transcription.")}catch(Ke){const tt=`SheetSage2 unload failed: ${Ke instanceof Error?Ke.message:String(Ke)}`;M(ee,[i(ee),tt].filter(Boolean).join(" ")),k()(tt)}try{await v()()}catch(Ke){const tt=`Model status refresh failed: ${Ke instanceof Error?Ke.message:String(Ke)}`;M(ee,[i(ee),tt].filter(Boolean).join(" ")),k()(tt)}}M(S,!1)}}function Qe(){M(B,null),i(w)&&fi(w,i(w).value="")}function Pe(Ne){M(W,Ne),le("abc",Ne),Ne.trim()&&le("abc_file","")}async function xe(Ne){const de=Ne.trim();if(i(z)){if(!de){i(z).replaceChildren(),be="",M(ae,"");return}if(de!==be&&(await Br(),!!i(z)))try{ge||(ge=(await mc(()=>Promise.resolve().then(()=>xM),void 0,Cn&&Cn.tagName.toUpperCase()==="SCRIPT"&&Cn.src||new URL("_app/immutable/bundle.IWE2S6TM.js",document.baseURI).href)).renderAbc),i(z).replaceChildren(),ge(i(z),de,{add_classes:!0,responsive:"resize"}),be=de,M(ae,"")}catch(Ke){i(z).replaceChildren(),be="",M(ae,Ke instanceof Error?Ke.message:String(Ke))}}}We(()=>Z(h()),()=>{M(a,ie(j,h()))}),We(()=>Z(h()),()=>{M(n,ie($,h()))}),We(()=>Z(h()),()=>{M(s,ie(P,h()))}),We(()=>Z(h()),()=>{M(r,ie(L,h()))}),We(()=>Z(h()),()=>{M(o,ie(x,h()))}),We(()=>(Z(f()),i(W),i(S)),()=>{String(f().abc||"")!==i(W)&&!i(S)&&M(W,String(f().abc||""))}),We(()=>i(W),()=>{xe(i(W))}),Yn(),xn();var lt=_$(),re=E(lt),ke=E(re),ne=E(ke),fe=R(ne),we=E(fe,!0);F(fe),F(ke);var me=R(ke,2);Ka(me),F(re);var Fe=R(re,2),Ue=E(Fe),he=E(Ue),Ae=E(he),He=R(Ae),Be=E(He,!0);F(He),F(he);var Ge=R(he,2);Dt(Ge),F(Ue);var Ie=R(Ue,2);jt(Ie,1,()=>i(a),ei,(Ne,de)=>{var Ke=o$(),tt=E(Ke),Ct=E(tt,!0);F(tt);var gt=R(tt,2);jt(gt,5,()=>(i(de),q(()=>i(de).choices||[])),ei,($t,oi)=>{var vt=ev(),Nt=E(vt,!0);F(vt);var kt={};ce(()=>{X(Nt,i(oi)),kt!==(kt=i(oi))&&(vt.value=(vt.__value=i(oi))??"")}),te($t,vt)}),F(gt);var Xi;On(gt);var Ji=R(gt,2);{var Ri=$t=>{var oi=tv(),vt=E(oi,!0);F(oi),ce(Nt=>X(vt,Nt),[()=>(Z(T()),i(de),Z(y()),q(()=>T()(i(de),"info",y())))]),te($t,oi)},Vt=wi(()=>(Z(T()),i(de),Z(y()),q(()=>T()(i(de),"info",y()))));qe(Ji,$t=>{i(Vt)&&$t(Ri)})}F(Ke),ce(($t,oi)=>{ye(tt,"for",(i(de),q(()=>"param-"+i(de).name))),X(Ct,$t),ye(gt,"id",(i(de),q(()=>"param-"+i(de).name))),Xi!==(Xi=oi)&&(gt.value=(gt.__value=oi)??"",kn(gt,oi))},[()=>(Z(T()),i(de),Z(y()),q(()=>T()(i(de),"label",y()))),()=>(Z(f()),i(de),q(()=>String(f()[i(de).name]??"")))]),Te("change",gt,$t=>O()(i(de),$t.currentTarget.value)),te(Ne,Ke)}),F(Fe);var ct=R(Fe,2);{var Ve=Ne=>{{let de=Pt(()=>(Z(f()),q(()=>+!!f().ar_lora+ +!!f().nar_lora)));cm(Ne,{get selected(){return i(de)},children:(Ke,tt)=>{var Ct=d$(),gt=At(Ct);{var Xi=oi=>{var vt=l$(),Nt=E(vt),kt=R(E(Nt),2);Dt(kt);var _i=R(kt,2);Ga(_i,fa=>M(D,fa),()=>i(D));var ji=R(_i,2),Ta=E(ji),Q=E(Ta,!0);F(Ta);var zn=R(Ta,2);F(ji);var $s=R(ji,4);{var qr=fa=>{var ba=iv(),Wn=E(ba,!0);F(ba),ce(()=>X(Wn,i(G))),te(fa,ba)};qe($s,fa=>{i(G)&&fa(qr)})}F(Nt);var sr=R(Nt,2),Un=R(E(sr),2);Dt(Un),F(sr),F(vt),ce((fa,ba)=>{kt.disabled=g()||p(),Ki(kt,fa),_i.disabled=g()||p(),Ta.disabled=g()||p(),X(Q,p()?"Uploading...":"Choose AR LoRA"),zn.disabled=(Z(g()),Z(p()),Z(f()),q(()=>g()||p()||!f().ar_lora)),Un.disabled=(Z(g()),Z(p()),Z(f()),q(()=>g()||p()||!f().ar_lora)),Ki(Un,ba)},[()=>(Z(f()),q(()=>String(f().ar_lora??""))),()=>(Z(f()),q(()=>Number(f().ar_lora_scale??1)))]),Te("input",kt,fa=>le("ar_lora",fa.currentTarget.value.trim())),Te("change",_i,fa=>I(fa.currentTarget.files?.[0]||null,"ar")),Te("click",Ta,()=>i(D)?.click()),Te("click",zn,()=>{le("ar_lora",""),M(G,"")}),Te("change",Un,fa=>{Number.isFinite(fa.currentTarget.valueAsNumber)&&le("ar_lora_scale",fa.currentTarget.valueAsNumber)}),te(oi,vt)},Ji=wi(()=>q(()=>_e("ar_lora")));qe(gt,oi=>{i(Ji)&&oi(Xi)})}var Ri=R(gt,2);{var Vt=oi=>{var vt=c$(),Nt=At(vt),kt=E(Nt),_i=R(E(kt),2);Dt(_i);var ji=R(_i,2);Ga(ji,ba=>M(A,ba),()=>i(A));var Ta=R(ji,2),Q=E(Ta),zn=E(Q,!0);F(Q);var $s=R(Q,2);F(Ta);var qr=R(Ta,2);{var sr=ba=>{var Wn=iv(),rr=E(Wn,!0);F(Wn),ce(()=>X(rr,i(U))),te(ba,Wn)};qe(qr,ba=>{i(U)&&ba(sr)})}ja(2),F(kt);var Un=R(kt,2),fa=R(E(Un),2);Dt(fa),F(Un),F(Nt),ja(2),ce((ba,Wn)=>{_i.disabled=g()||p(),Ki(_i,ba),ji.disabled=g()||p(),Q.disabled=g()||p(),X(zn,p()?"Uploading...":"Choose NAR LoRA"),$s.disabled=(Z(g()),Z(p()),Z(f()),q(()=>g()||p()||!f().nar_lora)),fa.disabled=(Z(g()),Z(f()),q(()=>g()||!f().nar_lora)),Ki(fa,Wn)},[()=>(Z(f()),q(()=>String(f().nar_lora??""))),()=>(Z(f()),q(()=>Number(f().nar_lora_scale??1)))]),Te("input",_i,ba=>le("nar_lora",ba.currentTarget.value.trim())),Te("change",ji,ba=>I(ba.currentTarget.files?.[0]||null,"nar")),Te("click",Q,()=>i(A)?.click()),Te("click",$s,()=>{le("nar_lora",""),M(U,"")}),Te("change",fa,ba=>{Number.isFinite(ba.currentTarget.valueAsNumber)&&le("nar_lora_scale",ba.currentTarget.valueAsNumber)}),te(oi,vt)},$t=wi(()=>q(()=>_e("nar_lora")));qe(Ri,oi=>{i($t)&&oi(Vt)})}te(Ke,Ct)},$$slots:{default:!0}})}},Gt=wi(()=>q(()=>_e("ar_lora")||_e("nar_lora")));qe(ct,Ne=>{i(Gt)&&Ne(Ve)})}var nt=R(ct,2);jt(nt,5,()=>i(n),ei,(Ne,de)=>{var Ke=m$();let tt;var Ct=E(Ke),gt=E(Ct,!0);F(Ct);var Xi=R(Ct,2);{var Ji=Nt=>{var kt=u$();jt(kt,5,()=>(i(de),q(()=>i(de).choices||[])),ei,(ji,Ta)=>{var Q=ev(),zn=E(Q,!0);F(Q);var $s={};ce(()=>{X(zn,i(Ta)),$s!==($s=i(Ta))&&(Q.value=(Q.__value=i(Ta))??"")}),te(ji,Q)}),F(kt);var _i;On(kt),ce(ji=>{ye(kt,"id",(i(de),q(()=>"param-"+i(de).name))),_i!==(_i=ji)&&(kt.value=(kt.__value=ji)??"",kn(kt,ji))},[()=>(Z(f()),i(de),q(()=>String(f()[i(de).name]??"")))]),Te("change",kt,ji=>O()(i(de),ji.currentTarget.value)),te(Nt,kt)},Ri=Nt=>{var kt=fm(),_i=E(kt);Dt(_i);var ji=R(_i,2),Ta=E(ji,!0);F(ji),F(kt),ce((Q,zn)=>{ye(_i,"id",(i(de),q(()=>"param-"+i(de).name))),ye(_i,"min",(i(de),q(()=>i(de).minimum))),ye(_i,"max",(i(de),q(()=>i(de).maximum))),ye(_i,"step",(i(de),q(()=>i(de).step))),Ki(_i,Q),X(Ta,zn)},[()=>(Z(f()),i(de),q(()=>Number(f()[i(de).name]??i(de).default))),()=>(Z(f()),i(de),q(()=>String(f()[i(de).name])))]),Te("input",_i,Q=>O()(i(de),Q.currentTarget.valueAsNumber)),te(Nt,kt)},Vt=Nt=>{var kt=f$();Dt(kt),ce((_i,ji)=>{ye(kt,"id",(i(de),q(()=>"param-"+i(de).name))),ye(kt,"type",(i(de),q(()=>i(de).type==="number"?"number":"text"))),ye(kt,"min",(i(de),q(()=>i(de).minimum))),ye(kt,"max",(i(de),q(()=>i(de).maximum))),ye(kt,"step",(i(de),q(()=>i(de).step))),Ki(kt,_i),ye(kt,"placeholder",ji)},[()=>(Z(f()),i(de),q(()=>String(f()[i(de).name]??""))),()=>(Z(T()),i(de),Z(y()),q(()=>T()(i(de),"placeholder",y())))]),Te("input",kt,_i=>O()(i(de),i(de).type==="number"?_i.currentTarget.valueAsNumber:_i.currentTarget.value)),te(Nt,kt)};qe(Xi,Nt=>{i(de),q(()=>i(de).type==="choice")?Nt(Ji):(i(de),q(()=>i(de).type==="slider")?Nt(Ri,1):Nt(Vt,-1))})}var $t=R(Xi,2);{var oi=Nt=>{var kt=tv(),_i=E(kt,!0);F(kt),ce(ji=>X(_i,ji),[()=>(Z(T()),i(de),Z(y()),q(()=>T()(i(de),"info",y())))]),te(Nt,kt)},vt=wi(()=>(Z(T()),i(de),Z(y()),q(()=>T()(i(de),"info",y()))));qe($t,Nt=>{i(vt)&&Nt(oi)})}F(Ke),ce(Nt=>{tt=Gi(Ke,1,"yue2-field svelte-15djq8z",null,tt,{wide:i(de).type==="text"}),ye(Ct,"for",(i(de),q(()=>"param-"+i(de).name))),X(gt,Nt)},[()=>(Z(T()),i(de),Z(y()),q(()=>T()(i(de),"label",y())))]),te(Ne,Ke)}),F(nt);var Re=R(nt,2),St=E(Re),rt=R(E(St)),Tt=E(rt,!0);F(rt),F(St);var Ft=R(St,2),Qt=E(Ft),Mt=E(Qt),zt=R(E(Mt),2),Si=E(zt,!0);F(zt),F(Mt);var Bi=R(Mt,2),Ii=E(Bi);Dt(Ii),ja(2),F(Bi);var Ti=R(Bi,4);Ga(Ti,Ne=>M(w,Ne),()=>i(w));var Sa=R(Ti,2),bn=R(E(Sa),2),Tn=E(bn,!0);F(bn),F(Sa);var $n=R(Sa,2),mi=E($n),hi=R(mi,2);{var ii=Ne=>{var de=p$(),Ke=E(de,!0);F(de),ce(()=>X(Ke,i(Y))),te(Ne,de)};qe(hi,Ne=>{i(Y)&&Ne(ii)})}var _a=R(hi,2);{var va=Ne=>{var de=av(),Ke=E(de,!0);F(de),ce(()=>X(Ke,i(ee))),te(Ne,de)};qe(_a,Ne=>{i(ee)&&Ne(va)})}F($n);var Aa=R($n,2);{let Ne=Pt(()=>(Z(y()),q(()=>y()("file.preview"))));Ln(Aa,{get file(){return i(B)},kind:"audio",get label(){return i(Ne)}})}F(Qt);var yn=R(Qt,2),Yi=R(E(yn),2);Ka(Yi);var Ca=R(Yi,2);{var da=Ne=>{var de=g$(),Ke=E(de),tt=E(Ke,!0);F(Ke);var Ct=R(Ke,2);Dt(Ct),F(de),ce((gt,Xi,Ji)=>{X(tt,gt),Ki(Ct,Xi),ye(Ct,"placeholder",Ji)},[()=>(Z(T()),Z(y()),q(()=>T()(_e("abc_file"),"label",y()))),()=>(Z(f()),q(()=>String(f().abc_file??""))),()=>(Z(T()),Z(y()),q(()=>T()(_e("abc_file"),"placeholder",y())))]),Te("input",Ct,gt=>le("abc_file",gt.currentTarget.value)),te(Ne,de)},Li=wi(()=>q(()=>_e("abc_file")));qe(Ca,Ne=>{i(Li)&&Ne(da)})}F(yn);var tn=R(yn,2),cn=R(E(tn),2),Hn=E(cn);{var an=Ne=>{var de=h$();te(Ne,de)},Xa=wi(()=>(i(W),q(()=>!i(W).trim())));qe(Hn,Ne=>{i(Xa)&&Ne(an)})}F(cn),Ga(cn,Ne=>M(z,Ne),()=>i(z));var is=R(cn,2);{var Ss=Ne=>{var de=av(),Ke=E(de,!0);F(de),ce(()=>X(Ke,i(ae))),te(Ne,de)};qe(is,Ne=>{i(ae)&&Ne(Ss)})}F(tn),F(Ft),F(Re);var Oa=R(Re,2),Ai=E(Oa),dn=R(E(Ai)),Ts=E(dn,!0);F(dn),F(Ai);var as=R(Ai,2);jt(as,5,()=>i(r),ei,(Ne,de)=>{var Ke=sv(),tt=E(Ke),Ct=E(tt,!0);F(tt);var gt=R(tt,2);{var Xi=Ri=>{var Vt=fm(),$t=E(Vt);Dt($t);var oi=R($t,2),vt=E(oi,!0);F(oi),F(Vt),ce((Nt,kt)=>{ye($t,"id",(i(de),q(()=>"param-"+i(de).name))),ye($t,"min",(i(de),q(()=>i(de).minimum))),ye($t,"max",(i(de),q(()=>i(de).maximum))),ye($t,"step",(i(de),q(()=>i(de).step))),Ki($t,Nt),X(vt,kt)},[()=>(Z(f()),i(de),q(()=>Number(f()[i(de).name]??i(de).default))),()=>(Z(f()),i(de),q(()=>String(f()[i(de).name])))]),Te("input",$t,Nt=>O()(i(de),Nt.currentTarget.valueAsNumber)),te(Ri,Vt)},Ji=Ri=>{var Vt=nv();Dt(Vt),ce($t=>{ye(Vt,"id",(i(de),q(()=>"param-"+i(de).name))),ye(Vt,"min",(i(de),q(()=>i(de).minimum))),ye(Vt,"max",(i(de),q(()=>i(de).maximum))),ye(Vt,"step",(i(de),q(()=>i(de).step))),Ki(Vt,$t)},[()=>(Z(f()),i(de),q(()=>String(f()[i(de).name]??"")))]),Te("input",Vt,$t=>O()(i(de),$t.currentTarget.valueAsNumber)),te(Ri,Vt)};qe(gt,Ri=>{i(de),q(()=>i(de).type==="slider")?Ri(Xi):Ri(Ji,-1)})}F(Ke),ce(Ri=>{ye(tt,"for",(i(de),q(()=>"param-"+i(de).name))),X(Ct,Ri)},[()=>(Z(T()),i(de),Z(y()),q(()=>T()(i(de),"label",y())))]),te(Ne,Ke)}),F(as),F(Oa);var $r=R(Oa,2),Os=E($r),ia=R(E(Os)),Ci=E(ia,!0);F(ia),F(Os);var ua=R(Os,2);jt(ua,5,()=>i(o),ei,(Ne,de)=>{var Ke=sv(),tt=E(Ke),Ct=E(tt,!0);F(tt);var gt=R(tt,2);{var Xi=Ri=>{var Vt=fm(),$t=E(Vt);Dt($t);var oi=R($t,2),vt=E(oi,!0);F(oi),F(Vt),ce((Nt,kt)=>{ye($t,"id",(i(de),q(()=>"param-"+i(de).name))),ye($t,"min",(i(de),q(()=>i(de).minimum))),ye($t,"max",(i(de),q(()=>i(de).maximum))),ye($t,"step",(i(de),q(()=>i(de).step))),Ki($t,Nt),X(vt,kt)},[()=>(Z(f()),i(de),q(()=>Number(f()[i(de).name]??i(de).default))),()=>(Z(f()),i(de),q(()=>String(f()[i(de).name])))]),Te("input",$t,Nt=>O()(i(de),Nt.currentTarget.valueAsNumber)),te(Ri,Vt)},Ji=Ri=>{var Vt=nv();Dt(Vt),ce($t=>{ye(Vt,"id",(i(de),q(()=>"param-"+i(de).name))),ye(Vt,"min",(i(de),q(()=>i(de).minimum))),ye(Vt,"max",(i(de),q(()=>i(de).maximum))),ye(Vt,"step",(i(de),q(()=>i(de).step))),Ki(Vt,$t)},[()=>(Z(f()),i(de),q(()=>String(f()[i(de).name]??"")))]),Te("input",Vt,$t=>O()(i(de),$t.currentTarget.valueAsNumber)),te(Ri,Vt)};qe(gt,Ri=>{i(de),q(()=>i(de).type==="slider")?Ri(Xi):Ri(Ji,-1)})}F(Ke),ce(Ri=>{ye(tt,"for",(i(de),q(()=>"param-"+i(de).name))),X(Ct,Ri)},[()=>(Z(T()),i(de),Z(y()),q(()=>T()(i(de),"label",y())))]),te(Ne,Ke)}),F(ua),F($r),F(lt),ce((Ne,de,Ke,tt,Ct)=>{X(ne,`${Ne??""} `),X(we,de),X(Ae,`${Ke??""} `),X(Be,tt),X(Tt,(i(s),q(()=>i(s).length))),zt.disabled=!i(B)||i(S),X(Si,i(S)?"Transcribing...":"Extract ABC"),Sd(Ii,i(H)),Ii.disabled=i(S),X(Tn,Ct),mi.disabled=!i(B)||i(S),Ki(Yi,i(W)),X(Ts,(i(r),q(()=>i(r).length))),X(Ci,(i(o),q(()=>i(o).length)))},[()=>(Z(y()),q(()=>y()("request.lyrics"))),()=>(Z(y()),q(()=>y()("request.optional"))),()=>(Z(y()),q(()=>y()("request.seed"))),()=>(Z(y()),q(()=>y()("request.randomSeed"))),()=>(i(B),Z(y()),q(()=>i(B)?.name||y()("file.none")))]),Fi(me,l),Fi(Ge,u),Te("click",zt,et),Te("change",Ii,Ne=>{M(H,Ne.currentTarget.checked),localStorage.setItem(C,String(i(H)))}),Te("change",Ti,Ne=>M(B,Ne.currentTarget.files?.[0]||null)),Te("click",mi,Qe),Te("input",Yi,Ne=>Pe(Ne.currentTarget.value)),te(t,lt),Qa()}var b$=ue(""),y$=ue(' ',1),w$=ue(''),k$=ue('
          ');function rv(t,e){Wa(e,!1);let a=$e(e,"id",8),n=$e(e,"file",12,null),s=$e(e,"transcript",12,""),r=$e(e,"busy",8,!1),o=$e(e,"savedVoices",24,()=>[]),l=se("");function u($){M(l,$);const P=o().find(L=>L.id===$);P&&(n(new File([P.audio],`${P.name}.wav`,{type:P.audio.type||"audio/wav"})),s(P.transcript))}xn();var p=k$(),g=E(p);{var h=$=>{var P=y$(),L=At(P),x=R(L,2),B=E(x);B.value=B.__value="";var D=R(B);jt(D,1,o,ei,(G,U)=>{var V=b$(),I=E(V,!0);F(V);var w={};ce(()=>{X(I,(i(U),q(()=>i(U).name))),w!==(w=(i(U),q(()=>i(U).id)))&&(V.value=(V.__value=(i(U),q(()=>i(U).id)))??"")}),te(G,V)}),F(x);var A;On(x),ce(()=>{ye(L,"for",`${a()}-library`),ye(x,"id",`${a()}-library`),x.disabled=r(),A!==(A=i(l))&&(x.value=(x.__value=i(l))??"",kn(x,i(l)))}),Te("change",x,G=>u(G.currentTarget.value)),te($,P)};qe(g,$=>{Z(o()),q(()=>o().length)&&$(h)})}var f=R(g,2),m=E(f),d=R(m,2);{var c=$=>{var P=w$(),L=E(P);K4(L,{size:14}),F(P),ce(()=>P.disabled=r()),Te("click",P,()=>{n(null),M(l,"")}),te($,P)};qe(d,$=>{n()&&$(c)})}F(f);var _=R(f,2),b=R(_,2),v=E(b);T4(v,{size:17});var k=R(v,2),y=E(k,!0);F(k),F(b);var T=R(b,2);Ln(T,{get file(){return n()},kind:"audio",label:"Reference preview"});var O=R(T,2),j=R(O,2);Ka(j),F(p),ce(()=>{ye(m,"for",`${a()}-audio`),ye(_,"id",`${a()}-audio`),_.disabled=r(),ye(b,"for",`${a()}-audio`),X(y,(Z(n()),q(()=>n()?.name||"No recording selected"))),ye(O,"for",`${a()}-transcript`),ye(j,"id",`${a()}-transcript`),j.disabled=r()}),Te("change",_,$=>{n($.currentTarget.files?.[0]||null),M(l,""),$.currentTarget.value=""}),Fi(j,s),te(t,p),Qa()}var x$=ue('

          Reference voice (optional)

          Text to generate

          ',1),S$=ue(''),T$=ue('
          ',1),$$=ue(""),q$=ue('
          '),G$=ue('

          Multi-speaker generation is still under testing. Voice assignment and consistency may vary.

          Cast

          Dialogue

          ',1),F$=ue('
          ');function A$(t,e){Wa(e,!1);const a=se(),n=se();let s=$e(e,"busy",8,!1),r=$e(e,"savedVoices",24,()=>[]),o=$e(e,"setPanelRunner",8,()=>()=>{});const l=16,u=I=>({id:I,name:`Speaker ${I+1}`,file:null,transcript:""});let p=se("single"),g=se(null),h=se(""),f=se(""),m=se([u(0),u(1)]),d=se(0),c=2,_=se([{id:0,speaker:0,text:""},{id:1,speaker:1,text:""}]);function b(){const I=Array.from({length:l},(w,S)=>S).find(w=>!i(m).some(S=>S.id===w));I!==void 0&&(M(m,[...i(m),u(I)]),M(d,I))}function v(I){M(m,i(m).filter(w=>w.id!==I)),M(d,i(m)[0].id)}function k(I,w){const S=[...i(_)];[S[I],S[I+w]]=[S[I+w],S[I]],M(_,S)}function y(){M(_,[...i(_),{id:c++,speaker:i(d),text:""}])}function T(){i(p)==="single"?M(f,"The observatory opens at sunset. Tonight, we will follow the planets across the sky and listen for the first signs of a coming storm."):M(_,[{id:c++,speaker:i(m)[0].id,text:"The observatory opens at sunset. Did you bring the star charts?"},{id:c++,speaker:i(m)[1].id,text:"Yes, and the sky is finally clear. We should have a wonderful view tonight."}])}async function O(I){const w=i(p)==="single",S=i(m).map(ae=>({...ae})),C=i(_).map(ae=>({...ae})),H=i(g),Y=i(h).trim();let ee=i(f).trim();if(w){if(H&&!Y)throw I.warning("Enter the words spoken in the reference recording.");if(!ee)throw I.warning("Enter the text to generate.")}else{if(!C.length||C.some(ge=>!ge.text.trim()))throw I.warning("Enter text for every dialogue turn, or remove the empty turns.");const ae=new Set(C.map(ge=>ge.speaker));if(ae.size<2)throw I.warning("Assign dialogue to at least two different speakers.");for(const ge of S.filter(ie=>ae.has(ie.id)))if(!ge.file||!ge.transcript.trim())throw M(d,ge.id),I.warning(`${ge.name}: add a reference recording and its exact transcript.`);ee=C.map(ge=>`<|speaker:${ge.speaker}|> ${ge.text.trim()}`).join(` +`)}await I.ensureLoaded("offline");const W={...I.options},z={model:I.modelId,input:ee,seed:I.seed,response_format:"wav",options:W};if(I.maxTokens!==void 0&&(z.max_tokens=I.maxTokens),w)H&&(I.setStatus("Preparing voice reference..."),z.voice_ref=await To(await Or(H),I.signal),z.reference_text=Y);else{I.setStatus("Preparing voice references...");const ae=new Set(C.map(ie=>ie.speaker)),ge=[];for(const ie of S.filter(_e=>ae.has(_e.id))){const _e=await Or(ie.file);ge.push({text:`<|speaker:${ie.id}|> ${ie.transcript.trim()}`,audio_path:await To(_e,I.signal)})}W.multi_reference_cond=JSON.stringify(ge)}I.setStatus(w?H?"Cloning voice...":"Generating speech...":"Generating multi-speaker dialogue...");const be=await nm(z,I.signal);return{audio:be.blob,text:"",json:JSON.stringify({mode:w?H?"single_voice_clone":"tts":"multi_speaker",speakers:w?1:new Set(C.map(ae=>ae.speaker)).size,seed:I.seed,text_chunk_size:W.text_chunk_size,wall_ms:be.wallMs,rtf:be.rtf},null,2)}}Bs(()=>o()(O)),We(()=>(i(m),i(d)),()=>{M(a,i(m).findIndex(I=>I.id===i(d)))}),We(()=>i(m),()=>{M(n,i(m).filter(I=>I.file&&I.transcript.trim()).length)}),Yn(),xn();var j=F$(),$=E(j),P=E($);let L;var x=E(P);Zf(x,{size:17}),ja(),F(P);var B=R(P,2);let D;var A=E(B);pc(A,{size:17}),ja(2),F(B),F($);var G=R($,2);{var U=I=>{var w=x$(),S=At(w),C=E(S),H=E(C);Zf(H,{size:17}),ja(),F(C);var Y=R(C,2);rv(Y,{id:"drama-single",get busy(){return s()},get savedVoices(){return r()},get file(){return i(g)},set file(le){M(g,le)},get transcript(){return i(h)},set transcript(le){M(h,le)},$$legacy:!0}),F(S);var ee=R(S,2),W=E(ee),z=E(W),be=E(z);Pd(be,{size:17}),ja(),F(z);var ae=R(z,2);F(W);var ge=R(W,4);Ka(ge);var ie=R(ge,2),_e=E(ie);F(ie),F(ee),ce(le=>{ae.disabled=s(),ge.disabled=s(),X(_e,`${le??""} characters`)},[()=>(i(f),q(()=>i(f).length.toLocaleString()))]),Te("click",ae,T),Fi(ge,()=>i(f),le=>M(f,le)),te(I,w)},V=I=>{var w=G$(),S=R(At(w),2),C=E(S),H=E(C),Y=E(H);pc(Y,{size:17});var ee=R(Y,2),W=E(ee);F(ee),F(H);var z=R(H,2),be=E(z);F1(be,{size:15}),ja(),F(z),F(C);var ae=R(C,2),ge=E(ae);jt(ge,5,()=>i(m),ne=>ne.id,(ne,fe)=>{var we=S$();let me;var Fe=E(we),Ue=E(Fe,!0);F(Fe);var he=R(Fe),Ae=E(he,!0);F(he);var He=R(he,2);{var Be=Ie=>{b4(Ie,{size:14,"aria-label":"Reference ready"})},Ge=wi(()=>(i(fe),q(()=>i(fe).file&&i(fe).transcript.trim())));qe(He,Ie=>{i(Ge)&&Ie(Be)})}F(we),ce(()=>{we.disabled=s(),ye(we,"aria-pressed",(i(d),i(fe),q(()=>i(d)===i(fe).id))),me=Gi(we,1,"svelte-z6u13w",null,me,{chosen:i(d)===i(fe).id}),X(Ue,(i(fe),q(()=>i(fe).id+1))),X(Ae,(i(fe),q(()=>i(fe).name)))}),Te("click",we,()=>M(d,i(fe).id)),te(ne,we)}),F(ge);var ie=R(ge,2),_e=E(ie);Gx(_e,()=>i(d),ne=>{var fe=T$(),we=At(fe),me=E(we),Fe=R(E(me));Dt(Fe),F(me);var Ue=R(me,2),he=E(Ue);Nd(he,{size:16}),F(Ue),F(we);var Ae=R(we,2);{let He=Pt(()=>`drama-speaker-${i(d)}`);rv(Ae,{get id(){return i(He)},get busy(){return s()},get savedVoices(){return r()},get file(){return i(m)[i(a)].file},set file(Be){fi(m,i(m)[i(a)].file=Be)},get transcript(){return i(m)[i(a)].transcript},set transcript(Be){fi(m,i(m)[i(a)].transcript=Be)},$$legacy:!0})}ce((He,Be)=>{Fe.disabled=s(),ye(Ue,"title",He),Ue.disabled=Be},[()=>(i(_),i(d),q(()=>i(_).some(He=>He.speaker===i(d))?"Reassign or remove this speaker's dialogue first":"Remove speaker")),()=>(Z(s()),i(m),i(_),i(d),q(()=>s()||i(m).length<=2||i(_).some(He=>He.speaker===i(d))))]),Fi(Fe,()=>i(m)[i(a)].name,He=>fi(m,i(m)[i(a)].name=He)),Te("click",Ue,()=>v(i(d))),te(ne,fe)}),F(ie),F(ae);var le=R(ae,2),Ee=E(le);F(le),F(S);var Se=R(S,2),pe=E(Se),De=E(pe),et=E(De);Pd(et,{size:17});var Qe=R(et,2),Pe=E(Qe);F(Qe),F(De);var xe=R(De,2);F(pe);var lt=R(pe,2);jt(lt,7,()=>i(_),ne=>ne.id,(ne,fe,we)=>{var me=q$(),Fe=E(me),Ue=E(Fe),he=E(Ue,!0);F(Ue);var Ae=R(Ue,2),He=E(Ae);F(Ae);var Be=R(Ae,2);jt(Be,5,()=>i(m),ei,(Ft,Qt)=>{var Mt=$$(),zt=E(Mt,!0);F(Mt);var Si={};ce(()=>{X(zt,(i(Qt),q(()=>i(Qt).name))),Si!==(Si=(i(Qt),q(()=>i(Qt).id)))&&(Mt.value=(Mt.__value=(i(Qt),q(()=>i(Qt).id)))??"")}),te(Ft,Mt)}),F(Be);var Ge=R(Be,2),Ie=E(Ge),ct=E(Ie);g4(ct,{size:14}),F(Ie);var Ve=R(Ie,2),Gt=E(Ve);m4(Gt,{size:14}),F(Ve);var nt=R(Ve,2),Re=E(nt);Nd(Re,{size:14}),F(nt),F(Ge),F(Fe);var St=R(Fe,2),rt=E(St);F(St);var Tt=R(St,2);Ka(Tt),F(me),ce(Ft=>{X(he,Ft),ye(Ae,"for",(i(fe),q(()=>`drama-line-speaker-${i(fe).id}`))),X(He,`Turn ${i(we)+1} speaker`),ye(Be,"id",(i(fe),q(()=>`drama-line-speaker-${i(fe).id}`))),Be.disabled=s(),Ie.disabled=s()||i(we)===0,Ve.disabled=(Z(s()),Z(i(we)),i(_),q(()=>s()||i(we)===i(_).length-1)),nt.disabled=s(),ye(St,"for",(i(fe),q(()=>`drama-line-${i(fe).id}`))),X(rt,`Turn ${i(we)+1} text`),ye(Tt,"id",(i(fe),q(()=>`drama-line-${i(fe).id}`))),Tt.disabled=s()},[()=>(Z(i(we)),q(()=>String(i(we)+1).padStart(2,"0")))]),wo(Be,()=>i(fe).speaker,Ft=>(i(fe).speaker=Ft,yd(()=>i(_)),yd(()=>{s(),i(m)}))),Te("click",Ie,()=>k(i(we),-1)),Te("click",Ve,()=>k(i(we),1)),Te("click",nt,()=>M(_,i(_).filter(Ft=>Ft.id!==i(fe).id))),Fi(Tt,()=>i(fe).text,Ft=>(i(fe).text=Ft,yd(()=>i(_)),yd(()=>{s(),i(m)}))),te(ne,me)}),F(lt);var re=R(lt,2),ke=E(re);F1(ke,{size:15}),ja(),F(re),F(Se),ce(()=>{X(W,`${i(m),q(()=>i(m).length)??""} / 16`),z.disabled=(Z(s()),i(m),q(()=>s()||i(m).length>=l)),X(Ee,`${i(n)??""} of ${i(m),q(()=>i(m).length)??""} references ready`),X(Pe,`${i(_),q(()=>i(_).length)??""} turns`),xe.disabled=s(),re.disabled=s()}),Te("click",z,b),Te("click",xe,T),Te("click",re,y),te(I,w)};qe(G,I=>{i(p)==="single"?I(U):I(V,-1)})}F(j),ce(()=>{ye(P,"aria-pressed",i(p)==="single"),P.disabled=s(),L=Gi(P,1,"svelte-z6u13w",null,L,{chosen:i(p)==="single"}),ye(B,"aria-pressed",i(p)==="multi"),B.disabled=s(),D=Gi(B,1,"svelte-z6u13w",null,D,{chosen:i(p)==="multi"})}),Te("click",P,()=>M(p,"single")),Te("click",B,()=>M(p,"multi")),te(t,j),Qa()}function ze(t){if(!t)throw new Error("Assertion failed.")}const C$=Math.PI/180,M$=t=>{const e=(t%360+360)%360;if(e===0||e===90||e===180||e===270)return e;throw new Error(`Invalid rotation ${t}.`)},ov=[1,0,0,0,1,0,0,0,1],E$=(t,e,a)=>{const[n,s,,r,o]=t,l=Math.abs(n)*e+Math.abs(r)*a,u=Math.abs(s)*e+Math.abs(o)*a;return mm(mm(lv(-e/2,-a/2),t),lv(l/2,u/2))},z$=t=>{const e=t*C$,a=Math.round(Math.cos(e)),n=Math.round(Math.sin(e));return[a,n,0,-n,a,0,0,0,1]},lv=(t,e)=>[1,0,0,0,1,0,t,e,1],U$=(t,e)=>[t,0,0,0,e,0,0,0,1],mm=(t,e)=>{const a=new Array(9);for(let n=0;n<3;n++)for(let s=0;s<3;s++)a[3*n+s]=t[3*n]*e[s]+t[3*n+1]*e[3+s]+t[3*n+2]*e[6+s];return a},B$=(t,e,a,n)=>({rotation:M$(t+(e?-a:a)),flip:e!==n}),Rs=t=>t&&t[t.length-1],wr=t=>t>=0&&t<2**32,R$=t=>t>=-2147483648&&t<2**31,Je=t=>{let e=0;for(;t.readBits(1)===0&&e<32;)e++;if(e>=32)throw new Error("Invalid exponential-Golomb code.");return(1<{const e=Je(t);return(e&1)===0?-(e>>1):e+1>>1},ys=t=>t.constructor===Uint8Array?t:ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),Ks=t=>t.constructor===DataView?t:ArrayBuffer.isView(t)?new DataView(t.buffer,t.byteOffset,t.byteLength):new DataView(t),j$=typeof globalThis.TextEncoder<"u"?globalThis.TextEncoder:class{constructor(){this.encoding="utf-8"}encode(e=""){const a=new Uint8Array(3*e.length);let n=0;for(let s=0;s>6,a[n++]=128|r&63;else if(r<55296||r>57343)a[n++]=224|r>>12,a[n++]=128|r>>6&63,a[n++]=128|r&63;else{const o=s+1=56320&&o<=57343?(r=65536+(r-55296<<10)+(o-56320),s++,a[n++]=240|r>>18,a[n++]=128|r>>12&63,a[n++]=128|r>>6&63,a[n++]=128|r&63):(a[n++]=239,a[n++]=191,a[n++]=189)}}return a.slice(0,n)}},Ys=new j$,Kd={bt709:1,bt470bg:5,smpte170m:6,bt2020:9,smpte432:12},Yd={bt709:1,smpte170m:6,linear:8,"iec61966-2-1":13,pq:16,hlg:18},Xd={rgb:0,bt709:1,bt470bg:5,smpte170m:6,"bt2020-ncl":9},P$=t=>!t||t.primaries==null&&t.transfer==null&&t.matrix==null&&t.fullRange==null,Jd=t=>t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer||ArrayBuffer.isView(t);class cv{constructor(){this.currentPromise=Promise.resolve(),this.pending=0}async acquire(){let e;const a=new Promise(s=>{let r=!1;e=()=>{r||(s(),this.pending--,r=!0)}}),n=this.currentPromise;return this.currentPromise=a,this.pending++,await n,e}}const dv=(t,e,a)=>{let n=0,s=t.length-1,r=-1;for(;n<=s;){const o=n+(s-n+1)/2|0;a(t[o])<=e?(r=o,n=o+1):s=o-1}return r},uv=()=>{let t,e;return{promise:new Promise((n,s)=>{t=n,e=s}),resolve:t,reject:e}},qo=t=>{throw new Error(`Unexpected value: ${t}`)},N$=(t,e,a)=>{const n=t.getUint8(e),s=t.getUint8(e+1),r=t.getUint8(e+2);return n<<16|s<<8|r},pm=(t,e,a,n)=>{a=a>>>0,a=a&16777215,n?(t.setUint8(e,a&255),t.setUint8(e+1,a>>>8&255),t.setUint8(e+2,a>>>16&255)):(t.setUint8(e,a>>>16&255),t.setUint8(e+1,a>>>8&255),t.setUint8(e+2,a&255))},O$=(t,e,a,n)=>{a=Sn(a,-8388608,8388607),a<0&&(a=a+16777216&16777215),pm(t,e,a,n)},Sn=(t,e,a)=>Math.max(e,Math.min(a,t)),I$=(t,e,a)=>t+(e-t)*a,L$="und",fv=(t,e)=>Math.round(t/e)*e,mv=(t,e)=>Math.round(t*e)/e,pv=(t,e)=>Math.floor(t*e)/e,D$=t=>{let e=0;for(;t!==0;)t&=t-1,e++;return e},V$=/^[a-z]{3}$/,H$=t=>V$.test(t),Dr=1e6*(1+Number.EPSILON),W$=(t,e)=>{const a=t<0?-1:1;t=Math.abs(t);let n=0,s=1,r=1,o=0,l=t;for(;;){const u=Math.floor(l),p=u*r+n,g=u*o+s;if(g>e)return{num:a*r,den:o};if(n=r,s=o,r=p,o=g,l=1/(l-u),!isFinite(l))break}return{num:a*r,den:o}};class gv{constructor(){this.currentPromise=Promise.resolve()}call(e){return this.currentPromise=this.currentPromise.then(e)}}let gm=null;const Q$=()=>gm!==null?gm:gm=!!(typeof navigator<"u"&&(navigator.vendor?.match(/apple/i)||/AppleWebKit/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)||/\b(iPad|iPhone|iPod)\b/.test(navigator.userAgent)));let hm=null;const hv=()=>hm!==null?hm:hm=typeof navigator<"u"&&navigator.userAgent?.includes("Firefox");let _m=null;const K$=()=>_m!==null?_m:_m=!!(typeof navigator<"u"&&(navigator.vendor?.includes("Google Inc")||/Chrome/.test(navigator.userAgent))),_v=t=>typeof globalThis.isSecureContext<"u"&&!globalThis.isSecureContext?`${t} is not available in this environment; this may be because this page is running in an insecure context. Try serving your page over HTTPS or use localhost.`:`${t} is not available in this environment.`,Y$=(async()=>{})().constructor,Vr=t=>t instanceof Y$||t instanceof Promise?!0:typeof t?.then=="function",vv=function*(t){for(const e in t){const a=t[e];a!==void 0&&(yield{key:e,value:a})}},X$=()=>{Symbol.dispose??=Symbol("Symbol.dispose")},J$=t=>typeof t=="number"&&!Number.isNaN(t),Z$=(t,e)=>{let a=-1,n=1/0;for(let s=0;s{ze(Number.isInteger(t.num)),ze(Number.isInteger(t.den)),ze(t.den!==0);let e=Math.abs(t.num),a=Math.abs(t.den);for(;a!==0;){const s=e%a;e=a,a=s}const n=e||1;return{num:t.num/n,den:t.den/n}},vm=(t,e)=>{if(typeof t!="object"||!t)throw new TypeError(`${e} must be an object.`);if(!Number.isInteger(t.left)||t.left<0)throw new TypeError(`${e}.left must be a non-negative integer.`);if(!Number.isInteger(t.top)||t.top<0)throw new TypeError(`${e}.top must be a non-negative integer.`);if(!Number.isInteger(t.width)||t.width<0)throw new TypeError(`${e}.width must be a non-negative integer.`);if(!Number.isInteger(t.height)||t.height<0)throw new TypeError(`${e}.height must be a non-negative integer.`)},eq=t=>new Promise(e=>setTimeout(e,t)),yv=t=>Array.isArray(t)?t:[t];class bm{constructor(){this._listeners=new Map}on(e,a,n){this._listeners.has(e)||this._listeners.set(e,new Set);const s={fn:a,once:n?.once??!1};return this._listeners.get(e).add(s),()=>{this._listeners.get(e)?.delete(s)}}_emit(...e){const[a,n]=e,s=this._listeners.get(a);if(s)for(const r of s){try{r.fn(n)}catch(o){console.error(o)}r.once&&s.delete(r)}}}const tq=t=>t!==null&&typeof t=="object"&&Object.getPrototypeOf(t)===Object.prototype&&Object.values(t).every(e=>typeof e=="string");var Xs;(function(t){t[t.Silent=0]="Silent",t[t.Errors=1]="Errors",t[t.Warnings=2]="Warnings",t[t.Info=3]="Info"})(Xs||(Xs={}));class Fa{constructor(){}static get level(){return Fa._level}static set level(e){if(e!==Xs.Silent&&e!==Xs.Errors&&e!==Xs.Warnings&&e!==Xs.Info)throw new TypeError("Invalid log level. Use one of the values of the LogLevel enum.");Fa._level=e}static get _emitter(){return Fa._emitterInstance??=new bm}static on(e,a,n){return Fa._emitter.on(e,a,n)}static _error(...e){Fa._emitter._emit("error",e),Fa._level>=Xs.Errors&&console.error(...e)}static _warn(...e){Fa._emitter._emit("warn",e),Fa._level>=Xs.Warnings&&console.warn(...e)}static _info(...e){Fa._emitter._emit("info",e),Fa._level>=Xs.Info&&console.info(...e)}}Fa._level=Xs.Info,Fa._emitterInstance=null;class wv{constructor(e,a){if(this.data=e,this.mimeType=a,!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(typeof a!="string")throw new TypeError("mimeType must be a string.")}}class iq{constructor(e,a,n,s){if(this.data=e,this.mimeType=a,this.name=n,this.description=s,!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(a!==void 0&&typeof a!="string")throw new TypeError("mimeType, when provided, must be a string.");if(n!==void 0&&typeof n!="string")throw new TypeError("name, when provided, must be a string.");if(s!==void 0&&typeof s!="string")throw new TypeError("description, when provided, must be a string.")}}const aq=t=>{if(!t||typeof t!="object")throw new TypeError("tags must be an object.");if(t.title!==void 0&&typeof t.title!="string")throw new TypeError("tags.title, when provided, must be a string.");if(t.description!==void 0&&typeof t.description!="string")throw new TypeError("tags.description, when provided, must be a string.");if(t.artist!==void 0&&typeof t.artist!="string")throw new TypeError("tags.artist, when provided, must be a string.");if(t.album!==void 0&&typeof t.album!="string")throw new TypeError("tags.album, when provided, must be a string.");if(t.albumArtist!==void 0&&typeof t.albumArtist!="string")throw new TypeError("tags.albumArtist, when provided, must be a string.");if(t.trackNumber!==void 0&&(!Number.isInteger(t.trackNumber)||t.trackNumber<=0))throw new TypeError("tags.trackNumber, when provided, must be a positive integer.");if(t.tracksTotal!==void 0&&(!Number.isInteger(t.tracksTotal)||t.tracksTotal<=0))throw new TypeError("tags.tracksTotal, when provided, must be a positive integer.");if(t.discNumber!==void 0&&(!Number.isInteger(t.discNumber)||t.discNumber<=0))throw new TypeError("tags.discNumber, when provided, must be a positive integer.");if(t.discsTotal!==void 0&&(!Number.isInteger(t.discsTotal)||t.discsTotal<=0))throw new TypeError("tags.discsTotal, when provided, must be a positive integer.");if(t.genre!==void 0&&typeof t.genre!="string")throw new TypeError("tags.genre, when provided, must be a string.");if(t.date!==void 0&&(!(t.date instanceof Date)||Number.isNaN(t.date.getTime())))throw new TypeError("tags.date, when provided, must be a valid Date.");if(t.beatsPerMinute!==void 0&&(!Number.isInteger(t.beatsPerMinute)||t.beatsPerMinute<=0))throw new TypeError("tags.beatsPerMinute, when provided, must be a positive integer.");if(t.lyrics!==void 0&&typeof t.lyrics!="string")throw new TypeError("tags.lyrics, when provided, must be a string.");if(t.images!==void 0){if(!Array.isArray(t.images))throw new TypeError("tags.images, when provided, must be an array.");for(const e of t.images){if(!e||typeof e!="object")throw new TypeError("Each image in tags.images must be an object.");if(!(e.data instanceof Uint8Array))throw new TypeError("Each image.data must be a Uint8Array.");if(typeof e.mimeType!="string")throw new TypeError("Each image.mimeType must be a string.");if(!["coverFront","coverBack","unknown"].includes(e.kind))throw new TypeError("Each image.kind must be 'coverFront', 'coverBack', or 'unknown'.")}}if(t.comment!==void 0&&typeof t.comment!="string")throw new TypeError("tags.comment, when provided, must be a string.");if(t.raw!==void 0){if(!t.raw||typeof t.raw!="object")throw new TypeError("tags.raw, when provided, must be an object.");for(const e of Object.values(t.raw))if(e!==null&&typeof e!="string"&&!(Array.isArray(e)&&e.every(a=>typeof a=="string"))&&!(e instanceof Uint8Array)&&!(e instanceof wv)&&!(e instanceof iq)&&!tq(e))throw new TypeError("Each value in tags.raw must be a string, string array, Uint8Array, RichImageData, AttachedFile, Record, or null.")}},nq=t=>{if(!t||typeof t!="object")throw new TypeError("disposition must be an object.");if(t.default!==void 0&&typeof t.default!="boolean")throw new TypeError("disposition.default must be a boolean.");if(t.primary!==void 0&&typeof t.primary!="boolean")throw new TypeError("disposition.primary must be a boolean.");if(t.forced!==void 0&&typeof t.forced!="boolean")throw new TypeError("disposition.forced must be a boolean.");if(t.original!==void 0&&typeof t.original!="boolean")throw new TypeError("disposition.original must be a boolean.");if(t.commentary!==void 0&&typeof t.commentary!="boolean")throw new TypeError("disposition.commentary must be a boolean.");if(t.hearingImpaired!==void 0&&typeof t.hearingImpaired!="boolean")throw new TypeError("disposition.hearingImpaired must be a boolean.");if(t.visuallyImpaired!==void 0&&typeof t.visuallyImpaired!="boolean")throw new TypeError("disposition.visuallyImpaired must be a boolean.")};class Ya{constructor(e){this.bytes=e,this.pos=0}seekToByte(e){this.pos=8*e}readBit(){const e=Math.floor(this.pos/8),a=this.bytes[e]??0,n=7-(this.pos&7),s=(a&1<>n;return this.pos++,s}readBits(e){if(e===1)return this.readBit();let a=0;for(let n=0;n>n-s-1<0&&this.writeBits(s,a.readBits(s))}readAlignedByte(){if(this.pos%8!==0)throw new Error("Bitstream is not byte-aligned.");const e=this.pos/8,a=this.bytes[e]??0;return this.pos+=8,a}skipBits(e){this.pos+=e}getBitsLeft(){return this.bytes.length*8-this.pos}clone(){const e=new Ya(this.bytes);return e.pos=this.pos,e}}const Zd=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],ym=[-1,1,2,3,4,5,6,8],sq=t=>{if(!t||t.byteLength<2)throw new TypeError("AAC description must be at least 2 bytes long.");const e=new Ya(t),a=wm(e),{frequencyIndex:n,sampleRate:s}=km(e),r=e.readBits(4);let o=null;r>=1&&r<=7&&(o=ym[r]);let l=a,u=!1,p=s;if(a===5||a===29)u=a===29,p=km(e).sampleRate,l=wm(e),l===22&&e.skipBits(4);else for(;e.getBitsLeft()>15;){const g=e.pos;if(e.readBits(11)!==695){e.pos=g+1;continue}wm(e)===5&&e.readBits(1)&&(p=km(e).sampleRate,e.getBitsLeft()>11&&e.readBits(11)===1352&&(u=!!e.readBits(1)));break}return o!==null&&o>1&&(u=!1),{objectType:a,coreObjectType:l,frequencyIndex:n,channelConfiguration:r,outputSampleRate:p,outputNumberOfChannels:u&&o===1?2:o}},wm=t=>{const e=t.readBits(5);return e===31?32+t.readBits(6):e},km=t=>{const e=t.readBits(4);return e===15?{frequencyIndex:e,sampleRate:t.readBits(24)}:{frequencyIndex:e,sampleRate:e{const e=t.objectType===5||t.objectType===29,a=t.objectType===29,n=e?t.outputSampleRate/2:t.outputSampleRate,s=a?1:t.outputNumberOfChannels,r=ym.indexOf(s);if(r===-1)throw new TypeError(`Unsupported number of channels: ${t.outputNumberOfChannels}`);let o=16;t.objectType>=32&&(o+=6),xm(n)===15&&(o+=24),e&&(o+=9,xm(t.outputSampleRate)===15&&(o+=24));const l=Math.ceil(o/8),u=new Uint8Array(l),p=new Ya(u);return xv(p,t.objectType),Sv(p,n),p.writeBits(4,r),e&&(Sv(p,t.outputSampleRate),xv(p,2)),p.writeBits(3,0),u},xv=(t,e)=>{e<32?t.writeBits(5,e):(t.writeBits(5,31),t.writeBits(6,e-32))},Sv=(t,e)=>{const a=xm(e);t.writeBits(4,a),a===15&&t.writeBits(24,e)},xm=t=>{const e=Zd.indexOf(t);return e===-1?15:e};const rq=[48e3,44100,32e3],oq=[24e3,22050,16e3];var xr;(function(t){t[t.NON_IDR_SLICE=1]="NON_IDR_SLICE",t[t.SLICE_DPA=2]="SLICE_DPA",t[t.SLICE_DPB=3]="SLICE_DPB",t[t.SLICE_DPC=4]="SLICE_DPC",t[t.IDR=5]="IDR",t[t.SEI=6]="SEI",t[t.SPS=7]="SPS",t[t.PPS=8]="PPS",t[t.AUD=9]="AUD",t[t.SPS_EXT=13]="SPS_EXT"})(xr||(xr={}));var ws;(function(t){t[t.RASL_N=8]="RASL_N",t[t.RASL_R=9]="RASL_R",t[t.BLA_W_LP=16]="BLA_W_LP",t[t.RSV_IRAP_VCL23=23]="RSV_IRAP_VCL23",t[t.VPS_NUT=32]="VPS_NUT",t[t.SPS_NUT=33]="SPS_NUT",t[t.PPS_NUT=34]="PPS_NUT",t[t.AUD_NUT=35]="AUD_NUT",t[t.PREFIX_SEI_NUT=39]="PREFIX_SEI_NUT",t[t.SUFFIX_SEI_NUT=40]="SUFFIX_SEI_NUT"})(ws||(ws={}));const yc=function*(t){let e=0,a=-1;for(;e=t.length-2)break;e=n;let s=0;if(e+3a&&(yield{offset:a,length:e-a}),a=e+s,e=a}a!==-1&&a{if(e.description){const s=(ys(e.description)[4]&3)+1;return Tv(t,s)}else return yc(t)},$v=t=>t&31,eu=t=>{const e=[],a=t.length;for(let n=0;n{const a=t.reduce((r,o)=>r+e+o.byteLength,0),n=new Uint8Array(a);let s=0;for(const r of t){const o=new DataView(n.buffer,n.byteOffset,n.byteLength);switch(e){case 1:o.setUint8(s,r.byteLength);break;case 2:o.setUint16(s,r.byteLength,!1);break;case 3:pm(o,s,r.byteLength,!1);break;case 4:o.setUint32(s,r.byteLength,!1);break}s+=e,n.set(r,s),s+=r.byteLength}return n},dq=t=>{try{const e=[],a=[],n=[];for(const l of yc(t)){const u=t.subarray(l.offset,l.offset+l.length),p=$v(u[0]);p===xr.SPS?e.push(u):p===xr.PPS?a.push(u):p===xr.SPS_EXT&&n.push(u)}if(e.length===0||a.length===0)return null;const s=e[0],r=fq(s);ze(r!==null);const o=r.profileIdc===100||r.profileIdc===110||r.profileIdc===122||r.profileIdc===144;return{configurationVersion:1,avcProfileIndication:r.profileIdc,profileCompatibility:r.constraintFlags,avcLevelIndication:r.levelIdc,lengthSizeMinusOne:3,sequenceParameterSets:e,pictureParameterSets:a,chromaFormat:o?r.chromaFormatIdc:null,bitDepthLumaMinus8:o?r.bitDepthLumaMinus8:null,bitDepthChromaMinus8:o?r.bitDepthChromaMinus8:null,sequenceParameterSetExt:o?n:null}}catch(e){return Fa._error("Error building AVC Decoder Configuration Record:",e),null}},uq=t=>{const e=[];e.push(t.configurationVersion),e.push(t.avcProfileIndication),e.push(t.profileCompatibility),e.push(t.avcLevelIndication),e.push(252|t.lengthSizeMinusOne&3),e.push(224|t.sequenceParameterSets.length&31);for(const a of t.sequenceParameterSets){const n=a.byteLength;e.push(n>>8),e.push(n&255);for(let s=0;s>8),e.push(n&255);for(let s=0;s>8),e.push(n&255);for(let s=0;s{try{const e=eu(t),a=new Ya(e);if(a.skipBits(1),a.skipBits(2),a.readBits(5)!==7)return null;const s=a.readAlignedByte(),r=a.readAlignedByte(),o=a.readAlignedByte();Je(a);let l=1,u=0,p=0,g=0;if((s===100||s===110||s===122||s===244||s===44||s===83||s===86||s===118||s===128)&&(l=Je(a),l===3&&(g=a.readBits(1)),u=Je(a),p=Je(a),a.skipBits(1),a.readBits(1))){for(let U=0;U<(l!==3?8:12);U++)if(a.readBits(1)){const I=U<6?16:64;let w=8,S=8;for(let C=0;CC.level>=o)??Rs(tu),S=Math.min(Math.floor(w.maxDpbMbs/(U*I)),16);P=S,L=S}}return ze(L!==null),{emulationUnpreventedBytes:e,profileIdc:s,constraintFlags:r,levelIdc:o,frameMbsOnlyFlag:v,chromaFormatIdc:l,bitDepthLumaMinus8:u,bitDepthChromaMinus8:p,codedWidth:d,codedHeight:c,displayWidth:_,displayHeight:b,pixelAspectRatio:$,colourPrimaries:y,matrixCoefficients:O,transferCharacteristics:T,fullRangeFlag:j,numReorderFrames:P,maxDecFrameBuffering:L,vuiParametersFlagBitOffset:D,bitstreamRestrictionFlagBitOffset:x,bitstreamRestrictionFlag:B}}catch(e){return Fa._error("Error parsing AVC SPS:",e),null}},Gv=t=>{const e=Je(t);t.skipBits(4),t.skipBits(4);for(let a=0;a<=e;a++)Je(t),Je(t),t.skipBits(1);t.skipBits(5),t.skipBits(5),t.skipBits(5),t.skipBits(5)},mq=(t,e)=>{if(e.description){const s=(ys(e.description)[21]&3)+1;return Tv(t,s)}else return yc(t)},Sm=t=>t>>1&63,pq=t=>{try{const e=new Ya(eu(t));e.skipBits(16),e.readBits(4);const a=e.readBits(3),n=e.readBits(1),{general_profile_space:s,general_tier_flag:r,general_profile_idc:o,general_profile_compatibility_flags:l,general_constraint_indicator_flags:u,general_level_idc:p}=hq(e,a);Je(e);const g=Je(e);let h=0;g===3&&(h=e.readBits(1));const f=Je(e),m=Je(e);let d=f,c=m;if(e.readBits(1)){const B=Je(e),D=Je(e),A=Je(e),G=Je(e);let U=1,V=1;const I=h===0?g:0;I===1?(U=2,V=2):I===2&&(U=2,V=1),d-=(B+D)*U,c-=(A+G)*V}const _=Je(e),b=Je(e);Je(e);const k=e.readBits(1)?0:a;let y=0;for(let B=k;B<=a;B++)Je(e),y=Je(e),Je(e);Je(e),Je(e),Je(e),Je(e),Je(e),Je(e),e.readBits(1)&&e.readBits(1)&&_q(e),e.skipBits(1),e.skipBits(1),e.readBits(1)&&(e.skipBits(4),e.skipBits(4),Je(e),Je(e),e.skipBits(1));const T=Je(e);if(vq(e,T),e.readBits(1)){const B=Je(e);for(let D=0;D{try{const e=[],a=[],n=[],s=[];for(const p of yc(t)){const g=t.subarray(p.offset,p.offset+p.length),h=Sm(g[0]);h===ws.VPS_NUT?e.push(g):h===ws.SPS_NUT?a.push(g):h===ws.PPS_NUT?n.push(g):(h===ws.PREFIX_SEI_NUT||h===ws.SUFFIX_SEI_NUT)&&s.push(g)}if(a.length===0||n.length===0)return null;const r=pq(a[0]);if(!r)return null;let o=0;if(n.length>0){const p=n[0],g=new Ya(eu(p));g.skipBits(16),Je(g),Je(g),g.skipBits(1),g.skipBits(1),g.skipBits(3),g.skipBits(1),g.skipBits(1),Je(g),Je(g),kr(g),g.skipBits(1),g.skipBits(1),g.readBits(1)&&Je(g),kr(g),kr(g),g.skipBits(1),g.skipBits(1),g.skipBits(1),g.skipBits(1);const h=g.readBits(1),f=g.readBits(1);!h&&!f?o=0:h&&!f?o=2:!h&&f?o=3:o=0}const l=[...e.length?[{arrayCompleteness:1,nalUnitType:ws.VPS_NUT,nalUnits:e}]:[],...a.length?[{arrayCompleteness:1,nalUnitType:ws.SPS_NUT,nalUnits:a}]:[],...n.length?[{arrayCompleteness:1,nalUnitType:ws.PPS_NUT,nalUnits:n}]:[],...s.length?[{arrayCompleteness:1,nalUnitType:Sm(s[0][0]),nalUnits:s}]:[]];return{configurationVersion:1,generalProfileSpace:r.generalProfileSpace,generalTierFlag:r.generalTierFlag,generalProfileIdc:r.generalProfileIdc,generalProfileCompatibilityFlags:r.generalProfileCompatibilityFlags,generalConstraintIndicatorFlags:r.generalConstraintIndicatorFlags,generalLevelIdc:r.generalLevelIdc,minSpatialSegmentationIdc:r.minSpatialSegmentationIdc,parallelismType:o,chromaFormatIdc:r.chromaFormatIdc,bitDepthLumaMinus8:r.bitDepthLumaMinus8,bitDepthChromaMinus8:r.bitDepthChromaMinus8,avgFrameRate:0,constantFrameRate:0,numTemporalLayers:r.spsMaxSubLayersMinus1+1,temporalIdNested:r.spsTemporalIdNestingFlag,lengthSizeMinusOne:3,arrays:l}}catch(e){return Fa._error("Error building HEVC Decoder Configuration Record:",e),null}},hq=(t,e)=>{const a=t.readBits(2),n=t.readBits(1),s=t.readBits(5);let r=0;for(let g=0;g<32;g++)r=r<<1|t.readBits(1);const o=new Uint8Array(6);for(let g=0;g<6;g++)o[g]=t.readBits(8);const l=t.readBits(8),u=[],p=[];for(let g=0;g0)for(let g=e;g<8;g++)t.skipBits(2);for(let g=0;g{for(let e=0;e<4;e++)for(let a=0;a<(e===3?2:6);a++)if(!t.readBits(1))Je(t);else{const s=Math.min(64,1<<4+(e<<1));e>1&&kr(t);for(let r=0;r{const a=[];for(let n=0;n{let s=0,r=0,o=0;if(e!==0&&(r=t.readBits(1)),r){if(e===a){const u=Je(t);o=e-(u+1)}else o=e-1;t.readBits(1),Je(t);const l=n[o]??0;for(let u=0;u<=l;u++)t.readBits(1)||t.readBits(1);s=n[o]}else{const l=Je(t),u=Je(t);for(let p=0;p{let a=2,n=2,s=2,r=0,o=0,l={num:1,den:1};if(t.readBits(1)){const u=t.readBits(8);if(u===255)l={num:t.readBits(16),den:t.readBits(16)};else{const p=qv[u];p&&(l=p)}}return t.readBits(1)&&t.readBits(1),t.readBits(1)&&(t.readBits(3),r=t.readBits(1),t.readBits(1)&&(a=t.readBits(8),n=t.readBits(8),s=t.readBits(8))),t.readBits(1)&&(Je(t),Je(t)),t.readBits(1),t.readBits(1),t.readBits(1),t.readBits(1)&&(Je(t),Je(t),Je(t),Je(t)),t.readBits(1)&&(t.readBits(32),t.readBits(32),t.readBits(1)&&Je(t),t.readBits(1)&&wq(t,!0,e)),t.readBits(1)&&(t.readBits(1),t.readBits(1),t.readBits(1),o=Je(t),Je(t),Je(t),Je(t),Je(t)),{pixelAspectRatio:l,colourPrimaries:a,transferCharacteristics:n,matrixCoefficients:s,fullRangeFlag:r,minSpatialSegmentationIdc:o}},wq=(t,e,a)=>{let n=!1,s=!1,r=!1;n=t.readBits(1)===1,s=t.readBits(1)===1,(n||s)&&(r=t.readBits(1)===1,r&&(t.readBits(8),t.readBits(5),t.readBits(1),t.readBits(5)),t.readBits(4),t.readBits(4),r&&t.readBits(4),t.readBits(5),t.readBits(5),t.readBits(5));for(let o=0;o<=a;o++){const l=t.readBits(1)===1;let u=!0;l||(u=t.readBits(1)===1);let p=!1;u?Je(t):p=t.readBits(1)===1;let g=1;p||(g=Je(t)+1),n&&Fv(t,g,r),s&&Fv(t,g,r)}},Fv=(t,e,a)=>{for(let n=0;n{const e=[];e.push(t.configurationVersion),e.push((t.generalProfileSpace&3)<<6|(t.generalTierFlag&1)<<5|t.generalProfileIdc&31),e.push(t.generalProfileCompatibilityFlags>>>24&255),e.push(t.generalProfileCompatibilityFlags>>>16&255),e.push(t.generalProfileCompatibilityFlags>>>8&255),e.push(t.generalProfileCompatibilityFlags&255),e.push(...t.generalConstraintIndicatorFlags),e.push(t.generalLevelIdc&255),e.push(240|t.minSpatialSegmentationIdc>>8&15),e.push(t.minSpatialSegmentationIdc&255),e.push(252|t.parallelismType&3),e.push(252|t.chromaFormatIdc&3),e.push(248|t.bitDepthLumaMinus8&7),e.push(248|t.bitDepthChromaMinus8&7),e.push(t.avgFrameRate>>8&255),e.push(t.avgFrameRate&255),e.push((t.constantFrameRate&3)<<6|(t.numTemporalLayers&7)<<3|(t.temporalIdNested&1)<<2|t.lengthSizeMinusOne&3),e.push(t.arrays.length&255);for(const a of t.arrays){e.push((a.arrayCompleteness&1)<<7|0|a.nalUnitType&63),e.push(a.nalUnits.length>>8&255),e.push(a.nalUnits.length&255);for(const n of a.nalUnits){e.push(n.length>>8&255),e.push(n.length&255);for(let s=0;s{let n=0;for(let s=0;s<8;s++){const r=e.readAlignedByte();if(n+=(r&127)*2**(s*7),!(r&128))break;if(s===7&&r&128)return null}return n>2**32-1?null:n};for(;e.getBitsLeft()>=8;){e.skipBits(1);const n=e.readBits(4),s=e.readBits(1),r=e.readBits(1);e.skipBits(1),s&&e.skipBits(8);let o;if(r){const l=a();if(l===null)return;o=l}else o=Math.floor(e.getBitsLeft()/8);ze(e.pos%8===0),yield{type:n,data:t.subarray(e.pos/8,e.pos/8+o)},e.skipBits(o*8)}},Sq=t=>{const e=Ks(t),a=e.getUint8(9),n=e.getUint16(10,!0),s=e.getUint32(12,!0),r=e.getInt16(16,!0),o=e.getUint8(18);let l=null;return o&&(l=t.subarray(19,21+a)),{outputChannelCount:a,preSkip:n,inputSampleRate:s,outputGain:r,channelMappingFamily:o,channelMappingTable:l}},Tq=(t,e,a)=>{switch(t){case"avc":{for(const n of lq(a,e)){const s=a[n.offset],r=$v(s);if(r>=xr.NON_IDR_SLICE&&r<=xr.SLICE_DPC)return"delta";if(r===xr.IDR)return"key";if(r===xr.SEI&&!K$()){const o=a.subarray(n.offset,n.offset+n.length),l=eu(o);let u=1;do{let p=0;for(;;){const f=l[u++];if(f===void 0||(p+=f,f<255))break}let g=0;for(;;){const f=l[u++];if(f===void 0||(g+=f,f<255))break}if(p===6){const f=new Ya(l);f.pos=8*u;const m=Je(f),d=f.readBits(1);if(m===0&&d===1)return"key"}u+=g}while(u{if(t.length<7||t[0]!==11||t[1]!==119)return null;const e=new Ya(t);e.skipBits(16),e.skipBits(16);const a=e.readBits(2);if(a===3)return null;const n=e.readBits(6),s=e.readBits(5);if(s>8)return null;const r=e.readBits(3),o=e.readBits(3);(o&1)!==0&&o!==1&&e.skipBits(2),(o&4)!==0&&e.skipBits(2),o===2&&e.skipBits(2);const l=e.readBits(1),u=Math.floor(n/2);return{fscod:a,bsid:s,bsmod:r,acmod:o,lfeon:l,bitRateCode:u}},qq=[1,2,3,6],Gq=t=>{if(t.length<6||t[0]!==11||t[1]!==119)return null;const e=new Ya(t);e.skipBits(16);const a=e.readBits(2);if(e.skipBits(3),a!==0&&a!==2)return null;const n=e.readBits(11),s=e.readBits(2);let r=0,o;s===3?(r=e.readBits(2),o=3):o=e.readBits(2);const l=e.readBits(3),u=e.readBits(1),p=e.readBits(5);if(p<11||p>16)return null;const g=qq[o];let h;return s<3?h=rq[s]/1e3:h=oq[r]/1e3,{dataRate:Math.round((n+1)*h/(g*16)),substreams:[{fscod:s,fscod2:r,bsid:p,bsmod:0,acmod:l,lfeon:u,numDepSub:0,chanLoc:0}]}},Fq=1683496997,Aq=18,Cq=10,Mv=32,Mq=20,Eq=8,zq=[0,8e3,16e3,32e3,0,0,11025,22050,44100,0,0,12e3,24e3,48e3,96e3,192e3],Uq=[32e3,56e3,64e3,96e3,112e3,128e3,192e3,224e3,256e3,32e4,384e3,448e3,512e3,576e3,64e4,768e3,96e4,1024e3,1152e3,128e4,1344e3,1408e3,1411200,1472e3,1536e3,192e4,2048e3,3072e3,384e4,0,0,0],Bq=[16,16,20,20,0,24,24,0],Ev=[1,2,2,2,2,3,3,4,4,5,6,6,6,7,8,8],Rq=[1,2,2,2,2,3,18,19,6,7,518,323,83,519,582,535],jq=8,Pq=[32e3,44100,48e3,0],Nq=[8e3,16e3,32e3,64e3,128e3,22050,44100,88200,176400,352800,12e3,24e3,48e3,96e3,192e3,384e3],Oq=[512,1024,2048,4096],Iq=t=>{const e=Lq(t),a=Ks(t);let n=e?Math.ceil(e.frameSize/4)*4:0,s=null;for(;n+4<=t.length&&a.getUint32(n)===Fq;){const o=Dq(t.subarray(n));if(!o)break;s??=o,n+=o.frameSize}if(e)return{frameSize:s?n:e.frameSize,sampleRate:e.sampleRate,numberOfChannels:e.numberOfChannels,sampleCount:e.sampleCount,channelLayout:e.channelLayout,pcmResolution:e.pcmResolution,bitRate:e.bitRate,core:e,hasExtensions:s!==null};if(!s?.asset)return null;const{asset:r}=s;return{frameSize:n,sampleRate:r.sampleRate,numberOfChannels:r.numberOfChannels,sampleCount:r.sampleCount,channelLayout:r.channelLayout,pcmResolution:r.pcmResolution,bitRate:0,core:null,hasExtensions:!0}},Lq=t=>{if(t.length=Ev.length)return null;const o=zq[e.readBits(4)];if(o===0)return null;const l=Uq[e.readBits(5)];if(e.readBits(1)!==0)return null;e.skipBits(4),e.skipBits(5);const u=e.readBits(2);if(u===3)return null;e.skipBits(1),a&&e.skipBits(16),e.skipBits(7);const p=Bq[e.readBits(3)];if(p===0)return null;const g=u!==0;return{frameSize:s,sampleRate:o,numberOfChannels:Ev[r]+(g?1:0),sampleCount:n*Mv,channelLayout:Rq[r]|(g?jq:0),amode:r,lfePresent:g,bitRate:l,pcmResolution:p}},Dq=t=>{if(t.length2&&e.skipBits(1),c>6&&e.skipBits(1),e.readBits(1))){const b=e.readBits(2)+1<<2;_=e.readBits(b)}return u===0||e.getBitsLeft()<0?l:{frameSize:o,asset:{sampleRate:d,numberOfChannels:c,sampleCount:Math.round(p*d/u),channelLayout:_,pcmResolution:m}}},Vq=t=>{const e=new Uint8Array(Mq),a=Ks(e);a.setUint32(0,t.sampleRate),a.setUint32(4,t.bitRate),a.setUint32(8,t.bitRate),e[12]=t.pcmResolution;const n=t.core&&!t.hasExtensions?1:0,s=new Ya(e);return s.seekToByte(13),s.writeBits(2,Math.max(Oq.indexOf(t.sampleCount),0)),s.writeBits(5,n),s.writeBits(1,t.core?.lfePresent?1:0),s.writeBits(6,t.core?.amode??0),s.writeBits(14,t.core?t.core.frameSize-1:0),s.writeBits(1,0),s.writeBits(3,0),s.writeBits(16,t.channelLayout),s.writeBits(1,0),s.writeBits(1,0),s.writeBits(1,0),s.writeBits(5,0),e};const Sr=["avc","hevc","vp9","av1","vp8","prores"],js=["pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be","pcm-u8","pcm-s8","ulaw","alaw"],Tm=["aac","opus","mp3","vorbis","flac","ac3","eac3","dts"],Go=[...Tm,...js],wc=["webvtt"],tu=[{maxMacroblocks:99,maxBitrate:64e3,maxDpbMbs:396,level:10},{maxMacroblocks:396,maxBitrate:192e3,maxDpbMbs:900,level:11},{maxMacroblocks:396,maxBitrate:384e3,maxDpbMbs:2376,level:12},{maxMacroblocks:396,maxBitrate:768e3,maxDpbMbs:2376,level:13},{maxMacroblocks:396,maxBitrate:2e6,maxDpbMbs:2376,level:20},{maxMacroblocks:792,maxBitrate:4e6,maxDpbMbs:4752,level:21},{maxMacroblocks:1620,maxBitrate:4e6,maxDpbMbs:8100,level:22},{maxMacroblocks:1620,maxBitrate:1e7,maxDpbMbs:8100,level:30},{maxMacroblocks:3600,maxBitrate:14e6,maxDpbMbs:18e3,level:31},{maxMacroblocks:5120,maxBitrate:2e7,maxDpbMbs:20480,level:32},{maxMacroblocks:8192,maxBitrate:2e7,maxDpbMbs:32768,level:40},{maxMacroblocks:8192,maxBitrate:5e7,maxDpbMbs:32768,level:41},{maxMacroblocks:8704,maxBitrate:5e7,maxDpbMbs:34816,level:42},{maxMacroblocks:22080,maxBitrate:135e6,maxDpbMbs:110400,level:50},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:51},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:52},{maxMacroblocks:139264,maxBitrate:24e7,maxDpbMbs:696320,level:60},{maxMacroblocks:139264,maxBitrate:48e7,maxDpbMbs:696320,level:61},{maxMacroblocks:139264,maxBitrate:8e8,maxDpbMbs:696320,level:62}],zv=[{maxPictureSize:36864,maxBitrate:128e3,tier:"L",level:30},{maxPictureSize:122880,maxBitrate:15e5,tier:"L",level:60},{maxPictureSize:245760,maxBitrate:3e6,tier:"L",level:63},{maxPictureSize:552960,maxBitrate:6e6,tier:"L",level:90},{maxPictureSize:983040,maxBitrate:1e7,tier:"L",level:93},{maxPictureSize:2228224,maxBitrate:12e6,tier:"L",level:120},{maxPictureSize:2228224,maxBitrate:3e7,tier:"H",level:120},{maxPictureSize:2228224,maxBitrate:2e7,tier:"L",level:123},{maxPictureSize:2228224,maxBitrate:5e7,tier:"H",level:123},{maxPictureSize:8912896,maxBitrate:25e6,tier:"L",level:150},{maxPictureSize:8912896,maxBitrate:1e8,tier:"H",level:150},{maxPictureSize:8912896,maxBitrate:4e7,tier:"L",level:153},{maxPictureSize:8912896,maxBitrate:16e7,tier:"H",level:153},{maxPictureSize:8912896,maxBitrate:6e7,tier:"L",level:156},{maxPictureSize:8912896,maxBitrate:24e7,tier:"H",level:156},{maxPictureSize:35651584,maxBitrate:6e7,tier:"L",level:180},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:180},{maxPictureSize:35651584,maxBitrate:12e7,tier:"L",level:183},{maxPictureSize:35651584,maxBitrate:48e7,tier:"H",level:183},{maxPictureSize:35651584,maxBitrate:24e7,tier:"L",level:186},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:186}],Uv=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}],Bv=[{maxPictureSize:147456,maxBitrate:15e5,tier:"M",level:0},{maxPictureSize:278784,maxBitrate:3e6,tier:"M",level:1},{maxPictureSize:665856,maxBitrate:6e6,tier:"M",level:4},{maxPictureSize:1065024,maxBitrate:1e7,tier:"M",level:5},{maxPictureSize:2359296,maxBitrate:12e6,tier:"M",level:8},{maxPictureSize:2359296,maxBitrate:3e7,tier:"H",level:8},{maxPictureSize:2359296,maxBitrate:2e7,tier:"M",level:9},{maxPictureSize:2359296,maxBitrate:5e7,tier:"H",level:9},{maxPictureSize:8912896,maxBitrate:3e7,tier:"M",level:12},{maxPictureSize:8912896,maxBitrate:1e8,tier:"H",level:12},{maxPictureSize:8912896,maxBitrate:4e7,tier:"M",level:13},{maxPictureSize:8912896,maxBitrate:16e7,tier:"H",level:13},{maxPictureSize:8912896,maxBitrate:6e7,tier:"M",level:14},{maxPictureSize:8912896,maxBitrate:24e7,tier:"H",level:14},{maxPictureSize:35651584,maxBitrate:6e7,tier:"M",level:15},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:15},{maxPictureSize:35651584,maxBitrate:6e7,tier:"M",level:16},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:16},{maxPictureSize:35651584,maxBitrate:1e8,tier:"M",level:17},{maxPictureSize:35651584,maxBitrate:48e7,tier:"H",level:17},{maxPictureSize:35651584,maxBitrate:16e7,tier:"M",level:18},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:18},{maxPictureSize:35651584,maxBitrate:16e7,tier:"M",level:19},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:19}],kc=["ap4x","ap4h","apch","apcn","apcs","apco"],$m=["dtsc","dtsh","dtsl","dtse"],Hq=[{fourCc:"apco",bitrate:45e6,alpha:!1},{fourCc:"apcs",bitrate:102e6,alpha:!1},{fourCc:"apcn",bitrate:147e6,alpha:!1},{fourCc:"apch",bitrate:22e7,alpha:!1},{fourCc:"ap4h",bitrate:33e7,alpha:!0},{fourCc:"ap4x",bitrate:5e8,alpha:!0}],Wq=(t,e,a,n,s)=>{if(t==="avc"){const o=Math.ceil(e/16)*Math.ceil(a/16),l=tu.find(f=>o<=f.maxMacroblocks&&n<=f.maxBitrate)??Rs(tu),u=l?l.level:0,p="64".padStart(2,"0"),g="00",h=u.toString(16).padStart(2,"0");return`avc1.${p}${g}${h}`}else if(t==="hevc"){const u=e*a,p=zv.find(h=>u<=h.maxPictureSize&&n<=h.maxBitrate)??Rs(zv);return`hev1.1.6.${p.tier}${p.level}.B0`}else{if(t==="vp8")return"vp8";if(t==="vp9"){const o=e*a;return`vp09.00.${(Uv.find(p=>o<=p.maxPictureSize&&n<=p.maxBitrate)??Rs(Uv)).level.toString().padStart(2,"0")}.08`}else if(t==="av1"){const o=e*a,l=Bv.find(g=>o<=g.maxPictureSize&&n<=g.maxBitrate)??Rs(Bv);return`av01.0.${l.level.toString().padStart(2,"0")}${l.tier}.08`}else if(t==="prores"){const o=Math.pow(e*a/2073600,.95),l=Hq.filter(g=>g.alpha===s);let u=l[0].fourCc,p=1/0;for(const{fourCc:g,bitrate:h}of l){const f=Math.abs(h*o-n);f{const e=t.split("."),s=(1<<7)+1,r=Number(e[1]),o=e[2],l=Number(o.slice(0,-1)),u=(r<<5)+l,p=o.slice(-1)==="H"?1:0,g=Number(e[3]),h=g===8?0:1,f=g===12?1:0,m=e[4]?Number(e[4]):0,d=e[5]?Number(e[5][0]):1,c=e[5]?Number(e[5][1]):1,_=e[5]?Number(e[5][2]):0,b=(p<<7)+(h<<6)+(f<<5)+(m<<4)+(d<<3)+(c<<2)+_;return[s,u,b,0]},Kq=(t,e,a)=>{if(t==="aac")return e>=2&&a<=24e3?"mp4a.40.29":a<=24e3?"mp4a.40.5":"mp4a.40.2";if(t==="mp3")return"mp3";if(t==="opus")return"opus";if(t==="vorbis")return"vorbis";if(t==="flac")return"flac";if(t==="ac3")return"ac-3";if(t==="eac3")return"ec-3";if(t==="dts")return"dtsc";if(js.includes(t))return t;throw new TypeError(`Unhandled codec '${t}'.`)},Rv=/^pcm-([usf])(\d+)(be)?$/,Fo=t=>{if(ze(js.includes(t)),t==="ulaw")return{dataType:"ulaw",sampleSize:1,littleEndian:!0,silentValue:255};if(t==="alaw")return{dataType:"alaw",sampleSize:1,littleEndian:!0,silentValue:213};const e=Rv.exec(t);ze(e);let a;e[1]==="u"?a="unsigned":e[1]==="s"?a="signed":a="float";const n=Number(e[2])/8,s=e[3]!=="be",r=t==="pcm-u8"?2**7:0;return{dataType:a,sampleSize:n,littleEndian:s,silentValue:r}},iu=t=>t.startsWith("avc1")||t.startsWith("avc3")?"avc":t.startsWith("hev1")||t.startsWith("hvc1")?"hevc":t==="vp8"?"vp8":t.startsWith("vp09")?"vp9":t.startsWith("av01")?"av1":kc.includes(t)?"prores":t==="mp3"||t==="mp4a.69"||t==="mp4a.6B"||t==="mp4a.6b"||t==="mp4a.40.34"?"mp3":t.startsWith("mp4a.40.")||t==="mp4a.67"?"aac":t==="opus"?"opus":t==="vorbis"?"vorbis":t==="flac"?"flac":t==="ac-3"||t==="ac3"?"ac3":t==="ec-3"||t==="eac3"?"eac3":$m.includes(t)?"dts":t==="ulaw"?"ulaw":t==="alaw"?"alaw":Rv.test(t)?t:t==="webvtt"?"webvtt":null,Yq=t=>t==="avc"?{avc:{format:"avc"}}:t==="hevc"?{hevc:{format:"hevc"}}:{},Xq=t=>t==="aac"?{aac:{format:"aac"}}:t==="opus"?{opus:{format:"opus"}}:{},Jq=["avc1","avc3","hev1","hvc1","vp8","vp09","av01",...kc],Zq=/^(avc1|avc3)\.[0-9a-fA-F]{6}$/,eG=/^(hev1|hvc1)\.(?:[ABC]?\d+)\.[0-9a-fA-F]{1,8}\.[LH]\d+(?:\.[0-9a-fA-F]{1,2}){0,6}$/,tG=/^vp09(?:\.\d{2}){3}(?:(?:\.\d{2}){5})?$/,iG=/^av01\.\d\.\d{2}[MH]\.\d{2}(?:\.\d\.\d{3}\.\d{2}\.\d{2}\.\d{2}\.\d)?$/,jv=(t,e)=>{if(!t)throw new TypeError("Video chunk metadata must be provided.");if(typeof t!="object")throw new TypeError("Video chunk metadata must be an object.");if(!t.decoderConfig)throw new TypeError("Video chunk metadata must include a decoder configuration.");if(typeof t.decoderConfig!="object")throw new TypeError("Video chunk metadata decoder configuration must be an object.");if(typeof t.decoderConfig.codec!="string")throw new TypeError("Video chunk metadata decoder configuration must specify a codec string.");if(!Jq.some(a=>t.decoderConfig.codec.startsWith(a)))throw new TypeError("Video chunk metadata decoder configuration codec string must be a valid video codec string as specified in the Mediabunny Codec Registry.");if(!Number.isInteger(t.decoderConfig.codedWidth)||t.decoderConfig.codedWidth<=0)throw new TypeError("Video chunk metadata decoder configuration must specify a valid codedWidth (positive integer).");if(!Number.isInteger(t.decoderConfig.codedHeight)||t.decoderConfig.codedHeight<=0)throw new TypeError("Video chunk metadata decoder configuration must specify a valid codedHeight (positive integer).");if(t.decoderConfig.displayAspectWidth!==void 0&&(!Number.isInteger(t.decoderConfig.displayAspectWidth)||t.decoderConfig.displayAspectWidth<=0))throw new TypeError("Video chunk metadata decoder configuration displayAspectWidth, when defined, must be a positive integer.");if(t.decoderConfig.displayAspectHeight!==void 0&&(!Number.isInteger(t.decoderConfig.displayAspectHeight)||t.decoderConfig.displayAspectHeight<=0))throw new TypeError("Video chunk metadata decoder configuration displayAspectHeight, when defined, must be a positive integer.");if(t.decoderConfig.displayAspectWidth!==void 0!=(t.decoderConfig.displayAspectHeight!==void 0))throw new TypeError("Video chunk metadata decoder configuration must specify both displayAspectWidth and displayAspectHeight, or neither.");if(t.decoderConfig.description!==void 0&&!Jd(t.decoderConfig.description))throw new TypeError("Video chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.");if(t.decoderConfig.colorSpace!==void 0){const{colorSpace:a}=t.decoderConfig;if(typeof a!="object")throw new TypeError("Video chunk metadata decoder configuration colorSpace, when provided, must be an object.");const n=Object.keys(Kd);if(a.primaries!=null&&!n.includes(a.primaries))throw new TypeError(`Video chunk metadata decoder configuration colorSpace primaries, when defined, must be one of ${n.join(", ")}.`);const s=Object.keys(Yd);if(a.transfer!=null&&!s.includes(a.transfer))throw new TypeError(`Video chunk metadata decoder configuration colorSpace transfer, when defined, must be one of ${s.join(", ")}.`);const r=Object.keys(Xd);if(a.matrix!=null&&!r.includes(a.matrix))throw new TypeError(`Video chunk metadata decoder configuration colorSpace matrix, when defined, must be one of ${r.join(", ")}.`);if(a.fullRange!=null&&typeof a.fullRange!="boolean")throw new TypeError("Video chunk metadata decoder configuration colorSpace fullRange, when defined, must be a boolean.")}if(t.decoderConfig.codec.startsWith("avc1")||t.decoderConfig.codec.startsWith("avc3")){if(!Zq.test(t.decoderConfig.codec))throw new TypeError("Video chunk metadata decoder configuration codec string for AVC must be a valid AVC codec string as specified in Section 3.4 of RFC 6381.")}else if(t.decoderConfig.codec.startsWith("hev1")||t.decoderConfig.codec.startsWith("hvc1")){if(!eG.test(t.decoderConfig.codec))throw new TypeError("Video chunk metadata decoder configuration codec string for HEVC must be a valid HEVC codec string as specified in Section E.3 of ISO 14496-15.")}else if(t.decoderConfig.codec.startsWith("vp8")){if(t.decoderConfig.codec!=="vp8")throw new TypeError('Video chunk metadata decoder configuration codec string for VP8 must be "vp8".')}else if(t.decoderConfig.codec.startsWith("vp09")){if(!tG.test(t.decoderConfig.codec))throw new TypeError('Video chunk metadata decoder configuration codec string for VP9 must be a valid VP9 codec string as specified in Section "Codecs Parameter String" of https://www.webmproject.org/vp9/mp4/.')}else if(t.decoderConfig.codec.startsWith("av01")){if(!iG.test(t.decoderConfig.codec))throw new TypeError('Video chunk metadata decoder configuration codec string for AV1 must be a valid AV1 codec string as specified in Section "Codecs Parameter String" of https://aomediacodec.github.io/av1-isobmff/.')}else if(kc.some(a=>t.decoderConfig.codec.startsWith(a))&&!kc.some(a=>t.decoderConfig.codec===a))throw new TypeError(`Video chunk metadata decoder configuration codec string for ProRes must be one of the valid ProRes four-character codes: ${kc.join(", ")}.`);if(e!==null&&iu(t.decoderConfig.codec)!==e)throw new TypeError(`Video chunk metadata decoder configuration codec string '${t.decoderConfig.codec}' does not fit to the track codec '${e}'.`)},aG=["mp4a","mp3","opus","vorbis","flac","ulaw","alaw","pcm","ac-3","ec-3","dts"],Pv=(t,e)=>{if(!t)throw new TypeError("Audio chunk metadata must be provided.");if(typeof t!="object")throw new TypeError("Audio chunk metadata must be an object.");if(!t.decoderConfig)throw new TypeError("Audio chunk metadata must include a decoder configuration.");if(typeof t.decoderConfig!="object")throw new TypeError("Audio chunk metadata decoder configuration must be an object.");if(typeof t.decoderConfig.codec!="string")throw new TypeError("Audio chunk metadata decoder configuration must specify a codec string.");if(!aG.some(a=>t.decoderConfig.codec.startsWith(a)))throw new TypeError("Audio chunk metadata decoder configuration codec string must be a valid audio codec string as specified in the Mediabunny Codec Registry.");if(!Number.isInteger(t.decoderConfig.sampleRate)||t.decoderConfig.sampleRate<=0)throw new TypeError("Audio chunk metadata decoder configuration must specify a valid sampleRate (positive integer).");if(!Number.isInteger(t.decoderConfig.numberOfChannels)||t.decoderConfig.numberOfChannels<=0)throw new TypeError("Audio chunk metadata decoder configuration must specify a valid numberOfChannels (positive integer).");if(t.decoderConfig.description!==void 0&&!Jd(t.decoderConfig.description))throw new TypeError("Audio chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.");if(t.decoderConfig.codec.startsWith("mp4a")&&t.decoderConfig.codec!=="mp4a.69"&&t.decoderConfig.codec!=="mp4a.6B"&&t.decoderConfig.codec!=="mp4a.6b"){if(!["mp4a.40.2","mp4a.40.02","mp4a.40.5","mp4a.40.05","mp4a.40.29","mp4a.67"].includes(t.decoderConfig.codec))throw new TypeError("Audio chunk metadata decoder configuration codec string for AAC must be a valid AAC codec string as specified in https://www.w3.org/TR/webcodecs-aac-codec-registration/.")}else if(t.decoderConfig.codec.startsWith("mp3")||t.decoderConfig.codec.startsWith("mp4a")){if(t.decoderConfig.codec!=="mp3"&&t.decoderConfig.codec!=="mp4a.69"&&t.decoderConfig.codec!=="mp4a.6B"&&t.decoderConfig.codec!=="mp4a.6b")throw new TypeError('Audio chunk metadata decoder configuration codec string for MP3 must be "mp3", "mp4a.69" or "mp4a.6B".')}else if(t.decoderConfig.codec.startsWith("opus")){if(t.decoderConfig.codec!=="opus")throw new TypeError('Audio chunk metadata decoder configuration codec string for Opus must be "opus".');if(t.decoderConfig.description&&t.decoderConfig.description.byteLength<18)throw new TypeError("Audio chunk metadata decoder configuration description, when specified, is expected to be an Identification Header as specified in Section 5.1 of RFC 7845.")}else if(t.decoderConfig.codec.startsWith("vorbis")){if(t.decoderConfig.codec!=="vorbis")throw new TypeError('Audio chunk metadata decoder configuration codec string for Vorbis must be "vorbis".');if(!t.decoderConfig.description)throw new TypeError("Audio chunk metadata decoder configuration for Vorbis must include a description, which is expected to adhere to the format described in https://www.w3.org/TR/webcodecs-vorbis-codec-registration/.")}else if(t.decoderConfig.codec.startsWith("flac")){if(t.decoderConfig.codec!=="flac")throw new TypeError('Audio chunk metadata decoder configuration codec string for FLAC must be "flac".');if(!t.decoderConfig.description||t.decoderConfig.description.byteLength<42)throw new TypeError("Audio chunk metadata decoder configuration for FLAC must include a description, which is expected to adhere to the format described in https://www.w3.org/TR/webcodecs-flac-codec-registration/.")}else if(t.decoderConfig.codec.startsWith("ac-3")||t.decoderConfig.codec.startsWith("ac3")){if(t.decoderConfig.codec!=="ac-3")throw new TypeError('Audio chunk metadata decoder configuration codec string for AC-3 must be "ac-3".')}else if(t.decoderConfig.codec.startsWith("ec-3")||t.decoderConfig.codec.startsWith("eac3")){if(t.decoderConfig.codec!=="ec-3")throw new TypeError('Audio chunk metadata decoder configuration codec string for EC-3 must be "ec-3".')}else if(t.decoderConfig.codec.startsWith("dts")){if(!$m.includes(t.decoderConfig.codec))throw new TypeError(`Audio chunk metadata decoder configuration codec string for DTS must be one of the following four-character codes: ${$m.join(", ")}.`)}else if((t.decoderConfig.codec.startsWith("pcm")||t.decoderConfig.codec.startsWith("ulaw")||t.decoderConfig.codec.startsWith("alaw"))&&!js.includes(t.decoderConfig.codec))throw new TypeError(`Audio chunk metadata decoder configuration codec string for PCM must be one of the supported PCM codecs (${js.join(", ")}).`);if(e!==null&&iu(t.decoderConfig.codec)!==e)throw new TypeError(`Audio chunk metadata decoder configuration codec string '${t.decoderConfig.codec}' does not fit to the track codec '${e}'.`)},nG=t=>{if(!t)throw new TypeError("Subtitle metadata must be provided.");if(typeof t!="object")throw new TypeError("Subtitle metadata must be an object.");if(!t.config)throw new TypeError("Subtitle metadata must include a config object.");if(typeof t.config!="object")throw new TypeError("Subtitle metadata config must be an object.");if(typeof t.config.description!="string")throw new TypeError("Subtitle metadata config description must be a string.")};const Nv=new Uint8Array(0);class Js{constructor(e,a,n,s,r=-1,o,l){if(this.data=e,this.type=a,this.timestamp=n,this.duration=s,this.sequenceNumber=r,e===Nv&&o===void 0)throw new Error("Internal error: byteLength must be explicitly provided when constructing metadata-only packets.");if(o===void 0&&(o=e.byteLength),!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(a!=="key"&&a!=="delta")throw new TypeError('type must be either "key" or "delta".');if(!Number.isFinite(n))throw new TypeError("timestamp must be a number.");if(!Number.isFinite(s)||s<0)throw new TypeError("duration must be a non-negative number.");if(!Number.isFinite(r))throw new TypeError("sequenceNumber must be a number.");if(!Number.isInteger(o)||o<0)throw new TypeError("byteLength must be a non-negative integer.");if(l!==void 0&&(typeof l!="object"||!l))throw new TypeError("sideData, when provided, must be an object.");if(l?.alpha!==void 0&&!(l.alpha instanceof Uint8Array))throw new TypeError("sideData.alpha, when provided, must be a Uint8Array.");if(l?.alphaByteLength!==void 0&&(!Number.isInteger(l.alphaByteLength)||l.alphaByteLength<0))throw new TypeError("sideData.alphaByteLength, when provided, must be a non-negative integer.");this.byteLength=o,this.sideData=l??{},this.sideData.alpha&&this.sideData.alphaByteLength===void 0&&(this.sideData.alphaByteLength=this.sideData.alpha.byteLength)}get isMetadataOnly(){return this.data===Nv}get microsecondTimestamp(){return Math.trunc(Dr*this.timestamp)}get microsecondDuration(){return Math.trunc(Dr*this.duration)}toEncodedVideoChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if(typeof EncodedVideoChunk>"u")throw new Error("EncodedVideoChunk is not available in this environment.");return new EncodedVideoChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}alphaToEncodedVideoChunk(e=this.type){if(!this.sideData.alpha)throw new TypeError("This packet does not contain alpha side data.");if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if(typeof EncodedVideoChunk>"u")throw new Error("EncodedVideoChunk is not available in this environment.");return new EncodedVideoChunk({data:this.sideData.alpha,type:e,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}toEncodedAudioChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to an audio chunk.");if(typeof EncodedAudioChunk>"u")throw new Error("EncodedAudioChunk is not available in this environment.");return new EncodedAudioChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}static fromEncodedChunk(e,a){if(!(e instanceof EncodedVideoChunk||e instanceof EncodedAudioChunk))throw new TypeError("chunk must be an EncodedVideoChunk or EncodedAudioChunk.");const n=new Uint8Array(e.byteLength);return e.copyTo(n),new Js(n,e.type,e.timestamp/1e6,(e.duration??0)/1e6,void 0,void 0,a)}clone(e){if(e!==void 0&&(typeof e!="object"||e===null))throw new TypeError("options, when provided, must be an object.");if(e?.data!==void 0&&!(e.data instanceof Uint8Array))throw new TypeError("options.data, when provided, must be a Uint8Array.");if(e?.type!==void 0&&e.type!=="key"&&e.type!=="delta")throw new TypeError('options.type, when provided, must be either "key" or "delta".');if(e?.timestamp!==void 0&&!Number.isFinite(e.timestamp))throw new TypeError("options.timestamp, when provided, must be a number.");if(e?.duration!==void 0&&!Number.isFinite(e.duration))throw new TypeError("options.duration, when provided, must be a number.");if(e?.sequenceNumber!==void 0&&!Number.isFinite(e.sequenceNumber))throw new TypeError("options.sequenceNumber, when provided, must be a number.");if(e?.sideData!==void 0&&(typeof e.sideData!="object"||e.sideData===null))throw new TypeError("options.sideData, when provided, must be an object.");return new Js(e?.data??this.data,e?.type??this.type,e?.timestamp??this.timestamp,e?.duration??this.duration,e?.sequenceNumber??this.sequenceNumber,this.byteLength,e?.sideData??this.sideData)}}const sG=t=>{let a=(t.hasVideo?"video/":t.hasAudio?"audio/":"application/")+(t.isQuickTime?"quicktime":"mp4");if(t.codecStrings.length>0){const n=[...new Set(t.codecStrings)];a+=`; codecs="${n.join(", ")}"`}return a};const qm=8,Ov=16;const rG=7,oG=9,Iv=t=>{const e=t.filePos,a=GG(t,9),n=new Ya(a);if(n.readBits(12)!==4095||(n.skipBits(1),n.readBits(2)!==0))return null;const o=n.readBits(1),l=n.readBits(2)+1,u=n.readBits(4);if(u===15)return null;n.skipBits(1);const p=n.readBits(3);if(p===0)throw new Error("ADTS frames with channel configuration 0 are not supported.");n.skipBits(1),n.skipBits(1),n.skipBits(1),n.skipBits(1);const g=n.readBits(13);n.skipBits(11);const h=n.readBits(2)+1;if(h!==1)throw new Error("ADTS frames with more than one AAC frame are not supported.");let f=null;return o===1?t.filePos-=2:f=n.readBits(16),{objectType:l,samplingFrequencyIndex:u,channelConfiguration:p,frameLength:g,numberOfAacFrames:h,crcCheck:f,startPos:e}};var lG=function(t,e,a){if(e!=null){if(typeof e!="object"&&typeof e!="function")throw new TypeError("Object expected.");var n,s;if(a){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=e[Symbol.asyncDispose]}if(n===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=e[Symbol.dispose],a&&(s=n)}if(typeof n!="function")throw new TypeError("Object not disposable.");s&&(n=function(){try{s.call(this)}catch(r){return Promise.reject(r)}}),t.stack.push({value:e,dispose:n,async:a})}else a&&t.stack.push({async:!0});return e},cG=(function(t){return function(e){function a(o){e.error=e.hasError?new t(o,e.error,"An error was suppressed during disposal."):o,e.hasError=!0}var n,s=0;function r(){for(;n=e.stack.pop();)try{if(!n.async&&s===1)return s=0,e.stack.push(n),Promise.resolve().then(r);if(n.dispose){var o=n.dispose.call(n.value);if(n.async)return s|=2,Promise.resolve(o).then(r,function(l){return a(l),r()})}else s|=1}catch(l){a(l)}if(s===1)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}return r()}})(typeof SuppressedError=="function"?SuppressedError:function(t,e,a){var n=new Error(a);return n.name="SuppressedError",n.error=t,n.suppressed=e,n});X$();let Lv=-1/0,Dv=-1/0,xc=null;typeof FinalizationRegistry<"u"&&(xc=new FinalizationRegistry(t=>{const e=performance.now();t.type==="video"?(e-Lv>=1e3&&(Fa._error("A VideoSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your VideoSamples as soon as you're done using them."),Lv=e),typeof VideoFrame<"u"&&t.data instanceof VideoFrame&&t.data.close()):(e-Dv>=1e3&&(Fa._error("An AudioSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your AudioSamples as soon as you're done using them."),Dv=e),typeof AudioData<"u"&&t.data instanceof AudioData&&t.data.close())}));class Ao{constructor(){this._referenceCount=0,this._lastAllocationBuffer=null}}const Gm=["I420","I420P10","I420P12","I420A","I420AP10","I420AP12","I422","I422P10","I422P12","I422A","I422AP10","I422AP12","I444","I444P10","I444P12","I444A","I444AP10","I444AP12","NV12","RGBA","RGBX","BGRA","BGRX"],dG=new Set(Gm);class Jn{get codedWidth(){return this.visibleRect.width}get codedHeight(){return this.visibleRect.height}get displayWidth(){return this.rotation%180===0?this.squarePixelWidth:this.squarePixelHeight}get displayHeight(){return this.rotation%180===0?this.squarePixelHeight:this.squarePixelWidth}get microsecondTimestamp(){return Math.trunc(Dr*this.timestamp)}get microsecondDuration(){return Math.trunc(Dr*this.duration)}get hasAlpha(){return this.format&&this.format.includes("A")}constructor(e,a){if(this._closed=!1,e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer||ArrayBuffer.isView(e)){if(!a||typeof a!="object")throw new TypeError("init must be an object.");if(a.format===void 0||!dG.has(a.format))throw new TypeError("init.format must be one of: "+Gm.join(", "));if(!Number.isInteger(a.codedWidth)||a.codedWidth<=0)throw new TypeError("init.codedWidth must be a positive integer.");if(!Number.isInteger(a.codedHeight)||a.codedHeight<=0)throw new TypeError("init.codedHeight must be a positive integer.");if(a.rotation!==void 0&&![0,90,180,270].includes(a.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(a.flip!==void 0&&typeof a.flip!="boolean")throw new TypeError("init.flip, when provided, must be a boolean.");if(!Number.isFinite(a.timestamp))throw new TypeError("init.timestamp must be a number.");if(a.duration!==void 0&&(!Number.isFinite(a.duration)||a.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if(a.layout!==void 0){if(!Array.isArray(a.layout))throw new TypeError("init.layout, when provided, must be an array.");for(const r of a.layout){if(!r||typeof r!="object"||Array.isArray(r))throw new TypeError("Each entry in init.layout must be an object.");if(!Number.isInteger(r.offset)||r.offset<0)throw new TypeError("plane.offset must be a non-negative integer.");if(!Number.isInteger(r.stride)||r.stride<0)throw new TypeError("plane.stride must be a non-negative integer.")}}if(a.visibleRect!==void 0&&vm(a.visibleRect,"init.visibleRect"),a.displayWidth!==void 0&&(!Number.isInteger(a.displayWidth)||a.displayWidth<=0))throw new TypeError("init.displayWidth, when provided, must be a positive integer.");if(a.displayHeight!==void 0&&(!Number.isInteger(a.displayHeight)||a.displayHeight<=0))throw new TypeError("init.displayHeight, when provided, must be a positive integer.");if(a.displayWidth!==void 0!=(a.displayHeight!==void 0))throw new TypeError("init.displayWidth and init.displayHeight must be either both provided or both omitted.");this.format=a.format,this.rotation=a.rotation??0,this.flip=a.flip??!1,this.timestamp=a.timestamp,this.duration=a.duration??0;const n=a.layout??mG(a.format,a.codedWidth,a.codedHeight);let s=a.colorSpace??null;s===null&&(this.format==="RGBA"||this.format==="RGBX"||this.format==="BGRA"||this.format==="BGRX"?s={primaries:"bt709",transfer:"iec61966-2-1",matrix:"rgb",fullRange:!0}:s={primaries:"bt709",transfer:"bt709",matrix:"bt709",fullRange:!1}),this.visibleRect={left:a.visibleRect?.left??0,top:a.visibleRect?.top??0,width:a.visibleRect?.width??a.codedWidth,height:a.visibleRect?.height??a.codedHeight},a.displayWidth!==void 0?(this.squarePixelWidth=this.rotation%180===0?a.displayWidth:a.displayHeight,this.squarePixelHeight=this.rotation%180===0?a.displayHeight:a.displayWidth):(this.squarePixelWidth=this.visibleRect.width,this.squarePixelHeight=this.visibleRect.height),this._data=a._doNotCopy?ys(e):ys(e).slice(),this._layout=n,this.colorSpace=new Fm(s)}else if(typeof VideoFrame<"u"&&e instanceof VideoFrame){if(a?.rotation!==void 0&&![0,90,180,270].includes(a.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(a?.flip!==void 0&&typeof a.flip!="boolean")throw new TypeError("init.flip, when provided, must be a boolean.");if(a?.timestamp!==void 0&&!Number.isFinite(a?.timestamp))throw new TypeError("init.timestamp, when provided, must be a number.");if(a?.duration!==void 0&&(!Number.isFinite(a.duration)||a.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");a?.visibleRect!==void 0&&vm(a.visibleRect,"init.visibleRect"),this._data=e,this._layout=null,this.format=e.format,this.visibleRect={left:e.visibleRect?.x??0,top:e.visibleRect?.y??0,width:e.visibleRect?.width??e.codedWidth,height:e.visibleRect?.height??e.codedHeight},this.rotation=a?.rotation??0,this.flip=a?.flip??!1,this.squarePixelWidth=e.displayWidth,this.squarePixelHeight=e.displayHeight,this.timestamp=a?.timestamp??e.timestamp/1e6,this.duration=a?.duration??(e.duration??0)/1e6,this.colorSpace=new Fm(e.colorSpace)}else if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof SVGImageElement<"u"&&e instanceof SVGImageElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas){if(!a||typeof a!="object")throw new TypeError("init must be an object.");if(a.rotation!==void 0&&![0,90,180,270].includes(a.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(a.flip!==void 0&&typeof a.flip!="boolean")throw new TypeError("init.flip, when provided, must be a boolean.");if(!Number.isFinite(a.timestamp))throw new TypeError("init.timestamp must be a number.");if(a.duration!==void 0&&(!Number.isFinite(a.duration)||a.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if(a.visibleRect!==void 0&&vm(a.visibleRect,"init.visibleRect"),typeof VideoFrame<"u")return new Jn(new VideoFrame(e,{timestamp:Math.trunc(a.timestamp*Dr),duration:Math.trunc((a.duration??0)*Dr)||void 0,visibleRect:a.visibleRect&&{x:a.visibleRect.left,y:a.visibleRect.top,width:a.visibleRect.width,height:a.visibleRect.height}}),a);let n=0,s=0;if("naturalWidth"in e?(n=e.naturalWidth,s=e.naturalHeight):"videoWidth"in e?(n=e.videoWidth,s=e.videoHeight):"width"in e&&(n=Number(e.width),s=Number(e.height)),!n||!s)throw new TypeError("Could not determine dimensions.");const r=a.visibleRect??{left:0,top:0,width:n,height:s},o=new OffscreenCanvas(r.width,r.height),l=o.getContext("2d",{alpha:hv(),willReadFrequently:!0});if(!l)throw new Error("OffscreenCanvas must have support for the '2d' context in order to create a VideoSample from this data.");l.drawImage(e,-r.left,-r.top),this._data=o,this._layout=null,this.format="RGBX",this.visibleRect={left:0,top:0,width:r.width,height:r.height},this.squarePixelWidth=r.width,this.squarePixelHeight=r.height,this.rotation=a.rotation??0,this.flip=a.flip??!1,this.timestamp=a.timestamp,this.duration=a.duration??0,this.colorSpace=new Fm({matrix:"rgb",primaries:"bt709",transfer:"iec61966-2-1",fullRange:!0})}else if(e instanceof Ao){if(!a||typeof a!="object")throw new TypeError("init must be an object.");if(a.rotation!==void 0&&![0,90,180,270].includes(a.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(a.flip!==void 0&&typeof a.flip!="boolean")throw new TypeError("init.flip, when provided, must be a boolean.");if(!Number.isFinite(a.timestamp))throw new TypeError("init.timestamp must be a number.");if(a.duration!==void 0&&(!Number.isFinite(a.duration)||a.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if(this._data=e,e._referenceCount++,this.format=e.getFormat(),this.format!==null&&!Gm.includes(this.format))throw new TypeError("getFormat() must return a VideoSamplePixelFormat or null.");if(this.visibleRect={left:0,top:0,width:e.getCodedWidth(),height:e.getCodedHeight()},!Number.isInteger(this.visibleRect.width)||this.visibleRect.width<=0)throw new TypeError("getCodedWidth() must return a positive integer.");if(!Number.isInteger(this.visibleRect.height)||this.visibleRect.height<=0)throw new TypeError("getCodedHeight() must return a positive integer.");if(this.squarePixelWidth=e.getSquarePixelWidth(),!Number.isInteger(this.squarePixelWidth)||this.squarePixelWidth<=0)throw new TypeError("getSquarePixelWidth() must return a positive integer.");if(this.squarePixelHeight=e.getSquarePixelHeight(),!Number.isInteger(this.squarePixelHeight)||this.squarePixelHeight<=0)throw new TypeError("getSquarePixelHeight() must return a positive integer.");this.rotation=a.rotation??0,this.flip=a.flip??!1,this.timestamp=a.timestamp,this.duration=a.duration??0,this.colorSpace=e.getColorSpace()}else throw new TypeError("Invalid data type: Must be a BufferSource, CanvasImageSource, or VideoSampleResource.");this.encodeOptions=a?.encodeOptions??{},this.pixelAspectRatio=bv({num:this.squarePixelWidth*this.codedHeight,den:this.squarePixelHeight*this.codedWidth}),xc?.register(this,{type:"video",data:this._data},this)}clone(){if(this._closed)throw new Error("VideoSample is closed.");return ze(this._data!==null),this._data instanceof Ao?new Jn(this._data,{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip,encodeOptions:this.encodeOptions}):Tc(this._data)?new Jn(this._data.clone(),{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip,encodeOptions:this.encodeOptions}):this._data instanceof Uint8Array?(ze(this._layout),new Jn(this._data,{format:this.format,layout:this._layout,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation,flip:this.flip,visibleRect:this.visibleRect,displayWidth:this.displayWidth,displayHeight:this.displayHeight,encodeOptions:this.encodeOptions,_doNotCopy:!0})):new Jn(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation,flip:this.flip,visibleRect:this.visibleRect,displayWidth:this.displayWidth,displayHeight:this.displayHeight,encodeOptions:this.encodeOptions})}close(){this._closed||(xc?.unregister(this),this._data instanceof Ao?(this._data._referenceCount--,this._data._referenceCount===0&&this._data.close()):Tc(this._data)?this._data.close():this._data=null,this._closed=!0)}allocationSize(e={}){if(Qv(e),this._closed)throw new Error("VideoSample is closed.");if((e.format??this.format)==null)throw new Error("Cannot get allocation size when format is null.");return Tc(this._data)?this._data.allocationSize(e):Kv(this,e).allocationSize}async copyTo(e,a={}){if(!Jd(e))throw new TypeError("destination must be an ArrayBuffer or an ArrayBuffer view.");if(Qv(a),this._closed)throw new Error("VideoSample is closed.");if((a.format??this.format)==null)throw new Error("Cannot copy video sample data when format is null.");if(ze(this._data!==null),Tc(this._data))return this._data.copyTo(e,a);if(a.format&&!["RGBA","RGBX","BGRA","BGRX"].includes(this.format)&&["RGBA","RGBX","BGRA","BGRX"].includes(a.format))if(this._data instanceof Ao){const p={stack:[],error:void 0,hasError:!1};try{const g=lG(p,await this._data.toRgbSample({timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip},a.colorSpace??"srgb"),!1);if(!(g instanceof Jn))throw new TypeError("toRgbSample() must return a VideoSample.");if(!["RGBA","RGBX","BGRA","BGRX"].includes(g.format))throw new Error(`Sample returned by toRgbSample was expected to have an RGB format, got '${g.format}' instead.`);return await g.copyTo(e,a)}catch(g){p.error=g,p.hasError=!0}finally{cG(p)}}else{if(typeof VideoFrame>"u")throw new Error("For this sample, converting from a non-RGB to an RGB format requires VideoFrame to be defined.");const p=this.toVideoFrame(),g=await p.copyTo(e,a);return p.close(),g}const n=Kv(this,a);ze(this.format);const s=ys(e);if(s.byteLength!(g.data instanceof Uint8Array)||!Number.isInteger(g.stride)||g.stride<0))throw new TypeError('getDataPlanes() must return an array of objects with a Uint8Array "data" property and a non-negative integer "stride" property.');o=p}else if(this._data instanceof Uint8Array)ze(this._layout),ze(this._layout.length===r.length),o=this._layout.map((p,g)=>{const h=Math.ceil(this.codedHeight/r[g].heightDivisor);return{data:this._data.subarray(p.offset,p.offset+p.stride*h),stride:p.stride}});else{const g=this._data.getContext("2d");ze(g);const h=g.getImageData(0,0,this.codedWidth,this.codedHeight);o=[{data:ys(h.data),stride:4*this.codedWidth}]}const l=[],u=r.length;for(let p=0;pf.byteLength)throw new Error("Source buffer OOB read.");if(d+c>s.byteLength)throw new Error("Destination buffer OOB write.");const v=f.subarray(m,m+c);s.set(v,d),m+=h,d+=g.destinationStride}l.push(_)}if(a.format!==void 0){const p=this.format.startsWith("RGB")!==a.format.startsWith("RGB"),g=this.format.includes("X")&&a.format.includes("A");if(p||g)for(let h=0;ho+l.data.byteLength,0),n=new Uint8Array(a);let s=0;const r=[];for(const o of e)n.set(o.data,s),r.push(s),s+=o.data.byteLength;return new VideoFrame(n,{format:this.format,layout:e.map((o,l)=>({offset:r[l],stride:o.stride})),codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration,colorSpace:this.colorSpace,visibleRect:this.visibleRect,displayWidth:this.squarePixelWidth,displayHeight:this.squarePixelHeight})}else return Tc(this._data)?new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0}):this._data instanceof Uint8Array?(ze(this._layout),new VideoFrame(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,layout:this._layout,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0,colorSpace:this.colorSpace,visibleRect:this.visibleRect,displayWidth:this.squarePixelWidth,displayHeight:this.squarePixelHeight})):new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0})}draw(e,a,n,s,r,o,l,u,p){let g=0,h=0,f=this.displayWidth,m=this.displayHeight,d=0,c=0,_=this.displayWidth,b=this.displayHeight;if(o!==void 0?(g=a,h=n,f=s,m=r,d=o,c=l,u!==void 0?(_=u,b=p):(_=f,b=m)):(d=a,c=n,s!==void 0&&(_=s,b=r)),!(typeof CanvasRenderingContext2D<"u"&&e instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<"u"&&e instanceof OffscreenCanvasRenderingContext2D))throw new TypeError("context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.");if(!Number.isFinite(g))throw new TypeError("sx must be a number.");if(!Number.isFinite(h))throw new TypeError("sy must be a number.");if(!Number.isFinite(f)||f<0)throw new TypeError("sWidth must be a non-negative number.");if(!Number.isFinite(m)||m<0)throw new TypeError("sHeight must be a non-negative number.");if(!Number.isFinite(d))throw new TypeError("dx must be a number.");if(!Number.isFinite(c))throw new TypeError("dy must be a number.");if(!Number.isFinite(_)||_<0)throw new TypeError("dWidth must be a non-negative number.");if(!Number.isFinite(b)||b<0)throw new TypeError("dHeight must be a non-negative number.");if(this._closed)throw new Error("VideoSample is closed.");({sx:g,sy:h,sWidth:f,sHeight:m}=this._unmapSourceRegion(g,h,f,m,this.rotation,this.flip));const v=this.toCanvasImageSource();e.save();const k=d+_/2,y=c+b/2;e.translate(k,y),this.flip&&e.scale(-1,1),e.rotate(this.rotation*Math.PI/180);const T=this.rotation%180===0?1:_/b;e.scale(1/T,T),e.drawImage(v,g,h,f,m,-_/2,-b/2,_,b),e.restore()}drawWithFit(e,a){if(!(typeof CanvasRenderingContext2D<"u"&&e instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<"u"&&e instanceof OffscreenCanvasRenderingContext2D))throw new TypeError("context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.");if(!a||typeof a!="object")throw new TypeError("options must be an object.");if(!["fill","contain","cover"].includes(a.fit))throw new TypeError("options.fit must be 'fill', 'contain', or 'cover'.");if(a.rotation!==void 0&&![0,90,180,270].includes(a.rotation))throw new TypeError("options.rotation, when provided, must be 0, 90, 180, or 270.");if(a.flip!==void 0&&typeof a.flip!="boolean")throw new TypeError("options.flip, when provided, must be a boolean.");a.crop!==void 0&&Am(a.crop,"options.");const n=e.canvas.width,s=e.canvas.height,r=a.rotation??this.rotation,o=a.flip??this.flip,[l,u]=r%180===0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth];let p=a.crop;p&&(p=Wv(p,l,u));let g,h,f,m;const{sx:d,sy:c,sWidth:_,sHeight:b}=this._unmapSourceRegion(a.crop?.left??0,a.crop?.top??0,a.crop?.width??l,a.crop?.height??u,r,o);if(a.fit==="fill")g=0,h=0,f=n,m=s;else{const[k,y]=a.crop?[a.crop.width,a.crop.height]:[l,u],T=a.fit==="contain"?Math.min(n/k,s/y):Math.max(n/k,s/y);f=k*T,m=y*T,g=(n-f)/2,h=(s-m)/2}e.save();const v=r%180===0?1:f/m;e.translate(n/2,s/2),o&&e.scale(-1,1),e.rotate(r*Math.PI/180),e.scale(1/v,v),e.translate(-n/2,-s/2),e.drawImage(this.toCanvasImageSource(),d,c,_,b,g,h,f,m),e.restore()}_unmapSourceRegion(e,a,n,s,r,o){return o&&(e=(r%180===0?this.squarePixelWidth:this.squarePixelHeight)-e-n),r===90?[e,a,n,s]=[a,this.squarePixelHeight-e-n,s,n]:r===180?[e,a]=[this.squarePixelWidth-e-n,this.squarePixelHeight-a-s]:r===270&&([e,a,n,s]=[this.squarePixelWidth-a-s,e,s,n]),{sx:e,sy:a,sWidth:n,sHeight:s}}_drawWithFitAndMipmapping(e,a,n){const s=e.width,r=e.height,[o,l]=n.rotation%180===0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth],u=n.crop?n.crop.width:o,p=n.crop?n.crop.height:l;let g=0;2*s0?Hv(h,f):{canvas:e,context:a,isNew:n.targetIsFresh};d.imageSmoothingQuality="high",n.fillBlack?(d.fillStyle="black",d.fillRect(0,0,h,f)):c||d.clearRect(0,0,h,f),this.drawWithFit(d,{fit:n.fit,rotation:n.rotation,flip:n.flip,crop:n.crop}),d.globalCompositeOperation="copy";for(let _=g;_>1;_--){const b=s*2**_,v=r*2**_;d.drawImage(m,0,0,b,v,0,0,b/2,v/2)}d.globalCompositeOperation="source-over",g>0&&(a.imageSmoothingQuality="high",a.globalCompositeOperation="copy",a.drawImage(m,0,0,2*s,2*r,0,0,s,r),a.globalCompositeOperation="source-over")}toCanvasImageSource(){if(this._closed)throw new Error("VideoSample is closed.");if(ze(this._data!==null),this._data instanceof Ao||this._data instanceof Uint8Array){const e=this.toVideoFrame();return queueMicrotask(()=>e.close()),e}else return this._data}async transform(e){if(!e||typeof e!="object")throw new TypeError("options must be an object.");if(e.width!==void 0&&(!Number.isInteger(e.width)||e.width<=0))throw new TypeError("options.width, when provided, must be a positive integer.");if(e.height!==void 0&&(!Number.isInteger(e.height)||e.height<=0))throw new TypeError("options.height, when provided, must be a positive integer.");if(e.roundDimensionsTo!==void 0&&(!Number.isInteger(e.roundDimensionsTo)||e.roundDimensionsTo<=0))throw new TypeError("options.roundDimensionsTo, when provided, must be a positive integer.");if(e.fit!==void 0&&!["fill","contain","cover"].includes(e.fit))throw new TypeError('options.fit, when provided, must be one of "fill", "contain", or "cover".');if(e.width!==void 0&&e.height!==void 0&&e.fit===void 0)throw new TypeError("When both options.width and options.height are provided, options.fit must also be provided.");if(e.rotate!==void 0&&![0,90,180,270].includes(e.rotate))throw new TypeError("options.rotate, when provided, must be 0, 90, 180 or 270.");if(e.flip!==void 0&&typeof e.flip!="boolean")throw new TypeError("options.flip, when provided, must be a boolean.");if(e.crop!==void 0&&Am(e.crop,"options."),e.alpha!==void 0&&!["keep","discard"].includes(e.alpha))throw new TypeError("options.alpha, when provided, must be 'keep' or 'discard'.");const{rotation:a,flip:n}=B$(this.rotation,this.flip,e.rotate??0,e.flip??!1),[s,r]=a%180===0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth];let o=e.crop;o&&(o=Wv(o,s,r));const l=o?o.width:s,u=o?o.height:r,p=l/u;let g,h;e.width!==void 0&&e.height===void 0?(g=e.width,h=g/p):e.width===void 0&&e.height!==void 0?(h=e.height,g=h*p):e.width!==void 0&&e.height!==void 0?(g=e.width,h=e.height):(g=l,h=u),g=fv(g,e.roundDimensionsTo??1),h=fv(h,e.roundDimensionsTo??1);const f={width:g,height:h,fit:e.fit??"fill",rotation:a,flip:n,crop:o??{left:0,top:0,width:s,height:r},alpha:e.alpha??"keep"};for(const _ of uG){let b=_(this,f);if(Vr(b)&&(b=await b),b!==null)return b}const{canvas:m,context:d,isNew:c}=Hv(f.width,f.height);return this._drawWithFitAndMipmapping(m,d,{fit:f.fit,rotation:f.rotation,flip:f.flip,crop:f.crop,targetIsFresh:c,fillBlack:f.alpha==="discard"}),new Jn(m,{timestamp:this.timestamp,duration:this.duration,rotation:0,flip:!1})}setRotation(e){if(![0,90,180,270].includes(e))throw new TypeError("newRotation must be 0, 90, 180, or 270.");this.rotation=e}setFlip(e){if(typeof e!="boolean")throw new TypeError("newFlip must be a boolean.");this.flip=e}setTimestamp(e){if(!Number.isFinite(e))throw new TypeError("newTimestamp must be a number.");this.timestamp=e}setDuration(e){if(!Number.isFinite(e)||e<0)throw new TypeError("newDuration must be a non-negative number.");this.duration=e}setEncodeOptions(e){if(!e||typeof e!="object")throw new TypeError("newEncodeOptions must be an object.");this.encodeOptions=e}[Symbol.dispose](){this.close()}}const uG=[],fG=3,Sc=[];let Vv=0;const Hv=(t,e)=>{for(const s of Sc)if(s.canvas.width===t&&s.canvas.height===e)return s.age=Vv++,{canvas:s.canvas,context:s.context,isNew:!1};let a;if(typeof OffscreenCanvas<"u")a=new OffscreenCanvas(t,e);else{if(typeof window>"u"||typeof document>"u")throw new Error("Cannot transform VideoSamples in this environment. Either run in an environment with OffscreenCanvas or HTMLCanvasElement, or supply a custom VideoSample transformer using registerVideoSampleTransformer().");a=document.createElement("canvas"),a.width=t,a.height=e}const n=a.getContext("2d",{alpha:!0,willReadFrequently:!1});if(!n)throw new Error("The '2d' canvas context is required to transform VideoSamples. Register a custom transformer using registerVideoSampleTransformer to work around this limitation.");return Sc.length>=fG&&Sc.splice(Z$(Sc,s=>s.age),1),Sc.push({canvas:a,context:n,age:Vv++}),{canvas:a,context:n,isNew:!0}};class Fm{constructor(e){if(e!==void 0){if(!e||typeof e!="object")throw new TypeError("init.colorSpace, when provided, must be an object.");const a=Object.keys(Kd);if(e.primaries!=null&&!a.includes(e.primaries))throw new TypeError(`init.colorSpace.primaries, when provided, must be one of ${a.join(", ")}.`);const n=Object.keys(Yd);if(e.transfer!=null&&!n.includes(e.transfer))throw new TypeError(`init.colorSpace.transfer, when provided, must be one of ${n.join(", ")}.`);const s=Object.keys(Xd);if(e.matrix!=null&&!s.includes(e.matrix))throw new TypeError(`init.colorSpace.matrix, when provided, must be one of ${s.join(", ")}.`);if(e.fullRange!=null&&typeof e.fullRange!="boolean")throw new TypeError("init.colorSpace.fullRange, when provided, must be a boolean.")}this.primaries=e?.primaries??null,this.transfer=e?.transfer??null,this.matrix=e?.matrix??null,this.fullRange=e?.fullRange??null}toJSON(){return{primaries:this.primaries,transfer:this.transfer,matrix:this.matrix,fullRange:this.fullRange}}}const Tc=t=>typeof VideoFrame<"u"&&t instanceof VideoFrame,Wv=(t,e,a)=>{const n=Math.min(t.left,e),s=Math.min(t.top,a),r=Math.min(t.width,e-n),o=Math.min(t.height,a-s);return ze(r>=0),ze(o>=0),{left:n,top:s,width:r,height:o}},Am=(t,e)=>{if(!t||typeof t!="object")throw new TypeError(e+"crop, when provided, must be an object.");if(!Number.isInteger(t.left)||t.left<0)throw new TypeError(e+"crop.left must be a non-negative integer.");if(!Number.isInteger(t.top)||t.top<0)throw new TypeError(e+"crop.top must be a non-negative integer.");if(!Number.isInteger(t.width)||t.width<0)throw new TypeError(e+"crop.width must be a non-negative integer.");if(!Number.isInteger(t.height)||t.height<0)throw new TypeError(e+"crop.height must be a non-negative integer.")},Qv=t=>{if(!t||typeof t!="object")throw new TypeError("options must be an object.");if(t.colorSpace!==void 0&&!["display-p3","srgb"].includes(t.colorSpace))throw new TypeError("options.colorSpace, when provided, must be 'display-p3' or 'srgb'.");if(t.format!==void 0&&typeof t.format!="string")throw new TypeError("options.format, when provided, must be a string.");if(t.layout!==void 0){if(!Array.isArray(t.layout))throw new TypeError("options.layout, when provided, must be an array.");for(const e of t.layout){if(!e||typeof e!="object")throw new TypeError("Each entry in options.layout must be an object.");if(!Number.isInteger(e.offset)||e.offset<0)throw new TypeError("plane.offset must be a non-negative integer.");if(!Number.isInteger(e.stride)||e.stride<0)throw new TypeError("plane.stride must be a non-negative integer.")}}if(t.rect!==void 0){if(!t.rect||typeof t.rect!="object")throw new TypeError("options.rect, when provided, must be an object.");if(t.rect.x!==void 0&&(!Number.isInteger(t.rect.x)||t.rect.x<0))throw new TypeError("options.rect.x, when provided, must be a non-negative integer.");if(t.rect.y!==void 0&&(!Number.isInteger(t.rect.y)||t.rect.y<0))throw new TypeError("options.rect.y, when provided, must be a non-negative integer.");if(t.rect.width!==void 0&&(!Number.isInteger(t.rect.width)||t.rect.width<0))throw new TypeError("options.rect.width, when provided, must be a non-negative integer.");if(t.rect.height!==void 0&&(!Number.isInteger(t.rect.height)||t.rect.height<0))throw new TypeError("options.rect.height, when provided, must be a non-negative integer.")}},mG=(t,e,a)=>{const n=au(t),s=[];let r=0;for(const o of n){const l=Math.ceil(e/o.widthDivisor),u=Math.ceil(a/o.heightDivisor),p=l*o.sampleBytes,g=p*u;s.push({offset:r,stride:p}),r+=g}return s},au=t=>{const e=(a,n,s,r,o)=>{const l=[{sampleBytes:a,widthDivisor:1,heightDivisor:1},{sampleBytes:n,widthDivisor:s,heightDivisor:r},{sampleBytes:n,widthDivisor:s,heightDivisor:r}];return o&&l.push({sampleBytes:a,widthDivisor:1,heightDivisor:1}),l};switch(t){case"I420":return e(1,1,2,2,!1);case"I420P10":case"I420P12":return e(2,2,2,2,!1);case"I420A":return e(1,1,2,2,!0);case"I420AP10":case"I420AP12":return e(2,2,2,2,!0);case"I422":return e(1,1,2,1,!1);case"I422P10":case"I422P12":return e(2,2,2,1,!1);case"I422A":return e(1,1,2,1,!0);case"I422AP10":case"I422AP12":return e(2,2,2,1,!0);case"I444":return e(1,1,1,1,!1);case"I444P10":case"I444P12":return e(2,2,1,1,!1);case"I444A":return e(1,1,1,1,!0);case"I444AP10":case"I444AP12":return e(2,2,1,1,!0);case"NV12":return[{sampleBytes:1,widthDivisor:1,heightDivisor:1},{sampleBytes:2,widthDivisor:2,heightDivisor:2}];case"RGBA":case"RGBX":case"BGRA":case"BGRX":return[{sampleBytes:4,widthDivisor:1,heightDivisor:1}];default:qo(t),ze(!1)}},Kv=(t,e)=>{const a={left:0,top:0,width:t.codedWidth,height:t.codedHeight},n=e.rect,s=pG(a,n,t.codedWidth,t.codedHeight,t.format),r=e.layout;let o;if(!e.format||e.format===t.format)o=t.format;else if(["RGBA","RGBX","BGRA","BGRX"].includes(e.format))o=e.format;else throw new Error("NotSupportedError: Invalid destination format.");return hG(s,o,r)},pG=(t,e,a,n,s)=>{const r={...t};if(e!==void 0){if(e.width===0||e.height===0)throw new TypeError("visibleRect dimensions cannot be zero.");if((e.x||0)+(e.width||0)>a)throw new TypeError("visibleRect exceeds codedWidth.");if((e.y||0)+(e.height||0)>n)throw new TypeError("visibleRect exceeds codedHeight.");r.x=e.x||0,r.y=e.y||0,r.width=e.width||0,r.height=e.height||0}if(!gG(s,r))throw new TypeError("visibleRect alignment is invalid for the format.");return r},gG=(t,e)=>{if(t===null)return!0;const a=au(t);for(let n=0;n{const n=au(e),s=n.length;if(a!==void 0&&a.length!==s)throw new TypeError(`Layout must have ${s} planes.`);let r=0;const o=[],l=[];for(let u=0;u4294967295)throw new TypeError("Allocation size exceeds limit.");l.push(c),r=Math.max(r,c);for(let _=0;_ 0.");if(!Number.isInteger(e.numberOfChannels)||e.numberOfChannels===0)throw new TypeError("Invalid AudioDataInit: numberOfChannels must be an integer > 0.");if(!Number.isFinite(e?.timestamp))throw new TypeError("init.timestamp must be a number.");const a=e.data.byteLength/(Hr(e.format)*e.numberOfChannels);if(!Number.isInteger(a))throw new TypeError("Invalid AudioDataInit: data size is not a multiple of frame size.");this.format=e.format,this.sampleRate=e.sampleRate,this.numberOfFrames=a,this.numberOfChannels=e.numberOfChannels,this.timestamp=e.timestamp,this.duration=a/e.sampleRate;let n;if(e.data instanceof ArrayBuffer)n=new Uint8Array(e.data);else if(ArrayBuffer.isView(e.data))n=new Uint8Array(e.data.buffer,e.data.byteOffset,e.data.byteLength);else throw new TypeError("Invalid AudioDataInit: data is not a BufferSource.");const s=this.numberOfFrames*this.numberOfChannels*Hr(this.format);if(n.byteLength=this.numberOfFrames)throw new RangeError("frameOffset out of range");const s=e.frameCount!==void 0?e.frameCount:this.numberOfFrames-n;if(s>this.numberOfFrames-n)throw new RangeError("frameCount out of range");const r=Hr(a),o=Co(a);if(o&&e.planeIndex>=this.numberOfChannels)throw new RangeError("planeIndex out of range");if(!o&&e.planeIndex!==0)throw new RangeError("planeIndex out of range");return(o?s:s*this.numberOfChannels)*r}copyTo(e,a){if(!Jd(e))throw new TypeError("destination must be an ArrayBuffer or an ArrayBuffer view.");if(!a||typeof a!="object")throw new TypeError("options must be an object.");if(!Number.isInteger(a.planeIndex)||a.planeIndex<0)throw new TypeError("planeIndex must be a non-negative integer.");if(a.format!==void 0&&!nu.has(a.format))throw new TypeError("Invalid format.");if(a.frameOffset!==void 0&&(!Number.isInteger(a.frameOffset)||a.frameOffset<0))throw new TypeError("frameOffset must be a non-negative integer.");if(a.frameCount!==void 0&&(!Number.isInteger(a.frameCount)||a.frameCount<0))throw new TypeError("frameCount must be a non-negative integer.");if(this._closed)throw new Error("AudioSample is closed.");const{format:n,frameCount:s,frameOffset:r}=a;let{planeIndex:o}=a,l=this.format;const u=n??this.format;if(!u)throw new Error("Destination format not determined");const p=this.numberOfFrames,g=this.numberOfChannels,h=r??0;if(h>=p)throw new RangeError("frameOffset out of range");const f=s!==void 0?s:p-h;if(f>p-h)throw new RangeError("frameCount out of range");const m=Hr(u),d=Co(u);if(d&&o>=g)throw new RangeError("planeIndex out of range");if(!d&&o!==0)throw new RangeError("planeIndex out of range");const _=(d?f:f*g)*m;if(e.byteLength<_)throw new RangeError("Destination buffer is too small");const b=Ks(e),v=Xv(u);if(qc(this._data))if(Q$()&&g>2&&u!==l){vG(this._data,b,l,u,g,o,h,f);return}else try{this._data.copyTo(e,{planeIndex:o,frameOffset:h,frameCount:f,format:u});return}catch($){if(u==="f32-planar")throw $;l="f32-planar"}const k=Yv(l),y=Hr(l),T=Co(l);let O;if(this._data instanceof $c){const $=P=>{const L=this._data.getDataPlane(P);if(!(L instanceof Uint8Array))throw new TypeError("getDataPlane() must return a Uint8Array.");const x=p*y*(T?1:g);if(L.byteLength!==x)throw new TypeError(`Data plane ${P} has invalid size. Expected exactly ${x} bytes, got ${L.byteLength} bytes.`);return L};if(T)if(d)O=$(o),o=0;else{O=new Uint8Array(p*y*g);for(let P=0;Pthis.numberOfFrames)throw new RangeError("startFrame out of range.");if(a>this.numberOfFrames)throw new RangeError("endFrame out of range.");if(a0)for(let l=0;l0&&this.copyTo(r,{planeIndex:0,format:this.format,frameOffset:e,frameCount:n});return new Zn({data:r,format:this.format,sampleRate:this.sampleRate,numberOfChannels:this.numberOfChannels,timestamp:this.timestamp+e/this.sampleRate})}close(){this._closed||(xc?.unregister(this),this._data instanceof $c?(this._data._referenceCount--,this._data._referenceCount===0&&this._data.close()):qc(this._data)?this._data.close():this._data=new Uint8Array(0),this._closed=!0)}toAudioData(){if(this._closed)throw new Error("AudioSample is closed.");return this._data instanceof $c?this._createAudioDataFromData():qc(this._data)?this._data.timestamp===this.microsecondTimestamp?this._data.clone():this._createAudioDataFromData():new AudioData({format:this.format,sampleRate:this.sampleRate,numberOfFrames:this.numberOfFrames,numberOfChannels:this.numberOfChannels,timestamp:this.microsecondTimestamp,data:this._data.buffer instanceof ArrayBuffer?this._data.buffer:this._data.slice()})}_createAudioDataFromData(){if(Co(this.format)){const e=this.allocationSize({planeIndex:0,format:this.format}),a=new ArrayBuffer(e*this.numberOfChannels);for(let n=0;n0;){const g=Math.min(l,p),h=new Float32Array(s*g);for(let f=0;f0;){const h=Math.min(l,p),f=new Float32Array(s*h);for(let d=0;d{switch(t){case"u8":case"u8-planar":return 1;case"s16":case"s16-planar":return 2;case"s32":case"s32-planar":return 4;case"f32":case"f32-planar":return 4;default:throw new Error("Unknown AudioSampleFormat")}},Co=t=>{switch(t){case"u8-planar":case"s16-planar":case"s32-planar":case"f32-planar":return!0;default:return!1}},Yv=t=>{switch(t){case"u8":case"u8-planar":return(e,a)=>(e.getUint8(a)-128)/128;case"s16":case"s16-planar":return(e,a)=>e.getInt16(a,!0)/32768;case"s32":case"s32-planar":return(e,a)=>e.getInt32(a,!0)/2147483648;case"f32":case"f32-planar":return(e,a)=>e.getFloat32(a,!0)}},Xv=t=>{switch(t){case"u8":case"u8-planar":return(e,a,n)=>e.setUint8(a,Sn(Math.round(n*128)+128,0,255));case"s16":case"s16-planar":return(e,a,n)=>e.setInt16(a,Sn(Math.round(n*32768),-32768,32767),!0);case"s32":case"s32-planar":return(e,a,n)=>e.setInt32(a,Sn(Math.round(n*2147483648),-2147483648,2147483647),!0);case"f32":case"f32-planar":return(e,a,n)=>e.setFloat32(a,n,!0)}},qc=t=>typeof AudioData<"u"&&t instanceof AudioData,_G=t=>{switch(t){case"u8-planar":return"u8";case"s16-planar":return"s16";case"s32-planar":return"s32";case"f32-planar":return"f32";default:return t}},vG=(t,e,a,n,s,r,o,l)=>{const u=Yv(a),p=Xv(n),g=Hr(a),h=Hr(n),f=Co(a);if(Co(n))if(f){const d=new ArrayBuffer(l*g),c=Ks(d);t.copyTo(d,{planeIndex:r,frameOffset:o,frameCount:l,format:a});for(let _=0;_{const a=t.allocationSize({format:e,planeIndex:0}),n=new ArrayBuffer(a);return t.copyTo(n,{format:e,planeIndex:0}),new Zn({data:n,format:e,numberOfChannels:t.numberOfChannels,sampleRate:t.sampleRate,timestamp:t.timestamp,duration:t.duration})};const Jv=new Map,Zv=new Map,yG=t=>{if(!t||typeof t!="object")throw new TypeError("Encoding config must be an object.");if(!Sr.includes(t.codec))throw new TypeError(`Invalid video codec '${t.codec}'. Must be one of: ${Sr.join(", ")}.`);const e=t.bitrate;if(t.quality===void 0&&e===void 0)throw new TypeError("config.quality must be provided.");if(t.quality!==void 0&&e!==void 0)throw new TypeError("config.quality and config.bitrate cannot both be provided.");if(t.quality!==void 0&&!(t.quality instanceof Dn))throw new TypeError("config.quality, when provided, must be a Quality.");if(e!==void 0&&!(e instanceof Dn)&&(!Number.isInteger(e)||e<=0))throw new TypeError("config.bitrate, when provided, must be a positive integer or a quality.");if(t.keyFrameInterval!==void 0&&(!Number.isFinite(t.keyFrameInterval)||t.keyFrameInterval<0))throw new TypeError("config.keyFrameInterval, when provided, must be a non-negative number.");if(t.sizeChangeBehavior!==void 0&&!["deny","passThrough","fill","contain","cover"].includes(t.sizeChangeBehavior))throw new TypeError("config.sizeChangeBehavior, when provided, must be 'deny', 'passThrough', 'fill', 'contain' or 'cover'.");if(t.transform!==void 0){if(typeof t.transform!="object"||!t.transform)throw new TypeError("config.transform, when provided, must be an object.");if(t.transform.width!==void 0&&(!Number.isInteger(t.transform.width)||t.transform.width<=0))throw new TypeError("config.transform.width, when provided, must be a positive integer.");if(t.transform.height!==void 0&&(!Number.isInteger(t.transform.height)||t.transform.height<=0))throw new TypeError("config.transform.height, when provided, must be a positive integer.");if(t.transform.fit!==void 0&&!["fill","contain","cover"].includes(t.transform.fit))throw new TypeError('config.transform.fit, when provided, must be one of "fill", "contain", or "cover".');if(t.transform.width!==void 0&&t.transform.height!==void 0&&t.transform.fit===void 0&&!["fill","contain","cover"].includes(t.sizeChangeBehavior))throw new TypeError("When both config.transform.width and config.transform.height are provided, config.transform.fit must also be provided.");if(t.transform.fit!==void 0&&["fill","contain","cover"].includes(t.sizeChangeBehavior)&&t.transform.fit!==t.sizeChangeBehavior)throw new TypeError("config.transform.fit, when provided, cannot differ from config.sizeChangeBehavior when config.sizeChangeBehavior is 'fill', 'contain' or 'cover', as sizeChangeBehavior already determines the fitting algorithm.");if(t.transform.rotate!==void 0&&![0,90,180,270].includes(t.transform.rotate))throw new TypeError("config.transform.rotate, when provided, must be 0, 90, 180 or 270.");if(t.transform.flip!==void 0&&typeof t.transform.flip!="boolean")throw new TypeError("config.transform.flip, when provided, must be a boolean.");if(t.transform.crop!==void 0&&Am(t.transform.crop,"config.transform."),t.transform.process!==void 0&&typeof t.transform.process!="function")throw new TypeError("config.transform.process, when provided, must be a function.");if(t.transform.frameRate!==void 0&&(!Number.isFinite(t.transform.frameRate)||t.transform.frameRate<=0))throw new TypeError("config.transform.frameRate, when provided, must be a finite positive number.");if(t.transform.force!==void 0&&typeof t.transform.force!="boolean")throw new TypeError("config.transform.force, when provided, must be a boolean.")}if(t.onEncodedPacket!==void 0&&typeof t.onEncodedPacket!="function")throw new TypeError("config.onEncodedPacket, when provided, must be a function.");if(t.onEncoderConfig!==void 0&&typeof t.onEncoderConfig!="function")throw new TypeError("config.onEncoderConfig, when provided, must be a function.");if(t.onEncodedSample!==void 0&&typeof t.onEncodedSample!="function")throw new TypeError("config.onEncodedSample, when provided, must be a function.");eb(t.codec,t)},eb=(t,e)=>{if(!e||typeof e!="object")throw new TypeError("Encoding options must be an object.");if(e.alpha!==void 0&&!["discard","keep"].includes(e.alpha))throw new TypeError("options.alpha, when provided, must be 'discard' or 'keep'.");const a=e.bitrateMode;if(a!==void 0&&!["constant","variable"].includes(a))throw new TypeError("bitrateMode, when provided, must be 'constant' or 'variable'.");if(e.latencyMode!==void 0&&!["quality","realtime"].includes(e.latencyMode))throw new TypeError("latencyMode, when provided, must be 'quality' or 'realtime'.");if(e.fullCodecString!==void 0&&typeof e.fullCodecString!="string")throw new TypeError("fullCodecString, when provided, must be a string.");if(e.fullCodecString!==void 0&&iu(e.fullCodecString)!==t)throw new TypeError(`fullCodecString, when provided, must be a string that matches the specified codec (${t}).`);if(e.hardwareAcceleration!==void 0&&!["no-preference","prefer-hardware","prefer-software"].includes(e.hardwareAcceleration))throw new TypeError("hardwareAcceleration, when provided, must be 'no-preference', 'prefer-hardware' or 'prefer-software'.");if(e.scalabilityMode!==void 0&&typeof e.scalabilityMode!="string")throw new TypeError("scalabilityMode, when provided, must be a string.");if(e.contentHint!==void 0&&typeof e.contentHint!="string")throw new TypeError("contentHint, when provided, must be a string.")},tb=t=>{const e=t.bitrateMode,a=t.quality._toVideoRateControl(t.codec,t.width,t.height,e),n=(r,o,l)=>({codec:t.fullCodecString??Wq(t.codec,t.width,t.height,l,t.alpha==="keep"),width:t.width,height:t.height,displayWidth:t.squarePixelWidth,displayHeight:t.squarePixelHeight,bitrate:r,bitrateMode:o,alpha:t.alpha??"discard",framerate:t.framerate,latencyMode:t.latencyMode,hardwareAcceleration:t.hardwareAcceleration,scalabilityMode:t.scalabilityMode,contentHint:t.contentHint,...Yq(t.codec)}),s=[];return a.quantizer!==null&&s.push({config:n(void 0,"quantizer",a.bitrate),quantizer:a.quantizer}),a.bitrateMode!=="quantizer"&&s.push({config:n(a.bitrate,a.bitrateMode,a.bitrate),quantizer:null}),ze(s.length>0),s},wG=t=>{if(!t||typeof t!="object")throw new TypeError("Encoding config must be an object.");if(!Go.includes(t.codec))throw new TypeError(`Invalid audio codec '${t.codec}'. Must be one of: ${Go.join(", ")}.`);const e=t.bitrate;if(t.quality===void 0&&e===void 0&&!(js.includes(t.codec)||t.codec==="flac"))throw new TypeError("config.quality must be provided for compressed audio codecs.");if(t.quality!==void 0&&e!==void 0)throw new TypeError("config.quality and config.bitrate cannot both be provided.");if(t.quality!==void 0&&!(t.quality instanceof Dn))throw new TypeError("config.quality, when provided, must be a Quality.");if(e!==void 0&&!(e instanceof Dn)&&(!Number.isInteger(e)||e<=0))throw new TypeError("config.bitrate, when provided, must be a positive integer or a quality.");if(t.transform!==void 0){if(typeof t.transform!="object"||!t.transform)throw new TypeError("config.transform, when provided, must be an object.");if(t.transform.numberOfChannels!==void 0&&(!Number.isInteger(t.transform.numberOfChannels)||t.transform.numberOfChannels<=0))throw new TypeError("config.transform.numberOfChannels, when provided, must be a positive integer.");if(t.transform.sampleRate!==void 0&&(!Number.isInteger(t.transform.sampleRate)||t.transform.sampleRate<=0))throw new TypeError("config.transform.sampleRate, when provided, must be a positive integer.");if(t.transform.sampleFormat!==void 0&&!["u8","s16","s32","f32"].includes(t.transform.sampleFormat))throw new TypeError("config.transform.sampleFormat, when provided, must be one of: u8, s16, s32, f32.");if(t.transform.process!==void 0&&typeof t.transform.process!="function")throw new TypeError("config.transform.process, when provided, must be a function.")}if(t.onEncodedPacket!==void 0&&typeof t.onEncodedPacket!="function")throw new TypeError("config.onEncodedPacket, when provided, must be a function.");if(t.onEncoderConfig!==void 0&&typeof t.onEncoderConfig!="function")throw new TypeError("config.onEncoderConfig, when provided, must be a function.");if(t.onEncodedSample!==void 0&&typeof t.onEncodedSample!="function")throw new TypeError("config.onEncodedSample, when provided, must be a function.");ib(t.codec,t)},ib=(t,e)=>{if(!e||typeof e!="object")throw new TypeError("Encoding options must be an object.");const a=e.bitrateMode;if(a!==void 0&&!["constant","variable"].includes(a))throw new TypeError("bitrateMode, when provided, must be 'constant' or 'variable'.");if(e.fullCodecString!==void 0&&typeof e.fullCodecString!="string")throw new TypeError("fullCodecString, when provided, must be a string.");if(e.fullCodecString!==void 0&&iu(e.fullCodecString)!==t)throw new TypeError(`fullCodecString, when provided, must be a string that matches the specified codec (${t}).`)},ab=t=>{const e=t.bitrateMode;return{codec:t.fullCodecString??Kq(t.codec,t.numberOfChannels,t.sampleRate),numberOfChannels:t.numberOfChannels,sampleRate:t.sampleRate,bitrate:t.quality?._toAudioBitrate(t.codec),bitrateMode:t.quality?._bitrateMode??e,...Xq(t.codec)}};class Dn{constructor(e){if((typeof e=="number"||typeof e=="string")&&(e={quality:e}),!e||typeof e!="object")throw new TypeError("options must be an object.");if(e.bitrateMode!==void 0&&!["constant","variable"].includes(e.bitrateMode))throw new TypeError("options.bitrateMode, when provided, must be 'constant' or 'variable'.");if("quality"in e){if(typeof e.quality=="string"?!(e.quality in nb):typeof e.quality!="number"||Number.isNaN(e.quality))throw new TypeError("options.quality must be a number, or one of 'very-low', 'low', 'medium', 'high' or 'very-high'.");if(e.preferBitrate!==void 0&&typeof e.preferBitrate!="boolean")throw new TypeError("options.preferBitrate, when provided, must be a boolean.");if("bitrate"in e||"quantizer"in e)throw new TypeError("options.quality cannot be combined with options.bitrate or options.quantizer.");this._quality=typeof e.quality=="string"?nb[e.quality]:e.quality,this._preferBitrate=e.preferBitrate??!1,this._bitrate=void 0,this._quantizer=void 0}else{if(e.bitrate!==void 0&&(!Number.isInteger(e.bitrate)||e.bitrate<=0))throw new TypeError("options.bitrate, when provided, must be a positive integer.");if(e.quantizer!==void 0&&(!Number.isInteger(e.quantizer)||e.quantizer<0))throw new TypeError("options.quantizer, when provided, must be a non-negative integer.");if(e.bitrate===void 0&&e.quantizer===void 0)throw new TypeError("At least one of options.bitrate or options.quantizer must be set.");if("preferBitrate"in e)throw new TypeError("options.preferBitrate can only be combined with options.quality.");this._quality=void 0,this._preferBitrate=!1,this._bitrate=e.bitrate,this._quantizer=e.quantizer}this._bitrateMode=e.bitrateMode}_toVideoRateControl(e,a,n,s){const r=kG[e];let o=null,l=this._bitrateMode??s??"variable";if(this._quantizer!==void 0){if(r)if(this._quantizerr.max){if(this._bitrate===void 0)throw new Error(`Quantizer ${this._quantizer} is out of range for codec '${e}'; must be between ${r.min} and ${r.max}.`)}else o=this._quantizer,this._bitrate===void 0&&(l="quantizer");else if(this._bitrate===void 0)throw new Error(`Codec '${e}' does not support quantizer-based encoding. Provide a bitrate in the Quality to define a fallback.`)}else this._bitrate===void 0&&r&&!this._preferBitrate&&(ze(this._quality!==void 0),o=Sn(Math.round(I$(r.worst,r.best,this._quality)),r.min,r.max));let u;if(this._bitrate!==void 0)u=this._bitrate;else{let p=this._quality;p===void 0&&(ze(o!==null&&r),p=Sn((o-r.worst)/(r.best-r.worst),0,1)),u=sb(e,a,n,Cm(p))}return{quantizer:o,bitrate:u,bitrateMode:l}}_toVideoBitrate(e,a,n){return this._bitrate!==void 0?this._bitrate:(ze(this._quality!==void 0),sb(e,a,n,Cm(this._quality)))}_toAudioBitrate(e){if(js.includes(e)||e==="flac")return;if(this._bitrate!==void 0)return this._bitrate;if(this._quality===void 0)throw new Error("This Quality defines neither a quality level nor a bitrate and therefore cannot be used for audio encoding.");const a=Cm(this._quality),s={aac:128e3,opus:64e3,mp3:16e4,vorbis:64e3,ac3:384e3,eac3:192e3,dts:768e3}[e];if(!s)throw new Error(`Unhandled codec: ${e}`);let r=s*a;return e==="aac"?r=[96e3,128e3,16e4,192e3].reduce((l,u)=>Math.abs(u-r)Math.abs(u-r).3*Math.exp(2.5538*t),sb=(t,e,a,n)=>{const s=e*a,r=1920*1080,o=3e6,l=Math.pow(s/r,.95),u=o*l,p={avc:1,hevc:.6,vp9:.6,av1:.4,vp8:1.2,prores:22e7/o},h=u*p[t]*n;return Math.ceil(h/1e3)*1e3},rb=(t,e)=>{if(t==="avc")return{avc:{quantizer:e}};if(t==="hevc")return{hevc:{quantizer:e}};if(t==="vp9")return{vp9:{quantizer:e}};if(t==="av1")return{av1:{quantizer:e}};ze(!1)},xG=async(t,e={})=>{const{width:a=1280,height:n=720,quality:s,bitrate:r,frameRate:o,...l}=e;if(!Sr.includes(t))return!1;if(!Number.isInteger(a)||a<=0)throw new TypeError("width must be a positive integer.");if(!Number.isInteger(n)||n<=0)throw new TypeError("height must be a positive integer.");if(s!==void 0&&!(s instanceof Dn))throw new TypeError("quality, when provided, must be a Quality.");if(s!==void 0&&r!==void 0)throw new TypeError("quality and bitrate cannot both be provided.");if(r!==void 0&&!(r instanceof Dn)&&(!Number.isInteger(r)||r<=0))throw new TypeError("bitrate must be a positive integer or a quality.");if(o!==void 0&&(!Number.isFinite(o)||o<=0))throw new TypeError("frameRate, when provided, must be a finite positive number.");eb(t,l);const u=su(s,r)??new Dn("medium");let p;try{p=tb({codec:t,width:a,height:n,quality:u,framerate:o,...l,alpha:"discard"})}catch{return!1}const g=JSON.stringify(p),h=Jv.get(g);if(h)return h;const f=(async()=>{for(const{config:d}of p)if(ob.some(c=>c.supports(t,d)))return!0;if(typeof VideoEncoder>"u"||(a%2===1||n%2===1)&&t==="avc")return!1;for(const{config:d,quantizer:c}of p){try{if(!(await VideoEncoder.isConfigSupported(d)).supported)continue}catch{continue}if(!hv()||await new Promise(async b=>{try{const v=new VideoEncoder({output:()=>{},error:()=>b(!1)});v.configure(d);const k=new Uint8Array(a*n*4),y=new VideoFrame(k,{format:"RGBA",codedWidth:a,codedHeight:n,timestamp:0});v.encode(y,c!==null?rb(t,c):void 0),y.close(),await v.flush(),b(!0)}catch{b(!1)}}))return!0}return!1})();return Jv.set(g,f),f},SG=async(t,e={})=>{const{numberOfChannels:a=2,sampleRate:n=48e3,quality:s,bitrate:r,...o}=e;if(!Go.includes(t))return!1;if(!Number.isInteger(a)||a<=0)throw new TypeError("numberOfChannels must be a positive integer.");if(!Number.isInteger(n)||n<=0)throw new TypeError("sampleRate must be a positive integer.");if(s!==void 0&&!(s instanceof Dn))throw new TypeError("quality, when provided, must be a Quality.");if(s!==void 0&&r!==void 0)throw new TypeError("quality and bitrate cannot both be provided.");if(r!==void 0&&!(r instanceof Dn)&&(!Number.isInteger(r)||r<=0))throw new TypeError("bitrate must be a positive integer.");ib(t,o);const l=su(s,r)??new Dn("medium"),u=ab({codec:t,numberOfChannels:a,sampleRate:n,quality:l,...o}),p=JSON.stringify(u),g=Zv.get(p);if(g)return g;const h=(async()=>{if(lb.some(f=>f.supports(t,u))||js.includes(t))return!0;if(typeof AudioEncoder>"u")return!1;try{return(await AudioEncoder.isConfigSupported(u)).supported===!0}catch{return!1}})();return Zv.set(p,h),h},su=(t,e)=>{if(t!==void 0)return t;if(e!==void 0)return e instanceof Dn?e:new Dn({bitrate:e})};const ob=[],lb=[];const TG=t=>{let n=t>>2,s=4096,r=0,o=12,l=0;for(n<0&&(n=-n,r=128),n+=33,n>8191&&(n=8191);(n&s)!==s&&o>=5;)s>>=1,o--;return l=n>>o-4&15,~(r|o-5<<4|l)&255},$G=t=>{let a=2048,n=0,s=11,r=0,o=t>>3;for(o<0?o=-o-1:n=128,o>4095&&(o=4095);(o&a)!==a&&s>=5;)a>>=1,s--;return r=o>>(s===4?1:s-4)&15,(n|s-4<<4|r)^85};class Gc{constructor(e,a,n,s,r){this.bytes=e,this.view=a,this.offset=n,this.start=s,this.end=r,this.bufferPos=s-n}static tempFromBytes(e){return new Gc(e,Ks(e),0,0,e.length)}get length(){return this.end-this.start}get filePos(){return this.offset+this.bufferPos}set filePos(e){this.bufferPos=e-this.offset}get remainingLength(){return Math.max(this.end-this.filePos,0)}skip(e){this.bufferPos+=e}slice(e,a=this.end-e){if(ethis.end)throw new RangeError("Slicing outside of original slice.");return new Gc(this.bytes,this.view,this.offset,e,e+a)}}const qG=(t,e)=>{if(t.filePost.end)throw new RangeError(`Tried reading [${t.filePos}, ${t.filePos+e}), but slice is [${t.start}, ${t.end}). This is likely an internal error, please report it alongside the file that caused it.`)},GG=(t,e)=>{qG(t,e);const a=t.bytes.subarray(t.bufferPos,t.bufferPos+e);return t.bufferPos+=e,a};class FG{constructor(e){this.mutex=new cv,this.trackTimestampInfo=new WeakMap,this.output=e}onTrackClose(e){}validateTimestamp(e,a,n){let s=this.trackTimestampInfo.get(e);if(s){if(n&&(s.maxTimestampBeforeLastKeyPacket=s.maxTimestamp),s.maxTimestampBeforeLastKeyPacket!==null&&a/g,AG=t=>{const e=Math.floor(t/36e5),a=Math.floor(t%(3600*1e3)/(60*1e3)),n=Math.floor(t%(60*1e3)/1e3),s=t%1e3;return e.toString().padStart(2,"0")+":"+a.toString().padStart(2,"0")+":"+n.toString().padStart(2,"0")+"."+s.toString().padStart(3,"0")};class ru{constructor(e){this.writer=e,this.helper=new Uint8Array(8),this.helperView=new DataView(this.helper.buffer),this.offsets=new WeakMap}writeU32(e){this.helperView.setUint32(0,e,!1),this.writer.write(this.helper.subarray(0,4))}writeU64(e){this.helperView.setUint32(0,Math.floor(e/2**32),!1),this.helperView.setUint32(4,e,!1),this.writer.write(this.helper.subarray(0,8))}writeAscii(e){for(let a=0;a[(t%256+256)%256],xt=t=>(ks.setUint16(0,t,!1),[ti[0],ti[1]]),Mm=t=>(ks.setInt16(0,t,!1),[ti[0],ti[1]]),db=t=>(ks.setUint32(0,t,!1),[ti[1],ti[2],ti[3]]),Oe=t=>(ks.setUint32(0,t,!1),[ti[0],ti[1],ti[2],ti[3]]),Zs=t=>(ks.setInt32(0,t,!1),[ti[0],ti[1],ti[2],ti[3]]),Ps=t=>(ks.setUint32(0,Math.floor(t/2**32),!1),ks.setUint32(4,t,!1),[ti[0],ti[1],ti[2],ti[3],ti[4],ti[5],ti[6],ti[7]]),ub=t=>(ks.setInt32(0,Math.floor(t/2**32),!1),ks.setUint32(4,t,!1),[ti[0],ti[1],ti[2],ti[3],ti[4],ti[5],ti[6],ti[7]]),fb=t=>(ks.setInt16(0,2**8*t,!1),[ti[0],ti[1]]),xs=t=>(ks.setInt32(0,2**16*t,!1),[ti[0],ti[1],ti[2],ti[3]]),Em=t=>(ks.setInt32(0,2**30*t,!1),[ti[0],ti[1],ti[2],ti[3]]),zm=(t,e)=>{const a=[];let n=t;do{let s=n&127;n>>=7,a.length>0&&(s|=128),a.push(s)}while(n>0||e);return a.reverse()},Vi=(t,e=!1)=>{const a=Array(t.length).fill(null).map((n,s)=>t.charCodeAt(s));return e&&a.push(0),a},mb=t=>[xs(t[0]),xs(t[1]),Em(t[2]),xs(t[3]),xs(t[4]),Em(t[5]),xs(t[6]),xs(t[7]),Em(t[8])],_t=(t,e,a)=>({type:t,contents:e&&new Uint8Array(e.flat(10)),children:a}),xi=(t,e,a,n,s)=>_t(t,[xa(e),db(a),n??[]],s),CG=t=>t.isQuickTime?_t("ftyp",[Vi("qt "),Oe(512),Vi("qt ")]):t.fragmented?t.cmaf?_t("ftyp",[Vi("iso5"),Oe(512),Vi("iso5"),Vi("iso6"),Vi("mp41"),Vi("cmfc"),Vi("dash")]):_t("ftyp",[Vi("iso5"),Oe(512),Vi("iso5"),Vi("iso6"),Vi("mp41")]):_t("ftyp",[Vi("isom"),Oe(512),Vi("isom"),t.holdsAvc?Vi("avc1"):[],Vi("mp41")]),pb=()=>_t("styp",[Vi("iso5"),Oe(0),Vi("iso5"),Vi("iso6"),Vi("mp41"),Vi("cmfc"),Vi("dash")]),gb=(t,e)=>{const a=Math.max(0,t.minWrittenTimestamp);let n=Math.max(0,t.maxWrittenEndTimestamp-a);return Number.isFinite(n)||(n=0),xi("sidx",1,0,[Oe(1),Oe(es),Ps(ta(a,es)),Ps(0),xt(0),xt(1),Oe(e&2147483647),Oe(ta(n,es)),Oe(0)])},ou=t=>({type:"mdat",largeSize:t}),MG=t=>({type:"free",size:t}),Fc=t=>_t("moov",void 0,[EG(t.creationTime,t.trackDatas),...t.trackDatas.map(e=>zG(e,t.creationTime)),t.isFragmented?_7(t.trackDatas):null,A7(t)]),EG=(t,e)=>{const a=Math.max(0,...e.map(o=>Math.max(0,ta(bl(o),es)+ta(o.startTimestampOffset??0,es)))),n=Math.max(0,...e.map(o=>o.track.id))+1,s=!wr(t)||!wr(a),r=s?Ps:Oe;return xi("mvhd",+s,0,[r(t),r(t),Oe(es),r(a),xs(1),fb(1),Array(10).fill(0),mb(ov),Array(24).fill(0),Oe(n)])},zG=(t,e)=>{const a=O7(t),n=t.startTimestampOffset!==null&&t.startTimestampOffset!==0;return _t("trak",void 0,[UG(t,e),n?BG(t):null,RG(t,e),a.name!==void 0?_t("udta",void 0,[_t("name",[...Ys.encode(a.name)])]):null])},UG=(t,e)=>{const a=Math.max(0,ta(bl(t),es)+ta(t.startTimestampOffset??0,es)),n=!wr(e)||!wr(a),s=n?Ps:Oe;let r;if(t.type==="video"&&t.track.metadata.transformationMatrix)r=t.track.metadata.transformationMatrix;else if(t.type==="video"){const{rotation:u,flip:p}=t.track.metadata,g=mm(z$(u??0),U$(p?-1:1,1));r=E$(g,t.info.width,t.info.height)}else r=ov;let o=2;t.track.metadata.disposition?.default!==!1&&(o|=1);const l=t.type==="video"?0:t.type==="audio"?1:t.type==="subtitle"?2:qo(t);return xi("tkhd",+n,o,[s(e),s(e),Oe(t.track.id),Oe(0),s(a),Array(8).fill(0),xt(0),xt(l),fb(t.type==="audio"?1:0),xt(0),mb(r),xs(t.type==="video"?t.info.width:0),xs(t.type==="video"?t.info.height:0)])},BG=t=>{const e=t.startTimestampOffset;if(ze(e!==null),e>0){const a=ta(e,es),n=ta(bl(t),es),s=!wr(a)||!wr(n),r=s?Ps:Oe,o=s?ub:Zs;return _t("edts",void 0,[xi("elst",s?1:0,0,[Oe(2),r(a),o(-1),xs(1),r(n),o(0),xs(1)])])}else{const a=ta(-e,t.timescale),n=Math.max(0,ta(bl(t),es)+ta(e,es)),s=!R$(a)||!wr(n),r=s?Ps:Oe,o=s?ub:Zs;return _t("edts",void 0,[xi("elst",s?1:0,0,[Oe(1),r(n),o(a),xs(1)])])}},RG=(t,e)=>_t("mdia",void 0,[jG(t,e),Um(!0,PG[t.type],NG[t.type]),OG(t)]),jG=(t,e)=>{const a=ta(bl(t),t.timescale),n=!wr(e)||!wr(a),s=n?Ps:Oe;return xi("mdhd",+n,0,[s(e),s(e),Oe(t.timescale),s(a),xt(kb(t.track.metadata.languageCode??L$)),xt(0)])},PG={video:"vide",audio:"soun",subtitle:"text"},NG={video:"MediabunnyVideoHandler",audio:"MediabunnySoundHandler",subtitle:"MediabunnyTextHandler"},Um=(t,e,a,n="\0\0\0\0")=>xi("hdlr",0,0,[t?Vi("mhlr"):Oe(0),Vi(e),Vi(n),Oe(0),Oe(0),Vi(a,!0)]),OG=t=>_t("minf",void 0,[IG[t.type](),LG(),HG(t)]),IG={video:()=>xi("vmhd",0,1,[xt(0),xt(0),xt(0),xt(0)]),audio:()=>xi("smhd",0,0,[xt(0),xt(0)]),subtitle:()=>xi("nmhd",0,0)},LG=()=>_t("dinf",void 0,[DG()]),DG=()=>xi("dref",0,0,[Oe(1)],[VG()]),VG=()=>xi("url ",0,1),HG=t=>{const e=t.compositionTimeOffsetTable.length>1||t.compositionTimeOffsetTable.some(a=>a.sampleCompositionTimeOffset!==0);return _t("stbl",void 0,[WG(t),d7(t),e?g7(t):null,e?h7(t):null,f7(t),m7(t),p7(t),u7(t)])},WG=t=>{let e;if(t.type==="video")e=QG(z7(t.track.source._codec,t.info.decoderConfig.codec),t);else if(t.type==="audio"){const a=wb(t.track.source._codec,t.info.decoderConfig.codec,t.muxer.isQuickTime);ze(a),e=e7(a,t)}else t.type==="subtitle"&&(e=l7(R7[t.track.source._codec],t));return ze(e),xi("stsd",0,0,[Oe(1)],[e])},QG=(t,e)=>_t(t,[Array(6).fill(0),xt(1),xt(0),xt(0),Array(12).fill(0),xt(e.info.width),xt(e.info.height),Oe(4718592),Oe(4718592),Oe(0),xt(1),xa(10),Vi("Mediabunny"),Array(21).fill(0),xt(e.info.hasAlphaChannel?32:24),Mm(65535)],[U7[e.track.source._codec]?.(e)??null,KG(e),P$(e.info.decoderConfig.colorSpace)?null:YG(e),Bm(e)]),Bm=t=>t.avgBitrate===0&&t.maxBitrate===0?null:_t("btrt",[Oe(0),Oe(t.maxBitrate),Oe(t.avgBitrate)]),KG=t=>t.info.pixelAspectRatio.num===t.info.pixelAspectRatio.den?null:_t("pasp",[Oe(t.info.pixelAspectRatio.num),Oe(t.info.pixelAspectRatio.den)]),YG=t=>{const e=t.info.decoderConfig.colorSpace;return _t("colr",[Vi(t.muxer.isQuickTime?"nclc":"nclx"),xt(e?.primaries!=null?Kd[e.primaries]:2),xt(e?.transfer!=null?Yd[e.transfer]:2),xt(e?.matrix!=null?Xd[e.matrix]:2),t.muxer.isQuickTime?[]:xa((e?.fullRange?1:0)<<7)])},XG=t=>t.info.decoderConfig&&_t("avcC",[...ys(t.info.decoderConfig.description)]),JG=t=>t.info.decoderConfig&&_t("hvcC",[...ys(t.info.decoderConfig.description)]),hb=t=>{if(!t.info.decoderConfig)return null;const e=t.info.decoderConfig,a=e.codec.split("."),n=Number(a[1]),s=Number(a[2]),r=Number(a[3]),o=a[4]?Number(a[4]):1,l=a[8]?Number(a[8]):Number(e.colorSpace?.fullRange??0),u=(r<<4)+(o<<1)+l,p=a[5]?Number(a[5]):e.colorSpace?.primaries?Kd[e.colorSpace.primaries]:1,g=a[6]?Number(a[6]):e.colorSpace?.transfer?Yd[e.colorSpace.transfer]:1,h=a[7]?Number(a[7]):e.colorSpace?.matrix?Xd[e.colorSpace.matrix]:1;return xi("vpcC",1,0,[xa(n),xa(s),xa(u),xa(p),xa(g),xa(h),xt(0)])},ZG=t=>_t("av1C",Qq(t.info.decoderConfig.codec)),e7=(t,e)=>{let a=0,n,s=16;const r=js.includes(e.track.source._codec);if(r){const o=e.track.source._codec,{sampleSize:l}=Fo(o);s=8*l,s>16&&(a=1)}if(e.muxer.isQuickTime&&(a=1),a===0)n=[Array(6).fill(0),xt(1),xt(a),xt(0),Oe(0),xt(e.info.numberOfChannels),xt(s),xt(0),xt(0),xt(e.info.sampleRate<2**16?e.info.sampleRate:0),xt(0)];else{const o=r?0:-2;n=[Array(6).fill(0),xt(1),xt(a),xt(0),Oe(0),xt(e.info.numberOfChannels),xt(Math.min(s,16)),Mm(o),xt(0),xt(e.info.sampleRate<2**16?e.info.sampleRate:0),xt(0),r?[Oe(1),Oe(s/8),Oe(e.info.numberOfChannels*s/8)]:[Oe(0),Oe(0),Oe(0)],Oe(2)]}return _t(t,n,[B7(e.track.source._codec,e.muxer.isQuickTime)?.(e)??null,Bm(e)])},Rm=t=>{let e;switch(t.track.source._codec){case"aac":e=64;break;case"mp3":e=107;break;case"vorbis":e=221;break;default:throw new Error(`Unhandled audio codec: ${t.track.source._codec}`)}let a=[...xa(e),...xa(21),...db(0),...Oe(t.maxBitrate),...Oe(t.avgBitrate)];if(t.info.decoderConfig.description){const n=ys(t.info.decoderConfig.description);a=[...a,...xa(5),...zm(n.byteLength),...n]}return a=[...xt(1),...xa(0),...xa(4),...zm(a.length),...a,...xa(6),...xa(1),...xa(2)],a=[...xa(3),...zm(a.length),...a],xi("esds",0,0,a)},Wr=t=>_t("wave",void 0,[t7(t),i7(t),_t("\0\0\0\0")]),t7=t=>_t("frma",[Vi(wb(t.track.source._codec,t.info.decoderConfig.codec,t.muxer.isQuickTime))]),i7=t=>{const{littleEndian:e}=Fo(t.track.source._codec);return _t("enda",[xt(+e)])},a7=t=>{let e=t.info.numberOfChannels,a=3840,n=t.info.sampleRate,s=0,r=0,o=new Uint8Array(0);const l=t.info.decoderConfig?.description;if(l){ze(l.byteLength>=18);const u=ys(l),p=Sq(u);e=p.outputChannelCount,a=p.preSkip,n=p.inputSampleRate,s=p.outputGain,r=p.channelMappingFamily,p.channelMappingTable&&(o=p.channelMappingTable)}return _t("dOps",[xa(0),xa(e),xt(a),Oe(n),Mm(s),xa(r),...o])},n7=t=>{const e=t.info.decoderConfig?.description;ze(e);const a=ys(e);return xi("dfLa",0,0,[...a.subarray(4)])},er=t=>{const{littleEndian:e,sampleSize:a}=Fo(t.track.source._codec),n=+e;return xi("pcmC",0,0,[xa(n),xa(8*a)])},s7=t=>{ze(t.info.primingPacket);const e=$q(t.info.primingPacket.data);if(!e)throw new Error("Couldn't extract AC-3 frame info from the audio packet. Ensure the packets contain valid AC-3 sync frames (as specified in ETSI TS 102 366).");const a=new Uint8Array(3),n=new Ya(a);return n.writeBits(2,e.fscod),n.writeBits(5,e.bsid),n.writeBits(3,e.bsmod),n.writeBits(3,e.acmod),n.writeBits(1,e.lfeon),n.writeBits(5,e.bitRateCode),n.writeBits(5,0),_t("dac3",[...a])},r7=t=>{ze(t.info.primingPacket);const e=Gq(t.info.primingPacket.data);if(!e)throw new Error("Couldn't extract E-AC-3 frame info from the audio packet. Ensure the packets contain valid E-AC-3 sync frames (as specified in ETSI TS 102 366).");let a=16;for(const o of e.substreams)a+=23,o.numDepSub>0?a+=9:a+=1;const n=Math.ceil(a/8),s=new Uint8Array(n),r=new Ya(s);r.writeBits(13,e.dataRate),r.writeBits(3,e.substreams.length-1);for(const o of e.substreams)r.writeBits(2,o.fscod),r.writeBits(5,o.bsid),r.writeBits(1,0),r.writeBits(1,0),r.writeBits(3,o.bsmod),r.writeBits(3,o.acmod),r.writeBits(1,o.lfeon),r.writeBits(3,0),r.writeBits(4,o.numDepSub),o.numDepSub>0?r.writeBits(9,o.chanLoc):r.writeBits(1,0);return _t("dec3",[...s])},o7=t=>{ze(t.info.primingPacket);const e=Iq(t.info.primingPacket.data);if(!e)throw new Error("Couldn't extract DTS frame info from the audio packet. Ensure the packets contain valid DTS frames as specified in ETSI TS 102 114.");return _t("ddts",[...Vq(e)])},l7=(t,e)=>_t(t,[Array(6).fill(0),xt(1)],[j7[e.track.source._codec](e),Bm(e)]),c7=t=>_t("vttC",[...Ys.encode(t.info.config.description)]),d7=t=>xi("stts",0,0,[Oe(t.timeToSampleTable.length),t.timeToSampleTable.map(e=>[Oe(e.sampleCount),Oe(e.sampleDelta)])]),u7=t=>{if(t.samples.every(a=>a.type==="key"))return null;const e=[...t.samples.entries()].filter(([,a])=>a.type==="key");return xi("stss",0,0,[Oe(e.length),e.map(([a])=>Oe(a+1))])},f7=t=>xi("stsc",0,0,[Oe(t.compactlyCodedChunkTable.length),t.compactlyCodedChunkTable.map(e=>[Oe(e.firstChunk),Oe(e.samplesPerChunk),Oe(1)])]),m7=t=>{if(t.type==="audio"&&t.info.requiresPcmTransformation){const{sampleSize:e}=Fo(t.track.source._codec);return xi("stsz",0,0,[Oe(e*t.info.numberOfChannels),Oe(t.samples.reduce((a,n)=>a+ta(n.duration,t.timescale),0))])}return xi("stsz",0,0,[Oe(0),Oe(t.samples.length),t.samples.map(e=>Oe(e.size))])},p7=t=>t.finalizedChunks.length>0&&Rs(t.finalizedChunks).offset>=2**32?xi("co64",0,0,[Oe(t.finalizedChunks.length),t.finalizedChunks.map(e=>Ps(e.offset))]):xi("stco",0,0,[Oe(t.finalizedChunks.length),t.finalizedChunks.map(e=>Oe(e.offset))]),g7=t=>xi("ctts",1,0,[Oe(t.compositionTimeOffsetTable.length),t.compositionTimeOffsetTable.map(e=>[Oe(e.sampleCount),Zs(e.sampleCompositionTimeOffset)])]),h7=t=>{let e=1/0,a=-1/0,n=1/0,s=-1/0;ze(t.compositionTimeOffsetTable.length>0),ze(t.samples.length>0);for(let o=0;o=2**31?null:xi("cslg",0,0,[Zs(r),Zs(e),Zs(a),Zs(n),Zs(s)])},_7=t=>_t("mvex",void 0,t.map(v7)),v7=t=>xi("trex",0,0,[Oe(t.track.id),Oe(1),Oe(0),Oe(0),Oe(0)]),_b=(t,e)=>_t("moof",void 0,[b7(t),...e.map(y7)]),b7=t=>xi("mfhd",0,0,[Oe(t)]),vb=t=>{let e=0,a=0;const n=0,s=0,r=t.type==="delta";return a|=+r,r?e|=1:e|=2,e<<24|a<<16|n<<8|s},y7=t=>_t("traf",void 0,[w7(t),k7(t),x7(t)]),w7=t=>{ze(t.currentChunk);let e=0;e|=8,e|=16,e|=32,e|=131072;const a=t.currentChunk.samples[1]??t.currentChunk.samples[0],n={duration:a.timescaleUnitsToNextSample,size:a.size,flags:vb(a)};return xi("tfhd",0,e,[Oe(t.track.id),Oe(n.duration),Oe(n.size),Oe(n.flags)])},k7=t=>(ze(t.currentChunk),xi("tfdt",1,0,[Ps(ta(t.currentChunk.startTimestamp,t.timescale))])),x7=t=>{ze(t.currentChunk);const e=t.currentChunk.samples.map(c=>c.timescaleUnitsToNextSample),a=t.currentChunk.samples.map(c=>c.size),n=t.currentChunk.samples.map(vb),s=t.currentChunk.samples.map(c=>ta(c.timestamp-c.decodeTimestamp,t.timescale)),r=new Set(e),o=new Set(a),l=new Set(n),u=new Set(s),p=l.size===2&&n[0]!==n[1],g=r.size>1,h=o.size>1,f=!p&&l.size>1,m=u.size>1||[...u].some(c=>c!==0);let d=0;return d|=1,d|=4*+p,d|=256*+g,d|=512*+h,d|=1024*+f,d|=2048*+m,xi("trun",1,d,[Oe(t.currentChunk.samples.length),Oe(t.currentChunk.offset-t.currentChunk.moofOffset||0),p?Oe(n[0]):[],t.currentChunk.samples.map((c,_)=>[g?Oe(e[_]):[],h?Oe(a[_]):[],f?Oe(n[_]):[],m?Zs(s[_]):[]])])},S7=t=>_t("mfra",void 0,[...t.map(T7),$7()]),T7=t=>xi("tfra",1,0,[Oe(t.track.id),Oe(63),Oe(t.finalizedChunks.length),t.finalizedChunks.map(a=>[Ps(ta(a.samples[0].timestamp,t.timescale)),Ps(a.moofOffset),Oe(a.trafIndex+1),Oe(1),Oe(1)])]),$7=()=>xi("mfro",0,0,[Oe(0)]),q7=()=>_t("vtte"),G7=(t,e,a,n,s)=>_t("vttc",void 0,[s!==null?_t("vsid",[Zs(s)]):null,a!==null?_t("iden",[...Ys.encode(a)]):null,e!==null?_t("ctim",[...Ys.encode(AG(e))]):null,n!==null?_t("sttg",[...Ys.encode(n)]):null,_t("payl",[...Ys.encode(t)])]),F7=t=>_t("vtta",[...Ys.encode(t)]),A7=t=>{const e=[],a=t.format._options.metadataFormat??"auto",n=t.output._metadataTags;if(a==="mdir"||a==="auto"&&!t.isQuickTime){const s=M7(n);s&&e.push(s)}else if(a==="mdta"){const s=E7(n);s&&e.push(s)}else(a==="udta"||a==="auto"&&t.isQuickTime)&&C7(e,t.output._metadataTags);return e.length===0?null:_t("udta",void 0,e)},C7=(t,e)=>{for(const{key:a,value:n}of vv(e))switch(a){case"title":t.push(tr("©nam",n));break;case"description":t.push(tr("©des",n));break;case"artist":t.push(tr("©ART",n));break;case"album":t.push(tr("©alb",n));break;case"albumArtist":t.push(tr("albr",n));break;case"genre":t.push(tr("©gen",n));break;case"date":t.push(tr("©day",n.toISOString().slice(0,10)));break;case"comment":t.push(tr("©cmt",n));break;case"lyrics":t.push(tr("©lyr",n));break;case"raw":break;case"discNumber":case"discsTotal":case"trackNumber":case"tracksTotal":case"beatsPerMinute":case"images":break;default:qo(a)}if(e.raw)for(const a in e.raw){const n=e.raw[a];n==null||a.length!==4||t.some(s=>s.type===a)||(typeof n=="string"?t.push(tr(a,n)):n instanceof Uint8Array&&t.push(_t(a,Array.from(n))))}},tr=(t,e)=>{const a=Ys.encode(e);return _t(t,[xt(a.length),xt(kb("und")),Array.from(a)])},bb={"image/jpeg":13,"image/png":14,"image/bmp":27},yb=(t,e)=>{const a=[];for(const{key:n,value:s}of vv(t))switch(n){case"title":a.push({key:e?"title":"©nam",value:Ns(s)});break;case"description":a.push({key:e?"description":"©des",value:Ns(s)});break;case"artist":a.push({key:e?"artist":"©ART",value:Ns(s)});break;case"album":a.push({key:e?"album":"©alb",value:Ns(s)});break;case"albumArtist":a.push({key:e?"album_artist":"aART",value:Ns(s)});break;case"comment":a.push({key:e?"comment":"©cmt",value:Ns(s)});break;case"genre":a.push({key:e?"genre":"©gen",value:Ns(s)});break;case"beatsPerMinute":e||a.push({key:"tmpo",value:_t("data",[Oe(21),Oe(0),xt(s)])});break;case"lyrics":a.push({key:e?"lyrics":"©lyr",value:Ns(s)});break;case"date":a.push({key:e?"date":"©day",value:Ns(s.toISOString().slice(0,10))});break;case"images":for(const r of s)r.kind==="coverFront"&&a.push({key:"covr",value:_t("data",[Oe(bb[r.mimeType]??0),Oe(0),Array.from(r.data)])});break;case"trackNumber":if(e){const r=t.tracksTotal!==void 0?`${s}/${t.tracksTotal}`:s.toString();a.push({key:"track",value:Ns(r)})}else a.push({key:"trkn",value:_t("data",[Oe(0),Oe(0),xt(0),xt(s),xt(t.tracksTotal??0),xt(0)])});break;case"discNumber":e||a.push({key:"disc",value:_t("data",[Oe(0),Oe(0),xt(0),xt(s),xt(t.discsTotal??0),xt(0)])});break;case"tracksTotal":case"discsTotal":break;case"raw":break;default:qo(n)}if(t.raw)for(const n in t.raw){const s=t.raw[n];s==null||!e&&n.length!==4||a.some(r=>r.key===n)||(typeof s=="string"?a.push({key:n,value:Ns(s)}):s instanceof Uint8Array?a.push({key:n,value:_t("data",[Oe(0),Oe(0),Array.from(s)])}):s instanceof wv&&a.push({key:n,value:_t("data",[Oe(bb[s.mimeType]??0),Oe(0),Array.from(s.data)])}))}return a},M7=t=>{const e=yb(t,!1);return e.length===0?null:xi("meta",0,0,void 0,[Um(!1,"mdir","","appl"),_t("ilst",void 0,e.map(a=>_t(a.key,void 0,[a.value])))])},E7=t=>{const e=yb(t,!0);return e.length===0?null:_t("meta",void 0,[Um(!1,"mdta",""),xi("keys",0,0,[Oe(e.length)],e.map(a=>_t("mdta",[...Ys.encode(a.key)]))),_t("ilst",void 0,e.map((a,n)=>{const s=String.fromCharCode(...Oe(n+1));return _t(s,void 0,[a.value])}))])},Ns=t=>_t("data",[Oe(1),Oe(0),...Ys.encode(t)]),z7=(t,e)=>{switch(t){case"avc":return e.startsWith("avc3")?"avc3":"avc1";case"hevc":return"hvc1";case"vp8":return"vp08";case"vp9":return"vp09";case"av1":return"av01";case"prores":return e}},U7={avc:XG,hevc:JG,vp8:hb,vp9:hb,av1:ZG,prores:null},wb=(t,e,a)=>{switch(t){case"aac":return"mp4a";case"mp3":return"mp4a";case"opus":return"Opus";case"vorbis":return"mp4a";case"flac":return"fLaC";case"ulaw":return"ulaw";case"alaw":return"alaw";case"pcm-u8":return"raw ";case"pcm-s8":return"sowt";case"ac3":return"ac-3";case"eac3":return"ec-3";case"dts":return e}if(a)switch(t){case"pcm-s16":return"sowt";case"pcm-s16be":return"twos";case"pcm-s24":return"in24";case"pcm-s24be":return"in24";case"pcm-s32":return"in32";case"pcm-s32be":return"in32";case"pcm-f32":return"fl32";case"pcm-f32be":return"fl32";case"pcm-f64":return"fl64";case"pcm-f64be":return"fl64"}else switch(t){case"pcm-s16":return"ipcm";case"pcm-s16be":return"ipcm";case"pcm-s24":return"ipcm";case"pcm-s24be":return"ipcm";case"pcm-s32":return"ipcm";case"pcm-s32be":return"ipcm";case"pcm-f32":return"fpcm";case"pcm-f32be":return"fpcm";case"pcm-f64":return"fpcm";case"pcm-f64be":return"fpcm"}},B7=(t,e)=>{switch(t){case"aac":return Rm;case"mp3":return Rm;case"opus":return a7;case"vorbis":return Rm;case"flac":return n7;case"ac3":return s7;case"eac3":return r7;case"dts":return o7}if(e)switch(t){case"pcm-s24":return Wr;case"pcm-s24be":return Wr;case"pcm-s32":return Wr;case"pcm-s32be":return Wr;case"pcm-f32":return Wr;case"pcm-f32be":return Wr;case"pcm-f64":return Wr;case"pcm-f64be":return Wr}else switch(t){case"pcm-s16":return er;case"pcm-s16be":return er;case"pcm-s24":return er;case"pcm-s24be":return er;case"pcm-s32":return er;case"pcm-s32be":return er;case"pcm-f32":return er;case"pcm-f32be":return er;case"pcm-f64":return er;case"pcm-f64be":return er}return null},R7={webvtt:"wvtt"},j7={webvtt:c7},kb=t=>{ze(t.length===3);let e=0;for(let a=0;a<3;a++)e<<=5,e+=t.charCodeAt(a)-96;return e};class jm{constructor(e,a){if(this.finalized=!1,this.started=!1,this.pos=0,this.trackedWrites=null,this.trackedStart=-1,this.trackedEnd=-1,e._writerAcquired)throw new Error("Can't have multiple Writers for the same Target.");this.target=e,e._setMonotonicity(a),e._writerAcquired=!0}start(){ze(!this.started),this.target._start(),this.started=!0}write(e){ze(this.started&&!this.finalized),this.maybeTrackWrites(e),this.target._write(e,this.pos),this.pos+=e.byteLength}seek(e){this.pos=e}getPos(){return this.pos}async flush(){return ze(this.started&&!this.finalized),this.target._flush()}async finalize(){ze(this.started&&!this.finalized),await this.target._finalize(),this.finalized=!0}maybeTrackWrites(e){if(!this.trackedWrites)return;let a=this.getPos();if(aNm)throw new Error(`ArrayBuffer exceeded maximum size of ${Nm} bytes. Please consider using another target.`);if(this._supportsResize)this._buffer.resize(a);else{const n=new ArrayBuffer(a),s=new Uint8Array(n);s.set(this._bytes,0),this._buffer=n,this._bytes=s}}}_start(){}_write(e,a){this._ensureSize(a+e.byteLength),this._bytes.set(e,a),this._maxPos=Math.max(this._maxPos,a+e.byteLength),this._dispatchWrite(a,a+e.byteLength)}async _flush(){}async _finalize(){this.buffer=this._buffer.slice(0,this._maxPos),this._options.onFinalize&&await this._options.onFinalize(this.buffer),this._emit("finalized")}async _close(){}_getSlice(e,a){return this._bytes.slice(e,a)}}class P7 extends Tr{constructor(e,a){super(),this._baseTarget=e,this._offset=a}_start(){}_write(e,a){this._baseTarget._write(e,this._offset+a),this._dispatchWrite(a,a+e.byteLength)}_flush(){return this._baseTarget._flush()}async _finalize(){this._emit("finalized")}async _close(){}_setMonotonicity(e){super._setMonotonicity(e),this._baseTarget._setMonotonicity(e)}}class Om{constructor(e,a){if(this.rootPath=e,this.getTarget=a,typeof e!="string")throw new TypeError("rootPath must be a string.");if(typeof a!="function")throw new TypeError("getTarget must be a function.")}}const es=57600,N7=2082844800,O7=t=>{const e={},a=t.track;return a.metadata.name!==void 0&&(e.name=a.metadata.name),e},ta=(t,e,a=!0)=>{const n=t*e;return a?Math.round(n):n},bl=t=>{if(t.samples.length===0)return 0;let e=1/0,a=-1/0;for(let n=0;na&&(a=s.timestamp+s.duration)}return e===1/0?0:a-e};class I7 extends FG{constructor(e,a){super(e),this.writer=null,this.boxWriter=null,this.initWriter=null,this.initBoxWriter=null,this.auxTarget=new lu,this.auxWriter=new jm(this.auxTarget,!1),this.auxBoxWriter=new ru(this.auxWriter),this.mdat=null,this.ftypSize=null,this.trackDatas=[],this.allTracksKnown=uv(),this.creationTime=Math.floor(Date.now()/1e3)+N7,this.finalizedChunks=[],this.wroteFragmentedHeader=!1,this.nextFragmentNumber=1,this.maxWrittenTimestamp=-1/0,this.minWrittenTimestamp=1/0,this.maxWrittenEndTimestamp=-1/0,this.segmentHeaderSize=null,this.format=a,this.formatOptions={...a._options},this.isQuickTime=a instanceof Fb,this.isCmaf=a instanceof Gb,this.minimumFragmentDuration=this.formatOptions.minimumFragmentDuration??(a instanceof Gb?1/0:1),this.auxWriter.start()}async start(){const e=await this.mutex.acquire();if(this.isCmaf?(this.fastStart="fragmented",this.isFragmented=!0):(this.writer=await this.output._getRootWriter(n=>this.formatOptions.fastStart!==void 0?this.formatOptions.fastStart==="fragmented":n instanceof lu),this.boxWriter=new ru(this.writer),this.fastStart=this.formatOptions.fastStart??(this.writer.target instanceof lu?"in-memory":!1),this.isFragmented=this.fastStart==="fragmented"),this.isCmaf){if(!this.output._hasInitTarget())throw new Error("CMAF outputs require the initTarget field in OutputOptions to be set; the init segment will be written to it.");const n=await this.output._getInitTarget(),s=new jm(n,!0);s.start(),this.initWriter=s,this.initBoxWriter=new ru(s)}const a=this.output.tracks.some(n=>n.isVideoTrack()&&n.source._codec==="avc");{const n=this.initBoxWriter??this.boxWriter;if(ze(n),this.formatOptions.onFtyp&&n.writer.startTrackingWrites(),n.writeBox(CG({isQuickTime:this.isQuickTime,holdsAvc:a,fragmented:this.isFragmented,cmaf:this.isCmaf})),this.formatOptions.onFtyp){const{data:s,start:r}=n.writer.stopTrackingWrites();this.formatOptions.onFtyp(s,r)}this.ftypSize=n.writer.getPos(),this.isCmaf&&await this.initWriter.flush()}if(this.fastStart!=="in-memory")if(this.fastStart==="reserve"){for(const n of this.output.tracks)if(n.metadata.maximumPacketCount===void 0)throw new Error("All tracks must specify maximumPacketCount in their metadata when using fastStart: 'reserve'.")}else this.isFragmented||(ze(this.writer),ze(this.boxWriter),this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat=ou(!0),this.boxWriter.writeBox(this.mdat));await this.writer?.flush();for(const n of this.output.tracks)n.isVideoTrack()&&n.metadata.decoderConfig?this.getVideoTrackData(n,n.metadata.primingPacket??null,{decoderConfig:n.metadata.decoderConfig}):n.isAudioTrack()&&n.metadata.decoderConfig&&this.getAudioTrackData(n,n.metadata.primingPacket??null,{decoderConfig:n.metadata.decoderConfig});e()}allTracksAreKnown(){for(const e of this.output.tracks)if(!e.source._closed&&!this.trackDatas.some(a=>a.track===e))return!1;return!0}async getMimeType(){await this.allTracksKnown.promise;const e=this.trackDatas.map(a=>a.type==="video"||a.type==="audio"?a.info.decoderConfig.codec:{webvtt:"wvtt"}[a.track.source._codec]);return sG({isQuickTime:this.isQuickTime,hasVideo:this.trackDatas.some(a=>a.type==="video"),hasAudio:this.trackDatas.some(a=>a.type==="audio"),codecStrings:e})}getVideoTrackData(e,a,n){const s=this.trackDatas.find(m=>m.track===e);if(s)return s;jv(n,e.source._codec),ze(n),ze(n.decoderConfig);const r={...n.decoderConfig};ze(r.codedWidth!==void 0),ze(r.codedHeight!==void 0);let o=!1;if(e.source._codec==="avc"&&!r.description){if(!a)throw new Error("No AVC description provided; you must therefore provide a priming packet.");const m=dq(a.data);if(!m)throw new Error("Couldn't extract an AVCDecoderConfigurationRecord from the AVC packet. Make sure the packets are in Annex B format (as specified in ITU-T-REC-H.264) when not providing a description, or provide a description (must be an AVCDecoderConfigurationRecord as specified in ISO 14496-15) and ensure the packets are in AVCC format.");r.description=uq(m),o=!0}else if(e.source._codec==="hevc"&&!r.description){if(!a)throw new Error("No HEVC description provided; you must therefore provide a priming packet.");const m=gq(a.data);if(!m)throw new Error("Couldn't extract an HEVCDecoderConfigurationRecord from the HEVC packet. Make sure the packets are in Annex B format (as specified in ITU-T-REC-H.265) when not providing a description, or provide a description (must be an HEVCDecoderConfigurationRecord as specified in ISO 14496-15) and ensure the packets are in HEVC format.");r.description=kq(m),o=!0}const l=W$(1/(e.metadata.frameRate??es),1e6).den,u=r.displayAspectWidth,p=r.displayAspectHeight,g=u===void 0||p===void 0?{num:1,den:1}:bv({num:u*r.codedHeight,den:p*r.codedWidth}),h=r.codec==="ap4h"||r.codec==="ap4x",f={muxer:this,track:e,type:"video",info:{width:r.codedWidth,height:r.codedHeight,pixelAspectRatio:g,decoderConfig:r,requiresAnnexBTransformation:o,hasAlphaChannel:h},timescale:l,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:e.source._nominalBitrate??e.metadata.averageBitrate??0,maxBitrate:e.source._nominalBitrate??e.metadata.bitrate??0};return this.trackDatas.push(f),this.trackDatas.sort((m,d)=>m.track.id-d.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),f}getAudioTrackData(e,a,n){const s=this.trackDatas.find(u=>u.track===e);if(s)return s;Pv(n,e.source._codec),ze(n),ze(n.decoderConfig);const r={...n.decoderConfig};let o=!1;if(e.source._codec==="aac"&&!r.description){if(!a)throw new Error("No AAC description provided; you must therefore provide a priming packet.");const u=Iv(Gc.tempFromBytes(a.data));if(!u)throw new Error("Couldn't parse ADTS header from the AAC packet. Make sure the packets are in ADTS format (as specified in ISO 13818-7) when not providing a description, or provide a description (must be an AudioSpecificConfig as specified in ISO 14496-3) and ensure the packets are raw AAC data.");const p=Zd[u.samplingFrequencyIndex],g=ym[u.channelConfiguration];if(p===void 0||g===void 0)throw new Error("Invalid ADTS frame header.");r.description=kv({objectType:u.objectType,outputSampleRate:p,outputNumberOfChannels:g}),o=!0}if(!a){if(e.source._codec==="ac3"||e.source._codec==="eac3")throw new Error("AC-3/E-AC-3 require a priming packet.");if(e.source._codec==="dts")throw new Error("DTS requires a priming packet.")}const l={muxer:this,track:e,type:"audio",info:{numberOfChannels:n.decoderConfig.numberOfChannels,sampleRate:n.decoderConfig.sampleRate,decoderConfig:r,requiresPcmTransformation:!this.isFragmented&&js.includes(e.source._codec),expectedNextPcmPacketTimestamp:null,requiresAdtsStripping:o,primingPacket:a},timescale:r.sampleRate,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:e.source._nominalBitrate??e.metadata.averageBitrate??0,maxBitrate:e.source._nominalBitrate??e.metadata.bitrate??0};return this.trackDatas.push(l),this.trackDatas.sort((u,p)=>u.track.id-p.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),l}getSubtitleTrackData(e,a){const n=this.trackDatas.find(r=>r.track===e);if(n)return n;nG(a),ze(a),ze(a.config);const s={muxer:this,track:e,type:"subtitle",info:{config:a.config},timescale:1e3,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:e.source._nominalBitrate??e.metadata.averageBitrate??0,maxBitrate:e.source._nominalBitrate??e.metadata.bitrate??0,lastCueEndTimestamp:null,cueQueue:[],nextSourceId:0,cueToSourceId:new WeakMap};return this.trackDatas.push(s),this.trackDatas.sort((r,o)=>r.track.id-o.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),s}async addEncodedVideoPacket(e,a,n){const s=await this.mutex.acquire();try{const r=this.getVideoTrackData(e,a,n);let o=a.data;if(r.info.requiresAnnexBTransformation){const u=[...yc(o)].map(p=>o.subarray(p.offset,p.offset+p.length));if(u.length===0)throw new Error("Failed to transform packet data. Make sure all packets are provided in Annex B format, as specified in ITU-T-REC-H.264 and ITU-T-REC-H.265.");o=cq(u,4)}this.validateTimestamp(r.track,a.timestamp,a.type==="key");const l=this.createSampleForTrack(r,o,a.timestamp,a.duration,a.type);await this.registerSample(r,l)}finally{s()}}async addEncodedAudioPacket(e,a,n){const s=await this.mutex.acquire();try{const r=this.getAudioTrackData(e,a,n);let o=a.data;if(r.info.requiresAdtsStripping){const g=Iv(Gc.tempFromBytes(o));if(!g)throw new Error("Expected ADTS frame, didn't get one.");const h=g.crcCheck===null?rG:oG;o=o.subarray(h)}this.validateTimestamp(r.track,a.timestamp,a.type==="key");let l=a.timestamp,u=a.duration;if(r.info.requiresPcmTransformation){const h=Fo(r.info.decoderConfig.codec).sampleSize*r.info.numberOfChannels;if(u=o.byteLength/h/r.info.sampleRate,r.info.expectedNextPcmPacketTimestamp!==null){const f=l-r.info.expectedNextPcmPacketTimestamp;if(f<.01)l=r.info.expectedNextPcmPacketTimestamp;else{const m=await this.padWithSilence(r,r.info.expectedNextPcmPacketTimestamp,f);l=r.info.expectedNextPcmPacketTimestamp+m}}r.info.expectedNextPcmPacketTimestamp=l+u}const p=this.createSampleForTrack(r,o,l,u,a.type);await this.registerSample(r,p)}finally{s()}}async padWithSilence(e,a,n){const s=ta(n,e.timescale);if(n=s/e.timescale,s>0){const{sampleSize:r,silentValue:o}=Fo(e.info.decoderConfig.codec),l=s*e.info.numberOfChannels,u=new Uint8Array(r*l).fill(o),p=this.createSampleForTrack(e,new Uint8Array(u.buffer),a,n,"key");await this.registerSample(e,p)}return n}async addSubtitleCue(e,a,n){const s=await this.mutex.acquire();try{const r=this.getSubtitleTrackData(e,n);this.validateTimestamp(r.track,a.timestamp,!0),e.source._codec==="webvtt"&&(r.cueQueue.push(a),await this.processWebVTTCues(r,a.timestamp))}finally{s()}}async processWebVTTCues(e,a){for(;e.cueQueue.length>0;){e.lastCueEndTimestamp??=Math.min(0,e.cueQueue[0].timestamp);const n=new Set([]);for(const p of e.cueQueue)ze(p.timestamp<=a),ze(e.lastCueEndTimestamp<=p.timestamp+p.duration),n.add(Math.max(p.timestamp,e.lastCueEndTimestamp)),n.add(p.timestamp+p.duration);const s=[...n].sort((p,g)=>p-g),r=s[0],o=s[1]??r;if(a=o)break;cb.lastIndex=0;const h=cb.test(g.text),f=g.timestamp+g.duration;let m=e.cueToSourceId.get(g);if(m===void 0&&os.timestamp).sort((s,r)=>s-r);this.isFragmented?e.startTimestampOffset??=Math.min(n[0],0):e.startTimestampOffset??=n[0];for(let s=0;s=0),e.lastTimescaleUnits+=p,e.lastSample.timescaleUnitsToNextSample=p,!this.isFragmented){let g=Rs(e.timeToSampleTable);if(ze(g),g.sampleCount===1){g.sampleDelta=p;const f=e.timeToSampleTable[e.timeToSampleTable.length-2];f&&f.sampleDelta===p&&(f.sampleCount++,e.timeToSampleTable.pop(),g=f)}else g.sampleDelta!==p&&(g.sampleCount--,e.timeToSampleTable.push(g={sampleCount:1,sampleDelta:p}));g.sampleDelta===l?g.sampleCount++:e.timeToSampleTable.push({sampleCount:1,sampleDelta:l});const h=Rs(e.compositionTimeOffsetTable);ze(h),h.sampleCompositionTimeOffset===o?h.sampleCount++:e.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:o})}}else e.lastTimescaleUnits=ta(r.decodeTimestamp,e.timescale,!1),this.isFragmented||(e.timeToSampleTable.push({sampleCount:1,sampleDelta:l}),e.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:o}));e.lastSample=r}if(e.timestampProcessingQueue.length=0,ze(e.lastSample),ze(e.lastTimescaleUnits!==null),a!==void 0&&e.lastSample.timescaleUnitsToNextSample===0){ze(a.type==="key");const s=ta(a.timestamp,e.timescale,!1),r=Math.round(s-e.lastTimescaleUnits);e.lastSample.timescaleUnitsToNextSample=r}}async registerSample(e,a){a.type==="key"&&this.processTimestamps(e,a),e.timestampProcessingQueue.push(a),this.isFragmented?(e.sampleQueue.push(a),await this.interleaveSamples()):this.fastStart==="reserve"?await this.registerSampleFastStartReserve(e,a):await this.addSampleToTrack(e,a)}async addSampleToTrack(e,a){if(!this.isFragmented&&(e.samples.push(a),this.fastStart==="reserve")){const s=e.track.metadata.maximumPacketCount;if(ze(s!==void 0),e.samples.length>s)throw new Error(`Track #${e.track.id} has already reached the maximum packet count (${s}). Either add less packets or increase the maximum packet count.`)}let n=!1;if(!e.currentChunk)n=!0;else{e.currentChunk.startTimestamp=Math.min(e.currentChunk.startTimestamp,a.timestamp);const s=a.timestamp-e.currentChunk.startTimestamp;if(this.isFragmented){const r=this.trackDatas.every(o=>{if(e===o)return a.type==="key";const l=o.sampleQueue[0];return l?l.type==="key":o.closed});s>=this.minimumFragmentDuration&&r&&a.timestamp>this.maxWrittenTimestamp&&(n=!0,await this.finalizeFragment())}else n=s>=.5}n&&(e.currentChunk&&await this.finalizeCurrentChunk(e),e.currentChunk={startTimestamp:a.timestamp,samples:[],offset:null,moofOffset:null,trafIndex:null}),ze(e.currentChunk),e.currentChunk.samples.push(a),this.isFragmented&&(this.maxWrittenTimestamp=Math.max(this.maxWrittenTimestamp,a.timestamp),this.maxWrittenEndTimestamp=Math.max(this.maxWrittenEndTimestamp,a.timestamp+a.duration),this.minWrittenTimestamp=Math.min(this.minWrittenTimestamp,a.timestamp))}async finalizeCurrentChunk(e){if(ze(!this.isFragmented),ze(this.writer),!e.currentChunk)return;e.finalizedChunks.push(e.currentChunk),this.finalizedChunks.push(e.currentChunk);let a=e.currentChunk.samples.length;if(e.type==="audio"&&e.info.requiresPcmTransformation&&(a=e.currentChunk.samples.reduce((n,s)=>n+ta(s.duration,e.timescale),0)),(e.compactlyCodedChunkTable.length===0||Rs(e.compactlyCodedChunkTable).samplesPerChunk!==a)&&e.compactlyCodedChunkTable.push({firstChunk:e.finalizedChunks.length,samplesPerChunk:a}),this.fastStart==="in-memory"){e.currentChunk.offset=0;return}e.currentChunk.offset=this.writer.getPos();for(const n of e.currentChunk.samples)ze(n.data),this.writer.write(n.data),n.data=null;await this.writer.flush()}async interleaveSamples(e=!1){if(ze(this.isFragmented),!(!e&&!this.allTracksAreKnown()))e:for(;;){let a=null,n=1/0;for(const r of this.trackDatas){if(!e&&r.sampleQueue.length===0&&!r.closed)break e;r.sampleQueue.length>0&&r.sampleQueue[0].timestampm.currentChunk);if(a.length===0){e&&await this.writer.flush();return}const n=this.nextFragmentNumber++,s=_b(n,a),r=this.writer.getPos(),o=r+this.boxWriter.measureBox(s);let l=o+qm,u=1/0;for(let m=0;m=2**32;if(g)for(const m of a)m.currentChunk.offset+=Ov-qm;this.formatOptions.onMoof&&this.writer.startTrackingWrites();const h=_b(n,a);if(this.boxWriter.writeBox(h),this.formatOptions.onMoof){const{data:m,start:d}=this.writer.stopTrackingWrites();this.formatOptions.onMoof(m,d,u)}ze(this.writer.getPos()===o),this.formatOptions.onMdat&&this.writer.startTrackingWrites();const f=ou(g);f.size=p,this.boxWriter.writeBox(f),this.writer.seek(o+(g?Ov:qm));for(const m of a)for(const d of m.currentChunk.samples)this.writer.write(d.data),d.data=null;if(this.formatOptions.onMdat){const{data:m,start:d}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(m,d)}for(const m of a)m.finalizedChunks.push(m.currentChunk),this.finalizedChunks.push(m.currentChunk),m.currentChunk=null;e&&await this.writer.flush()}async registerSampleFastStartReserve(e,a){this.allTracksAreKnown()?(this.mdat||await this.createFastStartReserveMdat(),await this.addSampleToTrack(e,a)):e.sampleQueue.push(a)}async createFastStartReserveMdat(){ze(this.writer),ze(this.boxWriter),this.ensureOneEnabledTrack();const e=Fc(this),n=this.boxWriter.measureBox(e)+this.computeSampleTableSizeUpperBound()+4096;ze(this.ftypSize!==null),this.writer.seek(this.ftypSize+n),this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat=ou(!0),this.boxWriter.writeBox(this.mdat);for(const s of this.trackDatas){for(const r of s.sampleQueue)await this.addSampleToTrack(s,r);s.sampleQueue.length=0}}computeSampleTableSizeUpperBound(){ze(this.fastStart==="reserve");let e=0;for(const a of this.trackDatas){const n=a.track.metadata.maximumPacketCount;ze(n!==void 0),e+=8*Math.ceil(2/3*n),e+=4*n,e+=8*Math.ceil(2/3*n),e+=12*Math.ceil(2/3*n),e+=4*n,e+=8*n}return e}async onTrackClose(e){const a=await this.mutex.acquire(),n=this.trackDatas.find(s=>s.track===e);n&&(n.closed=!0,n.type==="subtitle"&&e.source._codec==="webvtt"&&await this.processWebVTTCues(n,1/0),this.processTimestamps(n)),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),this.isFragmented&&await this.interleaveSamples(),a()}ensureOneEnabledTrack(){for(const e of["video","audio","subtitle"]){const a=this.trackDatas.filter(s=>s.type===e);if(a.length===0)continue;if(!a.some(s=>s.track.metadata.disposition?.default!==!1)){const s=a[0];s.track.metadata.disposition={...s.track.metadata.disposition,default:!0}}}}async forceFragmentFinalization(){ze(this.isFragmented);const e=await this.mutex.acquire();try{for(const a of this.trackDatas)a.type==="subtitle"&&a.track.source._codec==="webvtt"&&await this.processWebVTTCues(a,1/0),this.processTimestamps(a);await this.interleaveSamples(!0),await this.finalizeFragment()}finally{e()}}async finalize(){const e=await this.mutex.acquire();this.allTracksKnown.resolve(),this.ensureOneEnabledTrack(),!this.mdat&&this.fastStart==="reserve"&&await this.createFastStartReserveMdat();for(const a of this.trackDatas)a.closed=!0,a.type==="subtitle"&&a.track.source._codec==="webvtt"&&await this.processWebVTTCues(a,1/0),this.processTimestamps(a);if(this.isFragmented)await this.interleaveSamples(!0),await this.finalizeFragment(!1);else for(const a of this.trackDatas){await this.finalizeCurrentChunk(a);const n=bl(a);if(n>0){let l=0;for(const u of a.samples)l+=u.size;a.avgBitrate=Math.round(8*l/n)}else a.avgBitrate=0;let s=0,r=0,o=0;for(let l=0;l=1;)r-=a.samples[s].size,s++;o=Math.max(o,r)}if(a.maxBitrate=8*o,a.startTimestampOffset!==null)for(let l=0;l=2**32&&(this.mdat.largeSize=!0)}this.formatOptions.onMoov&&this.writer.startTrackingWrites();const n=Fc(this);if(this.boxWriter.writeBox(n),this.formatOptions.onMoov){const{data:s,start:r}=this.writer.stopTrackingWrites();this.formatOptions.onMoov(s,r)}this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat.size=a,this.boxWriter.writeBox(this.mdat);for(const s of this.finalizedChunks)for(const r of s.samples)ze(r.data),this.writer.write(r.data),r.data=null;if(this.formatOptions.onMdat){const{data:s,start:r}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(s,r)}}else if(this.isFragmented)if(this.isCmaf){const a=this.segmentHeaderSize!==null?this.writer.getPos()-this.segmentHeaderSize:0;this.writer.seek(0),this.boxWriter.writeBox(pb()),this.boxWriter.writeBox(gb(this,a))}else{const a=this.writer.getPos(),n=S7(this.trackDatas);this.boxWriter.writeBox(n);const s=this.writer.getPos()-a;this.writer.seek(this.writer.getPos()-4),this.boxWriter.writeU32(s)}else{ze(this.mdat);const a=this.boxWriter.offsets.get(this.mdat);ze(a!==void 0);const n=this.writer.getPos()-a;if(this.mdat.size=n,this.mdat.largeSize=n>=2**32,this.boxWriter.patchBox(this.mdat),this.formatOptions.onMdat){const{data:r,start:o}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(r,o)}const s=Fc(this);if(this.fastStart==="reserve"){ze(this.ftypSize!==null),this.writer.seek(this.ftypSize),this.formatOptions.onMoov&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(s);const r=this.boxWriter.offsets.get(this.mdat)-this.writer.getPos();this.boxWriter.writeBox(MG(r))}else this.formatOptions.onMoov&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(s);if(this.formatOptions.onMoov){const{data:r,start:o}=this.writer.stopTrackingWrites();this.formatOptions.onMoov(r,o)}}e()}}class L7{constructor(e){this.sourceSampleRate=null,this.sourceNumberOfChannels=null,this.startTime=null,this.bufferStartFrame=0,this.maxWrittenFrame=null,this.targetSampleRate=e.targetSampleRate,this.targetNumberOfChannels=e.targetNumberOfChannels,this.onSample=e.onSample,this.bufferSizeInFrames=Math.floor(this.targetSampleRate*5),this.bufferSizeInSamples=this.bufferSizeInFrames*this.targetNumberOfChannels}doChannelMixerSetup(){ze(this.sourceNumberOfChannels!==null);const e=this.sourceNumberOfChannels,a=this.targetNumberOfChannels;e===1&&a===2?this.channelMixer=(n,s)=>n[s*e]:e===1&&a===4?this.channelMixer=(n,s,r)=>n[s*e]*+(r<2):e===1&&a===6?this.channelMixer=(n,s,r)=>n[s*e]*+(r===2):e===2&&a===1?this.channelMixer=(n,s)=>{const r=s*e;return .5*(n[r]+n[r+1])}:e===2&&a===4?this.channelMixer=(n,s,r)=>r<2?n[s*e+r]:0:e===2&&a===6?this.channelMixer=(n,s,r)=>r<2?n[s*e+r]:0:e===4&&a===1?this.channelMixer=(n,s)=>{const r=s*e;return .25*(n[r]+n[r+1]+n[r+2]+n[r+3])}:e===4&&a===2?this.channelMixer=(n,s,r)=>{const o=s*e;return .5*(n[o+r]+n[o+r+2])}:e===4&&a===6?this.channelMixer=(n,s,r)=>{const o=s*e;return r<2?n[o+r]:r===2||r===3?0:n[o+r-2]}:e===6&&a===1?this.channelMixer=(n,s)=>{const r=s*e;return Math.SQRT1_2*(n[r]+n[r+1])+n[r+2]+.5*(n[r+4]+n[r+5])}:e===6&&a===2?this.channelMixer=(n,s,r)=>{const o=s*e;return n[o+r]+Math.SQRT1_2*(n[o+2]+n[o+r+4])}:e===6&&a===4?this.channelMixer=(n,s,r)=>{const o=s*e;return r<2?n[o+r]+Math.SQRT1_2*n[o+2]:n[o+r+2]}:this.channelMixer=(n,s,r)=>r=this.bufferStartFrame+this.bufferCapacityInFrames;)await this.finalizeCurrentBuffer(),this.bufferStartFrame+=this.bufferSizeInFrames;const g=p-this.bufferStartFrame;ze(g=0&&d=0&&c=this.bufferSizeInFrames?this.maxWrittenFrame-this.bufferSizeInFrames:null}async finalize(){for(;this.maxWrittenFrame!==null;)await this.finalizeCurrentBuffer(),this.bufferStartFrame+=this.bufferSizeInFrames}}var D7=function(t,e,a){if(e!=null){if(typeof e!="object"&&typeof e!="function")throw new TypeError("Object expected.");var n,s;if(a){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=e[Symbol.asyncDispose]}if(n===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=e[Symbol.dispose],a&&(s=n)}if(typeof n!="function")throw new TypeError("Object not disposable.");s&&(n=function(){try{s.call(this)}catch(r){return Promise.reject(r)}}),t.stack.push({value:e,dispose:n,async:a})}else a&&t.stack.push({async:!0});return e},V7=(function(t){return function(e){function a(o){e.error=e.hasError?new t(o,e.error,"An error was suppressed during disposal."):o,e.hasError=!0}var n,s=0;function r(){for(;n=e.stack.pop();)try{if(!n.async&&s===1)return s=0,e.stack.push(n),Promise.resolve().then(r);if(n.dispose){var o=n.dispose.call(n.value);if(n.async)return s|=2,Promise.resolve(o).then(r,function(l){return a(l),r()})}else s|=1}catch(l){a(l)}if(s===1)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}return r()}})(typeof SuppressedError=="function"?SuppressedError:function(t,e,a){var n=new Error(a);return n.name="SuppressedError",n.error=t,n.suppressed=e,n});class Im{constructor(){this._connectedTrack=null,this._closingPromise=null,this._closed=!1,this._nominalBitrate=null}_ensureValidAdd(){if(!this._connectedTrack)throw new Error("Source is not connected to an output track.");if(this._connectedTrack.output.state==="canceled")throw new Error("Output has been canceled.");if(this._connectedTrack.output.state==="finalizing"||this._connectedTrack.output.state==="finalized")throw new Error("Output has been finalized.");if(this._connectedTrack.output.state==="pending")throw new Error("Output has not started.");if(this._closed)throw new Error("Source is closed.")}async _start(){}async _flushAndClose(e){}close(){if(this._closingPromise)return;const e=this._connectedTrack;if(!e)throw new Error("Cannot call close without connecting the source to an output track.");if(e.output.state==="pending")throw new Error("Cannot call close before output has been started.");this._closingPromise=(async()=>{await this._flushAndClose(!1),this._closed=!0,!(e.output.state==="finalizing"||e.output.state==="finalized")&&e.output._muxer.onTrackClose(e)})()}async _flushOrWaitForOngoingClose(e){return this._closingPromise??=(async()=>{await this._flushAndClose(e),this._closed=!0})()}}class xb extends Im{constructor(e){if(super(),!Sr.includes(e))throw new TypeError(`Invalid video codec '${e}'. Must be one of: ${Sr.join(", ")}.`);this._codec=e}}const Sb=(t,e)=>{if(t.metadata.hasOnlyKeyPackets&&e.type!=="key")throw new Error("Cannot add non-key packets to a hasOnlyKeyPackets video track.")};class H7{setError(e){this.errorSet||(this.error=e,this.errorSet=!0)}constructor(e,a){this.source=e,this.encodingConfig=a,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.muxer=null,this.lastMultipleOfKeyFrameInterval=-1,this.emittedEncoderPackets=0,this.codedWidth=null,this.codedHeight=null,this.outputWidth=null,this.outputHeight=null,this.frameRateLastSample=null,this.frameRateLastTimestamp=null,this.frameRateLastEndTimestamp=null,this.preciseTimings=[],this.customEncoder=null,this.customEncoderCallSerializer=new gv,this.customEncoderQueueSize=0,this.defaultEncodeOptions={},this.alphaEncoder=null,this.splitter=null,this.splitterCreationFailed=!1,this.alphaFrameQueue=[],this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(e,a,n){const s=e;try{this.checkForEncoderError(),this.source._ensureValidAdd();const r=this.encodingConfig,o=r.sizeChangeBehavior??"deny";let l=!1;if(this.codedWidth!==null&&this.codedHeight!==null){if((e.codedWidth!==this.codedWidth||e.codedHeight!==this.codedHeight)&&(l=!0,o==="deny"))throw new Error(`Video sample size must remain constant. Expected ${this.codedWidth}x${this.codedHeight}, got ${e.codedWidth}x${e.codedHeight}. To allow the sample size to change over time, set \`sizeChangeBehavior\` to a value other than 'deny' in the encoding options.`)}else this.codedWidth=e.codedWidth,this.codedHeight=e.codedHeight;if(r.transform?.width!==void 0||r.transform?.height!==void 0||r.transform?.rotate!==void 0||r.transform?.flip!==void 0||r.transform?.crop!==void 0||r.transform?.force===!0||l&&o!=="passThrough"){let h=r.transform?.width,f=r.transform?.height,m=r.transform?.fit??"fill";l&&o!=="passThrough"&&(ze(this.outputWidth),ze(this.outputHeight),ze(o!=="deny"),h=this.outputWidth,f=this.outputHeight,m=o);const d=await e.transform({width:h,height:f,roundDimensionsTo:2,crop:r.transform?.crop,rotate:r.transform?.rotate,flip:r.transform?.flip,fit:m,alpha:r.alpha});(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=d.displayWidth,this.outputHeight=d.displayHeight),a&&e.close(),e=d,a=!0}else(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=e.codedWidth,this.outputHeight=e.codedHeight);const g=r.transform?.frameRate;if(g!==void 0){const h=e.timestamp+e.duration,f=pv(e.timestamp,g);if(this.frameRateLastSample!==null)if(f<=this.frameRateLastTimestamp){this.frameRateLastSample.close(),this.frameRateLastSample=e.clone(),this.frameRateLastEndTimestamp=h;return}else await this.padFrameRate(f,n);e===s&&(e=e.clone(),a=!0),e.setTimestamp(f),e.setDuration(1/g),this.frameRateLastSample?.close(),this.frameRateLastSample=e.clone(),this.frameRateLastTimestamp=f,this.frameRateLastEndTimestamp=h}await this.processAndEncode(e,n)}finally{a&&e.close()}}async processAndEncode(e,a){const n=this.encodingConfig;let s;if(n.transform?.process){let r=n.transform.process(e);if(Vr(r)&&(r=await r),r===null)return;Array.isArray(r)||(r=[r]);const o=[];try{for(const l of r)l instanceof Jn?o.push(l):typeof VideoFrame<"u"&&l instanceof VideoFrame?o.push(new Jn(l)):o.push(new Jn(l,{timestamp:e.timestamp,duration:e.duration}))}catch(l){for(const u of o)u!==e&&u.close();for(const u of r)(u instanceof Jn&&u!==e||typeof VideoFrame<"u"&&u instanceof VideoFrame)&&u.close();throw l}s=o}else s=[e];try{for(const r of s){if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(r),this.encoderInitialized||await this.ensureEncoderPromise),ze(this.encoderInitialized),this.closed)break;const o=this.encodingConfig.keyFrameInterval??2,l=Math.floor(r.timestamp/o),u={...this.defaultEncodeOptions,...r.encodeOptions,...a},p={...u,keyFrame:u.keyFrame!==void 0?u.keyFrame:o===0||l!==this.lastMultipleOfKeyFrameInterval};if(this.lastMultipleOfKeyFrameInterval=l,this.encodingConfig.onEncodedSample?.(r),this.customEncoder){this.customEncoderQueueSize++;const g=r.clone(),h=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(g,p)).catch(f=>this.setError(f)).finally(()=>{this.customEncoderQueueSize--,g.close()});this.customEncoderQueueSize>=4&&await h}else{ze(this.encoder);const g=r.toVideoFrame(),h=dv(this.preciseTimings,g.timestamp,m=>m.microsecondTimestamp),f=h!==-1?this.preciseTimings[h]:null;if(f&&f.microsecondTimestamp===g.timestamp?(f.timestamp!==r.timestamp&&(f.timestampIsValid=!1),f.duration!==r.duration&&(f.durationIsValid=!1)):(this.preciseTimings.splice(h+1,0,{microsecondTimestamp:g.timestamp,timestamp:r.timestamp,duration:r.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift()),this.alphaEncoder)if(!!g.format&&!g.format.includes("A")||this.splitterCreationFailed){this.alphaFrameQueue.push(null);try{this.encoder.encode(g,p)}finally{g.close()}}else{this.splitter||(this.splitter=new W7);const{colorFrame:d,alphaFrame:c}=await this.splitter.split(g);this.alphaFrameQueue.push(c);try{this.encoder.encode(d,p)}finally{d.close()}}else try{this.encoder.encode(g,p)}finally{g.close()}this.encoder.encodeQueueSize>=4&&await new Promise(m=>this.encoder.addEventListener("dequeue",m,{once:!0}))}await this.lastMuxerPromise}}finally{for(const r of s)r!==e&&r.close()}}async padFrameRate(e,a){const n=this.encodingConfig.transform.frameRate;ze(this.frameRateLastSample);const s=Math.round((e-this.frameRateLastTimestamp)*n);for(let r=1;r{const a=su(this.encodingConfig.quality,this.encodingConfig.bitrate);ze(a!==void 0);const n=tb({...this.encodingConfig,quality:a,width:e.codedWidth,height:e.codedHeight,squarePixelWidth:e.squarePixelWidth,squarePixelHeight:e.squarePixelHeight,framerate:this.source._connectedTrack?.metadata.frameRate});let s=null,r;for(const l of n){const u=l.config;if(this.encodingConfig.onEncoderConfig?.(u),r=ob.find(g=>g.supports(this.encodingConfig.codec,u)),r){s=l;break}if(typeof VideoEncoder>"u")continue;if(u.alpha="discard",this.encodingConfig.alpha==="keep"&&(u.latencyMode="quality"),(u.width%2===1||u.height%2===1)&&(this.encodingConfig.codec==="avc"||this.encodingConfig.codec==="hevc"))throw new Error(`The dimensions ${u.width}x${u.height} are not supported for codec '${this.encodingConfig.codec}'; both width and height must be even numbers. Make sure to round your dimensions to the nearest even number.`);try{if((await VideoEncoder.isConfigSupported(u)).supported){s=l;break}}catch{}}if(!s){if(typeof VideoEncoder>"u")throw new Error(_v("VideoEncoder"));const l=n[0].config,u=n.map(({config:p,quantizer:g})=>g!==null?`quantizer ${g}`:`${p.bitrate} bps`);throw new Error(`This specific encoder configuration (${l.codec}, ${u.join(" / ")}, ${l.width}x${l.height}, hardware acceleration: ${l.hardwareAcceleration??"no-preference"}) is not supported in this environment. Consider using another codec or changing your video parameters.`)}const o=s.config;if(s.quantizer!==null?this.defaultEncodeOptions=rb(this.encodingConfig.codec,s.quantizer):this.source._nominalBitrate=o.bitrate??null,r)this.customEncoder=new r,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=o,this.customEncoder.onPacket=(l,u)=>{if(!(l instanceof Js))throw new TypeError("The first argument passed to onPacket must be an EncodedPacket.");if(u!==void 0&&(!u||typeof u!="object"))throw new TypeError("The second argument passed to onPacket must be an object or undefined.");Sb(this.source._connectedTrack,l),this.encodingConfig.onEncodedPacket?.(l,u),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,l,u).catch(p=>{this.setError(p)})},this.customEncoder.onError=l=>{this.setError(l)},await this.customEncoder.init();else{const l=[],u=[];let p=0,g=0;const h=(m,d,c)=>{const _={};if(d){const T=new Uint8Array(d.byteLength);d.copyTo(T),_.alpha=T}let b=Js.fromEncodedChunk(m,_);const v=dv(this.preciseTimings,m.timestamp,T=>T.microsecondTimestamp),k=v!==-1?this.preciseTimings[v]:null;let y=null;this.emittedEncoderPackets===0&&b.type==="delta"&&c?.decoderConfig&&(y=Tq(this.encodingConfig.codec,c.decoderConfig,b.data)),(k&&k.microsecondTimestamp===m.timestamp||y!==null)&&(b=b.clone({timestamp:k?.timestampIsValid?k.timestamp:void 0,duration:k?.durationIsValid?k.duration:void 0,type:y??void 0})),Sb(this.source._connectedTrack,b),this.encodingConfig.onEncodedPacket?.(b,c),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,b,c).catch(T=>{this.setError(T)}),this.emittedEncoderPackets++},f=new Error("Encoding error").stack;if(this.encoder=new VideoEncoder({output:(m,d)=>{if(!this.alphaEncoder){h(m,null,d);return}const c=this.alphaFrameQueue.shift();ze(c!==void 0),c?(this.alphaEncoder.encode(c,{...this.defaultEncodeOptions,keyFrame:m.type==="key"}),g++,c.close(),l.push({chunk:m,meta:d})):g===0?h(m,null,d):(u.push(p+g),l.push({chunk:m,meta:d}))},error:m=>{m.stack=f,this.setError(m)}}),this.encoder.configure(o),this.encodingConfig.alpha==="keep"){const m=new Error("Encoding error").stack;this.alphaEncoder=new VideoEncoder({output:(d,c)=>{g--;const _=l.shift();for(ze(_!==void 0),h(_.chunk,d,_.meta),p++;u.length>0&&u[0]===p;){u.shift();const b=l.shift();ze(b!==void 0),h(b.chunk,null,b.meta)}},error:d=>{d.stack=m,this.setError(d)}}),this.alphaEncoder.configure(o)}}ze(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}async flushAndClose(e){try{if(!e&&(this.checkForEncoderError(),this.frameRateLastSample)){const a=this.encodingConfig.transform.frameRate,n=pv(this.frameRateLastEndTimestamp,a);await this.padFrameRate(n)}this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&(await this.encoder.flush(),await this.alphaEncoder?.flush(),await eq(25)))}finally{this.closed=!0,this.frameRateLastSample?.close(),this.frameRateLastSample=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(a=>this.setError(a)):this.encoder&&(this.encoder.state!=="closed"&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!=="closed"&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(a=>a?.close()),this.alphaFrameQueue.length=0,this.splitter?.close())}e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}}let Lm=null;class W7{constructor(){this.worker=null,this.pendingRequests=new Map,this.nextRequestId=0}split(e){if(!this.worker){if(!Lm){const s=new Blob([`(${Q7.toString()})()`],{type:"application/javascript"});Lm=URL.createObjectURL(s)}this.worker=new Worker(Lm),this.worker.addEventListener("message",s=>{const r=s.data,o=this.pendingRequests.get(r.id);o&&(this.pendingRequests.delete(r.id),"error"in r?o.reject(new Error(r.error)):o.resolve({colorFrame:r.colorFrame,alphaFrame:r.alphaFrame}))}),this.worker.addEventListener("error",s=>{const r=new Error(s.message||"Color/alpha splitter worker error.");for(const o of this.pendingRequests.values())o.reject(r);this.pendingRequests.clear()})}const a=this.nextRequestId++,n=uv();return this.pendingRequests.set(a,n),this.worker.postMessage({id:a,sourceFrame:e},{transfer:[e]}),n.promise}close(){this.worker?.terminate(),this.worker=null;const e=new Error("Color/alpha splitter closed.");for(const a of this.pendingRequests.values())a.reject(e);this.pendingRequests.clear()}}const Q7=()=>{let t=null,e=Promise.resolve();self.addEventListener("message",r=>{const{id:o,sourceFrame:l}=r.data;e=e.then(async()=>{try{const{colorFrame:u,alphaFrame:p}=await a(l);self.postMessage({id:o,colorFrame:u,alphaFrame:p},{transfer:[u,p]})}catch(u){self.postMessage({id:o,error:u.message})}finally{l.close()}})});const a=async r=>{const o=r.format;if(!o)throw new Error("CPU color/alpha splitting requires a known VideoFrame format.");const l=r.allocationSize();if((!t||t.byteLength!==l)&&(t=new Uint8Array(l)),await r.copyTo(t),o==="RGBA"||o==="BGRA")return n(t,o,r);if(o==="I420A"||o==="I420AP10"||o==="I420AP12"||o==="I422A"||o==="I422AP10"||o==="I422AP12"||o==="I444A"||o==="I444AP10"||o==="I444AP12")return s(t,o,r);throw new Error(`CPU color/alpha splitting does not support format '${o}'.`)},n=(r,o,l)=>{const u=l.visibleRect?.width??l.codedWidth,p=l.visibleRect?.height??l.codedHeight,g=u*p,h=Math.ceil(u/2),f=Math.ceil(p/2),m=g+h*f*2,d=new Uint8Array(m);for(let v=0,k=3;v{const u=l.visibleRect?.width??l.codedWidth,p=l.visibleRect?.height??l.codedHeight,g=o.includes("P10"),h=o.includes("P12"),f=g||h?2:1;let m,d;o.startsWith("I420")?(m=Math.ceil(u/2),d=Math.ceil(p/2)):o.startsWith("I422")?(m=Math.ceil(u/2),d=p):(m=u,d=p);const c=u*p,_=m*d,b=c*f,v=_*f,k=c*f,y=b+v*2,T=o.replace("A",""),O=Math.ceil(u/2),j=Math.ceil(p/2),$=O*j,P=$*f,L=k+2*P,x=new Uint8Array(L),B=y;x.set(r.subarray(B,B+k),0);const D=k,A=g?512:h?2048:128;f===1?x.fill(A,D):new Uint16Array(x.buffer,D,2*$).fill(A);const G=g?"I420P10":h?"I420P12":"I420",U=new VideoFrame(r.subarray(0,y),{format:T,codedWidth:u,codedHeight:p,timestamp:l.timestamp,duration:l.duration??void 0}),V={format:G,codedWidth:u,codedHeight:p,timestamp:l.timestamp,duration:l.duration??void 0,transfer:[x.buffer]},I=new VideoFrame(x,V);return{colorFrame:U,alphaFrame:I}}};class K7 extends xb{constructor(e,a){if(!(typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas))throw new TypeError("canvas must be an HTMLCanvasElement or OffscreenCanvas.");yG(a),super(a.codec),this._encoder=new H7(this,a),this._canvas=e}add(e,a=0,n){if(!Number.isFinite(e))throw new TypeError("timestamp must be a finite number.");if(!Number.isFinite(a)||a<0)throw new TypeError("duration must be a non-negative number.");const s=new Jn(this._canvas,{timestamp:e,duration:a});return this._encoder.add(s,!0,n)}_flushAndClose(e){return this._encoder.flushAndClose(e)}}class Tb extends Im{constructor(e){if(super(),!Go.includes(e))throw new TypeError(`Invalid audio codec '${e}'. Must be one of: ${Go.join(", ")}.`);this._codec=e}}class Y7{setError(e){this.errorSet||(this.error=e,this.errorSet=!0)}constructor(e,a){this.source=e,this.encodingConfig=a,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.muxer=null,this.lastNumberOfChannels=null,this.lastSampleRate=null,this.isPcmEncoder=!1,this.outputSampleSize=null,this.writeOutputValue=null,this.customEncoder=null,this.customEncoderCallSerializer=new gv,this.customEncoderQueueSize=0,this.lastEndSampleIndex=null,this.resampler=null,this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(e,a){try{if(this.checkForEncoderError(),this.source._ensureValidAdd(),this.lastNumberOfChannels!==null&&this.lastSampleRate!==null){if(e.numberOfChannels!==this.lastNumberOfChannels||e.sampleRate!==this.lastSampleRate)throw new Error(`Audio parameters must remain constant. Expected ${this.lastNumberOfChannels} channels at ${this.lastSampleRate} Hz, got ${e.numberOfChannels} channels at ${e.sampleRate} Hz.`)}else this.lastNumberOfChannels=e.numberOfChannels,this.lastSampleRate=e.sampleRate;const n=this.encodingConfig;n.transform?.numberOfChannels!==void 0||n.transform?.sampleRate!==void 0?(this.resampler||(this.resampler=new L7({targetNumberOfChannels:n.transform.numberOfChannels??e.numberOfChannels,targetSampleRate:n.transform.sampleRate??e.sampleRate,onSample:async r=>{await this.processAndEncode(r,!0)}})),await this.resampler.add(e)):await this.processAndEncode(e,a)}finally{a&&e.close()}}async processAndEncode(e,a){const n=this.encodingConfig;if(n.transform?.sampleFormat!==void 0&&_G(e.format)!==n.transform.sampleFormat){const s=bG(e,n.transform.sampleFormat);a&&e.close(),e=s,a=!0}if(n.transform?.process)try{let s=n.transform.process(e);if(Vr(s)&&(s=await s),s===null)return;Array.isArray(s)||(s=[s]);try{for(const r of s)if(!(r instanceof Zn))throw new TypeError("The audio process function must return an AudioSample, null, or an array of AudioSamples.");for(const r of s)await this.encodeSample(r,!0)}finally{for(const r of s)r instanceof Zn&&r.close()}}finally{a&&e.close()}else await this.encodeSample(e,a)}async encodeSample(e,a){try{if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),ze(this.encoderInitialized),this.closed)return;{const n=Math.round(e.timestamp*e.sampleRate),s=Math.round((e.timestamp+e.duration)*e.sampleRate);if(this.lastEndSampleIndex===null)this.lastEndSampleIndex=s;else{const r=n-this.lastEndSampleIndex;if(r>=64){const o=new Zn({data:new Float32Array(r*e.numberOfChannels),format:"f32-planar",sampleRate:e.sampleRate,numberOfChannels:e.numberOfChannels,numberOfFrames:r,timestamp:this.lastEndSampleIndex/e.sampleRate});await this.encodeSample(o,!0)}this.lastEndSampleIndex+=e.numberOfFrames}}if(this.encodingConfig.onEncodedSample?.(e),this.customEncoder){this.customEncoderQueueSize++;const n=e.clone(),s=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(n)).catch(r=>this.setError(r)).finally(()=>{this.customEncoderQueueSize--,n.close()});this.customEncoderQueueSize>=4&&await s,await this.lastMuxerPromise}else if(this.isPcmEncoder)await this.doPcmEncoding(e,a);else{ze(this.encoder);const n=e.toAudioData();this.encoder.encode(n),n.close(),a&&e.close(),this.encoder.encodeQueueSize>=4&&await new Promise(s=>this.encoder.addEventListener("dequeue",s,{once:!0})),await this.lastMuxerPromise}}finally{a&&e.close()}}async doPcmEncoding(e,a){ze(this.outputSampleSize),ze(this.writeOutputValue);const{numberOfChannels:n,numberOfFrames:s,sampleRate:r,timestamp:o}=e,l=2048,u=[];for(let c=0;c{const{numberOfChannels:a,sampleRate:n}=e,s=su(this.encodingConfig.quality,this.encodingConfig.bitrate),r=ab({numberOfChannels:a,sampleRate:n,...this.encodingConfig,quality:s});this.encodingConfig.onEncoderConfig?.(r),this.source._nominalBitrate=r.bitrate??null;const o=lb.find(l=>l.supports(this.encodingConfig.codec,r));if(o)this.customEncoder=new o,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=r,this.customEncoder.onPacket=(l,u)=>{if(!(l instanceof Js))throw new TypeError("The first argument passed to onPacket must be an EncodedPacket.");if(u!==void 0&&(!u||typeof u!="object"))throw new TypeError("The second argument passed to onPacket must be an object or undefined.");this.encodingConfig.onEncodedPacket?.(l,u),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,l,u).catch(p=>{this.setError(p)})},this.customEncoder.onError=l=>{this.setError(l)},await this.customEncoder.init();else if(js.includes(this.encodingConfig.codec))this.initPcmEncoder();else{if(typeof AudioEncoder>"u")throw new Error(_v("AudioEncoder"));let l;try{l=(await AudioEncoder.isConfigSupported(r)).supported??!1}catch{l=!1}if(!l)throw new Error(`This specific encoder configuration (${r.codec}, ${r.bitrate} bps, ${r.numberOfChannels} channels, ${r.sampleRate} Hz) is not supported in this environment. Consider using another codec or changing your audio parameters.`);const u=new Error("Encoding error").stack;this.encoder=new AudioEncoder({output:(p,g)=>{if(this.encodingConfig.codec==="aac"&&g?.decoderConfig){let f=!1;if(!g.decoderConfig.description||g.decoderConfig.description.byteLength<2?f=!0:f=sq(ys(g.decoderConfig.description)).objectType===0,f){const m=Number(Rs(r.codec.split(".")));g.decoderConfig.description=kv({objectType:m,outputNumberOfChannels:g.decoderConfig.numberOfChannels,outputSampleRate:g.decoderConfig.sampleRate})}}let h=Js.fromEncodedChunk(p);h=h.clone({timestamp:mv(h.timestamp,r.sampleRate),duration:p.duration!=null?mv(h.duration,r.sampleRate):void 0}),this.encodingConfig.onEncodedPacket?.(h,g),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,h,g).catch(f=>{this.setError(f)})},error:p=>{p.stack=u,this.setError(p)}}),this.encoder.configure(r)}ze(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}initPcmEncoder(){this.isPcmEncoder=!0;const e=this.encodingConfig.codec,{dataType:a,sampleSize:n,littleEndian:s}=Fo(e);switch(this.outputSampleSize=n,n){case 1:a==="unsigned"?this.writeOutputValue=(r,o,l)=>r.setUint8(o,Sn(Math.round(l*128)+128,0,255)):a==="signed"?this.writeOutputValue=(r,o,l)=>{r.setInt8(o,Sn(Math.round(l*128),-128,127))}:a==="ulaw"?this.writeOutputValue=(r,o,l)=>{const u=Sn(Math.round(l*32768),-32768,32767);r.setUint8(o,TG(u))}:a==="alaw"?this.writeOutputValue=(r,o,l)=>{const u=Sn(Math.round(l*32768),-32768,32767);r.setUint8(o,$G(u))}:ze(!1);break;case 2:a==="unsigned"?this.writeOutputValue=(r,o,l)=>r.setUint16(o,Sn(Math.round(l*32768)+32768,0,65535),s):a==="signed"?this.writeOutputValue=(r,o,l)=>r.setInt16(o,Sn(Math.round(l*32768),-32768,32767),s):ze(!1);break;case 3:a==="unsigned"?this.writeOutputValue=(r,o,l)=>pm(r,o,Sn(Math.round(l*8388608)+8388608,0,16777215),s):a==="signed"?this.writeOutputValue=(r,o,l)=>O$(r,o,Sn(Math.round(l*8388608),-8388608,8388607),s):ze(!1);break;case 4:a==="unsigned"?this.writeOutputValue=(r,o,l)=>r.setUint32(o,Sn(Math.round(l*2147483648)+2147483648,0,4294967295),s):a==="signed"?this.writeOutputValue=(r,o,l)=>r.setInt32(o,Sn(Math.round(l*2147483648),-2147483648,2147483647),s):a==="float"?this.writeOutputValue=(r,o,l)=>r.setFloat32(o,l,s):ze(!1);break;case 8:a==="float"?this.writeOutputValue=(r,o,l)=>r.setFloat64(o,l,s):ze(!1);break;default:qo(n),ze(!1)}}async flushAndClose(e){try{e||(this.checkForEncoderError(),this.resampler&&await this.resampler.finalize()),this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&await this.encoder.flush())}finally{this.closed=!0,this.resampler=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(a=>this.setError(a)):this.encoder&&this.encoder.state!=="closed"&&this.encoder.close()}e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.isPcmEncoder?0:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}}class X7 extends Tb{constructor(e,a={}){if(wG(e),typeof a!="object"||!a)throw new TypeError("options must be an object.");if(a.startTimestamp!==void 0&&!Number.isFinite(a.startTimestamp))throw new TypeError("options.startTimestamp, when provided, must be a finite number.");super(e.codec),this._encoder=new Y7(this,e),this._accumulatedTime=a.startTimestamp??0}async add(e){if(!(e instanceof AudioBuffer))throw new TypeError("audioBuffer must be an AudioBuffer.");const a=Zn._fromAudioBuffer(e,this._accumulatedTime);this._accumulatedTime+=e.duration;for(const n of a)await this._encoder.add(n,!0)}_flushAndClose(e){return this._encoder.flushAndClose(e)}}class J7 extends Im{constructor(e){if(super(),!wc.includes(e))throw new TypeError(`Invalid subtitle codec '${e}'. Must be one of: ${wc.join(", ")}.`);this._codec=e}}class $b{get supportsVideoRotationMetadata(){return this.supportsVideoTransformationMetadata}getSupportedVideoCodecs(){return this.getSupportedCodecs().filter(e=>Sr.includes(e))}getSupportedAudioCodecs(){return this.getSupportedCodecs().filter(e=>Go.includes(e))}getSupportedSubtitleCodecs(){return this.getSupportedCodecs().filter(e=>wc.includes(e))}_codecUnsupportedHint(e){return""}_isFragmentedIsobmff(){return!1}}class Dm extends $b{constructor(e={}){if(!e||typeof e!="object")throw new TypeError("options must be an object.");if(e.fastStart!==void 0&&![!1,"in-memory","reserve","fragmented"].includes(e.fastStart))throw new TypeError("options.fastStart, when provided, must be false, 'in-memory', 'reserve', or 'fragmented'.");if(e.minimumFragmentDuration!==void 0&&(!J$(e.minimumFragmentDuration)||e.minimumFragmentDuration<0))throw new TypeError("options.minimumFragmentDuration, when provided, must be a non-negative number.");if(e.onFtyp!==void 0&&typeof e.onFtyp!="function")throw new TypeError("options.onFtyp, when provided, must be a function.");if(e.onMoov!==void 0&&typeof e.onMoov!="function")throw new TypeError("options.onMoov, when provided, must be a function.");if(e.onMdat!==void 0&&typeof e.onMdat!="function")throw new TypeError("options.onMdat, when provided, must be a function.");if(e.onMoof!==void 0&&typeof e.onMoof!="function")throw new TypeError("options.onMoof, when provided, must be a function.");if(e.metadataFormat!==void 0&&!["mdir","mdta","udta","auto"].includes(e.metadataFormat))throw new TypeError("options.metadataFormat, when provided, must be either 'auto', 'mdir', 'mdta', or 'udta'.");super(),this._options=e}getSupportedTrackCounts(){return{video:{min:0,max:4294967295},audio:{min:0,max:4294967295},subtitle:{min:0,max:4294967295},total:{min:0,max:4294967295}}}get supportsVideoTransformationMetadata(){return!0}get supportsTimestampedMediaData(){return!0}get negativeTimestampSupport(){return"full"}_createMuxer(e){return new I7(e,this)}_isFragmentedIsobmff(){return this._options.fastStart==="fragmented"}}class qb extends Dm{constructor(e){super(e)}get _name(){return"MP4"}get fileExtension(){return".mp4"}get mimeType(){return"video/mp4"}getSupportedCodecs(){return[...Sr,...Tm,"pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be",...wc]}_codecUnsupportedHint(e){return new Fb().getSupportedCodecs().includes(e)?" Switching to MOV will grant support for this codec.":""}}class Gb extends Dm{constructor(e){super(e)}get _name(){return"CMAF"}get fileExtension(){return".m4s"}get mimeType(){return"video/mp4"}getSupportedCodecs(){return[...Sr,...Tm,"pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be",...wc]}}class Fb extends Dm{constructor(e){super(e)}get _name(){return"MOV"}get fileExtension(){return".mov"}get mimeType(){return"video/quicktime"}getSupportedCodecs(){return[...Sr,...Go]}_codecUnsupportedHint(e){return new qb().getSupportedCodecs().includes(e)?" Switching to MP4 will grant support for this codec.":""}}const Ab=["video","audio","subtitle"];class Ac{constructor(e,a,n,s,r){this.id=e,this.output=a,this.type=n,this.source=s,this.metadata=r}isVideoTrack(){return this.type==="video"}isAudioTrack(){return this.type==="audio"}isSubtitleTrack(){return this.type==="subtitle"}canBePairedWith(e){if(!(e instanceof Ac))throw new TypeError("other must be an OutputTrack.");if(this===e)return!1;const a=yv(this.metadata.group),n=yv(e.metadata.group);for(const s of a)if(this.type!==e.type&&n.some(l=>s===l)||n.some(l=>s._pairedGroups.has(l)))return!0;return!1}}class Z7 extends Ac{constructor(e,a,n,s){super(e,a,"video",n,s)}}class eF extends Ac{constructor(e,a,n,s){super(e,a,"audio",n,s)}}class tF extends Ac{constructor(e,a,n,s){super(e,a,"subtitle",n,s)}}class Cc{constructor(){this._pairedGroups=new Set}pairWith(e){if(!(e instanceof Cc))throw new TypeError("other must be an OutputTrackGroup.");if(this===e)throw new TypeError("Cannot pair a group with itself.");this._pairedGroups.add(e),e._pairedGroups.add(this)}}const Vm=t=>{if(!t||typeof t!="object")throw new TypeError("metadata must be an object.");if(t.languageCode!==void 0&&!H$(t.languageCode))throw new TypeError("metadata.languageCode, when provided, must be a three-letter, ISO 639-2/T language code.");if(t.name!==void 0&&typeof t.name!="string")throw new TypeError("metadata.name, when provided, must be a string.");if(t.disposition!==void 0&&nq(t.disposition),t.maximumPacketCount!==void 0&&(!Number.isInteger(t.maximumPacketCount)||t.maximumPacketCount<0))throw new TypeError("metadata.maximumPacketCount, when provided, must be a non-negative integer.");if(t.bitrate!==void 0&&(!Number.isFinite(t.bitrate)||t.bitrate<0))throw new TypeError("metadata.bitrate, when provided, must be a non-negative number.");if(t.averageBitrate!==void 0&&(!Number.isFinite(t.averageBitrate)||t.averageBitrate<0))throw new TypeError("metadata.averageBitrate, when provided, must be a non-negative number.");if(t.group!==void 0&&!(t.group instanceof Cc)&&(!Array.isArray(t.group)||t.group.some(e=>!(e instanceof Cc))))throw new TypeError("metadata.group, when provided, must be an OutputTrackGroup instance or an array of OutputTrackGroup instances.")};class iF extends bm{get target(){const e="Output.target cannot be used when using PathedTarget with an async callback. Use the 'target' event instead.";if(this._rootTargetPromise)throw new TypeError(e);const a=this._getRootTarget();if(Vr(a))throw new TypeError(e);return a}constructor(e){if(super(),this.state="pending",this.defaultTrackGroup=new Cc,this.tracks=[],this._onFinalize=null,this._unfinalizedTargets=new Set,this._rootWriterPromise=null,this._startPromise=null,this._cancelPromise=null,this._finalizePromise=null,this._mutex=new cv,this._metadataTags={},this._rootTarget=null,this._rootTargetPromise=null,this._firstMediaStreamTimestamp=null,!e||typeof e!="object")throw new TypeError("options must be an object.");if(!(e.format instanceof $b))throw new TypeError("options.format must be an OutputFormat.");if(!(e.target instanceof Tr||e.target instanceof Om))throw new TypeError("options.target must be a Target or a PathedTarget.");if(e.target instanceof Tr&&this._rememberTarget(e.target),e.initTarget!==void 0&&!(e.initTarget instanceof Tr)&&typeof e.initTarget!="function")throw new Error("options.initTarget, when provided, must be a Target or a function that returns or resolves to a Target.");if(e.onFinalize!==void 0&&typeof e.onFinalize!="function")throw new TypeError("options.onFinalize, when provided, must be a function.");this.format=e.format,this._target=e.target,this._onFinalize=e.onFinalize??null,this._initTarget=e.initTarget??null,this._initTarget instanceof Tr&&this._rememberTarget(this._initTarget),this._muxer=e.format._createMuxer(this)}_getTargetValidated(e){ze(this._target instanceof Om);const a=this._target.getTarget(e),n=s=>{if(!(s instanceof Tr))throw new TypeError("getTarget must return a Target.");return s};return Vr(a)?a.then(n):n(a)}async _getTarget(e){ze(this._target instanceof Om);const a=await this._getTargetValidated(e);return this._emit("target",{target:a,request:e,isRoot:e.isRoot}),this.state==="canceled"?await a._close():this._rememberTarget(a),a}_rememberTarget(e){this._unfinalizedTargets.add(e),e.on("finalized",()=>this._unfinalizedTargets.delete(e),{once:!0})}async _getInitTarget(){if(ze(this._initTarget!==null),this._initTarget instanceof Tr)return this._initTarget;const e=await this._initTarget();return this.state==="canceled"?await e._close():this._rememberTarget(e),e}_hasInitTarget(){return this._initTarget!==null}_getRootTarget(){if(this._rootTarget)return this._rootTarget;if(this._rootTargetPromise)return this._rootTargetPromise;if(this._target instanceof Tr)return this._emit("target",{target:this._target,request:null,isRoot:!0}),this._rootTarget=this._target,this._target;const e={path:this._target.rootPath,isRoot:!0,mimeType:this.format.mimeType},a=this._getTargetValidated(e),n=s=>(this.state==="canceled"?s._close():this._rememberTarget(s),this._emit("target",{target:s,request:e,isRoot:!0}),this._rootTarget=s,s);return Vr(a)?this._rootTargetPromise=a.then(n):n(a)}_getRootWriter(e){return this._rootWriterPromise??=(async()=>{const a=await this._getRootTarget(),n=new jm(a,typeof e=="boolean"?e:e(a));return n.start(),n})()}addVideoTrack(e,a={}){if(!(e instanceof xb))throw new TypeError("source must be a VideoSource.");if(Vm(a),a.rotation!==void 0&&![0,90,180,270].includes(a.rotation))throw new TypeError(`Invalid video rotation: ${a.rotation}. Has to be 0, 90, 180 or 270.`);if(a.flip!==void 0&&typeof a.flip!="boolean")throw new TypeError("metadata.flip, when provided, must be a boolean.");if(a.transformationMatrix!==void 0&&(!Array.isArray(a.transformationMatrix)||a.transformationMatrix.length!==9||!a.transformationMatrix.every(s=>Number.isFinite(s))))throw new TypeError("metadata.transformationMatrix, when provided, must be an array of 9 finite numbers.");if(a.frameRate!==void 0&&(!Number.isFinite(a.frameRate)||a.frameRate<=0))throw new TypeError(`Invalid video frame rate: ${a.frameRate}. Must be a positive number.`);if(a.decoderConfig!==void 0&&jv({decoderConfig:a.decoderConfig},e._codec),a.primingPacket!==void 0){if(!(a.primingPacket instanceof Js))throw new TypeError("metadata.primingPacket, when provided, must be an EncodedPacket.");if(a.decoderConfig===void 0)throw new TypeError("metadata.primingPacket can only be provided alongside metadata.decoderConfig.")}const n={...a};return n.group??=this.defaultTrackGroup,this._addTrack(new Z7(this.tracks.length+1,this,e,n))}addAudioTrack(e,a={}){if(!(e instanceof Tb))throw new TypeError("source must be an AudioSource.");if(Vm(a),a.decoderConfig!==void 0&&Pv({decoderConfig:a.decoderConfig},e._codec),a.primingPacket!==void 0){if(!(a.primingPacket instanceof Js))throw new TypeError("metadata.primingPacket, when provided, must be an EncodedPacket.");if(a.decoderConfig===void 0)throw new TypeError("metadata.primingPacket can only be provided alongside metadata.decoderConfig.")}const n={...a};return n.group??=this.defaultTrackGroup,this._addTrack(new eF(this.tracks.length+1,this,e,n))}addSubtitleTrack(e,a={}){if(!(e instanceof J7))throw new TypeError("source must be a SubtitleSource.");Vm(a);const n={...a};return n.group??=this.defaultTrackGroup,this._addTrack(new tF(this.tracks.length+1,this,e,n))}setMetadataTags(e){if(aq(e),this.state!=="pending")throw new Error("Cannot set metadata tags after output has been started or canceled.");this._metadataTags=e}_addTrack(e){if(this.state!=="pending")throw new Error("Cannot add track after output has been started or canceled.");if(e.source._connectedTrack)throw new Error("Source is already used for a track.");const a=this.format.getSupportedTrackCounts(),n=this.tracks.reduce((o,l)=>o+(l.type===e.type?1:0),0),s=a[e.type].max;if(n===s)throw new Error(s===0?`${this.format._name} does not support ${e.type} tracks.`:`${this.format._name} does not support more than ${s} ${e.type} track${s===1?"":"s"}.`);const r=a.total.max;if(this.tracks.length===r)throw new Error(`${this.format._name} does not support more than ${r} tracks${r===1?"":"s"} in total.`);if(e.isVideoTrack()){const o=this.format.getSupportedVideoCodecs();if(o.length===0)throw new Error(`${this.format._name} does not support video tracks.`+this.format._codecUnsupportedHint(e.source._codec));if(!o.includes(e.source._codec))throw new Error(`Codec '${e.source._codec}' cannot be contained within ${this.format._name}. Supported video codecs are: ${o.map(l=>`'${l}'`).join(", ")}.`+this.format._codecUnsupportedHint(e.source._codec))}else if(e.isAudioTrack()){const o=this.format.getSupportedAudioCodecs();if(o.length===0)throw new Error(`${this.format._name} does not support audio tracks.`+this.format._codecUnsupportedHint(e.source._codec));if(!o.includes(e.source._codec))throw new Error(`Codec '${e.source._codec}' cannot be contained within ${this.format._name}. Supported audio codecs are: ${o.map(l=>`'${l}'`).join(", ")}.`+this.format._codecUnsupportedHint(e.source._codec))}else if(e.isSubtitleTrack()){const o=this.format.getSupportedSubtitleCodecs();if(o.length===0)throw new Error(`${this.format._name} does not support subtitle tracks.`+this.format._codecUnsupportedHint(e.source._codec));if(!o.includes(e.source._codec))throw new Error(`Codec '${e.source._codec}' cannot be contained within ${this.format._name}. Supported subtitle codecs are: ${o.map(l=>`'${l}'`).join(", ")}.`+this.format._codecUnsupportedHint(e.source._codec))}return this.tracks.push(e),e.source._connectedTrack=e,e}hasEnoughTracks(){const e=this.format.getSupportedTrackCounts();for(const n of Ab){const s=this.tracks.reduce((o,l)=>o+(l.type===n?1:0),0),r=e[n].min;if(so+(l.type===n?1:0),0),r=e[n].min;if(s{this.state="started";const n=this._mutex.acquire();try{await this._muxer.start();const s=this.tracks.map(r=>r.source._start());await Promise.all(s)}finally{(await n)()}})()}getMimeType(){return this._muxer.getMimeType()}async cancel(){if(this.state==="canceled")return this._cancelPromise??void 0;if(this.state==="finalizing"||this.state==="finalized"){this.state==="finalized"&&Fa._warn("Output has already been finalized.");return}return this._cancelPromise=(async()=>{this.state="canceled";const e=await this._mutex.acquire();try{const a=this.tracks.map(n=>n.source._flushOrWaitForOngoingClose(!0));await Promise.all(a),await Promise.all([...this._unfinalizedTargets].map(n=>n._close())),this._unfinalizedTargets.clear()}finally{e()}})()}async finalize(){if(this.state==="pending")throw new Error("Cannot finalize before starting.");if(this.state==="canceled")throw new Error("Cannot finalize after canceling.");return this._finalizePromise?(Fa._warn("Output has already been finalized."),this._finalizePromise):this._finalizePromise=(async()=>{this.state="finalizing";const e=await this._mutex.acquire();try{const a=this.tracks.map(n=>n.source._flushOrWaitForOngoingClose(!1));if(await Promise.all(a),await this._muxer.finalize(),this._rootWriterPromise){const n=await this._rootWriterPromise;n.finalized||(await n.flush(),await n.finalize())}this._onFinalize&&await this._onFinalize(),this.state="finalized"}catch(a){throw this.state="canceled",a}finally{await Promise.all([...this._unfinalizedTargets].map(a=>a._close().catch(()=>{}))),this._unfinalizedTargets.clear(),e()}})()}}function Hm(t,e,a){const n=Number(t);if(!Number.isSafeInteger(n)||n<=0)throw new Error(`${a} video has invalid ${e} metadata`);return n}function aF(t,e,a){const n=atob(t.slice(e,e+a)),s=new Uint8Array(n.length);for(let r=0;r"u")throw new Error("This browser does not support H.264 encoding through WebCodecs");const r=Hm(e.width,"width",n),o=Hm(e.height,"height",n),l=Hm(e.frames,"frame count",n),u=Number(e.fps);if(!Number.isFinite(u)||u<=0)throw new Error(`${n} video has invalid frame rate metadata`);const p=r*o*3,g=p/3*4,h=Math.ceil(p*l/3)*4;if(t.length!==h)throw new Error(`${n} RGB24 payload size does not match its video metadata`);const f=document.createElement("canvas");f.width=r,f.height=o;const m=f.getContext("2d",{alpha:!1});if(!m)throw new Error(`Unable to create the ${n} video canvas`);const d=new AudioContext;try{const c=await d.decodeAudioData(await a.arrayBuffer()),_=sF(d,c,l/u),b=new Dn("high"),v=new Dn("high");if(!await xG("avc",{width:r,height:o,quality:b}))throw new Error(`This browser cannot encode H.264 video for ${n} MP4 output`);const k={numberOfChannels:_.numberOfChannels,sampleRate:_.sampleRate,quality:v},y=typeof AudioEncoder<"u"&&await SG(s,k),T=new lu,O=new iF({format:new qb({fastStart:"in-memory"}),target:T}),j=new K7(f,{codec:"avc",quality:b,keyFrameInterval:2,onEncodedPacket:(L,x)=>{const B=x?.decoderConfig,D=B?.description;if(x&&B&&D!==void 0){const A={...B};if(D&&typeof D=="object"&&"byteLength"in D){const G=ArrayBuffer.isView(D)?new Uint8Array(D.buffer,D.byteOffset,D.byteLength):new Uint8Array(D);A.description=G.slice().buffer}else delete A.description;x.decoderConfig=A}}}),$=y?new X7({codec:s,quality:v}):null;O.addVideoTrack(j),$&&O.addAudioTrack($),await O.start(),$&&await $.add(_);const P=1/u;for(let L=0;Ltypeof l?.payload=="string"&&l.meta?.format==="rgb24"):void 0;if(!o||typeof o.payload!="string")return{artifacts:r,warning:`${a} returned no RGB24 video artifact.`};if(!e)return{artifacts:r,warning:`${a} MP4 encoding requires the driving audio.`};try{const l=await rF(o.payload,o.meta||{},e,a,s);return r.push({id:`${n}_video`,extension:"mp4",mime:"video/mp4",url:URL.createObjectURL(l.blob)}),{artifacts:r,warning:l.audioIncluded?"":`Browser ${s.toUpperCase()} encoding is unavailable; the MP4 has no audio track.`}}catch(l){return{artifacts:r,warning:`${a} MP4 encoding failed: ${l instanceof Error?l.message:String(l)}`}}}var oF=ue('
          ');function lF(t,e){Wa(e,!1);let a=$e(e,"busy",8,!1),n=$e(e,"sourceFile",8,null),s=$e(e,"setPanelRunner",8,()=>()=>{}),r=se(null),o=se(null);async function l(c){if(!i(r))throw c.warning("Choose a face video.");if(!n())throw c.warning("Choose the speech audio that will drive the lips.");const _=i(r),b=n();await c.ensureLoaded("offline"),c.setStatus("Uploading video and speech audio...");const v=await gc(_,c.signal),k=await To(await Or(b,16e3),c.signal);c.setStatus("Synchronizing lip motion...");const y=await vl({model:c.modelId,request:{audio:k,options:{...c.options,seed:c.seed,reference_video_file:v}}},c.signal);c.setStatus("Encoding MP4...");const T=await Cb(y,b,"LatentSync","latentsync","opus");if(T.warning||!T.artifacts.some(O=>O.mime==="video/mp4")){for(const O of T.artifacts)URL.revokeObjectURL(O.url);throw new Error(T.warning)}return{audio:null,text:T.warning,artifacts:T.artifacts,json:JSON.stringify(y,(O,j)=>O==="payload"&&typeof j=="string"?``:j,2)}}Bs(()=>s()(l)),xn();var u=oF(),p=R(E(u),2);Ga(p,c=>M(o,c),()=>i(o));var g=R(p,2),h=R(E(g)),f=E(h,!0);F(h),F(g);var m=R(g,2),d=R(m,2);Ln(d,{get file(){return i(r)},kind:"video",label:"Face video preview"}),F(u),ce(()=>{p.disabled=a(),X(f,(i(r),q(()=>i(r)?.name||"No video selected"))),m.disabled=!i(r)||a()}),Te("change",p,c=>M(r,c.currentTarget.files?.[0]||null)),Te("click",m,()=>{M(r,null),i(o)&&fi(o,i(o).value="")}),te(t,u),Qa()}const cF={latentsync:{component:lF,requestMode:"panel",blocksRunWhileUploading:!1,replacesGenericControls:{text:!0,language:!0,duration:!0,voice:!0,chunking:!0}},fish_drama3:{component:A$,requestMode:"panel",blocksRunWhileUploading:!1,replacesGenericControls:{text:!0,language:!0,voice:!0,chunking:!0,settingsImport:!0,advancedJson:!0}},auk:{component:wT,requestMode:"default",blocksRunWhileUploading:!1,replacesGenericControls:{packageButtons:!0,text:!1,genSource:!1,language:!0,seed:!1,duration:!0,params:!0,advancedJson:!1}},lfm2_audio:{component:LT,tasks:["s2s"],requestMode:"panel",blocksRunWhileUploading:!1,replacesGenericControls:{packageButtons:!1,text:!1,genSource:!1,language:!1,seed:!1,duration:!1,params:!1,advancedJson:!1}},liveavatar:{component:r$,requestMode:"default",blocksRunWhileUploading:!0,replacesGenericControls:{packageButtons:!1,text:!1,genSource:!1,language:!0,seed:!1,duration:!0,params:!0,advancedJson:!0}},yue2:{component:v$,requestMode:"yue2",blocksRunWhileUploading:!0,replacesGenericControls:{packageButtons:!0,text:!0,genSource:!0,language:!0,seed:!0,duration:!0,params:!0,advancedJson:!0}}};function dF(t,e){if(!t)return;const a=cF[t],n=a?.tasks;if(!(n&&!n.includes(e||"")))return a}var uF=ue('
          ',1),fF=ue('
          ',1);function mF(t,e){Wa(e,!1);const a=se(),n=se();let s=$e(e,"modelId",8),r=$e(e,"text",12,""),o=$e(e,"lyrics",12,""),l=$e(e,"language",12,""),u=$e(e,"duration",12,30),p=$e(e,"seed",24,()=>-1),g=$e(e,"busy",8,!1),h=$e(e,"adapterEditable",8,!1),f=$e(e,"rewritingCaption",12,!1),m=$e(e,"advancedValues",28,()=>({})),d=$e(e,"paramSpecs",24,()=>[]),c=$e(e,"outputText",12,""),_=$e(e,"outputJson",12,""),b=$e(e,"status",12,""),v=$e(e,"warningStatus",12,""),k=$e(e,"errorStatus",12,""),y=$e(e,"ensureLoaded",8),T=$e(e,"requestOptions",8),O=$e(e,"resolveRequestSeed",8),j=$e(e,"setParameterValue",8),$=$e(e,"onBrowseAdapter",8),P=$e(e,"log",8),L=$e(e,"tr",8);function x(ee){if(Array.isArray(ee.artifacts)){const W=ee.artifacts.find(z=>typeof z=="object"&&z!==null&&z.id==="ace_step_caption_plan"&&typeof z.payload=="string");if(W){const z=Uint8Array.from(atob(W.payload),be=>be.charCodeAt(0));return JSON.parse(new TextDecoder().decode(z))}}return typeof ee.text=="string"?{caption:ee.text}:{}}async function B(){if(!(g()||f())){if(!r().trim()&&!o().trim()){b("Enter a caption or lyrics to rewrite."),v(b()),k("");return}f(!0),v(""),k(""),b(L()("request.rewritingCaption"));try{await y()();const ee={text:r(),seed:O()(p()),duration_seconds:u(),options:{...T()(),rewrite_caption:!0}};l().trim()&&(ee.language=l()),o().trim()&&(ee.lyrics=o());const W=await vl({model:s(),request:ee}),z=x(W);typeof z.caption=="string"&&z.caption.trim()&&r(z.caption),typeof z.language=="string"&&z.language.trim()&&l(z.language),typeof z.duration_seconds=="number"&&Number.isFinite(z.duration_seconds)&&z.duration_seconds>0&&u(z.duration_seconds);const be={...m()};typeof z.bpm=="number"&&Number.isFinite(z.bpm)&&(be.bpm=z.bpm),typeof z.keyscale=="string"&&(be.keyscale=z.keyscale),typeof z.timesignature=="string"&&(be.timesignature=z.timesignature),m(be),c(typeof W.text=="string"?W.text:""),_(JSON.stringify(z,null,2)),b("Caption rewritten.")}catch(ee){b(ee instanceof Error?ee.message:String(ee)),k(b()),P()(`Caption rewrite failed: ${b()}`)}finally{f(!1)}}}We(()=>Z(d()),()=>{M(a,d().find(ee=>ee.name==="lora"))}),We(()=>Z(d()),()=>{M(n,d().find(ee=>ee.name==="lora_scale"))}),Yn(),xn();var D=fF(),A=At(D),G=E(A),U=R(G),V=E(U,!0);F(U),F(A);var I=R(A,2);Ka(I);var w=R(I,2),S=E(w),C=E(S,!0);F(S),F(w);var H=R(w,2);{var Y=ee=>{{let W=Pt(()=>(Z(m()),q(()=>m().lora?1:0)));cm(ee,{get selected(){return i(W)},children:(z,be)=>{var ae=uF(),ge=At(ae),ie=E(ge),_e=E(ie),le=R(E(_e)),Ee=E(le,!0);F(le),F(_e);var Se=R(_e,2),pe=E(Se);Dt(pe);var De=R(pe,2);F(Se),F(ie);var et=R(ie,2),Qe=R(E(et),2);Dt(Qe),F(et),F(ge);var Pe=R(ge,2);ce((xe,lt,re)=>{X(Ee,xe),pe.disabled=g()||f()||!h(),ye(pe,"title",h()?"":"Set adapter session options in the server configuration."),Ki(pe,lt),De.disabled=g()||f()||!h(),Qe.disabled=(Z(g()),Z(f()),Z(h()),Z(m()),q(()=>g()||f()||!h()||!m().lora)),Ki(Qe,re),Pe.disabled=(Z(g()),Z(f()),Z(h()),Z(m()),q(()=>g()||f()||!h()||!m().lora))},[()=>(Z(L()),q(()=>L()("request.optional"))),()=>(Z(m()),q(()=>String(m().lora??""))),()=>(Z(m()),q(()=>Number(m().lora_scale??1)))]),Te("input",pe,xe=>j()(i(a),xe.currentTarget.value.trim())),Te("click",De,()=>$()(i(a))),Te("input",Qe,xe=>{Number.isFinite(xe.currentTarget.valueAsNumber)&&j()(i(n),xe.currentTarget.valueAsNumber)}),Te("click",Pe,()=>j()(i(a),"")),te(z,ae)},$$slots:{default:!0}})}};qe(H,ee=>{i(a)&&i(n)&&ee(Y)})}ce((ee,W,z,be)=>{X(G,`${ee??""} `),X(V,W),S.disabled=z,X(C,be)},[()=>(Z(L()),q(()=>L()("request.lyrics"))),()=>(Z(L()),q(()=>L()("request.optional"))),()=>(Z(g()),Z(f()),Z(r()),Z(o()),q(()=>g()||f()||!r().trim()&&!o().trim())),()=>(Z(f()),Z(L()),q(()=>f()?L()("request.rewritingCaption"):L()("request.rewriteCaption")))]),Fi(I,o),Te("click",S,B),te(t,D),Qa()}var pF=ue(' ',1),Mb=ue(" "),gF=ue('
          ',1),hF=ue(' ',1),_F=ue('
          '),vF=ue('
          '),bF=ue('
          ',1),yF=ue(' ',1),wF=ue('
          '),Wm=ue(""),kF=ue('
          '),xF=ue('
          '),SF=ue('

          '),TF=ue(''),$F=ue('
           
          '),qF=ue("
          "),GF=ue('
          '),FF=ue("

          "),AF=ue('

          '),CF=ue('
          '),MF=ue('

          ',1),EF=ue('
          ~

          '),zF=ue('

          JSON

          ',1);function UF(t,e){Wa(e,!1);const a=se();let n=$e(e,"activeCatalog",24,()=>[]),s=$e(e,"loadedModels",24,()=>[]),r=$e(e,"savedVoices",24,()=>[]),o=$e(e,"server",8,null),l=$e(e,"modelsFolder",8,""),u=$e(e,"maxTokens",8,1024),p=$e(e,"entrySelectable",8,()=>!0),g=$e(e,"studioPackageSlots",8,()=>[]),h=$e(e,"packageIsAvailable",8,()=>!1),f=$e(e,"packageSessionOptionsMatch",8,()=>!0),m=$e(e,"supportsMaxTokens",8,()=>!1),d=$e(e,"supportsRequestOption",8,()=>!1),c=$e(e,"requiresRequestOption",8,()=>!1),_=$e(e,"refresh",8,async()=>{}),b=$e(e,"log",8,()=>{}),v=$e(e,"tr",8,(oe,Ce,je=oe)=>je);class k extends Error{}let y=se("tts"),T=se(""),O=se(""),j=se(""),$=se(""),P=se(1234),L=se(null),x=se(null),B=se(""),D=se("default"),A=se(""),G=se(""),U=se(null),V=se(null),I=se(""),w=se("{}"),S=se([]),C=se(!1),H=null,Y=se(""),ee=se([]),W=se(),z=se([]),be=se([]),ae=se([]),ge=se([]),ie=se(""),_e=se(""),le=se("");const Ee={demo_1_man:"demo_1_man",demo_2_man:"demo_2_man",demo_3_woman:"demo_3_woman",demo_4_woman:"demo_4_woman"};async function Se(){try{M(ae,await E1())}catch(oe){M(ae,[]),b()(`Arena voices unavailable: ${oe instanceof Error?oe.message:oe}`)}}function pe(oe){if(!l())return oe;const Ce=oe.replace(/\\/g,"/");if(Ce==="models")return l();if(!Ce.startsWith("models/"))return oe;const je=Ce.slice(7),ut=l().includes("\\")?"\\":"/";return`${l().replace(/[\\/]+$/,"")}${ut}${je.replace(/\//g,ut)}`}function De(oe){return oe.replace(/\\/g,"/").replace(/\/$/,"").toLowerCase()}function et(oe,Ce){const je=De(Ce),ut=De(oe);return je===ut||je.endsWith(`/${ut}`)}function Qe(oe){return!!o()&&(!o()?.ui_management||oe.configured===!0)}function Pe(oe,Ce){return Qe(oe)?oe.path:pe(Ce?.path||oe.path)}function xe(oe,Ce){return{...oe.session_options||{},...Ce?.session_options||{}}}function lt(oe){if(!Number.isInteger(oe)||oe<-1||oe>4294967295)throw new Error(v()("arena.error.seed"));if(oe>=0)return oe;const Ce=new Uint32Array(1);return globalThis.crypto.getRandomValues(Ce),Ce[0]}function re(oe){return["clon","vc","svc"].includes(oe.task)&&oe.family!=="rvc"||oe.task==="s2s"&&oe.family==="personaplex"||oe.task==="tts"&&!["supertonic"].includes(oe.family)}function ke(oe){return["clon","vc","svc"].includes(oe.task)&&oe.family!=="rvc"}function ne(oe){return oe.task==="tts"&&oe.family==="qwen3_tts"&&!oe.id.includes("custom")}function fe(oe,Ce){return c()(oe,"reference_text")||Ce&&ne(oe)}function we(oe){return i(y)==="vc"&&oe.task==="vc"&&oe.family!=="rvc"}function me(){return i(y)==="tts"&&i(D)==="builtin"&&i(A)?Ee[i(A)]||i(A):""}function Fe(oe){return oe.normalize("NFKC").toLowerCase().replace(/[^\p{L}\p{N}']+/gu," ").trim().split(/\s+/).filter(Boolean)}function Ue(oe,Ce){const je=Fe(oe),ut=Fe(Ce);if(!je.length)return"";const wt=Array.from({length:ut.length+1},(Xe,Ut)=>Ut),it=new Array(ut.length+1);for(let Xe=1;Xe<=je.length;Xe+=1){it[0]=Xe;for(let Ut=1;Ut<=ut.length;Ut+=1){const ra=wt[Ut-1]+(je[Xe-1]===ut[Ut-1]?0:1),oa=wt[Ut]+1,Ei=it[Ut-1]+1;it[Ut]=Math.min(ra,oa,Ei)}for(let Ut=0;Ut<=ut.length;Ut+=1)wt[Ut]=it[Ut]}return`${(wt[ut.length]/je.length*100).toFixed(2)}%`}function he(oe){const Ce=Number.parseFloat(oe);return Number.isFinite(Ce)?Ce:Number.POSITIVE_INFINITY}function Ae(oe,Ce){const je=oe.status==="done",ut=Ce.status==="done";if(je!==ut)return je?-1:1;if(je&&ut){const wt=he(oe.rtf)-he(Ce.rtf);if(wt!==0)return wt}return i(S).indexOf(oe)-i(S).indexOf(Ce)}function He(oe){return v()(`arena.itemStatus.${oe}`,{},oe)}function Be(oe){if(ct(),oe.startsWith("saved:")){const Ce=r().find(je=>je.id===oe.slice(6));if(!Ce)return;M(G,Ce.id),M(D,"reference"),M(U,new File([Ce.audio],`${Ce.name}.wav`,{type:Ce.audio.type||"audio/wav"})),M(I,Ce.transcript)}else oe.startsWith("preset:")?(M(D,"builtin"),M(A,oe.slice(7))):oe==="reference"&&M(D,"reference")}function Ge(oe){(i(G)||i(A))&&M(I,""),M(G,""),M(A,""),M(U,oe),oe&&M(D,"reference")}function Ie(){M(L,null),i(x)&&fi(x,i(x).value="")}function ct(){M(D,"default"),M(G,""),M(A,""),M(U,null),M(I,""),i(V)&&fi(V,i(V).value="")}function Ve(oe){return n().find(Ce=>Ce.id===oe.entryId)}function Gt(oe,Ce){return(oe.install_packages||[]).find(je=>je.id===Ce.packageId)}function nt(oe,Ce){M(S,i(S).map(je=>je.id===oe?{...je,...Ce}:je))}function Re(){for(const oe of i(S))oe.outputUrl&&URL.revokeObjectURL(oe.outputUrl);M(S,i(S).map(oe=>({...oe,status:"queued",note:"",error:"",outputUrl:"",outputText:"",wallMs:"",rtf:"",wer:""})))}function St(){for(const oe of i(S))oe.outputUrl&&URL.revokeObjectURL(oe.outputUrl);M(S,[])}function rt(){if(!i(W))return;const oe=i(z).find(je=>je.id===i(O));if(i(S).some(je=>je.entryId===i(W)?.id&&je.packageId===oe?.id)){M(Y,v()("arena.status.duplicate",{model:i(W).display_name,package:oe?.label||""}));return}M(S,[...i(S),{id:crypto.randomUUID(),entryId:i(W).id,packageId:oe?.id,label:i(W).display_name,packageLabel:oe?.label||v()("arena.package.configured"),status:"queued",note:"",error:"",outputUrl:"",outputText:"",wallMs:"",rtf:"",wer:""}])}function Tt(oe){const Ce=i(S).find(je=>je.id===oe);Ce?.outputUrl&&URL.revokeObjectURL(Ce.outputUrl),M(S,i(S).filter(je=>je.id!==oe))}function Ft(){try{const oe=JSON.parse(i(w)||"{}");if(Array.isArray(oe)||oe===null)throw new Error(v()("arena.error.jsonObject"));return oe}catch(oe){throw new Error(v()("arena.error.invalidJson",{error:oe instanceof Error?oe.message:String(oe)}))}}async function Qt(oe){if(!oe)return;const Ce=await Or(oe);return To(Ce,H?.signal)}async function Mt(oe,Ce){if(Qe(oe)){if(!s().some(it=>it.id===oe.id&&it.loaded))throw new Error(v()("arena.error.unregistered"));return}if(Ce&&!h()(oe,Ce))throw new k(v()("arena.error.notDownloaded",{package:Ce.label}));const je=Pe(oe,Ce);if(s().find(it=>it.id===oe.id&&it.loaded&&et(je,it.path)&&(!Ce||f()(oe,Ce,it))))return;const wt=s().filter(it=>it.loaded&&(it.id!==oe.id||!et(je,it.path)));for(const it of wt)await Ir(it.id);if(wt.length&&await _()(),await am({id:oe.id,path:je,family:oe.family,task:oe.task,mode:oe.mode||"offline",load_options:oe.load_options||{},session_options:xe(oe,Ce)}),await _()(),!s().some(it=>it.id===oe.id&&it.loaded&&et(je,it.path)&&(!Ce||f()(oe,Ce,it))))throw new Error(v()("arena.error.loadFailed"))}async function zt(oe,Ce){const je=Ve(oe);if(!je){nt(oe.id,{status:"failed",error:v()("arena.error.missingCatalog")});return}const ut=Gt(je,oe),wt=performance.now();try{nt(oe.id,{status:"loading",note:v()("arena.status.loadingModel"),error:""}),await Mt(je,ut),nt(oe.id,{status:"running",note:v()("arena.status.runningRequest")});const it={...je.default_options||{},...Ce},Xe=me(),Ut=i(D)==="reference"&&!!i(U);if(we(je)&&!Ut){nt(oe.id,{status:"skipped",note:v()("arena.note.skippedTargetVoice"),error:""});return}if(i(y)==="tts"&&fe(je,Ut)&&!i(I).trim()){nt(oe.id,{status:"skipped",note:v()("arena.note.skippedReferenceText"),error:""});return}const oa=Ut&&re(je)?await Qt(i(U)):void 0;let Ei="";if(Xe)Ei=v()("arena.note.builtinVoice",{voice:i(A)});else if(Ut&&oa)Ei=v()("arena.note.referenceVoice");else if(Ut&&!re(je))Ei=v()("arena.note.referenceUnsupported");else if(je.default_voice)Ei=v()("arena.note.defaultVoice",{voice:je.default_voice});else if(ke(je)&&!Xe){nt(oe.id,{status:"skipped",note:v()("arena.note.skippedReferenceVoice"),error:""});return}if(i(y)==="tts"){if(!i(j).trim())throw new k(v()("arena.error.enterTtsText"));const yi={model:je.id,input:i(j),language:i($),seed:lt(i(P)),options:it};m()(je)&&(yi.max_tokens=u()),oa?yi.voice_ref=oa:Xe?yi.voice=Xe:je.default_voice&&(yi.voice=je.default_voice),Ut&&i(I).trim()&&d()(je,"reference_text")&&(yi.reference_text=i(I));const Hi=await nm(yi,H?.signal);nt(oe.id,{status:"done",note:Ei,outputUrl:URL.createObjectURL(Hi.blob),wallMs:Hi.wallMs||`${(performance.now()-wt).toFixed(1)}`,rtf:Hi.rtf||""});return}if(i(y)==="asr"){const yi=await Qt(i(L));if(!yi)throw new k(v()("arena.error.chooseAsrSource"));const Hi=await sm({model:je.id,audio:yi,language:i($),options:it},H?.signal),ns=typeof Hi.text=="string"?Hi.text:"",fn=Hi.timing;nt(oe.id,{status:"done",note:Ei,outputText:ns,wallMs:typeof fn?.wall_ms=="number"?String(fn.wall_ms):"",rtf:typeof fn?.rtf=="number"?String(fn.rtf):"",wer:i(B).trim()?Ue(i(B),ns):""});return}const la=await Qt(i(L));if(!la)throw new k(v()("arena.error.chooseVcSource"));const nn={audio:la,seed:lt(i(P)),options:it};i(j).trim()&&(nn.text=i(j)),i($).trim()&&(nn.language=i($)),oa?nn.voice_ref=oa:Xe&&(nn.voice_id=Xe);const bi=await vl({model:je.id,request:nn},H?.signal),Za=typeof bi.audio=="string"?bi.audio:Array.isArray(bi.named_audio_outputs)&&typeof bi.named_audio_outputs[0]?.audio=="string"?bi.named_audio_outputs[0].audio:"";if(!Za)throw new Error(v()("arena.error.noAudio"));const un=bi.timing;nt(oe.id,{status:"done",note:Ei,outputUrl:rm(Za),wallMs:typeof un?.wall_ms=="number"?String(un.wall_ms):"",rtf:typeof un?.rtf=="number"?String(un.rtf):""})}catch(it){nt(oe.id,{status:it instanceof k?"skipped":"failed",error:it instanceof Error?it.message:String(it),note:""}),b()(`Arena row failed: ${it instanceof Error?it.message:it}`)}}async function Si(){if(!i(C)){if(!i(S).length){M(Y,v()("arena.status.addModel"));return}M(C,!0),H=new AbortController,Re(),M(Y,v()("arena.status.running",{mode:i(le)})),b()(i(Y));try{const oe=Ft();for(const Ce of i(S)){if(H?.signal.aborted)break;await zt(Ce,oe)}M(Y,v()("arena.status.complete")),b()(i(Y))}catch(oe){M(Y,oe instanceof Error?oe.message:String(oe))}finally{M(C,!1),H=null}}}function Bi(){H?.abort()}fl(()=>{H?.abort();for(const oe of i(S))oe.outputUrl&&URL.revokeObjectURL(oe.outputUrl)}),Bs(Se),We(()=>(Z(n()),i(y)),()=>{M(ee,n().filter(oe=>oe.arena!==!1&&(i(y)==="tts"?["tts","clon"].includes(oe.task):i(y)==="vc"?oe.task==="vc":oe.task==="asr")))}),We(()=>(i(T),i(ee)),()=>{(!i(T)||!i(ee).some(oe=>oe.id===i(T)))&&M(T,i(ee)[0]?.id||"")}),We(()=>(i(ee),i(T)),()=>{M(W,i(ee).find(oe=>oe.id===i(T))||i(ee)[0])}),We(()=>(i(W),Z(g())),()=>{M(z,i(W)?g()(i(W)).map(oe=>oe.choice).filter(oe=>!!oe):[])}),We(()=>(i(z),i(O)),()=>{i(z).length&&!i(z).some(oe=>oe.id===i(O))&&M(O,i(z)[0].id)}),We(()=>i(ae),()=>{M(ge,[...i(ae)].sort((oe,Ce)=>oe.localeCompare(Ce,"en",{sensitivity:"base",numeric:!0})))}),We(()=>(i(D),i(ge)),()=>{i(D)==="builtin"&&!i(ge).length&&M(D,"default")}),We(()=>(i(y),i(D)),()=>{i(y)==="vc"&&i(D)!=="reference"&&(M(D,"reference"),M(A,""))}),We(()=>(i(D),i(ge),i(A)),()=>{i(D)==="builtin"&&!i(ge).includes(i(A))&&M(A,i(ge)[0]||"")}),We(()=>(i(D),i(A),Ld),()=>{M(a,i(D)==="builtin"&&i(A)?Ld(i(A)):"")}),We(()=>(i(y),Z(v())),()=>{M(ie,i(y)==="tts"?v()("arena.title.tts"):i(y)==="vc"?v()("arena.title.vc"):v()("arena.title.asr"))}),We(()=>(i(y),Z(v())),()=>{M(_e,i(y)==="tts"?v()("arena.subtitle.tts"):i(y)==="vc"?v()("arena.subtitle.vc"):v()("arena.subtitle.asr"))}),We(()=>(i(y),Z(v())),()=>{M(le,i(y)==="tts"?v()("arena.mode.tts"):i(y)==="vc"?v()("arena.mode.vc"):v()("arena.mode.asr"))}),We(()=>i(S),()=>{M(be,i(S).every(oe=>["done","failed","skipped"].includes(oe.status))?[...i(S)].sort(Ae):i(S))}),Yn();var Ii={runArena:Si};xn();var Ti=zF(),Sa=At(Ti),bn=E(Sa),Tn=E(bn),$n=E(Tn,!0);F(Tn);var mi=R(Tn,2),hi=E(mi,!0);F(mi);var ii=R(mi,2),_a=E(ii,!0);F(ii),F(bn);var va=R(bn,2),Aa=E(va);let yn;var Yi=E(Aa,!0);F(Aa);var Ca=R(Aa,2);let da;var Li=E(Ca,!0);F(Ca);var tn=R(Ca,2);let cn;var Hn=E(tn,!0);F(tn),F(va),F(Sa);var an=R(Sa,2),Xa=E(an),is=E(Xa),Ss=E(is),Oa=E(Ss),Ai=E(Oa,!0);F(Oa);var dn=R(Oa),Ts=E(dn,!0);F(dn),F(Ss);var as=R(Ss,2),$r=E(as,!0);F(as),F(is);var Os=R(is,2);{var ia=oe=>{var Ce=pF(),je=At(Ce),ut=E(je,!0);F(je);var wt=R(je,2);Ka(wt),ce((it,Xe)=>{X(ut,it),ye(wt,"placeholder",Xe)},[()=>(Z(v()),q(()=>v()("request.text"))),()=>(Z(v()),q(()=>v()("arena.input.textPlaceholder")))]),Fi(wt,()=>i(j),it=>M(j,it)),te(oe,Ce)},Ci=oe=>{var Ce=gF(),je=At(Ce),ut=E(je,!0);F(je);var wt=R(je,2);Ga(wt,yi=>M(x,yi),()=>i(x));var it=R(wt,2),Xe=E(it),Ut=E(Xe,!0);F(Xe);var ra=R(Xe),oa=E(ra,!0);F(ra),F(it);var Ei=R(it,2),la=E(Ei),nn=E(la,!0);F(la);var bi=R(la,2);{var Za=yi=>{var Hi=Mb(),ns=E(Hi,!0);F(Hi),ce(()=>X(ns,(i(L),q(()=>i(L).name)))),te(yi,Hi)};qe(bi,yi=>{i(L)&&yi(Za)})}F(Ei);var un=R(Ei,2);{let yi=Pt(()=>(Z(v()),q(()=>v()("file.preview"))));Ln(un,{get file(){return i(L)},kind:"audio",get label(){return i(yi)}})}ce((yi,Hi,ns,fn)=>{X(ut,yi),X(Ut,Hi),X(oa,ns),la.disabled=!i(L),X(nn,fn)},[()=>(Z(v()),q(()=>v()("request.sourceAudio"))),()=>(Z(v()),q(()=>v()("file.choose"))),()=>(i(L),Z(v()),q(()=>i(L)?.name||v()("file.none"))),()=>(Z(v()),q(()=>v()("file.clear")))]),Te("change",wt,yi=>M(L,yi.currentTarget.files?.[0]||null)),Te("click",la,Ie),te(oe,Ce)};qe(Os,oe=>{i(y)==="tts"?oe(ia):oe(Ci,-1)})}var ua=R(Os,2);{var Ne=oe=>{var Ce=hF(),je=At(Ce),ut=E(je),wt=R(ut),it=E(wt,!0);F(wt),F(je);var Xe=R(je,2);Ka(Xe),ce((Ut,ra,oa)=>{X(ut,`${Ut??""} `),X(it,ra),ye(Xe,"placeholder",oa)},[()=>(Z(v()),q(()=>v()("arena.input.groundTruth"))),()=>(Z(v()),q(()=>v()("request.optional"))),()=>(Z(v()),q(()=>v()("arena.input.groundTruthPlaceholder")))]),Fi(Xe,()=>i(B),Ut=>M(B,Ut)),te(oe,Ce)};qe(ua,oe=>{i(y)==="asr"&&oe(Ne)})}var de=R(ua,2),Ke=E(de),tt=E(Ke),Ct=E(tt),gt=R(Ct),Xi=E(gt,!0);F(gt),F(tt);var Ji=R(tt,2);Dt(Ji),F(Ke);var Ri=R(Ke,2);{var Vt=oe=>{var Ce=_F(),je=E(Ce),ut=E(je,!0);F(je);var wt=R(je,2);Dt(wt),F(Ce),ce(it=>X(ut,it),[()=>(Z(v()),q(()=>v()("request.seed")))]),Fi(wt,()=>i(P),it=>M(P,it)),te(oe,Ce)};qe(Ri,oe=>{i(y)!=="asr"&&oe(Vt)})}F(de);var $t=R(de,2);{var oi=oe=>{var Ce=vF(),je=E(Ce),ut=E(je);{let Ei=Pt(()=>i(G)?`saved:${i(G)}`:i(D)==="builtin"?`preset:${i(A)}`:i(D)==="reference"?"reference":""),la=Pt(()=>i(y)==="tts"?i(ge):[]),nn=Pt(()=>(Z(v()),q(()=>v()("arena.voice.builtin")))),bi=Pt(()=>(Z(v()),q(()=>v()("arena.voice.modelDefault")))),Za=Pt(()=>i(y)==="tts");H1(ut,{id:"arena-voice-mode",get value(){return i(Ei)},get presets(){return i(la)},get savedVoices(){return r()},get presetLabel(){return i(nn)},get emptyLabel(){return i(bi)},get allowEmpty(){return i(Za)},referenceOption:!0,get tr(){return v()},get disabled(){return i(C)},onselect:Be})}F(je);var wt=R(je,2),it=E(wt),Xe=E(it),Ut=R(Xe),ra=E(Ut,!0);F(Ut),F(it);var oa=R(it,2);Ka(oa),F(wt),F(Ce),ce((Ei,la)=>{X(Xe,`${Ei??""} `),X(ra,la)},[()=>(Z(v()),q(()=>v()("voice.referenceText"))),()=>(Z(v()),q(()=>v()("request.optional")))]),Fi(oa,()=>i(I),Ei=>M(I,Ei)),te(oe,Ce)};qe($t,oe=>{i(y)!=="asr"&&oe(oi)})}var vt=R($t,2);{var Nt=oe=>{var Ce=bF(),je=At(Ce),ut=E(je,!0);F(je);var wt=R(je,2);{let it=Pt(()=>(Z(v()),q(()=>v()("file.preview"))));Ln(wt,{get src(){return i(a)},get name(){return i(A)},kind:"audio",get label(){return i(it)}})}ce(it=>X(ut,it),[()=>(Z(v()),q(()=>v()("arena.voice.builtinNote")))]),te(oe,Ce)},kt=oe=>{var Ce=yF(),je=At(Ce),ut=E(je),wt=R(ut),it=E(wt,!0);F(wt),F(je);var Xe=R(je,2);Ga(Xe,bi=>M(V,bi),()=>i(V));var Ut=R(Xe,2),ra=E(Ut),oa=E(ra,!0);F(ra);var Ei=R(ra),la=E(Ei,!0);F(Ei),F(Ut);var nn=R(Ut,2);{let bi=Pt(()=>(Z(v()),q(()=>v()("file.preview"))));Ln(nn,{get file(){return i(U)},kind:"audio",get label(){return i(bi)}})}ce((bi,Za,un,yi)=>{X(ut,`${bi??""} `),X(it,Za),X(oa,un),X(la,yi)},[()=>(i(y),Z(v()),q(()=>i(y)==="vc"?v()("arena.voice.targetSpeaker"):v()("voice.reference"))),()=>(i(y),Z(v()),q(()=>i(y)==="vc"?v()("voice.required"):v()("voice.optional"))),()=>(Z(v()),q(()=>v()("file.choose"))),()=>(i(U),Z(v()),q(()=>i(U)?.name||v()("file.none")))]),Te("change",Xe,bi=>Ge(bi.currentTarget.files?.[0]||null)),te(oe,Ce)};qe(vt,oe=>{i(D)==="builtin"?oe(Nt):(i(y)==="vc"||i(D)==="reference")&&oe(kt,1)})}var _i=R(vt,2);{var ji=oe=>{var Ce=wF(),je=E(Ce),ut=E(je,!0);F(je);var wt=R(je,2);{var it=Xe=>{var Ut=Mb(),ra=E(Ut,!0);F(Ut),ce(()=>X(ra,(i(U),q(()=>i(U).name)))),te(Xe,Ut)};qe(wt,Xe=>{i(U)&&Xe(it)})}F(Ce),ce((Xe,Ut)=>{je.disabled=Xe,X(ut,Ut)},[()=>(i(D),i(U),i(I),q(()=>i(D)==="default"&&!i(U)&&!i(I).trim())),()=>(i(y),Z(v()),q(()=>i(y)==="vc"?v()("arena.voice.clearTarget"):v()("arena.voice.clearReference")))]),Te("click",je,ct),te(oe,Ce)};qe(_i,oe=>{i(y)!=="asr"&&oe(ji)})}var Ta=R(_i,2),Q=E(Ta),zn=E(Q);ja(),F(Q);var $s=R(Q,2);Ka($s),F(Ta),F(Xa);var qr=R(Xa,2),sr=E(qr),Un=E(sr),fa=E(Un),ba=E(fa,!0);F(fa);var Wn=R(fa),rr=E(Wn,!0);F(Wn),F(Un);var Yr=R(Un,2),Zg=E(Yr,!0);F(Yr),F(sr);var kl=R(sr,2),Uc=E(kl),qs=E(Uc),eh=E(qs,!0);F(qs);var xl=R(qs,2);jt(xl,5,()=>i(ee),ei,(oe,Ce)=>{var je=Wm(),ut=E(je,!0);F(je);var wt={};ce(it=>{je.disabled=it,X(ut,(i(Ce),q(()=>i(Ce).display_name))),wt!==(wt=(i(Ce),q(()=>i(Ce).id)))&&(je.value=(je.__value=(i(Ce),q(()=>i(Ce).id)))??"")},[()=>(Z(p()),i(Ce),q(()=>!p()(i(Ce))))]),te(oe,je)}),F(xl),F(Uc);var or=R(Uc,2),Sl=E(or),Tl=E(Sl,!0);F(Sl);var Xr=R(Sl,2),hu=E(Xr);jt(hu,1,()=>i(z),ei,(oe,Ce)=>{var je=Wm(),ut=E(je);F(je);var wt={};ce((it,Xe)=>{je.disabled=it,X(ut,`${i(Ce),q(()=>i(Ce).label)??""}${Xe??""}`),wt!==(wt=(i(Ce),q(()=>i(Ce).id)))&&(je.value=(je.__value=(i(Ce),q(()=>i(Ce).id)))??"")},[()=>(i(W),Z(h()),i(Ce),q(()=>i(W)?!h()(i(W),i(Ce)):!0)),()=>(i(W),Z(h()),i(Ce),Z(v()),q(()=>i(W)&&h()(i(W),i(Ce))?"":` · ${v()("studio.notDownloaded")}`))]),te(oe,je)});var lr=R(hu);{var _u=oe=>{var Ce=Wm(),je=E(Ce,!0);F(Ce),Ce.value=Ce.__value="",ce(ut=>X(je,ut),[()=>(Z(v()),q(()=>v()("arena.package.configured")))]),te(oe,Ce)};qe(lr,oe=>{i(z),i(W),q(()=>!i(z).length&&i(W))&&oe(_u)})}F(Xr),F(or);var Eo=R(or,2),vu=E(Eo,!0);F(Eo),F(kl);var th=R(kl,2);{var Bc=oe=>{var Ce=xF();jt(Ce,5,()=>i(S),ei,(je,ut)=>{var wt=kF();let it;var Xe=E(wt),Ut=E(Xe),ra=E(Ut,!0);F(Ut);var oa=R(Ut,2),Ei=E(oa,!0);F(oa),F(Xe);var la=R(Xe,2),nn=E(la,!0);F(la);var bi=R(la,2),Za=E(bi,!0);F(bi),F(wt),ce((un,yi)=>{it=Gi(wt,1,"",null,it,{done:i(ut).status==="done",failed:i(ut).status==="failed",skipped:i(ut).status==="skipped"}),X(ra,(i(ut),q(()=>i(ut).label))),X(Ei,(i(ut),q(()=>i(ut).packageLabel))),X(nn,un),bi.disabled=i(C),X(Za,yi)},[()=>(i(ut),q(()=>He(i(ut).status))),()=>(Z(v()),q(()=>v()("arena.queue.remove")))]),Te("click",bi,()=>Tt(i(ut).id)),te(je,wt)}),F(Ce),te(oe,Ce)},Rc=oe=>{var Ce=SF(),je=E(Ce),ut=E(je,!0);F(je),F(Ce),ce(wt=>X(ut,wt),[()=>(Z(v()),q(()=>v()("arena.queue.empty")))]),te(oe,Ce)};qe(th,oe=>{i(S),q(()=>i(S).length)?oe(Bc):oe(Rc,-1)})}F(qr);var ya=R(qr,2),$l=E(ya),Ja=E($l),Is=E(Ja),Ma=E(Is,!0);F(Is);var jc=R(Is),Bn=E(jc,!0);F(jc),F(Ja);var vi=R(Ja,2),zo=E(vi);F(vi),F($l);var ql=R($l,2);{var Uo=oe=>{var Ce=MF(),je=At(Ce),ut=E(je,!0);F(je);var wt=R(je,2);jt(wt,5,()=>i(be),ei,(it,Xe,Ut)=>{var ra=CF();let oa;var Ei=E(ra),la=E(Ei),nn=E(la,!0);F(la);var bi=R(la,2),Za=E(bi),un=E(Za,!0);F(Za);var yi=R(Za,2),Hi=E(yi,!0);F(yi),F(bi);var ns=R(bi,2),fn=E(ns,!0);F(ns),F(Ei);var Fl=R(Ei,2);{var Po=Wi=>{var Ea=TF();ce(()=>ye(Ea,"src",(i(Xe),q(()=>i(Xe).outputUrl)))),te(Wi,Ea)};qe(Fl,Wi=>{i(Xe),q(()=>i(Xe).outputUrl)&&Wi(Po)})}var Al=R(Fl,2);{var ih=Wi=>{var Ea=$F(),Qn=E(Ea,!0);F(Ea),ce(()=>X(Qn,(i(Xe),q(()=>i(Xe).outputText)))),te(Wi,Ea)};qe(Al,Wi=>{i(Xe),q(()=>i(Xe).outputText)&&Wi(ih)})}var wu=R(Al,2);{var ah=Wi=>{var Ea=GF(),Qn=E(Ea),El=E(Qn),sh=E(El,!0);F(El);var mn=R(El),Ls=E(mn,!0);F(mn),F(Qn);var to=R(Qn,2),zl=E(to),No=E(zl,!0);F(zl);var Ic=R(zl),rh=E(Ic,!0);F(Ic),F(to);var oh=R(to,2);{var Ul=Oo=>{var dr=qF(),Lc=E(dr),Ds=E(Lc,!0);F(Lc);var Io=R(Lc),Bl=E(Io,!0);F(Io),F(dr),ce(lh=>{X(Ds,lh),X(Bl,(i(Xe),q(()=>i(Xe).wer)))},[()=>(Z(v()),q(()=>v()("arena.metric.wer")))]),te(Oo,dr)};qe(oh,Oo=>{i(Xe),q(()=>i(Xe).wer)&&Oo(Ul)})}F(Ea),ce((Oo,dr)=>{X(sh,Oo),X(Ls,(i(Xe),q(()=>i(Xe).wallMs||"?"))),X(No,dr),X(rh,(i(Xe),q(()=>i(Xe).rtf||"?")))},[()=>(Z(v()),q(()=>v()("arena.metric.wall"))),()=>(Z(v()),q(()=>v()("arena.metric.rtf")))]),te(Wi,Ea)};qe(wu,Wi=>{i(Xe),q(()=>i(Xe).outputUrl||i(Xe).outputText||i(Xe).wallMs||i(Xe).rtf||i(Xe).wer)&&Wi(ah)})}var Oc=R(wu,2);{var Cl=Wi=>{var Ea=FF(),Qn=E(Ea,!0);F(Ea),ce(()=>X(Qn,(i(Xe),q(()=>i(Xe).note)))),te(Wi,Ea)};qe(Oc,Wi=>{i(Xe),q(()=>i(Xe).note)&&Wi(Cl)})}var Ml=R(Oc,2);{var nh=Wi=>{var Ea=AF(),Qn=E(Ea,!0);F(Ea),ce(()=>X(Qn,(i(Xe),q(()=>i(Xe).error)))),te(Wi,Ea)};qe(Ml,Wi=>{i(Xe),q(()=>i(Xe).error)&&Wi(nh)})}F(ra),ce((Wi,Ea)=>{oa=Gi(ra,1,"",null,oa,{done:i(Xe).status==="done",failed:i(Xe).status==="failed",skipped:i(Xe).status==="skipped"}),X(nn,Wi),X(un,(i(Xe),q(()=>i(Xe).label))),X(Hi,(i(Xe),q(()=>i(Xe).packageLabel))),X(fn,Ea)},[()=>q(()=>String(Ut+1).padStart(2,"0")),()=>(i(Xe),q(()=>He(i(Xe).status)))]),te(it,ra)}),F(wt),ce(it=>X(ut,it),[()=>(i(S),Z(v()),q(()=>i(S).every(it=>["done","failed","skipped"].includes(it.status))?v()("arena.results.orderRtf"):v()("arena.results.orderSelection")))]),te(oe,Ce)},bu=oe=>{var Ce=EF(),je=R(E(Ce)),ut=E(je,!0);F(je),F(Ce),ce(wt=>X(ut,wt),[()=>(Z(v()),q(()=>v()("arena.results.empty")))]),te(oe,Ce)};qe(ql,oe=>{i(S),q(()=>i(S).length)?oe(Uo):oe(bu,-1)})}F(ya);var cr=R(ya,2),Bo=E(cr),Ro=E(Bo),Jr=E(Ro),Pc=E(Jr,!0);F(Jr),ja(2),F(Ro);var Gr=R(Ro,2),jo=E(Gr,!0);F(Gr);var Zr=R(Gr,2),Gl=E(Zr,!0);F(Zr),F(Bo);var eo=R(Bo,2);let Nc;var yu=E(eo,!0);return F(eo),F(cr),F(an),ce((oe,Ce,je,ut,wt,it,Xe,Ut,ra,oa,Ei,la,nn,bi,Za,un,yi,Hi,ns,fn,Fl,Po)=>{X($n,oe),X(hi,i(ie)),X(_a,i(_e)),yn=Gi(Aa,1,"",null,yn,{active:i(y)==="tts"}),X(Yi,Ce),da=Gi(Ca,1,"",null,da,{active:i(y)==="vc"}),X(Li,je),cn=Gi(tn,1,"",null,cn,{active:i(y)==="asr"}),X(Hn,ut),X(Ai,wt),X(Ts,it),X($r,i(le)),X(Ct,`${Xe??""} `),X(Xi,Ut),ye(Ji,"placeholder",ra),X(zn,`${oa??""} `),X(ba,Ei),X(rr,la),X(Zg,(i(S),q(()=>i(S).length))),X(eh,nn),X(Tl,bi),Eo.disabled=!i(W),X(vu,Za),X(Ma,un),X(Bn,yi),X(zo,`${Hi??""} / ${i(S),q(()=>i(S).length)??""}`),Ro.disabled=(i(C),i(S),q(()=>i(C)||!i(S).length)),X(Pc,ns),Gr.disabled=!i(C),X(jo,fn),Zr.disabled=(i(C),i(S),q(()=>i(C)||!i(S).length)),X(Gl,Fl),Nc=Gi(eo,1,"status",null,Nc,{busy:i(C)}),X(yu,Po)},[()=>(Z(v()),q(()=>v()("arena.eyebrow"))),()=>(Z(v()),q(()=>v()("arena.mode.tts"))),()=>(Z(v()),q(()=>v()("arena.mode.vc"))),()=>(Z(v()),q(()=>v()("arena.mode.asr"))),()=>(Z(v()),q(()=>v()("arena.input.label"))),()=>(Z(v()),q(()=>v()("arena.input.title"))),()=>(Z(v()),q(()=>v()("request.language"))),()=>(Z(v()),q(()=>v()("request.optional"))),()=>(Z(v()),q(()=>v()("request.autoLanguage"))),()=>(Z(v()),q(()=>v()("arena.options.shared"))),()=>(Z(v()),q(()=>v()("arena.queue.label"))),()=>(Z(v()),q(()=>v()("arena.queue.title"))),()=>(Z(v()),q(()=>v()("studio.model"))),()=>(Z(v()),q(()=>v()("arena.package.label"))),()=>(Z(v()),q(()=>v()("arena.queue.add"))),()=>(Z(v()),q(()=>v()("result.label"))),()=>(Z(v()),q(()=>v()("arena.results.title"))),()=>(i(S),q(()=>i(S).filter(oe=>oe.status==="done").length)),()=>(i(C),Z(v()),q(()=>i(C)?v()("run.working"):v()("arena.run"))),()=>(Z(v()),q(()=>v()("run.cancel"))),()=>(Z(v()),q(()=>v()("arena.queue.clear"))),()=>(i(Y),Z(v()),q(()=>i(Y)||v()("status.ready")))]),Te("click",Aa,()=>M(y,"tts")),Te("click",Ca,()=>M(y,"vc")),Te("click",tn,()=>M(y,"asr")),Fi(Ji,()=>i($),oe=>M($,oe)),Fi($s,()=>i(w),oe=>M(w,oe)),wo(xl,()=>i(T),oe=>M(T,oe)),Te("change",xl,()=>M(O,"")),wo(Xr,()=>i(O),oe=>M(O,oe)),Te("click",Eo,rt),Te("click",Ro,Si),Te("click",Gr,Bi),Te("click",Zr,St),te(t,Ti),Q_(e,"runArena",Si),Qa(Ii)}const Eb="audiocpp.ui.configuration",cu=il({historyLimit:10}),du=il("");function zb(t){if(!Number.isSafeInteger(t.historyLimit)||t.historyLimit<1)throw new Error("History length must be a positive integer.")}function BF(){const t=localStorage.getItem(Eb);if(t===null)return;const e=JSON.parse(t);zb(e),cu.set({historyLimit:e.historyLimit})}function RF(t){zb(t),localStorage.setItem(Eb,JSON.stringify(t)),cu.set(t),du.set("")}var jF=ue(''),PF=ue('
          '),NF=ue('

          ');function OF(t,e){Wa(e,!1);const a=()=>ud(cu,"$uiConfiguration",s),n=()=>ud(du,"$uiConfigurationError",s),[s,r]=Ju();let o=$e(e,"tr",8),l=se(a().historyLimit),u=se("");function p(){try{RF({historyLimit:i(l)}),M(u,"configuration.saved")}catch(P){du.set(P instanceof Error?P.message:String(P)),M(u,"")}}We(()=>a(),()=>{M(l,a().historyLimit)}),Yn(),xn();var g=NF(),h=E(g),f=E(h,!0);F(h);var m=R(h,2),d=E(m),c=E(d,!0);F(d);var _=R(d,2),b=E(_,!0);F(_);var v=R(_,2);Dt(v);var k=R(v,2),y=E(k,!0);F(k);var T=R(k,2);{var O=P=>{var L=jF(),x=E(L,!0);F(L),ce(()=>X(x,n())),te(P,L)};qe(T,P=>{n()&&P(O)})}var j=R(T,2);{var $=P=>{var L=PF(),x=E(L,!0);F(L),ce(B=>X(x,B),[()=>(Z(o()),i(u),q(()=>o()(i(u))))]),te(P,L)};qe(j,P=>{i(u)&&P($)})}F(m),F(g),ce((P,L,x,B)=>{X(f,P),X(c,L),X(b,x),X(y,B)},[()=>(Z(o()),q(()=>o()("nav.configuration"))),()=>(Z(o()),q(()=>o()("configuration.history"))),()=>(Z(o()),q(()=>o()("configuration.historyLimit"))),()=>(Z(o()),q(()=>o()("configuration.save")))]),Fi(v,()=>i(l),P=>M(l,P)),Te("submit",m,Wx(p)),te(t,g),Qa(),r()}var IF=ue(' '),Qm=ue(""),LF=ue(''),DF=ue('
          '),VF=ue('
          Downloads
          '),HF=ue('

          '),WF=ue(' '),QF=ue('Update available'),KF=ue(''),YF=ue('
          Manage
          '),XF=ue(''),JF=ue(''),ZF=ue('

          '),eA=ue('
          ',1),tA=ue('View weights ↗'),iA=ue('Manual setup
          ',1),aA=ue('
          '),nA=ue('
          '),sA=ue('
          No models match these filters.
          '),rA=ue('

          Model Library

          Models folder
          ');function oA(t,e){Wa(e,!1);const a=se(),n=se();let s=$e(e,"groups",8),r=$e(e,"packageSizes",8),o=$e(e,"installJobs",8),l=$e(e,"packageSizeState",8),u=$e(e,"modelsFolderInput",12),p=$e(e,"modelsFolder",8),g=$e(e,"modelsFolderHistory",24,()=>[]),h=$e(e,"defaultModelsFolder",8),f=$e(e,"applyingModelsFolder",8),m=$e(e,"modelsFolderIsDefault",8),d=$e(e,"openFolderBrowser",8),c=$e(e,"applyModelsFolder",8),_=$e(e,"installPackage",8),b=$e(e,"removePackage",8),v=$e(e,"stopPackageDownload",8),k=$e(e,"cleanPartialDownload",8),y=$e(e,"openModel",8),T=$e(e,"taskLabel",8),O=$e(e,"formatBytes",8),j=$e(e,"installProgressLabel",8),$=$e(e,"workflowForEntry",8),P=$e(e,"workflows",8),L=se(""),x=se(""),B=se("all"),D=se({});const A=Be=>!!Be&&["queued","running","cancelling"].includes(Be.state);function G(Be,Ge,Ie,ct){if(Ge[Be.id]?.installed)return"Installed";const Ve=Ie[Be.id];return A(Ve)?Ve.state==="queued"?"Queued":Ve.state==="cancelling"?"Stopping":"Downloading":Ve&&["failed","cancelled"].includes(Ve.state)?Ve.state==="failed"?"Download failed":"Incomplete":Ge[Be.id]?"Not installed":ct==="failed"?"Status unavailable":"Checking"}function U(Be,Ge,Ie){const ct=Be.install_packages||[];return ct.find(Ve=>Ve.id===Ge[Be.id])||ct.find(Ve=>Ie[Ve.id]?.installed)||ct[0]}function V(Be,Ge){return new Set(Be.flatMap(Ie=>(Ie.install_packages||[]).filter(ct=>Ge[ct.id]?.installed).map(ct=>ct.id))).size}We(()=>(Z(s()),i(L),Z(r()),i(x),Z($()),i(B)),()=>{M(a,s().map(Be=>({...Be,entries:Be.entries.filter(Ge=>{const Ie=`${Be.label} ${Ge.display_name} ${Ge.family}`.toLowerCase().includes(i(L).trim().toLowerCase()),ct=V([Ge],r())>0,Ve=!!Ge.install_packages?.length&&Ge.install_packages.every(Gt=>!!r()[Gt.id]);return Ie&&(!i(x)||$()(Ge)===i(x))&&(i(B)==="all"||(i(B)==="installed"?ct:Ve&&!ct))})})).filter(Be=>Be.entries.length))}),We(()=>Z(o()),()=>{M(n,Object.values(o()).filter(A))}),Yn(),xn();var I=rA(),w=E(I),S=E(w),C=R(E(S)),H=E(C);F(C),F(S);var Y=R(S,2);{var ee=Be=>{var Ge=IF(),Ie=E(Ge);F(Ge),ce(()=>X(Ie,`${i(n),q(()=>i(n).length)??""} active downloads`)),te(Be,Ge)};qe(Y,Be=>{i(n),q(()=>i(n).length)&&Be(ee)})}F(w);var W=R(w,2),z=E(W),be=R(E(z)),ae=E(be,!0);F(be),F(z);var ge=R(z,2),ie=E(ge);Dt(ie);var _e=R(ie,2),le=R(_e,2),Ee=R(le,2);F(ge);var Se=R(ge,2),pe=R(E(Se),2),De=E(pe);De.value=De.__value="";var et=R(De);jt(et,1,g,ei,(Be,Ge)=>{var Ie=Qm(),ct=E(Ie,!0);F(Ie);var Ve={};ce(()=>{X(ct,i(Ge)),Ve!==(Ve=i(Ge))&&(Ie.value=(Ie.__value=i(Ge))??"")}),te(Be,Ie)}),F(pe);var Qe;On(pe),F(Se),F(W);var Pe=R(W,2),xe=E(Pe);Dt(xe);var lt=R(xe,2),re=E(lt);re.value=re.__value="";var ke=R(re);jt(ke,1,P,ei,(Be,Ge)=>{var Ie=Qm(),ct=E(Ie,!0);F(Ie);var Ve={};ce(()=>{X(ct,(i(Ge),q(()=>i(Ge).label))),Ve!==(Ve=(i(Ge),q(()=>i(Ge).id)))&&(Ie.value=(Ie.__value=(i(Ge),q(()=>i(Ge).id)))??"")}),te(Be,Ie)}),F(lt);var ne=R(lt,2),fe=E(ne);fe.value=fe.__value="all";var we=R(fe);we.value=we.__value="installed";var me=R(we);me.value=me.__value="missing",F(ne),F(Pe);var Fe=R(Pe,2),Ue=E(Fe);F(Fe);var he=R(Fe,2);{var Ae=Be=>{var Ge=VF(),Ie=R(E(Ge));jt(Ie,1,()=>i(n),ei,(ct,Ve)=>{const Gt=Pt(()=>(Z(s()),i(Ve),q(()=>s().flatMap(Mt=>Mt.entries).find(Mt=>Mt.install_packages?.some(zt=>zt.id===i(Ve).id)))));var nt=DF(),Re=E(nt),St=E(Re,!0);F(Re);var rt=R(Re),Tt=E(rt,!0);F(rt);var Ft=R(rt);{var Qt=Mt=>{var zt=LF();ce(()=>zt.disabled=(i(Ve),q(()=>i(Ve).state==="cancelling"))),Te("click",zt,()=>v()(i(Gt),i(Ve))),te(Mt,zt)};qe(Ft,Mt=>{i(Gt)&&Mt(Qt)})}F(nt),ce(Mt=>{X(St,(Z(i(Gt)),i(Ve),q(()=>i(Gt)?.display_name||i(Ve).id))),X(Tt,Mt)},[()=>(Z(j()),i(Ve),q(()=>j()(i(Ve))))]),te(ct,nt)}),F(Ge),te(Be,Ge)};qe(he,Be=>{i(n),q(()=>i(n).length)&&Be(Ae)})}var He=R(he,2);jt(He,1,()=>i(a),Be=>Be.family,(Be,Ge)=>{var Ie=nA(),ct=E(Ie);{var Ve=nt=>{var Re=HF(),St=E(Re),rt=E(St,!0);F(St);var Tt=R(St);let Ft;var Qt=E(Tt,!0);F(Tt),F(Re),ce((Mt,zt)=>{X(rt,(i(Ge),q(()=>i(Ge).label))),Ft=Gi(Tt,1,"svelte-1vlt8au",null,Ft,Mt),X(Qt,zt)},[()=>({installed:V(i(Ge).entries,r())>0}),()=>(i(Ge),Z(r()),q(()=>V(i(Ge).entries,r())?`${V(i(Ge).entries,r())} package${V(i(Ge).entries,r())===1?"":"s"} installed`:i(Ge).entries.every(Mt=>!Mt.install_packages?.length)?"Manual setup":i(Ge).entries.some(Mt=>Mt.install_packages?.some(zt=>!r()[zt.id]))?"Status pending":"Not installed"))]),te(nt,Re)};qe(ct,nt=>{i(Ge),q(()=>i(Ge).entries.length>1)&&nt(Ve)})}var Gt=R(ct,2);jt(Gt,1,()=>(i(Ge),q(()=>i(Ge).entries)),nt=>nt.id,(nt,Re)=>{const St=Pt(()=>(i(Re),q(()=>new Set((i(Re).install_packages||[]).map(ii=>ii.id)).size))),rt=Pt(()=>(i(Re),i(D),Z(r()),q(()=>U(i(Re),i(D),r())))),Tt=Pt(()=>(Z(i(rt)),Z(o()),q(()=>i(rt)?o()[i(rt).id]:void 0))),Ft=Pt(()=>(Z(i(rt)),Z(r()),q(()=>i(rt)&&r()[i(rt).id]?.installed))),Qt=Pt(()=>(i(Ge),Z(o()),q(()=>i(Ge).entries.some(ii=>ii.install_packages?.some(_a=>A(o()[_a.id]))))));var Mt=aA(),zt=E(Mt),Si=E(zt),Bi=E(Si,!0);F(Si);var Ii=R(Si),Ti=E(Ii,!0);F(Ii);var Sa=R(Ii);{var bn=ii=>{var _a=WF(),va=E(_a);F(_a),ce(Aa=>X(va,`${Aa??""} of ${i(St)??""} packages installed`),[()=>(i(Re),Z(r()),q(()=>V([i(Re)],r())))]),te(ii,_a)},Tn=wi(()=>(Z(i(St)),i(Re),Z(r()),q(()=>i(St)&&i(Re).install_packages?.every(ii=>!!r()[ii.id]))));qe(Sa,ii=>{i(Tn)&&ii(bn)})}F(zt);var $n=R(zt,2);{var mi=ii=>{var _a=eA(),va=At(_a),Aa=E(va),yn=E(Aa);F(Aa);var Yi=R(Aa);jt(Yi,5,()=>(i(Re),q(()=>i(Re).install_packages||[])),ei,(ia,Ci)=>{var ua=Qm(),Ne=E(ua);F(ua);var de={};ce(Ke=>{X(Ne,`${i(Ci),q(()=>i(Ci).label)??""} · ${Ke??""}`),de!==(de=(i(Ci),q(()=>i(Ci).id)))&&(ua.value=(ua.__value=(i(Ci),q(()=>i(Ci).id)))??"")},[()=>(i(Ci),Z(r()),Z(o()),Z(l()),q(()=>G(i(Ci),r(),o(),l())))]),te(ia,ua)}),F(Yi);var Ca;On(Yi);var da=R(Yi),Li=E(da,!0);F(da),F(va);var tn=R(va,2);let cn;var Hn=E(tn),an=E(Hn,!0);F(Hn);var Xa=R(Hn);{var is=ia=>{var Ci=QF();te(ia,Ci)};qe(Xa,ia=>{Z(i(Ft)),Z(r()),Z(i(rt)),q(()=>i(Ft)&&r()[i(rt).id]?.version_state==="update_available")&&ia(is)})}F(tn);var Ss=R(tn,2),Oa=E(Ss),Ai=E(Oa,!0);F(Oa);var dn=R(Oa,2);{var Ts=ia=>{var Ci=YF(),ua=E(Ci),Ne=R(ua),de=E(Ne);{var Ke=Ct=>{var gt=KF();ce(()=>gt.disabled=i(Qt)),Te("click",gt,()=>_()(i(Re),i(rt),!0)),te(Ct,gt)};qe(de,Ct=>{Z(r()),Z(i(rt)),q(()=>r()[i(rt).id]?.version_state==="update_available")&&Ct(Ke)})}var tt=R(de);F(Ne),F(Ci),ce(()=>{ye(ua,"aria-label",(i(Re),q(()=>`Manage ${i(Re).display_name}`))),tt.disabled=i(Qt)}),Te("click",tt,()=>b()(i(Re),i(rt))),te(ia,Ci)};qe(dn,ia=>{i(Ft)&&ia(Ts)})}F(Ss);var as=R(Ss,2);{var $r=ia=>{var Ci=ZF();let ua;var Ne=E(Ci),de=E(Ne,!0);F(Ne);var Ke=R(Ne),tt=R(Ke),Ct=E(tt,!0);F(tt);var gt=R(tt);{var Xi=Vt=>{var $t=XF();ce(()=>$t.disabled=(Z(i(Tt)),q(()=>i(Tt).state==="cancelling"))),Te("click",$t,()=>v()(i(Re),i(Tt))),te(Vt,$t)},Ji=wi(()=>(Z(i(Tt)),q(()=>A(i(Tt))))),Ri=Vt=>{var $t=JF();Te("click",$t,()=>k()(i(Re),i(Tt))),te(Vt,$t)};qe(gt,Vt=>{i(Ji)?Vt(Xi):Vt(Ri,-1)})}F(Ci),ce(Vt=>{ua=Gi(Ci,1,"job svelte-1vlt8au",null,ua,{failed:i(Tt).state==="failed"}),X(de,Vt),Ki(Ke,(Z(i(Tt)),q(()=>i(Tt).progress_percent>=0?i(Tt).progress_percent:void 0))),X(Ct,(Z(i(Tt)),q(()=>i(Tt).message)))},[()=>(Z(j()),Z(i(Tt)),q(()=>j()(i(Tt))))]),te(ia,Ci)},Os=wi(()=>(Z(i(Tt)),q(()=>i(Tt)&&!["complete","cleaned"].includes(i(Tt).state))));qe(as,ia=>{i(Os)&&ia($r)})}ce((ia,Ci)=>{ye(Aa,"for",(i(Re),q(()=>`package-${i(Re).id}`))),X(yn,`Package (${i(St)??""})`),ye(Yi,"id",(i(Re),q(()=>`package-${i(Re).id}`))),Ca!==(Ca=(Z(i(rt)),q(()=>i(rt).id)))&&(Yi.value=(Yi.__value=(Z(i(rt)),q(()=>i(rt).id)))??"",kn(Yi,(Z(i(rt)),q(()=>i(rt).id)))),X(Li,ia),cn=Gi(tn,1,"state svelte-1vlt8au",null,cn,{installed:i(Ft)}),X(an,Ci),Oa.disabled=(Z(i(Ft)),Z(i(Qt)),Z(r()),Z(i(rt)),q(()=>!i(Ft)&&(i(Qt)||!r()[i(rt).id]))),X(Ai,i(Ft)?"Open in Studio":"Download")},[()=>(Z(r()),Z(i(rt)),Z(O()),q(()=>r()[i(rt).id]?.size_bytes?`${O()(r()[i(rt).id].size_bytes)} download`:"Download size unavailable")),()=>(Z(i(Ft)),Z(i(rt)),Z(r()),Z(o()),Z(l()),q(()=>i(Ft)?"✓ Installed":G(i(rt),r(),o(),l())))]),Te("change",Yi,ia=>M(D,{...i(D),[i(Re).id]:ia.currentTarget.value})),Te("click",Oa,()=>i(Ft)?y()(i(Re),i(rt)):_()(i(Re),i(rt))),te(ii,_a)},hi=ii=>{var _a=iA(),va=R(At(_a)),Aa=E(va);{var yn=Ca=>{var da=tA();ce(()=>ye(da,"href",(i(Re),q(()=>i(Re).weights_url)))),te(Ca,da)};qe(Aa,Ca=>{i(Re),q(()=>i(Re).weights_url)&&Ca(yn)})}var Yi=R(Aa);F(va),Te("click",Yi,()=>y()(i(Re))),te(ii,_a)};qe($n,ii=>{i(rt)?ii(mi):ii(hi,-1)})}F(Mt),ce(ii=>{X(Bi,(i(Re),q(()=>i(Re).display_name))),X(Ti,ii)},[()=>(Z(T()),i(Re),q(()=>T()(i(Re))))]),te(nt,Mt)}),F(Ie),te(Be,Ie)},Be=>{var Ge=sA(),Ie=R(E(Ge));F(Ge),Te("click",Ie,()=>{M(L,""),M(x,""),M(B,"all")}),te(Be,Ge)}),F(I),ce((Be,Ge,Ie,ct,Ve)=>{X(H,`${Be??""} models · ${Ge??""} packages installed`),X(ae,p()||h()),ye(ie,"placeholder",h()),_e.disabled=f(),le.disabled=Ie,Ee.disabled=f()||m(),pe.disabled=(Z(f()),Z(g()),q(()=>f()||!g().length)),Qe!==(Qe=ct)&&(pe.value=(pe.__value=ct)??"",kn(pe,ct)),X(Ue,`${Ve??""} models · A–Z`)},[()=>(Z(s()),q(()=>s().reduce((Be,Ge)=>Be+Ge.entries.length,0))),()=>(Z(s()),Z(r()),q(()=>V(s().flatMap(Be=>Be.entries),r()))),()=>(Z(f()),Z(u()),Z(p()),q(()=>f()||!u().trim()||u().trim()===p())),()=>(Z(g()),Z(u()),q(()=>g().includes(u())?u():"")),()=>(i(a),q(()=>i(a).reduce((Be,Ge)=>Be+Ge.entries.length,0)))]),Fi(ie,u),Te("click",_e,()=>d()()),Te("click",le,()=>c()(!1)),Te("click",Ee,()=>c()(!0)),Te("change",pe,Be=>u(Be.currentTarget.value)),Fi(xe,()=>i(L),Be=>M(L,Be)),wo(lt,()=>i(x),Be=>M(x,Be)),wo(ne,()=>i(B),Be=>M(B,Be)),te(t,I),Qa()}const lA="audiocpp-native-studio",uu="voices";function cA(){return new Promise((t,e)=>{const a=indexedDB.open(lA,1);a.onupgradeneeded=()=>{a.result.objectStoreNames.contains(uu)||a.result.createObjectStore(uu,{keyPath:"id"})},a.onsuccess=()=>t(a.result),a.onerror=()=>e(a.error||new Error("Could not open the voice library."))})}function Km(t,e){return cA().then(a=>new Promise((n,s)=>{const r=a.transaction(uu,t),o=e(r.objectStore(uu));o.onerror=()=>s(o.error||new Error("Voice library operation failed.")),r.oncomplete=()=>{a.close(),n(o.result)},r.onabort=()=>{a.close(),s(r.error||new Error("Voice library transaction was aborted."))},r.onerror=()=>{a.close(),s(r.error||new Error("Voice library transaction failed."))}}))}async function Ub(){return(await Km("readonly",e=>e.getAll())).sort((e,a)=>a.createdAt-e.createdAt)}function dA(t){return Km("readwrite",e=>e.put(t))}function uA(t){return Km("readwrite",e=>e.delete(t))}var fA=ue(''),mA=ue(''),pA=ue(''),gA=ue('

          '),hA=ue('
          ',1),_A=ue('

          Select a voice

          '),vA=ue('

          Voices

          ');function bA(t,e){Wa(e,!1);const a=se(),n=se(),s=se();let r=$e(e,"ontext",8),o=$e(e,"onchange",8),l=se([]),u=se(),p=se(),g=se(""),h=se(!1),f=se(""),m=se();function d(){return!i(h)&&(!i(n)||confirm("Discard unsaved voice edits?"))}async function c(){M(l,await Ub())}function _(ie){i(n)&&!confirm("Discard unsaved voice edits?")||(M(p,ie),M(u,{...ie}),M(f,""))}async function b(ie){if(!(!ie||i(h))){if(i(n)&&!confirm("Discard unsaved voice edits?")){fi(m,i(m).value="");return}M(h,!0),M(f,"");try{const _e=await Or(ie);M(u,{id:crypto.randomUUID(),name:ie.name.replace(/\.[^.]+$/,""),transcript:"",audio:_e,createdAt:Date.now()}),M(p,void 0)}catch(_e){M(f,`Cannot import ${ie.name}: ${String(_e)}`)}finally{M(h,!1),fi(m,i(m).value="")}}}async function v(){if(i(u)){if(!i(u).name.trim()){M(f,"Give this voice a name.");return}M(h,!0),M(f,"");try{const ie={...i(u),name:i(u).name.trim()};await dA(ie),await c(),M(p,ie),M(u,{...ie}),await o()()}catch(ie){M(f,String(ie))}finally{M(h,!1)}}}async function k(){if(!(!i(u)||!confirm(`Delete voice "${i(u).name}"?`))){M(h,!0),M(f,"");try{i(p)&&await uA(i(u).id),M(u,void 0),M(p,void 0),await c(),await o()()}catch(ie){M(f,String(ie))}finally{M(h,!1)}}}async function y(){if(!(!i(u)||i(n)||i(h))){M(f,"");try{await r()(i(u))}catch(ie){M(f,String(ie))}}}function T(){if(!i(u))return;const ie=URL.createObjectURL(i(u).audio),_e=document.createElement("a");_e.href=ie,_e.download=`${i(u).name}.wav`,_e.click(),setTimeout(()=>URL.revokeObjectURL(ie),1e3)}Bs(()=>{c().catch(ie=>M(f,String(ie)))}),We(()=>(i(l),i(g)),()=>{M(a,i(l).filter(ie=>`${ie.name} ${ie.transcript}`.toLowerCase().includes(i(g).toLowerCase())))}),We(()=>(i(u),i(p)),()=>{M(n,!!i(u)&&(!i(p)||i(u).name!==i(p).name||i(u).transcript!==i(p).transcript||i(u).audio!==i(p).audio))}),We(()=>i(u),()=>{M(s,i(u)?new File([i(u).audio],`${i(u).name}.wav`,{type:"audio/wav"}):null)}),Yn();var O={canClose:d};xn();var j=vA();Te("beforeunload",gd,ie=>{(i(n)||i(h))&&(ie.preventDefault(),ie.returnValue="")});var $=E(j),P=E($),L=E(P);pc(L,{size:25});var x=R(L,2),B=E(x);F(x),F(P);var D=R(P,2),A=E(D);C1(A,{size:16}),ja(),F(D);var G=R(D,2);Ga(G,ie=>M(m,ie),()=>i(m)),F($);var U=R($,2);{var V=ie=>{var _e=fA(),le=E(_e,!0);F(_e),ce(()=>X(le,i(f))),te(ie,_e)};qe(U,ie=>{i(f)&&ie(V)})}var I=R(U,2),w=E(I),S=E(w),C=E(S);j4(C,{size:16});var H=R(C);Dt(H),F(S);var Y=R(S,2);jt(Y,5,()=>i(a),ie=>ie.id,(ie,_e)=>{var le=mA();let Ee;var Se=E(le),pe=E(Se,!0);F(Se);var De=R(Se),et=E(De,!0);F(De);var Qe=R(De,2),Pe=E(Qe,!0);F(Qe),F(le),ce(xe=>{le.disabled=i(h),Ee=Gi(le,1,"voice-tile svelte-19fh7lt",null,Ee,{active:i(u)?.id===i(_e).id}),X(pe,xe),X(et,(i(_e),q(()=>i(_e).name))),X(Pe,(i(_e),q(()=>i(_e).transcript||"No transcript")))},[()=>(i(_e),q(()=>i(_e).name.slice(0,1).toUpperCase()))]),Te("click",le,()=>_(i(_e))),te(ie,le)}),F(Y);var ee=R(Y,2);{var W=ie=>{var _e=gA(),le=E(_e);pc(le,{size:36});var Ee=R(le),Se=E(Ee,!0);F(Ee);var pe=R(Ee);{var De=et=>{var Qe=pA(),Pe=E(Qe);C1(Pe,{size:16}),ja(),F(Qe),ce(()=>Qe.disabled=i(h)),Te("click",Qe,()=>i(m).click()),te(et,Qe)};qe(pe,et=>{i(g)||et(De)})}F(_e),ce(()=>X(Se,i(g)?"No matching voices":"Your voice collection is empty")),te(ie,_e)};qe(ee,ie=>{i(a),q(()=>!i(a).length)&&ie(W)})}F(w);var z=R(w,2),be=E(z);{var ae=ie=>{var _e=hA(),le=At(_e),Ee=R(E(le));Dt(Ee),F(le);var Se=R(le,2);Ln(Se,{get file(){return i(s)},label:"Voice preview"});var pe=R(Se,2),De=R(E(pe));Ka(De),F(pe);var et=R(pe,2),Qe=E(et),Pe=E(Qe);B4(Pe,{size:16});var xe=R(Pe,1,!0);F(Qe);var lt=R(Qe,2),re=E(lt);x4(re,{size:16}),F(lt);var ke=R(lt,2),ne=E(ke);Nd(ne,{size:16}),F(ke),F(et);var fe=R(et,2),we=E(fe),me=E(we);Yf(me,{size:16}),ja(),F(we),F(fe),ce(()=>{Ee.disabled=i(h),De.disabled=i(h),Qe.disabled=i(h)||!i(n),X(xe,i(n)?"Save voice":"Saved"),lt.disabled=i(h),ke.disabled=i(h),we.disabled=i(h)||i(n)}),Fi(Ee,()=>i(u).name,Fe=>fi(u,i(u).name=Fe)),Fi(De,()=>i(u).transcript,Fe=>fi(u,i(u).transcript=Fe)),Te("click",Qe,v),Te("click",lt,T),Te("click",ke,k),Te("click",we,y),te(ie,_e)},ge=ie=>{var _e=_A(),le=E(_e);Jf(le,{size:32}),ja(),F(_e),te(ie,_e)};qe(be,ie=>{i(u)?ie(ae):ie(ge,-1)})}return F(z),F(I),F(j),ce(()=>{X(B,`${i(l),q(()=>i(l).length)??""} saved · This browser`),D.disabled=i(h)}),Te("click",D,()=>i(m).click()),Te("change",G,ie=>b(ie.currentTarget.files?.[0])),Fi(H,()=>i(g),ie=>M(g,ie)),te(t,j),Q_(e,"canClose",d),Qa(O)}var fu=ue(""),Mc=ue(""),yA=ue(""),wA=ue(""),kA=ue(' ',1),xA=ue('
          '),SA=ue('
          '),TA=ue(''),$A=ue('
          '),qA=ue('
          '),GA=ue(' ',1),FA=ue(' ',1),AA=ue(' ',1),Ec=ue(" "),CA=ue(''),MA=ue(''),EA=ue(''),zA=ue('
          '),UA=ue('
          '),BA=ue(''),RA=ue(''),jA=ue('
          '),Bb=ue(" "),PA=ue('
          '),NA=ue(' ',1),OA=ue(' ',1),IA=ue(''),LA=ue(''),DA=ue('
          '),VA=ue('
          '),HA=ue('
          '),WA=ue('
          '),Rb=ue(" ",1),QA=ue('
          '),KA=ue('
          '),YA=ue(' ',1),XA=ue(' ',1),JA=ue('
          '),ZA=ue(' ',1),eC=ue('
          '),tC=ue('
          '),iC=ue(' ',1),aC=ue('
          '),nC=ue(''),sC=ue(""),rC=ue('
          '),oC=ue(""),lC=ue("
          "),cC=ue('
          '),dC=ue('
          JSON
          '),uC=ue(' '),fC=ue('

          ',1),mC=ue('

          ',1),pC=ue(' '),gC=ue(' '),hC=ue(''),jb=ue('
          '),_C=ue(""),vC=ue('
          ∿

          '),bC=ue(''),yC=ue('
          Response JSON
           
          '),wC=ue(''),kC=ue('
        1. '),xC=ue('
            '),SC=ue('

            ',1),TC=ue('

             
            ',1),$C=ue('
            '),qC=ue('
            '),Pb=ue('
            '),GC=ue(''),FC=ue('
            '),AC=ue('
            '),CC=ue('
            A
            audio.cpp
            audio.cpp native WebUI
            ',1);function MC(t,e){Wa(e,!1);const a=()=>ud(cu,"$uiConfiguration",n),[n,s]=Ju(),r=se(),o=se(),l=se(),u=se(),p=se(),g=se(),h=se(),f=se(),m=se(),d=se(),c=se(),_=se(),b=se(),v=se(),k=se(),y=se(),T=se(),O=se(),j=se(),$=se(),P=se(),L=se(),x=se(),B=se(),D=se(),A=se(),G=se(),U=se(),V=se(),I=se(),w=se(),S=se(),C=se();let H=se("studio"),Y=se(null),ee=se(null),W=se(vn[0]?.id||""),z=se(vn[0]),be=se(i(z)?.path||""),ae=se([]),ge=se(null),ie=se(null),_e=se(!1),le=se(!1),Ee=se(!1),Se=se(!1),pe=se("Ready"),De=se(""),et=se(""),Qe=se(""),Pe=se(""),xe=se("English"),lt=se(""),re=se(""),ke=se(""),ne=se(""),fe=se(30),we=se(1234),me=se(1024),Fe=se(0),Ue=se(null),he=se(null),Ae=se(null),He=se([null,null,null,null]),Be=se(null),Ge=se(null),Ie=se(null),ct=se([null,null,null,null]),Ve=se(null),Gt=se(null),nt=se("{}"),Re=se({}),St=se([]),rt=se([]),Tt=se([]),Ft=se(""),Qt=se(""),Mt=se(null),zt=se([]),Si=se(""),Bi=se(!1),Ii=1,Ti=se(null),Sa=se(""),bn=se(0),Tn=null,$n=se(null),mi={},hi={},ii=!1,_a=se([]),va=null,Aa=null,yn=se(!0),Yi=se(dm(i(z)?.family||"")),Ca=se([]),da=se(""),Li=se(null),tn=se(null),cn=null,Hn=null,an=null,Xa=se(!1),is=!1,Ss=Promise.resolve(),Oa=0,Ai=se({}),dn=se(""),Ts=se(""),as=se([]),$r=se(""),Os=se(!0),ia=se(!1),Ci=se(!1),ua=se(!1),Ne=se(""),de=se(null),Ke=se(null),tt=null,Ct={},gt=se({}),Xi=se("idle"),Ji=null,Ri=!1,Vt={},$t=se([]),oi=se([]),vt=se(""),Nt=se("en"),kt=se("mocha"),_i=!0,ji=null,Ta=null,Q=se(I1(i(Nt)));const zn={demo_1_man:"demo_1_man",demo_2_man:"demo_2_man",demo_3_woman:"demo_3_woman",demo_4_woman:"demo_4_woman"},$s=new Set(["ming3_tts","ming3_audio","latentsync","xtts_v2","kugelaudio","crisperwhisper","index_echo","audio_flamingo","owsm","owsm_ctc","reuse","sidon","smart_turn","maya1","gigaam_asr","samsone","sam_audio","tone_color_vc","moss_ttsd","moss_voicegen","canary_asr","cohere_asr","moss_transcribe_diarize","audiosr","controlfoley","breeze_tts","cosyvoice3","firered_audio","fireredtts3","irodori_tts","kitten_tts2","kokoro_tts","meanvc2","midashenglm_gen","plapre"]),qr={};function sr(N){M(Nt,L1([N])),localStorage.setItem("audiocpp.ui.language",i(Nt)),document.documentElement.lang=i(Nt)}function Un(N=i(kt)){const K=uT(N,_i);document.documentElement.dataset.theme=K,document.querySelector('meta[name="theme-color"]')?.setAttribute("content",getComputedStyle(document.documentElement).getPropertyValue("--bg").trim())}function fa(N){M(kt,Y1(N)),localStorage.setItem(K1,i(kt)),Un(i(kt))}async function ba(){try{if("serviceWorker"in navigator){const N=await navigator.serviceWorker.getRegistrations();await Promise.all(N.map(K=>K.unregister()))}if("caches"in window){const N=await window.caches.keys();await Promise.all(N.map(K=>window.caches.delete(K)))}}catch(N){console.warn("Unable to clear legacy WebUI caches:",N)}}function Wn(N,K,J=i(Q)){return J(`workflow.${N==="conversion"?"vc":N==="separation"?"sep":N}`,{},K)}function rr(N,K=i(Q),J){return N?J&&(J.workflow||Hi(J)==="enhancement")?Wn(Hi(J),N,K):K(`task.${N}`,{},P8[N]||N):K("studio.title")}function Yr(N,K,J=i(Q)){const ve=K==="label"?N.label_en||N.label||N.name.replace(/_/g," "):K==="info"?N.info_en||N.info||"":N.placeholder_en||N.placeholder||"";return J(`param.${i(z)?.family}.${N.name}.${K}`,{},ve)}function Zg(N=i(Q)){const K=i(z)?.input_hint_en||i(z)?.input_hint||"";return N(`model.${i(z)?.family}.hint`,{},K)}function kl(N){const K=Math.max(1,Number.isFinite(N)?N:1)*24;return Math.max(5,Math.round((K-3)/17)*17+3)}function Uc(N){const K=i(z)?.family==="ace_step"?-1:1;M(fe,Math.max(K,Number.isFinite(N)?N:K)),i(z)?.family==="minimax_h3"&&M(Re,{...i(Re),num_frames:kl(i(fe))})}function qs(N,K){if(M(Re,{...i(Re),[N.name]:K}),(i(z)?.family==="ace_step"||N.group==="lora")&&N.name==="lora"&&K===""&&(mi={...mi},delete mi[N.session_option||`${i(z).family}.lora`],N.group==="lora"&&delete mi[`${i(z).family}.lora_scale`]),(N.group==="lora"||["auk","yue2","liveavatar","fish_drama3","ace_step"].includes(i(z)?.family||""))&&N.scope==="session"&&M(l,i(ae).some(J=>J.id===i(W)&&J.loaded&&jo(J,i(z)))),i(z)?.family==="minimax_h3"&&N.name==="num_frames"){const J=Number(K);Number.isFinite(J)&&J>0&&M(fe,J/24)}}function eh(N=i(z)){N?.family!=="yue2"||i(ne).trim()||M(ne,N.default_text||"")}function xl(){return i(Qe).trim()?i(Qe):i(z).default_text||""}const or=[{id:"tts",label:"Text to speech",filterLabel:"TTS",tasks:["tts","clon"]},{id:"asr",label:"ASR / Transcription",filterLabel:"ASR",tasks:["asr"]},{id:"music",label:"Music / video generation",filterLabel:"Music / video generation",tasks:["gen"]},{id:"conversion",label:"Voice Conversion / S2S",filterLabel:"Voice Conversion / S2S",tasks:["vc","svc","s2s"]},{id:"enhancement",label:"Enhancement / denoising",filterLabel:"Enhancement / denoising",tasks:["s2s"]},{id:"separation",label:"Source separation",filterLabel:"Separation",tasks:["sep","s2s"]},{id:"analysis",label:"Audio analysis",filterLabel:"Analysis",tasks:["vad","diar","align","spk","midi","asr","turn","wake","cls"]},{id:"design",label:"Voice design",filterLabel:"Voice design",tasks:["vdes"]}],Sl={fish_drama3:"Fish Audio Drama 3",kugelaudio:"KugelAudio",crisperwhisper:"CrisperWhisper",index_echo:"Index-Echo S2TT",audio_flamingo:"Audio Flamingo",owsm:"OWSM",owsm_ctc:"OWSM-CTC",reuse:"RE-USE",sidon:"Sidon",smart_turn:"Smart Turn",gigaam_asr:"GigaAM ASR",ced:"CED",firered_vad:"FireRed VAD",samsone:"SAMSONE",sam_audio:"SAM Audio",builtin_audio_utils:"Audio utilities",qwen3_tts:"Qwen3-TTS",irodori_tts:"Irodori-TTS",chatterbox:"Chatterbox",stable_audio:"Stable Audio 3",qwen3_asr:"Qwen3-ASR",vevo2:"Vevo2",seed_vc:"Seed-VC",breeze_tts:"BreezeTTS 2",cosyvoice3:"CosyVoice3",magpie_tts:"MagpieTTS",meanvc2:"MeanVC2",niagara_asr:"Niagara ASR",canary_asr:"Canary 180M Flash",cohere_asr:"Cohere Transcribe",moss_transcribe_diarize:"MOSS-Transcribe-Diarize",apollo:"Apollo",universr:"UniverSR",pulsevad:"PulseVAD",nemotron_3_diar:"Nemotron 3 Diarization",lfm2_audio:"LFM2.5-Audio",personaplex:"PersonaPlex"},Tl={canary_asr:0,cohere_asr:256,moss_transcribe_diarize:5120},Xr={canary_asr:["en","de","es","fr"],cohere_asr:["en","fr","de","es","it","pt","nl","pl","el","ar","ja","zh","vi","ko"],confucius4_r2t2:["Auto","Chinese","English","Cantonese","Japanese","Korean","Arabic","German","French","Spanish","Portuguese","Indonesian","Italian","Russian","Thai","Vietnamese","Turkish","Hindi","Malay","Dutch","Swedish","Danish","Finnish","Polish","Czech","Filipino","Persian","Greek","Romanian","Hungarian","Macedonian"]};function hu(N){const ve=(N.replace(/\\/g,"/").split("/").filter(Boolean).pop()||"").match(/(?:^|[-_])(\d+(?:\.\d+)?[bm])(?:[-_]|$)/i);return ve?ve[1].toUpperCase():""}function lr(N,K){const J=Bo(K),ve=Bo(ql(N));if(J===ve)return!0;const Me=Bo(N).replace(/^models\//,"");return J===Me||J.endsWith(`/${Me}`)}function _u(N,K){return N.family!==K.family||N.task!==K.task?!1:lr(N.path,K.path)?!0:!!(N.install_packages||[]).some(J=>lr(J.path,K.path))}function Eo(N){const K=vn.find(J=>J.id===N.id);return K&&_u(K,N)?K:vn.find(J=>_u(J,N))}function vu(N,K){const J=hu(N.path),ve=Sl[N.family]||K?.display_name||N.family;return J&&!ve.toLowerCase().includes(J.toLowerCase())?`${ve} ${J}`:ve}function th(N){return Eo(N)?.display_name||vu(N)}function Bc(N,K){return N.localeCompare(K,"en",{sensitivity:"base",numeric:!0})}function Rc(N=!1){return(N?i(ae).filter(J=>J.configured&&!vn.some(ve=>ve.id===J.id)):i(ae)).map(J=>{const ve=Eo(J),Me=vn.find(Zt=>Zt.family===J.family&&Zt.task===J.task),Ye=ve||Me,ft=Zt=>Zt&&N?`${Zt} (${J.id})`:Zt;return{...Ye||{id:J.id,display_name:J.id,family:J.family,path:J.path,task:J.task,mode:J.mode},id:J.id,display_name:ft(ve?ve.display_name:vu(J,Ye)),display_name_en:ft(ve?ve.display_name_en:Ye?.display_name_en),family:J.family,path:J.path,task:J.task,mode:J.mode,install_packages:[],configured:!0}})}function ya(N){return!i(ge)||!N?!1:!i(ge).ui_management||N.configured===!0}function $l(N){return Array.from(N.reduce((K,J)=>{const ve=K.get(J.family)||[];return ve.push(J),K.set(J.family,ve),K},new Map)).map(([K,J])=>({family:K,entries:[...J].sort((ve,Me)=>Bc(ve.display_name,Me.display_name)),label:J.length>1&&Sl[K]||J[0].display_name})).sort((K,J)=>Bc(K.label,J.label))}let Ja=se("tts"),Is={},Ma=se(vn),jc=se($l(vn));class Bn extends Error{}function vi(N){const K=`${new Date().toLocaleTimeString()} ${N}`;M(_a,[K,...i(_a)].slice(0,200))}function zo(N){if(!Number.isFinite(N)||N<=0)return"0 B";const K=["B","KB","MB","GB","TB"],J=Math.min(Math.floor(Math.log(N)/Math.log(1024)),K.length-1);return`${(N/1024**J).toFixed(J<2?0:1)} ${K[J]}`}function ql(N){if(!i(dn))return N;const K=N.replace(/\\/g,"/");if(K==="models")return i(dn);if(!K.startsWith("models/"))return N;const J=K.slice(7),ve=i(dn).includes("\\")?"\\":"/";return`${i(dn).replace(/[\\/]+$/,"")}${ve}${J.replace(/\//g,ve)}`}function Uo(N){const K=N.install_packages||[];return K.find(J=>J.id===Ct[N.id])||K[0]}function bu(N,K){return Uo(N)?.id===K.id}function cr(N){return ya(N)?N.path:ql(Uo(N)?.path||N.path)}function Bo(N){return N.replace(/\\/g,"/").replace(/\/$/,"").toLowerCase()}function Ro(N,K){return lr(N.path,K)}function Jr(N){const K=Uo(N),J=N.id===i(W)?Lc():{};return{...N.session_options||{},...K?.session_options||{},...N.id===i(W)?mi:{},...J}}function Pc(N,K,J){const ve=Jr(N);N.family==="lfm2_audio"&&(ve["lfm2_audio.model_gguf"]=K.session_options?.["lfm2_audio.model_gguf"]);const Me=Array.from(new Set((N.install_packages||[]).flatMap(ft=>Object.keys(ft.session_options||{}))));if(N.id===i(W))for(const ft of i(St).filter(Zt=>Zt.scope==="session"))Me.push(ft.session_option||ft.name);if(!Me.length)return!0;const Ye=J.session_options||{};return Me.every(ft=>Ye[ft]===ve[ft])}function Gr(N,K,J){return Ro(J,K.path)&&Pc(N,J,K)}function jo(N,K){if(!K)return lr(i(be),N.path);const J=Uo(K);return J?lr(i(be),N.path)&&Pc(K,J,N):lr(i(be),N.path)}function Zr(N,K=i(ae)){return K.find(J=>J.id===N.id&&J.loaded)}function Gl(N,K,J=i(ae)){const ve=Zr(N,J);return!!(ve&&Gr(N,ve,K))}function eo(N,K,J=i(ae),ve=i(gt)){return Gl(N,K,J)||ve[K.id]?.installed===!0}function Nc(N){const K=N.install_packages||[];if(N.family==="ace_step"||N.family==="minimax_music3"||$s.has(N.family))return K.map(Me=>({key:Me.id,label:Me.label,choice:Me}));const J=K.find(Me=>Me.format==="gguf"&&["q8","q8_0"].includes(Me.precision)),ve=K.find(Me=>Me.format==="gguf"&&["f16","fp16","bf16"].includes(Me.precision));return!J&&!ve?K.map(Me=>({key:Me.id,label:Me.label,choice:Me})):[{key:"q8",label:J?.label||"GGUF Q8",choice:J},{key:"fp16",label:ve?.label||"GGUF FP16",choice:ve}]}function yu(N){if(!Number.isInteger(N)||N<-1||N>4294967295)throw new Error("Seed must be -1 or an unsigned 32-bit integer (0 to 4294967295).");if(N>=0)return N;const K=new Uint32Array(1);return globalThis.crypto.getRandomValues(K),K[0]}function oe(N,K){return(N+K)%4294967296}function Ce(N){return N.replace(/\.[^.]+$/,"").trim().toLowerCase()}function je(N){const K=!!(N&&(i(vt)||i(da)||i(Ae)&&i(Ae).name!==N.name));N&&(M(vt,""),M(da,"")),M(Ae,N),K&&(M(Ve,null),M(re,""),i(Gt)&&fi(Gt,i(Gt).value=""),M(pe,"Reference voice changed. Choose or enter its matching transcript."),M(De,i(pe)))}function ut(){M(vt,""),M(da,""),M(Ae,null),M(Ve,null),M(re,""),i(Ie)&&fi(Ie,i(Ie).value=""),i(Gt)&&fi(Gt,i(Gt).value="")}function wt(){M(Ue,null),i(Be)&&fi(Be,i(Be).value="")}function it(){M(he,null),i(Ge)&&fi(Ge,i(Ge).value="")}function Xe(N,K){M(He,i(He).map((J,ve)=>ve===N?K:J))}function Ut(N){Xe(N,null),i(ct)[N]&&fi(ct,i(ct)[N].value="")}function ra(N){M(vt,N),N&&(M(da,""),M(Ae,null),M(Ve,null),M(re,""),i(Ie)&&fi(Ie,i(Ie).value=""),i(Gt)&&fi(Gt,i(Gt).value=""))}async function oa(N){if(M(Ve,N),!!N)try{const K=(await N.text()).replace(/^\uFEFF/,"").trim();if(!K)throw new Error("The selected reference text file is empty.");M(re,K);const J=!i(Ae)||Ce(N.name)===Ce(i(Ae).name);M(pe,J?`Loaded reference transcript from ${N.name}.`:`Loaded ${N.name}. Its name does not match ${i(Ae)?.name}; verify that it is the correct transcript.`),M(De,J?"":i(pe))}catch(K){M(Ve,null),M(re,""),i(Gt)&&fi(Gt,i(Gt).value=""),M(pe,K instanceof Error?K.message:String(K)),M(De,"")}}function Ei(N){return N.state==="complete"||N.state==="cleaned"?100:N.progress_percent>=0?Math.min(100,Math.max(0,N.progress_percent)):0}function la(N){const K=Ei(N);return N.total_bytes>0?`${K}% · ${zo(N.downloaded_bytes)} / ${zo(N.total_bytes)}`:N.downloaded_bytes>0?`${zo(N.downloaded_bytes)} downloaded`:N.state==="failed"?"Download failed":N.state==="cleaned"?"Partial files cleaned":N.state==="complete"?"100% · complete":N.state==="queued"?"0% · queued":"Connecting and checking package files…"}function nn(N,K){return(N.install_packages||[]).map(J=>K[J.id]).filter(J=>J!==void 0)}function bi(N){return N.family==="ming3_audio"&&["tts","clon"].includes(N.task)?!1:N.request_options!==void 0?N.request_options.includes("max_tokens"):["tts","clon","gen","s2s","vdes"].includes(N.task)}function Za(N,K){return N.request_options===void 0||N.request_options.includes(K)}function un(N,K){return N.required_request_options?.includes(K)===!0}function yi(N){return i(C).has(N.id)}function Hi(N){return N.workflow?N.workflow:["apollo","universr","audiosr"].includes(N.family)?"enhancement":or.find(K=>K.tasks.some(J=>J===N.task))?.id||"tts"}function ns(N,K=i(Q)){return N==="Ready"?K("status.ready"):N}async function fn(){if(!(!i(ge)?.ui_management||Ri)){Ri=!0;try{const N=await s5();M(Xi,N.state),N.data.length&&(M(gt,Object.fromEntries(N.data.map(J=>[J.id,J]))),N.state==="complete"&&Al(i(gt)));const K=N.state==="idle"||N.state==="running"||N.data.length===0;K&&Ji===null?Ji=window.setInterval(fn,1e3):!K&&Ji!==null&&(window.clearInterval(Ji),Ji=null)}catch(N){M(Xi,"failed"),vi(`Package sizes unavailable: ${N instanceof Error?N.message:N}`)}finally{Ri=!1}}}function Fl(){if(!(i(H)==="voices"&&!i(Y)?.canClose())){if(!i(ge)?.ui_management){M(H,"studio"),M(pe,"Model management is disabled for this configured server."),M(De,i(pe)),M(et,"");return}M(H,"models"),i(Xi)==="idle"&&M(Xi,"running"),fn()}}function Po(N,K){Ct={...Ct,[N.id]:K.id},localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(Ct)),N.id===i(W)&&M(be,ql(K.path))}function Al(N=i(gt)){const K={...Ct};let J=!1;for(const ve of vn){const Me=ve.install_packages||[];if(!Me.length)continue;const Ye=Me.find(ma=>ma.id===K[ve.id]),ft=Ye?i(Ai)[Ye.id]:void 0;if(ft&&["queued","running","cancelling"].includes(ft.state)||Ye&&N[Ye.id]?.installed)continue;const Kt=Me.find(ma=>N[ma.id]?.installed);Kt?K[ve.id]!==Kt.id&&(K[ve.id]=Kt.id,J=!0):K[ve.id]!==void 0&&(delete K[ve.id],J=!0)}return J?(Ct=K,localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(Ct)),i(W)&&M(be,cr(i(z))),!0):!1}function ih(N=i(ae)){const K={...Ct};let J=!1;for(const ve of vn){const Me=Zr(ve,N);if(!Me)continue;const Ye=(ve.install_packages||[]).find(ft=>Gr(ve,Me,ft));Ye&&K[ve.id]!==Ye.id&&(K[ve.id]=Ye.id,J=!0)}return J?(Ct=K,localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(Ct)),i(W)&&M(be,cr(i(z))),!0):!1}async function wu(N=i(gt)){const K=vn.filter(J=>{const ve=Zr(J);if(!ve)return!1;const Me=(J.install_packages||[]).find(Ye=>Gr(J,ve,Ye));return!!(Me&&N[Me.id]?.installed===!1)});if(!K.length)return!1;for(const J of K)await Ir(J.id);return await mn(),!0}async function ah(){i(H)==="voices"&&!i(Y)?.canClose()||(M(H,"studio"),await xu(),await mn(),i(ge)?.ui_management&&(await fn(),await wu(),Al()&&i(W)&&await Ls()))}function Oc(N){M(dn,N.models_root),M(Ts,N.models_root),M($r,N.default_models_root),M(Os,N.is_default),M(be,cr(i(z))),M(as,[N.models_root,...i(as),N.default_models_root].filter((K,J,ve)=>K&&ve.indexOf(K)===J).slice(0,10)),localStorage.setItem("audiocpp.ui.modelsFolderHistory",JSON.stringify(i(as)))}function Cl(){M(W,""),M(vt,""),M(oi,[]),M(he,null),M(be,""),M(ie,null),M(St,[]),M(Re,{}),M(nt,"{}"),localStorage.removeItem("audiocpp.ui.model"),Ds()}function Ml(N=!1){return ya(i(z))||!i(W)||!N&&i(l)||i(ie)!==!1?!1:(Cl(),!0)}async function nh(N=!1){if(!(!i(ge)?.ui_management||i(ia))){M(ia,!0),M(De,""),M(et,""),M(pe,N?"Restoring the default models folder…":"Changing models folder…");try{const K=await M1(N?"":i(Ts).trim());Oc(K),K.is_default?localStorage.removeItem("audiocpp.ui.modelsFolder"):localStorage.setItem("audiocpp.ui.modelsFolder",K.models_root),M(Ai,{}),M(gt,{}),M(Xi,"idle"),Vt={},tt!==null&&(window.clearInterval(tt),tt=null),Ji!==null&&(window.clearInterval(Ji),Ji=null),await fn(),await Ls();const J=Ml();M(pe,J?`Models folder: ${K.models_root}. No installed model is selected.`:`Models folder: ${K.models_root}`),vi(i(pe))}catch(K){M(pe,K instanceof Error?K.message:String(K)),M(et,i(pe)),vi(`Models folder change failed: ${i(pe)}`)}finally{M(ia,!1)}}}async function Wi(N="",K=null){M(Ke,K),M(Ci,!0),M(ua,!0),M(Ne,"");try{M(de,await o5(N||i(Ts).trim()||i(dn)))}catch(J){M(Ne,J instanceof Error?J.message:String(J))}finally{M(ua,!1)}}function Ea(){i(de)&&(i(Ke)?qs(i(Ke),i(de).current):M(Ts,i(de).current),M(Ci,!1))}function Qn(){mi={},hi={},ii=!1;const N=Vd[i(z)?.id]||Vd[i(z)?.family]||[],K=i(z)?.family==="controlfoley"||i(z)?.family==="midashenglm_gen";M(St,N.filter(ve=>!(["vibevoice","moss_ttsd"].includes(i(z)?.family)&&ve.name==="voice_samples")&&!(K&&ve.name==="duration_sec"))),M(Re,Object.fromEntries(N.map(ve=>[ve.name,ve.default??""])));const J=i(ae).find(ve=>ve.id===i(W))?.session_options||{};for(const ve of i(St).filter(Me=>Me.group==="lora")){const Me=J[ve.session_option||ve.name];Me!==void 0&&fi(Re,i(Re)[ve.name]=Me)}if(i(z)?.family==="ace_step"&&ya(i(z))){const ve=i(ae).find(Me=>Me.id===i(W))?.session_options;M(Re,{...i(Re),lora:ve?.["ace_step.lora"]??"",lora_scale:Number(ve?.["ace_step.lora_scale"]??1)})}if(i(z)?.family in Tl&&M(Fe,Tl[i(z).family]),i(z)?.family==="confucius4_r2t2"?M(Pe,"Auto"):["owsm","owsm_ctc","index_echo","audio_flamingo","kugelaudio","smart_turn","reuse","sidon","hviske_asr_v6","voxtral_tts"].includes(i(z)?.family)?M(Pe,""):i(z)?.family in Xr&&M(Pe,"en"),i(z)?.family==="minimax_h3"?(M(fe,15),M(Re,{...i(Re),num_frames:kl(i(fe)),dit_acceleration:"none"})):i(z)?.task==="gen"&&M(fe,30),i(z)?.family==="yue2"){if(ya(i(z))){const ve=i(ae).find(Me=>Me.id===i(W))?.session_options;M(Re,{...i(Re),ar_lora:ve?.["yue2.ar_lora"]??"",ar_lora_scale:Number(ve?.["yue2.ar_lora_scale"]??1),nar_lora:ve?.["yue2.nar_lora"]??"",nar_lora_scale:Number(ve?.["yue2.nar_lora_scale"]??1)})}M(Qe,""),M(ne,""),eh()}else["liveavatar","moss_ttsd","sam_audio"].includes(i(z)?.family)?M(Qe,i(z).default_text||""):i(z)?.family==="ming3_audio"&&i(z).task==="s2s"?M(Qe,""):!i(Qe).trim()&&i(z)?.default_text&&M(Qe,i(z).default_text);i(z)?.builtin_voices?.length&&i(z).default_voice&&!i(vt)&&M(vt,i(z).default_voice),M(nt,"{}")}let El=!1;function sh(){if(!i(ge)||i(ge).ui_management)return;const N=Rc();if(!N.length){Cl();return}const J=(i(W)?N.find(Me=>Me.id===i(W)):void 0)||N[0],ve=!El||i(W)!==J.id;ve&&(M(vt,""),M(oi,[])),M(W,J.id),M(z,J),M(Ja,Hi(J)),Is={...Is,[i(Ja)]:J.id},M(be,J.path),M(ie,!0),localStorage.setItem("audiocpp.ui.model",J.id),ve&&(M(Yi,dm(J.family)),Qn()),El=!0}async function mn(){try{await(async N=>{var K=Ru(N,2);M(ge,K[0]),M(ae,K[1])})(await Promise.all([X4(),Id()])),i(ge).ui_management?ih():sh()}catch(N){M(pe,N instanceof Error?N.message:String(N))}}async function Ls(){if(!i(W)||!i(be).trim()){M(ie,null);return}if(ya(i(z))){M(ie,i(ae).some(N=>N.id===i(W)));return}M(ie,null);try{M(ie,(await Z4(i(be))).exists)}catch{M(ie,null)}}function to(N){if(M(Si,""),!N){Cl(),M(pe,"No model selected. Choose an installed model or download one from the Models tab.");return}const K=i(Ma).find(J=>J.id===N);!K||!yi(K)||(M(W,N),M(z,K),M(vt,""),M(oi,[]),M(Ja,Hi(K)),Is={...Is,[i(Ja)]:N},M(be,cr(K)),M(Yi,dm(K.family)),localStorage.setItem("audiocpp.ui.model",N),Qn(),Ls(),Su())}function zl(N){const K=or.find(Ye=>Ye.id===N);if(!K||(M(Ja,N),i(W)&&Hi(i(z))===N))return;const J=Is[N],Me=(J?i(Ma).find(Ye=>Ye.id===J&&Hi(Ye)===N&&yi(Ye)):void 0)||i(Ma).find(Ye=>Hi(Ye)===N&&yi(Ye));if(Me){to(Me.id);return}Cl(),M(pe,`No installed models are available for ${K.label}. Install one from the Models tab.`)}async function No(N){if(!i(c)){if(!i(W)){M(pe,"Choose an installed model before loading."),M(De,i(pe)),M(et,"");return}if(ya(i(z))){M(pe,i(ge)?.ui_management?"This model is configured by the server and loads on its first request.":"This server was not started with UI management enabled."),M(De,i(pe)),M(et,"");return}M(_e,!0),M(De,""),M(et,""),M(pe,`Loading ${i(z).display_name}…`),vi(i(pe));try{const K=i(ae).filter(J=>J.loaded&&(J.id!==i(z).id||!lr(i(be),J.path)||!jo(J,i(z))));for(const J of K)vi(`Unloading ${th(J)} before loading ${i(z).display_name}.`),await Ir(J.id);K.length&&await mn(),await am({id:i(z).id,path:i(be),family:i(z).family,task:i(z).task,mode:N||i(z).mode||"offline",load_options:{...i(z).load_options||{},...hi},session_options:Jr(i(z))}),await mn(),await Su(),M(pe,i(Q)("status.modelReady",{model:i(z).display_name})),M(et,""),vi(i(pe))}catch(K){throw M(pe,K instanceof Error?K.message:String(K)),M(et,i(pe)),vi(`Load failed: ${i(pe)}`),K}finally{M(_e,!1)}}}async function Ic(){if(!i(W))return;const N=i(z).display_name;M(_e,!0);try{ya(i(z))?await J4([i(z).id]):await Ir(i(z).id),await mn(),await Su();const K=Ml(!0);M(pe,K?`${N} unloaded. No installed model is selected.`:`${N} unloaded.`),vi(i(pe))}catch(K){M(pe,K instanceof Error?K.message:String(K))}finally{M(_e,!1)}}async function rh(N){if(!(i(_e)||!eo(i(z),N))){if(Gl(i(z),N)){await Ic();return}if(Po(i(z),N),await Ls(),i(ie)!==!0){M(pe,`${i(z).display_name} ${N.label} is not available at the expected path.`),M(et,i(pe));return}await No()}}async function oh(){i(_e)||!i(W)||i(ie)===!1||(i(l)?await Ic():await No())}async function Ul(N){if(!N)return;const K=i(z).task==="sep"||i(z).family==="apollo"?44100:["asr","vad","diar","align","midi","wake","cls"].includes(i(z).task)?16e3:void 0,J=await Or(N,K);return To(J,va?.signal)}async function Oo(){if(i(z).family==="moss_ttsd"){const Me=i(He).map(Boolean).lastIndexOf(!0);return Me<0?void 0:(await Promise.all(i(He).slice(0,Math.max(2,Me+1)).map(async ft=>ft&&await Ul(ft)||""))).join(",")}const N=i(He).findIndex(Me=>!Me);if(N>=0&&i(He).slice(N+1).some(Boolean))throw new Bn("VibeVoice speaker references must be filled from Speaker 1 without gaps.");const J=i(He).filter(Me=>!!Me);return J.length?(await Promise.all(J.map(Me=>Ul(Me)))).filter(Me=>!!Me).join(","):void 0}function dr(){let N={};try{if(N=JSON.parse(i(nt)||"{}"),Array.isArray(N)||N===null)throw new Error("must be an object")}catch(ve){throw new Error(`Advanced JSON is invalid: ${ve instanceof Error?ve.message:ve}`)}const K=i(z).default_options||{},J=Object.fromEntries(Object.entries(i(Re)).filter(([ve,Me])=>{const Ye=i(St).find(ft=>ft.name===ve);return!(Ye?.scope==="session"||Me===""&&Ye&&Ye.default===void 0||i(z)?.family==="canary_asr"&&ve==="target_language"&&Me===""||i(z)?.family==="universr"&&ve==="input_sample_rate"&&Me===""||i(z)?.family==="auk"&&typeof Me=="string"&&Me.trim().length===0||i(m)&&typeof Me=="string"&&Me.trim().length===0)}));return{...K,...J,...N}}function Lc(){const N=Object.fromEntries(i(St).filter(K=>K.scope==="session").filter(K=>K.group!=="lora"||String(i(Re).lora??"").trim().length>0).map(K=>[K.session_option||K.name,String(i(Re)[K.name]??K.default??"")]).filter(([,K])=>K.length>0));if(i(z)?.family==="auk"){const K=String(i(Re).model_gguf||"auk-base-f32.gguf");N["auk.variant"]=K.startsWith("auk-flash-")?"flash":"base"}return N}function Ds(){if(i(Ti)===null){for(const N of i(rt))URL.revokeObjectURL(N.url);for(const N of i(Tt))URL.revokeObjectURL(N.url);i(Mt)&&URL.revokeObjectURL(i(Mt).url)}M(rt,[]),M(Tt,[]),M(Ft,""),M(Qt,""),M(Mt,null),M(Ti,null),M(Sa,"")}function Io(N){for(const K of N.audio)URL.revokeObjectURL(K.url);for(const K of N.artifacts)URL.revokeObjectURL(K.url);URL.revokeObjectURL(N.settings.url)}async function Bl(N,K=!1){if(N.modelId!==i(W)||N.task!==i(z).task){M(Si,i(Q)("history.wrongModel",{label:N.label,model:i(z).display_name})),vi(i(Si));return}if(K){if(i(Ee)||i(_e)||i(Bi)){M(Si,i(Q)("history.wait"));return}M(Bi,!0);try{await sk(N.settingsJson)}catch(J){M(Si,J instanceof Error?J.message:String(J)),vi(`History settings restore failed: ${i(Si)}`);return}finally{M(Bi,!1)}return Bl(N)}M(Si,""),Ds(),M(Ti,N.id),M(Sa,N.modelId),M(rt,N.audio),M(Tt,N.artifacts),M(Ft,N.text),M(Qt,N.json),M(Mt,N.settings)}function lh(N){const K=i(zt).find(ve=>ve.id===N);if(!K)return;const J=i(Ti)===N;if(J&&Ds(),M(zt,i(zt).filter(ve=>ve.id!==N)),Io(K),J){const ve=i(zt).find(Me=>Me.modelId===i(W)&&Me.task===i(z).task);ve&&Bl(ve)}}function SM(){i(Ti)!==null&&Ds();for(const N of i(zt))Io(N);M(zt,[]),M(Si,"")}function nk(N){const K=i(zt).slice(N);if(!K.length)return;const J=K.some(ve=>ve.id===i(Ti));J&&Ds(),M(zt,i(zt).slice(0,N));for(const ve of K)Io(ve);if(J){const ve=i(zt).find(Me=>Me.modelId===i(W)&&Me.task===i(z).task);ve&&Bl(ve)}}async function ku(){if(ya(i(z))){if(ii)throw new Error("The imported model settings require a reload through the server configuration.");if(!i(ae).some(N=>N.id===i(W)))throw new Error("Configured model is not registered by this server.");return}if(!i(l)||ii){if(ii&&i(ae).some(N=>N.id===i(W)&&N.loaded)&&(await Ir(i(W)),await mn()),await No(),await mn(),!i(ae).some(N=>N.id===i(W)&&N.loaded&&jo(N,i(z))))throw new Error("Model did not load.");ii=!1}}async function sk(N){const K=JSON.parse(N);if(K.schema_version!==1||typeof K.model?.id!="string"||!Array.isArray(K.requests)||!K.requests.length||!K.requests.every(bt=>bt&&bt.body&&typeof bt.body=="object"&&!Array.isArray(bt.body)))throw new Error("Choose an audio.cpp settings JSON exported with Save settings JSON.");const J=i(Ma).find(bt=>bt.id===K.model.id);if(!J||J.family!==K.model.family||J.task!==K.model.task)throw new Error(`The exported model is not available in this UI: ${K.model.id}`);if(!yi(J))throw new Error(`Install ${J.display_name} before importing its settings.`);const ve=K.model.package_id?J.install_packages?.find(bt=>bt.id===K.model.package_id):void 0;if(K.model.package_id&&!ve)throw new Error(`The exported package is not available: ${K.model.package_id}`);if(ve&&!eo(J,ve,i(ae),i(gt)))throw new Error(`Install ${ve.label} before importing its settings.`);const Me=K.requests[0].body,Ye=Me.request||Me,ft=K.ui,Zt=K.resolved_seed;if(!Number.isInteger(Zt)||Zt<0||Zt>4294967295)throw new Error("The settings JSON has an invalid resolved seed.");const Kt={...J.load_options||{},...J.id===i(W)?hi:{}};to(J.id),ve&&(Ct={...Ct,[J.id]:ve.id},localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(Ct))),M(be,ve?cr(J):K.model.path),mi={...K.model.session_options||{}},hi={...K.model.load_options||{}},M(Re,{...i(Re),...ft?.advanced_values||Object.fromEntries(Object.entries(Ye.options||{}).filter(([bt])=>i(St).some(Qi=>Qi.name===bt)))});for(const bt of i(St).filter(Qi=>Qi.scope==="session")){const Qi=mi[bt.session_option||bt.name];if(Qi!==void 0){if(bt.type==="bool"&&!["true","false"].includes(Qi))throw new Error(`Invalid boolean setting: ${bt.name}`);if(["number","slider"].includes(bt.type)&&!Number.isFinite(Number(Qi)))throw new Error(`Invalid numeric setting: ${bt.name}`);fi(Re,i(Re)[bt.name]=bt.type==="bool"?Qi==="true":["number","slider"].includes(bt.type)?Number(Qi):Qi)}}M(Qe,ft?.text??(K.requests[0].endpoint==="/v1/audio/speech"?K.requests.map(bt=>bt.body.input).join(` -`):Ye.text||"")),E(_e,ut?.lyrics??Ye.lyrics??""),E(Xe,ut?.language??Ye.language??""),E(Le,ut?.moss_language??Ye.language??"English"),E(Te,ut?.context??(J.task==="asr"&&Ye.text||"")),E(et,ut?.reference_text??Ye.reference_text??""),E(ce,ut?.instructions??Ye.instructions??""),E(ne,ut?.duration??Ye.duration_seconds??Ye.options?.duration_sec??i(ne)),E(ve,ut?.max_tokens??Ye.max_tokens??i(ve)),E(pe,ut?.asr_max_tokens??Ye.options?.max_tokens??i(pe)),E(pa,ut?.long_text??K.requests.length>1),E(ln,ut?.text_chunk_size??i(ln)),E(_t,ut?.voice??Ye.voice??""),E(Zt,ut?.advanced_json??JSON.stringify(Object.fromEntries(Object.entries(Ye.options||{}).filter(([vt])=>!i(We).some(Ki=>Ki.name===vt))),null,2)),E(me,Yt),E(Se,null),E(ge,null),E(Me,null),E(ze,[null,null,null,null]),E(Qi,""),E(nt,null),i(Qe)&&hi(Qe,i(Qe).value=""),i(xe)&&hi(xe,i(xe).value=""),i(Ee)&&hi(Ee,i(Ee).value=""),i(je)&&hi(je,i(je).value="");for(const vt of i(He))vt&&(vt.value="");const ua=i(he).find(vt=>vt.id===J.id&&vt.loaded);mi=!!(ua&&(!ws(i(re),ua.path)||Object.entries(yr(J)).some(([vt,Ki])=>ua.session_options?.[vt]!==Ki)||JSON.stringify(Dt)!==JSON.stringify(yi))),await js();const an=Object.values(K.input_files||{}).flat().filter(vt=>typeof vt=="string"&&vt);E(ee,`Imported settings for ${J.display_name}.`),an.length&&E(ee,i(ee)+` Reselect the referenced files: ${an.join(", ")}.`),K.backend&&K.backend!==i(ie)?.backend&&E(ee,i(ee)+` Exported backend: ${K.backend}; current backend: ${i(ie)?.backend}.`),E(Oe,an.length?i(ee):""),E(Ie,""),wi(i(ee)),mi&&i(ie)?.ui_management&&!Ba(i(C))&&window.confirm("The imported model settings differ from the loaded model. Reload now?")&&await ku()}async function mM(N){if(!(!N||i(ae)||i(se)||i(di)))try{await tk(await N.text())}catch(K){E(ee,K instanceof Error?K.message:String(K)),E(Ie,i(ee)),E(Oe,""),wi(`Settings import failed: ${i(ee)}`)}finally{i(on)&&hi(on,i(on).value="")}}async function ik(N){if(Ba(i(C))){if(!i(he).some(J=>J.id===i(Y)&&J.mode===N))throw new Error(`Configured model is not registered in ${N} mode.`);return}const K=i(he).find(J=>J.id===i(Y)&&J.loaded);if((!K||K.mode!==N)&&(await Sr(N),await tn()),!i(he).some(J=>J.id===i(Y)&&J.loaded&&J.mode===N&&Ro(J,i(C))))throw new Error(`Model did not load in ${N} mode.`)}function ak(){for(const N of["audio/webm;codecs=opus","audio/webm","audio/ogg;codecs=opus"])if(MediaRecorder.isTypeSupported(N))return N}async function oh(N){if(!navigator.mediaDevices?.getUserMedia||typeof MediaRecorder>"u"){E(ee,"Microphone recording is not supported by this browser.");return}if(!(i(vi)||i(Wa)))try{en=await navigator.mediaDevices.getUserMedia({audio:!0});const K=[],J=ak();E(vi,new MediaRecorder(en,J?{mimeType:J}:void 0)),E(Cn,N),hi(vi,i(vi).ondataavailable=ke=>{ke.data.size&&K.push(ke.data)}),hi(vi,i(vi).onstop=()=>{const ke=new Blob(K,{type:i(vi)?.mimeType||J||"audio/webm"}),Be=new File([ke],`recording-${Date.now()}.webm`,{type:ke.type});N==="source"?E(Se,Be):(E(_t,""),E(Qi,""),E(ge,Be),i(xe)&&hi(xe,i(xe).value="")),en?.getTracks().forEach(Ye=>Ye.stop()),en=null,E(vi,null),E(Cn,null),E(ee,`${N==="voice"?"Voice reference":"Source audio"} recording captured.`)}),i(vi).start(),E(ee,`Recording ${N==="voice"?"voice reference":"source audio"}…`)}catch(K){E(ee,K instanceof Error?K.message:String(K)),en?.getTracks().forEach(J=>J.stop()),en=null,E(vi,null),E(Cn,null)}}function lh(){i(vi)?.state==="recording"&&i(vi).stop()}async function xu(){try{E(wa,await Mb())}catch(N){wi(`Voice library unavailable: ${N instanceof Error?N.message:N}`)}}async function Su(){if(!i(Y)||!i(ie)){E(Ot,[]);return}try{E(Ot,await C1(i(Y))),i(_t)&&(new Set([...i(Ot),...i($)?i(C)?.builtin_voices||[]:[]]).has(i(_t))||E(_t,""))}catch(N){E(Ot,[]),wi(`Configured voices unavailable: ${N instanceof Error?N.message:N}`)}}function pM(N){N.startsWith("saved:")?nk(N.slice(6)):N.startsWith("preset:")?Je(N.slice(7)):Ae()}function nk(N){E(Qi,N);const K=i(wa).find(J=>J.id===N);K&&(E(_t,""),E(ge,new File([K.audio],`${K.name}.wav`,{type:"audio/wav"})),E(nt,null),i(xe)&&hi(xe,i(xe).value=""),i(je)&&hi(je,i(je).value=""),E(et,K.transcript),E(ee,`Selected saved voice “${K.name}”.`))}async function gM(N){if(!N.size)return;const K=new File([N],`live-${_n}.webm`,{type:N.type}),J=await jr(K,16e3),ke=await So(J),Be=await sm({model:i(C).id,audio:ke,language:i(Xe),text:i(Te),options:Fl()}),Ye=String(Be.text||"").trim();Ye&&E(wt,[i(wt),Ye].filter(Boolean).join(" ")),_n+=1,E(ee,`Listening… ${_n} chunk${_n===1?"":"s"} transcribed.`)}function sk(){if(!Ln||kn)return;const N=[],K=ak();Ha=new MediaRecorder(Ln,K?{mimeType:K}:void 0),Ha.ondataavailable=J=>{J.data.size&&N.push(J.data)},Ha.onstop=()=>{const J=new Blob(N,{type:Ha?.mimeType||K||"audio/webm"});er=er.then(()=>gM(J)).catch(ke=>{E(ee,ke instanceof Error?ke.message:String(ke)),wi(`Live transcription failed: ${i(ee)}`)}),Ha=null,kn||sk()},Ha.start(),window.setTimeout(()=>{Ha?.state==="recording"&&Ha.stop()},4e3)}async function hM(){if(i(I)){if(!navigator.mediaDevices?.getUserMedia||typeof MediaRecorder>"u"){E(ee,"Live microphone transcription is not supported by this browser.");return}En(),E(Wa,!0),kn=!1,_n=0;try{await ik("streaming"),Ln=await navigator.mediaDevices.getUserMedia({audio:!0}),E(ee,"Listening… speech is transcribed in four-second native streaming requests."),sk()}catch(N){E(ee,N instanceof Error?N.message:String(N)),rk()}}}function rk(){kn=!0,Ha?.state==="recording"&&Ha.stop(),Ln?.getTracks().forEach(N=>N.stop()),Ln=null,E(Wa,!1),E(ee,_n?`Live transcription stopped after ${_n} chunks.`:"Live transcription stopped.")}function _M(N){return Za=N,()=>{Za===N&&(Za=null)}}async function vM(N,K){if(Ba(i(C)))return ku();const J=()=>{if(i(Y)!==N)throw new Error("The model changed while it loaded; press Run again.")};(!i(l)||mi)&&(mi&&i(he).some(ke=>ke.id===i(Y)&&ke.loaded)&&(await Pr(i(Y)),await tn(),J()),await Sr(K),await tn(),J(),mi=!1),await ik(K).finally(J)}async function bM(N,K,J){const ke=Za,Be=i(C).id;if(!ke)throw i(F)!=="studio"?new Mn("Open the Studio tab to run this entry."):new Error(`${i(C).display_name} is not ready.`);const Ye=await ke({modelId:Be,seed:N,maxTokens:Oi(i(C))?i(ve):void 0,language:i(Xe).trim(),options:Fl(),signal:J,setStatus:ut=>{E(ee,ut)},warning:ut=>new Mn(ut),ensureLoaded:ut=>vM(Be,ut)});En(),Ye.audio&&E($t,[{id:"reply",url:URL.createObjectURL(Ye.audio)}]),E(wt,Ye.text),E(qt,Ye.json),E(dt,Ye.artifacts||[]),E(ta,Be),E(Oe,""),E(Ie,""),E(ee,i(W)("status.completeIn",{seconds:((performance.now()-K)/1e3).toFixed(2)})),wi(i(ee))}async function ok(){if(i(ae)||i(Re)||i(d)||i(di))return;if(!i(Y)){E(ee,"Choose an installed model before running a request."),E(Oe,i(ee)),E(Ie,"");return}if(!i(l)&&i(ye)===!1){E(ee,`${i(C).display_name} is not downloaded. Install a model package from the Models tab first.`),E(Oe,i(ee)),E(Ie,"");return}E(ae,!0),Pi=new AbortController;const N=performance.now();E(Va,0),Ja=window.setInterval(()=>{E(Va,(performance.now()-N)/1e3)},250);let K=[],J=[],ke="",Be="",Ye=!1;const ut=[];E(Oe,""),E(Ie,""),E(ee,i(W)("status.runningTask",{task:Qr(i(C).task)})),wi(i(ee));const Yt=i(C).family==="liveavatar"?i(Se):null;try{const Dt=Tl(i(me));if(i(f)){await bM(Dt,N,Pi.signal);return}if(i(x)&&!i(ge))throw new Mn(`${i(C).display_name_en||i(C).display_name} requires a reference voice.`);if(i(D)&&!i(et).trim()){const ii=i(P)?"Qwen3-TTS Base voice cloning":i(C).display_name_en||i(C).display_name;throw new Mn(`${ii} requires a reference transcript. Choose a matching .txt file or enter the transcript.`)}if(i(U)&&!i(_e).trim())throw new Mn(`${i(C).display_name_en||i(C).display_name} requires lyrics.`);if(i(C).family==="liveavatar"){if(!i(Se))throw new Mn("LiveAvatar requires driving audio.");if(!String(i(Pe).reference_image_path||"").trim())throw new Mn("LiveAvatar requires a reference image.")}await ku();const ua=i(he).find(ii=>ii.id===i(C).id),an={schema_version:1,created_at:new Date().toISOString(),backend:i(ie)?.backend,resolved_seed:Dt,model:{id:i(C).id,display_name:i(C).display_name,family:i(C).family,task:i(C).task,mode:ua?.mode||i(C).mode||"offline",path:ua?.path||i(re),package_id:Bo(i(C))?.id,load_options:{...i(C).load_options||{},...yi},session_options:ua?.session_options||yr(i(C))},ui:{text:i(tt),lyrics:i(_e),language:i(Xe),moss_language:i(Le),context:i(Te),reference_text:i(et),instructions:i(ce),duration:i(ne),max_tokens:i(ve),asr_max_tokens:i(pe),long_text:i(pa),text_chunk_size:i(ln),voice:i(_t),advanced_values:{...i(Pe)},advanced_json:i(Zt)},input_files:{source:i(Se)?.name,voice_reference:i(ge)?.name,video:i(Me)?.name,speaker_references:i(ze).map(ii=>ii?.name||null)},requests:ut},vt=Fl();if(i(R)){const ii=await sh();ii&&(vt.voice_samples=ii)}i(T)&&i(Me)&&(vt.video=await cc(i(Me),Pi?.signal));const Ki=i(y)?await Gl(i(Se)):void 0,Ps=i(O)&&!i(R)&&!(i($)&&i(_t))?await Gl(i(ge)):void 0;if(["tts","clon","vdes"].includes(i(C).task)){if(!i(tt).trim())throw new Mn("Enter text to generate.");const ii=Math.max(40,i(ln));i(C).family==="voxcpm2"&&(vt.text_chunk_size=ii);const Fa=i(pa)&&i(C).task!=="vdes"&&i(C).family!=="moss_ttsd"?Z8(i(tt),ii):[i(tt)],Ji=[],li=[];for(let Un=0;Un1?`Synthesizing chunk ${Un+1} of ${Fa.length}…`:i(W)("status.runningTask",{task:Qr(i(C).task)}));const xn={model:i(C).id,input:Fa[Un],language:["moss_ttsd","moss_voicegen"].includes(i(C).family)?i(Le):i(Xe),seed:gu(Dt,Un),options:vt};Oi(i(C))&&!["kugelaudio","voxtral_tts"].includes(i(C).family)&&(xn.max_tokens=i(ve)),Ps?xn.voice_ref=Ps:i(_t)?xn.voice=St[i(_t)]||i(_t):i(C).default_voice&&(xn.voice=i(C).default_voice),i(et).trim()&&Ra(i(C),"reference_text")&&(xn.reference_text=i(et)),i(C).task==="vdes"&&i(ce).trim()&&(i(C).family==="ming3_tts"?xn.instruct=i(ce):xn.instructions=i(ce)),ut.push({endpoint:"/v1/audio/speech",body:JSON.parse(JSON.stringify(xn))});const is=await nm(xn,Pi.signal);Ji.push(is.blob),li.push({chunk:Un+1,characters:Fa[Un].length,wall_ms:is.wallMs,rtf:is.rtf})}const ts=await I4(Ji);K=[{id:Fa.length>1?"merged":"output",url:URL.createObjectURL(ts)}],Be=JSON.stringify({seed:Dt,chunks:Fa.length,characters:i(tt).length,chunk_budget:i(ln),timings:li},null,2)}else if(i(C).task==="asr"){if(!Ki)throw new Mn("Choose an audio file.");i(C).family in Xr?vt.max_tokens=i(pe):i(C).family==="ming3_audio"&&(vt.max_tokens=i(ve));const ii={model:i(C).id,audio:Ki,language:i(Xe),text:i(Te),options:vt},Fa=["owsm","crisperwhisper"].includes(i(C).family)&&vt.return_timestamps===!0;ut.push({endpoint:Fa?"/v1/audio/transcriptions/details":"/v1/audio/transcriptions",body:JSON.parse(JSON.stringify(ii))});const Ji=await sm(ii,Pi.signal,Fa);ke=String(Ji.text||""),Be=JSON.stringify(Ji,null,2)}else{if(i(w)&&!Ki)throw new Mn("Choose a source audio file.");const ii={options:vt};if(["gen","s2s","align"].includes(i(C).task)&&i(tt).trim()&&!i(m)&&!i(B)&&!["apollo","universr","reuse","sidon"].includes(i(C).family)&&(ii.text=i(tt)),["gen","s2s","align"].includes(i(C).task)&&i(Xe).trim()&&!i(m)&&!["apollo","universr","reuse","sidon"].includes(i(C).family)&&(ii.language=i(Xe)),i(C).task==="gen"){if(i(m))ii.lyrics=i(_e).trim();else{const li=Cc();li&&(ii.text=li),i(_e).trim()&&(ii.lyrics=i(_e)),!i(c)&&i(C).family!=="auk"&&(i(b)?vt.duration_sec=i(ne):ii.duration_seconds=i(ne))}ii.seed=Dt,Oi(i(C))&&(ii.max_tokens=i(ve))}else i(C).task==="s2s"&&(["apollo","reuse","sidon"].includes(i(C).family)||(ii.seed=Dt),Oi(i(C))&&(ii.max_tokens=i(ve)));Ki&&(ii.audio=Ki),Ps&&(ii.voice_ref=Ps),i(et).trim()&&Ra(i(C),"reference_text")&&(ii.reference_text=i(et));const Fa={model:i(C).id,request:ii};ut.push({endpoint:"/v1/tasks/run",body:JSON.parse(JSON.stringify(Fa))});const Ji=await _l(Fa,Pi.signal);if(ke=typeof Ji.text=="string"?Ji.text:"",Be=JSON.stringify(Ji,(li,ts)=>(li==="audio"||li==="payload")&&typeof ts=="string"?``:ts,2),typeof Ji.audio=="string"&&(K=[{id:"output",url:rm(Ji.audio)}]),Array.isArray(Ji.named_audio_outputs)){for(const li of K)URL.revokeObjectURL(li.url);K=Ji.named_audio_outputs.filter(li=>typeof li?.id=="string"&&typeof li?.audio=="string").map(li=>({id:li.id,url:rm(li.audio)}))}if(Array.isArray(Ji.artifacts))if(i(C).family==="liveavatar"){E(ee,"Encoding LiveAvatar MP4 in browser…");const li=await Gb(Ji,Yt,"LiveAvatar","liveavatar");J=li.artifacts,li.warning&&wi(li.warning)}else J=Ji.artifacts.filter(li=>typeof li?.id=="string"&&typeof li?.payload=="string").map(li=>({id:li.id,extension:li.meta?.extension||(li.meta?.format==="midi"?"mid":"bin"),mime:li.meta?.mime||"application/octet-stream",url:`data:${li.meta?.mime||"application/octet-stream"};base64,${li.payload}`}))}const ar=JSON.stringify(an,null,2),ks=URL.createObjectURL(new Blob([ar],{type:"application/json"}));En(),E($t,K),E(dt,J),E(wt,ke),E(qt,Be),E(Nt,{url:ks,filename:`${an.model.id}-${Date.now()}.settings.json`}),E(ta,an.model.id);{const ii={id:gn++,modelId:i(ta),task:an.model.task,label:an.model.display_name,createdAt:new Date().toISOString(),seed:Dt,audio:K,artifacts:J,text:ke,json:Be,settings:i(Nt),settingsJson:ar};E(xt,[ii,...i(xt)]),E(Kt,ii.id),wu(a().historyLimit)}E(ri,""),Ye=!0;const zn=((performance.now()-N)/1e3).toFixed(2);E(Oe,""),E(Ie,""),E(ee,i(W)("status.completeIn",{seconds:zn})),wi(i(ee))}catch(Dt){Dt?.name==="AbortError"?(E(ee,"Cancelled."),E(Oe,""),E(Ie,"")):(E(ee,Dt instanceof Error?Dt.message:String(Dt)),E(Oe,Dt instanceof Mn?i(ee):""),E(Ie,Dt instanceof Mn?"":i(ee)),wi(`Request failed: ${i(ee)}`))}finally{if(Ja!==null&&window.clearInterval(Ja),Ja=null,!Ye){for(const Dt of K)URL.revokeObjectURL(Dt.url);for(const Dt of J)URL.revokeObjectURL(Dt.url)}E(ae,!1),Pi=null,Ba(i(C))&&!i(l)&&tn()}}function yM(){Pi?.abort()}function wM(N){if(i(F)!=="voices"){if(N.key==="Escape"&&i(Vi)){E(Vi,!1);return}(N.ctrlKey||N.metaKey)&&N.key==="Enter"&&!i(ae)&&(N.preventDefault(),i(F)==="arena"?i(Q)?.runArena():ok())}}function Tu(N){N!==i(F)&&(i(F)==="voices"&&!i(H)?.canClose()||E(F,N))}async function jc(){if(i(ie)?.ui_management)try{const N=await Y4(),K=Object.fromEntries(N.map(Be=>{const Ye=i(bi)[Be.id];return[Be.id,{...Be,total_bytes:Be.total_bytes||Ye?.total_bytes||0}]}));E(bi,{...i(bi),...K});let J=!1;for(const Be of pn){const Ye=Ui(Be,i(bi)).filter(Yt=>Yt.state==="complete");for(const Yt of Ye){const Dt=i(Fe)[Yt.id];Dt&&!Dt.installed&&E(Fe,{...i(Fe),[Yt.id]:{...Dt,installed:!0}}),Yt.finished_at_ms>(ei[Yt.id]||0)&&(ei={...ei,[Yt.id]:Yt.finished_at_ms},J=!0)}Ye.length>0&&Be.id===i(Y)&&await js()}J&&(E(fe,"idle"),await ca());const ke=Object.values(i(bi)).some(Be=>Be.state==="queued"||Be.state==="running"||Be.state==="cancelling");ke&&Yi===null?Yi=window.setInterval(jc,1500):!ke&&Yi!==null&&(window.clearInterval(Yi),Yi=null)}catch(N){wi(`Installer status unavailable: ${N instanceof Error?N.message:N}`)}}async function kM(N,K,J=!1){if(i(Fe)[K.id]?.installed&&!J)return;const ke=i(bi)[K.id];if(ke&&["queued","running","cancelling"].includes(ke.state))return;const Be=i(Fe)[K.id]?.size_bytes,Ye=J?"Update":"Download";if(!window.confirm(`${Ye} ${N.display_name} ${K.label}${Be?` (${zo(Be)})`:""}?`))return;Vn(N,K),E(ee,`Starting ${K.label} installation for ${N.display_name}...`);const Yt=i(Fe)[K.id]?.size_bytes||0;E(bi,{...i(bi),[K.id]:{id:K.id,state:"queued",message:"Sending installation request…",exit_code:-1,downloaded_bytes:0,total_bytes:Yt,progress_percent:0,started_at_ms:0,finished_at_ms:0}});try{Yi===null&&(Yi=window.setInterval(jc,1e3));const Dt=await H4({id:K.id,overwrite:J});E(bi,{...i(bi),[Dt.id]:{...Dt,total_bytes:Dt.total_bytes||Yt}}),await jc(),E(ee,`${N.display_name} ${K.label} installation is running in the background.`),wi(i(ee))}catch(Dt){E(ee,Dt instanceof Error?Dt.message:String(Dt)),E(bi,{...i(bi),[K.id]:{id:K.id,state:"failed",message:i(ee),exit_code:-1,downloaded_bytes:0,total_bytes:0,progress_percent:-1,started_at_ms:0,finished_at_ms:Date.now()}}),wi(`Installer failed to start: ${i(ee)}`)}}async function xM(N,K){if(["queued","running","cancelling"].includes(K.state)){E(ee,`Stopping ${N.display_name} download...`);try{const J=await W4(K.id);E(bi,{...i(bi),[J.id]:J}),Yi===null&&(Yi=window.setInterval(jc,500)),E(ee,`${N.display_name} download is stopping. Staging files will be removed automatically.`),wi(i(ee))}catch(J){E(ee,J instanceof Error?J.message:String(J)),E(Ie,i(ee)),E(bi,{...i(bi),[K.id]:{...K,state:"failed",message:i(ee),finished_at_ms:Date.now()}})}}}async function SM(N,K){if(!["queued","running","cancelling"].includes(K.state)){E(ee,`Cleaning partial ${N.display_name} download...`);try{const J=await Q4(K.id);E(bi,{...i(bi),[K.id]:{...K,state:"cleaned",message:J.message,downloaded_bytes:0,total_bytes:0,progress_percent:100,finished_at_ms:Date.now()}}),E(ee,J.message),wi(i(ee))}catch(J){E(ee,J instanceof Error?J.message:String(J)),E(Ie,i(ee)),E(bi,{...i(bi),[K.id]:{...K,state:"failed",message:i(ee),finished_at_ms:Date.now()}})}}}async function TM(N,K){if(!(!i(Fe)[K.id]?.installed||!window.confirm(`Delete ${N.display_name} ${K.label}? +`):Ye.text||"")),M(ne,ft?.lyrics??Ye.lyrics??""),M(Pe,ft?.language??Ye.language??""),M(xe,ft?.moss_language??Ye.language??"English"),M(lt,ft?.context??(J.task==="asr"&&Ye.text||"")),M(re,ft?.reference_text??Ye.reference_text??""),M(ke,ft?.instructions??Ye.instructions??""),M(fe,ft?.duration??Ye.duration_seconds??Ye.options?.duration_sec??i(fe)),M(me,ft?.max_tokens??Ye.max_tokens??i(me)),M(Fe,ft?.asr_max_tokens??Ye.options?.max_tokens??i(Fe)),M(yn,ft?.long_text??K.requests.length>1),M(Yi,ft?.text_chunk_size??i(Yi)),M(vt,ft?.voice??Ye.voice??""),M(nt,ft?.advanced_json??JSON.stringify(Object.fromEntries(Object.entries(Ye.options||{}).filter(([bt])=>!i(St).some(Qi=>Qi.name===bt))),null,2)),M(we,Zt),M(Ue,null),M(Ae,null),M(he,null),M(He,[null,null,null,null]),M(da,""),M(Ve,null),i(Be)&&fi(Be,i(Be).value=""),i(Ie)&&fi(Ie,i(Ie).value=""),i(Ge)&&fi(Ge,i(Ge).value=""),i(Gt)&&fi(Gt,i(Gt).value="");for(const bt of i(ct))bt&&(bt.value="");const ma=i(ae).find(bt=>bt.id===J.id&&bt.loaded);ii=!!(ma&&(!lr(i(be),ma.path)||Object.entries(Jr(J)).some(([bt,Qi])=>ma.session_options?.[bt]!==Qi)||JSON.stringify(Kt)!==JSON.stringify(hi))),await Ls();const sn=Object.values(K.input_files||{}).flat().filter(bt=>typeof bt=="string"&&bt);M(pe,`Imported settings for ${J.display_name}.`),sn.length&&M(pe,i(pe)+` Reselect the referenced files: ${sn.join(", ")}.`),K.backend&&K.backend!==i(ge)?.backend&&M(pe,i(pe)+` Exported backend: ${K.backend}; current backend: ${i(ge)?.backend}.`),M(De,sn.length?i(pe):""),M(et,""),vi(i(pe)),ii&&i(ge)?.ui_management&&!ya(i(z))&&window.confirm("The imported model settings differ from the loaded model. Reload now?")&&await ku()}async function TM(N){if(!(!N||i(Ee)||i(_e)||i(Bi)))try{await sk(await N.text())}catch(K){M(pe,K instanceof Error?K.message:String(K)),M(et,i(pe)),M(De,""),vi(`Settings import failed: ${i(pe)}`)}finally{i($n)&&fi($n,i($n).value="")}}async function rk(N){if(ya(i(z))){if(!i(ae).some(J=>J.id===i(W)&&J.mode===N))throw new Error(`Configured model is not registered in ${N} mode.`);return}const K=i(ae).find(J=>J.id===i(W)&&J.loaded);if((!K||K.mode!==N)&&(await No(N),await mn()),!i(ae).some(J=>J.id===i(W)&&J.loaded&&J.mode===N&&jo(J,i(z))))throw new Error(`Model did not load in ${N} mode.`)}function ok(){for(const N of["audio/webm;codecs=opus","audio/webm","audio/ogg;codecs=opus"])if(MediaRecorder.isTypeSupported(N))return N}async function ch(N){if(!navigator.mediaDevices?.getUserMedia||typeof MediaRecorder>"u"){M(pe,"Microphone recording is not supported by this browser.");return}if(!(i(Li)||i(Xa)))try{cn=await navigator.mediaDevices.getUserMedia({audio:!0});const K=[],J=ok();M(Li,new MediaRecorder(cn,J?{mimeType:J}:void 0)),M(tn,N),fi(Li,i(Li).ondataavailable=ve=>{ve.data.size&&K.push(ve.data)}),fi(Li,i(Li).onstop=()=>{const ve=new Blob(K,{type:i(Li)?.mimeType||J||"audio/webm"}),Me=new File([ve],`recording-${Date.now()}.webm`,{type:ve.type});N==="source"?M(Ue,Me):(M(vt,""),M(da,""),M(Ae,Me),i(Ie)&&fi(Ie,i(Ie).value="")),cn?.getTracks().forEach(Ye=>Ye.stop()),cn=null,M(Li,null),M(tn,null),M(pe,`${N==="voice"?"Voice reference":"Source audio"} recording captured.`)}),i(Li).start(),M(pe,`Recording ${N==="voice"?"voice reference":"source audio"}…`)}catch(K){M(pe,K instanceof Error?K.message:String(K)),cn?.getTracks().forEach(J=>J.stop()),cn=null,M(Li,null),M(tn,null)}}function dh(){i(Li)?.state==="recording"&&i(Li).stop()}async function xu(){try{M(Ca,await Ub())}catch(N){vi(`Voice library unavailable: ${N instanceof Error?N.message:N}`)}}async function Su(){if(!i(W)||!i(ge)){M(oi,[]);return}try{M(oi,await E1(i(W))),i(vt)&&(new Set([...i(oi),...i(P)?i(z)?.builtin_voices||[]:[]]).has(i(vt))||M(vt,""))}catch(N){M(oi,[]),vi(`Configured voices unavailable: ${N instanceof Error?N.message:N}`)}}function $M(N){N.startsWith("saved:")?lk(N.slice(6)):N.startsWith("preset:")?ra(N.slice(7)):ut()}function lk(N){M(da,N);const K=i(Ca).find(J=>J.id===N);K&&(M(vt,""),M(Ae,new File([K.audio],`${K.name}.wav`,{type:"audio/wav"})),M(Ve,null),i(Ie)&&fi(Ie,i(Ie).value=""),i(Gt)&&fi(Gt,i(Gt).value=""),M(re,K.transcript),M(pe,`Selected saved voice “${K.name}”.`))}async function qM(N){if(!N.size)return;const K=new File([N],`live-${Oa}.webm`,{type:N.type}),J=await Or(K,16e3),ve=await To(J),Me=await sm({model:i(z).id,audio:ve,language:i(Pe),text:i(lt),options:dr()}),Ye=String(Me.text||"").trim();Ye&&M(Ft,[i(Ft),Ye].filter(Boolean).join(" ")),Oa+=1,M(pe,`Listening… ${Oa} chunk${Oa===1?"":"s"} transcribed.`)}function ck(){if(!Hn||is)return;const N=[],K=ok();an=new MediaRecorder(Hn,K?{mimeType:K}:void 0),an.ondataavailable=J=>{J.data.size&&N.push(J.data)},an.onstop=()=>{const J=new Blob(N,{type:an?.mimeType||K||"audio/webm"});Ss=Ss.then(()=>qM(J)).catch(ve=>{M(pe,ve instanceof Error?ve.message:String(ve)),vi(`Live transcription failed: ${i(pe)}`)}),an=null,is||ck()},an.start(),window.setTimeout(()=>{an?.state==="recording"&&an.stop()},4e3)}async function GM(){if(i(w)){if(!navigator.mediaDevices?.getUserMedia||typeof MediaRecorder>"u"){M(pe,"Live microphone transcription is not supported by this browser.");return}Ds(),M(Xa,!0),is=!1,Oa=0;try{await rk("streaming"),Hn=await navigator.mediaDevices.getUserMedia({audio:!0}),M(pe,"Listening… speech is transcribed in four-second native streaming requests."),ck()}catch(N){M(pe,N instanceof Error?N.message:String(N)),dk()}}}function dk(){is=!0,an?.state==="recording"&&an.stop(),Hn?.getTracks().forEach(N=>N.stop()),Hn=null,M(Xa,!1),M(pe,Oa?`Live transcription stopped after ${Oa} chunks.`:"Live transcription stopped.")}function FM(N){return Aa=N,()=>{Aa===N&&(Aa=null)}}async function AM(N,K){if(ya(i(z)))return ku();const J=()=>{if(i(W)!==N)throw new Error("The model changed while it loaded; press Run again.")};(!i(l)||ii)&&(ii&&i(ae).some(ve=>ve.id===i(W)&&ve.loaded)&&(await Ir(i(W)),await mn(),J()),await No(K),await mn(),J(),ii=!1),await rk(K).finally(J)}async function CM(N,K,J){const ve=Aa,Me=i(z).id;if(!ve)throw i(H)!=="studio"?new Bn("Open the Studio tab to run this entry."):new Error(`${i(z).display_name} is not ready.`);const Ye=await ve({modelId:Me,seed:N,maxTokens:bi(i(z))?i(me):void 0,language:i(Pe).trim(),options:dr(),signal:J,setStatus:ft=>{M(pe,ft)},warning:ft=>new Bn(ft),ensureLoaded:ft=>AM(Me,ft)});Ds(),Ye.audio&&M(rt,[{id:"reply",url:URL.createObjectURL(Ye.audio)}]),M(Ft,Ye.text),M(Qt,Ye.json),M(Tt,Ye.artifacts||[]),M(Sa,Me),M(De,""),M(et,""),M(pe,i(Q)("status.completeIn",{seconds:((performance.now()-K)/1e3).toFixed(2)})),vi(i(pe))}async function uk(){if(i(Ee)||i(Se)||i(c)||i(Bi))return;if(!i(W)){M(pe,"Choose an installed model before running a request."),M(De,i(pe)),M(et,"");return}if(!i(l)&&i(ie)===!1){M(pe,`${i(z).display_name} is not downloaded. Install a model package from the Models tab first.`),M(De,i(pe)),M(et,"");return}M(Ee,!0),va=new AbortController;const N=performance.now();M(bn,0),Tn=window.setInterval(()=>{M(bn,(performance.now()-N)/1e3)},250);let K=[],J=[],ve="",Me="",Ye=!1;const ft=[];M(De,""),M(et,""),M(pe,i(Q)("status.runningTask",{task:rr(i(z).task)})),vi(i(pe));const Zt=i(z).family==="liveavatar"?i(Ue):null;try{const Kt=yu(i(we));if(i(d)){await CM(Kt,N,va.signal);return}if(i(B)&&!i(Ae))throw new Bn(`${i(z).display_name_en||i(z).display_name} requires a reference voice.`);if(i(A)&&!i(re).trim()){const ai=i(L)?"Qwen3-TTS Base voice cloning":i(z).display_name_en||i(z).display_name;throw new Bn(`${ai} requires a reference transcript. Choose a matching .txt file or enter the transcript.`)}if(i(D)&&!i(ne).trim())throw new Bn(`${i(z).display_name_en||i(z).display_name} requires lyrics.`);if(i(z).family==="liveavatar"){if(!i(Ue))throw new Bn("LiveAvatar requires driving audio.");if(!String(i(Re).reference_image_path||"").trim())throw new Bn("LiveAvatar requires a reference image.")}await ku();const ma=i(ae).find(ai=>ai.id===i(z).id),sn={schema_version:1,created_at:new Date().toISOString(),backend:i(ge)?.backend,resolved_seed:Kt,model:{id:i(z).id,display_name:i(z).display_name,family:i(z).family,task:i(z).task,mode:ma?.mode||i(z).mode||"offline",path:ma?.path||i(be),package_id:Uo(i(z))?.id,load_options:{...i(z).load_options||{},...hi},session_options:ma?.session_options||Jr(i(z))},ui:{text:i(Qe),lyrics:i(ne),language:i(Pe),moss_language:i(xe),context:i(lt),reference_text:i(re),instructions:i(ke),duration:i(fe),max_tokens:i(me),asr_max_tokens:i(Fe),long_text:i(yn),text_chunk_size:i(Yi),voice:i(vt),advanced_values:{...i(Re)},advanced_json:i(nt)},input_files:{source:i(Ue)?.name,voice_reference:i(Ae)?.name,video:i(he)?.name,speaker_references:i(He).map(ai=>ai?.name||null)},requests:ft},bt=dr();if(i($)){const ai=await Oo();ai&&(bt.voice_samples=ai)}i(O)&&i(he)&&(bt.video=await gc(i(he),va?.signal));const Qi=i(T)?await Ul(i(Ue)):void 0,Vs=i(j)&&!i($)&&!(i(P)&&i(vt))?await Ul(i(Ae)):void 0;if(["tts","clon","vdes"].includes(i(z).task)){if(!i(Qe).trim())throw new Bn("Enter text to generate.");const ai=Math.max(40,i(Yi));i(z).family==="voxcpm2"&&(bt.text_chunk_size=ai);const za=i(yn)&&i(z).task!=="vdes"&&i(z).family!=="moss_ttsd"?cT(i(Qe),ai):[i(Qe)],Zi=[],li=[];for(let jn=0;jn1?`Synthesizing chunk ${jn+1} of ${za.length}…`:i(Q)("status.runningTask",{task:rr(i(z).task)}));const qn={model:i(z).id,input:za[jn],language:["moss_ttsd","moss_voicegen"].includes(i(z).family)?i(xe):i(Pe),seed:oe(Kt,jn),options:bt};bi(i(z))&&!["kugelaudio","voxtral_tts"].includes(i(z).family)&&(qn.max_tokens=i(me)),Vs?qn.voice_ref=Vs:i(vt)?qn.voice=zn[i(vt)]||i(vt):i(z).default_voice&&(qn.voice=i(z).default_voice),i(re).trim()&&Za(i(z),"reference_text")&&(qn.reference_text=i(re)),i(z).task==="vdes"&&i(ke).trim()&&(i(z).family==="ming3_tts"?qn.instruct=i(ke):qn.instructions=i(ke)),ft.push({endpoint:"/v1/audio/speech",body:JSON.parse(JSON.stringify(qn))});const rs=await nm(qn,va.signal);Zi.push(rs.blob),li.push({chunk:jn+1,characters:za[jn].length,wall_ms:rs.wallMs,rtf:rs.rtf})}const ss=await Y4(Zi);K=[{id:za.length>1?"merged":"output",url:URL.createObjectURL(ss)}],Me=JSON.stringify({seed:Kt,chunks:za.length,characters:i(Qe).length,chunk_budget:i(Yi),timings:li},null,2)}else if(i(z).task==="asr"){if(!Qi)throw new Bn("Choose an audio file.");i(z).family in Tl?bt.max_tokens=i(Fe):i(z).family==="ming3_audio"&&(bt.max_tokens=i(me));const ai={model:i(z).id,audio:Qi,language:i(Pe),text:i(lt),options:bt},za=["owsm","crisperwhisper"].includes(i(z).family)&&bt.return_timestamps===!0;ft.push({endpoint:za?"/v1/audio/transcriptions/details":"/v1/audio/transcriptions",body:JSON.parse(JSON.stringify(ai))});const Zi=await sm(ai,va.signal,za);ve=String(Zi.text||""),Me=JSON.stringify(Zi,null,2)}else{if(i(y)&&!Qi)throw new Bn("Choose a source audio file.");const ai={options:bt};if(["gen","s2s","align"].includes(i(z).task)&&i(Qe).trim()&&!i(m)&&!i(V)&&!["apollo","universr","reuse","sidon"].includes(i(z).family)&&(ai.text=i(Qe)),["gen","s2s","align"].includes(i(z).task)&&i(Pe).trim()&&!i(m)&&!["apollo","universr","reuse","sidon"].includes(i(z).family)&&(ai.language=i(Pe)),i(z).task==="gen"){if(i(m))ai.lyrics=i(ne).trim();else{const li=xl();li&&(ai.text=li),i(ne).trim()&&(ai.lyrics=i(ne)),!i(_)&&i(z).family!=="auk"&&(i(v)?bt.duration_sec=i(fe):ai.duration_seconds=i(fe))}ai.seed=Kt,bi(i(z))&&(ai.max_tokens=i(me))}else i(z).task==="s2s"&&(["apollo","reuse","sidon"].includes(i(z).family)||(ai.seed=Kt),bi(i(z))&&(ai.max_tokens=i(me)));Qi&&(ai.audio=Qi),Vs&&(ai.voice_ref=Vs),i(re).trim()&&Za(i(z),"reference_text")&&(ai.reference_text=i(re));const za={model:i(z).id,request:ai};ft.push({endpoint:"/v1/tasks/run",body:JSON.parse(JSON.stringify(za))});const Zi=await vl(za,va.signal);if(ve=typeof Zi.text=="string"?Zi.text:"",Me=JSON.stringify(Zi,(li,ss)=>(li==="audio"||li==="payload")&&typeof ss=="string"?``:ss,2),typeof Zi.audio=="string"&&(K=[{id:"output",url:rm(Zi.audio)}]),Array.isArray(Zi.named_audio_outputs)){for(const li of K)URL.revokeObjectURL(li.url);K=Zi.named_audio_outputs.filter(li=>typeof li?.id=="string"&&typeof li?.audio=="string").map(li=>({id:li.id,url:rm(li.audio)}))}if(Array.isArray(Zi.artifacts))if(i(z).family==="liveavatar"){M(pe,"Encoding LiveAvatar MP4 in browser…");const li=await Cb(Zi,Zt,"LiveAvatar","liveavatar");J=li.artifacts,li.warning&&vi(li.warning)}else J=Zi.artifacts.filter(li=>typeof li?.id=="string"&&typeof li?.payload=="string").map(li=>({id:li.id,extension:li.meta?.extension||(li.meta?.format==="midi"?"mid":"bin"),mime:li.meta?.mime||"application/octet-stream",url:`data:${li.meta?.mime||"application/octet-stream"};base64,${li.payload}`}))}const ur=JSON.stringify(sn,null,2),Gs=URL.createObjectURL(new Blob([ur],{type:"application/json"}));Ds(),M(rt,K),M(Tt,J),M(Ft,ve),M(Qt,Me),M(Mt,{url:Gs,filename:`${sn.model.id}-${Date.now()}.settings.json`}),M(Sa,sn.model.id);{const ai={id:Ii++,modelId:i(Sa),task:sn.model.task,label:sn.model.display_name,createdAt:new Date().toISOString(),seed:Kt,audio:K,artifacts:J,text:ve,json:Me,settings:i(Mt),settingsJson:ur};M(zt,[ai,...i(zt)]),M(Ti,ai.id),nk(a().historyLimit)}M(Si,""),Ye=!0;const Rn=((performance.now()-N)/1e3).toFixed(2);M(De,""),M(et,""),M(pe,i(Q)("status.completeIn",{seconds:Rn})),vi(i(pe))}catch(Kt){Kt?.name==="AbortError"?(M(pe,"Cancelled."),M(De,""),M(et,"")):(M(pe,Kt instanceof Error?Kt.message:String(Kt)),M(De,Kt instanceof Bn?i(pe):""),M(et,Kt instanceof Bn?"":i(pe)),vi(`Request failed: ${i(pe)}`))}finally{if(Tn!==null&&window.clearInterval(Tn),Tn=null,!Ye){for(const Kt of K)URL.revokeObjectURL(Kt.url);for(const Kt of J)URL.revokeObjectURL(Kt.url)}M(Ee,!1),va=null,ya(i(z))&&!i(l)&&mn()}}function MM(){va?.abort()}function EM(N){if(i(H)!=="voices"){if(N.key==="Escape"&&i(Ci)){M(Ci,!1);return}(N.ctrlKey||N.metaKey)&&N.key==="Enter"&&!i(Ee)&&(N.preventDefault(),i(H)==="arena"?i(ee)?.runArena():uk())}}function Tu(N){N!==i(H)&&(i(H)==="voices"&&!i(Y)?.canClose()||M(H,N))}async function Dc(){if(i(ge)?.ui_management)try{const N=await n5(),K=Object.fromEntries(N.map(Me=>{const Ye=i(Ai)[Me.id];return[Me.id,{...Me,total_bytes:Me.total_bytes||Ye?.total_bytes||0}]}));M(Ai,{...i(Ai),...K});let J=!1;for(const Me of vn){const Ye=nn(Me,i(Ai)).filter(Zt=>Zt.state==="complete");for(const Zt of Ye){const Kt=i(gt)[Zt.id];Kt&&!Kt.installed&&M(gt,{...i(gt),[Zt.id]:{...Kt,installed:!0}}),Zt.finished_at_ms>(Vt[Zt.id]||0)&&(Vt={...Vt,[Zt.id]:Zt.finished_at_ms},J=!0)}Ye.length>0&&Me.id===i(W)&&await Ls()}J&&(M(Xi,"idle"),await fn());const ve=Object.values(i(Ai)).some(Me=>Me.state==="queued"||Me.state==="running"||Me.state==="cancelling");ve&&tt===null?tt=window.setInterval(Dc,1500):!ve&&tt!==null&&(window.clearInterval(tt),tt=null)}catch(N){vi(`Installer status unavailable: ${N instanceof Error?N.message:N}`)}}async function zM(N,K,J=!1){if(i(gt)[K.id]?.installed&&!J)return;const ve=i(Ai)[K.id];if(ve&&["queued","running","cancelling"].includes(ve.state))return;const Me=i(gt)[K.id]?.size_bytes,Ye=J?"Update":"Download";if(!window.confirm(`${Ye} ${N.display_name} ${K.label}${Me?` (${zo(Me)})`:""}?`))return;Po(N,K),M(pe,`Starting ${K.label} installation for ${N.display_name}...`);const Zt=i(gt)[K.id]?.size_bytes||0;M(Ai,{...i(Ai),[K.id]:{id:K.id,state:"queued",message:"Sending installation request…",exit_code:-1,downloaded_bytes:0,total_bytes:Zt,progress_percent:0,started_at_ms:0,finished_at_ms:0}});try{tt===null&&(tt=window.setInterval(Dc,1e3));const Kt=await e5({id:K.id,overwrite:J});M(Ai,{...i(Ai),[Kt.id]:{...Kt,total_bytes:Kt.total_bytes||Zt}}),await Dc(),M(pe,`${N.display_name} ${K.label} installation is running in the background.`),vi(i(pe))}catch(Kt){M(pe,Kt instanceof Error?Kt.message:String(Kt)),M(Ai,{...i(Ai),[K.id]:{id:K.id,state:"failed",message:i(pe),exit_code:-1,downloaded_bytes:0,total_bytes:0,progress_percent:-1,started_at_ms:0,finished_at_ms:Date.now()}}),vi(`Installer failed to start: ${i(pe)}`)}}async function UM(N,K){if(["queued","running","cancelling"].includes(K.state)){M(pe,`Stopping ${N.display_name} download...`);try{const J=await t5(K.id);M(Ai,{...i(Ai),[J.id]:J}),tt===null&&(tt=window.setInterval(Dc,500)),M(pe,`${N.display_name} download is stopping. Staging files will be removed automatically.`),vi(i(pe))}catch(J){M(pe,J instanceof Error?J.message:String(J)),M(et,i(pe)),M(Ai,{...i(Ai),[K.id]:{...K,state:"failed",message:i(pe),finished_at_ms:Date.now()}})}}}async function BM(N,K){if(!["queued","running","cancelling"].includes(K.state)){M(pe,`Cleaning partial ${N.display_name} download...`);try{const J=await i5(K.id);M(Ai,{...i(Ai),[K.id]:{...K,state:"cleaned",message:J.message,downloaded_bytes:0,total_bytes:0,progress_percent:100,finished_at_ms:Date.now()}}),M(pe,J.message),vi(i(pe))}catch(J){M(pe,J instanceof Error?J.message:String(J)),M(et,i(pe)),M(Ai,{...i(Ai),[K.id]:{...K,state:"failed",message:i(pe),finished_at_ms:Date.now()}})}}}async function RM(N,K){if(!(!i(gt)[K.id]?.installed||!window.confirm(`Delete ${N.display_name} ${K.label}? -Only this package precision will be removed.`))){E(ee,`Deleting ${N.display_name} ${K.label}...`);try{Sl(N,K)&&(E(ee,`Unloading ${N.display_name} ${K.label} before deletion...`),await Pr(N.id),await tn());const ke=await K4(K.id);E(Fe,{...i(Fe),[K.id]:{...i(Fe)[K.id],installed:!1}});const Be={...i(bi)};if(delete Be[K.id],E(bi,Be),fu(N,K)){const Ye=(N.install_packages||[]).find(Yt=>Yt.id!==K.id&&i(Fe)[Yt.id]?.installed),ut={...zi};Ye?ut[N.id]=Ye.id:delete ut[N.id],zi=ut,localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(zi)),N.id===i(Y)&&E(re,Uo(Ye?.path||N.path))}Zr(i(Fe)),E(fe,"idle"),await ca(),N.id===i(Y)&&(await js(),jo()),E(ee,ke.message||`${N.display_name} ${K.label} deleted.`),wi(i(ee))}catch(ke){E(ee,ke instanceof Error?ke.message:String(ke)),wi(`Package deletion failed: ${i(ee)}`)}}}Fs(async()=>{try{TF()}catch(J){au.set(J instanceof Error?J.message:String(J)),wi(`Configuration could not be loaded: ${J instanceof Error?J.message:J}`)}await Wr(),Ai=window.matchMedia("(prefers-color-scheme: dark)"),jt=Ai.matches,Ni=J=>{jt=J.matches,i(Rt)==="system"&&vn()},Ai.addEventListener("change",Ni),E(Rt,W1(localStorage.getItem(H1))),vn(i(Rt));const N=localStorage.getItem("audiocpp.ui.language");E(oi,O1(N?[N]:navigator.languages)),document.documentElement.lang=i(oi);try{const J=JSON.parse(localStorage.getItem("audiocpp.ui.modelsFolderHistory")||"[]");if(!Array.isArray(J)||J.some(ke=>typeof ke!="string"||!ke.trim()))throw new Error("Invalid models-folder history.");E(Zn,[...new Set(J)].slice(0,10))}catch(J){wi(`Models folder history unavailable: ${J instanceof Error?J.message:String(J)}`)}try{zi=JSON.parse(localStorage.getItem("audiocpp.ui.packageIds")||"{}")}catch{zi={}}localStorage.removeItem("audiocpp.ui.packagePaths");const K=localStorage.getItem("audiocpp.ui.model");if(K&&E(Y,K),E(C,i(ga).find(J=>J.id===i(Y))||i(ga)[0]||pn[0]),E(_t,""),E(Ot,[]),E(Qa,la(i(C))),i(Y)&&(Bs={...Bs,[i(Qa)]:i(Y)}),da(),await tn(),i(ie)?.ui_management)try{let J=await J4();const ke=localStorage.getItem("audiocpp.ui.modelsFolder");ke&&ke!==J.models_root&&(J=await A1(ke)),Rc(J)}catch(J){E(ee,J instanceof Error?J.message:String(J)),E(Ie,i(ee)),wi(`Models folder unavailable: ${i(ee)}`)}E(re,br(i(C))),i(ie)?.ui_management?(await ca(),await js(),jo()&&E(ee,"No installed model is selected. Choose a downloaded model or install one from the Models tab.")):E(ye,!!i(Y)),await xu(),await Su(),await jc()}),ul(()=>{Ja!==null&&window.clearInterval(Ja),En();for(const N of i(xt))eo(N);Pi?.abort(),i(vi)?.state==="recording"&&i(vi).stop(),kn=!0,Ha?.state==="recording"&&Ha.stop(),en?.getTracks().forEach(N=>N.stop()),Ln?.getTracks().forEach(N=>N.stop()),Yi!==null&&window.clearInterval(Yi),Ve!==null&&window.clearInterval(Ve),Ai&&Ni&&Ai.removeEventListener("change",Ni)}),Ke(()=>i(oi),()=>{E(W,N1(i(oi)))}),Ke(()=>(i(ie),pn),()=>{E(ga,i(ie)&&!i(ie).ui_management?zc():[...pn,...zc(!0)])}),Ke(()=>i(ga),()=>{E(kl,uu(i(ga)))}),Ke(()=>(i(ga),i(Y),pn),()=>{E(C,i(ga).find(N=>N.id===i(Y))||i(ga)[0]||pn[0])}),Ke(()=>i(Qa),()=>{E(r,Yr.find(N=>N.id===i(Qa))||Yr[0])}),Ke(()=>(i(ga),i(Qa)),()=>{E(o,i(ga).filter(N=>la(N)===i(Qa)).sort((N,K)=>Ec(N.display_name,K.display_name)))}),Ke(()=>(i(he),i(Y),i(C)),()=>{E(l,i(he).some(N=>N.id===i(Y)&&N.loaded&&Ro(N,i(C))))}),Ke(()=>i(C),()=>{E(u,Z7(i(C)?.family,i(C)?.task))}),Ke(()=>i(u),()=>{E(p,i(u)?.component)}),Ke(()=>(i(C),i(We)),()=>{E(g,i(C)?.family==="ace_step"?i(We).filter(N=>!["lora","lora_scale"].includes(N.name)):i(We))}),Ke(()=>i(u),()=>{E(h,i(u)?.replacesGenericControls||cn)}),Ke(()=>i(u),()=>{E(m,i(u)?.requestMode==="yue2")}),Ke(()=>i(u),()=>{E(f,i(u)?.requestMode==="panel")}),Ke(()=>(i(u),i(we)),()=>{E(d,i(u)?.blocksRunWhileUploading===!0&&i(we))}),Ke(()=>i(C),()=>{E(c,i(C)?.id==="firered-audio-semantic-edit"||i(C)?.id==="firered-audio-acoustic-edit")}),Ke(()=>i(C),()=>{E(_,i(C)?.family==="ace_step")}),Ke(()=>i(C),()=>{E(b,i(C)?.family==="controlfoley"||i(C)?.family==="midashenglm_gen")}),Ke(()=>i(C),()=>{E(v,(i(C)?.family==="breeze_tts"||i(C)?.family==="chatterbox_turbo"||i(C)?.family==="maya1"||i(C)?.family==="kugelaudio"||i(C)?.family==="voxtral_tts"||i(C)?.family==="lfm2_audio"&&!i(C)?.builtin_voices?.length)&&i(C)?.task==="tts")}),Ke(()=>(i(C),i(c)),()=>{E(w,["asr","vc","svc","s2s","sep","vad","diar","align","midi","turn","wake","cls"].includes(i(C)?.task)||i(c)||i(C)?.family==="liveavatar"||i(C)?.family==="latentsync"||i(C)?.family==="auk"&&i(C)?.task==="gen")}),Ke(()=>(i(w),i(C),i(h)),()=>{E(y,i(w)||i(C)?.task==="gen"&&!i(h).genSource)}),Ke(()=>i(C),()=>{E(T,i(C)?.request_options?.includes("video")===!0)}),Ke(()=>(i(C),i(v)),()=>{E(O,["clon","vc","svc"].includes(i(C)?.task)&&i(C)?.family!=="rvc"||i(C)?.task==="s2s"&&i(C)?.family==="personaplex"||i(C)?.task==="tts"&&!["supertonic"].includes(i(C)?.family)&&!i(v))}),Ke(()=>i(C),()=>{E(R,i(C)?.family==="vibevoice"||i(C)?.family==="moss_ttsd")}),Ke(()=>i(C),()=>{E($,!!i(C)?.builtin_voices?.length)}),Ke(()=>i(C),()=>{E(P,i(C)?.task==="tts"&&i(C)?.family==="qwen3_tts"&&!i(C)?.id.includes("custom"))}),Ke(()=>i(C),()=>{E(L,["tts","clon"].includes(i(C)?.task)&&!["auk","maya1","moss_ttsd","voxtral_tts"].includes(i(C)?.family))}),Ke(()=>(i(L),i(_t),i(C),i(P)),()=>{E(x,!(i(L)&&i(_t))&&(["clon","vc","svc"].includes(i(C)?.task)&&i(C)?.family!=="rvc"||i(P)))}),Ke(()=>i(C),()=>{E(U,Ci(i(C),"lyrics"))}),Ke(()=>(i(C),i(L),i(_t),i(ge),i(P)),()=>{E(D,Ci(i(C),"reference_text")&&!(i(L)&&i(_t))||!!i(ge)&&i(P))}),Ke(()=>(i($),i(Ot),i(C)),()=>{E(ti,i($)?Array.from(new Set([...i(Ot).filter(N=>!(N in St)),...i(C)?.builtin_voices||[]])):i(Ot))}),Ke(()=>(i(_t),i(ie),i($),Rd),()=>{E(M,i(_t)&&i(ie)&&!i($)?Rd(St[i(_t)]||i(_t)):"")}),Ke(()=>(i($),i(ti)),()=>{E(G,i($)||i(ti).every(N=>N in St))}),Ke(()=>i(C),()=>{E(B,i(C)?.family==="lfm2_audio"&&i(C)?.task==="s2s")}),Ke(()=>(i(C),i(B),i(h)),()=>{E(V,["tts","clon","gen","s2s","align","vdes"].includes(i(C)?.task)&&!["apollo","universr","builtin_audio_utils","reuse","sidon"].includes(i(C)?.family)&&!i(B)&&!i(h).text)}),Ke(()=>i(C),()=>{E(I,i(C)?.task==="asr"&&["voxtral_realtime","nemotron_asr","higgs_audio_stt","sense_asr","vibevoice_asr_streaming","confucius4_r2t2"].includes(i(C)?.family))}),Ke(()=>(i(ie),i(Fe),i(fe)),()=>{E(k,i(ie)===null||!!i(ie).ui_management&&Object.keys(i(Fe)).length===0&&i(fe)!=="failed")}),Ke(()=>(i(ga),i(he),i(Y),i(ye),i(Fe)),()=>{E(S,new Set(i(ga).filter(N=>{if(Ba(N)||i(he).some(J=>J.id===N.id&&J.loaded)||N.id===i(Y)&&i(ye)===!0)return!0;const K=N.install_packages||[];return!K.length||K.some(J=>i(Fe)[J.id]===void 0)?!0:K.some(J=>i(Fe)[J.id]?.installed)}).map(N=>N.id)))}),Ke(()=>a(),()=>{wu(a().historyLimit)}),ds(),An();var lk=yC();Gx("1uha8ag",N=>{J3(K=>{cf.title=K??""},[()=>(i(ae),i(Va),q(()=>i(ae)?`${i(Va).toFixed(1)} s · audio.cpp · Native Studio`:"audio.cpp · Native Studio"))])}),$e("keydown",cd,wM);var ch=Et(lk),dh=z(ch),ck=j(z(dh),2),dk=j(z(ck),2),$M=z(dk,!0);A(dk),A(ck),A(dh);var $u=j(dh,2),Pc=z($u);let uk;var qM=z(Pc,!0);A(Pc);var Nc=j(Pc,2);let fk;var GM=z(Nc,!0);A(Nc);var qu=j(Nc,2);let mk;var pk=j(qu,2);{var FM=N=>{var K=su();let J;var ke=z(K,!0);A(K),de(Be=>{J=Gi(K,1,"",null,J,{active:i(F)==="models"}),X(ke,Be)},[()=>(i(W),q(()=>i(W)("nav.models")))]),$e("click",K,es),te(N,K)};qe(pk,N=>{i(ie),q(()=>i(ie)?.ui_management!==!1)&&N(FM)})}var Oc=j(pk,2);let gk;var AM=z(Oc,!0);A(Oc);var Ic=j(Oc,2);let hk;var CM=z(Ic,!0);A(Ic),A($u);var uh=j($u,2),fh=z(uh),MM=z(fh,!0);A(fh);var to=j(fh,2);Mt(to,5,()=>N8,Xt,(N,K,J,ke)=>{var Be=$c(),Ye=z(Be,!0);A(Be);var ut={};de(()=>{X(Ye,(i(K),q(()=>i(K).name))),ut!==(ut=(i(K),q(()=>i(K).code)))&&(Be.value=(Be.__value=(i(K),q(()=>i(K).code)))??"")}),te(N,Be)}),A(to);var _k;jn(to),A(uh);var mh=j(uh,2),ph=z(mh),EM=z(ph,!0);A(ph);var io=j(ph,2);Mt(io,5,()=>eT,Xt,(N,K)=>{var J=$c(),ke=z(J,!0);A(J);var Be={};de(Ye=>{X(ke,Ye),Be!==(Be=(i(K),q(()=>i(K).id)))&&(J.value=(J.__value=(i(K),q(()=>i(K).id)))??"")},[()=>(i(W),i(K),q(()=>i(W)(`theme.${i(K).id}`,{},i(K).label)))]),te(N,J)}),A(io);var vk;jn(io),A(mh);var gh=j(mh,2);let bk;var zM=j(z(gh),1,!0);A(gh),A(ch);var hh=j(ch,2),UM=z(hh);{var BM=N=>{var K=mC(),J=Et(K);Mt(J,5,()=>Yr,Xt,(gt,ot)=>{var Gt=cA();let ft;var At=z(Gt),Ii=j(At),$i=z(Ii,!0);A(Ii),A(Gt),de((Ri,ji)=>{Gt.disabled=i(di),ft=Gi(Gt,1,"",null,ft,{active:i(Qa)===i(ot).id}),X(At,`${Ri??""} `),X($i,ji)},[()=>(i(ot),i(W),q(()=>Mo(i(ot).id,i(ot).label,i(W)))),()=>(i(ga),i(ot),q(()=>i(ga).filter(Ri=>la(Ri)===i(ot).id).length))]),$e("click",Gt,()=>vu(i(ot).id)),te(gt,Gt)}),A(J);var ke=j(J,2),Be=z(ke),Ye=z(Be),ut=z(Ye,!0);A(Ye);var Yt=j(Ye,2),Dt=z(Yt,!0);A(Yt);var ua=j(Yt,2),an=z(ua,!0);A(ua),A(Be);var vt=j(Be,2);let Ki;var Ps=z(vt,!0);A(vt),A(ke);var ar=j(ke,2),ks=z(ar),zn=z(ks),ii=z(zn),Fa=z(ii,!0);A(ii);var Ji=j(ii,2),li=z(Ji),ts=z(li,!0);A(li),li.value=li.__value="";var Un=j(li);Mt(Un,1,()=>(i(r),q(()=>i(r).tasks)),Xt,(gt,ot)=>{const Gt=Qt(()=>(i(o),i(ot),q(()=>i(o).filter($i=>$i.task===i(ot)))));var ft=Ls(),At=Et(ft);{var Ii=$i=>{var Ri=dA();Mt(Ri,5,()=>i(Gt),Xt,(ji,Hi)=>{var Ka=$c(),Tn=z(Ka);A(Ka);var dn={};de((gi,as)=>{Ka.disabled=gi,X(Tn,`${i(Hi),q(()=>i(Hi).display_name)??""}${as??""}`),dn!==(dn=(i(Hi),q(()=>i(Hi).id)))&&(Ka.value=(Ka.__value=(i(Hi),q(()=>i(Hi).id)))??"")},[()=>(i(S),i(Hi),q(()=>!i(S).has(i(Hi).id))),()=>(i(S),i(Hi),i(W),q(()=>i(S).has(i(Hi).id)?"":` — ${i(W)("studio.notDownloaded")}`))]),te(ji,Ka)}),A(Ri),de(ji=>be(Ri,"label",ji),[()=>(i(ot),i(W),q(()=>Qr(i(ot),i(W))))]),te($i,Ri)};qe(At,$i=>{Z(i(Gt)),q(()=>i(Gt).length)&&$i(Ii)})}te(gt,ft)}),A(Ji);var xn=j(Ji,2),is=z(xn);let Io;var Tr=z(is,!0);A(is);var ao=j(is,2),no=z(ao,!0);A(ao),A(xn),A(zn);var so=j(zn,2),Sa=z(so);{var ia=gt=>{var ot=uA(),Gt=Et(ot),ft=z(Gt,!0);A(Gt);var At=j(Gt,2);It(At);var Ii=j(At,2),$i=z(Ii,!0);A(Ii),de((Ri,ji)=>{X(ft,Ri),At.disabled=i(l)||i(se)||i(ae),be(Ii,"href",(i(C),q(()=>i(C).weights_url))),X($i,ji)},[()=>(i(W),q(()=>i(W)("studio.weightsPath"))),()=>(i(W),q(()=>i(W)("studio.downloadWeights")))]),Fi(At,()=>i(re),Ri=>E(re,Ri)),$e("change",At,js),te(gt,ot)},Bn=Si(()=>(i(C),i(ie),q(()=>i(C).family==="builtin_audio_utils"&&i(ie)?.ui_management&&!Ba(i(C)))));qe(Sa,gt=>{i(Bn)&>(ia)})}var nn=j(Sa,2);{var Sn=gt=>{var ot=fA();Mt(ot,5,()=>(i(C),q(()=>pu(i(C)))),Xt,(Gt,ft)=>{const At=Qt(()=>(i(ft),q(()=>i(ft).choice))),Ii=Qt(()=>(Z(i(At)),i(C),i(he),i(Fe),q(()=>!!(i(At)&&xr(i(C),i(At),i(he),i(Fe)))))),$i=Qt(()=>(Z(i(At)),i(C),i(he),q(()=>!!(i(At)&&Sl(i(C),i(At),i(he))))));var Ri=su();let ji;var Hi=z(Ri,!0);A(Ri),de((Ka,Tn)=>{Ri.disabled=i(se)||!i(Ii),be(Ri,"title",Ka),ji=Gi(Ri,1,"",null,ji,Tn),X(Hi,(Z(i(At)),i(ft),q(()=>i(At)?.label||i(ft).label)))},[()=>(i(W),Z(i($i)),Z(i(Ii)),Z(i(At)),i(ft),q(()=>i(W)(i($i)?"studio.unloadPackage":i(Ii)?"studio.loadPackage":"studio.packageNotDownloaded",{package:i(At)?.label||i(ft).label}))),()=>({resident:i($i),"selected-package":!!(i(At)&&i(Ii)&&fu(i(C),i(At)))})]),$e("click",Ri,()=>i(At)&&nh(i(At))),te(Gt,Ri)}),A(ot),de(Gt=>be(ot,"aria-label",Gt),[()=>(i(W),q(()=>i(W)("studio.format")))]),te(gt,ot)},xs=gt=>{var ot=su();let Gt;var ft=z(ot,!0);A(ot),de((At,Ii,$i)=>{Gt=Gi(ot,1,"single-model-toggle",null,Gt,{resident:i(l)}),ot.disabled=At,be(ot,"title",Ii),X(ft,$i)},[()=>(i(Y),i(se),i(d),i(ye),i(C),i(l),q(()=>!i(Y)||i(se)||i(d)||i(ye)===!1||Ba(i(C))&&!i(l))),()=>(i(C),i(l),i(W),q(()=>Ba(i(C))&&!i(l)?i(W)("studio.serverConfigured"):i(l)?i(W)("studio.unload"):i(W)("studio.load"))),()=>(i(C),i(se),i(W),i(l),q(()=>Ba(i(C))?i(se)?i(W)("studio.working"):i(l)?i(W)("studio.bundledLoaded"):i(W)("studio.configured"):i(se)?i(W)("studio.working"):i(l)?i(W)(i(C).family==="builtin_audio_utils"?"studio.unload":"studio.bundledLoaded"):i(W)("studio.load")))]),$e("click",ot,bu),te(gt,ot)};qe(nn,gt=>{i(Y),i(C),i(h),q(()=>i(Y)&&(i(C).install_packages||[]).length&&!i(h).packageButtons)?gt(Sn):gt(xs,-1)})}A(so);var Lo=j(so,2);{var Lc=gt=>{var ot=mA(),Gt=z(ot,!0);A(ot),de(ft=>X(Gt,ft),[()=>(i(W),q(()=>Jg(i(W))))]),te(gt,ot)};qe(Lo,gt=>{i(Y),i(C),q(()=>i(Y)&&(i(C)?.input_hint_en||i(C)?.input_hint))&>(Lc)})}A(ks);var Do=j(ks,2),Dc=z(Do);{var _h=gt=>{var ot=tC(),Gt=Et(ot),ft=z(Gt),At=z(ft),Ii=z(At,!0);A(At);var $i=j(At),Ri=z($i,!0);A($i),A(ft);var ji=j(ft,2),Hi=z(ji),Ka=z(Hi,!0);A(Hi);var Tn=j(Hi,2);{var dn=it=>{var st=pA(),ct=z(st);Xf(ct,{size:14});var lt=j(ct,1,!0);A(st),de(Vt=>{st.disabled=i(ae)||i(se)||i(di),X(lt,Vt)},[()=>(i(W),q(()=>i(W)("settings.load")))]),$e("click",st,()=>i(on)?.click()),te(it,st)};qe(Tn,it=>{i(h),q(()=>!i(h).settingsImport)&&it(dn)})}A(ji),A(Gt);var gi=j(Gt,2);$a(gi,it=>E(on,it),()=>i(on));var as=j(gi,2);{var Cl=it=>{var st=gA(),ct=z(st),lt=z(ct);Ed(lt,{size:17});var Vt=j(lt,1,!0);A(ct);var Lt=j(ct,2);La(Lt),A(st),de((Ct,zt)=>{X(Vt,Ct),be(Lt,"rows",(i(C),q(()=>i(C).task==="gen"?3:4))),be(Lt,"placeholder",zt)},[()=>(i(C),i(W),q(()=>i(C).task==="gen"?i(W)("request.prompt"):i(C).task==="align"?i(W)("request.alignmentText"):i(W)("request.text"))),()=>(i(C),i(W),q(()=>i(C).task==="gen"?i(W)("request.soundPlaceholder"):i(W)("request.textPlaceholder")))]),Fi(Lt,()=>i(tt),Ct=>E(tt,Ct)),te(it,st)};qe(as,it=>{i(V)&&it(Cl)})}var $r=j(as,2);{var Wc=it=>{var st=hA(),ct=z(st),lt=z(ct);It(lt);var Vt=j(lt,3,!0);A(ct);var Lt=j(ct,2),Ct=z(Lt),zt=z(Ct,!0);A(Ct);var Ht=j(Ct,2);It(Ht),A(Lt),A(st),de((De,qi)=>{X(Vt,De),X(zt,qi),Ht.disabled=!i(pa)},[()=>(i(W),q(()=>i(W)("request.splitLongText"))),()=>(i(W),q(()=>i(W)("request.charactersPerChunk")))]),V_(lt,()=>i(pa),De=>E(pa,De)),Fi(Ht,()=>i(ln),De=>E(ln,De)),te(it,st)},yh=Si(()=>(i(C),i(h),q(()=>["tts","clon"].includes(i(C).task)&&i(C).family!=="moss_ttsd"&&!i(h).chunking)));qe($r,it=>{i(yh)&&it(Wc)})}var Qc=j($r,2);{var Fu=it=>{{let st=Qt(()=>i(ae)||i(se)),ct=Qt(()=>(i(ie),i(C),q(()=>i(ie)?.ui_management===!0&&!Ba(i(C)))));iF(it,{get modelId(){return i(C),q(()=>i(C).id)},get seed(){return i(me)},get busy(){return i(st)},get adapterEditable(){return i(ct)},get paramSpecs(){return i(We)},ensureLoaded:ku,requestOptions:Fl,resolveRequestSeed:Tl,setParameterValue:ir,log:wi,get tr(){return i(W)},get text(){return i(tt)},set text(lt){E(tt,lt)},get lyrics(){return i(_e)},set lyrics(lt){E(_e,lt)},get language(){return i(Xe)},set language(lt){E(Xe,lt)},get duration(){return i(ne)},set duration(lt){E(ne,lt)},get rewritingCaption(){return i(Re)},set rewritingCaption(lt){E(Re,lt)},get advancedValues(){return i(Pe)},set advancedValues(lt){E(Pe,lt)},get outputText(){return i(wt)},set outputText(lt){E(wt,lt)},get outputJson(){return i(qt)},set outputJson(lt){E(qt,lt)},get status(){return i(ee)},set status(lt){E(ee,lt)},get warningStatus(){return i(Oe)},set warningStatus(lt){E(Oe,lt)},get errorStatus(){return i(Ie)},set errorStatus(lt){E(Ie,lt)},$$legacy:!0})}},wh=it=>{var st=Ls(),ct=Et(st);{let lt=Qt(()=>i(ae)||i(se)),Vt=Qt(()=>(i(C),i(he),Z(Bd),q(()=>i(C).family==="yue2"&&Ba(i(C))?async()=>{E(he,await Bd())}:tn))),Lt=Qt(()=>i(Cn)==="source"),Ct=Qt(()=>(i(vi),i(Wa),q(()=>!!i(vi)||i(Wa))));_d(ct,()=>i(p),(zt,Ht)=>{Ht(zt,{get task(){return i(C),q(()=>i(C).task)},get busy(){return i(lt)},get paramSpecs(){return i(We)},get advancedValues(){return i(Pe)},get catalogEntries(){return i(ga)},get loadedModels(){return i(he)},get server(){return i(ie)},get modelId(){return i(C),q(()=>i(C).id)},setPanelRunner:_M,modelPathFor:br,sessionOptionsFor:yr,get refreshModels(){return i(Vt)},log:wi,get tr(){return i(W)},localizedParameterText:Kr,setParameterValue:ir,get sourceFile(){return i(Se)},get savedVoices(){return i(wa)},clearSource:Ue,get sourceRecording(){return i(Lt)},get sourceRecordingBlocked(){return i(Ct)},setSourceFile:De=>E(Se,De),startSourceRecording:()=>oh("source"),stopSourceRecording:lh,get lyrics(){return i(_e)},set lyrics(De){E(_e,De)},get seed(){return i(me)},set seed(De){E(me,De)},get loraUploading(){return i(we)},set loraUploading(De){E(we,De)},$$legacy:!0})})}te(it,st)},kh=it=>{var st=_A(),ct=Et(st),lt=z(ct),Vt=j(lt),Lt=z(Vt,!0);A(Vt),A(ct);var Ct=j(ct,2);La(Ct),de((zt,Ht)=>{X(lt,`${zt??""} `),X(Lt,Ht),Ct.required=i(U),be(Ct,"aria-required",i(U))},[()=>(i(W),q(()=>i(W)("request.lyrics"))),()=>(i(U),i(W),q(()=>i(U)?i(W)("voice.required"):i(W)("request.optional")))]),Fi(Ct,()=>i(_e),zt=>E(_e,zt)),te(it,st)};qe(Qc,it=>{i(C),q(()=>i(C).family==="ace_step")?it(Fu):i(p)?it(wh,1):(i(C),q(()=>i(C).task==="gen")&&it(kh,2))})}var Au=j(Qc,2);{var ro=it=>{var st=vA(),ct=Et(st),lt=z(ct);Yf(lt,{size:17});var Vt=j(lt),Lt=j(Vt),Ct=z(Lt,!0);A(Lt),A(ct);var zt=j(ct,2);La(zt),de((Ht,De)=>{X(Vt,`${Ht??""} `),X(Ct,De)},[()=>(i(W),q(()=>i(W)("request.context"))),()=>(i(W),q(()=>i(W)("request.contextHint")))]),Fi(zt,()=>i(Te),Ht=>E(Te,Ht)),te(it,st)},xh=Si(()=>(i(C),q(()=>i(C).task==="asr"&&!["samsone","audio_flamingo","index_echo"].includes(i(C).family))));qe(Au,it=>{i(xh)&&it(ro)})}var oo=j(Au,2);{var Ml=it=>{var st=bA(),ct=Et(st),lt=z(ct);Ed(lt,{size:17});var Vt=j(lt,1,!0);A(ct);var Lt=j(ct,2);La(Lt),de((Ct,zt)=>{X(Vt,Ct),be(Lt,"placeholder",zt)},[()=>(i(W),q(()=>i(W)("request.voiceDescription"))),()=>(i(W),q(()=>i(W)("request.voiceDescriptionPlaceholder")))]),Fi(Lt,()=>i(ce),Ct=>E(ce,Ct)),te(it,st)};qe(oo,it=>{i(C),q(()=>i(C).task==="vdes")&&it(Ml)})}var Vo=j(oo,2),Cu=z(Vo);{var Sh=it=>{var st=xA(),ct=z(st),lt=z(ct),Vt=j(lt);{var Lt=Wt=>{var ai=qc(),Zi=z(ai,!0);A(ai),de(ui=>X(Zi,ui),[()=>(i(W),q(()=>i(W)("request.autoLanguage")))]),te(Wt,ai)};qe(Vt,Wt=>{i(C),q(()=>!Jr[i(C).family])&&Wt(Lt)})}A(ct);var Ct=j(ct,2);{var zt=Wt=>{var ai=yA();It(ai),Fi(ai,()=>i(Le),Zi=>E(Le,Zi)),te(Wt,ai)},Ht=Si(()=>(i(C),q(()=>["moss_ttsd","moss_voicegen"].includes(i(C).family)))),De=Wt=>{var ai=wA();Mt(ai,5,()=>(i(C),q(()=>Jr[i(C).family])),Xt,(Zi,ui)=>{var _i=$c(),aa=z(_i,!0);A(_i);var ha={};de(()=>{X(aa,i(ui)),ha!==(ha=i(ui))&&(_i.value=(_i.__value=i(ui))??"")}),te(Zi,_i)}),A(ai),yo(ai,()=>i(Xe),Zi=>E(Xe,Zi)),te(Wt,ai)},qi=Wt=>{var ai=kA();It(ai),Fi(ai,()=>i(Xe),Zi=>E(Xe,Zi)),te(Wt,ai)};qe(Ct,Wt=>{i(Ht)?Wt(zt):(i(C),q(()=>Jr[i(C).family])?Wt(De,1):Wt(qi,-1))})}A(st),de(Wt=>X(lt,`${Wt??""} `),[()=>(i(W),q(()=>i(W)("request.language")))]),te(it,st)},iE=Si(()=>(i(C),i(h),q(()=>["tts","clon","asr","gen","s2s","align","vdes"].includes(i(C).task)&&!i(h).language&&!["apollo","universr","moss_transcribe_diarize","builtin_audio_utils","sam_audio","samsone","gigaam_asr","maya1","owsm","owsm_ctc","index_echo","audio_flamingo","kugelaudio","reuse","sidon","hviske_asr_v6","voxtral_tts"].includes(i(C).family))));qe(Cu,it=>{i(iE)&&it(Sh)})}var Ak=j(Cu,2);{var aE=it=>{var st=SA(),ct=z(st),lt=z(ct),Vt=j(lt),Lt=z(Vt,!0);A(Vt),A(ct);var Ct=j(ct,2);It(Ct),A(st),de((zt,Ht)=>{X(lt,`${zt??""} `),X(Lt,Ht)},[()=>(i(W),q(()=>i(W)("request.seed"))),()=>(i(W),q(()=>i(W)("request.randomSeed")))]),Fi(Ct,()=>i(me),zt=>E(me,zt)),te(it,st)},nE=Si(()=>(i(C),i(h),q(()=>["tts","clon","gen","s2s","vdes"].includes(i(C).task)&&!i(h).seed&&!["apollo","builtin_audio_utils","reuse","sidon"].includes(i(C).family))));qe(Ak,it=>{i(nE)&&it(aE)})}var Ck=j(Ak,2);{var sE=it=>{var st=qA(),ct=z(st),lt=z(ct,!0);A(ct);var Vt=j(ct,2);{var Lt=zt=>{var Ht=TA();It(Ht),de(()=>{be(Ht,"min",(i(C),q(()=>i(C).family==="canary_asr"?0:1))),be(Ht,"max",(i(C),q(()=>i(C).family==="canary_asr"?1015:i(C).family==="cohere_asr"?1014:void 0)))}),Fi(Ht,()=>i(pe),De=>E(pe,De)),te(zt,Ht)},Ct=zt=>{var Ht=$A();It(Ht),Fi(Ht,()=>i(ve),De=>E(ve,De)),te(zt,Ht)};qe(Vt,zt=>{i(C),q(()=>i(C).family in Xr)?zt(Lt):zt(Ct,-1)})}A(st),de(zt=>X(lt,zt),[()=>(i(W),q(()=>i(W)("request.maxTokens")))]),te(it,st)},rE=Si(()=>(i(C),q(()=>Oi(i(C))&&!["kugelaudio","crisperwhisper","audio_flamingo","owsm","hviske_asr_v6","voxtral_tts"].includes(i(C).family))));qe(Ck,it=>{i(rE)&&it(sE)})}var oE=j(Ck,2);{var lE=it=>{var st=GA(),ct=z(st),lt=z(ct,!0),Vt=j(lt);{var Lt=De=>{var qi=qc(),Wt=z(qi,!0);A(qi),de(ai=>X(Wt,ai),[()=>(i(W),q(()=>i(W)("request.autoDuration")))]),te(De,qi)};qe(Vt,De=>{i(_)&&De(Lt)})}A(ct);var Ct=j(ct,2);It(Ct);var zt=j(Ct,2);{var Ht=De=>{var qi=Eb(),Wt=z(qi,!0);A(qi),de(ai=>X(Wt,ai),[()=>(i(W),i(Pe),q(()=>i(W)("request.minimaxFrames",{frames:Number(i(Pe).num_frames||0)})))]),te(De,qi)};qe(zt,De=>{i(C),q(()=>i(C).family==="minimax_h3")&&De(Ht)})}A(st),de(De=>{X(lt,De),be(Ct,"min",i(_)?-1:1),sa(Ct,i(ne))},[()=>(i(W),q(()=>i(W)("request.duration")))]),$e("input",Ct,De=>Zg(De.currentTarget.valueAsNumber)),te(it,st)};qe(oE,it=>{i(C),i(h),q(()=>i(C).task==="gen"&&!i(h).duration)&&it(lE)})}A(Vo);var Mk=j(Vo,2);{var cE=it=>{var st=zA(),ct=z(st),lt=z(ct);u4(lt,{size:17});var Vt=j(lt),Lt=j(Vt),Ct=z(Lt,!0);A(Lt),A(ct);var zt=j(ct,2);$a(zt,Pt=>E(Qe,Pt),()=>i(Qe));var Ht=j(zt,2),De=z(Ht);Xf(De,{size:16});var qi=j(De),Wt=z(qi,!0);A(qi);var ai=j(qi),Zi=z(ai,!0);A(ai),A(Ht);var ui=j(Ht,2),_i=z(ui);{var aa=Pt=>{var Ut=FA(),mt=Et(Ut),bt=z(mt);G1(bt,{size:14});var Bt=j(bt,1,!0);A(mt);var fi=j(mt,2),na=z(fi,!0);A(fi),de((ja,$n)=>{X(Bt,ja),X(na,$n)},[()=>(i(W),q(()=>i(W)("request.stopRecording"))),()=>(i(W),q(()=>i(W)("request.recordingMicrophone")))]),$e("click",mt,lh),te(Pt,Ut)},ha=Pt=>{var Ut=AA(),mt=Et(Ut),bt=z(mt);Jf(bt,{size:14});var Bt=j(bt,1,!0);A(mt);var fi=j(mt,2),na=z(fi);zd(na,{size:15}),A(fi);var ja=j(fi,2);{var $n=Pa=>{var Aa=qc(),Ca=z(Aa,!0);A(Aa),de(()=>X(Ca,(i(Se),q(()=>i(Se).name)))),te(Pa,Aa)};qe(ja,Pa=>{i(Se)&&Pa($n)})}de((Pa,Aa,Ca,qr)=>{mt.disabled=Pa,X(Bt,Aa),fi.disabled=!i(Se),be(fi,"title",Ca),be(fi,"aria-label",qr)},[()=>(i(vi),i(Wa),q(()=>!!i(vi)||i(Wa))),()=>(i(W),q(()=>i(W)("request.recordMicrophone"))),()=>(i(W),q(()=>i(W)("file.clear"))),()=>(i(W),q(()=>i(W)("file.clear")))]),$e("click",mt,()=>oh("source")),$e("click",fi,Ue),te(Pt,Ut)};qe(_i,Pt=>{i(Cn)==="source"?Pt(aa):Pt(ha,-1)})}A(ui);var Li=j(ui,2);{let Pt=Qt(()=>(i(W),q(()=>i(W)("file.preview"))));Nn(Li,{get file(){return i(Se)},kind:"audio",get label(){return i(Pt)}})}var Mi=j(Li,2);{var Ta=Pt=>{var Ut=EA(),mt=z(Ut),bt=z(mt),Bt=z(bt,!0);A(bt);var fi=j(bt,2),na=z(fi,!0);A(fi),A(mt);var ja=j(mt,2);{var $n=Aa=>{var Ca=CA(),qr=z(Ca,!0);A(Ca),de(Ho=>X(qr,Ho),[()=>(i(W),q(()=>i(W)("request.stopLive")))]),$e("click",Ca,rk),te(Aa,Ca)},Pa=Aa=>{var Ca=MA(),qr=z(Ca,!0);A(Ca),de((Ho,Mu)=>{Ca.disabled=Ho,X(qr,Mu)},[()=>(i(ae),i(vi),q(()=>i(ae)||!!i(vi))),()=>(i(W),q(()=>i(W)("request.startLive")))]),$e("click",Ca,hM),te(Aa,Ca)};qe(ja,Aa=>{i(Wa)?Aa($n):Aa(Pa,-1)})}A(Ut),de((Aa,Ca)=>{X(Bt,Aa),X(na,Ca)},[()=>(i(W),q(()=>i(W)("request.liveTitle"))),()=>(i(W),q(()=>i(W)("request.liveDescription")))]),te(Pt,Ut)};qe(Mi,Pt=>{i(I)&&Pt(Ta)})}A(st),de((Pt,Ut,mt,bt)=>{X(Vt,`${Pt??""} `),X(Ct,Ut),X(Wt,mt),X(Zi,bt)},[()=>(i(W),q(()=>i(W)("request.sourceAudio"))),()=>(i(w),i(W),q(()=>i(w)?"":`(${i(W)("request.optional")})`)),()=>(i(W),q(()=>i(W)("file.choose"))),()=>(i(Se),i(W),q(()=>i(Se)?.name||i(W)("file.none")))]),$e("change",zt,Pt=>E(Se,Pt.currentTarget.files?.[0]||null)),te(it,st)};qe(Mk,it=>{i(y),i(C),q(()=>i(y)&&i(C).family!=="liveavatar")&&it(cE)})}var Ek=j(Mk,2);{var dE=it=>{var st=UA(),ct=z(st),lt=z(ct);P4(lt,{size:17});var Vt=j(lt,2),Lt=z(Vt,!0);A(Vt),A(ct);var Ct=j(ct,2);$a(Ct,Li=>E(Ee,Li),()=>i(Ee));var zt=j(Ct,2),Ht=z(zt),De=z(Ht,!0);A(Ht);var qi=j(Ht),Wt=z(qi,!0);A(qi),A(zt);var ai=j(zt,2),Zi=z(ai),ui=z(Zi,!0);A(Zi);var _i=j(Zi,2);{var aa=Li=>{var Mi=qc(),Ta=z(Mi,!0);A(Mi),de(()=>X(Ta,(i(Me),q(()=>i(Me).name)))),te(Li,Mi)};qe(_i,Li=>{i(Me)&&Li(aa)})}A(ai);var ha=j(ai,2);{let Li=Qt(()=>(i(W),q(()=>i(W)("file.preview"))));Nn(ha,{get file(){return i(Me)},kind:"video",get label(){return i(Li)}})}A(st),de((Li,Mi,Ta,Pt)=>{X(Lt,Li),X(De,Mi),X(Wt,Ta),Zi.disabled=!i(Me),X(ui,Pt)},[()=>(i(W),q(()=>i(W)("request.optional"))),()=>(i(W),q(()=>i(W)("file.choose"))),()=>(i(Me),i(W),q(()=>i(Me)?.name||i(W)("file.none"))),()=>(i(W),q(()=>i(W)("file.clear")))]),$e("change",Ct,Li=>E(Me,Li.currentTarget.files?.[0]||null)),$e("click",Zi,pt),te(it,st)};qe(Ek,it=>{i(T)&&it(dE)})}var zk=j(Ek,2);{var uE=it=>{var st=LA(),ct=z(st),lt=z(ct);Zf(lt,{size:17});var Vt=j(lt,1,!0);A(ct);var Lt=j(ct,2);{let ui=Qt(()=>i(Qi)?`saved:${i(Qi)}`:i(_t)?`preset:${i(_t)}`:""),_i=Qt(()=>i(L)?i(ti):[]),aa=Qt(()=>(i(C),i(wa),q(()=>i(C).family==="kugelaudio"?[]:i(wa)))),ha=Qt(()=>(i($),i(C),i(W),i(ie),i(G),q(()=>i($)||i(C).family==="kugelaudio"?i(W)("voice.preset"):i(ie)?.ui_management===!1||!i(G)?i(W)("voice.configured"):i(W)("voice.quickStart")))),Li=Qt(()=>(i(W),q(()=>i(W)("voice.useReference")))),Mi=Qt(()=>(i(C),q(()=>i(C).family!=="kugelaudio")));L1(Lt,{id:"quick-start-voice",get value(){return i(ui)},get presets(){return i(_i)},get savedVoices(){return i(aa)},get presetLabel(){return i(ha)},get emptyLabel(){return i(Li)},get allowEmpty(){return i(Mi)},get tr(){return i(W)},onselect:pM})}var Ct=j(Lt,2);{var zt=ui=>{var _i=Ls(),aa=Et(_i);{var ha=Li=>{var Mi=zb(),Ta=Et(Mi);{var Pt=bt=>{var Bt=BA(),fi=z(Bt,!0);A(Bt),de(na=>X(fi,na),[()=>(i(W),q(()=>i(W)("voice.bundledNote")))]),te(bt,Bt)};qe(Ta,bt=>{i($),i(C),q(()=>!i($)&&i(C).family!=="kugelaudio")&&bt(Pt)})}var Ut=j(Ta,2);{var mt=bt=>{{let Bt=Qt(()=>(i(W),q(()=>i(W)("file.preview"))));Nn(bt,{get src(){return i(M)},get name(){return i(_t)},kind:"audio",get label(){return i(Bt)}})}};qe(Ut,bt=>{i(M)&&bt(mt)})}te(Li,Mi)};qe(aa,Li=>{i(_t)&&Li(ha)})}te(ui,_i)};qe(Ct,ui=>{i(L),i(ti),q(()=>i(L)&&i(ti).length)&&ui(zt)})}var Ht=j(Ct,2);{var De=ui=>{var _i=jA(),aa=z(_i),ha=z(aa),Li=z(ha),Mi=j(Li),Ta=z(Mi,!0);A(Mi),A(ha);var Pt=j(ha,2);$a(Pt,Pa=>E(xe,Pa),()=>i(xe));var Ut=j(Pt,2),mt=z(Ut);Xf(mt,{size:16});var bt=j(mt),Bt=z(bt,!0);A(bt);var fi=j(bt),na=z(fi,!0);A(fi),A(Ut),A(aa);var ja=j(aa,2);{var $n=Pa=>{var Aa=RA(),Ca=z(Aa),qr=z(Ca);Ea(),A(Ca);var Ho=j(Ca,2);$a(Ho,Yc=>E(je,Yc),()=>i(je));var Mu=j(Ho,2),Dk=z(Mu);Yf(Dk,{size:16});var $h=j(Dk),bE=z($h,!0);A($h);var Vk=j($h),yE=z(Vk,!0);A(Vk),A(Mu),A(Aa),de((Yc,wE,kE)=>{X(qr,`${Yc??""} `),X(bE,wE),X(yE,kE)},[()=>(i(W),q(()=>i(W)("voice.referenceText"))),()=>(i(W),q(()=>i(W)("file.choose"))),()=>(i(nt),i(W),q(()=>i(nt)?.name||i(W)("file.none")))]),$e("change",Ho,Yc=>Ft(Yc.currentTarget.files?.[0]||null)),te(Pa,Aa)};qe(ja,Pa=>{i(C),q(()=>i(C).family!=="auk")&&Pa($n)})}A(_i),de((Pa,Aa,Ca,qr)=>{X(Li,`${Pa??""} `),X(Ta,Aa),X(Bt,Ca),X(na,qr)},[()=>(i(W),q(()=>i(W)("voice.reference"))),()=>(i(x),i(W),q(()=>i(x)?i(W)("voice.required"):i(W)("voice.optional"))),()=>(i(W),q(()=>i(W)("file.choose"))),()=>(i(ge),i(W),q(()=>i(ge)?.name||i(W)("file.none")))]),$e("change",Pt,Pa=>le(Pa.currentTarget.files?.[0]||null)),te(ui,_i)};qe(Ht,ui=>{(!i($)||!i(_t))&&ui(De)})}var qi=j(Ht,2);{var Wt=ui=>{var _i=OA(),aa=z(_i);{var ha=Mi=>{var Ta=PA(),Pt=Et(Ta),Ut=z(Pt,!0);A(Pt);var mt=j(Pt,2),bt=z(mt,!0);A(mt),de((Bt,fi)=>{X(Ut,Bt),X(bt,fi)},[()=>(i(W),q(()=>i(W)("request.stopRecording"))),()=>(i(W),q(()=>i(W)("voice.recording")))]),$e("click",Pt,lh),te(Mi,Ta)},Li=Mi=>{var Ta=NA(),Pt=Et(Ta),Ut=z(Pt);Jf(Ut,{size:14});var mt=j(Ut,1,!0);A(Pt);var bt=j(Pt,2),Bt=z(bt,!0);A(bt);var fi=j(bt,2);{var na=ja=>{var $n=qc(),Pa=z($n,!0);A($n),de(()=>X(Pa,(i(ge),q(()=>i(ge).name)))),te(ja,$n)};qe(fi,ja=>{i(ge)&&ja(na)})}de((ja,$n,Pa,Aa)=>{Pt.disabled=ja,X(mt,$n),bt.disabled=Pa,X(Bt,Aa)},[()=>(i(vi),i(Wa),q(()=>!!i(vi)||i(Wa))),()=>(i(W),q(()=>i(W)("request.recordMicrophone"))),()=>(i(_t),i(Qi),i(ge),i(nt),i(et),q(()=>!i(_t)&&!i(Qi)&&!i(ge)&&!i(nt)&&!i(et).trim())),()=>(i(W),q(()=>i(W)("voice.clearReference")))]),$e("click",Pt,()=>oh("voice")),$e("click",bt,Ae),te(Mi,Ta)};qe(aa,Mi=>{i(Cn)==="voice"?Mi(ha):Mi(Li,-1)})}A(_i),te(ui,_i)};qe(qi,ui=>{(!i($)||!i(_t))&&ui(Wt)})}var ai=j(qi,2);{var Zi=ui=>{var _i=zb(),aa=Et(_i);{let Mi=Qt(()=>(i(W),q(()=>i(W)("file.preview"))));Nn(aa,{get file(){return i(ge)},kind:"audio",get label(){return i(Mi)}})}var ha=j(aa,2);{var Li=Mi=>{var Ta=IA(),Pt=Et(Ta),Ut=z(Pt),mt=j(Ut),bt=z(mt,!0);A(mt),A(Pt);var Bt=j(Pt,2);La(Bt),de((fi,na,ja)=>{X(Ut,`${fi??""} `),X(bt,na),be(Bt,"placeholder",ja)},[()=>(i(W),q(()=>i(W)("voice.transcript"))),()=>(i(D),i(W),q(()=>i(D)?i(W)("voice.requiredClone"):i(W)("voice.recommendedClone"))),()=>(i(W),q(()=>i(W)("voice.transcriptPlaceholder")))]),Fi(Bt,()=>i(et),fi=>E(et,fi)),te(Mi,Ta)};qe(ha,Mi=>{i(C),q(()=>i(C).family!=="auk")&&Mi(Li)})}te(ui,_i)};qe(ai,ui=>{(!i($)||!i(_t))&&ui(Zi)})}A(st),de((ui,_i)=>{be(st,"aria-label",ui),X(Vt,_i)},[()=>(i(W),q(()=>i(W)("voice.reference"))),()=>(i(W),q(()=>i(W)("voice.reference")))]),te(it,st)};qe(zk,it=>{i(O),i(C),i(R),i(h),q(()=>(i(O)||i(C).family==="kugelaudio")&&!i(R)&&!i(h).voice)&&it(uE)})}var Uk=j(zk,2);{var fE=it=>{var st=HA(),ct=z(st),lt=z(ct);lc(lt,{size:17});var Vt=j(lt),Lt=j(Vt),Ct=z(Lt,!0);A(Lt),A(ct);var zt=j(ct,2);Mt(zt,4,()=>[0,1,2,3],Xt,(qi,Wt)=>{var ai=DA(),Zi=z(ai),ui=z(Zi,!0);A(Zi);var _i=j(Zi,2);$a(_i,(Bt,fi)=>hi(He,i(He)[fi]=Bt),Bt=>i(He)?.[Bt],()=>[Wt]);var aa=j(_i,2),ha=z(aa),Li=z(ha,!0);A(ha);var Mi=j(ha,2),Ta=z(Mi,!0);A(Mi),A(aa);var Pt=j(aa,2),Ut=z(Pt),mt=z(Ut,!0);A(Ut),A(Pt);var bt=j(Pt,2);{let Bt=Qt(()=>(i(W),q(()=>i(W)("file.preview"))));Nn(bt,{get file(){return i(ze),q(()=>i(ze)[Wt])},kind:"audio",get label(){return i(Bt)}})}A(ai),de((Bt,fi,na,ja)=>{be(Zi,"for","vibevoice-speaker-"+Wt),X(ui,Bt),be(_i,"id","vibevoice-speaker-"+Wt),be(aa,"for","vibevoice-speaker-"+Wt),X(Li,fi),X(Ta,na),Ut.disabled=(i(ze),q(()=>!i(ze)[Wt])),X(mt,ja)},[()=>(i(W),q(()=>i(W)("voice.speaker",{number:Wt+1}))),()=>(i(W),q(()=>i(W)("file.choose"))),()=>(i(ze),i(W),q(()=>i(ze)[Wt]?.name||i(W)("file.none"))),()=>(i(W),q(()=>i(W)("file.clear")))]),$e("change",_i,Bt=>yt(Wt,Bt.currentTarget.files?.[0]||null)),$e("click",Ut,()=>at(Wt)),te(qi,ai)}),A(zt);var Ht=j(zt,2);{var De=qi=>{var Wt=VA(),ai=Et(Wt),Zi=z(ai,!0);A(ai);var ui=j(ai,2);La(ui),de((_i,aa)=>{X(Zi,_i),be(ui,"placeholder",aa)},[()=>(i(W),q(()=>i(W)("voice.transcript"))),()=>(i(W),q(()=>i(W)("voice.dialoguePlaceholder")))]),Fi(ui,()=>i(et),_i=>E(et,_i)),te(qi,Wt)};qe(Ht,qi=>{i(C),q(()=>i(C).family==="moss_ttsd")&&qi(De)})}A(st),de((qi,Wt)=>{X(Vt,`${qi??""} `),X(Ct,Wt)},[()=>(i(W),q(()=>i(W)("voice.speakerReferences"))),()=>(i(W),q(()=>i(W)("voice.upToFour")))]),te(it,st)};qe(Uk,it=>{i(R)&&it(fE)})}var Bk=j(Uk,2);{var mE=it=>{var st=JA(),ct=z(st),lt=z(ct);M4(lt,{size:16});var Vt=j(lt),Lt=j(Vt),Ct=z(Lt,!0);A(Lt),A(ct);var zt=j(ct,2);Mt(zt,5,()=>i(g),Xt,(Ht,De)=>{var qi=XA();let Wt;var ai=z(qi),Zi=z(ai,!0);A(ai);var ui=j(ai,2);{var _i=Ut=>{var mt=WA(),bt=z(mt);It(bt);var Bt=j(bt,3,!0);A(mt),de((fi,na)=>{be(bt,"id",(i(De),q(()=>"param-"+i(De).name))),vd(bt,fi),X(Bt,na)},[()=>(i(Pe),i(De),q(()=>!!i(Pe)[i(De).name])),()=>(i(Pe),i(De),i(W),q(()=>i(Pe)[i(De).name]?i(W)("common.enabled"):i(W)("common.disabled")))]),$e("change",bt,fi=>ir(i(De),fi.currentTarget.checked)),te(Ut,mt)},aa=Ut=>{var mt=QA();Mt(mt,5,()=>(i(De),q(()=>i(De).choices||[])),Xt,(Bt,fi)=>{var na=$c(),ja=z(na,!0);A(na);var $n={};de(()=>{X(ja,i(fi)),$n!==($n=i(fi))&&(na.value=(na.__value=i(fi))??"")}),te(Bt,na)}),A(mt);var bt;jn(mt),de(Bt=>{be(mt,"id",(i(De),q(()=>"param-"+i(De).name))),bt!==(bt=Bt)&&(mt.value=(mt.__value=Bt)??"",yn(mt,Bt))},[()=>(i(Pe),i(De),q(()=>String(i(Pe)[i(De).name]??"")))]),$e("change",mt,Bt=>ir(i(De),Bt.currentTarget.value)),te(Ut,mt)},ha=Ut=>{var mt=KA(),bt=z(mt);It(bt);var Bt=j(bt,2),fi=z(Bt,!0);A(Bt),A(mt),de((na,ja)=>{be(bt,"id",(i(De),q(()=>"param-"+i(De).name))),be(bt,"min",(i(De),q(()=>i(De).minimum))),be(bt,"max",(i(De),q(()=>i(De).maximum))),be(bt,"step",(i(De),q(()=>i(De).step))),sa(bt,na),X(fi,ja)},[()=>(i(Pe),i(De),q(()=>Number(i(Pe)[i(De).name]??i(De).default))),()=>(i(Pe),i(De),q(()=>String(i(Pe)[i(De).name])))]),$e("input",bt,na=>ir(i(De),na.currentTarget.valueAsNumber)),te(Ut,mt)},Li=Ut=>{var mt=YA();It(mt),de((bt,Bt)=>{be(mt,"id",(i(De),q(()=>"param-"+i(De).name))),be(mt,"type",(i(De),q(()=>i(De).type==="number"?"number":"text"))),be(mt,"min",(i(De),q(()=>i(De).minimum))),be(mt,"max",(i(De),q(()=>i(De).maximum))),be(mt,"step",(i(De),q(()=>i(De).step))),sa(mt,bt),be(mt,"placeholder",Bt)},[()=>(i(Pe),i(De),q(()=>String(i(Pe)[i(De).name]??""))),()=>(i(De),i(W),q(()=>Kr(i(De),"placeholder",i(W))))]),$e("input",mt,bt=>ir(i(De),i(De).type==="number"?bt.currentTarget.valueAsNumber:bt.currentTarget.value)),te(Ut,mt)};qe(ui,Ut=>{i(De),q(()=>i(De).type==="bool")?Ut(_i):(i(De),q(()=>i(De).type==="choice")?Ut(aa,1):(i(De),q(()=>i(De).type==="slider")?Ut(ha,2):Ut(Li,-1)))})}var Mi=j(ui,2);{var Ta=Ut=>{var mt=Eb(),bt=z(mt,!0);A(mt),de(Bt=>X(bt,Bt),[()=>(i(De),i(W),q(()=>Kr(i(De),"info",i(W))))]),te(Ut,mt)},Pt=Si(()=>(i(De),i(W),q(()=>Kr(i(De),"info",i(W)))));qe(Mi,Ut=>{i(Pt)&&Ut(Ta)})}A(qi),de(Ut=>{Wt=Gi(qi,1,"",null,Wt,{wide:i(De).type==="text"}),be(ai,"for",(i(De),q(()=>"param-"+i(De).name))),X(Zi,Ut)},[()=>(i(De),i(W),q(()=>Kr(i(De),"label",i(W))))]),te(Ht,qi)}),A(zt),A(st),de(Ht=>{X(Vt,`${Ht??""} `),X(Ct,(i(g),q(()=>i(g).length)))},[()=>(i(W),q(()=>i(W)("options.modelParameters")))]),te(it,st)};qe(Bk,it=>{i(g),i(h),q(()=>i(g).length&&!i(h).params)&&it(mE)})}var Rk=j(Bk,2);{var pE=it=>{var st=ZA(),ct=z(st),lt=z(ct);g4(lt,{size:16});var Vt=j(lt);Ea(),A(ct);var Lt=j(ct,2);La(Lt),A(st),de(Ct=>X(Vt,`${Ct??""} `),[()=>(i(W),q(()=>i(W)("options.additional")))]),Fi(Lt,()=>i(Zt),Ct=>E(Zt,Ct)),te(it,st)};qe(Rk,it=>{i(h),q(()=>!i(h).advancedJson)&&it(pE)})}var jk=j(Rk,2),El=z(jk),Pk=z(El);T4(Pk,{size:15});var Nk=j(Pk),gE=z(Nk,!0);A(Nk),Ea(2),A(El);var Kc=j(El,2),Ok=z(Kc);G1(Ok,{size:14});var hE=j(Ok,1,!0);A(Kc);var Th=j(Kc,2);let Ik;var Lk=z(Th);{var _E=it=>{var st=eC(),ct=z(st);A(st),de((lt,Vt)=>{be(st,"aria-label",lt),X(ct,`${Vt??""} s ·`)},[()=>(i(W),q(()=>i(W)("run.elapsed"))),()=>(i(Va),q(()=>i(Va).toFixed(1)))]),te(it,st)};qe(Lk,it=>{i(ae)&&it(_E)})}var vE=j(Lk);A(Th),A(jk),de((it,st,ct,lt,Vt,Lt)=>{X(Ii,it),X(Ri,st),X(Ka,(i(C),q(()=>i(C)?.task))),El.disabled=!i(Y)||i(ae)||i(Re)||i(di)||i(d)||!i(l)&&i(ye)===!1,be(El,"title",ct),X(gE,lt),Kc.disabled=!i(ae),X(hE,Vt),Ik=Gi(Th,1,"status",null,Ik,{busy:i(ae),warning:!i(ae)&&i(ee)===i(Oe),error:!i(ae)&&i(ee)===i(Ie)}),X(vE,` ${Lt??""}`)},[()=>(i(W),q(()=>i(W)("request.label"))),()=>(i(W),q(()=>i(W)("request.title"))),()=>(i(Y),i(W),i(l),i(ye),q(()=>i(Y)?!i(l)&&i(ye)===!1?i(W)("run.installModel"):"":i(W)("run.chooseModel"))),()=>(i(ae),i(W),q(()=>i(ae)?i(W)("run.working"):i(W)("run.run"))),()=>(i(W),q(()=>i(W)("run.cancel"))),()=>(i(ee),i(W),q(()=>Bi(i(ee),i(W))))]),$e("change",gi,it=>mM(it.currentTarget.files?.[0]||null)),$e("click",El,ok),$e("click",Kc,yM),te(gt,ot)},vh=gt=>{var ot=iC(),Gt=Et(ot),ft=z(Gt),At=z(ft),Ii=z(At,!0);A(At);var $i=j(At),Ri=z($i,!0);A($i),A(ft),A(Gt);var ji=j(Gt,2),Hi=z(ji),Ka=z(Hi,!0);A(Hi),A(ji),de((Tn,dn,gi)=>{X(Ii,Tn),X(Ri,dn),X(Ka,gi)},[()=>(i(W),q(()=>i(W)("request.label"))),()=>(i(W),q(()=>i(W)("studio.noModel"))),()=>(i(W),q(()=>i(W)("studio.chooseInstalled")))]),te(gt,ot)};qe(Dc,gt=>{i(Y)?gt(_h):gt(vh,-1)})}A(Do);var Gu=j(Do,2),Vc=z(Gu),Hc=z(Vc),bh=z(Hc),DM=z(bh,!0);A(bh);var xk=j(bh),VM=z(xk,!0);A(xk),A(Hc);var Sk=j(Hc,2);{var HM=gt=>{var ot=aC(),Gt=z(ot,!0);A(ot),de(ft=>{be(ot,"href",(i(Nt),q(()=>i(Nt).url))),be(ot,"download",(i(Nt),q(()=>i(Nt).filename))),X(Gt,ft)},[()=>(i(W),q(()=>i(W)("settings.save")))]),te(gt,ot)};qe(Sk,gt=>{i(Nt)&>(HM)})}var WM=j(Sk,2);{var QM=gt=>{var ot=nC(),Gt=z(ot);A(ot),de(ft=>X(Gt,`${i($t),q(()=>i($t).length)??""} ${ft??""}`),[()=>(i($t),i(W),q(()=>i($t).length===1?i(W)("result.track"):i(W)("result.tracks")))]),te(gt,ot)};qe(WM,gt=>{i($t),q(()=>i($t).length)&>(QM)})}A(Vc);var Tk=j(Vc,2);{var KM=gt=>{var ot=Ub();Mt(ot,5,()=>i($t),Xt,(Gt,ft)=>{var At=sC(),Ii=z(At),$i=z(Ii),Ri=z($i,!0);A($i);var ji=j($i),Hi=z(ji,!0);A(ji),A(Ii);var Ka=j(Ii,2);A(At),de(Tn=>{X(Ri,(i(ft),q(()=>i(ft).id))),be(ji,"href",(i(ft),q(()=>i(ft).url))),be(ji,"download",(i(ta),i(Kt),i(ft),q(()=>`${i(ta)}-${i(Kt)||"output"}-${i(ft).id}.wav`))),X(Hi,Tn),be(Ka,"src",(i(ft),q(()=>i(ft).url)))},[()=>(i(W),q(()=>i(W)("result.saveWav")))]),te(Gt,At)}),A(ot),te(gt,ot)};qe(Tk,gt=>{i($t),q(()=>i($t).length)&>(KM)})}var $k=j(Tk,2);{var YM=gt=>{var ot=Ub();Mt(ot,5,()=>i(dt),Xt,(Gt,ft)=>{var At=rC(),Ii=z(At),$i=z(Ii),Ri=z($i,!0);A($i);var ji=j($i),Hi=z(ji,!0);A(ji),A(Ii);var Ka=j(Ii,2);{var Tn=gi=>{{let as=Qt(()=>(i(C),i(ft),q(()=>`${i(C).id}-${i(ft).id}.${i(ft).extension}`))),Cl=Qt(()=>(i(W),q(()=>i(W)("result.videoPreview"))));Nn(gi,{get src(){return i(ft),q(()=>i(ft).url)},get name(){return i(as)},kind:"video",get label(){return i(Cl)}})}},dn=Si(()=>(i(ft),q(()=>i(ft).mime.startsWith("video/"))));qe(Ka,gi=>{i(dn)&&gi(Tn)})}A(At),de(gi=>{X(Ri,(i(ft),q(()=>i(ft).id))),be(ji,"href",(i(ft),q(()=>i(ft).url))),be(ji,"download",(i(ta),i(Kt),i(ft),q(()=>`${i(ta)}-${i(Kt)||"output"}-${i(ft).id}.${i(ft).extension}`))),X(Hi,gi)},[()=>(i(W),i(ft),q(()=>i(W)("result.saveArtifact",{format:i(ft).extension.toUpperCase()})))]),te(Gt,At)}),A(ot),te(gt,ot)};qe($k,gt=>{i(dt),q(()=>i(dt).length)&>(YM)})}var qk=j($k,2);{var XM=gt=>{var ot=oC(),Gt=j(z(ot)),ft=z(Gt,!0);A(Gt),A(ot),de(At=>X(ft,At),[()=>(i(W),q(()=>i(W)("result.empty")))]),te(gt,ot)};qe(qk,gt=>{i($t),i(dt),q(()=>!i($t).length&&!i(dt).length)&>(XM)})}var Gk=j(qk,2);{var JM=gt=>{var ot=lC();La(ot),de(()=>sa(ot,i(wt))),te(gt,ot)};qe(Gk,gt=>{i(wt)&>(JM)})}var Fk=j(Gk,2);{var ZM=gt=>{var ot=cC(),Gt=j(z(ot)),ft=z(Gt,!0);A(Gt),A(ot),de(()=>X(ft,i(qt))),te(gt,ot)};qe(Fk,gt=>{i(qt)&>(ZM)})}var eE=j(Fk,2);{var tE=gt=>{var ot=fC(),Gt=z(ot),ft=z(Gt),At=j(ft),Ii=z(At);A(At),A(Gt);var $i=j(Gt,2);{var Ri=dn=>{var gi=dC(),as=z(gi,!0);A(gi),de(()=>X(as,i(ri))),te(dn,gi)};qe($i,dn=>{i(ri)&&dn(Ri)})}var ji=j($i,2),Hi=z(ji),Ka=z(Hi,!0);A(Hi),A(ji);var Tn=j(ji,2);Mt(Tn,5,()=>i(xt),dn=>dn.id,(dn,gi)=>{var as=uC();let Cl;var $r=z(as),Wc=z($r),yh=z(Wc,!0);A(Wc);var Qc=j(Wc,2),Fu=z(Qc),wh=j(Fu);{var kh=oo=>{var Ml=C_();de(Vo=>X(Ml,`· ${Vo??""} ${i(gi),q(()=>i(gi).seed)??""}`),[()=>(i(W),q(()=>i(W)("request.seed")))]),te(oo,Ml)},Au=Si(()=>(i(gi),q(()=>["gen","tts","clon","vdes"].includes(i(gi).task))));qe(wh,oo=>{i(Au)&&oo(kh)})}A(Qc),A($r);var ro=j($r,2),xh=z(ro,!0);A(ro),A(as),de((oo,Ml,Vo,Cu,Sh)=>{Cl=Gi(as,1,"",null,Cl,{active:i(Kt)===i(gi).id}),be($r,"aria-pressed",(i(Kt),i(gi),q(()=>i(Kt)===i(gi).id))),$r.disabled=i(di),X(yh,(i(gi),q(()=>i(gi).label))),X(Fu,`${oo??""} · ${Ml??""}`),be(ro,"title",Vo),ro.disabled=i(di),be(ro,"aria-label",Cu),X(xh,Sh)},[()=>(i(gi),q(()=>new Date(i(gi).createdAt).toLocaleTimeString())),()=>(i(gi),q(()=>Qr(i(gi).task))),()=>(i(W),i(gi),q(()=>i(W)("history.deleteRun",{id:i(gi).id}))),()=>(i(W),i(gi),q(()=>i(W)("history.deleteRun",{id:i(gi).id}))),()=>(i(W),q(()=>i(W)("common.delete")))]),$e("click",$r,()=>Al(i(gi),!0)),$e("click",ro,()=>yu(i(gi).id)),te(dn,as)}),A(Tn),A(ot),de((dn,gi)=>{X(ft,`${dn??""} `),X(Ii,`${i(xt),q(()=>i(xt).length)??""}/${a(),q(()=>a().historyLimit)??""}`),Hi.disabled=i(di),X(Ka,gi)},[()=>(i(W),q(()=>i(W)("history.title"))),()=>(i(W),q(()=>i(W)("history.clear")))]),$e("click",Hi,rh),te(gt,ot)};qe(eE,gt=>{i(xt),q(()=>i(xt).length)&>(tE)})}A(Gu),A(ar),de((gt,ot,Gt,ft,At,Ii,$i,Ri,ji,Hi,Ka,Tn)=>{be(J,"aria-label",gt),X(ut,ot),X(Dt,Gt),X(an,ft),Ki=Gi(vt,1,"studio-model-status",null,Ki,{ready:i(l)}),X(Ps,At),be(ks,"aria-label",Ii),X(Fa,$i),Ji.disabled=i(k)||i(di),X(ts,Ri),Io=Gi(is,1,"",null,Io,{good:i(ye)===!0,bad:i(ye)===!1}),X(Tr,ji),X(no,Hi),X(DM,Ka),X(VM,Tn)},[()=>(i(W),q(()=>i(W)("nav.workflows"))),()=>(i(W),q(()=>i(W)("studio.eyebrow"))),()=>(i(Y),i(C),i(W),q(()=>i(Y)?Qr(i(C)?.task,i(W),i(C)):i(W)("studio.title"))),()=>(i(W),i(Qa),q(()=>i(W)(`studio.subtitle.${i(Qa)==="conversion"?"vc":i(Qa)==="separation"?"sep":i(Qa)}`))),()=>(i(Y),i(l),i(W),i(ye),q(()=>i(Y)?i(l)?i(W)("studio.resident"):i(ye)===!1?i(W)("studio.notInstalled"):i(W)("studio.available"):i(W)("studio.chooseInstalled"))),()=>(i(W),q(()=>i(W)("studio.model"))),()=>(i(W),q(()=>i(W)("studio.model"))),()=>(i(W),q(()=>i(W)("studio.noModel"))),()=>(i(Y),i(W),i(ye),q(()=>i(Y)?i(ye)===!0?i(W)("studio.pathFound"):i(ye)===!1?i(W)("studio.pathMissing"):i(W)("studio.pathUnknown"):i(W)("studio.noModel"))),()=>(i(Y),i(W),i(C),q(()=>i(Y)?i(W)("studio.estimatedVram",{value:i(C)?.min_vram_gb||"?"}):i(W)("studio.vram"))),()=>(i(W),q(()=>i(W)("result.label"))),()=>(i(W),q(()=>i(W)("result.title")))]),yo(Ji,()=>i(Y),gt=>E(Y,gt)),$e("change",Ji,gt=>No(gt.currentTarget.value)),te(N,K)},RM=N=>{$a(SF(N,{get activeCatalog(){return i(ga)},get loadedModels(){return i(he)},get savedVoices(){return i(wa)},get server(){return i(ie)},get modelsFolder(){return i(Dn)},get maxTokens(){return i(ve)},entrySelectable:Ga,studioPackageSlots:pu,packageIsAvailable:xr,packageSessionOptionsMatch:wr,supportsMaxTokens:Oi,supportsRequestOption:Ra,requiresRequestOption:Ci,refresh:tn,log:wi,get tr(){return i(W)},$$legacy:!0}),K=>E(Q,K),()=>i(Q))},jM=N=>{{let K=Qt(()=>(i(W),q(()=>Yr.map(J=>({id:J.id,label:Mo(J.id,J.filterLabel,i(W))})))));YF(N,{get groups(){return i(kl)},get packageSizes(){return i(Fe)},get installJobs(){return i(bi)},get packageSizeState(){return i(fe)},get modelsFolder(){return i(Dn)},get modelsFolderHistory(){return i(Zn)},get defaultModelsFolder(){return i(zs)},get applyingModelsFolder(){return i(Us)},get modelsFolderIsDefault(){return i(_r)},openFolderBrowser:Po,applyModelsFolder:ih,installPackage:kM,removePackage:TM,stopPackageDownload:xM,cleanPartialDownload:SM,formatBytes:zo,installProgressLabel:oa,workflowForEntry:la,taskLabel:J=>Qr(J.task,i(W),J),get workflows(){return i(K)},openModel:(J,ke)=>{ke&&Vn(J,ke),No(J.id),E(F,"studio")},get modelsFolderInput(){return i(Jn)},set modelsFolderInput(J){E(Jn,J)},$$legacy:!0})}},PM=N=>{$a(lA(N,{onchange:async()=>{await xu(),i(Qi)&&!i(wa).some(K=>K.id===i(Qi))&&E(Qi,"")},ontext:async K=>{await xu(),vu("tts"),nk(K.id),E(F,"studio")},$$legacy:!0}),K=>E(H,K),()=>i(H))},NM=N=>{AF(N,{get tr(){return i(W)}})},OM=N=>{var K=pC(),J=Et(K),ke=z(J),Be=z(ke,!0);A(ke);var Ye=j(ke),ut=z(Ye,!0);A(Ye);var Yt=j(Ye),Dt=z(Yt,!0);A(Yt),A(J);var ua=j(J,2),an=z(ua),vt=z(an),Ki=z(vt),Ps=z(Ki,!0);A(Ki);var ar=j(Ki),ks=z(ar,!0);A(ar),A(vt);var zn=j(vt,2),ii=z(zn),Fa=z(ii,!0);A(ii);var Ji=j(ii),li=z(Ji,!0);A(Ji),A(zn);var ts=j(zn,2),Un=z(ts),xn=z(Un,!0);A(Un);var is=j(Un),Io=z(is,!0);A(is),A(ts);var Tr=j(ts,2),ao=z(Tr),no=z(ao,!0);A(ao);var so=j(ao),Sa=z(so,!0);A(so),A(Tr),A(an);var ia=j(an,2),Bn=z(ia,!0);A(ia);var nn=j(ia,2),Sn=z(nn,!0);A(nn),A(ua),de((xs,Lo,Lc,Do,Dc,_h,vh,Gu,Vc,Hc)=>{X(Be,xs),X(ut,Lo),X(Dt,Lc),X(Ps,Do),X(ks,(i(ie),q(()=>i(ie)?.status||"offline"))),X(Fa,Dc),X(li,(i(ie),q(()=>i(ie)?.backend||"—"))),X(xn,_h),X(Io,(i(he),q(()=>i(he).length))),X(no,vh),X(Sa,Gu),X(Bn,Vc),X(Sn,Hc)},[()=>(i(W),q(()=>i(W)("runtime.eyebrow"))),()=>(i(W),q(()=>i(W)("runtime.title"))),()=>(i(W),q(()=>i(W)("runtime.subtitle"))),()=>(i(W),q(()=>i(W)("runtime.status"))),()=>(i(W),q(()=>i(W)("runtime.backend"))),()=>(i(W),q(()=>i(W)("runtime.registered"))),()=>(i(W),q(()=>i(W)("runtime.resident"))),()=>(i(he),q(()=>i(he).filter(xs=>xs.loaded).length)),()=>(i(W),q(()=>i(W)("runtime.serverLogNotice"))),()=>(i(pi),i(W),q(()=>i(pi).length?i(pi).join(` -`):i(W)("runtime.noEvents")))]),te(N,K)};qe(UM,N=>{i(F)==="studio"?N(BM):i(F)==="arena"?N(RM,1):i(F)==="models"?N(jM,2):i(F)==="voices"?N(PM,3):i(F)==="configuration"?N(NM,4):N(OM,-1)})}A(hh);var yk=j(hh,2);{var IM=N=>{var K=bC(),J=z(K),ke=z(J),Be=z(ke),Ye=z(Be),ut=z(Ye,!0);A(Ye);var Yt=j(Ye),Dt=z(Yt,!0);A(Yt),A(Be);var ua=j(Be,2),an=z(ua,!0);A(ua),A(ke);var vt=j(ke,2),Ki=z(vt,!0);A(vt);var Ps=j(vt,2);{var ar=Sa=>{var ia=gC();Mt(ia,5,()=>(i(Ei),q(()=>i(Ei).roots)),Xt,(Bn,nn)=>{var Sn=su(),xs=z(Sn,!0);A(Sn),de(()=>X(xs,i(nn))),$e("click",Sn,()=>Po(i(nn))),te(Bn,Sn)}),A(ia),te(Sa,ia)};qe(Ps,Sa=>{i(Ei),q(()=>i(Ei)?.roots.length)&&Sa(ar)})}var ks=j(Ps,2),zn=z(ks),ii=z(zn,!0);A(zn);var Fa=j(zn,2),Ji=z(Fa,!0);A(Fa),A(ks);var li=j(ks,2);{var ts=Sa=>{var ia=hC(),Bn=z(ia,!0);A(ia),de(()=>X(Bn,i(ka))),te(Sa,ia)},Un=Sa=>{var ia=Bb(),Bn=z(ia,!0);A(ia),de(nn=>X(Bn,nn),[()=>(i(W),q(()=>i(W)("folder.loadingFolders")))]),te(Sa,ia)},xn=Sa=>{var ia=vC();Mt(ia,5,()=>(i(Ei),q(()=>i(Ei).directories)),Xt,(Bn,nn)=>{var Sn=_C(),xs=j(z(Sn)),Lo=z(xs,!0);A(xs),A(Sn),de(()=>{be(Sn,"title",(i(nn),q(()=>i(nn).path))),X(Lo,(i(nn),q(()=>i(nn).name)))}),$e("click",Sn,()=>Po(i(nn).path)),te(Bn,Sn)}),A(ia),te(Sa,ia)},is=Sa=>{var ia=Bb(),Bn=z(ia,!0);A(ia),de(nn=>X(Bn,nn),[()=>(i(W),q(()=>i(W)("folder.empty")))]),te(Sa,ia)};qe(li,Sa=>{i(ka)?Sa(ts):i(Ti)?Sa(Un,1):(i(Ei),q(()=>i(Ei)?.directories.length)?Sa(xn,2):Sa(is,-1))})}var Io=j(li,2),Tr=z(Io),ao=z(Tr,!0);A(Tr);var no=j(Tr,2),so=z(no,!0);A(no),A(Io),A(J),A(K),de((Sa,ia,Bn,nn,Sn,xs,Lo,Lc,Do,Dc)=>{X(ut,Sa),X(Dt,ia),be(ua,"aria-label",Bn),be(ua,"title",nn),X(an,Sn),X(Ki,xs),zn.disabled=(i(Ei),i(Ti),q(()=>!i(Ei)?.parent||i(Ti))),X(ii,Lo),Fa.disabled=i(Ti),X(Ji,Lc),X(ao,Do),no.disabled=!i(Ei)||i(Ti),X(so,Dc)},[()=>(i(W),q(()=>i(W)("folder.eyebrow"))),()=>(i(W),q(()=>i(W)("folder.title"))),()=>(i(W),q(()=>i(W)("folder.closeLabel"))),()=>(i(W),q(()=>i(W)("common.close"))),()=>(i(W),q(()=>i(W)("common.close"))),()=>(i(Ei),i(W),q(()=>i(Ei)?.current||i(W)("folder.loading"))),()=>(i(W),q(()=>i(W)("folder.up"))),()=>(i(W),q(()=>i(W)("common.refresh"))),()=>(i(W),q(()=>i(W)("common.cancel"))),()=>(i(W),q(()=>i(W)("folder.select")))]),$e("click",ua,()=>E(Vi,!1)),$e("click",zn,()=>Po(i(Ei)?.parent||"")),$e("click",Fa,()=>Po(i(Ei)?.current||"")),$e("click",Tr,()=>E(Vi,!1)),$e("click",no,ah),te(N,K)};qe(yk,N=>{i(Vi)&&N(IM)})}var wk=j(yk,2),kk=j(z(wk)),LM=z(kk,!0);A(kk),A(wk),de((N,K,J,ke,Be,Ye,ut,Yt,Dt,ua,an,vt)=>{X($M,N),be($u,"aria-label",K),uk=Gi(Pc,1,"",null,uk,{active:i(F)==="studio"}),X(qM,J),fk=Gi(Nc,1,"",null,fk,{active:i(F)==="arena"}),X(GM,ke),qu.disabled=Be,mk=Gi(qu,1,"",null,mk,{active:i(F)==="voices"}),gk=Gi(Oc,1,"",null,gk,{active:i(F)==="logs"}),X(AM,Ye),Ic.disabled=i(di),hk=Gi(Ic,1,"",null,hk,{active:i(F)==="configuration"}),X(CM,ut),X(MM,Yt),be(to,"aria-label",Dt),_k!==(_k=i(oi))&&(to.value=(to.__value=i(oi))??"",yn(to,i(oi))),X(EM,ua),be(io,"aria-label",an),vk!==(vk=i(Rt))&&(io.value=(io.__value=i(Rt))??"",yn(io,i(Rt))),bk=Gi(gh,1,"server-pill",null,bk,{online:i(ie)?.status==="ok"}),X(zM,(i(ie),q(()=>i(ie)?.backend||"offline"))),X(LM,vt)},[()=>(i(W),q(()=>i(W)("app.nativeStudio"))),()=>(i(W),q(()=>i(W)("nav.primary"))),()=>(i(W),q(()=>i(W)("nav.studio"))),()=>(i(W),q(()=>i(W)("nav.arena"))),()=>(i(ae),i(di),i(vi),i(Wa),q(()=>i(ae)||i(di)||!!i(vi)||i(Wa))),()=>(i(W),q(()=>i(W)("nav.runtime"))),()=>(i(W),q(()=>i(W)("nav.configuration"))),()=>(i(W),q(()=>i(W)("language.label"))),()=>(i(W),q(()=>i(W)("language.label"))),()=>(i(W),q(()=>i(W)("theme.label"))),()=>(i(W),q(()=>i(W)("theme.label"))),()=>(i(W),q(()=>i(W)("footer.embedded")))]),$e("click",Pc,th),$e("click",Nc,()=>Tu("arena")),$e("click",qu,()=>Tu("voices")),$e("click",Oc,()=>Tu("logs")),$e("click",Ic,()=>Tu("configuration")),$e("change",to,N=>tr(N.currentTarget.value)),$e("change",io,N=>vr(N.currentTarget.value)),te(t,lk),Xa(),s()}const kC=Object.freeze(Object.defineProperty({__proto__:null,component:wC},Symbol.toStringTag,{value:"Module"})),xC=Object.freeze(Object.defineProperty({__proto__:null,default:({status:t,message:e})=>` +Only this package precision will be removed.`))){M(pe,`Deleting ${N.display_name} ${K.label}...`);try{Gl(N,K)&&(M(pe,`Unloading ${N.display_name} ${K.label} before deletion...`),await Ir(N.id),await mn());const ve=await a5(K.id);M(gt,{...i(gt),[K.id]:{...i(gt)[K.id],installed:!1}});const Me={...i(Ai)};if(delete Me[K.id],M(Ai,Me),bu(N,K)){const Ye=(N.install_packages||[]).find(Zt=>Zt.id!==K.id&&i(gt)[Zt.id]?.installed),ft={...Ct};Ye?ft[N.id]=Ye.id:delete ft[N.id],Ct=ft,localStorage.setItem("audiocpp.ui.packageIds",JSON.stringify(Ct)),N.id===i(W)&&M(be,ql(Ye?.path||N.path))}Al(i(gt)),M(Xi,"idle"),await fn(),N.id===i(W)&&(await Ls(),Ml()),M(pe,ve.message||`${N.display_name} ${K.label} deleted.`),vi(i(pe))}catch(ve){M(pe,ve instanceof Error?ve.message:String(ve)),vi(`Package deletion failed: ${i(pe)}`)}}}Bs(async()=>{try{BF()}catch(J){du.set(J instanceof Error?J.message:String(J)),vi(`Configuration could not be loaded: ${J instanceof Error?J.message:J}`)}await ba(),ji=window.matchMedia("(prefers-color-scheme: dark)"),_i=ji.matches,Ta=J=>{_i=J.matches,i(kt)==="system"&&Un()},ji.addEventListener("change",Ta),M(kt,Y1(localStorage.getItem(K1))),Un(i(kt));const N=localStorage.getItem("audiocpp.ui.language");M(Nt,L1(N?[N]:navigator.languages)),document.documentElement.lang=i(Nt);try{const J=JSON.parse(localStorage.getItem("audiocpp.ui.modelsFolderHistory")||"[]");if(!Array.isArray(J)||J.some(ve=>typeof ve!="string"||!ve.trim()))throw new Error("Invalid models-folder history.");M(as,[...new Set(J)].slice(0,10))}catch(J){vi(`Models folder history unavailable: ${J instanceof Error?J.message:String(J)}`)}try{Ct=JSON.parse(localStorage.getItem("audiocpp.ui.packageIds")||"{}")}catch{Ct={}}localStorage.removeItem("audiocpp.ui.packagePaths");const K=localStorage.getItem("audiocpp.ui.model");if(K&&M(W,K),M(z,i(Ma).find(J=>J.id===i(W))||i(Ma)[0]||vn[0]),M(vt,""),M(oi,[]),M(Ja,Hi(i(z))),i(W)&&(Is={...Is,[i(Ja)]:i(W)}),Qn(),await mn(),i(St).some(J=>J.group==="lora")&&Qn(),i(ge)?.ui_management)try{let J=await r5();const ve=localStorage.getItem("audiocpp.ui.modelsFolder");ve&&ve!==J.models_root&&(J=await M1(ve)),Oc(J)}catch(J){M(pe,J instanceof Error?J.message:String(J)),M(et,i(pe)),vi(`Models folder unavailable: ${i(pe)}`)}M(be,cr(i(z))),i(ge)?.ui_management?(await fn(),await Ls(),Ml()&&M(pe,"No installed model is selected. Choose a downloaded model or install one from the Models tab.")):M(ie,!!i(W)),await xu(),await Su(),await Dc()}),fl(()=>{Tn!==null&&window.clearInterval(Tn),Ds();for(const N of i(zt))Io(N);va?.abort(),i(Li)?.state==="recording"&&i(Li).stop(),is=!0,an?.state==="recording"&&an.stop(),cn?.getTracks().forEach(N=>N.stop()),Hn?.getTracks().forEach(N=>N.stop()),tt!==null&&window.clearInterval(tt),Ji!==null&&window.clearInterval(Ji),ji&&Ta&&ji.removeEventListener("change",Ta)}),We(()=>i(Nt),()=>{M(Q,I1(i(Nt)))}),We(()=>(i(ge),vn),()=>{M(Ma,i(ge)&&!i(ge).ui_management?Rc():[...vn,...Rc(!0)])}),We(()=>i(Ma),()=>{M(jc,$l(i(Ma)))}),We(()=>(i(Ma),i(W),vn),()=>{M(z,i(Ma).find(N=>N.id===i(W))||i(Ma)[0]||vn[0])}),We(()=>i(Ja),()=>{M(r,or.find(N=>N.id===i(Ja))||or[0])}),We(()=>(i(Ma),i(Ja)),()=>{M(o,i(Ma).filter(N=>Hi(N)===i(Ja)).sort((N,K)=>Bc(N.display_name,K.display_name)))}),We(()=>(i(ae),i(W),i(z)),()=>{M(l,i(ae).some(N=>N.id===i(W)&&N.loaded&&jo(N,i(z))))}),We(()=>i(z),()=>{M(u,dF(i(z)?.family,i(z)?.task))}),We(()=>i(u),()=>{M(p,i(u)?.component)}),We(()=>i(St),()=>{M(g,i(St).filter(N=>N.group==="lora"))}),We(()=>(i(St),i(z)),()=>{M(h,i(St).filter(N=>N.group!=="lora"&&!(i(z)?.family==="ace_step"&&["lora","lora_scale"].includes(N.name))))}),We(()=>i(u),()=>{M(f,i(u)?.replacesGenericControls||qr)}),We(()=>i(u),()=>{M(m,i(u)?.requestMode==="yue2")}),We(()=>i(u),()=>{M(d,i(u)?.requestMode==="panel")}),We(()=>(i(u),i(le)),()=>{M(c,i(u)?.blocksRunWhileUploading===!0&&i(le))}),We(()=>i(z),()=>{M(_,i(z)?.id==="firered-audio-semantic-edit"||i(z)?.id==="firered-audio-acoustic-edit")}),We(()=>i(z),()=>{M(b,i(z)?.family==="ace_step")}),We(()=>i(z),()=>{M(v,i(z)?.family==="controlfoley"||i(z)?.family==="midashenglm_gen")}),We(()=>i(z),()=>{M(k,(i(z)?.family==="breeze_tts"||i(z)?.family==="chatterbox_turbo"||i(z)?.family==="maya1"||i(z)?.family==="kugelaudio"||i(z)?.family==="voxtral_tts"||i(z)?.family==="lfm2_audio"&&!i(z)?.builtin_voices?.length)&&i(z)?.task==="tts")}),We(()=>(i(z),i(_)),()=>{M(y,["asr","vc","svc","s2s","sep","vad","diar","align","midi","turn","wake","cls"].includes(i(z)?.task)||i(_)||i(z)?.family==="liveavatar"||i(z)?.family==="latentsync"||i(z)?.family==="auk"&&i(z)?.task==="gen")}),We(()=>(i(y),i(z),i(f)),()=>{M(T,i(y)||i(z)?.task==="gen"&&!i(f).genSource)}),We(()=>i(z),()=>{M(O,i(z)?.request_options?.includes("video")===!0)}),We(()=>(i(z),i(k)),()=>{M(j,["clon","vc","svc"].includes(i(z)?.task)&&i(z)?.family!=="rvc"||i(z)?.task==="s2s"&&i(z)?.family==="personaplex"||i(z)?.task==="tts"&&!["supertonic"].includes(i(z)?.family)&&!i(k))}),We(()=>i(z),()=>{M($,i(z)?.family==="vibevoice"||i(z)?.family==="moss_ttsd")}),We(()=>i(z),()=>{M(P,!!i(z)?.builtin_voices?.length)}),We(()=>i(z),()=>{M(L,i(z)?.task==="tts"&&i(z)?.family==="qwen3_tts"&&!i(z)?.id.includes("custom"))}),We(()=>i(z),()=>{M(x,["tts","clon"].includes(i(z)?.task)&&!["auk","maya1","moss_ttsd","voxtral_tts"].includes(i(z)?.family))}),We(()=>(i(x),i(vt),i(z),i(L)),()=>{M(B,!(i(x)&&i(vt))&&(["clon","vc","svc"].includes(i(z)?.task)&&i(z)?.family!=="rvc"||i(L)))}),We(()=>i(z),()=>{M(D,un(i(z),"lyrics"))}),We(()=>(i(z),i(x),i(vt),i(Ae),i(L)),()=>{M(A,un(i(z),"reference_text")&&!(i(x)&&i(vt))||!!i(Ae)&&i(L))}),We(()=>(i(P),i(oi),i(z)),()=>{M($t,i(P)?Array.from(new Set([...i(oi).filter(N=>!(N in zn)),...i(z)?.builtin_voices||[]])):i(oi))}),We(()=>(i(vt),i(ge),i(P),Ld),()=>{M(G,i(vt)&&i(ge)&&!i(P)?Ld(zn[i(vt)]||i(vt)):"")}),We(()=>(i(P),i($t)),()=>{M(U,i(P)||i($t).every(N=>N in zn))}),We(()=>i(z),()=>{M(V,i(z)?.family==="lfm2_audio"&&i(z)?.task==="s2s")}),We(()=>(i(z),i(V),i(f)),()=>{M(I,["tts","clon","gen","s2s","align","vdes"].includes(i(z)?.task)&&!["apollo","universr","builtin_audio_utils","reuse","sidon"].includes(i(z)?.family)&&!i(V)&&!i(f).text)}),We(()=>i(z),()=>{M(w,i(z)?.task==="asr"&&["voxtral_realtime","nemotron_asr","higgs_audio_stt","sense_asr","vibevoice_asr_streaming","confucius4_r2t2"].includes(i(z)?.family))}),We(()=>(i(ge),i(gt),i(Xi)),()=>{M(S,i(ge)===null||!!i(ge).ui_management&&Object.keys(i(gt)).length===0&&i(Xi)!=="failed")}),We(()=>(i(Ma),i(ae),i(W),i(ie),i(gt)),()=>{M(C,new Set(i(Ma).filter(N=>{if(ya(N)||i(ae).some(J=>J.id===N.id&&J.loaded)||N.id===i(W)&&i(ie)===!0)return!0;const K=N.install_packages||[];return!K.length||K.some(J=>i(gt)[J.id]===void 0)?!0:K.some(J=>i(gt)[J.id]?.installed)}).map(N=>N.id)))}),We(()=>a(),()=>{nk(a().historyLimit)}),Yn(),xn();var fk=CC();zx("1uha8ag",N=>{ax(K=>{cf.title=K??""},[()=>(i(Ee),i(bn),q(()=>i(Ee)?`${i(bn).toFixed(1)} s · audio.cpp · Native Studio`:"audio.cpp · Native Studio"))])}),Te("keydown",gd,EM);var uh=At(fk),fh=E(uh),mk=R(E(fh),2),pk=R(E(mk),2),jM=E(pk,!0);F(pk),F(mk),F(fh);var $u=R(fh,2),Vc=E($u);let gk;var PM=E(Vc,!0);F(Vc);var Hc=R(Vc,2);let hk;var NM=E(Hc,!0);F(Hc);var qu=R(Hc,2);let _k;var vk=R(qu,2);{var OM=N=>{var K=fu();let J;var ve=E(K,!0);F(K),ce(Me=>{J=Gi(K,1,"",null,J,{active:i(H)==="models"}),X(ve,Me)},[()=>(i(Q),q(()=>i(Q)("nav.models")))]),Te("click",K,Fl),te(N,K)};qe(vk,N=>{i(ge),q(()=>i(ge)?.ui_management!==!1)&&N(OM)})}var Wc=R(vk,2);let bk;var IM=E(Wc,!0);F(Wc);var Qc=R(Wc,2);let yk;var LM=E(Qc,!0);F(Qc),F($u);var mh=R($u,2),ph=E(mh),DM=E(ph,!0);F(ph);var io=R(ph,2);jt(io,5,()=>W8,ei,(N,K,J,ve)=>{var Me=Mc(),Ye=E(Me,!0);F(Me);var ft={};ce(()=>{X(Ye,(i(K),q(()=>i(K).name))),ft!==(ft=(i(K),q(()=>i(K).code)))&&(Me.value=(Me.__value=(i(K),q(()=>i(K).code)))??"")}),te(N,Me)}),F(io);var wk;On(io),F(mh);var gh=R(mh,2),hh=E(gh),VM=E(hh,!0);F(hh);var ao=R(hh,2);jt(ao,5,()=>dT,ei,(N,K)=>{var J=Mc(),ve=E(J,!0);F(J);var Me={};ce(Ye=>{X(ve,Ye),Me!==(Me=(i(K),q(()=>i(K).id)))&&(J.value=(J.__value=(i(K),q(()=>i(K).id)))??"")},[()=>(i(Q),i(K),q(()=>i(Q)(`theme.${i(K).id}`,{},i(K).label)))]),te(N,J)}),F(ao);var kk;On(ao),F(gh);var _h=R(gh,2);let xk;var HM=R(E(_h),1,!0);F(_h),F(uh);var vh=R(uh,2),WM=E(vh);{var QM=N=>{var K=SC(),J=At(K);jt(J,5,()=>or,ei,(ht,ot)=>{var Et=yA();let mt;var Bt=E(Et),Pi=R(Bt),$i=E(Pi,!0);F(Pi),F(Et),ce((zi,Ui)=>{Et.disabled=i(Bi),mt=Gi(Et,1,"",null,mt,{active:i(Ja)===i(ot).id}),X(Bt,`${zi??""} `),X($i,Ui)},[()=>(i(ot),i(Q),q(()=>Wn(i(ot).id,i(ot).label,i(Q)))),()=>(i(Ma),i(ot),q(()=>i(Ma).filter(zi=>Hi(zi)===i(ot).id).length))]),Te("click",Et,()=>zl(i(ot).id)),te(ht,Et)}),F(J);var ve=R(J,2),Me=E(ve),Ye=E(Me),ft=E(Ye,!0);F(Ye);var Zt=R(Ye,2),Kt=E(Zt,!0);F(Zt);var ma=R(Zt,2),sn=E(ma,!0);F(ma),F(Me);var bt=R(Me,2);let Qi;var Vs=E(bt,!0);F(bt),F(ve);var ur=R(ve,2),Gs=E(ur),Rn=E(Gs),ai=E(Rn),za=E(ai,!0);F(ai);var Zi=R(ai,2),li=E(Zi),ss=E(li,!0);F(li),li.value=li.__value="";var jn=R(li);jt(jn,1,()=>(i(r),q(()=>i(r).tasks)),ei,(ht,ot)=>{const Et=Pt(()=>(i(o),i(ot),q(()=>i(o).filter($i=>$i.task===i(ot)))));var mt=Us(),Bt=At(mt);{var Pi=$i=>{var zi=wA();jt(zi,5,()=>i(Et),ei,(Ui,Di)=>{var en=Mc(),Fn=E(en);F(en);var pn={};ce((pi,os)=>{en.disabled=pi,X(Fn,`${i(Di),q(()=>i(Di).display_name)??""}${os??""}`),pn!==(pn=(i(Di),q(()=>i(Di).id)))&&(en.value=(en.__value=(i(Di),q(()=>i(Di).id)))??"")},[()=>(i(C),i(Di),q(()=>!i(C).has(i(Di).id))),()=>(i(C),i(Di),i(Q),q(()=>i(C).has(i(Di).id)?"":` — ${i(Q)("studio.notDownloaded")}`))]),te(Ui,en)}),F(zi),ce(Ui=>ye(zi,"label",Ui),[()=>(i(ot),i(Q),q(()=>rr(i(ot),i(Q))))]),te($i,zi)};qe(Bt,$i=>{Z(i(Et)),q(()=>i(Et).length)&&$i(Pi)})}te(ht,mt)}),F(Zi);var qn=R(Zi,2),rs=E(qn);let Lo;var Fr=E(rs,!0);F(rs);var no=R(rs,2),so=E(no,!0);F(no),F(qn),F(Rn);var ro=R(Rn,2),$a=E(ro);{var aa=ht=>{var ot=kA(),Et=At(ot),mt=E(Et,!0);F(Et);var Bt=R(Et,2);Dt(Bt);var Pi=R(Bt,2),$i=E(Pi,!0);F(Pi),ce((zi,Ui)=>{X(mt,zi),Bt.disabled=i(l)||i(_e)||i(Ee),ye(Pi,"href",(i(z),q(()=>i(z).weights_url))),X($i,Ui)},[()=>(i(Q),q(()=>i(Q)("studio.weightsPath"))),()=>(i(Q),q(()=>i(Q)("studio.downloadWeights")))]),Fi(Bt,()=>i(be),zi=>M(be,zi)),Te("change",Bt,Ls),te(ht,ot)},Pn=wi(()=>(i(z),i(ge),q(()=>i(z).family==="builtin_audio_utils"&&i(ge)?.ui_management&&!ya(i(z)))));qe($a,ht=>{i(Pn)&&ht(aa)})}var rn=R($a,2);{var Gn=ht=>{var ot=xA();jt(ot,5,()=>(i(z),q(()=>Nc(i(z)))),ei,(Et,mt)=>{const Bt=Pt(()=>(i(mt),q(()=>i(mt).choice))),Pi=Pt(()=>(Z(i(Bt)),i(z),i(ae),i(gt),q(()=>!!(i(Bt)&&eo(i(z),i(Bt),i(ae),i(gt)))))),$i=Pt(()=>(Z(i(Bt)),i(z),i(ae),q(()=>!!(i(Bt)&&Gl(i(z),i(Bt),i(ae))))));var zi=fu();let Ui;var Di=E(zi,!0);F(zi),ce((en,Fn)=>{zi.disabled=i(_e)||!i(Pi),ye(zi,"title",en),Ui=Gi(zi,1,"",null,Ui,Fn),X(Di,(Z(i(Bt)),i(mt),q(()=>i(Bt)?.label||i(mt).label)))},[()=>(i(Q),Z(i($i)),Z(i(Pi)),Z(i(Bt)),i(mt),q(()=>i(Q)(i($i)?"studio.unloadPackage":i(Pi)?"studio.loadPackage":"studio.packageNotDownloaded",{package:i(Bt)?.label||i(mt).label}))),()=>({resident:i($i),"selected-package":!!(i(Bt)&&i(Pi)&&bu(i(z),i(Bt)))})]),Te("click",zi,()=>i(Bt)&&rh(i(Bt))),te(Et,zi)}),F(ot),ce(Et=>ye(ot,"aria-label",Et),[()=>(i(Q),q(()=>i(Q)("studio.format")))]),te(ht,ot)},Fs=ht=>{var ot=fu();let Et;var mt=E(ot,!0);F(ot),ce((Bt,Pi,$i)=>{Et=Gi(ot,1,"single-model-toggle",null,Et,{resident:i(l)}),ot.disabled=Bt,ye(ot,"title",Pi),X(mt,$i)},[()=>(i(W),i(_e),i(c),i(ie),i(z),i(l),q(()=>!i(W)||i(_e)||i(c)||i(ie)===!1||ya(i(z))&&!i(l))),()=>(i(z),i(l),i(Q),q(()=>ya(i(z))&&!i(l)?i(Q)("studio.serverConfigured"):i(l)?i(Q)("studio.unload"):i(Q)("studio.load"))),()=>(i(z),i(_e),i(Q),i(l),q(()=>ya(i(z))?i(_e)?i(Q)("studio.working"):i(l)?i(Q)("studio.bundledLoaded"):i(Q)("studio.configured"):i(_e)?i(Q)("studio.working"):i(l)?i(Q)(i(z).family==="builtin_audio_utils"?"studio.unload":"studio.bundledLoaded"):i(Q)("studio.load")))]),Te("click",ot,oh),te(ht,ot)};qe(rn,ht=>{i(W),i(z),i(f),q(()=>i(W)&&(i(z).install_packages||[]).length&&!i(f).packageButtons)?ht(Gn):ht(Fs,-1)})}F(ro);var Do=R(ro,2);{var Kc=ht=>{var ot=SA(),Et=E(ot,!0);F(ot),ce(mt=>X(Et,mt),[()=>(i(Q),q(()=>Zg(i(Q))))]),te(ht,ot)};qe(Do,ht=>{i(W),i(z),q(()=>i(W)&&(i(z)?.input_hint_en||i(z)?.input_hint))&&ht(Kc)})}F(Gs);var Vo=R(Gs,2),Yc=E(Vo);{var bh=ht=>{var ot=fC(),Et=At(ot),mt=E(Et),Bt=E(mt),Pi=E(Bt,!0);F(Bt);var $i=R(Bt),zi=E($i,!0);F($i),F(mt);var Ui=R(mt,2),Di=E(Ui),en=E(Di,!0);F(Di);var Fn=R(Di,2);{var pn=Ze=>{var st=TA(),dt=E(st);Xf(dt,{size:14});var at=R(dt,1,!0);F(st),ce(Yt=>{st.disabled=i(Ee)||i(_e)||i(Bi),X(at,Yt)},[()=>(i(Q),q(()=>i(Q)("settings.load")))]),Te("click",st,()=>i($n)?.click()),te(Ze,st)};qe(Fn,Ze=>{i(f),q(()=>!i(f).settingsImport)&&Ze(pn)})}F(Ui),F(Et);var pi=R(Et,2);Ga(pi,Ze=>M($n,Ze),()=>i($n));var os=R(pi,2);{var Rl=Ze=>{var st=$A(),dt=E(st),at=E(dt);Pd(at,{size:17});var Yt=R(at,1,!0);F(dt);var Wt=R(dt,2);Ka(Wt),F(st),ce((Rt,Ot)=>{X(Yt,Rt),ye(Wt,"rows",(i(z),q(()=>i(z).task==="gen"?3:4))),ye(Wt,"placeholder",Ot)},[()=>(i(z),i(Q),q(()=>i(z).task==="gen"?i(Q)("request.prompt"):i(z).task==="align"?i(Q)("request.alignmentText"):i(Q)("request.text"))),()=>(i(z),i(Q),q(()=>i(z).task==="gen"?i(Q)("request.soundPlaceholder"):i(Q)("request.textPlaceholder")))]),Fi(Wt,()=>i(Qe),Rt=>M(Qe,Rt)),te(Ze,st)};qe(os,Ze=>{i(I)&&Ze(Rl)})}var Ar=R(os,2);{var Zc=Ze=>{var st=qA(),dt=E(st),at=E(dt);Dt(at);var Yt=R(at,3,!0);F(dt);var Wt=R(dt,2),Rt=E(Wt),Ot=E(Rt,!0);F(Rt);var Xt=R(Rt,2);Dt(Xt),F(Wt),F(st),ce((Le,qi)=>{X(Yt,Le),X(Ot,qi),Xt.disabled=!i(yn)},[()=>(i(Q),q(()=>i(Q)("request.splitLongText"))),()=>(i(Q),q(()=>i(Q)("request.charactersPerChunk")))]),W_(at,()=>i(yn),Le=>M(yn,Le)),Fi(Xt,()=>i(Yi),Le=>M(Yi,Le)),te(Ze,st)},kh=wi(()=>(i(z),i(f),q(()=>["tts","clon"].includes(i(z).task)&&i(z).family!=="moss_ttsd"&&!i(f).chunking)));qe(Ar,Ze=>{i(kh)&&Ze(Zc)})}var ed=R(Ar,2);{var Fu=Ze=>{{let st=Pt(()=>i(Ee)||i(_e)),dt=Pt(()=>(i(ge),i(z),q(()=>i(ge)?.ui_management===!0&&!ya(i(z)))));mF(Ze,{get modelId(){return i(z),q(()=>i(z).id)},get seed(){return i(we)},get busy(){return i(st)},get adapterEditable(){return i(dt)},onBrowseAdapter:at=>Wi(i(dn),at),get paramSpecs(){return i(St)},ensureLoaded:ku,requestOptions:dr,resolveRequestSeed:yu,setParameterValue:qs,log:vi,get tr(){return i(Q)},get text(){return i(Qe)},set text(at){M(Qe,at)},get lyrics(){return i(ne)},set lyrics(at){M(ne,at)},get language(){return i(Pe)},set language(at){M(Pe,at)},get duration(){return i(fe)},set duration(at){M(fe,at)},get rewritingCaption(){return i(Se)},set rewritingCaption(at){M(Se,at)},get advancedValues(){return i(Re)},set advancedValues(at){M(Re,at)},get outputText(){return i(Ft)},set outputText(at){M(Ft,at)},get outputJson(){return i(Qt)},set outputJson(at){M(Qt,at)},get status(){return i(pe)},set status(at){M(pe,at)},get warningStatus(){return i(De)},set warningStatus(at){M(De,at)},get errorStatus(){return i(et)},set errorStatus(at){M(et,at)},$$legacy:!0})}},xh=Ze=>{var st=Us(),dt=At(st);{let at=Pt(()=>i(Ee)||i(_e)),Yt=Pt(()=>(i(z),i(ae),Z(Id),q(()=>i(z).family==="yue2"&&ya(i(z))?async()=>{M(ae,await Id())}:mn))),Wt=Pt(()=>i(tn)==="source"),Rt=Pt(()=>(i(Li),i(Xa),q(()=>!!i(Li)||i(Xa))));xd(dt,()=>i(p),(Ot,Xt)=>{Xt(Ot,{get task(){return i(z),q(()=>i(z).task)},get busy(){return i(at)},get paramSpecs(){return i(St)},get advancedValues(){return i(Re)},get catalogEntries(){return i(Ma)},get loadedModels(){return i(ae)},get server(){return i(ge)},get modelId(){return i(z),q(()=>i(z).id)},setPanelRunner:FM,modelPathFor:cr,sessionOptionsFor:Jr,get refreshModels(){return i(Yt)},log:vi,get tr(){return i(Q)},localizedParameterText:Yr,setParameterValue:qs,get sourceFile(){return i(Ue)},get savedVoices(){return i(Ca)},clearSource:wt,get sourceRecording(){return i(Wt)},get sourceRecordingBlocked(){return i(Rt)},setSourceFile:Le=>M(Ue,Le),startSourceRecording:()=>ch("source"),stopSourceRecording:dh,get lyrics(){return i(ne)},set lyrics(Le){M(ne,Le)},get seed(){return i(we)},set seed(Le){M(we,Le)},get loraUploading(){return i(le)},set loraUploading(Le){M(le,Le)},$$legacy:!0})})}te(Ze,st)},Sh=Ze=>{var st=GA(),dt=At(st),at=E(dt),Yt=R(at),Wt=E(Yt,!0);F(Yt),F(dt);var Rt=R(dt,2);Ka(Rt),ce((Ot,Xt)=>{X(at,`${Ot??""} `),X(Wt,Xt),Rt.required=i(D),ye(Rt,"aria-required",i(D))},[()=>(i(Q),q(()=>i(Q)("request.lyrics"))),()=>(i(D),i(Q),q(()=>i(D)?i(Q)("voice.required"):i(Q)("request.optional")))]),Fi(Rt,()=>i(ne),Ot=>M(ne,Ot)),te(Ze,st)};qe(ed,Ze=>{i(z),q(()=>i(z).family==="ace_step")?Ze(Fu):i(p)?Ze(xh,1):(i(z),q(()=>i(z).task==="gen")&&Ze(Sh,2))})}var Au=R(ed,2);{var oo=Ze=>{var st=FA(),dt=At(st),at=E(dt);Yf(at,{size:17});var Yt=R(at),Wt=R(Yt),Rt=E(Wt,!0);F(Wt),F(dt);var Ot=R(dt,2);Ka(Ot),ce((Xt,Le)=>{X(Yt,`${Xt??""} `),X(Rt,Le)},[()=>(i(Q),q(()=>i(Q)("request.context"))),()=>(i(Q),q(()=>i(Q)("request.contextHint")))]),Fi(Ot,()=>i(lt),Xt=>M(lt,Xt)),te(Ze,st)},Th=wi(()=>(i(z),q(()=>i(z).task==="asr"&&!["samsone","audio_flamingo","index_echo"].includes(i(z).family))));qe(Au,Ze=>{i(Th)&&Ze(oo)})}var lo=R(Au,2);{var jl=Ze=>{var st=AA(),dt=At(st),at=E(dt);Pd(at,{size:17});var Yt=R(at,1,!0);F(dt);var Wt=R(dt,2);Ka(Wt),ce((Rt,Ot)=>{X(Yt,Rt),ye(Wt,"placeholder",Ot)},[()=>(i(Q),q(()=>i(Q)("request.voiceDescription"))),()=>(i(Q),q(()=>i(Q)("request.voiceDescriptionPlaceholder")))]),Fi(Wt,()=>i(ke),Rt=>M(ke,Rt)),te(Ze,st)};qe(lo,Ze=>{i(z),q(()=>i(z).task==="vdes")&&Ze(jl)})}var Ho=R(lo,2),Cu=E(Ho);{var $h=Ze=>{var st=zA(),dt=E(st),at=E(dt),Yt=R(at);{var Wt=Jt=>{var ni=Ec(),ea=E(ni,!0);F(ni),ce(di=>X(ea,di),[()=>(i(Q),q(()=>i(Q)("request.autoLanguage")))]),te(Jt,ni)};qe(Yt,Jt=>{i(z),q(()=>!Xr[i(z).family])&&Jt(Wt)})}F(dt);var Rt=R(dt,2);{var Ot=Jt=>{var ni=CA();Dt(ni),Fi(ni,()=>i(xe),ea=>M(xe,ea)),te(Jt,ni)},Xt=wi(()=>(i(z),q(()=>["moss_ttsd","moss_voicegen"].includes(i(z).family)))),Le=Jt=>{var ni=MA();jt(ni,5,()=>(i(z),q(()=>Xr[i(z).family])),ei,(ea,di)=>{var gi=Mc(),na=E(gi,!0);F(gi);var wa={};ce(()=>{X(na,i(di)),wa!==(wa=i(di))&&(gi.value=(gi.__value=i(di))??"")}),te(ea,gi)}),F(ni),wo(ni,()=>i(Pe),ea=>M(Pe,ea)),te(Jt,ni)},qi=Jt=>{var ni=EA();Dt(ni),Fi(ni,()=>i(Pe),ea=>M(Pe,ea)),te(Jt,ni)};qe(Rt,Jt=>{i(Xt)?Jt(Ot):(i(z),q(()=>Xr[i(z).family])?Jt(Le,1):Jt(qi,-1))})}F(st),ce(Jt=>X(at,`${Jt??""} `),[()=>(i(Q),q(()=>i(Q)("request.language")))]),te(Ze,st)},pE=wi(()=>(i(z),i(f),q(()=>["tts","clon","asr","gen","s2s","align","vdes"].includes(i(z).task)&&!i(f).language&&!["apollo","universr","moss_transcribe_diarize","builtin_audio_utils","sam_audio","samsone","gigaam_asr","maya1","owsm","owsm_ctc","index_echo","audio_flamingo","kugelaudio","reuse","sidon","hviske_asr_v6","voxtral_tts"].includes(i(z).family))));qe(Cu,Ze=>{i(pE)&&Ze($h)})}var zk=R(Cu,2);{var gE=Ze=>{var st=UA(),dt=E(st),at=E(dt),Yt=R(at),Wt=E(Yt,!0);F(Yt),F(dt);var Rt=R(dt,2);Dt(Rt),F(st),ce((Ot,Xt)=>{X(at,`${Ot??""} `),X(Wt,Xt)},[()=>(i(Q),q(()=>i(Q)("request.seed"))),()=>(i(Q),q(()=>i(Q)("request.randomSeed")))]),Fi(Rt,()=>i(we),Ot=>M(we,Ot)),te(Ze,st)},hE=wi(()=>(i(z),i(f),q(()=>["tts","clon","gen","s2s","vdes"].includes(i(z).task)&&!i(f).seed&&!["apollo","builtin_audio_utils","reuse","sidon"].includes(i(z).family))));qe(zk,Ze=>{i(hE)&&Ze(gE)})}var Uk=R(zk,2);{var _E=Ze=>{var st=jA(),dt=E(st),at=E(dt,!0);F(dt);var Yt=R(dt,2);{var Wt=Ot=>{var Xt=BA();Dt(Xt),ce(()=>{ye(Xt,"min",(i(z),q(()=>i(z).family==="canary_asr"?0:1))),ye(Xt,"max",(i(z),q(()=>i(z).family==="canary_asr"?1015:i(z).family==="cohere_asr"?1014:void 0)))}),Fi(Xt,()=>i(Fe),Le=>M(Fe,Le)),te(Ot,Xt)},Rt=Ot=>{var Xt=RA();Dt(Xt),Fi(Xt,()=>i(me),Le=>M(me,Le)),te(Ot,Xt)};qe(Yt,Ot=>{i(z),q(()=>i(z).family in Tl)?Ot(Wt):Ot(Rt,-1)})}F(st),ce(Ot=>X(at,Ot),[()=>(i(Q),q(()=>i(Q)("request.maxTokens")))]),te(Ze,st)},vE=wi(()=>(i(z),q(()=>bi(i(z))&&!["kugelaudio","crisperwhisper","audio_flamingo","owsm","hviske_asr_v6","voxtral_tts"].includes(i(z).family))));qe(Uk,Ze=>{i(vE)&&Ze(_E)})}var bE=R(Uk,2);{var yE=Ze=>{var st=PA(),dt=E(st),at=E(dt,!0),Yt=R(at);{var Wt=Le=>{var qi=Ec(),Jt=E(qi,!0);F(qi),ce(ni=>X(Jt,ni),[()=>(i(Q),q(()=>i(Q)("request.autoDuration")))]),te(Le,qi)};qe(Yt,Le=>{i(b)&&Le(Wt)})}F(dt);var Rt=R(dt,2);Dt(Rt);var Ot=R(Rt,2);{var Xt=Le=>{var qi=Bb(),Jt=E(qi,!0);F(qi),ce(ni=>X(Jt,ni),[()=>(i(Q),i(Re),q(()=>i(Q)("request.minimaxFrames",{frames:Number(i(Re).num_frames||0)})))]),te(Le,qi)};qe(Ot,Le=>{i(z),q(()=>i(z).family==="minimax_h3")&&Le(Xt)})}F(st),ce(Le=>{X(at,Le),ye(Rt,"min",i(b)?-1:1),Ki(Rt,i(fe))},[()=>(i(Q),q(()=>i(Q)("request.duration")))]),Te("input",Rt,Le=>Uc(Le.currentTarget.valueAsNumber)),te(Ze,st)};qe(bE,Ze=>{i(z),i(f),q(()=>i(z).task==="gen"&&!i(f).duration)&&Ze(yE)})}F(Ho);var Bk=R(Ho,2);{var wE=Ze=>{var st=VA(),dt=E(st),at=E(dt);_4(at,{size:17});var Yt=R(at),Wt=R(Yt),Rt=E(Wt,!0);F(Wt),F(dt);var Ot=R(dt,2);Ga(Ot,Ht=>M(Be,Ht),()=>i(Be));var Xt=R(Ot,2),Le=E(Xt);Xf(Le,{size:16});var qi=R(Le),Jt=E(qi,!0);F(qi);var ni=R(qi),ea=E(ni,!0);F(ni),F(Xt);var di=R(Xt,2),gi=E(di);{var na=Ht=>{var It=NA(),pt=At(It),yt=E(pt);A1(yt,{size:14});var Lt=R(yt,1,!0);F(pt);var ui=R(pt,2),sa=E(ui,!0);F(ui),ce((Ia,An)=>{X(Lt,Ia),X(sa,An)},[()=>(i(Q),q(()=>i(Q)("request.stopRecording"))),()=>(i(Q),q(()=>i(Q)("request.recordingMicrophone")))]),Te("click",pt,dh),te(Ht,It)},wa=Ht=>{var It=OA(),pt=At(It),yt=E(pt);Jf(yt,{size:14});var Lt=R(yt,1,!0);F(pt);var ui=R(pt,2),sa=E(ui);Nd(sa,{size:15}),F(ui);var Ia=R(ui,2);{var An=La=>{var Ua=Ec(),Ba=E(Ua,!0);F(Ua),ce(()=>X(Ba,(i(Ue),q(()=>i(Ue).name)))),te(La,Ua)};qe(Ia,La=>{i(Ue)&&La(An)})}ce((La,Ua,Ba,Cr)=>{pt.disabled=La,X(Lt,Ua),ui.disabled=!i(Ue),ye(ui,"title",Ba),ye(ui,"aria-label",Cr)},[()=>(i(Li),i(Xa),q(()=>!!i(Li)||i(Xa))),()=>(i(Q),q(()=>i(Q)("request.recordMicrophone"))),()=>(i(Q),q(()=>i(Q)("file.clear"))),()=>(i(Q),q(()=>i(Q)("file.clear")))]),Te("click",pt,()=>ch("source")),Te("click",ui,wt),te(Ht,It)};qe(gi,Ht=>{i(tn)==="source"?Ht(na):Ht(wa,-1)})}F(di);var Ni=R(di,2);{let Ht=Pt(()=>(i(Q),q(()=>i(Q)("file.preview"))));Ln(Ni,{get file(){return i(Ue)},kind:"audio",get label(){return i(Ht)}})}var Mi=R(Ni,2);{var qa=Ht=>{var It=DA(),pt=E(It),yt=E(pt),Lt=E(yt,!0);F(yt);var ui=R(yt,2),sa=E(ui,!0);F(ui),F(pt);var Ia=R(pt,2);{var An=Ua=>{var Ba=IA(),Cr=E(Ba,!0);F(Ba),ce(Wo=>X(Cr,Wo),[()=>(i(Q),q(()=>i(Q)("request.stopLive")))]),Te("click",Ba,dk),te(Ua,Ba)},La=Ua=>{var Ba=LA(),Cr=E(Ba,!0);F(Ba),ce((Wo,Mu)=>{Ba.disabled=Wo,X(Cr,Mu)},[()=>(i(Ee),i(Li),q(()=>i(Ee)||!!i(Li))),()=>(i(Q),q(()=>i(Q)("request.startLive")))]),Te("click",Ba,GM),te(Ua,Ba)};qe(Ia,Ua=>{i(Xa)?Ua(An):Ua(La,-1)})}F(It),ce((Ua,Ba)=>{X(Lt,Ua),X(sa,Ba)},[()=>(i(Q),q(()=>i(Q)("request.liveTitle"))),()=>(i(Q),q(()=>i(Q)("request.liveDescription")))]),te(Ht,It)};qe(Mi,Ht=>{i(w)&&Ht(qa)})}F(st),ce((Ht,It,pt,yt)=>{X(Yt,`${Ht??""} `),X(Rt,It),X(Jt,pt),X(ea,yt)},[()=>(i(Q),q(()=>i(Q)("request.sourceAudio"))),()=>(i(y),i(Q),q(()=>i(y)?"":`(${i(Q)("request.optional")})`)),()=>(i(Q),q(()=>i(Q)("file.choose"))),()=>(i(Ue),i(Q),q(()=>i(Ue)?.name||i(Q)("file.none")))]),Te("change",Ot,Ht=>M(Ue,Ht.currentTarget.files?.[0]||null)),te(Ze,st)};qe(Bk,Ze=>{i(T),i(z),q(()=>i(T)&&i(z).family!=="liveavatar")&&Ze(wE)})}var Rk=R(Bk,2);{var kE=Ze=>{var st=HA(),dt=E(st),at=E(dt);W4(at,{size:17});var Yt=R(at,2),Wt=E(Yt,!0);F(Yt),F(dt);var Rt=R(dt,2);Ga(Rt,Ni=>M(Ge,Ni),()=>i(Ge));var Ot=R(Rt,2),Xt=E(Ot),Le=E(Xt,!0);F(Xt);var qi=R(Xt),Jt=E(qi,!0);F(qi),F(Ot);var ni=R(Ot,2),ea=E(ni),di=E(ea,!0);F(ea);var gi=R(ea,2);{var na=Ni=>{var Mi=Ec(),qa=E(Mi,!0);F(Mi),ce(()=>X(qa,(i(he),q(()=>i(he).name)))),te(Ni,Mi)};qe(gi,Ni=>{i(he)&&Ni(na)})}F(ni);var wa=R(ni,2);{let Ni=Pt(()=>(i(Q),q(()=>i(Q)("file.preview"))));Ln(wa,{get file(){return i(he)},kind:"video",get label(){return i(Ni)}})}F(st),ce((Ni,Mi,qa,Ht)=>{X(Wt,Ni),X(Le,Mi),X(Jt,qa),ea.disabled=!i(he),X(di,Ht)},[()=>(i(Q),q(()=>i(Q)("request.optional"))),()=>(i(Q),q(()=>i(Q)("file.choose"))),()=>(i(he),i(Q),q(()=>i(he)?.name||i(Q)("file.none"))),()=>(i(Q),q(()=>i(Q)("file.clear")))]),Te("change",Rt,Ni=>M(he,Ni.currentTarget.files?.[0]||null)),Te("click",ea,it),te(Ze,st)};qe(Rk,Ze=>{i(O)&&Ze(kE)})}var jk=R(Rk,2);{var xE=Ze=>{var st=eC(),dt=E(st),at=E(dt);Zf(at,{size:17});var Yt=R(at,1,!0);F(dt);var Wt=R(dt,2);{let di=Pt(()=>i(da)?`saved:${i(da)}`:i(vt)?`preset:${i(vt)}`:""),gi=Pt(()=>i(x)?i($t):[]),na=Pt(()=>(i(z),i(Ca),q(()=>i(z).family==="kugelaudio"?[]:i(Ca)))),wa=Pt(()=>(i(P),i(z),i(Q),i(ge),i(U),q(()=>i(P)||i(z).family==="kugelaudio"?i(Q)("voice.preset"):i(ge)?.ui_management===!1||!i(U)?i(Q)("voice.configured"):i(Q)("voice.quickStart")))),Ni=Pt(()=>(i(Q),q(()=>i(Q)("voice.useReference")))),Mi=Pt(()=>(i(z),q(()=>i(z).family!=="kugelaudio")));H1(Wt,{id:"quick-start-voice",get value(){return i(di)},get presets(){return i(gi)},get savedVoices(){return i(na)},get presetLabel(){return i(wa)},get emptyLabel(){return i(Ni)},get allowEmpty(){return i(Mi)},get tr(){return i(Q)},onselect:$M})}var Rt=R(Wt,2);{var Ot=di=>{var gi=Us(),na=At(gi);{var wa=Ni=>{var Mi=Rb(),qa=At(Mi);{var Ht=yt=>{var Lt=WA(),ui=E(Lt,!0);F(Lt),ce(sa=>X(ui,sa),[()=>(i(Q),q(()=>i(Q)("voice.bundledNote")))]),te(yt,Lt)};qe(qa,yt=>{i(P),i(z),q(()=>!i(P)&&i(z).family!=="kugelaudio")&&yt(Ht)})}var It=R(qa,2);{var pt=yt=>{{let Lt=Pt(()=>(i(Q),q(()=>i(Q)("file.preview"))));Ln(yt,{get src(){return i(G)},get name(){return i(vt)},kind:"audio",get label(){return i(Lt)}})}};qe(It,yt=>{i(G)&&yt(pt)})}te(Ni,Mi)};qe(na,Ni=>{i(vt)&&Ni(wa)})}te(di,gi)};qe(Rt,di=>{i(x),i($t),q(()=>i(x)&&i($t).length)&&di(Ot)})}var Xt=R(Rt,2);{var Le=di=>{var gi=KA(),na=E(gi),wa=E(na),Ni=E(wa),Mi=R(Ni),qa=E(Mi,!0);F(Mi),F(wa);var Ht=R(wa,2);Ga(Ht,La=>M(Ie,La),()=>i(Ie));var It=R(Ht,2),pt=E(It);Xf(pt,{size:16});var yt=R(pt),Lt=E(yt,!0);F(yt);var ui=R(yt),sa=E(ui,!0);F(ui),F(It),F(na);var Ia=R(na,2);{var An=La=>{var Ua=QA(),Ba=E(Ua),Cr=E(Ba);ja(),F(Ba);var Wo=R(Ba,2);Ga(Wo,id=>M(Gt,id),()=>i(Gt));var Mu=R(Wo,2),Kk=E(Mu);Yf(Kk,{size:16});var Gh=R(Kk),ME=E(Gh,!0);F(Gh);var Yk=R(Gh),EE=E(Yk,!0);F(Yk),F(Mu),F(Ua),ce((id,zE,UE)=>{X(Cr,`${id??""} `),X(ME,zE),X(EE,UE)},[()=>(i(Q),q(()=>i(Q)("voice.referenceText"))),()=>(i(Q),q(()=>i(Q)("file.choose"))),()=>(i(Ve),i(Q),q(()=>i(Ve)?.name||i(Q)("file.none")))]),Te("change",Wo,id=>oa(id.currentTarget.files?.[0]||null)),te(La,Ua)};qe(Ia,La=>{i(z),q(()=>i(z).family!=="auk")&&La(An)})}F(gi),ce((La,Ua,Ba,Cr)=>{X(Ni,`${La??""} `),X(qa,Ua),X(Lt,Ba),X(sa,Cr)},[()=>(i(Q),q(()=>i(Q)("voice.reference"))),()=>(i(B),i(Q),q(()=>i(B)?i(Q)("voice.required"):i(Q)("voice.optional"))),()=>(i(Q),q(()=>i(Q)("file.choose"))),()=>(i(Ae),i(Q),q(()=>i(Ae)?.name||i(Q)("file.none")))]),Te("change",Ht,La=>je(La.currentTarget.files?.[0]||null)),te(di,gi)};qe(Xt,di=>{(!i(P)||!i(vt))&&di(Le)})}var qi=R(Xt,2);{var Jt=di=>{var gi=JA(),na=E(gi);{var wa=Mi=>{var qa=YA(),Ht=At(qa),It=E(Ht,!0);F(Ht);var pt=R(Ht,2),yt=E(pt,!0);F(pt),ce((Lt,ui)=>{X(It,Lt),X(yt,ui)},[()=>(i(Q),q(()=>i(Q)("request.stopRecording"))),()=>(i(Q),q(()=>i(Q)("voice.recording")))]),Te("click",Ht,dh),te(Mi,qa)},Ni=Mi=>{var qa=XA(),Ht=At(qa),It=E(Ht);Jf(It,{size:14});var pt=R(It,1,!0);F(Ht);var yt=R(Ht,2),Lt=E(yt,!0);F(yt);var ui=R(yt,2);{var sa=Ia=>{var An=Ec(),La=E(An,!0);F(An),ce(()=>X(La,(i(Ae),q(()=>i(Ae).name)))),te(Ia,An)};qe(ui,Ia=>{i(Ae)&&Ia(sa)})}ce((Ia,An,La,Ua)=>{Ht.disabled=Ia,X(pt,An),yt.disabled=La,X(Lt,Ua)},[()=>(i(Li),i(Xa),q(()=>!!i(Li)||i(Xa))),()=>(i(Q),q(()=>i(Q)("request.recordMicrophone"))),()=>(i(vt),i(da),i(Ae),i(Ve),i(re),q(()=>!i(vt)&&!i(da)&&!i(Ae)&&!i(Ve)&&!i(re).trim())),()=>(i(Q),q(()=>i(Q)("voice.clearReference")))]),Te("click",Ht,()=>ch("voice")),Te("click",yt,ut),te(Mi,qa)};qe(na,Mi=>{i(tn)==="voice"?Mi(wa):Mi(Ni,-1)})}F(gi),te(di,gi)};qe(qi,di=>{(!i(P)||!i(vt))&&di(Jt)})}var ni=R(qi,2);{var ea=di=>{var gi=Rb(),na=At(gi);{let Mi=Pt(()=>(i(Q),q(()=>i(Q)("file.preview"))));Ln(na,{get file(){return i(Ae)},kind:"audio",get label(){return i(Mi)}})}var wa=R(na,2);{var Ni=Mi=>{var qa=ZA(),Ht=At(qa),It=E(Ht),pt=R(It),yt=E(pt,!0);F(pt),F(Ht);var Lt=R(Ht,2);Ka(Lt),ce((ui,sa,Ia)=>{X(It,`${ui??""} `),X(yt,sa),ye(Lt,"placeholder",Ia)},[()=>(i(Q),q(()=>i(Q)("voice.transcript"))),()=>(i(A),i(Q),q(()=>i(A)?i(Q)("voice.requiredClone"):i(Q)("voice.recommendedClone"))),()=>(i(Q),q(()=>i(Q)("voice.transcriptPlaceholder")))]),Fi(Lt,()=>i(re),ui=>M(re,ui)),te(Mi,qa)};qe(wa,Mi=>{i(z),q(()=>i(z).family!=="auk")&&Mi(Ni)})}te(di,gi)};qe(ni,di=>{(!i(P)||!i(vt))&&di(ea)})}F(st),ce((di,gi)=>{ye(st,"aria-label",di),X(Yt,gi)},[()=>(i(Q),q(()=>i(Q)("voice.reference"))),()=>(i(Q),q(()=>i(Q)("voice.reference")))]),te(Ze,st)};qe(jk,Ze=>{i(j),i(z),i($),i(f),q(()=>(i(j)||i(z).family==="kugelaudio")&&!i($)&&!i(f).voice)&&Ze(xE)})}var Pk=R(jk,2);{var SE=Ze=>{var st=aC(),dt=E(st),at=E(dt);pc(at,{size:17});var Yt=R(at),Wt=R(Yt),Rt=E(Wt,!0);F(Wt),F(dt);var Ot=R(dt,2);jt(Ot,4,()=>[0,1,2,3],ei,(qi,Jt)=>{var ni=tC(),ea=E(ni),di=E(ea,!0);F(ea);var gi=R(ea,2);Ga(gi,(Lt,ui)=>fi(ct,i(ct)[ui]=Lt),Lt=>i(ct)?.[Lt],()=>[Jt]);var na=R(gi,2),wa=E(na),Ni=E(wa,!0);F(wa);var Mi=R(wa,2),qa=E(Mi,!0);F(Mi),F(na);var Ht=R(na,2),It=E(Ht),pt=E(It,!0);F(It),F(Ht);var yt=R(Ht,2);{let Lt=Pt(()=>(i(Q),q(()=>i(Q)("file.preview"))));Ln(yt,{get file(){return i(He),q(()=>i(He)[Jt])},kind:"audio",get label(){return i(Lt)}})}F(ni),ce((Lt,ui,sa,Ia)=>{ye(ea,"for","vibevoice-speaker-"+Jt),X(di,Lt),ye(gi,"id","vibevoice-speaker-"+Jt),ye(na,"for","vibevoice-speaker-"+Jt),X(Ni,ui),X(qa,sa),It.disabled=(i(He),q(()=>!i(He)[Jt])),X(pt,Ia)},[()=>(i(Q),q(()=>i(Q)("voice.speaker",{number:Jt+1}))),()=>(i(Q),q(()=>i(Q)("file.choose"))),()=>(i(He),i(Q),q(()=>i(He)[Jt]?.name||i(Q)("file.none"))),()=>(i(Q),q(()=>i(Q)("file.clear")))]),Te("change",gi,Lt=>Xe(Jt,Lt.currentTarget.files?.[0]||null)),Te("click",It,()=>Ut(Jt)),te(qi,ni)}),F(Ot);var Xt=R(Ot,2);{var Le=qi=>{var Jt=iC(),ni=At(Jt),ea=E(ni,!0);F(ni);var di=R(ni,2);Ka(di),ce((gi,na)=>{X(ea,gi),ye(di,"placeholder",na)},[()=>(i(Q),q(()=>i(Q)("voice.transcript"))),()=>(i(Q),q(()=>i(Q)("voice.dialoguePlaceholder")))]),Fi(di,()=>i(re),gi=>M(re,gi)),te(qi,Jt)};qe(Xt,qi=>{i(z),q(()=>i(z).family==="moss_ttsd")&&qi(Le)})}F(st),ce((qi,Jt)=>{X(Yt,`${qi??""} `),X(Rt,Jt)},[()=>(i(Q),q(()=>i(Q)("voice.speakerReferences"))),()=>(i(Q),q(()=>i(Q)("voice.upToFour")))]),te(Ze,st)};qe(Pk,Ze=>{i($)&&Ze(SE)})}var Nk=R(Pk,2);{var TE=Ze=>{{let st=Pt(()=>(i(ge),i(z),q(()=>i(ge)?.ui_management===!0&&!ya(i(z))))),dt=Pt(()=>i(Ee)||i(_e));eT(Ze,{get specs(){return i(g)},get values(){return i(Re)},get editable(){return i(st)},get busy(){return i(dt)},onChange:qs,onBrowse:at=>Wi(i(dn),at)})}};qe(Nk,Ze=>{i(g),q(()=>i(g).length)&&Ze(TE)})}var Ok=R(Nk,2);{var $E=Ze=>{var st=cC(),dt=E(st),at=E(dt);N4(at,{size:16});var Yt=R(at),Wt=R(Yt),Rt=E(Wt,!0);F(Wt),F(dt);var Ot=R(dt,2);jt(Ot,5,()=>i(h),ei,(Xt,Le)=>{var qi=lC();let Jt;var ni=E(qi),ea=E(ni,!0);F(ni);var di=R(ni,2);{var gi=It=>{var pt=nC(),yt=E(pt);Dt(yt);var Lt=R(yt,3,!0);F(pt),ce((ui,sa)=>{ye(yt,"id",(i(Le),q(()=>"param-"+i(Le).name))),Sd(yt,ui),X(Lt,sa)},[()=>(i(Re),i(Le),q(()=>!!i(Re)[i(Le).name])),()=>(i(Re),i(Le),i(Q),q(()=>i(Re)[i(Le).name]?i(Q)("common.enabled"):i(Q)("common.disabled")))]),Te("change",yt,ui=>qs(i(Le),ui.currentTarget.checked)),te(It,pt)},na=It=>{var pt=sC();jt(pt,5,()=>(i(Le),q(()=>i(Le).choices||[])),ei,(Lt,ui)=>{var sa=Mc(),Ia=E(sa,!0);F(sa);var An={};ce(()=>{X(Ia,i(ui)),An!==(An=i(ui))&&(sa.value=(sa.__value=i(ui))??"")}),te(Lt,sa)}),F(pt);var yt;On(pt),ce(Lt=>{ye(pt,"id",(i(Le),q(()=>"param-"+i(Le).name))),yt!==(yt=Lt)&&(pt.value=(pt.__value=Lt)??"",kn(pt,Lt))},[()=>(i(Re),i(Le),q(()=>String(i(Re)[i(Le).name]??"")))]),Te("change",pt,Lt=>qs(i(Le),Lt.currentTarget.value)),te(It,pt)},wa=It=>{var pt=rC(),yt=E(pt);Dt(yt);var Lt=R(yt,2),ui=E(Lt,!0);F(Lt),F(pt),ce((sa,Ia)=>{ye(yt,"id",(i(Le),q(()=>"param-"+i(Le).name))),ye(yt,"min",(i(Le),q(()=>i(Le).minimum))),ye(yt,"max",(i(Le),q(()=>i(Le).maximum))),ye(yt,"step",(i(Le),q(()=>i(Le).step))),Ki(yt,sa),X(ui,Ia)},[()=>(i(Re),i(Le),q(()=>Number(i(Re)[i(Le).name]??i(Le).default))),()=>(i(Re),i(Le),q(()=>String(i(Re)[i(Le).name])))]),Te("input",yt,sa=>qs(i(Le),sa.currentTarget.valueAsNumber)),te(It,pt)},Ni=It=>{var pt=oC();Dt(pt),ce((yt,Lt)=>{ye(pt,"id",(i(Le),q(()=>"param-"+i(Le).name))),ye(pt,"type",(i(Le),q(()=>i(Le).type==="number"?"number":"text"))),ye(pt,"min",(i(Le),q(()=>i(Le).minimum))),ye(pt,"max",(i(Le),q(()=>i(Le).maximum))),ye(pt,"step",(i(Le),q(()=>i(Le).step))),Ki(pt,yt),ye(pt,"placeholder",Lt)},[()=>(i(Re),i(Le),q(()=>String(i(Re)[i(Le).name]??""))),()=>(i(Le),i(Q),q(()=>Yr(i(Le),"placeholder",i(Q))))]),Te("input",pt,yt=>qs(i(Le),i(Le).type==="number"?yt.currentTarget.valueAsNumber:yt.currentTarget.value)),te(It,pt)};qe(di,It=>{i(Le),q(()=>i(Le).type==="bool")?It(gi):(i(Le),q(()=>i(Le).type==="choice")?It(na,1):(i(Le),q(()=>i(Le).type==="slider")?It(wa,2):It(Ni,-1)))})}var Mi=R(di,2);{var qa=It=>{var pt=Bb(),yt=E(pt,!0);F(pt),ce(Lt=>X(yt,Lt),[()=>(i(Le),i(Q),q(()=>Yr(i(Le),"info",i(Q))))]),te(It,pt)},Ht=wi(()=>(i(Le),i(Q),q(()=>Yr(i(Le),"info",i(Q)))));qe(Mi,It=>{i(Ht)&&It(qa)})}F(qi),ce(It=>{Jt=Gi(qi,1,"",null,Jt,{wide:i(Le).type==="text"}),ye(ni,"for",(i(Le),q(()=>"param-"+i(Le).name))),X(ea,It)},[()=>(i(Le),i(Q),q(()=>Yr(i(Le),"label",i(Q))))]),te(Xt,qi)}),F(Ot),F(st),ce(Xt=>{X(Yt,`${Xt??""} `),X(Rt,(i(h),q(()=>i(h).length)))},[()=>(i(Q),q(()=>i(Q)("options.modelParameters")))]),te(Ze,st)};qe(Ok,Ze=>{i(h),i(f),q(()=>i(h).length&&!i(f).params)&&Ze($E)})}var Ik=R(Ok,2);{var qE=Ze=>{var st=dC(),dt=E(st),at=E(dt);w4(at,{size:16});var Yt=R(at);ja(),F(dt);var Wt=R(dt,2);Ka(Wt),F(st),ce(Rt=>X(Yt,`${Rt??""} `),[()=>(i(Q),q(()=>i(Q)("options.additional")))]),Fi(Wt,()=>i(nt),Rt=>M(nt,Rt)),te(Ze,st)};qe(Ik,Ze=>{i(f),q(()=>!i(f).advancedJson)&&Ze(qE)})}var Lk=R(Ik,2),Pl=E(Lk),Dk=E(Pl);E4(Dk,{size:15});var Vk=R(Dk),GE=E(Vk,!0);F(Vk),ja(2),F(Pl);var td=R(Pl,2),Hk=E(td);A1(Hk,{size:14});var FE=R(Hk,1,!0);F(td);var qh=R(td,2);let Wk;var Qk=E(qh);{var AE=Ze=>{var st=uC(),dt=E(st);F(st),ce((at,Yt)=>{ye(st,"aria-label",at),X(dt,`${Yt??""} s ·`)},[()=>(i(Q),q(()=>i(Q)("run.elapsed"))),()=>(i(bn),q(()=>i(bn).toFixed(1)))]),te(Ze,st)};qe(Qk,Ze=>{i(Ee)&&Ze(AE)})}var CE=R(Qk);F(qh),F(Lk),ce((Ze,st,dt,at,Yt,Wt)=>{X(Pi,Ze),X(zi,st),X(en,(i(z),q(()=>i(z)?.task))),Pl.disabled=!i(W)||i(Ee)||i(Se)||i(Bi)||i(c)||!i(l)&&i(ie)===!1,ye(Pl,"title",dt),X(GE,at),td.disabled=!i(Ee),X(FE,Yt),Wk=Gi(qh,1,"status",null,Wk,{busy:i(Ee),warning:!i(Ee)&&i(pe)===i(De),error:!i(Ee)&&i(pe)===i(et)}),X(CE,` ${Wt??""}`)},[()=>(i(Q),q(()=>i(Q)("request.label"))),()=>(i(Q),q(()=>i(Q)("request.title"))),()=>(i(W),i(Q),i(l),i(ie),q(()=>i(W)?!i(l)&&i(ie)===!1?i(Q)("run.installModel"):"":i(Q)("run.chooseModel"))),()=>(i(Ee),i(Q),q(()=>i(Ee)?i(Q)("run.working"):i(Q)("run.run"))),()=>(i(Q),q(()=>i(Q)("run.cancel"))),()=>(i(pe),i(Q),q(()=>ns(i(pe),i(Q))))]),Te("change",pi,Ze=>TM(Ze.currentTarget.files?.[0]||null)),Te("click",Pl,uk),Te("click",td,MM),te(ht,ot)},yh=ht=>{var ot=mC(),Et=At(ot),mt=E(Et),Bt=E(mt),Pi=E(Bt,!0);F(Bt);var $i=R(Bt),zi=E($i,!0);F($i),F(mt),F(Et);var Ui=R(Et,2),Di=E(Ui),en=E(Di,!0);F(Di),F(Ui),ce((Fn,pn,pi)=>{X(Pi,Fn),X(zi,pn),X(en,pi)},[()=>(i(Q),q(()=>i(Q)("request.label"))),()=>(i(Q),q(()=>i(Q)("studio.noModel"))),()=>(i(Q),q(()=>i(Q)("studio.chooseInstalled")))]),te(ht,ot)};qe(Yc,ht=>{i(W)?ht(bh):ht(yh,-1)})}F(Vo);var Gu=R(Vo,2),Xc=E(Gu),Jc=E(Xc),wh=E(Jc),iE=E(wh,!0);F(wh);var qk=R(wh),aE=E(qk,!0);F(qk),F(Jc);var Gk=R(Jc,2);{var nE=ht=>{var ot=pC(),Et=E(ot,!0);F(ot),ce(mt=>{ye(ot,"href",(i(Mt),q(()=>i(Mt).url))),ye(ot,"download",(i(Mt),q(()=>i(Mt).filename))),X(Et,mt)},[()=>(i(Q),q(()=>i(Q)("settings.save")))]),te(ht,ot)};qe(Gk,ht=>{i(Mt)&&ht(nE)})}var sE=R(Gk,2);{var rE=ht=>{var ot=gC(),Et=E(ot);F(ot),ce(mt=>X(Et,`${i(rt),q(()=>i(rt).length)??""} ${mt??""}`),[()=>(i(rt),i(Q),q(()=>i(rt).length===1?i(Q)("result.track"):i(Q)("result.tracks")))]),te(ht,ot)};qe(sE,ht=>{i(rt),q(()=>i(rt).length)&&ht(rE)})}F(Xc);var Fk=R(Xc,2);{var oE=ht=>{var ot=jb();jt(ot,5,()=>i(rt),ei,(Et,mt)=>{var Bt=hC(),Pi=E(Bt),$i=E(Pi),zi=E($i,!0);F($i);var Ui=R($i),Di=E(Ui,!0);F(Ui),F(Pi);var en=R(Pi,2);F(Bt),ce(Fn=>{X(zi,(i(mt),q(()=>i(mt).id))),ye(Ui,"href",(i(mt),q(()=>i(mt).url))),ye(Ui,"download",(i(Sa),i(Ti),i(mt),q(()=>`${i(Sa)}-${i(Ti)||"output"}-${i(mt).id}.wav`))),X(Di,Fn),ye(en,"src",(i(mt),q(()=>i(mt).url)))},[()=>(i(Q),q(()=>i(Q)("result.saveWav")))]),te(Et,Bt)}),F(ot),te(ht,ot)};qe(Fk,ht=>{i(rt),q(()=>i(rt).length)&&ht(oE)})}var Ak=R(Fk,2);{var lE=ht=>{var ot=jb();jt(ot,5,()=>i(Tt),ei,(Et,mt)=>{var Bt=_C(),Pi=E(Bt),$i=E(Pi),zi=E($i,!0);F($i);var Ui=R($i),Di=E(Ui,!0);F(Ui),F(Pi);var en=R(Pi,2);{var Fn=pi=>{{let os=Pt(()=>(i(z),i(mt),q(()=>`${i(z).id}-${i(mt).id}.${i(mt).extension}`))),Rl=Pt(()=>(i(Q),q(()=>i(Q)("result.videoPreview"))));Ln(pi,{get src(){return i(mt),q(()=>i(mt).url)},get name(){return i(os)},kind:"video",get label(){return i(Rl)}})}},pn=wi(()=>(i(mt),q(()=>i(mt).mime.startsWith("video/"))));qe(en,pi=>{i(pn)&&pi(Fn)})}F(Bt),ce(pi=>{X(zi,(i(mt),q(()=>i(mt).id))),ye(Ui,"href",(i(mt),q(()=>i(mt).url))),ye(Ui,"download",(i(Sa),i(Ti),i(mt),q(()=>`${i(Sa)}-${i(Ti)||"output"}-${i(mt).id}.${i(mt).extension}`))),X(Di,pi)},[()=>(i(Q),i(mt),q(()=>i(Q)("result.saveArtifact",{format:i(mt).extension.toUpperCase()})))]),te(Et,Bt)}),F(ot),te(ht,ot)};qe(Ak,ht=>{i(Tt),q(()=>i(Tt).length)&&ht(lE)})}var Ck=R(Ak,2);{var cE=ht=>{var ot=vC(),Et=R(E(ot)),mt=E(Et,!0);F(Et),F(ot),ce(Bt=>X(mt,Bt),[()=>(i(Q),q(()=>i(Q)("result.empty")))]),te(ht,ot)};qe(Ck,ht=>{i(rt),i(Tt),q(()=>!i(rt).length&&!i(Tt).length)&&ht(cE)})}var Mk=R(Ck,2);{var dE=ht=>{var ot=bC();Ka(ot),ce(()=>Ki(ot,i(Ft))),te(ht,ot)};qe(Mk,ht=>{i(Ft)&&ht(dE)})}var Ek=R(Mk,2);{var uE=ht=>{var ot=yC(),Et=R(E(ot)),mt=E(Et,!0);F(Et),F(ot),ce(()=>X(mt,i(Qt))),te(ht,ot)};qe(Ek,ht=>{i(Qt)&&ht(uE)})}var fE=R(Ek,2);{var mE=ht=>{var ot=xC(),Et=E(ot),mt=E(Et),Bt=R(mt),Pi=E(Bt);F(Bt),F(Et);var $i=R(Et,2);{var zi=pn=>{var pi=wC(),os=E(pi,!0);F(pi),ce(()=>X(os,i(Si))),te(pn,pi)};qe($i,pn=>{i(Si)&&pn(zi)})}var Ui=R($i,2),Di=E(Ui),en=E(Di,!0);F(Di),F(Ui);var Fn=R(Ui,2);jt(Fn,5,()=>i(zt),pn=>pn.id,(pn,pi)=>{var os=kC();let Rl;var Ar=E(os),Zc=E(Ar),kh=E(Zc,!0);F(Zc);var ed=R(Zc,2),Fu=E(ed),xh=R(Fu);{var Sh=lo=>{var jl=E_();ce(Ho=>X(jl,`· ${Ho??""} ${i(pi),q(()=>i(pi).seed)??""}`),[()=>(i(Q),q(()=>i(Q)("request.seed")))]),te(lo,jl)},Au=wi(()=>(i(pi),q(()=>["gen","tts","clon","vdes"].includes(i(pi).task))));qe(xh,lo=>{i(Au)&&lo(Sh)})}F(ed),F(Ar);var oo=R(Ar,2),Th=E(oo,!0);F(oo),F(os),ce((lo,jl,Ho,Cu,$h)=>{Rl=Gi(os,1,"",null,Rl,{active:i(Ti)===i(pi).id}),ye(Ar,"aria-pressed",(i(Ti),i(pi),q(()=>i(Ti)===i(pi).id))),Ar.disabled=i(Bi),X(kh,(i(pi),q(()=>i(pi).label))),X(Fu,`${lo??""} · ${jl??""}`),ye(oo,"title",Ho),oo.disabled=i(Bi),ye(oo,"aria-label",Cu),X(Th,$h)},[()=>(i(pi),q(()=>new Date(i(pi).createdAt).toLocaleTimeString())),()=>(i(pi),q(()=>rr(i(pi).task))),()=>(i(Q),i(pi),q(()=>i(Q)("history.deleteRun",{id:i(pi).id}))),()=>(i(Q),i(pi),q(()=>i(Q)("history.deleteRun",{id:i(pi).id}))),()=>(i(Q),q(()=>i(Q)("common.delete")))]),Te("click",Ar,()=>Bl(i(pi),!0)),Te("click",oo,()=>lh(i(pi).id)),te(pn,os)}),F(Fn),F(ot),ce((pn,pi)=>{X(mt,`${pn??""} `),X(Pi,`${i(zt),q(()=>i(zt).length)??""}/${a(),q(()=>a().historyLimit)??""}`),Di.disabled=i(Bi),X(en,pi)},[()=>(i(Q),q(()=>i(Q)("history.title"))),()=>(i(Q),q(()=>i(Q)("history.clear")))]),Te("click",Di,SM),te(ht,ot)};qe(fE,ht=>{i(zt),q(()=>i(zt).length)&&ht(mE)})}F(Gu),F(ur),ce((ht,ot,Et,mt,Bt,Pi,$i,zi,Ui,Di,en,Fn)=>{ye(J,"aria-label",ht),X(ft,ot),X(Kt,Et),X(sn,mt),Qi=Gi(bt,1,"studio-model-status",null,Qi,{ready:i(l)}),X(Vs,Bt),ye(Gs,"aria-label",Pi),X(za,$i),Zi.disabled=i(S)||i(Bi),X(ss,zi),Lo=Gi(rs,1,"",null,Lo,{good:i(ie)===!0,bad:i(ie)===!1}),X(Fr,Ui),X(so,Di),X(iE,en),X(aE,Fn)},[()=>(i(Q),q(()=>i(Q)("nav.workflows"))),()=>(i(Q),q(()=>i(Q)("studio.eyebrow"))),()=>(i(W),i(z),i(Q),q(()=>i(W)?rr(i(z)?.task,i(Q),i(z)):i(Q)("studio.title"))),()=>(i(Q),i(Ja),q(()=>i(Q)(`studio.subtitle.${i(Ja)==="conversion"?"vc":i(Ja)==="separation"?"sep":i(Ja)}`))),()=>(i(W),i(l),i(Q),i(ie),q(()=>i(W)?i(l)?i(Q)("studio.resident"):i(ie)===!1?i(Q)("studio.notInstalled"):i(Q)("studio.available"):i(Q)("studio.chooseInstalled"))),()=>(i(Q),q(()=>i(Q)("studio.model"))),()=>(i(Q),q(()=>i(Q)("studio.model"))),()=>(i(Q),q(()=>i(Q)("studio.noModel"))),()=>(i(W),i(Q),i(ie),q(()=>i(W)?i(ie)===!0?i(Q)("studio.pathFound"):i(ie)===!1?i(Q)("studio.pathMissing"):i(Q)("studio.pathUnknown"):i(Q)("studio.noModel"))),()=>(i(W),i(Q),i(z),q(()=>i(W)?i(Q)("studio.estimatedVram",{value:i(z)?.min_vram_gb||"?"}):i(Q)("studio.vram"))),()=>(i(Q),q(()=>i(Q)("result.label"))),()=>(i(Q),q(()=>i(Q)("result.title")))]),wo(Zi,()=>i(W),ht=>M(W,ht)),Te("change",Zi,ht=>to(ht.currentTarget.value)),te(N,K)},KM=N=>{Ga(UF(N,{get activeCatalog(){return i(Ma)},get loadedModels(){return i(ae)},get savedVoices(){return i(Ca)},get server(){return i(ge)},get modelsFolder(){return i(dn)},get maxTokens(){return i(me)},entrySelectable:yi,studioPackageSlots:Nc,packageIsAvailable:eo,packageSessionOptionsMatch:Pc,supportsMaxTokens:bi,supportsRequestOption:Za,requiresRequestOption:un,refresh:mn,log:vi,get tr(){return i(Q)},$$legacy:!0}),K=>M(ee,K),()=>i(ee))},YM=N=>{{let K=Pt(()=>(i(Q),q(()=>or.map(J=>({id:J.id,label:Wn(J.id,J.filterLabel,i(Q))})))));oA(N,{get groups(){return i(jc)},get packageSizes(){return i(gt)},get installJobs(){return i(Ai)},get packageSizeState(){return i(Xi)},get modelsFolder(){return i(dn)},get modelsFolderHistory(){return i(as)},get defaultModelsFolder(){return i($r)},get applyingModelsFolder(){return i(ia)},get modelsFolderIsDefault(){return i(Os)},openFolderBrowser:Wi,applyModelsFolder:nh,installPackage:zM,removePackage:RM,stopPackageDownload:UM,cleanPartialDownload:BM,formatBytes:zo,installProgressLabel:la,workflowForEntry:Hi,taskLabel:J=>rr(J.task,i(Q),J),get workflows(){return i(K)},openModel:(J,ve)=>{ve&&Po(J,ve),to(J.id),M(H,"studio")},get modelsFolderInput(){return i(Ts)},set modelsFolderInput(J){M(Ts,J)},$$legacy:!0})}},XM=N=>{Ga(bA(N,{onchange:async()=>{await xu(),i(da)&&!i(Ca).some(K=>K.id===i(da))&&M(da,"")},ontext:async K=>{await xu(),zl("tts"),lk(K.id),M(H,"studio")},$$legacy:!0}),K=>M(Y,K),()=>i(Y))},JM=N=>{OF(N,{get tr(){return i(Q)}})},ZM=N=>{var K=TC(),J=At(K),ve=E(J),Me=E(ve,!0);F(ve);var Ye=R(ve),ft=E(Ye,!0);F(Ye);var Zt=R(Ye),Kt=E(Zt,!0);F(Zt),F(J);var ma=R(J,2),sn=E(ma),bt=E(sn),Qi=E(bt),Vs=E(Qi,!0);F(Qi);var ur=R(Qi),Gs=E(ur,!0);F(ur),F(bt);var Rn=R(bt,2),ai=E(Rn),za=E(ai,!0);F(ai);var Zi=R(ai),li=E(Zi,!0);F(Zi),F(Rn);var ss=R(Rn,2),jn=E(ss),qn=E(jn,!0);F(jn);var rs=R(jn),Lo=E(rs,!0);F(rs),F(ss);var Fr=R(ss,2),no=E(Fr),so=E(no,!0);F(no);var ro=R(no),$a=E(ro,!0);F(ro),F(Fr),F(sn);var aa=R(sn,2),Pn=E(aa,!0);F(aa);var rn=R(aa,2),Gn=E(rn,!0);F(rn),F(ma),ce((Fs,Do,Kc,Vo,Yc,bh,yh,Gu,Xc,Jc)=>{X(Me,Fs),X(ft,Do),X(Kt,Kc),X(Vs,Vo),X(Gs,(i(ge),q(()=>i(ge)?.status||"offline"))),X(za,Yc),X(li,(i(ge),q(()=>i(ge)?.backend||"—"))),X(qn,bh),X(Lo,(i(ae),q(()=>i(ae).length))),X(so,yh),X($a,Gu),X(Pn,Xc),X(Gn,Jc)},[()=>(i(Q),q(()=>i(Q)("runtime.eyebrow"))),()=>(i(Q),q(()=>i(Q)("runtime.title"))),()=>(i(Q),q(()=>i(Q)("runtime.subtitle"))),()=>(i(Q),q(()=>i(Q)("runtime.status"))),()=>(i(Q),q(()=>i(Q)("runtime.backend"))),()=>(i(Q),q(()=>i(Q)("runtime.registered"))),()=>(i(Q),q(()=>i(Q)("runtime.resident"))),()=>(i(ae),q(()=>i(ae).filter(Fs=>Fs.loaded).length)),()=>(i(Q),q(()=>i(Q)("runtime.serverLogNotice"))),()=>(i(_a),i(Q),q(()=>i(_a).length?i(_a).join(` +`):i(Q)("runtime.noEvents")))]),te(N,K)};qe(WM,N=>{i(H)==="studio"?N(QM):i(H)==="arena"?N(KM,1):i(H)==="models"?N(YM,2):i(H)==="voices"?N(XM,3):i(H)==="configuration"?N(JM,4):N(ZM,-1)})}F(vh);var Sk=R(vh,2);{var eE=N=>{var K=AC(),J=E(K),ve=E(J),Me=E(ve),Ye=E(Me),ft=E(Ye,!0);F(Ye);var Zt=R(Ye),Kt=E(Zt,!0);F(Zt),F(Me);var ma=R(Me,2),sn=E(ma,!0);F(ma),F(ve);var bt=R(ve,2),Qi=E(bt,!0);F(bt);var Vs=R(bt,2);{var ur=$a=>{var aa=$C();jt(aa,5,()=>(i(de),q(()=>i(de).roots)),ei,(Pn,rn)=>{var Gn=fu(),Fs=E(Gn,!0);F(Gn),ce(()=>X(Fs,i(rn))),Te("click",Gn,()=>Wi(i(rn),i(Ke))),te(Pn,Gn)}),F(aa),te($a,aa)};qe(Vs,$a=>{i(de),q(()=>i(de)?.roots.length)&&$a(ur)})}var Gs=R(Vs,2),Rn=E(Gs),ai=E(Rn,!0);F(Rn);var za=R(Rn,2),Zi=E(za,!0);F(za),F(Gs);var li=R(Gs,2);{var ss=$a=>{var aa=qC(),Pn=E(aa,!0);F(aa),ce(()=>X(Pn,i(Ne))),te($a,aa)},jn=$a=>{var aa=Pb(),Pn=E(aa,!0);F(aa),ce(rn=>X(Pn,rn),[()=>(i(Q),q(()=>i(Q)("folder.loadingFolders")))]),te($a,aa)},qn=$a=>{var aa=FC();jt(aa,5,()=>(i(de),q(()=>i(de).directories)),ei,(Pn,rn)=>{var Gn=GC(),Fs=R(E(Gn)),Do=E(Fs,!0);F(Fs),F(Gn),ce(()=>{ye(Gn,"title",(i(rn),q(()=>i(rn).path))),X(Do,(i(rn),q(()=>i(rn).name)))}),Te("click",Gn,()=>Wi(i(rn).path,i(Ke))),te(Pn,Gn)}),F(aa),te($a,aa)},rs=$a=>{var aa=Pb(),Pn=E(aa,!0);F(aa),ce(rn=>X(Pn,rn),[()=>(i(Q),q(()=>i(Q)("folder.empty")))]),te($a,aa)};qe(li,$a=>{i(Ne)?$a(ss):i(ua)?$a(jn,1):(i(de),q(()=>i(de)?.directories.length)?$a(qn,2):$a(rs,-1))})}var Lo=R(li,2),Fr=E(Lo),no=E(Fr,!0);F(Fr);var so=R(Fr,2),ro=E(so,!0);F(so),F(Lo),F(J),F(K),ce(($a,aa,Pn,rn,Gn,Fs,Do,Kc,Vo,Yc)=>{X(ft,$a),X(Kt,aa),ye(ma,"aria-label",Pn),ye(ma,"title",rn),X(sn,Gn),X(Qi,Fs),Rn.disabled=(i(de),i(ua),q(()=>!i(de)?.parent||i(ua))),X(ai,Do),za.disabled=i(ua),X(Zi,Kc),X(no,Vo),so.disabled=!i(de)||i(ua),X(ro,Yc)},[()=>(i(Q),q(()=>i(Q)("folder.eyebrow"))),()=>(i(Ke),i(Q),q(()=>i(Ke)?"Select LoRA adapter directory":i(Q)("folder.title"))),()=>(i(Q),q(()=>i(Q)("folder.closeLabel"))),()=>(i(Q),q(()=>i(Q)("common.close"))),()=>(i(Q),q(()=>i(Q)("common.close"))),()=>(i(de),i(Q),q(()=>i(de)?.current||i(Q)("folder.loading"))),()=>(i(Q),q(()=>i(Q)("folder.up"))),()=>(i(Q),q(()=>i(Q)("common.refresh"))),()=>(i(Q),q(()=>i(Q)("common.cancel"))),()=>(i(Ke),i(Q),q(()=>i(Ke)?"Use adapter folder":i(Q)("folder.select")))]),Te("click",ma,()=>M(Ci,!1)),Te("click",Rn,()=>Wi(i(de)?.parent||"",i(Ke))),Te("click",za,()=>Wi(i(de)?.current||"",i(Ke))),Te("click",Fr,()=>M(Ci,!1)),Te("click",so,Ea),te(N,K)};qe(Sk,N=>{i(Ci)&&N(eE)})}var Tk=R(Sk,2),$k=R(E(Tk)),tE=E($k,!0);F($k),F(Tk),ce((N,K,J,ve,Me,Ye,ft,Zt,Kt,ma,sn,bt)=>{X(jM,N),ye($u,"aria-label",K),gk=Gi(Vc,1,"",null,gk,{active:i(H)==="studio"}),X(PM,J),hk=Gi(Hc,1,"",null,hk,{active:i(H)==="arena"}),X(NM,ve),qu.disabled=Me,_k=Gi(qu,1,"",null,_k,{active:i(H)==="voices"}),bk=Gi(Wc,1,"",null,bk,{active:i(H)==="logs"}),X(IM,Ye),Qc.disabled=i(Bi),yk=Gi(Qc,1,"",null,yk,{active:i(H)==="configuration"}),X(LM,ft),X(DM,Zt),ye(io,"aria-label",Kt),wk!==(wk=i(Nt))&&(io.value=(io.__value=i(Nt))??"",kn(io,i(Nt))),X(VM,ma),ye(ao,"aria-label",sn),kk!==(kk=i(kt))&&(ao.value=(ao.__value=i(kt))??"",kn(ao,i(kt))),xk=Gi(_h,1,"server-pill",null,xk,{online:i(ge)?.status==="ok"}),X(HM,(i(ge),q(()=>i(ge)?.backend||"offline"))),X(tE,bt)},[()=>(i(Q),q(()=>i(Q)("app.nativeStudio"))),()=>(i(Q),q(()=>i(Q)("nav.primary"))),()=>(i(Q),q(()=>i(Q)("nav.studio"))),()=>(i(Q),q(()=>i(Q)("nav.arena"))),()=>(i(Ee),i(Bi),i(Li),i(Xa),q(()=>i(Ee)||i(Bi)||!!i(Li)||i(Xa))),()=>(i(Q),q(()=>i(Q)("nav.runtime"))),()=>(i(Q),q(()=>i(Q)("nav.configuration"))),()=>(i(Q),q(()=>i(Q)("language.label"))),()=>(i(Q),q(()=>i(Q)("language.label"))),()=>(i(Q),q(()=>i(Q)("theme.label"))),()=>(i(Q),q(()=>i(Q)("theme.label"))),()=>(i(Q),q(()=>i(Q)("footer.embedded")))]),Te("click",Vc,ah),Te("click",Hc,()=>Tu("arena")),Te("click",qu,()=>Tu("voices")),Te("click",Wc,()=>Tu("logs")),Te("click",Qc,()=>Tu("configuration")),Te("change",io,N=>sr(N.currentTarget.value)),Te("change",ao,N=>fa(N.currentTarget.value)),te(t,fk),Qa(),s()}const EC=Object.freeze(Object.defineProperty({__proto__:null,component:MC},Symbol.toStringTag,{value:"Module"})),zC=Object.freeze(Object.defineProperty({__proto__:null,default:({status:t,message:e})=>` @@ -136,46 +136,46 @@

            `+e+`

            -`},Symbol.toStringTag,{value:"Module"}));function SC(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Km,Rb;function TC(){if(Rb)return Km;Rb=1;var t="6.7.0";return Km=t,Km}var Ym,jb;function Xm(){if(jb)return Ym;jb=1;var t=function(a,n){var s=this;n||(n={}),s.qpm=n.qpm?parseInt(n.qpm,10):null,s.extraMeasuresAtBeginning=n.extraMeasuresAtBeginning?parseInt(n.extraMeasuresAtBeginning,10):0,s.beatCallback=n.beatCallback,s.eventCallback=n.eventCallback,s.lineEndCallback=n.lineEndCallback,s.lineEndAnticipation=n.lineEndAnticipation?parseInt(n.lineEndAnticipation,10):0,s.beatSubdivisions=n.beatSubdivisions?parseInt(n.beatSubdivisions,10):1,s.beatSubdivisions||(s.beatSubdivisions=1),s.joggerTimer=null,s.replaceTarget=function(o){if(!n.qpm){var l=o.metaText?o.metaText.tempo:null;s.qpm=o.getBpm(l)}if(s.noteTimings=o.setTiming(s.qpm,s.extraMeasuresAtBeginning),o.noteTimings.length===0&&(s.noteTimings=o.setTiming(0,0)),s.lineEndCallback&&(s.lineEndTimings=e(o.noteTimings,s.lineEndAnticipation)),s.startTime=null,s.currentBeat=0,s.currentEvent=0,s.currentLine=0,s.currentTime=0,s.isPaused=!1,s.isRunning=!1,s.pausedPercent=null,s.justUnpaused=!1,s.newSeekPercent=0,s.lastTimestamp=0,s.noteTimings.length!==0){s.millisecondsPerBeat=1e3/(s.qpm/60)/s.beatSubdivisions,s.lastMoment=s.noteTimings[s.noteTimings.length-1].milliseconds;var u=o.getMeter(),p="";if(u&&u.type==="specified"&&u.value&&u.value.length>0&&u.value[0].num.indexOf("+")>0&&(p=u.value[0].num),s.beatStarts=[],p){for(var g=s.noteTimings[s.noteTimings.length-1].millisecondsPerMeasure,h=s.lastMoment/g,m=p.split("+"),f=0;fs.currentEvent&&s.noteTimings[s.currentEvent].millisecondss.currentLine&&s.lineEndTimings[s.currentLine].milliseconds=s.lastMoment)if(s.eventCallback){var h=s.eventCallback(null);s.shouldStop(h).then(function(m){m&&s.stop()})}else s.stop()}},s.shouldStop=function(o){return new Promise(function(l){if(!o)return l(!0);if(o==="continue")return l(!1);o.then&&o.then(function(u){l(u!=="continue")})})},s.doBeatCallback=function(o){if(s.beatCallback){for(var l=s.currentEvent;l=0&&s.noteTimings[l].left===null;)l--;p=s.noteTimings[l]}var g={},h={};if(p){g.top=p.top,g.height=p.height;var m=Math.max(0,o-s.startTime-p.milliseconds),f=u-p.milliseconds,d=p.endX-p.left,c=f?m*d/f:0;g.left=p.left+c,s.currentEvent===0&&p.milliseconds>o-s.startTime&&(g.left=void 0),h={timestamp:o,startTime:s.startTime,ev:p,endMs:u,offMs:m,offPx:c,gapMs:f,gapPx:d}}else h={timestamp:o,startTime:s.startTime};if(s.currentBeat<0||s.currentBeat>=s.beatStarts.length||!s.beatStarts[s.currentBeat]){var _={currentBeat:s.currentBeat,beatStartLength:s.beatStarts.length,totalBeats:s.totalBeats,startTime:s.startTime,currentTime:s.currentTime,lastMoment:s.lastMoment,lastTimestamp:s.lastTimestamp,qpm:s.qpm,millisecondsPerBeat:s.millisecondsPerBeat,beatSubdivisions:s.beatSubdivisions,currentEvent:s.currentEvent,currentLine:s.currentLine,isPaused:s.isPaused,isRunning:s.isRunning,pausedPercent:s.pausedPercent,justUnpaused:s.justUnpaused,newSeekPercent:s.newSeekPercent};setTimeout(function(){throw new Error("abcjs-timing-callback error: "+JSON.stringify(_))},1)}else{var b=s.startTime;if(s.beatCallback(s.beatStarts[s.currentBeat].b,s.totalBeats/s.beatSubdivisions,s.lastMoment,g,h),b!==s.startTime)return o-s.startTime}}return null};var r=60;s.animationJogger=function(){s.isRunning&&(s.doTiming(performance.now()),s.joggerTimer=setTimeout(s.animationJogger,r))},s.start=function(o,l){if(s.isRunning=!0,s.isPaused&&(s.isPaused=!1,o===void 0&&(s.justUnpaused=!0)),o)s.setProgress(o,l);else if(o===0)s.reset();else if(s.pausedPercent!==null){var u=performance.now();s.currentTime=s.lastMoment*s.pausedPercent,s.startTime=u-s.currentTime,s.pausedPercent=null,s.reportNext=!0}requestAnimationFrame(s.doTiming),s.joggerTimer=setTimeout(s.animationJogger,r)},s.pause=function(){s.isPaused=!0;var o=performance.now();s.pausedPercent=(o-s.startTime)/s.lastMoment,s.isRunning=!1,s.joggerTimer&&(clearTimeout(s.joggerTimer),s.joggerTimer=null)},s.currentMillisecond=function(){return s.currentTime},s.reset=function(){s.currentBeat=0,s.currentEvent=0,s.currentLine=0,s.startTime=null,s.pausedPercent=null},s.stop=function(){s.pause(),s.reset()},s.setProgress=function(o,l){var u;switch(l){case"seconds":s.currentTime=o*1e3,s.currentTime<0&&(s.currentTime=0),s.currentTime>s.lastMoment&&(s.currentTime=s.lastMoment),u=s.currentTime/s.lastMoment;break;case"beats":s.currentTime=o*s.millisecondsPerBeat*s.beatSubdivisions,s.currentTime<0&&(s.currentTime=0),s.currentTime>s.lastMoment&&(s.currentTime=s.lastMoment),u=s.currentTime/s.lastMoment;break;default:u=o,u<0&&(u=0),u>1&&(u=1),s.currentTime=s.lastMoment*u;break}s.isRunning||(s.pausedPercent=u);var p=performance.now();for(s.startTime=p-s.currentTime,s.currentEvent=0;s.noteTimings.length>s.currentEvent&&s.noteTimings[s.currentEvent].millisecondss.currentLine&&s.lineEndTimings[s.currentLine].milliseconds+s.lineEndAnticipations.currentTime);s.currentBeat++);s.currentBeat--,s.beatCallback&&g!==s.currentBeat&&(s.doBeatCallback(s.startTime+s.currentTime),s.currentBeat++),s.eventCallback&&s.currentEvent>=0&&s.noteTimings[s.currentEvent].type==="event"&&s.eventCallback(s.noteTimings[s.currentEvent]),s.lineEndCallback&&s.lineEndCallback(s.lineEndTimings[s.currentLine],s.noteTimings[s.currentEvent],{line:s.currentLine,endTimings:s.lineEndTimings}),s.joggerTimer=setTimeout(s.animationJogger,r)}};function e(a,n){for(var s=[],r=null,o=0;o=0&&e.lastIndexOf(a)===n},t.last=function(e){return e.length===0?null:e[e.length-1]},Zm=t,Zm}var ep,Ob;function tp(){if(Ob)return ep;Ob=1;var t=Xs(),e={};return(function(){var a,n,s,r,o;e.initialize=function(k,S,F,H,Q){a=k,n=S,s=F,r=H,o=Q,l()};function l(){s.annotationfont={face:"Helvetica",size:12,weight:"normal",style:"normal",decoration:"none"},s.gchordfont={face:"Helvetica",size:12,weight:"normal",style:"normal",decoration:"none"},s.historyfont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},s.infofont={face:'"Times New Roman"',size:14,weight:"normal",style:"italic",decoration:"none"},s.measurefont={face:'"Times New Roman"',size:14,weight:"normal",style:"italic",decoration:"none"},s.partsfont={face:'"Times New Roman"',size:15,weight:"normal",style:"normal",decoration:"none"},s.repeatfont={face:'"Times New Roman"',size:13,weight:"normal",style:"normal",decoration:"none"},s.textfont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},s.tripletfont={face:"Times",size:11,weight:"normal",style:"italic",decoration:"none"},s.vocalfont={face:'"Times New Roman"',size:13,weight:"bold",style:"normal",decoration:"none"},s.wordsfont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},r.formatting.composerfont={face:'"Times New Roman"',size:14,weight:"normal",style:"italic",decoration:"none"},r.formatting.subtitlefont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},r.formatting.tempofont={face:'"Times New Roman"',size:15,weight:"bold",style:"normal",decoration:"none"},r.formatting.titlefont={face:'"Times New Roman"',size:20,weight:"normal",style:"normal",decoration:"none"},r.formatting.footerfont={face:'"Times New Roman"',size:12,weight:"normal",style:"normal",decoration:"none"},r.formatting.headerfont={face:'"Times New Roman"',size:12,weight:"normal",style:"normal",decoration:"none"},r.formatting.voicefont={face:'"Times New Roman"',size:13,weight:"bold",style:"normal",decoration:"none"},r.formatting.tablabelfont={face:'"Trebuchet MS"',size:16,weight:"normal",style:"normal",decoration:"none"},r.formatting.tabnumberfont={face:'"Arial"',size:11,weight:"normal",style:"normal",decoration:"none"},r.formatting.tabgracefont={face:'"Arial"',size:8,weight:"normal",style:"normal",decoration:"none"},r.formatting.annotationfont=s.annotationfont,r.formatting.gchordfont=s.gchordfont,r.formatting.historyfont=s.historyfont,r.formatting.infofont=s.infofont,r.formatting.measurefont=s.measurefont,r.formatting.partsfont=s.partsfont,r.formatting.repeatfont=s.repeatfont,r.formatting.textfont=s.textfont,r.formatting.tripletfont=s.tripletfont,r.formatting.vocalfont=s.vocalfont,r.formatting.wordsfont=s.wordsfont}var u={gchordfont:!0,measurefont:!0,partsfont:!0,annotationfont:!0,composerfont:!0,historyfont:!0,infofont:!0,subtitlefont:!0,textfont:!0,titlefont:!0,voicefont:!0},p=function(k){switch(k){case"Arial-Italic":return{face:"Arial",weight:"normal",style:"italic",decoration:"none"};case"Arial-Bold":return{face:"Arial",weight:"bold",style:"normal",decoration:"none"};case"Bookman-Demi":return{face:"Bookman,serif",weight:"bold",style:"normal",decoration:"none"};case"Bookman-DemiItalic":return{face:"Bookman,serif",weight:"bold",style:"italic",decoration:"none"};case"Bookman-Light":return{face:"Bookman,serif",weight:"normal",style:"normal",decoration:"none"};case"Bookman-LightItalic":return{face:"Bookman,serif",weight:"normal",style:"italic",decoration:"none"};case"Courier":return{face:'"Courier New"',weight:"normal",style:"normal",decoration:"none"};case"Courier-Oblique":return{face:'"Courier New"',weight:"normal",style:"italic",decoration:"none"};case"Courier-Bold":return{face:'"Courier New"',weight:"bold",style:"normal",decoration:"none"};case"Courier-BoldOblique":return{face:'"Courier New"',weight:"bold",style:"italic",decoration:"none"};case"AvantGarde-Book":return{face:"AvantGarde,Arial",weight:"normal",style:"normal",decoration:"none"};case"AvantGarde-BookOblique":return{face:"AvantGarde,Arial",weight:"normal",style:"italic",decoration:"none"};case"AvantGarde-Demi":case"Avant-Garde-Demi":return{face:"AvantGarde,Arial",weight:"bold",style:"normal",decoration:"none"};case"AvantGarde-DemiOblique":return{face:"AvantGarde,Arial",weight:"bold",style:"italic",decoration:"none"};case"Helvetica-Oblique":return{face:"Helvetica",weight:"normal",style:"italic",decoration:"none"};case"Helvetica-Bold":return{face:"Helvetica",weight:"bold",style:"normal",decoration:"none"};case"Helvetica-BoldOblique":return{face:"Helvetica",weight:"bold",style:"italic",decoration:"none"};case"Helvetica-Narrow":return{face:'"Helvetica Narrow",Helvetica',weight:"normal",style:"normal",decoration:"none"};case"Helvetica-Narrow-Oblique":return{face:'"Helvetica Narrow",Helvetica',weight:"normal",style:"italic",decoration:"none"};case"Helvetica-Narrow-Bold":return{face:'"Helvetica Narrow",Helvetica',weight:"bold",style:"normal",decoration:"none"};case"Helvetica-Narrow-BoldOblique":return{face:'"Helvetica Narrow",Helvetica',weight:"bold",style:"italic",decoration:"none"};case"Palatino-Roman":return{face:"Palatino",weight:"normal",style:"normal",decoration:"none"};case"Palatino-Italic":return{face:"Palatino",weight:"normal",style:"italic",decoration:"none"};case"Palatino-Bold":return{face:"Palatino",weight:"bold",style:"normal",decoration:"none"};case"Palatino-BoldItalic":return{face:"Palatino",weight:"bold",style:"italic",decoration:"none"};case"NewCenturySchlbk-Roman":return{face:'"New Century",serif',weight:"normal",style:"normal",decoration:"none"};case"NewCenturySchlbk-Italic":return{face:'"New Century",serif',weight:"normal",style:"italic",decoration:"none"};case"NewCenturySchlbk-Bold":return{face:'"New Century",serif',weight:"bold",style:"normal",decoration:"none"};case"NewCenturySchlbk-BoldItalic":return{face:'"New Century",serif',weight:"bold",style:"italic",decoration:"none"};case"Times":case"Times-Roman":case"Times-Narrow":case"Times-Courier":case"Times-New-Roman":return{face:'"Times New Roman"',weight:"normal",style:"normal",decoration:"none"};case"Times-Italic":case"Times-Italics":return{face:'"Times New Roman"',weight:"normal",style:"italic",decoration:"none"};case"Times-Bold":return{face:'"Times New Roman"',weight:"bold",style:"normal",decoration:"none"};case"Times-BoldItalic":return{face:'"Times New Roman"',weight:"bold",style:"italic",decoration:"none"};case"ZapfChancery-MediumItalic":return{face:'"Zapf Chancery",cursive,serif',weight:"normal",style:"normal",decoration:"none"};default:return null}},g=function(k,S,F,H,Q){function Y(){var tt=parseInt(k[0].token);return k.shift(),S?k.length===0?{face:S.face,weight:S.weight,style:S.style,decoration:S.decoration,size:tt}:k.length===1&&k[0].token==="box"&&u[Q]?{face:S.face,weight:S.weight,style:S.style,decoration:S.decoration,size:tt,box:!0}:(n("Extra parameters in font definition.",F,H),{face:S.face,weight:S.weight,style:S.style,decoration:S.decoration,size:tt}):(n("Can't set just the size of the font since there is no default value.",F,H),{face:'"Times New Roman"',weight:"normal",style:"normal",decoration:"none",size:tt})}if(k[0].token==="*"){if(k.shift(),k[0].type==="number")return Y();n("Expected font size number after *.",F,H)}if(k[0].type==="number")return Y();for(var C=[],re,he="normal",ie="normal",ye="none",se=!1,we="face",ae=!1;k.length;){var Re=k.shift(),ee=Re.token.toLowerCase();switch(we){case"face":ae||ee!=="utf"&&Re.type!=="number"&&ee!=="bold"&&ee!=="italic"&&ee!=="underline"&&ee!=="box"?C.length>0&&Re.token==="-"?(ae=!0,C[C.length-1]=C[C.length-1]+Re.token):ae?(ae=!1,C[C.length-1]=C[C.length-1]+Re.token):C.push(Re.token):Re.type==="number"?(re?n("Font size specified twice in font definition.",F,H):re=Re.token,we="modifier"):ee==="bold"?he="bold":ee==="italic"?ie="italic":ee==="underline"?ye="underline":ee==="box"?(u[Q]?se=!0:n(`This font style doesn't support "box"`,F,H),we="finished"):ee==="utf"?(Re=k.shift(),we="size"):n("Unknown parameter "+Re.token+" in font definition.",F,H);break;case"size":Re.type==="number"?re?n("Font size specified twice in font definition.",F,H):re=Re.token:n("Expected font size in font definition.",F,H),we="modifier";break;case"modifier":ee==="bold"?he="bold":ee==="italic"?ie="italic":ee==="underline"?ye="underline":ee==="box"?(u[Q]?se=!0:n(`This font style doesn't support "box"`,F,H),we="finished"):n("Unknown parameter "+Re.token+" in font definition.",F,H);break;case"finished":n('Extra characters found after "box" in font definition.',F,H);break}}re===void 0?S?re=S.size:(n("Must specify the size of the font since there is no default value.",F,H),re=12):re=parseFloat(re),C=C.join(" "),C===""&&(S?C=S.face:(n("Must specify the name of the font since there is no default value.",F,H),C="sans-serif"));var Oe=p(C),Ie={};return Oe?(Ie.face=Oe.face,Ie.weight=Oe.weight,Ie.style=Oe.style,Ie.decoration=Oe.decoration,Ie.size=re,se&&(Ie.box=!0),Ie):(Ie.face=C,Ie.weight=he,Ie.style=ie,Ie.decoration=ye,Ie.size=re,se&&(Ie.box=!0),Ie)},h=function(k,S,F){return S.length===0?'Directive "'+k+'" requires a font as a parameter.':(s[k]=g(S,s[k],F,0,k),s.is_in_header&&(r.formatting[k]=s[k]),null)},m=function(k,S,F){return S.length===0?'Directive "'+k+'" requires a font as a parameter.':(r.formatting[k]=g(S,r.formatting[k],F,0,k),null)},f=function(k,S){var F="";S.forEach(function(Q){F+=Q.token});var H=parseFloat(F);if(isNaN(H)||H===0)return'Directive "'+k+'" requires a number as a parameter.';r.formatting.scale=H},d=["acoustic-bass-drum","bass-drum-1","side-stick","acoustic-snare","hand-clap","electric-snare","low-floor-tom","closed-hi-hat","high-floor-tom","pedal-hi-hat","low-tom","open-hi-hat","low-mid-tom","hi-mid-tom","crash-cymbal-1","high-tom","ride-cymbal-1","chinese-cymbal","ride-bell","tambourine","splash-cymbal","cowbell","crash-cymbal-2","vibraslap","ride-cymbal-2","hi-bongo","low-bongo","mute-hi-conga","open-hi-conga","low-conga","high-timbale","low-timbale","high-agogo","low-agogo","cabasa","maracas","short-whistle","long-whistle","short-guiro","long-guiro","claves","hi-wood-block","low-wood-block","mute-cuica","open-cuica","mute-triangle","open-triangle"],c=function(k){var S=k.split(/\s+/);if(S.length!==2&&S.length!==3)return{error:'Expected parameters "abc-note", "drum-sound", and optionally "note-head"'};var F=S[0],H=parseInt(S[1],10);if((isNaN(H)||H<35||H>81)&&S[1]&&(H=d.indexOf(S[1].toLowerCase())+35),isNaN(H)||H<35||H>81)return{error:'Expected drum name, received "'+S[1]+'"'};var Q={sound:H};return S.length===3&&(Q.noteHead=S[2]),{key:F,value:Q}},_=function(k,S){var F=a.getMeasurement(S);return F.used===0||S.length!==0?{error:'Directive "'+k+'" requires a measurement as a parameter.'}:F.value},b=function(k,S){var F=a.getMeasurement(S);return F.used===0||S.length!==0?'Directive "'+k+'" requires a measurement as a parameter.':(r.formatting[k]=F.value,null)},v=function(k,S,F,H,Q){if(F.length!==1||F[0].type!=="number")return'Directive "'+S+'" requires a number as a parameter.';var Y=F[0].intt;return H!==void 0&&YQ?'Directive "'+S+'" requires a number less than or equal to '+Q+" as a parameter.":(s[k]=Y,null)},w=function(k,S,F){if(F.length===1&&(F[0].token==="true"||F[0].token==="false"))return s[k]=F[0].token==="true",null;var H=v(k,S,F,0,1);return H!==null?H:(s[k]=s[k]===1,null)},y=function(k,S,F,H){if(F.length!==1)return'Directive "'+S+'" requires one of [ '+H.join(", ")+" ] as a parameter.";for(var Q=F[0].token,Y=!1,C=0;!Y&&C=0)k.length!==0&&n("Unexpected parameter in MIDI "+H,F,0);else if(O.indexOf(H)>=0)k.length!==1?n("Expected one parameter in MIDI "+H,F,0):Q.push(k[0].token);else if(R.indexOf(H)>=0)k.length!==1?n("Expected one parameter in MIDI "+H,F,0):k[0].type!=="number"?n("Expected one integer parameter in MIDI "+H,F,0):Q.push(k[0].intt);else if($.indexOf(H)>=0)k.length!==1&&k.length!==2?n("Expected one or two parameters in MIDI "+H,F,0):k[0].type!=="number"||k.length===2&&k[1].type!=="number"?n("Expected integer parameter in MIDI "+H,F,0):(Q.push(k[0].intt),k.length===2&&Q.push(k[1].intt));else if(P.indexOf(H)>=0)k.length!==2?n("Expected two parameters in MIDI "+H,F,0):k[0].type!=="number"||k[1].type!=="number"?n("Expected two integer parameters in MIDI "+H,F,0):(Q.push(k[0].intt),Q.push(k[1].intt));else if(U.indexOf(H)>=0)k.length!==2?n("Expected two parameters in MIDI "+H,F,0):k[0].type!=="alpha"||k[1].type!=="number"?n("Expected one string and one integer parameters in MIDI "+H,F,0):(Q.push(k[0].token),Q.push(k[1].intt));else if(H==="drummap")k.length===2&&k[0].type==="alpha"&&k[1].type==="number"?(S.formatting||(S.formatting={}),S.formatting.midi||(S.formatting.midi={}),S.formatting.midi.drummap||(S.formatting.midi.drummap={}),S.formatting.midi.drummap[k[0].token]=k[1].intt,Q=S.formatting.midi.drummap):k.length===3&&k[0].type==="punct"&&k[1].type==="alpha"&&k[2].type==="number"?(S.formatting||(S.formatting={}),S.formatting.midi||(S.formatting.midi={}),S.formatting.midi.drummap||(S.formatting.midi.drummap={}),S.formatting.midi.drummap[k[0].token+k[1].token]=k[2].intt,Q=S.formatting.midi.drummap):n("Expected one note name and one integer parameter in MIDI "+H,F,0);else if(D.indexOf(H)>=0)k.length!==3||k[0].type!=="number"||k[1].token!=="/"||k[2].type!=="number"?n("Expected fraction parameter in MIDI "+H,F,0):(Q.push(k[0].intt),Q.push(k[2].intt));else if(L.indexOf(H)>=0)k.length!==4?n("Expected four parameters in MIDI "+H,F,0):k[0].type!=="number"||k[1].type!=="number"||k[2].type!=="number"||k[3].type!=="number"?n("Expected four integer parameters in MIDI "+H,F,0):(Q.push(k[0].intt),Q.push(k[1].intt),Q.push(k[2].intt),Q.push(k[3].intt));else if(x.indexOf(H)>=0)k.length!==5?n("Expected five parameters in MIDI "+H,F,0):k[0].type!=="number"||k[1].type!=="number"||k[2].type!=="number"||k[3].type!=="number"||k[4].type!=="number"?n("Expected five integer parameters in MIDI "+H,F,0):(Q.push(k[0].intt),Q.push(k[1].intt),Q.push(k[2].intt),Q.push(k[3].intt),Q.push(k[4].intt));else if($.indexOf(H)>=0)k.length!==1||k.length!==4?n("Expected one or two parameters in MIDI "+H,F,0):k[0].type!=="number"?n("Expected integer parameter in MIDI "+H,F,0):k.length===4?(k[1].token!=="octave"&&n("Expected octave parameter in MIDI "+H,F,0),k[2].token!=="="&&n("Expected octave parameter in MIDI "+H,F,0),k[3].type!=="number"&&n("Expected integer parameter for octave in MIDI "+H,F,0)):(Q.push(k[0].intt),k.length===4&&Q.push(k[3].intt));else if(M.indexOf(H)>=0)if(k.length<2)n("Expected string parameter and at least one integer parameter in MIDI "+H,F,0);else if(k[0].type!=="alpha")n("Expected string parameter and at least one integer parameter in MIDI "+H,F,0);else{var Y=k.shift();for(Q.push(Y.token);k.length>0;)Y=k.shift(),Y.type!=="number"&&n("Expected integer parameter in MIDI "+H,F,0),Q.push(Y.intt)}else if(G.indexOf(H)>=0){if(k.length!==1&&k.length!==2)n("Expected one or two parameters in MIDI "+H,F,0);else if(k[0].type!=="number")n("Expected integer parameter in MIDI "+H,F,0);else if(k.length===2&&k[1].type!=="alpha")n("Expected alpha parameter in MIDI "+H,F,0);else if(Q.push(k[0].intt),k.length===2){var C=k[1].token;C.indexOf("octave=")!=-1?(C=C.replace("octave=",""),C=parseInt(C),isNaN(C)?n("Expected octave value in MIDI"+H):(C<-1&&(n("Expected octave= in MIDI "+H+" to be >= -1 (recv:"+C+")"),C=-1),C>3&&(n("Expected octave= in MIDI "+H+" to be <= 3 (recv:"+C+")"),C=3),Q.push(C))):n("Expected octave= in MIDI"+H)}}o.hasBeginMusic()?o.appendElement("midi",-1,-1,{cmd:H,params:Q}):(S.formatting.midi===void 0&&(S.formatting.midi={}),S.formatting.midi[H]=Q)};e.parseFontChangeLine=function(k){k=k.replace(/\$\$/g,"");var S=k.split("$");if(S.length>1&&s.setfont){var F=[];S[0]!==""&&F.push({text:S[0]});for(var H=1;H0&&s.ignoredDecorations.push(F.substring(0,F.indexOf(" "))),n("Decoration redefinition ignored",k,0);break;case"text":var Ie=a.translateString(F);o.addText(e.parseFontChangeLine(Ie),{startChar:s.iChar,endChar:s.iChar+F.length+7});break;case"center":var tt=a.translateString(F);o.addCentered(e.parseFontChangeLine(tt));break;case"font":break;case"setfont":var Xe=a.tokenize(F,0,F.length);if(Xe.length>=4&&Xe[0].token==="-"&&Xe[1].type==="number"){var Le=parseInt(Xe[1].token);Le>=1&&Le<=9&&(s.setfont||(s.setfont=[]),Xe.shift(),Xe.shift(),s.setfont[Le]=g(Xe,s.setfont[Le],k,0,"setfont"))}break;case"gchordfont":case"partsfont":case"tripletfont":case"vocalfont":case"textfont":case"annotationfont":case"historyfont":case"infofont":case"measurefont":case"repeatfont":case"wordsfont":return h(H,S,k);case"composerfont":case"subtitlefont":case"tempofont":case"titlefont":case"voicefont":case"footerfont":case"headerfont":return m(H,S,k);case"barlabelfont":case"barnumberfont":case"barnumfont":return h("measurefont",S,k);case"staves":case"score":s.score_is_present=!0;for(var Te=function(Nt,xt,ri,di,gn){(xt||s.staves.length===0)&&s.staves.push({index:s.staves.length,numVoices:0});var Kt=t.last(s.staves);ri!==void 0&&Kt.bracket===void 0&&(Kt.bracket=ri),di!==void 0&&Kt.brace===void 0&&(Kt.brace=di),gn&&(Kt.connectBarLines="end"),s.voices[Nt]===void 0&&(s.voices[Nt]={staffNum:Kt.index,index:Kt.numVoices},Kt.numVoices++)},et=!1,ce=!1,_e=!1,ne=!1,me=!1,ve=!1,pe=!1,Se,Me=function(){if(pe=!0,Se){var Nt="start";Se.staffNum>0&&(s.staves[Se.staffNum-1].connectBarLines==="start"||s.staves[Se.staffNum-1].connectBarLines==="continue")&&(Nt="continue"),s.staves[Se.staffNum].connectBarLines=Nt}};S.length;){var ge=S.shift();switch(ge.token){case"(":et?n("Can't nest parenthesis in %%score",k,ge.start):(et=!0,ne=!0);break;case")":!et||ne?n("Unexpected close parenthesis in %%score",k,ge.start):et=!1;break;case"[":ce?n("Can't nest brackets in %%score",k,ge.start):(ce=!0,me=!0);break;case"]":!ce||me?n("Unexpected close bracket in %%score",k,ge.start):(ce=!1,s.staves[Se.staffNum].bracket="end");break;case"{":_e?n("Can't nest braces in %%score",k,ge.start):(_e=!0,ve=!0);break;case"}":!_e||ve?n("Unexpected close brace in %%score",k,ge.start):(_e=!1,s.staves[Se.staffNum].brace="end");break;case"|":Me();break;default:for(var ze="";(ge.type==="alpha"||ge.type==="number")&&(ze+=ge.token,ge.continueId);)ge=S.shift();var Qe=!et||ne,Ee=me?"start":ce?"continue":void 0,xe=ve?"start":_e?"continue":void 0;Te(ze,Qe,Ee,xe,pe),ne=!1,me=!1,ve=!1,pe=!1,Se=s.voices[ze],H==="staves"&&Me();break}}break;case"maxstaves":var He=a.getInt(F);He.digits===0?n("Expected number of staves in maxstaves"):He.value>0&&(r.formatting.maxStaves=He.value);break;case"newpage":var nt=a.getInt(F);o.addNewPage(nt.digits===0?-1:nt.value);break;case"abc":var je=F.split(" ");switch(je[0]){case"-copyright":case"-creator":case"-edited-by":case"-version":case"-charset":var Zt=je.shift();o.addMetaText(H+Zt,je.join(" "),{startChar:s.iChar,endChar:s.iChar+F.length+5});break;default:return"Unknown directive: "+H+je[0]}break;case"header":case"footer":var Pe=a.getMeat(F,0,F.length);Pe=F.substring(Pe.start,Pe.end),Pe[0]==='"'&&Pe[Pe.length-1]==='"'&&(Pe=Pe.substring(1,Pe.length-1));var We=Pe.split(" "),$t={};We.length===1?$t={left:"",center:We[0],right:""}:We.length===2?$t={left:We[0],center:We[1],right:""}:$t={left:We[0],center:We[1],right:We[2]},We.length>3&&n("Too many tabs in "+H+": "+We.length+" found.",F,0),o.addMetaTextObj(H,$t,{startChar:s.iChar,endChar:s.iChar+k.length});break;case"midi":var dt=a.tokenize(F,0,F.length,!0);dt.length>0&&dt[0].token==="="&&dt.shift(),dt.length===0?n("Expected midi command",F,0):B(dt,r,F);break;case"percmap":var wt=c(F);wt.error?n(wt.error,k,8):(r.formatting.percmap||(r.formatting.percmap={}),r.formatting.percmap[wt.key]=wt.value);break;case"visualtranspose":var qt=a.getInt(F);qt.digits===0?n("Expected number of half steps in visualTranspose"):s.globalTranspose=qt.value;break;case"map":case"playtempo":case"auquality":case"continuous":case"nobarcheck":r.formatting[H]=F;break;default:return"Unknown directive: "+H}return null},e.globalFormatting=function(k){for(var S in k)if(k.hasOwnProperty(S)){var F=""+k[S],H=a.tokenize(F,0,F.length),Q;switch(S){case"titlefont":case"gchordfont":case"composerfont":case"footerfont":case"headerfont":case"historyfont":case"infofont":case"measurefont":case"partsfont":case"repeatfont":case"subtitlefont":case"tempofont":case"textfont":case"voicefont":case"tripletfont":case"vocalfont":case"wordsfont":case"annotationfont":case"tablabelfont":case"tabnumberfont":case"tabgracefont":h(S,H,F);break;case"scale":f(S,H);break;case"partsbox":Q=w("partsBox",S,H),Q!==null&&n(Q),s.partsfont.box=s.partsBox;break;case"freegchord":Q=w("freegchord",S,H),Q!==null&&n(Q);break;case"fontboxpadding":(H.length!==1||H[0].type!=="number")&&n('Directive "'+S+'" requires a number as a parameter.'),r.formatting.fontboxpadding=H[0].floatt;break;case"stafftopmargin":(H.length!==1||H[0].type!=="number")&&n('Directive "'+S+'" requires a number as a parameter.'),r.formatting.stafftopmargin=H[0].floatt;break;case"stretchlast":var Y=I(H);if(Y.value!==void 0&&(r.formatting.stretchlast=Y.value),Y.error)return Y.error;break;default:n("Formatting directive unrecognized: ",S,0)}}};function I(k){if(k.length===0)return{value:1};if(k.length===1)if(k[0].type==="number"){if(k[0].floatt>=0||k[0].floatt<=1)return{value:k[0].floatt}}else{if(k[0].token==="false")return{value:0};if(k[0].token==="true")return{value:1}}return{error:"Directive stretchlast requires zero or one parameter: false, true, or number between 0 and 1 (received "+k[0].token+")"}}})(),ep=e,ep}var ip,Ib;function qC(){if(Ib)return ip;Ib=1;var t={};const e=["C,,,","D,,,","E,,,","F,,,","G,,,","A,,,","B,,,","C,,","D,,","E,,","F,,","G,,","A,,","B,,","C,","D,","E,","F,","G,","A,","B,","C","D","E","F","G","A","B","c","d","e","f","g","a","b","c'","d'","e'","f'","g'","a'","b'","c''","d''","e''","f''","g''","a''","b''","c'''","d'''","e'''","f'''","g'''","a'''","b'''"];return t.pitchIndex=function(a){return e.indexOf(a)},t.noteName=function(a){return e[a]},ip=t,ip}var ap,Lb;function Db(){if(Lb)return ap;Lb=1;var t=["C","C♯","D","D♯","E","F","F♯","G","G♯","A","A♯","B"],e=["C","D♭","D","E♭","E","F","G♭","G","A♭","A","B♭","B"],a=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],n=["C","Db","D","Eb","E","F","Gb","G","Ab","A","Bb","B"];function s(r,o,l,u){if(!o||o%12===0)return r;for(;o<0;)o+=12;o>11&&(o=o%12);var p=r.match(/^([A-G][b#♭♯]?)([^\/]+)?\/?([A-G][b#♭♯]?)?(.+)?/);if(!p)return r;var g=p[1],h=p[2],m=p[3],f=p[4],d=t.indexOf(g);if(d<0&&(d=e.indexOf(g)),d<0&&(d=a.indexOf(g)),d<0&&(d=n.indexOf(g)),d<0)return r;d+=o,d=d%12,l?u?r=n[d]:r=e[d]:u?r=a[d]:r=t[d];var c=h&&(h.indexOf("dim")>=0||h.indexOf("°")>=0);if(c&&r==="A#"&&(r="Bb"),c&&r==="D#"&&(r="Eb"),c&&r==="A♯"&&(r="B♭"),c&&r==="D♯"&&(r="E♭"),h&&(r+=h),m){var d=t.indexOf(m);d<0&&(d=e.indexOf(m)),d<0&&(d=a.indexOf(m)),d<0&&(d=n.indexOf(m)),r+="/",d>=0?(d+=o,d=d%12,l?u?r+=n[d]:r+=e[d]:u?r+=a[d]:r+=t[d]):r+=m}return f&&(r+=f),r}return ap=s,ap}var np,Vb;function Hb(){if(Vb)return np;Vb=1;var t={C:{modes:["CMaj","CIon","Amin","AAeo","Am","GMix","DDor","EPhr","FLyd","BLoc"],stepsFromC:0},Db:{modes:["DbMaj","DbIon","Bbmin","BbAeo","Bbm","AbMix","EbDor","FPhr","GbLyd","CLoc"],stepsFromC:1},D:{modes:["DMaj","DIon","Bmin","BAeo","Bm","AMix","EDor","F#Phr","GLyd","C#Loc"],stepsFromC:2},Eb:{modes:["EbMaj","EbIon","Cmin","CAeo","Cm","BbMix","FDor","GPhr","AbLyd","DLoc"],stepsFromC:3},E:{modes:["EMaj","EIon","C#min","C#Aeo","C#m","BMix","F#Dor","G#Phr","ALyd","D#Loc"],stepsFromC:4},F:{modes:["FMaj","FIon","Dmin","DAeo","Dm","CMix","GDor","APhr","BbLyd","ELoc"],stepsFromC:5},Gb:{modes:["GbMaj","GbIon","Ebmin","EbAeo","Ebm","DbMix","AbDor","BbPhr","CbLyd","FLoc"],stepsFromC:6},G:{modes:["GMaj","GIon","Emin","EAeo","Em","DMix","ADor","BPhr","CLyd","F#Loc"],stepsFromC:7},Ab:{modes:["AbMaj","AbIon","Fmin","FAeo","Fm","EbMix","BbDor","CPhr","DbLyd","GLoc"],stepsFromC:8},A:{modes:["AMaj","AIon","F#min","F#Aeo","F#m","EMix","BDor","C#Phr","DLyd","G#Loc"],stepsFromC:9},Bb:{modes:["BbMaj","BbIon","Gmin","GAeo","Gm","FMix","CDor","DPhr","EbLyd","ALoc"],stepsFromC:10},B:{modes:["BMaj","BIon","G#min","G#Aeo","G#m","F#Mix","C#Dor","D#Phr","ELyd","A#Loc"],stepsFromC:11},"C#":{modes:["C#Maj","C#Ion","A#min","A#Aeo","A#m","G#Mix","D#Dor","E#Phr","F#Lyd","B#Loc"],stepsFromC:1},"F#":{modes:["F#Maj","F#Ion","D#min","D#Aeo","D#m","C#Mix","G#Dor","A#Phr","BLyd","E#Loc"],stepsFromC:6},Cb:{modes:["CbMaj","CbIon","Abmin","AbAeo","Abm","GbMix","DbDor","EbPhr","FbLyd","BbLoc"],stepsFromC:11}},e=["maj","ion","min","aeo","m","mix","dor","phr","lyd","loc"];function a(u){return e.indexOf(u.toLowerCase())>=0}var n=null;function s(){n={};for(var u=Object.keys(t),p=0;p11&&(T=T%12);var O=f[0]==="m"?o[T]:r[T],R=O+f,$=a(R);($.length===0||$[0].acc==="flat")&&(m.localTransposePreferFlats=!0);var P=R.charCodeAt(0)-v.charCodeAt(0);return m.localTranspose>0?(P<0||P===0&&(v[1]==="#"||R[1]==="b"))&&(P+=7):m.localTranspose<0&&(P>0||P===0&&(v[1]==="b"||R[1]==="#"))&&(P-=7),m.localTranspose>0?m.localTransposeVerticalMovement=P+Math.floor(m.localTranspose/12)*7:m.localTransposeVerticalMovement=P+Math.ceil(m.localTranspose/12)*7,y?{accidentals:$,root:O[0],acc:O.length>1?O[1]:""}:{accidentals:[],root:d,acc:c}},n.chordName=function(m,f){return e(f,m.localTranspose,m.localTransposePreferFlats,m.freegchord)};var l=["c","d","e","f","g","a","b"];function u(m,f,d,c,_){for(var b=l[(m+49)%7],v=0,w=0;w2&&(f++,P-=O==="b"||O==="e"?1:2),[f,P]}var p={dblflat:-2,flat:-1,natural:0,sharp:1,dblsharp:2},g={"-2":"dblflat","-1":"flat",0:"natural",1:"sharp",2:"dblsharp"},h={"-2":"__","-1":"_",0:"=",1:"^",2:"^^"};return n.note=function(m,f){if(!(!m.localTranspose||m.clef.type==="perc")){var d=f.pitch;if(m.localTransposeVerticalMovement&&(f.pitch=f.pitch+m.localTransposeVerticalMovement,f.name)){var c=f.accidental?f.name.substring(1):f.name,_=f.accidental?f.name[0]:"",b=t.pitchIndex(c);f.name=_+t.noteName(b+m.localTransposeVerticalMovement)}if(f.accidental){var v=u(d,f.pitch,f.accidental,m.globalTransposeOrigKeySig,m.targetKey);f.pitch=v[0],f.accidental=g[v[1]],f.name&&(f.name=h[v[1]]+f.name.replace(/[_^=]/g,""))}}},rp=n,rp}var op,Xb;function lp(){if(Xb)return op;Xb=1;var t=tp(),e=Yb(),a={};return(function(){var n,s,r,o;a.initialize=function(d,c,_,b,v){n=d,s=c,r=_,o=v},a.standardKey=function(d,c,_,b){return e.keySignature(r,d,c,_,b)};var l={treble:{clef:"treble",pitch:4,mid:0},"treble+8":{clef:"treble+8",pitch:4,mid:0},"treble-8":{clef:"treble-8",pitch:4,mid:0},"treble^8":{clef:"treble+8",pitch:4,mid:0},treble_8:{clef:"treble-8",pitch:4,mid:0},treble1:{clef:"treble",pitch:2,mid:2},treble2:{clef:"treble",pitch:4,mid:0},treble3:{clef:"treble",pitch:6,mid:-2},treble4:{clef:"treble",pitch:8,mid:-4},treble5:{clef:"treble",pitch:10,mid:-6},perc:{clef:"perc",pitch:6,mid:0},none:{clef:"none",mid:0},bass:{clef:"bass",pitch:8,mid:-12},"bass+8":{clef:"bass+8",pitch:8,mid:-12},"bass-8":{clef:"bass-8",pitch:8,mid:-12},"bass^8":{clef:"bass+8",pitch:8,mid:-12},bass_8:{clef:"bass-8",pitch:8,mid:-12},"bass+16":{clef:"bass",pitch:8,mid:-12},"bass-16":{clef:"bass",pitch:8,mid:-12},"bass^16":{clef:"bass",pitch:8,mid:-12},bass_16:{clef:"bass",pitch:8,mid:-12},bass1:{clef:"bass",pitch:2,mid:-6},bass2:{clef:"bass",pitch:4,mid:-8},bass3:{clef:"bass",pitch:6,mid:-10},bass4:{clef:"bass",pitch:8,mid:-12},bass5:{clef:"bass",pitch:10,mid:-14},tenor:{clef:"alto",pitch:8,mid:-8},tenor1:{clef:"alto",pitch:2,mid:-2},tenor2:{clef:"alto",pitch:4,mid:-4},tenor3:{clef:"alto",pitch:6,mid:-6},tenor4:{clef:"alto",pitch:8,mid:-8},tenor5:{clef:"alto",pitch:10,mid:-10},alto:{clef:"alto",pitch:6,mid:-6},alto1:{clef:"alto",pitch:2,mid:-2},alto2:{clef:"alto",pitch:4,mid:-4},alto3:{clef:"alto",pitch:6,mid:-6},alto4:{clef:"alto",pitch:8,mid:-8},alto5:{clef:"alto",pitch:10,mid:-10},"alto+8":{clef:"alto+8",pitch:6,mid:-6},"alto-8":{clef:"alto-8",pitch:6,mid:-6},"alto^8":{clef:"alto+8",pitch:6,mid:-6},alto_8:{clef:"alto-8",pitch:6,mid:-6}},u=function(d,c){var _=l[d],b=_?_.mid:0;return b+c};a.fixClef=function(d){var c=l[d.type];c&&(d.clefPos=c.pitch,d.type=c.clef)},a.deepCopyKey=function(d){var c={accidentals:[],root:d.root,acc:d.acc,mode:d.mode};return d.accidentals.forEach(function(_){c.accidentals.push(Object.assign({},_))}),d.explicitAccidentals&&(c.explicitAccidentals=[],d.explicitAccidentals.forEach(function(_){c.explicitAccidentals.push(Object.assign({},_))})),c};var p=function(){r.currentVoice&&(r.currentVoice.key=a.deepCopyKey(r.key))},g={A:5,B:6,C:0,D:1,E:2,F:3,G:4,a:12,b:13,c:7,d:8,e:9,f:10,g:11};a.addPosToKey=function(d,c){var _=d.verticalPos;c.accidentals.forEach(function(b){var v=g[b.note];v=v-_,b.verticalPos=v}),c.impliedNaturals&&c.impliedNaturals.forEach(function(b){var v=g[b.note];v=v-_,b.verticalPos=v}),_<-10?(c.accidentals.forEach(function(b){b.verticalPos-=7,(b.verticalPos>=11||b.verticalPos===10&&b.acc==="flat")&&(b.verticalPos-=7),b.note==="A"&&b.acc==="sharp"&&(b.verticalPos-=7),(b.note==="G"||b.note==="F")&&b.acc==="flat"&&(b.verticalPos-=7)}),c.impliedNaturals&&c.impliedNaturals.forEach(function(b){b.verticalPos-=7,(b.verticalPos>=11||b.verticalPos===10&&b.acc==="flat")&&(b.verticalPos-=7),b.note==="A"&&b.acc==="sharp"&&(b.verticalPos-=7),(b.note==="G"||b.note==="F")&&b.acc==="flat"&&(b.verticalPos-=7)})):_<-4?(c.accidentals.forEach(function(b){b.verticalPos-=7,_===-8&&(b.note==="f"||b.note==="g")&&b.acc==="sharp"&&(b.verticalPos-=7)}),c.impliedNaturals&&c.impliedNaturals.forEach(function(b){b.verticalPos-=7,_===-8&&(b.note==="f"||b.note==="g")&&b.acc==="sharp"&&(b.verticalPos-=7)})):_>=7&&(c.accidentals.forEach(function(b){b.verticalPos+=7}),c.impliedNaturals&&c.impliedNaturals.forEach(function(b){b.verticalPos+=7}))},a.fixKey=function(d,c){var _=Object.assign({},c);return a.addPosToKey(d,_),_};var h=function(d){var c=0,_=d[c++];(_==="^"||_==="_")&&(_=d[c++]);var b=g[_];for(b===void 0&&(b=6);c0){b.foundKey=!0;var w="",y="";_[0].token.length>1?_[0].token=_[0].token.substring(1):_.shift();var T=v.token;if(_.length>0){var O=n.getSharpFlat(_[0].token);if(O.len>0&&(_[0].token.length>1?_[0].token=_[0].token.substring(1):_.shift(),T+=O.token,w=O.token),_.length>0){var R=n.getMode(_[0].token);R.len>0&&(_.shift(),T+=R.token,y=R.token)}if(a.standardKey(T,v.token,w,0)===void 0)return s("Unsupported key signature: "+T,d,0),b}var $=a.deepCopyKey(r.key),P=!c&&r.globalTranspose?-r.globalTranspose:0,L;if(c&&(L=r.globalTransposeOrigKeySig),r.key=a.deepCopyKey(a.standardKey(T,v.token,w,P)),c&&(r.globalTransposeOrigKeySig=L),r.key.mode=y,$&&r.keywarn!==!1){for(var x,U=0;U0;)switch(_[0].token){case"m":case"middle":if(_.shift(),_.length===0)return s("Expected = after middle",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after middle",d,I.start);break}if(_.length===0)return s("Expected parameter after middle=",d,0),b;var k=n.getPitchFromTokens(_);k.warn&&s(k.warn,d,0),k.position&&(r.clef.verticalPos=k.position-6);break;case"transpose":if(_.shift(),_.length===0)return s("Expected = after transpose",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after transpose",d,I.start);break}if(_.length===0)return s("Expected parameter after transpose=",d,0),b;if(_[0].type!=="number"){s("Expected number after transpose",d,_[0].start);break}r.clef.transpose=_[0].intt,_.shift();break;case"stafflines":if(_.shift(),_.length===0)return s("Expected = after stafflines",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after stafflines",d,I.start);break}if(_.length===0)return s("Expected parameter after stafflines=",d,0),b;if(_[0].type!=="number"){s("Expected number after stafflines",d,_[0].start);break}r.clef.stafflines=_[0].intt,_.shift();break;case"staffscale":if(_.shift(),_.length===0)return s("Expected = after staffscale",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after staffscale",d,I.start);break}if(_.length===0)return s("Expected parameter after staffscale=",d,0),b;if(_[0].type!=="number"){s("Expected number after staffscale",d,_[0].start);break}r.clef.staffscale=_[0].floatt,_.shift();break;case"octave":if(_.shift(),_.length===0)return s("Expected = after octave",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after octave",d,I.start);break}if(_.length===0)return s("Expected parameter after octave=",d,0),b;if(_[0].type!=="number"){s("Expected number after octave",d,_[0].start);break}r.octave=_[0].intt,_.shift();break;case"style":if(_.shift(),_.length===0)return s("Expected = after style",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after style",d,I.start);break}if(_.length===0)return s("Expected parameter after style=",d,0),b;switch(_[0].token){case"normal":case"harmonic":case"rhythm":case"x":case"triangle":r.style=_[0].token,_.shift();break;default:s("error parsing style element: "+_[0].token,d,_[0].start);break}break;case"clef":if(_.shift(),_.length===0)return s("Expected = after clef",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after clef",d,I.start);break}if(_.length===0)return s("Expected parameter after clef=",d,0),b;case"treble":case"bass":case"alto":case"tenor":case"perc":case"none":var S=_.shift();switch(S.token){case"treble":case"tenor":case"alto":case"bass":case"perc":case"none":break;case"C":S.token="alto";break;case"F":S.token="bass";break;case"G":S.token="treble";break;case"c":S.token="alto";break;case"f":S.token="bass";break;case"g":S.token="treble";break;default:s("Expected clef name. Found "+S.token,d,S.start);break}_.length>0&&_[0].type==="number"&&(S.token+=_[0].token,_.shift()),_.length>1&&(_[0].token==="-"||_[0].token==="+"||_[0].token==="^"||_[0].token==="_")&&_[1].token==="8"&&(S.token+=_[0].token+_[1].token,_.shift(),_.shift()),r.clef={type:S.token,verticalPos:u(S.token,0)},r.currentVoice&&r.currentVoice.transpose!==void 0&&(r.clef.transpose=r.currentVoice.transpose),b.foundClef=!0;break;default:s("Unknown parameter: "+_[0].token,d,_[0].start),_.shift()}return b};var f=function(d){var c=r.voices[d];if(!(r.currentVoice&&r.currentVoice.index===c.index&&r.currentVoice.staffNum===c.staffNum))return r.currentVoice=c,c.key?r.key=a.deepCopyKey(c.key):r.globalKey&&(r.key=a.deepCopyKey(r.globalKey)),o.setCurrentVoice(c.staffNum,c.index,d)};a.parseVoice=function(d,c,_){var b=n.getMeat(d,c,_),v=b.start,w=b.end,y=n.getToken(d,v,w);if(y.length===0){s("Expected a voice id",d,v);return}var T=!1;r.voices[y]===void 0&&(r.voices[y]={},T=!0,r.score_is_present&&s("Can't have an unknown V: id when the %score directive is present",d,v)),v+=y.length,v+=n.eatWhiteSpace(d,v);for(var O={startStaff:T},R=function(k){var S=n.getVoiceToken(d,v,w);S.warn!==void 0?s("Expected value for "+k+" in voice: "+S.warn,d,v):S.err!==void 0?s("Expected value for "+k+" in voice: "+S.err,d,v):S.token.length===0&&d[v]!=='"'?s("Expected value for "+k+" in voice",d,v):O[k]=S.token,v+=S.len},$=function(k,S,F){var H=n.getVoiceToken(d,v,w);H.warn!==void 0?s("Expected value for "+S+" in voice: "+H.warn,d,v):H.err!==void 0?s("Expected value for "+S+" in voice: "+H.err,d,v):H.token.length===0&&d[v]!=='"'?s("Expected value for "+S+" in voice",d,v):(H.token=parseFloat(H.token),r.voices[k][S]=H.token),v+=H.len},P=function(k,S){var F=n.getVoiceToken(d,v,w);if(F.warn!==void 0)s("Expected value for "+k+" in voice: "+F.warn,d,v);else if(F.err!==void 0)s("Expected value for "+k+" in voice: "+F.err,d,v);else if(F.token.length===0&&d[v]!=='"')s("Expected value for "+k+" in voice",d,v);else return F.token;v+=F.len},L=function(k,S){var F={_B:2,_E:9,_b:-10,_e:-3},H=n.getVoiceToken(d,v,w);if(H.warn!==void 0)s("Expected one of (_B, _E, _b, _e) for "+S+" in voice: "+H.warn,d,v);else if(H.token.length===0&&d[v]!=='"')s("Expected one of (_B, _E, _b, _e) for "+S+" in voice",d,v);else{var Q=F[H.token];Q?r.voices[k][S]=Q:s("Expected one of (_B, _E, _b, _e) for "+S+" in voice",d,v)}v+=H.len};v0&&(o.default_length=_/b,o.havent_set_length=!1)}else c.length===1&&c[0]==="1"&&(o.default_length=1,o.havent_set_length=!1)};var p={larghissimo:20,adagissimo:24,sostenuto:28,grave:32,largo:40,lento:50,larghetto:60,adagio:68,adagietto:74,andante:80,andantino:88,"marcia moderato":84,"andante moderato":100,moderato:112,allegretto:116,"allegro moderato":120,allegro:126,animato:132,agitato:140,veloce:148,"mosso vivo":156,vivace:164,vivacissimo:172,allegrissimo:176,presto:184,prestissimo:210};this.setTempo=function(h,m,f,d){try{var c=s.tokenize(h,m,f);if(c.length===0)throw"Missing parameter in Q: field";var _={startChar:d+m-2,endChar:d+f},b=!0,v=c.shift();if(v.type==="quote"&&(_.preString=v.token,v=c.shift(),c.length===0))return p[_.preString.toLowerCase()]&&(_.bpm=p[_.preString.toLowerCase()],_.suppressBpm=!0),{type:"immediate",tempo:_};if(v.type==="alpha"&&v.token==="C"){if(c.length===0)throw"Missing tempo after C in Q: field";if(v=c.shift(),v.type==="punct"&&v.token==="="){if(c.length===0)throw"Missing tempo after = in Q: field";if(v=c.shift(),v.type!=="number")throw"Expected number after = in Q: field";_.duration=[1],_.bpm=parseInt(v.token)}else if(v.type==="number"){if(_.duration=[parseInt(v.token)],c.length===0)throw"Missing = after duration in Q: field";if(v=c.shift(),v.type!=="punct"||v.token!=="=")throw"Expected = after duration in Q: field";if(c.length===0)throw"Missing tempo after = in Q: field";if(v=c.shift(),v.type!=="number")throw"Expected number after = in Q: field";_.bpm=parseInt(v.token)}else throw"Expected number or equal after C in Q: field"}else if(v.type==="number"){var w=parseInt(v.token);if(c.length===0||c[0].type==="quote")_.duration=[1],_.bpm=w;else{if(b=!1,v=c.shift(),v.type!=="punct"&&v.token!=="/"||(v=c.shift(),v.type!=="number"))throw"Expected fraction in Q: field";var y=parseInt(v.token);for(_.duration=[w/y];c.length>0&&c[0].token!=="="&&c[0].type!=="quote";){if(v=c.shift(),v.type!=="number"||(w=parseInt(v.token),v=c.shift(),v.type!=="punct"&&v.token!=="/")||(v=c.shift(),v.type!=="number"))throw"Expected fraction in Q: field";y=parseInt(v.token),_.duration.push(w/y)}if(v=c.shift(),v.type!=="punct"&&v.token!=="=")throw"Expected = in Q: field";if(v=c.shift(),v.type!=="number")throw"Expected tempo in Q: field";_.bpm=parseInt(v.token)}}else throw"Unknown value in Q: field";if(c.length!==0&&(v=c.shift(),v.type==="quote"&&(_.postString=v.token,v=c.shift()),c.length!==0))throw"Unexpected string at end of Q: field";return o.printTempo===!1&&(_.suppress=!0),{type:b?"delaySet":"immediate",tempo:_}}catch(T){return r(T,h,m),{type:"none"}}},this.letter_to_inline_header=function(h,m,f){var d=!1,c=s.eatWhiteSpace(h,m);if(m+=c,h.length>=m+5&&h[m]==="["&&h[m+2]===":"){var _=h.indexOf("]",m),b=o.iChar+m,v=o.iChar+_+1;switch(h.substring(m,m+3)){case"[I:":var w=e.addDirective(h.substring(m+3,_));return w&&r(w,h,m),[_-m+1+c];case"[M:":var y=this.setMeter(h.substring(m+3,_));return f&&o.currentVoice&&y?o.staves[o.currentVoice.staffNum].meter=y:u.hasBeginMusic()&&y?u.appendStartingElement("meter",b,v,y):o.meter=y,[_-m+1+c];case"[K:":var T=a.parseKey(h.substring(m+3,_),!0);return T.foundClef&&u.hasBeginMusic()&&u.appendStartingElement("clef",b,v,o.clef),T.foundKey&&u.hasBeginMusic()&&u.appendStartingElement("key",b,v,a.fixKey(o.clef,o.key)),[_-m+1+c];case"[P:":var O=e.parseFontChangeLine(h.substring(m+3,_));return f||l.lines.length<=l.lineNum?o.partForNextLine={title:O,startChar:b,endChar:v}:u.appendElement("part",b,v,{title:O}),[_-m+1+c];case"[L:":return this.setDefaultLength(h,m+3,_),[_-m+1+c];case"[Q:":if(_>0){var R=this.setTempo(h,m+3,_,o.iChar);return R.type==="delaySet"?u.hasBeginMusic()?u.appendElement("tempo",b,v,this.calcTempo(R.tempo)):o.tempoForNextLine=["tempo",b,v,this.calcTempo(R.tempo)]:R.type==="immediate"&&(!f&&u.hasBeginMusic()?u.appendElement("tempo",b,v,R.tempo):o.tempoForNextLine=["tempo",b,v,R.tempo]),[_-m+1+c,h[m+1],h.substring(m+3,_)]}break;case"[V:":if(_>0)return d=a.parseVoice(h,m+3,_),[_-m+1+c,h[m+1],h.substring(m+3,_),d];break;case"[r:":return[_-m+1+c]}}return[0]},this.letter_to_body_header=function(h,m){var f=!1;if(h.length>=m+3)switch(h.substring(m,m+2)){case"I:":var d=e.addDirective(h.substring(m+2));return d&&r(d,h,m),[h.length];case"M:":var c=this.setMeter(h.substring(m+2));return u.hasBeginMusic()&&c&&u.appendStartingElement("meter",o.iChar+m,o.iChar+h.length,c),[h.length];case"K:":var _=a.parseKey(h.substring(m+2),u.hasBeginMusic());return _.foundClef&&u.hasBeginMusic()&&o.keywarn!==!1&&u.appendStartingElement("clef",o.iChar+m,o.iChar+h.length,o.clef),_.foundKey&&u.hasBeginMusic()&&o.keywarn!==!1&&u.appendStartingElement("key",o.iChar+m,o.iChar+h.length,a.fixKey(o.clef,o.key)),[h.length];case"P:":return u.hasBeginMusic()&&u.appendElement("part",o.iChar+m,o.iChar+h.length,{title:h.substring(m+2)}),[h.length];case"L:":return this.setDefaultLength(h,m+2,h.length),[h.length];case"Q:":var b=h.indexOf("",m+2);b===-1&&(b=h.length);var v=this.setTempo(h,m+2,b,o.iChar);return v.type==="delaySet"?u.appendElement("tempo",o.iChar+m,o.iChar+h.length,this.calcTempo(v.tempo)):v.type==="immediate"&&u.appendElement("tempo",o.iChar+m,o.iChar+h.length,v.tempo),[b,h[m],t.strip(h.substring(m+2))];case"V:":return f=a.parseVoice(h,m+2,h.length),[h.length,h[m],t.strip(h.substring(m+2)),f]}return[0]};var g={A:"author",B:"book",C:"composer",D:"discography",F:"url",G:"group",I:"instruction",N:"notes",O:"origin",R:"rhythm",S:"source",W:"unalignedWords",Z:"transcription"};this.parseHeader=function(h){var m=g[h[0]],f=h.length-2,d=s.translateString(s.stripComment(h.substring(2)));if(m==="unalignedWords"||m==="notes")u.addMetaTextArray(m,e.parseFontChangeLine(d),{startChar:o.iChar,endChar:o.iChar+h.length});else if(m!==void 0)u.addMetaText(m,e.parseFontChangeLine(d),{startChar:o.iChar,endChar:o.iChar+h.length});else{var c=o.iChar,_=c+h.length;switch(h[0]){case"H":for(u.addMetaTextArray("history",e.parseFontChangeLine(d),{startChar:o.iChar,endChar:o.iChar+h.length}),h=s.peekLine();h&&h[1]!==":";)s.nextLine(),u.addMetaTextArray("history",e.parseFontChangeLine(s.translateString(s.stripComment(h))),{startChar:o.iChar,endChar:o.iChar+h.length}),h=s.peekLine();break;case"K":this.resolveTempo();var b=a.parseKey(h.substring(2),!1);!o.is_in_header&&u.hasBeginMusic()&&o.keywarn!==!1&&(b.foundClef&&u.appendStartingElement("clef",c,_,o.clef),b.foundKey&&u.appendStartingElement("key",c,_,a.fixKey(o.clef,o.key))),o.is_in_header=!1;break;case"L":this.setDefaultLength(h,2,h.length);break;case"M":o.origMeter=o.meter=this.setMeter(h.substring(2));break;case"P":o.is_in_header?u.addMetaText("partOrder",e.parseFontChangeLine(d),{startChar:o.iChar,endChar:o.iChar+h.length}):o.partForNextLine={title:d,startChar:c,endChar:_};break;case"Q":var v=this.setTempo(h,2,h.length,o.iChar);v.type==="delaySet"?o.tempo=v.tempo:v.type==="immediate"&&(l.metaText.tempo?o.tempoForNextLine=["tempo",c,_,v.tempo]:l.metaText.tempo=v.tempo);break;case"T":o.titlecaps&&(d=d.toUpperCase()),this.setTitle(e.parseFontChangeLine(s.theReverser(d)),f);break;case"U":this.addUserDefinition(h,2,h.length);break;case"V":if(a.parseVoice(h,2,h.length),!o.is_in_header)return{newline:!0};break;case"s":return{symbols:!0};case"w":return{words:!0};case"X":break;case"E":case"m":r("Ignored header",h,0);break;default:return{regular:!0}}}return{}}};return cp=n,cp}var Xn={},Zb;function FC(){return Zb||(Zb=1,Xn.legalAccents=["trill","trillh","lowermordent","uppermordent","mordent","pralltriller","accent","fermata","invertedfermata","tenuto","0","1","2","3","4","5","+","wedge","open","thumb","snap","turn","roll","breath","shortphrase","mediumphrase","longphrase","segno","coda","D.S.","D.C.","fine","beambr1","beambr2","slide","marcato","upbow","downbow","/","//","///","////","trem1","trem2","trem3","trem4","turnx","invertedturn","invertedturnx","trill(","trill)","arpeggio","xstem","mark","umarcato","style=normal","style=harmonic","style=rhythm","style=x","style=triangle","D.C.alcoda","D.C.alfine","D.S.alcoda","D.S.alfine","editorial","courtesy"],Xn.volumeDecorations=["p","pp","f","ff","mf","mp","ppp","pppp","fff","ffff","sfz"],Xn.dynamicDecorations=["crescendo(","crescendo)","diminuendo(","diminuendo)","glissando(","glissando)","~(","~)"],Xn.accentPseudonyms=[["<","accent"],[">","accent"],["tr","trill"],["plus","+"],["emphasis","accent"],["^","umarcato"],["marcato","umarcato"]],Xn.accentDynamicPseudonyms=[["<(","crescendo("],["<)","crescendo)"],[">(","diminuendo("],[">)","diminuendo)"]],Xn.nonDecorations="ABCDEFGabcdefgxyzZ[]|^_{",Xn.durations=[.5,.75,.875,.9375,.96875,.984375,.25,.375,.4375,.46875,.484375,.4921875,.125,.1875,.21875,.234375,.2421875,.24609375,.0625,.09375,.109375,.1171875,.12109375,.123046875,.03125,.046875,.0546875,.05859375,.060546875,.0615234375,.015625,.0234375,.02734375,.029296875,.0302734375,.03076171875],Xn.pitches={A:5,B:6,C:0,D:1,E:2,F:3,G:4,a:12,b:13,c:7,d:8,e:9,f:10,g:11},Xn.rests={x:"invisible",X:"invisible-multimeasure",y:"spacer",z:"rest",Z:"multimeasure"},Xn.accMap={dblflat:"__",flat:"_",natural:"=",sharp:"^",dblsharp:"^^",quarterflat:"_/",quartersharp:"^/"},Xn.tripletQ={2:3,3:2,4:3,5:2,6:2,7:2,8:3,9:2}),Xn}var dp,ey;function AC(){if(ey)return dp;ey=1;var t=lp(),e=Yb(),a,n,s,r,o,l,{legalAccents:u,volumeDecorations:p,dynamicDecorations:g,accentPseudonyms:h,accentDynamicPseudonyms:m,nonDecorations:f,durations:d,pitches:c,rests:_,accMap:b,tripletQ:v}=FC(),w=function(k,S,F,H,Q,Y){a=k,n=S,s=F,r=H,o=Q,l=Y,this.lineContinuation=!1},y=function(k,S,F){if(k.inTie[S]===void 0)return!1;var H=k.currentVoice?k.currentVoice.staffNum*100+k.currentVoice.index:0;return!!(k.inTie[S][H]&&(F.pitches!==void 0||F.rest.type!=="spacer"))},T={};w.prototype.parseMusic=function(k){l.resolveTempo(),s.is_in_header=!1;for(var S=0,F=s.iChar;a.isWhiteSpace(k[S])&&S0&&(S+=Y[0],Y[1]==="V"&&this.startNewLine());for(var C=0;S0)S+=he[0],he[1]==="V"&&(H=!0);else{(!o.hasBeginMusic()||H&&!this.lineContinuation)&&(this.startNewLine(),H=!1);for(var ie;;)if(ie=a.eatWhiteSpace(k,S),ie>0&&(S+=ie),S>0&&k[S-1]===""&&(ie=l.letter_to_body_header(k,S),ie[0]>0&&(ie[1]==="V"&&this.startNewLine(),S=ie[0],s.start_new_line=!1)),ie=U(k,S),ie[0]>0&&(S+=ie[0]),ie=R(k,S),ie[0]>0){T.chord||(T.chord=[]);var ye=a.translateString(ie[1]);ye=ye.replace(/;/g,` -`);for(var se=!1,we=0;we0&&(T.force_end_beam_last=!0),S+=ae}else if(f.indexOf(k[S])===-1?ie=x(k,S):ie=[0],ie[0]>0)ie[1]===null?S+10&&(ie[1].indexOf("style=")===0?T.style=ie[1].substring(6):ie[1].indexOf("class=")===0?T.extraClass=ie[1].substring(6):(T.decoration===void 0&&(T.decoration=[]),ie[1]==="beambr1"?T.beambr=1:ie[1]==="beambr2"?T.beambr=2:T.decoration.push(ie[1]))),S+=ie[0];else if(ie=$(k,S),ie[0]>0)T.gracenotes=ie[1],S+=ie[0];else break;if(ie=D(k,S),ie[0]>0){C=0,T.gracenotes!==void 0&&(T.rest={type:"spacer"},T.duration=.125,s.addFormattingOptions(T,r.formatting,"note"),o.appendElement("note",F+S,F+S+ie[0],T),s.measureNotEmpty=!0,T={});var Re={type:ie[1]};Re.type.length===0?n("Unknown bar type",k,S):(s.inEnding&&Re.type!=="bar_thin"&&(Re.endEnding=!0,s.inEnding=!1),ie[2]&&(Re.startEnding=ie[2],s.inEnding&&(Re.endEnding=!0),s.inEnding=!0,ie[1]==="bar_right_repeat"?s.restoreStartEndingHoldOvers():s.duplicateStartEndingHoldOvers()),T.decoration!==void 0&&(Re.decoration=T.decoration),T.chord!==void 0&&(Re.chord=T.chord),Re.startEnding&&s.barFirstEndingNum===void 0?s.barFirstEndingNum=s.currBarNumber:Re.startEnding&&Re.endEnding&&s.barFirstEndingNum?s.currBarNumber=s.barFirstEndingNum:Re.endEnding&&(s.barFirstEndingNum=void 0),Re.type!=="bar_invisible"&&s.measureNotEmpty&&I()&&(s.currBarNumber++,s.barNumbers&&s.currBarNumber%s.barNumbers===0&&(Re.barNumber=s.currBarNumber)),s.addFormattingOptions(T,r.formatting,"bar"),o.appendElement("bar",F+re,F+S+ie[0],Re),s.measureNotEmpty=!1,T={}),S+=ie[0]}else if(k[S]==="&")ie=P(k,S),ie[0]>0&&(o.appendElement("overlay",F,F+1,{}),S+=1,C++);else{if(ie=M(k,S),ie.consumed>0&&(ie.startSlur!==void 0&&(T.startSlur=ie.startSlur),ie.dottedSlur&&(T.dottedSlur=!0),ie.triplet!==void 0&&(Q>0?n("Can't nest triplets",k,S):(T.startTriplet=ie.triplet,T.tripletMultiplier=ie.tripletQ/ie.triplet,T.tripletR=ie.num_notes,Q=ie.num_notes===void 0?ie.triplet:ie.num_notes)),S+=ie.consumed),k[S]==="["){S++;for(var ee=null,Oe=!1,Ie=!1;!Ie;){var tt=x(k,S);tt[0]>0&&(S+=tt[0]);var Xe=B(k,S,{},!1);if(Xe!==null&&Xe.pitch!==void 0)tt[0]>0&&tt[1].indexOf("style=")!==0&&(T.decoration===void 0&&(T.decoration=[]),T.decoration.push(tt[1])),Xe.end_beam&&(T.end_beam=!0,delete Xe.end_beam),T.pitches===void 0?(T.duration=Xe.duration,T.pitches=[Xe]):T.pitches.push(Xe),delete Xe.duration,tt[0]>0&&tt[1].indexOf("style=")===0&&(T.pitches[T.pitches.length-1].style=tt[1].substr(6)),s.inTieChord[T.pitches.length]&&(Xe.endTie=!0,s.inTieChord[T.pitches.length]=void 0),Xe.startTie&&(s.inTieChord[T.pitches.length]=!0),S=Xe.endChar,delete Xe.endChar;else if(k[S]===" ")n("Spaces are not allowed in chords",k,S),S++;else{if(S0&&!(T.rest&&T.rest.type==="spacer")&&(Q--,Q===0&&(T.endTriplet=!0));for(var Le=!1;S":case"<":var Te=V(k,S);S+=Te[0]-1,s.next_note_duration=Te[2],ee?ee=ee*Te[1]:ee=Te[1];break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"/":var et=a.getFraction(k,S);ee=et.value,S=et.index;var ce=k[S];ce===" "&&(Oe=!0),ce==="-"||ce===")"||ce===" "||ce==="<"||ce===">"?S--:Le=!0;break;case"0":ee=0;break;default:Le=!0;break}Le||S++}}else n("Expected ']' to end the chords",k,S);T.pitches!==void 0&&(ee!==null&&(T.duration=T.duration*ee,Oe&&G(T)),s.addFormattingOptions(T,r.formatting,"note"),o.appendElement("note",F+re,F+S,T),s.measureNotEmpty=!0,T={}),Ie=!0}}}else{var _e={},ne=B(k,S,_e,!0);if(_e.endTie!==void 0&&O(s,C,!0),ne!==null){ne.pitch!==void 0?(T.pitches=[{}],ne.accidental!==void 0&&(T.pitches[0].accidental=ne.accidental),T.pitches[0].pitch=ne.pitch,T.pitches[0].name=ne.name,(ne.midipitch||ne.midipitch===0)&&(T.pitches[0].midipitch=ne.midipitch),ne.endSlur!==void 0&&(T.pitches[0].endSlur=ne.endSlur),ne.endTie!==void 0&&(T.pitches[0].endTie=ne.endTie),ne.startSlur!==void 0&&(T.pitches[0].startSlur=ne.startSlur),T.startSlur!==void 0&&(T.pitches[0].startSlur=T.startSlur),T.dottedSlur!==void 0&&(T.pitches[0].dottedSlur=!0),ne.startTie!==void 0&&(T.pitches[0].startTie=ne.startTie),T.startTie!==void 0&&(T.pitches[0].startTie=T.startTie)):(T.rest=ne.rest,ne.rest.type==="multimeasure"&&I()&&(s.currBarNumber+=ne.rest.text-1),ne.endSlur!==void 0&&(T.endSlur=ne.endSlur),ne.endTie!==void 0&&(T.rest.endTie=ne.endTie),ne.startSlur!==void 0&&(T.startSlur=ne.startSlur),ne.startTie!==void 0&&(T.rest.startTie=ne.startTie),T.startTie!==void 0&&(T.rest.startTie=T.startTie)),ne.chord!==void 0&&(T.chord=ne.chord),ne.duration!==void 0&&(T.duration=ne.duration),ne.decoration!==void 0&&(T.decoration=ne.decoration),ne.graceNotes!==void 0&&(T.graceNotes=ne.graceNotes),delete T.startSlur,delete T.dottedSlur,y(s,C,T)&&(T.pitches!==void 0?T.pitches[0].endTie=!0:T.rest.type!=="spacer"&&(T.rest.endTie=!0),O(s,C,!1)),(ne.startTie||T.startTie)&&O(s,C,!0),S=ne.endChar,Q>0&&!(ne.rest&&ne.rest.type==="spacer")&&(Q--,Q===0&&(T.endTriplet=!0)),ne.end_beam&&G(T),T.rest&&T.rest.type==="rest"&&T.duration===1&&L(s)<=1&&(T.rest.type="whole",T.duration=L(s)),T.duration<1&&d.indexOf(T.duration)===-1&&T.duration!==0&&(!T.rest||T.rest.type!=="spacer")&&n("Duration not representable: "+k.substring(re,S),k,S),s.addFormattingOptions(T,r.formatting,"note");var me=o.appendElement("note",F+re,F+S,T);me||(this.startNewLine(),o.appendElement("note",F+re,F+S,T)),s.measureNotEmpty=!0,T={}}}S===re&&(k[S]!==" "&&k[S]!=="`"&&n("Unknown character ignored",k,S),S++)}}}this.lineContinuation=k.indexOf("")>=0||Y[0]>0,this.lineContinuation||(T={})}};var O=function(k,S,F){var H=k.currentVoice?k.currentVoice.staffNum*100+k.currentVoice.index:0;k.inTie[S]===void 0&&(k.inTie[S]=[]),k.inTie[S][H]=F},R=function(k,S){if(k[S]==='"'){var F=a.getBrackettedSubstring(k,S,5);if(F[2]||n("Missing the closing quote while parsing the chord symbol",k,S),F[0]>0&&F[1].length>0&&F[1][0]==="^")F[1]=F[1].substring(1),F[2]="above";else if(F[0]>0&&F[1].length>0&&F[1][0]==="_")F[1]=F[1].substring(1),F[2]="below";else if(F[0]>0&&F[1].length>0&&F[1][0]==="<")F[1]=F[1].substring(1),F[2]="left";else if(F[0]>0&&F[1].length>0&&F[1][0]===">")F[1]=F[1].substring(1),F[2]="right";else if(F[0]>0&&F[1].length>0&&F[1][0]==="@"){F[1]=F[1].substring(1);var H=a.getFloat(F[1]);if(H.digits===0)return n("Missing first position in absolutely positioned annotation.",k,S),F[1]=F[1].replace("@",""),F[2]="above",F;if(F[1]=F[1].substring(H.digits),F[1][0]!==",")return n("Missing comma absolutely positioned annotation.",k,S),F[1]=F[1].replace("@",""),F[2]="above",F;F[1]=F[1].substring(1);var Q=a.getFloat(F[1]);if(Q.digits===0)return n("Missing second position in absolutely positioned annotation.",k,S),F[1]=F[1].replace("@",""),F[2]="above",F;F[1]=F[1].substring(Q.digits);var Y=a.skipWhiteSpace(F[1]);F[1]=F[1].substring(Y),F[2]=null,F[3]={x:H.value,y:Q.value}}else s.freegchord!==!0&&(F[1]=F[1].replace(/([ABCDEFG0-9])b/g,"$1♭"),F[1]=F[1].replace(/([ABCDEFG0-9])#/g,"$1♯"),F[1]=F[1].replace(/^([ABCDEFG])([♯♭]?)o([^A-Za-z])/g,"$1$2°$3"),F[1]=F[1].replace(/^([ABCDEFG])([♯♭]?)o$/g,"$1$2°"),F[1]=F[1].replace(/^([ABCDEFG])([♯♭]?)0([^A-Za-z])/g,"$1$2ø$3"),F[1]=F[1].replace(/^([ABCDEFG])([♯♭]?)\^([^A-Za-z])/g,"$1$2∆$3")),F[2]="default",F[1]=e.chordName(s,F[1]);return F}return[0,""]},$=function(k,S){if(k[S]==="{"){var F=a.getBrackettedSubstring(k,S,1,"}");F[2]||n("Missing the closing '}' while parsing grace note",k,S),k[S+F[0]]===")"&&(F[0]++,F[1]+=")");for(var H=[],Q=0,Y=!1;Q0&&(H[H.length-1].endBeam=!0):n("Unknown character '"+F[1][Q]+"' while parsing grace note",k,S),Q++)}if(H.length)return[F[0],H]}return[0]};function P(k,S){if(k[S]==="&"){for(var F=S;k[S]&&k[S]!==":"&&k[S]!=="|";)S++;return[S-F,k.substring(F+1,S)]}return[0]}function L(k){var S=k.origMeter;return!S||S.type!=="specified"||!S.value||S.value.length===0?1:parseInt(S.value[0].num,10)/parseInt(S.value[0].den,10)}var x=function(k,S){var F=s.macros[k[S]];if(F!==void 0)return(F[0]==="!"||F[0]==="+")&&(F=F.substring(1)),(F[F.length-1]==="!"||F[F.length-1]==="+")&&(F=F.substring(0,F.length-1)),u.includes(F)?[1,F]:p.includes(F)?(s.volumePosition==="hidden"&&(F=""),[1,F]):g.includes(F)?(s.dynamicPosition==="hidden"&&(F=""),[1,F]):(s.ignoredDecorations.includes(F)||n("Unknown macro: "+F,k,S),[1,""]);switch(k[S]){case".":if(k[S+1]==="("||k[S+1]==="-")break;return[1,"staccato"];case"u":return[1,"upbow"];case"v":return[1,"downbow"];case"~":return[1,"irishroll"];case"!":case"+":var H=a.getBrackettedSubstring(k,S,5);if(H[1].length>1&&(H[1][0]==="^"||H[1][0]==="_")&&(H[1]=H[1].substring(1)),u.includes(H[1])||H[1].indexOf("class=")===0)return H;if(p.includes(H[1]))return s.volumePosition==="hidden"&&(H[1]=""),H;if(g.includes(H[1]))return s.dynamicPosition==="hidden"&&(H[1]=""),H;var Q=h.findIndex(function(Y){return H[1]===Y[0]});return Q>=0?(H[1]=h[Q][1],H):(Q=m.findIndex(function(Y){return H[1]===Y[0]}),Q>=0?(H[1]=m[Q][1],s.dynamicPosition==="hidden"&&(H[1]=""),H):k[S]==="!"&&(H[0]===1||k[S+H[0]-1]!=="!")?[1,null]:(n("Unknown decoration: "+H[1],k,S),H[1]="",H));case"H":return[1,"fermata"];case"J":return[1,"slide"];case"L":return[1,"accent"];case"M":return[1,"mordent"];case"O":return[1,"coda"];case"P":return[1,"pralltriller"];case"R":return[1,"roll"];case"S":return[1,"segno"];case"T":return[1,"trill"];case"t":return[1,"trillh"]}return[0,0]},U=function(k,S){for(var F=S;a.isWhiteSpace(k[S]);)S++;return[S-F]},D=function(k,S){var F=a.getBarLine(k,S);if(F.len===0)return[0,""];if(F.warn)return n(F.warn,k,S),[F.len,""];for(var H=0;H="2"&&k[S+1]<="9"?(F.triplet!==void 0?n("Can't nest triplets",k,S):(F.triplet=k[S+1]-"0",F.tripletQ=v[F.triplet],F.num_notes=F.triplet,S+2="1"&&k[S+4]<="9"?(F.num_notes=k[S+4]-"0",S+=3):n("expected number after the two colons after the triplet to mark the duration",k,S):S+3="1"&&k[S+3]<="9"?(F.tripletQ=k[S+3]-"0",S+4="1"&&k[S+5]<="9"&&(F.num_notes=k[S+5]-"0",S+=4):S+=2):n("expected number after the triplet to mark the duration",k,S))),S++):F.startSlur===void 0?F.startSlur=1:F.startSlur++),S++;return F.consumed=S-H,F};w.prototype.startNewLine=function(){var k={startChar:-1,endChar:-1};s.partForNextLine.title&&(k.part=s.partForNextLine),k.clef=s.currentVoice&&s.staves[s.currentVoice.staffNum].clef!==void 0?Object.assign({},s.staves[s.currentVoice.staffNum].clef):Object.assign({},s.clef);var S=s.currentVoice?s.currentVoice.scoreTranspose:0;if(k.key=t.standardKey(s.key.root+s.key.acc+s.key.mode,s.key.root,s.key.acc,S),k.key.mode=s.key.mode,s.key.impliedNaturals&&(k.key.impliedNaturals=s.key.impliedNaturals),s.key.explicitAccidentals)for(var F=0;F=0?(F.duration=r.getBarLength(),F.rest.text=1,C="Zduration"):(H&&s.next_note_duration!==0?(F.duration=s.default_length*s.next_note_duration,s.next_note_duration=0,re=!0):F.duration=s.default_length,C="duration");else return Q(C)?(F.endChar=S,F):null;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"0":case"/":if(C==="octave"||C==="duration"){var ie=a.getFraction(k,S);for(F.duration=F.duration*ie.value,F.endChar=ie.index;ie.index"))S--,C="broken_rhythm";else return F}else return null;break;case">":case"<":if(Q(C))if(H){var se=V(k,S);S+=se[0]-1,s.next_note_duration=se[2],F.duration=se[1]*F.duration,C="end_slur"}else return F.endChar=S,F;else return null;break;default:return Q(C)?(F.endChar=S,F):null}if(S++,S===k.length)return Q(C)?(F.endChar=S,F):null}return null},V=function(k,S){switch(k[S]){case">":return S"&&k[S+2]===">"?[3,1.875,.125]:S"?[2,1.75,.25]:[1,1.5,.5];case"<":return S=f.length};this.eatWhiteSpace=function(f,d){for(var c=d;c="a"&&b[v]<="z"||b[v]>="A"&&b[v]<="Z");)v++;return v},c=this.skipWhiteSpace(f);if(s(f,c))return{len:0};var _=f.substring(c,c+3).toLowerCase();switch((_.length>1&&_[1]===" "||_[1]==="^"||_[1]==="_"||_[1]==="=")&&(_=_[0]),_){case"mix":return{len:d(f,c),token:"Mix"};case"dor":return{len:d(f,c),token:"Dor"};case"phr":return{len:d(f,c),token:"Phr"};case"lyd":return{len:d(f,c),token:"Lyd"};case"loc":return{len:d(f,c),token:"Loc"};case"aeo":return{len:d(f,c),token:"m"};case"maj":return{len:d(f,c),token:""};case"ion":return{len:d(f,c),token:""};case"min":return{len:d(f,c),token:"m"};case"m":return{len:d(f,c),token:"m"}}return{len:0}},this.getClef=function(f,d){var c=f,_=this.skipWhiteSpace(f);if(s(f,_))return{len:0};var b=!1,v=f.substring(_);if(t.startsWith(v,"clef=")&&(b=!0,v=v.substring(5),_+=5),v.length===0&&b)return{len:_+5,warn:"No clef specified: "+c};var w=this.skipWhiteSpace(v);if(s(v,w))return{len:0};w>0&&(_+=w,v=v.substring(w));var y=null;if(t.startsWith(v,"treble"))y="treble";else if(t.startsWith(v,"bass3"))y="bass3";else if(t.startsWith(v,"bass"))y="bass";else if(t.startsWith(v,"tenor"))y="tenor";else if(t.startsWith(v,"alto2"))y="alto2";else if(t.startsWith(v,"alto1"))y="alto1";else if(t.startsWith(v,"alto"))y="alto";else if(!d&&b&&t.startsWith(v,"none"))y="none";else if(t.startsWith(v,"perc"))y="perc";else if(!d&&b&&t.startsWith(v,"C"))y="tenor";else if(!d&&b&&t.startsWith(v,"F"))y="bass";else if(!d&&b&&t.startsWith(v,"G"))y="treble";else return{len:_+5,warn:"Unknown clef specified: "+c};return v=v.substring(y.length),w=this.isMatch(v,"+8"),w>0?y+="+8":(w=this.isMatch(v,"-8"),w>0&&(y+="-8")),{len:_+y.length,token:y,explicit:b}},this.getBarLine=function(f,d){switch(f[d]){case"]":switch(++d,f[d]){case"|":return{len:2,token:"bar_thick_thin"};case"[":return++d,f[d]>="1"&&f[d]<="9"||f[d]==='"'?{len:2,token:"bar_invisible"}:{len:1,warn:"Unknown bar symbol"};default:return{len:1,token:"bar_invisible"}}case":":switch(++d,f[d]){case":":return{len:2,token:"bar_dbl_repeat"};case"|":switch(++d,f[d]){case"]":return++d,f[d]==="|"?(++d,f[d]===":"?{len:5,token:"bar_dbl_repeat"}:{len:3,token:"bar_right_repeat"}):{len:3,token:"bar_right_repeat"};case"|":return++d,f[d]===":"?{len:4,token:"bar_dbl_repeat"}:{len:3,token:"bar_right_repeat"};default:return{len:2,token:"bar_right_repeat"}}default:return{len:1,warn:"Unknown bar symbol"}}case"[":if(++d,f[d]==="|")switch(++d,f[d]){case":":return{len:3,token:"bar_left_repeat"};case"]":return{len:3,token:"bar_invisible"};default:return{len:2,token:"bar_thick_thin"}}else return f[d]>="1"&&f[d]<="9"||f[d]==='"'?{len:1,token:"bar_invisible"}:{len:0};case"|":switch(++d,f[d]){case"]":return{len:2,token:"bar_thin_thick"};case"|":return++d,f[d]===":"?{len:3,token:"bar_left_repeat"}:{len:2,token:"bar_thin_thin"};case":":for(var c=0;f[d+c]===":";)c++;return{len:1+c,token:"bar_left_repeat"};default:return{len:1,token:"bar_thin"}}}return{len:0}},this.getTokenOf=function(f,d){for(var c=0;c0;){var c;if(f[0].token==="^"){if(c="sharp",f.shift(),f.length===0)return{accs:d,warn:"Expected note name after "+c};switch(f[0].token){case"^":c="dblsharp",f.shift();break;case"/":c="quartersharp",f.shift();break}}else if(f[0].token==="=")c="natural",f.shift();else if(f[0].token==="_"){if(c="flat",f.shift(),f.length===0)return{accs:d,warn:"Expected note name after "+c};switch(f[0].token){case"_":c="dblflat",f.shift();break;case"/":c="quarterflat",f.shift();break}}else return{accs:d};if(f.length===0)return{accs:d,warn:"Expected note name after "+c};switch(f[0].token[0]){case"a":case"b":case"c":case"d":case"e":case"f":case"g":case"A":case"B":case"C":case"D":case"E":case"F":case"G":d===void 0&&(d=[]),d.push({acc:c,note:f[0].token[0]}),f[0].token.length===1?f.shift():f[0].token=f[0].token.substring(1);break;default:return{accs:d,warn:"Expected note name after "+c+" Found: "+f[0].token}}}return{accs:d}},this.getKeyAccidental=function(f){var d={"^":"sharp","^^":"dblsharp","=":"natural",_:"flat",__:"dblflat","_/":"quarterflat","^/":"quartersharp"},c=this.skipWhiteSpace(f);if(s(f,c))return{len:0};var _=null;switch(f[c]){case"^":case"_":case"=":_=f[c];break;default:return{len:0}}if(c++,s(f,c))return{len:1,warn:"Expected note name after accidental"};switch(f[c]){case"a":case"b":case"c":case"d":case"e":case"f":case"g":case"A":case"B":case"C":case"D":case"E":case"F":case"G":return{len:c+1,token:{acc:d[_],note:f[c]}};case"^":case"_":case"/":if(_+=f[c],c++,s(f,c))return{len:2,warn:"Expected note name after accidental"};switch(f[c]){case"a":case"b":case"c":case"d":case"e":case"f":case"g":case"A":case"B":case"C":case"D":case"E":case"F":case"G":return{len:c+1,token:{acc:d[_],note:f[c]}};default:return{len:2,warn:"Expected note name after accidental"}}break;default:return{len:1,warn:"Expected note name after accidental"}}},this.isWhiteSpace=function(f){return f===" "||f===" "||f===""},this.getMeat=function(f,d,c){var _=f.indexOf("%",d);for(_>=0&&_="A"&&f<="Z"||f>="a"&&f<="z"},o=function(f){return f>="0"&&f<="9"};this.tokenize=function(f,d,c,_){var b=this.getMeat(f,d,c);d=b.start,c=b.end;for(var v=[],w;d=c?{len:1,err:"Missing close quote"}:{len:b-d+1,token:this.translateString(f.substring(_+1,b))}}else{for(var v=_;v=0?t.strip(f.substring(0,d)):t.strip(f)},this.getInt=function(f){var d=parseInt(f);if(isNaN(d))return{digits:0};var c=""+d,_=f.indexOf(c);return{value:d,digits:_+c.length}},this.getFloat=function(f){var d=parseFloat(f);if(isNaN(d))return{digits:0};var c=""+d,_=f.indexOf(c);return{value:d,digits:_+c.length}},this.getMeasurement=function(f){if(f.length===0)return{used:0};var d=1,c="";if(f[0].token==="-")f.shift(),c="-",d++;else if(f[0].type!=="number")return{used:0};if(c+=f.shift().token,f.length===0)return{used:1,value:parseInt(c)};var _=f.shift();if(_.token==="."){if(d++,f.length===0)return{used:d,value:parseInt(c)};if(f[0].type==="number"&&(_=f.shift(),c=c+"."+_.token,d++,f.length===0))return{used:d,value:parseFloat(c)};_=f.shift()}switch(_.token){case"pt":return{used:d+1,value:parseFloat(c)};case"px":return{used:d+1,value:parseFloat(c)};case"cm":return{used:d+1,value:parseFloat(c)/2.54*72};case"in":return{used:d+1,value:parseFloat(c)*72};default:return f.unshift(_),{used:d,value:parseFloat(c)}}};var m=function(f){return f=f.replace(/\\n/g,` -`),f=f.replace(/\\"/g,'"'),f};this.getBrackettedSubstring=function(f,d,c,_){for(var b=_||f[d],v=d+1,w=!1;vf.length-1&&(v=f.length-1),[v-d+1,m(f.substring(d+1,v)),!1])}};return e.prototype.peekLine=function(){return this.lines[this.lineIndex]},e.prototype.nextLine=function(){if(this.lineIndex>0&&(this.multilineVars.iChar+=this.lines[this.lineIndex-1].length+1),this.lineIndex0&&(f[v.line].staff[v.staff].barNumber=_);for(var y=Object.keys(w),T=0;T=0;$--)if(R[$].el_type==="key"){d[v.staff]={root:R[$].root,acc:R[$].acc,mode:R[$].mode,accidentals:R[$].accidentals.filter(function(L){return L.acc!=="natural"})};break}for($=R.length-1;$>=0;$--)if(R[$].el_type==="stem"){c[v.staff*10+v.voice]={direction:R[$].direction};break}if(m!==void 0&&v.staff===0&&v.voice===0)for($=0;$0?(m.push(c-1),f.push(Math.round(d-_)),d=_):cc&&Tc?(v.push(T-1),b++,_=Math.max(_,c),c=Math.abs(m-h[b]),d.push(f-O),f=O):c=R}d.push(f)}function o(g,h,m,f){for(var d=Math.ceil(g.total/h),c=Math.floor(g.total/d),_=[],b=0;bh&&(_=!0),b%m===m-1&&(b!==g.length-1&&f.push(b),d.push(Math.round(c)),c=0);return{failed:_,totals:d,lineBreaks:f}}function u(g,h,m){var f={lineBreaks:g,staffwidth:h};for(var d in m)m.hasOwnProperty(d)&&d!=="wrap"&&d!=="staffwidth"&&(f[d]=m[d]);return{revisedParams:f}}function p(g,h,m){if(h.length===0||m.staffwidth0&&T.measureWidths.length<25&&(D=o(T,R,x,L),L.attempts.push({type:"Optimize",failed:D.failed,reason:D.reason,lineBreaks:D.lineBreaks,totals:D.totals}),D.failed||(x=D.lineBreaks))}v.push(x),w.push(L)}var M=m.staffwidth,G=u(v,M,m);return G.explanation=w,G.reParse=!0,G}return fp={wrapLines:t,calcLineWraps:p},fp}var mp,ny;function MC(){if(ny)return mp;ny=1;function t(u){const p=u.getMeterFraction(),g=p.num===4&&p.den===4;if(!(p.num===2&&p.den===2)&&!g)throw new Error("notCommonTime");const m=u.deline();let f=[],d=!1;return m.forEach(c=>{if(c.subtitle)d&&f.push({type:"subtitle",subtitle:c.subtitle.text});else if(c.text)d=!0,f.push({type:"text",text:c.text.text});else if(c.staff){d=!0;const _=c.staff,b=a(_);f=f.concat(b)}}),s(f),r(f),o(f),f}const e=["break","(break)","no chord","n.c.","tacet"];function a(u){const p=[];let g="",h=[],m={chord:["","","",""]},f="",d="";if(u.forEach((c,_)=>{c.voices&&c.voices.forEach((b,v)=>{let w=0,y=0;b.forEach(T=>{if(T.el_type==="part")h.length>0&&_===0&&v===0&&(p.push({type:"part",name:g,lines:[h]}),h=[]),g=T.title;else if(T.el_type==="note"){l(T,m);const O=Math.floor(w);if(T.chord&&T.chord.length>0){const R=T.chord[0],$=R.position==="default"||e.indexOf(R.name.toLowerCase())>=0?R.name:"";$&&(O>0&&!m.chord[0]&&(m.chord[0]=f),f=$,m.chord[O]?O<4&&!m.chord[O+1]&&(m.chord[O+1]=$):m.chord[O]=$),T.chord.forEach(P=>{P.position!=="default"&&e.indexOf(R.name.toLowerCase())<0&&(m.annotations||(m.annotations=[]),m.annotations.push(P.name))})}if(!T.rest||T.rest.type!=="spacer"){const R=T.duration===0&&!T.rest?.25:T.duration,$=Math.floor(R*4);if($>4)y+=Math.floor($/4),w=0;else{let P=R*4;T.tripletMultiplier&&(P*=T.tripletMultiplier),w+=P}}}else if(T.el_type==="bar"){if(d&&(m.ending=d,d=""),l(T,m),T.chord&&T.chord.forEach(O=>{O.position!=="default"&&(m.annotations||(m.annotations=[]),m.annotations.push(O.name))}),(T.type==="bar_dbl_repeat"||T.type==="bar_left_repeat")&&(m.hasStartRepeat=!0),(T.type==="bar_dbl_repeat"||T.type==="bar_right_repeat")&&(m.hasEndRepeat=!0),T.startEnding&&(d=T.startEnding),w>=4){if(m.chord[0]===""&&(m.chord[1]||m.chord[2]||m.chord[3])&&(m.chord[0]=n(h)),_===0&&v===0)h.push(m);else{let O=y,R=0;for(;O>=p[R].lines[0].length&&R=0;p--)for(let g=u[p].chord.length-1;g>=0;g--)if(u[p].chord[g])return u[p].chord[g]}function s(u){u.forEach(p=>{if(p.type==="part"){const g=p.lines[0],h=g.findIndex(f=>!!f.ending),m=g.findIndex((f,d)=>d>h&&!!f.ending);if(h>=0&&m>=0&&m-h===g.length-m){let f=!0;for(let d=0;d{if(p.type==="part"){const g=[],h=p.lines[0];let m=!1;const f=h.findIndex(_=>!!_.hasEndRepeat);(f>=0?Math.min(f+1,h.length):h.length)===12&&(m=!0);const c=m?4:8;for(let _=0;_!!w.hasEndRepeat);v>=0&&v{if(p.lines){let g=!1,h="";p.lines.forEach(m=>{m.forEach(f=>{if(!f.noBorder){const d=f.chord;!d[0]&&!d[1]&&!d[2]&&!d[3]?(g?h&&(d[0]="%"):d[0]=h,g=!0):!d[1]&&!d[2]&&!d[3]?(g=!0,h=d[0]):(g=!1,h=d[3]||d[2]||d[1])}})})}})}function l(u,p){if(u.decoration)for(let g=0;g0&&this.sections[this.sections.length-1].type==="endRepeat"&&this.sections.push({type:"startRepeat",index:this.sections[this.sections.length-1].index}),this.sections.push({type:"endRepeat",index:u})),h&&this.sections.push({type:"startEnding",index:u,endings:h}),p&&this.sections.push({type:"startRepeat",index:u})},this.resolveRepeats=function(){var l,u=this.sections[this.sections.length-1],p=o.length-1;if(u.type==="startRepeat"?u.end=p:u.index+10)for(l=0;l0&&a(o,c,w.start,w.end),_=Math.max(_,w.end))}}return c}}function a(o,l,u,p){u<0&&(u=0),l.length>0&&o[u].el_type==="bar"&&l[l.length-1].el_type==="bar"&&u++;for(var g=u;g<=p;g++){var h,m=!1;if(o[g].el_type==="key"||o[g].el_type==="meter"||o[g].el_type==="tempo"||o[g].el_type==="instrument"){for(h=l.length-1;h>=0&&l[h].el_type!==o[g].el_type;)h--;h>=0&&(o[g].el_type==="key"&&s(o[g],l[h])||o[g].el_type==="meter"&&o[g].num===l[h].num&&o[g].den===l[h].den||o[g].el_type==="instrument"&&o[g].program===l[h].program||o[g].el_type==="tempo"&&o[g].qpm===l[h].qpm)&&(m=!0)}m||l.push(n(o[g]))}}function n(o){var l=Object.assign({},o);return l.pitches&&(l.pitches=t.cloneArray(l.pitches)),l}function s(o,l){return!o.accidentals||!l.accidentals?!1:JSON.stringify(o.accidentals)===JSON.stringify(l.accidentals)}function r(o){var l=[],u,p,g;if(o.indexOf(",")>0)for(p=o.split(","),g=0;g0&&l.push(u);else if(o.indexOf("-")>0){p=o.split("-");var h=parseInt(p[0],10),m=parseInt(p[1],10);for(g=h;g<=m;g++)l.push(g)}else u=parseInt(o,10),u>0&&l.push(u);return l}return gp=e,gp}var hp,oy;function ly(){if(oy)return hp;oy=1;var t,e=Xs(),a=EC();return(function(){var n=1,s=128;t=function(_,b){b=b||{};var v,w=b.program||0,y=b.midiTranspose||0;_.visualTranspose&&(y-=_.visualTranspose);var T=b.channel||0,O=!1,R=b.drum||"",$=b.drumBars||1,P=b.drumIntro||0,L=R!=="",x=!!b.drumOff,U=[],D=50;w=parseInt(w,10),y=parseInt(y,10),T=parseInt(T,10),T===10&&(w=s),R=R.split(" "),$=parseInt($,10),P=parseInt(P,10);var M=_.formatting.bagpipes;M&&(w=71);var G=[];if(_.formatting.midi){var B=_.formatting.midi;B.program&&B.program.length>0&&(w=B.program[0],B.program.length>1&&(w=B.program[1],T=B.program[0]),O=!0),B.transpose&&(y=B.transpose[0]),B.channel&&(T=B.channel[0],O=!0),B.drum&&(R=B.drum),B.drumbars&&($=B.drumbars[0]),B.drumon&&(L=!0),T===10&&(w=s),B.beat&&G.push({el_type:"beat",beats:B.beat}),B.nobeataccents&&G.push({el_type:"beataccents",value:!1})}b.qpm?v=parseInt(b.qpm,10):_.metaText.tempo?v=g(_.metaText.tempo,_.getBeatLength()):b.defaultQpm?v=b.defaultQpm:v=180;var V=[];M&&V.push({el_type:"bagpipes"}),V.push({el_type:"instrument",program:w}),T&&V.push({el_type:"channel",channel:T}),y&&V.push({el_type:"transpose",transpose:y}),V.push({el_type:"tempo",qpm:v});for(var I=0;I=0?nt="pppp":xe.decoration.indexOf("ppp")>=0?nt="ppp":xe.decoration.indexOf("pp")>=0?nt="pp":xe.decoration.indexOf("p")>=0?nt="p":xe.decoration.indexOf("mp")>=0?nt="mp":xe.decoration.indexOf("mf")>=0?nt="mf":xe.decoration.indexOf("f")>=0?nt="f":xe.decoration.indexOf("ff")>=0?nt="ff":xe.decoration.indexOf("fff")>=0?nt="fff":xe.decoration.indexOf("ffff")>=0&&(nt="ffff"),nt){C=He[nt].slice(0);let wt=[C];Array.isArray(xe.decoration)&&(wt=[],xe.decoration.forEach(qt=>{qt in He&&wt.push(He[qt].slice(0))})),k[ae].push({el_type:"beat",beats:C.slice(0),volumesPerNotePitch:wt}),F[Oe]=!1,H[Oe]=!1}if(xe.decoration.indexOf("crescendo(")>=0){var je=r(Ie,_e,"crescendo)"),Zt=Math.min(127,C[0]+D),Pe=o(Ie,_e+je+1,Object.keys(He));Pe&&(Zt=He[Pe][0]),je>0?F[Oe]=Math.floor((Zt-C[0])/je):F[Oe]=!1,H[Oe]=!1}else if(xe.decoration.indexOf("crescendo)")>=0)F[Oe]=!1;else if(xe.decoration.indexOf("diminuendo(")>=0){var We=r(Ie,_e,"diminuendo)"),$t=Math.max(15,C[0]-D),dt=o(Ie,_e+We+1,Object.keys(He));dt&&($t=He[dt][0]),F[Oe]=!1,We>0?H[Oe]=Math.floor(($t-C[0])/We):H[Oe]=!1}else xe.decoration.indexOf("diminuendo)")>=0&&(H[Oe]=!1)}};for(var we=se.staff,ae=0,Re=0;Re=0?(k[ae].push({el_type:"transpose",transpose:-12}),S[ae]=!0):ee.clef.type.indexOf("+8")>=0?(k[ae].push({el_type:"transpose",transpose:12}),S[ae]=!0):S[ae]&&(k[ae].push({el_type:"transpose",transpose:0}),S[ae]=!1)),_.formatting.midi&&_.formatting.midi.drumoff&&(k[ae].push({el_type:"bar"}),k[ae].push({el_type:"drum",params:{pattern:"",on:!1}}));var Le=0,Te=0,et=0,ce=0;C=[105,95,85,1];for(var _e=0;_e=0?k[ae].push({el_type:"transpose",transpose:-12}):ne.type.indexOf("+8")>=0&&k[ae].push({el_type:"transpose",transpose:12}));break;case"tempo":v=g(ne,_.getBeatLength()),k[ae].push({el_type:"tempo",qpm:v,timing:Q[ae]}),Y[""+Q[ae]]={el_type:"tempo",qpm:v,timing:Q[ae]};break;case"bar":Le>0&&k[ae].push({el_type:"bar"}),Ee(ne),Le=0,re[ae].addBar(ne,ae);break;case"style":U[ae]=ne.head;break;case"timeSignature":k[ae].push(h(ne));break;case"part":break;case"stem":case"scale":case"break":case"font":break;case"midi":var Se=!1;switch(ne.cmd){case"drumon":L=!0,Se=!0;break;case"drumoff":L=!1,Se=!0;break;case"drum":R=ne.params,Se=!0;break;case"drumbars":$=ne.params[0],Se=!0;break;case"drummap":break;case"channel":ne.params[0]===10&&k[ae].push({el_type:"instrument",program:s});break;case"program":c(k[ae],{el_type:"instrument",program:ne.params[0]}),O=!0;break;case"transpose":k[ae].push({el_type:"transpose",transpose:ne.params[0]});break;case"gchordoff":k[ae].push({el_type:"gchordOn",tacet:!0});break;case"gchordon":k[ae].push({el_type:"gchordOn",tacet:!1});break;case"beat":k[ae].push({el_type:"beat",beats:ne.params});break;case"nobeataccents":k[ae].push({el_type:"beataccents",value:!1});break;case"beataccents":k[ae].push({el_type:"beataccents",value:!0});break;case"vol":case"volinc":k[ae].push({el_type:ne.cmd,volume:ne.params[0]});break;case"swing":case"gchord":case"bassvol":case"chordvol":k[ae].push({el_type:ne.cmd,param:ne.params[0]});break;case"bassprog":case"chordprog":k[ae].push({el_type:ne.cmd,value:ne.params[0],octaveShift:ne.params[1]});break;case"gchordbars":k[ae].push({el_type:ne.cmd,param:ne.params[0]});break;default:console.log("MIDI seq: midi cmd not handled: ",ne.cmd,ne)}Se&&(k[0].push({el_type:"drum",params:{pattern:R,bars:$,intro:P,on:L}}),he=!0);break;default:console.log("MIDI: element type "+ne.el_type+" not handled.")}}ae++,Q[ae]||(Q[ae]=0)}}}}for(var Me=0;MeQe;)Qe++;if(k[ze].length>Qe){for(var pe=0;pe0&&k[0].length>0&&(k[0][0].pickupLength=_.getPickupLength()),k};function r(_,b,v){for(var w=0,y=b+1;y<_.length;y++)if(_[y].el_type==="note"&&w++,_[y].decoration&&_[y].decoration.indexOf(v)>=0)return w;return w}function o(_,b,v){for(var w=Math.min(_.length,b+3),y=b;y=0)return _[y].decoration[T]}return null}function l(_,b){if(!(!b||b.length===0))for(var v=Object.keys(b),w=0;w<_.length;w++)for(var y=_[w],T=b[0]?b[0].qpm:0,O=0;O=0&&T!==b[""+R.timing].qpm&&(T=b[""+R.timing].qpm,R.el_type==="tempo"?(R.qpm=b[""+R.timing].qpm,O++):(_[w].splice(O,0,{el_type:"tempo",qpm:b[""+R.timing].qpm,timing:R.timing}),O+=2))}}function u(_){for(var b=0;b<_.length;b++)for(var v=_[b],w=v.length-1;w>=0&&v[w].el_type!=="bar";)v[w].noChordVoice=!0,w--}function p(_,b){if(!(!_||_.length<=b||!_[b].title))return _[b].title.join(" ")}function g(_,b){var v=.25;_.duration&&(v=_.duration[0]);var w=60;return _.bpm&&(w=_.bpm),v*w/b}function h(_){var b;switch(_.type){case"common_time":b={el_type:"meter",num:4,den:4},n=4/4;break;case"cut_time":b={el_type:"meter",num:2,den:2},n=2/2;break;case"specified":let y=0;if(_.value&&_.value.length>0&&_.value[0].num.indexOf("+")>0)for(var v=_.value[0].num.split("+"),w=0;w=0;v--)if(_[v].el_type===b.el_type){JSON.stringify(_[v])!==JSON.stringify(b)&&_.push(b);return}_.push(b)}})(),hp=t,hp}var _p,cy;function zC(){if(cy)return _p;cy=1;var t=function(g,h,m,f){this.chordTrack=[],this.chordTrackFinished=!1,this.chordChannel=g,this.currentChords=[],this.lastChord,this.chordLastBar,this.chordsOff=!!h,this.gChordTacet=this.chordsOff,this.hasRhythmHead=!1,this.transpose=0,this.lastBarTime=0,this.meter=f,this.tempoChangeFactor=1,this.bassInstrument=m.bassprog&&m.bassprog.length>=1?m.bassprog[0]:0,this.chordInstrument=m.chordprog&&m.chordprog.length>=1?m.chordprog[0]:0,this.bassOctaveShift=m.bassprog&&m.bassprog.length===2?m.bassprog[1]:0,this.chordOctaveShift=m.chordprog&&m.chordprog.length===2?m.chordprog[1]:0,this.boomVolume=m.bassvol&&m.bassvol.length===1?m.bassvol[0]:64,this.chickVolume=m.chordvol&&m.chordvol.length===1?m.chordvol[0]:48,m.gchord&&m.gchord.length>0?this.overridePattern=n(m.gchord[0]):this.overridePattern=void 0};t.prototype.setMeter=function(p){this.meter=p},t.prototype.setTempoChangeFactor=function(p){this.tempoChangeFactor=p},t.prototype.setLastBarTime=function(p){this.lastBarTime=p},t.prototype.setTranspose=function(p){this.transpose=p},t.prototype.setRhythmHead=function(p,g){this.hasRhythmHead=p;var h=[];if(p&&this.lastChord&&this.lastChord.chick)for(var m=0;m0&&!this.chordTrackFinished&&(this.resolveChords(this.lastBarTime,l(p.time)),this.currentChords=[]),this.chordLastBar=this.lastChord},t.prototype.gChordOn=function(p){this.chordsOff||(this.gChordTacet=p.tacet)},t.prototype.paramChange=function(p){switch(p.el_type){case"gchord":p.param&&p.param.length>0?this.overridePattern=n(p.param):this.overridePattern=void 0;break;case"bassprog":this.bassInstrument=p.value,p.octaveShift!=null&&p.octaveShift!=null?this.bassOctaveShift=p.octaveShift:this.bassOctaveShift=0;break;case"chordprog":this.chordInstrument=p.value,p.octaveShift!=null&&p.octaveShift!=null?this.chordOctaveShift=p.octaveShift:this.chordOctaveShift=0;break;case"bassvol":this.boomVolume=p.param;break;case"chordvol":this.chickVolume=p.param;break;default:console.log("unhandled midi param",p)}},t.prototype.finish=function(){this.chordTrackEmpty()||(this.chordTrackFinished=!0)},t.prototype.addTrack=function(p){this.chordTrackEmpty()||p.push(this.chordTrack)},t.prototype.findChord=function(p){if(this.gChordTacet)return"break";if(this.chordTrackFinished||!p.chord||p.chord.length===0)return null;for(var g=0;g=0)return"break"}return null},t.prototype.interpretChord=function(p){if(p.length!==0){if(p==="break")return{chick:[]};var g=p.substring(0,1);if(g==="("){if(p=p.substring(1,p.length-1),p.length===0)return;g=p.substring(0,1)}var h=this.basses[g];if(h){for(var m=this.transpose;m<-8;)m+=12;for(;m>8;)m-=12;h+=m,h<33?h+=12:h>44&&(h-=12);var f=h;h+=this.bassOctaveShift*12;var d=h-5,c;p.length===1&&(c=this.chordNotes(h,""));var _=p.substring(1),b=_.substring(0,1);b==="b"||b==="♭"?(f--,h--,d--,_=_.substring(1)):(b==="#"||b==="♯")&&(f++,h++,d++,_=_.substring(1));var v=_.split("/");if(c=this.chordNotes(f,v[0]),c.length>=3){var w=c[2]-c[0];d=d+w-7}if(v.length===2){var y=this.basses[v[1].substring(0,1)];if(y){var T=v[1].substring(1),O={"#":1,"♯":1,b:-1,"♭":-1}[T]||0;h=this.basses[v[1].substring(0,1)]+O+m,h+=this.bassOctaveShift*12,d=h}}return{boom:h,boom2:d,chick:c}}}},t.prototype.chordNotes=function(p,g){g=g.replace(/♭/g,"b").replace(/♯/g,"#");var h=o[g];h||(g.slice(0,2).toLowerCase()==="ma"||g[0]==="M"?h=o.M:g[0]==="m"||g[0]==="-"?h=o.m:h=o.M),p+=12,p+=this.chordOctaveShift*12;for(var m=[],f=0;f0&&b[y-1]&&b[y]&&b[y-1].boom!==b[y].boom&&(T=!0);var R=v[y],$=R.indexOf("boom")>=0,P=!$&&y!==0&&v[0].indexOf("boom")>=0&&(!b[y-1]||b[y-1].boom!==b[y].boom),L=e(b[y],R,T,P);$&&(T=!1);for(var x=0;x=0?f.push(h?p.boom:p.boom2):m&&f.push(p.boom);var d=p.chick.length;if(g.indexOf("chick")>=0)for(var c=0;c0&&ce[0].length>0&&(M=ce[0][0].pickupLength),_e.bassprog!==void 0&&!me.bassprog&&(me.bassprog=[_e.bassprog]),_e.bassvol!==void 0&&!me.bassvol&&(me.bassvol=[_e.bassvol]),_e.chordprog!==void 0&&!me.chordprog&&(me.chordprog=[_e.chordprog]),_e.chordvol!==void 0&&!me.chordvol&&(me.chordvol=[_e.chordvol]),_e.gchord!==void 0&&!me.gchord&&(me.gchord=[_e.gchord]),d=new e(ce.length,_e.chordsOff,me,c),H(ce,_e);for(var ve=0;ve=0)&&(Se=!0);for(var Me=0;Me0&&h[h.length-1].cmd==="program")h[h.length-1].instrument=ge.program;else{var ze;for(ze=h.length-1;ze>=0&&h[ze].cmd!=="program";ze--);(ze<0||h[ze].instrument!==ge.program)&&h.push({cmd:"program",channel:0,instrument:ge.program})}break;case"channel":k(ge.channel);break;case"drum":U=Xe(ge.params),Le();break;case"gchordOn":d.gChordOn(ge);break;case"beat":w=ge.beats[0],y=ge.beats[1],T=ge.beats[2],ge.volumesPerNotePitch?O=ge.volumesPerNotePitch:O=[];break;case"vol":$=ge.volume;break;case"volinc":P=ge.volume;break;case"beataccents":v=ge.value;break;case"gchord":case"bassprog":case"chordprog":case"bassvol":case"chordvol":case"gchordbars":d.paramChange(ge);break;default:console.log("MIDI creation. Unknown el_type: "+ge.el_type+` -`);break}}h[0].instrument===void 0&&(h[0].instrument=p||0),m&&h.unshift(m),o.push(h),d.finish(),x.length>0}return _e.detuneOctave&&et(o,parseInt(_e.detuneOctave,10)),d.addTrack(o),x.length>0&&o.push(x),{tempo:l,instrument:p,tracks:o,totalDuration:f}};function k(ce){for(var _e=h.length-1;_e>=0;_e--)if(h[_e].cmd==="program"){h[_e].channel=ce;return}}function S(ce){return ce/1e6}function F(ce){return Math.round(ce*u*1e6)/1e6}function H(ce,_e){for(var ne=0;ne=ne+1&&(me=O[ne][0],ve=O[ne][1],pe=O[ne][2]);var Se;if($!==void 0)Se=$,$=void 0;else if(!v)Se=ve;else if(M>ce)Se=pe;else{var Me=Y(b,Q(c),ce);Me===0?Se=me:parseInt(Me,10)===Me?Se=ve:Se=pe}return P&&(Se+=P,P=void 0),Se<0&&(Se=0),Se>127&&(Se=127),_e?0:Se}function re(ce,_e){var ne={};if(ce.decoration)for(var me=0;me0;)h.push({cmd:"note",pitch:_e.pitch+pe,volume:_e.volume,start:ne,duration:ve,gap:0,instrument:g,style:"decoration"}),pe=pe===2?0:2,me-=ve,ne+=ve;break;case"trillh":for(var pe=1;me>0;)h.push({cmd:"note",pitch:_e.pitch+pe,volume:_e.volume,start:ne,duration:ve,gap:0,instrument:g,style:"decoration"}),pe=pe===1?0:1,me-=ve,ne+=ve;break;case"pralltriller":h.push({cmd:"note",pitch:_e.pitch,volume:_e.volume,start:ne,duration:ve,gap:0,instrument:g,style:"decoration"}),me-=ve,ne+=ve,h.push({cmd:"note",pitch:_e.pitch+2,volume:_e.volume,start:ne,duration:ve,gap:0,instrument:g,style:"decoration"}),me-=ve,ne+=ve,h.push({cmd:"note",pitch:_e.pitch,volume:_e.volume,start:ne,duration:me,gap:0,instrument:g});break;case"mordent":case"lowermordent":h.push({cmd:"note",pitch:_e.pitch,volume:_e.volume,start:ne,duration:ve,gap:0,instrument:g,style:"decoration"}),me-=ve,ne+=ve,h.push({cmd:"note",pitch:_e.pitch-2,volume:_e.volume,start:ne,duration:ve,gap:0,instrument:g,style:"decoration"}),me-=ve,ne+=ve,h.push({cmd:"note",pitch:_e.pitch,volume:_e.volume,start:ne,duration:me,gap:0,instrument:g});break;case"turn":ve=_e.duration/4,h.push({cmd:"note",pitch:_e.pitch+2,volume:_e.volume,start:ne,duration:ve,gap:0,instrument:g,style:"decoration"}),h.push({cmd:"note",pitch:_e.pitch,volume:_e.volume,start:ne+ve,duration:ve,gap:0,instrument:g,style:"decoration"}),h.push({cmd:"note",pitch:_e.pitch-1,volume:_e.volume,start:ne+ve*2,duration:ve,gap:0,instrument:g,style:"decoration"}),h.push({cmd:"note",pitch:_e.pitch,volume:_e.volume,start:ne+ve*3,duration:ve,gap:0,instrument:g,style:"decoration"});break;case"roll":for(;me>0;)h.push({cmd:"note",pitch:_e.pitch,volume:_e.volume,start:ne,duration:ve,gap:0,instrument:g,style:"decoration"}),me-=ve*2,ne+=ve*2;break}}function ie(ce,_e){var ne=C(S(ce.time),_e);d.processChord(ce);var me;if(ce.gracenotes&&ce.pitches&&ce.pitches.length>0&&ce.pitches[0]&&(me=Re(ce.gracenotes,ce.pitches[0].duration),ce.elem&&(ce.elem.midiGraceNotePitches=ee(me,S(ce.time),ne*2/3,g))),ce.elem){var ve=S(ce.time),pe=ve/R/l*60*1e3;if(ce.elem.currentTrackMilliseconds===void 0)ce.elem.currentTrackMilliseconds=pe,ce.elem.currentTrackWholeNotes=ve;else if(ce.elem.currentTrackMilliseconds.length===void 0)ce.elem.currentTrackMilliseconds!==pe&&(ce.elem.currentTrackMilliseconds=[ce.elem.currentTrackMilliseconds,pe],ce.elem.currentTrackWholeNotes=[ce.elem.currentTrackWholeNotes,ve]);else{for(var Se=!1,Me=0;MeEe&&(We=C(S(ce.time),_e,Ee));var xe=Qe[Ee];if(xe){xe.startSlur&&(L+=xe.startSlur.length),xe.endSlur&&(L-=xe.endSlur.length);var He=xe.actualPitch?xe.actualPitch:we(xe);if(g===_&&G){var nt=a(xe);nt&&G[nt]&&(He=G[nt].sound)}var je={cmd:"note",pitch:He,volume:We,start:S(ce.time),duration:F(xe.duration),instrument:g,startChar:ce.elem.startChar,endChar:ce.elem.endChar};if(je=Oe(je),ce.gracenotes&&(je.duration=je.duration/2,je.start=je.start+je.duration),ce.elem&&ce.elem.midiPitches.push(je),ze.noteModification)he(ze.noteModification,je);else{switch(L>0?je.endType="tenuto":ge&&(je.endType=ge),je.endType){case"tenuto":je.gap=V;break;case"staccato":var Zt=je.duration*I;je.gap=l/60*Zt;break;default:je.gap=B;break}h.push(je)}}}h.length-1}var Pe=ye(ce);f=Math.max(f,S(ce.time)+F(Pe))}function ye(ce){return ce.pitches&&ce.pitches.length>0&&ce.pitches[0]?ce.pitches[0].duration:ce.elem?ce.elem.duration:ce.duration}var se=[0,2,4,5,7,9,11];function we(ce){if(ce.midipitch!==void 0)return ce.midipitch;var _e=ce.pitch;if(ce.accidental)switch(ce.accidental){case"sharp":n[_e]=1;break;case"flat":n[_e]=-1;break;case"natural":n[_e]=0;break;case"dblsharp":n[_e]=2;break;case"dblflat":n[_e]=-2;break;case"quartersharp":n[_e]=.25;break;case"quarterflat":n[_e]=-.25;break}var ne=Ie(_e)*12+se[tt(_e)]+60;return n[_e]!==void 0?ne+=n[_e]:ne+=s[tt(_e)],ne+=r,ne}function ae(ce){var _e=[0,0,0,0,0,0,0];if(!ce.accidentals)return _e;for(var ne=0;ne=0?(ce.pitch=Math.round(ce.pitch),ce.cents=-50):_e.indexOf(".25")>=0&&(ce.pitch=Math.round(ce.pitch),ce.cents=50),ce}function Ie(ce){return Math.floor(ce/7)}function tt(ce){return ce=ce%7,ce<0&&(ce+=7),ce}function Xe(ce){if(ce.pattern.length===0||ce.on===!1)return{on:!1};for(var _e=ce.pattern[0],ne=[],me="",ve=0,pe=0;pe<_e.length;pe++)if(_e[pe]==="d"&&ve++,_e[pe]==="d"||_e[pe]==="z")me.length!==0?(ne.push(me),me=_e[pe]):me=me+_e[pe];else{if(me.length===0)return{on:!1};me=me+_e[pe]}if(me.length!==0&&ne.push(me),ce.pattern.length!==ve*2+1)return{on:!1};for(var Se={on:!0,bars:ce.bars,pattern:[]},Me=Q(c),ge=0,ze=0;ze1){Me=Me.sort(function(xe,He){return xe.pitch-He.pitch});var ge=Me[Me.length-1],ze=ge.pitch%12,Qe=!1;for(ve=0;!Qe&&ve=f&&(d-=f),v[y].el_type==="bar")return d}return d}this.getPickupLength=function(){var m=this.getBarLength(),f=l(this.lines,m);return f<1e-8||m-f<1e-8?0:f},this.getBarLength=function(){var m=this.getMeterFraction();return m.num/m.den},this.getTotalTime=function(){return this.totalTime},this.getTotalBeats=function(){return this.totalBeats},this.millisecondsPerMeasure=function(m){var f;if(m)f=m;else{var d=this.metaText?this.metaText.tempo:null;f=this.getBpm(d)}f<=0&&(f=1);var c=this.getBeatsPerMeasure(),_=c/f;return _*6e4},this.getBeatsPerMeasure=function(){var m=this.getBeatLength(),f=this.getBarLength();return f/m},this.getMeter=function(){for(var m=0;m0&&m.value[0].num.indexOf("+")>0){var c=m.value[0].num.split("+");f=0;for(var _=0;_m)return y}}return null};function u(m){for(var f,d,c,_,b=m.length-1;b>=0;b--){var v=m[b];v.type==="bar"?(v.top=c,v.nextTop=f,f=c,v.bottom=_,v.nextBottom=d,d=_):v.type==="event"&&(c=v.top,_=v.top+v.height)}}function p(m){var f=[];for(var d in m)m.hasOwnProperty(d)&&f.push(m[d]);return f=f.sort(function(c,_){var b=c.milliseconds-_.milliseconds;return b!==0?b:c.type==="bar"?-1:1}),f}this.addElementToEvents=function(m,f,d,c,_,b,v,w,y,T){if(f.hint)return{isTiedState:void 0,duration:0};var O=f.durationClass?f.durationClass:f.duration;if(f.abcelem.rest&&f.abcelem.rest.type==="spacer"&&(O=0),O>0){for(var R=[],$=0;$0){var b=_.staffs[0],v=b.absoluteY,w=v-b.top*e.STEP,y=_.staffs[_.staffs.length-1];v=y.absoluteY;for(var T=v-y.bottom*e.STEP,O=T-w,R=_.voices,$=0;$0&&b["event"+P]&&(k="event"+P),P=Math.round($*1e3),V.type==="bar"){var S=V.abcelem.type,F=S==="bar_right_repeat"||S==="bar_dbl_repeat",H=V.abcelem.startEnding==="1",Q=S==="bar_left_repeat"||S==="bar_dbl_repeat"||S==="bar_right_repeat";if(F){G>0&&(b[k].endX=V.x),x===-1&&(x=G);var Y=0;M=-1;for(var C=L;Cc.left&&(c.endX=Math.min(c.endX,b)):c.endX=b}}var v=f[f.length-1];v.endX=m[v.line].staffGroup.w}}this.getBpm=function(m){var f;if(m||(m=this.metaText?this.metaText.tempo:null),m){f=m.bpm;var d=this.getBeatLength(),c=m.duration&&m.duration.length>0?m.duration[0]:d;f=f*c/d}if(!f){f=180;var _=this.getMeterFraction();_&&_.num!==3&&_.num%3===0&&(f=120)}return f},this.setTiming=function(m,f){if(f=f||0,!this.engraver||!this.engraver.staffgroups)return console.log("setTiming cannot be called before the tune is drawn."),this.noteTimings=[],this.noteTimings;var d=this.metaText?this.metaText.tempo:null,c=this.getBpm(d),_=1;m?d&&(_=m/c):m=c;var b=this.getBeatLength(),v=m/60,w=this.getBarLength(),y=w/b*f/v;y&&(y-=this.getPickupLength()/b/v);var T=b*v;return this.noteTimings=this.setupEvents(y,T,m,_),this.noteTimings.length>0?(this.totalTime=this.noteTimings[this.noteTimings.length-1].milliseconds/1e3,this.totalBeats=this.totalTime*v):(this.totalTime=void 0,this.totalBeats=void 0),this.noteTimings},this.setUpAudio=function(m){m||(m={});var f=a(this,m);return n(f,m,this.formatting.percmap,this.formatting.midi)},this.deline=function(m){return s(this.lines,m)},this.findSelectableElement=function(m){return this.engraver&&this.engraver.selectables?this.engraver.findSelectableElement(m):null},this.getSelectableArray=function(){return this.engraver&&this.engraver.selectables?this.engraver.selectables:[]}};return wp=r,wp}var kp,hy;function RC(){if(hy)return kp;hy=1;var t=lp(),e=function(x){var U=this,D={},M="";x.reset(),this.setVisualTranspose=function(G){G!==void 0&&(x.visualTranspose=G)},this.cleanUp=function(G,B,V){f(x),delete x.runningFonts,n(x),x.metaText.tempo&&x.metaText.tempo.bpm&&!x.metaText.tempo.duration&&(x.metaText.tempo.duration=[x.getBeatLength()]),L(x);var I=!1,k,S,F;for(k=0;k0&&ie[ie.length-1].barNumber){var se=g(x.lines,k);se&&(se.staff[0].barNumber=ie[ie.length-1].barNumber),delete ie[ie.length-1].barNumber}}}return delete x.staffNum,delete x.voiceNum,delete x.lineNum,delete x.potentialStartBeam,delete x.potentialEndBeam,delete x.vskipPending,V},this.addTieToLastNote=function(G){var B=h(x);return B&&B.pitches&&B.pitches.length>0?(B.pitches[0].startTie={},G&&(B.pitches[0].startTie.style="dotted"),!0):!1},this.appendElement=function(G,B,V,I){if(I.el_type=G,B!==null&&(I.startChar=B),V!==null&&(I.endChar=V),G==="note"){var k=m(I);k>=.25||I.force_end_beam_last&&x.potentialStartBeam!==void 0?w(x):I.end_beam&&x.potentialStartBeam!==void 0?I.rest===void 0?v(I,x):w(x):I.rest===void 0&&(x.potentialStartBeam===void 0?I.end_beam||(x.potentialStartBeam=I,delete x.potentialEndBeam):x.potentialEndBeam=I)}else w(x);return delete I.end_beam,delete I.force_end_beam_last,I.rest&&I.rest.type==="invisible"&&delete I.decoration,x.lines.length<=x.lineNum||x.lines[x.lineNum].staff.length<=x.staffNum?!1:(b(U,x,I,D,M),!0)},this.appendStartingElement=function(G,B,V,I){f(x);var k;G==="key"&&(k=I.impliedNaturals,delete I.impliedNaturals,delete I.explicitAccidentals);var S=Object.assign({},I);if(x.lines[x.lineNum]){var F=x.lines[x.lineNum].staff;if(F){F.length<=x.staffNum&&(F[x.staffNum]={},F[x.staffNum].clef=Object.assign({},F[0].clef),F[x.staffNum].key=Object.assign({},F[0].key),F[0].meter&&(F[x.staffNum].meter=Object.assign({},F[0].meter)),F[x.staffNum].workingClef=Object.assign({},F[0].workingClef),F[x.staffNum].voices=[[]]),G==="clef"&&(F[x.staffNum].workingClef=S);for(var H=F[x.staffNum].voices[x.voiceNum],Q=0;Q0){var V=B[B.length-1];if(V.el_type==="bar")V.barNumber!==void 0&&(V.barNumber=G);else return G-1}return G},this.hasBeginMusic=function(){for(var G=0;G=0;B--)if(x.lines[B].staff!==void 0)return!1;return!0},this.getCurrentVoice=function(){var G=p(x.lines,x.lineNum);if(!G)return null;var B=G.staff[x.staffNum];return B&&B.voices[x.voiceNum]!==void 0?B.voices[x.voiceNum]:null},this.setCurrentVoice=function(G,B,V){x.staffNum=G,x.voiceNum=B,M=V;for(var I=0;I0&&u.value[0].num.indexOf("+")>0&&(p=u.value[0].num),s.beatStarts=[],p){for(var g=s.noteTimings[s.noteTimings.length-1].millisecondsPerMeasure,h=s.lastMoment/g,f=p.split("+"),m=0;ms.currentEvent&&s.noteTimings[s.currentEvent].millisecondss.currentLine&&s.lineEndTimings[s.currentLine].milliseconds=s.lastMoment)if(s.eventCallback){var h=s.eventCallback(null);s.shouldStop(h).then(function(f){f&&s.stop()})}else s.stop()}},s.shouldStop=function(o){return new Promise(function(l){if(!o)return l(!0);if(o==="continue")return l(!1);o.then&&o.then(function(u){l(u!=="continue")})})},s.doBeatCallback=function(o){if(s.beatCallback){for(var l=s.currentEvent;l=0&&s.noteTimings[l].left===null;)l--;p=s.noteTimings[l]}var g={},h={};if(p){g.top=p.top,g.height=p.height;var f=Math.max(0,o-s.startTime-p.milliseconds),m=u-p.milliseconds,d=p.endX-p.left,c=m?f*d/m:0;g.left=p.left+c,s.currentEvent===0&&p.milliseconds>o-s.startTime&&(g.left=void 0),h={timestamp:o,startTime:s.startTime,ev:p,endMs:u,offMs:f,offPx:c,gapMs:m,gapPx:d}}else h={timestamp:o,startTime:s.startTime};if(s.currentBeat<0||s.currentBeat>=s.beatStarts.length||!s.beatStarts[s.currentBeat]){var _={currentBeat:s.currentBeat,beatStartLength:s.beatStarts.length,totalBeats:s.totalBeats,startTime:s.startTime,currentTime:s.currentTime,lastMoment:s.lastMoment,lastTimestamp:s.lastTimestamp,qpm:s.qpm,millisecondsPerBeat:s.millisecondsPerBeat,beatSubdivisions:s.beatSubdivisions,currentEvent:s.currentEvent,currentLine:s.currentLine,isPaused:s.isPaused,isRunning:s.isRunning,pausedPercent:s.pausedPercent,justUnpaused:s.justUnpaused,newSeekPercent:s.newSeekPercent};setTimeout(function(){throw new Error("abcjs-timing-callback error: "+JSON.stringify(_))},1)}else{var b=s.startTime;if(s.beatCallback(s.beatStarts[s.currentBeat].b,s.totalBeats/s.beatSubdivisions,s.lastMoment,g,h),b!==s.startTime)return o-s.startTime}}return null};var r=60;s.animationJogger=function(){s.isRunning&&(s.doTiming(performance.now()),s.joggerTimer=setTimeout(s.animationJogger,r))},s.start=function(o,l){if(s.isRunning=!0,s.isPaused&&(s.isPaused=!1,o===void 0&&(s.justUnpaused=!0)),o)s.setProgress(o,l);else if(o===0)s.reset();else if(s.pausedPercent!==null){var u=performance.now();s.currentTime=s.lastMoment*s.pausedPercent,s.startTime=u-s.currentTime,s.pausedPercent=null,s.reportNext=!0}requestAnimationFrame(s.doTiming),s.joggerTimer=setTimeout(s.animationJogger,r)},s.pause=function(){s.isPaused=!0;var o=performance.now();s.pausedPercent=(o-s.startTime)/s.lastMoment,s.isRunning=!1,s.joggerTimer&&(clearTimeout(s.joggerTimer),s.joggerTimer=null)},s.currentMillisecond=function(){return s.currentTime},s.reset=function(){s.currentBeat=0,s.currentEvent=0,s.currentLine=0,s.startTime=null,s.pausedPercent=null},s.stop=function(){s.pause(),s.reset()},s.setProgress=function(o,l){var u;switch(l){case"seconds":s.currentTime=o*1e3,s.currentTime<0&&(s.currentTime=0),s.currentTime>s.lastMoment&&(s.currentTime=s.lastMoment),u=s.currentTime/s.lastMoment;break;case"beats":s.currentTime=o*s.millisecondsPerBeat*s.beatSubdivisions,s.currentTime<0&&(s.currentTime=0),s.currentTime>s.lastMoment&&(s.currentTime=s.lastMoment),u=s.currentTime/s.lastMoment;break;default:u=o,u<0&&(u=0),u>1&&(u=1),s.currentTime=s.lastMoment*u;break}s.isRunning||(s.pausedPercent=u);var p=performance.now();for(s.startTime=p-s.currentTime,s.currentEvent=0;s.noteTimings.length>s.currentEvent&&s.noteTimings[s.currentEvent].millisecondss.currentLine&&s.lineEndTimings[s.currentLine].milliseconds+s.lineEndAnticipations.currentTime);s.currentBeat++);s.currentBeat--,s.beatCallback&&g!==s.currentBeat&&(s.doBeatCallback(s.startTime+s.currentTime),s.currentBeat++),s.eventCallback&&s.currentEvent>=0&&s.noteTimings[s.currentEvent].type==="event"&&s.eventCallback(s.noteTimings[s.currentEvent]),s.lineEndCallback&&s.lineEndCallback(s.lineEndTimings[s.currentLine],s.noteTimings[s.currentEvent],{line:s.currentLine,endTimings:s.lineEndTimings}),s.joggerTimer=setTimeout(s.animationJogger,r)}};function e(a,n){for(var s=[],r=null,o=0;o=0&&e.lastIndexOf(a)===n},t.last=function(e){return e.length===0?null:e[e.length-1]},ep=t,ep}var tp,Db;function ip(){if(Db)return tp;Db=1;var t=ir(),e={};return(function(){var a,n,s,r,o;e.initialize=function(w,S,C,H,Y){a=w,n=S,s=C,r=H,o=Y,l()};function l(){s.annotationfont={face:"Helvetica",size:12,weight:"normal",style:"normal",decoration:"none"},s.gchordfont={face:"Helvetica",size:12,weight:"normal",style:"normal",decoration:"none"},s.historyfont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},s.infofont={face:'"Times New Roman"',size:14,weight:"normal",style:"italic",decoration:"none"},s.measurefont={face:'"Times New Roman"',size:14,weight:"normal",style:"italic",decoration:"none"},s.partsfont={face:'"Times New Roman"',size:15,weight:"normal",style:"normal",decoration:"none"},s.repeatfont={face:'"Times New Roman"',size:13,weight:"normal",style:"normal",decoration:"none"},s.textfont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},s.tripletfont={face:"Times",size:11,weight:"normal",style:"italic",decoration:"none"},s.vocalfont={face:'"Times New Roman"',size:13,weight:"bold",style:"normal",decoration:"none"},s.wordsfont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},r.formatting.composerfont={face:'"Times New Roman"',size:14,weight:"normal",style:"italic",decoration:"none"},r.formatting.subtitlefont={face:'"Times New Roman"',size:16,weight:"normal",style:"normal",decoration:"none"},r.formatting.tempofont={face:'"Times New Roman"',size:15,weight:"bold",style:"normal",decoration:"none"},r.formatting.titlefont={face:'"Times New Roman"',size:20,weight:"normal",style:"normal",decoration:"none"},r.formatting.footerfont={face:'"Times New Roman"',size:12,weight:"normal",style:"normal",decoration:"none"},r.formatting.headerfont={face:'"Times New Roman"',size:12,weight:"normal",style:"normal",decoration:"none"},r.formatting.voicefont={face:'"Times New Roman"',size:13,weight:"bold",style:"normal",decoration:"none"},r.formatting.tablabelfont={face:'"Trebuchet MS"',size:16,weight:"normal",style:"normal",decoration:"none"},r.formatting.tabnumberfont={face:'"Arial"',size:11,weight:"normal",style:"normal",decoration:"none"},r.formatting.tabgracefont={face:'"Arial"',size:8,weight:"normal",style:"normal",decoration:"none"},r.formatting.annotationfont=s.annotationfont,r.formatting.gchordfont=s.gchordfont,r.formatting.historyfont=s.historyfont,r.formatting.infofont=s.infofont,r.formatting.measurefont=s.measurefont,r.formatting.partsfont=s.partsfont,r.formatting.repeatfont=s.repeatfont,r.formatting.textfont=s.textfont,r.formatting.tripletfont=s.tripletfont,r.formatting.vocalfont=s.vocalfont,r.formatting.wordsfont=s.wordsfont}var u={gchordfont:!0,measurefont:!0,partsfont:!0,annotationfont:!0,composerfont:!0,historyfont:!0,infofont:!0,subtitlefont:!0,textfont:!0,titlefont:!0,voicefont:!0},p=function(w){switch(w){case"Arial-Italic":return{face:"Arial",weight:"normal",style:"italic",decoration:"none"};case"Arial-Bold":return{face:"Arial",weight:"bold",style:"normal",decoration:"none"};case"Bookman-Demi":return{face:"Bookman,serif",weight:"bold",style:"normal",decoration:"none"};case"Bookman-DemiItalic":return{face:"Bookman,serif",weight:"bold",style:"italic",decoration:"none"};case"Bookman-Light":return{face:"Bookman,serif",weight:"normal",style:"normal",decoration:"none"};case"Bookman-LightItalic":return{face:"Bookman,serif",weight:"normal",style:"italic",decoration:"none"};case"Courier":return{face:'"Courier New"',weight:"normal",style:"normal",decoration:"none"};case"Courier-Oblique":return{face:'"Courier New"',weight:"normal",style:"italic",decoration:"none"};case"Courier-Bold":return{face:'"Courier New"',weight:"bold",style:"normal",decoration:"none"};case"Courier-BoldOblique":return{face:'"Courier New"',weight:"bold",style:"italic",decoration:"none"};case"AvantGarde-Book":return{face:"AvantGarde,Arial",weight:"normal",style:"normal",decoration:"none"};case"AvantGarde-BookOblique":return{face:"AvantGarde,Arial",weight:"normal",style:"italic",decoration:"none"};case"AvantGarde-Demi":case"Avant-Garde-Demi":return{face:"AvantGarde,Arial",weight:"bold",style:"normal",decoration:"none"};case"AvantGarde-DemiOblique":return{face:"AvantGarde,Arial",weight:"bold",style:"italic",decoration:"none"};case"Helvetica-Oblique":return{face:"Helvetica",weight:"normal",style:"italic",decoration:"none"};case"Helvetica-Bold":return{face:"Helvetica",weight:"bold",style:"normal",decoration:"none"};case"Helvetica-BoldOblique":return{face:"Helvetica",weight:"bold",style:"italic",decoration:"none"};case"Helvetica-Narrow":return{face:'"Helvetica Narrow",Helvetica',weight:"normal",style:"normal",decoration:"none"};case"Helvetica-Narrow-Oblique":return{face:'"Helvetica Narrow",Helvetica',weight:"normal",style:"italic",decoration:"none"};case"Helvetica-Narrow-Bold":return{face:'"Helvetica Narrow",Helvetica',weight:"bold",style:"normal",decoration:"none"};case"Helvetica-Narrow-BoldOblique":return{face:'"Helvetica Narrow",Helvetica',weight:"bold",style:"italic",decoration:"none"};case"Palatino-Roman":return{face:"Palatino",weight:"normal",style:"normal",decoration:"none"};case"Palatino-Italic":return{face:"Palatino",weight:"normal",style:"italic",decoration:"none"};case"Palatino-Bold":return{face:"Palatino",weight:"bold",style:"normal",decoration:"none"};case"Palatino-BoldItalic":return{face:"Palatino",weight:"bold",style:"italic",decoration:"none"};case"NewCenturySchlbk-Roman":return{face:'"New Century",serif',weight:"normal",style:"normal",decoration:"none"};case"NewCenturySchlbk-Italic":return{face:'"New Century",serif',weight:"normal",style:"italic",decoration:"none"};case"NewCenturySchlbk-Bold":return{face:'"New Century",serif',weight:"bold",style:"normal",decoration:"none"};case"NewCenturySchlbk-BoldItalic":return{face:'"New Century",serif',weight:"bold",style:"italic",decoration:"none"};case"Times":case"Times-Roman":case"Times-Narrow":case"Times-Courier":case"Times-New-Roman":return{face:'"Times New Roman"',weight:"normal",style:"normal",decoration:"none"};case"Times-Italic":case"Times-Italics":return{face:'"Times New Roman"',weight:"normal",style:"italic",decoration:"none"};case"Times-Bold":return{face:'"Times New Roman"',weight:"bold",style:"normal",decoration:"none"};case"Times-BoldItalic":return{face:'"Times New Roman"',weight:"bold",style:"italic",decoration:"none"};case"ZapfChancery-MediumItalic":return{face:'"Zapf Chancery",cursive,serif',weight:"normal",style:"normal",decoration:"none"};default:return null}},g=function(w,S,C,H,Y){function ee(){var et=parseInt(w[0].token);return w.shift(),S?w.length===0?{face:S.face,weight:S.weight,style:S.style,decoration:S.decoration,size:et}:w.length===1&&w[0].token==="box"&&u[Y]?{face:S.face,weight:S.weight,style:S.style,decoration:S.decoration,size:et,box:!0}:(n("Extra parameters in font definition.",C,H),{face:S.face,weight:S.weight,style:S.style,decoration:S.decoration,size:et}):(n("Can't set just the size of the font since there is no default value.",C,H),{face:'"Times New Roman"',weight:"normal",style:"normal",decoration:"none",size:et})}if(w[0].token==="*"){if(w.shift(),w[0].type==="number")return ee();n("Expected font size number after *.",C,H)}if(w[0].type==="number")return ee();for(var W=[],z,be="normal",ae="normal",ge="none",ie=!1,_e="face",le=!1;w.length;){var Ee=w.shift(),Se=Ee.token.toLowerCase();switch(_e){case"face":le||Se!=="utf"&&Ee.type!=="number"&&Se!=="bold"&&Se!=="italic"&&Se!=="underline"&&Se!=="box"?W.length>0&&Ee.token==="-"?(le=!0,W[W.length-1]=W[W.length-1]+Ee.token):le?(le=!1,W[W.length-1]=W[W.length-1]+Ee.token):W.push(Ee.token):Ee.type==="number"?(z?n("Font size specified twice in font definition.",C,H):z=Ee.token,_e="modifier"):Se==="bold"?be="bold":Se==="italic"?ae="italic":Se==="underline"?ge="underline":Se==="box"?(u[Y]?ie=!0:n(`This font style doesn't support "box"`,C,H),_e="finished"):Se==="utf"?(Ee=w.shift(),_e="size"):n("Unknown parameter "+Ee.token+" in font definition.",C,H);break;case"size":Ee.type==="number"?z?n("Font size specified twice in font definition.",C,H):z=Ee.token:n("Expected font size in font definition.",C,H),_e="modifier";break;case"modifier":Se==="bold"?be="bold":Se==="italic"?ae="italic":Se==="underline"?ge="underline":Se==="box"?(u[Y]?ie=!0:n(`This font style doesn't support "box"`,C,H),_e="finished"):n("Unknown parameter "+Ee.token+" in font definition.",C,H);break;case"finished":n('Extra characters found after "box" in font definition.',C,H);break}}z===void 0?S?z=S.size:(n("Must specify the size of the font since there is no default value.",C,H),z=12):z=parseFloat(z),W=W.join(" "),W===""&&(S?W=S.face:(n("Must specify the name of the font since there is no default value.",C,H),W="sans-serif"));var pe=p(W),De={};return pe?(De.face=pe.face,De.weight=pe.weight,De.style=pe.style,De.decoration=pe.decoration,De.size=z,ie&&(De.box=!0),De):(De.face=W,De.weight=be,De.style=ae,De.decoration=ge,De.size=z,ie&&(De.box=!0),De)},h=function(w,S,C){return S.length===0?'Directive "'+w+'" requires a font as a parameter.':(s[w]=g(S,s[w],C,0,w),s.is_in_header&&(r.formatting[w]=s[w]),null)},f=function(w,S,C){return S.length===0?'Directive "'+w+'" requires a font as a parameter.':(r.formatting[w]=g(S,r.formatting[w],C,0,w),null)},m=function(w,S){var C="";S.forEach(function(Y){C+=Y.token});var H=parseFloat(C);if(isNaN(H)||H===0)return'Directive "'+w+'" requires a number as a parameter.';r.formatting.scale=H},d=["acoustic-bass-drum","bass-drum-1","side-stick","acoustic-snare","hand-clap","electric-snare","low-floor-tom","closed-hi-hat","high-floor-tom","pedal-hi-hat","low-tom","open-hi-hat","low-mid-tom","hi-mid-tom","crash-cymbal-1","high-tom","ride-cymbal-1","chinese-cymbal","ride-bell","tambourine","splash-cymbal","cowbell","crash-cymbal-2","vibraslap","ride-cymbal-2","hi-bongo","low-bongo","mute-hi-conga","open-hi-conga","low-conga","high-timbale","low-timbale","high-agogo","low-agogo","cabasa","maracas","short-whistle","long-whistle","short-guiro","long-guiro","claves","hi-wood-block","low-wood-block","mute-cuica","open-cuica","mute-triangle","open-triangle"],c=function(w){var S=w.split(/\s+/);if(S.length!==2&&S.length!==3)return{error:'Expected parameters "abc-note", "drum-sound", and optionally "note-head"'};var C=S[0],H=parseInt(S[1],10);if((isNaN(H)||H<35||H>81)&&S[1]&&(H=d.indexOf(S[1].toLowerCase())+35),isNaN(H)||H<35||H>81)return{error:'Expected drum name, received "'+S[1]+'"'};var Y={sound:H};return S.length===3&&(Y.noteHead=S[2]),{key:C,value:Y}},_=function(w,S){var C=a.getMeasurement(S);return C.used===0||S.length!==0?{error:'Directive "'+w+'" requires a measurement as a parameter.'}:C.value},b=function(w,S){var C=a.getMeasurement(S);return C.used===0||S.length!==0?'Directive "'+w+'" requires a measurement as a parameter.':(r.formatting[w]=C.value,null)},v=function(w,S,C,H,Y){if(C.length!==1||C[0].type!=="number")return'Directive "'+S+'" requires a number as a parameter.';var ee=C[0].intt;return H!==void 0&&eeY?'Directive "'+S+'" requires a number less than or equal to '+Y+" as a parameter.":(s[w]=ee,null)},k=function(w,S,C){if(C.length===1&&(C[0].token==="true"||C[0].token==="false"))return s[w]=C[0].token==="true",null;var H=v(w,S,C,0,1);return H!==null?H:(s[w]=s[w]===1,null)},y=function(w,S,C,H){if(C.length!==1)return'Directive "'+S+'" requires one of [ '+H.join(", ")+" ] as a parameter.";for(var Y=C[0].token,ee=!1,W=0;!ee&&W=0)w.length!==0&&n("Unexpected parameter in MIDI "+H,C,0);else if(O.indexOf(H)>=0)w.length!==1?n("Expected one parameter in MIDI "+H,C,0):Y.push(w[0].token);else if(j.indexOf(H)>=0)w.length!==1?n("Expected one parameter in MIDI "+H,C,0):w[0].type!=="number"?n("Expected one integer parameter in MIDI "+H,C,0):Y.push(w[0].intt);else if($.indexOf(H)>=0)w.length!==1&&w.length!==2?n("Expected one or two parameters in MIDI "+H,C,0):w[0].type!=="number"||w.length===2&&w[1].type!=="number"?n("Expected integer parameter in MIDI "+H,C,0):(Y.push(w[0].intt),w.length===2&&Y.push(w[1].intt));else if(P.indexOf(H)>=0)w.length!==2?n("Expected two parameters in MIDI "+H,C,0):w[0].type!=="number"||w[1].type!=="number"?n("Expected two integer parameters in MIDI "+H,C,0):(Y.push(w[0].intt),Y.push(w[1].intt));else if(B.indexOf(H)>=0)w.length!==2?n("Expected two parameters in MIDI "+H,C,0):w[0].type!=="alpha"||w[1].type!=="number"?n("Expected one string and one integer parameters in MIDI "+H,C,0):(Y.push(w[0].token),Y.push(w[1].intt));else if(H==="drummap")w.length===2&&w[0].type==="alpha"&&w[1].type==="number"?(S.formatting||(S.formatting={}),S.formatting.midi||(S.formatting.midi={}),S.formatting.midi.drummap||(S.formatting.midi.drummap={}),S.formatting.midi.drummap[w[0].token]=w[1].intt,Y=S.formatting.midi.drummap):w.length===3&&w[0].type==="punct"&&w[1].type==="alpha"&&w[2].type==="number"?(S.formatting||(S.formatting={}),S.formatting.midi||(S.formatting.midi={}),S.formatting.midi.drummap||(S.formatting.midi.drummap={}),S.formatting.midi.drummap[w[0].token+w[1].token]=w[2].intt,Y=S.formatting.midi.drummap):n("Expected one note name and one integer parameter in MIDI "+H,C,0);else if(D.indexOf(H)>=0)w.length!==3||w[0].type!=="number"||w[1].token!=="/"||w[2].type!=="number"?n("Expected fraction parameter in MIDI "+H,C,0):(Y.push(w[0].intt),Y.push(w[2].intt));else if(L.indexOf(H)>=0)w.length!==4?n("Expected four parameters in MIDI "+H,C,0):w[0].type!=="number"||w[1].type!=="number"||w[2].type!=="number"||w[3].type!=="number"?n("Expected four integer parameters in MIDI "+H,C,0):(Y.push(w[0].intt),Y.push(w[1].intt),Y.push(w[2].intt),Y.push(w[3].intt));else if(x.indexOf(H)>=0)w.length!==5?n("Expected five parameters in MIDI "+H,C,0):w[0].type!=="number"||w[1].type!=="number"||w[2].type!=="number"||w[3].type!=="number"||w[4].type!=="number"?n("Expected five integer parameters in MIDI "+H,C,0):(Y.push(w[0].intt),Y.push(w[1].intt),Y.push(w[2].intt),Y.push(w[3].intt),Y.push(w[4].intt));else if($.indexOf(H)>=0)w.length!==1||w.length!==4?n("Expected one or two parameters in MIDI "+H,C,0):w[0].type!=="number"?n("Expected integer parameter in MIDI "+H,C,0):w.length===4?(w[1].token!=="octave"&&n("Expected octave parameter in MIDI "+H,C,0),w[2].token!=="="&&n("Expected octave parameter in MIDI "+H,C,0),w[3].type!=="number"&&n("Expected integer parameter for octave in MIDI "+H,C,0)):(Y.push(w[0].intt),w.length===4&&Y.push(w[3].intt));else if(A.indexOf(H)>=0)if(w.length<2)n("Expected string parameter and at least one integer parameter in MIDI "+H,C,0);else if(w[0].type!=="alpha")n("Expected string parameter and at least one integer parameter in MIDI "+H,C,0);else{var ee=w.shift();for(Y.push(ee.token);w.length>0;)ee=w.shift(),ee.type!=="number"&&n("Expected integer parameter in MIDI "+H,C,0),Y.push(ee.intt)}else if(G.indexOf(H)>=0){if(w.length!==1&&w.length!==2)n("Expected one or two parameters in MIDI "+H,C,0);else if(w[0].type!=="number")n("Expected integer parameter in MIDI "+H,C,0);else if(w.length===2&&w[1].type!=="alpha")n("Expected alpha parameter in MIDI "+H,C,0);else if(Y.push(w[0].intt),w.length===2){var W=w[1].token;W.indexOf("octave=")!=-1?(W=W.replace("octave=",""),W=parseInt(W),isNaN(W)?n("Expected octave value in MIDI"+H):(W<-1&&(n("Expected octave= in MIDI "+H+" to be >= -1 (recv:"+W+")"),W=-1),W>3&&(n("Expected octave= in MIDI "+H+" to be <= 3 (recv:"+W+")"),W=3),Y.push(W))):n("Expected octave= in MIDI"+H)}}o.hasBeginMusic()?o.appendElement("midi",-1,-1,{cmd:H,params:Y}):(S.formatting.midi===void 0&&(S.formatting.midi={}),S.formatting.midi[H]=Y)};e.parseFontChangeLine=function(w){w=w.replace(/\$\$/g,"");var S=w.split("$");if(S.length>1&&s.setfont){var C=[];S[0]!==""&&C.push({text:S[0]});for(var H=1;H0&&s.ignoredDecorations.push(C.substring(0,C.indexOf(" "))),n("Decoration redefinition ignored",w,0);break;case"text":var De=a.translateString(C);o.addText(e.parseFontChangeLine(De),{startChar:s.iChar,endChar:s.iChar+C.length+7});break;case"center":var et=a.translateString(C);o.addCentered(e.parseFontChangeLine(et));break;case"font":break;case"setfont":var Qe=a.tokenize(C,0,C.length);if(Qe.length>=4&&Qe[0].token==="-"&&Qe[1].type==="number"){var Pe=parseInt(Qe[1].token);Pe>=1&&Pe<=9&&(s.setfont||(s.setfont=[]),Qe.shift(),Qe.shift(),s.setfont[Pe]=g(Qe,s.setfont[Pe],w,0,"setfont"))}break;case"gchordfont":case"partsfont":case"tripletfont":case"vocalfont":case"textfont":case"annotationfont":case"historyfont":case"infofont":case"measurefont":case"repeatfont":case"wordsfont":return h(H,S,w);case"composerfont":case"subtitlefont":case"tempofont":case"titlefont":case"voicefont":case"footerfont":case"headerfont":return f(H,S,w);case"barlabelfont":case"barnumberfont":case"barnumfont":return h("measurefont",S,w);case"staves":case"score":s.score_is_present=!0;for(var xe=function(Qt,Mt,zt,Si,Bi){(Mt||s.staves.length===0)&&s.staves.push({index:s.staves.length,numVoices:0});var Ii=t.last(s.staves);zt!==void 0&&Ii.bracket===void 0&&(Ii.bracket=zt),Si!==void 0&&Ii.brace===void 0&&(Ii.brace=Si),Bi&&(Ii.connectBarLines="end"),s.voices[Qt]===void 0&&(s.voices[Qt]={staffNum:Ii.index,index:Ii.numVoices},Ii.numVoices++)},lt=!1,re=!1,ke=!1,ne=!1,fe=!1,we=!1,me=!1,Fe,Ue=function(){if(me=!0,Fe){var Qt="start";Fe.staffNum>0&&(s.staves[Fe.staffNum-1].connectBarLines==="start"||s.staves[Fe.staffNum-1].connectBarLines==="continue")&&(Qt="continue"),s.staves[Fe.staffNum].connectBarLines=Qt}};S.length;){var he=S.shift();switch(he.token){case"(":lt?n("Can't nest parenthesis in %%score",w,he.start):(lt=!0,ne=!0);break;case")":!lt||ne?n("Unexpected close parenthesis in %%score",w,he.start):lt=!1;break;case"[":re?n("Can't nest brackets in %%score",w,he.start):(re=!0,fe=!0);break;case"]":!re||fe?n("Unexpected close bracket in %%score",w,he.start):(re=!1,s.staves[Fe.staffNum].bracket="end");break;case"{":ke?n("Can't nest braces in %%score",w,he.start):(ke=!0,we=!0);break;case"}":!ke||we?n("Unexpected close brace in %%score",w,he.start):(ke=!1,s.staves[Fe.staffNum].brace="end");break;case"|":Ue();break;default:for(var Ae="";(he.type==="alpha"||he.type==="number")&&(Ae+=he.token,he.continueId);)he=S.shift();var He=!lt||ne,Be=fe?"start":re?"continue":void 0,Ge=we?"start":ke?"continue":void 0;xe(Ae,He,Be,Ge,me),ne=!1,fe=!1,we=!1,me=!1,Fe=s.voices[Ae],H==="staves"&&Ue();break}}break;case"maxstaves":var Ie=a.getInt(C);Ie.digits===0?n("Expected number of staves in maxstaves"):Ie.value>0&&(r.formatting.maxStaves=Ie.value);break;case"newpage":var ct=a.getInt(C);o.addNewPage(ct.digits===0?-1:ct.value);break;case"abc":var Ve=C.split(" ");switch(Ve[0]){case"-copyright":case"-creator":case"-edited-by":case"-version":case"-charset":var Gt=Ve.shift();o.addMetaText(H+Gt,Ve.join(" "),{startChar:s.iChar,endChar:s.iChar+C.length+5});break;default:return"Unknown directive: "+H+Ve[0]}break;case"header":case"footer":var nt=a.getMeat(C,0,C.length);nt=C.substring(nt.start,nt.end),nt[0]==='"'&&nt[nt.length-1]==='"'&&(nt=nt.substring(1,nt.length-1));var Re=nt.split(" "),St={};Re.length===1?St={left:"",center:Re[0],right:""}:Re.length===2?St={left:Re[0],center:Re[1],right:""}:St={left:Re[0],center:Re[1],right:Re[2]},Re.length>3&&n("Too many tabs in "+H+": "+Re.length+" found.",C,0),o.addMetaTextObj(H,St,{startChar:s.iChar,endChar:s.iChar+w.length});break;case"midi":var rt=a.tokenize(C,0,C.length,!0);rt.length>0&&rt[0].token==="="&&rt.shift(),rt.length===0?n("Expected midi command",C,0):U(rt,r,C);break;case"percmap":var Tt=c(C);Tt.error?n(Tt.error,w,8):(r.formatting.percmap||(r.formatting.percmap={}),r.formatting.percmap[Tt.key]=Tt.value);break;case"visualtranspose":var Ft=a.getInt(C);Ft.digits===0?n("Expected number of half steps in visualTranspose"):s.globalTranspose=Ft.value;break;case"map":case"playtempo":case"auquality":case"continuous":case"nobarcheck":r.formatting[H]=C;break;default:return"Unknown directive: "+H}return null},e.globalFormatting=function(w){for(var S in w)if(w.hasOwnProperty(S)){var C=""+w[S],H=a.tokenize(C,0,C.length),Y;switch(S){case"titlefont":case"gchordfont":case"composerfont":case"footerfont":case"headerfont":case"historyfont":case"infofont":case"measurefont":case"partsfont":case"repeatfont":case"subtitlefont":case"tempofont":case"textfont":case"voicefont":case"tripletfont":case"vocalfont":case"wordsfont":case"annotationfont":case"tablabelfont":case"tabnumberfont":case"tabgracefont":h(S,H,C);break;case"scale":m(S,H);break;case"partsbox":Y=k("partsBox",S,H),Y!==null&&n(Y),s.partsfont.box=s.partsBox;break;case"freegchord":Y=k("freegchord",S,H),Y!==null&&n(Y);break;case"fontboxpadding":(H.length!==1||H[0].type!=="number")&&n('Directive "'+S+'" requires a number as a parameter.'),r.formatting.fontboxpadding=H[0].floatt;break;case"stafftopmargin":(H.length!==1||H[0].type!=="number")&&n('Directive "'+S+'" requires a number as a parameter.'),r.formatting.stafftopmargin=H[0].floatt;break;case"stretchlast":var ee=I(H);if(ee.value!==void 0&&(r.formatting.stretchlast=ee.value),ee.error)return ee.error;break;default:n("Formatting directive unrecognized: ",S,0)}}};function I(w){if(w.length===0)return{value:1};if(w.length===1)if(w[0].type==="number"){if(w[0].floatt>=0||w[0].floatt<=1)return{value:w[0].floatt}}else{if(w[0].token==="false")return{value:0};if(w[0].token==="true")return{value:1}}return{error:"Directive stretchlast requires zero or one parameter: false, true, or number between 0 and 1 (received "+w[0].token+")"}}})(),tp=e,tp}var ap,Vb;function jC(){if(Vb)return ap;Vb=1;var t={};const e=["C,,,","D,,,","E,,,","F,,,","G,,,","A,,,","B,,,","C,,","D,,","E,,","F,,","G,,","A,,","B,,","C,","D,","E,","F,","G,","A,","B,","C","D","E","F","G","A","B","c","d","e","f","g","a","b","c'","d'","e'","f'","g'","a'","b'","c''","d''","e''","f''","g''","a''","b''","c'''","d'''","e'''","f'''","g'''","a'''","b'''"];return t.pitchIndex=function(a){return e.indexOf(a)},t.noteName=function(a){return e[a]},ap=t,ap}var np,Hb;function Wb(){if(Hb)return np;Hb=1;var t=["C","C♯","D","D♯","E","F","F♯","G","G♯","A","A♯","B"],e=["C","D♭","D","E♭","E","F","G♭","G","A♭","A","B♭","B"],a=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],n=["C","Db","D","Eb","E","F","Gb","G","Ab","A","Bb","B"];function s(r,o,l,u){if(!o||o%12===0)return r;for(;o<0;)o+=12;o>11&&(o=o%12);var p=r.match(/^([A-G][b#♭♯]?)([^\/]+)?\/?([A-G][b#♭♯]?)?(.+)?/);if(!p)return r;var g=p[1],h=p[2],f=p[3],m=p[4],d=t.indexOf(g);if(d<0&&(d=e.indexOf(g)),d<0&&(d=a.indexOf(g)),d<0&&(d=n.indexOf(g)),d<0)return r;d+=o,d=d%12,l?u?r=n[d]:r=e[d]:u?r=a[d]:r=t[d];var c=h&&(h.indexOf("dim")>=0||h.indexOf("°")>=0);if(c&&r==="A#"&&(r="Bb"),c&&r==="D#"&&(r="Eb"),c&&r==="A♯"&&(r="B♭"),c&&r==="D♯"&&(r="E♭"),h&&(r+=h),f){var d=t.indexOf(f);d<0&&(d=e.indexOf(f)),d<0&&(d=a.indexOf(f)),d<0&&(d=n.indexOf(f)),r+="/",d>=0?(d+=o,d=d%12,l?u?r+=n[d]:r+=e[d]:u?r+=a[d]:r+=t[d]):r+=f}return m&&(r+=m),r}return np=s,np}var sp,Qb;function Kb(){if(Qb)return sp;Qb=1;var t={C:{modes:["CMaj","CIon","Amin","AAeo","Am","GMix","DDor","EPhr","FLyd","BLoc"],stepsFromC:0},Db:{modes:["DbMaj","DbIon","Bbmin","BbAeo","Bbm","AbMix","EbDor","FPhr","GbLyd","CLoc"],stepsFromC:1},D:{modes:["DMaj","DIon","Bmin","BAeo","Bm","AMix","EDor","F#Phr","GLyd","C#Loc"],stepsFromC:2},Eb:{modes:["EbMaj","EbIon","Cmin","CAeo","Cm","BbMix","FDor","GPhr","AbLyd","DLoc"],stepsFromC:3},E:{modes:["EMaj","EIon","C#min","C#Aeo","C#m","BMix","F#Dor","G#Phr","ALyd","D#Loc"],stepsFromC:4},F:{modes:["FMaj","FIon","Dmin","DAeo","Dm","CMix","GDor","APhr","BbLyd","ELoc"],stepsFromC:5},Gb:{modes:["GbMaj","GbIon","Ebmin","EbAeo","Ebm","DbMix","AbDor","BbPhr","CbLyd","FLoc"],stepsFromC:6},G:{modes:["GMaj","GIon","Emin","EAeo","Em","DMix","ADor","BPhr","CLyd","F#Loc"],stepsFromC:7},Ab:{modes:["AbMaj","AbIon","Fmin","FAeo","Fm","EbMix","BbDor","CPhr","DbLyd","GLoc"],stepsFromC:8},A:{modes:["AMaj","AIon","F#min","F#Aeo","F#m","EMix","BDor","C#Phr","DLyd","G#Loc"],stepsFromC:9},Bb:{modes:["BbMaj","BbIon","Gmin","GAeo","Gm","FMix","CDor","DPhr","EbLyd","ALoc"],stepsFromC:10},B:{modes:["BMaj","BIon","G#min","G#Aeo","G#m","F#Mix","C#Dor","D#Phr","ELyd","A#Loc"],stepsFromC:11},"C#":{modes:["C#Maj","C#Ion","A#min","A#Aeo","A#m","G#Mix","D#Dor","E#Phr","F#Lyd","B#Loc"],stepsFromC:1},"F#":{modes:["F#Maj","F#Ion","D#min","D#Aeo","D#m","C#Mix","G#Dor","A#Phr","BLyd","E#Loc"],stepsFromC:6},Cb:{modes:["CbMaj","CbIon","Abmin","AbAeo","Abm","GbMix","DbDor","EbPhr","FbLyd","BbLoc"],stepsFromC:11}},e=["maj","ion","min","aeo","m","mix","dor","phr","lyd","loc"];function a(u){return e.indexOf(u.toLowerCase())>=0}var n=null;function s(){n={};for(var u=Object.keys(t),p=0;p11&&(T=T%12);var O=m[0]==="m"?o[T]:r[T],j=O+m,$=a(j);($.length===0||$[0].acc==="flat")&&(f.localTransposePreferFlats=!0);var P=j.charCodeAt(0)-v.charCodeAt(0);return f.localTranspose>0?(P<0||P===0&&(v[1]==="#"||j[1]==="b"))&&(P+=7):f.localTranspose<0&&(P>0||P===0&&(v[1]==="b"||j[1]==="#"))&&(P-=7),f.localTranspose>0?f.localTransposeVerticalMovement=P+Math.floor(f.localTranspose/12)*7:f.localTransposeVerticalMovement=P+Math.ceil(f.localTranspose/12)*7,y?{accidentals:$,root:O[0],acc:O.length>1?O[1]:""}:{accidentals:[],root:d,acc:c}},n.chordName=function(f,m){return e(m,f.localTranspose,f.localTransposePreferFlats,f.freegchord)};var l=["c","d","e","f","g","a","b"];function u(f,m,d,c,_){for(var b=l[(f+49)%7],v=0,k=0;k2&&(m++,P-=O==="b"||O==="e"?1:2),[m,P]}var p={dblflat:-2,flat:-1,natural:0,sharp:1,dblsharp:2},g={"-2":"dblflat","-1":"flat",0:"natural",1:"sharp",2:"dblsharp"},h={"-2":"__","-1":"_",0:"=",1:"^",2:"^^"};return n.note=function(f,m){if(!(!f.localTranspose||f.clef.type==="perc")){var d=m.pitch;if(f.localTransposeVerticalMovement&&(m.pitch=m.pitch+f.localTransposeVerticalMovement,m.name)){var c=m.accidental?m.name.substring(1):m.name,_=m.accidental?m.name[0]:"",b=t.pitchIndex(c);m.name=_+t.noteName(b+f.localTransposeVerticalMovement)}if(m.accidental){var v=u(d,m.pitch,m.accidental,f.globalTransposeOrigKeySig,f.targetKey);m.pitch=v[0],m.accidental=g[v[1]],m.name&&(m.name=h[v[1]]+m.name.replace(/[_^=]/g,""))}}},op=n,op}var lp,ey;function cp(){if(ey)return lp;ey=1;var t=ip(),e=Zb(),a={};return(function(){var n,s,r,o;a.initialize=function(d,c,_,b,v){n=d,s=c,r=_,o=v},a.standardKey=function(d,c,_,b){return e.keySignature(r,d,c,_,b)};var l={treble:{clef:"treble",pitch:4,mid:0},"treble+8":{clef:"treble+8",pitch:4,mid:0},"treble-8":{clef:"treble-8",pitch:4,mid:0},"treble^8":{clef:"treble+8",pitch:4,mid:0},treble_8:{clef:"treble-8",pitch:4,mid:0},treble1:{clef:"treble",pitch:2,mid:2},treble2:{clef:"treble",pitch:4,mid:0},treble3:{clef:"treble",pitch:6,mid:-2},treble4:{clef:"treble",pitch:8,mid:-4},treble5:{clef:"treble",pitch:10,mid:-6},perc:{clef:"perc",pitch:6,mid:0},none:{clef:"none",mid:0},bass:{clef:"bass",pitch:8,mid:-12},"bass+8":{clef:"bass+8",pitch:8,mid:-12},"bass-8":{clef:"bass-8",pitch:8,mid:-12},"bass^8":{clef:"bass+8",pitch:8,mid:-12},bass_8:{clef:"bass-8",pitch:8,mid:-12},"bass+16":{clef:"bass",pitch:8,mid:-12},"bass-16":{clef:"bass",pitch:8,mid:-12},"bass^16":{clef:"bass",pitch:8,mid:-12},bass_16:{clef:"bass",pitch:8,mid:-12},bass1:{clef:"bass",pitch:2,mid:-6},bass2:{clef:"bass",pitch:4,mid:-8},bass3:{clef:"bass",pitch:6,mid:-10},bass4:{clef:"bass",pitch:8,mid:-12},bass5:{clef:"bass",pitch:10,mid:-14},tenor:{clef:"alto",pitch:8,mid:-8},tenor1:{clef:"alto",pitch:2,mid:-2},tenor2:{clef:"alto",pitch:4,mid:-4},tenor3:{clef:"alto",pitch:6,mid:-6},tenor4:{clef:"alto",pitch:8,mid:-8},tenor5:{clef:"alto",pitch:10,mid:-10},alto:{clef:"alto",pitch:6,mid:-6},alto1:{clef:"alto",pitch:2,mid:-2},alto2:{clef:"alto",pitch:4,mid:-4},alto3:{clef:"alto",pitch:6,mid:-6},alto4:{clef:"alto",pitch:8,mid:-8},alto5:{clef:"alto",pitch:10,mid:-10},"alto+8":{clef:"alto+8",pitch:6,mid:-6},"alto-8":{clef:"alto-8",pitch:6,mid:-6},"alto^8":{clef:"alto+8",pitch:6,mid:-6},alto_8:{clef:"alto-8",pitch:6,mid:-6}},u=function(d,c){var _=l[d],b=_?_.mid:0;return b+c};a.fixClef=function(d){var c=l[d.type];c&&(d.clefPos=c.pitch,d.type=c.clef)},a.deepCopyKey=function(d){var c={accidentals:[],root:d.root,acc:d.acc,mode:d.mode};return d.accidentals.forEach(function(_){c.accidentals.push(Object.assign({},_))}),d.explicitAccidentals&&(c.explicitAccidentals=[],d.explicitAccidentals.forEach(function(_){c.explicitAccidentals.push(Object.assign({},_))})),c};var p=function(){r.currentVoice&&(r.currentVoice.key=a.deepCopyKey(r.key))},g={A:5,B:6,C:0,D:1,E:2,F:3,G:4,a:12,b:13,c:7,d:8,e:9,f:10,g:11};a.addPosToKey=function(d,c){var _=d.verticalPos;c.accidentals.forEach(function(b){var v=g[b.note];v=v-_,b.verticalPos=v}),c.impliedNaturals&&c.impliedNaturals.forEach(function(b){var v=g[b.note];v=v-_,b.verticalPos=v}),_<-10?(c.accidentals.forEach(function(b){b.verticalPos-=7,(b.verticalPos>=11||b.verticalPos===10&&b.acc==="flat")&&(b.verticalPos-=7),b.note==="A"&&b.acc==="sharp"&&(b.verticalPos-=7),(b.note==="G"||b.note==="F")&&b.acc==="flat"&&(b.verticalPos-=7)}),c.impliedNaturals&&c.impliedNaturals.forEach(function(b){b.verticalPos-=7,(b.verticalPos>=11||b.verticalPos===10&&b.acc==="flat")&&(b.verticalPos-=7),b.note==="A"&&b.acc==="sharp"&&(b.verticalPos-=7),(b.note==="G"||b.note==="F")&&b.acc==="flat"&&(b.verticalPos-=7)})):_<-4?(c.accidentals.forEach(function(b){b.verticalPos-=7,_===-8&&(b.note==="f"||b.note==="g")&&b.acc==="sharp"&&(b.verticalPos-=7)}),c.impliedNaturals&&c.impliedNaturals.forEach(function(b){b.verticalPos-=7,_===-8&&(b.note==="f"||b.note==="g")&&b.acc==="sharp"&&(b.verticalPos-=7)})):_>=7&&(c.accidentals.forEach(function(b){b.verticalPos+=7}),c.impliedNaturals&&c.impliedNaturals.forEach(function(b){b.verticalPos+=7}))},a.fixKey=function(d,c){var _=Object.assign({},c);return a.addPosToKey(d,_),_};var h=function(d){var c=0,_=d[c++];(_==="^"||_==="_")&&(_=d[c++]);var b=g[_];for(b===void 0&&(b=6);c0){b.foundKey=!0;var k="",y="";_[0].token.length>1?_[0].token=_[0].token.substring(1):_.shift();var T=v.token;if(_.length>0){var O=n.getSharpFlat(_[0].token);if(O.len>0&&(_[0].token.length>1?_[0].token=_[0].token.substring(1):_.shift(),T+=O.token,k=O.token),_.length>0){var j=n.getMode(_[0].token);j.len>0&&(_.shift(),T+=j.token,y=j.token)}if(a.standardKey(T,v.token,k,0)===void 0)return s("Unsupported key signature: "+T,d,0),b}var $=a.deepCopyKey(r.key),P=!c&&r.globalTranspose?-r.globalTranspose:0,L;if(c&&(L=r.globalTransposeOrigKeySig),r.key=a.deepCopyKey(a.standardKey(T,v.token,k,P)),c&&(r.globalTransposeOrigKeySig=L),r.key.mode=y,$&&r.keywarn!==!1){for(var x,B=0;B0;)switch(_[0].token){case"m":case"middle":if(_.shift(),_.length===0)return s("Expected = after middle",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after middle",d,I.start);break}if(_.length===0)return s("Expected parameter after middle=",d,0),b;var w=n.getPitchFromTokens(_);w.warn&&s(w.warn,d,0),w.position&&(r.clef.verticalPos=w.position-6);break;case"transpose":if(_.shift(),_.length===0)return s("Expected = after transpose",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after transpose",d,I.start);break}if(_.length===0)return s("Expected parameter after transpose=",d,0),b;if(_[0].type!=="number"){s("Expected number after transpose",d,_[0].start);break}r.clef.transpose=_[0].intt,_.shift();break;case"stafflines":if(_.shift(),_.length===0)return s("Expected = after stafflines",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after stafflines",d,I.start);break}if(_.length===0)return s("Expected parameter after stafflines=",d,0),b;if(_[0].type!=="number"){s("Expected number after stafflines",d,_[0].start);break}r.clef.stafflines=_[0].intt,_.shift();break;case"staffscale":if(_.shift(),_.length===0)return s("Expected = after staffscale",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after staffscale",d,I.start);break}if(_.length===0)return s("Expected parameter after staffscale=",d,0),b;if(_[0].type!=="number"){s("Expected number after staffscale",d,_[0].start);break}r.clef.staffscale=_[0].floatt,_.shift();break;case"octave":if(_.shift(),_.length===0)return s("Expected = after octave",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after octave",d,I.start);break}if(_.length===0)return s("Expected parameter after octave=",d,0),b;if(_[0].type!=="number"){s("Expected number after octave",d,_[0].start);break}r.octave=_[0].intt,_.shift();break;case"style":if(_.shift(),_.length===0)return s("Expected = after style",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after style",d,I.start);break}if(_.length===0)return s("Expected parameter after style=",d,0),b;switch(_[0].token){case"normal":case"harmonic":case"rhythm":case"x":case"triangle":r.style=_[0].token,_.shift();break;default:s("error parsing style element: "+_[0].token,d,_[0].start);break}break;case"clef":if(_.shift(),_.length===0)return s("Expected = after clef",d,0),b;if(I=_.shift(),I.token!=="="){s("Expected = after clef",d,I.start);break}if(_.length===0)return s("Expected parameter after clef=",d,0),b;case"treble":case"bass":case"alto":case"tenor":case"perc":case"none":var S=_.shift();switch(S.token){case"treble":case"tenor":case"alto":case"bass":case"perc":case"none":break;case"C":S.token="alto";break;case"F":S.token="bass";break;case"G":S.token="treble";break;case"c":S.token="alto";break;case"f":S.token="bass";break;case"g":S.token="treble";break;default:s("Expected clef name. Found "+S.token,d,S.start);break}_.length>0&&_[0].type==="number"&&(S.token+=_[0].token,_.shift()),_.length>1&&(_[0].token==="-"||_[0].token==="+"||_[0].token==="^"||_[0].token==="_")&&_[1].token==="8"&&(S.token+=_[0].token+_[1].token,_.shift(),_.shift()),r.clef={type:S.token,verticalPos:u(S.token,0)},r.currentVoice&&r.currentVoice.transpose!==void 0&&(r.clef.transpose=r.currentVoice.transpose),b.foundClef=!0;break;default:s("Unknown parameter: "+_[0].token,d,_[0].start),_.shift()}return b};var m=function(d){var c=r.voices[d];if(!(r.currentVoice&&r.currentVoice.index===c.index&&r.currentVoice.staffNum===c.staffNum))return r.currentVoice=c,c.key?r.key=a.deepCopyKey(c.key):r.globalKey&&(r.key=a.deepCopyKey(r.globalKey)),o.setCurrentVoice(c.staffNum,c.index,d)};a.parseVoice=function(d,c,_){var b=n.getMeat(d,c,_),v=b.start,k=b.end,y=n.getToken(d,v,k);if(y.length===0){s("Expected a voice id",d,v);return}var T=!1;r.voices[y]===void 0&&(r.voices[y]={},T=!0,r.score_is_present&&s("Can't have an unknown V: id when the %score directive is present",d,v)),v+=y.length,v+=n.eatWhiteSpace(d,v);for(var O={startStaff:T},j=function(w){var S=n.getVoiceToken(d,v,k);S.warn!==void 0?s("Expected value for "+w+" in voice: "+S.warn,d,v):S.err!==void 0?s("Expected value for "+w+" in voice: "+S.err,d,v):S.token.length===0&&d[v]!=='"'?s("Expected value for "+w+" in voice",d,v):O[w]=S.token,v+=S.len},$=function(w,S,C){var H=n.getVoiceToken(d,v,k);H.warn!==void 0?s("Expected value for "+S+" in voice: "+H.warn,d,v):H.err!==void 0?s("Expected value for "+S+" in voice: "+H.err,d,v):H.token.length===0&&d[v]!=='"'?s("Expected value for "+S+" in voice",d,v):(H.token=parseFloat(H.token),r.voices[w][S]=H.token),v+=H.len},P=function(w,S){var C=n.getVoiceToken(d,v,k);if(C.warn!==void 0)s("Expected value for "+w+" in voice: "+C.warn,d,v);else if(C.err!==void 0)s("Expected value for "+w+" in voice: "+C.err,d,v);else if(C.token.length===0&&d[v]!=='"')s("Expected value for "+w+" in voice",d,v);else return C.token;v+=C.len},L=function(w,S){var C={_B:2,_E:9,_b:-10,_e:-3},H=n.getVoiceToken(d,v,k);if(H.warn!==void 0)s("Expected one of (_B, _E, _b, _e) for "+S+" in voice: "+H.warn,d,v);else if(H.token.length===0&&d[v]!=='"')s("Expected one of (_B, _E, _b, _e) for "+S+" in voice",d,v);else{var Y=C[H.token];Y?r.voices[w][S]=Y:s("Expected one of (_B, _E, _b, _e) for "+S+" in voice",d,v)}v+=H.len};v0&&(o.default_length=_/b,o.havent_set_length=!1)}else c.length===1&&c[0]==="1"&&(o.default_length=1,o.havent_set_length=!1)};var p={larghissimo:20,adagissimo:24,sostenuto:28,grave:32,largo:40,lento:50,larghetto:60,adagio:68,adagietto:74,andante:80,andantino:88,"marcia moderato":84,"andante moderato":100,moderato:112,allegretto:116,"allegro moderato":120,allegro:126,animato:132,agitato:140,veloce:148,"mosso vivo":156,vivace:164,vivacissimo:172,allegrissimo:176,presto:184,prestissimo:210};this.setTempo=function(h,f,m,d){try{var c=s.tokenize(h,f,m);if(c.length===0)throw"Missing parameter in Q: field";var _={startChar:d+f-2,endChar:d+m},b=!0,v=c.shift();if(v.type==="quote"&&(_.preString=v.token,v=c.shift(),c.length===0))return p[_.preString.toLowerCase()]&&(_.bpm=p[_.preString.toLowerCase()],_.suppressBpm=!0),{type:"immediate",tempo:_};if(v.type==="alpha"&&v.token==="C"){if(c.length===0)throw"Missing tempo after C in Q: field";if(v=c.shift(),v.type==="punct"&&v.token==="="){if(c.length===0)throw"Missing tempo after = in Q: field";if(v=c.shift(),v.type!=="number")throw"Expected number after = in Q: field";_.duration=[1],_.bpm=parseInt(v.token)}else if(v.type==="number"){if(_.duration=[parseInt(v.token)],c.length===0)throw"Missing = after duration in Q: field";if(v=c.shift(),v.type!=="punct"||v.token!=="=")throw"Expected = after duration in Q: field";if(c.length===0)throw"Missing tempo after = in Q: field";if(v=c.shift(),v.type!=="number")throw"Expected number after = in Q: field";_.bpm=parseInt(v.token)}else throw"Expected number or equal after C in Q: field"}else if(v.type==="number"){var k=parseInt(v.token);if(c.length===0||c[0].type==="quote")_.duration=[1],_.bpm=k;else{if(b=!1,v=c.shift(),v.type!=="punct"&&v.token!=="/"||(v=c.shift(),v.type!=="number"))throw"Expected fraction in Q: field";var y=parseInt(v.token);for(_.duration=[k/y];c.length>0&&c[0].token!=="="&&c[0].type!=="quote";){if(v=c.shift(),v.type!=="number"||(k=parseInt(v.token),v=c.shift(),v.type!=="punct"&&v.token!=="/")||(v=c.shift(),v.type!=="number"))throw"Expected fraction in Q: field";y=parseInt(v.token),_.duration.push(k/y)}if(v=c.shift(),v.type!=="punct"&&v.token!=="=")throw"Expected = in Q: field";if(v=c.shift(),v.type!=="number")throw"Expected tempo in Q: field";_.bpm=parseInt(v.token)}}else throw"Unknown value in Q: field";if(c.length!==0&&(v=c.shift(),v.type==="quote"&&(_.postString=v.token,v=c.shift()),c.length!==0))throw"Unexpected string at end of Q: field";return o.printTempo===!1&&(_.suppress=!0),{type:b?"delaySet":"immediate",tempo:_}}catch(T){return r(T,h,f),{type:"none"}}},this.letter_to_inline_header=function(h,f,m){var d=!1,c=s.eatWhiteSpace(h,f);if(f+=c,h.length>=f+5&&h[f]==="["&&h[f+2]===":"){var _=h.indexOf("]",f),b=o.iChar+f,v=o.iChar+_+1;switch(h.substring(f,f+3)){case"[I:":var k=e.addDirective(h.substring(f+3,_));return k&&r(k,h,f),[_-f+1+c];case"[M:":var y=this.setMeter(h.substring(f+3,_));return m&&o.currentVoice&&y?o.staves[o.currentVoice.staffNum].meter=y:u.hasBeginMusic()&&y?u.appendStartingElement("meter",b,v,y):o.meter=y,[_-f+1+c];case"[K:":var T=a.parseKey(h.substring(f+3,_),!0);return T.foundClef&&u.hasBeginMusic()&&u.appendStartingElement("clef",b,v,o.clef),T.foundKey&&u.hasBeginMusic()&&u.appendStartingElement("key",b,v,a.fixKey(o.clef,o.key)),[_-f+1+c];case"[P:":var O=e.parseFontChangeLine(h.substring(f+3,_));return m||l.lines.length<=l.lineNum?o.partForNextLine={title:O,startChar:b,endChar:v}:u.appendElement("part",b,v,{title:O}),[_-f+1+c];case"[L:":return this.setDefaultLength(h,f+3,_),[_-f+1+c];case"[Q:":if(_>0){var j=this.setTempo(h,f+3,_,o.iChar);return j.type==="delaySet"?u.hasBeginMusic()?u.appendElement("tempo",b,v,this.calcTempo(j.tempo)):o.tempoForNextLine=["tempo",b,v,this.calcTempo(j.tempo)]:j.type==="immediate"&&(!m&&u.hasBeginMusic()?u.appendElement("tempo",b,v,j.tempo):o.tempoForNextLine=["tempo",b,v,j.tempo]),[_-f+1+c,h[f+1],h.substring(f+3,_)]}break;case"[V:":if(_>0)return d=a.parseVoice(h,f+3,_),[_-f+1+c,h[f+1],h.substring(f+3,_),d];break;case"[r:":return[_-f+1+c]}}return[0]},this.letter_to_body_header=function(h,f){var m=!1;if(h.length>=f+3)switch(h.substring(f,f+2)){case"I:":var d=e.addDirective(h.substring(f+2));return d&&r(d,h,f),[h.length];case"M:":var c=this.setMeter(h.substring(f+2));return u.hasBeginMusic()&&c&&u.appendStartingElement("meter",o.iChar+f,o.iChar+h.length,c),[h.length];case"K:":var _=a.parseKey(h.substring(f+2),u.hasBeginMusic());return _.foundClef&&u.hasBeginMusic()&&o.keywarn!==!1&&u.appendStartingElement("clef",o.iChar+f,o.iChar+h.length,o.clef),_.foundKey&&u.hasBeginMusic()&&o.keywarn!==!1&&u.appendStartingElement("key",o.iChar+f,o.iChar+h.length,a.fixKey(o.clef,o.key)),[h.length];case"P:":return u.hasBeginMusic()&&u.appendElement("part",o.iChar+f,o.iChar+h.length,{title:h.substring(f+2)}),[h.length];case"L:":return this.setDefaultLength(h,f+2,h.length),[h.length];case"Q:":var b=h.indexOf("",f+2);b===-1&&(b=h.length);var v=this.setTempo(h,f+2,b,o.iChar);return v.type==="delaySet"?u.appendElement("tempo",o.iChar+f,o.iChar+h.length,this.calcTempo(v.tempo)):v.type==="immediate"&&u.appendElement("tempo",o.iChar+f,o.iChar+h.length,v.tempo),[b,h[f],t.strip(h.substring(f+2))];case"V:":return m=a.parseVoice(h,f+2,h.length),[h.length,h[f],t.strip(h.substring(f+2)),m]}return[0]};var g={A:"author",B:"book",C:"composer",D:"discography",F:"url",G:"group",I:"instruction",N:"notes",O:"origin",R:"rhythm",S:"source",W:"unalignedWords",Z:"transcription"};this.parseHeader=function(h){var f=g[h[0]],m=h.length-2,d=s.translateString(s.stripComment(h.substring(2)));if(f==="unalignedWords"||f==="notes")u.addMetaTextArray(f,e.parseFontChangeLine(d),{startChar:o.iChar,endChar:o.iChar+h.length});else if(f!==void 0)u.addMetaText(f,e.parseFontChangeLine(d),{startChar:o.iChar,endChar:o.iChar+h.length});else{var c=o.iChar,_=c+h.length;switch(h[0]){case"H":for(u.addMetaTextArray("history",e.parseFontChangeLine(d),{startChar:o.iChar,endChar:o.iChar+h.length}),h=s.peekLine();h&&h[1]!==":";)s.nextLine(),u.addMetaTextArray("history",e.parseFontChangeLine(s.translateString(s.stripComment(h))),{startChar:o.iChar,endChar:o.iChar+h.length}),h=s.peekLine();break;case"K":this.resolveTempo();var b=a.parseKey(h.substring(2),!1);!o.is_in_header&&u.hasBeginMusic()&&o.keywarn!==!1&&(b.foundClef&&u.appendStartingElement("clef",c,_,o.clef),b.foundKey&&u.appendStartingElement("key",c,_,a.fixKey(o.clef,o.key))),o.is_in_header=!1;break;case"L":this.setDefaultLength(h,2,h.length);break;case"M":o.origMeter=o.meter=this.setMeter(h.substring(2));break;case"P":o.is_in_header?u.addMetaText("partOrder",e.parseFontChangeLine(d),{startChar:o.iChar,endChar:o.iChar+h.length}):o.partForNextLine={title:d,startChar:c,endChar:_};break;case"Q":var v=this.setTempo(h,2,h.length,o.iChar);v.type==="delaySet"?o.tempo=v.tempo:v.type==="immediate"&&(l.metaText.tempo?o.tempoForNextLine=["tempo",c,_,v.tempo]:l.metaText.tempo=v.tempo);break;case"T":o.titlecaps&&(d=d.toUpperCase()),this.setTitle(e.parseFontChangeLine(s.theReverser(d)),m);break;case"U":this.addUserDefinition(h,2,h.length);break;case"V":if(a.parseVoice(h,2,h.length),!o.is_in_header)return{newline:!0};break;case"s":return{symbols:!0};case"w":return{words:!0};case"X":break;case"E":case"m":r("Ignored header",h,0);break;default:return{regular:!0}}}return{}}};return dp=n,dp}var ts={},iy;function NC(){return iy||(iy=1,ts.legalAccents=["trill","trillh","lowermordent","uppermordent","mordent","pralltriller","accent","fermata","invertedfermata","tenuto","0","1","2","3","4","5","+","wedge","open","thumb","snap","turn","roll","breath","shortphrase","mediumphrase","longphrase","segno","coda","D.S.","D.C.","fine","beambr1","beambr2","slide","marcato","upbow","downbow","/","//","///","////","trem1","trem2","trem3","trem4","turnx","invertedturn","invertedturnx","trill(","trill)","arpeggio","xstem","mark","umarcato","style=normal","style=harmonic","style=rhythm","style=x","style=triangle","D.C.alcoda","D.C.alfine","D.S.alcoda","D.S.alfine","editorial","courtesy"],ts.volumeDecorations=["p","pp","f","ff","mf","mp","ppp","pppp","fff","ffff","sfz"],ts.dynamicDecorations=["crescendo(","crescendo)","diminuendo(","diminuendo)","glissando(","glissando)","~(","~)"],ts.accentPseudonyms=[["<","accent"],[">","accent"],["tr","trill"],["plus","+"],["emphasis","accent"],["^","umarcato"],["marcato","umarcato"]],ts.accentDynamicPseudonyms=[["<(","crescendo("],["<)","crescendo)"],[">(","diminuendo("],[">)","diminuendo)"]],ts.nonDecorations="ABCDEFGabcdefgxyzZ[]|^_{",ts.durations=[.5,.75,.875,.9375,.96875,.984375,.25,.375,.4375,.46875,.484375,.4921875,.125,.1875,.21875,.234375,.2421875,.24609375,.0625,.09375,.109375,.1171875,.12109375,.123046875,.03125,.046875,.0546875,.05859375,.060546875,.0615234375,.015625,.0234375,.02734375,.029296875,.0302734375,.03076171875],ts.pitches={A:5,B:6,C:0,D:1,E:2,F:3,G:4,a:12,b:13,c:7,d:8,e:9,f:10,g:11},ts.rests={x:"invisible",X:"invisible-multimeasure",y:"spacer",z:"rest",Z:"multimeasure"},ts.accMap={dblflat:"__",flat:"_",natural:"=",sharp:"^",dblsharp:"^^",quarterflat:"_/",quartersharp:"^/"},ts.tripletQ={2:3,3:2,4:3,5:2,6:2,7:2,8:3,9:2}),ts}var up,ay;function OC(){if(ay)return up;ay=1;var t=cp(),e=Zb(),a,n,s,r,o,l,{legalAccents:u,volumeDecorations:p,dynamicDecorations:g,accentPseudonyms:h,accentDynamicPseudonyms:f,nonDecorations:m,durations:d,pitches:c,rests:_,accMap:b,tripletQ:v}=NC(),k=function(w,S,C,H,Y,ee){a=w,n=S,s=C,r=H,o=Y,l=ee,this.lineContinuation=!1},y=function(w,S,C){if(w.inTie[S]===void 0)return!1;var H=w.currentVoice?w.currentVoice.staffNum*100+w.currentVoice.index:0;return!!(w.inTie[S][H]&&(C.pitches!==void 0||C.rest.type!=="spacer"))},T={};k.prototype.parseMusic=function(w){l.resolveTempo(),s.is_in_header=!1;for(var S=0,C=s.iChar;a.isWhiteSpace(w[S])&&S0&&(S+=ee[0],ee[1]==="V"&&this.startNewLine());for(var W=0;S0)S+=be[0],be[1]==="V"&&(H=!0);else{(!o.hasBeginMusic()||H&&!this.lineContinuation)&&(this.startNewLine(),H=!1);for(var ae;;)if(ae=a.eatWhiteSpace(w,S),ae>0&&(S+=ae),S>0&&w[S-1]===""&&(ae=l.letter_to_body_header(w,S),ae[0]>0&&(ae[1]==="V"&&this.startNewLine(),S=ae[0],s.start_new_line=!1)),ae=B(w,S),ae[0]>0&&(S+=ae[0]),ae=j(w,S),ae[0]>0){T.chord||(T.chord=[]);var ge=a.translateString(ae[1]);ge=ge.replace(/;/g,` +`);for(var ie=!1,_e=0;_e0&&(T.force_end_beam_last=!0),S+=le}else if(m.indexOf(w[S])===-1?ae=x(w,S):ae=[0],ae[0]>0)ae[1]===null?S+10&&(ae[1].indexOf("style=")===0?T.style=ae[1].substring(6):ae[1].indexOf("class=")===0?T.extraClass=ae[1].substring(6):(T.decoration===void 0&&(T.decoration=[]),ae[1]==="beambr1"?T.beambr=1:ae[1]==="beambr2"?T.beambr=2:T.decoration.push(ae[1]))),S+=ae[0];else if(ae=$(w,S),ae[0]>0)T.gracenotes=ae[1],S+=ae[0];else break;if(ae=D(w,S),ae[0]>0){W=0,T.gracenotes!==void 0&&(T.rest={type:"spacer"},T.duration=.125,s.addFormattingOptions(T,r.formatting,"note"),o.appendElement("note",C+S,C+S+ae[0],T),s.measureNotEmpty=!0,T={});var Ee={type:ae[1]};Ee.type.length===0?n("Unknown bar type",w,S):(s.inEnding&&Ee.type!=="bar_thin"&&(Ee.endEnding=!0,s.inEnding=!1),ae[2]&&(Ee.startEnding=ae[2],s.inEnding&&(Ee.endEnding=!0),s.inEnding=!0,ae[1]==="bar_right_repeat"?s.restoreStartEndingHoldOvers():s.duplicateStartEndingHoldOvers()),T.decoration!==void 0&&(Ee.decoration=T.decoration),T.chord!==void 0&&(Ee.chord=T.chord),Ee.startEnding&&s.barFirstEndingNum===void 0?s.barFirstEndingNum=s.currBarNumber:Ee.startEnding&&Ee.endEnding&&s.barFirstEndingNum?s.currBarNumber=s.barFirstEndingNum:Ee.endEnding&&(s.barFirstEndingNum=void 0),Ee.type!=="bar_invisible"&&s.measureNotEmpty&&I()&&(s.currBarNumber++,s.barNumbers&&s.currBarNumber%s.barNumbers===0&&(Ee.barNumber=s.currBarNumber)),s.addFormattingOptions(T,r.formatting,"bar"),o.appendElement("bar",C+z,C+S+ae[0],Ee),s.measureNotEmpty=!1,T={}),S+=ae[0]}else if(w[S]==="&")ae=P(w,S),ae[0]>0&&(o.appendElement("overlay",C,C+1,{}),S+=1,W++);else{if(ae=A(w,S),ae.consumed>0&&(ae.startSlur!==void 0&&(T.startSlur=ae.startSlur),ae.dottedSlur&&(T.dottedSlur=!0),ae.triplet!==void 0&&(Y>0?n("Can't nest triplets",w,S):(T.startTriplet=ae.triplet,T.tripletMultiplier=ae.tripletQ/ae.triplet,T.tripletR=ae.num_notes,Y=ae.num_notes===void 0?ae.triplet:ae.num_notes)),S+=ae.consumed),w[S]==="["){S++;for(var Se=null,pe=!1,De=!1;!De;){var et=x(w,S);et[0]>0&&(S+=et[0]);var Qe=U(w,S,{},!1);if(Qe!==null&&Qe.pitch!==void 0)et[0]>0&&et[1].indexOf("style=")!==0&&(T.decoration===void 0&&(T.decoration=[]),T.decoration.push(et[1])),Qe.end_beam&&(T.end_beam=!0,delete Qe.end_beam),T.pitches===void 0?(T.duration=Qe.duration,T.pitches=[Qe]):T.pitches.push(Qe),delete Qe.duration,et[0]>0&&et[1].indexOf("style=")===0&&(T.pitches[T.pitches.length-1].style=et[1].substr(6)),s.inTieChord[T.pitches.length]&&(Qe.endTie=!0,s.inTieChord[T.pitches.length]=void 0),Qe.startTie&&(s.inTieChord[T.pitches.length]=!0),S=Qe.endChar,delete Qe.endChar;else if(w[S]===" ")n("Spaces are not allowed in chords",w,S),S++;else{if(S0&&!(T.rest&&T.rest.type==="spacer")&&(Y--,Y===0&&(T.endTriplet=!0));for(var Pe=!1;S":case"<":var xe=V(w,S);S+=xe[0]-1,s.next_note_duration=xe[2],Se?Se=Se*xe[1]:Se=xe[1];break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"/":var lt=a.getFraction(w,S);Se=lt.value,S=lt.index;var re=w[S];re===" "&&(pe=!0),re==="-"||re===")"||re===" "||re==="<"||re===">"?S--:Pe=!0;break;case"0":Se=0;break;default:Pe=!0;break}Pe||S++}}else n("Expected ']' to end the chords",w,S);T.pitches!==void 0&&(Se!==null&&(T.duration=T.duration*Se,pe&&G(T)),s.addFormattingOptions(T,r.formatting,"note"),o.appendElement("note",C+z,C+S,T),s.measureNotEmpty=!0,T={}),De=!0}}}else{var ke={},ne=U(w,S,ke,!0);if(ke.endTie!==void 0&&O(s,W,!0),ne!==null){ne.pitch!==void 0?(T.pitches=[{}],ne.accidental!==void 0&&(T.pitches[0].accidental=ne.accidental),T.pitches[0].pitch=ne.pitch,T.pitches[0].name=ne.name,(ne.midipitch||ne.midipitch===0)&&(T.pitches[0].midipitch=ne.midipitch),ne.endSlur!==void 0&&(T.pitches[0].endSlur=ne.endSlur),ne.endTie!==void 0&&(T.pitches[0].endTie=ne.endTie),ne.startSlur!==void 0&&(T.pitches[0].startSlur=ne.startSlur),T.startSlur!==void 0&&(T.pitches[0].startSlur=T.startSlur),T.dottedSlur!==void 0&&(T.pitches[0].dottedSlur=!0),ne.startTie!==void 0&&(T.pitches[0].startTie=ne.startTie),T.startTie!==void 0&&(T.pitches[0].startTie=T.startTie)):(T.rest=ne.rest,ne.rest.type==="multimeasure"&&I()&&(s.currBarNumber+=ne.rest.text-1),ne.endSlur!==void 0&&(T.endSlur=ne.endSlur),ne.endTie!==void 0&&(T.rest.endTie=ne.endTie),ne.startSlur!==void 0&&(T.startSlur=ne.startSlur),ne.startTie!==void 0&&(T.rest.startTie=ne.startTie),T.startTie!==void 0&&(T.rest.startTie=T.startTie)),ne.chord!==void 0&&(T.chord=ne.chord),ne.duration!==void 0&&(T.duration=ne.duration),ne.decoration!==void 0&&(T.decoration=ne.decoration),ne.graceNotes!==void 0&&(T.graceNotes=ne.graceNotes),delete T.startSlur,delete T.dottedSlur,y(s,W,T)&&(T.pitches!==void 0?T.pitches[0].endTie=!0:T.rest.type!=="spacer"&&(T.rest.endTie=!0),O(s,W,!1)),(ne.startTie||T.startTie)&&O(s,W,!0),S=ne.endChar,Y>0&&!(ne.rest&&ne.rest.type==="spacer")&&(Y--,Y===0&&(T.endTriplet=!0)),ne.end_beam&&G(T),T.rest&&T.rest.type==="rest"&&T.duration===1&&L(s)<=1&&(T.rest.type="whole",T.duration=L(s)),T.duration<1&&d.indexOf(T.duration)===-1&&T.duration!==0&&(!T.rest||T.rest.type!=="spacer")&&n("Duration not representable: "+w.substring(z,S),w,S),s.addFormattingOptions(T,r.formatting,"note");var fe=o.appendElement("note",C+z,C+S,T);fe||(this.startNewLine(),o.appendElement("note",C+z,C+S,T)),s.measureNotEmpty=!0,T={}}}S===z&&(w[S]!==" "&&w[S]!=="`"&&n("Unknown character ignored",w,S),S++)}}}this.lineContinuation=w.indexOf("")>=0||ee[0]>0,this.lineContinuation||(T={})}};var O=function(w,S,C){var H=w.currentVoice?w.currentVoice.staffNum*100+w.currentVoice.index:0;w.inTie[S]===void 0&&(w.inTie[S]=[]),w.inTie[S][H]=C},j=function(w,S){if(w[S]==='"'){var C=a.getBrackettedSubstring(w,S,5);if(C[2]||n("Missing the closing quote while parsing the chord symbol",w,S),C[0]>0&&C[1].length>0&&C[1][0]==="^")C[1]=C[1].substring(1),C[2]="above";else if(C[0]>0&&C[1].length>0&&C[1][0]==="_")C[1]=C[1].substring(1),C[2]="below";else if(C[0]>0&&C[1].length>0&&C[1][0]==="<")C[1]=C[1].substring(1),C[2]="left";else if(C[0]>0&&C[1].length>0&&C[1][0]===">")C[1]=C[1].substring(1),C[2]="right";else if(C[0]>0&&C[1].length>0&&C[1][0]==="@"){C[1]=C[1].substring(1);var H=a.getFloat(C[1]);if(H.digits===0)return n("Missing first position in absolutely positioned annotation.",w,S),C[1]=C[1].replace("@",""),C[2]="above",C;if(C[1]=C[1].substring(H.digits),C[1][0]!==",")return n("Missing comma absolutely positioned annotation.",w,S),C[1]=C[1].replace("@",""),C[2]="above",C;C[1]=C[1].substring(1);var Y=a.getFloat(C[1]);if(Y.digits===0)return n("Missing second position in absolutely positioned annotation.",w,S),C[1]=C[1].replace("@",""),C[2]="above",C;C[1]=C[1].substring(Y.digits);var ee=a.skipWhiteSpace(C[1]);C[1]=C[1].substring(ee),C[2]=null,C[3]={x:H.value,y:Y.value}}else s.freegchord!==!0&&(C[1]=C[1].replace(/([ABCDEFG0-9])b/g,"$1♭"),C[1]=C[1].replace(/([ABCDEFG0-9])#/g,"$1♯"),C[1]=C[1].replace(/^([ABCDEFG])([♯♭]?)o([^A-Za-z])/g,"$1$2°$3"),C[1]=C[1].replace(/^([ABCDEFG])([♯♭]?)o$/g,"$1$2°"),C[1]=C[1].replace(/^([ABCDEFG])([♯♭]?)0([^A-Za-z])/g,"$1$2ø$3"),C[1]=C[1].replace(/^([ABCDEFG])([♯♭]?)\^([^A-Za-z])/g,"$1$2∆$3")),C[2]="default",C[1]=e.chordName(s,C[1]);return C}return[0,""]},$=function(w,S){if(w[S]==="{"){var C=a.getBrackettedSubstring(w,S,1,"}");C[2]||n("Missing the closing '}' while parsing grace note",w,S),w[S+C[0]]===")"&&(C[0]++,C[1]+=")");for(var H=[],Y=0,ee=!1;Y0&&(H[H.length-1].endBeam=!0):n("Unknown character '"+C[1][Y]+"' while parsing grace note",w,S),Y++)}if(H.length)return[C[0],H]}return[0]};function P(w,S){if(w[S]==="&"){for(var C=S;w[S]&&w[S]!==":"&&w[S]!=="|";)S++;return[S-C,w.substring(C+1,S)]}return[0]}function L(w){var S=w.origMeter;return!S||S.type!=="specified"||!S.value||S.value.length===0?1:parseInt(S.value[0].num,10)/parseInt(S.value[0].den,10)}var x=function(w,S){var C=s.macros[w[S]];if(C!==void 0)return(C[0]==="!"||C[0]==="+")&&(C=C.substring(1)),(C[C.length-1]==="!"||C[C.length-1]==="+")&&(C=C.substring(0,C.length-1)),u.includes(C)?[1,C]:p.includes(C)?(s.volumePosition==="hidden"&&(C=""),[1,C]):g.includes(C)?(s.dynamicPosition==="hidden"&&(C=""),[1,C]):(s.ignoredDecorations.includes(C)||n("Unknown macro: "+C,w,S),[1,""]);switch(w[S]){case".":if(w[S+1]==="("||w[S+1]==="-")break;return[1,"staccato"];case"u":return[1,"upbow"];case"v":return[1,"downbow"];case"~":return[1,"irishroll"];case"!":case"+":var H=a.getBrackettedSubstring(w,S,5);if(H[1].length>1&&(H[1][0]==="^"||H[1][0]==="_")&&(H[1]=H[1].substring(1)),u.includes(H[1])||H[1].indexOf("class=")===0)return H;if(p.includes(H[1]))return s.volumePosition==="hidden"&&(H[1]=""),H;if(g.includes(H[1]))return s.dynamicPosition==="hidden"&&(H[1]=""),H;var Y=h.findIndex(function(ee){return H[1]===ee[0]});return Y>=0?(H[1]=h[Y][1],H):(Y=f.findIndex(function(ee){return H[1]===ee[0]}),Y>=0?(H[1]=f[Y][1],s.dynamicPosition==="hidden"&&(H[1]=""),H):w[S]==="!"&&(H[0]===1||w[S+H[0]-1]!=="!")?[1,null]:(n("Unknown decoration: "+H[1],w,S),H[1]="",H));case"H":return[1,"fermata"];case"J":return[1,"slide"];case"L":return[1,"accent"];case"M":return[1,"mordent"];case"O":return[1,"coda"];case"P":return[1,"pralltriller"];case"R":return[1,"roll"];case"S":return[1,"segno"];case"T":return[1,"trill"];case"t":return[1,"trillh"]}return[0,0]},B=function(w,S){for(var C=S;a.isWhiteSpace(w[S]);)S++;return[S-C]},D=function(w,S){var C=a.getBarLine(w,S);if(C.len===0)return[0,""];if(C.warn)return n(C.warn,w,S),[C.len,""];for(var H=0;H="2"&&w[S+1]<="9"?(C.triplet!==void 0?n("Can't nest triplets",w,S):(C.triplet=w[S+1]-"0",C.tripletQ=v[C.triplet],C.num_notes=C.triplet,S+2="1"&&w[S+4]<="9"?(C.num_notes=w[S+4]-"0",S+=3):n("expected number after the two colons after the triplet to mark the duration",w,S):S+3="1"&&w[S+3]<="9"?(C.tripletQ=w[S+3]-"0",S+4="1"&&w[S+5]<="9"&&(C.num_notes=w[S+5]-"0",S+=4):S+=2):n("expected number after the triplet to mark the duration",w,S))),S++):C.startSlur===void 0?C.startSlur=1:C.startSlur++),S++;return C.consumed=S-H,C};k.prototype.startNewLine=function(){var w={startChar:-1,endChar:-1};s.partForNextLine.title&&(w.part=s.partForNextLine),w.clef=s.currentVoice&&s.staves[s.currentVoice.staffNum].clef!==void 0?Object.assign({},s.staves[s.currentVoice.staffNum].clef):Object.assign({},s.clef);var S=s.currentVoice?s.currentVoice.scoreTranspose:0;if(w.key=t.standardKey(s.key.root+s.key.acc+s.key.mode,s.key.root,s.key.acc,S),w.key.mode=s.key.mode,s.key.impliedNaturals&&(w.key.impliedNaturals=s.key.impliedNaturals),s.key.explicitAccidentals)for(var C=0;C=0?(C.duration=r.getBarLength(),C.rest.text=1,W="Zduration"):(H&&s.next_note_duration!==0?(C.duration=s.default_length*s.next_note_duration,s.next_note_duration=0,z=!0):C.duration=s.default_length,W="duration");else return Y(W)?(C.endChar=S,C):null;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"0":case"/":if(W==="octave"||W==="duration"){var ae=a.getFraction(w,S);for(C.duration=C.duration*ae.value,C.endChar=ae.index;ae.index"))S--,W="broken_rhythm";else return C}else return null;break;case">":case"<":if(Y(W))if(H){var ie=V(w,S);S+=ie[0]-1,s.next_note_duration=ie[2],C.duration=ie[1]*C.duration,W="end_slur"}else return C.endChar=S,C;else return null;break;default:return Y(W)?(C.endChar=S,C):null}if(S++,S===w.length)return Y(W)?(C.endChar=S,C):null}return null},V=function(w,S){switch(w[S]){case">":return S"&&w[S+2]===">"?[3,1.875,.125]:S"?[2,1.75,.25]:[1,1.5,.5];case"<":return S=m.length};this.eatWhiteSpace=function(m,d){for(var c=d;c="a"&&b[v]<="z"||b[v]>="A"&&b[v]<="Z");)v++;return v},c=this.skipWhiteSpace(m);if(s(m,c))return{len:0};var _=m.substring(c,c+3).toLowerCase();switch((_.length>1&&_[1]===" "||_[1]==="^"||_[1]==="_"||_[1]==="=")&&(_=_[0]),_){case"mix":return{len:d(m,c),token:"Mix"};case"dor":return{len:d(m,c),token:"Dor"};case"phr":return{len:d(m,c),token:"Phr"};case"lyd":return{len:d(m,c),token:"Lyd"};case"loc":return{len:d(m,c),token:"Loc"};case"aeo":return{len:d(m,c),token:"m"};case"maj":return{len:d(m,c),token:""};case"ion":return{len:d(m,c),token:""};case"min":return{len:d(m,c),token:"m"};case"m":return{len:d(m,c),token:"m"}}return{len:0}},this.getClef=function(m,d){var c=m,_=this.skipWhiteSpace(m);if(s(m,_))return{len:0};var b=!1,v=m.substring(_);if(t.startsWith(v,"clef=")&&(b=!0,v=v.substring(5),_+=5),v.length===0&&b)return{len:_+5,warn:"No clef specified: "+c};var k=this.skipWhiteSpace(v);if(s(v,k))return{len:0};k>0&&(_+=k,v=v.substring(k));var y=null;if(t.startsWith(v,"treble"))y="treble";else if(t.startsWith(v,"bass3"))y="bass3";else if(t.startsWith(v,"bass"))y="bass";else if(t.startsWith(v,"tenor"))y="tenor";else if(t.startsWith(v,"alto2"))y="alto2";else if(t.startsWith(v,"alto1"))y="alto1";else if(t.startsWith(v,"alto"))y="alto";else if(!d&&b&&t.startsWith(v,"none"))y="none";else if(t.startsWith(v,"perc"))y="perc";else if(!d&&b&&t.startsWith(v,"C"))y="tenor";else if(!d&&b&&t.startsWith(v,"F"))y="bass";else if(!d&&b&&t.startsWith(v,"G"))y="treble";else return{len:_+5,warn:"Unknown clef specified: "+c};return v=v.substring(y.length),k=this.isMatch(v,"+8"),k>0?y+="+8":(k=this.isMatch(v,"-8"),k>0&&(y+="-8")),{len:_+y.length,token:y,explicit:b}},this.getBarLine=function(m,d){switch(m[d]){case"]":switch(++d,m[d]){case"|":return{len:2,token:"bar_thick_thin"};case"[":return++d,m[d]>="1"&&m[d]<="9"||m[d]==='"'?{len:2,token:"bar_invisible"}:{len:1,warn:"Unknown bar symbol"};default:return{len:1,token:"bar_invisible"}}case":":switch(++d,m[d]){case":":return{len:2,token:"bar_dbl_repeat"};case"|":switch(++d,m[d]){case"]":return++d,m[d]==="|"?(++d,m[d]===":"?{len:5,token:"bar_dbl_repeat"}:{len:3,token:"bar_right_repeat"}):{len:3,token:"bar_right_repeat"};case"|":return++d,m[d]===":"?{len:4,token:"bar_dbl_repeat"}:{len:3,token:"bar_right_repeat"};default:return{len:2,token:"bar_right_repeat"}}default:return{len:1,warn:"Unknown bar symbol"}}case"[":if(++d,m[d]==="|")switch(++d,m[d]){case":":return{len:3,token:"bar_left_repeat"};case"]":return{len:3,token:"bar_invisible"};default:return{len:2,token:"bar_thick_thin"}}else return m[d]>="1"&&m[d]<="9"||m[d]==='"'?{len:1,token:"bar_invisible"}:{len:0};case"|":switch(++d,m[d]){case"]":return{len:2,token:"bar_thin_thick"};case"|":return++d,m[d]===":"?{len:3,token:"bar_left_repeat"}:{len:2,token:"bar_thin_thin"};case":":for(var c=0;m[d+c]===":";)c++;return{len:1+c,token:"bar_left_repeat"};default:return{len:1,token:"bar_thin"}}}return{len:0}},this.getTokenOf=function(m,d){for(var c=0;c0;){var c;if(m[0].token==="^"){if(c="sharp",m.shift(),m.length===0)return{accs:d,warn:"Expected note name after "+c};switch(m[0].token){case"^":c="dblsharp",m.shift();break;case"/":c="quartersharp",m.shift();break}}else if(m[0].token==="=")c="natural",m.shift();else if(m[0].token==="_"){if(c="flat",m.shift(),m.length===0)return{accs:d,warn:"Expected note name after "+c};switch(m[0].token){case"_":c="dblflat",m.shift();break;case"/":c="quarterflat",m.shift();break}}else return{accs:d};if(m.length===0)return{accs:d,warn:"Expected note name after "+c};switch(m[0].token[0]){case"a":case"b":case"c":case"d":case"e":case"f":case"g":case"A":case"B":case"C":case"D":case"E":case"F":case"G":d===void 0&&(d=[]),d.push({acc:c,note:m[0].token[0]}),m[0].token.length===1?m.shift():m[0].token=m[0].token.substring(1);break;default:return{accs:d,warn:"Expected note name after "+c+" Found: "+m[0].token}}}return{accs:d}},this.getKeyAccidental=function(m){var d={"^":"sharp","^^":"dblsharp","=":"natural",_:"flat",__:"dblflat","_/":"quarterflat","^/":"quartersharp"},c=this.skipWhiteSpace(m);if(s(m,c))return{len:0};var _=null;switch(m[c]){case"^":case"_":case"=":_=m[c];break;default:return{len:0}}if(c++,s(m,c))return{len:1,warn:"Expected note name after accidental"};switch(m[c]){case"a":case"b":case"c":case"d":case"e":case"f":case"g":case"A":case"B":case"C":case"D":case"E":case"F":case"G":return{len:c+1,token:{acc:d[_],note:m[c]}};case"^":case"_":case"/":if(_+=m[c],c++,s(m,c))return{len:2,warn:"Expected note name after accidental"};switch(m[c]){case"a":case"b":case"c":case"d":case"e":case"f":case"g":case"A":case"B":case"C":case"D":case"E":case"F":case"G":return{len:c+1,token:{acc:d[_],note:m[c]}};default:return{len:2,warn:"Expected note name after accidental"}}break;default:return{len:1,warn:"Expected note name after accidental"}}},this.isWhiteSpace=function(m){return m===" "||m===" "||m===""},this.getMeat=function(m,d,c){var _=m.indexOf("%",d);for(_>=0&&_="A"&&m<="Z"||m>="a"&&m<="z"},o=function(m){return m>="0"&&m<="9"};this.tokenize=function(m,d,c,_){var b=this.getMeat(m,d,c);d=b.start,c=b.end;for(var v=[],k;d=c?{len:1,err:"Missing close quote"}:{len:b-d+1,token:this.translateString(m.substring(_+1,b))}}else{for(var v=_;v=0?t.strip(m.substring(0,d)):t.strip(m)},this.getInt=function(m){var d=parseInt(m);if(isNaN(d))return{digits:0};var c=""+d,_=m.indexOf(c);return{value:d,digits:_+c.length}},this.getFloat=function(m){var d=parseFloat(m);if(isNaN(d))return{digits:0};var c=""+d,_=m.indexOf(c);return{value:d,digits:_+c.length}},this.getMeasurement=function(m){if(m.length===0)return{used:0};var d=1,c="";if(m[0].token==="-")m.shift(),c="-",d++;else if(m[0].type!=="number")return{used:0};if(c+=m.shift().token,m.length===0)return{used:1,value:parseInt(c)};var _=m.shift();if(_.token==="."){if(d++,m.length===0)return{used:d,value:parseInt(c)};if(m[0].type==="number"&&(_=m.shift(),c=c+"."+_.token,d++,m.length===0))return{used:d,value:parseFloat(c)};_=m.shift()}switch(_.token){case"pt":return{used:d+1,value:parseFloat(c)};case"px":return{used:d+1,value:parseFloat(c)};case"cm":return{used:d+1,value:parseFloat(c)/2.54*72};case"in":return{used:d+1,value:parseFloat(c)*72};default:return m.unshift(_),{used:d,value:parseFloat(c)}}};var f=function(m){return m=m.replace(/\\n/g,` +`),m=m.replace(/\\"/g,'"'),m};this.getBrackettedSubstring=function(m,d,c,_){for(var b=_||m[d],v=d+1,k=!1;vm.length-1&&(v=m.length-1),[v-d+1,f(m.substring(d+1,v)),!1])}};return e.prototype.peekLine=function(){return this.lines[this.lineIndex]},e.prototype.nextLine=function(){if(this.lineIndex>0&&(this.multilineVars.iChar+=this.lines[this.lineIndex-1].length+1),this.lineIndex0&&(m[v.line].staff[v.staff].barNumber=_);for(var y=Object.keys(k),T=0;T=0;$--)if(j[$].el_type==="key"){d[v.staff]={root:j[$].root,acc:j[$].acc,mode:j[$].mode,accidentals:j[$].accidentals.filter(function(L){return L.acc!=="natural"})};break}for($=j.length-1;$>=0;$--)if(j[$].el_type==="stem"){c[v.staff*10+v.voice]={direction:j[$].direction};break}if(f!==void 0&&v.staff===0&&v.voice===0)for($=0;$0?(f.push(c-1),m.push(Math.round(d-_)),d=_):cc&&Tc?(v.push(T-1),b++,_=Math.max(_,c),c=Math.abs(f-h[b]),d.push(m-O),m=O):c=j}d.push(m)}function o(g,h,f,m){for(var d=Math.ceil(g.total/h),c=Math.floor(g.total/d),_=[],b=0;bh&&(_=!0),b%f===f-1&&(b!==g.length-1&&m.push(b),d.push(Math.round(c)),c=0);return{failed:_,totals:d,lineBreaks:m}}function u(g,h,f){var m={lineBreaks:g,staffwidth:h};for(var d in f)f.hasOwnProperty(d)&&d!=="wrap"&&d!=="staffwidth"&&(m[d]=f[d]);return{revisedParams:m}}function p(g,h,f){if(h.length===0||f.staffwidth0&&T.measureWidths.length<25&&(D=o(T,j,x,L),L.attempts.push({type:"Optimize",failed:D.failed,reason:D.reason,lineBreaks:D.lineBreaks,totals:D.totals}),D.failed||(x=D.lineBreaks))}v.push(x),k.push(L)}var A=f.staffwidth,G=u(v,A,f);return G.explanation=k,G.reParse=!0,G}return mp={wrapLines:t,calcLineWraps:p},mp}var pp,oy;function LC(){if(oy)return pp;oy=1;function t(u){const p=u.getMeterFraction(),g=p.num===4&&p.den===4;if(!(p.num===2&&p.den===2)&&!g)throw new Error("notCommonTime");const f=u.deline();let m=[],d=!1;return f.forEach(c=>{if(c.subtitle)d&&m.push({type:"subtitle",subtitle:c.subtitle.text});else if(c.text)d=!0,m.push({type:"text",text:c.text.text});else if(c.staff){d=!0;const _=c.staff,b=a(_);m=m.concat(b)}}),s(m),r(m),o(m),m}const e=["break","(break)","no chord","n.c.","tacet"];function a(u){const p=[];let g="",h=[],f={chord:["","","",""]},m="",d="";if(u.forEach((c,_)=>{c.voices&&c.voices.forEach((b,v)=>{let k=0,y=0;b.forEach(T=>{if(T.el_type==="part")h.length>0&&_===0&&v===0&&(p.push({type:"part",name:g,lines:[h]}),h=[]),g=T.title;else if(T.el_type==="note"){l(T,f);const O=Math.floor(k);if(T.chord&&T.chord.length>0){const j=T.chord[0],$=j.position==="default"||e.indexOf(j.name.toLowerCase())>=0?j.name:"";$&&(O>0&&!f.chord[0]&&(f.chord[0]=m),m=$,f.chord[O]?O<4&&!f.chord[O+1]&&(f.chord[O+1]=$):f.chord[O]=$),T.chord.forEach(P=>{P.position!=="default"&&e.indexOf(j.name.toLowerCase())<0&&(f.annotations||(f.annotations=[]),f.annotations.push(P.name))})}if(!T.rest||T.rest.type!=="spacer"){const j=T.duration===0&&!T.rest?.25:T.duration,$=Math.floor(j*4);if($>4)y+=Math.floor($/4),k=0;else{let P=j*4;T.tripletMultiplier&&(P*=T.tripletMultiplier),k+=P}}}else if(T.el_type==="bar"){if(d&&(f.ending=d,d=""),l(T,f),T.chord&&T.chord.forEach(O=>{O.position!=="default"&&(f.annotations||(f.annotations=[]),f.annotations.push(O.name))}),(T.type==="bar_dbl_repeat"||T.type==="bar_left_repeat")&&(f.hasStartRepeat=!0),(T.type==="bar_dbl_repeat"||T.type==="bar_right_repeat")&&(f.hasEndRepeat=!0),T.startEnding&&(d=T.startEnding),k>=4){if(f.chord[0]===""&&(f.chord[1]||f.chord[2]||f.chord[3])&&(f.chord[0]=n(h)),_===0&&v===0)h.push(f);else{let O=y,j=0;for(;O>=p[j].lines[0].length&&j=0;p--)for(let g=u[p].chord.length-1;g>=0;g--)if(u[p].chord[g])return u[p].chord[g]}function s(u){u.forEach(p=>{if(p.type==="part"){const g=p.lines[0],h=g.findIndex(m=>!!m.ending),f=g.findIndex((m,d)=>d>h&&!!m.ending);if(h>=0&&f>=0&&f-h===g.length-f){let m=!0;for(let d=0;d{if(p.type==="part"){const g=[],h=p.lines[0];let f=!1;const m=h.findIndex(_=>!!_.hasEndRepeat);(m>=0?Math.min(m+1,h.length):h.length)===12&&(f=!0);const c=f?4:8;for(let _=0;_!!k.hasEndRepeat);v>=0&&v{if(p.lines){let g=!1,h="";p.lines.forEach(f=>{f.forEach(m=>{if(!m.noBorder){const d=m.chord;!d[0]&&!d[1]&&!d[2]&&!d[3]?(g?h&&(d[0]="%"):d[0]=h,g=!0):!d[1]&&!d[2]&&!d[3]?(g=!0,h=d[0]):(g=!1,h=d[3]||d[2]||d[1])}})})}})}function l(u,p){if(u.decoration)for(let g=0;g0&&this.sections[this.sections.length-1].type==="endRepeat"&&this.sections.push({type:"startRepeat",index:this.sections[this.sections.length-1].index}),this.sections.push({type:"endRepeat",index:u})),h&&this.sections.push({type:"startEnding",index:u,endings:h}),p&&this.sections.push({type:"startRepeat",index:u})},this.resolveRepeats=function(){var l,u=this.sections[this.sections.length-1],p=o.length-1;if(u.type==="startRepeat"?u.end=p:u.index+10)for(l=0;l0&&a(o,c,k.start,k.end),_=Math.max(_,k.end))}}return c}}function a(o,l,u,p){u<0&&(u=0),l.length>0&&o[u].el_type==="bar"&&l[l.length-1].el_type==="bar"&&u++;for(var g=u;g<=p;g++){var h,f=!1;if(o[g].el_type==="key"||o[g].el_type==="meter"||o[g].el_type==="tempo"||o[g].el_type==="instrument"){for(h=l.length-1;h>=0&&l[h].el_type!==o[g].el_type;)h--;h>=0&&(o[g].el_type==="key"&&s(o[g],l[h])||o[g].el_type==="meter"&&o[g].num===l[h].num&&o[g].den===l[h].den||o[g].el_type==="instrument"&&o[g].program===l[h].program||o[g].el_type==="tempo"&&o[g].qpm===l[h].qpm)&&(f=!0)}f||l.push(n(o[g]))}}function n(o){var l=Object.assign({},o);return l.pitches&&(l.pitches=t.cloneArray(l.pitches)),l}function s(o,l){return!o.accidentals||!l.accidentals?!1:JSON.stringify(o.accidentals)===JSON.stringify(l.accidentals)}function r(o){var l=[],u,p,g;if(o.indexOf(",")>0)for(p=o.split(","),g=0;g0&&l.push(u);else if(o.indexOf("-")>0){p=o.split("-");var h=parseInt(p[0],10),f=parseInt(p[1],10);for(g=h;g<=f;g++)l.push(g)}else u=parseInt(o,10),u>0&&l.push(u);return l}return hp=e,hp}var _p,dy;function uy(){if(dy)return _p;dy=1;var t,e=ir(),a=DC();return(function(){var n=1,s=128;t=function(_,b){b=b||{};var v,k=b.program||0,y=b.midiTranspose||0;_.visualTranspose&&(y-=_.visualTranspose);var T=b.channel||0,O=!1,j=b.drum||"",$=b.drumBars||1,P=b.drumIntro||0,L=j!=="",x=!!b.drumOff,B=[],D=50;k=parseInt(k,10),y=parseInt(y,10),T=parseInt(T,10),T===10&&(k=s),j=j.split(" "),$=parseInt($,10),P=parseInt(P,10);var A=_.formatting.bagpipes;A&&(k=71);var G=[];if(_.formatting.midi){var U=_.formatting.midi;U.program&&U.program.length>0&&(k=U.program[0],U.program.length>1&&(k=U.program[1],T=U.program[0]),O=!0),U.transpose&&(y=U.transpose[0]),U.channel&&(T=U.channel[0],O=!0),U.drum&&(j=U.drum),U.drumbars&&($=U.drumbars[0]),U.drumon&&(L=!0),T===10&&(k=s),U.beat&&G.push({el_type:"beat",beats:U.beat}),U.nobeataccents&&G.push({el_type:"beataccents",value:!1})}b.qpm?v=parseInt(b.qpm,10):_.metaText.tempo?v=g(_.metaText.tempo,_.getBeatLength()):b.defaultQpm?v=b.defaultQpm:v=180;var V=[];A&&V.push({el_type:"bagpipes"}),V.push({el_type:"instrument",program:k}),T&&V.push({el_type:"channel",channel:T}),y&&V.push({el_type:"transpose",transpose:y}),V.push({el_type:"tempo",qpm:v});for(var I=0;I=0?ct="pppp":Ge.decoration.indexOf("ppp")>=0?ct="ppp":Ge.decoration.indexOf("pp")>=0?ct="pp":Ge.decoration.indexOf("p")>=0?ct="p":Ge.decoration.indexOf("mp")>=0?ct="mp":Ge.decoration.indexOf("mf")>=0?ct="mf":Ge.decoration.indexOf("f")>=0?ct="f":Ge.decoration.indexOf("ff")>=0?ct="ff":Ge.decoration.indexOf("fff")>=0?ct="fff":Ge.decoration.indexOf("ffff")>=0&&(ct="ffff"),ct){W=Ie[ct].slice(0);let Tt=[W];Array.isArray(Ge.decoration)&&(Tt=[],Ge.decoration.forEach(Ft=>{Ft in Ie&&Tt.push(Ie[Ft].slice(0))})),w[le].push({el_type:"beat",beats:W.slice(0),volumesPerNotePitch:Tt}),C[pe]=!1,H[pe]=!1}if(Ge.decoration.indexOf("crescendo(")>=0){var Ve=r(De,ke,"crescendo)"),Gt=Math.min(127,W[0]+D),nt=o(De,ke+Ve+1,Object.keys(Ie));nt&&(Gt=Ie[nt][0]),Ve>0?C[pe]=Math.floor((Gt-W[0])/Ve):C[pe]=!1,H[pe]=!1}else if(Ge.decoration.indexOf("crescendo)")>=0)C[pe]=!1;else if(Ge.decoration.indexOf("diminuendo(")>=0){var Re=r(De,ke,"diminuendo)"),St=Math.max(15,W[0]-D),rt=o(De,ke+Re+1,Object.keys(Ie));rt&&(St=Ie[rt][0]),C[pe]=!1,Re>0?H[pe]=Math.floor((St-W[0])/Re):H[pe]=!1}else Ge.decoration.indexOf("diminuendo)")>=0&&(H[pe]=!1)}};for(var _e=ie.staff,le=0,Ee=0;Ee<_e.length;Ee++){var Se=_e[Ee];if(!(Se.clef&&Se.clef.type==="TAB"))for(var pe=0;pe=0?(w[le].push({el_type:"transpose",transpose:-12}),S[le]=!0):Se.clef.type.indexOf("+8")>=0?(w[le].push({el_type:"transpose",transpose:12}),S[le]=!0):S[le]&&(w[le].push({el_type:"transpose",transpose:0}),S[le]=!1)),_.formatting.midi&&_.formatting.midi.drumoff&&(w[le].push({el_type:"bar"}),w[le].push({el_type:"drum",params:{pattern:"",on:!1}}));var Pe=0,xe=0,lt=0,re=0;W=[105,95,85,1];for(var ke=0;ke=0?w[le].push({el_type:"transpose",transpose:-12}):ne.type.indexOf("+8")>=0&&w[le].push({el_type:"transpose",transpose:12}));break;case"tempo":v=g(ne,_.getBeatLength()),w[le].push({el_type:"tempo",qpm:v,timing:Y[le]}),ee[""+Y[le]]={el_type:"tempo",qpm:v,timing:Y[le]};break;case"bar":Pe>0&&w[le].push({el_type:"bar"}),Be(ne),Pe=0,z[le].addBar(ne,le);break;case"style":B[le]=ne.head;break;case"timeSignature":w[le].push(h(ne));break;case"part":break;case"stem":case"scale":case"break":case"font":break;case"midi":var Fe=!1;switch(ne.cmd){case"drumon":L=!0,Fe=!0;break;case"drumoff":L=!1,Fe=!0;break;case"drum":j=ne.params,Fe=!0;break;case"drumbars":$=ne.params[0],Fe=!0;break;case"drummap":break;case"channel":ne.params[0]===10&&w[le].push({el_type:"instrument",program:s});break;case"program":c(w[le],{el_type:"instrument",program:ne.params[0]}),O=!0;break;case"transpose":w[le].push({el_type:"transpose",transpose:ne.params[0]});break;case"gchordoff":w[le].push({el_type:"gchordOn",tacet:!0});break;case"gchordon":w[le].push({el_type:"gchordOn",tacet:!1});break;case"beat":w[le].push({el_type:"beat",beats:ne.params});break;case"nobeataccents":w[le].push({el_type:"beataccents",value:!1});break;case"beataccents":w[le].push({el_type:"beataccents",value:!0});break;case"vol":case"volinc":w[le].push({el_type:ne.cmd,volume:ne.params[0]});break;case"swing":case"gchord":case"bassvol":case"chordvol":w[le].push({el_type:ne.cmd,param:ne.params[0]});break;case"bassprog":case"chordprog":w[le].push({el_type:ne.cmd,value:ne.params[0],octaveShift:ne.params[1]});break;case"gchordbars":w[le].push({el_type:ne.cmd,param:ne.params[0]});break;default:console.log("MIDI seq: midi cmd not handled: ",ne.cmd,ne)}Fe&&(w[0].push({el_type:"drum",params:{pattern:j,bars:$,intro:P,on:L}}),be=!0);break;default:console.log("MIDI: element type "+ne.el_type+" not handled.")}}le++,Y[le]||(Y[le]=0)}}}}for(var Ue=0;UeHe;)He++;if(w[Ae].length>He){for(var me=0;me0&&w[0].length>0&&(w[0][0].pickupLength=_.getPickupLength()),w};function r(_,b,v){for(var k=0,y=b+1;y<_.length;y++)if(_[y].el_type==="note"&&k++,_[y].decoration&&_[y].decoration.indexOf(v)>=0)return k;return k}function o(_,b,v){for(var k=Math.min(_.length,b+3),y=b;y=0)return _[y].decoration[T]}return null}function l(_,b){if(!(!b||b.length===0))for(var v=Object.keys(b),k=0;k<_.length;k++)for(var y=_[k],T=b[0]?b[0].qpm:0,O=0;O=0&&T!==b[""+j.timing].qpm&&(T=b[""+j.timing].qpm,j.el_type==="tempo"?(j.qpm=b[""+j.timing].qpm,O++):(_[k].splice(O,0,{el_type:"tempo",qpm:b[""+j.timing].qpm,timing:j.timing}),O+=2))}}function u(_){for(var b=0;b<_.length;b++)for(var v=_[b],k=v.length-1;k>=0&&v[k].el_type!=="bar";)v[k].noChordVoice=!0,k--}function p(_,b){if(!(!_||_.length<=b||!_[b].title))return _[b].title.join(" ")}function g(_,b){var v=.25;_.duration&&(v=_.duration[0]);var k=60;return _.bpm&&(k=_.bpm),v*k/b}function h(_){var b;switch(_.type){case"common_time":b={el_type:"meter",num:4,den:4},n=4/4;break;case"cut_time":b={el_type:"meter",num:2,den:2},n=2/2;break;case"specified":let y=0;if(_.value&&_.value.length>0&&_.value[0].num.indexOf("+")>0)for(var v=_.value[0].num.split("+"),k=0;k=0;v--)if(_[v].el_type===b.el_type){JSON.stringify(_[v])!==JSON.stringify(b)&&_.push(b);return}_.push(b)}})(),_p=t,_p}var vp,fy;function VC(){if(fy)return vp;fy=1;var t=function(g,h,f,m){this.chordTrack=[],this.chordTrackFinished=!1,this.chordChannel=g,this.currentChords=[],this.lastChord,this.chordLastBar,this.chordsOff=!!h,this.gChordTacet=this.chordsOff,this.hasRhythmHead=!1,this.transpose=0,this.lastBarTime=0,this.meter=m,this.tempoChangeFactor=1,this.bassInstrument=f.bassprog&&f.bassprog.length>=1?f.bassprog[0]:0,this.chordInstrument=f.chordprog&&f.chordprog.length>=1?f.chordprog[0]:0,this.bassOctaveShift=f.bassprog&&f.bassprog.length===2?f.bassprog[1]:0,this.chordOctaveShift=f.chordprog&&f.chordprog.length===2?f.chordprog[1]:0,this.boomVolume=f.bassvol&&f.bassvol.length===1?f.bassvol[0]:64,this.chickVolume=f.chordvol&&f.chordvol.length===1?f.chordvol[0]:48,f.gchord&&f.gchord.length>0?this.overridePattern=n(f.gchord[0]):this.overridePattern=void 0};t.prototype.setMeter=function(p){this.meter=p},t.prototype.setTempoChangeFactor=function(p){this.tempoChangeFactor=p},t.prototype.setLastBarTime=function(p){this.lastBarTime=p},t.prototype.setTranspose=function(p){this.transpose=p},t.prototype.setRhythmHead=function(p,g){this.hasRhythmHead=p;var h=[];if(p&&this.lastChord&&this.lastChord.chick)for(var f=0;f0&&!this.chordTrackFinished&&(this.resolveChords(this.lastBarTime,l(p.time)),this.currentChords=[]),this.chordLastBar=this.lastChord},t.prototype.gChordOn=function(p){this.chordsOff||(this.gChordTacet=p.tacet)},t.prototype.paramChange=function(p){switch(p.el_type){case"gchord":p.param&&p.param.length>0?this.overridePattern=n(p.param):this.overridePattern=void 0;break;case"bassprog":this.bassInstrument=p.value,p.octaveShift!=null&&p.octaveShift!=null?this.bassOctaveShift=p.octaveShift:this.bassOctaveShift=0;break;case"chordprog":this.chordInstrument=p.value,p.octaveShift!=null&&p.octaveShift!=null?this.chordOctaveShift=p.octaveShift:this.chordOctaveShift=0;break;case"bassvol":this.boomVolume=p.param;break;case"chordvol":this.chickVolume=p.param;break;default:console.log("unhandled midi param",p)}},t.prototype.finish=function(){this.chordTrackEmpty()||(this.chordTrackFinished=!0)},t.prototype.addTrack=function(p){this.chordTrackEmpty()||p.push(this.chordTrack)},t.prototype.findChord=function(p){if(this.gChordTacet)return"break";if(this.chordTrackFinished||!p.chord||p.chord.length===0)return null;for(var g=0;g=0)return"break"}return null},t.prototype.interpretChord=function(p){if(p.length!==0){if(p==="break")return{chick:[]};var g=p.substring(0,1);if(g==="("){if(p=p.substring(1,p.length-1),p.length===0)return;g=p.substring(0,1)}var h=this.basses[g];if(h){for(var f=this.transpose;f<-8;)f+=12;for(;f>8;)f-=12;h+=f,h<33?h+=12:h>44&&(h-=12);var m=h;h+=this.bassOctaveShift*12;var d=h-5,c;p.length===1&&(c=this.chordNotes(h,""));var _=p.substring(1),b=_.substring(0,1);b==="b"||b==="♭"?(m--,h--,d--,_=_.substring(1)):(b==="#"||b==="♯")&&(m++,h++,d++,_=_.substring(1));var v=_.split("/");if(c=this.chordNotes(m,v[0]),c.length>=3){var k=c[2]-c[0];d=d+k-7}if(v.length===2){var y=this.basses[v[1].substring(0,1)];if(y){var T=v[1].substring(1),O={"#":1,"♯":1,b:-1,"♭":-1}[T]||0;h=this.basses[v[1].substring(0,1)]+O+f,h+=this.bassOctaveShift*12,d=h}}return{boom:h,boom2:d,chick:c}}}},t.prototype.chordNotes=function(p,g){g=g.replace(/♭/g,"b").replace(/♯/g,"#");var h=o[g];h||(g.slice(0,2).toLowerCase()==="ma"||g[0]==="M"?h=o.M:g[0]==="m"||g[0]==="-"?h=o.m:h=o.M),p+=12,p+=this.chordOctaveShift*12;for(var f=[],m=0;m0&&b[y-1]&&b[y]&&b[y-1].boom!==b[y].boom&&(T=!0);var j=v[y],$=j.indexOf("boom")>=0,P=!$&&y!==0&&v[0].indexOf("boom")>=0&&(!b[y-1]||b[y-1].boom!==b[y].boom),L=e(b[y],j,T,P);$&&(T=!1);for(var x=0;x=0?m.push(h?p.boom:p.boom2):f&&m.push(p.boom);var d=p.chick.length;if(g.indexOf("chick")>=0)for(var c=0;c0&&re[0].length>0&&(A=re[0][0].pickupLength),ke.bassprog!==void 0&&!fe.bassprog&&(fe.bassprog=[ke.bassprog]),ke.bassvol!==void 0&&!fe.bassvol&&(fe.bassvol=[ke.bassvol]),ke.chordprog!==void 0&&!fe.chordprog&&(fe.chordprog=[ke.chordprog]),ke.chordvol!==void 0&&!fe.chordvol&&(fe.chordvol=[ke.chordvol]),ke.gchord!==void 0&&!fe.gchord&&(fe.gchord=[ke.gchord]),d=new e(re.length,ke.chordsOff,fe,c),H(re,ke);for(var we=0;we=0)&&(Fe=!0);for(var Ue=0;Ue0&&h[h.length-1].cmd==="program")h[h.length-1].instrument=he.program;else{var Ae;for(Ae=h.length-1;Ae>=0&&h[Ae].cmd!=="program";Ae--);(Ae<0||h[Ae].instrument!==he.program)&&h.push({cmd:"program",channel:0,instrument:he.program})}break;case"channel":w(he.channel);break;case"drum":B=Qe(he.params),Pe();break;case"gchordOn":d.gChordOn(he);break;case"beat":k=he.beats[0],y=he.beats[1],T=he.beats[2],he.volumesPerNotePitch?O=he.volumesPerNotePitch:O=[];break;case"vol":$=he.volume;break;case"volinc":P=he.volume;break;case"beataccents":v=he.value;break;case"gchord":case"bassprog":case"chordprog":case"bassvol":case"chordvol":case"gchordbars":d.paramChange(he);break;default:console.log("MIDI creation. Unknown el_type: "+he.el_type+` +`);break}}h[0].instrument===void 0&&(h[0].instrument=p||0),f&&h.unshift(f),o.push(h),d.finish(),x.length>0}return ke.detuneOctave&<(o,parseInt(ke.detuneOctave,10)),d.addTrack(o),x.length>0&&o.push(x),{tempo:l,instrument:p,tracks:o,totalDuration:m}};function w(re){for(var ke=h.length-1;ke>=0;ke--)if(h[ke].cmd==="program"){h[ke].channel=re;return}}function S(re){return re/1e6}function C(re){return Math.round(re*u*1e6)/1e6}function H(re,ke){for(var ne=0;ne=ne+1&&(fe=O[ne][0],we=O[ne][1],me=O[ne][2]);var Fe;if($!==void 0)Fe=$,$=void 0;else if(!v)Fe=we;else if(A>re)Fe=me;else{var Ue=ee(b,Y(c),re);Ue===0?Fe=fe:parseInt(Ue,10)===Ue?Fe=we:Fe=me}return P&&(Fe+=P,P=void 0),Fe<0&&(Fe=0),Fe>127&&(Fe=127),ke?0:Fe}function z(re,ke){var ne={};if(re.decoration)for(var fe=0;fe0;)h.push({cmd:"note",pitch:ke.pitch+me,volume:ke.volume,start:ne,duration:we,gap:0,instrument:g,style:"decoration"}),me=me===2?0:2,fe-=we,ne+=we;break;case"trillh":for(var me=1;fe>0;)h.push({cmd:"note",pitch:ke.pitch+me,volume:ke.volume,start:ne,duration:we,gap:0,instrument:g,style:"decoration"}),me=me===1?0:1,fe-=we,ne+=we;break;case"pralltriller":h.push({cmd:"note",pitch:ke.pitch,volume:ke.volume,start:ne,duration:we,gap:0,instrument:g,style:"decoration"}),fe-=we,ne+=we,h.push({cmd:"note",pitch:ke.pitch+2,volume:ke.volume,start:ne,duration:we,gap:0,instrument:g,style:"decoration"}),fe-=we,ne+=we,h.push({cmd:"note",pitch:ke.pitch,volume:ke.volume,start:ne,duration:fe,gap:0,instrument:g});break;case"mordent":case"lowermordent":h.push({cmd:"note",pitch:ke.pitch,volume:ke.volume,start:ne,duration:we,gap:0,instrument:g,style:"decoration"}),fe-=we,ne+=we,h.push({cmd:"note",pitch:ke.pitch-2,volume:ke.volume,start:ne,duration:we,gap:0,instrument:g,style:"decoration"}),fe-=we,ne+=we,h.push({cmd:"note",pitch:ke.pitch,volume:ke.volume,start:ne,duration:fe,gap:0,instrument:g});break;case"turn":we=ke.duration/4,h.push({cmd:"note",pitch:ke.pitch+2,volume:ke.volume,start:ne,duration:we,gap:0,instrument:g,style:"decoration"}),h.push({cmd:"note",pitch:ke.pitch,volume:ke.volume,start:ne+we,duration:we,gap:0,instrument:g,style:"decoration"}),h.push({cmd:"note",pitch:ke.pitch-1,volume:ke.volume,start:ne+we*2,duration:we,gap:0,instrument:g,style:"decoration"}),h.push({cmd:"note",pitch:ke.pitch,volume:ke.volume,start:ne+we*3,duration:we,gap:0,instrument:g,style:"decoration"});break;case"roll":for(;fe>0;)h.push({cmd:"note",pitch:ke.pitch,volume:ke.volume,start:ne,duration:we,gap:0,instrument:g,style:"decoration"}),fe-=we*2,ne+=we*2;break}}function ae(re,ke){var ne=W(S(re.time),ke);d.processChord(re);var fe;if(re.gracenotes&&re.pitches&&re.pitches.length>0&&re.pitches[0]&&(fe=Ee(re.gracenotes,re.pitches[0].duration),re.elem&&(re.elem.midiGraceNotePitches=Se(fe,S(re.time),ne*2/3,g))),re.elem){var we=S(re.time),me=we/j/l*60*1e3;if(re.elem.currentTrackMilliseconds===void 0)re.elem.currentTrackMilliseconds=me,re.elem.currentTrackWholeNotes=we;else if(re.elem.currentTrackMilliseconds.length===void 0)re.elem.currentTrackMilliseconds!==me&&(re.elem.currentTrackMilliseconds=[re.elem.currentTrackMilliseconds,me],re.elem.currentTrackWholeNotes=[re.elem.currentTrackWholeNotes,we]);else{for(var Fe=!1,Ue=0;UeBe&&(Re=W(S(re.time),ke,Be));var Ge=He[Be];if(Ge){Ge.startSlur&&(L+=Ge.startSlur.length),Ge.endSlur&&(L-=Ge.endSlur.length);var Ie=Ge.actualPitch?Ge.actualPitch:_e(Ge);if(g===_&&G){var ct=a(Ge);ct&&G[ct]&&(Ie=G[ct].sound)}var Ve={cmd:"note",pitch:Ie,volume:Re,start:S(re.time),duration:C(Ge.duration),instrument:g,startChar:re.elem.startChar,endChar:re.elem.endChar};if(Ve=pe(Ve),re.gracenotes&&(Ve.duration=Ve.duration/2,Ve.start=Ve.start+Ve.duration),re.elem&&re.elem.midiPitches.push(Ve),Ae.noteModification)be(Ae.noteModification,Ve);else{switch(L>0?Ve.endType="tenuto":he&&(Ve.endType=he),Ve.endType){case"tenuto":Ve.gap=V;break;case"staccato":var Gt=Ve.duration*I;Ve.gap=l/60*Gt;break;default:Ve.gap=U;break}h.push(Ve)}}}h.length-1}var nt=ge(re);m=Math.max(m,S(re.time)+C(nt))}function ge(re){return re.pitches&&re.pitches.length>0&&re.pitches[0]?re.pitches[0].duration:re.elem?re.elem.duration:re.duration}var ie=[0,2,4,5,7,9,11];function _e(re){if(re.midipitch!==void 0)return re.midipitch;var ke=re.pitch;if(re.accidental)switch(re.accidental){case"sharp":n[ke]=1;break;case"flat":n[ke]=-1;break;case"natural":n[ke]=0;break;case"dblsharp":n[ke]=2;break;case"dblflat":n[ke]=-2;break;case"quartersharp":n[ke]=.25;break;case"quarterflat":n[ke]=-.25;break}var ne=De(ke)*12+ie[et(ke)]+60;return n[ke]!==void 0?ne+=n[ke]:ne+=s[et(ke)],ne+=r,ne}function le(re){var ke=[0,0,0,0,0,0,0];if(!re.accidentals)return ke;for(var ne=0;ne=0?(re.pitch=Math.round(re.pitch),re.cents=-50):ke.indexOf(".25")>=0&&(re.pitch=Math.round(re.pitch),re.cents=50),re}function De(re){return Math.floor(re/7)}function et(re){return re=re%7,re<0&&(re+=7),re}function Qe(re){if(re.pattern.length===0||re.on===!1)return{on:!1};for(var ke=re.pattern[0],ne=[],fe="",we=0,me=0;me1){Ue=Ue.sort(function(Ge,Ie){return Ge.pitch-Ie.pitch});var he=Ue[Ue.length-1],Ae=he.pitch%12,He=!1;for(we=0;!He&&we=m&&(d-=m),v[y].el_type==="bar")return d}return d}this.getPickupLength=function(){var f=this.getBarLength(),m=l(this.lines,f);return m<1e-8||f-m<1e-8?0:m},this.getBarLength=function(){var f=this.getMeterFraction();return f.num/f.den},this.getTotalTime=function(){return this.totalTime},this.getTotalBeats=function(){return this.totalBeats},this.millisecondsPerMeasure=function(f){var m;if(f)m=f;else{var d=this.metaText?this.metaText.tempo:null;m=this.getBpm(d)}m<=0&&(m=1);var c=this.getBeatsPerMeasure(),_=c/m;return _*6e4},this.getBeatsPerMeasure=function(){var f=this.getBeatLength(),m=this.getBarLength();return m/f},this.getMeter=function(){for(var f=0;f0&&f.value[0].num.indexOf("+")>0){var c=f.value[0].num.split("+");m=0;for(var _=0;_f)return y}}return null};function u(f){for(var m,d,c,_,b=f.length-1;b>=0;b--){var v=f[b];v.type==="bar"?(v.top=c,v.nextTop=m,m=c,v.bottom=_,v.nextBottom=d,d=_):v.type==="event"&&(c=v.top,_=v.top+v.height)}}function p(f){var m=[];for(var d in f)f.hasOwnProperty(d)&&m.push(f[d]);return m=m.sort(function(c,_){var b=c.milliseconds-_.milliseconds;return b!==0?b:c.type==="bar"?-1:1}),m}this.addElementToEvents=function(f,m,d,c,_,b,v,k,y,T){if(m.hint)return{isTiedState:void 0,duration:0};var O=m.durationClass?m.durationClass:m.duration;if(m.abcelem.rest&&m.abcelem.rest.type==="spacer"&&(O=0),O>0){for(var j=[],$=0;$0){var b=_.staffs[0],v=b.absoluteY,k=v-b.top*e.STEP,y=_.staffs[_.staffs.length-1];v=y.absoluteY;for(var T=v-y.bottom*e.STEP,O=T-k,j=_.voices,$=0;$0&&b["event"+P]&&(w="event"+P),P=Math.round($*1e3),V.type==="bar"){var S=V.abcelem.type,C=S==="bar_right_repeat"||S==="bar_dbl_repeat",H=V.abcelem.startEnding==="1",Y=S==="bar_left_repeat"||S==="bar_dbl_repeat"||S==="bar_right_repeat";if(C){G>0&&(b[w].endX=V.x),x===-1&&(x=G);var ee=0;A=-1;for(var W=L;Wc.left&&(c.endX=Math.min(c.endX,b)):c.endX=b}}var v=m[m.length-1];v.endX=f[v.line].staffGroup.w}}this.getBpm=function(f){var m;if(f||(f=this.metaText?this.metaText.tempo:null),f){m=f.bpm;var d=this.getBeatLength(),c=f.duration&&f.duration.length>0?f.duration[0]:d;m=m*c/d}if(!m){m=180;var _=this.getMeterFraction();_&&_.num!==3&&_.num%3===0&&(m=120)}return m},this.setTiming=function(f,m){if(m=m||0,!this.engraver||!this.engraver.staffgroups)return console.log("setTiming cannot be called before the tune is drawn."),this.noteTimings=[],this.noteTimings;var d=this.metaText?this.metaText.tempo:null,c=this.getBpm(d),_=1;f?d&&(_=f/c):f=c;var b=this.getBeatLength(),v=f/60,k=this.getBarLength(),y=k/b*m/v;y&&(y-=this.getPickupLength()/b/v);var T=b*v;return this.noteTimings=this.setupEvents(y,T,f,_),this.noteTimings.length>0?(this.totalTime=this.noteTimings[this.noteTimings.length-1].milliseconds/1e3,this.totalBeats=this.totalTime*v):(this.totalTime=void 0,this.totalBeats=void 0),this.noteTimings},this.setUpAudio=function(f){f||(f={});var m=a(this,f);return n(m,f,this.formatting.percmap,this.formatting.midi)},this.deline=function(f){return s(this.lines,f)},this.findSelectableElement=function(f){return this.engraver&&this.engraver.selectables?this.engraver.findSelectableElement(f):null},this.getSelectableArray=function(){return this.engraver&&this.engraver.selectables?this.engraver.selectables:[]}};return kp=r,kp}var xp,by;function QC(){if(by)return xp;by=1;var t=cp(),e=function(x){var B=this,D={},A="";x.reset(),this.setVisualTranspose=function(G){G!==void 0&&(x.visualTranspose=G)},this.cleanUp=function(G,U,V){m(x),delete x.runningFonts,n(x),x.metaText.tempo&&x.metaText.tempo.bpm&&!x.metaText.tempo.duration&&(x.metaText.tempo.duration=[x.getBeatLength()]),L(x);var I=!1,w,S,C;for(w=0;w0&&ae[ae.length-1].barNumber){var ie=g(x.lines,w);ie&&(ie.staff[0].barNumber=ae[ae.length-1].barNumber),delete ae[ae.length-1].barNumber}}}return delete x.staffNum,delete x.voiceNum,delete x.lineNum,delete x.potentialStartBeam,delete x.potentialEndBeam,delete x.vskipPending,V},this.addTieToLastNote=function(G){var U=h(x);return U&&U.pitches&&U.pitches.length>0?(U.pitches[0].startTie={},G&&(U.pitches[0].startTie.style="dotted"),!0):!1},this.appendElement=function(G,U,V,I){if(I.el_type=G,U!==null&&(I.startChar=U),V!==null&&(I.endChar=V),G==="note"){var w=f(I);w>=.25||I.force_end_beam_last&&x.potentialStartBeam!==void 0?k(x):I.end_beam&&x.potentialStartBeam!==void 0?I.rest===void 0?v(I,x):k(x):I.rest===void 0&&(x.potentialStartBeam===void 0?I.end_beam||(x.potentialStartBeam=I,delete x.potentialEndBeam):x.potentialEndBeam=I)}else k(x);return delete I.end_beam,delete I.force_end_beam_last,I.rest&&I.rest.type==="invisible"&&delete I.decoration,x.lines.length<=x.lineNum||x.lines[x.lineNum].staff.length<=x.staffNum?!1:(b(B,x,I,D,A),!0)},this.appendStartingElement=function(G,U,V,I){m(x);var w;G==="key"&&(w=I.impliedNaturals,delete I.impliedNaturals,delete I.explicitAccidentals);var S=Object.assign({},I);if(x.lines[x.lineNum]){var C=x.lines[x.lineNum].staff;if(C){C.length<=x.staffNum&&(C[x.staffNum]={},C[x.staffNum].clef=Object.assign({},C[0].clef),C[x.staffNum].key=Object.assign({},C[0].key),C[0].meter&&(C[x.staffNum].meter=Object.assign({},C[0].meter)),C[x.staffNum].workingClef=Object.assign({},C[0].workingClef),C[x.staffNum].voices=[[]]),G==="clef"&&(C[x.staffNum].workingClef=S);for(var H=C[x.staffNum].voices[x.voiceNum],Y=0;Y0){var V=U[U.length-1];if(V.el_type==="bar")V.barNumber!==void 0&&(V.barNumber=G);else return G-1}return G},this.hasBeginMusic=function(){for(var G=0;G=0;U--)if(x.lines[U].staff!==void 0)return!1;return!0},this.getCurrentVoice=function(){var G=p(x.lines,x.lineNum);if(!G)return null;var U=G.staff[x.staffNum];return U&&U.voices[x.voiceNum]!==void 0?U.voices[x.voiceNum]:null},this.setCurrentVoice=function(G,U,V){x.staffNum=G,x.voiceNum=U,A=V;for(var I=0;I{B.voices.length>=we.voices.length&&we.voices.forEach(ae=>{let Re=[];ae.forEach(ee=>{ee.el_type==="bar"?Re.push(ee):ee.el_type==="note"&&Re.push({el_type:"note",duration:ee.duration,rest:{type:"invisible"},startChar:ee.startChar,endChar:ee.endChar})}),we.voices.push(Re)})})}else Y.el_type==="bar"?(F?(F=!1,V[I].snip.push({start:H,len:Q-H}),V[I].voice.push(Y)):(S>0&&V[I].voice.push({el_type:"note",duration:S,rest:{type:"invisible"},startChar:Y.startChar,endChar:Y.endChar}),V[I].voice.push(Y)),S=0):Y.el_type==="note"?F?V[I].voice.push(Y):(!Y.rest||Y.rest.type!=="spacer")&&(S+=Y.duration):(Y.el_type==="scale"||Y.el_type==="stem"||Y.el_type==="overlay"||Y.el_type==="style"||Y.el_type==="transpose"||Y.el_type==="color")&&V[I].voice.push(Y)}V[I].hasOverlay&&V[I].snip.length===0&&V[I].snip.push({start:H,len:k.length-H})}for(I=0;I=0;he--){var ie=re.snip[he];B.voices[I].splice(ie.start,ie.len),B.voices[I].splice(ie.start+1,0,{el_type:"stem",direction:"auto"});var ye=r(B.voices[I],ie.start);B.voices[I].splice(ye,0,{el_type:"stem",direction:"up"})}for(he=0;he0&&x[D].el_type!=="bar";D--);return D}function o(x){for(var U=!0,D=0;D=U&&k=0;){if(x[U].staff)return x[U];U--}return null}function g(x,U){for(U++;x.length>U;){if(x[U].staff)return x[U];U++}return null}function h(x){if(!x.lines[x.lineNum]||!x.lines[x.lineNum].staff||!x.lines[x.lineNum].staff[x.staffNum])return null;var U=x.lines[x.lineNum].staff[x.staffNum].voices[x.voiceNum];if(!U)return null;for(var D=U.length-1;D>=0;D--){var M=U[D];if(M.el_type==="note")return M}return null}function m(x){return x.duration?x.duration:0}function f(x){x.potentialStartBeam&&x.potentialEndBeam&&(x.potentialStartBeam.startBeam=!0,x.potentialEndBeam.endBeam=!0),delete x.potentialStartBeam,delete x.potentialEndBeam}function d(x){for(var U=0;U0){if(M.voices[0]!==void 0){for(var G=!1,B=0;B/g,">")},T=function(M,G,B){G||(G=" ");var V=G[B];(V===" "||!V)&&(V="SPACE");var I=y(G.substring(B-64,B))+''+V+""+y(G.substring(B+1).substring(0,64));v("Music Line:"+m.lineIndex+":"+(B+1)+": "+M+": "+I),w({message:M,line:G,startChar:b.iChar+B,column:B})},O,R;this.getWarnings=function(){return b.warnings},this.getWarningObjects=function(){return b.warningObjects};var $=function(M,G){if(G.indexOf("")>=0){f+=G;return}if(G=f+G,f="",!M){T("Can't add words before the first line of music",M,0);return}G=t.strip(G),G[G.length-1]!=="-"&&(G=G+" ");for(var B=[],V=0,I=!1,k=function(H){var Q=t.strip(G.substring(V,H));if(Q=Q.replace(/\\([-_*|~])/g,"$1"),V=H+1,Q.length>0){I&&(Q=Q.replace(/~/g," "));var Y=G[H];return Y!=="_"&&Y!=="-"&&(Y=" "),B.push({syllable:m.translateString(Q),divider:Y}),I=!1,!0}return!1},S=!1,F=0;F0&&(t.last(B).divider="-",B.push({skip:!0,to:"next"}));break;case"_":S||(k(F),B.push({skip:!0,to:"slur"}));break;case"*":S||(k(F),B.push({skip:!0,to:"next"}));break;case"|":S||(k(F),B.push({skip:!0,to:"bar"}));break;case"~":S||(I=!0);break}S=G[F]==="\\"}M.forEach(function(H){if(B.length!==0){if(B[0].skip){switch(B[0].to){case"next":H.el_type==="note"&&H.pitches!==null&&B.shift();break;case"slur":H.el_type==="note"&&H.pitches!==null&&B.shift();break;case"bar":H.el_type==="bar"&&B.shift();break}H.el_type!=="bar"&&(H.lyric===void 0?H.lyric=[{syllable:"",divider:" "}]:H.lyric.push({syllable:"",divider:" "}))}else if(H.el_type==="note"&&H.rest===void 0){var Q=B.shift();Q.syllable&&(Q.syllable=Q.syllable.replace(/ +/g," ")),H.lyric===void 0?H.lyric=[Q]:H.lyric.push(Q)}}})},P=function(M,G){if(G.indexOf("")>=0){d+=G;return}if(G=d+G,d="",!M){T("Can't add symbols before the first line of music",M,0);return}G=t.strip(G),G[G.length-1]!=="-"&&(G=G+" ");for(var B=[],V=0,I=!1,k=function(F){var H=t.strip(G.substring(V,F));if(V=F+1,H.length>0){I&&(H=H.replace(/~/g," "));var Q=G[F];return Q!=="_"&&Q!=="-"&&(Q=" "),B.push({syllable:m.translateString(H),divider:Q}),I=!1,!0}return!1},S=0;S0&&(t.last(B).divider="-",B.push({skip:!0,to:"next"}));break;case"_":k(S),B.push({skip:!0,to:"slur"});break;case"*":k(S),B.push({skip:!0,to:"next"});break;case"|":k(S),B.push({skip:!0,to:"bar"});break;case"~":I=!0;break}M.forEach(function(F){if(B.length!==0){if(B[0].skip)switch(B[0].to){case"next":F.el_type==="note"&&F.pitches!==null&&B.shift();break;case"slur":F.el_type==="note"&&F.pitches!==null&&B.shift();break;case"bar":F.el_type==="bar"&&B.shift();break}else if(F.el_type==="note"&&F.rest===void 0){var H=B.shift();F.lyric===void 0?F.lyric=[H]:F.lyric.push(H)}}})},L=function(M){if(t.startsWith(M,"%%")){var G=e.addDirective(M.substring(2));G&&T(G,M,2);return}var B=M.indexOf("%");if(B>=0&&(M=M.substring(0,B)),M=M.replace(/\s+$/,""),M.length!==0){if(f){$(h.getCurrentVoice(),M.substring(2));return}if(d){P(h.getCurrentVoice(),M.substring(2));return}if(M.length<2||M[1]!==":"||R.lineContinuation){R.parseMusic(M);return}var V=O.parseHeader(M);V.regular&&R.parseMusic(M),V.newline&&R.startNewLine(),V.words&&$(h.getCurrentVoice(),M.substring(2)),V.symbols&&P(h.getCurrentVoice(),M.substring(2))}};function x(M,G){M.push({el_type:"hint"});for(var B=0;B{U.voices.length>=_e.voices.length&&_e.voices.forEach(le=>{let Ee=[];le.forEach(Se=>{Se.el_type==="bar"?Ee.push(Se):Se.el_type==="note"&&Ee.push({el_type:"note",duration:Se.duration,rest:{type:"invisible"},startChar:Se.startChar,endChar:Se.endChar})}),_e.voices.push(Ee)})})}else ee.el_type==="bar"?(C?(C=!1,V[I].snip.push({start:H,len:Y-H}),V[I].voice.push(ee)):(S>0&&V[I].voice.push({el_type:"note",duration:S,rest:{type:"invisible"},startChar:ee.startChar,endChar:ee.endChar}),V[I].voice.push(ee)),S=0):ee.el_type==="note"?C?V[I].voice.push(ee):(!ee.rest||ee.rest.type!=="spacer")&&(S+=ee.duration):(ee.el_type==="scale"||ee.el_type==="stem"||ee.el_type==="overlay"||ee.el_type==="style"||ee.el_type==="transpose"||ee.el_type==="color")&&V[I].voice.push(ee)}V[I].hasOverlay&&V[I].snip.length===0&&V[I].snip.push({start:H,len:w.length-H})}for(I=0;I=0;be--){var ae=z.snip[be];U.voices[I].splice(ae.start,ae.len),U.voices[I].splice(ae.start+1,0,{el_type:"stem",direction:"auto"});var ge=r(U.voices[I],ae.start);U.voices[I].splice(ge,0,{el_type:"stem",direction:"up"})}for(be=0;be0&&x[D].el_type!=="bar";D--);return D}function o(x){for(var B=!0,D=0;D=B&&w=0;){if(x[B].staff)return x[B];B--}return null}function g(x,B){for(B++;x.length>B;){if(x[B].staff)return x[B];B++}return null}function h(x){if(!x.lines[x.lineNum]||!x.lines[x.lineNum].staff||!x.lines[x.lineNum].staff[x.staffNum])return null;var B=x.lines[x.lineNum].staff[x.staffNum].voices[x.voiceNum];if(!B)return null;for(var D=B.length-1;D>=0;D--){var A=B[D];if(A.el_type==="note")return A}return null}function f(x){return x.duration?x.duration:0}function m(x){x.potentialStartBeam&&x.potentialEndBeam&&(x.potentialStartBeam.startBeam=!0,x.potentialEndBeam.endBeam=!0),delete x.potentialStartBeam,delete x.potentialEndBeam}function d(x){for(var B=0;B0){if(A.voices[0]!==void 0){for(var G=!1,U=0;U/g,">")},T=function(A,G,U){G||(G=" ");var V=G[U];(V===" "||!V)&&(V="SPACE");var I=y(G.substring(U-64,U))+''+V+""+y(G.substring(U+1).substring(0,64));v("Music Line:"+f.lineIndex+":"+(U+1)+": "+A+": "+I),k({message:A,line:G,startChar:b.iChar+U,column:U})},O,j;this.getWarnings=function(){return b.warnings},this.getWarningObjects=function(){return b.warningObjects};var $=function(A,G){if(G.indexOf("")>=0){m+=G;return}if(G=m+G,m="",!A){T("Can't add words before the first line of music",A,0);return}G=t.strip(G),G[G.length-1]!=="-"&&(G=G+" ");for(var U=[],V=0,I=!1,w=function(H){var Y=t.strip(G.substring(V,H));if(Y=Y.replace(/\\([-_*|~])/g,"$1"),V=H+1,Y.length>0){I&&(Y=Y.replace(/~/g," "));var ee=G[H];return ee!=="_"&&ee!=="-"&&(ee=" "),U.push({syllable:f.translateString(Y),divider:ee}),I=!1,!0}return!1},S=!1,C=0;C0&&(t.last(U).divider="-",U.push({skip:!0,to:"next"}));break;case"_":S||(w(C),U.push({skip:!0,to:"slur"}));break;case"*":S||(w(C),U.push({skip:!0,to:"next"}));break;case"|":S||(w(C),U.push({skip:!0,to:"bar"}));break;case"~":S||(I=!0);break}S=G[C]==="\\"}A.forEach(function(H){if(U.length!==0){if(U[0].skip){switch(U[0].to){case"next":H.el_type==="note"&&H.pitches!==null&&U.shift();break;case"slur":H.el_type==="note"&&H.pitches!==null&&U.shift();break;case"bar":H.el_type==="bar"&&U.shift();break}H.el_type!=="bar"&&(H.lyric===void 0?H.lyric=[{syllable:"",divider:" "}]:H.lyric.push({syllable:"",divider:" "}))}else if(H.el_type==="note"&&H.rest===void 0){var Y=U.shift();Y.syllable&&(Y.syllable=Y.syllable.replace(/ +/g," ")),H.lyric===void 0?H.lyric=[Y]:H.lyric.push(Y)}}})},P=function(A,G){if(G.indexOf("")>=0){d+=G;return}if(G=d+G,d="",!A){T("Can't add symbols before the first line of music",A,0);return}G=t.strip(G),G[G.length-1]!=="-"&&(G=G+" ");for(var U=[],V=0,I=!1,w=function(C){var H=t.strip(G.substring(V,C));if(V=C+1,H.length>0){I&&(H=H.replace(/~/g," "));var Y=G[C];return Y!=="_"&&Y!=="-"&&(Y=" "),U.push({syllable:f.translateString(H),divider:Y}),I=!1,!0}return!1},S=0;S0&&(t.last(U).divider="-",U.push({skip:!0,to:"next"}));break;case"_":w(S),U.push({skip:!0,to:"slur"});break;case"*":w(S),U.push({skip:!0,to:"next"});break;case"|":w(S),U.push({skip:!0,to:"bar"});break;case"~":I=!0;break}A.forEach(function(C){if(U.length!==0){if(U[0].skip)switch(U[0].to){case"next":C.el_type==="note"&&C.pitches!==null&&U.shift();break;case"slur":C.el_type==="note"&&C.pitches!==null&&U.shift();break;case"bar":C.el_type==="bar"&&U.shift();break}else if(C.el_type==="note"&&C.rest===void 0){var H=U.shift();C.lyric===void 0?C.lyric=[H]:C.lyric.push(H)}}})},L=function(A){if(t.startsWith(A,"%%")){var G=e.addDirective(A.substring(2));G&&T(G,A,2);return}var U=A.indexOf("%");if(U>=0&&(A=A.substring(0,U)),A=A.replace(/\s+$/,""),A.length!==0){if(m){$(h.getCurrentVoice(),A.substring(2));return}if(d){P(h.getCurrentVoice(),A.substring(2));return}if(A.length<2||A[1]!==":"||j.lineContinuation){j.parseMusic(A);return}var V=O.parseHeader(A);V.regular&&j.parseMusic(A),V.newline&&j.startNewLine(),V.words&&$(h.getCurrentVoice(),A.substring(2)),V.symbols&&P(h.getCurrentVoice(),A.substring(2))}};function x(A,G){A.push({el_type:"hint"});for(var U=0;U1){for(var I=1;I0&&V[I][0]!==` -`;)V[I]=V[I].substr(1),V[I-1]+=" ";M=V.join(" ")}M=M.replace(/\\%/g,"​%"),M=M.replace(/\\([ \t]*)(%.*)*\n/g,function(C,re,he){var ie=he?Array(he.length+1).join(" "):"";return re+""+ie+` -`});var k=M.split(` -`);t.last(k).length===0&&k.pop(),m=new s(k,b),O=new a(m,T,b,g,h),R=new n(m,T,b,g,h,O),G.print&&(g.media="print"),b.reset(),b.iChar=B,G.visualTranspose?(b.globalTranspose=parseInt(G.visualTranspose),b.globalTranspose===0?b.globalTranspose=void 0:h.setVisualTranspose(G.visualTranspose)):b.globalTranspose=void 0,G.lineBreaks&&(b.lineBreaks=G.lineBreaks),O.reset(m,T,b,g);try{G.format&&e.globalFormatting(G.format);for(var S=m.nextLine();S;){if(G.header_only&&b.is_in_header===!1||G.stop_on_warning&&b.warnings)throw"normal_abort";var F=b.is_in_header;L(S),F&&!b.is_in_header&&(h.setRunningFont("annotationfont",b.annotationfont),h.setRunningFont("gchordfont",b.gchordfont),h.setRunningFont("tripletfont",b.tripletfont),h.setRunningFont("vocalfont",b.vocalfont)),S=m.nextLine()}f&&$(h.getCurrentVoice(),""),d&&P(h.getCurrentVoice(),""),b.openSlurs=h.cleanUp(b.barsperstaff,b.staffnonote,b.openSlurs)}catch(C){if(C!=="normal_abort")throw C}var H=792,Q=8.5*72;switch(b.papersize){case"legal":H=1008,Q=8.5*72;break;case"A4":H=11.7*72,Q=8.3*72;break}if(b.landscape){var Y=H;H=Q,Q=Y}if(g.formatting.pagewidth||(g.formatting.pagewidth=Q),g.formatting.pageheight||(g.formatting.pageheight=H),G.hint_measures&&D(),r.wrapLines(g,b.lineBreaks,b.barNumbers),G.chordGrid)try{g.chordGrid=o(g)}catch(C){switch(C.message){case"notCommonTime":T("Chord grid only works for 2/2 and 4/4 time.",0,0);break;case"noChords":T("No chords are found in the tune.",0,0);break;default:T(C.message,0,0)}}}};return xp=p,xp}var Tp,vy;function jC(){if(vy)return Tp;vy=1;var t=Xs(),e=function(a){var n="",s=a.match(/(\s*)/);a=t.strip(a);for(var r=a.split(` -X:`),o=1;o1&&!t.startsWith(u[0].abc,"X:")){var p=u.shift(),g=p.abc.split(` -`);g.forEach(function(m){t.startsWith(m,"%%")&&(n+=m+` -`)})}var h=n;return u.forEach(function(m){var f=m.abc.indexOf(` +`;)V[I]=V[I].substr(1),V[I-1]+=" ";A=V.join(" ")}A=A.replace(/\\%/g,"​%"),A=A.replace(/\\([ \t]*)(%.*)*\n/g,function(W,z,be){var ae=be?Array(be.length+1).join(" "):"";return z+""+ae+` +`});var w=A.split(` +`);t.last(w).length===0&&w.pop(),f=new s(w,b),O=new a(f,T,b,g,h),j=new n(f,T,b,g,h,O),G.print&&(g.media="print"),b.reset(),b.iChar=U,G.visualTranspose?(b.globalTranspose=parseInt(G.visualTranspose),b.globalTranspose===0?b.globalTranspose=void 0:h.setVisualTranspose(G.visualTranspose)):b.globalTranspose=void 0,G.lineBreaks&&(b.lineBreaks=G.lineBreaks),O.reset(f,T,b,g);try{G.format&&e.globalFormatting(G.format);for(var S=f.nextLine();S;){if(G.header_only&&b.is_in_header===!1||G.stop_on_warning&&b.warnings)throw"normal_abort";var C=b.is_in_header;L(S),C&&!b.is_in_header&&(h.setRunningFont("annotationfont",b.annotationfont),h.setRunningFont("gchordfont",b.gchordfont),h.setRunningFont("tripletfont",b.tripletfont),h.setRunningFont("vocalfont",b.vocalfont)),S=f.nextLine()}m&&$(h.getCurrentVoice(),""),d&&P(h.getCurrentVoice(),""),b.openSlurs=h.cleanUp(b.barsperstaff,b.staffnonote,b.openSlurs)}catch(W){if(W!=="normal_abort")throw W}var H=792,Y=8.5*72;switch(b.papersize){case"legal":H=1008,Y=8.5*72;break;case"A4":H=11.7*72,Y=8.3*72;break}if(b.landscape){var ee=H;H=Y,Y=ee}if(g.formatting.pagewidth||(g.formatting.pagewidth=Y),g.formatting.pageheight||(g.formatting.pageheight=H),G.hint_measures&&D(),r.wrapLines(g,b.lineBreaks,b.barNumbers),G.chordGrid)try{g.chordGrid=o(g)}catch(W){switch(W.message){case"notCommonTime":T("Chord grid only works for 2/2 and 4/4 time.",0,0);break;case"noChords":T("No chords are found in the tune.",0,0);break;default:T(W.message,0,0)}}}};return Sp=p,Sp}var $p,wy;function KC(){if(wy)return $p;wy=1;var t=ir(),e=function(a){var n="",s=a.match(/(\s*)/);a=t.strip(a);for(var r=a.split(` +X:`),o=1;o1&&!t.startsWith(u[0].abc,"X:")){var p=u.shift(),g=p.abc.split(` +`);g.forEach(function(f){t.startsWith(f,"%%")&&(n+=f+` +`)})}var h=n;return u.forEach(function(f){var m=f.abc.indexOf(` -`);f>0&&(m.abc=m.abc.substring(0,f)),m.pure=m.abc,m.abc=n+m.abc,m.title="";var d=m.pure.split("T:");d.length>1&&(d=d[1].split(` -`),m.title=t.strip(d[0]));var c=m.pure.substring(2,m.pure.indexOf(` -`));m.id=t.strip(c)}),{header:h,tunes:u}};return Tp=e,Tp}var $p,by;function PC(){if(by)return $p;by=1;function t(e,a){this.numLines=e,this.lineSpace=a,this.verticalSize=this.numLines*this.lineSpace;var n=3;this.bar={pitch:n,pitch2:a*e,height:5}}return t.prototype.bypass=function(e){var a=e.staffGroup.voices;return!!(a.length>0&&a[0].isPercussion)},t.prototype.setRelative=function(e,a,n){switch(e.type){case"bar":a.pitch=this.bar.pitch,a.pitch2=this.bar.pitch2,a.height=this.height;break;case"symbol":var s=this.bar.pitch2/2;if(e.name=="dots.dot")return n?(a.pitch=s,!1):(a.pitch=s+this.lineSpace,!0);break}return n},$p=t,$p}var qp,yy;function wy(){if(yy)return qp;yy=1;var t=function(a,n){this.children=[],this.beams=[],this.otherchildren=[],this.w=0,this.duplicate=!1,this.voicenumber=a,this.voicetotal=n,this.bottom=7,this.top=7,this.specialY={tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}};return t.prototype.addChild=function(e){if(e.type==="bar"){for(var a=!0,n=0;a&&n0&&(u.length>0&&u[u.length-1]!==" "&&(u+=" "),u+=a),o.setAttribute("class",u)}};return Gp=t,Gp}var Ap,xy;function Sy(){if(xy)return Ap;xy=1;var t=Fp(),e=function(a,n){a===void 0&&(a="abcjs-note_selected"),n===void 0&&(n="#ff0000"),t(this.elemset,a,"",n)};return Ap=e,Ap}var Cp,Ty;function $y(){if(Ty)return Cp;Ty=1;var t=Fp(),e=function(a,n){a===void 0&&(a="abcjs-note_selected"),n===void 0&&(n="#000000"),t(this.elemset,"",a,n)};return Cp=e,Cp}var Mp,qy;function bl(){if(qy)return Mp;qy=1;var t=Sy(),e=$y(),a=function(s,r,o,l,u,p){p||(p={}),this.tuneNumber=u,this.abcelem=s,this.duration=r,this.durationClass=p.durationClassOveride?p.durationClassOveride:this.duration,this.minspacing=o||0,this.x=0,this.children=[],this.heads=[],this.extra=[],this.extraw=0,this.w=0,this.right=[],this.invisible=!1,this.bottom=void 0,this.top=void 0,this.type=l,s.extraClass&&(this.extraClass=s.extraClass),this.fixed={w:0,t:void 0,b:void 0},this.specialY={tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}};return a.prototype.getFixedCoords=function(){return{x:this.x,w:this.fixed.w,t:this.fixed.t,b:this.fixed.b}},a.prototype.addExtra=function(n){this.fixed.w=Math.max(this.fixed.w,n.dx+n.w),this.fixed.t===void 0?this.fixed.t=n.top:this.fixed.t=Math.max(this.fixed.t,n.top),this.fixed.b===void 0?this.fixed.b=n.bottom:this.fixed.b=Math.min(this.fixed.b,n.bottom),n.dxthis.w&&(this.w=n.dx+n.w),this.right[this.right.length]=n,this._addChild(n)},a.prototype.addFixed=function(n){this._addChild(n)},a.prototype.addFixedX=function(n){this._addChild(n)},a.prototype.addCentered=function(n){var s=n.w/2;-sthis.w&&(this.w=n.dx+s),this.right[this.right.length]=n,this._addChild(n)},a.prototype.setLimit=function(n,s){s[n]&&(this.specialY[n]?this.specialY[n]=Math.max(this.specialY[n],s[n]):this.specialY[n]=s[n])},a.prototype._addChild=function(n){var s=!0;this.abcelem.el_type=="clef"&&n.type=="barNumber"&&(s=!1),n.parent=this,this.children[this.children.length]=n,s&&this.pushTop(n.top),this.pushBottom(n.bottom),this.setLimit("tempoHeightAbove",n),this.setLimit("partHeightAbove",n),this.setLimit("volumeHeightAbove",n),this.setLimit("dynamicHeightAbove",n),this.setLimit("endingHeightAbove",n),this.setLimit("chordHeightAbove",n),this.setLimit("lyricHeightAbove",n),this.setLimit("lyricHeightBelow",n),this.setLimit("chordHeightBelow",n),this.setLimit("volumeHeightBelow",n),this.setLimit("dynamicHeightBelow",n)},a.prototype.pushTop=function(n){n!==void 0&&(this.top===void 0?this.top=n:this.top=Math.max(n,this.top))},a.prototype.pushBottom=function(n){n!==void 0&&(this.bottom===void 0?this.bottom=n:this.bottom=Math.min(n,this.bottom))},a.prototype.setX=function(n){this.x=n;for(var s=0;sthis.top&&(this.top=this.pitch2),this.bottom=r,this.pitch2!==void 0&&this.pitch20?this.top+=o.stemHeight:this.bottom+=o.stemHeight),o.dim&&(this.dim=o.dim),o.position&&(this.position=o.position),o.voiceNumber!==void 0&&(this.voiceNumber=o.voiceNumber),this.height=o.height?o.height:4,o.top&&(this.top=o.top),o.bottom&&(this.bottom=o.bottom),o.name?this.name=o.name:this.c?this.name=this.c:this.name=this.type,o.realWidth?this.realWidth=o.realWidth:this.realWidth=this.w,this.centerVertically=!1,this.type){case"debug":this.chordHeightAbove=this.height;break;case"lyric":o.position&&o.position==="below"?this.lyricHeightBelow=this.height:this.lyricHeightAbove=this.height;break;case"chord":o.position&&o.position==="below"?this.chordHeightBelow=this.height:this.chordHeightAbove=this.height;break;case"text":this.pitch===void 0?o.position&&o.position==="below"?this.chordHeightBelow=this.height:this.chordHeightAbove=this.height:this.centerVertically=!0;break;case"part":this.partHeightAbove=this.height;break}};return t.prototype.getChordDim=function(){if(this.type==="debug"||!this.chordHeightAbove&&!this.chordHeightBelow)return null;var e=0,a=this.type==="chord"?this.realWidth/2:0,n=this.x-a-e,s=n+this.realWidth+e;return{left:n,right:s}},t.prototype.invertLane=function(e){this.lane===void 0&&(this.lane=0),this.lane=e-this.lane-1},t.prototype.putChordInLane=function(e){this.lane=e,this.chordHeightAbove?this.chordHeightAbove=this.height*1.25*this.lane:this.chordHeightBelow=this.height*1.25*this.lane},t.prototype.getLane=function(){return this.lane===void 0?0:this.lane},t.prototype.setX=function(e){this.x=e+this.dx},Ep=t,Ep}var zp,Fy;function NC(){if(Fy)return zp;Fy=1;var t=bl(),e=Js();function a(c){return c!=null&&c.constructor===Object}function n(c,_){for(var b in _)_.hasOwnProperty(b)&&(Array.isArray(_[b])||a(_[b])||(c[b]=_[b]))}function s(c){var _=new t("",0,0,"",0);return n(_,c),_.top=0,_.bottom=-1,c.abcelem&&(_.abcelem={},n(_.abcelem,c.abcelem),_.abcelem.el_type==="note"&&(_.abcelem.el_type="tabNumber")),c.cloned=_,_}function r(c,_){var b=s(c);if(_)for(var v=c.children,w=!0,y=0;y=0){if(b===_)return c.extra[v].x+c.extra[v].w/2;b++}}return-1}function m(c){if(c.abcelem){var _=c.abcelem;if(_.rest)return _.gracenotes}return null}function f(c,_,b){var v=c.semantics.notesToNumber(_,b);if(v.error)return c.setError(v.error),v;if(v.graces&&v.notes){var w=v.notes.length-1;v.notes[w].graces=v.graces}return v}function d(c,_,b,v,w){for(var y=0;y=0&&(c.semantics.clefTranspose=-12),x.abcelem.type.indexOf("+8")>=0&&(c.semantics.clefTranspose=12)),x.type){case"staff-extra key-signature":this.accidentals=x.abcelem.accidentals,c.semantics.accidentals=this.accidentals;break;case"bar":c.semantics.measureAccidentals={};var M=!1;L===O.children.length-1&&(M=!0);var G=r(x,c);if(G.abcelem.barNumber){delete G.abcelem.barNumber;for(var B=0;B0&&(P.abselem=I,b.push(P),R.children.push(I));break}}},zp=u,zp}var Up,Ay;function OC(){if(Ay)return Up;Ay=1;var t=wy(),e=NC(),a=In();function n(){return{tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}}function s(c){for(var _=0,b=0;b_&&(_=v.specialY.lyricHeightBelow)}return _}function r(c,_,b){var v=c.semantics,w=_.controller.getTextSize,y=v.tabInfos(c),T=v.suppress(c),O=!0;if(T&&(O=!1),O){var R=w.calc(y,"tablabelfont","text instrumentname");return b.tabNameInfos={textSize:{height:R.height,width:R.width},name:y},R.height}return 0}function o(c,_){return _[c].isTabStaff?c===_.length-1?!0:!_[c+1].isTabStaff:!1}function l(c){for(var _=0,b=0;b=0;b--)if(!c[b].isTabStaff)return b;return-1}function p(c){for(var _=0;_1}function h(c,_){for(var b=0,v=0,w=!0,y=0;w;){if(!_[b])return-1;if(_[b].isTabStaff||(y=_[b].voices.length),_[b].isTabStaff){if(v++,o(b,_)&&v=c&&(b+1==_.length||!_[b+1].isTabStaff))return b+1;if(b++,b>_.length)return-1}}function m(c,_){for(var b=_;b>=0;b--)if(!c[b].isTabStaff)return c[b];return null}function f(c,_){var b=c[_],v=b.children[0].abcelem;return v.el_type==="clef"?null:_==0?"none":c[_-1].children[0]}function d(c,_,b,v){var w=new e,y={clef:{type:"TAB"}},T=c.linePitch*c.nbLines,O=b.staff;if(O){var R=O[0];if(R&&R.clef&&R.clef.stafflines==0){c.setError("No tablatures when stafflines=0");return}O.splice(O.length,0,y)}var $=b.staffGroup,P=$.voices,L=P[0],x=s(L),U=3,D=v,M=$.staffs[D],G=T+U-M.bottom-x;M.isTabStaff&&(G=M.top);var B={bottom:-1,isTabStaff:!0,specialY:n(),lines:c.nbLines,linePitch:c.linePitch,dy:.15,top:G},V=h(v,$.staffs);if(V!==-1){B.parentIndex=V-1,$.staffs.splice(V,0,B),$.height+=T+U;var I=m($.staffs,V),k=1;g($.staffs,I)&&(k=I.voices.length),y.voices=[];for(var S=0;S0&&(F.duplicate=!0);var H=r(c,_,F)/a.STEP;H=Math.max(H,1),$.staffs[v].top+=1,$.height+=H,F.staff=B;var Q=P.length;P.splice(P.length,0,F);var Y=f(P,S+v);y.voices[S]=[],w.build(c,P,y.voices[S],S,v,Y,Q)}p($.staffs)}}return Up=d,Up}var Bp,Cy;function My(){if(Cy)return Bp;Cy=1;var t={__:-2,_:-1,"_/":-.5,"=":0,"":0,"^/":.5,"^":1,"^^":2},e=["C","-","D","-","E","F","-","G","-","A","-","B","c","-","d","-","e","f","-","g","-","a","-","b"];function a(s){var r=s.match(/([_^\/]*)([ABCDEFGabcdefg])(,*)('*)/);if(r&&r.length===5){var o=t[r[1]],l=e.indexOf(r[2]),u=r[4].length-r[3].length;return 48+l+o+u*12}return 0}function n(s){s=parseInt(s,10);var r=Math.floor(s/12),o=s%12,l=e[o];if(l==="-"&&(l="^"+e[o-1]),r>4)for(l=l.toLowerCase(),r-=5;r>0;)l+="'",r--;else for(;r<4;)l+=",",r++;return l}return Bp={noteToMidi:a,midiToNote:n},Bp}var Rp,Ey;function zy(){if(Ey)return Rp;Ey=1;var{noteToMidi:t,midiToNote:e}=My();function a(s,r){var o=t(s);r&&(o+=r);var l=e(o),u=!1,p=!1,g=!1,h=null,m=null,f=!1,d=0;s.startsWith("_")?(u=!0,d=-1,s[1]=="/"?(u=!1,m="v",d=0):s[1]=="_"&&(f=!0,d-=1)):s.startsWith("^")?(p=!0,d=1,s[1]=="/"?(p=!1,m="^",d=0):s[1]=="^"&&(f=!0,d+=1)):s.startsWith("=")&&(h=!0,d=0),g=u||p||m!=null,(g||h)&&(m!=null||f?l=s.slice(2):l=s.slice(1));var c=(l.match(/,/g)||[]).length,_=(l.match(/'/g)||[]).length;this.pitch=o,this.pitchAltered=0,this.name=l,this.acc=d,this.isSharp=p,this.isKeySharp=!1,this.isDouble=f,this.isAltered=g,this.isFlat=u,this.isKeyFlat=!1,this.natural=h,this.quarter=m,this.isLower=this.name==this.name.toLowerCase(),this.name=this.name[0].toUpperCase(),this.hasComma=c,this.isQuoted=_}function n(s){var r=s.name,o=new a(r);return o.pitch=s.pitch,o.hasComma=s.hasComma,o.isLower=s.isLower,o.isQuoted=s.isQuoted,o.isSharp=s.isSharp,o.isKeySharp=s.isKeySharp,o.isFlat=s.isFlat,o.isKeyFlat=s.isKeyFlat,o}return a.prototype.sameNoteAs=function(s){return s.pitch===this.pitch},a.prototype.isLowerThan=function(s){return s.pitch>this.pitch},a.prototype.checkKeyAccidentals=function(s,r){if(!(this.isAltered||this.natural)){if(r[this.name.toUpperCase()])switch(r[this.name.toUpperCase()]){case"__":this.acc=-2,this.pitchAltered=-2;return;case"_":this.acc=-1,this.pitchAltered=-1;return;case"=":this.acc=0,this.pitchAltered=0;return;case"^":this.acc=1,this.pitchAltered=1;return;case"^^":this.acc=2,this.pitchAltered=2;return}else if(s)for(var o=this.name,l=0;l0){f=[];for(var c=0;c0&&(d=m.capoTuning);for(var c=d.length-1,_=0;_=0;c--)if(f.pitch+f.pitchAltered>=m.stringPitches[c]){var _=f.pitch+f.pitchAltered-m.stringPitches[c];return f.quarter==="^"?_-=.5:f.quarter==="v"&&(_+=.5),{num:Math.round(_),str:m.stringPitches.length-1-c,note:f}}return{num:"?",str:m.stringPitches.length-1,note:f}}h.prototype.stringToPitch=function(m){var f=5.3,d=this.strings.length-1;return f+(d-m)*this.linePitch};function g(m,f){var d={num:"?",str:0,note:f};m.push(d),m.error=f.emit()+": unexpected note for instrument"}h.prototype.notesToNumber=function(m,f){var d,c,_=null,b=null;if(m&&(b=[],m.length>1?(b=l(this,m),b.error&&(_=b.error)):m[0].endTie||(d=new e(m[0].name,this.clefTranspose),d.checkKeyAccidentals(this.accidentals,this.measureAccidentals),c=p(this,d),c?b.push(c):(g(b,d),_=b.error))),_)return b;var v=null;if(f){v=[];for(var w=0;w0&&(c+=" capo:"+m.capo),f=f.replace("%T",c)),f}return""},h.prototype.suppress=function(m){var f=m.params.suppress;return!!f};function h(m){var f=m.tuning,d=m.capo,c=m.params.highestNote;this.linePitch=m.linePitch,this.highestNote="a'",c&&(this.highestNote=c),this.measureAccidentals={},this.capo=0,d&&(this.capo=parseInt(d,10)),this.transpose=m.transpose?m.transpose:0,this.tuning=f,this.stringPitches=[];for(var _=0;_0&&(this.capoTuning=n(this)),this.strings=s(this),this.strings.error){m.setError(this.strings.error),m.inError=!0;return}this.secondPos=r(this)}return Pp=h,Pp}var Np,Ry;function DC(){if(Ry)return Np;Ry=1;var t=PC(),e=OC(),a=LC();n.prototype.init=function(r,o,l,u){this.tune=r,this.params=l,this.tuneNumber=o,this.inError=!1,this.abcTune=r,this.linePitch=3,this.nbLines=u.defaultTuning.length,this.isTabBig=u.isTabBig,this.tabSymbolOffset=u.tabSymbolOffset,this.capo=l.capo,this.transpose=l.visualTranspose,this.hideTabSymbol=l.hideTabSymbol,this.tablature=new t(this.nbLines,this.linePitch);var p=l.tuning;p||(p=u.defaultTuning),this.tuning=p,this.semantics=new a(this)},n.prototype.setError=function(r){r&&(this.error=r,this.inError=!0,this.tune.warnings?this.tune.warnings.push(r):this.tune.warnings=[r])},n.prototype.render=function(r,o,l){this.inError||this.tablature.bypass(o)||e(this,r,o,l)};function n(){}var s=function(){return{name:"StringTab",tablature:n}};return Np=s,Np}var Op,jy;function Py(){if(jy)return Op;jy=1;var t=DC(),e={violin:{name:"StringTab",defaultTuning:["G,","D","A","e"],isTabBig:!1,tabSymbolOffset:0},fiddle:{name:"StringTab",defaultTuning:["G,","D","A","e"],isTabBig:!1,tabSymbolOffset:0},mandolin:{name:"StringTab",defaultTuning:["G,","D","A","e"],isTabBig:!1,tabSymbolOffset:0},guitar:{name:"StringTab",defaultTuning:["E,","A,","D","G","B","e"],isTabBig:!0,tabSymbolOffset:0},fiveString:{name:"StringTab",defaultTuning:["C,","G,","D","A","e"],isTabBig:!1,tabSymbolOffset:-.95}},a={inited:!1,plugins:{},register:function(n){var s=n.name,r=n.tablature;this.plugins[s]=r},setError:function(n,s){n.warnings?n.warning.push(s):n.warnings=[s]},preparePlugins:function(n,s,r){this.inited||(this.register(new t),this.inited=!0);var o=null;if(r.tablature){var l=r.tablature;o=[];for(var u=0;u0)for(var u=o.length,p=0;p1&&o&&o.length>0)for(var u=o.length,p=0;p=0&&h0,y=0;y=0&&(c=x.startChar,x.chord===void 0?d=f:d=null),x.chord&&(f=x),x.el_type==="bar"){if(b){var U=p.abc.substring(c,x.endChar),D={abc:U};f=d&&d.chord&&d.chord.length>0?d.chord[0].name:null,f&&(D.lastChord=f),x.startEnding&&(D.startEnding=x.startEnding),x.endEnding&&(D.endEnding=x.endEnding),_.push(D),c=null,b=!1}}else x.el_type==="note"&&(b=!0)}}o.push({header:m,measures:_,hasPickup:w})}return o}})(),Ip=n,Ip}var Lp,Oy;function VC(){if(Oy)return Lp;Oy=1;var t=Qb(),{relativeMajor:e,transposeKey:a,relativeMode:n,isLegalMode:s}=Hb(),r=Db(),o;return(function(){o=function($,P,L){if(P==="TEST")return{keyAccidentals:t,relativeMajor:e,transposeKey:a,relativeMode:n,transposeChordName:r};L=parseInt(L,10);var x=[],U;for(U=0;U2?x+=7:L===-12&&(x-=7):L>0&&x<0?x+=7:L<0&&x>0&&(x-=7),L>12?x+=7:L<-12&&(x-=7),x}function m($,P,L,x,U,D){for(var M=[],G=h(U,L,D),B={},V={},I=0;I1?U[1]:"",accidentals:D}}function _($,P,L,x){for(var U=$.pitch,D=f.indexOf($.name),M=f.indexOf(P.root),G=(M+U)%7,B=D+L,V=$.oct;B>6;)V++,B-=7;for(;B<0;)V--,B+=7;for(var I=f[G],k="",S=$.adj,F="=",H=0;H4&&(I=I.toLowerCase()),{acc:k,name:I,upper:I.toUpperCase()}}var b=/([_^=]*)([A-Ga-g])([,']*)/,v=/([_^=]*[A-Ga-g][,']*)?(\d*\/*\d*)?([\>\<\-\)]*)?/;function w($,P,L,x){var U=P==="none"?0:f.indexOf(P),D=$.match(b),M=D[2].toUpperCase(),G=f.indexOf(M)-U;G<0&&(G+=7);var B=d.indexOf(D[3]);M===D[2]&&B--;var V=x[M]||L[M]||"=";return{acc:D[1],name:M,pitch:G,oct:B,adj:R(D[1],L[M],x[M]),courtesy:D[1]===V}}function y($,P,L){for(var x=$.substring(P,L),U,D=[],M=/("[^"]+")+/g;(U=M.exec(x))!==null;)D.push({start:M.lastIndex-U[0].length,end:M.lastIndex});for(var G=/(![^!]+!)+/g;(U=G.exec(x))!==null;)D.push({start:G.lastIndex-U[0].length,end:G.lastIndex});for(var B=[],V=/([_^=]*)([A-Ga-g])([,']*)/g;(U=V.exec(x))!==null;){for(var I=!1,k=0;k=D[k].start&&V.lastIndex<=D[k].end&&(I=!0);I||B.push({note:U[0],index:P+V.lastIndex-U[0].length})}return B}function T($,P,L,x,U){var D=$.substring(P,L),M=/\{/,G=/\}/,B=/([^\{]*)/,V=/(\/*)/,I=D.match(new RegExp(B.source+M.source+V.source+v.source+V.source+v.source+V.source+v.source+V.source+v.source+V.source+v.source+V.source+v.source+V.source+v.source+V.source+v.source+G.source));if(I){for(var k=1+I[1].length,S=0;Sthis.max)&&(this.max=a.abcelem.maxpitch))},t.prototype.addBeam=function(a){this.beams.push(a)},t.prototype.setStemDirection=function(){if(this.average=e(this.total,this.count),this.forceup)this.stemsUp=!0;else if(this.forcedown)this.stemsUp=!1;else{var a=6;this.stemsUp=this.average0&&this.startVoice.staff.voices[0]===e)},Vp=t,Vp}var Hp,Dy;function Vr(){if(Dy)return Hp;Dy=1;var t=In(),e={0:{d:[["M",4.83,-14.97],["c",.33,-.03,1.11,0,1.47,.06],["c",1.68,.36,2.97,1.59,3.78,3.6],["c",1.2,2.97,.81,6.96,-.9,9.27],["c",-.78,1.08,-1.71,1.71,-2.91,1.95],["c",-.45,.09,-1.32,.09,-1.77,0],["c",-.81,-.18,-1.47,-.51,-2.07,-1.02],["c",-2.34,-2.07,-3.15,-6.72,-1.74,-10.2],["c",.87,-2.16,2.28,-3.42,4.14,-3.66],["z"],["m",1.11,.87],["c",-.21,-.06,-.69,-.09,-.87,-.06],["c",-.54,.12,-.87,.42,-1.17,.99],["c",-.36,.66,-.51,1.56,-.6,3],["c",-.03,.75,-.03,4.59,0,5.31],["c",.09,1.5,.27,2.4,.6,3.06],["c",.24,.48,.57,.78,.96,.9],["c",.27,.09,.78,.09,1.05,0],["c",.39,-.12,.72,-.42,.96,-.9],["c",.33,-.66,.51,-1.56,.6,-3.06],["c",.03,-.72,.03,-4.56,0,-5.31],["c",-.09,-1.47,-.27,-2.37,-.6,-3.03],["c",-.24,-.48,-.54,-.78,-.93,-.9],["z"]],w:10.78,h:14.959},1:{d:[["M",3.3,-15.06],["c",.06,-.06,.21,-.03,.66,.15],["c",.81,.39,1.08,.39,1.83,.03],["c",.21,-.09,.39,-.15,.42,-.15],["c",.12,0,.21,.09,.27,.21],["c",.06,.12,.06,.33,.06,5.94],["c",0,3.93,0,5.85,.03,6.03],["c",.06,.36,.15,.69,.27,.96],["c",.36,.75,.93,1.17,1.68,1.26],["c",.3,.03,.39,.09,.39,.3],["c",0,.15,-.03,.18,-.09,.24],["c",-.06,.06,-.09,.06,-.48,.06],["c",-.42,0,-.69,-.03,-2.1,-.24],["c",-.9,-.15,-1.77,-.15,-2.67,0],["c",-1.41,.21,-1.68,.24,-2.1,.24],["c",-.39,0,-.42,0,-.48,-.06],["c",-.06,-.06,-.06,-.09,-.06,-.24],["c",0,-.21,.06,-.27,.36,-.3],["c",.75,-.09,1.32,-.51,1.68,-1.26],["c",.12,-.27,.21,-.6,.27,-.96],["c",.03,-.18,.03,-1.59,.03,-4.29],["c",0,-3.87,0,-4.05,-.06,-4.14],["c",-.09,-.15,-.18,-.24,-.39,-.24],["c",-.12,0,-.15,.03,-.21,.06],["c",-.03,.06,-.45,.99,-.96,2.13],["c",-.48,1.14,-.9,2.1,-.93,2.16],["c",-.06,.15,-.21,.24,-.33,.24],["c",-.24,0,-.42,-.18,-.42,-.39],["c",0,-.06,3.27,-7.62,3.33,-7.74],["z"]],w:8.94,h:15.058},2:{d:[["M",4.23,-14.97],["c",.57,-.06,1.68,0,2.34,.18],["c",.69,.18,1.5,.54,2.01,.9],["c",1.35,.96,1.95,2.25,1.77,3.81],["c",-.15,1.35,-.66,2.34,-1.68,3.15],["c",-.6,.48,-1.44,.93,-3.12,1.65],["c",-1.32,.57,-1.8,.81,-2.37,1.14],["c",-.57,.33,-.57,.33,-.24,.27],["c",.39,-.09,1.26,-.09,1.68,0],["c",.72,.15,1.41,.45,2.1,.9],["c",.99,.63,1.86,.87,2.55,.75],["c",.24,-.06,.42,-.15,.57,-.3],["c",.12,-.09,.3,-.42,.3,-.51],["c",0,-.09,.12,-.21,.24,-.24],["c",.18,-.03,.39,.12,.39,.3],["c",0,.12,-.15,.57,-.3,.87],["c",-.54,1.02,-1.56,1.74,-2.79,2.01],["c",-.42,.09,-1.23,.09,-1.62,.03],["c",-.81,-.18,-1.32,-.45,-2.01,-1.11],["c",-.45,-.45,-.63,-.57,-.96,-.69],["c",-.84,-.27,-1.89,.12,-2.25,.9],["c",-.12,.21,-.21,.54,-.21,.72],["c",0,.12,-.12,.21,-.27,.24],["c",-.15,0,-.27,-.03,-.33,-.15],["c",-.09,-.21,.09,-1.08,.33,-1.71],["c",.24,-.66,.66,-1.26,1.29,-1.89],["c",.45,-.45,.9,-.81,1.92,-1.56],["c",1.29,-.93,1.89,-1.44,2.34,-1.98],["c",.87,-1.05,1.26,-2.19,1.2,-3.63],["c",-.06,-1.29,-.39,-2.31,-.96,-2.91],["c",-.36,-.33,-.72,-.51,-1.17,-.54],["c",-.84,-.03,-1.53,.42,-1.59,1.05],["c",-.03,.33,.12,.6,.57,1.14],["c",.45,.54,.54,.87,.42,1.41],["c",-.15,.63,-.54,1.11,-1.08,1.38],["c",-.63,.33,-1.2,.33,-1.83,0],["c",-.24,-.12,-.33,-.18,-.54,-.39],["c",-.18,-.18,-.27,-.3,-.36,-.51],["c",-.24,-.45,-.27,-.84,-.21,-1.38],["c",.12,-.75,.45,-1.41,1.02,-1.98],["c",.72,-.72,1.74,-1.17,2.85,-1.32],["z"]],w:10.764,h:14.97},3:{d:[["M",3.78,-14.97],["c",.3,-.03,1.41,0,1.83,.06],["c",2.22,.3,3.51,1.32,3.72,2.91],["c",.03,.33,.03,1.26,-.03,1.65],["c",-.12,.84,-.48,1.47,-1.05,1.77],["c",-.27,.15,-.36,.24,-.45,.39],["c",-.09,.21,-.09,.36,0,.57],["c",.09,.15,.18,.24,.51,.39],["c",.75,.42,1.23,1.14,1.41,2.13],["c",.06,.42,.06,1.35,0,1.71],["c",-.18,.81,-.48,1.38,-1.02,1.95],["c",-.75,.72,-1.8,1.2,-3.18,1.38],["c",-.42,.06,-1.56,.06,-1.95,0],["c",-1.89,-.33,-3.18,-1.29,-3.51,-2.64],["c",-.03,-.12,-.03,-.33,-.03,-.6],["c",0,-.36,0,-.42,.06,-.63],["c",.12,-.3,.27,-.51,.51,-.75],["c",.24,-.24,.45,-.39,.75,-.51],["c",.21,-.06,.27,-.06,.6,-.06],["c",.33,0,.39,0,.6,.06],["c",.3,.12,.51,.27,.75,.51],["c",.36,.33,.57,.75,.6,1.2],["c",0,.21,0,.27,-.06,.42],["c",-.09,.18,-.12,.24,-.54,.54],["c",-.51,.36,-.63,.54,-.6,.87],["c",.06,.54,.54,.9,1.38,.99],["c",.36,.06,.72,.03,.96,-.06],["c",.81,-.27,1.29,-1.23,1.44,-2.79],["c",.03,-.45,.03,-1.95,-.03,-2.37],["c",-.09,-.75,-.33,-1.23,-.75,-1.44],["c",-.33,-.18,-.45,-.18,-1.98,-.18],["c",-1.35,0,-1.41,0,-1.5,-.06],["c",-.18,-.12,-.24,-.39,-.12,-.6],["c",.12,-.15,.15,-.15,1.68,-.15],["c",1.5,0,1.62,0,1.89,-.15],["c",.18,-.09,.42,-.36,.54,-.57],["c",.18,-.42,.27,-.9,.3,-1.95],["c",.03,-1.2,-.06,-1.8,-.36,-2.37],["c",-.24,-.48,-.63,-.81,-1.14,-.96],["c",-.3,-.06,-1.08,-.06,-1.38,.03],["c",-.6,.15,-.9,.42,-.96,.84],["c",-.03,.3,.06,.45,.63,.84],["c",.33,.24,.42,.39,.45,.63],["c",.03,.72,-.57,1.5,-1.32,1.65],["c",-1.05,.27,-2.1,-.57,-2.1,-1.65],["c",0,-.45,.15,-.96,.39,-1.38],["c",.12,-.21,.54,-.63,.81,-.81],["c",.57,-.42,1.38,-.69,2.25,-.81],["z"]],w:9.735,h:14.967},4:{d:[["M",8.64,-14.94],["c",.27,-.09,.42,-.12,.54,-.03],["c",.09,.06,.15,.21,.15,.3],["c",-.03,.06,-1.92,2.31,-4.23,5.04],["c",-2.31,2.73,-4.23,4.98,-4.26,5.01],["c",-.03,.06,.12,.06,2.55,.06],["l",2.61,0],["l",0,-2.37],["c",0,-2.19,.03,-2.37,.06,-2.46],["c",.03,-.06,.21,-.18,.57,-.42],["c",1.08,-.72,1.38,-1.08,1.86,-2.16],["c",.12,-.3,.24,-.54,.27,-.57],["c",.12,-.12,.39,-.06,.45,.12],["c",.06,.09,.06,.57,.06,3.96],["l",0,3.9],["l",1.08,0],["c",1.05,0,1.11,0,1.2,.06],["c",.24,.15,.24,.54,0,.69],["c",-.09,.06,-.15,.06,-1.2,.06],["l",-1.08,0],["l",0,.33],["c",0,.57,.09,1.11,.3,1.53],["c",.36,.75,.93,1.17,1.68,1.26],["c",.3,.03,.39,.09,.39,.3],["c",0,.15,-.03,.18,-.09,.24],["c",-.06,.06,-.09,.06,-.48,.06],["c",-.42,0,-.69,-.03,-2.1,-.24],["c",-.9,-.15,-1.77,-.15,-2.67,0],["c",-1.41,.21,-1.68,.24,-2.1,.24],["c",-.39,0,-.42,0,-.48,-.06],["c",-.06,-.06,-.06,-.09,-.06,-.24],["c",0,-.21,.06,-.27,.36,-.3],["c",.75,-.09,1.32,-.51,1.68,-1.26],["c",.21,-.42,.3,-.96,.3,-1.53],["l",0,-.33],["l",-2.7,0],["c",-2.91,0,-2.85,0,-3.09,-.15],["c",-.18,-.12,-.3,-.39,-.27,-.54],["c",.03,-.06,.18,-.24,.33,-.45],["c",.75,-.9,1.59,-2.07,2.13,-3.03],["c",.33,-.54,.84,-1.62,1.05,-2.16],["c",.57,-1.41,.84,-2.64,.9,-4.05],["c",.03,-.63,.06,-.72,.24,-.81],["l",.12,-.06],["l",.45,.12],["c",.66,.18,1.02,.24,1.47,.27],["c",.6,.03,1.23,-.09,2.01,-.33],["z"]],w:11.795,h:14.994},5:{d:[["M",1.02,-14.94],["c",.12,-.09,.03,-.09,1.08,.06],["c",2.49,.36,4.35,.36,6.96,-.06],["c",.57,-.09,.66,-.06,.81,.06],["c",.15,.18,.12,.24,-.15,.51],["c",-1.29,1.26,-3.24,2.04,-5.58,2.31],["c",-.6,.09,-1.2,.12,-1.71,.12],["c",-.39,0,-.45,0,-.57,.06],["c",-.09,.06,-.15,.12,-.21,.21],["l",-.06,.12],["l",0,1.65],["l",0,1.65],["l",.21,-.21],["c",.66,-.57,1.41,-.96,2.19,-1.14],["c",.33,-.06,1.41,-.06,1.95,0],["c",2.61,.36,4.02,1.74,4.26,4.14],["c",.03,.45,.03,1.08,-.03,1.44],["c",-.18,1.02,-.78,2.01,-1.59,2.7],["c",-.72,.57,-1.62,1.02,-2.49,1.2],["c",-1.38,.27,-3.03,.06,-4.2,-.54],["c",-1.08,-.54,-1.71,-1.32,-1.86,-2.28],["c",-.09,-.69,.09,-1.29,.57,-1.74],["c",.24,-.24,.45,-.39,.75,-.51],["c",.21,-.06,.27,-.06,.6,-.06],["c",.33,0,.39,0,.6,.06],["c",.3,.12,.51,.27,.75,.51],["c",.36,.33,.57,.75,.6,1.2],["c",0,.21,0,.27,-.06,.42],["c",-.09,.18,-.12,.24,-.54,.54],["c",-.18,.12,-.36,.3,-.42,.33],["c",-.36,.42,-.18,.99,.36,1.26],["c",.51,.27,1.47,.36,2.01,.27],["c",.93,-.21,1.47,-1.17,1.65,-2.91],["c",.06,-.45,.06,-1.89,0,-2.31],["c",-.15,-1.2,-.51,-2.1,-1.05,-2.55],["c",-.21,-.18,-.54,-.36,-.81,-.39],["c",-.3,-.06,-.84,-.03,-1.26,.06],["c",-.93,.18,-1.65,.6,-2.16,1.2],["c",-.15,.21,-.27,.3,-.39,.3],["c",-.15,0,-.3,-.09,-.36,-.18],["c",-.06,-.09,-.06,-.15,-.06,-3.66],["c",0,-3.39,0,-3.57,.06,-3.66],["c",.03,-.06,.09,-.15,.15,-.18],["z"]],w:10.212,h:14.997},6:{d:[["M",4.98,-14.97],["c",.36,-.03,1.2,0,1.59,.06],["c",.9,.15,1.68,.51,2.25,1.05],["c",.57,.51,.87,1.23,.84,1.98],["c",-.03,.51,-.21,.9,-.6,1.26],["c",-.24,.24,-.45,.39,-.75,.51],["c",-.21,.06,-.27,.06,-.6,.06],["c",-.33,0,-.39,0,-.6,-.06],["c",-.3,-.12,-.51,-.27,-.75,-.51],["c",-.39,-.36,-.57,-.78,-.57,-1.26],["c",0,-.27,0,-.3,.09,-.42],["c",.03,-.09,.18,-.21,.3,-.3],["c",.12,-.09,.3,-.21,.39,-.27],["c",.09,-.06,.21,-.18,.27,-.24],["c",.06,-.12,.09,-.15,.09,-.33],["c",0,-.18,-.03,-.24,-.09,-.36],["c",-.24,-.39,-.75,-.6,-1.38,-.57],["c",-.54,.03,-.9,.18,-1.23,.48],["c",-.81,.72,-1.08,2.16,-.96,5.37],["l",0,.63],["l",.3,-.12],["c",.78,-.27,1.29,-.33,2.1,-.27],["c",1.47,.12,2.49,.54,3.27,1.29],["c",.48,.51,.81,1.11,.96,1.89],["c",.06,.27,.06,.42,.06,.93],["c",0,.54,0,.69,-.06,.96],["c",-.15,.78,-.48,1.38,-.96,1.89],["c",-.54,.51,-1.17,.87,-1.98,1.08],["c",-1.14,.3,-2.4,.33,-3.24,.03],["c",-1.5,-.48,-2.64,-1.89,-3.27,-4.02],["c",-.36,-1.23,-.51,-2.82,-.42,-4.08],["c",.3,-3.66,2.28,-6.3,4.95,-6.66],["z"],["m",.66,7.41],["c",-.27,-.09,-.81,-.12,-1.08,-.06],["c",-.72,.18,-1.08,.69,-1.23,1.71],["c",-.06,.54,-.06,3,0,3.54],["c",.18,1.26,.72,1.77,1.8,1.74],["c",.39,-.03,.63,-.09,.9,-.27],["c",.66,-.42,.9,-1.32,.9,-3.24],["c",0,-2.22,-.36,-3.12,-1.29,-3.42],["z"]],w:9.956,h:14.982},7:{d:[["M",.21,-14.97],["c",.21,-.06,.45,0,.54,.15],["c",.06,.09,.06,.15,.06,.39],["c",0,.24,0,.33,.06,.42],["c",.06,.12,.21,.24,.27,.24],["c",.03,0,.12,-.12,.24,-.21],["c",.96,-1.2,2.58,-1.35,3.99,-.42],["c",.15,.12,.42,.3,.54,.45],["c",.48,.39,.81,.57,1.29,.6],["c",.69,.03,1.5,-.3,2.13,-.87],["c",.09,-.09,.27,-.3,.39,-.45],["c",.12,-.15,.24,-.27,.3,-.3],["c",.18,-.06,.39,.03,.51,.21],["c",.06,.18,.06,.24,-.27,.72],["c",-.18,.24,-.54,.78,-.78,1.17],["c",-2.37,3.54,-3.54,6.27,-3.87,9],["c",-.03,.33,-.03,.66,-.03,1.26],["c",0,.9,0,1.08,.15,1.89],["c",.06,.45,.06,.48,.03,.6],["c",-.06,.09,-.21,.21,-.3,.21],["c",-.03,0,-.27,-.06,-.54,-.15],["c",-.84,-.27,-1.11,-.3,-1.65,-.3],["c",-.57,0,-.84,.03,-1.56,.27],["c",-.6,.18,-.69,.21,-.81,.15],["c",-.12,-.06,-.21,-.18,-.21,-.3],["c",0,-.15,.6,-1.44,1.2,-2.61],["c",1.14,-2.22,2.73,-4.68,5.1,-8.01],["c",.21,-.27,.36,-.48,.33,-.48],["c",0,0,-.12,.06,-.27,.12],["c",-.54,.3,-.99,.39,-1.56,.39],["c",-.75,.03,-1.2,-.18,-1.83,-.75],["c",-.99,-.9,-1.83,-1.17,-2.31,-.72],["c",-.18,.15,-.36,.51,-.45,.84],["c",-.06,.24,-.06,.33,-.09,1.98],["c",0,1.62,-.03,1.74,-.06,1.8],["c",-.15,.24,-.54,.24,-.69,0],["c",-.06,-.09,-.06,-.15,-.06,-3.57],["c",0,-3.42,0,-3.48,.06,-3.57],["c",.03,-.06,.09,-.12,.15,-.15],["z"]],w:10.561,h:15.093},8:{d:[["M",4.98,-14.97],["c",.33,-.03,1.02,-.03,1.32,0],["c",1.32,.12,2.49,.6,3.21,1.32],["c",.39,.39,.66,.81,.78,1.29],["c",.09,.36,.09,1.08,0,1.44],["c",-.21,.84,-.66,1.59,-1.59,2.55],["l",-.3,.3],["l",.27,.18],["c",1.47,.93,2.31,2.31,2.25,3.75],["c",-.03,.75,-.24,1.35,-.63,1.95],["c",-.45,.66,-1.02,1.14,-1.83,1.53],["c",-1.8,.87,-4.2,.87,-6,.03],["c",-1.62,-.78,-2.52,-2.16,-2.46,-3.66],["c",.06,-.99,.54,-1.77,1.8,-2.97],["c",.54,-.51,.54,-.54,.48,-.57],["c",-.39,-.27,-.96,-.78,-1.2,-1.14],["c",-.75,-1.11,-.87,-2.4,-.3,-3.6],["c",.69,-1.35,2.25,-2.25,4.2,-2.4],["z"],["m",1.53,.69],["c",-.42,-.09,-1.11,-.12,-1.38,-.06],["c",-.3,.06,-.6,.18,-.81,.3],["c",-.21,.12,-.6,.51,-.72,.72],["c",-.51,.87,-.42,1.89,.21,2.52],["c",.21,.21,.36,.3,1.95,1.23],["c",.96,.54,1.74,.99,1.77,1.02],["c",.09,0,.63,-.6,.99,-1.11],["c",.21,-.36,.48,-.87,.57,-1.23],["c",.06,-.24,.06,-.36,.06,-.72],["c",0,-.45,-.03,-.66,-.15,-.99],["c",-.39,-.81,-1.29,-1.44,-2.49,-1.68],["z"],["m",-1.44,8.07],["l",-1.89,-1.08],["c",-.03,0,-.18,.15,-.39,.33],["c",-1.2,1.08,-1.65,1.95,-1.59,3],["c",.09,1.59,1.35,2.85,3.21,3.24],["c",.33,.06,.45,.06,.93,.06],["c",.63,0,.81,-.03,1.29,-.27],["c",.9,-.42,1.47,-1.41,1.41,-2.4],["c",-.06,-.66,-.39,-1.29,-.9,-1.65],["c",-.12,-.09,-1.05,-.63,-2.07,-1.23],["z"]],w:10.926,h:14.989},9:{d:[["M",4.23,-14.97],["c",.42,-.03,1.29,0,1.62,.06],["c",.51,.12,.93,.3,1.38,.57],["c",1.53,1.02,2.52,3.24,2.73,5.94],["c",.18,2.55,-.48,4.98,-1.83,6.57],["c",-1.05,1.26,-2.4,1.89,-3.93,1.83],["c",-1.23,-.06,-2.31,-.45,-3.03,-1.14],["c",-.57,-.51,-.87,-1.23,-.84,-1.98],["c",.03,-.51,.21,-.9,.6,-1.26],["c",.24,-.24,.45,-.39,.75,-.51],["c",.21,-.06,.27,-.06,.6,-.06],["c",.33,0,.39,0,.6,.06],["c",.3,.12,.51,.27,.75,.51],["c",.39,.36,.57,.78,.57,1.26],["c",0,.27,0,.3,-.09,.42],["c",-.03,.09,-.18,.21,-.3,.3],["c",-.12,.09,-.3,.21,-.39,.27],["c",-.09,.06,-.21,.18,-.27,.24],["c",-.06,.12,-.06,.15,-.06,.33],["c",0,.18,0,.24,.06,.36],["c",.24,.39,.75,.6,1.38,.57],["c",.54,-.03,.9,-.18,1.23,-.48],["c",.81,-.72,1.08,-2.16,.96,-5.37],["l",0,-.63],["l",-.3,.12],["c",-.78,.27,-1.29,.33,-2.1,.27],["c",-1.47,-.12,-2.49,-.54,-3.27,-1.29],["c",-.48,-.51,-.81,-1.11,-.96,-1.89],["c",-.06,-.27,-.06,-.42,-.06,-.96],["c",0,-.51,0,-.66,.06,-.93],["c",.15,-.78,.48,-1.38,.96,-1.89],["c",.15,-.12,.33,-.27,.42,-.36],["c",.69,-.51,1.62,-.81,2.76,-.93],["z"],["m",1.17,.66],["c",-.21,-.06,-.57,-.06,-.81,-.03],["c",-.78,.12,-1.26,.69,-1.41,1.74],["c",-.12,.63,-.15,1.95,-.09,2.79],["c",.12,1.71,.63,2.4,1.77,2.46],["c",1.08,.03,1.62,-.48,1.8,-1.74],["c",.06,-.54,.06,-3,0,-3.54],["c",-.15,-1.05,-.51,-1.53,-1.26,-1.68],["z"]],w:9.959,h:14.986},"rests.multimeasure":{d:[["M",0,-4],["l",0,16],["l",1,0],["l",0,-5],["l",40,0],["l",0,5],["l",1,0],["l",0,-16],["l",-1,0],["l",0,5],["l",-40,0],["l",0,-5],["z"]],w:42,h:18},"rests.whole":{d:[["M",.06,.03],["l",.09,-.06],["l",5.46,0],["l",5.49,0],["l",.09,.06],["l",.06,.09],["l",0,2.19],["l",0,2.19],["l",-.06,.09],["l",-.09,.06],["l",-5.49,0],["l",-5.46,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-2.19],["l",0,-2.19],["z"]],w:11.25,h:4.68},"rests.half":{d:[["M",.06,-4.62],["l",.09,-.06],["l",5.46,0],["l",5.49,0],["l",.09,.06],["l",.06,.09],["l",0,2.19],["l",0,2.19],["l",-.06,.09],["l",-.09,.06],["l",-5.49,0],["l",-5.46,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-2.19],["l",0,-2.19],["z"]],w:11.25,h:4.68},"rests.quarter":{d:[["M",1.89,-11.82],["c",.12,-.06,.24,-.06,.36,-.03],["c",.09,.06,4.74,5.58,4.86,5.82],["c",.21,.39,.15,.78,-.15,1.26],["c",-.24,.33,-.72,.81,-1.62,1.56],["c",-.45,.36,-.87,.75,-.96,.84],["c",-.93,.99,-1.14,2.49,-.6,3.63],["c",.18,.39,.27,.48,1.32,1.68],["c",1.92,2.25,1.83,2.16,1.83,2.34],["c",0,.18,-.18,.36,-.36,.39],["c",-.15,0,-.27,-.06,-.48,-.27],["c",-.75,-.75,-2.46,-1.29,-3.39,-1.08],["c",-.45,.09,-.69,.27,-.9,.69],["c",-.12,.3,-.21,.66,-.24,1.14],["c",-.03,.66,.09,1.35,.3,2.01],["c",.15,.42,.24,.66,.45,.96],["c",.18,.24,.18,.33,.03,.42],["c",-.12,.06,-.18,.03,-.45,-.3],["c",-1.08,-1.38,-2.07,-3.36,-2.4,-4.83],["c",-.27,-1.05,-.15,-1.77,.27,-2.07],["c",.21,-.12,.42,-.15,.87,-.15],["c",.87,.06,2.1,.39,3.3,.9],["l",.39,.18],["l",-1.65,-1.95],["c",-2.52,-2.97,-2.61,-3.09,-2.7,-3.27],["c",-.09,-.24,-.12,-.48,-.03,-.75],["c",.15,-.48,.57,-.96,1.83,-2.01],["c",.45,-.36,.84,-.72,.93,-.78],["c",.69,-.75,1.02,-1.8,.9,-2.79],["c",-.06,-.33,-.21,-.84,-.39,-1.11],["c",-.09,-.15,-.45,-.6,-.81,-1.05],["c",-.36,-.42,-.69,-.81,-.72,-.87],["c",-.09,-.18,0,-.42,.21,-.51],["z"]],w:7.888,h:21.435},"rests.8th":{d:[["M",1.68,-6.12],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.6,.48],["c",.12,0,.18,0,.33,-.09],["c",.39,-.18,1.32,-1.29,1.68,-1.98],["c",.09,-.21,.24,-.3,.39,-.3],["c",.12,0,.27,.09,.33,.18],["c",.03,.06,-.27,1.11,-1.86,6.42],["c",-1.02,3.48,-1.89,6.39,-1.92,6.42],["c",0,.03,-.12,.12,-.24,.15],["c",-.18,.09,-.21,.09,-.45,.09],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.15,-.57,1.68,-4.92],["c",.96,-2.67,1.74,-4.89,1.71,-4.89],["l",-.51,.15],["c",-1.08,.36,-1.74,.48,-2.55,.48],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:7.534,h:13.883},"rests.16th":{d:[["M",3.33,-6.12],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.15,.39,.57,.57,.87,.42],["c",.39,-.18,1.2,-1.23,1.62,-2.07],["c",.06,-.15,.24,-.24,.36,-.24],["c",.12,0,.27,.09,.33,.18],["c",.03,.06,-.45,1.86,-2.67,10.17],["c",-1.5,5.55,-2.73,10.14,-2.76,10.17],["c",-.03,.03,-.12,.12,-.24,.15],["c",-.18,.09,-.21,.09,-.45,.09],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.12,-.57,1.44,-4.92],["c",.81,-2.67,1.47,-4.86,1.47,-4.89],["c",-.03,0,-.27,.06,-.54,.15],["c",-1.08,.36,-1.77,.48,-2.58,.48],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.72,-1.05,2.22,-1.23,3.06,-.42],["c",.3,.33,.42,.6,.6,1.38],["c",.09,.45,.21,.78,.33,.9],["c",.09,.09,.27,.18,.45,.21],["c",.12,0,.18,0,.33,-.09],["c",.33,-.15,1.02,-.93,1.41,-1.59],["c",.12,-.21,.18,-.39,.39,-1.08],["c",.66,-2.1,1.17,-3.84,1.17,-3.87],["c",0,0,-.21,.06,-.42,.15],["c",-.51,.15,-1.2,.33,-1.68,.42],["c",-.33,.06,-.51,.06,-.96,.06],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:9.724,h:21.383},"rests.32nd":{d:[["M",4.23,-13.62],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.6,.48],["c",.12,0,.18,0,.27,-.06],["c",.33,-.21,.99,-1.11,1.44,-1.98],["c",.09,-.24,.21,-.33,.39,-.33],["c",.12,0,.27,.09,.33,.18],["c",.03,.06,-.57,2.67,-3.21,13.89],["c",-1.8,7.62,-3.3,13.89,-3.3,13.92],["c",-.03,.06,-.12,.12,-.24,.18],["c",-.21,.09,-.24,.09,-.48,.09],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.09,-.57,1.23,-4.92],["c",.69,-2.67,1.26,-4.86,1.29,-4.89],["c",0,-.03,-.12,-.03,-.48,.12],["c",-1.17,.39,-2.22,.57,-3,.54],["c",-.42,-.03,-.75,-.12,-1.11,-.3],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.72,-1.05,2.22,-1.23,3.06,-.42],["c",.3,.33,.42,.6,.6,1.38],["c",.09,.45,.21,.78,.33,.9],["c",.12,.09,.3,.18,.48,.21],["c",.12,0,.18,0,.3,-.09],["c",.42,-.21,1.29,-1.29,1.56,-1.89],["c",.03,-.12,1.23,-4.59,1.23,-4.65],["c",0,-.03,-.18,.03,-.39,.12],["c",-.63,.18,-1.2,.36,-1.74,.45],["c",-.39,.06,-.54,.06,-1.02,.06],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.72,-1.05,2.22,-1.23,3.06,-.42],["c",.3,.33,.42,.6,.6,1.38],["c",.09,.45,.21,.78,.33,.9],["c",.18,.18,.51,.27,.72,.15],["c",.3,-.12,.69,-.57,1.08,-1.17],["c",.42,-.6,.39,-.51,1.05,-3.03],["c",.33,-1.26,.6,-2.31,.6,-2.34],["c",0,0,-.21,.03,-.45,.12],["c",-.57,.18,-1.14,.33,-1.62,.42],["c",-.33,.06,-.51,.06,-.96,.06],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:11.373,h:28.883},"rests.64th":{d:[["M",5.13,-13.62],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.15,.63,.21,.81,.33,.96],["c",.18,.21,.54,.3,.75,.18],["c",.24,-.12,.63,-.66,1.08,-1.56],["c",.33,-.66,.39,-.72,.6,-.72],["c",.12,0,.27,.09,.33,.18],["c",.03,.06,-.69,3.66,-3.54,17.64],["c",-1.95,9.66,-3.57,17.61,-3.57,17.64],["c",-.03,.06,-.12,.12,-.24,.18],["c",-.21,.09,-.24,.09,-.48,.09],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.06,-.57,1.05,-4.95],["c",.6,-2.7,1.08,-4.89,1.08,-4.92],["c",0,0,-.24,.06,-.51,.15],["c",-.66,.24,-1.2,.36,-1.77,.48],["c",-.42,.06,-.57,.06,-1.05,.06],["c",-.69,0,-.87,-.03,-1.35,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.72,-1.05,2.22,-1.23,3.06,-.42],["c",.3,.33,.42,.6,.6,1.38],["c",.09,.45,.21,.78,.33,.9],["c",.09,.09,.27,.18,.45,.21],["c",.21,.03,.39,-.09,.72,-.42],["c",.45,-.45,1.02,-1.26,1.17,-1.65],["c",.03,-.09,.27,-1.14,.54,-2.34],["c",.27,-1.2,.48,-2.19,.51,-2.22],["c",0,-.03,-.09,-.03,-.48,.12],["c",-1.17,.39,-2.22,.57,-3,.54],["c",-.42,-.03,-.75,-.12,-1.11,-.3],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.15,.39,.57,.57,.9,.42],["c",.36,-.18,1.2,-1.26,1.47,-1.89],["c",.03,-.09,.3,-1.2,.57,-2.43],["l",.51,-2.28],["l",-.54,.18],["c",-1.11,.36,-1.8,.48,-2.61,.48],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.15,.63,.21,.81,.33,.96],["c",.21,.21,.54,.3,.75,.18],["c",.36,-.18,.93,-.93,1.29,-1.68],["c",.12,-.24,.18,-.48,.63,-2.55],["l",.51,-2.31],["c",0,-.03,-.18,.03,-.39,.12],["c",-1.14,.36,-2.1,.54,-2.82,.51],["c",-.42,-.03,-.75,-.12,-1.11,-.3],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:12.453,h:36.383},"rests.128th":{d:[["M",6.03,-21.12],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.6,.48],["c",.21,0,.33,-.06,.54,-.36],["c",.15,-.21,.54,-.93,.78,-1.47],["c",.15,-.33,.18,-.39,.3,-.48],["c",.18,-.09,.45,0,.51,.15],["c",.03,.09,-7.11,42.75,-7.17,42.84],["c",-.03,.03,-.15,.09,-.24,.15],["c",-.18,.06,-.24,.06,-.45,.06],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.03,-.57,.84,-4.98],["c",.51,-2.7,.93,-4.92,.9,-4.92],["c",0,0,-.15,.06,-.36,.12],["c",-.78,.27,-1.62,.48,-2.31,.57],["c",-.15,.03,-.54,.03,-.81,.03],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.63,.48],["c",.12,0,.18,0,.3,-.09],["c",.42,-.21,1.14,-1.11,1.5,-1.83],["c",.12,-.27,.12,-.27,.54,-2.52],["c",.24,-1.23,.42,-2.25,.39,-2.25],["c",0,0,-.24,.06,-.51,.18],["c",-1.26,.39,-2.25,.57,-3.06,.54],["c",-.42,-.03,-.75,-.12,-1.11,-.3],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.15,.63,.21,.81,.33,.96],["c",.18,.21,.51,.3,.75,.18],["c",.36,-.15,1.05,-.99,1.41,-1.77],["l",.15,-.3],["l",.42,-2.25],["c",.21,-1.26,.42,-2.28,.39,-2.28],["l",-.51,.15],["c",-1.11,.39,-1.89,.51,-2.7,.51],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.15,.63,.21,.81,.33,.96],["c",.18,.18,.48,.27,.72,.21],["c",.33,-.12,1.14,-1.26,1.41,-1.95],["c",0,-.09,.21,-1.11,.45,-2.34],["c",.21,-1.2,.39,-2.22,.39,-2.28],["c",.03,-.03,0,-.03,-.45,.12],["c",-.57,.18,-1.2,.33,-1.71,.42],["c",-.3,.06,-.51,.06,-.93,.06],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.6,.48],["c",.18,0,.36,-.09,.57,-.33],["c",.33,-.36,.78,-1.14,.93,-1.56],["c",.03,-.12,.24,-1.2,.45,-2.4],["c",.24,-1.2,.42,-2.22,.42,-2.28],["c",.03,-.03,0,-.03,-.39,.09],["c",-1.05,.36,-1.8,.48,-2.58,.48],["c",-.63,0,-.84,-.03,-1.29,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:12.992,h:43.883},"accidentals.sharp":{d:[["M",5.73,-11.19],["c",.21,-.12,.54,-.03,.66,.24],["c",.06,.12,.06,.21,.06,2.31],["c",0,1.23,0,2.22,.03,2.22],["c",0,0,.27,-.12,.6,-.24],["c",.69,-.27,.78,-.3,.96,-.15],["c",.21,.15,.21,.18,.21,1.38],["c",0,1.02,0,1.11,-.06,1.2],["c",-.03,.06,-.09,.12,-.12,.15],["c",-.06,.03,-.42,.21,-.84,.36],["l",-.75,.33],["l",-.03,2.43],["c",0,1.32,0,2.43,.03,2.43],["c",0,0,.27,-.12,.6,-.24],["c",.69,-.27,.78,-.3,.96,-.15],["c",.21,.15,.21,.18,.21,1.38],["c",0,1.02,0,1.11,-.06,1.2],["c",-.03,.06,-.09,.12,-.12,.15],["c",-.06,.03,-.42,.21,-.84,.36],["l",-.75,.33],["l",-.03,2.52],["c",0,2.28,-.03,2.55,-.06,2.64],["c",-.21,.36,-.72,.36,-.93,0],["c",-.03,-.09,-.06,-.33,-.06,-2.43],["l",0,-2.31],["l",-1.29,.51],["l",-1.26,.51],["l",0,2.43],["c",0,2.58,0,2.52,-.15,2.67],["c",-.06,.09,-.27,.18,-.36,.18],["c",-.12,0,-.33,-.09,-.39,-.18],["c",-.15,-.15,-.15,-.09,-.15,-2.43],["c",0,-1.23,0,-2.22,-.03,-2.22],["c",0,0,-.27,.12,-.6,.24],["c",-.69,.27,-.78,.3,-.96,.15],["c",-.21,-.15,-.21,-.18,-.21,-1.38],["c",0,-1.02,0,-1.11,.06,-1.2],["c",.03,-.06,.09,-.12,.12,-.15],["c",.06,-.03,.42,-.21,.84,-.36],["l",.78,-.33],["l",0,-2.43],["c",0,-1.32,0,-2.43,-.03,-2.43],["c",0,0,-.27,.12,-.6,.24],["c",-.69,.27,-.78,.3,-.96,.15],["c",-.21,-.15,-.21,-.18,-.21,-1.38],["c",0,-1.02,0,-1.11,.06,-1.2],["c",.03,-.06,.09,-.12,.12,-.15],["c",.06,-.03,.42,-.21,.84,-.36],["l",.78,-.33],["l",0,-2.52],["c",0,-2.28,.03,-2.55,.06,-2.64],["c",.21,-.36,.72,-.36,.93,0],["c",.03,.09,.06,.33,.06,2.43],["l",.03,2.31],["l",1.26,-.51],["l",1.26,-.51],["l",0,-2.43],["c",0,-2.28,0,-2.43,.06,-2.55],["c",.06,-.12,.12,-.18,.27,-.24],["z"],["m",-.33,10.65],["l",0,-2.43],["l",-1.29,.51],["l",-1.26,.51],["l",0,2.46],["l",0,2.43],["l",.09,-.03],["c",.06,-.03,.63,-.27,1.29,-.51],["l",1.17,-.48],["l",0,-2.46],["z"]],w:8.25,h:22.462},"accidentals.halfsharp":{d:[["M",2.43,-10.05],["c",.21,-.12,.54,-.03,.66,.24],["c",.06,.12,.06,.21,.06,2.01],["c",0,1.05,0,1.89,.03,1.89],["l",.72,-.48],["c",.69,-.48,.69,-.51,.87,-.51],["c",.15,0,.18,.03,.27,.09],["c",.21,.15,.21,.18,.21,1.41],["c",0,1.11,-.03,1.14,-.09,1.23],["c",-.03,.03,-.48,.39,-1.02,.75],["l",-.99,.66],["l",0,2.37],["c",0,1.32,0,2.37,.03,2.37],["l",.72,-.48],["c",.69,-.48,.69,-.51,.87,-.51],["c",.15,0,.18,.03,.27,.09],["c",.21,.15,.21,.18,.21,1.41],["c",0,1.11,-.03,1.14,-.09,1.23],["c",-.03,.03,-.48,.39,-1.02,.75],["l",-.99,.66],["l",0,2.25],["c",0,1.95,0,2.28,-.06,2.37],["c",-.06,.12,-.12,.21,-.24,.27],["c",-.27,.12,-.54,.03,-.69,-.24],["c",-.06,-.12,-.06,-.21,-.06,-2.01],["c",0,-1.05,0,-1.89,-.03,-1.89],["l",-.72,.48],["c",-.69,.48,-.69,.48,-.87,.48],["c",-.15,0,-.18,0,-.27,-.06],["c",-.21,-.15,-.21,-.18,-.21,-1.41],["c",0,-1.11,.03,-1.14,.09,-1.23],["c",.03,-.03,.48,-.39,1.02,-.75],["l",.99,-.66],["l",0,-2.37],["c",0,-1.32,0,-2.37,-.03,-2.37],["l",-.72,.48],["c",-.69,.48,-.69,.48,-.87,.48],["c",-.15,0,-.18,0,-.27,-.06],["c",-.21,-.15,-.21,-.18,-.21,-1.41],["c",0,-1.11,.03,-1.14,.09,-1.23],["c",.03,-.03,.48,-.39,1.02,-.75],["l",.99,-.66],["l",0,-2.25],["c",0,-2.13,0,-2.28,.06,-2.4],["c",.06,-.12,.12,-.18,.27,-.24],["z"]],w:5.25,h:20.174},"accidentals.nat":{d:[["M",.21,-11.4],["c",.24,-.06,.78,0,.99,.15],["c",.03,.03,.03,.48,0,2.61],["c",-.03,1.44,-.03,2.61,-.03,2.61],["c",0,.03,.75,-.09,1.68,-.24],["c",.96,-.18,1.71,-.27,1.74,-.27],["c",.15,.03,.27,.15,.36,.3],["l",.06,.12],["l",.09,8.67],["c",.09,6.96,.12,8.67,.09,8.67],["c",-.03,.03,-.12,.06,-.21,.09],["c",-.24,.09,-.72,.09,-.96,0],["c",-.09,-.03,-.18,-.06,-.21,-.09],["c",-.03,-.03,-.03,-.48,0,-2.61],["c",.03,-1.44,.03,-2.61,.03,-2.61],["c",0,-.03,-.75,.09,-1.68,.24],["c",-.96,.18,-1.71,.27,-1.74,.27],["c",-.15,-.03,-.27,-.15,-.36,-.3],["l",-.06,-.15],["l",-.09,-7.53],["c",-.06,-4.14,-.09,-8.04,-.12,-8.67],["l",0,-1.11],["l",.15,-.06],["c",.09,-.03,.21,-.06,.27,-.09],["z"],["m",3.75,8.4],["c",0,-.33,0,-.42,-.03,-.42],["c",-.12,0,-2.79,.45,-2.79,.48],["c",-.03,0,-.09,6.3,-.09,6.33],["c",.03,0,2.79,-.45,2.82,-.48],["c",0,0,.09,-4.53,.09,-5.91],["z"]],w:5.4,h:22.8},"accidentals.flat":{d:[["M",-.36,-14.07],["c",.33,-.06,.87,0,1.08,.15],["c",.06,.03,.06,.36,-.03,5.25],["c",-.06,2.85,-.09,5.19,-.09,5.19],["c",0,.03,.12,-.03,.24,-.12],["c",.63,-.42,1.41,-.66,2.19,-.72],["c",.81,-.03,1.47,.21,2.04,.78],["c",.57,.54,.87,1.26,.93,2.04],["c",.03,.57,-.09,1.08,-.36,1.62],["c",-.42,.81,-1.02,1.38,-2.82,2.61],["c",-1.14,.78,-1.44,1.02,-1.8,1.44],["c",-.18,.18,-.39,.39,-.45,.42],["c",-.27,.18,-.57,.15,-.81,-.06],["c",-.06,-.09,-.12,-.18,-.15,-.27],["c",-.03,-.06,-.09,-3.27,-.18,-8.34],["c",-.09,-4.53,-.15,-8.58,-.18,-9.03],["l",0,-.78],["l",.12,-.06],["c",.06,-.03,.18,-.09,.27,-.12],["z"],["m",3.18,11.01],["c",-.21,-.12,-.54,-.15,-.81,-.06],["c",-.54,.15,-.99,.63,-1.17,1.26],["c",-.06,.3,-.12,2.88,-.06,3.87],["c",.03,.42,.03,.81,.06,.9],["l",.03,.12],["l",.45,-.39],["c",.63,-.54,1.26,-1.17,1.56,-1.59],["c",.3,-.42,.6,-.99,.72,-1.41],["c",.18,-.69,.09,-1.47,-.18,-2.07],["c",-.15,-.3,-.33,-.51,-.6,-.63],["z"]],w:6.75,h:18.801},"accidentals.halfflat":{d:[["M",4.83,-14.07],["c",.33,-.06,.87,0,1.08,.15],["c",.06,.03,.06,.6,-.12,9.06],["c",-.09,5.55,-.15,9.06,-.18,9.12],["c",-.03,.09,-.09,.18,-.15,.27],["c",-.24,.21,-.54,.24,-.81,.06],["c",-.06,-.03,-.27,-.24,-.45,-.42],["c",-.36,-.42,-.66,-.66,-1.8,-1.44],["c",-1.23,-.84,-1.83,-1.32,-2.25,-1.77],["c",-.66,-.78,-.96,-1.56,-.93,-2.46],["c",.09,-1.41,1.11,-2.58,2.4,-2.79],["c",.3,-.06,.84,-.03,1.23,.06],["c",.54,.12,1.08,.33,1.53,.63],["c",.12,.09,.24,.15,.24,.12],["c",0,0,-.12,-8.37,-.18,-9.75],["l",0,-.66],["l",.12,-.06],["c",.06,-.03,.18,-.09,.27,-.12],["z"],["m",-1.65,10.95],["c",-.6,-.18,-1.08,.09,-1.38,.69],["c",-.27,.6,-.36,1.38,-.18,2.07],["c",.12,.42,.42,.99,.72,1.41],["c",.3,.42,.93,1.05,1.56,1.59],["l",.48,.39],["l",0,-.12],["c",.03,-.09,.03,-.48,.06,-.9],["c",.03,-.57,.03,-1.08,0,-2.22],["c",-.03,-1.62,-.03,-1.62,-.24,-2.07],["c",-.21,-.42,-.6,-.75,-1.02,-.84],["z"]],w:6.728,h:18.801},"accidentals.dblflat":{d:[["M",-.36,-14.07],["c",.33,-.06,.87,0,1.08,.15],["c",.06,.03,.06,.36,-.03,5.25],["c",-.06,2.85,-.09,5.19,-.09,5.19],["c",0,.03,.12,-.03,.24,-.12],["c",.63,-.42,1.41,-.66,2.19,-.72],["c",.81,-.03,1.47,.21,2.04,.78],["c",.57,.54,.87,1.26,.93,2.04],["c",.03,.57,-.09,1.08,-.36,1.62],["c",-.42,.81,-1.02,1.38,-2.82,2.61],["c",-1.14,.78,-1.44,1.02,-1.8,1.44],["c",-.18,.18,-.39,.39,-.45,.42],["c",-.27,.18,-.57,.15,-.81,-.06],["c",-.06,-.09,-.12,-.18,-.15,-.27],["c",-.03,-.06,-.09,-3.27,-.18,-8.34],["c",-.09,-4.53,-.15,-8.58,-.18,-9.03],["l",0,-.78],["l",.12,-.06],["c",.06,-.03,.18,-.09,.27,-.12],["z"],["m",3.18,11.01],["c",-.21,-.12,-.54,-.15,-.81,-.06],["c",-.54,.15,-.99,.63,-1.17,1.26],["c",-.06,.3,-.12,2.88,-.06,3.87],["c",.03,.42,.03,.81,.06,.9],["l",.03,.12],["l",.45,-.39],["c",.63,-.54,1.26,-1.17,1.56,-1.59],["c",.3,-.42,.6,-.99,.72,-1.41],["c",.18,-.69,.09,-1.47,-.18,-2.07],["c",-.15,-.3,-.33,-.51,-.6,-.63],["z"],["m",3,-11],["c",.33,-.06,.87,0,1.08,.15],["c",.06,.03,.06,.36,-.03,5.25],["c",-.06,2.85,-.09,5.19,-.09,5.19],["c",0,.03,.12,-.03,.24,-.12],["c",.63,-.42,1.41,-.66,2.19,-.72],["c",.81,-.03,1.47,.21,2.04,.78],["c",.57,.54,.87,1.26,.93,2.04],["c",.03,.57,-.09,1.08,-.36,1.62],["c",-.42,.81,-1.02,1.38,-2.82,2.61],["c",-1.14,.78,-1.44,1.02,-1.8,1.44],["c",-.18,.18,-.39,.39,-.45,.42],["c",-.27,.18,-.57,.15,-.81,-.06],["c",-.06,-.09,-.12,-.18,-.15,-.27],["c",-.03,-.06,-.09,-3.27,-.18,-8.34],["c",-.09,-4.53,-.15,-8.58,-.18,-9.03],["l",0,-.78],["l",.12,-.06],["c",.06,-.03,.18,-.09,.27,-.12],["z"],["m",3.18,11.01],["c",-.21,-.12,-.54,-.15,-.81,-.06],["c",-.54,.15,-.99,.63,-1.17,1.26],["c",-.06,.3,-.12,2.88,-.06,3.87],["c",.03,.42,.03,.81,.06,.9],["l",.03,.12],["l",.45,-.39],["c",.63,-.54,1.26,-1.17,1.56,-1.59],["c",.3,-.42,.6,-.99,.72,-1.41],["c",.18,-.69,.09,-1.47,-.18,-2.07],["c",-.15,-.3,-.33,-.51,-.6,-.63],["z"]],w:12.1,h:18.804},"accidentals.dblsharp":{d:[["M",-.18,-3.96],["c",.06,-.03,.12,-.06,.15,-.06],["c",.09,0,2.76,.27,2.79,.3],["c",.12,.03,.15,.12,.15,.51],["c",.06,.96,.24,1.59,.57,2.1],["c",.06,.09,.15,.21,.18,.24],["l",.09,.06],["l",.09,-.06],["c",.03,-.03,.12,-.15,.18,-.24],["c",.33,-.51,.51,-1.14,.57,-2.1],["c",0,-.39,.03,-.45,.12,-.51],["c",.03,0,.66,-.09,1.44,-.15],["c",1.47,-.15,1.5,-.15,1.56,-.03],["c",.03,.06,0,.42,-.09,1.44],["c",-.09,.72,-.15,1.35,-.15,1.38],["c",0,.03,-.03,.09,-.06,.12],["c",-.06,.06,-.12,.09,-.51,.09],["c",-1.08,.06,-1.8,.3,-2.28,.75],["l",-.12,.09],["l",.09,.09],["c",.12,.15,.39,.33,.63,.45],["c",.42,.18,.96,.27,1.68,.33],["c",.39,0,.45,.03,.51,.09],["c",.03,.03,.06,.09,.06,.12],["c",0,.03,.06,.66,.15,1.38],["c",.09,1.02,.12,1.38,.09,1.44],["c",-.06,.12,-.09,.12,-1.56,-.03],["c",-.78,-.06,-1.41,-.15,-1.44,-.15],["c",-.09,-.06,-.12,-.12,-.12,-.54],["c",-.06,-.93,-.24,-1.56,-.57,-2.07],["c",-.06,-.09,-.15,-.21,-.18,-.24],["l",-.09,-.06],["l",-.09,.06],["c",-.03,.03,-.12,.15,-.18,.24],["c",-.33,.51,-.51,1.14,-.57,2.07],["c",0,.42,-.03,.48,-.12,.54],["c",-.03,0,-.66,.09,-1.44,.15],["c",-1.47,.15,-1.5,.15,-1.56,.03],["c",-.03,-.06,0,-.42,.09,-1.44],["c",.09,-.72,.15,-1.35,.15,-1.38],["c",0,-.03,.03,-.09,.06,-.12],["c",.06,-.06,.12,-.09,.51,-.09],["c",.72,-.06,1.26,-.15,1.68,-.33],["c",.24,-.12,.51,-.3,.63,-.45],["l",.09,-.09],["l",-.12,-.09],["c",-.48,-.45,-1.2,-.69,-2.28,-.75],["c",-.39,0,-.45,-.03,-.51,-.09],["c",-.03,-.03,-.06,-.09,-.06,-.12],["c",0,-.03,-.06,-.63,-.12,-1.38],["c",-.09,-.72,-.15,-1.35,-.15,-1.38],["z"]],w:7.95,h:7.977},"dots.dot":{d:[["M",1.32,-1.68],["c",.09,-.03,.27,-.06,.39,-.06],["c",.96,0,1.74,.78,1.74,1.71],["c",0,.96,-.78,1.74,-1.71,1.74],["c",-.96,0,-1.74,-.78,-1.74,-1.71],["c",0,-.78,.54,-1.5,1.32,-1.68],["z"]],w:3.45,h:3.45},"noteheads.dbl":{d:[["M",-.69,-4.02],["c",.18,-.09,.36,-.09,.54,0],["c",.18,.09,.24,.15,.33,.3],["c",.06,.15,.06,.18,.06,1.41],["l",0,1.23],["l",.12,-.18],["c",.72,-1.26,2.64,-2.31,4.86,-2.64],["c",.81,-.15,1.11,-.15,2.13,-.15],["c",.99,0,1.29,0,2.1,.15],["c",.75,.12,1.38,.27,2.04,.54],["c",1.35,.51,2.34,1.26,2.82,2.1],["l",.12,.18],["l",0,-1.23],["c",0,-1.2,0,-1.26,.06,-1.38],["c",.09,-.18,.15,-.24,.33,-.33],["c",.18,-.09,.36,-.09,.54,0],["c",.18,.09,.24,.15,.33,.3],["l",.06,.15],["l",0,3.54],["l",0,3.54],["l",-.06,.15],["c",-.09,.18,-.15,.24,-.33,.33],["c",-.18,.09,-.36,.09,-.54,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.06,-.12,-.06,-.18,-.06,-1.38],["l",0,-1.23],["l",-.12,.18],["c",-.48,.84,-1.47,1.59,-2.82,2.1],["c",-.84,.33,-1.71,.54,-2.85,.66],["c",-.45,.06,-2.16,.06,-2.61,0],["c",-1.14,-.12,-2.01,-.33,-2.85,-.66],["c",-1.35,-.51,-2.34,-1.26,-2.82,-2.1],["l",-.12,-.18],["l",0,1.23],["c",0,1.23,0,1.26,-.06,1.38],["c",-.09,.18,-.15,.24,-.33,.33],["c",-.18,.09,-.36,.09,-.54,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["l",-.06,-.15],["l",0,-3.54],["c",0,-3.48,0,-3.54,.06,-3.66],["c",.09,-.18,.15,-.24,.33,-.33],["z"],["m",7.71,.63],["c",-.36,-.06,-.9,-.06,-1.14,0],["c",-.3,.03,-.66,.24,-.87,.42],["c",-.6,.54,-.9,1.62,-.75,2.82],["c",.12,.93,.51,1.68,1.11,2.31],["c",.75,.72,1.83,1.2,2.85,1.26],["c",1.05,.06,1.83,-.54,2.1,-1.65],["c",.21,-.9,.12,-1.95,-.24,-2.82],["c",-.36,-.81,-1.08,-1.53,-1.95,-1.95],["c",-.3,-.15,-.78,-.3,-1.11,-.39],["z"]],w:16.83,h:8.145},"noteheads.whole":{d:[["M",6.51,-4.05],["c",.51,-.03,2.01,0,2.52,.03],["c",1.41,.18,2.64,.51,3.72,1.08],["c",1.2,.63,1.95,1.41,2.19,2.31],["c",.09,.33,.09,.9,0,1.23],["c",-.24,.9,-.99,1.68,-2.19,2.31],["c",-1.08,.57,-2.28,.9,-3.75,1.08],["c",-.66,.06,-2.31,.06,-2.97,0],["c",-1.47,-.18,-2.67,-.51,-3.75,-1.08],["c",-1.2,-.63,-1.95,-1.41,-2.19,-2.31],["c",-.09,-.33,-.09,-.9,0,-1.23],["c",.24,-.9,.99,-1.68,2.19,-2.31],["c",1.2,-.63,2.61,-.99,4.23,-1.11],["z"],["m",.57,.66],["c",-.87,-.15,-1.53,0,-2.04,.51],["c",-.15,.15,-.24,.27,-.33,.48],["c",-.24,.51,-.36,1.08,-.33,1.77],["c",.03,.69,.18,1.26,.42,1.77],["c",.6,1.17,1.74,1.98,3.18,2.22],["c",1.11,.21,1.95,-.15,2.34,-.99],["c",.24,-.51,.36,-1.08,.33,-1.8],["c",-.06,-1.11,-.45,-2.04,-1.17,-2.76],["c",-.63,-.63,-1.47,-1.05,-2.4,-1.2],["z"]],w:14.985,h:8.097},"noteheads.half":{d:[["M",7.44,-4.05],["c",.06,-.03,.27,-.03,.48,-.03],["c",1.05,0,1.71,.24,2.1,.81],["c",.42,.6,.45,1.35,.18,2.4],["c",-.42,1.59,-1.14,2.73,-2.16,3.39],["c",-1.41,.93,-3.18,1.44,-5.4,1.53],["c",-1.17,.03,-1.89,-.21,-2.28,-.81],["c",-.42,-.6,-.45,-1.35,-.18,-2.4],["c",.42,-1.59,1.14,-2.73,2.16,-3.39],["c",.63,-.42,1.23,-.72,1.98,-.96],["c",.9,-.3,1.65,-.42,3.12,-.54],["z"],["m",1.29,.87],["c",-.27,-.09,-.63,-.12,-.9,-.03],["c",-.72,.24,-1.53,.69,-3.27,1.8],["c",-2.34,1.5,-3.3,2.25,-3.57,2.79],["c",-.36,.72,-.06,1.5,.66,1.77],["c",.24,.12,.69,.09,.99,0],["c",.84,-.3,1.92,-.93,4.14,-2.37],["c",1.62,-1.08,2.37,-1.71,2.61,-2.19],["c",.36,-.72,.06,-1.5,-.66,-1.77],["z"]],w:10.37,h:8.132},"noteheads.quarter":{d:[["M",6.09,-4.05],["c",.36,-.03,1.2,0,1.53,.06],["c",1.17,.24,1.89,.84,2.16,1.83],["c",.06,.18,.06,.3,.06,.66],["c",0,.45,0,.63,-.15,1.08],["c",-.66,2.04,-3.06,3.93,-5.52,4.38],["c",-.54,.09,-1.44,.09,-1.83,.03],["c",-1.23,-.27,-1.98,-.87,-2.25,-1.86],["c",-.06,-.18,-.06,-.3,-.06,-.66],["c",0,-.45,0,-.63,.15,-1.08],["c",.24,-.78,.75,-1.53,1.44,-2.22],["c",1.2,-1.2,2.85,-2.01,4.47,-2.22],["z"]],w:9.81,h:8.094},"noteheads.slash.nostem":{d:[["M",9.3,-7.77],["c",.06,-.06,.18,-.06,1.71,-.06],["l",1.65,0],["l",.09,.09],["c",.06,.06,.06,.09,.06,.15],["c",-.03,.12,-9.21,15.24,-9.3,15.33],["c",-.06,.06,-.18,.06,-1.71,.06],["l",-1.65,0],["l",-.09,-.09],["c",-.06,-.06,-.06,-.09,-.06,-.15],["c",.03,-.12,9.21,-15.24,9.3,-15.33],["z"]],w:12.81,h:15.63},"noteheads.indeterminate":{d:[["M",.78,-4.05],["c",.12,-.03,.24,-.03,.36,.03],["c",.03,.03,.93,.72,1.95,1.56],["l",1.86,1.5],["l",1.86,-1.5],["c",1.02,-.84,1.92,-1.53,1.95,-1.56],["c",.21,-.12,.33,-.09,.75,.24],["c",.3,.27,.36,.36,.36,.54],["c",0,.03,-.03,.12,-.06,.18],["c",-.03,.06,-.9,.75,-1.89,1.56],["l",-1.8,1.47],["c",0,.03,.81,.69,1.8,1.5],["c",.99,.81,1.86,1.5,1.89,1.56],["c",.03,.06,.06,.15,.06,.18],["c",0,.18,-.06,.27,-.36,.54],["c",-.42,.33,-.54,.36,-.75,.24],["c",-.03,-.03,-.93,-.72,-1.95,-1.56],["l",-1.86,-1.5],["l",-1.86,1.5],["c",-1.02,.84,-1.92,1.53,-1.95,1.56],["c",-.21,.12,-.33,.09,-.75,-.24],["c",-.3,-.27,-.36,-.36,-.36,-.54],["c",0,-.03,.03,-.12,.06,-.18],["c",.03,-.06,.9,-.75,1.89,-1.56],["l",1.8,-1.47],["c",0,-.03,-.81,-.69,-1.8,-1.5],["c",-.99,-.81,-1.86,-1.5,-1.89,-1.56],["c",-.06,-.12,-.09,-.21,-.03,-.36],["c",.03,-.09,.57,-.57,.72,-.63],["z"]],w:9.843,h:8.139},"scripts.ufermata":{d:[["M",-.75,-10.77],["c",.12,0,.45,-.03,.69,-.03],["c",2.91,-.03,5.55,1.53,7.41,4.35],["c",1.17,1.71,1.95,3.72,2.43,6.03],["c",.12,.51,.12,.57,.03,.69],["c",-.12,.21,-.48,.27,-.69,.12],["c",-.12,-.09,-.18,-.24,-.27,-.69],["c",-.78,-3.63,-3.42,-6.54,-6.78,-7.38],["c",-.78,-.21,-1.2,-.24,-2.07,-.24],["c",-.63,0,-.84,0,-1.2,.06],["c",-1.83,.27,-3.42,1.08,-4.8,2.37],["c",-1.41,1.35,-2.4,3.21,-2.85,5.19],["c",-.09,.45,-.15,.6,-.27,.69],["c",-.21,.15,-.57,.09,-.69,-.12],["c",-.09,-.12,-.09,-.18,.03,-.69],["c",.33,-1.62,.78,-3,1.47,-4.38],["c",1.77,-3.54,4.44,-5.67,7.56,-5.97],["z"],["m",.33,7.47],["c",1.38,-.3,2.58,.9,2.31,2.25],["c",-.15,.72,-.78,1.35,-1.47,1.5],["c",-1.38,.27,-2.58,-.93,-2.31,-2.31],["c",.15,-.69,.78,-1.29,1.47,-1.44],["z"]],w:19.748,h:11.289},"scripts.dfermata":{d:[["M",-9.63,-.42],["c",.15,-.09,.36,-.06,.51,.03],["c",.12,.09,.18,.24,.27,.66],["c",.78,3.66,3.42,6.57,6.78,7.41],["c",.78,.21,1.2,.24,2.07,.24],["c",.63,0,.84,0,1.2,-.06],["c",1.83,-.27,3.42,-1.08,4.8,-2.37],["c",1.41,-1.35,2.4,-3.21,2.85,-5.22],["c",.09,-.42,.15,-.57,.27,-.66],["c",.21,-.15,.57,-.09,.69,.12],["c",.09,.12,.09,.18,-.03,.69],["c",-.33,1.62,-.78,3,-1.47,4.38],["c",-1.92,3.84,-4.89,6,-8.31,6],["c",-3.42,0,-6.39,-2.16,-8.31,-6],["c",-.48,-.96,-.84,-1.92,-1.14,-2.97],["c",-.18,-.69,-.42,-1.74,-.42,-1.92],["c",0,-.12,.09,-.27,.24,-.33],["z"],["m",9.21,0],["c",1.2,-.27,2.34,.63,2.34,1.86],["c",0,.9,-.66,1.68,-1.5,1.89],["c",-1.38,.27,-2.58,-.93,-2.31,-2.31],["c",.15,-.69,.78,-1.29,1.47,-1.44],["z"]],w:19.744,h:11.274},"scripts.sforzato":{d:[["M",-6.45,-3.69],["c",.06,-.03,.15,-.06,.18,-.06],["c",.06,0,2.85,.72,6.24,1.59],["l",6.33,1.65],["c",.33,.06,.45,.21,.45,.51],["c",0,.3,-.12,.45,-.45,.51],["l",-6.33,1.65],["c",-3.39,.87,-6.18,1.59,-6.21,1.59],["c",-.21,0,-.48,-.24,-.51,-.45],["c",0,-.15,.06,-.36,.18,-.45],["c",.09,-.06,.87,-.27,3.84,-1.05],["c",2.04,-.54,3.84,-.99,4.02,-1.02],["c",.15,-.06,1.14,-.24,2.22,-.42],["c",1.05,-.18,1.92,-.36,1.92,-.36],["c",0,0,-.87,-.18,-1.92,-.36],["c",-1.08,-.18,-2.07,-.36,-2.22,-.42],["c",-.18,-.03,-1.98,-.48,-4.02,-1.02],["c",-2.97,-.78,-3.75,-.99,-3.84,-1.05],["c",-.12,-.09,-.18,-.3,-.18,-.45],["c",.03,-.15,.15,-.3,.3,-.39],["z"]],w:13.5,h:7.5},"scripts.staccato":{d:[["M",-.36,-1.47],["c",.93,-.21,1.86,.51,1.86,1.47],["c",0,.93,-.87,1.65,-1.8,1.47],["c",-.54,-.12,-1.02,-.57,-1.14,-1.08],["c",-.21,-.81,.27,-1.65,1.08,-1.86],["z"]],w:2.989,h:3.004},"scripts.tenuto":{d:[["M",-4.2,-.48],["l",.12,-.06],["l",4.08,0],["l",4.08,0],["l",.12,.06],["c",.39,.21,.39,.75,0,.96],["l",-.12,.06],["l",-4.08,0],["l",-4.08,0],["l",-.12,-.06],["c",-.39,-.21,-.39,-.75,0,-.96],["z"]],w:8.985,h:1.08},"scripts.umarcato":{d:[["M",-.15,-8.19],["c",.15,-.12,.36,-.03,.45,.15],["c",.21,.42,3.45,7.65,3.45,7.71],["c",0,.12,-.12,.27,-.21,.3],["c",-.03,.03,-.51,.03,-1.14,.03],["c",-1.05,0,-1.08,0,-1.17,-.06],["c",-.09,-.06,-.24,-.36,-1.17,-2.4],["c",-.57,-1.29,-1.05,-2.34,-1.08,-2.34],["c",0,-.03,-.51,1.02,-1.08,2.34],["c",-.93,2.07,-1.08,2.34,-1.14,2.4],["c",-.06,.03,-.15,.06,-.18,.06],["c",-.15,0,-.33,-.18,-.33,-.33],["c",0,-.06,3.24,-7.32,3.45,-7.71],["c",.03,-.06,.09,-.15,.15,-.15],["z"]],w:7.5,h:8.245},"scripts.dmarcato":{d:[["M",-3.57,.03],["c",.03,0,.57,-.03,1.17,-.03],["c",1.05,0,1.08,0,1.17,.06],["c",.09,.06,.24,.36,1.17,2.4],["c",.57,1.29,1.05,2.34,1.08,2.34],["c",0,.03,.51,-1.02,1.08,-2.34],["c",.93,-2.07,1.08,-2.34,1.14,-2.4],["c",.06,-.03,.15,-.06,.18,-.06],["c",.15,0,.33,.18,.33,.33],["c",0,.09,-3.45,7.74,-3.54,7.83],["c",-.12,.12,-.3,.12,-.42,0],["c",-.09,-.09,-3.54,-7.74,-3.54,-7.83],["c",0,-.09,.12,-.27,.18,-.3],["z"]],w:7.5,h:8.25},"scripts.stopped":{d:[["M",-.27,-4.08],["c",.18,-.09,.36,-.09,.54,0],["c",.18,.09,.24,.15,.33,.3],["l",.06,.15],["l",0,1.5],["l",0,1.47],["l",1.47,0],["l",1.5,0],["l",.15,.06],["c",.15,.09,.21,.15,.3,.33],["c",.09,.18,.09,.36,0,.54],["c",-.09,.18,-.15,.24,-.33,.33],["c",-.12,.06,-.18,.06,-1.62,.06],["l",-1.47,0],["l",0,1.47],["l",0,1.47],["l",-.06,.15],["c",-.09,.18,-.15,.24,-.33,.33],["c",-.18,.09,-.36,.09,-.54,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["l",-.06,-.15],["l",0,-1.47],["l",0,-1.47],["l",-1.47,0],["c",-1.44,0,-1.5,0,-1.62,-.06],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.09,-.18,-.09,-.36,0,-.54],["c",.09,-.18,.15,-.24,.33,-.33],["l",.15,-.06],["l",1.47,0],["l",1.47,0],["l",0,-1.47],["c",0,-1.44,0,-1.5,.06,-1.62],["c",.09,-.18,.15,-.24,.33,-.33],["z"]],w:8.295,h:8.295},"scripts.upbow":{d:[["M",-4.65,-15.54],["c",.12,-.09,.36,-.06,.48,.03],["c",.03,.03,.09,.09,.12,.15],["c",.03,.06,.66,2.13,1.41,4.62],["c",1.35,4.41,1.38,4.56,2.01,6.96],["l",.63,2.46],["l",.63,-2.46],["c",.63,-2.4,.66,-2.55,2.01,-6.96],["c",.75,-2.49,1.38,-4.56,1.41,-4.62],["c",.06,-.15,.18,-.21,.36,-.24],["c",.15,0,.3,.06,.39,.18],["c",.15,.21,.24,-.18,-2.1,7.56],["c",-1.2,3.96,-2.22,7.32,-2.25,7.41],["c",0,.12,-.06,.27,-.09,.3],["c",-.12,.21,-.6,.21,-.72,0],["c",-.03,-.03,-.09,-.18,-.09,-.3],["c",-.03,-.09,-1.05,-3.45,-2.25,-7.41],["c",-2.34,-7.74,-2.25,-7.35,-2.1,-7.56],["c",.03,-.03,.09,-.09,.15,-.12],["z"]],w:9.73,h:15.608},"scripts.downbow":{d:[["M",-5.55,-9.93],["l",.09,-.06],["l",5.46,0],["l",5.46,0],["l",.09,.06],["l",.06,.09],["l",0,4.77],["c",0,5.28,0,4.89,-.18,5.01],["c",-.18,.12,-.42,.06,-.54,-.12],["c",-.06,-.09,-.06,-.18,-.06,-2.97],["l",0,-2.85],["l",-4.83,0],["l",-4.83,0],["l",0,2.85],["c",0,2.79,0,2.88,-.06,2.97],["c",-.15,.24,-.51,.24,-.66,0],["c",-.06,-.09,-.06,-.21,-.06,-4.89],["l",0,-4.77],["z"]],w:11.22,h:9.992},"scripts.turn":{d:[["M",-4.77,-3.9],["c",.36,-.06,1.05,-.06,1.44,.03],["c",.78,.15,1.5,.51,2.34,1.14],["c",.6,.45,1.05,.87,2.22,2.01],["c",1.11,1.08,1.62,1.5,2.22,1.86],["c",.6,.36,1.32,.57,1.92,.57],["c",.9,0,1.71,-.57,1.89,-1.35],["c",.24,-.93,-.39,-1.89,-1.35,-2.1],["l",-.15,-.06],["l",-.09,.15],["c",-.03,.09,-.15,.24,-.24,.33],["c",-.72,.72,-2.04,.54,-2.49,-.36],["c",-.48,-.93,.03,-1.86,1.17,-2.19],["c",.3,-.09,1.02,-.09,1.35,0],["c",.99,.27,1.74,.87,2.25,1.83],["c",.69,1.41,.63,3,-.21,4.26],["c",-.21,.3,-.69,.81,-.99,1.02],["c",-.3,.21,-.84,.45,-1.17,.54],["c",-1.23,.36,-2.49,.15,-3.72,-.6],["c",-.75,-.48,-1.41,-1.02,-2.85,-2.46],["c",-1.11,-1.08,-1.62,-1.5,-2.22,-1.86],["c",-.6,-.36,-1.32,-.57,-1.92,-.57],["c",-.9,0,-1.71,.57,-1.89,1.35],["c",-.24,.93,.39,1.89,1.35,2.1],["l",.15,.06],["l",.09,-.15],["c",.03,-.09,.15,-.24,.24,-.33],["c",.72,-.72,2.04,-.54,2.49,.36],["c",.48,.93,-.03,1.86,-1.17,2.19],["c",-.3,.09,-1.02,.09,-1.35,0],["c",-.99,-.27,-1.74,-.87,-2.25,-1.83],["c",-.69,-1.41,-.63,-3,.21,-4.26],["c",.21,-.3,.69,-.81,.99,-1.02],["c",.48,-.33,1.11,-.57,1.74,-.66],["z"]],w:16.366,h:7.893},"scripts.trill":{d:[["M",-.51,-16.02],["c",.12,-.09,.21,-.18,.21,-.18],["l",-.81,4.02],["l",-.81,4.02],["c",.03,0,.51,-.27,1.08,-.6],["c",.6,-.3,1.14,-.63,1.26,-.66],["c",1.14,-.54,2.31,-.6,3.09,-.18],["c",.27,.15,.54,.36,.6,.51],["l",.06,.12],["l",.21,-.21],["c",.9,-.81,2.22,-.99,3.12,-.42],["c",.6,.42,.9,1.14,.78,2.07],["c",-.15,1.29,-1.05,2.31,-1.95,2.25],["c",-.48,-.03,-.78,-.3,-.96,-.81],["c",-.09,-.27,-.09,-.9,-.03,-1.2],["c",.21,-.75,.81,-1.23,1.59,-1.32],["l",.24,-.03],["l",-.09,-.12],["c",-.51,-.66,-1.62,-.63,-2.31,.03],["c",-.39,.42,-.3,.09,-1.23,4.77],["l",-.81,4.14],["c",-.03,0,-.12,-.03,-.21,-.09],["c",-.33,-.15,-.54,-.18,-.99,-.18],["c",-.42,0,-.66,.03,-1.05,.18],["c",-.12,.06,-.21,.09,-.21,.09],["c",0,-.03,.36,-1.86,.81,-4.11],["c",.9,-4.47,.87,-4.26,.69,-4.53],["c",-.21,-.36,-.66,-.51,-1.17,-.36],["c",-.15,.06,-2.22,1.14,-2.58,1.38],["c",-.12,.09,-.12,.09,-.21,.6],["l",-.09,.51],["l",.21,.24],["c",.63,.75,1.02,1.47,1.2,2.19],["c",.06,.27,.06,.36,.06,.81],["c",0,.42,0,.54,-.06,.78],["c",-.15,.54,-.33,.93,-.63,1.35],["c",-.18,.24,-.57,.63,-.81,.78],["c",-.24,.15,-.63,.36,-.84,.42],["c",-.27,.06,-.66,.06,-.87,.03],["c",-.81,-.18,-1.32,-1.05,-1.38,-2.46],["c",-.03,-.6,.03,-.99,.33,-2.46],["c",.21,-1.08,.24,-1.32,.21,-1.29],["c",-1.2,.48,-2.4,.75,-3.21,.72],["c",-.69,-.06,-1.17,-.3,-1.41,-.72],["c",-.39,-.75,-.12,-1.8,.66,-2.46],["c",.24,-.18,.69,-.42,1.02,-.51],["c",.69,-.18,1.53,-.15,2.31,.09],["c",.3,.09,.75,.3,.99,.45],["c",.12,.09,.15,.09,.15,.03],["c",.03,-.03,.33,-1.59,.72,-3.45],["c",.36,-1.86,.66,-3.42,.69,-3.45],["c",0,-.03,.03,-.03,.21,.03],["c",.21,.06,.27,.06,.48,.06],["c",.42,-.03,.78,-.18,1.26,-.48],["c",.15,-.12,.36,-.27,.48,-.39],["z"],["m",-5.73,7.68],["c",-.27,-.03,-.96,-.06,-1.2,-.03],["c",-.81,.12,-1.35,.57,-1.5,1.2],["c",-.18,.66,.12,1.14,.75,1.29],["c",.66,.12,1.92,-.12,3.18,-.66],["l",.33,-.15],["l",.09,-.39],["c",.06,-.21,.09,-.42,.09,-.45],["c",0,-.03,-.45,-.3,-.75,-.45],["c",-.27,-.15,-.66,-.27,-.99,-.36],["z"],["m",4.29,3.63],["c",-.24,-.39,-.51,-.75,-.51,-.69],["c",-.06,.12,-.39,1.92,-.45,2.28],["c",-.09,.54,-.12,1.14,-.06,1.38],["c",.06,.42,.21,.6,.51,.57],["c",.39,-.06,.75,-.48,.93,-1.14],["c",.09,-.33,.09,-1.05,0,-1.38],["c",-.09,-.39,-.24,-.69,-.42,-1.02],["z"]],w:17.963,h:16.49},"scripts.segno":{d:[["M",-3.72,-11.22],["c",.78,-.09,1.59,.03,2.31,.42],["c",1.2,.6,2.01,1.71,2.31,3.09],["c",.09,.42,.09,1.2,.03,1.5],["c",-.15,.45,-.39,.81,-.66,.93],["c",-.33,.18,-.84,.21,-1.23,.15],["c",-.81,-.18,-1.32,-.93,-1.26,-1.89],["c",.03,-.36,.09,-.57,.24,-.9],["c",.15,-.33,.45,-.6,.72,-.75],["c",.12,-.06,.18,-.09,.18,-.12],["c",0,-.03,-.03,-.15,-.09,-.24],["c",-.18,-.45,-.54,-.87,-.96,-1.08],["c",-1.11,-.57,-2.34,-.18,-2.88,.9],["c",-.24,.51,-.33,1.11,-.24,1.83],["c",.27,1.92,1.5,3.54,3.93,5.13],["c",.48,.33,1.26,.78,1.29,.78],["c",.03,0,1.35,-2.19,2.94,-4.89],["l",2.88,-4.89],["l",.84,0],["l",.87,0],["l",-.03,.06],["c",-.15,.21,-6.15,10.41,-6.15,10.44],["c",0,0,.21,.15,.48,.27],["c",2.61,1.47,4.35,3.03,5.13,4.65],["c",1.14,2.34,.51,5.07,-1.44,6.39],["c",-.66,.42,-1.32,.63,-2.13,.69],["c",-2.01,.09,-3.81,-1.41,-4.26,-3.54],["c",-.09,-.42,-.09,-1.2,-.03,-1.5],["c",.15,-.45,.39,-.81,.66,-.93],["c",.33,-.18,.84,-.21,1.23,-.15],["c",.81,.18,1.32,.93,1.26,1.89],["c",-.03,.36,-.09,.57,-.24,.9],["c",-.15,.33,-.45,.6,-.72,.75],["c",-.12,.06,-.18,.09,-.18,.12],["c",0,.03,.03,.15,.09,.24],["c",.18,.45,.54,.87,.96,1.08],["c",1.11,.57,2.34,.18,2.88,-.9],["c",.24,-.51,.33,-1.11,.24,-1.83],["c",-.27,-1.92,-1.5,-3.54,-3.93,-5.13],["c",-.48,-.33,-1.26,-.78,-1.29,-.78],["c",-.03,0,-1.35,2.19,-2.91,4.89],["l",-2.88,4.89],["l",-.87,0],["l",-.87,0],["l",.03,-.06],["c",.15,-.21,6.15,-10.41,6.15,-10.44],["c",0,0,-.21,-.15,-.48,-.3],["c",-2.61,-1.44,-4.35,-3,-5.13,-4.62],["c",-.9,-1.89,-.72,-4.02,.48,-5.52],["c",.69,-.84,1.68,-1.41,2.73,-1.53],["z"],["m",8.76,9.09],["c",.03,-.03,.15,-.03,.27,-.03],["c",.33,.03,.57,.18,.72,.48],["c",.09,.18,.09,.57,0,.75],["c",-.09,.18,-.21,.3,-.36,.39],["c",-.15,.06,-.21,.06,-.39,.06],["c",-.21,0,-.27,0,-.39,-.06],["c",-.3,-.15,-.48,-.45,-.48,-.75],["c",0,-.39,.24,-.72,.63,-.84],["z"],["m",-10.53,2.61],["c",.03,-.03,.15,-.03,.27,-.03],["c",.33,.03,.57,.18,.72,.48],["c",.09,.18,.09,.57,0,.75],["c",-.09,.18,-.21,.3,-.36,.39],["c",-.15,.06,-.21,.06,-.39,.06],["c",-.21,0,-.27,0,-.39,-.06],["c",-.3,-.15,-.48,-.45,-.48,-.75],["c",0,-.39,.24,-.72,.63,-.84],["z"]],w:15,h:22.504},"scripts.coda":{d:[["M",-.21,-10.47],["c",.18,-.12,.42,-.06,.54,.12],["c",.06,.09,.06,.18,.06,1.5],["l",0,1.38],["l",.18,0],["c",.39,.06,.96,.24,1.38,.48],["c",1.68,.93,2.82,3.24,3.03,6.12],["c",.03,.24,.03,.45,.03,.45],["c",0,.03,.6,.03,1.35,.03],["c",1.5,0,1.47,0,1.59,.18],["c",.09,.12,.09,.3,0,.42],["c",-.12,.18,-.09,.18,-1.59,.18],["c",-.75,0,-1.35,0,-1.35,.03],["c",0,0,0,.21,-.03,.42],["c",-.24,3.15,-1.53,5.58,-3.45,6.36],["c",-.27,.12,-.72,.24,-.96,.27],["l",-.18,0],["l",0,1.38],["c",0,1.32,0,1.41,-.06,1.5],["c",-.15,.24,-.51,.24,-.66,0],["c",-.06,-.09,-.06,-.18,-.06,-1.5],["l",0,-1.38],["l",-.18,0],["c",-.39,-.06,-.96,-.24,-1.38,-.48],["c",-1.68,-.93,-2.82,-3.24,-3.03,-6.15],["c",-.03,-.21,-.03,-.42,-.03,-.42],["c",0,-.03,-.6,-.03,-1.35,-.03],["c",-1.5,0,-1.47,0,-1.59,-.18],["c",-.09,-.12,-.09,-.3,0,-.42],["c",.12,-.18,.09,-.18,1.59,-.18],["c",.75,0,1.35,0,1.35,-.03],["c",0,0,0,-.21,.03,-.45],["c",.24,-3.12,1.53,-5.55,3.45,-6.33],["c",.27,-.12,.72,-.24,.96,-.27],["l",.18,0],["l",0,-1.38],["c",0,-1.53,0,-1.5,.18,-1.62],["z"],["m",-.18,6.93],["c",0,-2.97,0,-3.15,-.06,-3.15],["c",-.09,0,-.51,.15,-.66,.21],["c",-.87,.51,-1.38,1.62,-1.56,3.51],["c",-.06,.54,-.12,1.59,-.12,2.16],["l",0,.42],["l",1.2,0],["l",1.2,0],["l",0,-3.15],["z"],["m",1.17,-3.06],["c",-.09,-.03,-.21,-.06,-.27,-.09],["l",-.12,0],["l",0,3.15],["l",0,3.15],["l",1.2,0],["l",1.2,0],["l",0,-.81],["c",-.06,-2.4,-.33,-3.69,-.93,-4.59],["c",-.27,-.39,-.66,-.69,-1.08,-.81],["z"],["m",-1.17,10.14],["l",0,-3.15],["l",-1.2,0],["l",-1.2,0],["l",0,.81],["c",.03,.96,.06,1.47,.15,2.13],["c",.24,2.04,.96,3.12,2.13,3.36],["l",.12,0],["l",0,-3.15],["z"],["m",3.18,-2.34],["l",0,-.81],["l",-1.2,0],["l",-1.2,0],["l",0,3.15],["l",0,3.15],["l",.12,0],["c",1.17,-.24,1.89,-1.32,2.13,-3.36],["c",.09,-.66,.12,-1.17,.15,-2.13],["z"]],w:16.035,h:21.062},"scripts.comma":{d:[["M",1.14,-4.62],["c",.3,-.12,.69,-.03,.93,.15],["c",.12,.12,.36,.45,.51,.78],["c",.9,1.77,.54,4.05,-1.08,6.75],["c",-.36,.63,-.87,1.38,-.96,1.44],["c",-.18,.12,-.42,.06,-.54,-.12],["c",-.09,-.18,-.09,-.3,.12,-.6],["c",.96,-1.44,1.44,-2.97,1.38,-4.35],["c",-.06,-.93,-.3,-1.68,-.78,-2.46],["c",-.27,-.39,-.33,-.63,-.24,-.96],["c",.09,-.27,.36,-.54,.66,-.63],["z"]],w:3.042,h:9.237},"scripts.roll":{d:[["M",1.95,-6],["c",.21,-.09,.36,-.09,.57,0],["c",.39,.15,.63,.39,1.47,1.35],["c",.66,.75,.78,.87,1.08,1.05],["c",.75,.45,1.65,.42,2.4,-.06],["c",.12,-.09,.27,-.27,.54,-.6],["c",.42,-.54,.51,-.63,.69,-.63],["c",.09,0,.3,.12,.36,.21],["c",.09,.12,.12,.3,.03,.42],["c",-.06,.12,-3.15,3.9,-3.3,4.08],["c",-.06,.06,-.18,.12,-.27,.18],["c",-.27,.12,-.6,.06,-.99,-.27],["c",-.27,-.21,-.42,-.39,-1.08,-1.14],["c",-.63,-.72,-.81,-.9,-1.17,-1.08],["c",-.36,-.18,-.57,-.21,-.99,-.21],["c",-.39,0,-.63,.03,-.93,.18],["c",-.36,.15,-.51,.27,-.9,.81],["c",-.24,.27,-.45,.51,-.48,.54],["c",-.12,.09,-.27,.06,-.39,0],["c",-.24,-.15,-.33,-.39,-.21,-.6],["c",.09,-.12,3.18,-3.87,3.33,-4.02],["c",.06,-.06,.18,-.15,.24,-.21],["z"]],w:10.817,h:6.125},"scripts.prall":{d:[["M",-4.38,-3.69],["c",.06,-.03,.18,-.06,.24,-.06],["c",.3,0,.27,-.03,1.89,1.95],["l",1.53,1.83],["c",.03,0,.57,-.84,1.23,-1.83],["c",1.14,-1.68,1.23,-1.83,1.35,-1.89],["c",.06,-.03,.18,-.06,.24,-.06],["c",.3,0,.27,-.03,1.89,1.95],["l",1.53,1.83],["l",.48,-.69],["c",.51,-.78,.54,-.84,.69,-.9],["c",.42,-.18,.87,.15,.81,.6],["c",-.03,.12,-.3,.51,-1.5,2.37],["c",-1.38,2.07,-1.5,2.22,-1.62,2.28],["c",-.06,.03,-.18,.06,-.24,.06],["c",-.3,0,-.27,.03,-1.89,-1.95],["l",-1.53,-1.83],["c",-.03,0,-.57,.84,-1.23,1.83],["c",-1.14,1.68,-1.23,1.83,-1.35,1.89],["c",-.06,.03,-.18,.06,-.24,.06],["c",-.3,0,-.27,.03,-1.89,-1.95],["l",-1.53,-1.83],["l",-.48,.69],["c",-.51,.78,-.54,.84,-.69,.9],["c",-.42,.18,-.87,-.15,-.81,-.6],["c",.03,-.12,.3,-.51,1.5,-2.37],["c",1.38,-2.07,1.5,-2.22,1.62,-2.28],["z"]],w:15.011,h:7.5},"scripts.arpeggio":{d:[["M",1.5,0],["c",1.5,2,1.5,3,1.5,3],["s",0,1,-2,1.5],["s",-.5,3,1,5.5],["l",1.5,0],["s",-1.75,-2,-1.9,-3.25],["s",2.15,-.6,2.95,-1.6],["s",.45,-1,.5,-1.25],["s",0,-1,-2,-3.9],["l",-1.5,0],["z"]],w:5,h:10},"scripts.mordent":{d:[["M",-.21,-4.95],["c",.27,-.15,.63,0,.75,.27],["c",.06,.12,.06,.24,.06,1.44],["l",0,1.29],["l",.57,-.84],["c",.51,-.75,.57,-.84,.69,-.9],["c",.06,-.03,.18,-.06,.24,-.06],["c",.3,0,.27,-.03,1.89,1.95],["l",1.53,1.83],["l",.48,-.69],["c",.51,-.78,.54,-.84,.69,-.9],["c",.42,-.18,.87,.15,.81,.6],["c",-.03,.12,-.3,.51,-1.5,2.37],["c",-1.38,2.07,-1.5,2.22,-1.62,2.28],["c",-.06,.03,-.18,.06,-.24,.06],["c",-.3,0,-.27,.03,-1.83,-1.89],["c",-.81,-.99,-1.5,-1.8,-1.53,-1.86],["c",-.06,-.03,-.06,-.03,-.12,.03],["c",-.06,.06,-.06,.15,-.06,2.28],["c",0,1.95,0,2.25,-.06,2.34],["c",-.18,.45,-.81,.48,-1.05,.03],["c",-.03,-.06,-.06,-.24,-.06,-1.41],["l",0,-1.35],["l",-.57,.84],["c",-.54,.78,-.6,.87,-.72,.93],["c",-.06,.03,-.18,.06,-.24,.06],["c",-.3,0,-.27,.03,-1.89,-1.95],["l",-1.53,-1.83],["l",-.48,.69],["c",-.51,.78,-.54,.84,-.69,.9],["c",-.42,.18,-.87,-.15,-.81,-.6],["c",.03,-.12,.3,-.51,1.5,-2.37],["c",1.38,-2.07,1.5,-2.22,1.62,-2.28],["c",.06,-.03,.18,-.06,.24,-.06],["c",.3,0,.27,-.03,1.89,1.95],["l",1.53,1.83],["c",.03,0,.06,-.06,.09,-.09],["c",.06,-.12,.06,-.15,.06,-2.28],["c",0,-1.92,0,-2.22,.06,-2.31],["c",.06,-.15,.15,-.24,.3,-.3],["z"]],w:15.011,h:10.012},"flags.u8th":{d:[["M",-.42,3.75],["l",0,-3.75],["l",.21,0],["l",.21,0],["l",0,.18],["c",0,.3,.06,.84,.12,1.23],["c",.24,1.53,.9,3.12,2.13,5.16],["l",.99,1.59],["c",.87,1.44,1.38,2.34,1.77,3.09],["c",.81,1.68,1.2,3.06,1.26,4.53],["c",.03,1.53,-.21,3.27,-.75,5.01],["c",-.21,.69,-.51,1.5,-.6,1.59],["c",-.09,.12,-.27,.21,-.42,.21],["c",-.15,0,-.42,-.12,-.51,-.21],["c",-.15,-.18,-.18,-.42,-.09,-.66],["c",.15,-.33,.45,-1.2,.57,-1.62],["c",.42,-1.38,.6,-2.58,.6,-3.9],["c",0,-.66,0,-.81,-.06,-1.11],["c",-.39,-2.07,-1.8,-4.26,-4.59,-7.14],["l",-.42,-.45],["l",-.21,0],["l",-.21,0],["l",0,-3.75],["z"]],w:6.692,h:22.59},"flags.u16th":{d:[["M",-.42,7.5],["l",0,-7.5],["l",.21,0],["l",.21,0],["l",0,.39],["c",.06,1.08,.39,2.19,.99,3.39],["c",.45,.9,.87,1.59,1.95,3.12],["c",1.29,1.86,1.77,2.64,2.22,3.57],["c",.45,.93,.72,1.8,.87,2.64],["c",.06,.51,.06,1.5,0,1.92],["c",-.12,.6,-.3,1.2,-.54,1.71],["l",-.09,.24],["l",.18,.45],["c",.51,1.2,.72,2.22,.69,3.42],["c",-.06,1.53,-.39,3.03,-.99,4.53],["c",-.3,.75,-.36,.81,-.57,.9],["c",-.15,.09,-.33,.06,-.48,0],["c",-.18,-.09,-.27,-.18,-.33,-.33],["c",-.09,-.18,-.06,-.3,.12,-.75],["c",.66,-1.41,1.02,-2.88,1.08,-4.32],["c",0,-.6,-.03,-1.05,-.18,-1.59],["c",-.3,-1.2,-.99,-2.4,-2.25,-3.87],["c",-.42,-.48,-1.53,-1.62,-2.19,-2.22],["l",-.45,-.42],["l",-.03,1.11],["l",0,1.11],["l",-.21,0],["l",-.21,0],["l",0,-7.5],["z"],["m",1.65,.09],["c",-.3,-.3,-.69,-.72,-.9,-.87],["l",-.33,-.33],["l",0,.15],["c",0,.3,.06,.81,.15,1.26],["c",.27,1.29,.87,2.61,2.04,4.29],["c",.15,.24,.6,.87,.96,1.38],["l",1.08,1.53],["l",.42,.63],["c",.03,0,.12,-.36,.21,-.72],["c",.06,-.33,.06,-1.2,0,-1.62],["c",-.33,-1.71,-1.44,-3.48,-3.63,-5.7],["z"]],w:6.693,h:26.337},"flags.u32nd":{d:[["M",-.42,11.25],["l",0,-11.25],["l",.21,0],["l",.21,0],["l",0,.36],["c",.09,1.68,.69,3.27,2.07,5.46],["l",.87,1.35],["c",1.02,1.62,1.47,2.37,1.86,3.18],["c",.48,1.02,.78,1.92,.93,2.88],["c",.06,.48,.06,1.5,0,1.89],["c",-.09,.42,-.21,.87,-.36,1.26],["l",-.12,.3],["l",.15,.39],["c",.69,1.56,.84,2.88,.54,4.38],["c",-.09,.45,-.27,1.08,-.45,1.47],["l",-.12,.24],["l",.18,.36],["c",.33,.72,.57,1.56,.69,2.34],["c",.12,1.02,-.06,2.52,-.42,3.84],["c",-.27,.93,-.75,2.13,-.93,2.31],["c",-.18,.15,-.45,.18,-.66,.09],["c",-.18,-.09,-.27,-.18,-.33,-.33],["c",-.09,-.18,-.06,-.3,.06,-.6],["c",.21,-.36,.42,-.9,.57,-1.38],["c",.51,-1.41,.69,-3.06,.48,-4.08],["c",-.15,-.81,-.57,-1.68,-1.2,-2.55],["c",-.72,-.99,-1.83,-2.13,-3.3,-3.33],["l",-.48,-.42],["l",-.03,1.53],["l",0,1.56],["l",-.21,0],["l",-.21,0],["l",0,-11.25],["z"],["m",1.26,-3.96],["c",-.27,-.3,-.54,-.6,-.66,-.72],["l",-.18,-.21],["l",0,.42],["c",.06,.87,.24,1.74,.66,2.67],["c",.36,.87,.96,1.86,1.92,3.18],["c",.21,.33,.63,.87,.87,1.23],["c",.27,.39,.6,.84,.75,1.08],["l",.27,.39],["l",.03,-.12],["c",.12,-.45,.15,-1.05,.09,-1.59],["c",-.27,-1.86,-1.38,-3.78,-3.75,-6.33],["z"],["m",-.27,6.09],["c",-.27,-.21,-.48,-.42,-.51,-.45],["c",-.06,-.03,-.06,-.03,-.06,.21],["c",0,.9,.3,2.04,.81,3.09],["c",.48,1.02,.96,1.77,2.37,3.63],["c",.6,.78,1.05,1.44,1.29,1.77],["c",.06,.12,.15,.21,.15,.18],["c",.03,-.03,.18,-.57,.24,-.87],["c",.06,-.45,.06,-1.32,-.03,-1.74],["c",-.09,-.48,-.24,-.9,-.51,-1.44],["c",-.66,-1.35,-1.83,-2.7,-3.75,-4.38],["z"]],w:6.697,h:32.145},"flags.u64th":{d:[["M",-.42,15],["l",0,-15],["l",.21,0],["l",.21,0],["l",0,.36],["c",.06,1.2,.39,2.37,1.02,3.66],["c",.39,.81,.84,1.56,1.8,3.09],["c",.81,1.26,1.05,1.68,1.35,2.22],["c",.87,1.5,1.35,2.79,1.56,4.08],["c",.06,.54,.06,1.56,-.03,2.04],["c",-.09,.48,-.21,.99,-.36,1.35],["l",-.12,.27],["l",.12,.27],["c",.09,.15,.21,.45,.27,.66],["c",.69,1.89,.63,3.66,-.18,5.46],["l",-.18,.39],["l",.15,.33],["c",.3,.66,.51,1.44,.63,2.1],["c",.06,.48,.06,1.35,0,1.71],["c",-.15,.57,-.42,1.2,-.78,1.68],["l",-.21,.27],["l",.18,.33],["c",.57,1.05,.93,2.13,1.02,3.18],["c",.06,.72,0,1.83,-.21,2.79],["c",-.18,1.02,-.63,2.34,-1.02,3.09],["c",-.15,.33,-.48,.45,-.78,.3],["c",-.18,-.09,-.27,-.18,-.33,-.33],["c",-.09,-.18,-.06,-.3,.03,-.54],["c",.75,-1.5,1.23,-3.45,1.17,-4.89],["c",-.06,-1.02,-.42,-2.01,-1.17,-3.15],["c",-.48,-.72,-1.02,-1.35,-1.89,-2.22],["c",-.57,-.57,-1.56,-1.5,-1.92,-1.77],["l",-.12,-.09],["l",0,1.68],["l",0,1.68],["l",-.21,0],["l",-.21,0],["l",0,-15],["z"],["m",.93,-8.07],["c",-.27,-.3,-.48,-.54,-.51,-.54],["c",0,0,0,.69,.03,1.02],["c",.15,1.47,.75,2.94,2.04,4.83],["l",1.08,1.53],["c",.39,.57,.84,1.2,.99,1.44],["c",.15,.24,.3,.45,.3,.45],["c",0,0,.03,-.09,.06,-.21],["c",.36,-1.59,-.15,-3.33,-1.47,-5.4],["c",-.63,-.93,-1.35,-1.83,-2.52,-3.12],["z"],["m",.06,6.72],["c",-.24,-.21,-.48,-.42,-.51,-.45],["l",-.06,-.06],["l",0,.33],["c",0,1.2,.3,2.34,.93,3.6],["c",.45,.9,.96,1.68,2.25,3.51],["c",.39,.54,.84,1.17,1.02,1.44],["c",.21,.33,.33,.51,.33,.48],["c",.06,-.09,.21,-.63,.3,-.99],["c",.06,-.33,.06,-.45,.06,-.96],["c",0,-.6,-.03,-.84,-.18,-1.35],["c",-.3,-1.08,-1.02,-2.28,-2.13,-3.57],["c",-.39,-.45,-1.44,-1.47,-2.01,-1.98],["z"],["m",0,6.72],["c",-.24,-.21,-.48,-.39,-.51,-.42],["l",-.06,-.06],["l",0,.33],["c",0,1.41,.45,2.82,1.38,4.35],["c",.42,.72,.72,1.14,1.86,2.73],["c",.36,.45,.75,.99,.87,1.2],["c",.15,.21,.3,.36,.3,.36],["c",.06,0,.3,-.48,.39,-.75],["c",.09,-.36,.12,-.63,.12,-1.05],["c",-.06,-1.05,-.45,-2.04,-1.2,-3.18],["c",-.57,-.87,-1.11,-1.53,-2.07,-2.49],["c",-.36,-.33,-.84,-.78,-1.08,-1.02],["z"]],w:6.682,h:39.694},"flags.d8th":{d:[["M",5.67,-21.63],["c",.24,-.12,.54,-.06,.69,.15],["c",.06,.06,.21,.36,.39,.66],["c",.84,1.77,1.26,3.36,1.32,5.1],["c",.03,1.29,-.21,2.37,-.81,3.63],["c",-.6,1.23,-1.26,2.13,-3.21,4.38],["c",-1.35,1.53,-1.86,2.19,-2.4,2.97],["c",-.63,.93,-1.11,1.92,-1.38,2.79],["c",-.15,.54,-.27,1.35,-.27,1.8],["l",0,.15],["l",-.21,0],["l",-.21,0],["l",0,-3.75],["l",0,-3.75],["l",.21,0],["l",.21,0],["l",.48,-.3],["c",1.83,-1.11,3.12,-2.1,4.17,-3.12],["c",.78,-.81,1.32,-1.53,1.71,-2.31],["c",.45,-.93,.6,-1.74,.51,-2.88],["c",-.12,-1.56,-.63,-3.18,-1.47,-4.68],["c",-.12,-.21,-.15,-.33,-.06,-.51],["c",.06,-.15,.15,-.24,.33,-.33],["z"]],w:8.492,h:21.691},"flags.ugrace":{d:[["M",6.03,6.93],["c",.15,-.09,.33,-.06,.51,0],["c",.15,.09,.21,.15,.3,.33],["c",.09,.18,.06,.39,-.03,.54],["c",-.06,.15,-10.89,8.88,-11.07,8.97],["c",-.15,.09,-.33,.06,-.48,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.09,-.18,-.06,-.39,.03,-.54],["c",.06,-.15,10.89,-8.88,11.07,-8.97],["z"]],w:12.019,h:9.954},"flags.dgrace":{d:[["M",-6.06,-15.93],["c",.18,-.09,.33,-.12,.48,-.06],["c",.18,.09,14.01,8.04,14.1,8.1],["c",.12,.12,.18,.33,.18,.51],["c",-.03,.21,-.15,.39,-.36,.48],["c",-.18,.09,-.33,.12,-.48,.06],["c",-.18,-.09,-14.01,-8.04,-14.1,-8.1],["c",-.12,-.12,-.18,-.33,-.18,-.51],["c",.03,-.21,.15,-.39,.36,-.48],["z"]],w:15.12,h:9.212},"flags.d16th":{d:[["M",6.84,-22.53],["c",.27,-.12,.57,-.06,.72,.15],["c",.15,.15,.33,.87,.45,1.56],["c",.06,.33,.06,1.35,0,1.65],["c",-.06,.33,-.15,.78,-.27,1.11],["c",-.12,.33,-.45,.96,-.66,1.32],["l",-.18,.27],["l",.09,.18],["c",.48,1.02,.72,2.25,.69,3.3],["c",-.06,1.23,-.42,2.28,-1.26,3.45],["c",-.57,.87,-.99,1.32,-3,3.39],["c",-1.56,1.56,-2.22,2.4,-2.76,3.45],["c",-.42,.84,-.66,1.8,-.66,2.55],["l",0,.15],["l",-.21,0],["l",-.21,0],["l",0,-7.5],["l",0,-7.5],["l",.21,0],["l",.21,0],["l",0,1.14],["l",0,1.11],["l",.27,-.15],["c",1.11,-.57,1.77,-.99,2.52,-1.47],["c",2.37,-1.56,3.69,-3.15,4.05,-4.83],["c",.03,-.18,.03,-.39,.03,-.78],["c",0,-.6,-.03,-.93,-.24,-1.5],["c",-.06,-.18,-.12,-.39,-.15,-.45],["c",-.03,-.24,.12,-.48,.36,-.6],["z"],["m",-.63,7.5],["c",-.06,-.18,-.15,-.36,-.15,-.36],["c",-.03,0,-.03,.03,-.06,.06],["c",-.06,.12,-.96,1.02,-1.95,1.98],["c",-.63,.57,-1.26,1.17,-1.44,1.35],["c",-1.53,1.62,-2.28,2.85,-2.55,4.32],["c",-.03,.18,-.03,.54,-.06,.99],["l",0,.69],["l",.18,-.09],["c",.93,-.54,2.1,-1.29,2.82,-1.83],["c",.69,-.51,1.02,-.81,1.53,-1.29],["c",1.86,-1.89,2.37,-3.66,1.68,-5.82],["z"]],w:8.475,h:22.591},"flags.d32nd":{d:[["M",6.84,-29.13],["c",.27,-.12,.57,-.06,.72,.15],["c",.12,.12,.27,.63,.36,1.11],["c",.33,1.59,.06,3.06,-.81,4.47],["l",-.18,.27],["l",.09,.15],["c",.12,.24,.33,.69,.45,1.05],["c",.63,1.83,.45,3.57,-.57,5.22],["l",-.18,.3],["l",.15,.27],["c",.42,.87,.6,1.71,.57,2.61],["c",-.06,1.29,-.48,2.46,-1.35,3.78],["c",-.54,.81,-.93,1.29,-2.46,3],["c",-.51,.54,-1.05,1.17,-1.26,1.41],["c",-1.56,1.86,-2.25,3.36,-2.37,5.01],["l",0,.33],["l",-.21,0],["l",-.21,0],["l",0,-11.25],["l",0,-11.25],["l",.21,0],["l",.21,0],["l",0,1.35],["l",.03,1.35],["l",.78,-.39],["c",1.38,-.69,2.34,-1.26,3.24,-1.92],["c",1.38,-1.02,2.28,-2.13,2.64,-3.21],["c",.15,-.48,.18,-.72,.18,-1.29],["c",0,-.57,-.06,-.9,-.24,-1.47],["c",-.06,-.18,-.12,-.39,-.15,-.45],["c",-.03,-.24,.12,-.48,.36,-.6],["z"],["m",-.63,7.2],["c",-.09,-.18,-.12,-.21,-.12,-.15],["c",-.03,.09,-1.02,1.08,-2.04,2.04],["c",-1.17,1.08,-1.65,1.56,-2.07,2.04],["c",-.84,.96,-1.38,1.86,-1.68,2.76],["c",-.21,.57,-.27,.99,-.3,1.65],["l",0,.54],["l",.66,-.33],["c",3.57,-1.86,5.49,-3.69,5.94,-5.7],["c",.06,-.39,.06,-1.2,-.03,-1.65],["c",-.06,-.39,-.24,-.9,-.36,-1.2],["z"],["m",-.06,7.2],["c",-.06,-.15,-.12,-.33,-.15,-.45],["l",-.06,-.18],["l",-.18,.21],["l",-1.83,1.83],["c",-.87,.9,-1.77,1.8,-1.95,2.01],["c",-1.08,1.29,-1.62,2.31,-1.89,3.51],["c",-.06,.3,-.06,.51,-.09,.93],["l",0,.57],["l",.09,-.06],["c",.75,-.45,1.89,-1.26,2.52,-1.74],["c",.81,-.66,1.74,-1.53,2.22,-2.16],["c",1.26,-1.53,1.68,-3.06,1.32,-4.47],["z"]],w:8.385,h:29.191},"flags.d64th":{d:[["M",7.08,-32.88],["c",.3,-.12,.66,-.03,.78,.24],["c",.18,.33,.27,2.1,.15,2.64],["c",-.09,.39,-.21,.78,-.39,1.08],["l",-.15,.3],["l",.09,.27],["c",.03,.12,.09,.45,.12,.69],["c",.27,1.44,.18,2.55,-.3,3.6],["l",-.12,.33],["l",.06,.42],["c",.27,1.35,.33,2.82,.21,3.63],["c",-.12,.6,-.3,1.23,-.57,1.8],["l",-.15,.27],["l",.03,.42],["c",.06,1.02,.06,2.7,.03,3.06],["c",-.15,1.47,-.66,2.76,-1.74,4.41],["c",-.45,.69,-.75,1.11,-1.74,2.37],["c",-1.05,1.38,-1.5,1.98,-1.95,2.73],["c",-.93,1.5,-1.38,2.82,-1.44,4.2],["l",0,.42],["l",-.21,0],["l",-.21,0],["l",0,-15],["l",0,-15],["l",.21,0],["l",.21,0],["l",0,1.86],["l",0,1.89],["c",0,0,.21,-.03,.45,-.09],["c",2.22,-.39,4.08,-1.11,5.19,-2.01],["c",.63,-.54,1.02,-1.14,1.2,-1.8],["c",.06,-.3,.06,-1.14,-.03,-1.65],["c",-.03,-.18,-.06,-.39,-.09,-.48],["c",-.03,-.24,.12,-.48,.36,-.6],["z"],["m",-.45,6.15],["c",-.03,-.18,-.06,-.42,-.06,-.54],["l",-.03,-.18],["l",-.33,.3],["c",-.42,.36,-.87,.72,-1.68,1.29],["c",-1.98,1.38,-2.25,1.59,-2.85,2.16],["c",-.75,.69,-1.23,1.44,-1.47,2.19],["c",-.15,.45,-.18,.63,-.21,1.35],["l",0,.66],["l",.39,-.18],["c",1.83,-.9,3.45,-1.95,4.47,-2.91],["c",.93,-.9,1.53,-1.83,1.74,-2.82],["c",.06,-.33,.06,-.87,.03,-1.32],["z"],["m",-.27,4.86],["c",-.03,-.21,-.06,-.36,-.06,-.36],["c",0,-.03,-.12,.09,-.24,.24],["c",-.39,.48,-.99,1.08,-2.16,2.19],["c",-1.47,1.38,-1.92,1.83,-2.46,2.49],["c",-.66,.87,-1.08,1.74,-1.29,2.58],["c",-.09,.42,-.15,.87,-.15,1.44],["l",0,.54],["l",.48,-.33],["c",1.5,-1.02,2.58,-1.89,3.51,-2.82],["c",1.47,-1.47,2.25,-2.85,2.4,-4.26],["c",.03,-.39,.03,-1.17,-.03,-1.71],["z"],["m",-.66,7.68],["c",.03,-.15,.03,-.6,.03,-.99],["l",0,-.72],["l",-.27,.33],["l",-1.74,1.98],["c",-1.77,1.92,-2.43,2.76,-2.97,3.9],["c",-.51,1.02,-.72,1.77,-.75,2.91],["c",0,.63,0,.63,.06,.6],["c",.03,-.03,.3,-.27,.63,-.54],["c",.66,-.6,1.86,-1.8,2.31,-2.31],["c",1.65,-1.89,2.52,-3.54,2.7,-5.16],["z"]],w:8.485,h:32.932},"clefs.C":{d:[["M",.06,-14.94],["l",.09,-.06],["l",1.92,0],["l",1.92,0],["l",.09,.06],["l",.06,.09],["l",0,14.85],["l",0,14.82],["l",-.06,.09],["l",-.09,.06],["l",-1.92,0],["l",-1.92,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-14.82],["l",0,-14.85],["z"],["m",5.37,0],["c",.09,-.06,.09,-.06,.57,-.06],["c",.45,0,.45,0,.54,.06],["l",.06,.09],["l",0,7.14],["l",0,7.11],["l",.09,-.06],["c",.18,-.18,.72,-.84,.96,-1.2],["c",.3,-.45,.66,-1.17,.84,-1.65],["c",.36,-.9,.57,-1.83,.6,-2.79],["c",.03,-.48,.03,-.54,.09,-.63],["c",.12,-.18,.36,-.21,.54,-.12],["c",.18,.09,.21,.15,.24,.66],["c",.06,.87,.21,1.56,.57,2.22],["c",.51,1.02,1.26,1.68,2.22,1.92],["c",.21,.06,.33,.06,.78,.06],["c",.45,0,.57,0,.84,-.06],["c",.45,-.12,.81,-.33,1.08,-.6],["c",.57,-.57,.87,-1.41,.99,-2.88],["c",.06,-.54,.06,-3,0,-3.57],["c",-.21,-2.58,-.84,-3.87,-2.16,-4.5],["c",-.48,-.21,-1.17,-.36,-1.77,-.36],["c",-.69,0,-1.29,.27,-1.5,.72],["c",-.06,.15,-.06,.21,-.06,.42],["c",0,.24,0,.3,.06,.45],["c",.12,.24,.24,.39,.63,.66],["c",.42,.3,.57,.48,.69,.72],["c",.06,.15,.06,.21,.06,.48],["c",0,.39,-.03,.63,-.21,.96],["c",-.3,.6,-.87,1.08,-1.5,1.26],["c",-.27,.06,-.87,.06,-1.14,0],["c",-.78,-.24,-1.44,-.87,-1.65,-1.68],["c",-.12,-.42,-.09,-1.17,.09,-1.71],["c",.51,-1.65,1.98,-2.82,3.81,-3.09],["c",.84,-.09,2.46,.03,3.51,.27],["c",2.22,.57,3.69,1.8,4.44,3.75],["c",.36,.93,.57,2.13,.57,3.36],["c",0,1.44,-.48,2.73,-1.38,3.81],["c",-1.26,1.5,-3.27,2.43,-5.28,2.43],["c",-.48,0,-.51,0,-.75,-.09],["c",-.15,-.03,-.48,-.21,-.78,-.36],["c",-.69,-.36,-.87,-.42,-1.26,-.42],["c",-.27,0,-.3,0,-.51,.09],["c",-.57,.3,-.81,.9,-.81,2.1],["c",0,1.23,.24,1.83,.81,2.13],["c",.21,.09,.24,.09,.51,.09],["c",.39,0,.57,-.06,1.26,-.42],["c",.3,-.15,.63,-.33,.78,-.36],["c",.24,-.09,.27,-.09,.75,-.09],["c",2.01,0,4.02,.93,5.28,2.4],["c",.9,1.11,1.38,2.4,1.38,3.84],["c",0,1.5,-.3,2.88,-.84,3.96],["c",-.78,1.59,-2.19,2.64,-4.17,3.15],["c",-1.05,.24,-2.67,.36,-3.51,.27],["c",-1.83,-.27,-3.3,-1.44,-3.81,-3.09],["c",-.18,-.54,-.21,-1.29,-.09,-1.74],["c",.15,-.6,.63,-1.2,1.23,-1.47],["c",.36,-.18,.57,-.21,.99,-.21],["c",.42,0,.63,.03,1.02,.21],["c",.42,.21,.84,.63,1.05,1.05],["c",.18,.36,.21,.6,.21,.96],["c",0,.3,0,.36,-.06,.51],["c",-.12,.24,-.27,.42,-.69,.72],["c",-.57,.42,-.69,.63,-.69,1.08],["c",0,.24,0,.3,.06,.45],["c",.12,.21,.3,.39,.57,.54],["c",.42,.18,.87,.21,1.53,.15],["c",1.08,-.15,1.8,-.57,2.34,-1.32],["c",.54,-.75,.84,-1.83,.99,-3.51],["c",.06,-.57,.06,-3.03,0,-3.57],["c",-.12,-1.47,-.42,-2.31,-.99,-2.88],["c",-.27,-.27,-.63,-.48,-1.08,-.6],["c",-.27,-.06,-.39,-.06,-.84,-.06],["c",-.45,0,-.57,0,-.78,.06],["c",-1.14,.27,-2.01,1.17,-2.46,2.49],["c",-.21,.57,-.3,.99,-.33,1.65],["c",-.03,.51,-.06,.57,-.24,.66],["c",-.12,.06,-.27,.06,-.39,0],["c",-.21,-.09,-.21,-.15,-.24,-.75],["c",-.09,-1.92,-.78,-3.72,-2.01,-5.19],["c",-.18,-.21,-.36,-.42,-.39,-.45],["l",-.09,-.06],["l",0,7.11],["l",0,7.14],["l",-.06,.09],["c",-.09,.06,-.09,.06,-.54,.06],["c",-.48,0,-.48,0,-.57,-.06],["l",-.06,-.09],["l",0,-14.82],["l",0,-14.85],["z"]],w:20.31,h:29.97},"clefs.F":{d:[["M",6.3,-7.8],["c",.36,-.03,1.65,0,2.13,.03],["c",3.6,.42,6.03,2.1,6.93,4.86],["c",.27,.84,.36,1.5,.36,2.58],["c",0,.9,-.03,1.35,-.18,2.16],["c",-.78,3.78,-3.54,7.08,-8.37,9.96],["c",-1.74,1.05,-3.87,2.13,-6.18,3.12],["c",-.39,.18,-.75,.33,-.81,.36],["c",-.06,.03,-.15,.06,-.18,.06],["c",-.15,0,-.33,-.18,-.33,-.33],["c",0,-.15,.06,-.21,.51,-.48],["c",3,-1.77,5.13,-3.21,6.84,-4.74],["c",.51,-.45,1.59,-1.5,1.95,-1.95],["c",1.89,-2.19,2.88,-4.32,3.15,-6.78],["c",.06,-.42,.06,-1.77,0,-2.19],["c",-.24,-2.01,-.93,-3.63,-2.04,-4.71],["c",-.63,-.63,-1.29,-1.02,-2.07,-1.2],["c",-1.62,-.39,-3.36,.15,-4.56,1.44],["c",-.54,.6,-1.05,1.47,-1.32,2.22],["l",-.09,.21],["l",.24,-.12],["c",.39,-.21,.63,-.24,1.11,-.24],["c",.3,0,.45,0,.66,.06],["c",1.92,.48,2.85,2.55,1.95,4.38],["c",-.45,.99,-1.41,1.62,-2.46,1.71],["c",-1.47,.09,-2.91,-.87,-3.39,-2.25],["c",-.18,-.57,-.21,-1.32,-.03,-2.28],["c",.39,-2.25,1.83,-4.2,3.81,-5.19],["c",.69,-.36,1.59,-.6,2.37,-.69],["z"],["m",11.58,2.52],["c",.84,-.21,1.71,.3,1.89,1.14],["c",.3,1.17,-.72,2.19,-1.89,1.89],["c",-.99,-.21,-1.5,-1.32,-1.02,-2.25],["c",.18,-.39,.6,-.69,1.02,-.78],["z"],["m",0,7.5],["c",.84,-.21,1.71,.3,1.89,1.14],["c",.21,.87,-.3,1.71,-1.14,1.89],["c",-.87,.21,-1.71,-.3,-1.89,-1.14],["c",-.21,-.84,.3,-1.71,1.14,-1.89],["z"]],w:20.153,h:23.142},"clefs.G":{d:[["M",9.69,-37.41],["c",.09,-.09,.24,-.06,.36,0],["c",.12,.09,.57,.6,.96,1.11],["c",1.77,2.34,3.21,5.85,3.57,8.73],["c",.21,1.56,.03,3.27,-.45,4.86],["c",-.69,2.31,-1.92,4.47,-4.23,7.44],["c",-.3,.39,-.57,.72,-.6,.75],["c",-.03,.06,0,.15,.18,.78],["c",.54,1.68,1.38,4.44,1.68,5.49],["l",.09,.42],["l",.39,0],["c",1.47,.09,2.76,.51,3.96,1.29],["c",1.83,1.23,3.06,3.21,3.39,5.52],["c",.09,.45,.12,1.29,.06,1.74],["c",-.09,1.02,-.33,1.83,-.75,2.73],["c",-.84,1.71,-2.28,3.06,-4.02,3.72],["l",-.33,.12],["l",.03,1.26],["c",0,1.74,-.06,3.63,-.21,4.62],["c",-.45,3.06,-2.19,5.49,-4.47,6.21],["c",-.57,.18,-.9,.21,-1.59,.21],["c",-.69,0,-1.02,-.03,-1.65,-.21],["c",-1.14,-.27,-2.13,-.84,-2.94,-1.65],["c",-.99,-.99,-1.56,-2.16,-1.71,-3.54],["c",-.09,-.81,.06,-1.53,.45,-2.13],["c",.63,-.99,1.83,-1.56,3,-1.53],["c",1.5,.09,2.64,1.32,2.73,2.94],["c",.06,1.47,-.93,2.7,-2.37,2.97],["c",-.45,.06,-.84,.03,-1.29,-.09],["l",-.21,-.09],["l",.09,.12],["c",.39,.54,.78,.93,1.32,1.26],["c",1.35,.87,3.06,1.02,4.35,.36],["c",1.44,-.72,2.52,-2.28,2.97,-4.35],["c",.15,-.66,.24,-1.5,.3,-3.03],["c",.03,-.84,.03,-2.94,0,-3],["c",-.03,0,-.18,0,-.36,.03],["c",-.66,.12,-.99,.12,-1.83,.12],["c",-1.05,0,-1.71,-.06,-2.61,-.3],["c",-4.02,-.99,-7.11,-4.35,-7.8,-8.46],["c",-.12,-.66,-.12,-.99,-.12,-1.83],["c",0,-.84,0,-1.14,.15,-1.92],["c",.36,-2.28,1.41,-4.62,3.3,-7.29],["l",2.79,-3.6],["c",.54,-.66,.96,-1.2,.96,-1.23],["c",0,-.03,-.09,-.33,-.18,-.69],["c",-.96,-3.21,-1.41,-5.28,-1.59,-7.68],["c",-.12,-1.38,-.15,-3.09,-.06,-3.96],["c",.33,-2.67,1.38,-5.07,3.12,-7.08],["c",.36,-.42,.99,-1.05,1.17,-1.14],["z"],["m",2.01,4.71],["c",-.15,-.3,-.3,-.54,-.3,-.54],["c",-.03,0,-.18,.09,-.3,.21],["c",-2.4,1.74,-3.87,4.2,-4.26,7.11],["c",-.06,.54,-.06,1.41,-.03,1.89],["c",.09,1.29,.48,3.12,1.08,5.22],["c",.15,.42,.24,.78,.24,.81],["c",0,.03,.84,-1.11,1.23,-1.68],["c",1.89,-2.73,2.88,-5.07,3.15,-7.53],["c",.09,-.57,.12,-1.74,.06,-2.37],["c",-.09,-1.23,-.27,-1.92,-.87,-3.12],["z"],["m",-2.94,20.7],["c",-.21,-.72,-.39,-1.32,-.42,-1.32],["c",0,0,-1.2,1.47,-1.86,2.37],["c",-2.79,3.63,-4.02,6.3,-4.35,9.3],["c",-.03,.21,-.03,.69,-.03,1.08],["c",0,.69,0,.75,.06,1.11],["c",.12,.54,.27,.99,.51,1.47],["c",.69,1.38,1.83,2.55,3.42,3.42],["c",.96,.54,2.07,.9,3.21,1.08],["c",.78,.12,2.04,.12,2.94,-.03],["c",.51,-.06,.45,-.03,.42,-.3],["c",-.24,-3.33,-.72,-6.33,-1.62,-10.08],["c",-.09,-.39,-.18,-.75,-.18,-.78],["c",-.03,-.03,-.42,0,-.81,.09],["c",-.9,.18,-1.65,.57,-2.22,1.14],["c",-.72,.72,-1.08,1.65,-1.05,2.64],["c",.06,.96,.48,1.83,1.23,2.58],["c",.36,.36,.72,.63,1.17,.9],["c",.33,.18,.36,.21,.42,.33],["c",.18,.42,-.18,.9,-.6,.87],["c",-.18,-.03,-.84,-.36,-1.26,-.63],["c",-.78,-.51,-1.38,-1.11,-1.86,-1.83],["c",-1.77,-2.7,-.99,-6.42,1.71,-8.19],["c",.3,-.21,.81,-.48,1.17,-.63],["c",.3,-.09,1.02,-.3,1.14,-.3],["c",.06,0,.09,0,.09,-.03],["c",.03,-.03,-.51,-1.92,-1.23,-4.26],["z"],["m",3.78,7.41],["c",-.18,-.03,-.36,-.06,-.39,-.06],["c",-.03,0,0,.21,.18,1.02],["c",.75,3.18,1.26,6.3,1.5,9.09],["c",.06,.72,0,.69,.51,.42],["c",.78,-.36,1.44,-.96,1.98,-1.77],["c",1.08,-1.62,1.2,-3.69,.3,-5.55],["c",-.81,-1.62,-2.31,-2.79,-4.08,-3.15],["z"]],w:19.051,h:57.057},"clefs.perc":{d:[["M",5.07,-7.44],["l",.09,-.06],["l",1.53,0],["l",1.53,0],["l",.09,.06],["l",.06,.09],["l",0,7.35],["l",0,7.32],["l",-.06,.09],["l",-.09,.06],["l",-1.53,0],["l",-1.53,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-7.32],["l",0,-7.35],["z"],["m",6.63,0],["l",.09,-.06],["l",1.53,0],["l",1.53,0],["l",.09,.06],["l",.06,.09],["l",0,7.35],["l",0,7.32],["l",-.06,.09],["l",-.09,.06],["l",-1.53,0],["l",-1.53,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-7.32],["l",0,-7.35],["z"]],w:21,h:14.97},"tab.big":{d:[["M",20.16,-21.66],["c",.24,-.09,.66,.09,.78,.36],["c",.09,.21,.09,.24,-.18,.54],["c",-.78,.81,-1.86,1.44,-2.94,1.71],["c",-.87,.24,-1.71,.24,-2.55,.03],["l",-.06,-.03],["l",-.18,.99],["c",-.33,1.98,-.75,4.26,-.96,5.04],["c",-.42,1.65,-1.26,3.18,-2.28,4.14],["c",-.57,.57,-1.17,.9,-1.86,1.08],["c",-.18,.06,-.33,.06,-.66,.06],["c",-.54,0,-.78,-.03,-1.23,-.27],["c",-.39,-.18,-.66,-.39,-1.38,-.99],["c",-.3,-.24,-.66,-.51,-.75,-.57],["c",-.21,-.15,-.27,-.24,-.24,-.45],["c",.06,-.27,.36,-.6,.6,-.66],["c",.18,-.03,.33,.06,.9,.57],["c",.48,.42,.72,.57,.93,.69],["c",.66,.33,1.38,.21,1.95,-.36],["c",.63,-.6,1.05,-1.62,1.23,-3],["c",.03,-.18,.09,-.66,.09,-1.11],["c",.09,-1.56,.33,-3.81,.57,-5.49],["c",.06,-.33,.09,-.63,.09,-.63],["c",-.03,-.03,-.81,-.12,-1.02,-.12],["c",-.57,0,-1.32,.12,-1.8,.33],["c",-.87,.3,-1.35,.78,-1.5,1.41],["c",-.18,.63,.09,1.26,.66,1.65],["c",.12,.06,.15,.12,.18,.24],["c",.09,.27,.06,.57,-.09,.75],["c",-.03,.06,-.12,.09,-.27,.15],["c",-.72,.21,-1.44,.15,-2.1,-.18],["c",-.54,-.27,-.96,-.66,-1.2,-1.14],["c",-.39,-.75,-.33,-1.74,.15,-2.52],["c",.27,-.42,.84,-.93,1.41,-1.23],["c",1.17,-.57,2.88,-.9,4.8,-.9],["c",.69,0,.78,0,1.08,.06],["c",.45,.09,1.11,.3,2.07,.6],["c",1.47,.48,1.83,.57,2.55,.54],["c",1.02,-.06,2.04,-.45,2.94,-1.11],["c",.12,-.09,.24,-.18,.27,-.18],["z"],["m",-5.88,13.05],["c",.21,-.03,.81,0,1.08,.06],["c",.48,.12,.9,.42,.99,.69],["c",.03,.09,.03,.15,0,.27],["c",0,.09,-.03,.57,-.06,1.08],["c",-.09,2.19,-.24,5.76,-.39,8.28],["c",-.06,1.53,-.06,1.77,.03,2.01],["c",.09,.18,.15,.24,.3,.3],["c",.24,.12,.54,.06,1.23,-.27],["c",.57,-.27,.66,-.3,.75,-.24],["c",.09,.06,.18,.3,.18,.45],["c",0,.33,-.15,.51,-.45,.63],["c",-.12,.03,-.39,.15,-.6,.27],["c",-1.17,.6,-1.38,.69,-1.8,.72],["c",-.45,.03,-.78,-.09,-1.08,-.39],["c",-.39,-.42,-.66,-1.2,-1.02,-3.12],["c",-.24,-1.23,-.36,-2.07,-.54,-3.75],["l",0,-.18],["l",-.36,.45],["c",-.6,.75,-1.32,1.59,-1.95,2.25],["c",-.15,.18,-.27,.3,-.27,.33],["c",0,0,.06,.09,.15,.18],["c",.24,.33,.6,.57,1.05,.69],["c",.18,.06,.3,.06,.69,.06],["l",.48,.03],["l",.06,.12],["c",.15,.27,.03,.72,-.21,.9],["c",-.18,.12,-.93,.27,-1.41,.27],["c",-.84,0,-1.59,-.3,-1.98,-.84],["l",-.12,-.15],["l",-.45,.42],["c",-.99,.87,-1.53,1.32,-2.16,1.74],["c",-.78,.51,-1.5,.84,-2.1,.93],["c",-.69,.12,-1.2,.03,-1.95,-.42],["c",-.21,-.12,-.51,-.27,-.66,-.36],["c",-.24,-.12,-.3,-.18,-.33,-.24],["c",-.12,-.27,.15,-.78,.45,-.93],["c",.24,-.12,.33,-.09,.9,.18],["c",.6,.3,.84,.39,1.2,.36],["c",.87,-.09,1.77,-.69,3.24,-2.31],["c",2.67,-2.85,4.59,-5.94,5.7,-9.15],["c",.15,-.45,.24,-.63,.42,-.81],["c",.21,-.24,.6,-.45,.99,-.51],["z"],["m",-3.99,16.05],["c",.18,0,.69,-.03,1.17,0],["c",3.27,.03,5.37,.75,6,2.07],["c",.45,.99,.12,2.4,-.81,3.42],["c",-.24,.27,-.57,.57,-.84,.75],["c",-.09,.06,-.18,.09,-.18,.12],["c",0,0,.18,.03,.42,.09],["c",1.23,.3,2.01,.81,2.37,1.59],["c",.27,.54,.3,1.32,.09,2.1],["c",-.12,.36,-.45,1.05,-.69,1.35],["c",-.87,1.17,-2.1,1.92,-3.54,2.25],["c",-.36,.06,-.48,.06,-.96,.06],["c",-.45,0,-.66,0,-.84,-.03],["c",-.84,-.18,-1.47,-.51,-2.07,-1.11],["c",-.33,-.33,-.45,-.51,-.45,-.63],["c",0,-.06,.03,-.15,.06,-.24],["c",.18,-.33,.69,-.6,.93,-.48],["c",.03,.03,.15,.12,.27,.24],["c",.39,.42,.99,.57,1.62,.45],["c",1.05,-.21,1.98,-1.02,2.31,-2.01],["c",.48,-1.53,-.48,-2.55,-2.58,-2.67],["c",-.21,0,-.36,-.03,-.42,-.06],["c",-.15,-.09,-.21,-.51,-.06,-.78],["c",.12,-.27,.24,-.33,.6,-.36],["c",.57,-.06,1.11,-.42,1.5,-.99],["c",.48,-.72,.54,-1.59,.18,-2.31],["c",-.12,-.21,-.45,-.54,-.69,-.69],["c",-.33,-.21,-.93,-.45,-1.35,-.51],["l",-.12,-.03],["l",-.06,.48],["c",-.54,2.94,-1.14,6.24,-1.29,6.75],["c",-.33,1.35,-.93,2.61,-1.65,3.6],["c",-.3,.36,-.81,.9,-1.14,1.14],["c",-.3,.24,-.84,.48,-1.14,.57],["c",-.33,.09,-.96,.09,-1.26,.03],["c",-.45,-.12,-.87,-.39,-1.53,-.96],["c",-.24,-.15,-.51,-.39,-.63,-.48],["c",-.3,-.21,-.33,-.33,-.21,-.63],["c",.12,-.18,.27,-.36,.42,-.45],["c",.27,-.12,.36,-.09,.87,.33],["c",.78,.6,1.08,.75,1.65,.72],["c",.45,-.03,.81,-.21,1.17,-.54],["c",.87,-.9,1.38,-2.85,1.38,-5.37],["c",0,-.6,.03,-1.11,.12,-2.04],["c",.06,-.69,.24,-2.01,.33,-2.58],["c",.06,-.24,.06,-.42,.06,-.42],["c",0,0,-.12,.03,-.21,.09],["c",-1.44,.57,-2.16,1.65,-1.74,2.55],["c",.09,.15,.18,.24,.27,.33],["c",.24,.21,.3,.27,.33,.39],["c",.06,.24,0,.63,-.15,.78],["c",-.09,.12,-.54,.21,-.96,.24],["c",-1.02,.03,-2.01,-.48,-2.43,-1.32],["c",-.21,-.45,-.27,-.9,-.15,-1.44],["c",.06,-.27,.21,-.66,.39,-.93],["c",.87,-1.29,3,-2.22,5.64,-2.43],["z"]],w:19.643,h:43.325},"tab.tiny":{d:[["M",16.02,-17.25],["c",.12,-.09,.15,-.09,.27,-.09],["c",.21,.03,.51,.3,.51,.45],["c",0,.06,-.12,.18,-.3,.36],["c",-1.11,1.08,-2.55,1.59,-3.84,1.41],["c",-.15,-.03,-.33,-.06,-.39,-.09],["c",-.06,-.03,-.09,-.03,-.12,-.03],["c",0,0,-.06,.42,-.15,.93],["c",-.33,2.01,-.66,3.69,-.84,4.26],["c",-.42,1.41,-1.23,2.67,-2.16,3.33],["c",-.27,.18,-.75,.42,-.99,.48],["c",-.3,.09,-.72,.09,-1.02,.06],["c",-.45,-.09,-.84,-.33,-1.53,-.9],["c",-.21,-.18,-.51,-.39,-.63,-.48],["c",-.27,-.21,-.3,-.24,-.3,-.36],["c",0,-.12,.09,-.36,.18,-.45],["c",.09,-.09,.27,-.18,.36,-.18],["c",.12,0,.3,.12,.66,.45],["c",.57,.51,.87,.69,1.23,.72],["c",.93,.06,1.68,-.78,1.98,-2.37],["c",.09,-.39,.15,-.75,.18,-1.53],["c",.06,-.99,.24,-2.79,.42,-4.05],["c",.03,-.3,.06,-.57,.06,-.6],["c",0,-.06,-.03,-.09,-.15,-.12],["c",-.9,-.18,-2.13,.06,-2.76,.57],["c",-.36,.3,-.51,.6,-.51,1.02],["c",0,.45,.15,.75,.48,.99],["c",.06,.06,.15,.18,.18,.24],["c",.12,.24,.03,.63,-.15,.69],["c",-.24,.12,-.6,.15,-.9,.15],["c",-.36,-.03,-.57,-.09,-.87,-.24],["c",-.78,-.36,-1.23,-1.11,-1.2,-1.92],["c",.12,-1.53,1.74,-2.49,4.62,-2.7],["c",1.2,-.09,1.47,-.03,3.33,.57],["c",.9,.3,1.14,.36,1.56,.39],["c",.45,0,.93,-.06,1.38,-.21],["c",.51,-.18,.81,-.33,1.41,-.75],["z"],["m",-4.68,10.38],["c",.39,-.06,.84,0,1.2,.15],["c",.24,.12,.36,.21,.45,.36],["l",.09,.09],["l",-.06,1.41],["c",-.09,2.19,-.18,3.96,-.27,5.49],["c",-.03,.78,-.06,1.59,-.06,1.86],["c",0,.42,0,.48,.06,.57],["c",.06,.18,.18,.24,.36,.27],["c",.18,0,.39,-.06,.84,-.27],["c",.45,-.21,.54,-.24,.63,-.18],["c",.12,.12,.15,.54,.03,.69],["c",-.03,.03,-.15,.12,-.27,.18],["c",-.15,.03,-.3,.12,-.36,.15],["c",-.87,.45,-1.02,.51,-1.26,.57],["c",-.33,.09,-.6,.06,-.84,-.06],["c",-.42,-.18,-.63,-.6,-.87,-1.44],["c",-.3,-1.23,-.57,-2.97,-.66,-4.08],["c",0,-.18,-.03,-.3,-.03,-.33],["l",-.06,.06],["c",-.18,.27,-1.11,1.38,-1.68,2.01],["l",-.33,.33],["l",.06,.09],["c",.06,.15,.27,.33,.48,.42],["c",.27,.18,.51,.24,.96,.27],["l",.39,0],["l",.03,.12],["c",.12,.21,.03,.57,-.15,.69],["c",-.03,.03,-.21,.09,-.36,.15],["c",-.27,.06,-.39,.06,-.75,.06],["c",-.48,0,-.75,-.03,-1.08,-.21],["c",-.21,-.12,-.51,-.36,-.57,-.48],["l",-.03,-.09],["l",-.39,.36],["c",-1.47,1.35,-2.49,1.98,-3.42,2.13],["c",-.54,.09,-.96,-.03,-1.62,-.39],["c",-.21,-.15,-.45,-.27,-.54,-.3],["c",-.18,-.09,-.21,-.21,-.12,-.45],["c",.06,-.27,.33,-.48,.54,-.48],["c",.03,0,.27,.09,.48,.21],["c",.48,.24,.69,.27,.99,.27],["c",.6,-.06,1.17,-.42,2.1,-1.35],["c",2.22,-2.22,4.02,-4.98,4.95,-7.59],["c",.21,-.57,.3,-.78,.48,-.93],["c",.15,-.15,.42,-.27,.66,-.33],["z"],["m",-3.06,12.84],["c",.27,-.03,1.68,0,2.01,.03],["c",1.92,.18,3.15,.69,3.63,1.5],["c",.18,.33,.24,.51,.21,.93],["c",0,.45,-.06,.72,-.24,1.11],["c",-.24,.51,-.69,1.02,-1.17,1.35],["c",-.21,.15,-.21,.15,-.12,.18],["c",.72,.15,1.11,.3,1.5,.57],["c",.39,.24,.63,.57,.75,.96],["c",.09,.3,.09,.96,0,1.29],["c",-.15,.57,-.39,1.05,-.78,1.5],["c",-.66,.75,-1.62,1.32,-2.61,1.53],["c",-.27,.06,-.42,.06,-.84,.06],["c",-.48,0,-.57,0,-.81,-.06],["c",-.6,-.18,-1.05,-.42,-1.47,-.81],["c",-.36,-.39,-.42,-.51,-.3,-.75],["c",.12,-.21,.39,-.39,.6,-.39],["c",.09,0,.15,.03,.33,.18],["c",.12,.12,.27,.24,.36,.27],["c",.96,.48,2.46,-.33,2.82,-1.5],["c",.24,-.81,-.03,-1.44,-.69,-1.77],["c",-.39,-.21,-1.02,-.33,-1.53,-.33],["c",-.18,0,-.21,0,-.27,-.09],["c",-.06,-.09,-.06,-.3,-.03,-.48],["c",.06,-.18,.18,-.36,.33,-.36],["c",.39,-.06,.51,-.09,.72,-.18],["c",.69,-.36,1.11,-1.23,.99,-2.01],["c",-.09,-.51,-.42,-.9,-.93,-1.17],["c",-.24,-.12,-.6,-.27,-.87,-.3],["c",-.09,-.03,-.09,-.03,-.12,.12],["c",0,.09,-.21,1.11,-.42,2.25],["c",-.66,3.75,-.72,3.99,-1.26,5.07],["c",-.9,1.89,-2.25,2.85,-3.48,2.61],["c",-.39,-.09,-.69,-.27,-1.38,-.84],["c",-.63,-.51,-.63,-.48,-.63,-.6],["c",0,-.18,.18,-.48,.39,-.57],["c",.21,-.12,.3,-.09,.81,.33],["c",.15,.15,.39,.3,.54,.36],["c",.18,.12,.27,.12,.48,.15],["c",.99,.06,1.71,-.78,2.04,-2.46],["c",.12,-.66,.18,-1.14,.21,-2.22],["c",.03,-1.23,.12,-2.25,.36,-3.63],["c",.03,-.24,.06,-.45,.06,-.48],["c",-.06,-.03,-.66,.27,-.9,.42],["c",-.06,.06,-.21,.18,-.33,.3],["c",-.57,.57,-.6,1.35,-.06,1.74],["c",.18,.12,.24,.24,.21,.51],["c",-.03,.3,-.15,.42,-.57,.48],["c",-1.11,.24,-2.22,-.42,-2.43,-1.38],["c",-.09,-.45,.03,-1.02,.3,-1.47],["c",.18,-.24,.6,-.63,.9,-.84],["c",.9,-.6,2.28,-1.02,3.69,-1.11],["z"]],w:15.709,h:34.656},"timesig.common":{d:[["M",6.66,-7.83],["c",.72,-.06,1.41,-.03,1.98,.09],["c",1.2,.27,2.34,.96,3.09,1.92],["c",.63,.81,1.08,1.86,1.14,2.73],["c",.06,1.02,-.51,1.92,-1.44,2.22],["c",-.24,.09,-.3,.09,-.63,.09],["c",-.33,0,-.42,0,-.63,-.06],["c",-.66,-.24,-1.14,-.63,-1.41,-1.2],["c",-.15,-.3,-.21,-.51,-.24,-.9],["c",-.06,-1.08,.57,-2.04,1.56,-2.37],["c",.18,-.06,.27,-.06,.63,-.06],["l",.45,0],["c",.06,.03,.09,.03,.09,0],["c",0,0,-.09,-.12,-.24,-.27],["c",-1.02,-1.11,-2.55,-1.68,-4.08,-1.5],["c",-1.29,.15,-2.04,.69,-2.4,1.74],["c",-.36,.93,-.42,1.89,-.42,5.37],["c",0,2.97,.06,3.96,.24,4.77],["c",.24,1.08,.63,1.68,1.41,2.07],["c",.81,.39,2.16,.45,3.18,.09],["c",1.29,-.45,2.37,-1.53,3.03,-2.97],["c",.15,-.33,.33,-.87,.39,-1.17],["c",.09,-.24,.15,-.36,.3,-.39],["c",.21,-.03,.42,.15,.39,.36],["c",-.06,.39,-.42,1.38,-.69,1.89],["c",-.96,1.8,-2.49,2.94,-4.23,3.18],["c",-.99,.12,-2.58,-.06,-3.63,-.45],["c",-.96,-.36,-1.71,-.84,-2.4,-1.5],["c",-1.11,-1.11,-1.8,-2.61,-2.04,-4.56],["c",-.06,-.6,-.06,-2.01,0,-2.61],["c",.24,-1.95,.9,-3.45,2.01,-4.56],["c",.69,-.66,1.44,-1.11,2.37,-1.47],["c",.63,-.24,1.47,-.42,2.22,-.48],["z"]],w:13.038,h:15.689},"timesig.cut":{d:[["M",6.24,-10.44],["c",.09,-.06,.09,-.06,.48,-.06],["c",.36,0,.36,0,.45,.06],["l",.06,.09],["l",0,1.23],["l",0,1.26],["l",.27,0],["c",1.26,0,2.49,.45,3.48,1.29],["c",1.05,.87,1.8,2.28,1.89,3.48],["c",.06,1.02,-.51,1.92,-1.44,2.22],["c",-.24,.09,-.3,.09,-.63,.09],["c",-.33,0,-.42,0,-.63,-.06],["c",-.66,-.24,-1.14,-.63,-1.41,-1.2],["c",-.15,-.3,-.21,-.51,-.24,-.9],["c",-.06,-1.08,.57,-2.04,1.56,-2.37],["c",.18,-.06,.27,-.06,.63,-.06],["l",.45,0],["c",.06,.03,.09,.03,.09,0],["c",0,-.03,-.45,-.51,-.66,-.69],["c",-.87,-.69,-1.83,-1.05,-2.94,-1.11],["l",-.42,0],["l",0,7.17],["l",0,7.14],["l",.42,0],["c",.69,-.03,1.23,-.18,1.86,-.51],["c",1.05,-.51,1.89,-1.47,2.46,-2.7],["c",.15,-.33,.33,-.87,.39,-1.17],["c",.09,-.24,.15,-.36,.3,-.39],["c",.21,-.03,.42,.15,.39,.36],["c",-.03,.24,-.21,.78,-.39,1.2],["c",-.96,2.37,-2.94,3.9,-5.13,3.9],["l",-.3,0],["l",0,1.26],["l",0,1.23],["l",-.06,.09],["c",-.09,.06,-.09,.06,-.45,.06],["c",-.39,0,-.39,0,-.48,-.06],["l",-.06,-.09],["l",0,-1.29],["l",0,-1.29],["l",-.21,-.03],["c",-1.23,-.21,-2.31,-.63,-3.21,-1.29],["c",-.15,-.09,-.45,-.36,-.66,-.57],["c",-1.11,-1.11,-1.8,-2.61,-2.04,-4.56],["c",-.06,-.6,-.06,-2.01,0,-2.61],["c",.24,-1.95,.93,-3.45,2.04,-4.59],["c",.42,-.39,.78,-.66,1.26,-.93],["c",.75,-.45,1.65,-.75,2.61,-.9],["l",.21,-.03],["l",0,-1.29],["l",0,-1.29],["z"],["m",-.06,10.44],["c",0,-5.58,0,-6.99,-.03,-6.99],["c",-.15,0,-.63,.27,-.87,.45],["c",-.45,.36,-.75,.93,-.93,1.77],["c",-.18,.81,-.24,1.8,-.24,4.74],["c",0,2.97,.06,3.96,.24,4.77],["c",.24,1.08,.66,1.68,1.41,2.07],["c",.12,.06,.3,.12,.33,.15],["l",.09,0],["l",0,-6.96],["z"]],w:13.038,h:20.97},"timesig.imperfectum":{d:[["M",13,-5],["a",8,8,0,1,0,0,10]],w:13.038,h:20.97},"timesig.imperfectum2":{d:[["M",13,-5],["a",8,8,0,1,0,0,10]],w:13.038,h:20.97},"timesig.perfectum":{d:[["M",13,-5],["a",8,8,0,1,0,0,10]],w:13.038,h:20.97},"timesig.perfectum2":{d:[["M",13,-5],["a",8,8,0,1,0,0,10]],w:13.038,h:20.97},f:{d:[["M",9.93,-14.28],["c",1.53,-.18,2.88,.45,3.12,1.5],["c",.12,.51,0,1.32,-.27,1.86],["c",-.15,.3,-.42,.57,-.63,.69],["c",-.69,.36,-1.56,.03,-1.83,-.69],["c",-.09,-.24,-.09,-.69,0,-.87],["c",.06,-.12,.21,-.24,.45,-.42],["c",.42,-.24,.57,-.45,.6,-.72],["c",.03,-.33,-.09,-.39,-.63,-.42],["c",-.3,0,-.45,0,-.6,.03],["c",-.81,.21,-1.35,.93,-1.74,2.46],["c",-.06,.27,-.48,2.25,-.48,2.31],["c",0,.03,.39,.03,.9,.03],["c",.72,0,.9,0,.99,.06],["c",.42,.15,.45,.72,.03,.9],["c",-.12,.06,-.24,.06,-1.17,.06],["l",-1.05,0],["l",-.78,2.55],["c",-.45,1.41,-.87,2.79,-.96,3.06],["c",-.87,2.37,-2.37,4.74,-3.78,5.91],["c",-1.05,.9,-2.04,1.23,-3.09,1.08],["c",-1.11,-.18,-1.89,-.78,-2.04,-1.59],["c",-.12,-.66,.15,-1.71,.54,-2.19],["c",.69,-.75,1.86,-.54,2.22,.39],["c",.06,.15,.09,.27,.09,.48],["c",0,.24,-.03,.27,-.12,.42],["c",-.03,.09,-.15,.18,-.27,.27],["c",-.09,.06,-.27,.21,-.36,.27],["c",-.24,.18,-.36,.36,-.39,.6],["c",-.03,.33,.09,.39,.63,.42],["c",.42,0,.63,-.03,.9,-.15],["c",.6,-.3,.96,-.96,1.38,-2.64],["c",.09,-.42,.63,-2.55,1.17,-4.77],["l",1.02,-4.08],["c",0,-.03,-.36,-.03,-.81,-.03],["c",-.72,0,-.81,0,-.93,-.06],["c",-.42,-.18,-.39,-.75,.03,-.9],["c",.09,-.06,.27,-.06,1.05,-.06],["l",.96,0],["l",0,-.09],["c",.06,-.18,.3,-.72,.51,-1.17],["c",1.2,-2.46,3.3,-4.23,5.34,-4.5],["z"]],w:16.155,h:19.445},m:{d:[["M",2.79,-8.91],["c",.09,0,.3,-.03,.45,-.03],["c",.24,.03,.3,.03,.45,.12],["c",.36,.15,.63,.54,.75,1.02],["l",.03,.21],["l",.33,-.3],["c",.69,-.69,1.38,-1.02,2.07,-1.02],["c",.27,0,.33,0,.48,.06],["c",.21,.09,.48,.36,.63,.6],["c",.03,.09,.12,.27,.18,.42],["c",.03,.15,.09,.27,.12,.27],["c",0,0,.09,-.09,.18,-.21],["c",.33,-.39,.87,-.81,1.29,-.99],["c",.78,-.33,1.47,-.21,2.01,.33],["c",.3,.33,.48,.69,.6,1.14],["c",.09,.42,.06,.54,-.54,3.06],["c",-.33,1.29,-.57,2.4,-.57,2.43],["c",0,.12,.09,.21,.21,.21],["c",.24,0,.75,-.3,1.2,-.72],["c",.45,-.39,.6,-.45,.78,-.27],["c",.18,.18,.09,.36,-.45,.87],["c",-1.05,.96,-1.83,1.47,-2.58,1.71],["c",-.93,.33,-1.53,.21,-1.8,-.33],["c",-.06,-.15,-.06,-.21,-.06,-.45],["c",0,-.24,.03,-.48,.6,-2.82],["c",.42,-1.71,.6,-2.64,.63,-2.79],["c",.03,-.57,-.3,-.75,-.84,-.48],["c",-.24,.12,-.54,.39,-.66,.63],["c",-.03,.09,-.42,1.38,-.9,3],["c",-.9,3.15,-.84,3,-1.14,3.15],["l",-.15,.09],["l",-.78,0],["c",-.6,0,-.78,0,-.84,-.06],["c",-.09,-.03,-.18,-.18,-.18,-.27],["c",0,-.03,.36,-1.38,.84,-2.97],["c",.57,-2.04,.81,-2.97,.84,-3.12],["c",.03,-.54,-.3,-.72,-.84,-.45],["c",-.24,.12,-.57,.42,-.66,.63],["c",-.06,.09,-.51,1.44,-1.05,2.97],["c",-.51,1.56,-.99,2.85,-.99,2.91],["c",-.06,.12,-.21,.24,-.36,.3],["c",-.12,.06,-.21,.06,-.9,.06],["c",-.6,0,-.78,0,-.84,-.06],["c",-.09,-.03,-.18,-.18,-.18,-.27],["c",0,-.03,.45,-1.38,.99,-2.97],["c",1.05,-3.18,1.05,-3.18,.93,-3.45],["c",-.12,-.27,-.39,-.3,-.72,-.15],["c",-.54,.27,-1.14,1.17,-1.56,2.4],["c",-.06,.15,-.15,.3,-.18,.36],["c",-.21,.21,-.57,.27,-.72,.09],["c",-.09,-.09,-.06,-.21,.06,-.63],["c",.48,-1.26,1.26,-2.46,2.01,-3.21],["c",.57,-.54,1.2,-.87,1.83,-1.02],["z"]],w:14.687,h:9.126},p:{d:[["M",1.92,-8.7],["c",.27,-.09,.81,-.06,1.11,.03],["c",.54,.18,.93,.51,1.17,.99],["c",.09,.15,.15,.33,.18,.36],["l",0,.12],["l",.3,-.27],["c",.66,-.6,1.35,-1.02,2.13,-1.2],["c",.21,-.06,.33,-.06,.78,-.06],["c",.45,0,.51,0,.84,.09],["c",1.29,.33,2.07,1.32,2.25,2.79],["c",.09,.81,-.09,2.01,-.45,2.79],["c",-.54,1.26,-1.86,2.55,-3.18,3.03],["c",-.45,.18,-.81,.24,-1.29,.24],["c",-.69,-.03,-1.35,-.18,-1.86,-.45],["c",-.3,-.15,-.51,-.18,-.69,-.09],["c",-.09,.03,-.18,.09,-.18,.12],["c",-.09,.12,-1.05,2.94,-1.05,3.06],["c",0,.24,.18,.48,.51,.63],["c",.18,.06,.54,.15,.75,.15],["c",.21,0,.36,.06,.42,.18],["c",.12,.18,.06,.42,-.12,.54],["c",-.09,.03,-.15,.03,-.78,0],["c",-1.98,-.15,-3.81,-.15,-5.79,0],["c",-.63,.03,-.69,.03,-.78,0],["c",-.24,-.15,-.24,-.57,.03,-.66],["c",.06,-.03,.48,-.09,.99,-.12],["c",.87,-.06,1.11,-.09,1.35,-.21],["c",.18,-.06,.33,-.18,.39,-.3],["c",.06,-.12,3.24,-9.42,3.27,-9.6],["c",.06,-.33,.03,-.57,-.15,-.69],["c",-.09,-.06,-.12,-.06,-.3,-.06],["c",-.69,.06,-1.53,1.02,-2.28,2.61],["c",-.09,.21,-.21,.45,-.27,.51],["c",-.09,.12,-.33,.24,-.48,.24],["c",-.18,0,-.36,-.15,-.36,-.3],["c",0,-.24,.78,-1.83,1.26,-2.55],["c",.72,-1.11,1.47,-1.74,2.28,-1.92],["z"],["m",5.37,1.47],["c",-.27,-.12,-.75,-.03,-1.14,.21],["c",-.75,.48,-1.47,1.68,-1.89,3.15],["c",-.45,1.47,-.42,2.34,0,2.7],["c",.45,.39,1.26,.21,1.83,-.36],["c",.51,-.51,.99,-1.68,1.38,-3.27],["c",.3,-1.17,.33,-1.74,.15,-2.13],["c",-.09,-.15,-.15,-.21,-.33,-.3],["z"]],w:14.689,h:13.127},r:{d:[["M",6.33,-9.12],["c",.27,-.03,.93,0,1.2,.06],["c",.84,.21,1.23,.81,1.02,1.53],["c",-.24,.75,-.9,1.17,-1.56,.96],["c",-.33,-.09,-.51,-.3,-.66,-.75],["c",-.03,-.12,-.09,-.24,-.12,-.3],["c",-.09,-.15,-.3,-.24,-.48,-.24],["c",-.57,0,-1.38,.54,-1.65,1.08],["c",-.06,.15,-.33,1.17,-.9,3.27],["c",-.57,2.31,-.81,3.12,-.87,3.21],["c",-.03,.06,-.12,.15,-.18,.21],["l",-.12,.06],["l",-.81,.03],["c",-.69,0,-.81,0,-.9,-.03],["c",-.09,-.06,-.18,-.21,-.18,-.3],["c",0,-.06,.39,-1.62,.9,-3.51],["c",.84,-3.24,.87,-3.45,.87,-3.72],["c",0,-.21,0,-.27,-.03,-.36],["c",-.12,-.15,-.21,-.24,-.42,-.24],["c",-.24,0,-.45,.15,-.78,.42],["c",-.33,.36,-.45,.54,-.72,1.14],["c",-.03,.12,-.21,.24,-.36,.27],["c",-.12,0,-.15,0,-.24,-.06],["c",-.18,-.12,-.18,-.21,-.06,-.54],["c",.21,-.57,.42,-.93,.78,-1.32],["c",.54,-.51,1.2,-.81,1.95,-.87],["c",.81,-.03,1.53,.3,1.92,.87],["l",.12,.18],["l",.09,-.09],["c",.57,-.45,1.41,-.84,2.19,-.96],["z"]],w:9.41,h:9.132},s:{d:[["M",4.47,-8.73],["c",.09,0,.36,-.03,.57,-.03],["c",.75,.03,1.29,.24,1.71,.63],["c",.51,.54,.66,1.26,.36,1.83],["c",-.24,.42,-.63,.57,-1.11,.42],["c",-.33,-.09,-.6,-.36,-.6,-.57],["c",0,-.03,.06,-.21,.15,-.39],["c",.12,-.21,.15,-.33,.18,-.48],["c",0,-.24,-.06,-.48,-.15,-.6],["c",-.15,-.21,-.42,-.24,-.75,-.15],["c",-.27,.06,-.48,.18,-.69,.36],["c",-.39,.39,-.51,.96,-.33,1.38],["c",.09,.21,.42,.51,.78,.72],["c",1.11,.69,1.59,1.11,1.89,1.68],["c",.21,.39,.24,.78,.15,1.29],["c",-.18,1.2,-1.17,2.16,-2.52,2.52],["c",-1.02,.24,-1.95,.12,-2.7,-.42],["c",-.72,-.51,-.99,-1.47,-.6,-2.19],["c",.24,-.48,.72,-.63,1.17,-.42],["c",.33,.18,.54,.45,.57,.81],["c",0,.21,-.03,.3,-.33,.51],["c",-.33,.24,-.39,.42,-.27,.69],["c",.06,.15,.21,.27,.45,.33],["c",.3,.09,.87,.09,1.2,0],["c",.75,-.21,1.23,-.72,1.29,-1.35],["c",.03,-.42,-.15,-.81,-.54,-1.2],["c",-.24,-.24,-.48,-.42,-1.41,-1.02],["c",-.69,-.42,-1.05,-.93,-1.05,-1.47],["c",0,-.39,.12,-.87,.3,-1.23],["c",.27,-.57,.78,-1.05,1.38,-1.35],["c",.24,-.12,.63,-.27,.9,-.3],["z"]],w:6.632,h:8.758},z:{d:[["M",2.64,-7.95],["c",.36,-.09,.81,-.03,1.71,.27],["c",.78,.21,.96,.27,1.74,.3],["c",.87,.06,1.02,.03,1.38,-.21],["c",.21,-.15,.33,-.15,.48,-.06],["c",.15,.09,.21,.3,.15,.45],["c",-.03,.06,-1.26,1.26,-2.76,2.67],["l",-2.73,2.55],["l",.54,.03],["c",.54,.03,.72,.03,2.01,.15],["c",.36,.03,.9,.06,1.2,.09],["c",.66,0,.81,-.03,1.02,-.24],["c",.3,-.3,.39,-.72,.27,-1.23],["c",-.06,-.27,-.06,-.27,-.03,-.39],["c",.15,-.3,.54,-.27,.69,.03],["c",.15,.33,.27,1.02,.27,1.5],["c",0,1.47,-1.11,2.7,-2.52,2.79],["c",-.57,.03,-1.02,-.09,-2.01,-.51],["c",-1.02,-.42,-1.23,-.48,-2.13,-.54],["c",-.81,-.06,-.96,-.03,-1.26,.18],["c",-.12,.06,-.24,.12,-.27,.12],["c",-.27,0,-.45,-.3,-.36,-.51],["c",.03,-.06,1.32,-1.32,2.91,-2.79],["l",2.88,-2.73],["c",-.03,0,-.21,.03,-.42,.06],["c",-.21,.03,-.78,.09,-1.23,.12],["c",-1.11,.12,-1.23,.15,-1.95,.27],["c",-.72,.15,-1.17,.18,-1.29,.09],["c",-.27,-.18,-.21,-.75,.12,-1.26],["c",.39,-.6,.93,-1.02,1.59,-1.2],["z"]],w:8.573,h:8.743},"+":{d:[["M",3.48,-9.3],["c",.18,-.09,.36,-.09,.54,0],["c",.18,.09,.24,.15,.33,.3],["l",.06,.15],["l",0,1.29],["l",0,1.29],["l",1.29,0],["c",1.23,0,1.29,0,1.41,.06],["c",.06,.03,.15,.09,.18,.12],["c",.12,.09,.21,.33,.21,.48],["c",0,.15,-.09,.39,-.21,.48],["c",-.03,.03,-.12,.09,-.18,.12],["c",-.12,.06,-.18,.06,-1.41,.06],["l",-1.29,0],["l",0,1.29],["c",0,1.23,0,1.29,-.06,1.41],["c",-.09,.18,-.15,.24,-.3,.33],["c",-.21,.09,-.39,.09,-.57,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.06,-.12,-.06,-.18,-.06,-1.41],["l",0,-1.29],["l",-1.29,0],["c",-1.23,0,-1.29,0,-1.41,-.06],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.09,-.18,-.09,-.36,0,-.54],["c",.09,-.18,.15,-.24,.33,-.33],["l",.15,-.06],["l",1.26,0],["l",1.29,0],["l",0,-1.29],["c",0,-1.23,0,-1.29,.06,-1.41],["c",.09,-.18,.15,-.24,.33,-.33],["z"]],w:7.507,h:7.515},",":{d:[["M",1.85,-3.36],["c",.57,-.15,1.17,.03,1.59,.45],["c",.45,.45,.6,.96,.51,1.89],["c",-.09,1.23,-.42,2.46,-.99,3.93],["c",-.3,.72,-.72,1.62,-.78,1.68],["c",-.18,.21,-.51,.18,-.66,-.06],["c",-.03,-.06,-.06,-.15,-.06,-.18],["c",0,-.06,.12,-.33,.24,-.63],["c",.84,-1.8,1.02,-2.61,.69,-3.24],["c",-.12,-.24,-.27,-.36,-.75,-.6],["c",-.36,-.15,-.42,-.21,-.6,-.39],["c",-.69,-.69,-.69,-1.71,0,-2.4],["c",.21,-.21,.51,-.39,.81,-.45],["z"]],w:3.452,h:8.143},"-":{d:[["M",.18,-5.34],["c",.09,-.06,.15,-.06,2.31,-.06],["c",2.46,0,2.37,0,2.46,.21],["c",.12,.21,.03,.42,-.15,.54],["c",-.09,.06,-.15,.06,-2.28,.06],["c",-2.16,0,-2.22,0,-2.31,-.06],["c",-.27,-.15,-.27,-.54,-.03,-.69],["z"]],w:5.001,h:.81},".":{d:[["M",1.32,-3.36],["c",1.05,-.27,2.1,.57,2.1,1.65],["c",0,1.08,-1.05,1.92,-2.1,1.65],["c",-.9,-.21,-1.5,-1.14,-1.26,-2.04],["c",.12,-.63,.63,-1.11,1.26,-1.26],["z"]],w:3.413,h:3.402},"scripts.wedge":{d:[["M",-3.66,-7.44],["c",.06,-.09,0,-.09,.81,.03],["c",1.86,.3,3.84,.3,5.73,0],["c",.78,-.12,.72,-.12,.78,-.03],["c",.15,.15,.12,.24,-.24,.6],["c",-.93,.93,-1.98,2.76,-2.67,4.62],["c",-.3,.78,-.51,1.71,-.51,2.13],["c",0,.15,0,.18,-.06,.27],["c",-.12,.09,-.24,.09,-.36,0],["c",-.06,-.09,-.06,-.12,-.06,-.27],["c",0,-.42,-.21,-1.35,-.51,-2.13],["c",-.69,-1.86,-1.74,-3.69,-2.67,-4.62],["c",-.36,-.36,-.39,-.45,-.24,-.6],["z"]],w:7.49,h:7.752},"scripts.thumb":{d:[["M",-.54,-3.69],["c",.15,-.03,.36,-.06,.51,-.06],["c",1.44,0,2.58,1.11,2.94,2.85],["c",.09,.48,.09,1.32,0,1.8],["c",-.27,1.41,-1.08,2.43,-2.16,2.73],["l",-.18,.06],["l",0,.12],["c",.03,.06,.06,.45,.09,.87],["c",.03,.57,.03,.78,0,.84],["c",-.09,.27,-.39,.48,-.66,.48],["c",-.27,0,-.57,-.21,-.66,-.48],["c",-.03,-.06,-.03,-.27,0,-.84],["c",.03,-.42,.06,-.81,.09,-.87],["l",0,-.12],["l",-.18,-.06],["c",-1.08,-.3,-1.89,-1.32,-2.16,-2.73],["c",-.09,-.48,-.09,-1.32,0,-1.8],["c",.15,-.84,.51,-1.53,1.02,-2.04],["c",.39,-.39,.84,-.63,1.35,-.75],["z"],["m",1.05,.9],["c",-.15,-.09,-.21,-.09,-.45,-.12],["c",-.15,0,-.3,.03,-.39,.03],["c",-.57,.18,-.9,.72,-1.08,1.74],["c",-.06,.48,-.06,1.8,0,2.28],["c",.15,.9,.42,1.44,.9,1.65],["c",.18,.09,.21,.09,.51,.09],["c",.3,0,.33,0,.51,-.09],["c",.48,-.21,.75,-.75,.9,-1.65],["c",.03,-.27,.03,-.54,.03,-1.14],["c",0,-.6,0,-.87,-.03,-1.14],["c",-.15,-.9,-.45,-1.44,-.9,-1.65],["z"]],w:5.955,h:9.75},"scripts.open":{d:[["M",-.54,-3.69],["c",.15,-.03,.36,-.06,.51,-.06],["c",1.44,0,2.58,1.11,2.94,2.85],["c",.09,.48,.09,1.32,0,1.8],["c",-.33,1.74,-1.47,2.85,-2.91,2.85],["c",-1.44,0,-2.58,-1.11,-2.91,-2.85],["c",-.09,-.48,-.09,-1.32,0,-1.8],["c",.15,-.84,.51,-1.53,1.02,-2.04],["c",.39,-.39,.84,-.63,1.35,-.75],["z"],["m",1.11,.9],["c",-.21,-.09,-.27,-.09,-.51,-.12],["c",-.3,0,-.42,.03,-.66,.15],["c",-.24,.12,-.51,.39,-.66,.63],["c",-.54,.93,-.63,2.64,-.21,3.81],["c",.21,.54,.51,.9,.93,1.11],["c",.21,.09,.24,.09,.54,.09],["c",.3,0,.33,0,.54,-.09],["c",.42,-.21,.72,-.57,.93,-1.11],["c",.36,-.99,.36,-2.37,0,-3.36],["c",-.21,-.54,-.51,-.9,-.9,-1.11],["z"]],w:5.955,h:7.5},"scripts.longphrase":{d:[["M",1.47,-15.09],["c",.36,-.09,.66,-.18,.69,-.18],["c",.06,0,.06,.54,.06,11.25],["l",0,11.25],["l",-.63,.15],["c",-.66,.18,-1.44,.39,-1.5,.39],["c",-.03,0,-.03,-3.39,-.03,-11.25],["l",0,-11.25],["l",.36,-.09],["c",.21,-.06,.66,-.18,1.05,-.27],["z"]],w:2.16,h:23.04},"scripts.mediumphrase":{d:[["M",1.47,-7.59],["c",.36,-.09,.66,-.18,.69,-.18],["c",.06,0,.06,.39,.06,7.5],["l",0,7.5],["l",-.63,.15],["c",-.66,.18,-1.44,.39,-1.5,.39],["c",-.03,0,-.03,-2.28,-.03,-7.5],["l",0,-7.5],["l",.36,-.09],["c",.21,-.06,.66,-.18,1.05,-.27],["z"]],w:2.16,h:15.54},"scripts.shortphrase":{d:[["M",1.47,-7.59],["c",.36,-.09,.66,-.18,.69,-.18],["c",.06,0,.06,.21,.06,3.75],["l",0,3.75],["l",-.42,.09],["c",-.57,.18,-1.65,.45,-1.71,.45],["c",-.03,0,-.03,-.72,-.03,-3.75],["l",0,-3.75],["l",.36,-.09],["c",.21,-.06,.66,-.18,1.05,-.27],["z"]],w:2.16,h:8.04},"scripts.snap":{d:[["M",4.5,-3.39],["c",.36,-.03,.96,-.03,1.35,0],["c",1.56,.15,3.15,.9,4.2,2.01],["c",.24,.27,.33,.42,.33,.6],["c",0,.27,.03,.24,-2.46,2.22],["c",-1.29,1.02,-2.4,1.86,-2.49,1.92],["c",-.18,.09,-.3,.09,-.48,0],["c",-.09,-.06,-1.2,-.9,-2.49,-1.92],["c",-2.49,-1.98,-2.46,-1.95,-2.46,-2.22],["c",0,-.18,.09,-.33,.33,-.6],["c",1.05,-1.08,2.64,-1.86,4.17,-2.01],["z"],["m",1.29,1.17],["c",-1.47,-.15,-2.97,.3,-4.14,1.2],["l",-.18,.15],["l",.06,.09],["c",.15,.12,3.63,2.85,3.66,2.85],["c",.03,0,3.51,-2.73,3.66,-2.85],["l",.06,-.09],["l",-.18,-.15],["c",-.84,-.66,-1.89,-1.08,-2.94,-1.2],["z"]],w:10.38,h:6.84}};e["noteheads.slash.whole"]={d:[["M",5,-5],["l",1,1],["l",-5,5],["l",-1,-1],["z"],["m",4,6],["l",-5,-5],["l",2,-2],["l",5,5],["z"],["m",0,-2],["l",1,1],["l",-5,5],["l",-1,-1],["z"],["m",-4,6],["l",-5,-5],["l",2,-2],["l",5,5],["z"]],w:10.81,h:15.63},e["noteheads.slash.quarter"]={d:[["M",9,-6],["l",0,4],["l",-9,9],["l",0,-4],["z"]],w:9,h:9},e["noteheads.harmonic.quarter"]={d:[["M",3.63,-4.02],["c",.09,-.06,.18,-.09,.24,-.03],["c",.03,.03,.87,.93,1.83,2.01],["c",1.5,1.65,1.8,1.98,1.8,2.04],["c",0,.06,-.3,.39,-1.8,2.04],["c",-.96,1.08,-1.8,1.98,-1.83,2.01],["c",-.06,.06,-.15,.03,-.24,-.03],["c",-.12,-.09,-3.54,-3.84,-3.6,-3.93],["c",-.03,-.03,-.03,-.09,-.03,-.15],["c",.03,-.06,3.45,-3.84,3.63,-3.96],["z"]],w:7.5,h:8.165},e["noteheads.triangle.quarter"]={d:[["M",0,4],["l",9,0],["l",-4.5,-9],["z"]],w:9,h:9};var a=function(r){for(var o=[],l=0,u=r.length;l0?p.top+3:p.bottom-1,_=u>0?p.top+3:p.bottom-3,b=_-2;r.type==="bass-8"&&(c=3,d=0),p.addRight(new a("8",g+d,e.getSymbolWidth("8")*f,c,{scalex:f,scaley:f,top:_,bottom:b}))}}return p};function s(r){switch(r){case"clefs.G":return-5;case"clefs.C":return-4;case"clefs.F":return-4;case"clefs.perc":return-2;default:return 0}}return Wp=n,Wp}var Qp,Hy;function KC(){if(Hy)return Qp;Hy=1;var t=bl(),e=Vr(),a=Js(),n=function(s,r){if(s.el_type="keySignature",!s.accidentals||s.accidentals.length===0)return null;var o=new t(s,0,10,"staff-extra key-signature",r);o.isKeySig=!0;var l=0;return s.accidentals.forEach(function(u){var p,g=0;switch(u.acc){case"sharp":p="accidentals.sharp",g=-3;break;case"natural":p="accidentals.nat";break;case"flat":p="accidentals.flat",g=-1.2;break;case"quartersharp":p="accidentals.halfsharp",g=-2.5;break;case"quarterflat":p="accidentals.halfflat",g=-1.2;break;default:p="accidentals.flat"}o.addRight(new a(p,l,e.getSymbolWidth(p),u.verticalPos,{thickness:e.symbolHeightInPitches(p),top:u.verticalPos+e.symbolHeightInPitches(p)+g,bottom:u.verticalPos+g})),l+=e.getSymbolWidth(p)+2},this),o};return Qp=n,Qp}var Kp,Wy;function YC(){if(Wy)return Kp;Wy=1;var t=Vr(),e=Js(),a=function(n,s,r,o){o||(o={});var l=o.dir!==void 0?o.dir:null,u=o.headx!==void 0?o.headx:0,p=o.extrax!==void 0?o.extrax:0,g=o.flag!==void 0?o.flag:null,h=o.dot!==void 0?o.dot:0,m=o.dotshiftx!==void 0?o.dotshiftx:0,f=o.scale!==void 0?o.scale:1,d=o.accidentalSlot!==void 0?o.accidentalSlot:[],c=o.shouldExtendStem!==void 0?o.shouldExtendStem:!1,_=o.printAccidentals!==void 0?o.printAccidentals:!0,b=o.chordPos,v=r.verticalPos,w,y=0,T=0,O=0;if(s===void 0)n.addFixed(new e("pitch is undefined",0,0,0,{type:"debug"}));else if(s==="")w=new e(null,0,0,v,{chordPos:b});else{var R=u;if(r.printer_shift){var $=r.printer_shift==="same"?1:0;R=l==="down"?-t.getSymbolWidth(s)*f+$:t.getSymbolWidth(s)*f-$}var P={scalex:f,scaley:f,thickness:t.symbolHeightInPitches(s)*f,name:r.name,chordPos:b};if(w=new e(s,R,t.getSymbolWidth(s)*f,v,P),w.stemDir=l,g){var L=v+(l==="down"?-7:7)*f;c&&(l==="down"&&L>6&&(L=6),l==="up"&&L<6&&(L=6));var x=l==="down"?u:u+w.w-.6;n.addRight(new e(g,x,t.getSymbolWidth(g)*f,L,{scalex:f,scaley:f,chordPos:b}))}for(T=w.w+m-2+5*h;h>0;h--){var U=1-Math.abs(v)%2;n.addRight(new e("dots.dot",w.w+m-2+5*h,t.getSymbolWidth("dots.dot"),v+U,{chordPos:b}))}}if(w&&(w.highestVert=r.highestVert),_&&r.accidental){var D;switch(r.accidental){case"quartersharp":D="accidentals.halfsharp";break;case"dblsharp":D="accidentals.dblsharp";break;case"sharp":D="accidentals.sharp";break;case"quarterflat":D="accidentals.halfflat";break;case"flat":D="accidentals.flat";break;case"dblflat":D="accidentals.dblflat";break;case"natural":D="accidentals.nat"}for(var M=!1,G=p,B=0;B=6){d[B][0]=v,G=d[B][1],M=!0;break}M===!1&&(G-=t.getSymbolWidth(D)*f+2,d.push([v,G]),y=t.getSymbolWidth(D)*f+2);var V=t.symbolHeightInPitches(D);n.addExtra(new e(D,G,t.getSymbolWidth(D),v,{scalex:f,scaley:f,top:v+V/2,bottom:v-V/2,chordPos:b})),O=t.getSymbolWidth(D)/2}return{notehead:w,accidentalshiftx:y,dotshiftx:T,extraLeft:O}};return Kp=a,Kp}var Yp,Qy;function XC(){if(Qy)return Yp;Qy=1;var t=bl(),e=Vr(),a=Js(),n=function(s,r){s.el_type="timeSignature";var o=new t(s,0,10,"staff-extra time-signature",r);if(s.type==="specified")for(var l=0,u=0;u0)this.above=!1;else{var e;this.anchor1?e=this.anchor1.pitch:this.anchor2?e=this.anchor2.pitch:e=14,this.anchor1&&this.anchor1.stemDir==="down"&&this.anchor2&&this.anchor2.stemDir==="down"?this.above=!0:this.anchor1&&this.anchor1.stemDir==="up"&&this.anchor2&&this.anchor2.stemDir==="up"?this.above=!1:this.anchor1&&this.anchor2?this.above=e>=6:this.anchor1?this.above=this.anchor1.stemDir==="down":this.anchor2?this.above=this.anchor2.stemDir==="down":this.above=e>=6}},t.prototype.calcSlurDirection=function(){if(this.isGrace)this.above=!1;else if(this.voiceNumber===0)this.above=!0;else if(this.voiceNumber>0)this.above=!1;else{var e=!1;this.anchor1&&this.anchor1.stemDir==="down"&&(e=!0),this.anchor2&&this.anchor2.stemDir==="down"&&(e=!0);for(var a=0;ae&&(e=this.internalNotes[a].highestVert);e>this.startY&&e>this.endY&&(this.startY=this.endY=e-1)}},t.prototype.getYBounds=function(){var e=10,a=1e3;this.isTie?(this.calcTieDirection(),this.calcX(e,a),this.calcTieY()):(this.calcSlurDirection(),this.calcX(e,a),this.calcSlurY());var n,s;return this.above?(s=Math.min(this.startY,this.endY),n=s+3):(n=Math.min(this.startY,this.endY),s=n-3),[n,s]},e0=t,e0}var t0,e2;function t9(){if(e2)return t0;e2=1;var t=JC(),e=ZC(),a=e9(),n=Vr(),s=Js(),r=Zy(),o=function(){this.startDiminuendoX=void 0,this.startCrescendoX=void 0,this.minTop=12,this.minBottom=0},l=function(d,c,_,b,v,w,y,T,O){for(var R,$=0;$9&&R++;var L=b/2;n.getSymbolAlign(P)!=="center"&&(L-=n.getSymbolWidth(P)/2),v.addFixedX(new s(P,L,n.getSymbolWidth(P),R))}if(c[$]==="slide"&&v.heads[0]){var x=v.heads[0].pitch;x-=2;var U=new s("",-w-15,0,x-1),D=new s("",-w-5,0,x+1);v.addFixedX(U),v.addFixedX(D),d.addOther(new r({anchor1:U,anchor2:D,fixedY:!0}))}}return R===void 0&&(R=_),{above:R,below:v.bottom}},u=function(d,c,_,b){for(var v=0;vy&&(M=y)),M}function $(D,M,G){var B=R(M),V=2,I=5;_.addFixedX(new s(D,c/2,0,B+V,{type:"decoration",klass:"ornament",thickness:3,anchor:G})),O(M,I)}function P(D,M){var G=c/2;n.getSymbolAlign(D)!=="center"&&(G-=n.getSymbolWidth(D)/2);var B=n.symbolHeightInPitches(D)+1,V=R(M);V=M==="above"?V+B/2:V-B/2,_.addFixedX(new s(D,G,n.getSymbolWidth(D),V,{klass:"ornament",thickness:n.symbolHeightInPitches(D),position:M})),O(M,B)}for(var L={"+":"scripts.stopped",open:"scripts.open",snap:"scripts.snap",wedge:"scripts.wedge",thumb:"scripts.thumb",shortphrase:"scripts.shortphrase",mediumphrase:"scripts.mediumphrase",longphrase:"scripts.longphrase",trill:"scripts.trill",trillh:"scripts.trill",roll:"scripts.roll",irishroll:"scripts.roll",marcato:"scripts.umarcato",dmarcato:"scripts.dmarcato",umarcato:"scripts.umarcato",turn:"scripts.turn",uppermordent:"scripts.prall",pralltriller:"scripts.prall",mordent:"scripts.mordent",lowermordent:"scripts.mordent",downbow:"scripts.downbow",upbow:"scripts.upbow",fermata:"scripts.ufermata",invertedfermata:"scripts.dfermata",breath:",",coda:"scripts.coda",segno:"scripts.segno"},x=!1,U=0;U",this.dynamicPositioning)),this.startDiminuendoX=void 0),this.startCrescendoX&&(d.addOther(new e(this.startCrescendoX,f(d.children),"<",this.dynamicPositioning)),this.startCrescendoX=void 0)},o.prototype.dynamicDecoration=function(d,c,_,b){for(var v,w,y,T=0;T",b)),w&&d.addOther(new e(w.start,w.stop,"<",b)),y&&d.addOther(new a(y.start,y.stop))};function m(d){for(var c=0;c=0;T--){var O=y[T],R=0,$;u||(O=a(O,v,w));var P=m.calc(O,p,g),L=P.width,x=P.height/e.STEP;switch(o){case"left":c+=L+7,R=-c,$=d.averagepitch,f.addExtra(new t(O,R,L+4,$,{type:"text",height:x,dim:h,position:"left"}));break;case"right":_+=4,R=_,$=d.averagepitch,f.addRight(new t(O,R,L+4,$,{type:"text",height:x,dim:h,position:"right"}));break;case"below":f.addRight(new t(O,0,0,void 0,{type:"text",position:"below",height:x,dim:h,realWidth:L}));break;case"above":f.addRight(new t(O,0,0,void 0,{type:"text",position:"above",height:x,dim:h,realWidth:L}));break;default:if(l){var U=l.y+3*e.STEP;f.addRight(new t(O,R+l.x,0,d.minpitch+U/e.STEP,{position:"relative",type:"text",height:x,dim:h}))}else{var D="above";d.positioning&&d.positioning.chordPosition&&(D=d.positioning.chordPosition),D!=="hidden"&&f.addCentered(new t(O,b/2,L,void 0,{type:"chord",position:D,height:x,dim:h,realWidth:L}))}}}return{roomTaken:c,roomTakenRight:_}}return l0=n,l0}var c0,l2;function c9(){if(l2)return c0;l2=1;var t=bl(),e=HC(),a=WC(),n=QC(),s=KC(),r=YC(),o=XC(),l=t9(),u=i9(),p=Vr(),g=Js(),h=In(),m=n9(),f=s9(),d=Zy(),c=r9(),_=wy(),b=l9(),v=uy(),w=Xs(),y=function(M){var G=0;return M.duration&&(G=M.duration),G},T=!1,O={rest:{0:"rests.whole",1:"rests.half",2:"rests.quarter",3:"rests.8th",4:"rests.16th",5:"rests.32nd",6:"rests.64th",7:"rests.128th",multi:"rests.multimeasure"},note:{"-1":"noteheads.dbl",0:"noteheads.whole",1:"noteheads.half",2:"noteheads.quarter",3:"noteheads.quarter",4:"noteheads.quarter",5:"noteheads.quarter",6:"noteheads.quarter",7:"noteheads.quarter",nostem:"noteheads.quarter"},rhythm:{"-1":"noteheads.slash.whole",0:"noteheads.slash.whole",1:"noteheads.slash.whole",2:"noteheads.slash.quarter",3:"noteheads.slash.quarter",4:"noteheads.slash.quarter",5:"noteheads.slash.quarter",6:"noteheads.slash.quarter",7:"noteheads.slash.quarter",nostem:"noteheads.slash.nostem"},x:{"-1":"noteheads.indeterminate",0:"noteheads.indeterminate",1:"noteheads.indeterminate",2:"noteheads.indeterminate",3:"noteheads.indeterminate",4:"noteheads.indeterminate",5:"noteheads.indeterminate",6:"noteheads.indeterminate",7:"noteheads.indeterminate",nostem:"noteheads.indeterminate"},harmonic:{"-1":"noteheads.harmonic.quarter",0:"noteheads.harmonic.quarter",1:"noteheads.harmonic.quarter",2:"noteheads.harmonic.quarter",3:"noteheads.harmonic.quarter",4:"noteheads.harmonic.quarter",5:"noteheads.harmonic.quarter",6:"noteheads.harmonic.quarter",7:"noteheads.harmonic.quarter",nostem:"noteheads.harmonic.quarter"},triangle:{"-1":"noteheads.triangle.quarter",0:"noteheads.triangle.quarter",1:"noteheads.triangle.quarter",2:"noteheads.triangle.quarter",3:"noteheads.triangle.quarter",4:"noteheads.triangle.quarter",5:"noteheads.triangle.quarter",6:"noteheads.triangle.quarter",7:"noteheads.triangle.quarter",nostem:"noteheads.triangle.quarter"},uflags:{3:"flags.u8th",4:"flags.u16th",5:"flags.u32nd",6:"flags.u64th"},dflags:{3:"flags.d8th",4:"flags.d16th",5:"flags.d32nd",6:"flags.d64th"}},R=function(M,G,B){this.decoration=new l,this.getTextSize=M,this.tuneNumber=G,this.isBagpipes=B.bagpipes,this.flatBeams=B.flatbeams,this.graceSlurs=B.graceSlurs,this.percmap=B.percmap,this.initialClef=B.initialClef,this.jazzchords=!!B.jazzchords,this.accentAbove=!!B.accentAbove,this.germanAlphabet=!!B.germanAlphabet,this.reset()};R.prototype.reset=function(){this.slurs={},this.ties=[],this.voiceScale=1,this.voiceColor=void 0,this.slursbyvoice={},this.tiesbyvoice={},this.endingsbyvoice={},this.scaleByVoice={},this.colorByVoice={},this.tripletmultiplier=1,this.abcline=void 0,this.accidentalSlot=void 0,this.accidentalshiftx=void 0,this.dotshiftx=void 0,this.hasVocals=!1,this.minY=void 0,this.partstartelem=void 0,this.startlimitelem=void 0,this.stemdir=void 0},R.prototype.setStemHeight=function(M){this.stemHeight=Math.round(M*10/h.STEP)/10},R.prototype.getCurrentVoiceId=function(M,G){return"s"+M+"v"+G},R.prototype.pushCrossLineElems=function(M,G){this.slursbyvoice[this.getCurrentVoiceId(M,G)]=this.slurs,this.tiesbyvoice[this.getCurrentVoiceId(M,G)]=this.ties,this.endingsbyvoice[this.getCurrentVoiceId(M,G)]=this.partstartelem,this.scaleByVoice[this.getCurrentVoiceId(M,G)]=this.voiceScale,this.voiceColor&&(this.colorByVoice[this.getCurrentVoiceId(M,G)]=this.voiceColor)},R.prototype.popCrossLineElems=function(M,G){this.slurs=this.slursbyvoice[this.getCurrentVoiceId(M,G)]||{},this.ties=this.tiesbyvoice[this.getCurrentVoiceId(M,G)]||[],this.partstartelem=this.endingsbyvoice[this.getCurrentVoiceId(M,G)],this.voiceScale=this.scaleByVoice[this.getCurrentVoiceId(M,G)],this.voiceScale===void 0&&(this.voiceScale=1),this.voiceColor=this.colorByVoice[this.getCurrentVoiceId(M,G)]},R.prototype.containsLyrics=function(M){for(var G=0;G0&&(I[0].invisible=!0);break;case"meter":I[0]=o(V,this.tuneNumber),this.startlimitelem=I[0],B.duplicate&&I.length>0&&(I[0].invisible=!0);break;case"clef":if(I[0]=n(V,this.tuneNumber),!I[0])return null;B.duplicate&&I.length>0&&(I[0].invisible=!0);break;case"key":var k=s(V,this.tuneNumber);k&&(I[0]=k,this.startlimitelem=I[0]),B.duplicate&&I.length>0&&(I[0].invisible=!0);break;case"stem":this.stemdir=V.direction==="auto"?void 0:V.direction;break;case"part":var S=new t(V,0,0,"part",this.tuneNumber),F=this.getTextSize.calc(V.title,"partsfont","part");S.addFixedX(new g(V.title,0,0,void 0,{type:"part",height:F.height/h.STEP})),I[0]=S;break;case"tempo":var H=new t(V,0,0,"tempo",this.tuneNumber);V.suppress||H.addFixedX(new f(V,this.tuneNumber,r)),I[0]=H;break;case"style":V.head==="normal"?delete this.style:this.style=V.head;break;case"hint":T=!0,this.saveState();break;case"midi":break;case"scale":this.voiceScale=V.size;break;case"color":this.voiceColor=V.color,B.color=this.voiceColor;break;default:var Q=new t(V,0,0,"unsupported",this.tuneNumber);Q.addFixed(new g("element type "+V.el_type,0,0,void 0,{type:"debug"})),I[0]=Q}return I};function P(M){if(M.pitches){L(M);for(var G=0,B=0;BM.pitches[B+1].pitch){G=!1;var V=M.pitches[B];M.pitches[B]=M.pitches[B+1],M.pitches[B+1]=V}}while(!G)},x=function(M,G,B,V,I,k,S,F,H){for(var Q=B;Q>11;Q--)Q%2===0&&!V&&M.addFixed(new g(null,F,(I+4)*H,Q,{type:"ledger"}));for(Q=G;Q<1;Q++)Q%2===0&&!V&&M.addFixed(new g(null,F,(I+4)*H,Q,{type:"ledger"}));for(Q=0;Q1&&(Q=new e(I,"grace",k),T&&Q.setHint(),Q.mainNote=B);var C,re=[];for(C=M.gracenotes.length-1;C>=0;C--)S+=10,re[C]=S,M.gracenotes[C].accidental&&(S+=7);for(C=0;C=6?"down":"up";V&&(ae=V),I=G.style?G.style:I,(!I||I==="normal")&&(I="note");var Re;k?Re=O[I].nostem:Re=O[I][-S],Re||console.log("noteSymbol:",I,S,k);var ee;for(ee=ae==="down"?G.pitches.length-2:1;ae==="down"?ee>=0:ee11||Ie.verticalPos<1)&&ye.push(Ie.verticalPos-Ie.verticalPos%2),ae==="down"?C=p.getSymbolWidth(Re)+2:Q=p.getSymbolWidth(Re)+2)}var Xe=G.pitches.length;for(ee=0;ee1?ee+1:null,ve=r(M,Te,G.pitches[ee],{dir:ae,extrax:-C,flag:Le,dot:B,dotshiftx:Q,scale:this.voiceScale,accidentalSlot:se,shouldExtendStem:!V,printAccidentals:!H.isPercussion,chordPos:me});we=Math.max(p.getSymbolWidth(Te),we),M.extraw-=ve.extraLeft,Y=ve.notehead,Y&&(this.addSlursAndTies(M,G.pitches[ee],Y,H,ne?ae:null,!1),G.gracenotes&&G.gracenotes.length>0&&(Y.bottom=Y.bottom-1),M.addHead(Y)),C+=ve.accidentalshiftx,re=Math.max(re,ve.dotshiftx)}if(ne){var pe=Math.round(70*this.voiceScale)/10,Se=ae==="down"?G.minpitch-pe:G.minpitch+1/3;Se>6&&!V&&(Se=6);var Me=ae==="down"?G.maxpitch-1/3:G.maxpitch+pe;Me<6&&!V&&(Me=6);var ge=ae==="down"||M.heads.length===0?0:M.heads[0].w,ze=ae==="down"?1:-1;Y&&Y.c==="noteheads.slash.quarter"&&(ae==="down"?Me-=1:Se+=1),Y&&Y.c==="noteheads.triangle.quarter"&&(ae==="down"?Me-=.7:Se-=1.2),M.addRight(new g(null,ge,0,Se,{type:"stem",pitch2:Me,linewidth:ze,bottom:Se-1})),he=Math.min(Se,Me)}return{noteHead:Y,roomTaken:C,roomTakenRight:re,min:he,additionalLedgers:ye,dir:ae,symbolWidth:we}},R.prototype.addLyric=function(M,G,B){var V="";G.lyric.forEach(function(S){var F=S.divider===" "?"":S.divider;V+=S.syllable+F+` -`});var I=this.getTextSize.calc(V,"vocalfont","lyric"),k=G.positioning?G.positioning.vocalPosition:"below";M.addCentered(new g(V,0,I.width,void 0,{type:"lyric",position:k,height:I.height/h.STEP,dim:this.getTextSize.attr("vocalfont","lyric"),voiceNumber:B}))},R.prototype.createNote=function(M,G,B,V){var I=null,k=0,S=0,F=0,H=[],Q,Y=y(M),C=!1;Y===0&&(C=!0,Y=.25,G=!0);for(var re=Math.floor(Math.log(Y)/Math.log(2)),he=0,ie=Math.pow(2,re),ye=ie/2;ie1,this.stemdir,B,re,this.voiceScale);I=Re.noteHead,k=Re.roomTaken,S=Re.roomTakenRight}else{var ee=this.addNoteToAbcElement(ae,M,he,this.stemdir,this.style,C,re,G,V);ee.min!==void 0&&(this.minY=Math.min(ee.min,this.minY)),I=ee.noteHead,k=ee.roomTaken,S=ee.roomTakenRight,H=ee.additionalLedgers,Q=ee.dir,F=ee.symbolWidth}if(M.lyric!==void 0&&this.addLyric(ae,M,V.voicenumber),M.gracenotes!==void 0&&(k+=this.addGraceNotes(M,V,ae,I,this.stemHeight*this.voiceScale,this.isBagpipes,k)),M.decoration){var Oe=G&&Q!=="up"?Math.min(-3,ae.bottom-6):ae.bottom;this.decoration.createDecoration(V,M.decoration,ae.top,I?I.w:0,ae,k,Q,Oe,M.positioning,this.hasVocals,this.accentAbove)}if(M.barNumber&&ae.addFixed(new g(M.barNumber,-10,0,0,{type:"barNumber"})),x(ae,M.minpitch,M.maxpitch,M.rest,F,H,Q,-2,1),M.chord!==void 0){var Ie=b(this.getTextSize,ae,M,k,S,F,this.jazzchords,this.germanAlphabet);k=Ie.roomTaken,S=Ie.roomTakenRight}return M.startTriplet&&(this.triplet=new c(M.startTriplet,I,{flatBeams:this.flatBeams})),M.endTriplet&&this.triplet&&this.triplet.setCloseAnchor(I),this.triplet&&!M.startTriplet&&!M.endTriplet&&!(M.rest&&M.rest.type==="spacer")&&this.triplet.middleNote(I),ae},R.prototype.addSlursAndTies=function(M,G,B,V,I,k){if(G.endTie&&this.ties.length>0){for(var S=!1,F=0;F10&&G.abcelem.type==="treble"?13.5:11;G.addFixed(new g(M,V,B.width,I+B.height/h.STEP,{type:"barNumber",dim:this.getTextSize.attr("measurefont","bar-number")}))},R.prototype.createBarLine=function(M,G,B){var V=new t(G,0,10,"bar",this.tuneNumber),I=null,k=0;G.barNumber&&this.addMeasureNumber(G.barNumber,V);var S=G.type==="bar_right_repeat"||G.type==="bar_dbl_repeat",F=G.type!=="bar_left_repeat"&&G.type!=="bar_thick_thin"&&G.type!=="bar_invisible",H=G.type==="bar_right_repeat"||G.type==="bar_dbl_repeat"||G.type==="bar_left_repeat"||G.type==="bar_thin_thick"||G.type==="bar_thick_thin",Q=G.type==="bar_left_repeat"||G.type==="bar_thick_thin"||G.type==="bar_thin_thin"||G.type==="bar_dbl_repeat",Y=G.type==="bar_left_repeat"||G.type==="bar_dbl_repeat";if(S||Y){for(var C in this.slurs)this.slurs.hasOwnProperty(C)&&this.slurs[C].setEndX(V);this.startlimitelem=V}if(S&&(V.addRight(new g("dots.dot",k,1,7)),V.addRight(new g("dots.dot",k,1,5)),k+=6),F&&(I=new g(null,k,1,2,{type:"bar",pitch2:10,linewidth:.6}),V.addRight(I)),G.type==="bar_invisible"&&(I=new g(null,k,1,2,{type:"none",pitch2:10,linewidth:.6}),V.addRight(I)),G.decoration&&this.decoration.createDecoration(M,G.decoration,12,H?3:1,V,0,"down",2,G.positioning,this.hasVocals,this.accentAbove),H&&(k+=4,I=new g(null,k,4,2,{type:"bar",pitch2:10,linewidth:4}),V.addRight(I),k+=5),this.partstartelem&&G.endEnding&&(this.partstartelem.anchor2=I,this.partstartelem=null),Q&&(k+=3,I=new g(null,k,1,2,{type:"bar",pitch2:10,linewidth:.6}),V.addRight(I)),Y&&(k+=3,V.addRight(new g("dots.dot",k,1,7)),V.addRight(new g("dots.dot",k,1,5))),G.startEnding&&B&&M.voicenumber===0){var re=this.getTextSize.calc(G.startEnding,"repeatfont","").width;V.minspacing+=re+10,this.partstartelem=new u(G.startEnding,I,null),M.addOther(this.partstartelem)}return V.extraw-=5,G.chord!==void 0&&b(this.getTextSize,V,G,0,0,0,!1,this.germanAlphabet),V},c0=R,c0}var d0,c2;function d9(){if(c2)return d0;c2=1;var t="http://www.w3.org/2000/svg";function e(o){this.svg=r(),this.currentGroup=[],o.appendChild(this.svg)}e.prototype.clear=function(){if(this.svg){var o=this.svg.parentNode;this.svg=r(),this.currentGroup=[],o&&(o.innerHTML="",o.appendChild(this.svg))}},e.prototype.setTitle=function(o){var l=document.createElement("title"),u=document.createTextNode(o);l.appendChild(u),this.svg.insertBefore(l,this.svg.firstChild)},e.prototype.setResponsiveWidth=function(o,l){if(this.svg.setAttribute("viewBox","0 0 "+o+" "+l),this.svg.setAttribute("preserveAspectRatio","xMinYMin meet"),this.svg.removeAttribute("height"),this.svg.removeAttribute("width"),this.svg.style.display="inline-block",this.svg.style.position="absolute",this.svg.style.top="0",this.svg.style.left="0",this.svg.parentNode){var u=this.svg.parentNode.getAttribute("class");u?u.indexOf("abcjs-container")<0&&this.svg.parentNode.setAttribute("class",u+" abcjs-container"):this.svg.parentNode.setAttribute("class","abcjs-container"),this.svg.parentNode.style.display="inline-block",this.svg.parentNode.style.position="relative",this.svg.parentNode.style.width="100%";var p=l/o*100;this.svg.parentNode.style["padding-bottom"]=p+"%",this.svg.parentNode.style["vertical-align"]="middle",this.svg.parentNode.style.overflow="hidden"}},e.prototype.setSize=function(o,l){this.svg.setAttribute("width",o),this.svg.setAttribute("height",l)},e.prototype.setAttribute=function(o,l){this.svg.setAttribute(o,l)},e.prototype.setScale=function(o){o!==1?(this.svg.style.transform="scale("+o+","+o+")",this.svg.style["-ms-transform"]="scale("+o+","+o+")",this.svg.style["-webkit-transform"]="scale("+o+","+o+")",this.svg.style["transform-origin"]="0 0",this.svg.style["-ms-transform-origin-x"]="0",this.svg.style["-ms-transform-origin-y"]="0",this.svg.style["-webkit-transform-origin-x"]="0",this.svg.style["-webkit-transform-origin-y"]="0"):(this.svg.style.transform="",this.svg.style["-ms-transform"]="",this.svg.style["-webkit-transform"]="")},e.prototype.insertStyles=function(o){var l=document.createElementNS(t,"style");l.textContent=o,this.svg.insertBefore(l,this.svg.firstChild)},e.prototype.setParentStyles=function(o){for(var l in o)o.hasOwnProperty(l)&&this.svg.parentNode&&(this.svg.parentNode.style[l]=o[l]);if(this.dummySvg){var u=document.querySelector("body");u.removeChild(this.dummySvg),this.dummySvg=null}};function a(o,l,u){var p=u-o;return"M "+o+" "+l+" l "+p+" 0 l 0 1 l "+-p+" 0 z "}function n(o,l,u){var p=u-l;return"M "+o+" "+l+" l 0 "+p+" l 1 0 l 0 "+-p+" z "}e.prototype.rect=function(o){var l=[],u=o.x,p=o.y,g=o.x+o.width,h=o.y+o.height;return l.push(a(u,p,g)),l.push(a(u,h,g)),l.push(n(g,p,h)),l.push(n(u,h,p)),this.path({path:l.join(" "),stroke:"none","data-name":o["data-name"]})},e.prototype.dottedLine=function(o){var l=document.createElementNS(t,"line");l.setAttribute("x1",o.x1),l.setAttribute("x2",o.x2),l.setAttribute("y1",o.y1),l.setAttribute("y2",o.y2),l.setAttribute("stroke",o.stroke),l.setAttribute("stroke-dasharray","5,5"),this.svg.insertBefore(l,this.svg.firstChild)},e.prototype.rectBeneath=function(o){var l=document.createElementNS(t,"rect");l.setAttribute("x",o.x),l.setAttribute("width",o.width),l.setAttribute("y",o.y),l.setAttribute("height",o.height),o.stroke&&l.setAttribute("stroke",o.stroke),o["stroke-opacity"]&&l.setAttribute("stroke-opacity",o["stroke-opacity"]),o.fill&&l.setAttribute("fill",o.fill),o["fill-opacity"]&&l.setAttribute("fill-opacity",o["fill-opacity"]),this.svg.insertBefore(l,this.svg.firstChild)},e.prototype.text=function(o,l,u,p){var g=document.createElementNS(t,"text");g.setAttribute("stroke","none");for(var h in l)l.hasOwnProperty(h)&&g.setAttribute(h,l[h]);for(var m=l["data-name"]=="free-text",f=(""+o).split(` -`),d=0;d0?this.currentGroup[0].removeChild(u):this.svg.removeChild(u)),p&&(s[p]=h),h},e.prototype.openGroup=function(o){o=o||{};var l=document.createElementNS(t,"g");return o.klass&&l.setAttribute("class",o.klass),o.fill&&l.setAttribute("fill",o.fill),o.stroke&&l.setAttribute("stroke",o.stroke),o["data-name"]&&l.setAttribute("data-name",o["data-name"]),o.prepend?this.prepend(l):this.append(l),this.currentGroup.unshift(l),l},e.prototype.closeGroup=function(){var o=this.currentGroup.shift();return o&&o.children.length===0?(o.parentElement.removeChild(o),null):o},e.prototype.path=function(o){var l=document.createElementNS(t,"path");for(var u in o)o.hasOwnProperty(u)&&(u==="path"?l.setAttributeNS(null,"d",o.path):u==="klass"?l.setAttributeNS(null,"class",o[u]):o[u]!==void 0&&l.setAttributeNS(null,u,o[u]));return this.append(l),l},e.prototype.pathToBack=function(o){var l=document.createElementNS(t,"path");for(var u in o)o.hasOwnProperty(u)&&(u==="path"?l.setAttributeNS(null,"d",o.path):u==="klass"?l.setAttributeNS(null,"class",o[u]):l.setAttributeNS(null,u,o[u]));return this.prepend(l),l},e.prototype.lineToBack=function(o){for(var l=document.createElementNS(t,"line"),u=Object.keys(o),p=0;p0?this.currentGroup[0].appendChild(o):this.svg.appendChild(o)},e.prototype.prepend=function(o){this.currentGroup.length>0?this.currentGroup[0].appendChild(o):this.svg.insertBefore(o,this.svg.firstChild)},e.prototype.setAttributeOnElement=function(o,l){for(var u in l)l.hasOwnProperty(u)&&o.setAttributeNS(null,u,l[u])},e.prototype.moveElementToChild=function(o,l){o.appendChild(l)};function r(){var o=document.createElementNS(t,"svg");return o.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),o.setAttribute("role","img"),o.setAttribute("fill","currentColor"),o.setAttribute("stroke","currentColor"),o}return d0=e,d0}var u0,d2;function u9(){if(d2)return u0;d2=1;var t=In(),e=d9(),a=function(n){this.paper=new e(n),this.controller=null,this.space=3*t.SPACE,this.padding={},this.reset(),this.firefox=navigator.userAgent.indexOf("Firefox/")>=0};return a.prototype.reset=function(){this.paper.clear(),this.y=0,this.abctune=null,this.path=null,this.isPrint=!1,this.lineThickness=0,this.initVerticalSpace()},a.prototype.newTune=function(n){this.abctune=n,this.setVerticalSpace(n.formatting),this.isPrint=n.media==="print",this.setPadding(n)},a.prototype.setLineThickness=function(n){this.lineThickness=n},a.prototype.setPaddingOverride=function(n){this.paddingOverride={top:n.paddingtop,bottom:n.paddingbottom,right:n.paddingright,left:n.paddingleft}},a.prototype.setPadding=function(n){function s(r,o,l,u,p){n.formatting[l]!==void 0?r.padding[o]=n.formatting[l]:r.paddingOverride[o]!==void 0?r.padding[o]=r.paddingOverride[o]:r.isPrint?r.padding[o]=u:r.padding[o]=p}s(this,"top","topmargin",38,15),s(this,"bottom","botmargin",38,15),s(this,"left","leftmargin",68,15),s(this,"right","rightmargin",68,15)},a.prototype.adjustNonScaledItems=function(n){this.padding.top/=n,this.padding.bottom/=n,this.padding.left/=n,this.padding.right/=n,this.abctune.formatting.headerfont.size/=n,this.abctune.formatting.footerfont.size/=n},a.prototype.initVerticalSpace=function(){this.spacing={composer:7.56,graceBefore:8.67,graceInside:10.67,graceAfter:16,info:0,lineSkipFactor:1.1,music:7.56,paragraphSkipFactor:.4,parts:11.33,slurHeight:1,staffSeparation:61.33,staffTopMargin:0,stemHeight:26.67+10,subtitle:3.78,systemStaffSeparation:48,text:18.9,title:7.56,top:30.24,vocal:0,words:0}},a.prototype.setVerticalSpace=function(n){n.staffsep!==void 0&&(this.spacing.staffSeparation=n.staffsep*4/3),n.composerspace!==void 0&&(this.spacing.composer=n.composerspace*4/3),n.partsspace!==void 0&&(this.spacing.parts=n.partsspace*4/3),n.textspace!==void 0&&(this.spacing.text=n.textspace*4/3),n.musicspace!==void 0&&(this.spacing.music=n.musicspace*4/3),n.titlespace!==void 0&&(this.spacing.title=n.titlespace*4/3),n.sysstaffsep!==void 0&&(this.spacing.systemStaffSeparation=n.sysstaffsep*4/3),n.stafftopmargin!==void 0&&(this.spacing.staffTopMargin=n.stafftopmargin*4/3),n.subtitlespace!==void 0&&(this.spacing.subtitle=n.subtitlespace*4/3),n.topspace!==void 0&&(this.spacing.top=n.topspace*4/3),n.vocalspace!==void 0&&(this.spacing.vocal=n.vocalspace*4/3),n.wordsspace!==void 0&&(this.spacing.words=n.wordsspace*4/3)},a.prototype.calcY=function(n){return this.y-n*t.STEP},a.prototype.yToPitch=function(n){return n/t.STEP},a.prototype.moveY=function(n,s){s===void 0&&(s=1),this.y+=n*s},a.prototype.absolutemoveY=function(n){this.y=n},u0=a,u0}var f0,u2;function f9(){if(u2)return f0;u2=1;function t(e,a,n,s,r,o){var l=e.text;this.rows=[];var u;a&&this.rows.push({move:a});var p=n.calc("textfont","defined-text");if(l==="")this.rows.push({move:p.attr["font-size"]*2});else if(typeof l=="string"){let _=function(b){return b.replace(/^[ \t]*\n/gm,`X -`)};this.rows.push({move:p.attr["font-size"]/2}),this.rows.push({left:s,text:l,font:"textfont",klass:"defined-text",anchor:"start",startChar:e.startChar,endChar:e.endChar,absElemType:"freeText",name:"free-text"});var g=_(l);u=o.calc(g,"textfont","defined-text"),this.rows.push({move:u.height})}else if(l){for(var h=0,m=s,f="textfont",d=0;d0&&(f.abc=f.abc.substring(0,m)),f.pure=f.abc,f.abc=n+f.abc,f.title="";var d=f.pure.split("T:");d.length>1&&(d=d[1].split(` +`),f.title=t.strip(d[0]));var c=f.pure.substring(2,f.pure.indexOf(` +`));f.id=t.strip(c)}),{header:h,tunes:u}};return $p=e,$p}var qp,ky;function YC(){if(ky)return qp;ky=1;function t(e,a){this.numLines=e,this.lineSpace=a,this.verticalSize=this.numLines*this.lineSpace;var n=3;this.bar={pitch:n,pitch2:a*e,height:5}}return t.prototype.bypass=function(e){var a=e.staffGroup.voices;return!!(a.length>0&&a[0].isPercussion)},t.prototype.setRelative=function(e,a,n){switch(e.type){case"bar":a.pitch=this.bar.pitch,a.pitch2=this.bar.pitch2,a.height=this.height;break;case"symbol":var s=this.bar.pitch2/2;if(e.name=="dots.dot")return n?(a.pitch=s,!1):(a.pitch=s+this.lineSpace,!0);break}return n},qp=t,qp}var Gp,xy;function Sy(){if(xy)return Gp;xy=1;var t=function(a,n){this.children=[],this.beams=[],this.otherchildren=[],this.w=0,this.duplicate=!1,this.voicenumber=a,this.voicetotal=n,this.bottom=7,this.top=7,this.specialY={tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}};return t.prototype.addChild=function(e){if(e.type==="bar"){for(var a=!0,n=0;a&&n0&&(u.length>0&&u[u.length-1]!==" "&&(u+=" "),u+=a),o.setAttribute("class",u)}};return Fp=t,Fp}var Cp,$y;function qy(){if($y)return Cp;$y=1;var t=Ap(),e=function(a,n){a===void 0&&(a="abcjs-note_selected"),n===void 0&&(n="#ff0000"),t(this.elemset,a,"",n)};return Cp=e,Cp}var Mp,Gy;function Fy(){if(Gy)return Mp;Gy=1;var t=Ap(),e=function(a,n){a===void 0&&(a="abcjs-note_selected"),n===void 0&&(n="#000000"),t(this.elemset,"",a,n)};return Mp=e,Mp}var Ep,Ay;function yl(){if(Ay)return Ep;Ay=1;var t=qy(),e=Fy(),a=function(s,r,o,l,u,p){p||(p={}),this.tuneNumber=u,this.abcelem=s,this.duration=r,this.durationClass=p.durationClassOveride?p.durationClassOveride:this.duration,this.minspacing=o||0,this.x=0,this.children=[],this.heads=[],this.extra=[],this.extraw=0,this.w=0,this.right=[],this.invisible=!1,this.bottom=void 0,this.top=void 0,this.type=l,s.extraClass&&(this.extraClass=s.extraClass),this.fixed={w:0,t:void 0,b:void 0},this.specialY={tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}};return a.prototype.getFixedCoords=function(){return{x:this.x,w:this.fixed.w,t:this.fixed.t,b:this.fixed.b}},a.prototype.addExtra=function(n){this.fixed.w=Math.max(this.fixed.w,n.dx+n.w),this.fixed.t===void 0?this.fixed.t=n.top:this.fixed.t=Math.max(this.fixed.t,n.top),this.fixed.b===void 0?this.fixed.b=n.bottom:this.fixed.b=Math.min(this.fixed.b,n.bottom),n.dxthis.w&&(this.w=n.dx+n.w),this.right[this.right.length]=n,this._addChild(n)},a.prototype.addFixed=function(n){this._addChild(n)},a.prototype.addFixedX=function(n){this._addChild(n)},a.prototype.addCentered=function(n){var s=n.w/2;-sthis.w&&(this.w=n.dx+s),this.right[this.right.length]=n,this._addChild(n)},a.prototype.setLimit=function(n,s){s[n]&&(this.specialY[n]?this.specialY[n]=Math.max(this.specialY[n],s[n]):this.specialY[n]=s[n])},a.prototype._addChild=function(n){var s=!0;this.abcelem.el_type=="clef"&&n.type=="barNumber"&&(s=!1),n.parent=this,this.children[this.children.length]=n,s&&this.pushTop(n.top),this.pushBottom(n.bottom),this.setLimit("tempoHeightAbove",n),this.setLimit("partHeightAbove",n),this.setLimit("volumeHeightAbove",n),this.setLimit("dynamicHeightAbove",n),this.setLimit("endingHeightAbove",n),this.setLimit("chordHeightAbove",n),this.setLimit("lyricHeightAbove",n),this.setLimit("lyricHeightBelow",n),this.setLimit("chordHeightBelow",n),this.setLimit("volumeHeightBelow",n),this.setLimit("dynamicHeightBelow",n)},a.prototype.pushTop=function(n){n!==void 0&&(this.top===void 0?this.top=n:this.top=Math.max(n,this.top))},a.prototype.pushBottom=function(n){n!==void 0&&(this.bottom===void 0?this.bottom=n:this.bottom=Math.min(n,this.bottom))},a.prototype.setX=function(n){this.x=n;for(var s=0;sthis.top&&(this.top=this.pitch2),this.bottom=r,this.pitch2!==void 0&&this.pitch20?this.top+=o.stemHeight:this.bottom+=o.stemHeight),o.dim&&(this.dim=o.dim),o.position&&(this.position=o.position),o.voiceNumber!==void 0&&(this.voiceNumber=o.voiceNumber),this.height=o.height?o.height:4,o.top&&(this.top=o.top),o.bottom&&(this.bottom=o.bottom),o.name?this.name=o.name:this.c?this.name=this.c:this.name=this.type,o.realWidth?this.realWidth=o.realWidth:this.realWidth=this.w,this.centerVertically=!1,this.type){case"debug":this.chordHeightAbove=this.height;break;case"lyric":o.position&&o.position==="below"?this.lyricHeightBelow=this.height:this.lyricHeightAbove=this.height;break;case"chord":o.position&&o.position==="below"?this.chordHeightBelow=this.height:this.chordHeightAbove=this.height;break;case"text":this.pitch===void 0?o.position&&o.position==="below"?this.chordHeightBelow=this.height:this.chordHeightAbove=this.height:this.centerVertically=!0;break;case"part":this.partHeightAbove=this.height;break}};return t.prototype.getChordDim=function(){if(this.type==="debug"||!this.chordHeightAbove&&!this.chordHeightBelow)return null;var e=0,a=this.type==="chord"?this.realWidth/2:0,n=this.x-a-e,s=n+this.realWidth+e;return{left:n,right:s}},t.prototype.invertLane=function(e){this.lane===void 0&&(this.lane=0),this.lane=e-this.lane-1},t.prototype.putChordInLane=function(e){this.lane=e,this.chordHeightAbove?this.chordHeightAbove=this.height*1.25*this.lane:this.chordHeightBelow=this.height*1.25*this.lane},t.prototype.getLane=function(){return this.lane===void 0?0:this.lane},t.prototype.setX=function(e){this.x=e+this.dx},zp=t,zp}var Up,My;function XC(){if(My)return Up;My=1;var t=yl(),e=ar();function a(c){return c!=null&&c.constructor===Object}function n(c,_){for(var b in _)_.hasOwnProperty(b)&&(Array.isArray(_[b])||a(_[b])||(c[b]=_[b]))}function s(c){var _=new t("",0,0,"",0);return n(_,c),_.top=0,_.bottom=-1,c.abcelem&&(_.abcelem={},n(_.abcelem,c.abcelem),_.abcelem.el_type==="note"&&(_.abcelem.el_type="tabNumber")),c.cloned=_,_}function r(c,_){var b=s(c);if(_)for(var v=c.children,k=!0,y=0;y=0){if(b===_)return c.extra[v].x+c.extra[v].w/2;b++}}return-1}function f(c){if(c.abcelem){var _=c.abcelem;if(_.rest)return _.gracenotes}return null}function m(c,_,b){var v=c.semantics.notesToNumber(_,b);if(v.error)return c.setError(v.error),v;if(v.graces&&v.notes){var k=v.notes.length-1;v.notes[k].graces=v.graces}return v}function d(c,_,b,v,k){for(var y=0;y=0&&(c.semantics.clefTranspose=-12),x.abcelem.type.indexOf("+8")>=0&&(c.semantics.clefTranspose=12)),x.type){case"staff-extra key-signature":this.accidentals=x.abcelem.accidentals,c.semantics.accidentals=this.accidentals;break;case"bar":c.semantics.measureAccidentals={};var A=!1;L===O.children.length-1&&(A=!0);var G=r(x,c);if(G.abcelem.barNumber){delete G.abcelem.barNumber;for(var U=0;U0&&(P.abselem=I,b.push(P),j.children.push(I));break}}},Up=u,Up}var Bp,Ey;function JC(){if(Ey)return Bp;Ey=1;var t=Sy(),e=XC(),a=Vn();function n(){return{tempoHeightAbove:0,partHeightAbove:0,volumeHeightAbove:0,dynamicHeightAbove:0,endingHeightAbove:0,chordHeightAbove:0,lyricHeightAbove:0,lyricHeightBelow:0,chordHeightBelow:0,volumeHeightBelow:0,dynamicHeightBelow:0}}function s(c){for(var _=0,b=0;b_&&(_=v.specialY.lyricHeightBelow)}return _}function r(c,_,b){var v=c.semantics,k=_.controller.getTextSize,y=v.tabInfos(c),T=v.suppress(c),O=!0;if(T&&(O=!1),O){var j=k.calc(y,"tablabelfont","text instrumentname");return b.tabNameInfos={textSize:{height:j.height,width:j.width},name:y},j.height}return 0}function o(c,_){return _[c].isTabStaff?c===_.length-1?!0:!_[c+1].isTabStaff:!1}function l(c){for(var _=0,b=0;b=0;b--)if(!c[b].isTabStaff)return b;return-1}function p(c){for(var _=0;_1}function h(c,_){for(var b=0,v=0,k=!0,y=0;k;){if(!_[b])return-1;if(_[b].isTabStaff||(y=_[b].voices.length),_[b].isTabStaff){if(v++,o(b,_)&&v=c&&(b+1==_.length||!_[b+1].isTabStaff))return b+1;if(b++,b>_.length)return-1}}function f(c,_){for(var b=_;b>=0;b--)if(!c[b].isTabStaff)return c[b];return null}function m(c,_){var b=c[_],v=b.children[0].abcelem;return v.el_type==="clef"?null:_==0?"none":c[_-1].children[0]}function d(c,_,b,v){var k=new e,y={clef:{type:"TAB"}},T=c.linePitch*c.nbLines,O=b.staff;if(O){var j=O[0];if(j&&j.clef&&j.clef.stafflines==0){c.setError("No tablatures when stafflines=0");return}O.splice(O.length,0,y)}var $=b.staffGroup,P=$.voices,L=P[0],x=s(L),B=3,D=v,A=$.staffs[D],G=T+B-A.bottom-x;A.isTabStaff&&(G=A.top);var U={bottom:-1,isTabStaff:!0,specialY:n(),lines:c.nbLines,linePitch:c.linePitch,dy:.15,top:G},V=h(v,$.staffs);if(V!==-1){U.parentIndex=V-1,$.staffs.splice(V,0,U),$.height+=T+B;var I=f($.staffs,V),w=1;g($.staffs,I)&&(w=I.voices.length),y.voices=[];for(var S=0;S0&&(C.duplicate=!0);var H=r(c,_,C)/a.STEP;H=Math.max(H,1),$.staffs[v].top+=1,$.height+=H,C.staff=U;var Y=P.length;P.splice(P.length,0,C);var ee=m(P,S+v);y.voices[S]=[],k.build(c,P,y.voices[S],S,v,ee,Y)}p($.staffs)}}return Bp=d,Bp}var Rp,zy;function Uy(){if(zy)return Rp;zy=1;var t={__:-2,_:-1,"_/":-.5,"=":0,"":0,"^/":.5,"^":1,"^^":2},e=["C","-","D","-","E","F","-","G","-","A","-","B","c","-","d","-","e","f","-","g","-","a","-","b"];function a(s){var r=s.match(/([_^\/]*)([ABCDEFGabcdefg])(,*)('*)/);if(r&&r.length===5){var o=t[r[1]],l=e.indexOf(r[2]),u=r[4].length-r[3].length;return 48+l+o+u*12}return 0}function n(s){s=parseInt(s,10);var r=Math.floor(s/12),o=s%12,l=e[o];if(l==="-"&&(l="^"+e[o-1]),r>4)for(l=l.toLowerCase(),r-=5;r>0;)l+="'",r--;else for(;r<4;)l+=",",r++;return l}return Rp={noteToMidi:a,midiToNote:n},Rp}var jp,By;function Ry(){if(By)return jp;By=1;var{noteToMidi:t,midiToNote:e}=Uy();function a(s,r){var o=t(s);r&&(o+=r);var l=e(o),u=!1,p=!1,g=!1,h=null,f=null,m=!1,d=0;s.startsWith("_")?(u=!0,d=-1,s[1]=="/"?(u=!1,f="v",d=0):s[1]=="_"&&(m=!0,d-=1)):s.startsWith("^")?(p=!0,d=1,s[1]=="/"?(p=!1,f="^",d=0):s[1]=="^"&&(m=!0,d+=1)):s.startsWith("=")&&(h=!0,d=0),g=u||p||f!=null,(g||h)&&(f!=null||m?l=s.slice(2):l=s.slice(1));var c=(l.match(/,/g)||[]).length,_=(l.match(/'/g)||[]).length;this.pitch=o,this.pitchAltered=0,this.name=l,this.acc=d,this.isSharp=p,this.isKeySharp=!1,this.isDouble=m,this.isAltered=g,this.isFlat=u,this.isKeyFlat=!1,this.natural=h,this.quarter=f,this.isLower=this.name==this.name.toLowerCase(),this.name=this.name[0].toUpperCase(),this.hasComma=c,this.isQuoted=_}function n(s){var r=s.name,o=new a(r);return o.pitch=s.pitch,o.hasComma=s.hasComma,o.isLower=s.isLower,o.isQuoted=s.isQuoted,o.isSharp=s.isSharp,o.isKeySharp=s.isKeySharp,o.isFlat=s.isFlat,o.isKeyFlat=s.isKeyFlat,o}return a.prototype.sameNoteAs=function(s){return s.pitch===this.pitch},a.prototype.isLowerThan=function(s){return s.pitch>this.pitch},a.prototype.checkKeyAccidentals=function(s,r){if(!(this.isAltered||this.natural)){if(r[this.name.toUpperCase()])switch(r[this.name.toUpperCase()]){case"__":this.acc=-2,this.pitchAltered=-2;return;case"_":this.acc=-1,this.pitchAltered=-1;return;case"=":this.acc=0,this.pitchAltered=0;return;case"^":this.acc=1,this.pitchAltered=1;return;case"^^":this.acc=2,this.pitchAltered=2;return}else if(s)for(var o=this.name,l=0;l0){m=[];for(var c=0;c0&&(d=f.capoTuning);for(var c=d.length-1,_=0;_=0;c--)if(m.pitch+m.pitchAltered>=f.stringPitches[c]){var _=m.pitch+m.pitchAltered-f.stringPitches[c];return m.quarter==="^"?_-=.5:m.quarter==="v"&&(_+=.5),{num:Math.round(_),str:f.stringPitches.length-1-c,note:m}}return{num:"?",str:f.stringPitches.length-1,note:m}}h.prototype.stringToPitch=function(f){var m=5.3,d=this.strings.length-1;return m+(d-f)*this.linePitch};function g(f,m){var d={num:"?",str:0,note:m};f.push(d),f.error=m.emit()+": unexpected note for instrument"}h.prototype.notesToNumber=function(f,m){var d,c,_=null,b=null;if(f&&(b=[],f.length>1?(b=l(this,f),b.error&&(_=b.error)):f[0].endTie||(d=new e(f[0].name,this.clefTranspose),d.checkKeyAccidentals(this.accidentals,this.measureAccidentals),c=p(this,d),c?b.push(c):(g(b,d),_=b.error))),_)return b;var v=null;if(m){v=[];for(var k=0;k0&&(c+=" capo:"+f.capo),m=m.replace("%T",c)),m}return""},h.prototype.suppress=function(f){var m=f.params.suppress;return!!m};function h(f){var m=f.tuning,d=f.capo,c=f.params.highestNote;this.linePitch=f.linePitch,this.highestNote="a'",c&&(this.highestNote=c),this.measureAccidentals={},this.capo=0,d&&(this.capo=parseInt(d,10)),this.transpose=f.transpose?f.transpose:0,this.tuning=m,this.stringPitches=[];for(var _=0;_0&&(this.capoTuning=n(this)),this.strings=s(this),this.strings.error){f.setError(this.strings.error),f.inError=!0;return}this.secondPos=r(this)}return Np=h,Np}var Op,Ny;function t9(){if(Ny)return Op;Ny=1;var t=YC(),e=JC(),a=e9();n.prototype.init=function(r,o,l,u){this.tune=r,this.params=l,this.tuneNumber=o,this.inError=!1,this.abcTune=r,this.linePitch=3,this.nbLines=u.defaultTuning.length,this.isTabBig=u.isTabBig,this.tabSymbolOffset=u.tabSymbolOffset,this.capo=l.capo,this.transpose=l.visualTranspose,this.hideTabSymbol=l.hideTabSymbol,this.tablature=new t(this.nbLines,this.linePitch);var p=l.tuning;p||(p=u.defaultTuning),this.tuning=p,this.semantics=new a(this)},n.prototype.setError=function(r){r&&(this.error=r,this.inError=!0,this.tune.warnings?this.tune.warnings.push(r):this.tune.warnings=[r])},n.prototype.render=function(r,o,l){this.inError||this.tablature.bypass(o)||e(this,r,o,l)};function n(){}var s=function(){return{name:"StringTab",tablature:n}};return Op=s,Op}var Ip,Oy;function Iy(){if(Oy)return Ip;Oy=1;var t=t9(),e={violin:{name:"StringTab",defaultTuning:["G,","D","A","e"],isTabBig:!1,tabSymbolOffset:0},fiddle:{name:"StringTab",defaultTuning:["G,","D","A","e"],isTabBig:!1,tabSymbolOffset:0},mandolin:{name:"StringTab",defaultTuning:["G,","D","A","e"],isTabBig:!1,tabSymbolOffset:0},guitar:{name:"StringTab",defaultTuning:["E,","A,","D","G","B","e"],isTabBig:!0,tabSymbolOffset:0},fiveString:{name:"StringTab",defaultTuning:["C,","G,","D","A","e"],isTabBig:!1,tabSymbolOffset:-.95}},a={inited:!1,plugins:{},register:function(n){var s=n.name,r=n.tablature;this.plugins[s]=r},setError:function(n,s){n.warnings?n.warning.push(s):n.warnings=[s]},preparePlugins:function(n,s,r){this.inited||(this.register(new t),this.inited=!0);var o=null;if(r.tablature){var l=r.tablature;o=[];for(var u=0;u0)for(var u=o.length,p=0;p1&&o&&o.length>0)for(var u=o.length,p=0;p=0&&h0,y=0;y=0&&(c=x.startChar,x.chord===void 0?d=m:d=null),x.chord&&(m=x),x.el_type==="bar"){if(b){var B=p.abc.substring(c,x.endChar),D={abc:B};m=d&&d.chord&&d.chord.length>0?d.chord[0].name:null,m&&(D.lastChord=m),x.startEnding&&(D.startEnding=x.startEnding),x.endEnding&&(D.endEnding=x.endEnding),_.push(D),c=null,b=!1}}else x.el_type==="note"&&(b=!0)}}o.push({header:f,measures:_,hasPickup:k})}return o}})(),Lp=n,Lp}var Dp,Dy;function i9(){if(Dy)return Dp;Dy=1;var t=Xb(),{relativeMajor:e,transposeKey:a,relativeMode:n,isLegalMode:s}=Kb(),r=Wb(),o;return(function(){o=function($,P,L){if(P==="TEST")return{keyAccidentals:t,relativeMajor:e,transposeKey:a,relativeMode:n,transposeChordName:r};L=parseInt(L,10);var x=[],B;for(B=0;B2?x+=7:L===-12&&(x-=7):L>0&&x<0?x+=7:L<0&&x>0&&(x-=7),L>12?x+=7:L<-12&&(x-=7),x}function f($,P,L,x,B,D){for(var A=[],G=h(B,L,D),U={},V={},I=0;I1?B[1]:"",accidentals:D}}function _($,P,L,x){for(var B=$.pitch,D=m.indexOf($.name),A=m.indexOf(P.root),G=(A+B)%7,U=D+L,V=$.oct;U>6;)V++,U-=7;for(;U<0;)V--,U+=7;for(var I=m[G],w="",S=$.adj,C="=",H=0;H4&&(I=I.toLowerCase()),{acc:w,name:I,upper:I.toUpperCase()}}var b=/([_^=]*)([A-Ga-g])([,']*)/,v=/([_^=]*[A-Ga-g][,']*)?(\d*\/*\d*)?([\>\<\-\)]*)?/;function k($,P,L,x){var B=P==="none"?0:m.indexOf(P),D=$.match(b),A=D[2].toUpperCase(),G=m.indexOf(A)-B;G<0&&(G+=7);var U=d.indexOf(D[3]);A===D[2]&&U--;var V=x[A]||L[A]||"=";return{acc:D[1],name:A,pitch:G,oct:U,adj:j(D[1],L[A],x[A]),courtesy:D[1]===V}}function y($,P,L){for(var x=$.substring(P,L),B,D=[],A=/("[^"]+")+/g;(B=A.exec(x))!==null;)D.push({start:A.lastIndex-B[0].length,end:A.lastIndex});for(var G=/(![^!]+!)+/g;(B=G.exec(x))!==null;)D.push({start:G.lastIndex-B[0].length,end:G.lastIndex});for(var U=[],V=/([_^=]*)([A-Ga-g])([,']*)/g;(B=V.exec(x))!==null;){for(var I=!1,w=0;w=D[w].start&&V.lastIndex<=D[w].end&&(I=!0);I||U.push({note:B[0],index:P+V.lastIndex-B[0].length})}return U}function T($,P,L,x,B){var D=$.substring(P,L),A=/\{/,G=/\}/,U=/([^\{]*)/,V=/(\/*)/,I=D.match(new RegExp(U.source+A.source+V.source+v.source+V.source+v.source+V.source+v.source+V.source+v.source+V.source+v.source+V.source+v.source+V.source+v.source+V.source+v.source+G.source));if(I){for(var w=1+I[1].length,S=0;Sthis.max)&&(this.max=a.abcelem.maxpitch))},t.prototype.addBeam=function(a){this.beams.push(a)},t.prototype.setStemDirection=function(){if(this.average=e(this.total,this.count),this.forceup)this.stemsUp=!0;else if(this.forcedown)this.stemsUp=!1;else{var a=6;this.stemsUp=this.average0&&this.startVoice.staff.voices[0]===e)},Hp=t,Hp}var Wp,Wy;function Qr(){if(Wy)return Wp;Wy=1;var t=Vn(),e={0:{d:[["M",4.83,-14.97],["c",.33,-.03,1.11,0,1.47,.06],["c",1.68,.36,2.97,1.59,3.78,3.6],["c",1.2,2.97,.81,6.96,-.9,9.27],["c",-.78,1.08,-1.71,1.71,-2.91,1.95],["c",-.45,.09,-1.32,.09,-1.77,0],["c",-.81,-.18,-1.47,-.51,-2.07,-1.02],["c",-2.34,-2.07,-3.15,-6.72,-1.74,-10.2],["c",.87,-2.16,2.28,-3.42,4.14,-3.66],["z"],["m",1.11,.87],["c",-.21,-.06,-.69,-.09,-.87,-.06],["c",-.54,.12,-.87,.42,-1.17,.99],["c",-.36,.66,-.51,1.56,-.6,3],["c",-.03,.75,-.03,4.59,0,5.31],["c",.09,1.5,.27,2.4,.6,3.06],["c",.24,.48,.57,.78,.96,.9],["c",.27,.09,.78,.09,1.05,0],["c",.39,-.12,.72,-.42,.96,-.9],["c",.33,-.66,.51,-1.56,.6,-3.06],["c",.03,-.72,.03,-4.56,0,-5.31],["c",-.09,-1.47,-.27,-2.37,-.6,-3.03],["c",-.24,-.48,-.54,-.78,-.93,-.9],["z"]],w:10.78,h:14.959},1:{d:[["M",3.3,-15.06],["c",.06,-.06,.21,-.03,.66,.15],["c",.81,.39,1.08,.39,1.83,.03],["c",.21,-.09,.39,-.15,.42,-.15],["c",.12,0,.21,.09,.27,.21],["c",.06,.12,.06,.33,.06,5.94],["c",0,3.93,0,5.85,.03,6.03],["c",.06,.36,.15,.69,.27,.96],["c",.36,.75,.93,1.17,1.68,1.26],["c",.3,.03,.39,.09,.39,.3],["c",0,.15,-.03,.18,-.09,.24],["c",-.06,.06,-.09,.06,-.48,.06],["c",-.42,0,-.69,-.03,-2.1,-.24],["c",-.9,-.15,-1.77,-.15,-2.67,0],["c",-1.41,.21,-1.68,.24,-2.1,.24],["c",-.39,0,-.42,0,-.48,-.06],["c",-.06,-.06,-.06,-.09,-.06,-.24],["c",0,-.21,.06,-.27,.36,-.3],["c",.75,-.09,1.32,-.51,1.68,-1.26],["c",.12,-.27,.21,-.6,.27,-.96],["c",.03,-.18,.03,-1.59,.03,-4.29],["c",0,-3.87,0,-4.05,-.06,-4.14],["c",-.09,-.15,-.18,-.24,-.39,-.24],["c",-.12,0,-.15,.03,-.21,.06],["c",-.03,.06,-.45,.99,-.96,2.13],["c",-.48,1.14,-.9,2.1,-.93,2.16],["c",-.06,.15,-.21,.24,-.33,.24],["c",-.24,0,-.42,-.18,-.42,-.39],["c",0,-.06,3.27,-7.62,3.33,-7.74],["z"]],w:8.94,h:15.058},2:{d:[["M",4.23,-14.97],["c",.57,-.06,1.68,0,2.34,.18],["c",.69,.18,1.5,.54,2.01,.9],["c",1.35,.96,1.95,2.25,1.77,3.81],["c",-.15,1.35,-.66,2.34,-1.68,3.15],["c",-.6,.48,-1.44,.93,-3.12,1.65],["c",-1.32,.57,-1.8,.81,-2.37,1.14],["c",-.57,.33,-.57,.33,-.24,.27],["c",.39,-.09,1.26,-.09,1.68,0],["c",.72,.15,1.41,.45,2.1,.9],["c",.99,.63,1.86,.87,2.55,.75],["c",.24,-.06,.42,-.15,.57,-.3],["c",.12,-.09,.3,-.42,.3,-.51],["c",0,-.09,.12,-.21,.24,-.24],["c",.18,-.03,.39,.12,.39,.3],["c",0,.12,-.15,.57,-.3,.87],["c",-.54,1.02,-1.56,1.74,-2.79,2.01],["c",-.42,.09,-1.23,.09,-1.62,.03],["c",-.81,-.18,-1.32,-.45,-2.01,-1.11],["c",-.45,-.45,-.63,-.57,-.96,-.69],["c",-.84,-.27,-1.89,.12,-2.25,.9],["c",-.12,.21,-.21,.54,-.21,.72],["c",0,.12,-.12,.21,-.27,.24],["c",-.15,0,-.27,-.03,-.33,-.15],["c",-.09,-.21,.09,-1.08,.33,-1.71],["c",.24,-.66,.66,-1.26,1.29,-1.89],["c",.45,-.45,.9,-.81,1.92,-1.56],["c",1.29,-.93,1.89,-1.44,2.34,-1.98],["c",.87,-1.05,1.26,-2.19,1.2,-3.63],["c",-.06,-1.29,-.39,-2.31,-.96,-2.91],["c",-.36,-.33,-.72,-.51,-1.17,-.54],["c",-.84,-.03,-1.53,.42,-1.59,1.05],["c",-.03,.33,.12,.6,.57,1.14],["c",.45,.54,.54,.87,.42,1.41],["c",-.15,.63,-.54,1.11,-1.08,1.38],["c",-.63,.33,-1.2,.33,-1.83,0],["c",-.24,-.12,-.33,-.18,-.54,-.39],["c",-.18,-.18,-.27,-.3,-.36,-.51],["c",-.24,-.45,-.27,-.84,-.21,-1.38],["c",.12,-.75,.45,-1.41,1.02,-1.98],["c",.72,-.72,1.74,-1.17,2.85,-1.32],["z"]],w:10.764,h:14.97},3:{d:[["M",3.78,-14.97],["c",.3,-.03,1.41,0,1.83,.06],["c",2.22,.3,3.51,1.32,3.72,2.91],["c",.03,.33,.03,1.26,-.03,1.65],["c",-.12,.84,-.48,1.47,-1.05,1.77],["c",-.27,.15,-.36,.24,-.45,.39],["c",-.09,.21,-.09,.36,0,.57],["c",.09,.15,.18,.24,.51,.39],["c",.75,.42,1.23,1.14,1.41,2.13],["c",.06,.42,.06,1.35,0,1.71],["c",-.18,.81,-.48,1.38,-1.02,1.95],["c",-.75,.72,-1.8,1.2,-3.18,1.38],["c",-.42,.06,-1.56,.06,-1.95,0],["c",-1.89,-.33,-3.18,-1.29,-3.51,-2.64],["c",-.03,-.12,-.03,-.33,-.03,-.6],["c",0,-.36,0,-.42,.06,-.63],["c",.12,-.3,.27,-.51,.51,-.75],["c",.24,-.24,.45,-.39,.75,-.51],["c",.21,-.06,.27,-.06,.6,-.06],["c",.33,0,.39,0,.6,.06],["c",.3,.12,.51,.27,.75,.51],["c",.36,.33,.57,.75,.6,1.2],["c",0,.21,0,.27,-.06,.42],["c",-.09,.18,-.12,.24,-.54,.54],["c",-.51,.36,-.63,.54,-.6,.87],["c",.06,.54,.54,.9,1.38,.99],["c",.36,.06,.72,.03,.96,-.06],["c",.81,-.27,1.29,-1.23,1.44,-2.79],["c",.03,-.45,.03,-1.95,-.03,-2.37],["c",-.09,-.75,-.33,-1.23,-.75,-1.44],["c",-.33,-.18,-.45,-.18,-1.98,-.18],["c",-1.35,0,-1.41,0,-1.5,-.06],["c",-.18,-.12,-.24,-.39,-.12,-.6],["c",.12,-.15,.15,-.15,1.68,-.15],["c",1.5,0,1.62,0,1.89,-.15],["c",.18,-.09,.42,-.36,.54,-.57],["c",.18,-.42,.27,-.9,.3,-1.95],["c",.03,-1.2,-.06,-1.8,-.36,-2.37],["c",-.24,-.48,-.63,-.81,-1.14,-.96],["c",-.3,-.06,-1.08,-.06,-1.38,.03],["c",-.6,.15,-.9,.42,-.96,.84],["c",-.03,.3,.06,.45,.63,.84],["c",.33,.24,.42,.39,.45,.63],["c",.03,.72,-.57,1.5,-1.32,1.65],["c",-1.05,.27,-2.1,-.57,-2.1,-1.65],["c",0,-.45,.15,-.96,.39,-1.38],["c",.12,-.21,.54,-.63,.81,-.81],["c",.57,-.42,1.38,-.69,2.25,-.81],["z"]],w:9.735,h:14.967},4:{d:[["M",8.64,-14.94],["c",.27,-.09,.42,-.12,.54,-.03],["c",.09,.06,.15,.21,.15,.3],["c",-.03,.06,-1.92,2.31,-4.23,5.04],["c",-2.31,2.73,-4.23,4.98,-4.26,5.01],["c",-.03,.06,.12,.06,2.55,.06],["l",2.61,0],["l",0,-2.37],["c",0,-2.19,.03,-2.37,.06,-2.46],["c",.03,-.06,.21,-.18,.57,-.42],["c",1.08,-.72,1.38,-1.08,1.86,-2.16],["c",.12,-.3,.24,-.54,.27,-.57],["c",.12,-.12,.39,-.06,.45,.12],["c",.06,.09,.06,.57,.06,3.96],["l",0,3.9],["l",1.08,0],["c",1.05,0,1.11,0,1.2,.06],["c",.24,.15,.24,.54,0,.69],["c",-.09,.06,-.15,.06,-1.2,.06],["l",-1.08,0],["l",0,.33],["c",0,.57,.09,1.11,.3,1.53],["c",.36,.75,.93,1.17,1.68,1.26],["c",.3,.03,.39,.09,.39,.3],["c",0,.15,-.03,.18,-.09,.24],["c",-.06,.06,-.09,.06,-.48,.06],["c",-.42,0,-.69,-.03,-2.1,-.24],["c",-.9,-.15,-1.77,-.15,-2.67,0],["c",-1.41,.21,-1.68,.24,-2.1,.24],["c",-.39,0,-.42,0,-.48,-.06],["c",-.06,-.06,-.06,-.09,-.06,-.24],["c",0,-.21,.06,-.27,.36,-.3],["c",.75,-.09,1.32,-.51,1.68,-1.26],["c",.21,-.42,.3,-.96,.3,-1.53],["l",0,-.33],["l",-2.7,0],["c",-2.91,0,-2.85,0,-3.09,-.15],["c",-.18,-.12,-.3,-.39,-.27,-.54],["c",.03,-.06,.18,-.24,.33,-.45],["c",.75,-.9,1.59,-2.07,2.13,-3.03],["c",.33,-.54,.84,-1.62,1.05,-2.16],["c",.57,-1.41,.84,-2.64,.9,-4.05],["c",.03,-.63,.06,-.72,.24,-.81],["l",.12,-.06],["l",.45,.12],["c",.66,.18,1.02,.24,1.47,.27],["c",.6,.03,1.23,-.09,2.01,-.33],["z"]],w:11.795,h:14.994},5:{d:[["M",1.02,-14.94],["c",.12,-.09,.03,-.09,1.08,.06],["c",2.49,.36,4.35,.36,6.96,-.06],["c",.57,-.09,.66,-.06,.81,.06],["c",.15,.18,.12,.24,-.15,.51],["c",-1.29,1.26,-3.24,2.04,-5.58,2.31],["c",-.6,.09,-1.2,.12,-1.71,.12],["c",-.39,0,-.45,0,-.57,.06],["c",-.09,.06,-.15,.12,-.21,.21],["l",-.06,.12],["l",0,1.65],["l",0,1.65],["l",.21,-.21],["c",.66,-.57,1.41,-.96,2.19,-1.14],["c",.33,-.06,1.41,-.06,1.95,0],["c",2.61,.36,4.02,1.74,4.26,4.14],["c",.03,.45,.03,1.08,-.03,1.44],["c",-.18,1.02,-.78,2.01,-1.59,2.7],["c",-.72,.57,-1.62,1.02,-2.49,1.2],["c",-1.38,.27,-3.03,.06,-4.2,-.54],["c",-1.08,-.54,-1.71,-1.32,-1.86,-2.28],["c",-.09,-.69,.09,-1.29,.57,-1.74],["c",.24,-.24,.45,-.39,.75,-.51],["c",.21,-.06,.27,-.06,.6,-.06],["c",.33,0,.39,0,.6,.06],["c",.3,.12,.51,.27,.75,.51],["c",.36,.33,.57,.75,.6,1.2],["c",0,.21,0,.27,-.06,.42],["c",-.09,.18,-.12,.24,-.54,.54],["c",-.18,.12,-.36,.3,-.42,.33],["c",-.36,.42,-.18,.99,.36,1.26],["c",.51,.27,1.47,.36,2.01,.27],["c",.93,-.21,1.47,-1.17,1.65,-2.91],["c",.06,-.45,.06,-1.89,0,-2.31],["c",-.15,-1.2,-.51,-2.1,-1.05,-2.55],["c",-.21,-.18,-.54,-.36,-.81,-.39],["c",-.3,-.06,-.84,-.03,-1.26,.06],["c",-.93,.18,-1.65,.6,-2.16,1.2],["c",-.15,.21,-.27,.3,-.39,.3],["c",-.15,0,-.3,-.09,-.36,-.18],["c",-.06,-.09,-.06,-.15,-.06,-3.66],["c",0,-3.39,0,-3.57,.06,-3.66],["c",.03,-.06,.09,-.15,.15,-.18],["z"]],w:10.212,h:14.997},6:{d:[["M",4.98,-14.97],["c",.36,-.03,1.2,0,1.59,.06],["c",.9,.15,1.68,.51,2.25,1.05],["c",.57,.51,.87,1.23,.84,1.98],["c",-.03,.51,-.21,.9,-.6,1.26],["c",-.24,.24,-.45,.39,-.75,.51],["c",-.21,.06,-.27,.06,-.6,.06],["c",-.33,0,-.39,0,-.6,-.06],["c",-.3,-.12,-.51,-.27,-.75,-.51],["c",-.39,-.36,-.57,-.78,-.57,-1.26],["c",0,-.27,0,-.3,.09,-.42],["c",.03,-.09,.18,-.21,.3,-.3],["c",.12,-.09,.3,-.21,.39,-.27],["c",.09,-.06,.21,-.18,.27,-.24],["c",.06,-.12,.09,-.15,.09,-.33],["c",0,-.18,-.03,-.24,-.09,-.36],["c",-.24,-.39,-.75,-.6,-1.38,-.57],["c",-.54,.03,-.9,.18,-1.23,.48],["c",-.81,.72,-1.08,2.16,-.96,5.37],["l",0,.63],["l",.3,-.12],["c",.78,-.27,1.29,-.33,2.1,-.27],["c",1.47,.12,2.49,.54,3.27,1.29],["c",.48,.51,.81,1.11,.96,1.89],["c",.06,.27,.06,.42,.06,.93],["c",0,.54,0,.69,-.06,.96],["c",-.15,.78,-.48,1.38,-.96,1.89],["c",-.54,.51,-1.17,.87,-1.98,1.08],["c",-1.14,.3,-2.4,.33,-3.24,.03],["c",-1.5,-.48,-2.64,-1.89,-3.27,-4.02],["c",-.36,-1.23,-.51,-2.82,-.42,-4.08],["c",.3,-3.66,2.28,-6.3,4.95,-6.66],["z"],["m",.66,7.41],["c",-.27,-.09,-.81,-.12,-1.08,-.06],["c",-.72,.18,-1.08,.69,-1.23,1.71],["c",-.06,.54,-.06,3,0,3.54],["c",.18,1.26,.72,1.77,1.8,1.74],["c",.39,-.03,.63,-.09,.9,-.27],["c",.66,-.42,.9,-1.32,.9,-3.24],["c",0,-2.22,-.36,-3.12,-1.29,-3.42],["z"]],w:9.956,h:14.982},7:{d:[["M",.21,-14.97],["c",.21,-.06,.45,0,.54,.15],["c",.06,.09,.06,.15,.06,.39],["c",0,.24,0,.33,.06,.42],["c",.06,.12,.21,.24,.27,.24],["c",.03,0,.12,-.12,.24,-.21],["c",.96,-1.2,2.58,-1.35,3.99,-.42],["c",.15,.12,.42,.3,.54,.45],["c",.48,.39,.81,.57,1.29,.6],["c",.69,.03,1.5,-.3,2.13,-.87],["c",.09,-.09,.27,-.3,.39,-.45],["c",.12,-.15,.24,-.27,.3,-.3],["c",.18,-.06,.39,.03,.51,.21],["c",.06,.18,.06,.24,-.27,.72],["c",-.18,.24,-.54,.78,-.78,1.17],["c",-2.37,3.54,-3.54,6.27,-3.87,9],["c",-.03,.33,-.03,.66,-.03,1.26],["c",0,.9,0,1.08,.15,1.89],["c",.06,.45,.06,.48,.03,.6],["c",-.06,.09,-.21,.21,-.3,.21],["c",-.03,0,-.27,-.06,-.54,-.15],["c",-.84,-.27,-1.11,-.3,-1.65,-.3],["c",-.57,0,-.84,.03,-1.56,.27],["c",-.6,.18,-.69,.21,-.81,.15],["c",-.12,-.06,-.21,-.18,-.21,-.3],["c",0,-.15,.6,-1.44,1.2,-2.61],["c",1.14,-2.22,2.73,-4.68,5.1,-8.01],["c",.21,-.27,.36,-.48,.33,-.48],["c",0,0,-.12,.06,-.27,.12],["c",-.54,.3,-.99,.39,-1.56,.39],["c",-.75,.03,-1.2,-.18,-1.83,-.75],["c",-.99,-.9,-1.83,-1.17,-2.31,-.72],["c",-.18,.15,-.36,.51,-.45,.84],["c",-.06,.24,-.06,.33,-.09,1.98],["c",0,1.62,-.03,1.74,-.06,1.8],["c",-.15,.24,-.54,.24,-.69,0],["c",-.06,-.09,-.06,-.15,-.06,-3.57],["c",0,-3.42,0,-3.48,.06,-3.57],["c",.03,-.06,.09,-.12,.15,-.15],["z"]],w:10.561,h:15.093},8:{d:[["M",4.98,-14.97],["c",.33,-.03,1.02,-.03,1.32,0],["c",1.32,.12,2.49,.6,3.21,1.32],["c",.39,.39,.66,.81,.78,1.29],["c",.09,.36,.09,1.08,0,1.44],["c",-.21,.84,-.66,1.59,-1.59,2.55],["l",-.3,.3],["l",.27,.18],["c",1.47,.93,2.31,2.31,2.25,3.75],["c",-.03,.75,-.24,1.35,-.63,1.95],["c",-.45,.66,-1.02,1.14,-1.83,1.53],["c",-1.8,.87,-4.2,.87,-6,.03],["c",-1.62,-.78,-2.52,-2.16,-2.46,-3.66],["c",.06,-.99,.54,-1.77,1.8,-2.97],["c",.54,-.51,.54,-.54,.48,-.57],["c",-.39,-.27,-.96,-.78,-1.2,-1.14],["c",-.75,-1.11,-.87,-2.4,-.3,-3.6],["c",.69,-1.35,2.25,-2.25,4.2,-2.4],["z"],["m",1.53,.69],["c",-.42,-.09,-1.11,-.12,-1.38,-.06],["c",-.3,.06,-.6,.18,-.81,.3],["c",-.21,.12,-.6,.51,-.72,.72],["c",-.51,.87,-.42,1.89,.21,2.52],["c",.21,.21,.36,.3,1.95,1.23],["c",.96,.54,1.74,.99,1.77,1.02],["c",.09,0,.63,-.6,.99,-1.11],["c",.21,-.36,.48,-.87,.57,-1.23],["c",.06,-.24,.06,-.36,.06,-.72],["c",0,-.45,-.03,-.66,-.15,-.99],["c",-.39,-.81,-1.29,-1.44,-2.49,-1.68],["z"],["m",-1.44,8.07],["l",-1.89,-1.08],["c",-.03,0,-.18,.15,-.39,.33],["c",-1.2,1.08,-1.65,1.95,-1.59,3],["c",.09,1.59,1.35,2.85,3.21,3.24],["c",.33,.06,.45,.06,.93,.06],["c",.63,0,.81,-.03,1.29,-.27],["c",.9,-.42,1.47,-1.41,1.41,-2.4],["c",-.06,-.66,-.39,-1.29,-.9,-1.65],["c",-.12,-.09,-1.05,-.63,-2.07,-1.23],["z"]],w:10.926,h:14.989},9:{d:[["M",4.23,-14.97],["c",.42,-.03,1.29,0,1.62,.06],["c",.51,.12,.93,.3,1.38,.57],["c",1.53,1.02,2.52,3.24,2.73,5.94],["c",.18,2.55,-.48,4.98,-1.83,6.57],["c",-1.05,1.26,-2.4,1.89,-3.93,1.83],["c",-1.23,-.06,-2.31,-.45,-3.03,-1.14],["c",-.57,-.51,-.87,-1.23,-.84,-1.98],["c",.03,-.51,.21,-.9,.6,-1.26],["c",.24,-.24,.45,-.39,.75,-.51],["c",.21,-.06,.27,-.06,.6,-.06],["c",.33,0,.39,0,.6,.06],["c",.3,.12,.51,.27,.75,.51],["c",.39,.36,.57,.78,.57,1.26],["c",0,.27,0,.3,-.09,.42],["c",-.03,.09,-.18,.21,-.3,.3],["c",-.12,.09,-.3,.21,-.39,.27],["c",-.09,.06,-.21,.18,-.27,.24],["c",-.06,.12,-.06,.15,-.06,.33],["c",0,.18,0,.24,.06,.36],["c",.24,.39,.75,.6,1.38,.57],["c",.54,-.03,.9,-.18,1.23,-.48],["c",.81,-.72,1.08,-2.16,.96,-5.37],["l",0,-.63],["l",-.3,.12],["c",-.78,.27,-1.29,.33,-2.1,.27],["c",-1.47,-.12,-2.49,-.54,-3.27,-1.29],["c",-.48,-.51,-.81,-1.11,-.96,-1.89],["c",-.06,-.27,-.06,-.42,-.06,-.96],["c",0,-.51,0,-.66,.06,-.93],["c",.15,-.78,.48,-1.38,.96,-1.89],["c",.15,-.12,.33,-.27,.42,-.36],["c",.69,-.51,1.62,-.81,2.76,-.93],["z"],["m",1.17,.66],["c",-.21,-.06,-.57,-.06,-.81,-.03],["c",-.78,.12,-1.26,.69,-1.41,1.74],["c",-.12,.63,-.15,1.95,-.09,2.79],["c",.12,1.71,.63,2.4,1.77,2.46],["c",1.08,.03,1.62,-.48,1.8,-1.74],["c",.06,-.54,.06,-3,0,-3.54],["c",-.15,-1.05,-.51,-1.53,-1.26,-1.68],["z"]],w:9.959,h:14.986},"rests.multimeasure":{d:[["M",0,-4],["l",0,16],["l",1,0],["l",0,-5],["l",40,0],["l",0,5],["l",1,0],["l",0,-16],["l",-1,0],["l",0,5],["l",-40,0],["l",0,-5],["z"]],w:42,h:18},"rests.whole":{d:[["M",.06,.03],["l",.09,-.06],["l",5.46,0],["l",5.49,0],["l",.09,.06],["l",.06,.09],["l",0,2.19],["l",0,2.19],["l",-.06,.09],["l",-.09,.06],["l",-5.49,0],["l",-5.46,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-2.19],["l",0,-2.19],["z"]],w:11.25,h:4.68},"rests.half":{d:[["M",.06,-4.62],["l",.09,-.06],["l",5.46,0],["l",5.49,0],["l",.09,.06],["l",.06,.09],["l",0,2.19],["l",0,2.19],["l",-.06,.09],["l",-.09,.06],["l",-5.49,0],["l",-5.46,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-2.19],["l",0,-2.19],["z"]],w:11.25,h:4.68},"rests.quarter":{d:[["M",1.89,-11.82],["c",.12,-.06,.24,-.06,.36,-.03],["c",.09,.06,4.74,5.58,4.86,5.82],["c",.21,.39,.15,.78,-.15,1.26],["c",-.24,.33,-.72,.81,-1.62,1.56],["c",-.45,.36,-.87,.75,-.96,.84],["c",-.93,.99,-1.14,2.49,-.6,3.63],["c",.18,.39,.27,.48,1.32,1.68],["c",1.92,2.25,1.83,2.16,1.83,2.34],["c",0,.18,-.18,.36,-.36,.39],["c",-.15,0,-.27,-.06,-.48,-.27],["c",-.75,-.75,-2.46,-1.29,-3.39,-1.08],["c",-.45,.09,-.69,.27,-.9,.69],["c",-.12,.3,-.21,.66,-.24,1.14],["c",-.03,.66,.09,1.35,.3,2.01],["c",.15,.42,.24,.66,.45,.96],["c",.18,.24,.18,.33,.03,.42],["c",-.12,.06,-.18,.03,-.45,-.3],["c",-1.08,-1.38,-2.07,-3.36,-2.4,-4.83],["c",-.27,-1.05,-.15,-1.77,.27,-2.07],["c",.21,-.12,.42,-.15,.87,-.15],["c",.87,.06,2.1,.39,3.3,.9],["l",.39,.18],["l",-1.65,-1.95],["c",-2.52,-2.97,-2.61,-3.09,-2.7,-3.27],["c",-.09,-.24,-.12,-.48,-.03,-.75],["c",.15,-.48,.57,-.96,1.83,-2.01],["c",.45,-.36,.84,-.72,.93,-.78],["c",.69,-.75,1.02,-1.8,.9,-2.79],["c",-.06,-.33,-.21,-.84,-.39,-1.11],["c",-.09,-.15,-.45,-.6,-.81,-1.05],["c",-.36,-.42,-.69,-.81,-.72,-.87],["c",-.09,-.18,0,-.42,.21,-.51],["z"]],w:7.888,h:21.435},"rests.8th":{d:[["M",1.68,-6.12],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.6,.48],["c",.12,0,.18,0,.33,-.09],["c",.39,-.18,1.32,-1.29,1.68,-1.98],["c",.09,-.21,.24,-.3,.39,-.3],["c",.12,0,.27,.09,.33,.18],["c",.03,.06,-.27,1.11,-1.86,6.42],["c",-1.02,3.48,-1.89,6.39,-1.92,6.42],["c",0,.03,-.12,.12,-.24,.15],["c",-.18,.09,-.21,.09,-.45,.09],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.15,-.57,1.68,-4.92],["c",.96,-2.67,1.74,-4.89,1.71,-4.89],["l",-.51,.15],["c",-1.08,.36,-1.74,.48,-2.55,.48],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:7.534,h:13.883},"rests.16th":{d:[["M",3.33,-6.12],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.15,.39,.57,.57,.87,.42],["c",.39,-.18,1.2,-1.23,1.62,-2.07],["c",.06,-.15,.24,-.24,.36,-.24],["c",.12,0,.27,.09,.33,.18],["c",.03,.06,-.45,1.86,-2.67,10.17],["c",-1.5,5.55,-2.73,10.14,-2.76,10.17],["c",-.03,.03,-.12,.12,-.24,.15],["c",-.18,.09,-.21,.09,-.45,.09],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.12,-.57,1.44,-4.92],["c",.81,-2.67,1.47,-4.86,1.47,-4.89],["c",-.03,0,-.27,.06,-.54,.15],["c",-1.08,.36,-1.77,.48,-2.58,.48],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.72,-1.05,2.22,-1.23,3.06,-.42],["c",.3,.33,.42,.6,.6,1.38],["c",.09,.45,.21,.78,.33,.9],["c",.09,.09,.27,.18,.45,.21],["c",.12,0,.18,0,.33,-.09],["c",.33,-.15,1.02,-.93,1.41,-1.59],["c",.12,-.21,.18,-.39,.39,-1.08],["c",.66,-2.1,1.17,-3.84,1.17,-3.87],["c",0,0,-.21,.06,-.42,.15],["c",-.51,.15,-1.2,.33,-1.68,.42],["c",-.33,.06,-.51,.06,-.96,.06],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:9.724,h:21.383},"rests.32nd":{d:[["M",4.23,-13.62],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.6,.48],["c",.12,0,.18,0,.27,-.06],["c",.33,-.21,.99,-1.11,1.44,-1.98],["c",.09,-.24,.21,-.33,.39,-.33],["c",.12,0,.27,.09,.33,.18],["c",.03,.06,-.57,2.67,-3.21,13.89],["c",-1.8,7.62,-3.3,13.89,-3.3,13.92],["c",-.03,.06,-.12,.12,-.24,.18],["c",-.21,.09,-.24,.09,-.48,.09],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.09,-.57,1.23,-4.92],["c",.69,-2.67,1.26,-4.86,1.29,-4.89],["c",0,-.03,-.12,-.03,-.48,.12],["c",-1.17,.39,-2.22,.57,-3,.54],["c",-.42,-.03,-.75,-.12,-1.11,-.3],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.72,-1.05,2.22,-1.23,3.06,-.42],["c",.3,.33,.42,.6,.6,1.38],["c",.09,.45,.21,.78,.33,.9],["c",.12,.09,.3,.18,.48,.21],["c",.12,0,.18,0,.3,-.09],["c",.42,-.21,1.29,-1.29,1.56,-1.89],["c",.03,-.12,1.23,-4.59,1.23,-4.65],["c",0,-.03,-.18,.03,-.39,.12],["c",-.63,.18,-1.2,.36,-1.74,.45],["c",-.39,.06,-.54,.06,-1.02,.06],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.72,-1.05,2.22,-1.23,3.06,-.42],["c",.3,.33,.42,.6,.6,1.38],["c",.09,.45,.21,.78,.33,.9],["c",.18,.18,.51,.27,.72,.15],["c",.3,-.12,.69,-.57,1.08,-1.17],["c",.42,-.6,.39,-.51,1.05,-3.03],["c",.33,-1.26,.6,-2.31,.6,-2.34],["c",0,0,-.21,.03,-.45,.12],["c",-.57,.18,-1.14,.33,-1.62,.42],["c",-.33,.06,-.51,.06,-.96,.06],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:11.373,h:28.883},"rests.64th":{d:[["M",5.13,-13.62],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.15,.63,.21,.81,.33,.96],["c",.18,.21,.54,.3,.75,.18],["c",.24,-.12,.63,-.66,1.08,-1.56],["c",.33,-.66,.39,-.72,.6,-.72],["c",.12,0,.27,.09,.33,.18],["c",.03,.06,-.69,3.66,-3.54,17.64],["c",-1.95,9.66,-3.57,17.61,-3.57,17.64],["c",-.03,.06,-.12,.12,-.24,.18],["c",-.21,.09,-.24,.09,-.48,.09],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.06,-.57,1.05,-4.95],["c",.6,-2.7,1.08,-4.89,1.08,-4.92],["c",0,0,-.24,.06,-.51,.15],["c",-.66,.24,-1.2,.36,-1.77,.48],["c",-.42,.06,-.57,.06,-1.05,.06],["c",-.69,0,-.87,-.03,-1.35,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.72,-1.05,2.22,-1.23,3.06,-.42],["c",.3,.33,.42,.6,.6,1.38],["c",.09,.45,.21,.78,.33,.9],["c",.09,.09,.27,.18,.45,.21],["c",.21,.03,.39,-.09,.72,-.42],["c",.45,-.45,1.02,-1.26,1.17,-1.65],["c",.03,-.09,.27,-1.14,.54,-2.34],["c",.27,-1.2,.48,-2.19,.51,-2.22],["c",0,-.03,-.09,-.03,-.48,.12],["c",-1.17,.39,-2.22,.57,-3,.54],["c",-.42,-.03,-.75,-.12,-1.11,-.3],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.15,.39,.57,.57,.9,.42],["c",.36,-.18,1.2,-1.26,1.47,-1.89],["c",.03,-.09,.3,-1.2,.57,-2.43],["l",.51,-2.28],["l",-.54,.18],["c",-1.11,.36,-1.8,.48,-2.61,.48],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.15,.63,.21,.81,.33,.96],["c",.21,.21,.54,.3,.75,.18],["c",.36,-.18,.93,-.93,1.29,-1.68],["c",.12,-.24,.18,-.48,.63,-2.55],["l",.51,-2.31],["c",0,-.03,-.18,.03,-.39,.12],["c",-1.14,.36,-2.1,.54,-2.82,.51],["c",-.42,-.03,-.75,-.12,-1.11,-.3],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:12.453,h:36.383},"rests.128th":{d:[["M",6.03,-21.12],["c",.66,-.09,1.23,.09,1.68,.51],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.6,.48],["c",.21,0,.33,-.06,.54,-.36],["c",.15,-.21,.54,-.93,.78,-1.47],["c",.15,-.33,.18,-.39,.3,-.48],["c",.18,-.09,.45,0,.51,.15],["c",.03,.09,-7.11,42.75,-7.17,42.84],["c",-.03,.03,-.15,.09,-.24,.15],["c",-.18,.06,-.24,.06,-.45,.06],["c",-.24,0,-.3,0,-.48,-.06],["c",-.09,-.06,-.21,-.12,-.21,-.15],["c",-.06,-.03,.03,-.57,.84,-4.98],["c",.51,-2.7,.93,-4.92,.9,-4.92],["c",0,0,-.15,.06,-.36,.12],["c",-.78,.27,-1.62,.48,-2.31,.57],["c",-.15,.03,-.54,.03,-.81,.03],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.63,.48],["c",.12,0,.18,0,.3,-.09],["c",.42,-.21,1.14,-1.11,1.5,-1.83],["c",.12,-.27,.12,-.27,.54,-2.52],["c",.24,-1.23,.42,-2.25,.39,-2.25],["c",0,0,-.24,.06,-.51,.18],["c",-1.26,.39,-2.25,.57,-3.06,.54],["c",-.42,-.03,-.75,-.12,-1.11,-.3],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.15,.63,.21,.81,.33,.96],["c",.18,.21,.51,.3,.75,.18],["c",.36,-.15,1.05,-.99,1.41,-1.77],["l",.15,-.3],["l",.42,-2.25],["c",.21,-1.26,.42,-2.28,.39,-2.28],["l",-.51,.15],["c",-1.11,.39,-1.89,.51,-2.7,.51],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.15,.63,.21,.81,.33,.96],["c",.18,.18,.48,.27,.72,.21],["c",.33,-.12,1.14,-1.26,1.41,-1.95],["c",0,-.09,.21,-1.11,.45,-2.34],["c",.21,-1.2,.39,-2.22,.39,-2.28],["c",.03,-.03,0,-.03,-.45,.12],["c",-.57,.18,-1.2,.33,-1.71,.42],["c",-.3,.06,-.51,.06,-.93,.06],["c",-.66,0,-.84,-.03,-1.32,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.36,-.54,.96,-.87,1.65,-.93],["c",.54,-.03,1.02,.15,1.41,.54],["c",.27,.3,.39,.54,.57,1.26],["c",.09,.33,.18,.66,.21,.72],["c",.12,.27,.33,.45,.6,.48],["c",.18,0,.36,-.09,.57,-.33],["c",.33,-.36,.78,-1.14,.93,-1.56],["c",.03,-.12,.24,-1.2,.45,-2.4],["c",.24,-1.2,.42,-2.22,.42,-2.28],["c",.03,-.03,0,-.03,-.39,.09],["c",-1.05,.36,-1.8,.48,-2.58,.48],["c",-.63,0,-.84,-.03,-1.29,-.27],["c",-1.32,-.63,-1.77,-2.16,-1.02,-3.3],["c",.33,-.45,.84,-.81,1.38,-.9],["z"]],w:12.992,h:43.883},"accidentals.sharp":{d:[["M",5.73,-11.19],["c",.21,-.12,.54,-.03,.66,.24],["c",.06,.12,.06,.21,.06,2.31],["c",0,1.23,0,2.22,.03,2.22],["c",0,0,.27,-.12,.6,-.24],["c",.69,-.27,.78,-.3,.96,-.15],["c",.21,.15,.21,.18,.21,1.38],["c",0,1.02,0,1.11,-.06,1.2],["c",-.03,.06,-.09,.12,-.12,.15],["c",-.06,.03,-.42,.21,-.84,.36],["l",-.75,.33],["l",-.03,2.43],["c",0,1.32,0,2.43,.03,2.43],["c",0,0,.27,-.12,.6,-.24],["c",.69,-.27,.78,-.3,.96,-.15],["c",.21,.15,.21,.18,.21,1.38],["c",0,1.02,0,1.11,-.06,1.2],["c",-.03,.06,-.09,.12,-.12,.15],["c",-.06,.03,-.42,.21,-.84,.36],["l",-.75,.33],["l",-.03,2.52],["c",0,2.28,-.03,2.55,-.06,2.64],["c",-.21,.36,-.72,.36,-.93,0],["c",-.03,-.09,-.06,-.33,-.06,-2.43],["l",0,-2.31],["l",-1.29,.51],["l",-1.26,.51],["l",0,2.43],["c",0,2.58,0,2.52,-.15,2.67],["c",-.06,.09,-.27,.18,-.36,.18],["c",-.12,0,-.33,-.09,-.39,-.18],["c",-.15,-.15,-.15,-.09,-.15,-2.43],["c",0,-1.23,0,-2.22,-.03,-2.22],["c",0,0,-.27,.12,-.6,.24],["c",-.69,.27,-.78,.3,-.96,.15],["c",-.21,-.15,-.21,-.18,-.21,-1.38],["c",0,-1.02,0,-1.11,.06,-1.2],["c",.03,-.06,.09,-.12,.12,-.15],["c",.06,-.03,.42,-.21,.84,-.36],["l",.78,-.33],["l",0,-2.43],["c",0,-1.32,0,-2.43,-.03,-2.43],["c",0,0,-.27,.12,-.6,.24],["c",-.69,.27,-.78,.3,-.96,.15],["c",-.21,-.15,-.21,-.18,-.21,-1.38],["c",0,-1.02,0,-1.11,.06,-1.2],["c",.03,-.06,.09,-.12,.12,-.15],["c",.06,-.03,.42,-.21,.84,-.36],["l",.78,-.33],["l",0,-2.52],["c",0,-2.28,.03,-2.55,.06,-2.64],["c",.21,-.36,.72,-.36,.93,0],["c",.03,.09,.06,.33,.06,2.43],["l",.03,2.31],["l",1.26,-.51],["l",1.26,-.51],["l",0,-2.43],["c",0,-2.28,0,-2.43,.06,-2.55],["c",.06,-.12,.12,-.18,.27,-.24],["z"],["m",-.33,10.65],["l",0,-2.43],["l",-1.29,.51],["l",-1.26,.51],["l",0,2.46],["l",0,2.43],["l",.09,-.03],["c",.06,-.03,.63,-.27,1.29,-.51],["l",1.17,-.48],["l",0,-2.46],["z"]],w:8.25,h:22.462},"accidentals.halfsharp":{d:[["M",2.43,-10.05],["c",.21,-.12,.54,-.03,.66,.24],["c",.06,.12,.06,.21,.06,2.01],["c",0,1.05,0,1.89,.03,1.89],["l",.72,-.48],["c",.69,-.48,.69,-.51,.87,-.51],["c",.15,0,.18,.03,.27,.09],["c",.21,.15,.21,.18,.21,1.41],["c",0,1.11,-.03,1.14,-.09,1.23],["c",-.03,.03,-.48,.39,-1.02,.75],["l",-.99,.66],["l",0,2.37],["c",0,1.32,0,2.37,.03,2.37],["l",.72,-.48],["c",.69,-.48,.69,-.51,.87,-.51],["c",.15,0,.18,.03,.27,.09],["c",.21,.15,.21,.18,.21,1.41],["c",0,1.11,-.03,1.14,-.09,1.23],["c",-.03,.03,-.48,.39,-1.02,.75],["l",-.99,.66],["l",0,2.25],["c",0,1.95,0,2.28,-.06,2.37],["c",-.06,.12,-.12,.21,-.24,.27],["c",-.27,.12,-.54,.03,-.69,-.24],["c",-.06,-.12,-.06,-.21,-.06,-2.01],["c",0,-1.05,0,-1.89,-.03,-1.89],["l",-.72,.48],["c",-.69,.48,-.69,.48,-.87,.48],["c",-.15,0,-.18,0,-.27,-.06],["c",-.21,-.15,-.21,-.18,-.21,-1.41],["c",0,-1.11,.03,-1.14,.09,-1.23],["c",.03,-.03,.48,-.39,1.02,-.75],["l",.99,-.66],["l",0,-2.37],["c",0,-1.32,0,-2.37,-.03,-2.37],["l",-.72,.48],["c",-.69,.48,-.69,.48,-.87,.48],["c",-.15,0,-.18,0,-.27,-.06],["c",-.21,-.15,-.21,-.18,-.21,-1.41],["c",0,-1.11,.03,-1.14,.09,-1.23],["c",.03,-.03,.48,-.39,1.02,-.75],["l",.99,-.66],["l",0,-2.25],["c",0,-2.13,0,-2.28,.06,-2.4],["c",.06,-.12,.12,-.18,.27,-.24],["z"]],w:5.25,h:20.174},"accidentals.nat":{d:[["M",.21,-11.4],["c",.24,-.06,.78,0,.99,.15],["c",.03,.03,.03,.48,0,2.61],["c",-.03,1.44,-.03,2.61,-.03,2.61],["c",0,.03,.75,-.09,1.68,-.24],["c",.96,-.18,1.71,-.27,1.74,-.27],["c",.15,.03,.27,.15,.36,.3],["l",.06,.12],["l",.09,8.67],["c",.09,6.96,.12,8.67,.09,8.67],["c",-.03,.03,-.12,.06,-.21,.09],["c",-.24,.09,-.72,.09,-.96,0],["c",-.09,-.03,-.18,-.06,-.21,-.09],["c",-.03,-.03,-.03,-.48,0,-2.61],["c",.03,-1.44,.03,-2.61,.03,-2.61],["c",0,-.03,-.75,.09,-1.68,.24],["c",-.96,.18,-1.71,.27,-1.74,.27],["c",-.15,-.03,-.27,-.15,-.36,-.3],["l",-.06,-.15],["l",-.09,-7.53],["c",-.06,-4.14,-.09,-8.04,-.12,-8.67],["l",0,-1.11],["l",.15,-.06],["c",.09,-.03,.21,-.06,.27,-.09],["z"],["m",3.75,8.4],["c",0,-.33,0,-.42,-.03,-.42],["c",-.12,0,-2.79,.45,-2.79,.48],["c",-.03,0,-.09,6.3,-.09,6.33],["c",.03,0,2.79,-.45,2.82,-.48],["c",0,0,.09,-4.53,.09,-5.91],["z"]],w:5.4,h:22.8},"accidentals.flat":{d:[["M",-.36,-14.07],["c",.33,-.06,.87,0,1.08,.15],["c",.06,.03,.06,.36,-.03,5.25],["c",-.06,2.85,-.09,5.19,-.09,5.19],["c",0,.03,.12,-.03,.24,-.12],["c",.63,-.42,1.41,-.66,2.19,-.72],["c",.81,-.03,1.47,.21,2.04,.78],["c",.57,.54,.87,1.26,.93,2.04],["c",.03,.57,-.09,1.08,-.36,1.62],["c",-.42,.81,-1.02,1.38,-2.82,2.61],["c",-1.14,.78,-1.44,1.02,-1.8,1.44],["c",-.18,.18,-.39,.39,-.45,.42],["c",-.27,.18,-.57,.15,-.81,-.06],["c",-.06,-.09,-.12,-.18,-.15,-.27],["c",-.03,-.06,-.09,-3.27,-.18,-8.34],["c",-.09,-4.53,-.15,-8.58,-.18,-9.03],["l",0,-.78],["l",.12,-.06],["c",.06,-.03,.18,-.09,.27,-.12],["z"],["m",3.18,11.01],["c",-.21,-.12,-.54,-.15,-.81,-.06],["c",-.54,.15,-.99,.63,-1.17,1.26],["c",-.06,.3,-.12,2.88,-.06,3.87],["c",.03,.42,.03,.81,.06,.9],["l",.03,.12],["l",.45,-.39],["c",.63,-.54,1.26,-1.17,1.56,-1.59],["c",.3,-.42,.6,-.99,.72,-1.41],["c",.18,-.69,.09,-1.47,-.18,-2.07],["c",-.15,-.3,-.33,-.51,-.6,-.63],["z"]],w:6.75,h:18.801},"accidentals.halfflat":{d:[["M",4.83,-14.07],["c",.33,-.06,.87,0,1.08,.15],["c",.06,.03,.06,.6,-.12,9.06],["c",-.09,5.55,-.15,9.06,-.18,9.12],["c",-.03,.09,-.09,.18,-.15,.27],["c",-.24,.21,-.54,.24,-.81,.06],["c",-.06,-.03,-.27,-.24,-.45,-.42],["c",-.36,-.42,-.66,-.66,-1.8,-1.44],["c",-1.23,-.84,-1.83,-1.32,-2.25,-1.77],["c",-.66,-.78,-.96,-1.56,-.93,-2.46],["c",.09,-1.41,1.11,-2.58,2.4,-2.79],["c",.3,-.06,.84,-.03,1.23,.06],["c",.54,.12,1.08,.33,1.53,.63],["c",.12,.09,.24,.15,.24,.12],["c",0,0,-.12,-8.37,-.18,-9.75],["l",0,-.66],["l",.12,-.06],["c",.06,-.03,.18,-.09,.27,-.12],["z"],["m",-1.65,10.95],["c",-.6,-.18,-1.08,.09,-1.38,.69],["c",-.27,.6,-.36,1.38,-.18,2.07],["c",.12,.42,.42,.99,.72,1.41],["c",.3,.42,.93,1.05,1.56,1.59],["l",.48,.39],["l",0,-.12],["c",.03,-.09,.03,-.48,.06,-.9],["c",.03,-.57,.03,-1.08,0,-2.22],["c",-.03,-1.62,-.03,-1.62,-.24,-2.07],["c",-.21,-.42,-.6,-.75,-1.02,-.84],["z"]],w:6.728,h:18.801},"accidentals.dblflat":{d:[["M",-.36,-14.07],["c",.33,-.06,.87,0,1.08,.15],["c",.06,.03,.06,.36,-.03,5.25],["c",-.06,2.85,-.09,5.19,-.09,5.19],["c",0,.03,.12,-.03,.24,-.12],["c",.63,-.42,1.41,-.66,2.19,-.72],["c",.81,-.03,1.47,.21,2.04,.78],["c",.57,.54,.87,1.26,.93,2.04],["c",.03,.57,-.09,1.08,-.36,1.62],["c",-.42,.81,-1.02,1.38,-2.82,2.61],["c",-1.14,.78,-1.44,1.02,-1.8,1.44],["c",-.18,.18,-.39,.39,-.45,.42],["c",-.27,.18,-.57,.15,-.81,-.06],["c",-.06,-.09,-.12,-.18,-.15,-.27],["c",-.03,-.06,-.09,-3.27,-.18,-8.34],["c",-.09,-4.53,-.15,-8.58,-.18,-9.03],["l",0,-.78],["l",.12,-.06],["c",.06,-.03,.18,-.09,.27,-.12],["z"],["m",3.18,11.01],["c",-.21,-.12,-.54,-.15,-.81,-.06],["c",-.54,.15,-.99,.63,-1.17,1.26],["c",-.06,.3,-.12,2.88,-.06,3.87],["c",.03,.42,.03,.81,.06,.9],["l",.03,.12],["l",.45,-.39],["c",.63,-.54,1.26,-1.17,1.56,-1.59],["c",.3,-.42,.6,-.99,.72,-1.41],["c",.18,-.69,.09,-1.47,-.18,-2.07],["c",-.15,-.3,-.33,-.51,-.6,-.63],["z"],["m",3,-11],["c",.33,-.06,.87,0,1.08,.15],["c",.06,.03,.06,.36,-.03,5.25],["c",-.06,2.85,-.09,5.19,-.09,5.19],["c",0,.03,.12,-.03,.24,-.12],["c",.63,-.42,1.41,-.66,2.19,-.72],["c",.81,-.03,1.47,.21,2.04,.78],["c",.57,.54,.87,1.26,.93,2.04],["c",.03,.57,-.09,1.08,-.36,1.62],["c",-.42,.81,-1.02,1.38,-2.82,2.61],["c",-1.14,.78,-1.44,1.02,-1.8,1.44],["c",-.18,.18,-.39,.39,-.45,.42],["c",-.27,.18,-.57,.15,-.81,-.06],["c",-.06,-.09,-.12,-.18,-.15,-.27],["c",-.03,-.06,-.09,-3.27,-.18,-8.34],["c",-.09,-4.53,-.15,-8.58,-.18,-9.03],["l",0,-.78],["l",.12,-.06],["c",.06,-.03,.18,-.09,.27,-.12],["z"],["m",3.18,11.01],["c",-.21,-.12,-.54,-.15,-.81,-.06],["c",-.54,.15,-.99,.63,-1.17,1.26],["c",-.06,.3,-.12,2.88,-.06,3.87],["c",.03,.42,.03,.81,.06,.9],["l",.03,.12],["l",.45,-.39],["c",.63,-.54,1.26,-1.17,1.56,-1.59],["c",.3,-.42,.6,-.99,.72,-1.41],["c",.18,-.69,.09,-1.47,-.18,-2.07],["c",-.15,-.3,-.33,-.51,-.6,-.63],["z"]],w:12.1,h:18.804},"accidentals.dblsharp":{d:[["M",-.18,-3.96],["c",.06,-.03,.12,-.06,.15,-.06],["c",.09,0,2.76,.27,2.79,.3],["c",.12,.03,.15,.12,.15,.51],["c",.06,.96,.24,1.59,.57,2.1],["c",.06,.09,.15,.21,.18,.24],["l",.09,.06],["l",.09,-.06],["c",.03,-.03,.12,-.15,.18,-.24],["c",.33,-.51,.51,-1.14,.57,-2.1],["c",0,-.39,.03,-.45,.12,-.51],["c",.03,0,.66,-.09,1.44,-.15],["c",1.47,-.15,1.5,-.15,1.56,-.03],["c",.03,.06,0,.42,-.09,1.44],["c",-.09,.72,-.15,1.35,-.15,1.38],["c",0,.03,-.03,.09,-.06,.12],["c",-.06,.06,-.12,.09,-.51,.09],["c",-1.08,.06,-1.8,.3,-2.28,.75],["l",-.12,.09],["l",.09,.09],["c",.12,.15,.39,.33,.63,.45],["c",.42,.18,.96,.27,1.68,.33],["c",.39,0,.45,.03,.51,.09],["c",.03,.03,.06,.09,.06,.12],["c",0,.03,.06,.66,.15,1.38],["c",.09,1.02,.12,1.38,.09,1.44],["c",-.06,.12,-.09,.12,-1.56,-.03],["c",-.78,-.06,-1.41,-.15,-1.44,-.15],["c",-.09,-.06,-.12,-.12,-.12,-.54],["c",-.06,-.93,-.24,-1.56,-.57,-2.07],["c",-.06,-.09,-.15,-.21,-.18,-.24],["l",-.09,-.06],["l",-.09,.06],["c",-.03,.03,-.12,.15,-.18,.24],["c",-.33,.51,-.51,1.14,-.57,2.07],["c",0,.42,-.03,.48,-.12,.54],["c",-.03,0,-.66,.09,-1.44,.15],["c",-1.47,.15,-1.5,.15,-1.56,.03],["c",-.03,-.06,0,-.42,.09,-1.44],["c",.09,-.72,.15,-1.35,.15,-1.38],["c",0,-.03,.03,-.09,.06,-.12],["c",.06,-.06,.12,-.09,.51,-.09],["c",.72,-.06,1.26,-.15,1.68,-.33],["c",.24,-.12,.51,-.3,.63,-.45],["l",.09,-.09],["l",-.12,-.09],["c",-.48,-.45,-1.2,-.69,-2.28,-.75],["c",-.39,0,-.45,-.03,-.51,-.09],["c",-.03,-.03,-.06,-.09,-.06,-.12],["c",0,-.03,-.06,-.63,-.12,-1.38],["c",-.09,-.72,-.15,-1.35,-.15,-1.38],["z"]],w:7.95,h:7.977},"dots.dot":{d:[["M",1.32,-1.68],["c",.09,-.03,.27,-.06,.39,-.06],["c",.96,0,1.74,.78,1.74,1.71],["c",0,.96,-.78,1.74,-1.71,1.74],["c",-.96,0,-1.74,-.78,-1.74,-1.71],["c",0,-.78,.54,-1.5,1.32,-1.68],["z"]],w:3.45,h:3.45},"noteheads.dbl":{d:[["M",-.69,-4.02],["c",.18,-.09,.36,-.09,.54,0],["c",.18,.09,.24,.15,.33,.3],["c",.06,.15,.06,.18,.06,1.41],["l",0,1.23],["l",.12,-.18],["c",.72,-1.26,2.64,-2.31,4.86,-2.64],["c",.81,-.15,1.11,-.15,2.13,-.15],["c",.99,0,1.29,0,2.1,.15],["c",.75,.12,1.38,.27,2.04,.54],["c",1.35,.51,2.34,1.26,2.82,2.1],["l",.12,.18],["l",0,-1.23],["c",0,-1.2,0,-1.26,.06,-1.38],["c",.09,-.18,.15,-.24,.33,-.33],["c",.18,-.09,.36,-.09,.54,0],["c",.18,.09,.24,.15,.33,.3],["l",.06,.15],["l",0,3.54],["l",0,3.54],["l",-.06,.15],["c",-.09,.18,-.15,.24,-.33,.33],["c",-.18,.09,-.36,.09,-.54,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.06,-.12,-.06,-.18,-.06,-1.38],["l",0,-1.23],["l",-.12,.18],["c",-.48,.84,-1.47,1.59,-2.82,2.1],["c",-.84,.33,-1.71,.54,-2.85,.66],["c",-.45,.06,-2.16,.06,-2.61,0],["c",-1.14,-.12,-2.01,-.33,-2.85,-.66],["c",-1.35,-.51,-2.34,-1.26,-2.82,-2.1],["l",-.12,-.18],["l",0,1.23],["c",0,1.23,0,1.26,-.06,1.38],["c",-.09,.18,-.15,.24,-.33,.33],["c",-.18,.09,-.36,.09,-.54,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["l",-.06,-.15],["l",0,-3.54],["c",0,-3.48,0,-3.54,.06,-3.66],["c",.09,-.18,.15,-.24,.33,-.33],["z"],["m",7.71,.63],["c",-.36,-.06,-.9,-.06,-1.14,0],["c",-.3,.03,-.66,.24,-.87,.42],["c",-.6,.54,-.9,1.62,-.75,2.82],["c",.12,.93,.51,1.68,1.11,2.31],["c",.75,.72,1.83,1.2,2.85,1.26],["c",1.05,.06,1.83,-.54,2.1,-1.65],["c",.21,-.9,.12,-1.95,-.24,-2.82],["c",-.36,-.81,-1.08,-1.53,-1.95,-1.95],["c",-.3,-.15,-.78,-.3,-1.11,-.39],["z"]],w:16.83,h:8.145},"noteheads.whole":{d:[["M",6.51,-4.05],["c",.51,-.03,2.01,0,2.52,.03],["c",1.41,.18,2.64,.51,3.72,1.08],["c",1.2,.63,1.95,1.41,2.19,2.31],["c",.09,.33,.09,.9,0,1.23],["c",-.24,.9,-.99,1.68,-2.19,2.31],["c",-1.08,.57,-2.28,.9,-3.75,1.08],["c",-.66,.06,-2.31,.06,-2.97,0],["c",-1.47,-.18,-2.67,-.51,-3.75,-1.08],["c",-1.2,-.63,-1.95,-1.41,-2.19,-2.31],["c",-.09,-.33,-.09,-.9,0,-1.23],["c",.24,-.9,.99,-1.68,2.19,-2.31],["c",1.2,-.63,2.61,-.99,4.23,-1.11],["z"],["m",.57,.66],["c",-.87,-.15,-1.53,0,-2.04,.51],["c",-.15,.15,-.24,.27,-.33,.48],["c",-.24,.51,-.36,1.08,-.33,1.77],["c",.03,.69,.18,1.26,.42,1.77],["c",.6,1.17,1.74,1.98,3.18,2.22],["c",1.11,.21,1.95,-.15,2.34,-.99],["c",.24,-.51,.36,-1.08,.33,-1.8],["c",-.06,-1.11,-.45,-2.04,-1.17,-2.76],["c",-.63,-.63,-1.47,-1.05,-2.4,-1.2],["z"]],w:14.985,h:8.097},"noteheads.half":{d:[["M",7.44,-4.05],["c",.06,-.03,.27,-.03,.48,-.03],["c",1.05,0,1.71,.24,2.1,.81],["c",.42,.6,.45,1.35,.18,2.4],["c",-.42,1.59,-1.14,2.73,-2.16,3.39],["c",-1.41,.93,-3.18,1.44,-5.4,1.53],["c",-1.17,.03,-1.89,-.21,-2.28,-.81],["c",-.42,-.6,-.45,-1.35,-.18,-2.4],["c",.42,-1.59,1.14,-2.73,2.16,-3.39],["c",.63,-.42,1.23,-.72,1.98,-.96],["c",.9,-.3,1.65,-.42,3.12,-.54],["z"],["m",1.29,.87],["c",-.27,-.09,-.63,-.12,-.9,-.03],["c",-.72,.24,-1.53,.69,-3.27,1.8],["c",-2.34,1.5,-3.3,2.25,-3.57,2.79],["c",-.36,.72,-.06,1.5,.66,1.77],["c",.24,.12,.69,.09,.99,0],["c",.84,-.3,1.92,-.93,4.14,-2.37],["c",1.62,-1.08,2.37,-1.71,2.61,-2.19],["c",.36,-.72,.06,-1.5,-.66,-1.77],["z"]],w:10.37,h:8.132},"noteheads.quarter":{d:[["M",6.09,-4.05],["c",.36,-.03,1.2,0,1.53,.06],["c",1.17,.24,1.89,.84,2.16,1.83],["c",.06,.18,.06,.3,.06,.66],["c",0,.45,0,.63,-.15,1.08],["c",-.66,2.04,-3.06,3.93,-5.52,4.38],["c",-.54,.09,-1.44,.09,-1.83,.03],["c",-1.23,-.27,-1.98,-.87,-2.25,-1.86],["c",-.06,-.18,-.06,-.3,-.06,-.66],["c",0,-.45,0,-.63,.15,-1.08],["c",.24,-.78,.75,-1.53,1.44,-2.22],["c",1.2,-1.2,2.85,-2.01,4.47,-2.22],["z"]],w:9.81,h:8.094},"noteheads.slash.nostem":{d:[["M",9.3,-7.77],["c",.06,-.06,.18,-.06,1.71,-.06],["l",1.65,0],["l",.09,.09],["c",.06,.06,.06,.09,.06,.15],["c",-.03,.12,-9.21,15.24,-9.3,15.33],["c",-.06,.06,-.18,.06,-1.71,.06],["l",-1.65,0],["l",-.09,-.09],["c",-.06,-.06,-.06,-.09,-.06,-.15],["c",.03,-.12,9.21,-15.24,9.3,-15.33],["z"]],w:12.81,h:15.63},"noteheads.indeterminate":{d:[["M",.78,-4.05],["c",.12,-.03,.24,-.03,.36,.03],["c",.03,.03,.93,.72,1.95,1.56],["l",1.86,1.5],["l",1.86,-1.5],["c",1.02,-.84,1.92,-1.53,1.95,-1.56],["c",.21,-.12,.33,-.09,.75,.24],["c",.3,.27,.36,.36,.36,.54],["c",0,.03,-.03,.12,-.06,.18],["c",-.03,.06,-.9,.75,-1.89,1.56],["l",-1.8,1.47],["c",0,.03,.81,.69,1.8,1.5],["c",.99,.81,1.86,1.5,1.89,1.56],["c",.03,.06,.06,.15,.06,.18],["c",0,.18,-.06,.27,-.36,.54],["c",-.42,.33,-.54,.36,-.75,.24],["c",-.03,-.03,-.93,-.72,-1.95,-1.56],["l",-1.86,-1.5],["l",-1.86,1.5],["c",-1.02,.84,-1.92,1.53,-1.95,1.56],["c",-.21,.12,-.33,.09,-.75,-.24],["c",-.3,-.27,-.36,-.36,-.36,-.54],["c",0,-.03,.03,-.12,.06,-.18],["c",.03,-.06,.9,-.75,1.89,-1.56],["l",1.8,-1.47],["c",0,-.03,-.81,-.69,-1.8,-1.5],["c",-.99,-.81,-1.86,-1.5,-1.89,-1.56],["c",-.06,-.12,-.09,-.21,-.03,-.36],["c",.03,-.09,.57,-.57,.72,-.63],["z"]],w:9.843,h:8.139},"scripts.ufermata":{d:[["M",-.75,-10.77],["c",.12,0,.45,-.03,.69,-.03],["c",2.91,-.03,5.55,1.53,7.41,4.35],["c",1.17,1.71,1.95,3.72,2.43,6.03],["c",.12,.51,.12,.57,.03,.69],["c",-.12,.21,-.48,.27,-.69,.12],["c",-.12,-.09,-.18,-.24,-.27,-.69],["c",-.78,-3.63,-3.42,-6.54,-6.78,-7.38],["c",-.78,-.21,-1.2,-.24,-2.07,-.24],["c",-.63,0,-.84,0,-1.2,.06],["c",-1.83,.27,-3.42,1.08,-4.8,2.37],["c",-1.41,1.35,-2.4,3.21,-2.85,5.19],["c",-.09,.45,-.15,.6,-.27,.69],["c",-.21,.15,-.57,.09,-.69,-.12],["c",-.09,-.12,-.09,-.18,.03,-.69],["c",.33,-1.62,.78,-3,1.47,-4.38],["c",1.77,-3.54,4.44,-5.67,7.56,-5.97],["z"],["m",.33,7.47],["c",1.38,-.3,2.58,.9,2.31,2.25],["c",-.15,.72,-.78,1.35,-1.47,1.5],["c",-1.38,.27,-2.58,-.93,-2.31,-2.31],["c",.15,-.69,.78,-1.29,1.47,-1.44],["z"]],w:19.748,h:11.289},"scripts.dfermata":{d:[["M",-9.63,-.42],["c",.15,-.09,.36,-.06,.51,.03],["c",.12,.09,.18,.24,.27,.66],["c",.78,3.66,3.42,6.57,6.78,7.41],["c",.78,.21,1.2,.24,2.07,.24],["c",.63,0,.84,0,1.2,-.06],["c",1.83,-.27,3.42,-1.08,4.8,-2.37],["c",1.41,-1.35,2.4,-3.21,2.85,-5.22],["c",.09,-.42,.15,-.57,.27,-.66],["c",.21,-.15,.57,-.09,.69,.12],["c",.09,.12,.09,.18,-.03,.69],["c",-.33,1.62,-.78,3,-1.47,4.38],["c",-1.92,3.84,-4.89,6,-8.31,6],["c",-3.42,0,-6.39,-2.16,-8.31,-6],["c",-.48,-.96,-.84,-1.92,-1.14,-2.97],["c",-.18,-.69,-.42,-1.74,-.42,-1.92],["c",0,-.12,.09,-.27,.24,-.33],["z"],["m",9.21,0],["c",1.2,-.27,2.34,.63,2.34,1.86],["c",0,.9,-.66,1.68,-1.5,1.89],["c",-1.38,.27,-2.58,-.93,-2.31,-2.31],["c",.15,-.69,.78,-1.29,1.47,-1.44],["z"]],w:19.744,h:11.274},"scripts.sforzato":{d:[["M",-6.45,-3.69],["c",.06,-.03,.15,-.06,.18,-.06],["c",.06,0,2.85,.72,6.24,1.59],["l",6.33,1.65],["c",.33,.06,.45,.21,.45,.51],["c",0,.3,-.12,.45,-.45,.51],["l",-6.33,1.65],["c",-3.39,.87,-6.18,1.59,-6.21,1.59],["c",-.21,0,-.48,-.24,-.51,-.45],["c",0,-.15,.06,-.36,.18,-.45],["c",.09,-.06,.87,-.27,3.84,-1.05],["c",2.04,-.54,3.84,-.99,4.02,-1.02],["c",.15,-.06,1.14,-.24,2.22,-.42],["c",1.05,-.18,1.92,-.36,1.92,-.36],["c",0,0,-.87,-.18,-1.92,-.36],["c",-1.08,-.18,-2.07,-.36,-2.22,-.42],["c",-.18,-.03,-1.98,-.48,-4.02,-1.02],["c",-2.97,-.78,-3.75,-.99,-3.84,-1.05],["c",-.12,-.09,-.18,-.3,-.18,-.45],["c",.03,-.15,.15,-.3,.3,-.39],["z"]],w:13.5,h:7.5},"scripts.staccato":{d:[["M",-.36,-1.47],["c",.93,-.21,1.86,.51,1.86,1.47],["c",0,.93,-.87,1.65,-1.8,1.47],["c",-.54,-.12,-1.02,-.57,-1.14,-1.08],["c",-.21,-.81,.27,-1.65,1.08,-1.86],["z"]],w:2.989,h:3.004},"scripts.tenuto":{d:[["M",-4.2,-.48],["l",.12,-.06],["l",4.08,0],["l",4.08,0],["l",.12,.06],["c",.39,.21,.39,.75,0,.96],["l",-.12,.06],["l",-4.08,0],["l",-4.08,0],["l",-.12,-.06],["c",-.39,-.21,-.39,-.75,0,-.96],["z"]],w:8.985,h:1.08},"scripts.umarcato":{d:[["M",-.15,-8.19],["c",.15,-.12,.36,-.03,.45,.15],["c",.21,.42,3.45,7.65,3.45,7.71],["c",0,.12,-.12,.27,-.21,.3],["c",-.03,.03,-.51,.03,-1.14,.03],["c",-1.05,0,-1.08,0,-1.17,-.06],["c",-.09,-.06,-.24,-.36,-1.17,-2.4],["c",-.57,-1.29,-1.05,-2.34,-1.08,-2.34],["c",0,-.03,-.51,1.02,-1.08,2.34],["c",-.93,2.07,-1.08,2.34,-1.14,2.4],["c",-.06,.03,-.15,.06,-.18,.06],["c",-.15,0,-.33,-.18,-.33,-.33],["c",0,-.06,3.24,-7.32,3.45,-7.71],["c",.03,-.06,.09,-.15,.15,-.15],["z"]],w:7.5,h:8.245},"scripts.dmarcato":{d:[["M",-3.57,.03],["c",.03,0,.57,-.03,1.17,-.03],["c",1.05,0,1.08,0,1.17,.06],["c",.09,.06,.24,.36,1.17,2.4],["c",.57,1.29,1.05,2.34,1.08,2.34],["c",0,.03,.51,-1.02,1.08,-2.34],["c",.93,-2.07,1.08,-2.34,1.14,-2.4],["c",.06,-.03,.15,-.06,.18,-.06],["c",.15,0,.33,.18,.33,.33],["c",0,.09,-3.45,7.74,-3.54,7.83],["c",-.12,.12,-.3,.12,-.42,0],["c",-.09,-.09,-3.54,-7.74,-3.54,-7.83],["c",0,-.09,.12,-.27,.18,-.3],["z"]],w:7.5,h:8.25},"scripts.stopped":{d:[["M",-.27,-4.08],["c",.18,-.09,.36,-.09,.54,0],["c",.18,.09,.24,.15,.33,.3],["l",.06,.15],["l",0,1.5],["l",0,1.47],["l",1.47,0],["l",1.5,0],["l",.15,.06],["c",.15,.09,.21,.15,.3,.33],["c",.09,.18,.09,.36,0,.54],["c",-.09,.18,-.15,.24,-.33,.33],["c",-.12,.06,-.18,.06,-1.62,.06],["l",-1.47,0],["l",0,1.47],["l",0,1.47],["l",-.06,.15],["c",-.09,.18,-.15,.24,-.33,.33],["c",-.18,.09,-.36,.09,-.54,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["l",-.06,-.15],["l",0,-1.47],["l",0,-1.47],["l",-1.47,0],["c",-1.44,0,-1.5,0,-1.62,-.06],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.09,-.18,-.09,-.36,0,-.54],["c",.09,-.18,.15,-.24,.33,-.33],["l",.15,-.06],["l",1.47,0],["l",1.47,0],["l",0,-1.47],["c",0,-1.44,0,-1.5,.06,-1.62],["c",.09,-.18,.15,-.24,.33,-.33],["z"]],w:8.295,h:8.295},"scripts.upbow":{d:[["M",-4.65,-15.54],["c",.12,-.09,.36,-.06,.48,.03],["c",.03,.03,.09,.09,.12,.15],["c",.03,.06,.66,2.13,1.41,4.62],["c",1.35,4.41,1.38,4.56,2.01,6.96],["l",.63,2.46],["l",.63,-2.46],["c",.63,-2.4,.66,-2.55,2.01,-6.96],["c",.75,-2.49,1.38,-4.56,1.41,-4.62],["c",.06,-.15,.18,-.21,.36,-.24],["c",.15,0,.3,.06,.39,.18],["c",.15,.21,.24,-.18,-2.1,7.56],["c",-1.2,3.96,-2.22,7.32,-2.25,7.41],["c",0,.12,-.06,.27,-.09,.3],["c",-.12,.21,-.6,.21,-.72,0],["c",-.03,-.03,-.09,-.18,-.09,-.3],["c",-.03,-.09,-1.05,-3.45,-2.25,-7.41],["c",-2.34,-7.74,-2.25,-7.35,-2.1,-7.56],["c",.03,-.03,.09,-.09,.15,-.12],["z"]],w:9.73,h:15.608},"scripts.downbow":{d:[["M",-5.55,-9.93],["l",.09,-.06],["l",5.46,0],["l",5.46,0],["l",.09,.06],["l",.06,.09],["l",0,4.77],["c",0,5.28,0,4.89,-.18,5.01],["c",-.18,.12,-.42,.06,-.54,-.12],["c",-.06,-.09,-.06,-.18,-.06,-2.97],["l",0,-2.85],["l",-4.83,0],["l",-4.83,0],["l",0,2.85],["c",0,2.79,0,2.88,-.06,2.97],["c",-.15,.24,-.51,.24,-.66,0],["c",-.06,-.09,-.06,-.21,-.06,-4.89],["l",0,-4.77],["z"]],w:11.22,h:9.992},"scripts.turn":{d:[["M",-4.77,-3.9],["c",.36,-.06,1.05,-.06,1.44,.03],["c",.78,.15,1.5,.51,2.34,1.14],["c",.6,.45,1.05,.87,2.22,2.01],["c",1.11,1.08,1.62,1.5,2.22,1.86],["c",.6,.36,1.32,.57,1.92,.57],["c",.9,0,1.71,-.57,1.89,-1.35],["c",.24,-.93,-.39,-1.89,-1.35,-2.1],["l",-.15,-.06],["l",-.09,.15],["c",-.03,.09,-.15,.24,-.24,.33],["c",-.72,.72,-2.04,.54,-2.49,-.36],["c",-.48,-.93,.03,-1.86,1.17,-2.19],["c",.3,-.09,1.02,-.09,1.35,0],["c",.99,.27,1.74,.87,2.25,1.83],["c",.69,1.41,.63,3,-.21,4.26],["c",-.21,.3,-.69,.81,-.99,1.02],["c",-.3,.21,-.84,.45,-1.17,.54],["c",-1.23,.36,-2.49,.15,-3.72,-.6],["c",-.75,-.48,-1.41,-1.02,-2.85,-2.46],["c",-1.11,-1.08,-1.62,-1.5,-2.22,-1.86],["c",-.6,-.36,-1.32,-.57,-1.92,-.57],["c",-.9,0,-1.71,.57,-1.89,1.35],["c",-.24,.93,.39,1.89,1.35,2.1],["l",.15,.06],["l",.09,-.15],["c",.03,-.09,.15,-.24,.24,-.33],["c",.72,-.72,2.04,-.54,2.49,.36],["c",.48,.93,-.03,1.86,-1.17,2.19],["c",-.3,.09,-1.02,.09,-1.35,0],["c",-.99,-.27,-1.74,-.87,-2.25,-1.83],["c",-.69,-1.41,-.63,-3,.21,-4.26],["c",.21,-.3,.69,-.81,.99,-1.02],["c",.48,-.33,1.11,-.57,1.74,-.66],["z"]],w:16.366,h:7.893},"scripts.trill":{d:[["M",-.51,-16.02],["c",.12,-.09,.21,-.18,.21,-.18],["l",-.81,4.02],["l",-.81,4.02],["c",.03,0,.51,-.27,1.08,-.6],["c",.6,-.3,1.14,-.63,1.26,-.66],["c",1.14,-.54,2.31,-.6,3.09,-.18],["c",.27,.15,.54,.36,.6,.51],["l",.06,.12],["l",.21,-.21],["c",.9,-.81,2.22,-.99,3.12,-.42],["c",.6,.42,.9,1.14,.78,2.07],["c",-.15,1.29,-1.05,2.31,-1.95,2.25],["c",-.48,-.03,-.78,-.3,-.96,-.81],["c",-.09,-.27,-.09,-.9,-.03,-1.2],["c",.21,-.75,.81,-1.23,1.59,-1.32],["l",.24,-.03],["l",-.09,-.12],["c",-.51,-.66,-1.62,-.63,-2.31,.03],["c",-.39,.42,-.3,.09,-1.23,4.77],["l",-.81,4.14],["c",-.03,0,-.12,-.03,-.21,-.09],["c",-.33,-.15,-.54,-.18,-.99,-.18],["c",-.42,0,-.66,.03,-1.05,.18],["c",-.12,.06,-.21,.09,-.21,.09],["c",0,-.03,.36,-1.86,.81,-4.11],["c",.9,-4.47,.87,-4.26,.69,-4.53],["c",-.21,-.36,-.66,-.51,-1.17,-.36],["c",-.15,.06,-2.22,1.14,-2.58,1.38],["c",-.12,.09,-.12,.09,-.21,.6],["l",-.09,.51],["l",.21,.24],["c",.63,.75,1.02,1.47,1.2,2.19],["c",.06,.27,.06,.36,.06,.81],["c",0,.42,0,.54,-.06,.78],["c",-.15,.54,-.33,.93,-.63,1.35],["c",-.18,.24,-.57,.63,-.81,.78],["c",-.24,.15,-.63,.36,-.84,.42],["c",-.27,.06,-.66,.06,-.87,.03],["c",-.81,-.18,-1.32,-1.05,-1.38,-2.46],["c",-.03,-.6,.03,-.99,.33,-2.46],["c",.21,-1.08,.24,-1.32,.21,-1.29],["c",-1.2,.48,-2.4,.75,-3.21,.72],["c",-.69,-.06,-1.17,-.3,-1.41,-.72],["c",-.39,-.75,-.12,-1.8,.66,-2.46],["c",.24,-.18,.69,-.42,1.02,-.51],["c",.69,-.18,1.53,-.15,2.31,.09],["c",.3,.09,.75,.3,.99,.45],["c",.12,.09,.15,.09,.15,.03],["c",.03,-.03,.33,-1.59,.72,-3.45],["c",.36,-1.86,.66,-3.42,.69,-3.45],["c",0,-.03,.03,-.03,.21,.03],["c",.21,.06,.27,.06,.48,.06],["c",.42,-.03,.78,-.18,1.26,-.48],["c",.15,-.12,.36,-.27,.48,-.39],["z"],["m",-5.73,7.68],["c",-.27,-.03,-.96,-.06,-1.2,-.03],["c",-.81,.12,-1.35,.57,-1.5,1.2],["c",-.18,.66,.12,1.14,.75,1.29],["c",.66,.12,1.92,-.12,3.18,-.66],["l",.33,-.15],["l",.09,-.39],["c",.06,-.21,.09,-.42,.09,-.45],["c",0,-.03,-.45,-.3,-.75,-.45],["c",-.27,-.15,-.66,-.27,-.99,-.36],["z"],["m",4.29,3.63],["c",-.24,-.39,-.51,-.75,-.51,-.69],["c",-.06,.12,-.39,1.92,-.45,2.28],["c",-.09,.54,-.12,1.14,-.06,1.38],["c",.06,.42,.21,.6,.51,.57],["c",.39,-.06,.75,-.48,.93,-1.14],["c",.09,-.33,.09,-1.05,0,-1.38],["c",-.09,-.39,-.24,-.69,-.42,-1.02],["z"]],w:17.963,h:16.49},"scripts.segno":{d:[["M",-3.72,-11.22],["c",.78,-.09,1.59,.03,2.31,.42],["c",1.2,.6,2.01,1.71,2.31,3.09],["c",.09,.42,.09,1.2,.03,1.5],["c",-.15,.45,-.39,.81,-.66,.93],["c",-.33,.18,-.84,.21,-1.23,.15],["c",-.81,-.18,-1.32,-.93,-1.26,-1.89],["c",.03,-.36,.09,-.57,.24,-.9],["c",.15,-.33,.45,-.6,.72,-.75],["c",.12,-.06,.18,-.09,.18,-.12],["c",0,-.03,-.03,-.15,-.09,-.24],["c",-.18,-.45,-.54,-.87,-.96,-1.08],["c",-1.11,-.57,-2.34,-.18,-2.88,.9],["c",-.24,.51,-.33,1.11,-.24,1.83],["c",.27,1.92,1.5,3.54,3.93,5.13],["c",.48,.33,1.26,.78,1.29,.78],["c",.03,0,1.35,-2.19,2.94,-4.89],["l",2.88,-4.89],["l",.84,0],["l",.87,0],["l",-.03,.06],["c",-.15,.21,-6.15,10.41,-6.15,10.44],["c",0,0,.21,.15,.48,.27],["c",2.61,1.47,4.35,3.03,5.13,4.65],["c",1.14,2.34,.51,5.07,-1.44,6.39],["c",-.66,.42,-1.32,.63,-2.13,.69],["c",-2.01,.09,-3.81,-1.41,-4.26,-3.54],["c",-.09,-.42,-.09,-1.2,-.03,-1.5],["c",.15,-.45,.39,-.81,.66,-.93],["c",.33,-.18,.84,-.21,1.23,-.15],["c",.81,.18,1.32,.93,1.26,1.89],["c",-.03,.36,-.09,.57,-.24,.9],["c",-.15,.33,-.45,.6,-.72,.75],["c",-.12,.06,-.18,.09,-.18,.12],["c",0,.03,.03,.15,.09,.24],["c",.18,.45,.54,.87,.96,1.08],["c",1.11,.57,2.34,.18,2.88,-.9],["c",.24,-.51,.33,-1.11,.24,-1.83],["c",-.27,-1.92,-1.5,-3.54,-3.93,-5.13],["c",-.48,-.33,-1.26,-.78,-1.29,-.78],["c",-.03,0,-1.35,2.19,-2.91,4.89],["l",-2.88,4.89],["l",-.87,0],["l",-.87,0],["l",.03,-.06],["c",.15,-.21,6.15,-10.41,6.15,-10.44],["c",0,0,-.21,-.15,-.48,-.3],["c",-2.61,-1.44,-4.35,-3,-5.13,-4.62],["c",-.9,-1.89,-.72,-4.02,.48,-5.52],["c",.69,-.84,1.68,-1.41,2.73,-1.53],["z"],["m",8.76,9.09],["c",.03,-.03,.15,-.03,.27,-.03],["c",.33,.03,.57,.18,.72,.48],["c",.09,.18,.09,.57,0,.75],["c",-.09,.18,-.21,.3,-.36,.39],["c",-.15,.06,-.21,.06,-.39,.06],["c",-.21,0,-.27,0,-.39,-.06],["c",-.3,-.15,-.48,-.45,-.48,-.75],["c",0,-.39,.24,-.72,.63,-.84],["z"],["m",-10.53,2.61],["c",.03,-.03,.15,-.03,.27,-.03],["c",.33,.03,.57,.18,.72,.48],["c",.09,.18,.09,.57,0,.75],["c",-.09,.18,-.21,.3,-.36,.39],["c",-.15,.06,-.21,.06,-.39,.06],["c",-.21,0,-.27,0,-.39,-.06],["c",-.3,-.15,-.48,-.45,-.48,-.75],["c",0,-.39,.24,-.72,.63,-.84],["z"]],w:15,h:22.504},"scripts.coda":{d:[["M",-.21,-10.47],["c",.18,-.12,.42,-.06,.54,.12],["c",.06,.09,.06,.18,.06,1.5],["l",0,1.38],["l",.18,0],["c",.39,.06,.96,.24,1.38,.48],["c",1.68,.93,2.82,3.24,3.03,6.12],["c",.03,.24,.03,.45,.03,.45],["c",0,.03,.6,.03,1.35,.03],["c",1.5,0,1.47,0,1.59,.18],["c",.09,.12,.09,.3,0,.42],["c",-.12,.18,-.09,.18,-1.59,.18],["c",-.75,0,-1.35,0,-1.35,.03],["c",0,0,0,.21,-.03,.42],["c",-.24,3.15,-1.53,5.58,-3.45,6.36],["c",-.27,.12,-.72,.24,-.96,.27],["l",-.18,0],["l",0,1.38],["c",0,1.32,0,1.41,-.06,1.5],["c",-.15,.24,-.51,.24,-.66,0],["c",-.06,-.09,-.06,-.18,-.06,-1.5],["l",0,-1.38],["l",-.18,0],["c",-.39,-.06,-.96,-.24,-1.38,-.48],["c",-1.68,-.93,-2.82,-3.24,-3.03,-6.15],["c",-.03,-.21,-.03,-.42,-.03,-.42],["c",0,-.03,-.6,-.03,-1.35,-.03],["c",-1.5,0,-1.47,0,-1.59,-.18],["c",-.09,-.12,-.09,-.3,0,-.42],["c",.12,-.18,.09,-.18,1.59,-.18],["c",.75,0,1.35,0,1.35,-.03],["c",0,0,0,-.21,.03,-.45],["c",.24,-3.12,1.53,-5.55,3.45,-6.33],["c",.27,-.12,.72,-.24,.96,-.27],["l",.18,0],["l",0,-1.38],["c",0,-1.53,0,-1.5,.18,-1.62],["z"],["m",-.18,6.93],["c",0,-2.97,0,-3.15,-.06,-3.15],["c",-.09,0,-.51,.15,-.66,.21],["c",-.87,.51,-1.38,1.62,-1.56,3.51],["c",-.06,.54,-.12,1.59,-.12,2.16],["l",0,.42],["l",1.2,0],["l",1.2,0],["l",0,-3.15],["z"],["m",1.17,-3.06],["c",-.09,-.03,-.21,-.06,-.27,-.09],["l",-.12,0],["l",0,3.15],["l",0,3.15],["l",1.2,0],["l",1.2,0],["l",0,-.81],["c",-.06,-2.4,-.33,-3.69,-.93,-4.59],["c",-.27,-.39,-.66,-.69,-1.08,-.81],["z"],["m",-1.17,10.14],["l",0,-3.15],["l",-1.2,0],["l",-1.2,0],["l",0,.81],["c",.03,.96,.06,1.47,.15,2.13],["c",.24,2.04,.96,3.12,2.13,3.36],["l",.12,0],["l",0,-3.15],["z"],["m",3.18,-2.34],["l",0,-.81],["l",-1.2,0],["l",-1.2,0],["l",0,3.15],["l",0,3.15],["l",.12,0],["c",1.17,-.24,1.89,-1.32,2.13,-3.36],["c",.09,-.66,.12,-1.17,.15,-2.13],["z"]],w:16.035,h:21.062},"scripts.comma":{d:[["M",1.14,-4.62],["c",.3,-.12,.69,-.03,.93,.15],["c",.12,.12,.36,.45,.51,.78],["c",.9,1.77,.54,4.05,-1.08,6.75],["c",-.36,.63,-.87,1.38,-.96,1.44],["c",-.18,.12,-.42,.06,-.54,-.12],["c",-.09,-.18,-.09,-.3,.12,-.6],["c",.96,-1.44,1.44,-2.97,1.38,-4.35],["c",-.06,-.93,-.3,-1.68,-.78,-2.46],["c",-.27,-.39,-.33,-.63,-.24,-.96],["c",.09,-.27,.36,-.54,.66,-.63],["z"]],w:3.042,h:9.237},"scripts.roll":{d:[["M",1.95,-6],["c",.21,-.09,.36,-.09,.57,0],["c",.39,.15,.63,.39,1.47,1.35],["c",.66,.75,.78,.87,1.08,1.05],["c",.75,.45,1.65,.42,2.4,-.06],["c",.12,-.09,.27,-.27,.54,-.6],["c",.42,-.54,.51,-.63,.69,-.63],["c",.09,0,.3,.12,.36,.21],["c",.09,.12,.12,.3,.03,.42],["c",-.06,.12,-3.15,3.9,-3.3,4.08],["c",-.06,.06,-.18,.12,-.27,.18],["c",-.27,.12,-.6,.06,-.99,-.27],["c",-.27,-.21,-.42,-.39,-1.08,-1.14],["c",-.63,-.72,-.81,-.9,-1.17,-1.08],["c",-.36,-.18,-.57,-.21,-.99,-.21],["c",-.39,0,-.63,.03,-.93,.18],["c",-.36,.15,-.51,.27,-.9,.81],["c",-.24,.27,-.45,.51,-.48,.54],["c",-.12,.09,-.27,.06,-.39,0],["c",-.24,-.15,-.33,-.39,-.21,-.6],["c",.09,-.12,3.18,-3.87,3.33,-4.02],["c",.06,-.06,.18,-.15,.24,-.21],["z"]],w:10.817,h:6.125},"scripts.prall":{d:[["M",-4.38,-3.69],["c",.06,-.03,.18,-.06,.24,-.06],["c",.3,0,.27,-.03,1.89,1.95],["l",1.53,1.83],["c",.03,0,.57,-.84,1.23,-1.83],["c",1.14,-1.68,1.23,-1.83,1.35,-1.89],["c",.06,-.03,.18,-.06,.24,-.06],["c",.3,0,.27,-.03,1.89,1.95],["l",1.53,1.83],["l",.48,-.69],["c",.51,-.78,.54,-.84,.69,-.9],["c",.42,-.18,.87,.15,.81,.6],["c",-.03,.12,-.3,.51,-1.5,2.37],["c",-1.38,2.07,-1.5,2.22,-1.62,2.28],["c",-.06,.03,-.18,.06,-.24,.06],["c",-.3,0,-.27,.03,-1.89,-1.95],["l",-1.53,-1.83],["c",-.03,0,-.57,.84,-1.23,1.83],["c",-1.14,1.68,-1.23,1.83,-1.35,1.89],["c",-.06,.03,-.18,.06,-.24,.06],["c",-.3,0,-.27,.03,-1.89,-1.95],["l",-1.53,-1.83],["l",-.48,.69],["c",-.51,.78,-.54,.84,-.69,.9],["c",-.42,.18,-.87,-.15,-.81,-.6],["c",.03,-.12,.3,-.51,1.5,-2.37],["c",1.38,-2.07,1.5,-2.22,1.62,-2.28],["z"]],w:15.011,h:7.5},"scripts.arpeggio":{d:[["M",1.5,0],["c",1.5,2,1.5,3,1.5,3],["s",0,1,-2,1.5],["s",-.5,3,1,5.5],["l",1.5,0],["s",-1.75,-2,-1.9,-3.25],["s",2.15,-.6,2.95,-1.6],["s",.45,-1,.5,-1.25],["s",0,-1,-2,-3.9],["l",-1.5,0],["z"]],w:5,h:10},"scripts.mordent":{d:[["M",-.21,-4.95],["c",.27,-.15,.63,0,.75,.27],["c",.06,.12,.06,.24,.06,1.44],["l",0,1.29],["l",.57,-.84],["c",.51,-.75,.57,-.84,.69,-.9],["c",.06,-.03,.18,-.06,.24,-.06],["c",.3,0,.27,-.03,1.89,1.95],["l",1.53,1.83],["l",.48,-.69],["c",.51,-.78,.54,-.84,.69,-.9],["c",.42,-.18,.87,.15,.81,.6],["c",-.03,.12,-.3,.51,-1.5,2.37],["c",-1.38,2.07,-1.5,2.22,-1.62,2.28],["c",-.06,.03,-.18,.06,-.24,.06],["c",-.3,0,-.27,.03,-1.83,-1.89],["c",-.81,-.99,-1.5,-1.8,-1.53,-1.86],["c",-.06,-.03,-.06,-.03,-.12,.03],["c",-.06,.06,-.06,.15,-.06,2.28],["c",0,1.95,0,2.25,-.06,2.34],["c",-.18,.45,-.81,.48,-1.05,.03],["c",-.03,-.06,-.06,-.24,-.06,-1.41],["l",0,-1.35],["l",-.57,.84],["c",-.54,.78,-.6,.87,-.72,.93],["c",-.06,.03,-.18,.06,-.24,.06],["c",-.3,0,-.27,.03,-1.89,-1.95],["l",-1.53,-1.83],["l",-.48,.69],["c",-.51,.78,-.54,.84,-.69,.9],["c",-.42,.18,-.87,-.15,-.81,-.6],["c",.03,-.12,.3,-.51,1.5,-2.37],["c",1.38,-2.07,1.5,-2.22,1.62,-2.28],["c",.06,-.03,.18,-.06,.24,-.06],["c",.3,0,.27,-.03,1.89,1.95],["l",1.53,1.83],["c",.03,0,.06,-.06,.09,-.09],["c",.06,-.12,.06,-.15,.06,-2.28],["c",0,-1.92,0,-2.22,.06,-2.31],["c",.06,-.15,.15,-.24,.3,-.3],["z"]],w:15.011,h:10.012},"flags.u8th":{d:[["M",-.42,3.75],["l",0,-3.75],["l",.21,0],["l",.21,0],["l",0,.18],["c",0,.3,.06,.84,.12,1.23],["c",.24,1.53,.9,3.12,2.13,5.16],["l",.99,1.59],["c",.87,1.44,1.38,2.34,1.77,3.09],["c",.81,1.68,1.2,3.06,1.26,4.53],["c",.03,1.53,-.21,3.27,-.75,5.01],["c",-.21,.69,-.51,1.5,-.6,1.59],["c",-.09,.12,-.27,.21,-.42,.21],["c",-.15,0,-.42,-.12,-.51,-.21],["c",-.15,-.18,-.18,-.42,-.09,-.66],["c",.15,-.33,.45,-1.2,.57,-1.62],["c",.42,-1.38,.6,-2.58,.6,-3.9],["c",0,-.66,0,-.81,-.06,-1.11],["c",-.39,-2.07,-1.8,-4.26,-4.59,-7.14],["l",-.42,-.45],["l",-.21,0],["l",-.21,0],["l",0,-3.75],["z"]],w:6.692,h:22.59},"flags.u16th":{d:[["M",-.42,7.5],["l",0,-7.5],["l",.21,0],["l",.21,0],["l",0,.39],["c",.06,1.08,.39,2.19,.99,3.39],["c",.45,.9,.87,1.59,1.95,3.12],["c",1.29,1.86,1.77,2.64,2.22,3.57],["c",.45,.93,.72,1.8,.87,2.64],["c",.06,.51,.06,1.5,0,1.92],["c",-.12,.6,-.3,1.2,-.54,1.71],["l",-.09,.24],["l",.18,.45],["c",.51,1.2,.72,2.22,.69,3.42],["c",-.06,1.53,-.39,3.03,-.99,4.53],["c",-.3,.75,-.36,.81,-.57,.9],["c",-.15,.09,-.33,.06,-.48,0],["c",-.18,-.09,-.27,-.18,-.33,-.33],["c",-.09,-.18,-.06,-.3,.12,-.75],["c",.66,-1.41,1.02,-2.88,1.08,-4.32],["c",0,-.6,-.03,-1.05,-.18,-1.59],["c",-.3,-1.2,-.99,-2.4,-2.25,-3.87],["c",-.42,-.48,-1.53,-1.62,-2.19,-2.22],["l",-.45,-.42],["l",-.03,1.11],["l",0,1.11],["l",-.21,0],["l",-.21,0],["l",0,-7.5],["z"],["m",1.65,.09],["c",-.3,-.3,-.69,-.72,-.9,-.87],["l",-.33,-.33],["l",0,.15],["c",0,.3,.06,.81,.15,1.26],["c",.27,1.29,.87,2.61,2.04,4.29],["c",.15,.24,.6,.87,.96,1.38],["l",1.08,1.53],["l",.42,.63],["c",.03,0,.12,-.36,.21,-.72],["c",.06,-.33,.06,-1.2,0,-1.62],["c",-.33,-1.71,-1.44,-3.48,-3.63,-5.7],["z"]],w:6.693,h:26.337},"flags.u32nd":{d:[["M",-.42,11.25],["l",0,-11.25],["l",.21,0],["l",.21,0],["l",0,.36],["c",.09,1.68,.69,3.27,2.07,5.46],["l",.87,1.35],["c",1.02,1.62,1.47,2.37,1.86,3.18],["c",.48,1.02,.78,1.92,.93,2.88],["c",.06,.48,.06,1.5,0,1.89],["c",-.09,.42,-.21,.87,-.36,1.26],["l",-.12,.3],["l",.15,.39],["c",.69,1.56,.84,2.88,.54,4.38],["c",-.09,.45,-.27,1.08,-.45,1.47],["l",-.12,.24],["l",.18,.36],["c",.33,.72,.57,1.56,.69,2.34],["c",.12,1.02,-.06,2.52,-.42,3.84],["c",-.27,.93,-.75,2.13,-.93,2.31],["c",-.18,.15,-.45,.18,-.66,.09],["c",-.18,-.09,-.27,-.18,-.33,-.33],["c",-.09,-.18,-.06,-.3,.06,-.6],["c",.21,-.36,.42,-.9,.57,-1.38],["c",.51,-1.41,.69,-3.06,.48,-4.08],["c",-.15,-.81,-.57,-1.68,-1.2,-2.55],["c",-.72,-.99,-1.83,-2.13,-3.3,-3.33],["l",-.48,-.42],["l",-.03,1.53],["l",0,1.56],["l",-.21,0],["l",-.21,0],["l",0,-11.25],["z"],["m",1.26,-3.96],["c",-.27,-.3,-.54,-.6,-.66,-.72],["l",-.18,-.21],["l",0,.42],["c",.06,.87,.24,1.74,.66,2.67],["c",.36,.87,.96,1.86,1.92,3.18],["c",.21,.33,.63,.87,.87,1.23],["c",.27,.39,.6,.84,.75,1.08],["l",.27,.39],["l",.03,-.12],["c",.12,-.45,.15,-1.05,.09,-1.59],["c",-.27,-1.86,-1.38,-3.78,-3.75,-6.33],["z"],["m",-.27,6.09],["c",-.27,-.21,-.48,-.42,-.51,-.45],["c",-.06,-.03,-.06,-.03,-.06,.21],["c",0,.9,.3,2.04,.81,3.09],["c",.48,1.02,.96,1.77,2.37,3.63],["c",.6,.78,1.05,1.44,1.29,1.77],["c",.06,.12,.15,.21,.15,.18],["c",.03,-.03,.18,-.57,.24,-.87],["c",.06,-.45,.06,-1.32,-.03,-1.74],["c",-.09,-.48,-.24,-.9,-.51,-1.44],["c",-.66,-1.35,-1.83,-2.7,-3.75,-4.38],["z"]],w:6.697,h:32.145},"flags.u64th":{d:[["M",-.42,15],["l",0,-15],["l",.21,0],["l",.21,0],["l",0,.36],["c",.06,1.2,.39,2.37,1.02,3.66],["c",.39,.81,.84,1.56,1.8,3.09],["c",.81,1.26,1.05,1.68,1.35,2.22],["c",.87,1.5,1.35,2.79,1.56,4.08],["c",.06,.54,.06,1.56,-.03,2.04],["c",-.09,.48,-.21,.99,-.36,1.35],["l",-.12,.27],["l",.12,.27],["c",.09,.15,.21,.45,.27,.66],["c",.69,1.89,.63,3.66,-.18,5.46],["l",-.18,.39],["l",.15,.33],["c",.3,.66,.51,1.44,.63,2.1],["c",.06,.48,.06,1.35,0,1.71],["c",-.15,.57,-.42,1.2,-.78,1.68],["l",-.21,.27],["l",.18,.33],["c",.57,1.05,.93,2.13,1.02,3.18],["c",.06,.72,0,1.83,-.21,2.79],["c",-.18,1.02,-.63,2.34,-1.02,3.09],["c",-.15,.33,-.48,.45,-.78,.3],["c",-.18,-.09,-.27,-.18,-.33,-.33],["c",-.09,-.18,-.06,-.3,.03,-.54],["c",.75,-1.5,1.23,-3.45,1.17,-4.89],["c",-.06,-1.02,-.42,-2.01,-1.17,-3.15],["c",-.48,-.72,-1.02,-1.35,-1.89,-2.22],["c",-.57,-.57,-1.56,-1.5,-1.92,-1.77],["l",-.12,-.09],["l",0,1.68],["l",0,1.68],["l",-.21,0],["l",-.21,0],["l",0,-15],["z"],["m",.93,-8.07],["c",-.27,-.3,-.48,-.54,-.51,-.54],["c",0,0,0,.69,.03,1.02],["c",.15,1.47,.75,2.94,2.04,4.83],["l",1.08,1.53],["c",.39,.57,.84,1.2,.99,1.44],["c",.15,.24,.3,.45,.3,.45],["c",0,0,.03,-.09,.06,-.21],["c",.36,-1.59,-.15,-3.33,-1.47,-5.4],["c",-.63,-.93,-1.35,-1.83,-2.52,-3.12],["z"],["m",.06,6.72],["c",-.24,-.21,-.48,-.42,-.51,-.45],["l",-.06,-.06],["l",0,.33],["c",0,1.2,.3,2.34,.93,3.6],["c",.45,.9,.96,1.68,2.25,3.51],["c",.39,.54,.84,1.17,1.02,1.44],["c",.21,.33,.33,.51,.33,.48],["c",.06,-.09,.21,-.63,.3,-.99],["c",.06,-.33,.06,-.45,.06,-.96],["c",0,-.6,-.03,-.84,-.18,-1.35],["c",-.3,-1.08,-1.02,-2.28,-2.13,-3.57],["c",-.39,-.45,-1.44,-1.47,-2.01,-1.98],["z"],["m",0,6.72],["c",-.24,-.21,-.48,-.39,-.51,-.42],["l",-.06,-.06],["l",0,.33],["c",0,1.41,.45,2.82,1.38,4.35],["c",.42,.72,.72,1.14,1.86,2.73],["c",.36,.45,.75,.99,.87,1.2],["c",.15,.21,.3,.36,.3,.36],["c",.06,0,.3,-.48,.39,-.75],["c",.09,-.36,.12,-.63,.12,-1.05],["c",-.06,-1.05,-.45,-2.04,-1.2,-3.18],["c",-.57,-.87,-1.11,-1.53,-2.07,-2.49],["c",-.36,-.33,-.84,-.78,-1.08,-1.02],["z"]],w:6.682,h:39.694},"flags.d8th":{d:[["M",5.67,-21.63],["c",.24,-.12,.54,-.06,.69,.15],["c",.06,.06,.21,.36,.39,.66],["c",.84,1.77,1.26,3.36,1.32,5.1],["c",.03,1.29,-.21,2.37,-.81,3.63],["c",-.6,1.23,-1.26,2.13,-3.21,4.38],["c",-1.35,1.53,-1.86,2.19,-2.4,2.97],["c",-.63,.93,-1.11,1.92,-1.38,2.79],["c",-.15,.54,-.27,1.35,-.27,1.8],["l",0,.15],["l",-.21,0],["l",-.21,0],["l",0,-3.75],["l",0,-3.75],["l",.21,0],["l",.21,0],["l",.48,-.3],["c",1.83,-1.11,3.12,-2.1,4.17,-3.12],["c",.78,-.81,1.32,-1.53,1.71,-2.31],["c",.45,-.93,.6,-1.74,.51,-2.88],["c",-.12,-1.56,-.63,-3.18,-1.47,-4.68],["c",-.12,-.21,-.15,-.33,-.06,-.51],["c",.06,-.15,.15,-.24,.33,-.33],["z"]],w:8.492,h:21.691},"flags.ugrace":{d:[["M",6.03,6.93],["c",.15,-.09,.33,-.06,.51,0],["c",.15,.09,.21,.15,.3,.33],["c",.09,.18,.06,.39,-.03,.54],["c",-.06,.15,-10.89,8.88,-11.07,8.97],["c",-.15,.09,-.33,.06,-.48,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.09,-.18,-.06,-.39,.03,-.54],["c",.06,-.15,10.89,-8.88,11.07,-8.97],["z"]],w:12.019,h:9.954},"flags.dgrace":{d:[["M",-6.06,-15.93],["c",.18,-.09,.33,-.12,.48,-.06],["c",.18,.09,14.01,8.04,14.1,8.1],["c",.12,.12,.18,.33,.18,.51],["c",-.03,.21,-.15,.39,-.36,.48],["c",-.18,.09,-.33,.12,-.48,.06],["c",-.18,-.09,-14.01,-8.04,-14.1,-8.1],["c",-.12,-.12,-.18,-.33,-.18,-.51],["c",.03,-.21,.15,-.39,.36,-.48],["z"]],w:15.12,h:9.212},"flags.d16th":{d:[["M",6.84,-22.53],["c",.27,-.12,.57,-.06,.72,.15],["c",.15,.15,.33,.87,.45,1.56],["c",.06,.33,.06,1.35,0,1.65],["c",-.06,.33,-.15,.78,-.27,1.11],["c",-.12,.33,-.45,.96,-.66,1.32],["l",-.18,.27],["l",.09,.18],["c",.48,1.02,.72,2.25,.69,3.3],["c",-.06,1.23,-.42,2.28,-1.26,3.45],["c",-.57,.87,-.99,1.32,-3,3.39],["c",-1.56,1.56,-2.22,2.4,-2.76,3.45],["c",-.42,.84,-.66,1.8,-.66,2.55],["l",0,.15],["l",-.21,0],["l",-.21,0],["l",0,-7.5],["l",0,-7.5],["l",.21,0],["l",.21,0],["l",0,1.14],["l",0,1.11],["l",.27,-.15],["c",1.11,-.57,1.77,-.99,2.52,-1.47],["c",2.37,-1.56,3.69,-3.15,4.05,-4.83],["c",.03,-.18,.03,-.39,.03,-.78],["c",0,-.6,-.03,-.93,-.24,-1.5],["c",-.06,-.18,-.12,-.39,-.15,-.45],["c",-.03,-.24,.12,-.48,.36,-.6],["z"],["m",-.63,7.5],["c",-.06,-.18,-.15,-.36,-.15,-.36],["c",-.03,0,-.03,.03,-.06,.06],["c",-.06,.12,-.96,1.02,-1.95,1.98],["c",-.63,.57,-1.26,1.17,-1.44,1.35],["c",-1.53,1.62,-2.28,2.85,-2.55,4.32],["c",-.03,.18,-.03,.54,-.06,.99],["l",0,.69],["l",.18,-.09],["c",.93,-.54,2.1,-1.29,2.82,-1.83],["c",.69,-.51,1.02,-.81,1.53,-1.29],["c",1.86,-1.89,2.37,-3.66,1.68,-5.82],["z"]],w:8.475,h:22.591},"flags.d32nd":{d:[["M",6.84,-29.13],["c",.27,-.12,.57,-.06,.72,.15],["c",.12,.12,.27,.63,.36,1.11],["c",.33,1.59,.06,3.06,-.81,4.47],["l",-.18,.27],["l",.09,.15],["c",.12,.24,.33,.69,.45,1.05],["c",.63,1.83,.45,3.57,-.57,5.22],["l",-.18,.3],["l",.15,.27],["c",.42,.87,.6,1.71,.57,2.61],["c",-.06,1.29,-.48,2.46,-1.35,3.78],["c",-.54,.81,-.93,1.29,-2.46,3],["c",-.51,.54,-1.05,1.17,-1.26,1.41],["c",-1.56,1.86,-2.25,3.36,-2.37,5.01],["l",0,.33],["l",-.21,0],["l",-.21,0],["l",0,-11.25],["l",0,-11.25],["l",.21,0],["l",.21,0],["l",0,1.35],["l",.03,1.35],["l",.78,-.39],["c",1.38,-.69,2.34,-1.26,3.24,-1.92],["c",1.38,-1.02,2.28,-2.13,2.64,-3.21],["c",.15,-.48,.18,-.72,.18,-1.29],["c",0,-.57,-.06,-.9,-.24,-1.47],["c",-.06,-.18,-.12,-.39,-.15,-.45],["c",-.03,-.24,.12,-.48,.36,-.6],["z"],["m",-.63,7.2],["c",-.09,-.18,-.12,-.21,-.12,-.15],["c",-.03,.09,-1.02,1.08,-2.04,2.04],["c",-1.17,1.08,-1.65,1.56,-2.07,2.04],["c",-.84,.96,-1.38,1.86,-1.68,2.76],["c",-.21,.57,-.27,.99,-.3,1.65],["l",0,.54],["l",.66,-.33],["c",3.57,-1.86,5.49,-3.69,5.94,-5.7],["c",.06,-.39,.06,-1.2,-.03,-1.65],["c",-.06,-.39,-.24,-.9,-.36,-1.2],["z"],["m",-.06,7.2],["c",-.06,-.15,-.12,-.33,-.15,-.45],["l",-.06,-.18],["l",-.18,.21],["l",-1.83,1.83],["c",-.87,.9,-1.77,1.8,-1.95,2.01],["c",-1.08,1.29,-1.62,2.31,-1.89,3.51],["c",-.06,.3,-.06,.51,-.09,.93],["l",0,.57],["l",.09,-.06],["c",.75,-.45,1.89,-1.26,2.52,-1.74],["c",.81,-.66,1.74,-1.53,2.22,-2.16],["c",1.26,-1.53,1.68,-3.06,1.32,-4.47],["z"]],w:8.385,h:29.191},"flags.d64th":{d:[["M",7.08,-32.88],["c",.3,-.12,.66,-.03,.78,.24],["c",.18,.33,.27,2.1,.15,2.64],["c",-.09,.39,-.21,.78,-.39,1.08],["l",-.15,.3],["l",.09,.27],["c",.03,.12,.09,.45,.12,.69],["c",.27,1.44,.18,2.55,-.3,3.6],["l",-.12,.33],["l",.06,.42],["c",.27,1.35,.33,2.82,.21,3.63],["c",-.12,.6,-.3,1.23,-.57,1.8],["l",-.15,.27],["l",.03,.42],["c",.06,1.02,.06,2.7,.03,3.06],["c",-.15,1.47,-.66,2.76,-1.74,4.41],["c",-.45,.69,-.75,1.11,-1.74,2.37],["c",-1.05,1.38,-1.5,1.98,-1.95,2.73],["c",-.93,1.5,-1.38,2.82,-1.44,4.2],["l",0,.42],["l",-.21,0],["l",-.21,0],["l",0,-15],["l",0,-15],["l",.21,0],["l",.21,0],["l",0,1.86],["l",0,1.89],["c",0,0,.21,-.03,.45,-.09],["c",2.22,-.39,4.08,-1.11,5.19,-2.01],["c",.63,-.54,1.02,-1.14,1.2,-1.8],["c",.06,-.3,.06,-1.14,-.03,-1.65],["c",-.03,-.18,-.06,-.39,-.09,-.48],["c",-.03,-.24,.12,-.48,.36,-.6],["z"],["m",-.45,6.15],["c",-.03,-.18,-.06,-.42,-.06,-.54],["l",-.03,-.18],["l",-.33,.3],["c",-.42,.36,-.87,.72,-1.68,1.29],["c",-1.98,1.38,-2.25,1.59,-2.85,2.16],["c",-.75,.69,-1.23,1.44,-1.47,2.19],["c",-.15,.45,-.18,.63,-.21,1.35],["l",0,.66],["l",.39,-.18],["c",1.83,-.9,3.45,-1.95,4.47,-2.91],["c",.93,-.9,1.53,-1.83,1.74,-2.82],["c",.06,-.33,.06,-.87,.03,-1.32],["z"],["m",-.27,4.86],["c",-.03,-.21,-.06,-.36,-.06,-.36],["c",0,-.03,-.12,.09,-.24,.24],["c",-.39,.48,-.99,1.08,-2.16,2.19],["c",-1.47,1.38,-1.92,1.83,-2.46,2.49],["c",-.66,.87,-1.08,1.74,-1.29,2.58],["c",-.09,.42,-.15,.87,-.15,1.44],["l",0,.54],["l",.48,-.33],["c",1.5,-1.02,2.58,-1.89,3.51,-2.82],["c",1.47,-1.47,2.25,-2.85,2.4,-4.26],["c",.03,-.39,.03,-1.17,-.03,-1.71],["z"],["m",-.66,7.68],["c",.03,-.15,.03,-.6,.03,-.99],["l",0,-.72],["l",-.27,.33],["l",-1.74,1.98],["c",-1.77,1.92,-2.43,2.76,-2.97,3.9],["c",-.51,1.02,-.72,1.77,-.75,2.91],["c",0,.63,0,.63,.06,.6],["c",.03,-.03,.3,-.27,.63,-.54],["c",.66,-.6,1.86,-1.8,2.31,-2.31],["c",1.65,-1.89,2.52,-3.54,2.7,-5.16],["z"]],w:8.485,h:32.932},"clefs.C":{d:[["M",.06,-14.94],["l",.09,-.06],["l",1.92,0],["l",1.92,0],["l",.09,.06],["l",.06,.09],["l",0,14.85],["l",0,14.82],["l",-.06,.09],["l",-.09,.06],["l",-1.92,0],["l",-1.92,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-14.82],["l",0,-14.85],["z"],["m",5.37,0],["c",.09,-.06,.09,-.06,.57,-.06],["c",.45,0,.45,0,.54,.06],["l",.06,.09],["l",0,7.14],["l",0,7.11],["l",.09,-.06],["c",.18,-.18,.72,-.84,.96,-1.2],["c",.3,-.45,.66,-1.17,.84,-1.65],["c",.36,-.9,.57,-1.83,.6,-2.79],["c",.03,-.48,.03,-.54,.09,-.63],["c",.12,-.18,.36,-.21,.54,-.12],["c",.18,.09,.21,.15,.24,.66],["c",.06,.87,.21,1.56,.57,2.22],["c",.51,1.02,1.26,1.68,2.22,1.92],["c",.21,.06,.33,.06,.78,.06],["c",.45,0,.57,0,.84,-.06],["c",.45,-.12,.81,-.33,1.08,-.6],["c",.57,-.57,.87,-1.41,.99,-2.88],["c",.06,-.54,.06,-3,0,-3.57],["c",-.21,-2.58,-.84,-3.87,-2.16,-4.5],["c",-.48,-.21,-1.17,-.36,-1.77,-.36],["c",-.69,0,-1.29,.27,-1.5,.72],["c",-.06,.15,-.06,.21,-.06,.42],["c",0,.24,0,.3,.06,.45],["c",.12,.24,.24,.39,.63,.66],["c",.42,.3,.57,.48,.69,.72],["c",.06,.15,.06,.21,.06,.48],["c",0,.39,-.03,.63,-.21,.96],["c",-.3,.6,-.87,1.08,-1.5,1.26],["c",-.27,.06,-.87,.06,-1.14,0],["c",-.78,-.24,-1.44,-.87,-1.65,-1.68],["c",-.12,-.42,-.09,-1.17,.09,-1.71],["c",.51,-1.65,1.98,-2.82,3.81,-3.09],["c",.84,-.09,2.46,.03,3.51,.27],["c",2.22,.57,3.69,1.8,4.44,3.75],["c",.36,.93,.57,2.13,.57,3.36],["c",0,1.44,-.48,2.73,-1.38,3.81],["c",-1.26,1.5,-3.27,2.43,-5.28,2.43],["c",-.48,0,-.51,0,-.75,-.09],["c",-.15,-.03,-.48,-.21,-.78,-.36],["c",-.69,-.36,-.87,-.42,-1.26,-.42],["c",-.27,0,-.3,0,-.51,.09],["c",-.57,.3,-.81,.9,-.81,2.1],["c",0,1.23,.24,1.83,.81,2.13],["c",.21,.09,.24,.09,.51,.09],["c",.39,0,.57,-.06,1.26,-.42],["c",.3,-.15,.63,-.33,.78,-.36],["c",.24,-.09,.27,-.09,.75,-.09],["c",2.01,0,4.02,.93,5.28,2.4],["c",.9,1.11,1.38,2.4,1.38,3.84],["c",0,1.5,-.3,2.88,-.84,3.96],["c",-.78,1.59,-2.19,2.64,-4.17,3.15],["c",-1.05,.24,-2.67,.36,-3.51,.27],["c",-1.83,-.27,-3.3,-1.44,-3.81,-3.09],["c",-.18,-.54,-.21,-1.29,-.09,-1.74],["c",.15,-.6,.63,-1.2,1.23,-1.47],["c",.36,-.18,.57,-.21,.99,-.21],["c",.42,0,.63,.03,1.02,.21],["c",.42,.21,.84,.63,1.05,1.05],["c",.18,.36,.21,.6,.21,.96],["c",0,.3,0,.36,-.06,.51],["c",-.12,.24,-.27,.42,-.69,.72],["c",-.57,.42,-.69,.63,-.69,1.08],["c",0,.24,0,.3,.06,.45],["c",.12,.21,.3,.39,.57,.54],["c",.42,.18,.87,.21,1.53,.15],["c",1.08,-.15,1.8,-.57,2.34,-1.32],["c",.54,-.75,.84,-1.83,.99,-3.51],["c",.06,-.57,.06,-3.03,0,-3.57],["c",-.12,-1.47,-.42,-2.31,-.99,-2.88],["c",-.27,-.27,-.63,-.48,-1.08,-.6],["c",-.27,-.06,-.39,-.06,-.84,-.06],["c",-.45,0,-.57,0,-.78,.06],["c",-1.14,.27,-2.01,1.17,-2.46,2.49],["c",-.21,.57,-.3,.99,-.33,1.65],["c",-.03,.51,-.06,.57,-.24,.66],["c",-.12,.06,-.27,.06,-.39,0],["c",-.21,-.09,-.21,-.15,-.24,-.75],["c",-.09,-1.92,-.78,-3.72,-2.01,-5.19],["c",-.18,-.21,-.36,-.42,-.39,-.45],["l",-.09,-.06],["l",0,7.11],["l",0,7.14],["l",-.06,.09],["c",-.09,.06,-.09,.06,-.54,.06],["c",-.48,0,-.48,0,-.57,-.06],["l",-.06,-.09],["l",0,-14.82],["l",0,-14.85],["z"]],w:20.31,h:29.97},"clefs.F":{d:[["M",6.3,-7.8],["c",.36,-.03,1.65,0,2.13,.03],["c",3.6,.42,6.03,2.1,6.93,4.86],["c",.27,.84,.36,1.5,.36,2.58],["c",0,.9,-.03,1.35,-.18,2.16],["c",-.78,3.78,-3.54,7.08,-8.37,9.96],["c",-1.74,1.05,-3.87,2.13,-6.18,3.12],["c",-.39,.18,-.75,.33,-.81,.36],["c",-.06,.03,-.15,.06,-.18,.06],["c",-.15,0,-.33,-.18,-.33,-.33],["c",0,-.15,.06,-.21,.51,-.48],["c",3,-1.77,5.13,-3.21,6.84,-4.74],["c",.51,-.45,1.59,-1.5,1.95,-1.95],["c",1.89,-2.19,2.88,-4.32,3.15,-6.78],["c",.06,-.42,.06,-1.77,0,-2.19],["c",-.24,-2.01,-.93,-3.63,-2.04,-4.71],["c",-.63,-.63,-1.29,-1.02,-2.07,-1.2],["c",-1.62,-.39,-3.36,.15,-4.56,1.44],["c",-.54,.6,-1.05,1.47,-1.32,2.22],["l",-.09,.21],["l",.24,-.12],["c",.39,-.21,.63,-.24,1.11,-.24],["c",.3,0,.45,0,.66,.06],["c",1.92,.48,2.85,2.55,1.95,4.38],["c",-.45,.99,-1.41,1.62,-2.46,1.71],["c",-1.47,.09,-2.91,-.87,-3.39,-2.25],["c",-.18,-.57,-.21,-1.32,-.03,-2.28],["c",.39,-2.25,1.83,-4.2,3.81,-5.19],["c",.69,-.36,1.59,-.6,2.37,-.69],["z"],["m",11.58,2.52],["c",.84,-.21,1.71,.3,1.89,1.14],["c",.3,1.17,-.72,2.19,-1.89,1.89],["c",-.99,-.21,-1.5,-1.32,-1.02,-2.25],["c",.18,-.39,.6,-.69,1.02,-.78],["z"],["m",0,7.5],["c",.84,-.21,1.71,.3,1.89,1.14],["c",.21,.87,-.3,1.71,-1.14,1.89],["c",-.87,.21,-1.71,-.3,-1.89,-1.14],["c",-.21,-.84,.3,-1.71,1.14,-1.89],["z"]],w:20.153,h:23.142},"clefs.G":{d:[["M",9.69,-37.41],["c",.09,-.09,.24,-.06,.36,0],["c",.12,.09,.57,.6,.96,1.11],["c",1.77,2.34,3.21,5.85,3.57,8.73],["c",.21,1.56,.03,3.27,-.45,4.86],["c",-.69,2.31,-1.92,4.47,-4.23,7.44],["c",-.3,.39,-.57,.72,-.6,.75],["c",-.03,.06,0,.15,.18,.78],["c",.54,1.68,1.38,4.44,1.68,5.49],["l",.09,.42],["l",.39,0],["c",1.47,.09,2.76,.51,3.96,1.29],["c",1.83,1.23,3.06,3.21,3.39,5.52],["c",.09,.45,.12,1.29,.06,1.74],["c",-.09,1.02,-.33,1.83,-.75,2.73],["c",-.84,1.71,-2.28,3.06,-4.02,3.72],["l",-.33,.12],["l",.03,1.26],["c",0,1.74,-.06,3.63,-.21,4.62],["c",-.45,3.06,-2.19,5.49,-4.47,6.21],["c",-.57,.18,-.9,.21,-1.59,.21],["c",-.69,0,-1.02,-.03,-1.65,-.21],["c",-1.14,-.27,-2.13,-.84,-2.94,-1.65],["c",-.99,-.99,-1.56,-2.16,-1.71,-3.54],["c",-.09,-.81,.06,-1.53,.45,-2.13],["c",.63,-.99,1.83,-1.56,3,-1.53],["c",1.5,.09,2.64,1.32,2.73,2.94],["c",.06,1.47,-.93,2.7,-2.37,2.97],["c",-.45,.06,-.84,.03,-1.29,-.09],["l",-.21,-.09],["l",.09,.12],["c",.39,.54,.78,.93,1.32,1.26],["c",1.35,.87,3.06,1.02,4.35,.36],["c",1.44,-.72,2.52,-2.28,2.97,-4.35],["c",.15,-.66,.24,-1.5,.3,-3.03],["c",.03,-.84,.03,-2.94,0,-3],["c",-.03,0,-.18,0,-.36,.03],["c",-.66,.12,-.99,.12,-1.83,.12],["c",-1.05,0,-1.71,-.06,-2.61,-.3],["c",-4.02,-.99,-7.11,-4.35,-7.8,-8.46],["c",-.12,-.66,-.12,-.99,-.12,-1.83],["c",0,-.84,0,-1.14,.15,-1.92],["c",.36,-2.28,1.41,-4.62,3.3,-7.29],["l",2.79,-3.6],["c",.54,-.66,.96,-1.2,.96,-1.23],["c",0,-.03,-.09,-.33,-.18,-.69],["c",-.96,-3.21,-1.41,-5.28,-1.59,-7.68],["c",-.12,-1.38,-.15,-3.09,-.06,-3.96],["c",.33,-2.67,1.38,-5.07,3.12,-7.08],["c",.36,-.42,.99,-1.05,1.17,-1.14],["z"],["m",2.01,4.71],["c",-.15,-.3,-.3,-.54,-.3,-.54],["c",-.03,0,-.18,.09,-.3,.21],["c",-2.4,1.74,-3.87,4.2,-4.26,7.11],["c",-.06,.54,-.06,1.41,-.03,1.89],["c",.09,1.29,.48,3.12,1.08,5.22],["c",.15,.42,.24,.78,.24,.81],["c",0,.03,.84,-1.11,1.23,-1.68],["c",1.89,-2.73,2.88,-5.07,3.15,-7.53],["c",.09,-.57,.12,-1.74,.06,-2.37],["c",-.09,-1.23,-.27,-1.92,-.87,-3.12],["z"],["m",-2.94,20.7],["c",-.21,-.72,-.39,-1.32,-.42,-1.32],["c",0,0,-1.2,1.47,-1.86,2.37],["c",-2.79,3.63,-4.02,6.3,-4.35,9.3],["c",-.03,.21,-.03,.69,-.03,1.08],["c",0,.69,0,.75,.06,1.11],["c",.12,.54,.27,.99,.51,1.47],["c",.69,1.38,1.83,2.55,3.42,3.42],["c",.96,.54,2.07,.9,3.21,1.08],["c",.78,.12,2.04,.12,2.94,-.03],["c",.51,-.06,.45,-.03,.42,-.3],["c",-.24,-3.33,-.72,-6.33,-1.62,-10.08],["c",-.09,-.39,-.18,-.75,-.18,-.78],["c",-.03,-.03,-.42,0,-.81,.09],["c",-.9,.18,-1.65,.57,-2.22,1.14],["c",-.72,.72,-1.08,1.65,-1.05,2.64],["c",.06,.96,.48,1.83,1.23,2.58],["c",.36,.36,.72,.63,1.17,.9],["c",.33,.18,.36,.21,.42,.33],["c",.18,.42,-.18,.9,-.6,.87],["c",-.18,-.03,-.84,-.36,-1.26,-.63],["c",-.78,-.51,-1.38,-1.11,-1.86,-1.83],["c",-1.77,-2.7,-.99,-6.42,1.71,-8.19],["c",.3,-.21,.81,-.48,1.17,-.63],["c",.3,-.09,1.02,-.3,1.14,-.3],["c",.06,0,.09,0,.09,-.03],["c",.03,-.03,-.51,-1.92,-1.23,-4.26],["z"],["m",3.78,7.41],["c",-.18,-.03,-.36,-.06,-.39,-.06],["c",-.03,0,0,.21,.18,1.02],["c",.75,3.18,1.26,6.3,1.5,9.09],["c",.06,.72,0,.69,.51,.42],["c",.78,-.36,1.44,-.96,1.98,-1.77],["c",1.08,-1.62,1.2,-3.69,.3,-5.55],["c",-.81,-1.62,-2.31,-2.79,-4.08,-3.15],["z"]],w:19.051,h:57.057},"clefs.perc":{d:[["M",5.07,-7.44],["l",.09,-.06],["l",1.53,0],["l",1.53,0],["l",.09,.06],["l",.06,.09],["l",0,7.35],["l",0,7.32],["l",-.06,.09],["l",-.09,.06],["l",-1.53,0],["l",-1.53,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-7.32],["l",0,-7.35],["z"],["m",6.63,0],["l",.09,-.06],["l",1.53,0],["l",1.53,0],["l",.09,.06],["l",.06,.09],["l",0,7.35],["l",0,7.32],["l",-.06,.09],["l",-.09,.06],["l",-1.53,0],["l",-1.53,0],["l",-.09,-.06],["l",-.06,-.09],["l",0,-7.32],["l",0,-7.35],["z"]],w:21,h:14.97},"tab.big":{d:[["M",20.16,-21.66],["c",.24,-.09,.66,.09,.78,.36],["c",.09,.21,.09,.24,-.18,.54],["c",-.78,.81,-1.86,1.44,-2.94,1.71],["c",-.87,.24,-1.71,.24,-2.55,.03],["l",-.06,-.03],["l",-.18,.99],["c",-.33,1.98,-.75,4.26,-.96,5.04],["c",-.42,1.65,-1.26,3.18,-2.28,4.14],["c",-.57,.57,-1.17,.9,-1.86,1.08],["c",-.18,.06,-.33,.06,-.66,.06],["c",-.54,0,-.78,-.03,-1.23,-.27],["c",-.39,-.18,-.66,-.39,-1.38,-.99],["c",-.3,-.24,-.66,-.51,-.75,-.57],["c",-.21,-.15,-.27,-.24,-.24,-.45],["c",.06,-.27,.36,-.6,.6,-.66],["c",.18,-.03,.33,.06,.9,.57],["c",.48,.42,.72,.57,.93,.69],["c",.66,.33,1.38,.21,1.95,-.36],["c",.63,-.6,1.05,-1.62,1.23,-3],["c",.03,-.18,.09,-.66,.09,-1.11],["c",.09,-1.56,.33,-3.81,.57,-5.49],["c",.06,-.33,.09,-.63,.09,-.63],["c",-.03,-.03,-.81,-.12,-1.02,-.12],["c",-.57,0,-1.32,.12,-1.8,.33],["c",-.87,.3,-1.35,.78,-1.5,1.41],["c",-.18,.63,.09,1.26,.66,1.65],["c",.12,.06,.15,.12,.18,.24],["c",.09,.27,.06,.57,-.09,.75],["c",-.03,.06,-.12,.09,-.27,.15],["c",-.72,.21,-1.44,.15,-2.1,-.18],["c",-.54,-.27,-.96,-.66,-1.2,-1.14],["c",-.39,-.75,-.33,-1.74,.15,-2.52],["c",.27,-.42,.84,-.93,1.41,-1.23],["c",1.17,-.57,2.88,-.9,4.8,-.9],["c",.69,0,.78,0,1.08,.06],["c",.45,.09,1.11,.3,2.07,.6],["c",1.47,.48,1.83,.57,2.55,.54],["c",1.02,-.06,2.04,-.45,2.94,-1.11],["c",.12,-.09,.24,-.18,.27,-.18],["z"],["m",-5.88,13.05],["c",.21,-.03,.81,0,1.08,.06],["c",.48,.12,.9,.42,.99,.69],["c",.03,.09,.03,.15,0,.27],["c",0,.09,-.03,.57,-.06,1.08],["c",-.09,2.19,-.24,5.76,-.39,8.28],["c",-.06,1.53,-.06,1.77,.03,2.01],["c",.09,.18,.15,.24,.3,.3],["c",.24,.12,.54,.06,1.23,-.27],["c",.57,-.27,.66,-.3,.75,-.24],["c",.09,.06,.18,.3,.18,.45],["c",0,.33,-.15,.51,-.45,.63],["c",-.12,.03,-.39,.15,-.6,.27],["c",-1.17,.6,-1.38,.69,-1.8,.72],["c",-.45,.03,-.78,-.09,-1.08,-.39],["c",-.39,-.42,-.66,-1.2,-1.02,-3.12],["c",-.24,-1.23,-.36,-2.07,-.54,-3.75],["l",0,-.18],["l",-.36,.45],["c",-.6,.75,-1.32,1.59,-1.95,2.25],["c",-.15,.18,-.27,.3,-.27,.33],["c",0,0,.06,.09,.15,.18],["c",.24,.33,.6,.57,1.05,.69],["c",.18,.06,.3,.06,.69,.06],["l",.48,.03],["l",.06,.12],["c",.15,.27,.03,.72,-.21,.9],["c",-.18,.12,-.93,.27,-1.41,.27],["c",-.84,0,-1.59,-.3,-1.98,-.84],["l",-.12,-.15],["l",-.45,.42],["c",-.99,.87,-1.53,1.32,-2.16,1.74],["c",-.78,.51,-1.5,.84,-2.1,.93],["c",-.69,.12,-1.2,.03,-1.95,-.42],["c",-.21,-.12,-.51,-.27,-.66,-.36],["c",-.24,-.12,-.3,-.18,-.33,-.24],["c",-.12,-.27,.15,-.78,.45,-.93],["c",.24,-.12,.33,-.09,.9,.18],["c",.6,.3,.84,.39,1.2,.36],["c",.87,-.09,1.77,-.69,3.24,-2.31],["c",2.67,-2.85,4.59,-5.94,5.7,-9.15],["c",.15,-.45,.24,-.63,.42,-.81],["c",.21,-.24,.6,-.45,.99,-.51],["z"],["m",-3.99,16.05],["c",.18,0,.69,-.03,1.17,0],["c",3.27,.03,5.37,.75,6,2.07],["c",.45,.99,.12,2.4,-.81,3.42],["c",-.24,.27,-.57,.57,-.84,.75],["c",-.09,.06,-.18,.09,-.18,.12],["c",0,0,.18,.03,.42,.09],["c",1.23,.3,2.01,.81,2.37,1.59],["c",.27,.54,.3,1.32,.09,2.1],["c",-.12,.36,-.45,1.05,-.69,1.35],["c",-.87,1.17,-2.1,1.92,-3.54,2.25],["c",-.36,.06,-.48,.06,-.96,.06],["c",-.45,0,-.66,0,-.84,-.03],["c",-.84,-.18,-1.47,-.51,-2.07,-1.11],["c",-.33,-.33,-.45,-.51,-.45,-.63],["c",0,-.06,.03,-.15,.06,-.24],["c",.18,-.33,.69,-.6,.93,-.48],["c",.03,.03,.15,.12,.27,.24],["c",.39,.42,.99,.57,1.62,.45],["c",1.05,-.21,1.98,-1.02,2.31,-2.01],["c",.48,-1.53,-.48,-2.55,-2.58,-2.67],["c",-.21,0,-.36,-.03,-.42,-.06],["c",-.15,-.09,-.21,-.51,-.06,-.78],["c",.12,-.27,.24,-.33,.6,-.36],["c",.57,-.06,1.11,-.42,1.5,-.99],["c",.48,-.72,.54,-1.59,.18,-2.31],["c",-.12,-.21,-.45,-.54,-.69,-.69],["c",-.33,-.21,-.93,-.45,-1.35,-.51],["l",-.12,-.03],["l",-.06,.48],["c",-.54,2.94,-1.14,6.24,-1.29,6.75],["c",-.33,1.35,-.93,2.61,-1.65,3.6],["c",-.3,.36,-.81,.9,-1.14,1.14],["c",-.3,.24,-.84,.48,-1.14,.57],["c",-.33,.09,-.96,.09,-1.26,.03],["c",-.45,-.12,-.87,-.39,-1.53,-.96],["c",-.24,-.15,-.51,-.39,-.63,-.48],["c",-.3,-.21,-.33,-.33,-.21,-.63],["c",.12,-.18,.27,-.36,.42,-.45],["c",.27,-.12,.36,-.09,.87,.33],["c",.78,.6,1.08,.75,1.65,.72],["c",.45,-.03,.81,-.21,1.17,-.54],["c",.87,-.9,1.38,-2.85,1.38,-5.37],["c",0,-.6,.03,-1.11,.12,-2.04],["c",.06,-.69,.24,-2.01,.33,-2.58],["c",.06,-.24,.06,-.42,.06,-.42],["c",0,0,-.12,.03,-.21,.09],["c",-1.44,.57,-2.16,1.65,-1.74,2.55],["c",.09,.15,.18,.24,.27,.33],["c",.24,.21,.3,.27,.33,.39],["c",.06,.24,0,.63,-.15,.78],["c",-.09,.12,-.54,.21,-.96,.24],["c",-1.02,.03,-2.01,-.48,-2.43,-1.32],["c",-.21,-.45,-.27,-.9,-.15,-1.44],["c",.06,-.27,.21,-.66,.39,-.93],["c",.87,-1.29,3,-2.22,5.64,-2.43],["z"]],w:19.643,h:43.325},"tab.tiny":{d:[["M",16.02,-17.25],["c",.12,-.09,.15,-.09,.27,-.09],["c",.21,.03,.51,.3,.51,.45],["c",0,.06,-.12,.18,-.3,.36],["c",-1.11,1.08,-2.55,1.59,-3.84,1.41],["c",-.15,-.03,-.33,-.06,-.39,-.09],["c",-.06,-.03,-.09,-.03,-.12,-.03],["c",0,0,-.06,.42,-.15,.93],["c",-.33,2.01,-.66,3.69,-.84,4.26],["c",-.42,1.41,-1.23,2.67,-2.16,3.33],["c",-.27,.18,-.75,.42,-.99,.48],["c",-.3,.09,-.72,.09,-1.02,.06],["c",-.45,-.09,-.84,-.33,-1.53,-.9],["c",-.21,-.18,-.51,-.39,-.63,-.48],["c",-.27,-.21,-.3,-.24,-.3,-.36],["c",0,-.12,.09,-.36,.18,-.45],["c",.09,-.09,.27,-.18,.36,-.18],["c",.12,0,.3,.12,.66,.45],["c",.57,.51,.87,.69,1.23,.72],["c",.93,.06,1.68,-.78,1.98,-2.37],["c",.09,-.39,.15,-.75,.18,-1.53],["c",.06,-.99,.24,-2.79,.42,-4.05],["c",.03,-.3,.06,-.57,.06,-.6],["c",0,-.06,-.03,-.09,-.15,-.12],["c",-.9,-.18,-2.13,.06,-2.76,.57],["c",-.36,.3,-.51,.6,-.51,1.02],["c",0,.45,.15,.75,.48,.99],["c",.06,.06,.15,.18,.18,.24],["c",.12,.24,.03,.63,-.15,.69],["c",-.24,.12,-.6,.15,-.9,.15],["c",-.36,-.03,-.57,-.09,-.87,-.24],["c",-.78,-.36,-1.23,-1.11,-1.2,-1.92],["c",.12,-1.53,1.74,-2.49,4.62,-2.7],["c",1.2,-.09,1.47,-.03,3.33,.57],["c",.9,.3,1.14,.36,1.56,.39],["c",.45,0,.93,-.06,1.38,-.21],["c",.51,-.18,.81,-.33,1.41,-.75],["z"],["m",-4.68,10.38],["c",.39,-.06,.84,0,1.2,.15],["c",.24,.12,.36,.21,.45,.36],["l",.09,.09],["l",-.06,1.41],["c",-.09,2.19,-.18,3.96,-.27,5.49],["c",-.03,.78,-.06,1.59,-.06,1.86],["c",0,.42,0,.48,.06,.57],["c",.06,.18,.18,.24,.36,.27],["c",.18,0,.39,-.06,.84,-.27],["c",.45,-.21,.54,-.24,.63,-.18],["c",.12,.12,.15,.54,.03,.69],["c",-.03,.03,-.15,.12,-.27,.18],["c",-.15,.03,-.3,.12,-.36,.15],["c",-.87,.45,-1.02,.51,-1.26,.57],["c",-.33,.09,-.6,.06,-.84,-.06],["c",-.42,-.18,-.63,-.6,-.87,-1.44],["c",-.3,-1.23,-.57,-2.97,-.66,-4.08],["c",0,-.18,-.03,-.3,-.03,-.33],["l",-.06,.06],["c",-.18,.27,-1.11,1.38,-1.68,2.01],["l",-.33,.33],["l",.06,.09],["c",.06,.15,.27,.33,.48,.42],["c",.27,.18,.51,.24,.96,.27],["l",.39,0],["l",.03,.12],["c",.12,.21,.03,.57,-.15,.69],["c",-.03,.03,-.21,.09,-.36,.15],["c",-.27,.06,-.39,.06,-.75,.06],["c",-.48,0,-.75,-.03,-1.08,-.21],["c",-.21,-.12,-.51,-.36,-.57,-.48],["l",-.03,-.09],["l",-.39,.36],["c",-1.47,1.35,-2.49,1.98,-3.42,2.13],["c",-.54,.09,-.96,-.03,-1.62,-.39],["c",-.21,-.15,-.45,-.27,-.54,-.3],["c",-.18,-.09,-.21,-.21,-.12,-.45],["c",.06,-.27,.33,-.48,.54,-.48],["c",.03,0,.27,.09,.48,.21],["c",.48,.24,.69,.27,.99,.27],["c",.6,-.06,1.17,-.42,2.1,-1.35],["c",2.22,-2.22,4.02,-4.98,4.95,-7.59],["c",.21,-.57,.3,-.78,.48,-.93],["c",.15,-.15,.42,-.27,.66,-.33],["z"],["m",-3.06,12.84],["c",.27,-.03,1.68,0,2.01,.03],["c",1.92,.18,3.15,.69,3.63,1.5],["c",.18,.33,.24,.51,.21,.93],["c",0,.45,-.06,.72,-.24,1.11],["c",-.24,.51,-.69,1.02,-1.17,1.35],["c",-.21,.15,-.21,.15,-.12,.18],["c",.72,.15,1.11,.3,1.5,.57],["c",.39,.24,.63,.57,.75,.96],["c",.09,.3,.09,.96,0,1.29],["c",-.15,.57,-.39,1.05,-.78,1.5],["c",-.66,.75,-1.62,1.32,-2.61,1.53],["c",-.27,.06,-.42,.06,-.84,.06],["c",-.48,0,-.57,0,-.81,-.06],["c",-.6,-.18,-1.05,-.42,-1.47,-.81],["c",-.36,-.39,-.42,-.51,-.3,-.75],["c",.12,-.21,.39,-.39,.6,-.39],["c",.09,0,.15,.03,.33,.18],["c",.12,.12,.27,.24,.36,.27],["c",.96,.48,2.46,-.33,2.82,-1.5],["c",.24,-.81,-.03,-1.44,-.69,-1.77],["c",-.39,-.21,-1.02,-.33,-1.53,-.33],["c",-.18,0,-.21,0,-.27,-.09],["c",-.06,-.09,-.06,-.3,-.03,-.48],["c",.06,-.18,.18,-.36,.33,-.36],["c",.39,-.06,.51,-.09,.72,-.18],["c",.69,-.36,1.11,-1.23,.99,-2.01],["c",-.09,-.51,-.42,-.9,-.93,-1.17],["c",-.24,-.12,-.6,-.27,-.87,-.3],["c",-.09,-.03,-.09,-.03,-.12,.12],["c",0,.09,-.21,1.11,-.42,2.25],["c",-.66,3.75,-.72,3.99,-1.26,5.07],["c",-.9,1.89,-2.25,2.85,-3.48,2.61],["c",-.39,-.09,-.69,-.27,-1.38,-.84],["c",-.63,-.51,-.63,-.48,-.63,-.6],["c",0,-.18,.18,-.48,.39,-.57],["c",.21,-.12,.3,-.09,.81,.33],["c",.15,.15,.39,.3,.54,.36],["c",.18,.12,.27,.12,.48,.15],["c",.99,.06,1.71,-.78,2.04,-2.46],["c",.12,-.66,.18,-1.14,.21,-2.22],["c",.03,-1.23,.12,-2.25,.36,-3.63],["c",.03,-.24,.06,-.45,.06,-.48],["c",-.06,-.03,-.66,.27,-.9,.42],["c",-.06,.06,-.21,.18,-.33,.3],["c",-.57,.57,-.6,1.35,-.06,1.74],["c",.18,.12,.24,.24,.21,.51],["c",-.03,.3,-.15,.42,-.57,.48],["c",-1.11,.24,-2.22,-.42,-2.43,-1.38],["c",-.09,-.45,.03,-1.02,.3,-1.47],["c",.18,-.24,.6,-.63,.9,-.84],["c",.9,-.6,2.28,-1.02,3.69,-1.11],["z"]],w:15.709,h:34.656},"timesig.common":{d:[["M",6.66,-7.83],["c",.72,-.06,1.41,-.03,1.98,.09],["c",1.2,.27,2.34,.96,3.09,1.92],["c",.63,.81,1.08,1.86,1.14,2.73],["c",.06,1.02,-.51,1.92,-1.44,2.22],["c",-.24,.09,-.3,.09,-.63,.09],["c",-.33,0,-.42,0,-.63,-.06],["c",-.66,-.24,-1.14,-.63,-1.41,-1.2],["c",-.15,-.3,-.21,-.51,-.24,-.9],["c",-.06,-1.08,.57,-2.04,1.56,-2.37],["c",.18,-.06,.27,-.06,.63,-.06],["l",.45,0],["c",.06,.03,.09,.03,.09,0],["c",0,0,-.09,-.12,-.24,-.27],["c",-1.02,-1.11,-2.55,-1.68,-4.08,-1.5],["c",-1.29,.15,-2.04,.69,-2.4,1.74],["c",-.36,.93,-.42,1.89,-.42,5.37],["c",0,2.97,.06,3.96,.24,4.77],["c",.24,1.08,.63,1.68,1.41,2.07],["c",.81,.39,2.16,.45,3.18,.09],["c",1.29,-.45,2.37,-1.53,3.03,-2.97],["c",.15,-.33,.33,-.87,.39,-1.17],["c",.09,-.24,.15,-.36,.3,-.39],["c",.21,-.03,.42,.15,.39,.36],["c",-.06,.39,-.42,1.38,-.69,1.89],["c",-.96,1.8,-2.49,2.94,-4.23,3.18],["c",-.99,.12,-2.58,-.06,-3.63,-.45],["c",-.96,-.36,-1.71,-.84,-2.4,-1.5],["c",-1.11,-1.11,-1.8,-2.61,-2.04,-4.56],["c",-.06,-.6,-.06,-2.01,0,-2.61],["c",.24,-1.95,.9,-3.45,2.01,-4.56],["c",.69,-.66,1.44,-1.11,2.37,-1.47],["c",.63,-.24,1.47,-.42,2.22,-.48],["z"]],w:13.038,h:15.689},"timesig.cut":{d:[["M",6.24,-10.44],["c",.09,-.06,.09,-.06,.48,-.06],["c",.36,0,.36,0,.45,.06],["l",.06,.09],["l",0,1.23],["l",0,1.26],["l",.27,0],["c",1.26,0,2.49,.45,3.48,1.29],["c",1.05,.87,1.8,2.28,1.89,3.48],["c",.06,1.02,-.51,1.92,-1.44,2.22],["c",-.24,.09,-.3,.09,-.63,.09],["c",-.33,0,-.42,0,-.63,-.06],["c",-.66,-.24,-1.14,-.63,-1.41,-1.2],["c",-.15,-.3,-.21,-.51,-.24,-.9],["c",-.06,-1.08,.57,-2.04,1.56,-2.37],["c",.18,-.06,.27,-.06,.63,-.06],["l",.45,0],["c",.06,.03,.09,.03,.09,0],["c",0,-.03,-.45,-.51,-.66,-.69],["c",-.87,-.69,-1.83,-1.05,-2.94,-1.11],["l",-.42,0],["l",0,7.17],["l",0,7.14],["l",.42,0],["c",.69,-.03,1.23,-.18,1.86,-.51],["c",1.05,-.51,1.89,-1.47,2.46,-2.7],["c",.15,-.33,.33,-.87,.39,-1.17],["c",.09,-.24,.15,-.36,.3,-.39],["c",.21,-.03,.42,.15,.39,.36],["c",-.03,.24,-.21,.78,-.39,1.2],["c",-.96,2.37,-2.94,3.9,-5.13,3.9],["l",-.3,0],["l",0,1.26],["l",0,1.23],["l",-.06,.09],["c",-.09,.06,-.09,.06,-.45,.06],["c",-.39,0,-.39,0,-.48,-.06],["l",-.06,-.09],["l",0,-1.29],["l",0,-1.29],["l",-.21,-.03],["c",-1.23,-.21,-2.31,-.63,-3.21,-1.29],["c",-.15,-.09,-.45,-.36,-.66,-.57],["c",-1.11,-1.11,-1.8,-2.61,-2.04,-4.56],["c",-.06,-.6,-.06,-2.01,0,-2.61],["c",.24,-1.95,.93,-3.45,2.04,-4.59],["c",.42,-.39,.78,-.66,1.26,-.93],["c",.75,-.45,1.65,-.75,2.61,-.9],["l",.21,-.03],["l",0,-1.29],["l",0,-1.29],["z"],["m",-.06,10.44],["c",0,-5.58,0,-6.99,-.03,-6.99],["c",-.15,0,-.63,.27,-.87,.45],["c",-.45,.36,-.75,.93,-.93,1.77],["c",-.18,.81,-.24,1.8,-.24,4.74],["c",0,2.97,.06,3.96,.24,4.77],["c",.24,1.08,.66,1.68,1.41,2.07],["c",.12,.06,.3,.12,.33,.15],["l",.09,0],["l",0,-6.96],["z"]],w:13.038,h:20.97},"timesig.imperfectum":{d:[["M",13,-5],["a",8,8,0,1,0,0,10]],w:13.038,h:20.97},"timesig.imperfectum2":{d:[["M",13,-5],["a",8,8,0,1,0,0,10]],w:13.038,h:20.97},"timesig.perfectum":{d:[["M",13,-5],["a",8,8,0,1,0,0,10]],w:13.038,h:20.97},"timesig.perfectum2":{d:[["M",13,-5],["a",8,8,0,1,0,0,10]],w:13.038,h:20.97},f:{d:[["M",9.93,-14.28],["c",1.53,-.18,2.88,.45,3.12,1.5],["c",.12,.51,0,1.32,-.27,1.86],["c",-.15,.3,-.42,.57,-.63,.69],["c",-.69,.36,-1.56,.03,-1.83,-.69],["c",-.09,-.24,-.09,-.69,0,-.87],["c",.06,-.12,.21,-.24,.45,-.42],["c",.42,-.24,.57,-.45,.6,-.72],["c",.03,-.33,-.09,-.39,-.63,-.42],["c",-.3,0,-.45,0,-.6,.03],["c",-.81,.21,-1.35,.93,-1.74,2.46],["c",-.06,.27,-.48,2.25,-.48,2.31],["c",0,.03,.39,.03,.9,.03],["c",.72,0,.9,0,.99,.06],["c",.42,.15,.45,.72,.03,.9],["c",-.12,.06,-.24,.06,-1.17,.06],["l",-1.05,0],["l",-.78,2.55],["c",-.45,1.41,-.87,2.79,-.96,3.06],["c",-.87,2.37,-2.37,4.74,-3.78,5.91],["c",-1.05,.9,-2.04,1.23,-3.09,1.08],["c",-1.11,-.18,-1.89,-.78,-2.04,-1.59],["c",-.12,-.66,.15,-1.71,.54,-2.19],["c",.69,-.75,1.86,-.54,2.22,.39],["c",.06,.15,.09,.27,.09,.48],["c",0,.24,-.03,.27,-.12,.42],["c",-.03,.09,-.15,.18,-.27,.27],["c",-.09,.06,-.27,.21,-.36,.27],["c",-.24,.18,-.36,.36,-.39,.6],["c",-.03,.33,.09,.39,.63,.42],["c",.42,0,.63,-.03,.9,-.15],["c",.6,-.3,.96,-.96,1.38,-2.64],["c",.09,-.42,.63,-2.55,1.17,-4.77],["l",1.02,-4.08],["c",0,-.03,-.36,-.03,-.81,-.03],["c",-.72,0,-.81,0,-.93,-.06],["c",-.42,-.18,-.39,-.75,.03,-.9],["c",.09,-.06,.27,-.06,1.05,-.06],["l",.96,0],["l",0,-.09],["c",.06,-.18,.3,-.72,.51,-1.17],["c",1.2,-2.46,3.3,-4.23,5.34,-4.5],["z"]],w:16.155,h:19.445},m:{d:[["M",2.79,-8.91],["c",.09,0,.3,-.03,.45,-.03],["c",.24,.03,.3,.03,.45,.12],["c",.36,.15,.63,.54,.75,1.02],["l",.03,.21],["l",.33,-.3],["c",.69,-.69,1.38,-1.02,2.07,-1.02],["c",.27,0,.33,0,.48,.06],["c",.21,.09,.48,.36,.63,.6],["c",.03,.09,.12,.27,.18,.42],["c",.03,.15,.09,.27,.12,.27],["c",0,0,.09,-.09,.18,-.21],["c",.33,-.39,.87,-.81,1.29,-.99],["c",.78,-.33,1.47,-.21,2.01,.33],["c",.3,.33,.48,.69,.6,1.14],["c",.09,.42,.06,.54,-.54,3.06],["c",-.33,1.29,-.57,2.4,-.57,2.43],["c",0,.12,.09,.21,.21,.21],["c",.24,0,.75,-.3,1.2,-.72],["c",.45,-.39,.6,-.45,.78,-.27],["c",.18,.18,.09,.36,-.45,.87],["c",-1.05,.96,-1.83,1.47,-2.58,1.71],["c",-.93,.33,-1.53,.21,-1.8,-.33],["c",-.06,-.15,-.06,-.21,-.06,-.45],["c",0,-.24,.03,-.48,.6,-2.82],["c",.42,-1.71,.6,-2.64,.63,-2.79],["c",.03,-.57,-.3,-.75,-.84,-.48],["c",-.24,.12,-.54,.39,-.66,.63],["c",-.03,.09,-.42,1.38,-.9,3],["c",-.9,3.15,-.84,3,-1.14,3.15],["l",-.15,.09],["l",-.78,0],["c",-.6,0,-.78,0,-.84,-.06],["c",-.09,-.03,-.18,-.18,-.18,-.27],["c",0,-.03,.36,-1.38,.84,-2.97],["c",.57,-2.04,.81,-2.97,.84,-3.12],["c",.03,-.54,-.3,-.72,-.84,-.45],["c",-.24,.12,-.57,.42,-.66,.63],["c",-.06,.09,-.51,1.44,-1.05,2.97],["c",-.51,1.56,-.99,2.85,-.99,2.91],["c",-.06,.12,-.21,.24,-.36,.3],["c",-.12,.06,-.21,.06,-.9,.06],["c",-.6,0,-.78,0,-.84,-.06],["c",-.09,-.03,-.18,-.18,-.18,-.27],["c",0,-.03,.45,-1.38,.99,-2.97],["c",1.05,-3.18,1.05,-3.18,.93,-3.45],["c",-.12,-.27,-.39,-.3,-.72,-.15],["c",-.54,.27,-1.14,1.17,-1.56,2.4],["c",-.06,.15,-.15,.3,-.18,.36],["c",-.21,.21,-.57,.27,-.72,.09],["c",-.09,-.09,-.06,-.21,.06,-.63],["c",.48,-1.26,1.26,-2.46,2.01,-3.21],["c",.57,-.54,1.2,-.87,1.83,-1.02],["z"]],w:14.687,h:9.126},p:{d:[["M",1.92,-8.7],["c",.27,-.09,.81,-.06,1.11,.03],["c",.54,.18,.93,.51,1.17,.99],["c",.09,.15,.15,.33,.18,.36],["l",0,.12],["l",.3,-.27],["c",.66,-.6,1.35,-1.02,2.13,-1.2],["c",.21,-.06,.33,-.06,.78,-.06],["c",.45,0,.51,0,.84,.09],["c",1.29,.33,2.07,1.32,2.25,2.79],["c",.09,.81,-.09,2.01,-.45,2.79],["c",-.54,1.26,-1.86,2.55,-3.18,3.03],["c",-.45,.18,-.81,.24,-1.29,.24],["c",-.69,-.03,-1.35,-.18,-1.86,-.45],["c",-.3,-.15,-.51,-.18,-.69,-.09],["c",-.09,.03,-.18,.09,-.18,.12],["c",-.09,.12,-1.05,2.94,-1.05,3.06],["c",0,.24,.18,.48,.51,.63],["c",.18,.06,.54,.15,.75,.15],["c",.21,0,.36,.06,.42,.18],["c",.12,.18,.06,.42,-.12,.54],["c",-.09,.03,-.15,.03,-.78,0],["c",-1.98,-.15,-3.81,-.15,-5.79,0],["c",-.63,.03,-.69,.03,-.78,0],["c",-.24,-.15,-.24,-.57,.03,-.66],["c",.06,-.03,.48,-.09,.99,-.12],["c",.87,-.06,1.11,-.09,1.35,-.21],["c",.18,-.06,.33,-.18,.39,-.3],["c",.06,-.12,3.24,-9.42,3.27,-9.6],["c",.06,-.33,.03,-.57,-.15,-.69],["c",-.09,-.06,-.12,-.06,-.3,-.06],["c",-.69,.06,-1.53,1.02,-2.28,2.61],["c",-.09,.21,-.21,.45,-.27,.51],["c",-.09,.12,-.33,.24,-.48,.24],["c",-.18,0,-.36,-.15,-.36,-.3],["c",0,-.24,.78,-1.83,1.26,-2.55],["c",.72,-1.11,1.47,-1.74,2.28,-1.92],["z"],["m",5.37,1.47],["c",-.27,-.12,-.75,-.03,-1.14,.21],["c",-.75,.48,-1.47,1.68,-1.89,3.15],["c",-.45,1.47,-.42,2.34,0,2.7],["c",.45,.39,1.26,.21,1.83,-.36],["c",.51,-.51,.99,-1.68,1.38,-3.27],["c",.3,-1.17,.33,-1.74,.15,-2.13],["c",-.09,-.15,-.15,-.21,-.33,-.3],["z"]],w:14.689,h:13.127},r:{d:[["M",6.33,-9.12],["c",.27,-.03,.93,0,1.2,.06],["c",.84,.21,1.23,.81,1.02,1.53],["c",-.24,.75,-.9,1.17,-1.56,.96],["c",-.33,-.09,-.51,-.3,-.66,-.75],["c",-.03,-.12,-.09,-.24,-.12,-.3],["c",-.09,-.15,-.3,-.24,-.48,-.24],["c",-.57,0,-1.38,.54,-1.65,1.08],["c",-.06,.15,-.33,1.17,-.9,3.27],["c",-.57,2.31,-.81,3.12,-.87,3.21],["c",-.03,.06,-.12,.15,-.18,.21],["l",-.12,.06],["l",-.81,.03],["c",-.69,0,-.81,0,-.9,-.03],["c",-.09,-.06,-.18,-.21,-.18,-.3],["c",0,-.06,.39,-1.62,.9,-3.51],["c",.84,-3.24,.87,-3.45,.87,-3.72],["c",0,-.21,0,-.27,-.03,-.36],["c",-.12,-.15,-.21,-.24,-.42,-.24],["c",-.24,0,-.45,.15,-.78,.42],["c",-.33,.36,-.45,.54,-.72,1.14],["c",-.03,.12,-.21,.24,-.36,.27],["c",-.12,0,-.15,0,-.24,-.06],["c",-.18,-.12,-.18,-.21,-.06,-.54],["c",.21,-.57,.42,-.93,.78,-1.32],["c",.54,-.51,1.2,-.81,1.95,-.87],["c",.81,-.03,1.53,.3,1.92,.87],["l",.12,.18],["l",.09,-.09],["c",.57,-.45,1.41,-.84,2.19,-.96],["z"]],w:9.41,h:9.132},s:{d:[["M",4.47,-8.73],["c",.09,0,.36,-.03,.57,-.03],["c",.75,.03,1.29,.24,1.71,.63],["c",.51,.54,.66,1.26,.36,1.83],["c",-.24,.42,-.63,.57,-1.11,.42],["c",-.33,-.09,-.6,-.36,-.6,-.57],["c",0,-.03,.06,-.21,.15,-.39],["c",.12,-.21,.15,-.33,.18,-.48],["c",0,-.24,-.06,-.48,-.15,-.6],["c",-.15,-.21,-.42,-.24,-.75,-.15],["c",-.27,.06,-.48,.18,-.69,.36],["c",-.39,.39,-.51,.96,-.33,1.38],["c",.09,.21,.42,.51,.78,.72],["c",1.11,.69,1.59,1.11,1.89,1.68],["c",.21,.39,.24,.78,.15,1.29],["c",-.18,1.2,-1.17,2.16,-2.52,2.52],["c",-1.02,.24,-1.95,.12,-2.7,-.42],["c",-.72,-.51,-.99,-1.47,-.6,-2.19],["c",.24,-.48,.72,-.63,1.17,-.42],["c",.33,.18,.54,.45,.57,.81],["c",0,.21,-.03,.3,-.33,.51],["c",-.33,.24,-.39,.42,-.27,.69],["c",.06,.15,.21,.27,.45,.33],["c",.3,.09,.87,.09,1.2,0],["c",.75,-.21,1.23,-.72,1.29,-1.35],["c",.03,-.42,-.15,-.81,-.54,-1.2],["c",-.24,-.24,-.48,-.42,-1.41,-1.02],["c",-.69,-.42,-1.05,-.93,-1.05,-1.47],["c",0,-.39,.12,-.87,.3,-1.23],["c",.27,-.57,.78,-1.05,1.38,-1.35],["c",.24,-.12,.63,-.27,.9,-.3],["z"]],w:6.632,h:8.758},z:{d:[["M",2.64,-7.95],["c",.36,-.09,.81,-.03,1.71,.27],["c",.78,.21,.96,.27,1.74,.3],["c",.87,.06,1.02,.03,1.38,-.21],["c",.21,-.15,.33,-.15,.48,-.06],["c",.15,.09,.21,.3,.15,.45],["c",-.03,.06,-1.26,1.26,-2.76,2.67],["l",-2.73,2.55],["l",.54,.03],["c",.54,.03,.72,.03,2.01,.15],["c",.36,.03,.9,.06,1.2,.09],["c",.66,0,.81,-.03,1.02,-.24],["c",.3,-.3,.39,-.72,.27,-1.23],["c",-.06,-.27,-.06,-.27,-.03,-.39],["c",.15,-.3,.54,-.27,.69,.03],["c",.15,.33,.27,1.02,.27,1.5],["c",0,1.47,-1.11,2.7,-2.52,2.79],["c",-.57,.03,-1.02,-.09,-2.01,-.51],["c",-1.02,-.42,-1.23,-.48,-2.13,-.54],["c",-.81,-.06,-.96,-.03,-1.26,.18],["c",-.12,.06,-.24,.12,-.27,.12],["c",-.27,0,-.45,-.3,-.36,-.51],["c",.03,-.06,1.32,-1.32,2.91,-2.79],["l",2.88,-2.73],["c",-.03,0,-.21,.03,-.42,.06],["c",-.21,.03,-.78,.09,-1.23,.12],["c",-1.11,.12,-1.23,.15,-1.95,.27],["c",-.72,.15,-1.17,.18,-1.29,.09],["c",-.27,-.18,-.21,-.75,.12,-1.26],["c",.39,-.6,.93,-1.02,1.59,-1.2],["z"]],w:8.573,h:8.743},"+":{d:[["M",3.48,-9.3],["c",.18,-.09,.36,-.09,.54,0],["c",.18,.09,.24,.15,.33,.3],["l",.06,.15],["l",0,1.29],["l",0,1.29],["l",1.29,0],["c",1.23,0,1.29,0,1.41,.06],["c",.06,.03,.15,.09,.18,.12],["c",.12,.09,.21,.33,.21,.48],["c",0,.15,-.09,.39,-.21,.48],["c",-.03,.03,-.12,.09,-.18,.12],["c",-.12,.06,-.18,.06,-1.41,.06],["l",-1.29,0],["l",0,1.29],["c",0,1.23,0,1.29,-.06,1.41],["c",-.09,.18,-.15,.24,-.3,.33],["c",-.21,.09,-.39,.09,-.57,0],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.06,-.12,-.06,-.18,-.06,-1.41],["l",0,-1.29],["l",-1.29,0],["c",-1.23,0,-1.29,0,-1.41,-.06],["c",-.18,-.09,-.24,-.15,-.33,-.33],["c",-.09,-.18,-.09,-.36,0,-.54],["c",.09,-.18,.15,-.24,.33,-.33],["l",.15,-.06],["l",1.26,0],["l",1.29,0],["l",0,-1.29],["c",0,-1.23,0,-1.29,.06,-1.41],["c",.09,-.18,.15,-.24,.33,-.33],["z"]],w:7.507,h:7.515},",":{d:[["M",1.85,-3.36],["c",.57,-.15,1.17,.03,1.59,.45],["c",.45,.45,.6,.96,.51,1.89],["c",-.09,1.23,-.42,2.46,-.99,3.93],["c",-.3,.72,-.72,1.62,-.78,1.68],["c",-.18,.21,-.51,.18,-.66,-.06],["c",-.03,-.06,-.06,-.15,-.06,-.18],["c",0,-.06,.12,-.33,.24,-.63],["c",.84,-1.8,1.02,-2.61,.69,-3.24],["c",-.12,-.24,-.27,-.36,-.75,-.6],["c",-.36,-.15,-.42,-.21,-.6,-.39],["c",-.69,-.69,-.69,-1.71,0,-2.4],["c",.21,-.21,.51,-.39,.81,-.45],["z"]],w:3.452,h:8.143},"-":{d:[["M",.18,-5.34],["c",.09,-.06,.15,-.06,2.31,-.06],["c",2.46,0,2.37,0,2.46,.21],["c",.12,.21,.03,.42,-.15,.54],["c",-.09,.06,-.15,.06,-2.28,.06],["c",-2.16,0,-2.22,0,-2.31,-.06],["c",-.27,-.15,-.27,-.54,-.03,-.69],["z"]],w:5.001,h:.81},".":{d:[["M",1.32,-3.36],["c",1.05,-.27,2.1,.57,2.1,1.65],["c",0,1.08,-1.05,1.92,-2.1,1.65],["c",-.9,-.21,-1.5,-1.14,-1.26,-2.04],["c",.12,-.63,.63,-1.11,1.26,-1.26],["z"]],w:3.413,h:3.402},"scripts.wedge":{d:[["M",-3.66,-7.44],["c",.06,-.09,0,-.09,.81,.03],["c",1.86,.3,3.84,.3,5.73,0],["c",.78,-.12,.72,-.12,.78,-.03],["c",.15,.15,.12,.24,-.24,.6],["c",-.93,.93,-1.98,2.76,-2.67,4.62],["c",-.3,.78,-.51,1.71,-.51,2.13],["c",0,.15,0,.18,-.06,.27],["c",-.12,.09,-.24,.09,-.36,0],["c",-.06,-.09,-.06,-.12,-.06,-.27],["c",0,-.42,-.21,-1.35,-.51,-2.13],["c",-.69,-1.86,-1.74,-3.69,-2.67,-4.62],["c",-.36,-.36,-.39,-.45,-.24,-.6],["z"]],w:7.49,h:7.752},"scripts.thumb":{d:[["M",-.54,-3.69],["c",.15,-.03,.36,-.06,.51,-.06],["c",1.44,0,2.58,1.11,2.94,2.85],["c",.09,.48,.09,1.32,0,1.8],["c",-.27,1.41,-1.08,2.43,-2.16,2.73],["l",-.18,.06],["l",0,.12],["c",.03,.06,.06,.45,.09,.87],["c",.03,.57,.03,.78,0,.84],["c",-.09,.27,-.39,.48,-.66,.48],["c",-.27,0,-.57,-.21,-.66,-.48],["c",-.03,-.06,-.03,-.27,0,-.84],["c",.03,-.42,.06,-.81,.09,-.87],["l",0,-.12],["l",-.18,-.06],["c",-1.08,-.3,-1.89,-1.32,-2.16,-2.73],["c",-.09,-.48,-.09,-1.32,0,-1.8],["c",.15,-.84,.51,-1.53,1.02,-2.04],["c",.39,-.39,.84,-.63,1.35,-.75],["z"],["m",1.05,.9],["c",-.15,-.09,-.21,-.09,-.45,-.12],["c",-.15,0,-.3,.03,-.39,.03],["c",-.57,.18,-.9,.72,-1.08,1.74],["c",-.06,.48,-.06,1.8,0,2.28],["c",.15,.9,.42,1.44,.9,1.65],["c",.18,.09,.21,.09,.51,.09],["c",.3,0,.33,0,.51,-.09],["c",.48,-.21,.75,-.75,.9,-1.65],["c",.03,-.27,.03,-.54,.03,-1.14],["c",0,-.6,0,-.87,-.03,-1.14],["c",-.15,-.9,-.45,-1.44,-.9,-1.65],["z"]],w:5.955,h:9.75},"scripts.open":{d:[["M",-.54,-3.69],["c",.15,-.03,.36,-.06,.51,-.06],["c",1.44,0,2.58,1.11,2.94,2.85],["c",.09,.48,.09,1.32,0,1.8],["c",-.33,1.74,-1.47,2.85,-2.91,2.85],["c",-1.44,0,-2.58,-1.11,-2.91,-2.85],["c",-.09,-.48,-.09,-1.32,0,-1.8],["c",.15,-.84,.51,-1.53,1.02,-2.04],["c",.39,-.39,.84,-.63,1.35,-.75],["z"],["m",1.11,.9],["c",-.21,-.09,-.27,-.09,-.51,-.12],["c",-.3,0,-.42,.03,-.66,.15],["c",-.24,.12,-.51,.39,-.66,.63],["c",-.54,.93,-.63,2.64,-.21,3.81],["c",.21,.54,.51,.9,.93,1.11],["c",.21,.09,.24,.09,.54,.09],["c",.3,0,.33,0,.54,-.09],["c",.42,-.21,.72,-.57,.93,-1.11],["c",.36,-.99,.36,-2.37,0,-3.36],["c",-.21,-.54,-.51,-.9,-.9,-1.11],["z"]],w:5.955,h:7.5},"scripts.longphrase":{d:[["M",1.47,-15.09],["c",.36,-.09,.66,-.18,.69,-.18],["c",.06,0,.06,.54,.06,11.25],["l",0,11.25],["l",-.63,.15],["c",-.66,.18,-1.44,.39,-1.5,.39],["c",-.03,0,-.03,-3.39,-.03,-11.25],["l",0,-11.25],["l",.36,-.09],["c",.21,-.06,.66,-.18,1.05,-.27],["z"]],w:2.16,h:23.04},"scripts.mediumphrase":{d:[["M",1.47,-7.59],["c",.36,-.09,.66,-.18,.69,-.18],["c",.06,0,.06,.39,.06,7.5],["l",0,7.5],["l",-.63,.15],["c",-.66,.18,-1.44,.39,-1.5,.39],["c",-.03,0,-.03,-2.28,-.03,-7.5],["l",0,-7.5],["l",.36,-.09],["c",.21,-.06,.66,-.18,1.05,-.27],["z"]],w:2.16,h:15.54},"scripts.shortphrase":{d:[["M",1.47,-7.59],["c",.36,-.09,.66,-.18,.69,-.18],["c",.06,0,.06,.21,.06,3.75],["l",0,3.75],["l",-.42,.09],["c",-.57,.18,-1.65,.45,-1.71,.45],["c",-.03,0,-.03,-.72,-.03,-3.75],["l",0,-3.75],["l",.36,-.09],["c",.21,-.06,.66,-.18,1.05,-.27],["z"]],w:2.16,h:8.04},"scripts.snap":{d:[["M",4.5,-3.39],["c",.36,-.03,.96,-.03,1.35,0],["c",1.56,.15,3.15,.9,4.2,2.01],["c",.24,.27,.33,.42,.33,.6],["c",0,.27,.03,.24,-2.46,2.22],["c",-1.29,1.02,-2.4,1.86,-2.49,1.92],["c",-.18,.09,-.3,.09,-.48,0],["c",-.09,-.06,-1.2,-.9,-2.49,-1.92],["c",-2.49,-1.98,-2.46,-1.95,-2.46,-2.22],["c",0,-.18,.09,-.33,.33,-.6],["c",1.05,-1.08,2.64,-1.86,4.17,-2.01],["z"],["m",1.29,1.17],["c",-1.47,-.15,-2.97,.3,-4.14,1.2],["l",-.18,.15],["l",.06,.09],["c",.15,.12,3.63,2.85,3.66,2.85],["c",.03,0,3.51,-2.73,3.66,-2.85],["l",.06,-.09],["l",-.18,-.15],["c",-.84,-.66,-1.89,-1.08,-2.94,-1.2],["z"]],w:10.38,h:6.84}};e["noteheads.slash.whole"]={d:[["M",5,-5],["l",1,1],["l",-5,5],["l",-1,-1],["z"],["m",4,6],["l",-5,-5],["l",2,-2],["l",5,5],["z"],["m",0,-2],["l",1,1],["l",-5,5],["l",-1,-1],["z"],["m",-4,6],["l",-5,-5],["l",2,-2],["l",5,5],["z"]],w:10.81,h:15.63},e["noteheads.slash.quarter"]={d:[["M",9,-6],["l",0,4],["l",-9,9],["l",0,-4],["z"]],w:9,h:9},e["noteheads.harmonic.quarter"]={d:[["M",3.63,-4.02],["c",.09,-.06,.18,-.09,.24,-.03],["c",.03,.03,.87,.93,1.83,2.01],["c",1.5,1.65,1.8,1.98,1.8,2.04],["c",0,.06,-.3,.39,-1.8,2.04],["c",-.96,1.08,-1.8,1.98,-1.83,2.01],["c",-.06,.06,-.15,.03,-.24,-.03],["c",-.12,-.09,-3.54,-3.84,-3.6,-3.93],["c",-.03,-.03,-.03,-.09,-.03,-.15],["c",.03,-.06,3.45,-3.84,3.63,-3.96],["z"]],w:7.5,h:8.165},e["noteheads.triangle.quarter"]={d:[["M",0,4],["l",9,0],["l",-4.5,-9],["z"]],w:9,h:9};var a=function(r){for(var o=[],l=0,u=r.length;l0?p.top+3:p.bottom-1,_=u>0?p.top+3:p.bottom-3,b=_-2;r.type==="bass-8"&&(c=3,d=0),p.addRight(new a("8",g+d,e.getSymbolWidth("8")*m,c,{scalex:m,scaley:m,top:_,bottom:b}))}}return p};function s(r){switch(r){case"clefs.G":return-5;case"clefs.C":return-4;case"clefs.F":return-4;case"clefs.perc":return-2;default:return 0}}return Qp=n,Qp}var Kp,Ky;function r9(){if(Ky)return Kp;Ky=1;var t=yl(),e=Qr(),a=ar(),n=function(s,r){if(s.el_type="keySignature",!s.accidentals||s.accidentals.length===0)return null;var o=new t(s,0,10,"staff-extra key-signature",r);o.isKeySig=!0;var l=0;return s.accidentals.forEach(function(u){var p,g=0;switch(u.acc){case"sharp":p="accidentals.sharp",g=-3;break;case"natural":p="accidentals.nat";break;case"flat":p="accidentals.flat",g=-1.2;break;case"quartersharp":p="accidentals.halfsharp",g=-2.5;break;case"quarterflat":p="accidentals.halfflat",g=-1.2;break;default:p="accidentals.flat"}o.addRight(new a(p,l,e.getSymbolWidth(p),u.verticalPos,{thickness:e.symbolHeightInPitches(p),top:u.verticalPos+e.symbolHeightInPitches(p)+g,bottom:u.verticalPos+g})),l+=e.getSymbolWidth(p)+2},this),o};return Kp=n,Kp}var Yp,Yy;function o9(){if(Yy)return Yp;Yy=1;var t=Qr(),e=ar(),a=function(n,s,r,o){o||(o={});var l=o.dir!==void 0?o.dir:null,u=o.headx!==void 0?o.headx:0,p=o.extrax!==void 0?o.extrax:0,g=o.flag!==void 0?o.flag:null,h=o.dot!==void 0?o.dot:0,f=o.dotshiftx!==void 0?o.dotshiftx:0,m=o.scale!==void 0?o.scale:1,d=o.accidentalSlot!==void 0?o.accidentalSlot:[],c=o.shouldExtendStem!==void 0?o.shouldExtendStem:!1,_=o.printAccidentals!==void 0?o.printAccidentals:!0,b=o.chordPos,v=r.verticalPos,k,y=0,T=0,O=0;if(s===void 0)n.addFixed(new e("pitch is undefined",0,0,0,{type:"debug"}));else if(s==="")k=new e(null,0,0,v,{chordPos:b});else{var j=u;if(r.printer_shift){var $=r.printer_shift==="same"?1:0;j=l==="down"?-t.getSymbolWidth(s)*m+$:t.getSymbolWidth(s)*m-$}var P={scalex:m,scaley:m,thickness:t.symbolHeightInPitches(s)*m,name:r.name,chordPos:b};if(k=new e(s,j,t.getSymbolWidth(s)*m,v,P),k.stemDir=l,g){var L=v+(l==="down"?-7:7)*m;c&&(l==="down"&&L>6&&(L=6),l==="up"&&L<6&&(L=6));var x=l==="down"?u:u+k.w-.6;n.addRight(new e(g,x,t.getSymbolWidth(g)*m,L,{scalex:m,scaley:m,chordPos:b}))}for(T=k.w+f-2+5*h;h>0;h--){var B=1-Math.abs(v)%2;n.addRight(new e("dots.dot",k.w+f-2+5*h,t.getSymbolWidth("dots.dot"),v+B,{chordPos:b}))}}if(k&&(k.highestVert=r.highestVert),_&&r.accidental){var D;switch(r.accidental){case"quartersharp":D="accidentals.halfsharp";break;case"dblsharp":D="accidentals.dblsharp";break;case"sharp":D="accidentals.sharp";break;case"quarterflat":D="accidentals.halfflat";break;case"flat":D="accidentals.flat";break;case"dblflat":D="accidentals.dblflat";break;case"natural":D="accidentals.nat"}for(var A=!1,G=p,U=0;U=6){d[U][0]=v,G=d[U][1],A=!0;break}A===!1&&(G-=t.getSymbolWidth(D)*m+2,d.push([v,G]),y=t.getSymbolWidth(D)*m+2);var V=t.symbolHeightInPitches(D);n.addExtra(new e(D,G,t.getSymbolWidth(D),v,{scalex:m,scaley:m,top:v+V/2,bottom:v-V/2,chordPos:b})),O=t.getSymbolWidth(D)/2}return{notehead:k,accidentalshiftx:y,dotshiftx:T,extraLeft:O}};return Yp=a,Yp}var Xp,Xy;function l9(){if(Xy)return Xp;Xy=1;var t=yl(),e=Qr(),a=ar(),n=function(s,r){s.el_type="timeSignature";var o=new t(s,0,10,"staff-extra time-signature",r);if(s.type==="specified")for(var l=0,u=0;u0)this.above=!1;else{var e;this.anchor1?e=this.anchor1.pitch:this.anchor2?e=this.anchor2.pitch:e=14,this.anchor1&&this.anchor1.stemDir==="down"&&this.anchor2&&this.anchor2.stemDir==="down"?this.above=!0:this.anchor1&&this.anchor1.stemDir==="up"&&this.anchor2&&this.anchor2.stemDir==="up"?this.above=!1:this.anchor1&&this.anchor2?this.above=e>=6:this.anchor1?this.above=this.anchor1.stemDir==="down":this.anchor2?this.above=this.anchor2.stemDir==="down":this.above=e>=6}},t.prototype.calcSlurDirection=function(){if(this.isGrace)this.above=!1;else if(this.voiceNumber===0)this.above=!0;else if(this.voiceNumber>0)this.above=!1;else{var e=!1;this.anchor1&&this.anchor1.stemDir==="down"&&(e=!0),this.anchor2&&this.anchor2.stemDir==="down"&&(e=!0);for(var a=0;ae&&(e=this.internalNotes[a].highestVert);e>this.startY&&e>this.endY&&(this.startY=this.endY=e-1)}},t.prototype.getYBounds=function(){var e=10,a=1e3;this.isTie?(this.calcTieDirection(),this.calcX(e,a),this.calcTieY()):(this.calcSlurDirection(),this.calcX(e,a),this.calcSlurY());var n,s;return this.above?(s=Math.min(this.startY,this.endY),n=s+3):(n=Math.min(this.startY,this.endY),s=n-3),[n,s]},t0=t,t0}var i0,a2;function f9(){if(a2)return i0;a2=1;var t=c9(),e=d9(),a=u9(),n=Qr(),s=ar(),r=i2(),o=function(){this.startDiminuendoX=void 0,this.startCrescendoX=void 0,this.minTop=12,this.minBottom=0},l=function(d,c,_,b,v,k,y,T,O){for(var j,$=0;$9&&j++;var L=b/2;n.getSymbolAlign(P)!=="center"&&(L-=n.getSymbolWidth(P)/2),v.addFixedX(new s(P,L,n.getSymbolWidth(P),j))}if(c[$]==="slide"&&v.heads[0]){var x=v.heads[0].pitch;x-=2;var B=new s("",-k-15,0,x-1),D=new s("",-k-5,0,x+1);v.addFixedX(B),v.addFixedX(D),d.addOther(new r({anchor1:B,anchor2:D,fixedY:!0}))}}return j===void 0&&(j=_),{above:j,below:v.bottom}},u=function(d,c,_,b){for(var v=0;vy&&(A=y)),A}function $(D,A,G){var U=j(A),V=2,I=5;_.addFixedX(new s(D,c/2,0,U+V,{type:"decoration",klass:"ornament",thickness:3,anchor:G})),O(A,I)}function P(D,A){var G=c/2;n.getSymbolAlign(D)!=="center"&&(G-=n.getSymbolWidth(D)/2);var U=n.symbolHeightInPitches(D)+1,V=j(A);V=A==="above"?V+U/2:V-U/2,_.addFixedX(new s(D,G,n.getSymbolWidth(D),V,{klass:"ornament",thickness:n.symbolHeightInPitches(D),position:A})),O(A,U)}for(var L={"+":"scripts.stopped",open:"scripts.open",snap:"scripts.snap",wedge:"scripts.wedge",thumb:"scripts.thumb",shortphrase:"scripts.shortphrase",mediumphrase:"scripts.mediumphrase",longphrase:"scripts.longphrase",trill:"scripts.trill",trillh:"scripts.trill",roll:"scripts.roll",irishroll:"scripts.roll",marcato:"scripts.umarcato",dmarcato:"scripts.dmarcato",umarcato:"scripts.umarcato",turn:"scripts.turn",uppermordent:"scripts.prall",pralltriller:"scripts.prall",mordent:"scripts.mordent",lowermordent:"scripts.mordent",downbow:"scripts.downbow",upbow:"scripts.upbow",fermata:"scripts.ufermata",invertedfermata:"scripts.dfermata",breath:",",coda:"scripts.coda",segno:"scripts.segno"},x=!1,B=0;B",this.dynamicPositioning)),this.startDiminuendoX=void 0),this.startCrescendoX&&(d.addOther(new e(this.startCrescendoX,m(d.children),"<",this.dynamicPositioning)),this.startCrescendoX=void 0)},o.prototype.dynamicDecoration=function(d,c,_,b){for(var v,k,y,T=0;T",b)),k&&d.addOther(new e(k.start,k.stop,"<",b)),y&&d.addOther(new a(y.start,y.stop))};function f(d){for(var c=0;c=0;T--){var O=y[T],j=0,$;u||(O=a(O,v,k));var P=f.calc(O,p,g),L=P.width,x=P.height/e.STEP;switch(o){case"left":c+=L+7,j=-c,$=d.averagepitch,m.addExtra(new t(O,j,L+4,$,{type:"text",height:x,dim:h,position:"left"}));break;case"right":_+=4,j=_,$=d.averagepitch,m.addRight(new t(O,j,L+4,$,{type:"text",height:x,dim:h,position:"right"}));break;case"below":m.addRight(new t(O,0,0,void 0,{type:"text",position:"below",height:x,dim:h,realWidth:L}));break;case"above":m.addRight(new t(O,0,0,void 0,{type:"text",position:"above",height:x,dim:h,realWidth:L}));break;default:if(l){var B=l.y+3*e.STEP;m.addRight(new t(O,j+l.x,0,d.minpitch+B/e.STEP,{position:"relative",type:"text",height:x,dim:h}))}else{var D="above";d.positioning&&d.positioning.chordPosition&&(D=d.positioning.chordPosition),D!=="hidden"&&m.addCentered(new t(O,b/2,L,void 0,{type:"chord",position:D,height:x,dim:h,realWidth:L}))}}}return{roomTaken:c,roomTakenRight:_}}return c0=n,c0}var d0,u2;function y9(){if(u2)return d0;u2=1;var t=yl(),e=a9(),a=n9(),n=s9(),s=r9(),r=o9(),o=l9(),l=f9(),u=m9(),p=Qr(),g=ar(),h=Vn(),f=g9(),m=h9(),d=i2(),c=_9(),_=Sy(),b=b9(),v=py(),k=ir(),y=function(A){var G=0;return A.duration&&(G=A.duration),G},T=!1,O={rest:{0:"rests.whole",1:"rests.half",2:"rests.quarter",3:"rests.8th",4:"rests.16th",5:"rests.32nd",6:"rests.64th",7:"rests.128th",multi:"rests.multimeasure"},note:{"-1":"noteheads.dbl",0:"noteheads.whole",1:"noteheads.half",2:"noteheads.quarter",3:"noteheads.quarter",4:"noteheads.quarter",5:"noteheads.quarter",6:"noteheads.quarter",7:"noteheads.quarter",nostem:"noteheads.quarter"},rhythm:{"-1":"noteheads.slash.whole",0:"noteheads.slash.whole",1:"noteheads.slash.whole",2:"noteheads.slash.quarter",3:"noteheads.slash.quarter",4:"noteheads.slash.quarter",5:"noteheads.slash.quarter",6:"noteheads.slash.quarter",7:"noteheads.slash.quarter",nostem:"noteheads.slash.nostem"},x:{"-1":"noteheads.indeterminate",0:"noteheads.indeterminate",1:"noteheads.indeterminate",2:"noteheads.indeterminate",3:"noteheads.indeterminate",4:"noteheads.indeterminate",5:"noteheads.indeterminate",6:"noteheads.indeterminate",7:"noteheads.indeterminate",nostem:"noteheads.indeterminate"},harmonic:{"-1":"noteheads.harmonic.quarter",0:"noteheads.harmonic.quarter",1:"noteheads.harmonic.quarter",2:"noteheads.harmonic.quarter",3:"noteheads.harmonic.quarter",4:"noteheads.harmonic.quarter",5:"noteheads.harmonic.quarter",6:"noteheads.harmonic.quarter",7:"noteheads.harmonic.quarter",nostem:"noteheads.harmonic.quarter"},triangle:{"-1":"noteheads.triangle.quarter",0:"noteheads.triangle.quarter",1:"noteheads.triangle.quarter",2:"noteheads.triangle.quarter",3:"noteheads.triangle.quarter",4:"noteheads.triangle.quarter",5:"noteheads.triangle.quarter",6:"noteheads.triangle.quarter",7:"noteheads.triangle.quarter",nostem:"noteheads.triangle.quarter"},uflags:{3:"flags.u8th",4:"flags.u16th",5:"flags.u32nd",6:"flags.u64th"},dflags:{3:"flags.d8th",4:"flags.d16th",5:"flags.d32nd",6:"flags.d64th"}},j=function(A,G,U){this.decoration=new l,this.getTextSize=A,this.tuneNumber=G,this.isBagpipes=U.bagpipes,this.flatBeams=U.flatbeams,this.graceSlurs=U.graceSlurs,this.percmap=U.percmap,this.initialClef=U.initialClef,this.jazzchords=!!U.jazzchords,this.accentAbove=!!U.accentAbove,this.germanAlphabet=!!U.germanAlphabet,this.reset()};j.prototype.reset=function(){this.slurs={},this.ties=[],this.voiceScale=1,this.voiceColor=void 0,this.slursbyvoice={},this.tiesbyvoice={},this.endingsbyvoice={},this.scaleByVoice={},this.colorByVoice={},this.tripletmultiplier=1,this.abcline=void 0,this.accidentalSlot=void 0,this.accidentalshiftx=void 0,this.dotshiftx=void 0,this.hasVocals=!1,this.minY=void 0,this.partstartelem=void 0,this.startlimitelem=void 0,this.stemdir=void 0},j.prototype.setStemHeight=function(A){this.stemHeight=Math.round(A*10/h.STEP)/10},j.prototype.getCurrentVoiceId=function(A,G){return"s"+A+"v"+G},j.prototype.pushCrossLineElems=function(A,G){this.slursbyvoice[this.getCurrentVoiceId(A,G)]=this.slurs,this.tiesbyvoice[this.getCurrentVoiceId(A,G)]=this.ties,this.endingsbyvoice[this.getCurrentVoiceId(A,G)]=this.partstartelem,this.scaleByVoice[this.getCurrentVoiceId(A,G)]=this.voiceScale,this.voiceColor&&(this.colorByVoice[this.getCurrentVoiceId(A,G)]=this.voiceColor)},j.prototype.popCrossLineElems=function(A,G){this.slurs=this.slursbyvoice[this.getCurrentVoiceId(A,G)]||{},this.ties=this.tiesbyvoice[this.getCurrentVoiceId(A,G)]||[],this.partstartelem=this.endingsbyvoice[this.getCurrentVoiceId(A,G)],this.voiceScale=this.scaleByVoice[this.getCurrentVoiceId(A,G)],this.voiceScale===void 0&&(this.voiceScale=1),this.voiceColor=this.colorByVoice[this.getCurrentVoiceId(A,G)]},j.prototype.containsLyrics=function(A){for(var G=0;G0&&(I[0].invisible=!0);break;case"meter":I[0]=o(V,this.tuneNumber),this.startlimitelem=I[0],U.duplicate&&I.length>0&&(I[0].invisible=!0);break;case"clef":if(I[0]=n(V,this.tuneNumber),!I[0])return null;U.duplicate&&I.length>0&&(I[0].invisible=!0);break;case"key":var w=s(V,this.tuneNumber);w&&(I[0]=w,this.startlimitelem=I[0]),U.duplicate&&I.length>0&&(I[0].invisible=!0);break;case"stem":this.stemdir=V.direction==="auto"?void 0:V.direction;break;case"part":var S=new t(V,0,0,"part",this.tuneNumber),C=this.getTextSize.calc(V.title,"partsfont","part");S.addFixedX(new g(V.title,0,0,void 0,{type:"part",height:C.height/h.STEP})),I[0]=S;break;case"tempo":var H=new t(V,0,0,"tempo",this.tuneNumber);V.suppress||H.addFixedX(new m(V,this.tuneNumber,r)),I[0]=H;break;case"style":V.head==="normal"?delete this.style:this.style=V.head;break;case"hint":T=!0,this.saveState();break;case"midi":break;case"scale":this.voiceScale=V.size;break;case"color":this.voiceColor=V.color,U.color=this.voiceColor;break;default:var Y=new t(V,0,0,"unsupported",this.tuneNumber);Y.addFixed(new g("element type "+V.el_type,0,0,void 0,{type:"debug"})),I[0]=Y}return I};function P(A){if(A.pitches){L(A);for(var G=0,U=0;UA.pitches[U+1].pitch){G=!1;var V=A.pitches[U];A.pitches[U]=A.pitches[U+1],A.pitches[U+1]=V}}while(!G)},x=function(A,G,U,V,I,w,S,C,H){for(var Y=U;Y>11;Y--)Y%2===0&&!V&&A.addFixed(new g(null,C,(I+4)*H,Y,{type:"ledger"}));for(Y=G;Y<1;Y++)Y%2===0&&!V&&A.addFixed(new g(null,C,(I+4)*H,Y,{type:"ledger"}));for(Y=0;Y1&&(Y=new e(I,"grace",w),T&&Y.setHint(),Y.mainNote=U);var W,z=[];for(W=A.gracenotes.length-1;W>=0;W--)S+=10,z[W]=S,A.gracenotes[W].accidental&&(S+=7);for(W=0;W=6?"down":"up";V&&(le=V),I=G.style?G.style:I,(!I||I==="normal")&&(I="note");var Ee;w?Ee=O[I].nostem:Ee=O[I][-S],Ee||console.log("noteSymbol:",I,S,w);var Se;for(Se=le==="down"?G.pitches.length-2:1;le==="down"?Se>=0:Se11||De.verticalPos<1)&&ge.push(De.verticalPos-De.verticalPos%2),le==="down"?W=p.getSymbolWidth(Ee)+2:Y=p.getSymbolWidth(Ee)+2)}var Qe=G.pitches.length;for(Se=0;Se1?Se+1:null,we=r(A,xe,G.pitches[Se],{dir:le,extrax:-W,flag:Pe,dot:U,dotshiftx:Y,scale:this.voiceScale,accidentalSlot:ie,shouldExtendStem:!V,printAccidentals:!H.isPercussion,chordPos:fe});_e=Math.max(p.getSymbolWidth(xe),_e),A.extraw-=we.extraLeft,ee=we.notehead,ee&&(this.addSlursAndTies(A,G.pitches[Se],ee,H,ne?le:null,!1),G.gracenotes&&G.gracenotes.length>0&&(ee.bottom=ee.bottom-1),A.addHead(ee)),W+=we.accidentalshiftx,z=Math.max(z,we.dotshiftx)}if(ne){var me=Math.round(70*this.voiceScale)/10,Fe=le==="down"?G.minpitch-me:G.minpitch+1/3;Fe>6&&!V&&(Fe=6);var Ue=le==="down"?G.maxpitch-1/3:G.maxpitch+me;Ue<6&&!V&&(Ue=6);var he=le==="down"||A.heads.length===0?0:A.heads[0].w,Ae=le==="down"?1:-1;ee&&ee.c==="noteheads.slash.quarter"&&(le==="down"?Ue-=1:Fe+=1),ee&&ee.c==="noteheads.triangle.quarter"&&(le==="down"?Ue-=.7:Fe-=1.2),A.addRight(new g(null,he,0,Fe,{type:"stem",pitch2:Ue,linewidth:Ae,bottom:Fe-1})),be=Math.min(Fe,Ue)}return{noteHead:ee,roomTaken:W,roomTakenRight:z,min:be,additionalLedgers:ge,dir:le,symbolWidth:_e}},j.prototype.addLyric=function(A,G,U){var V="";G.lyric.forEach(function(S){var C=S.divider===" "?"":S.divider;V+=S.syllable+C+` +`});var I=this.getTextSize.calc(V,"vocalfont","lyric"),w=G.positioning?G.positioning.vocalPosition:"below";A.addCentered(new g(V,0,I.width,void 0,{type:"lyric",position:w,height:I.height/h.STEP,dim:this.getTextSize.attr("vocalfont","lyric"),voiceNumber:U}))},j.prototype.createNote=function(A,G,U,V){var I=null,w=0,S=0,C=0,H=[],Y,ee=y(A),W=!1;ee===0&&(W=!0,ee=.25,G=!0);for(var z=Math.floor(Math.log(ee)/Math.log(2)),be=0,ae=Math.pow(2,z),ge=ae/2;ae1,this.stemdir,U,z,this.voiceScale);I=Ee.noteHead,w=Ee.roomTaken,S=Ee.roomTakenRight}else{var Se=this.addNoteToAbcElement(le,A,be,this.stemdir,this.style,W,z,G,V);Se.min!==void 0&&(this.minY=Math.min(Se.min,this.minY)),I=Se.noteHead,w=Se.roomTaken,S=Se.roomTakenRight,H=Se.additionalLedgers,Y=Se.dir,C=Se.symbolWidth}if(A.lyric!==void 0&&this.addLyric(le,A,V.voicenumber),A.gracenotes!==void 0&&(w+=this.addGraceNotes(A,V,le,I,this.stemHeight*this.voiceScale,this.isBagpipes,w)),A.decoration){var pe=G&&Y!=="up"?Math.min(-3,le.bottom-6):le.bottom;this.decoration.createDecoration(V,A.decoration,le.top,I?I.w:0,le,w,Y,pe,A.positioning,this.hasVocals,this.accentAbove)}if(A.barNumber&&le.addFixed(new g(A.barNumber,-10,0,0,{type:"barNumber"})),x(le,A.minpitch,A.maxpitch,A.rest,C,H,Y,-2,1),A.chord!==void 0){var De=b(this.getTextSize,le,A,w,S,C,this.jazzchords,this.germanAlphabet);w=De.roomTaken,S=De.roomTakenRight}return A.startTriplet&&(this.triplet=new c(A.startTriplet,I,{flatBeams:this.flatBeams})),A.endTriplet&&this.triplet&&this.triplet.setCloseAnchor(I),this.triplet&&!A.startTriplet&&!A.endTriplet&&!(A.rest&&A.rest.type==="spacer")&&this.triplet.middleNote(I),le},j.prototype.addSlursAndTies=function(A,G,U,V,I,w){if(G.endTie&&this.ties.length>0){for(var S=!1,C=0;C10&&G.abcelem.type==="treble"?13.5:11;G.addFixed(new g(A,V,U.width,I+U.height/h.STEP,{type:"barNumber",dim:this.getTextSize.attr("measurefont","bar-number")}))},j.prototype.createBarLine=function(A,G,U){var V=new t(G,0,10,"bar",this.tuneNumber),I=null,w=0;G.barNumber&&this.addMeasureNumber(G.barNumber,V);var S=G.type==="bar_right_repeat"||G.type==="bar_dbl_repeat",C=G.type!=="bar_left_repeat"&&G.type!=="bar_thick_thin"&&G.type!=="bar_invisible",H=G.type==="bar_right_repeat"||G.type==="bar_dbl_repeat"||G.type==="bar_left_repeat"||G.type==="bar_thin_thick"||G.type==="bar_thick_thin",Y=G.type==="bar_left_repeat"||G.type==="bar_thick_thin"||G.type==="bar_thin_thin"||G.type==="bar_dbl_repeat",ee=G.type==="bar_left_repeat"||G.type==="bar_dbl_repeat";if(S||ee){for(var W in this.slurs)this.slurs.hasOwnProperty(W)&&this.slurs[W].setEndX(V);this.startlimitelem=V}if(S&&(V.addRight(new g("dots.dot",w,1,7)),V.addRight(new g("dots.dot",w,1,5)),w+=6),C&&(I=new g(null,w,1,2,{type:"bar",pitch2:10,linewidth:.6}),V.addRight(I)),G.type==="bar_invisible"&&(I=new g(null,w,1,2,{type:"none",pitch2:10,linewidth:.6}),V.addRight(I)),G.decoration&&this.decoration.createDecoration(A,G.decoration,12,H?3:1,V,0,"down",2,G.positioning,this.hasVocals,this.accentAbove),H&&(w+=4,I=new g(null,w,4,2,{type:"bar",pitch2:10,linewidth:4}),V.addRight(I),w+=5),this.partstartelem&&G.endEnding&&(this.partstartelem.anchor2=I,this.partstartelem=null),Y&&(w+=3,I=new g(null,w,1,2,{type:"bar",pitch2:10,linewidth:.6}),V.addRight(I)),ee&&(w+=3,V.addRight(new g("dots.dot",w,1,7)),V.addRight(new g("dots.dot",w,1,5))),G.startEnding&&U&&A.voicenumber===0){var z=this.getTextSize.calc(G.startEnding,"repeatfont","").width;V.minspacing+=z+10,this.partstartelem=new u(G.startEnding,I,null),A.addOther(this.partstartelem)}return V.extraw-=5,G.chord!==void 0&&b(this.getTextSize,V,G,0,0,0,!1,this.germanAlphabet),V},d0=j,d0}var u0,f2;function w9(){if(f2)return u0;f2=1;var t="http://www.w3.org/2000/svg";function e(o){this.svg=r(),this.currentGroup=[],o.appendChild(this.svg)}e.prototype.clear=function(){if(this.svg){var o=this.svg.parentNode;this.svg=r(),this.currentGroup=[],o&&(o.innerHTML="",o.appendChild(this.svg))}},e.prototype.setTitle=function(o){var l=document.createElement("title"),u=document.createTextNode(o);l.appendChild(u),this.svg.insertBefore(l,this.svg.firstChild)},e.prototype.setResponsiveWidth=function(o,l){if(this.svg.setAttribute("viewBox","0 0 "+o+" "+l),this.svg.setAttribute("preserveAspectRatio","xMinYMin meet"),this.svg.removeAttribute("height"),this.svg.removeAttribute("width"),this.svg.style.display="inline-block",this.svg.style.position="absolute",this.svg.style.top="0",this.svg.style.left="0",this.svg.parentNode){var u=this.svg.parentNode.getAttribute("class");u?u.indexOf("abcjs-container")<0&&this.svg.parentNode.setAttribute("class",u+" abcjs-container"):this.svg.parentNode.setAttribute("class","abcjs-container"),this.svg.parentNode.style.display="inline-block",this.svg.parentNode.style.position="relative",this.svg.parentNode.style.width="100%";var p=l/o*100;this.svg.parentNode.style["padding-bottom"]=p+"%",this.svg.parentNode.style["vertical-align"]="middle",this.svg.parentNode.style.overflow="hidden"}},e.prototype.setSize=function(o,l){this.svg.setAttribute("width",o),this.svg.setAttribute("height",l)},e.prototype.setAttribute=function(o,l){this.svg.setAttribute(o,l)},e.prototype.setScale=function(o){o!==1?(this.svg.style.transform="scale("+o+","+o+")",this.svg.style["-ms-transform"]="scale("+o+","+o+")",this.svg.style["-webkit-transform"]="scale("+o+","+o+")",this.svg.style["transform-origin"]="0 0",this.svg.style["-ms-transform-origin-x"]="0",this.svg.style["-ms-transform-origin-y"]="0",this.svg.style["-webkit-transform-origin-x"]="0",this.svg.style["-webkit-transform-origin-y"]="0"):(this.svg.style.transform="",this.svg.style["-ms-transform"]="",this.svg.style["-webkit-transform"]="")},e.prototype.insertStyles=function(o){var l=document.createElementNS(t,"style");l.textContent=o,this.svg.insertBefore(l,this.svg.firstChild)},e.prototype.setParentStyles=function(o){for(var l in o)o.hasOwnProperty(l)&&this.svg.parentNode&&(this.svg.parentNode.style[l]=o[l]);if(this.dummySvg){var u=document.querySelector("body");u.removeChild(this.dummySvg),this.dummySvg=null}};function a(o,l,u){var p=u-o;return"M "+o+" "+l+" l "+p+" 0 l 0 1 l "+-p+" 0 z "}function n(o,l,u){var p=u-l;return"M "+o+" "+l+" l 0 "+p+" l 1 0 l 0 "+-p+" z "}e.prototype.rect=function(o){var l=[],u=o.x,p=o.y,g=o.x+o.width,h=o.y+o.height;return l.push(a(u,p,g)),l.push(a(u,h,g)),l.push(n(g,p,h)),l.push(n(u,h,p)),this.path({path:l.join(" "),stroke:"none","data-name":o["data-name"]})},e.prototype.dottedLine=function(o){var l=document.createElementNS(t,"line");l.setAttribute("x1",o.x1),l.setAttribute("x2",o.x2),l.setAttribute("y1",o.y1),l.setAttribute("y2",o.y2),l.setAttribute("stroke",o.stroke),l.setAttribute("stroke-dasharray","5,5"),this.svg.insertBefore(l,this.svg.firstChild)},e.prototype.rectBeneath=function(o){var l=document.createElementNS(t,"rect");l.setAttribute("x",o.x),l.setAttribute("width",o.width),l.setAttribute("y",o.y),l.setAttribute("height",o.height),o.stroke&&l.setAttribute("stroke",o.stroke),o["stroke-opacity"]&&l.setAttribute("stroke-opacity",o["stroke-opacity"]),o.fill&&l.setAttribute("fill",o.fill),o["fill-opacity"]&&l.setAttribute("fill-opacity",o["fill-opacity"]),this.svg.insertBefore(l,this.svg.firstChild)},e.prototype.text=function(o,l,u,p){var g=document.createElementNS(t,"text");g.setAttribute("stroke","none");for(var h in l)l.hasOwnProperty(h)&&g.setAttribute(h,l[h]);for(var f=l["data-name"]=="free-text",m=(""+o).split(` +`),d=0;d0?this.currentGroup[0].removeChild(u):this.svg.removeChild(u)),p&&(s[p]=h),h},e.prototype.openGroup=function(o){o=o||{};var l=document.createElementNS(t,"g");return o.klass&&l.setAttribute("class",o.klass),o.fill&&l.setAttribute("fill",o.fill),o.stroke&&l.setAttribute("stroke",o.stroke),o["data-name"]&&l.setAttribute("data-name",o["data-name"]),o.prepend?this.prepend(l):this.append(l),this.currentGroup.unshift(l),l},e.prototype.closeGroup=function(){var o=this.currentGroup.shift();return o&&o.children.length===0?(o.parentElement.removeChild(o),null):o},e.prototype.path=function(o){var l=document.createElementNS(t,"path");for(var u in o)o.hasOwnProperty(u)&&(u==="path"?l.setAttributeNS(null,"d",o.path):u==="klass"?l.setAttributeNS(null,"class",o[u]):o[u]!==void 0&&l.setAttributeNS(null,u,o[u]));return this.append(l),l},e.prototype.pathToBack=function(o){var l=document.createElementNS(t,"path");for(var u in o)o.hasOwnProperty(u)&&(u==="path"?l.setAttributeNS(null,"d",o.path):u==="klass"?l.setAttributeNS(null,"class",o[u]):l.setAttributeNS(null,u,o[u]));return this.prepend(l),l},e.prototype.lineToBack=function(o){for(var l=document.createElementNS(t,"line"),u=Object.keys(o),p=0;p0?this.currentGroup[0].appendChild(o):this.svg.appendChild(o)},e.prototype.prepend=function(o){this.currentGroup.length>0?this.currentGroup[0].appendChild(o):this.svg.insertBefore(o,this.svg.firstChild)},e.prototype.setAttributeOnElement=function(o,l){for(var u in l)l.hasOwnProperty(u)&&o.setAttributeNS(null,u,l[u])},e.prototype.moveElementToChild=function(o,l){o.appendChild(l)};function r(){var o=document.createElementNS(t,"svg");return o.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),o.setAttribute("role","img"),o.setAttribute("fill","currentColor"),o.setAttribute("stroke","currentColor"),o}return u0=e,u0}var f0,m2;function k9(){if(m2)return f0;m2=1;var t=Vn(),e=w9(),a=function(n){this.paper=new e(n),this.controller=null,this.space=3*t.SPACE,this.padding={},this.reset(),this.firefox=navigator.userAgent.indexOf("Firefox/")>=0};return a.prototype.reset=function(){this.paper.clear(),this.y=0,this.abctune=null,this.path=null,this.isPrint=!1,this.lineThickness=0,this.initVerticalSpace()},a.prototype.newTune=function(n){this.abctune=n,this.setVerticalSpace(n.formatting),this.isPrint=n.media==="print",this.setPadding(n)},a.prototype.setLineThickness=function(n){this.lineThickness=n},a.prototype.setPaddingOverride=function(n){this.paddingOverride={top:n.paddingtop,bottom:n.paddingbottom,right:n.paddingright,left:n.paddingleft}},a.prototype.setPadding=function(n){function s(r,o,l,u,p){n.formatting[l]!==void 0?r.padding[o]=n.formatting[l]:r.paddingOverride[o]!==void 0?r.padding[o]=r.paddingOverride[o]:r.isPrint?r.padding[o]=u:r.padding[o]=p}s(this,"top","topmargin",38,15),s(this,"bottom","botmargin",38,15),s(this,"left","leftmargin",68,15),s(this,"right","rightmargin",68,15)},a.prototype.adjustNonScaledItems=function(n){this.padding.top/=n,this.padding.bottom/=n,this.padding.left/=n,this.padding.right/=n,this.abctune.formatting.headerfont.size/=n,this.abctune.formatting.footerfont.size/=n},a.prototype.initVerticalSpace=function(){this.spacing={composer:7.56,graceBefore:8.67,graceInside:10.67,graceAfter:16,info:0,lineSkipFactor:1.1,music:7.56,paragraphSkipFactor:.4,parts:11.33,slurHeight:1,staffSeparation:61.33,staffTopMargin:0,stemHeight:26.67+10,subtitle:3.78,systemStaffSeparation:48,text:18.9,title:7.56,top:30.24,vocal:0,words:0}},a.prototype.setVerticalSpace=function(n){n.staffsep!==void 0&&(this.spacing.staffSeparation=n.staffsep*4/3),n.composerspace!==void 0&&(this.spacing.composer=n.composerspace*4/3),n.partsspace!==void 0&&(this.spacing.parts=n.partsspace*4/3),n.textspace!==void 0&&(this.spacing.text=n.textspace*4/3),n.musicspace!==void 0&&(this.spacing.music=n.musicspace*4/3),n.titlespace!==void 0&&(this.spacing.title=n.titlespace*4/3),n.sysstaffsep!==void 0&&(this.spacing.systemStaffSeparation=n.sysstaffsep*4/3),n.stafftopmargin!==void 0&&(this.spacing.staffTopMargin=n.stafftopmargin*4/3),n.subtitlespace!==void 0&&(this.spacing.subtitle=n.subtitlespace*4/3),n.topspace!==void 0&&(this.spacing.top=n.topspace*4/3),n.vocalspace!==void 0&&(this.spacing.vocal=n.vocalspace*4/3),n.wordsspace!==void 0&&(this.spacing.words=n.wordsspace*4/3)},a.prototype.calcY=function(n){return this.y-n*t.STEP},a.prototype.yToPitch=function(n){return n/t.STEP},a.prototype.moveY=function(n,s){s===void 0&&(s=1),this.y+=n*s},a.prototype.absolutemoveY=function(n){this.y=n},f0=a,f0}var m0,p2;function x9(){if(p2)return m0;p2=1;function t(e,a,n,s,r,o){var l=e.text;this.rows=[];var u;a&&this.rows.push({move:a});var p=n.calc("textfont","defined-text");if(l==="")this.rows.push({move:p.attr["font-size"]*2});else if(typeof l=="string"){let _=function(b){return b.replace(/^[ \t]*\n/gm,`X +`)};this.rows.push({move:p.attr["font-size"]/2}),this.rows.push({left:s,text:l,font:"textfont",klass:"defined-text",anchor:"start",startChar:e.startChar,endChar:e.endChar,absElemType:"freeText",name:"free-text"});var g=_(l);u=o.calc(g,"textfont","defined-text"),this.rows.push({move:u.height})}else if(l){for(var h=0,f=s,m="textfont",d=0;d0){var v=!!(n.composer||n.origin),_=h?"abcjs-rhythm":"";t(this.rows,{marginLeft:p,text:n.rhythm,font:"infofont",klass:_,absElemType:"rhythm",noMove:v,info:s.rhythm,name:"rhythm"},m)}n.composer&&n.composer,n.origin&&n.origin;var w=n.composer?n.composer:"";if(n.origin&&(typeof w=="string"&&typeof n.origin=="string"?w+=" ("+n.origin+")":typeof w=="string"&&typeof n.origin!="string"?(w=[{text:w}],w.push({text:" ("}),w=w.concat(n.origin),w.push({text:")"})):(w.push({text:" ("}),w=w.concat(n.origin),w.push({text:")"}))),w){var _=h?"abcjs-composer":"";e(this.rows,w,"composerfont",_,"composer",p+l,{anchor:"end",absElemType:"composer",info:s.composer,ingroup:!0},m)}}if(n.author&&n.author.length>0){var _=h?"abcjs-author":"";e(this.rows,n.author,"composerfont",_,"author",p+l,{anchor:"end",absElemType:"author",info:s.author},m)}if(n.partOrder&&n.partOrder.length>0){var _=h?"abcjs-part-order":"";e(this.rows,n.partOrder,"partsfont",_,"part-order",p,{absElemType:"partOrder",info:s.partOrder,anchor:"start"},m)}}return v0=a,v0}var b0,v2;function h9(){if(v2)return b0;v2=1;const t=h0(),e=h2();function a(r,o,l,u,p,g,h){this.rows=[],r.unalignedWords&&r.unalignedWords.length>0&&this.unalignedWords(r.unalignedWords,u,p,g,h),this.extraText(r,u,p,g,h),r.footer&&l&&this.footer(r.footer,o,u,h)}a.prototype.unalignedWords=function(r,o,l,u,p){var g=u?"abcjs-unaligned-words":"",h="wordsfont",m=p.calc("i",h,g);this.rows.push({move:l.words}),s(this.rows,"",r,o,h,"unalignedWords","unalignedWords",g,"unalignedWords",l,u,p),this.rows.push({move:m.height})};function n(r,o,l,u,p,g,h){l&&(o&&(typeof l=="string"?l=o+l:l=[{text:o}].concat(l)),p=g?"abcjs-extra-text "+p:"",e(r,l,"historyfont",p,"description",u,{absElemType:"extraText",anchor:"start"},h))}function s(r,o,l,u,p,g,h,m,f,d,c,_){if(l){m=c?"abcjs-extra-text "+m:"";var b=_.calc("A",p,m);if(typeof l=="string")o&&(l=o+` -`+l),t(r,{marginLeft:u,text:l,font:p,absElemType:"extraText",name:f,"dominant-baseline":"middle",klass:m},_);else{r.push({startGroup:h,klass:m,name:f}),r.push({move:d.info}),o&&(t(r,{marginLeft:u,text:o,font:p,absElemType:"extraText",name:f,"dominant-baseline":"middle"},_),r.push({move:b.height*3/4}));for(var v=0;v0;D++){var M=$.selectables[D];if($.getDim(M),M.dim.leftP&&M.dim.topL)U=D,x=0;else if(M.dim.topL){var G=Math.min(Math.abs(M.dim.left-P),Math.abs(M.dim.right-P));GP){var B=Math.min(Math.abs(M.dim.top-L),Math.abs(M.dim.bottom-L));BMath.abs(P-M.dim.right)?Math.abs(P-M.dim.right):Math.abs(P-M.dim.left),I=Math.abs(L-M.dim.top)>Math.abs(L-M.dim.bottom)?Math.abs(L-M.dim.bottom):Math.abs(L-M.dim.top),k=Math.sqrt(V*V+I*I);k=0&&x<=12?U:-1}function p($,P,L){if($.x<=P.offsetX&&$.x+$.width>=P.offsetX&&$.y<=P.offsetY&&$.y+$.height>=P.offsetY)return[P.offsetX,P.offsetY];var x=Math.abs(P.layerY/L-P.offsetY);return x<3?[P.offsetX,P.offsetY]:[P.layerX,P.layerY]}function g($){if(!$)return null;if($.tagName==="svg")return $;if(!$.getAttribute)return null;for(var P=$.getAttribute("selectable");!P;)$.parentElement?($=$.parentElement,$.tagName==="svg"?P=!0:P=$.getAttribute("selectable")):P=!0;return $}function h($,P){var L,x,U,D=l($.selectables,g(P.target));return D>=0?(U=p($.selectables[D].svgEl.getBBox(),P,$.scale),L=U[0],x=U[1]):(U=n(P),L=U[0],x=U[1],D=u($,L,x)),{x:L,y:x,clickedOn:D}}function m($){if(!(!$||!$.target||!$.touches||$.touches.length<1)){var P=$.target.getBoundingClientRect(),L=$.touches[0].pageX-P.left,x=$.touches[0].pageY-P.top;$.touches[0].offsetX=L,$.touches[0].offsetY=x,$.touches[0].layerX=$.touches[0].pageX,$.touches[0].layerY=$.touches[0].pageY}}function f($){var P=$;$.type==="touchstart"&&(m($),$.touches.length>0&&(P=$.touches[0]));var L=h(this,P);L.clickedOn>=0&&($.type==="touchstart"||$.button===0)&&this.selectables[L.clickedOn]&&(this.dragTarget=this.selectables[L.clickedOn],this.dragIndex=L.clickedOn,this.dragMechanism="mouse",this.dragMouseStart={x:L.x,y:L.y},this.dragging&&this.dragTarget.isDraggable&&(O(this.renderer.paper,"abcjs-dragging-in-progress"),this.dragTarget.absEl.highlight(void 0,this.dragColor)))}function d($){var P=$;if($.type==="touchmove"&&(m($),$.touches.length>0&&(P=$.touches[0])),this.lastTouchMove=$,!(!this.dragTarget||!this.dragging||!this.dragTarget.isDraggable||this.dragMechanism!=="mouse"||!this.dragMouseStart)){var L=h(this,P),x=Math.round((L.y-this.dragMouseStart.y)/t.STEP);x!==this.dragYStep&&(this.dragYStep=x,this.dragTarget.svgEl.setAttribute("transform","translate(0,"+x*t.STEP+")"))}}function c($){var P=$;$.type==="touchend"&&this.lastTouchMove&&(m(this.lastTouchMove),this.lastTouchMove&&this.lastTouchMove.touches&&this.lastTouchMove.touches.length>0&&(P=this.lastTouchMove.touches[0])),this.dragTarget&&(v.bind(this)(),this.dragTarget.absEl&&this.dragTarget.absEl.highlight&&(this.selected=[this.dragTarget.absEl],this.dragTarget.absEl.highlight(void 0,this.selectionColor)),b.bind(this)(this.dragTarget,this.dragYStep,this.selectables.length,this.dragIndex,P),this.dragTarget.svgEl&&this.dragTarget.svgEl.focus&&(this.dragTarget.svgEl.focus(),this.dragTarget=null,this.dragIndex=-1),R(this.renderer.svg,"abcjs-dragging-in-progress"))}function _($){$>=0&&$G&&$w&&(v=w),v<-w&&(v=-w),v}function l(d,c){var _=d?e.STEP:-e.STEP;return c&&(_=_*.4),_}function u(d,c,_){var b=c.heads[d?0:c.heads.length-1],v=_.heads[d?0:_.heads.length-1],w=b.x;d&&(w+=b.w-.6);var y=v.x;return y+=d?v.w:.6,[w,y]}function p(d,c,_,b,v,w,y,T,O,R){var $=_-2,P=_-2,L=Math.round(b?Math.max(d+$,O+P):Math.min(d-$,T-P)),x=o(v,w,c,y),U=L+Math.floor(x/2),D=L+Math.floor(-x/2);return R||(b&&L<6||!b&&L>6)&&(U=6,D=6),[U,D]}function g(d,c,_,b,v){for(var w=0;w=0;_--)if(!d[_].abcelem.rest)return _;return-1}function f(d,c,_,b,v){for(var w=[],y=[],T=0;T0&&O.abcelem.beambr&&O.abcelem.beambr<=D+1){y[D].split||(y[D].split=[y[D].x]);var M=u(c,d[T-1],O);y[D].split[y[D].split.length-1]>=M[0]&&(M[0]+=O.w),y[D].split.push(M[0]),y[D].split.push(M[1])}}for(var G=y.length-1;G>=0;G--){var B=h(d,T),V=B===-1||B-G-4;if(V){var I=$,k=P+L*(G+1);if(y[G].single){var S=m(d,T),F=S===-1,H=B===-1;if(F)I=$+5;else if(H)I=$-5;else{var Q=d[S].abcelem.duration,Y=d[B].abcelem.duration;Q===Y?I=T%2===0?$+5:$-5:I=Qo.startNote||g>o.endNote)&&(o.startNote=g+3,o.endNote=g+3)}else{for(var m=0,h=0;h=u}function s(o,l,u){if(u.beams.length===0)return 0;u=u.beams[0];var p=o+(l-o)/2;return t(u.startX,u.startY,u.endX,u.endY,p)}function r(o,l){return o+(l-o)/2}return T0=e,T0}var $0,T2;function y9(){if(T2)return $0;T2=1;var t=v9(),e=x0(),a=b9(),n=function(g){for(var h=0;h0&&h.putChordInLane(f),g[f]=m.right;return}}g.push(m.right),h.putChordInLane(g.length-1)}}function o(g){var h=[0],m=[0],f,d,c;for(f=0;f=0;d--)c=g[f].children[d],c.chordHeightBelow&&r(m,c)}return(h.length>1||m.length>1)&&u(g,h.length,m.length),{above:h.length,below:m.length}}function l(g){for(var h=0,m=0;m=0&&(c.originalTop=c.top,c.originalBottom=c.bottom),n(c,_,"lyricHeightAbove"),n(c,_,"chordHeightAbove",c.specialY.chordLines.above),c.specialY.endingHeightAbove&&(c.specialY.chordHeightAbove?c.top+=2:c.top+=c.specialY.endingHeightAbove+a,_.endingHeightAbove=c.top),c.specialY.dynamicHeightAbove&&c.specialY.volumeHeightAbove?(c.top+=Math.max(c.specialY.dynamicHeightAbove,c.specialY.volumeHeightAbove)+a,_.dynamicHeightAbove=c.top,_.volumeHeightAbove=c.top):(n(c,_,"dynamicHeightAbove"),n(c,_,"volumeHeightAbove")),n(c,_,"partHeightAbove"),n(c,_,"tempoHeightAbove"),c.specialY.lyricHeightBelow&&(c.specialY.lyricHeightBelow+=h.spacing.vocal/t.STEP,_.lyricHeightBelow=c.bottom,c.bottom-=c.specialY.lyricHeightBelow+a),c.specialY.chordHeightBelow){_.chordHeightBelow=c.bottom;var b=c.specialY.chordHeightBelow;c.specialY.chordLines.below&&(b*=c.specialY.chordLines.below),c.bottom-=b+a}c.specialY.volumeHeightBelow&&c.specialY.dynamicHeightBelow?(_.volumeHeightBelow=c.bottom,_.dynamicHeightBelow=c.bottom,c.bottom-=Math.max(c.specialY.volumeHeightBelow,c.specialY.dynamicHeightBelow)+a):c.specialY.volumeHeightBelow?(_.volumeHeightBelow=c.bottom,c.bottom-=c.specialY.volumeHeightBelow+a):c.specialY.dynamicHeightBelow&&(_.dynamicHeightBelow=c.bottom,c.bottom-=c.specialY.dynamicHeightBelow+a),h.showDebug&&h.showDebug.indexOf("box")>=0&&(c.positionY=_);for(var v=0;v0&&(c.top+=$)}c.top+=h.spacing.staffTopMargin/t.STEP,f=2-c.bottom}},a=1;function n(h,m,f,d){if(h.specialY[f]){var c=h.specialY[f];d&&(c*=d),h.top+=c+a,m[f]=h.top}}function s(h,m,f){var d,c,_=0;for(d=0;d=n.children.length},t.getNextX=function(n){return Math.max(n.minx,n.nextx)},t.getSpacingUnits=function(n){return Math.sqrt(n.spacingduration*8)},t.layoutOneItem=function(n,s,r,o,l){var u=r.children[r.i];if(!u)return 0;var p=n-r.minx,g=r.durationindex+u.duration>0?o:0;if(u.abcelem.el_type==="note"&&!u.abcelem.rest&&r.voicenumber!==0&&l){var h=l.children[l.i],m=h&&(u.abcelem.maxpitch<=h.abcelem.maxpitch+1&&u.abcelem.maxpitch>=h.abcelem.minpitch-1||u.abcelem.minpitch<=h.abcelem.maxpitch+1&&u.abcelem.minpitch>=h.abcelem.minpitch-1);if(m&&u.abcelem.minpitch===h.abcelem.minpitch&&u.abcelem.maxpitch===h.abcelem.maxpitch&&h.heads&&h.heads.length>0&&u.heads&&u.heads.length>0&&h.heads[0].c===u.heads[0].c&&(m=!1),m){var f=h.heads&&h.heads.length>0?h.heads[0].realWidth:h.fixed.w;u.adjustedWidth||(u.adjustedWidth=f+u.w),u.w=u.adjustedWidth;for(var d=0;d0){var g=p.children.length-1,h=p.children[g];if(h.abcelem.el_type==="bar"){var m=h.children[0].x;m>l?l=m:h.children[0].x=l}}}}var a=function(o,l,u,p,g){var h=1e-7,m=0,f=1e3,d=g;p.startx=d;var c,_=0;for(u&&console.log("init layout",o),c=0;ch?w.push(p.voices[c]):v.push(p.voices[c])}b=0;var T=0;for(c=0;cd&&(d=t.getNextX(v[c]),b=t.getSpacingUnits(v[c]),T=v[c].spacingduration);m+=b,f=Math.min(f,b),u&&console.log("currentduration: ",_,m,f);var O=void 0;for(c=0;c0){d=P;for(var x=0;xd&&(d=t.getNextX(p.voices[c]),b=t.getSpacingUnits(p.voices[c]));return e(p.voices),m+=b,p.setWidth(d),{spacingUnits:m,minSpace:f}};function n(o){for(var l=0;l0?0:5e-7)}function r(o,l){return!o||!o.staff||!o.staff.voices||o.staff.voices.length===0||!l||!l.staff||!l.staff.voices||l.staff.voices.length===0?!1:o.staff.voices[0]===l.staff.voices[0]}return F0=a,F0}var A0,F2;function A2(){if(F2)return A0;F2=1;function t(s,r,o,l,u){var p=s.padding.left,g=0,h,m;for(h=0;hMath.round(T)&&(T=O,b&&(w=-1))}for(w=0;w0?(b=(c-$)/v,b*w>50&&(b=50/w),b):null}function p(f){for(var d=0;d1){var y=v[0].abcelem.rest&&v[0].abcelem.rest.type==="rest",T=v[w].abcelem.rest&&v[w].abcelem.rest.type==="rest";if(y&&!v[w].abcelem.rest){var O=v[0].children.find(function(x){return x.name.includes("rest")}),R=h(v[w]);if(O){var $=O.bottom-R;$-=2,$<0&&v[0].children.length>0&&(v[0].bottom-=$,v[0].top-=$,v[0].children[0].bottom-=$,v[0].children[0].top-=$,v[0].children[0].pitch-=$)}}else if(T&&!v[0].abcelem.rest){var P=v[w].children.find(function(x){return x.name.includes("rest")});if(P){var L=P.top-m(v[0]);L+=2,L>0&&v[w].children.length>0&&(v[w].bottom-=L,v[w].top-=L,v[w].children[0].bottom-=L,v[w].children[0].top-=L,v[w].children[0].pitch-=L)}}}}}function h(f){if(f.children){for(var d=-90,c=0;c-90)return d}return f.top}function m(f){if(f.children){for(var d=90,c=0;c0&&a.push(e),e==="abcjs-tab-number")return a.join(" ");if(e==="text instrument-name")return"abcjs-text abcjs-instrument-name";if(this.lineNumber!==null&&a.push("l"+this.lineNumber),this.measureNumber!==null&&a.push("m"+this.measureNumber),this.measureNumber!==null&&a.push("mm"+this.measureTotal()),this.voiceNumber!==null&&a.push("v"+this.voiceNumber),e&&(e.indexOf("note")>=0||e.indexOf("rest")>=0||e.indexOf("lyric")>=0)&&this.noteNumber!==null&&a.push("n"+this.noteNumber),a.length>0){a=a.join(" "),a=a.split(" ");for(var n=0;n0&&(a[n]="abcjs-"+a[n])}return a.join(" ")},z0=t,z0}var U0,U2;function G9(){if(U2)return U0;U2=1;var t=function(a,n){this.formatting=a,this.classes=n};return t.prototype.updateFonts=function(e){e.gchordfont&&(this.formatting.gchordfont=e.gchordfont),e.tripletfont&&(this.formatting.tripletfont=e.tripletfont),e.annotationfont&&(this.formatting.annotationfont=e.annotationfont),e.vocalfont&&(this.formatting.vocalfont=e.vocalfont)},t.prototype.getFamily=function(e){return e[0]==='"'&&e[e.length-1]==='"'?e.substring(1,e.length-1):e},t.prototype.calc=function(e,a){var n;typeof e=="string"?(n=this.formatting[e],n?n={face:n.face,size:Math.round(n.size*4/3),decoration:n.decoration,style:n.style,weight:n.weight,box:n.box}:n={face:"Arial",size:Math.round(48/3),decoration:"underline",style:"normal",weight:"normal"}):n={face:e.face,size:Math.round(e.size*4/3),decoration:e.decoration,style:e.style,weight:e.weight,box:e.box};var s=this.formatting.fontboxpadding?this.formatting.fontboxpadding:.1;n.padding=n.size*s;var r={"font-size":n.size,"font-style":n.style,"font-family":this.getFamily(n.face),"font-weight":n.weight,"text-decoration":n.decoration,class:this.classes.generate(a)};return{font:n,attr:r}},U0=t,U0}var B0,B2;function F9(){if(B2)return B0;B2=1;var t=function(a,n){this.getFontAndAttr=a,this.svg=n};return t.prototype.updateFonts=function(e){this.getFontAndAttr.updateFonts(e)},t.prototype.attr=function(e,a){return this.getFontAndAttr.calc(e,a)},t.prototype.getFamily=function(e){return e[0]==='"'&&e[e.length-1]==='"'?e.substring(1,e.length-1):e},t.prototype.calc=function(e,a,n,s){var r;typeof a=="string"?r=this.attr(a,n):r={font:{face:a.face,size:a.size,decoration:a.decoration,style:a.style,weight:a.weight},attr:{"font-size":a.size,"font-style":a.style,"font-family":this.getFamily(a.face),"font-weight":a.weight,"text-decoration":a.decoration,class:this.getFontAndAttr.classes.generate(n)}};var o=this.svg.getTextSize(e,r.attr,s);return r.font.box?{height:o.height+r.font.padding*4,width:o.width+r.font.padding*4}:o},t.prototype.baselineToCenter=function(e,a,n,s,r){var o=this.calc(e,a,n).height,l=this.attr(a,n).font.size;return o*.5+(r-s-2)*l},B0=t,B0}var R0,R2;function Co(){if(R2)return R0;R2=1;var t=function(){for(var e=0,a,n=arguments[e++],s=[],r,o,l,u;n;){if(r=/^[^\x25]+/.exec(n))s.push(r[0]);else if(r=/^\x25{2}/.exec(n))s.push("%");else if(r=/^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(n)){if((a=arguments[r[1]||e++])==null||a==null)throw"Too few arguments.";if(/[^s]/.test(r[7])&&typeof a!="number")throw"Expecting number but found "+typeof a;switch(r[7]){case"b":a=a.toString(2);break;case"c":a=String.fromCharCode(a);break;case"d":a=parseInt(a);break;case"e":a=r[6]?a.toExponential(r[6]):a.toExponential();break;case"f":a=r[6]?parseFloat(a).toFixed(r[6]):parseFloat(a);break;case"o":a=a.toString(8);break;case"s":a=(a=String(a))&&r[6]?a.substring(0,r[6]):a;break;case"u":a=Math.abs(a);break;case"x":a=a.toString(16);break;case"X":a=a.toString(16).toUpperCase();break}a=/[def]/.test(r[7])&&r[2]&&a>0?"+"+a:a,l=r[3]?r[3]=="0"?"0":r[3][1]:" ",u=r[5]-String(a).length,o=r[5]?str_repeat(l,u):"",s.push(r[4]?a+o:o+a)}else throw"Huh ?!";n=n.substring(r[0].length)}return s.join("")};return R0=t,R0}var j0,j2;function Zs(){if(j2)return j0;j2=1;function t(e){return parseFloat(e.toFixed(2))}return j0=t,j0}var P0,P2;function Hr(){if(P2)return P0;P2=1;var t=Zs();function e(a,n,s){var r=n.y;if(n.phrases){var p=a.paper.richTextLine(n.phrases,n.x,n.y,n.klass,n.anchor);return p}if(n.lane){var o=n.dim.font.size*.25;r+=(n.dim.font.size+o)*n.lane}var l;n.dim?(l=n.dim,l.attr.class=n.klass):l=a.controller.getFontAndAttr.calc(n.type,n.klass),n.anchor&&(l.attr["text-anchor"]=n.anchor),n["dominant-baseline"]&&(l.attr["dominant-baseline"]=n["dominant-baseline"]),l.attr.x=n.x,l.attr.y=r,n.centerVertically||(l.attr.y+=l.font.size),n.type==="debugfont"&&(console.log("Debug msg: "+n.text),l.attr.stroke="#ff0000"),n.cursor&&(l.attr.cursor=n.cursor);var u;n.name==="free-text"?u=n.text.replace(/^[ \t]*\n/gm,` +`&&o--,!a.noMove){var l=r.height*1.1*o;e.push({move:Math.round(l)}),a.marginBottom&&e.push({move:a.marginBottom})}}}return h0=t,h0}var v0,v2;function b2(){if(v2)return v0;v2=1;const t=_0();function e(a,n,s,r,o,l,u,p){var g=p.calc("i",s,r);if(n==="")a.push({move:g.height});else{if(typeof n=="string"){t(a,{marginLeft:l,text:n,font:s,klass:r,marginTop:u.marginTop,anchor:u.anchor,absElemType:u.absElemType,info:u.info,name:o},p);return}u.marginTop&&a.push({move:u.marginTop});var h=0,f={left:l,anchor:u.anchor,phrases:[]};r&&(f.klass=r),a.push(f);for(var m=0;m0){var v=!!(n.composer||n.origin),_=h?"abcjs-rhythm":"";t(this.rows,{marginLeft:p,text:n.rhythm,font:"infofont",klass:_,absElemType:"rhythm",noMove:v,info:s.rhythm,name:"rhythm"},f)}n.composer&&n.composer,n.origin&&n.origin;var k=n.composer?n.composer:"";if(n.origin&&(typeof k=="string"&&typeof n.origin=="string"?k+=" ("+n.origin+")":typeof k=="string"&&typeof n.origin!="string"?(k=[{text:k}],k.push({text:" ("}),k=k.concat(n.origin),k.push({text:")"})):(k.push({text:" ("}),k=k.concat(n.origin),k.push({text:")"}))),k){var _=h?"abcjs-composer":"";e(this.rows,k,"composerfont",_,"composer",p+l,{anchor:"end",absElemType:"composer",info:s.composer,ingroup:!0},f)}}if(n.author&&n.author.length>0){var _=h?"abcjs-author":"";e(this.rows,n.author,"composerfont",_,"author",p+l,{anchor:"end",absElemType:"author",info:s.author},f)}if(n.partOrder&&n.partOrder.length>0){var _=h?"abcjs-part-order":"";e(this.rows,n.partOrder,"partsfont",_,"part-order",p,{absElemType:"partOrder",info:s.partOrder,anchor:"start"},f)}}return b0=a,b0}var y0,w2;function q9(){if(w2)return y0;w2=1;const t=_0(),e=b2();function a(r,o,l,u,p,g,h){this.rows=[],r.unalignedWords&&r.unalignedWords.length>0&&this.unalignedWords(r.unalignedWords,u,p,g,h),this.extraText(r,u,p,g,h),r.footer&&l&&this.footer(r.footer,o,u,h)}a.prototype.unalignedWords=function(r,o,l,u,p){var g=u?"abcjs-unaligned-words":"",h="wordsfont",f=p.calc("i",h,g);this.rows.push({move:l.words}),s(this.rows,"",r,o,h,"unalignedWords","unalignedWords",g,"unalignedWords",l,u,p),this.rows.push({move:f.height})};function n(r,o,l,u,p,g,h){l&&(o&&(typeof l=="string"?l=o+l:l=[{text:o}].concat(l)),p=g?"abcjs-extra-text "+p:"",e(r,l,"historyfont",p,"description",u,{absElemType:"extraText",anchor:"start"},h))}function s(r,o,l,u,p,g,h,f,m,d,c,_){if(l){f=c?"abcjs-extra-text "+f:"";var b=_.calc("A",p,f);if(typeof l=="string")o&&(l=o+` +`+l),t(r,{marginLeft:u,text:l,font:p,absElemType:"extraText",name:m,"dominant-baseline":"middle",klass:f},_);else{r.push({startGroup:h,klass:f,name:m}),r.push({move:d.info}),o&&(t(r,{marginLeft:u,text:o,font:p,absElemType:"extraText",name:m,"dominant-baseline":"middle"},_),r.push({move:b.height*3/4}));for(var v=0;v0;D++){var A=$.selectables[D];if($.getDim(A),A.dim.leftP&&A.dim.topL)B=D,x=0;else if(A.dim.topL){var G=Math.min(Math.abs(A.dim.left-P),Math.abs(A.dim.right-P));GP){var U=Math.min(Math.abs(A.dim.top-L),Math.abs(A.dim.bottom-L));UMath.abs(P-A.dim.right)?Math.abs(P-A.dim.right):Math.abs(P-A.dim.left),I=Math.abs(L-A.dim.top)>Math.abs(L-A.dim.bottom)?Math.abs(L-A.dim.bottom):Math.abs(L-A.dim.top),w=Math.sqrt(V*V+I*I);w=0&&x<=12?B:-1}function p($,P,L){if($.x<=P.offsetX&&$.x+$.width>=P.offsetX&&$.y<=P.offsetY&&$.y+$.height>=P.offsetY)return[P.offsetX,P.offsetY];var x=Math.abs(P.layerY/L-P.offsetY);return x<3?[P.offsetX,P.offsetY]:[P.layerX,P.layerY]}function g($){if(!$)return null;if($.tagName==="svg")return $;if(!$.getAttribute)return null;for(var P=$.getAttribute("selectable");!P;)$.parentElement?($=$.parentElement,$.tagName==="svg"?P=!0:P=$.getAttribute("selectable")):P=!0;return $}function h($,P){var L,x,B,D=l($.selectables,g(P.target));return D>=0?(B=p($.selectables[D].svgEl.getBBox(),P,$.scale),L=B[0],x=B[1]):(B=n(P),L=B[0],x=B[1],D=u($,L,x)),{x:L,y:x,clickedOn:D}}function f($){if(!(!$||!$.target||!$.touches||$.touches.length<1)){var P=$.target.getBoundingClientRect(),L=$.touches[0].pageX-P.left,x=$.touches[0].pageY-P.top;$.touches[0].offsetX=L,$.touches[0].offsetY=x,$.touches[0].layerX=$.touches[0].pageX,$.touches[0].layerY=$.touches[0].pageY}}function m($){var P=$;$.type==="touchstart"&&(f($),$.touches.length>0&&(P=$.touches[0]));var L=h(this,P);L.clickedOn>=0&&($.type==="touchstart"||$.button===0)&&this.selectables[L.clickedOn]&&(this.dragTarget=this.selectables[L.clickedOn],this.dragIndex=L.clickedOn,this.dragMechanism="mouse",this.dragMouseStart={x:L.x,y:L.y},this.dragging&&this.dragTarget.isDraggable&&(O(this.renderer.paper,"abcjs-dragging-in-progress"),this.dragTarget.absEl.highlight(void 0,this.dragColor)))}function d($){var P=$;if($.type==="touchmove"&&(f($),$.touches.length>0&&(P=$.touches[0])),this.lastTouchMove=$,!(!this.dragTarget||!this.dragging||!this.dragTarget.isDraggable||this.dragMechanism!=="mouse"||!this.dragMouseStart)){var L=h(this,P),x=Math.round((L.y-this.dragMouseStart.y)/t.STEP);x!==this.dragYStep&&(this.dragYStep=x,this.dragTarget.svgEl.setAttribute("transform","translate(0,"+x*t.STEP+")"))}}function c($){var P=$;$.type==="touchend"&&this.lastTouchMove&&(f(this.lastTouchMove),this.lastTouchMove&&this.lastTouchMove.touches&&this.lastTouchMove.touches.length>0&&(P=this.lastTouchMove.touches[0])),this.dragTarget&&(v.bind(this)(),this.dragTarget.absEl&&this.dragTarget.absEl.highlight&&(this.selected=[this.dragTarget.absEl],this.dragTarget.absEl.highlight(void 0,this.selectionColor)),b.bind(this)(this.dragTarget,this.dragYStep,this.selectables.length,this.dragIndex,P),this.dragTarget.svgEl&&this.dragTarget.svgEl.focus&&(this.dragTarget.svgEl.focus(),this.dragTarget=null,this.dragIndex=-1),j(this.renderer.svg,"abcjs-dragging-in-progress"))}function _($){$>=0&&$G&&$k&&(v=k),v<-k&&(v=-k),v}function l(d,c){var _=d?e.STEP:-e.STEP;return c&&(_=_*.4),_}function u(d,c,_){var b=c.heads[d?0:c.heads.length-1],v=_.heads[d?0:_.heads.length-1],k=b.x;d&&(k+=b.w-.6);var y=v.x;return y+=d?v.w:.6,[k,y]}function p(d,c,_,b,v,k,y,T,O,j){var $=_-2,P=_-2,L=Math.round(b?Math.max(d+$,O+P):Math.min(d-$,T-P)),x=o(v,k,c,y),B=L+Math.floor(x/2),D=L+Math.floor(-x/2);return j||(b&&L<6||!b&&L>6)&&(B=6,D=6),[B,D]}function g(d,c,_,b,v){for(var k=0;k=0;_--)if(!d[_].abcelem.rest)return _;return-1}function m(d,c,_,b,v){for(var k=[],y=[],T=0;T0&&O.abcelem.beambr&&O.abcelem.beambr<=D+1){y[D].split||(y[D].split=[y[D].x]);var A=u(c,d[T-1],O);y[D].split[y[D].split.length-1]>=A[0]&&(A[0]+=O.w),y[D].split.push(A[0]),y[D].split.push(A[1])}}for(var G=y.length-1;G>=0;G--){var U=h(d,T),V=U===-1||U-G-4;if(V){var I=$,w=P+L*(G+1);if(y[G].single){var S=f(d,T),C=S===-1,H=U===-1;if(C)I=$+5;else if(H)I=$-5;else{var Y=d[S].abcelem.duration,ee=d[U].abcelem.duration;Y===ee?I=T%2===0?$+5:$-5:I=Yo.startNote||g>o.endNote)&&(o.startNote=g+3,o.endNote=g+3)}else{for(var f=0,h=0;h=u}function s(o,l,u){if(u.beams.length===0)return 0;u=u.beams[0];var p=o+(l-o)/2;return t(u.startX,u.startY,u.endX,u.endY,p)}function r(o,l){return o+(l-o)/2}return $0=e,$0}var q0,G2;function C9(){if(G2)return q0;G2=1;var t=F9(),e=S0(),a=A9(),n=function(g){for(var h=0;h0&&h.putChordInLane(m),g[m]=f.right;return}}g.push(f.right),h.putChordInLane(g.length-1)}}function o(g){var h=[0],f=[0],m,d,c;for(m=0;m=0;d--)c=g[m].children[d],c.chordHeightBelow&&r(f,c)}return(h.length>1||f.length>1)&&u(g,h.length,f.length),{above:h.length,below:f.length}}function l(g){for(var h=0,f=0;f=0&&(c.originalTop=c.top,c.originalBottom=c.bottom),n(c,_,"lyricHeightAbove"),n(c,_,"chordHeightAbove",c.specialY.chordLines.above),c.specialY.endingHeightAbove&&(c.specialY.chordHeightAbove?c.top+=2:c.top+=c.specialY.endingHeightAbove+a,_.endingHeightAbove=c.top),c.specialY.dynamicHeightAbove&&c.specialY.volumeHeightAbove?(c.top+=Math.max(c.specialY.dynamicHeightAbove,c.specialY.volumeHeightAbove)+a,_.dynamicHeightAbove=c.top,_.volumeHeightAbove=c.top):(n(c,_,"dynamicHeightAbove"),n(c,_,"volumeHeightAbove")),n(c,_,"partHeightAbove"),n(c,_,"tempoHeightAbove"),c.specialY.lyricHeightBelow&&(c.specialY.lyricHeightBelow+=h.spacing.vocal/t.STEP,_.lyricHeightBelow=c.bottom,c.bottom-=c.specialY.lyricHeightBelow+a),c.specialY.chordHeightBelow){_.chordHeightBelow=c.bottom;var b=c.specialY.chordHeightBelow;c.specialY.chordLines.below&&(b*=c.specialY.chordLines.below),c.bottom-=b+a}c.specialY.volumeHeightBelow&&c.specialY.dynamicHeightBelow?(_.volumeHeightBelow=c.bottom,_.dynamicHeightBelow=c.bottom,c.bottom-=Math.max(c.specialY.volumeHeightBelow,c.specialY.dynamicHeightBelow)+a):c.specialY.volumeHeightBelow?(_.volumeHeightBelow=c.bottom,c.bottom-=c.specialY.volumeHeightBelow+a):c.specialY.dynamicHeightBelow&&(_.dynamicHeightBelow=c.bottom,c.bottom-=c.specialY.dynamicHeightBelow+a),h.showDebug&&h.showDebug.indexOf("box")>=0&&(c.positionY=_);for(var v=0;v0&&(c.top+=$)}c.top+=h.spacing.staffTopMargin/t.STEP,m=2-c.bottom}},a=1;function n(h,f,m,d){if(h.specialY[m]){var c=h.specialY[m];d&&(c*=d),h.top+=c+a,f[m]=h.top}}function s(h,f,m){var d,c,_=0;for(d=0;d=n.children.length},t.getNextX=function(n){return Math.max(n.minx,n.nextx)},t.getSpacingUnits=function(n){return Math.sqrt(n.spacingduration*8)},t.layoutOneItem=function(n,s,r,o,l){var u=r.children[r.i];if(!u)return 0;var p=n-r.minx,g=r.durationindex+u.duration>0?o:0;if(u.abcelem.el_type==="note"&&!u.abcelem.rest&&r.voicenumber!==0&&l){var h=l.children[l.i],f=h&&(u.abcelem.maxpitch<=h.abcelem.maxpitch+1&&u.abcelem.maxpitch>=h.abcelem.minpitch-1||u.abcelem.minpitch<=h.abcelem.maxpitch+1&&u.abcelem.minpitch>=h.abcelem.minpitch-1);if(f&&u.abcelem.minpitch===h.abcelem.minpitch&&u.abcelem.maxpitch===h.abcelem.maxpitch&&h.heads&&h.heads.length>0&&u.heads&&u.heads.length>0&&h.heads[0].c===u.heads[0].c&&(f=!1),f){var m=h.heads&&h.heads.length>0?h.heads[0].realWidth:h.fixed.w;u.adjustedWidth||(u.adjustedWidth=m+u.w),u.w=u.adjustedWidth;for(var d=0;d0){var g=p.children.length-1,h=p.children[g];if(h.abcelem.el_type==="bar"){var f=h.children[0].x;f>l?l=f:h.children[0].x=l}}}}var a=function(o,l,u,p,g){var h=1e-7,f=0,m=1e3,d=g;p.startx=d;var c,_=0;for(u&&console.log("init layout",o),c=0;ch?k.push(p.voices[c]):v.push(p.voices[c])}b=0;var T=0;for(c=0;cd&&(d=t.getNextX(v[c]),b=t.getSpacingUnits(v[c]),T=v[c].spacingduration);f+=b,m=Math.min(m,b),u&&console.log("currentduration: ",_,f,m);var O=void 0;for(c=0;c0){d=P;for(var x=0;xd&&(d=t.getNextX(p.voices[c]),b=t.getSpacingUnits(p.voices[c]));return e(p.voices),f+=b,p.setWidth(d),{spacingUnits:f,minSpace:m}};function n(o){for(var l=0;l0?0:5e-7)}function r(o,l){return!o||!o.staff||!o.staff.voices||o.staff.voices.length===0||!l||!l.staff||!l.staff.voices||l.staff.voices.length===0?!1:o.staff.voices[0]===l.staff.voices[0]}return A0=a,A0}var C0,M2;function E2(){if(M2)return C0;M2=1;function t(s,r,o,l,u){var p=s.padding.left,g=0,h,f;for(h=0;hMath.round(T)&&(T=O,b&&(k=-1))}for(k=0;k0?(b=(c-$)/v,b*k>50&&(b=50/k),b):null}function p(m){for(var d=0;d1){var y=v[0].abcelem.rest&&v[0].abcelem.rest.type==="rest",T=v[k].abcelem.rest&&v[k].abcelem.rest.type==="rest";if(y&&!v[k].abcelem.rest){var O=v[0].children.find(function(x){return x.name.includes("rest")}),j=h(v[k]);if(O){var $=O.bottom-j;$-=2,$<0&&v[0].children.length>0&&(v[0].bottom-=$,v[0].top-=$,v[0].children[0].bottom-=$,v[0].children[0].top-=$,v[0].children[0].pitch-=$)}}else if(T&&!v[0].abcelem.rest){var P=v[k].children.find(function(x){return x.name.includes("rest")});if(P){var L=P.top-f(v[0]);L+=2,L>0&&v[k].children.length>0&&(v[k].bottom-=L,v[k].top-=L,v[k].children[0].bottom-=L,v[k].children[0].top-=L,v[k].children[0].pitch-=L)}}}}}function h(m){if(m.children){for(var d=-90,c=0;c-90)return d}return m.top}function f(m){if(m.children){for(var d=90,c=0;c0&&a.push(e),e==="abcjs-tab-number")return a.join(" ");if(e==="text instrument-name")return"abcjs-text abcjs-instrument-name";if(this.lineNumber!==null&&a.push("l"+this.lineNumber),this.measureNumber!==null&&a.push("m"+this.measureNumber),this.measureNumber!==null&&a.push("mm"+this.measureTotal()),this.voiceNumber!==null&&a.push("v"+this.voiceNumber),e&&(e.indexOf("note")>=0||e.indexOf("rest")>=0||e.indexOf("lyric")>=0)&&this.noteNumber!==null&&a.push("n"+this.noteNumber),a.length>0){a=a.join(" "),a=a.split(" ");for(var n=0;n0&&(a[n]="abcjs-"+a[n])}return a.join(" ")},U0=t,U0}var B0,j2;function P9(){if(j2)return B0;j2=1;var t=function(a,n){this.formatting=a,this.classes=n};return t.prototype.updateFonts=function(e){e.gchordfont&&(this.formatting.gchordfont=e.gchordfont),e.tripletfont&&(this.formatting.tripletfont=e.tripletfont),e.annotationfont&&(this.formatting.annotationfont=e.annotationfont),e.vocalfont&&(this.formatting.vocalfont=e.vocalfont)},t.prototype.getFamily=function(e){return e[0]==='"'&&e[e.length-1]==='"'?e.substring(1,e.length-1):e},t.prototype.calc=function(e,a){var n;typeof e=="string"?(n=this.formatting[e],n?n={face:n.face,size:Math.round(n.size*4/3),decoration:n.decoration,style:n.style,weight:n.weight,box:n.box}:n={face:"Arial",size:Math.round(48/3),decoration:"underline",style:"normal",weight:"normal"}):n={face:e.face,size:Math.round(e.size*4/3),decoration:e.decoration,style:e.style,weight:e.weight,box:e.box};var s=this.formatting.fontboxpadding?this.formatting.fontboxpadding:.1;n.padding=n.size*s;var r={"font-size":n.size,"font-style":n.style,"font-family":this.getFamily(n.face),"font-weight":n.weight,"text-decoration":n.decoration,class:this.classes.generate(a)};return{font:n,attr:r}},B0=t,B0}var R0,P2;function N9(){if(P2)return R0;P2=1;var t=function(a,n){this.getFontAndAttr=a,this.svg=n};return t.prototype.updateFonts=function(e){this.getFontAndAttr.updateFonts(e)},t.prototype.attr=function(e,a){return this.getFontAndAttr.calc(e,a)},t.prototype.getFamily=function(e){return e[0]==='"'&&e[e.length-1]==='"'?e.substring(1,e.length-1):e},t.prototype.calc=function(e,a,n,s){var r;typeof a=="string"?r=this.attr(a,n):r={font:{face:a.face,size:a.size,decoration:a.decoration,style:a.style,weight:a.weight},attr:{"font-size":a.size,"font-style":a.style,"font-family":this.getFamily(a.face),"font-weight":a.weight,"text-decoration":a.decoration,class:this.getFontAndAttr.classes.generate(n)}};var o=this.svg.getTextSize(e,r.attr,s);return r.font.box?{height:o.height+r.font.padding*4,width:o.width+r.font.padding*4}:o},t.prototype.baselineToCenter=function(e,a,n,s,r){var o=this.calc(e,a,n).height,l=this.attr(a,n).font.size;return o*.5+(r-s-2)*l},R0=t,R0}var j0,N2;function Mo(){if(N2)return j0;N2=1;var t=function(){for(var e=0,a,n=arguments[e++],s=[],r,o,l,u;n;){if(r=/^[^\x25]+/.exec(n))s.push(r[0]);else if(r=/^\x25{2}/.exec(n))s.push("%");else if(r=/^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(n)){if((a=arguments[r[1]||e++])==null||a==null)throw"Too few arguments.";if(/[^s]/.test(r[7])&&typeof a!="number")throw"Expecting number but found "+typeof a;switch(r[7]){case"b":a=a.toString(2);break;case"c":a=String.fromCharCode(a);break;case"d":a=parseInt(a);break;case"e":a=r[6]?a.toExponential(r[6]):a.toExponential();break;case"f":a=r[6]?parseFloat(a).toFixed(r[6]):parseFloat(a);break;case"o":a=a.toString(8);break;case"s":a=(a=String(a))&&r[6]?a.substring(0,r[6]):a;break;case"u":a=Math.abs(a);break;case"x":a=a.toString(16);break;case"X":a=a.toString(16).toUpperCase();break}a=/[def]/.test(r[7])&&r[2]&&a>0?"+"+a:a,l=r[3]?r[3]=="0"?"0":r[3][1]:" ",u=r[5]-String(a).length,o=r[5]?str_repeat(l,u):"",s.push(r[4]?a+o:o+a)}else throw"Huh ?!";n=n.substring(r[0].length)}return s.join("")};return j0=t,j0}var P0,O2;function nr(){if(O2)return P0;O2=1;function t(e){return parseFloat(e.toFixed(2))}return P0=t,P0}var N0,I2;function Kr(){if(I2)return N0;I2=1;var t=nr();function e(a,n,s){var r=n.y;if(n.phrases){var p=a.paper.richTextLine(n.phrases,n.x,n.y,n.klass,n.anchor);return p}if(n.lane){var o=n.dim.font.size*.25;r+=(n.dim.font.size+o)*n.lane}var l;n.dim?(l=n.dim,l.attr.class=n.klass):l=a.controller.getFontAndAttr.calc(n.type,n.klass),n.anchor&&(l.attr["text-anchor"]=n.anchor),n["dominant-baseline"]&&(l.attr["dominant-baseline"]=n["dominant-baseline"]),l.attr.x=n.x,l.attr.y=r,n.centerVertically||(l.attr.y+=l.font.size),n.type==="debugfont"&&(console.log("Debug msg: "+n.text),l.attr.stroke="#ff0000"),n.cursor&&(l.attr.cursor=n.cursor);var u;n.name==="free-text"?u=n.text.replace(/^[ \t]*\n/gm,` `):u=n.text.replace(/\n\n/g,` `),u=u.replace(/^\n/,`  -`),l.font.box&&(s||a.paper.openGroup({klass:l.attr.class,fill:a.foregroundColor,"data-name":n.name}),l.attr["text-anchor"]==="end"?l.attr.x-=l.font.padding:l.attr["text-anchor"]==="start"&&(l.attr.x+=l.font.padding),l.attr.y+=l.font.padding,delete l.attr.class),n.noClass&&delete l.attr.class,l.attr.x=t(l.attr.x),l.attr.y=t(l.attr.y),n.name&&(l.attr["data-name"]=n.name);var p=a.paper.text(u,l.attr);if(l.font.box){var g=p.getBBox(),h=0;l.attr["text-anchor"]==="middle"?h=g.width/2+l.font.padding:l.attr["text-anchor"]==="end"&&(h=g.width+l.font.padding*2);var m=0;n.centerVertically&&(m=g.height-l.font.padding),a.paper.rect({"data-name":"box",x:Math.round(n.x-h),y:Math.round(r-m),width:Math.round(g.width+l.font.padding*2),height:Math.round(g.height+l.font.padding*2)}),s||(p=a.paper.closeGroup())}return p}return P0=e,P0}var N0,N2;function A9(){if(N2)return N0;N2=1;var t=Co(),e=In(),a=Hr();function n(u,p,g){var h=p.startVoice.staff.absoluteY-e.STEP*10;return p.endVoice&&p.endVoice.staff?p.endY=p.endVoice.staff.absoluteY-e.STEP*2:p.lastContinuedVoice&&p.lastContinuedVoice.staff?p.endY=p.lastContinuedVoice.staff.absoluteY-e.STEP*2:p.endY=p.startVoice.staff.absoluteY-e.STEP*2,l(u,p.x,h,p.endY,p.type,p.header,g)}function s(u,p,g,h,m){p+=e.STEP;var f=e.STEP*.75,d=e.STEP*.75,c=h-g,_=t("M %f %f l %f %f l %f %f l %f %f z",p,g-d,0,c+d*2,f,0,0,-(c+d*2)),b=e.STEP*2,v=e.STEP;return _+=t("M %f %f q %f %f %f %f q %f %f %f %f z",p+f,g-d,b*.6,v*.2,b,-v,-b*.1,v*.3,-b,v+e.STEP),_+=t("M %f %f q %f %f %f %f q %f %f %f %f z",p+f,g+d+c,b*.6,-v*.2,b,v,-b*.1,-v*.3,-b,-v-e.STEP),u.paper.path({path:_,stroke:u.foregroundColor,fill:u.foregroundColor,class:u.controller.classes.generate(m),"data-name":m})}function r(u,p,g,h,m){var f=h-g,d=o(p,g,[7.5,-8,21,0,18.5,-10.5,7.5],[0,f/5.5,f/3.14,f/2,f/2.93,f/4.88,0]);return d+=o(p,g,[0,17.5,-7.5,6.6,-5,20,0],[f/2,f/1.46,f/1.22,f,f/1.19,f/1.42,f/2]),u.paper.path({path:d,stroke:u.foregroundColor,fill:u.foregroundColor,class:u.controller.classes.generate(m),"data-name":m})}function o(u,p,g,h){return t("M %f %f C %f %f %f %f %f %f C %f %f %f %f %f %f z",u+g[0],p+h[0],u+g[1],p+h[1],u+g[2],p+h[2],u+g[3],p+h[3],u+g[4],p+h[4],u+g[5],p+h[5],u+g[6],p+h[6])}var l=function(u,p,g,h,m,f,d){var c;if(f){u.paper.openGroup({klass:u.controller.classes.generate("staff-extra voice-name"),"data-name":m});var _=g+(h-g)/2;_=_-u.controller.getTextSize.baselineToCenter(f,"voicefont","staff-extra voice-name",0,1),a(u,{x:u.padding.left,y:_,text:f,type:"voicefont",klass:"staff-extra voice-name",anchor:"start",centerVertically:!0})}return m==="brace"?c=r(u,p,g,h,m):m==="bracket"&&(c=s(u,p,g,h,m)),f&&(c=u.paper.closeGroup()),d.wrapSvgEl({el_type:m,startChar:-1,endChar:-1},c),c};return N0=n,N0}var O0,O2;function Gc(){if(O2)return O0;O2=1;function t(e,a,n){var s=e.paper.path(a);return s}return O0=t,O0}var I0,I2;function C9(){if(I2)return I0;I2=1;var t=Co(),e=Gc(),a=Zs();function n(c,_,b){(!_.anchor1||!_.anchor2||!_.anchor1.heads||!_.anchor2.heads||_.anchor1.heads.length===0||_.anchor2.heads.length===0)&&window.console.error("Glissando Element not set.");var v=4,w=c.calcY(_.anchor1.heads[0].pitch),y=c.calcY(_.anchor2.heads[0].pitch),T=_.anchor1.x+_.anchor1.w/2,O=_.anchor2.x+_.anchor2.w/2,R=s(T,w,O,y),$=_.anchor1.w/2+v,P=_.anchor2.w/2+v,L=r(T,w,O,y),x=o(w,L,$);o(y,L,-P);var U=l(R-$-P),D=d(c,T+$,x,U,L);return b.wrapSvgEl({el_type:"glissando",startChar:-1,endChar:-1},D),[D]}function s(c,_,b,v){var w=b-c,y=v-_;return Math.sqrt(w*w+y*y)}function r(c,_,b,v){return(v-_)/(b-c)}function o(c,_,b){return a(c+b*_)}function l(c){var _=5;return Math.max(2,Math.floor((c-_*2)/6))}var u=[[3.5,-4.8]],p=[[1.5,-1],[.3,-.3],[-3.5,3.8]],g=[[-1.5,2]],h=[[3,4],[3,-4]],m=[[-3,4],[-3,-4]];function f(c,_){for(var b="",v=0;v1&&u.indexOf(".")<0){var m=a.isInGroup()?"":p.klass;r.paper.openGroup({"data-name":p.name,klass:m});for(var f=0,d=0;d0?l.linewidth+o.lineThickness:l.linewidth-o.lineThickness;l.graphelem=e(o,l.x,d,p,o.calcY(l.pitch2),"abcjs-stem","stem");break;case"ledger":l.graphelem=a(o,l.x,l.x+l.w,l.pitch,"abcjs-ledger","ledger",.35+o.lineThickness);break}return l.scalex!==1&&l.graphelem&&r(o.paper,l.graphelem,l.scalex,l.scaley,l.x,p),l.graphelem}function r(o,l,u,p,g,h){o.setAttributeOnElement(l,{style:"transform:scale("+u+","+p+");transform-origin:"+g+"px "+h+"px;"})}return ag=s,ag}var ng,aw;function P9(){if(aw)return ng;aw=1;var t=iw(),e=Hr();function a(n,s){var r=s.x;s.pitch===void 0&&window.console.error("Tempo Element y-coordinate not set."),s.tempo.el_type="tempo";var o=n.calcY(s.pitch)+2,l,u;if(s.tempo.preString){l=e(n,{x:r,y:o,text:s.tempo.preString,type:"tempofont",klass:"abcjs-tempo",anchor:"start",noClass:!0,name:"pre"},!0),u=n.controller.getTextSize.calc(s.tempo.preString,"tempofont","tempo",l);var p=u.width,g=p/s.tempo.preString.length;r+=p+g}if(s.note){s.note.setX(r);for(var h=0;h0&&l.children[0].type==="TempoElement";l.elemset=[],s.beginGroup(o.paper,o.controller);for(var m=0;m=0&&d.setAttribute("class","abcjs-notehead"),d&&f.chordPos&&f.name.indexOf("flags.")!==0){var c=d.getAttribute("class");c?c=c+" abcjs-chord-pos-"+f.chordPos:c="abcjs-chord-pos-"+f.chordPos,d.setAttribute("class",c)}}}var c=l.type;if((l.type==="note"||l.type==="rest")&&(l.counters=o.controller.classes.getCurrent(),c+=" d"+Math.round(l.durationClass*1e3)/1e3,c=c.replace(/\./g,"-"),l.abcelem.pitches))for(var _=0;_0?b.classList[0]+" ":"";b.setAttribute("class",v+l.overrideClasses)}if(h)l.startChar=l.abcelem.startChar,l.endChar=l.abcelem.endChar,p.add(l,b,!1,g);else{l.elemset.push(b);var w=!1;(l.type==="note"||l.type==="tabNumber")&&(w=!0),p.add(l,b,w,g)}}else l.elemset.length>0&&p.add(l,l.elemset[0],l.type==="note",g);if(l.klass&&n(l.elemset,"mark","","#00ff00"),l.hint&&n(l.elemset,"abcjs-hint","",null),l.abcelem.abselem=l,l.heads&&l.heads.length>0){l.notePositions=[];for(var y=0;y=0;m--){var f=(m+1)*p;h=a.calcY(f),g===0&&(g=h),t(a,n,s,f,u,null,l+a.lineThickness),u=void 0}return a.paper.closeGroup(),[g,h]}return og=e,og}var lg,ow;function L9(){if(ow)return lg;ow=1;function t(e,a,n){var s=e.paper.rectBeneath(a);return n&&e.paper.text(n,{x:0,y:a.y+7,"text-anchor":"start","font-size":"14px",fill:"rgba(0,0,255,.4)",stroke:"rgba(0,0,255,.4)"}),s}return lg=t,lg}var cg,lw;function D9(){if(lw)return cg;lw=1;function t(e,a){var n="rgba(0,0,0,255)",s="rgba(0,0,0,0)",r=Math.round(e.y),o=e.controller.width,l=(o-a)/2,u=l+a,p="M "+l+" "+r+" L "+u+" "+r+" L "+u+" "+(r+1)+" L "+l+" "+(r+1)+" L "+l+" "+r+" z";e.paper.pathToBack({path:p,stroke:s,fill:n,class:e.controller.classes.generate("defined-text")})}return cg=t,cg}var dg,cw;function dw(){if(cw)return dg;cw=1;var t=D9(),e=Hr();function a(n,s,r){for(var o=0;o=0&&b.voices&&p(g,h.voices,b.voices),g.showDebug.indexOf("grid")>=0&&(g.paper.dottedLine({x1:g.padding.left,x2:g.padding.left+g.controller.width,y1:c,y2:c,stroke:"#0000ff"}),s(g,{x:g.padding.left,y:g.calcY(b.originalTop),width:g.controller.width,height:g.calcY(b.originalBottom)-g.calcY(b.originalTop),fill:g.foregroundColor,stroke:g.foregroundColor,"fill-opacity":.1,"stroke-opacity":.1}),d=0,M(b,"chordHeightAbove"),M(b,"chordHeightBelow"),M(b,"dynamicHeightAbove"),M(b,"dynamicHeightBelow"),M(b,"endingHeightAbove"),M(b,"lyricHeightAbove"),M(b,"lyricHeightBelow"),M(b,"partHeightAbove"),M(b,"tempoHeightAbove"),M(b,"volumeHeightAbove"),M(b,"volumeHeightBelow"))),g.moveY(t.STEP,-b.bottom),g.showDebug&&g.showDebug.indexOf("grid")>=0&&g.paper.dottedLine({x1:g.padding.left,x2:g.padding.left+g.controller.width,y1:g.y,y2:g.y,stroke:"#0000aa"})}for(var v,w,y=2,T=0,O=0;O1&&(v=h.staffs[0].topLine,w=h.staffs[D-1].bottomLine,r(g,h.startx,.6,v,w,null)),g.y=c;function M(G,B){var V=["rgb(207,27,36)","rgb(168,214,80)","rgb(110,161,224)","rgb(191,119,218)","rgb(195,30,151)","rgb(31,170,177)","rgb(220,166,142)"];if(G.positionY&&G.positionY[B]){var I=G.specialY[B]*t.STEP;B==="chordHeightAbove"&&G.specialY.chordLines&&G.specialY.chordLines.above&&(I*=G.specialY.chordLines.above),B==="chordHeightBelow"&&G.specialY.chordLines&&G.specialY.chordLines.below&&(I*=G.specialY.chordLines.below),s(g,{x:g.padding.left,y:g.calcY(G.positionY[B]),width:g.controller.width,height:I,fill:V[d],stroke:V[d],"fill-opacity":.4,"stroke-opacity":.4},B.substr(0,4)),d+=1,d>6&&(d=0)}}}function u(g,h,m,f,d){if(m)for(var c=0;c=0},a.prototype.wrapSvgEl=function(n,s){var r={tuneNumber:this.tuneNumber,abcelem:n,elemset:[s],highlight:t,unhighlight:e};this.add(r,s,!1)},mg=a,mg}var pg,pw;function Q9(){if(pw)return pg;pw=1;const t=W0(),e=eg();function a(v,w,y,T,O){const R=O.gchordfont;O.partsfont;const $=O.annotationfont,P=O.repeatfont,L=O.textfont,x=O.subtitlefont,U=50,D=10,M=14,G=10,B=20,V=16;v.paper.openGroup({klass:"abcjs-chord-grid"}),w.forEach(I=>{switch(I.type){case"text":b(v,I.text,y,v.y,16,L,null,null,!1),v.moveY(V);break;case"subtitle":b(v,I.subtitle,y,v.y+G,20,x,null,"abcjs-subtitle",!1),v.moveY(B);break;case"part":if(I.lines.length>0){b(v,I.name,y,v.y+G,20,x,I.name,"abcjs-part",!1),v.moveY(B);const k=I.lines[0].length,S=T/k;I.lines.forEach((F,H)=>{let Q=!1,Y=!1;F.forEach(re=>{re.ending&&(Q=!0),re.annotations&&re.annotations.length>0&&(Y=!0)});const C=Y?M:Q?D:0;F.forEach((re,he)=>{if(!re.noBorder){v.paper.rect({x:y+he*S,y:v.y,width:S,height:C+U}),v.paper.rect({x:y+he*S+1,y:v.y+1,width:S-2,height:C+U-2});let ye=0,se=0;const we=v.y,ae=y+S*he;re.hasStartRepeat&&(s(v,ae,we,we+U+C,!0,C),ye=12),re.hasEndRepeat&&(s(v,ae+S,we,we+U+C,!1,C),se=12);let Re=0;re.ending&&(Re=b(v,re.ending,y+he*S+4,we+10,12,P,null,null,!1).getBBox().width+4),l(v,we,y+ye,S,H,he,re.chord,R,ye+se,U,C),re.annotations&&re.annotations.length>0&&o(v,we,y+he*S+Re,re.annotations,$),C&&v.paper.rectBeneath({x:y+he*S,y:v.y,width:S,height:C,fill:"#e8e8e8",stroke:"none"})}}),v.moveY(C+U)}),v.moveY(B)}break}}),v.paper.closeGroup()}function n(v,w,y,T){var O=w-10,R=w+10,$=y+10,P=y-10,L=w-10,x=-v.yToPitch(T)+2,U=w+6.5,D=-v.yToPitch(T)-2.3;v.paper.lineToBack({x1:O,x2:R,y1:$,y2:P,"stroke-width":"3px","stroke-linecap":"round"}),t(v,L,x,"dots.dot",{scalex:1,scaley:1,klass:"",name:"dot"}),t(v,U,D,"dots.dot",{scalex:1,scaley:1,klass:"",name:"dot"})}function s(v,w,y,T,O,R){const $=O?w+2:w-4,P=O?w+9:w-11;v.paper.openGroup({klass:"abcjs-repeat"}),e(v,$,3+v.lineThickness,y,T,null,"bar"),t(v,P,-v.yToPitch(R)-4,"dots.dot",{scalex:1,scaley:1,klass:"",name:"dot"}),t(v,P,-v.yToPitch(R)-8,"dots.dot",{scalex:1,scaley:1,klass:"",name:"dot"}),v.paper.closeGroup()}const r={segno:"scripts.segno",coda:"scripts.coda",fermata:"scripts.ufermata"};function o(v,w,y,T,O){y+=3;let R;for(let $=0;$$&&x>=14;)x-=2,P.setAttribute("font-size",x),L=P.getBBox()}const p=34,g=26,h=20,m=-3;function f(v,w,y,T,O,R,$,P){R==="%"?n(v,w+T/2,y+O/2,P+O/2):u(v,w+T/2,y+O/2+m,p,R,$,T)}function d(v,w,y,T,O,R,$,P,L){v.paper.lineToBack({x1:w,x2:w+T,y1:y+O+L,y2:y+2}),u(v,w+T/4,y+O/4+5+L+m,g,R,P,T/2),u(v,w+3*T/4,y+3*O/4+L+m,g,$,P,T/2)}function c(v,w,y,T,O,R,$,P){v.paper.lineToBack({x1:w+3,x2:w+T-3,y1:y+O/2+P,y2:y+O/2+P}),v.paper.lineToBack({x1:w+T/2,x2:w+T/2,y1:y+3+P,y2:y+O-3+P}),R[0]&&u(v,w+T/4,y+O/4+2+P+m,h,_(R[0]),$,T/2),R[1]&&u(v,w+3*T/4,y+O/4+2+P+m,h,_(R[1]),$,T/2),R[2]&&u(v,w+T/4,y+3*O/4+P+m,h,_(R[2]),$,T/2),R[3]&&u(v,w+3*T/4,y+3*O/4+P+m,h,_(R[3]),$,T/2)}function _(v){return v==="No Chord"?"N.C.":v}function b(v,w,y,T,O,R,$,P,L){const x={x:y,y:T,stroke:"none","font-size":O,"font-style":R.style,"font-family":R.face,"font-weight":R.weight,"text-decoration":R.decoration};return $&&(x["data-name"]=$),P&&(x.class=P),x["text-anchor"]=L?"middle":"start",v.paper.text(w,x,null,{"alignment-baseline":"middle"})}return pg=a,pg}var gg,gw;function K9(){if(gw)return gg;gw=1;var t=V9(),e=H9(),a=dw(),n=In(),s=W9(),r=Q9();function o(p,g,h,m,f,d,c,_,b,v,w){var y=new s(p.paper,_,b),T={};g.shouldAddClasses&&(T.klass="abcjs-meta-top"),p.paper.openGroup(T),p.moveY(p.padding.top),a(p,h.topText,y),p.paper.closeGroup(),p.moveY(p.spacing.music);let O=!1;w&&h.chordGrid&&(r(p,h.chordGrid,p.padding.left,m,h.formatting),w==="noMusic"&&(O=!0));var R=[],$=0;if(!O)for(var P=0;Ph.formatting.maxStaves)break;g.shouldAddClasses&&(T.klass="abcjs-staff-wrapper abcjs-l"+g.lineNumber),p.paper.openGroup(T),L.vskip&&p.moveY(L.vskip),R.length>=1?u(p,p.spacing.staffSeparation,R[R.length-1],L.staffGroup):P>0&&p.moveY(p.spacing.staffSeparation);var x=l(p,L.staffGroup,y,P);x.line=v+P,R.push(x),p.paper.closeGroup()}else L.nonMusic&&(g.shouldAddClasses&&(T.klass="abcjs-non-music"),p.paper.openGroup(T),a(p,L.nonMusic,y),p.paper.closeGroup())}return g.reset(),O||h.bottomText&&h.bottomText.rows&&h.bottomText.rows.length>0&&(g.shouldAddClasses&&(T.klass="abcjs-meta-bottom"),p.paper.openGroup(T),p.moveY(24),a(p,h.bottomText,y),p.paper.closeGroup()),e(p,f,c,d),{staffgroups:R,selectables:y.getElements()}}function l(p,g,h,m){t(p,g,h,m);var f=g.height*n.STEP;return p.moveY(f),g}function u(p,g,h,m){var f=h.staffs[h.staffs.length-1],d=-(f.bottom-2),c=m.staffs[0].top-10,_=c+d,b=_*n.STEP;b=0&&s.1||(this.scale=void 0),y.staffwidth?(this.staffwidthScreen=y.staffwidth,this.staffwidthPrint=y.staffwidth):(this.staffwidthScreen=740,this.staffwidthPrint=680),this.listeners=[],y.clickListener&&this.addSelectListener(y.clickListener),this.renderer=new a(w),this.renderer.setPaddingOverride(y),y.showDebug&&(this.renderer.showDebug=y.showDebug),y.jazzchords&&(this.jazzchords=y.jazzchords),y.accentAbove&&(this.accentAbove=y.accentAbove),y.germanAlphabet&&(this.germanAlphabet=y.germanAlphabet),y.lineThickness&&(this.lineThickness=y.lineThickness),y.chordGrid&&(this.chordGrid=y.chordGrid),this.renderer.controller=this,this.renderer.foregroundColor=y.foregroundColor?y.foregroundColor:"currentColor",y.ariaLabel!==void 0&&(this.renderer.ariaLabel=y.ariaLabel),this.renderer.minPadding=y.minPadding?y.minPadding:0,this.reset()};_.prototype.reset=function(){this.selected=[],this.staffgroups=[],this.engraver&&this.engraver.reset(),this.engraver=null,this.renderer.reset(),this.dragTarget=null,this.dragIndex=-1,this.dragMouseStart={x:-1,y:-1},this.dragYStep=0,this.lineThickness&&this.renderer.setLineThickness(this.lineThickness)},_.prototype.engraveABC=function(w,y,T){w[0]===void 0&&(w=[w]),this.reset();for(var O=0;O0)for(var L=P.staffGroup.voices[0],x=!1,U=0,D=0;Dthis.width+1&&(w.topText=new o(w.metaText,w.metaTextInfo,w.formatting,w.lines,$,this.renderer.isPrint,this.renderer.padding.left,this.renderer.spacing,this.classes.shouldAddClasses,this.getTextSize),w.lines&&w.lines.length>0))for(var P=w.lines.length,L=0;L0)for(var U=x.nonMusic.rows.length,D=0;D0&&x.text[0].center&&(M.left=$/2+this.renderer.padding.left))}}w.tablatures&&d.layoutTablatures(this.renderer,w);var G=f(this.renderer,this.classes,w,this.width,$,this.responsive,R,this.selectTypes,y,T,this.chordGrid);if(this.staffgroups=G.staffgroups,this.selectables=G.selectables,this.oneSvgPerLine){var B=this.renderer.paper.svg.parentNode;this.svgs=b(this.renderer,B,w.metaText.title,this.responsive,R)}else this.svgs=[this.renderer.paper.svg];u(this,this.svgs),this.jazzchords=O};function b(w,y,T,O,R){T||(T="Untitled");var $=y.querySelector("svg");O==="resize"&&(y.style.paddingBottom="");for(var P=$.querySelector("style"),L=O==="resize"?$.viewBox.baseVal.width:$.getAttribute("width"),x=y.querySelectorAll("svg > g"),U=0,D=[],M=0;M',p.style.overflowX="hidden",p.style.overflowY="auto",p=p.children[0]):p.innerHTML="";var d=new e(p,h);if(d.engraveABC(g,m,f),g.engraver=d,h.viewportVertical||h.viewportHorizontal){var c=p.parentNode;c.style.width=p.style.width}}var l=function(p,g,h,m,f){var d={},c;if(h){for(c in h)h.hasOwnProperty(c)&&(d[c]=h[c]);d.warnings_id&&d.tablature&&(d.tablature.warning_id=d.warnings_id)}if(m)for(c in m)m.hasOwnProperty(c)&&(c==="listener"?m[c].highlight&&(d.clickListener=m[c].highlight):d[c]=m[c]);if(f)for(c in f)f.hasOwnProperty(c)&&(d[c]=f[c]);function _(b,v,w,y){var T=!1;return b==="*"&&(T=!0,b=document.createElement("div"),b.setAttribute("style","visibility: hidden;"),document.body.appendChild(b)),!T&&d.wrap&&d.staffwidth?(v=u(b,v,w,y,d),v):(d.afterParsing&&d.afterParsing(v,w,y),o(b,v,d,w,0),T&&b.parentNode.removeChild(b),null)}return t.renderEngine(_,p,g,d)};function u(p,g,h,m,f){var d=new e(p,f),c=d.getMeasureWidths(g),_=n.calcLineWraps(g,c,f);if(_.reParse){var b=new a;b.parse(m,_.revisedParams),g=b.getTune();var v=b.getWarnings();v&&(g.warnings=v)}return f.afterParsing&&f.afterParsing(g,h,m),o(p,g,_.revisedParams,h,0),g.explanation=_.explanation,g}return bg=l,bg}var yg,yw;function X9(){if(yw)return yg;yw=1;var t=ru(),e=vg(),a=function(n,s){function r(o,l,u,p){o=document.createElement("div"),o.setAttribute("style","visibility: hidden;"),document.body.appendChild(o);var g=new e(o,s),h=g.getMeasureWidths(l);return o.parentNode.removeChild(o),{sections:h}}return t.renderEngine(r,"*",n,s)};return yg=a,yg}var wg,ww;function kg(){if(ww)return wg;ww=1;var t={};return wg=t,wg}var xg,kw;function J9(){if(kw)return xg;kw=1;var t=kg(),e=function(a,n,s,r){t[n]||(t[n]={});var o=t[n];return o[s]||(o[s]=new Promise(function(l,u){var p=new XMLHttpRequest;let g=a+n+"-mp3/"+s+".mp3";p.open("GET",g,!0),p.responseType="arraybuffer",p.onload=function(){if(p.status!==200){u(Error("Can't load sound at "+g+" status="+p.status));return}var h=function(f){l({instrument:n,name:s,status:"loaded",audioBuffer:f})},m=r.decodeAudioData(p.response,h,function(){u(Error("Can't decode sound at "+g))});m&&typeof m.catch=="function"&&m.catch(u)},p.onerror=function(){u(Error("Can't load sound at "+g))},p.send()}).catch(l=>{throw console.error("Didn't load note",n,s,":",l.message),l})),o[s]};return xg=e,xg}var Sg,xw;function Tg(){if(xw)return Sg;xw=1;var t=["acoustic_grand_piano","bright_acoustic_piano","electric_grand_piano","honkytonk_piano","electric_piano_1","electric_piano_2","harpsichord","clavinet","celesta","glockenspiel","music_box","vibraphone","marimba","xylophone","tubular_bells","dulcimer","drawbar_organ","percussive_organ","rock_organ","church_organ","reed_organ","accordion","harmonica","tango_accordion","acoustic_guitar_nylon","acoustic_guitar_steel","electric_guitar_jazz","electric_guitar_clean","electric_guitar_muted","overdriven_guitar","distortion_guitar","guitar_harmonics","acoustic_bass","electric_bass_finger","electric_bass_pick","fretless_bass","slap_bass_1","slap_bass_2","synth_bass_1","synth_bass_2","violin","viola","cello","contrabass","tremolo_strings","pizzicato_strings","orchestral_harp","timpani","string_ensemble_1","string_ensemble_2","synth_strings_1","synth_strings_2","choir_aahs","voice_oohs","synth_choir","orchestra_hit","trumpet","trombone","tuba","muted_trumpet","french_horn","brass_section","synth_brass_1","synth_brass_2","soprano_sax","alto_sax","tenor_sax","baritone_sax","oboe","english_horn","bassoon","clarinet","piccolo","flute","recorder","pan_flute","blown_bottle","shakuhachi","whistle","ocarina","lead_1_square","lead_2_sawtooth","lead_3_calliope","lead_4_chiff","lead_5_charang","lead_6_voice","lead_7_fifths","lead_8_bass_lead","pad_1_new_age","pad_2_warm","pad_3_polysynth","pad_4_choir","pad_5_bowed","pad_6_metallic","pad_7_halo","pad_8_sweep","fx_1_rain","fx_2_soundtrack","fx_3_crystal","fx_4_atmosphere","fx_5_brightness","fx_6_goblins","fx_7_echoes","fx_8_scifi","sitar","banjo","shamisen","koto","kalimba","bagpipe","fiddle","shanai","tinkle_bell","agogo","steel_drums","woodblock","taiko_drum","melodic_tom","synth_drum","reverse_cymbal","guitar_fret_noise","breath_noise","seashore","bird_tweet","telephone_ring","helicopter","applause","gunshot","percussion"];return Sg=t,Sg}var $g,Sw;function Z9(){if(Sw)return $g;Sw=1;var t=Tg(),e=function(a){for(var n=[],s=0;s0){var g=u.gap?u.gap:0,h=u.duration;g=Math.min(g,h*2/3);var m={pitch:u.pitch,instrument:p,start:Math.round(u.start*1e6)/1e6,end:Math.round((u.start+h-g)*1e6)/1e6,volume:u.volume};u.startChar&&(m.startChar=u.startChar),u.endChar&&(m.endChar=u.endChar),u.style&&(m.style=u.style),u.cents&&(m.cents=u.cents),n[l].push(m)}break;case"program":r=t[u.instrument];break;case"text":break;default:console.log("Unhandled midi event",u)}})}),n};return $g=e,$g}var qg,Tw;function ou(){if(Tw)return qg;Tw=1;function t(e){if(e)window.abcjsAudioContext=e;else if(!window.abcjsAudioContext){var a=window.AudioContext||window.webkitAudioContext;if(a)window.abcjsAudioContext=new a;else return!1}return window.abcjsAudioContext.state!=="suspended"}return qg=t,qg}var Gg,$w;function yl(){if($w)return Gg;$w=1;var t=ou();function e(){return window.abcjsAudioContext||t(),window.abcjsAudioContext}return Gg=e,Gg}var Fg,qw;function lu(){if(qw)return Fg;qw=1;var t=yl();function e(){if(!window.Promise||!window.AudioContext&&!window.webkitAudioContext&&!navigator.mozAudioContext&&!navigator.msAudioContext)return!1;var a=t();if(a)return a.resume!==void 0}return Fg=e,Fg}var Ag,Gw;function Cg(){if(Gw)return Ag;Gw=1;var t={21:"A0",22:"Bb0",23:"B0",24:"C1",25:"Db1",26:"D1",27:"Eb1",28:"E1",29:"F1",30:"Gb1",31:"G1",32:"Ab1",33:"A1",34:"Bb1",35:"B1",36:"C2",37:"Db2",38:"D2",39:"Eb2",40:"E2",41:"F2",42:"Gb2",43:"G2",44:"Ab2",45:"A2",46:"Bb2",47:"B2",48:"C3",49:"Db3",50:"D3",51:"Eb3",52:"E3",53:"F3",54:"Gb3",55:"G3",56:"Ab3",57:"A3",58:"Bb3",59:"B3",60:"C4",61:"Db4",62:"D4",63:"Eb4",64:"E4",65:"F4",66:"Gb4",67:"G4",68:"Ab4",69:"A4",70:"Bb4",71:"B4",72:"C5",73:"Db5",74:"D5",75:"Eb5",76:"E5",77:"F5",78:"Gb5",79:"G5",80:"Ab5",81:"A5",82:"Bb5",83:"B5",84:"C6",85:"Db6",86:"D6",87:"Eb6",88:"E6",89:"F6",90:"Gb6",91:"G6",92:"Ab6",93:"A6",94:"Bb6",95:"B6",96:"C7",97:"Db7",98:"D7",99:"Eb7",100:"E7",101:"F7",102:"Gb7",103:"G7",104:"Ab7",105:"A7",106:"Bb7",107:"B7",108:"C8",109:"Db8",110:"D8",111:"Eb8",112:"E8",113:"F8",114:"Gb8",115:"G8",116:"Ab8",117:"A8",118:"Bb8",119:"B8",120:"C9",121:"Db9"};return Ag=t,Ag}var Mg,Fw;function eM(){if(Fw)return Mg;Fw=1;var t=function(a){return window.URL.createObjectURL(e(a.audioBuffers))};function e(a){var n=a[0],s=n.numberOfChannels,r=n.length*s*2+44,o=new ArrayBuffer(r),l=new DataView(o),u=[],p,g,h=0,m=0;for(d(1179011410),d(r-8),d(1163280727),d(544501094),d(16),f(1),f(s),d(n.sampleRate),d(n.sampleRate*2*s),f(s*2),f(16),d(1635017060),d(r-m-4),p=0;p0){if(c.debugCallback&&c.debugCallback("pending "+JSON.stringify(L)),T?T=T*2:T=50,T<9e4)return new Promise(function(V,I){setTimeout(function(){var k=[];for(U=0;U0?k.audioBuffers[0].duration:0;return{status:n().state,duration:S}};var T=n().currentTime,O=c.millisecondsPerMeasure/1e3/c.meterSize;if(c.duration=c.flattened.totalDuration*O,c.duration<=0)return c.audioBuffers=[],w({status:"empty",seconds:0});c.duration+=v;var R=Math.floor(n().sampleRate*c.duration);c.stop();var $=e(c.flattened);if(c.options.swing){var P=c.options.drumIntro?0:c.pickupLength;b($,c.options.swing,c.meterFraction,P)}c.sequenceCallback&&c.sequenceCallback($,c.callbackContext);var L=_($.length,c.pan),x={};$.forEach(function(k,S){var F=L&&L.length>S?L[S]:0;k.forEach(function(H){var Q=H.instrument+":"+H.pitch+":"+H.volume+":"+Math.round((H.end-H.start)*1e3)/1e3+":"+F+":"+O+":"+(H.cents?H.cents:0);c.debugCallback&&c.debugCallback("noteMapTrack "+Q),x[Q]||(x[Q]=[]),x[Q].push(H.start)})});for(var U=[],D=n().createBuffer(2,R,n().sampleRate),M=0;M1&&(O=1),y.push(O)}else y.push(0);return y}else{var R=parseFloat(w);if(R*(v-1)>2)return null;for(var $=v%2===0,P=$?0-R/2:0,L=P+R,x=0;x75&&(w=75),w=w/50-1;var O=0,R=.25;y.den===8&&(R=R/2);for(var $=R/2,P=$*w,L=0;L=x[U].start+$)){var M=D.start;D.start+=P,D.volume*=1+O,U>0&&x[U-1].end===M&&(x[U-1].end=D.start,x[U-1].volume*=1-O)}}}}}return Ug=d,Ug}var Rg,zw;function Uw(){if(zw)return Rg;zw=1;var t=function(){var e=this;e.tracks=[],e.totalDuration=0,e.currentInstrument=[],e.starts=[],e.addTrack=function(){return e.tracks.push([]),e.currentInstrument.push(0),e.starts.push(0),e.tracks.length-1},e.setInstrument=function(a,n){e.tracks[a].push({channel:0,cmd:"program",instrument:n}),e.currentInstrument[a]=n},e.appendNote=function(a,n,s,r,o){var l={cmd:"note",duration:s,gap:0,instrument:e.currentInstrument[a],pitch:n,start:e.starts[a],volume:r};o&&(l.cents=o),e.tracks[a].push(l),e.starts[a]+=s,e.totalDuration=Math.max(e.totalDuration,e.starts[a])}};return Rg=t,Rg}var jg,Bw;function iM(){if(Bw)return jg;Bw=1;var t=` +`),l.font.box&&(s||a.paper.openGroup({klass:l.attr.class,fill:a.foregroundColor,"data-name":n.name}),l.attr["text-anchor"]==="end"?l.attr.x-=l.font.padding:l.attr["text-anchor"]==="start"&&(l.attr.x+=l.font.padding),l.attr.y+=l.font.padding,delete l.attr.class),n.noClass&&delete l.attr.class,l.attr.x=t(l.attr.x),l.attr.y=t(l.attr.y),n.name&&(l.attr["data-name"]=n.name);var p=a.paper.text(u,l.attr);if(l.font.box){var g=p.getBBox(),h=0;l.attr["text-anchor"]==="middle"?h=g.width/2+l.font.padding:l.attr["text-anchor"]==="end"&&(h=g.width+l.font.padding*2);var f=0;n.centerVertically&&(f=g.height-l.font.padding),a.paper.rect({"data-name":"box",x:Math.round(n.x-h),y:Math.round(r-f),width:Math.round(g.width+l.font.padding*2),height:Math.round(g.height+l.font.padding*2)}),s||(p=a.paper.closeGroup())}return p}return N0=e,N0}var O0,L2;function O9(){if(L2)return O0;L2=1;var t=Mo(),e=Vn(),a=Kr();function n(u,p,g){var h=p.startVoice.staff.absoluteY-e.STEP*10;return p.endVoice&&p.endVoice.staff?p.endY=p.endVoice.staff.absoluteY-e.STEP*2:p.lastContinuedVoice&&p.lastContinuedVoice.staff?p.endY=p.lastContinuedVoice.staff.absoluteY-e.STEP*2:p.endY=p.startVoice.staff.absoluteY-e.STEP*2,l(u,p.x,h,p.endY,p.type,p.header,g)}function s(u,p,g,h,f){p+=e.STEP;var m=e.STEP*.75,d=e.STEP*.75,c=h-g,_=t("M %f %f l %f %f l %f %f l %f %f z",p,g-d,0,c+d*2,m,0,0,-(c+d*2)),b=e.STEP*2,v=e.STEP;return _+=t("M %f %f q %f %f %f %f q %f %f %f %f z",p+m,g-d,b*.6,v*.2,b,-v,-b*.1,v*.3,-b,v+e.STEP),_+=t("M %f %f q %f %f %f %f q %f %f %f %f z",p+m,g+d+c,b*.6,-v*.2,b,v,-b*.1,-v*.3,-b,-v-e.STEP),u.paper.path({path:_,stroke:u.foregroundColor,fill:u.foregroundColor,class:u.controller.classes.generate(f),"data-name":f})}function r(u,p,g,h,f){var m=h-g,d=o(p,g,[7.5,-8,21,0,18.5,-10.5,7.5],[0,m/5.5,m/3.14,m/2,m/2.93,m/4.88,0]);return d+=o(p,g,[0,17.5,-7.5,6.6,-5,20,0],[m/2,m/1.46,m/1.22,m,m/1.19,m/1.42,m/2]),u.paper.path({path:d,stroke:u.foregroundColor,fill:u.foregroundColor,class:u.controller.classes.generate(f),"data-name":f})}function o(u,p,g,h){return t("M %f %f C %f %f %f %f %f %f C %f %f %f %f %f %f z",u+g[0],p+h[0],u+g[1],p+h[1],u+g[2],p+h[2],u+g[3],p+h[3],u+g[4],p+h[4],u+g[5],p+h[5],u+g[6],p+h[6])}var l=function(u,p,g,h,f,m,d){var c;if(m){u.paper.openGroup({klass:u.controller.classes.generate("staff-extra voice-name"),"data-name":f});var _=g+(h-g)/2;_=_-u.controller.getTextSize.baselineToCenter(m,"voicefont","staff-extra voice-name",0,1),a(u,{x:u.padding.left,y:_,text:m,type:"voicefont",klass:"staff-extra voice-name",anchor:"start",centerVertically:!0})}return f==="brace"?c=r(u,p,g,h,f):f==="bracket"&&(c=s(u,p,g,h,f)),m&&(c=u.paper.closeGroup()),d.wrapSvgEl({el_type:f,startChar:-1,endChar:-1},c),c};return O0=n,O0}var I0,D2;function zc(){if(D2)return I0;D2=1;function t(e,a,n){var s=e.paper.path(a);return s}return I0=t,I0}var L0,V2;function I9(){if(V2)return L0;V2=1;var t=Mo(),e=zc(),a=nr();function n(c,_,b){(!_.anchor1||!_.anchor2||!_.anchor1.heads||!_.anchor2.heads||_.anchor1.heads.length===0||_.anchor2.heads.length===0)&&window.console.error("Glissando Element not set.");var v=4,k=c.calcY(_.anchor1.heads[0].pitch),y=c.calcY(_.anchor2.heads[0].pitch),T=_.anchor1.x+_.anchor1.w/2,O=_.anchor2.x+_.anchor2.w/2,j=s(T,k,O,y),$=_.anchor1.w/2+v,P=_.anchor2.w/2+v,L=r(T,k,O,y),x=o(k,L,$);o(y,L,-P);var B=l(j-$-P),D=d(c,T+$,x,B,L);return b.wrapSvgEl({el_type:"glissando",startChar:-1,endChar:-1},D),[D]}function s(c,_,b,v){var k=b-c,y=v-_;return Math.sqrt(k*k+y*y)}function r(c,_,b,v){return(v-_)/(b-c)}function o(c,_,b){return a(c+b*_)}function l(c){var _=5;return Math.max(2,Math.floor((c-_*2)/6))}var u=[[3.5,-4.8]],p=[[1.5,-1],[.3,-.3],[-3.5,3.8]],g=[[-1.5,2]],h=[[3,4],[3,-4]],f=[[-3,4],[-3,-4]];function m(c,_){for(var b="",v=0;v1&&u.indexOf(".")<0){var f=a.isInGroup()?"":p.klass;r.paper.openGroup({"data-name":p.name,klass:f});for(var m=0,d=0;d0?l.linewidth+o.lineThickness:l.linewidth-o.lineThickness;l.graphelem=e(o,l.x,d,p,o.calcY(l.pitch2),"abcjs-stem","stem");break;case"ledger":l.graphelem=a(o,l.x,l.x+l.w,l.pitch,"abcjs-ledger","ledger",.35+o.lineThickness);break}return l.scalex!==1&&l.graphelem&&r(o.paper,l.graphelem,l.scalex,l.scaley,l.x,p),l.graphelem}function r(o,l,u,p,g,h){o.setAttributeOnElement(l,{style:"transform:scale("+u+","+p+");transform-origin:"+g+"px "+h+"px;"})}return ng=s,ng}var sg,rw;function Y9(){if(rw)return sg;rw=1;var t=sw(),e=Kr();function a(n,s){var r=s.x;s.pitch===void 0&&window.console.error("Tempo Element y-coordinate not set."),s.tempo.el_type="tempo";var o=n.calcY(s.pitch)+2,l,u;if(s.tempo.preString){l=e(n,{x:r,y:o,text:s.tempo.preString,type:"tempofont",klass:"abcjs-tempo",anchor:"start",noClass:!0,name:"pre"},!0),u=n.controller.getTextSize.calc(s.tempo.preString,"tempofont","tempo",l);var p=u.width,g=p/s.tempo.preString.length;r+=p+g}if(s.note){s.note.setX(r);for(var h=0;h0&&l.children[0].type==="TempoElement";l.elemset=[],s.beginGroup(o.paper,o.controller);for(var f=0;f=0&&d.setAttribute("class","abcjs-notehead"),d&&m.chordPos&&m.name.indexOf("flags.")!==0){var c=d.getAttribute("class");c?c=c+" abcjs-chord-pos-"+m.chordPos:c="abcjs-chord-pos-"+m.chordPos,d.setAttribute("class",c)}}}var c=l.type;if((l.type==="note"||l.type==="rest")&&(l.counters=o.controller.classes.getCurrent(),c+=" d"+Math.round(l.durationClass*1e3)/1e3,c=c.replace(/\./g,"-"),l.abcelem.pitches))for(var _=0;_0?b.classList[0]+" ":"";b.setAttribute("class",v+l.overrideClasses)}if(h)l.startChar=l.abcelem.startChar,l.endChar=l.abcelem.endChar,p.add(l,b,!1,g);else{l.elemset.push(b);var k=!1;(l.type==="note"||l.type==="tabNumber")&&(k=!0),p.add(l,b,k,g)}}else l.elemset.length>0&&p.add(l,l.elemset[0],l.type==="note",g);if(l.klass&&n(l.elemset,"mark","","#00ff00"),l.hint&&n(l.elemset,"abcjs-hint","",null),l.abcelem.abselem=l,l.heads&&l.heads.length>0){l.notePositions=[];for(var y=0;y=0;f--){var m=(f+1)*p;h=a.calcY(m),g===0&&(g=h),t(a,n,s,m,u,null,l+a.lineThickness),u=void 0}return a.paper.closeGroup(),[g,h]}return lg=e,lg}var cg,dw;function eM(){if(dw)return cg;dw=1;function t(e,a,n){var s=e.paper.rectBeneath(a);return n&&e.paper.text(n,{x:0,y:a.y+7,"text-anchor":"start","font-size":"14px",fill:"rgba(0,0,255,.4)",stroke:"rgba(0,0,255,.4)"}),s}return cg=t,cg}var dg,uw;function tM(){if(uw)return dg;uw=1;function t(e,a){var n="rgba(0,0,0,255)",s="rgba(0,0,0,0)",r=Math.round(e.y),o=e.controller.width,l=(o-a)/2,u=l+a,p="M "+l+" "+r+" L "+u+" "+r+" L "+u+" "+(r+1)+" L "+l+" "+(r+1)+" L "+l+" "+r+" z";e.paper.pathToBack({path:p,stroke:s,fill:n,class:e.controller.classes.generate("defined-text")})}return dg=t,dg}var ug,fw;function mw(){if(fw)return ug;fw=1;var t=tM(),e=Kr();function a(n,s,r){for(var o=0;o=0&&b.voices&&p(g,h.voices,b.voices),g.showDebug.indexOf("grid")>=0&&(g.paper.dottedLine({x1:g.padding.left,x2:g.padding.left+g.controller.width,y1:c,y2:c,stroke:"#0000ff"}),s(g,{x:g.padding.left,y:g.calcY(b.originalTop),width:g.controller.width,height:g.calcY(b.originalBottom)-g.calcY(b.originalTop),fill:g.foregroundColor,stroke:g.foregroundColor,"fill-opacity":.1,"stroke-opacity":.1}),d=0,A(b,"chordHeightAbove"),A(b,"chordHeightBelow"),A(b,"dynamicHeightAbove"),A(b,"dynamicHeightBelow"),A(b,"endingHeightAbove"),A(b,"lyricHeightAbove"),A(b,"lyricHeightBelow"),A(b,"partHeightAbove"),A(b,"tempoHeightAbove"),A(b,"volumeHeightAbove"),A(b,"volumeHeightBelow"))),g.moveY(t.STEP,-b.bottom),g.showDebug&&g.showDebug.indexOf("grid")>=0&&g.paper.dottedLine({x1:g.padding.left,x2:g.padding.left+g.controller.width,y1:g.y,y2:g.y,stroke:"#0000aa"})}for(var v,k,y=2,T=0,O=0;O1&&(v=h.staffs[0].topLine,k=h.staffs[D-1].bottomLine,r(g,h.startx,.6,v,k,null)),g.y=c;function A(G,U){var V=["rgb(207,27,36)","rgb(168,214,80)","rgb(110,161,224)","rgb(191,119,218)","rgb(195,30,151)","rgb(31,170,177)","rgb(220,166,142)"];if(G.positionY&&G.positionY[U]){var I=G.specialY[U]*t.STEP;U==="chordHeightAbove"&&G.specialY.chordLines&&G.specialY.chordLines.above&&(I*=G.specialY.chordLines.above),U==="chordHeightBelow"&&G.specialY.chordLines&&G.specialY.chordLines.below&&(I*=G.specialY.chordLines.below),s(g,{x:g.padding.left,y:g.calcY(G.positionY[U]),width:g.controller.width,height:I,fill:V[d],stroke:V[d],"fill-opacity":.4,"stroke-opacity":.4},U.substr(0,4)),d+=1,d>6&&(d=0)}}}function u(g,h,f,m,d){if(f)for(var c=0;c=0},a.prototype.wrapSvgEl=function(n,s){var r={tuneNumber:this.tuneNumber,abcelem:n,elemset:[s],highlight:t,unhighlight:e};this.add(r,s,!1)},pg=a,pg}var gg,_w;function sM(){if(_w)return gg;_w=1;const t=Q0(),e=tg();function a(v,k,y,T,O){const j=O.gchordfont;O.partsfont;const $=O.annotationfont,P=O.repeatfont,L=O.textfont,x=O.subtitlefont,B=50,D=10,A=14,G=10,U=20,V=16;v.paper.openGroup({klass:"abcjs-chord-grid"}),k.forEach(I=>{switch(I.type){case"text":b(v,I.text,y,v.y,16,L,null,null,!1),v.moveY(V);break;case"subtitle":b(v,I.subtitle,y,v.y+G,20,x,null,"abcjs-subtitle",!1),v.moveY(U);break;case"part":if(I.lines.length>0){b(v,I.name,y,v.y+G,20,x,I.name,"abcjs-part",!1),v.moveY(U);const w=I.lines[0].length,S=T/w;I.lines.forEach((C,H)=>{let Y=!1,ee=!1;C.forEach(z=>{z.ending&&(Y=!0),z.annotations&&z.annotations.length>0&&(ee=!0)});const W=ee?A:Y?D:0;C.forEach((z,be)=>{if(!z.noBorder){v.paper.rect({x:y+be*S,y:v.y,width:S,height:W+B}),v.paper.rect({x:y+be*S+1,y:v.y+1,width:S-2,height:W+B-2});let ge=0,ie=0;const _e=v.y,le=y+S*be;z.hasStartRepeat&&(s(v,le,_e,_e+B+W,!0,W),ge=12),z.hasEndRepeat&&(s(v,le+S,_e,_e+B+W,!1,W),ie=12);let Ee=0;z.ending&&(Ee=b(v,z.ending,y+be*S+4,_e+10,12,P,null,null,!1).getBBox().width+4),l(v,_e,y+ge,S,H,be,z.chord,j,ge+ie,B,W),z.annotations&&z.annotations.length>0&&o(v,_e,y+be*S+Ee,z.annotations,$),W&&v.paper.rectBeneath({x:y+be*S,y:v.y,width:S,height:W,fill:"#e8e8e8",stroke:"none"})}}),v.moveY(W+B)}),v.moveY(U)}break}}),v.paper.closeGroup()}function n(v,k,y,T){var O=k-10,j=k+10,$=y+10,P=y-10,L=k-10,x=-v.yToPitch(T)+2,B=k+6.5,D=-v.yToPitch(T)-2.3;v.paper.lineToBack({x1:O,x2:j,y1:$,y2:P,"stroke-width":"3px","stroke-linecap":"round"}),t(v,L,x,"dots.dot",{scalex:1,scaley:1,klass:"",name:"dot"}),t(v,B,D,"dots.dot",{scalex:1,scaley:1,klass:"",name:"dot"})}function s(v,k,y,T,O,j){const $=O?k+2:k-4,P=O?k+9:k-11;v.paper.openGroup({klass:"abcjs-repeat"}),e(v,$,3+v.lineThickness,y,T,null,"bar"),t(v,P,-v.yToPitch(j)-4,"dots.dot",{scalex:1,scaley:1,klass:"",name:"dot"}),t(v,P,-v.yToPitch(j)-8,"dots.dot",{scalex:1,scaley:1,klass:"",name:"dot"}),v.paper.closeGroup()}const r={segno:"scripts.segno",coda:"scripts.coda",fermata:"scripts.ufermata"};function o(v,k,y,T,O){y+=3;let j;for(let $=0;$$&&x>=14;)x-=2,P.setAttribute("font-size",x),L=P.getBBox()}const p=34,g=26,h=20,f=-3;function m(v,k,y,T,O,j,$,P){j==="%"?n(v,k+T/2,y+O/2,P+O/2):u(v,k+T/2,y+O/2+f,p,j,$,T)}function d(v,k,y,T,O,j,$,P,L){v.paper.lineToBack({x1:k,x2:k+T,y1:y+O+L,y2:y+2}),u(v,k+T/4,y+O/4+5+L+f,g,j,P,T/2),u(v,k+3*T/4,y+3*O/4+L+f,g,$,P,T/2)}function c(v,k,y,T,O,j,$,P){v.paper.lineToBack({x1:k+3,x2:k+T-3,y1:y+O/2+P,y2:y+O/2+P}),v.paper.lineToBack({x1:k+T/2,x2:k+T/2,y1:y+3+P,y2:y+O-3+P}),j[0]&&u(v,k+T/4,y+O/4+2+P+f,h,_(j[0]),$,T/2),j[1]&&u(v,k+3*T/4,y+O/4+2+P+f,h,_(j[1]),$,T/2),j[2]&&u(v,k+T/4,y+3*O/4+P+f,h,_(j[2]),$,T/2),j[3]&&u(v,k+3*T/4,y+3*O/4+P+f,h,_(j[3]),$,T/2)}function _(v){return v==="No Chord"?"N.C.":v}function b(v,k,y,T,O,j,$,P,L){const x={x:y,y:T,stroke:"none","font-size":O,"font-style":j.style,"font-family":j.face,"font-weight":j.weight,"text-decoration":j.decoration};return $&&(x["data-name"]=$),P&&(x.class=P),x["text-anchor"]=L?"middle":"start",v.paper.text(k,x,null,{"alignment-baseline":"middle"})}return gg=a,gg}var hg,vw;function rM(){if(vw)return hg;vw=1;var t=iM(),e=aM(),a=mw(),n=Vn(),s=nM(),r=sM();function o(p,g,h,f,m,d,c,_,b,v,k){var y=new s(p.paper,_,b),T={};g.shouldAddClasses&&(T.klass="abcjs-meta-top"),p.paper.openGroup(T),p.moveY(p.padding.top),a(p,h.topText,y),p.paper.closeGroup(),p.moveY(p.spacing.music);let O=!1;k&&h.chordGrid&&(r(p,h.chordGrid,p.padding.left,f,h.formatting),k==="noMusic"&&(O=!0));var j=[],$=0;if(!O)for(var P=0;Ph.formatting.maxStaves)break;g.shouldAddClasses&&(T.klass="abcjs-staff-wrapper abcjs-l"+g.lineNumber),p.paper.openGroup(T),L.vskip&&p.moveY(L.vskip),j.length>=1?u(p,p.spacing.staffSeparation,j[j.length-1],L.staffGroup):P>0&&p.moveY(p.spacing.staffSeparation);var x=l(p,L.staffGroup,y,P);x.line=v+P,j.push(x),p.paper.closeGroup()}else L.nonMusic&&(g.shouldAddClasses&&(T.klass="abcjs-non-music"),p.paper.openGroup(T),a(p,L.nonMusic,y),p.paper.closeGroup())}return g.reset(),O||h.bottomText&&h.bottomText.rows&&h.bottomText.rows.length>0&&(g.shouldAddClasses&&(T.klass="abcjs-meta-bottom"),p.paper.openGroup(T),p.moveY(24),a(p,h.bottomText,y),p.paper.closeGroup()),e(p,m,c,d),{staffgroups:j,selectables:y.getElements()}}function l(p,g,h,f){t(p,g,h,f);var m=g.height*n.STEP;return p.moveY(m),g}function u(p,g,h,f){var m=h.staffs[h.staffs.length-1],d=-(m.bottom-2),c=f.staffs[0].top-10,_=c+d,b=_*n.STEP;b=0&&s.1||(this.scale=void 0),y.staffwidth?(this.staffwidthScreen=y.staffwidth,this.staffwidthPrint=y.staffwidth):(this.staffwidthScreen=740,this.staffwidthPrint=680),this.listeners=[],y.clickListener&&this.addSelectListener(y.clickListener),this.renderer=new a(k),this.renderer.setPaddingOverride(y),y.showDebug&&(this.renderer.showDebug=y.showDebug),y.jazzchords&&(this.jazzchords=y.jazzchords),y.accentAbove&&(this.accentAbove=y.accentAbove),y.germanAlphabet&&(this.germanAlphabet=y.germanAlphabet),y.lineThickness&&(this.lineThickness=y.lineThickness),y.chordGrid&&(this.chordGrid=y.chordGrid),this.renderer.controller=this,this.renderer.foregroundColor=y.foregroundColor?y.foregroundColor:"currentColor",y.ariaLabel!==void 0&&(this.renderer.ariaLabel=y.ariaLabel),this.renderer.minPadding=y.minPadding?y.minPadding:0,this.reset()};_.prototype.reset=function(){this.selected=[],this.staffgroups=[],this.engraver&&this.engraver.reset(),this.engraver=null,this.renderer.reset(),this.dragTarget=null,this.dragIndex=-1,this.dragMouseStart={x:-1,y:-1},this.dragYStep=0,this.lineThickness&&this.renderer.setLineThickness(this.lineThickness)},_.prototype.engraveABC=function(k,y,T){k[0]===void 0&&(k=[k]),this.reset();for(var O=0;O0)for(var L=P.staffGroup.voices[0],x=!1,B=0,D=0;Dthis.width+1&&(k.topText=new o(k.metaText,k.metaTextInfo,k.formatting,k.lines,$,this.renderer.isPrint,this.renderer.padding.left,this.renderer.spacing,this.classes.shouldAddClasses,this.getTextSize),k.lines&&k.lines.length>0))for(var P=k.lines.length,L=0;L0)for(var B=x.nonMusic.rows.length,D=0;D0&&x.text[0].center&&(A.left=$/2+this.renderer.padding.left))}}k.tablatures&&d.layoutTablatures(this.renderer,k);var G=m(this.renderer,this.classes,k,this.width,$,this.responsive,j,this.selectTypes,y,T,this.chordGrid);if(this.staffgroups=G.staffgroups,this.selectables=G.selectables,this.oneSvgPerLine){var U=this.renderer.paper.svg.parentNode;this.svgs=b(this.renderer,U,k.metaText.title,this.responsive,j)}else this.svgs=[this.renderer.paper.svg];u(this,this.svgs),this.jazzchords=O};function b(k,y,T,O,j){T||(T="Untitled");var $=y.querySelector("svg");O==="resize"&&(y.style.paddingBottom="");for(var P=$.querySelector("style"),L=O==="resize"?$.viewBox.baseVal.width:$.getAttribute("width"),x=y.querySelectorAll("svg > g"),B=0,D=[],A=0;A',p.style.overflowX="hidden",p.style.overflowY="auto",p=p.children[0]):p.innerHTML="";var d=new e(p,h);if(d.engraveABC(g,f,m),g.engraver=d,h.viewportVertical||h.viewportHorizontal){var c=p.parentNode;c.style.width=p.style.width}}var l=function(p,g,h,f,m){var d={},c;if(h){for(c in h)h.hasOwnProperty(c)&&(d[c]=h[c]);d.warnings_id&&d.tablature&&(d.tablature.warning_id=d.warnings_id)}if(f)for(c in f)f.hasOwnProperty(c)&&(c==="listener"?f[c].highlight&&(d.clickListener=f[c].highlight):d[c]=f[c]);if(m)for(c in m)m.hasOwnProperty(c)&&(d[c]=m[c]);function _(b,v,k,y){var T=!1;return b==="*"&&(T=!0,b=document.createElement("div"),b.setAttribute("style","visibility: hidden;"),document.body.appendChild(b)),!T&&d.wrap&&d.staffwidth?(v=u(b,v,k,y,d),v):(d.afterParsing&&d.afterParsing(v,k,y),o(b,v,d,k,0),T&&b.parentNode.removeChild(b),null)}return t.renderEngine(_,p,g,d)};function u(p,g,h,f,m){var d=new e(p,m),c=d.getMeasureWidths(g),_=n.calcLineWraps(g,c,m);if(_.reParse){var b=new a;b.parse(f,_.revisedParams),g=b.getTune();var v=b.getWarnings();v&&(g.warnings=v)}return m.afterParsing&&m.afterParsing(g,h,f),o(p,g,_.revisedParams,h,0),g.explanation=_.explanation,g}return yg=l,yg}var wg,xw;function lM(){if(xw)return wg;xw=1;var t=mu(),e=bg(),a=function(n,s){function r(o,l,u,p){o=document.createElement("div"),o.setAttribute("style","visibility: hidden;"),document.body.appendChild(o);var g=new e(o,s),h=g.getMeasureWidths(l);return o.parentNode.removeChild(o),{sections:h}}return t.renderEngine(r,"*",n,s)};return wg=a,wg}var kg,Sw;function xg(){if(Sw)return kg;Sw=1;var t={};return kg=t,kg}var Sg,Tw;function cM(){if(Tw)return Sg;Tw=1;var t=xg(),e=function(a,n,s,r){t[n]||(t[n]={});var o=t[n];return o[s]||(o[s]=new Promise(function(l,u){var p=new XMLHttpRequest;let g=a+n+"-mp3/"+s+".mp3";p.open("GET",g,!0),p.responseType="arraybuffer",p.onload=function(){if(p.status!==200){u(Error("Can't load sound at "+g+" status="+p.status));return}var h=function(m){l({instrument:n,name:s,status:"loaded",audioBuffer:m})},f=r.decodeAudioData(p.response,h,function(){u(Error("Can't decode sound at "+g))});f&&typeof f.catch=="function"&&f.catch(u)},p.onerror=function(){u(Error("Can't load sound at "+g))},p.send()}).catch(l=>{throw console.error("Didn't load note",n,s,":",l.message),l})),o[s]};return Sg=e,Sg}var Tg,$w;function $g(){if($w)return Tg;$w=1;var t=["acoustic_grand_piano","bright_acoustic_piano","electric_grand_piano","honkytonk_piano","electric_piano_1","electric_piano_2","harpsichord","clavinet","celesta","glockenspiel","music_box","vibraphone","marimba","xylophone","tubular_bells","dulcimer","drawbar_organ","percussive_organ","rock_organ","church_organ","reed_organ","accordion","harmonica","tango_accordion","acoustic_guitar_nylon","acoustic_guitar_steel","electric_guitar_jazz","electric_guitar_clean","electric_guitar_muted","overdriven_guitar","distortion_guitar","guitar_harmonics","acoustic_bass","electric_bass_finger","electric_bass_pick","fretless_bass","slap_bass_1","slap_bass_2","synth_bass_1","synth_bass_2","violin","viola","cello","contrabass","tremolo_strings","pizzicato_strings","orchestral_harp","timpani","string_ensemble_1","string_ensemble_2","synth_strings_1","synth_strings_2","choir_aahs","voice_oohs","synth_choir","orchestra_hit","trumpet","trombone","tuba","muted_trumpet","french_horn","brass_section","synth_brass_1","synth_brass_2","soprano_sax","alto_sax","tenor_sax","baritone_sax","oboe","english_horn","bassoon","clarinet","piccolo","flute","recorder","pan_flute","blown_bottle","shakuhachi","whistle","ocarina","lead_1_square","lead_2_sawtooth","lead_3_calliope","lead_4_chiff","lead_5_charang","lead_6_voice","lead_7_fifths","lead_8_bass_lead","pad_1_new_age","pad_2_warm","pad_3_polysynth","pad_4_choir","pad_5_bowed","pad_6_metallic","pad_7_halo","pad_8_sweep","fx_1_rain","fx_2_soundtrack","fx_3_crystal","fx_4_atmosphere","fx_5_brightness","fx_6_goblins","fx_7_echoes","fx_8_scifi","sitar","banjo","shamisen","koto","kalimba","bagpipe","fiddle","shanai","tinkle_bell","agogo","steel_drums","woodblock","taiko_drum","melodic_tom","synth_drum","reverse_cymbal","guitar_fret_noise","breath_noise","seashore","bird_tweet","telephone_ring","helicopter","applause","gunshot","percussion"];return Tg=t,Tg}var qg,qw;function dM(){if(qw)return qg;qw=1;var t=$g(),e=function(a){for(var n=[],s=0;s0){var g=u.gap?u.gap:0,h=u.duration;g=Math.min(g,h*2/3);var f={pitch:u.pitch,instrument:p,start:Math.round(u.start*1e6)/1e6,end:Math.round((u.start+h-g)*1e6)/1e6,volume:u.volume};u.startChar&&(f.startChar=u.startChar),u.endChar&&(f.endChar=u.endChar),u.style&&(f.style=u.style),u.cents&&(f.cents=u.cents),n[l].push(f)}break;case"program":r=t[u.instrument];break;case"text":break;default:console.log("Unhandled midi event",u)}})}),n};return qg=e,qg}var Gg,Gw;function pu(){if(Gw)return Gg;Gw=1;function t(e){if(e)window.abcjsAudioContext=e;else if(!window.abcjsAudioContext){var a=window.AudioContext||window.webkitAudioContext;if(a)window.abcjsAudioContext=new a;else return!1}return window.abcjsAudioContext.state!=="suspended"}return Gg=t,Gg}var Fg,Fw;function wl(){if(Fw)return Fg;Fw=1;var t=pu();function e(){return window.abcjsAudioContext||t(),window.abcjsAudioContext}return Fg=e,Fg}var Ag,Aw;function gu(){if(Aw)return Ag;Aw=1;var t=wl();function e(){if(!window.Promise||!window.AudioContext&&!window.webkitAudioContext&&!navigator.mozAudioContext&&!navigator.msAudioContext)return!1;var a=t();if(a)return a.resume!==void 0}return Ag=e,Ag}var Cg,Cw;function Mg(){if(Cw)return Cg;Cw=1;var t={21:"A0",22:"Bb0",23:"B0",24:"C1",25:"Db1",26:"D1",27:"Eb1",28:"E1",29:"F1",30:"Gb1",31:"G1",32:"Ab1",33:"A1",34:"Bb1",35:"B1",36:"C2",37:"Db2",38:"D2",39:"Eb2",40:"E2",41:"F2",42:"Gb2",43:"G2",44:"Ab2",45:"A2",46:"Bb2",47:"B2",48:"C3",49:"Db3",50:"D3",51:"Eb3",52:"E3",53:"F3",54:"Gb3",55:"G3",56:"Ab3",57:"A3",58:"Bb3",59:"B3",60:"C4",61:"Db4",62:"D4",63:"Eb4",64:"E4",65:"F4",66:"Gb4",67:"G4",68:"Ab4",69:"A4",70:"Bb4",71:"B4",72:"C5",73:"Db5",74:"D5",75:"Eb5",76:"E5",77:"F5",78:"Gb5",79:"G5",80:"Ab5",81:"A5",82:"Bb5",83:"B5",84:"C6",85:"Db6",86:"D6",87:"Eb6",88:"E6",89:"F6",90:"Gb6",91:"G6",92:"Ab6",93:"A6",94:"Bb6",95:"B6",96:"C7",97:"Db7",98:"D7",99:"Eb7",100:"E7",101:"F7",102:"Gb7",103:"G7",104:"Ab7",105:"A7",106:"Bb7",107:"B7",108:"C8",109:"Db8",110:"D8",111:"Eb8",112:"E8",113:"F8",114:"Gb8",115:"G8",116:"Ab8",117:"A8",118:"Bb8",119:"B8",120:"C9",121:"Db9"};return Cg=t,Cg}var Eg,Mw;function uM(){if(Mw)return Eg;Mw=1;var t=function(a){return window.URL.createObjectURL(e(a.audioBuffers))};function e(a){var n=a[0],s=n.numberOfChannels,r=n.length*s*2+44,o=new ArrayBuffer(r),l=new DataView(o),u=[],p,g,h=0,f=0;for(d(1179011410),d(r-8),d(1163280727),d(544501094),d(16),m(1),m(s),d(n.sampleRate),d(n.sampleRate*2*s),m(s*2),m(16),d(1635017060),d(r-f-4),p=0;p0){if(c.debugCallback&&c.debugCallback("pending "+JSON.stringify(L)),T?T=T*2:T=50,T<9e4)return new Promise(function(V,I){setTimeout(function(){var w=[];for(B=0;B0?w.audioBuffers[0].duration:0;return{status:n().state,duration:S}};var T=n().currentTime,O=c.millisecondsPerMeasure/1e3/c.meterSize;if(c.duration=c.flattened.totalDuration*O,c.duration<=0)return c.audioBuffers=[],k({status:"empty",seconds:0});c.duration+=v;var j=Math.floor(n().sampleRate*c.duration);c.stop();var $=e(c.flattened);if(c.options.swing){var P=c.options.drumIntro?0:c.pickupLength;b($,c.options.swing,c.meterFraction,P)}c.sequenceCallback&&c.sequenceCallback($,c.callbackContext);var L=_($.length,c.pan),x={};$.forEach(function(w,S){var C=L&&L.length>S?L[S]:0;w.forEach(function(H){var Y=H.instrument+":"+H.pitch+":"+H.volume+":"+Math.round((H.end-H.start)*1e3)/1e3+":"+C+":"+O+":"+(H.cents?H.cents:0);c.debugCallback&&c.debugCallback("noteMapTrack "+Y),x[Y]||(x[Y]=[]),x[Y].push(H.start)})});for(var B=[],D=n().createBuffer(2,j,n().sampleRate),A=0;A1&&(O=1),y.push(O)}else y.push(0);return y}else{var j=parseFloat(k);if(j*(v-1)>2)return null;for(var $=v%2===0,P=$?0-j/2:0,L=P+j,x=0;x75&&(k=75),k=k/50-1;var O=0,j=.25;y.den===8&&(j=j/2);for(var $=j/2,P=$*k,L=0;L=x[B].start+$)){var A=D.start;D.start+=P,D.volume*=1+O,B>0&&x[B-1].end===A&&(x[B-1].end=D.start,x[B-1].volume*=1-O)}}}}}return Bg=d,Bg}var jg,Rw;function jw(){if(Rw)return jg;Rw=1;var t=function(){var e=this;e.tracks=[],e.totalDuration=0,e.currentInstrument=[],e.starts=[],e.addTrack=function(){return e.tracks.push([]),e.currentInstrument.push(0),e.starts.push(0),e.tracks.length-1},e.setInstrument=function(a,n){e.tracks[a].push({channel:0,cmd:"program",instrument:n}),e.currentInstrument[a]=n},e.appendNote=function(a,n,s,r,o){var l={cmd:"note",duration:s,gap:0,instrument:e.currentInstrument[a],pitch:n,start:e.starts[a],volume:r};o&&(l.cents=o),e.tracks[a].push(l),e.starts[a]+=s,e.totalDuration=Math.max(e.totalDuration,e.starts[a])}};return jg=t,jg}var Pg,Pw;function mM(){if(Pw)return Pg;Pw=1;var t=` -`;return jg=t,jg}var Pg,Rw;function aM(){if(Rw)return Pg;Rw=1;var t=` +`;return Pg=t,Pg}var Ng,Nw;function pM(){if(Nw)return Ng;Nw=1;var t=` -`;return Pg=t,Pg}var Ng,jw;function nM(){if(jw)return Ng;jw=1;var t=` +`;return Ng=t,Ng}var Og,Ow;function gM(){if(Ow)return Og;Ow=1;var t=` -`;return Ng=t,Ng}var Og,Pw;function sM(){if(Pw)return Og;Pw=1;var t=` +`;return Og=t,Og}var Ig,Iw;function hM(){if(Iw)return Ig;Iw=1;var t=` -`;return Og=t,Og}var Ig,Nw;function rM(){if(Nw)return Ig;Nw=1;var t=` +`;return Ig=t,Ig}var Lg,Lw;function _M(){if(Lw)return Lg;Lw=1;var t=` -`;return Ig=t,Ig}var Lg,Ow;function Iw(){if(Ow)return Lg;Ow=1;var t=lu(),e=ou(),a=yl(),n=iM(),s=aM(),r=nM(),o=sM(),l=rM();function u(f,d){var c=this;if(typeof f=="string"){var _=f;if(f=document.querySelector(_),!f)throw new Error('Cannot find element "'+_+'" in the DOM.')}else if(!(f instanceof HTMLElement))throw new Error("The first parameter must be a valid element or selector in the DOM.");if(c.parent=f,c.options={},d&&(c.options=Object.assign({},d)),c.options.ac&&e(c.options.ac),p(c.parent,c.options),m(c),c.disable=function(v){var w=c.parent.querySelector(".abcjs-inline-audio");v?w.classList.add("abcjs-disabled"):w.classList.remove("abcjs-disabled")},c.setWarp=function(v,w){var y=c.parent.querySelector(".abcjs-midi-tempo");y.value=Math.round(w),c.setTempo(v)},c.setTempo=function(v){var w=c.parent.querySelector(".abcjs-midi-current-tempo");w&&(w.innerHTML=Math.round(v))},c.resetAll=function(){for(var v=c.parent.querySelectorAll(".abcjs-pushed"),w=0;w -`;if(c){var O=d.repeatTitle?d.repeatTitle:"Click to toggle play once/repeat.",R=d.repeatAria?d.repeatAria:O;T+=' +`;return Lg=t,Lg}var Dg,Dw;function Vw(){if(Dw)return Dg;Dw=1;var t=gu(),e=pu(),a=wl(),n=mM(),s=pM(),r=gM(),o=hM(),l=_M();function u(m,d){var c=this;if(typeof m=="string"){var _=m;if(m=document.querySelector(_),!m)throw new Error('Cannot find element "'+_+'" in the DOM.')}else if(!(m instanceof HTMLElement))throw new Error("The first parameter must be a valid element or selector in the DOM.");if(c.parent=m,c.options={},d&&(c.options=Object.assign({},d)),c.options.ac&&e(c.options.ac),p(c.parent,c.options),f(c),c.disable=function(v){var k=c.parent.querySelector(".abcjs-inline-audio");v?k.classList.add("abcjs-disabled"):k.classList.remove("abcjs-disabled")},c.setWarp=function(v,k){var y=c.parent.querySelector(".abcjs-midi-tempo");y.value=Math.round(k),c.setTempo(v)},c.setTempo=function(v){var k=c.parent.querySelector(".abcjs-midi-current-tempo");k&&(k.innerHTML=Math.round(v))},c.resetAll=function(){for(var v=c.parent.querySelectorAll(".abcjs-pushed"),k=0;k +`;if(c){var O=d.repeatTitle?d.repeatTitle:"Click to toggle play once/repeat.",j=d.repeatAria?d.repeatAria:O;T+=' `}if(_){var $=d.restartTitle?d.restartTitle:"Click to go to beginning.",P=d.restartAria?d.restartAria:$;T+=' `}if(b){var L=d.playTitle?d.playTitle:"Click to play/pause.",x=d.playAria?d.playAria:L;T+=' -`}if(v){var U=d.randomTitle?d.randomTitle:"Click to change the playback position.",D=d.randomAria?d.randomAria:U;T+=' +`}if(v){var B=d.randomTitle?d.randomTitle:"Click to change the playback position.",D=d.randomAria?d.randomAria:B;T+=' `}if(y&&(T+=` -`),w){var M=d.warpTitle?d.warpTitle:"Change the playback speed.",G=d.warpAria?d.warpAria:M,B=d.bpm?d.bpm:"BPM";T+=' ( '+B+`) +`),k){var A=d.warpTitle?d.warpTitle:"Change the playback speed.",G=d.warpAria?d.warpAria:A,U=d.bpm?d.bpm:"BPM";T+=' ( '+U+`) `}T+='
            CSS required: load abcjs-audio.css
            ',T+=` -`,f.innerHTML=T}function g(f,d,c,_,b){var v=!0;if(a()?v=a().state==="suspended":e(),!t())throw{status:"NotSupported",message:"This browser does not support audio."};(v||b)&&c&&c.classList.add("abcjs-loading"),v?a().resume().then(function(){_?_().then(function(w){h(f,d,c,b)}):h(f,d,c,b)}):h(f,d,c,b)}function h(f,d,c,_){_?f(d).then(function(){c&&c.classList.remove("abcjs-loading")}):(f(d),c&&c.classList.remove("abcjs-loading"))}function m(f){var d=!!f.options.loopHandler,c=!!f.options.restartHandler,_=!!f.options.playHandler||!!f.options.playPromiseHandler,b=!!f.options.progressHandler,v=!!f.options.warpHandler,w=f.parent.querySelector(".abcjs-midi-start");d&&f.parent.querySelector(".abcjs-midi-loop").addEventListener("click",function(y){g(f.options.loopHandler,y,w,f.options.afterResume)}),c&&f.parent.querySelector(".abcjs-midi-reset").addEventListener("click",function(y){g(f.options.restartHandler,y,w,f.options.afterResume)}),_&&w.addEventListener("click",function(y){g(f.options.playPromiseHandler||f.options.playHandler,y,w,f.options.afterResume,!!f.options.playPromiseHandler)}),b&&f.parent.querySelector(".abcjs-midi-progress-background").addEventListener("click",function(y){g(f.options.progressHandler,y,w,f.options.afterResume)}),v&&f.parent.querySelector(".abcjs-midi-tempo").addEventListener("change",function(y){g(f.options.warpHandler,y,w,f.options.afterResume)})}return Lg=u,Lg}var Dg,Lw;function oM(){if(Lw)return Dg;Lw=1;var t=Uw(),e=Bg(),a=yl();function n(r,o,l,u,p){for(var g=new t,h=0;h=1&&parseInt(r.cursorControl.beatSubdivisions,10)<=64&&(p=parseInt(r.cursorControl.beatSubdivisions,10)),r.timer=new a(r.visualObj,{beatCallback:r.beatCallback,eventCallback:r.eventCallback,lineEndCallback:r.lineEndCallback,qpm:r.currentTempo,extraMeasuresAtBeginning:r.cursorControl?r.cursorControl.extraMeasuresAtBeginning:void 0,lineEndAnticipation:r.cursorControl?r.cursorControl.lineEndAnticipation:0,beatSubdivisions:p}),r.cursorControl&&r.cursorControl.onReady&&typeof r.cursorControl.onReady=="function"&&r.cursorControl.onReady(r),r.isLoaded=!0,r.isLoading=!1,Promise.resolve({status:"created",notesStatus:u})})},r.destroy=function(){r.timer&&(r.timer.reset(),r.timer.stop(),r.timer=null),r.midiBuffer&&(r.midiBuffer.stop(),r.midiBuffer=null),r.setProgress(0,1),r.control&&r.control.resetAll()},r.play=function(){return r.runWhenReady(r._play,void 0)};function o(l){return new Promise(function(u){setTimeout(u,l)})}r.runWhenReady=function(l,u){return r.visualObj?r.isLoading?o(500).then(function(){return r.isLoading?r.runWhenReady(l,u):l(u)}):r.isLoaded?l(u):r.go().then(function(){return l(u)}):Promise.resolve({status:"loading"})},r._play=function(){return n().resume().then(function(){return r.isStarted=!r.isStarted,r.isStarted?(r.cursorControl&&r.cursorControl.onStart&&typeof r.cursorControl.onStart=="function"&&r.cursorControl.onStart(),r.midiBuffer.start(),r.timer.start(r.percent),r.control&&r.control.pushPlay(!0)):r.pause(),Promise.resolve({status:"ok"})})},r.pause=function(){r.timer&&(r.timer.pause(),r.midiBuffer.pause(),r.control&&r.control.pushPlay(!1))},r.toggleLoop=function(){r.isLooping=!r.isLooping,r.control&&r.control.pushLoop(r.isLooping)},r.restart=function(){r.timer&&(r.timer.setProgress(0),r.midiBuffer.seek(0))},r.randomAccess=function(l){return r.runWhenReady(r._randomAccess,l)},r._randomAccess=function(l){var u=l.target.classList.contains("abcjs-midi-progress-indicator")?l.target.parentNode:l.target,p=(l.x-u.getBoundingClientRect().left)/u.offsetWidth;return p<0&&(p=0),p>1&&(p=1),r.seek(p),Promise.resolve({status:"ok"})},r.seek=function(l,u){r.timer&&r.midiBuffer&&(r.timer.setProgress(l,u),r.midiBuffer.seek(l,u))},r.setWarp=function(l){if(parseInt(l,10)>0){r.warp=parseInt(l,10);var u=r.isStarted,p=r.percent;return r.destroy(),r.isStarted=!1,r.go().then(function(){return r.setProgress(p,r.midiBuffer.duration*1e3),r.control&&r.control.setWarp(r.currentTempo,r.warp),u?r.play().then(function(){return r.seek(p),Promise.resolve()}):(r.seek(p),Promise.resolve())})}return Promise.resolve()},r.onWarp=function(l){var u=l.target.value;return r.setWarp(u)},r.setProgress=function(l,u){r.percent=l,r.control&&r.control.setProgress(l,u)},r.finished=function(){if(r.timer.reset(),r.isLooping)return r.timer.start(0),r.midiBuffer.finished(),r.midiBuffer.start(),"continue";r.timer.stop(),r.isStarted&&(r.control&&r.control.pushPlay(!1),r.isStarted=!1,r.midiBuffer.finished(),r.cursorControl&&r.cursorControl.onFinished&&typeof r.cursorControl.onFinished=="function"&&r.cursorControl.onFinished(),r.setProgress(0,1))},r.beatCallback=function(l,u,p,g){var h=l/u;r.setProgress(h,p),r.cursorControl&&r.cursorControl.onBeat&&typeof r.cursorControl.onBeat=="function"&&r.cursorControl.onBeat(l,u,p,g)},r.eventCallback=function(l){if(l)r.cursorControl&&r.cursorControl.onEvent&&typeof r.cursorControl.onEvent=="function"&&r.cursorControl.onEvent(l);else return r.finished()},r.lineEndCallback=function(l,u){r.cursorControl&&r.cursorControl.onLineEnd&&typeof r.cursorControl.onLineEnd=="function"&&r.cursorControl.onLineEnd(l,u)},r.getUrl=function(){return r.midiBuffer.download()},r.download=function(l){var u=r.getUrl(),p=document.createElement("a");document.body.appendChild(p),p.setAttribute("style","display: none;"),p.href=u,p.download=l||"output.wav",p.click(),window.URL.revokeObjectURL(u),document.body.removeChild(p)}}return Vg=s,Vg}var Hg,Hw;function Ww(){if(Hw)return Hg;Hw=1;var t=Cw(),e;return(function(){function a(m,f){for(var d in f)f.hasOwnProperty(d)&&m.setAttribute(d,f[d]);return m}function n(){this.trackstrings="",this.trackcount=0,this.noteOnAndChannel="%90",this.noteOffAndChannel="%80"}n.prototype.setTempo=function(m){this.trackcount===0&&(this.startTrack(),this.track+="%00%FF%51%03"+p(Math.round(6e7/m),6),this.endTrack())},n.prototype.setGlobalInfo=function(m,f,d,c){if(this.trackcount===0){this.startTrack();var _=Math.round(6e7/m);this.track+="%00%FF%51%03"+p(_,6),d&&(this.track+=o(d)),c&&(this.track+=l(c)),f&&(this.track+=r(f,"%01")),this.endTrack()}},n.prototype.startTrack=function(){this.noteWarped={},this.track="",this.trackName="",this.trackInstrument="",this.silencelength=0,this.trackcount++,this.instrument&&this.setInstrument(this.instrument)},n.prototype.endTrack=function(){this.track=this.trackName+this.trackInstrument+this.track;var m=p(this.track.length/3+4,8);this.track="MTrk"+m+this.track+"%00%FF%2F%00",this.trackstrings+=this.track},n.prototype.setText=function(m,f){m==="name"&&(this.trackName=r(f,"%03"))},n.prototype.setInstrument=function(m){this.trackInstrument="%00%C0"+p(m,2),this.instrument=m},n.prototype.setChannel=function(m,f){this.channel=m;var d="%00%B"+this.channel.toString(16);this.track+=d+"%79%00",this.track+=d+"%40%00",this.track+=d+"%5B%30",f||(f=0),f=Math.round((f+1)*64),this.track+=d+"%0A"+p(f,2),this.track+=d+"%07%64",this.noteOnAndChannel="%9"+this.channel.toString(16),this.noteOffAndChannel="%8"+this.channel.toString(16)};var s=4096;n.prototype.startNote=function(m,f,d){if(this.track+=h(this.silencelength),this.silencelength=0,d){this.track+="%e"+this.channel.toString(16);var c=Math.round(t(d)*s);this.track+=g(8192+c),this.track+=h(0),this.noteWarped[m]=!0}this.track+=this.noteOnAndChannel,this.track+="%"+m.toString(16)+p(f,2)},n.prototype.endNote=function(m){this.track+=h(this.silencelength),this.silencelength=0,this.noteWarped[m]&&(this.track+="%e"+this.channel.toString(16),this.track+=g(8192),this.track+=h(0),this.noteWarped[m]=!1),this.track+=this.noteOffAndChannel,this.track+="%"+m.toString(16)+"%00"},n.prototype.addRest=function(m){this.silencelength+=m,this.silencelength<0&&(this.silencelength=0)},n.prototype.getData=function(){return"data:audio/midi,MThd%00%00%00%06%00%01"+p(this.trackcount,4)+"%01%e0"+this.trackstrings},n.prototype.embed=function(m,f){var d=this.getData(),c=a(document.createElement("a"),{href:d});if(c.innerHTML="download midi",m.insertBefore(c,m.firstChild),!f){var _=a(document.createElement("embed"),{src:d,type:"video/quicktime",controller:"true",autoplay:"false",loop:"false",enablejavascript:"true",style:"display:block; height: 20px;"});m.insertBefore(_,m.firstChild)}};function r(m,f){for(var d="",c=0;cf&&(d=d.substring(0,f)),u(d)}function g(m){m=Math.round(m);var f=m%128,d=m-f;return p(d*2+f,4)}function h(m){var f=0,d=[];for(m=Math.round(m);m!==0;)d.push(m&127),m=m>>7;for(var c=d.length-1;c>=0;c--){f=f<<8;var _=d[c];c!==0&&(_=_|128),f=f|_}var b=f.toString(16).length;return b+=b%2,p(f,b)}e=function(){return new n}})(),Hg=e,Hg}var Wg,Qw;function lM(){if(Qw)return Wg;Qw=1;var t=Ww(),e;return(function(){var a=1920;e=function(r,o){o===void 0&&(o={});var l=r.setUpAudio(o),u=t(),p=r.metaText?r.metaText.title:void 0;p&&p.length>128&&(p=p.substring(0,124)+"...");var g=r.getKeySignature(),h=r.getMeterFraction(),m=l.tempo,f=m/60;if(h.den===8&&h.num!==5&&h.num!==7){var d=r.millisecondsPerMeasure();m=6e4/(d/h.num)/2,f=m/60}u.setGlobalInfo(m,p,g,h);for(var c=0;cc&&(w=o.pan[c]),v.instrument===128?(u.setChannel(9,w),u.setInstrument(0)):(u.setChannel(v.channel,w),u.setInstrument(v.instrument));break;case"note":var y=v.gap*f,T=v.start,O=T+v.duration-y;_[T]||(_[T]=[]),_[T].push({pitch:v.pitch,volume:v.volume,cents:v.cents}),_[O]||(_[O]=[]),_[O].push({pitch:v.pitch,volume:0});break;default:console.log("MIDI create Unknown: "+v.cmd)}}n(u,_,a),u.endTrack()}return u.getData()};function n(s,r,o){for(var l=Object.keys(r),u=0;up){var m=(l[g]-p)*o;s.addRest(m),p=l[g]}for(var f=0;f';o.preTextDownload&&(g+=o.preTextDownload);var h=r.metaText&&r.metaText.title?r.metaText.title:"Untitled",m;o.downloadLabel&&n(o.downloadLabel)?m=o.downloadLabel(r,u):o.downloadLabel?m=o.downloadLabel.replace(/%T/,h):m='Download MIDI for "'+h+'"',h=h.toLowerCase().replace(/'/g,"").replace(/\W/g,"_").replace(/__/g,"_");var f=o.fileName?o.fileName:h+".midi";return g+=''+m+"",o.postTextDownload&&(g+=o.postTextDownload),g+""};return Qg=a,Qg}var Kg,Yw;function Xw(){if(Yw)return Kg;Yw=1;try{if(typeof window.CustomEvent!="function"){var t=function(a,n){n=n||{bubbles:!1,cancelable:!1,detail:void 0};var s=document.createEvent("CustomEvent");return s.initCustomEvent(a,n.bubbles,n.cancelable,n.detail),s};t.prototype=window.Event.prototype,window.CustomEvent=t}}catch{}var e=function(a){this.isEditArea=!0,typeof a=="string"?(this.textarea=document.getElementById(a),this.textarea||(this.textarea=document.querySelector(a))):this.textarea=a,this.initialText=this.textarea.value,this.isDragging=!1};return e.prototype.addSelectionListener=function(a){this.textarea.onmousemove=function(n){this.isDragging&&a.fireSelectionChanged()}},e.prototype.addChangeListener=function(a){this.changelistener=a,this.textarea.onkeyup=function(){a.fireChanged()},this.textarea.onmousedown=function(){this.isDragging=!0,a.fireSelectionChanged()},this.textarea.onmouseup=function(){this.isDragging=!1,a.fireChanged()},this.textarea.onchange=function(){a.fireChanged()}},e.prototype.getSelection=function(){return{start:this.textarea.selectionStart,end:this.textarea.selectionEnd}},e.prototype.setSelection=function(a,n){if(this.textarea.setSelectionRange)this.textarea.setSelectionRange(a,n);else if(this.textarea.createTextRange){var s=this.textarea.createTextRange();s.collapse(!0),s.moveEnd("character",n),s.moveStart("character",a),s.select()}this.textarea.focus()},e.prototype.getString=function(){return this.textarea.value},e.prototype.setString=function(a){this.textarea.value=a,this.initialText=this.getString(),this.changelistener&&this.changelistener.fireChanged()},e.prototype.getElem=function(){return this.textarea},Kg=e,Kg}var Yg,Jw;function dM(){if(Jw)return Yg;Jw=1;var t=Xs(),e=Vw(),a=lu(),n=bw(),s=Xw();function r(l){var u={},p;if(l.abcjsParams)for(p in l.abcjsParams)l.abcjsParams.hasOwnProperty(p)&&(u[p]=l.abcjsParams[p]);if(l.midi_options)for(p in l.midi_options)l.midi_options.hasOwnProperty(p)&&(u[p]=l.midi_options[p]);if(l.parser_options)for(p in l.parser_options)l.parser_options.hasOwnProperty(p)&&(u[p]=l.parser_options[p]);if(l.render_options)for(p in l.render_options)l.render_options.hasOwnProperty(p)&&(u[p]=l.render_options[p]);return u.tablature&&l.warnings_id&&(u.tablature.warnings_id=l.warnings_id),u}var o=function(l,u){this.abcjsParams=r(u),u.indicate_changed&&(this.indicate_changed=!0),typeof l=="string"?this.editarea=new s(l):l.isEditArea?this.editarea=l:this.editarea=new s(l),this.editarea.addSelectionListener(this),this.editarea.addChangeListener(this),u.canvas_id?this.div=u.canvas_id:u.paper_id?this.div=u.paper_id:(this.div=document.createElement("DIV"),this.editarea.getElem().parentNode.insertBefore(this.div,this.editarea.getElem())),typeof this.div=="string"&&(this.div=document.getElementById(this.div)),u.selectionChangeCallback&&(this.selectionChangeCallback=u.selectionChangeCallback),this.clientClickListener=this.abcjsParams.clickListener,this.abcjsParams.clickListener=this.highlight.bind(this),u.synth&&a()&&(this.synth={el:u.synth.el,cursorControl:u.synth.cursorControl,options:u.synth.options}),u.generate_midi&&(this.generate_midi=u.generate_midi,this.abcjsParams.generateDownload&&(typeof u.midi_download_id=="string"?this.downloadMidi=document.getElementById(u.midi_download_id):u.midi_download_id&&(this.downloadMidi=u.midi_download_id)),this.abcjsParams.generateInline!==!1&&(typeof u.midi_id=="string"?this.inlineMidi=document.getElementById(u.midi_id):u.midi_id&&(this.inlineMidi=u.midi_id))),u.warnings_id?typeof u.warnings_id=="string"?this.warningsdiv=document.getElementById(u.warnings_id):this.warningsdiv=u.warnings_id:u.generate_warnings&&(this.warningsdiv=document.createElement("div"),this.div.parentNode.insertBefore(this.warningsdiv,this.div)),this.onchangeCallback=u.onchange,this.redrawCallback=u.redrawCallback,this.currentAbc="",this.tunes=[],this.bReentry=!1,this.parseABC(),this.modelChanged(),this.addClassName=function(p,g){var h=function(m,f){var d=m.className;return d.length>0&&(d===f||new RegExp("(^|\\s)"+f+"(\\s|$)").test(d))};return h(p,g)||(p.className+=(p.className?" ":"")+g),p},this.removeClassName=function(p,g){return p.className=t.strip(p.className.replace(new RegExp("(^|\\s+)"+g+"(\\s+|$)")," ")),p},this.setReadOnly=function(p){var g="abc_textarea_readonly",h=this.editarea.getElem();p?(h.setAttribute("readonly","yes"),this.addClassName(h,g)):(h.removeAttribute("readonly"),this.removeClassName(h,g))}};return o.prototype.redrawMidi=function(){if(this.generate_midi&&!this.midiPause){var l=new window.CustomEvent("generateMidi",{detail:{tunes:this.tunes,abcjsParams:this.abcjsParams,downloadMidiEl:this.downloadMidi,inlineMidiEl:this.inlineMidi,engravingEl:this.div}});window.dispatchEvent(l)}if(this.synth){var u=this.synth.synthControl;this.synth.synthControl||(this.synth.synthControl=new e,this.synth.synthControl.load(this.synth.el,this.synth.cursorControl,this.synth.options)),this.synth.synthControl.setTune(this.tunes[0],u,this.synth.options)}},o.prototype.modelChanged=function(){if(!this.bReentry){this.bReentry=!0;try{this.timerId=null,this.redrawCallback&&this.redrawCallback(!0),this.synth&&this.synth.synthControl&&this.synth.synthControl.disable(!0),this.tunes=n(this.div,this.currentAbc,this.abcjsParams),this.tunes.length>0&&(this.warnings=this.tunes[0].warnings),this.redrawMidi(),this.redrawCallback&&this.redrawCallback(!1)}catch(l){console.error("ABCJS error: ",l),this.warnings||(this.warnings=[]),this.warnings.push(l.message)}this.warningsdiv&&(this.warningsdiv.innerHTML=this.warnings?this.warnings.join("
            "):"No errors"),this.updateSelection(),this.bReentry=!1}},o.prototype.paramChanged=function(l){if(l)for(var u in l)l.hasOwnProperty(u)&&(this.abcjsParams[u]=l[u]);this.currentAbc="",this.fireChanged()},o.prototype.getTunes=function(){return this.tunes},o.prototype.synthParamChanged=function(l){if(this.synth){if(this.synth.options={},l)for(var u in l)l.hasOwnProperty(u)&&(this.synth.options[u]=l[u]);this.currentAbc="",this.fireChanged()}},o.prototype.parseABC=function(){var l=this.editarea.getString();return l===this.currentAbc?(this.updateSelection(),!1):(this.currentAbc=l,!0)},o.prototype.updateSelection=function(){var l=this.editarea.getSelection();try{this.tunes.length>0&&this.tunes[0].engraver&&this.tunes[0].engraver.rangeHighlight(l.start,l.end)}catch{}this.selectionChangeCallback&&this.selectionChangeCallback(l.start,l.end)},o.prototype.fireSelectionChanged=function(){this.updateSelection()},o.prototype.setDirtyStyle=function(l){if(this.indicate_changed!==void 0){var u=function(m,f){var d=function(c,_){var b=c.className;return b.length>0&&(b===_||new RegExp("(^|\\s)"+_+"(\\s|$)").test(b))};return d(m,f)||(m.className+=(m.className?" ":"")+f),m},p=function(m,f){return m.className=t.strip(m.className.replace(new RegExp("(^|\\s+)"+f+"(\\s+|$)")," ")),m},g="abc_textarea_dirty",h=this.editarea.getElem();l?u(h,g):p(h,g)}},o.prototype.fireChanged=function(){if(!this.bIsPaused&&this.parseABC()){var l=this;this.timerId&&clearTimeout(this.timerId),this.timerId=setTimeout(function(){l.modelChanged()},300);var u=this.isDirty();this.wasDirty!==u&&(this.wasDirty=u,this.setDirtyStyle(u)),this.onchangeCallback&&this.onchangeCallback(this)}},o.prototype.setNotDirty=function(){this.editarea.initialText=this.editarea.getString(),this.wasDirty=!1,this.setDirtyStyle(!1)},o.prototype.isDirty=function(){return this.indicate_changed===void 0?!1:this.editarea.initialText!==this.editarea.getString()},o.prototype.highlight=function(l,u,p,g,h,m){this.editarea.setSelection(l.startChar,l.endChar),this.selectionChangeCallback&&this.selectionChangeCallback(l.startChar,l.endChar),this.clientClickListener&&this.clientClickListener(l,u,p,g,h,m)},o.prototype.pause=function(l){this.bIsPaused=l,l||this.fireChanged()},o.prototype.millisecondsPerMeasure=function(){return!this.synth||!this.synth.synthControl||!this.synth.synthControl.visualObj?0:this.synth.synthControl.visualObj.millisecondsPerMeasure()},o.prototype.pauseMidi=function(l){this.midiPause=l,l||this.redrawMidi()},Yg=o,Yg}var Xg,Zw;function uM(){if(Zw)return Xg;Zw=1;var t=TC(),e=$C(),a=ru(),n=ly(),s=VC(),r={};r.signature="abcjs-basic v"+t,Object.keys(e).forEach(function(w){r[w]=e[w]}),Object.keys(a).forEach(function(w){r[w]=a[w]}),r.renderAbc=bw(),r.tuneMetrics=X9(),r.TimingCallbacks=Xm();var o=Vr();r.setGlyph=o.setSymbol,r.strTranspose=s;var l=Bg(),u=Tg(),p=Cg(),g=Uw(),h=Iw(),m=ou(),f=yl(),d=lu(),c=oM(),_=Vw(),b=cM(),v=Ww();return r.synth={CreateSynth:l,instrumentIndexToName:u,pitchToNoteName:p,SynthController:_,SynthSequence:g,CreateSynthControl:h,registerAudioContext:m,activeAudioContext:f,supportsAudio:d,playEvent:c,getMidiFile:b,sequence:n,midiRenderer:v},r.Editor=dM(),r.EditArea=Xw(),r.test={Parse:Sp(),EngraverController:vg()},Xg=r,Xg}var ek=uM();const fM=Hk({__proto__:null,default:SC(ek)},[ek]);return Xc.app=T1,Xc.start=W6,Object.defineProperty(Xc,Symbol.toStringTag,{value:"Module"}),Xc})({}); +`,m.innerHTML=T}function g(m,d,c,_,b){var v=!0;if(a()?v=a().state==="suspended":e(),!t())throw{status:"NotSupported",message:"This browser does not support audio."};(v||b)&&c&&c.classList.add("abcjs-loading"),v?a().resume().then(function(){_?_().then(function(k){h(m,d,c,b)}):h(m,d,c,b)}):h(m,d,c,b)}function h(m,d,c,_){_?m(d).then(function(){c&&c.classList.remove("abcjs-loading")}):(m(d),c&&c.classList.remove("abcjs-loading"))}function f(m){var d=!!m.options.loopHandler,c=!!m.options.restartHandler,_=!!m.options.playHandler||!!m.options.playPromiseHandler,b=!!m.options.progressHandler,v=!!m.options.warpHandler,k=m.parent.querySelector(".abcjs-midi-start");d&&m.parent.querySelector(".abcjs-midi-loop").addEventListener("click",function(y){g(m.options.loopHandler,y,k,m.options.afterResume)}),c&&m.parent.querySelector(".abcjs-midi-reset").addEventListener("click",function(y){g(m.options.restartHandler,y,k,m.options.afterResume)}),_&&k.addEventListener("click",function(y){g(m.options.playPromiseHandler||m.options.playHandler,y,k,m.options.afterResume,!!m.options.playPromiseHandler)}),b&&m.parent.querySelector(".abcjs-midi-progress-background").addEventListener("click",function(y){g(m.options.progressHandler,y,k,m.options.afterResume)}),v&&m.parent.querySelector(".abcjs-midi-tempo").addEventListener("change",function(y){g(m.options.warpHandler,y,k,m.options.afterResume)})}return Dg=u,Dg}var Vg,Hw;function vM(){if(Hw)return Vg;Hw=1;var t=jw(),e=Rg(),a=wl();function n(r,o,l,u,p){for(var g=new t,h=0;h=1&&parseInt(r.cursorControl.beatSubdivisions,10)<=64&&(p=parseInt(r.cursorControl.beatSubdivisions,10)),r.timer=new a(r.visualObj,{beatCallback:r.beatCallback,eventCallback:r.eventCallback,lineEndCallback:r.lineEndCallback,qpm:r.currentTempo,extraMeasuresAtBeginning:r.cursorControl?r.cursorControl.extraMeasuresAtBeginning:void 0,lineEndAnticipation:r.cursorControl?r.cursorControl.lineEndAnticipation:0,beatSubdivisions:p}),r.cursorControl&&r.cursorControl.onReady&&typeof r.cursorControl.onReady=="function"&&r.cursorControl.onReady(r),r.isLoaded=!0,r.isLoading=!1,Promise.resolve({status:"created",notesStatus:u})})},r.destroy=function(){r.timer&&(r.timer.reset(),r.timer.stop(),r.timer=null),r.midiBuffer&&(r.midiBuffer.stop(),r.midiBuffer=null),r.setProgress(0,1),r.control&&r.control.resetAll()},r.play=function(){return r.runWhenReady(r._play,void 0)};function o(l){return new Promise(function(u){setTimeout(u,l)})}r.runWhenReady=function(l,u){return r.visualObj?r.isLoading?o(500).then(function(){return r.isLoading?r.runWhenReady(l,u):l(u)}):r.isLoaded?l(u):r.go().then(function(){return l(u)}):Promise.resolve({status:"loading"})},r._play=function(){return n().resume().then(function(){return r.isStarted=!r.isStarted,r.isStarted?(r.cursorControl&&r.cursorControl.onStart&&typeof r.cursorControl.onStart=="function"&&r.cursorControl.onStart(),r.midiBuffer.start(),r.timer.start(r.percent),r.control&&r.control.pushPlay(!0)):r.pause(),Promise.resolve({status:"ok"})})},r.pause=function(){r.timer&&(r.timer.pause(),r.midiBuffer.pause(),r.control&&r.control.pushPlay(!1))},r.toggleLoop=function(){r.isLooping=!r.isLooping,r.control&&r.control.pushLoop(r.isLooping)},r.restart=function(){r.timer&&(r.timer.setProgress(0),r.midiBuffer.seek(0))},r.randomAccess=function(l){return r.runWhenReady(r._randomAccess,l)},r._randomAccess=function(l){var u=l.target.classList.contains("abcjs-midi-progress-indicator")?l.target.parentNode:l.target,p=(l.x-u.getBoundingClientRect().left)/u.offsetWidth;return p<0&&(p=0),p>1&&(p=1),r.seek(p),Promise.resolve({status:"ok"})},r.seek=function(l,u){r.timer&&r.midiBuffer&&(r.timer.setProgress(l,u),r.midiBuffer.seek(l,u))},r.setWarp=function(l){if(parseInt(l,10)>0){r.warp=parseInt(l,10);var u=r.isStarted,p=r.percent;return r.destroy(),r.isStarted=!1,r.go().then(function(){return r.setProgress(p,r.midiBuffer.duration*1e3),r.control&&r.control.setWarp(r.currentTempo,r.warp),u?r.play().then(function(){return r.seek(p),Promise.resolve()}):(r.seek(p),Promise.resolve())})}return Promise.resolve()},r.onWarp=function(l){var u=l.target.value;return r.setWarp(u)},r.setProgress=function(l,u){r.percent=l,r.control&&r.control.setProgress(l,u)},r.finished=function(){if(r.timer.reset(),r.isLooping)return r.timer.start(0),r.midiBuffer.finished(),r.midiBuffer.start(),"continue";r.timer.stop(),r.isStarted&&(r.control&&r.control.pushPlay(!1),r.isStarted=!1,r.midiBuffer.finished(),r.cursorControl&&r.cursorControl.onFinished&&typeof r.cursorControl.onFinished=="function"&&r.cursorControl.onFinished(),r.setProgress(0,1))},r.beatCallback=function(l,u,p,g){var h=l/u;r.setProgress(h,p),r.cursorControl&&r.cursorControl.onBeat&&typeof r.cursorControl.onBeat=="function"&&r.cursorControl.onBeat(l,u,p,g)},r.eventCallback=function(l){if(l)r.cursorControl&&r.cursorControl.onEvent&&typeof r.cursorControl.onEvent=="function"&&r.cursorControl.onEvent(l);else return r.finished()},r.lineEndCallback=function(l,u){r.cursorControl&&r.cursorControl.onLineEnd&&typeof r.cursorControl.onLineEnd=="function"&&r.cursorControl.onLineEnd(l,u)},r.getUrl=function(){return r.midiBuffer.download()},r.download=function(l){var u=r.getUrl(),p=document.createElement("a");document.body.appendChild(p),p.setAttribute("style","display: none;"),p.href=u,p.download=l||"output.wav",p.click(),window.URL.revokeObjectURL(u),document.body.removeChild(p)}}return Hg=s,Hg}var Wg,Kw;function Yw(){if(Kw)return Wg;Kw=1;var t=zw(),e;return(function(){function a(f,m){for(var d in m)m.hasOwnProperty(d)&&f.setAttribute(d,m[d]);return f}function n(){this.trackstrings="",this.trackcount=0,this.noteOnAndChannel="%90",this.noteOffAndChannel="%80"}n.prototype.setTempo=function(f){this.trackcount===0&&(this.startTrack(),this.track+="%00%FF%51%03"+p(Math.round(6e7/f),6),this.endTrack())},n.prototype.setGlobalInfo=function(f,m,d,c){if(this.trackcount===0){this.startTrack();var _=Math.round(6e7/f);this.track+="%00%FF%51%03"+p(_,6),d&&(this.track+=o(d)),c&&(this.track+=l(c)),m&&(this.track+=r(m,"%01")),this.endTrack()}},n.prototype.startTrack=function(){this.noteWarped={},this.track="",this.trackName="",this.trackInstrument="",this.silencelength=0,this.trackcount++,this.instrument&&this.setInstrument(this.instrument)},n.prototype.endTrack=function(){this.track=this.trackName+this.trackInstrument+this.track;var f=p(this.track.length/3+4,8);this.track="MTrk"+f+this.track+"%00%FF%2F%00",this.trackstrings+=this.track},n.prototype.setText=function(f,m){f==="name"&&(this.trackName=r(m,"%03"))},n.prototype.setInstrument=function(f){this.trackInstrument="%00%C0"+p(f,2),this.instrument=f},n.prototype.setChannel=function(f,m){this.channel=f;var d="%00%B"+this.channel.toString(16);this.track+=d+"%79%00",this.track+=d+"%40%00",this.track+=d+"%5B%30",m||(m=0),m=Math.round((m+1)*64),this.track+=d+"%0A"+p(m,2),this.track+=d+"%07%64",this.noteOnAndChannel="%9"+this.channel.toString(16),this.noteOffAndChannel="%8"+this.channel.toString(16)};var s=4096;n.prototype.startNote=function(f,m,d){if(this.track+=h(this.silencelength),this.silencelength=0,d){this.track+="%e"+this.channel.toString(16);var c=Math.round(t(d)*s);this.track+=g(8192+c),this.track+=h(0),this.noteWarped[f]=!0}this.track+=this.noteOnAndChannel,this.track+="%"+f.toString(16)+p(m,2)},n.prototype.endNote=function(f){this.track+=h(this.silencelength),this.silencelength=0,this.noteWarped[f]&&(this.track+="%e"+this.channel.toString(16),this.track+=g(8192),this.track+=h(0),this.noteWarped[f]=!1),this.track+=this.noteOffAndChannel,this.track+="%"+f.toString(16)+"%00"},n.prototype.addRest=function(f){this.silencelength+=f,this.silencelength<0&&(this.silencelength=0)},n.prototype.getData=function(){return"data:audio/midi,MThd%00%00%00%06%00%01"+p(this.trackcount,4)+"%01%e0"+this.trackstrings},n.prototype.embed=function(f,m){var d=this.getData(),c=a(document.createElement("a"),{href:d});if(c.innerHTML="download midi",f.insertBefore(c,f.firstChild),!m){var _=a(document.createElement("embed"),{src:d,type:"video/quicktime",controller:"true",autoplay:"false",loop:"false",enablejavascript:"true",style:"display:block; height: 20px;"});f.insertBefore(_,f.firstChild)}};function r(f,m){for(var d="",c=0;cm&&(d=d.substring(0,m)),u(d)}function g(f){f=Math.round(f);var m=f%128,d=f-m;return p(d*2+m,4)}function h(f){var m=0,d=[];for(f=Math.round(f);f!==0;)d.push(f&127),f=f>>7;for(var c=d.length-1;c>=0;c--){m=m<<8;var _=d[c];c!==0&&(_=_|128),m=m|_}var b=m.toString(16).length;return b+=b%2,p(m,b)}e=function(){return new n}})(),Wg=e,Wg}var Qg,Xw;function bM(){if(Xw)return Qg;Xw=1;var t=Yw(),e;return(function(){var a=1920;e=function(r,o){o===void 0&&(o={});var l=r.setUpAudio(o),u=t(),p=r.metaText?r.metaText.title:void 0;p&&p.length>128&&(p=p.substring(0,124)+"...");var g=r.getKeySignature(),h=r.getMeterFraction(),f=l.tempo,m=f/60;if(h.den===8&&h.num!==5&&h.num!==7){var d=r.millisecondsPerMeasure();f=6e4/(d/h.num)/2,m=f/60}u.setGlobalInfo(f,p,g,h);for(var c=0;cc&&(k=o.pan[c]),v.instrument===128?(u.setChannel(9,k),u.setInstrument(0)):(u.setChannel(v.channel,k),u.setInstrument(v.instrument));break;case"note":var y=v.gap*m,T=v.start,O=T+v.duration-y;_[T]||(_[T]=[]),_[T].push({pitch:v.pitch,volume:v.volume,cents:v.cents}),_[O]||(_[O]=[]),_[O].push({pitch:v.pitch,volume:0});break;default:console.log("MIDI create Unknown: "+v.cmd)}}n(u,_,a),u.endTrack()}return u.getData()};function n(s,r,o){for(var l=Object.keys(r),u=0;up){var f=(l[g]-p)*o;s.addRest(f),p=l[g]}for(var m=0;m';o.preTextDownload&&(g+=o.preTextDownload);var h=r.metaText&&r.metaText.title?r.metaText.title:"Untitled",f;o.downloadLabel&&n(o.downloadLabel)?f=o.downloadLabel(r,u):o.downloadLabel?f=o.downloadLabel.replace(/%T/,h):f='Download MIDI for "'+h+'"',h=h.toLowerCase().replace(/'/g,"").replace(/\W/g,"_").replace(/__/g,"_");var m=o.fileName?o.fileName:h+".midi";return g+=''+f+"",o.postTextDownload&&(g+=o.postTextDownload),g+""};return Kg=a,Kg}var Yg,Zw;function ek(){if(Zw)return Yg;Zw=1;try{if(typeof window.CustomEvent!="function"){var t=function(a,n){n=n||{bubbles:!1,cancelable:!1,detail:void 0};var s=document.createEvent("CustomEvent");return s.initCustomEvent(a,n.bubbles,n.cancelable,n.detail),s};t.prototype=window.Event.prototype,window.CustomEvent=t}}catch{}var e=function(a){this.isEditArea=!0,typeof a=="string"?(this.textarea=document.getElementById(a),this.textarea||(this.textarea=document.querySelector(a))):this.textarea=a,this.initialText=this.textarea.value,this.isDragging=!1};return e.prototype.addSelectionListener=function(a){this.textarea.onmousemove=function(n){this.isDragging&&a.fireSelectionChanged()}},e.prototype.addChangeListener=function(a){this.changelistener=a,this.textarea.onkeyup=function(){a.fireChanged()},this.textarea.onmousedown=function(){this.isDragging=!0,a.fireSelectionChanged()},this.textarea.onmouseup=function(){this.isDragging=!1,a.fireChanged()},this.textarea.onchange=function(){a.fireChanged()}},e.prototype.getSelection=function(){return{start:this.textarea.selectionStart,end:this.textarea.selectionEnd}},e.prototype.setSelection=function(a,n){if(this.textarea.setSelectionRange)this.textarea.setSelectionRange(a,n);else if(this.textarea.createTextRange){var s=this.textarea.createTextRange();s.collapse(!0),s.moveEnd("character",n),s.moveStart("character",a),s.select()}this.textarea.focus()},e.prototype.getString=function(){return this.textarea.value},e.prototype.setString=function(a){this.textarea.value=a,this.initialText=this.getString(),this.changelistener&&this.changelistener.fireChanged()},e.prototype.getElem=function(){return this.textarea},Yg=e,Yg}var Xg,tk;function wM(){if(tk)return Xg;tk=1;var t=ir(),e=Qw(),a=gu(),n=kw(),s=ek();function r(l){var u={},p;if(l.abcjsParams)for(p in l.abcjsParams)l.abcjsParams.hasOwnProperty(p)&&(u[p]=l.abcjsParams[p]);if(l.midi_options)for(p in l.midi_options)l.midi_options.hasOwnProperty(p)&&(u[p]=l.midi_options[p]);if(l.parser_options)for(p in l.parser_options)l.parser_options.hasOwnProperty(p)&&(u[p]=l.parser_options[p]);if(l.render_options)for(p in l.render_options)l.render_options.hasOwnProperty(p)&&(u[p]=l.render_options[p]);return u.tablature&&l.warnings_id&&(u.tablature.warnings_id=l.warnings_id),u}var o=function(l,u){this.abcjsParams=r(u),u.indicate_changed&&(this.indicate_changed=!0),typeof l=="string"?this.editarea=new s(l):l.isEditArea?this.editarea=l:this.editarea=new s(l),this.editarea.addSelectionListener(this),this.editarea.addChangeListener(this),u.canvas_id?this.div=u.canvas_id:u.paper_id?this.div=u.paper_id:(this.div=document.createElement("DIV"),this.editarea.getElem().parentNode.insertBefore(this.div,this.editarea.getElem())),typeof this.div=="string"&&(this.div=document.getElementById(this.div)),u.selectionChangeCallback&&(this.selectionChangeCallback=u.selectionChangeCallback),this.clientClickListener=this.abcjsParams.clickListener,this.abcjsParams.clickListener=this.highlight.bind(this),u.synth&&a()&&(this.synth={el:u.synth.el,cursorControl:u.synth.cursorControl,options:u.synth.options}),u.generate_midi&&(this.generate_midi=u.generate_midi,this.abcjsParams.generateDownload&&(typeof u.midi_download_id=="string"?this.downloadMidi=document.getElementById(u.midi_download_id):u.midi_download_id&&(this.downloadMidi=u.midi_download_id)),this.abcjsParams.generateInline!==!1&&(typeof u.midi_id=="string"?this.inlineMidi=document.getElementById(u.midi_id):u.midi_id&&(this.inlineMidi=u.midi_id))),u.warnings_id?typeof u.warnings_id=="string"?this.warningsdiv=document.getElementById(u.warnings_id):this.warningsdiv=u.warnings_id:u.generate_warnings&&(this.warningsdiv=document.createElement("div"),this.div.parentNode.insertBefore(this.warningsdiv,this.div)),this.onchangeCallback=u.onchange,this.redrawCallback=u.redrawCallback,this.currentAbc="",this.tunes=[],this.bReentry=!1,this.parseABC(),this.modelChanged(),this.addClassName=function(p,g){var h=function(f,m){var d=f.className;return d.length>0&&(d===m||new RegExp("(^|\\s)"+m+"(\\s|$)").test(d))};return h(p,g)||(p.className+=(p.className?" ":"")+g),p},this.removeClassName=function(p,g){return p.className=t.strip(p.className.replace(new RegExp("(^|\\s+)"+g+"(\\s+|$)")," ")),p},this.setReadOnly=function(p){var g="abc_textarea_readonly",h=this.editarea.getElem();p?(h.setAttribute("readonly","yes"),this.addClassName(h,g)):(h.removeAttribute("readonly"),this.removeClassName(h,g))}};return o.prototype.redrawMidi=function(){if(this.generate_midi&&!this.midiPause){var l=new window.CustomEvent("generateMidi",{detail:{tunes:this.tunes,abcjsParams:this.abcjsParams,downloadMidiEl:this.downloadMidi,inlineMidiEl:this.inlineMidi,engravingEl:this.div}});window.dispatchEvent(l)}if(this.synth){var u=this.synth.synthControl;this.synth.synthControl||(this.synth.synthControl=new e,this.synth.synthControl.load(this.synth.el,this.synth.cursorControl,this.synth.options)),this.synth.synthControl.setTune(this.tunes[0],u,this.synth.options)}},o.prototype.modelChanged=function(){if(!this.bReentry){this.bReentry=!0;try{this.timerId=null,this.redrawCallback&&this.redrawCallback(!0),this.synth&&this.synth.synthControl&&this.synth.synthControl.disable(!0),this.tunes=n(this.div,this.currentAbc,this.abcjsParams),this.tunes.length>0&&(this.warnings=this.tunes[0].warnings),this.redrawMidi(),this.redrawCallback&&this.redrawCallback(!1)}catch(l){console.error("ABCJS error: ",l),this.warnings||(this.warnings=[]),this.warnings.push(l.message)}this.warningsdiv&&(this.warningsdiv.innerHTML=this.warnings?this.warnings.join("
            "):"No errors"),this.updateSelection(),this.bReentry=!1}},o.prototype.paramChanged=function(l){if(l)for(var u in l)l.hasOwnProperty(u)&&(this.abcjsParams[u]=l[u]);this.currentAbc="",this.fireChanged()},o.prototype.getTunes=function(){return this.tunes},o.prototype.synthParamChanged=function(l){if(this.synth){if(this.synth.options={},l)for(var u in l)l.hasOwnProperty(u)&&(this.synth.options[u]=l[u]);this.currentAbc="",this.fireChanged()}},o.prototype.parseABC=function(){var l=this.editarea.getString();return l===this.currentAbc?(this.updateSelection(),!1):(this.currentAbc=l,!0)},o.prototype.updateSelection=function(){var l=this.editarea.getSelection();try{this.tunes.length>0&&this.tunes[0].engraver&&this.tunes[0].engraver.rangeHighlight(l.start,l.end)}catch{}this.selectionChangeCallback&&this.selectionChangeCallback(l.start,l.end)},o.prototype.fireSelectionChanged=function(){this.updateSelection()},o.prototype.setDirtyStyle=function(l){if(this.indicate_changed!==void 0){var u=function(f,m){var d=function(c,_){var b=c.className;return b.length>0&&(b===_||new RegExp("(^|\\s)"+_+"(\\s|$)").test(b))};return d(f,m)||(f.className+=(f.className?" ":"")+m),f},p=function(f,m){return f.className=t.strip(f.className.replace(new RegExp("(^|\\s+)"+m+"(\\s+|$)")," ")),f},g="abc_textarea_dirty",h=this.editarea.getElem();l?u(h,g):p(h,g)}},o.prototype.fireChanged=function(){if(!this.bIsPaused&&this.parseABC()){var l=this;this.timerId&&clearTimeout(this.timerId),this.timerId=setTimeout(function(){l.modelChanged()},300);var u=this.isDirty();this.wasDirty!==u&&(this.wasDirty=u,this.setDirtyStyle(u)),this.onchangeCallback&&this.onchangeCallback(this)}},o.prototype.setNotDirty=function(){this.editarea.initialText=this.editarea.getString(),this.wasDirty=!1,this.setDirtyStyle(!1)},o.prototype.isDirty=function(){return this.indicate_changed===void 0?!1:this.editarea.initialText!==this.editarea.getString()},o.prototype.highlight=function(l,u,p,g,h,f){this.editarea.setSelection(l.startChar,l.endChar),this.selectionChangeCallback&&this.selectionChangeCallback(l.startChar,l.endChar),this.clientClickListener&&this.clientClickListener(l,u,p,g,h,f)},o.prototype.pause=function(l){this.bIsPaused=l,l||this.fireChanged()},o.prototype.millisecondsPerMeasure=function(){return!this.synth||!this.synth.synthControl||!this.synth.synthControl.visualObj?0:this.synth.synthControl.visualObj.millisecondsPerMeasure()},o.prototype.pauseMidi=function(l){this.midiPause=l,l||this.redrawMidi()},Xg=o,Xg}var Jg,ik;function kM(){if(ik)return Jg;ik=1;var t=BC(),e=RC(),a=mu(),n=uy(),s=i9(),r={};r.signature="abcjs-basic v"+t,Object.keys(e).forEach(function(k){r[k]=e[k]}),Object.keys(a).forEach(function(k){r[k]=a[k]}),r.renderAbc=kw(),r.tuneMetrics=lM(),r.TimingCallbacks=Jm();var o=Qr();r.setGlyph=o.setSymbol,r.strTranspose=s;var l=Rg(),u=$g(),p=Mg(),g=jw(),h=Vw(),f=pu(),m=wl(),d=gu(),c=vM(),_=Qw(),b=yM(),v=Yw();return r.synth={CreateSynth:l,instrumentIndexToName:u,pitchToNoteName:p,SynthController:_,SynthSequence:g,CreateSynthControl:h,registerAudioContext:f,activeAudioContext:m,supportsAudio:d,playEvent:c,getMidiFile:b,sequence:n,midiRenderer:v},r.Editor=wM(),r.EditArea=ek(),r.test={Parse:Tp(),EngraverController:bg()},Jg=r,Jg}var ak=kM();const xM=Xk({__proto__:null,default:UC(ak)},[ak]);return ad.app=q1,ad.start=Z6,Object.defineProperty(ad,Symbol.toStringTag,{value:"Module"}),ad})({}); __sveltekit_1xyyov.app.start(element); diff --git a/webui/native/src/lib/LoraControls.svelte b/webui/native/src/lib/LoraControls.svelte new file mode 100644 index 000000000..77f6e8517 --- /dev/null +++ b/webui/native/src/lib/LoraControls.svelte @@ -0,0 +1,48 @@ + + +{#if adapter && strength} + +

            {editable ? 'Applied when the model loads. Reload or generate to apply changes.' : 'Managed by the server configuration. Set the adapter and strength in its session options.'}

            +
            +
            + +
            + onChange(adapter, event.currentTarget.value.trim())} /> + +
            +
            +
            + + { + if (event.currentTarget.value === '') onChange(strength, ''); + else if (Number.isFinite(event.currentTarget.valueAsNumber)) onChange(strength, event.currentTarget.valueAsNumber); + }} /> +
            +
            + {#if adapter.info}{adapter.info}{/if} + {#if strength.info}{strength.info}{/if} + +
            +{/if} diff --git a/webui/native/src/lib/LoraGroup.svelte b/webui/native/src/lib/LoraGroup.svelte new file mode 100644 index 000000000..72806cb40 --- /dev/null +++ b/webui/native/src/lib/LoraGroup.svelte @@ -0,0 +1,23 @@ + + +
            + LoRA adapter {selected > 1 ? `${selected} selected` : selected ? 'Selected' : 'None'} +
            +
            + + diff --git a/webui/native/src/lib/catalog.ts b/webui/native/src/lib/catalog.ts index 838568449..f9681cdd9 100644 --- a/webui/native/src/lib/catalog.ts +++ b/webui/native/src/lib/catalog.ts @@ -19,6 +19,7 @@ interface PackageSpec { packages?: Array>; options?: { request?: Array<{ name: string; required?: boolean }>; + session?: Array<{ name: string; description?: string; default?: unknown; min?: number; max?: number }>; }; ui?: { builtin_voices?: string[]; @@ -407,6 +408,20 @@ export const parameterCatalog = Object.fromEntries( ]) ) as Record; +for (const [family, spec] of specsByFamily) { + const adapter = spec.options?.session?.find((option) => option.name === 'lora'); + const strength = spec.options?.session?.find((option) => option.name === 'lora_scale'); + const controls = parameterCatalog[family] || []; + if (!adapter || !strength || controls.some((control) => control.session_option === `${family}.lora`)) continue; + parameterCatalog[family] = [...controls, + { name: 'lora', group: 'lora', scope: 'session', session_option: `${family}.lora`, + type: 'text', label: 'Adapter path', default: '', info: adapter.description }, + { name: 'lora_scale', group: 'lora', scope: 'session', session_option: `${family}.lora_scale`, + type: 'number', label: 'Strength', default: strength.default ?? '', + minimum: strength.min, maximum: strength.max, step: 0.1, info: strength.description } + ]; +} + export const taskLabels: Record = { tts: 'Text to speech', clon: 'Voice cloning', diff --git a/webui/native/src/lib/models/ace_step/AceStepPanel.svelte b/webui/native/src/lib/models/ace_step/AceStepPanel.svelte index e150cf13c..444045fa9 100644 --- a/webui/native/src/lib/models/ace_step/AceStepPanel.svelte +++ b/webui/native/src/lib/models/ace_step/AceStepPanel.svelte @@ -2,6 +2,7 @@ import { runTask } from '$lib/api'; import type { Translator } from '$lib/i18n'; import type { ParamSpec } from '$lib/types'; + import LoraGroup from '$lib/LoraGroup.svelte'; export let modelId: string; export let text = ''; @@ -23,6 +24,7 @@ export let requestOptions: () => Record; export let resolveRequestSeed: (value: number) => number; export let setParameterValue: (spec: ParamSpec, value: unknown) => void; + export let onBrowseAdapter: (spec: ParamSpec) => void; export let log: (message: string) => void; export let tr: Translator; @@ -101,15 +103,18 @@ {#if loraSpec && scaleSpec} -
            - LoRA {advancedValues.lora ? 'Selected' : 'None'} +
            - setParameterValue(loraSpec, event.currentTarget.value.trim())} /> +
            + setParameterValue(loraSpec, event.currentTarget.value.trim())} /> + +
            @@ -119,13 +124,8 @@ if (Number.isFinite(event.currentTarget.valueAsNumber)) setParameterValue(scaleSpec, event.currentTarget.valueAsNumber); }} />
            -
            -
            + + {/if} - - diff --git a/webui/native/src/lib/models/yue2/Yue2Panel.svelte b/webui/native/src/lib/models/yue2/Yue2Panel.svelte index 2cec9d78f..758773842 100644 --- a/webui/native/src/lib/models/yue2/Yue2Panel.svelte +++ b/webui/native/src/lib/models/yue2/Yue2Panel.svelte @@ -2,6 +2,7 @@ import { onDestroy, onMount, tick } from 'svelte'; import { jsonRequest, loadModel, models, runTask, unloadModel, uploadFile } from '$lib/api'; import MediaPreview from '$lib/MediaPreview.svelte'; + import LoraGroup from '$lib/LoraGroup.svelte'; import type { Translator } from '$lib/i18n'; import type { CatalogEntry, LoadedModel, ParamSpec, ServerHealth } from '$lib/types'; @@ -304,8 +305,10 @@ {/each} + {#if specByName('ar_lora') || specByName('nar_lora')} + {#if specByName('ar_lora')} -
            +
            +
            - Scales the LoRA deltas only; any full vae2llm/llm2vae projection replacement in the adapter stays at full strength.
            + Scales the LoRA deltas only; any full vae2llm/llm2vae projection replacement in the adapter stays at full strength. + {/if} + + {/if}
            diff --git a/webui/native/src/lib/types.ts b/webui/native/src/lib/types.ts index 234bec228..4bf44ed0e 100644 --- a/webui/native/src/lib/types.ts +++ b/webui/native/src/lib/types.ts @@ -39,6 +39,7 @@ export interface CatalogEntry { export interface ParamSpec { name: string; + group?: 'lora'; type: 'slider' | 'number' | 'bool' | 'text' | 'choice'; scope?: 'request' | 'session'; session_option?: string; diff --git a/webui/native/src/routes/+page.svelte b/webui/native/src/routes/+page.svelte index cbfeefa7e..d56236c55 100644 --- a/webui/native/src/routes/+page.svelte +++ b/webui/native/src/routes/+page.svelte @@ -34,6 +34,7 @@ import { catalog, parameterCatalog, taskLabels } from '$lib/catalog'; import { createTranslator, resolveUiLanguage, uiLanguages } from '$lib/i18n'; import MediaPreview from '$lib/MediaPreview.svelte'; + import LoraControls from '$lib/LoraControls.svelte'; import VoicePicker from '$lib/VoicePicker.svelte'; import { defaultChunkBudget, splitTtsChunks } from '$lib/text'; import { UI_THEME_STORAGE_KEY, resolvedTheme, resolveUiTheme, uiThemes, type UiTheme } from '$lib/theme'; @@ -158,6 +159,7 @@ let folderBrowserLoading = false; let folderBrowserError = ''; let folderBrowser: DirectoryBrowserResponse | null = null; + let folderBrowserTarget: ParamSpec | null = null; let installPoll: number | null = null; let selectedPackageIds: Record = {}; let packageSizes: Record = {}; @@ -302,11 +304,12 @@ function setParameterValue(spec: ParamSpec, value: unknown) { advancedValues = { ...advancedValues, [spec.name]: value }; - if (selected?.family === 'ace_step' && spec.name === 'lora' && value === '') { + if ((selected?.family === 'ace_step' || spec.group === 'lora') && spec.name === 'lora' && value === '') { importedSessionOptions = { ...importedSessionOptions }; - delete importedSessionOptions['ace_step.lora']; + delete importedSessionOptions[spec.session_option || `${selected.family}.lora`]; + if (spec.group === 'lora') delete importedSessionOptions[`${selected.family}.lora_scale`]; } - if (['auk', 'yue2', 'liveavatar', 'fish_drama3', 'ace_step'].includes(selected?.family || '') && spec.scope === 'session') { + if ((spec.group === 'lora' || ['auk', 'yue2', 'liveavatar', 'fish_drama3', 'ace_step'].includes(selected?.family || '')) && spec.scope === 'session') { isLoaded = loadedModels.some((model) => model.id === selectedId && model.loaded && modelMatchesSelectedPackage(model, selected)); } @@ -512,8 +515,9 @@ modelMatchesSelectedPackage(model, selected)); $: modelStudioPanelConfig = modelStudioPanelFor(selected?.family, selected?.task); $: modelStudioPanel = modelStudioPanelConfig?.component; - $: genericParamSpecs = selected?.family === 'ace_step' - ? paramSpecs.filter((spec) => !['lora', 'lora_scale'].includes(spec.name)) : paramSpecs; + $: loraParamSpecs = paramSpecs.filter((spec) => spec.group === 'lora'); + $: genericParamSpecs = paramSpecs.filter((spec) => spec.group !== 'lora' && + !(selected?.family === 'ace_step' && ['lora', 'lora_scale'].includes(spec.name))); $: replacesGenericControls = (modelStudioPanelConfig?.replacesGenericControls || noGenericControlReplacements) as GenericControlReplacements; $: usesYue2Request = modelStudioPanelConfig?.requestMode === 'yue2'; $: usesPanelRequest = modelStudioPanelConfig?.requestMode === 'panel'; @@ -1110,7 +1114,8 @@ } } - async function openFolderBrowser(path = '') { + async function openFolderBrowser(path = '', target: ParamSpec | null = null) { + folderBrowserTarget = target; folderBrowserOpen = true; folderBrowserLoading = true; folderBrowserError = ''; @@ -1125,7 +1130,8 @@ function selectBrowsedFolder() { if (!folderBrowser) return; - modelsFolderInput = folderBrowser.current; + if (folderBrowserTarget) setParameterValue(folderBrowserTarget, folderBrowser.current); + else modelsFolderInput = folderBrowser.current; folderBrowserOpen = false; } @@ -1139,6 +1145,11 @@ !(['vibevoice', 'moss_ttsd'].includes(selected?.family) && spec.name === 'voice_samples') && !(hidesDurationSec && spec.name === 'duration_sec')); advancedValues = Object.fromEntries(byId.map((spec) => [spec.name, spec.default ?? ''])); + const sessionOptions = loadedModels.find((model) => model.id === selectedId)?.session_options || {}; + for (const spec of paramSpecs.filter((spec) => spec.group === 'lora')) { + const value = sessionOptions[spec.session_option || spec.name]; + if (value !== undefined) advancedValues[spec.name] = value; + } if (selected?.family === 'ace_step' && isConfiguredEntry(selected)) { const configured = loadedModels.find((model) => model.id === selectedId)?.session_options; advancedValues = { ...advancedValues, @@ -1437,6 +1448,7 @@ function sessionParameterOptions() { const options = Object.fromEntries(paramSpecs .filter((spec) => spec.scope === 'session') + .filter((spec) => spec.group !== 'lora' || String(advancedValues.lora ?? '').trim().length > 0) .map((spec) => [spec.session_option || spec.name, String(advancedValues[spec.name] ?? spec.default ?? '')]) .filter(([, value]) => value.length > 0)); if (selected?.family === 'auk') { @@ -2514,6 +2526,7 @@ if (selectedId) workflowSelections = { ...workflowSelections, [activeWorkflow]: selectedId }; resetParams(); await refresh(); + if (paramSpecs.some((spec) => spec.group === 'lora')) resetParams(); if (server?.ui_management) { try { let root = await getModelsRoot(); @@ -2741,6 +2754,7 @@ openFolderBrowser(modelsFolder, spec)} {paramSpecs} bind:outputText bind:outputJson bind:status bind:warningStatus bind:errorStatus {ensureLoaded} {requestOptions} {resolveRequestSeed} {setParameterValue} {log} {tr} /> {:else if modelStudioPanel} @@ -2985,6 +2999,13 @@
            {/if} + {#if loraParamSpecs.length} + openFolderBrowser(modelsFolder, spec)} /> + {/if} + {#if genericParamSpecs.length && !replacesGenericControls.params}
            {tr('options.modelParameters')} {genericParamSpecs.length} @@ -3178,22 +3199,22 @@