hyperframes 0.7.38 → 0.7.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +785 -473
- package/dist/hyperframe-runtime.js +22 -22
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +22 -22
- package/dist/skills/hyperframes/SKILL.md +21 -22
- package/dist/skills/hyperframes-cli/SKILL.md +2 -2
- package/dist/skills/hyperframes-cli/references/init-and-scaffold.md +1 -1
- package/dist/skills/hyperframes-cli/references/upgrade-info-misc.md +1 -1
- package/dist/studio/assets/{index-ClUipc8i.js → index-89kPtC4s.js} +1 -1
- package/dist/studio/assets/{index-BLRTwY5l.js → index-B2Utv-2b.js} +200 -200
- package/dist/studio/assets/index-BpM6cnfP.css +1 -0
- package/dist/studio/assets/{index-Ykq7ihge.js → index-CjX8Ljc8.js} +1 -1
- package/dist/studio/{chunk-JND3XUJL.js → chunk-BA66NM4L.js} +1 -1
- package/dist/studio/chunk-BA66NM4L.js.map +1 -0
- package/dist/studio/{domEditingLayers-UIQZJCOA.js → domEditingLayers-H7LDFIJ7.js} +2 -2
- package/dist/studio/index.d.ts +47 -29
- package/dist/studio/index.html +2 -2
- package/dist/studio/index.js +4432 -3045
- package/dist/studio/index.js.map +1 -1
- package/dist/templates/_shared/AGENTS.md +4 -2
- package/dist/templates/_shared/CLAUDE.md +4 -2
- package/package.json +1 -1
- package/dist/studio/assets/index-DJaiR8T2.css +0 -1
- package/dist/studio/chunk-JND3XUJL.js.map +0 -1
- /package/dist/studio/{domEditingLayers-UIQZJCOA.js.map → domEditingLayers-H7LDFIJ7.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -50,7 +50,7 @@ var VERSION;
|
|
|
50
50
|
var init_version = __esm({
|
|
51
51
|
"src/version.ts"() {
|
|
52
52
|
"use strict";
|
|
53
|
-
VERSION = true ? "0.7.
|
|
53
|
+
VERSION = true ? "0.7.40" : "0.0.0-dev";
|
|
54
54
|
}
|
|
55
55
|
});
|
|
56
56
|
|
|
@@ -4891,7 +4891,7 @@ var require_util = __commonJS({
|
|
|
4891
4891
|
return path2;
|
|
4892
4892
|
}
|
|
4893
4893
|
exports.normalize = normalize;
|
|
4894
|
-
function
|
|
4894
|
+
function join116(aRoot, aPath) {
|
|
4895
4895
|
if (aRoot === "") {
|
|
4896
4896
|
aRoot = ".";
|
|
4897
4897
|
}
|
|
@@ -4923,7 +4923,7 @@ var require_util = __commonJS({
|
|
|
4923
4923
|
}
|
|
4924
4924
|
return joined;
|
|
4925
4925
|
}
|
|
4926
|
-
exports.join =
|
|
4926
|
+
exports.join = join116;
|
|
4927
4927
|
exports.isAbsolute = function(aPath) {
|
|
4928
4928
|
return aPath.charAt(0) === "/" || urlRegexp.test(aPath);
|
|
4929
4929
|
};
|
|
@@ -5096,7 +5096,7 @@ var require_util = __commonJS({
|
|
|
5096
5096
|
parsed.path = parsed.path.substring(0, index + 1);
|
|
5097
5097
|
}
|
|
5098
5098
|
}
|
|
5099
|
-
sourceURL =
|
|
5099
|
+
sourceURL = join116(urlGenerate(parsed), sourceURL);
|
|
5100
5100
|
}
|
|
5101
5101
|
return normalize(sourceURL);
|
|
5102
5102
|
}
|
|
@@ -56108,7 +56108,7 @@ var RUNTIME_IIFE;
|
|
|
56108
56108
|
var init_runtime_inline = __esm({
|
|
56109
56109
|
"../core/dist/generated/runtime-inline.js"() {
|
|
56110
56110
|
"use strict";
|
|
56111
|
-
RUNTIME_IIFE = '"use strict";(()=>{var Qa=Object.create;var Jn=Object.defineProperty;var Za=Object.getOwnPropertyDescriptor;var el=Object.getOwnPropertyNames;var tl=Object.getPrototypeOf,nl=Object.prototype.hasOwnProperty;var il=(e,t,n)=>t in e?Jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var te=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var rl=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of el(t))!nl.call(e,r)&&r!==n&&Jn(e,r,{get:()=>t[r],enumerable:!(i=Za(t,r))||i.enumerable});return e};var ol=(e,t,n)=>(n=e!=null?Qa(tl(e)):{},rl(t||!e||!e.__esModule?Jn(n,"default",{value:e,enumerable:!0}):n,e));var xe=(e,t,n)=>il(e,typeof t!="symbol"?t+"":t,n);var Zr=te((sp,li)=>{var X=String,Qr=function(){return{isColorSupported:!1,reset:X,bold:X,dim:X,italic:X,underline:X,inverse:X,hidden:X,strikethrough:X,black:X,red:X,green:X,yellow:X,blue:X,magenta:X,cyan:X,white:X,gray:X,bgBlack:X,bgRed:X,bgGreen:X,bgYellow:X,bgBlue:X,bgMagenta:X,bgCyan:X,bgWhite:X,blackBright:X,redBright:X,greenBright:X,yellowBright:X,blueBright:X,magentaBright:X,cyanBright:X,whiteBright:X,bgBlackBright:X,bgRedBright:X,bgGreenBright:X,bgYellowBright:X,bgBlueBright:X,bgMagentaBright:X,bgCyanBright:X,bgWhiteBright:X}};li.exports=Qr();li.exports.createColors=Qr});var ui=te(()=>{});var dn=te((up,no)=>{"use strict";var eo=Zr(),to=ui(),Dt=class e extends Error{constructor(t,n,i,r,o,s){super(t),this.name="CssSyntaxError",this.reason=t,o&&(this.file=o),r&&(this.source=r),s&&(this.plugin=s),typeof n<"u"&&typeof i<"u"&&(typeof n=="number"?(this.line=n,this.column=i):(this.line=n.line,this.column=n.column,this.endLine=i.line,this.endColumn=i.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(t){if(!this.source)return"";let n=this.source;t==null&&(t=eo.isColorSupported);let i=c=>c,r=c=>c,o=c=>c;if(t){let{bold:c,gray:p,red:f}=eo.createColors(!0);r=x=>c(f(x)),i=x=>p(x),to&&(o=x=>to(x))}let s=n.split(/\\r?\\n/),u=Math.max(this.line-3,0),a=Math.min(this.line+2,s.length),l=String(a).length;return s.slice(u,a).map((c,p)=>{let f=u+1+p,x=" "+(" "+f).slice(-l)+" | ";if(f===this.line){if(c.length>160){let b=20,g=Math.max(0,this.column-b),A=Math.max(this.column+b,this.endColumn+b),C=c.slice(g,A),N=i(x.replace(/\\d/g," "))+c.slice(0,Math.min(this.column-1,b-1)).replace(/[^\\t]/g," ");return r(">")+i(x)+o(C)+`\n `+N+r("^")}let E=i(x.replace(/\\d/g," "))+c.slice(0,this.column-1).replace(/[^\\t]/g," ");return r(">")+i(x)+o(c)+`\n `+E+r("^")}return" "+i(x)+o(c)}).join(`\n`)}toString(){let t=this.showSourceCode();return t&&(t=`\n\n`+t+`\n`),this.name+": "+this.message+t}};no.exports=Dt;Dt.default=Dt});var ci=te((cp,ro)=>{"use strict";var Hl=/(<)(\\/?style\\b)/gi,Gl=/(<)(!--)/g;function Ke(e){return typeof e!="string"||!e.includes("<")?e:e.replace(Hl,"\\\\3c $2").replace(Gl,"\\\\3c $2")}var io={after:`\n`,beforeClose:`\n`,beforeComment:`\n`,beforeDecl:`\n`,beforeOpen:" ",beforeRule:`\n`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function Wl(e){return e[0].toUpperCase()+e.slice(1)}var It=class{constructor(t){this.builder=t}atrule(t,n){let i=t.raws,r="@"+t.name,o=t.params?this.rawValue(t,"params"):"";if(typeof i.afterName<"u"?r+=i.afterName:o&&(r+=" "),t.nodes)this.block(t,r+o);else{let s=(i.between||"")+(n?";":"");this.builder(Ke(r+o+s),t)}}beforeAfter(t,n){let i;t.type==="decl"?i=this.raw(t,null,"beforeDecl"):t.type==="comment"?i=this.raw(t,null,"beforeComment"):n==="before"?i=this.raw(t,null,"beforeRule"):i=this.raw(t,null,"beforeClose");let r=t.parent,o=0;for(;r&&r.type!=="root";)o+=1,r=r.parent;if(i.includes(`\n`)){let s=this.raw(t,null,"indent");if(s.length)for(let u=0;u<o;u++)i+=s}return i}block(t,n){let i=this.raw(t,"between","beforeOpen");this.builder(Ke(n+i)+"{",t,"start");let r;t.nodes&&t.nodes.length?(this.body(t),r=this.raw(t,"after")):r=this.raw(t,"after","emptyBody"),r&&this.builder(Ke(r)),this.builder("}",t,"end")}body(t){let n=t.nodes,i=n.length-1;for(;i>0&&n[i].type==="comment";)i-=1;let r=this.raw(t,"semicolon"),o=t.type==="document";for(let s=0;s<n.length;s++){let u=n[s],a=this.raw(u,"before");a&&this.builder(o?a:Ke(a)),this.stringify(u,i!==s||r)}}comment(t){let n=this.raw(t,"left","commentLeft"),i=this.raw(t,"right","commentRight");this.builder(Ke("/*"+n+t.text+i+"*/"),t)}decl(t,n){let i=t.raws,r=this.raw(t,"between","colon"),o=t.prop+r+this.rawValue(t,"value");t.important&&(o+=i.important||" !important"),n&&(o+=";"),this.builder(Ke(o),t)}document(t){this.body(t)}raw(t,n,i){let r;if(i||(i=n),n&&(r=t.raws[n],typeof r<"u"))return r;let o=t.parent;if(i==="before"&&(!o||o.type==="root"&&o.first===t||o&&o.type==="document"))return"";if(!o)return io[i];let s=t.root(),u=s.rawCache||(s.rawCache={});if(typeof u[i]<"u")return u[i];if(i==="before"||i==="after")return this.beforeAfter(t,i);{let a="raw"+Wl(i);this[a]?r=this[a](s,t):s.walk(l=>{if(r=l.raws[n],typeof r<"u")return!1})}return typeof r>"u"&&(r=io[i]),u[i]=r,r}rawBeforeClose(t){let n;return t.walk(i=>{if(i.nodes&&i.nodes.length>0&&typeof i.raws.after<"u")return n=i.raws.after,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawBeforeComment(t,n){let i;return t.walkComments(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeDecl"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeDecl(t,n){let i;return t.walkDecls(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeRule"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeOpen(t){let n;return t.walk(i=>{if(i.type!=="decl"&&(n=i.raws.between,typeof n<"u"))return!1}),n}rawBeforeRule(t){let n;return t.walk(i=>{if(i.nodes&&(i.parent!==t||t.first!==i)&&typeof i.raws.before<"u")return n=i.raws.before,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawColon(t){let n;return t.walkDecls(i=>{if(typeof i.raws.between<"u")return n=i.raws.between.replace(/[^\\s:]/g,""),!1}),n}rawEmptyBody(t){let n;return t.walk(i=>{if(i.nodes&&i.nodes.length===0&&(n=i.raws.after,typeof n<"u"))return!1}),n}rawIndent(t){if(t.raws.indent)return t.raws.indent;let n;return t.walk(i=>{let r=i.parent;if(r&&r!==t&&r.parent&&r.parent===t&&typeof i.raws.before<"u"){let o=i.raws.before.split(`\n`);return n=o[o.length-1],n=n.replace(/\\S/g,""),!1}}),n}rawSemicolon(t){let n;return t.walk(i=>{if(i.nodes&&i.nodes.length&&i.last.type==="decl"&&(n=i.raws.semicolon,typeof n<"u"))return!1}),n}rawValue(t,n){let i=t[n],r=t.raws[n];return r&&r.value===i?r.raw:i}root(t){if(this.body(t),t.raws.after){let n=t.raws.after,i=t.parent&&t.parent.type==="document";this.builder(i?n:Ke(n))}}rule(t){this.block(t,this.rawValue(t,"selector")),t.raws.ownSemicolon&&this.builder(Ke(t.raws.ownSemicolon),t,"end")}stringify(t,n){if(!this[t.type])throw new Error("Unknown AST node type "+t.type+". Maybe you need to change PostCSS stringifier.");this[t.type](t,n)}};ro.exports=It;It.default=It});var Pt=te((dp,oo)=>{"use strict";var Ul=ci();function di(e,t){new Ul(t).stringify(e)}oo.exports=di;di.default=di});var fn=te((fp,fi)=>{"use strict";fi.exports.isClean=Symbol("isClean");fi.exports.my=Symbol("my")});var Ht=te((mp,so)=>{"use strict";var Vl=dn(),zl=ci(),ql=Pt(),{isClean:Ot,my:jl}=fn();function mi(e,t){let n=new e.constructor;for(let i in e){if(!Object.prototype.hasOwnProperty.call(e,i)||i==="proxyCache")continue;let r=e[i],o=typeof r;i==="parent"&&o==="object"?t&&(n[i]=t):i==="source"?n[i]=r:Array.isArray(r)?n[i]=r.map(s=>mi(s,n)):(o==="object"&&r!==null&&(r=mi(r)),n[i]=r)}return n}function ze(e,t){if(t&&typeof t.offset<"u")return t.offset;let n=1,i=1,r=0;for(let o=0;o<e.length;o++){if(i===t.line&&n===t.column){r=o;break}e[o]===`\n`?(n=1,i+=1):n+=1}return r}var Bt=class{get proxyOf(){return this}constructor(t={}){this.raws={},this[Ot]=!1,this[jl]=!0;for(let n in t)if(n==="nodes"){this.nodes=[];for(let i of t[n])typeof i.clone=="function"?this.append(i.clone()):this.append(i)}else this[n]=t[n]}addToError(t){if(t.postcssNode=this,t.stack&&this.source&&/\\n\\s{4}at /.test(t.stack)){let n=this.source;t.stack=t.stack.replace(/\\n\\s{4}at /,`$&${n.input.from}:${n.start.line}:${n.start.column}$&`)}return t}after(t){return this.parent.insertAfter(this,t),this}assign(t={}){for(let n in t)this[n]=t[n];return this}before(t){return this.parent.insertBefore(this,t),this}cleanRaws(t){delete this.raws.before,delete this.raws.after,t||delete this.raws.between}clone(t={}){let n=mi(this);for(let i in t)n[i]=t[i];return n}cloneAfter(t={}){let n=this.clone(t);return this.parent.insertAfter(this,n),n}cloneBefore(t={}){let n=this.clone(t);return this.parent.insertBefore(this,n),n}error(t,n={}){if(this.source){let{end:i,start:r}=this.rangeBy(n);return this.source.input.error(t,{column:r.column,line:r.line},{column:i.column,line:i.line},n)}return new Vl(t)}getProxyProcessor(){return{get(t,n){return n==="proxyOf"?t:n==="root"?()=>t.root().toProxy():t[n]},set(t,n,i){return t[n]===i||(t[n]=i,(n==="prop"||n==="value"||n==="name"||n==="params"||n==="important"||n==="text")&&t.markDirty()),!0}}}markClean(){this[Ot]=!0}markDirty(){if(this[Ot]){this[Ot]=!1;let t=this;for(;t=t.parent;)t[Ot]=!1}}next(){if(!this.parent)return;let t=this.parent.index(this);return this.parent.nodes[t+1]}positionBy(t={}){let n=this.source.start;if(t.index)n=this.positionInside(t.index);else if(t.word){let i="document"in this.source.input?this.source.input.document:this.source.input.css,o=i.slice(ze(i,this.source.start),ze(i,this.source.end)).indexOf(t.word);o!==-1&&(n=this.positionInside(o))}return n}positionInside(t){let n=this.source.start.column,i=this.source.start.line,r="document"in this.source.input?this.source.input.document:this.source.input.css,o=ze(r,this.source.start),s=o+t;for(let u=o;u<s;u++)r[u]===`\n`?(n=1,i+=1):n+=1;return{column:n,line:i,offset:s}}prev(){if(!this.parent)return;let t=this.parent.index(this);return this.parent.nodes[t-1]}rangeBy(t={}){let n="document"in this.source.input?this.source.input.document:this.source.input.css,i={column:this.source.start.column,line:this.source.start.line,offset:ze(n,this.source.start)},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line,offset:typeof this.source.end.offset=="number"?this.source.end.offset:ze(n,this.source.end)+1}:{column:i.column+1,line:i.line,offset:i.offset+1};if(t.word){let s=n.slice(ze(n,this.source.start),ze(n,this.source.end)).indexOf(t.word);s!==-1&&(i=this.positionInside(s),r=this.positionInside(s+t.word.length))}else t.start?i={column:t.start.column,line:t.start.line,offset:ze(n,t.start)}:t.index&&(i=this.positionInside(t.index)),t.end?r={column:t.end.column,line:t.end.line,offset:ze(n,t.end)}:typeof t.endIndex=="number"?r=this.positionInside(t.endIndex):t.index&&(r=this.positionInside(t.index+1));return(r.line<i.line||r.line===i.line&&r.column<=i.column)&&(r={column:i.column+1,line:i.line,offset:i.offset+1}),{end:r,start:i}}raw(t,n){return new zl().raw(this,t,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...t){if(this.parent){let n=this,i=!1;for(let r of t)r===this?i=!0:i?(this.parent.insertAfter(n,r),n=r):this.parent.insertBefore(n,r);i||this.remove()}return this}root(){let t=this;for(;t.parent&&t.parent.type!=="document";)t=t.parent;return t}toJSON(t,n){let i={},r=n==null;n=n||new Map;let o=0;for(let s in this){if(!Object.prototype.hasOwnProperty.call(this,s)||s==="parent"||s==="proxyCache")continue;let u=this[s];if(Array.isArray(u))i[s]=u.map(a=>typeof a=="object"&&a.toJSON?a.toJSON(null,n):a);else if(typeof u=="object"&&u.toJSON)i[s]=u.toJSON(null,n);else if(s==="source"){if(u==null)continue;let a=n.get(u.input);a==null&&(a=o,n.set(u.input,o),o++),i[s]={end:u.end,inputId:a,start:u.start}}else i[s]=u}return r&&(i.inputs=[...n.keys()].map(s=>s.toJSON())),i}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(t=ql){t.stringify&&(t=t.stringify);let n="";return t(this,i=>{n+=i}),n}warn(t,n,i={}){let r={node:this};for(let o in i)r[o]=i[o];return t.warn(n,r)}};so.exports=Bt;Bt.default=Bt});var Wt=te((pp,ao)=>{"use strict";var $l=Ht(),Gt=class extends $l{constructor(t){super(t),this.type="comment"}};ao.exports=Gt;Gt.default=Gt});var Vt=te((hp,lo)=>{"use strict";var Kl=Ht(),Ut=class extends Kl{get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}constructor(t){t&&typeof t.value<"u"&&typeof t.value!="string"&&(t={...t,value:String(t.value)}),super(t),this.type="decl"}};lo.exports=Ut;Ut.default=Ut});var Je=te((gp,bo)=>{"use strict";var uo=Wt(),co=Vt(),Jl=Ht(),{isClean:fo,my:mo}=fn(),pi,po,ho,hi;function go(e){return e.map(t=>(t.nodes&&(t.nodes=go(t.nodes)),delete t.source,t))}function xo(e){if(e[fo]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)xo(t)}var De=class e extends Jl{get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}append(...t){for(let n of t){let i=this.normalize(n,this.last);for(let r of i)this.proxyOf.nodes.push(r)}return this.markDirty(),this}cleanRaws(t){if(super.cleanRaws(t),this.nodes)for(let n of this.nodes)n.cleanRaws(t)}each(t){if(!this.proxyOf.nodes)return;let n=this.getIterator(),i,r;for(;this.indexes[n]<this.proxyOf.nodes.length&&(i=this.indexes[n],r=t(this.proxyOf.nodes[i],i),r!==!1);)this.indexes[n]+=1;return delete this.indexes[n],r}every(t){return this.nodes.every(t)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let t=this.lastEach;return this.indexes[t]=0,t}getProxyProcessor(){return{get(t,n){return n==="proxyOf"?t:t[n]?n==="each"||typeof n=="string"&&n.startsWith("walk")?(...i)=>t[n](...i.map(r=>typeof r=="function"?(o,s)=>r(o.toProxy(),s):r)):n==="every"||n==="some"?i=>t[n]((r,...o)=>i(r.toProxy(),...o)):n==="root"?()=>t.root().toProxy():n==="nodes"?t.nodes.map(i=>i.toProxy()):n==="first"||n==="last"?t[n].toProxy():t[n]:t[n]},set(t,n,i){return t[n]===i||(t[n]=i,(n==="name"||n==="params"||n==="selector")&&t.markDirty()),!0}}}index(t){return typeof t=="number"?t:(t.proxyOf&&(t=t.proxyOf),this.proxyOf.nodes.indexOf(t))}insertAfter(t,n){let i=this.index(t),r=this.normalize(n,this.proxyOf.nodes[i]).reverse();i=this.index(t);for(let s of r)this.proxyOf.nodes.splice(i+1,0,s);let o;for(let s in this.indexes)o=this.indexes[s],i<o&&(this.indexes[s]=o+r.length);return this.markDirty(),this}insertBefore(t,n){let i=this.index(t),r=i===0?"prepend":!1,o=this.normalize(n,this.proxyOf.nodes[i],r).reverse();i=this.index(t);for(let u of o)this.proxyOf.nodes.splice(i,0,u);let s;for(let u in this.indexes)s=this.indexes[u],i<=s&&(this.indexes[u]=s+o.length);return this.markDirty(),this}normalize(t,n){if(typeof t=="string")t=go(po(t).nodes);else if(typeof t>"u")t=[];else if(Array.isArray(t)){t=t.slice(0);for(let r of t)r.parent&&r.parent.removeChild(r,"ignore")}else if(t.type==="root"&&this.type!=="document"){t=t.nodes.slice(0);for(let r of t)r.parent&&r.parent.removeChild(r,"ignore")}else if(t.type)t=[t];else if(t.prop){if(typeof t.value>"u")throw new Error("Value field is missed in node creation");typeof t.value!="string"&&(t.value=String(t.value)),t=[new co(t)]}else if(t.selector||t.selectors)t=[new hi(t)];else if(t.name)t=[new pi(t)];else if(t.text)t=[new uo(t)];else throw new Error("Unknown node type in node creation");return t.map(r=>(r[mo]||e.rebuild(r),r=r.proxyOf,r.parent&&r.parent.removeChild(r),r[fo]&&xo(r),r.raws||(r.raws={}),typeof r.raws.before>"u"&&n&&typeof n.raws.before<"u"&&(r.raws.before=n.raws.before.replace(/\\S/g,"")),r.parent=this.proxyOf,r))}prepend(...t){t=t.reverse();for(let n of t){let i=this.normalize(n,this.first,"prepend").reverse();for(let r of i)this.proxyOf.nodes.unshift(r);for(let r in this.indexes)this.indexes[r]=this.indexes[r]+i.length}return this.markDirty(),this}push(t){return t.parent=this,this.proxyOf.nodes.push(t),this}removeAll(){for(let t of this.proxyOf.nodes)t.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(t){t=this.index(t),this.proxyOf.nodes[t].parent=void 0,this.proxyOf.nodes.splice(t,1);let n;for(let i in this.indexes)n=this.indexes[i],n>=t&&(this.indexes[i]=n-1);return this.markDirty(),this}replaceValues(t,n,i){return i||(i=n,n={}),this.walkDecls(r=>{n.props&&!n.props.includes(r.prop)||n.fast&&!r.value.includes(n.fast)||(r.value=r.value.replace(t,i))}),this.markDirty(),this}some(t){return this.nodes.some(t)}walk(t){return this.each((n,i)=>{let r;try{r=t(n,i)}catch(o){throw n.addToError(o)}return r!==!1&&n.walk&&(r=n.walk(t)),r})}walkAtRules(t,n){return n?t instanceof RegExp?this.walk((i,r)=>{if(i.type==="atrule"&&t.test(i.name))return n(i,r)}):this.walk((i,r)=>{if(i.type==="atrule"&&i.name===t)return n(i,r)}):(n=t,this.walk((i,r)=>{if(i.type==="atrule")return n(i,r)}))}walkComments(t){return this.walk((n,i)=>{if(n.type==="comment")return t(n,i)})}walkDecls(t,n){return n?t instanceof RegExp?this.walk((i,r)=>{if(i.type==="decl"&&t.test(i.prop))return n(i,r)}):this.walk((i,r)=>{if(i.type==="decl"&&i.prop===t)return n(i,r)}):(n=t,this.walk((i,r)=>{if(i.type==="decl")return n(i,r)}))}walkRules(t,n){return n?t instanceof RegExp?this.walk((i,r)=>{if(i.type==="rule"&&t.test(i.selector))return n(i,r)}):this.walk((i,r)=>{if(i.type==="rule"&&i.selector===t)return n(i,r)}):(n=t,this.walk((i,r)=>{if(i.type==="rule")return n(i,r)}))}};De.registerParse=e=>{po=e};De.registerRule=e=>{hi=e};De.registerAtRule=e=>{pi=e};De.registerRoot=e=>{ho=e};bo.exports=De;De.default=De;De.rebuild=e=>{e.type==="atrule"?Object.setPrototypeOf(e,pi.prototype):e.type==="rule"?Object.setPrototypeOf(e,hi.prototype):e.type==="decl"?Object.setPrototypeOf(e,co.prototype):e.type==="comment"?Object.setPrototypeOf(e,uo.prototype):e.type==="root"&&Object.setPrototypeOf(e,ho.prototype),e[mo]=!0,e.nodes&&e.nodes.forEach(t=>{De.rebuild(t)})}});var mn=te((xp,So)=>{"use strict";var yo=Je(),pt=class extends yo{constructor(t){super(t),this.type="atrule"}append(...t){return this.proxyOf.nodes||(this.nodes=[]),super.append(...t)}prepend(...t){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...t)}};So.exports=pt;pt.default=pt;yo.registerAtRule(pt)});var pn=te((bp,wo)=>{"use strict";var Xl=Je(),Eo,Ao,at=class extends Xl{constructor(t){super({type:"document",...t}),this.nodes||(this.nodes=[])}toResult(t={}){return new Eo(new Ao,this,t).stringify()}};at.registerLazyResult=e=>{Eo=e};at.registerProcessor=e=>{Ao=e};wo.exports=at;at.default=at});var Co=te((yp,Fo)=>{var Yl="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",Ql=(e,t=21)=>(n=t)=>{let i="",r=n|0;for(;r--;)i+=e[Math.random()*e.length|0];return i},Zl=(e=21)=>{let t="",n=e|0;for(;n--;)t+=Yl[Math.random()*64|0];return t};Fo.exports={nanoid:Zl,customAlphabet:Ql}});var hn=te(()=>{});var gn=te(()=>{});var gi=te(()=>{});var _o=te(()=>{});var bi=te((vp,To)=>{"use strict";var{existsSync:eu,readFileSync:tu}=_o(),{dirname:xi,join:nu}=hn(),{SourceMapConsumer:Mo,SourceMapGenerator:vo}=gn();function iu(e){return Buffer?Buffer.from(e,"base64").toString():window.atob(e)}var zt=class{constructor(t,n){if(n.map===!1)return;n.unsafeMap&&(this.unsafeMap=!0),this.loadAnnotation(t),this.inline=this.startWith(this.annotation,"data:");let i=n.map?n.map.prev:void 0,r=this.loadMap(n.from,i);!this.mapFile&&n.from&&(this.mapFile=n.from),this.mapFile&&(this.root=xi(this.mapFile)),r&&(this.text=r)}consumer(){return this.consumerCache||(this.consumerCache=new Mo(this.json||this.text)),this.consumerCache}decodeInline(t){let n=/^data:application\\/json;charset=utf-?8;base64,/,i=/^data:application\\/json;base64,/,r=/^data:application\\/json;charset=utf-?8,/,o=/^data:application\\/json,/,s=t.match(r)||t.match(o);if(s)return decodeURIComponent(t.substr(s[0].length));let u=t.match(n)||t.match(i);if(u)return iu(t.substr(u[0].length));let a=t.slice(22);throw a=a.slice(0,a.indexOf(",")),new Error("Unsupported source map encoding "+a)}getAnnotationURL(t){return t.replace(/^\\/\\*\\s*# sourceMappingURL=/,"").trim()}isMap(t){return typeof t!="object"?!1:typeof t.mappings=="string"||typeof t._mappings=="string"||Array.isArray(t.sections)}loadAnnotation(t){let n=t.match(/\\/\\*\\s*# sourceMappingURL=/g);if(!n)return;let i=t.lastIndexOf(n.pop()),r=t.indexOf("*/",i);i>-1&&r>-1&&(this.annotation=this.getAnnotationURL(t.substring(i,r)))}loadFile(t,n,i){if(!(!i&&!this.unsafeMap&&!/\\.map$/i.test(t))&&(this.root=xi(t),eu(t)))return this.mapFile=t,tu(t,"utf-8").toString().trim()}loadMap(t,n){if(n===!1)return!1;if(n){if(typeof n=="string")return n;if(typeof n=="function"){let i=n(t);if(i){let r=this.loadFile(i,t,!0);if(!r)throw new Error("Unable to load previous source map: "+i.toString());return r}}else{if(n instanceof Mo)return vo.fromSourceMap(n).toString();if(n instanceof vo)return n.toString();if(this.isMap(n))return JSON.stringify(n);throw new Error("Unsupported previous source map format: "+n.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let i=this.annotation;t&&(i=nu(xi(t),i));let r=this.loadFile(i,t,!1);if(r)try{this.json=JSON.parse(r.replace(/^\\)]}\'[^\\n]*\\n/,""))}catch{return}return r}}}startWith(t,n){return t?t.substr(0,n.length)===n:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};To.exports=zt;zt.default=zt});var qt=te((Tp,Do)=>{"use strict";var{nanoid:ru}=Co(),{isAbsolute:Ei,resolve:Ai}=hn(),{SourceMapConsumer:ou,SourceMapGenerator:su}=gn(),{fileURLToPath:No,pathToFileURL:xn}=gi(),Lo=dn(),au=bi(),yi=ui(),Si=Symbol("lineToIndexCache"),lu=!!(ou&&su),Ro=!!(Ai&&Ei);function ko(e){if(e[Si])return e[Si];let t=e.css.split(`\n`),n=new Array(t.length),i=0;for(let r=0,o=t.length;r<o;r++)n[r]=i,i+=t[r].length+1;return e[Si]=n,n}var ht=class{get from(){return this.file||this.id}constructor(t,n={}){if(t===null||typeof t>"u"||typeof t=="object"&&!t.toString)throw new Error(`PostCSS received ${t} instead of CSS string`);if(this.css=t.toString(),this.css[0]==="\\uFEFF"||this.css[0]==="\\uFFFE"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,this.document=this.css,n.document&&(this.document=n.document.toString()),n.from&&(!Ro||/^\\w+:\\/\\//.test(n.from)||Ei(n.from)?this.file=n.from:this.file=Ai(n.from)),Ro&&lu){let i=new au(this.css,n);if(i.text){this.map=i;let r=i.consumer().file;!this.file&&r&&(this.file=this.mapResolve(r))}}this.file||(this.id="<input css "+ru(6)+">"),this.map&&(this.map.file=this.from)}error(t,n,i,r={}){let o,s,u,a,l;if(n&&typeof n=="object"){let p=n,f=i;if(typeof p.offset=="number"){a=p.offset;let x=this.fromOffset(a);n=x.line,i=x.col}else n=p.line,i=p.column,a=this.fromLineAndColumn(n,i);if(typeof f.offset=="number"){u=f.offset;let x=this.fromOffset(u);s=x.line,o=x.col}else s=f.line,o=f.column,u=this.fromLineAndColumn(f.line,f.column)}else if(i)a=this.fromLineAndColumn(n,i);else{a=n;let p=this.fromOffset(a);n=p.line,i=p.col}let c=this.origin(n,i,s,o);return c?l=new Lo(t,c.endLine===void 0?c.line:{column:c.column,line:c.line},c.endLine===void 0?c.column:{column:c.endColumn,line:c.endLine},c.source,c.file,r.plugin):l=new Lo(t,s===void 0?n:{column:i,line:n},s===void 0?i:{column:o,line:s},this.css,this.file,r.plugin),l.input={column:i,endColumn:o,endLine:s,endOffset:u,line:n,offset:a,source:this.css},this.file&&(xn&&(l.input.url=xn(this.file).toString()),l.input.file=this.file),l}fromLineAndColumn(t,n){return ko(this)[t-1]+n-1}fromOffset(t){let n=ko(this),i=n[n.length-1],r=0;if(t>=i)r=n.length-1;else{let o=n.length-2,s;for(;r<o;)if(s=r+(o-r>>1),t<n[s])o=s-1;else if(t>=n[s+1])r=s+1;else{r=s;break}}return{col:t-n[r]+1,line:r+1}}mapResolve(t){return/^\\w+:\\/\\//.test(t)?t:Ai(this.map.consumer().sourceRoot||this.map.root||".",t)}origin(t,n,i,r){if(!this.map)return!1;let o=this.map.consumer(),s=o.originalPositionFor({column:n,line:t});if(!s.source)return!1;let u;typeof i=="number"&&(u=o.originalPositionFor({column:r,line:i}));let a;Ei(s.source)?a=xn(s.source):a=new URL(s.source,this.map.consumer().sourceRoot||xn(this.map.mapFile));let l={column:s.column,endColumn:u&&u.column,endLine:u&&u.line,line:s.line,url:a.toString()};if(a.protocol==="file:")if(No)l.file=No(a);else throw new Error("file: protocol is not available in this PostCSS build");let c=o.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let t={};for(let n of["hasBOM","css","file","id"])this[n]!=null&&(t[n]=this[n]);return this.map&&(t.map={...this.map},t.map.consumerCache&&(t.map.consumerCache=void 0)),t}};Do.exports=ht;ht.default=ht;yi&&yi.registerInput&&yi.registerInput(ht)});var gt=te((Np,Bo)=>{"use strict";var Io=Je(),Po,Oo,Xe=class extends Io{constructor(t){super(t),this.type="root",this.nodes||(this.nodes=[])}normalize(t,n,i){let r=super.normalize(t);if(n){if(i==="prepend")this.nodes.length>1?n.raws.before=this.nodes[1].raws.before:delete n.raws.before;else if(this.first!==n)for(let o of r)o.raws.before=n.raws.before}return r}removeChild(t,n){let i=this.index(t);return!n&&i===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[i].raws.before),super.removeChild(t)}toResult(t={}){return new Po(new Oo,this,t).stringify()}};Xe.registerLazyResult=e=>{Po=e};Xe.registerProcessor=e=>{Oo=e};Bo.exports=Xe;Xe.default=Xe;Io.registerRoot(Xe)});var wi=te((Lp,Ho)=>{"use strict";var jt={comma(e){return jt.split(e,[","],!0)},space(e){let t=[" ",`\n`," "];return jt.split(e,t)},split(e,t,n){let i=[],r="",o=!1,s=0,u=!1,a="",l=!1;for(let c of e)l?l=!1:c==="\\\\"?l=!0:u?c===a&&(u=!1):c===\'"\'||c==="\'"?(u=!0,a=c):c==="("?s+=1:c===")"?s>0&&(s-=1):s===0&&t.includes(c)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=c;return(n||r!=="")&&i.push(r.trim()),i}};Ho.exports=jt;jt.default=jt});var bn=te((Rp,Wo)=>{"use strict";var Go=Je(),uu=wi(),xt=class extends Go{get selectors(){return uu.comma(this.selector)}set selectors(t){let n=this.selector?this.selector.match(/,\\s*/):null,i=n?n[0]:","+this.raw("between","beforeOpen");this.selector=t.join(i)}constructor(t){super(t),this.type="rule",this.nodes||(this.nodes=[])}};Wo.exports=xt;xt.default=xt;Go.registerRule(xt)});var Vo=te((kp,Uo)=>{"use strict";var cu=mn(),du=Wt(),fu=Vt(),mu=qt(),pu=bi(),hu=gt(),gu=bn();function $t(e,t){if(Array.isArray(e))return e.map(r=>$t(r));let{inputs:n,...i}=e;if(n){t=[];for(let r of n){let o={...r,__proto__:mu.prototype};o.map&&(o.map={...o.map,__proto__:pu.prototype}),t.push(o)}}if(i.nodes&&(i.nodes=e.nodes.map(r=>$t(r,t))),i.source){let{inputId:r,...o}=i.source;i.source=o,r!=null&&(i.source.input=t[r])}if(i.type==="root")return new hu(i);if(i.type==="decl")return new fu(i);if(i.type==="rule")return new gu(i);if(i.type==="comment")return new du(i);if(i.type==="atrule")return new cu(i);throw new Error("Unknown node type: "+e.type)}Uo.exports=$t;$t.default=$t});var Ci=te((Dp,Jo)=>{"use strict";var{dirname:yn,relative:qo,resolve:jo,sep:$o}=hn(),{SourceMapConsumer:Ko,SourceMapGenerator:Sn}=gn(),{pathToFileURL:zo}=gi(),xu=qt(),bu=!!(Ko&&Sn),yu=!!(yn&&jo&&qo&&$o),Fi=class{constructor(t,n,i,r){this.stringify=t,this.mapOpts=i.map||{},this.root=n,this.opts=i,this.css=r,this.originalCSS=r,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let t;this.isInline()?t="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?t=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?t=this.mapOpts.annotation(this.opts.to,this.root):t=this.outputFile()+".map";let n=`\n`;this.css.includes(`\\r\n`)&&(n=`\\r\n`),this.css+=n+"/*# sourceMappingURL="+t+" */"}applyPrevMaps(){for(let t of this.previous()){let n=this.toUrl(this.path(t.file)),i=t.root||yn(t.file),r;this.mapOpts.sourcesContent===!1?(r=new Ko(t.text),r.sourcesContent&&(r.sourcesContent=null)):r=t.consumer(),this.map.applySourceMap(r,n,this.toUrl(this.path(i)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1){if(this.root){let t;for(let n=this.root.nodes.length-1;n>=0;n--)t=this.root.nodes[n],t.type==="comment"&&t.text.startsWith("# sourceMappingURL=")&&this.root.removeChild(n)}else if(this.css){let t;for(;(t=this.css.lastIndexOf("/*#"))!==-1;){let n=this.css.indexOf("*/",t+3);if(n===-1)break;for(;t>0&&this.css[t-1]===`\n`;)t--;this.css=this.css.slice(0,t)+this.css.slice(n+2)}}}}generate(){if(this.clearAnnotation(),yu&&bu&&this.isMap())return this.generateMap();{let t="";return this.stringify(this.root,n=>{t+=n}),[t]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let t=this.previous()[0].consumer();t.file=this.outputFile(),this.map=Sn.fromSourceMap(t,{ignoreInvalidMapping:!0})}else this.map=new Sn({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Sn({file:this.outputFile(),ignoreInvalidMapping:!0});let t=1,n=1,i="<no source>",r={generated:{column:0,line:0},original:{column:0,line:0},source:""},o,s;this.stringify(this.root,(u,a,l)=>{if(this.css+=u,a&&l!=="end"&&(r.generated.line=t,r.generated.column=n-1,a.source&&a.source.start?(r.source=this.sourcePath(a),r.original.line=a.source.start.line,r.original.column=a.source.start.column-1,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,this.map.addMapping(r))),s=u.match(/\\n/g),s?(t+=s.length,o=u.lastIndexOf(`\n`),n=u.length-o):n+=u.length,a&&l!=="start"){let c=a.parent||{raws:{}};(!(a.type==="decl"||a.type==="atrule"&&!a.nodes)||a!==c.last||c.raws.semicolon)&&(a.source&&a.source.end?(r.source=this.sourcePath(a),r.original.line=a.source.end.line,r.original.column=a.source.end.column-1,r.generated.line=t,r.generated.column=n-2,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,r.generated.line=t,r.generated.column=n-1,this.map.addMapping(r)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(t=>t.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let t=this.mapOpts.annotation;return typeof t<"u"&&t!==!0?!1:this.previous().length?this.previous().some(n=>n.inline):!0}isMap(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(t=>t.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(t){if(this.mapOpts.absolute||t.charCodeAt(0)===60||/^\\w+:\\/\\//.test(t))return t;let n=this.memoizedPaths.get(t);if(n)return n;let i=this.opts.to?yn(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(i=yn(jo(i,this.mapOpts.annotation)));let r=qo(i,t);return this.memoizedPaths.set(t,r),r}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(t=>{if(t.source&&t.source.input.map){let n=t.source.input.map;this.previousMaps.includes(n)||this.previousMaps.push(n)}});else{let t=new xu(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps}setSourcesContent(){let t={};if(this.root)this.root.walk(n=>{if(n.source){let i=n.source.input.from;if(i&&!t[i]){t[i]=!0;let r=this.usesFileUrls?this.toFileUrl(i):this.toUrl(this.path(i));this.map.setSourceContent(r,n.source.input.css)}}});else if(this.css){let n=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(n,this.css)}}sourcePath(t){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(t.source.input.from):this.toUrl(this.path(t.source.input.from))}toBase64(t){return Buffer?Buffer.from(t).toString("base64"):window.btoa(unescape(encodeURIComponent(t)))}toFileUrl(t){let n=this.memoizedFileURLs.get(t);if(n)return n;if(zo){let i=zo(t).toString();return this.memoizedFileURLs.set(t,i),i}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(t){let n=this.memoizedURLs.get(t);if(n)return n;$o==="\\\\"&&(t=t.replace(/\\\\/g,"/"));let i=encodeURI(t).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(t,i),i}};Jo.exports=Fi});var Qo=te((Ip,Yo)=>{"use strict";var En=/[\\t\\n\\f\\r "#\'()/;[\\\\\\]{}]/g,An=/[\\t\\n\\f\\r !"#\'():;@[\\\\\\]{}]|\\/(?=\\*)/g,Su=/.[\\r\\n"\'(/\\\\]/,Xo=/[\\da-f]/i;Yo.exports=function(t,n={}){let i=t.css.valueOf(),r=n.ignoreErrors,o,s,u,a,l,c,p,f,x,E,b=i.length,g=0,A=[],C=[],N=-1;function $(){return g}function B(_){throw t.error("Unclosed "+_,g)}function v(){return C.length===0&&g>=b}function S(_){if(C.length)return C.pop();if(g>=b)return;let T=_?_.ignoreUnclosed:!1;switch(o=i.charCodeAt(g),o){case 10:case 32:case 9:case 13:case 12:{a=g;do a+=1,o=i.charCodeAt(a);while(o===32||o===10||o===9||o===13||o===12);c=["space",i.slice(g,a)],g=a-1;break}case 91:case 93:case 123:case 125:case 58:case 59:case 41:{let R=String.fromCharCode(o);c=[R,R,g];break}case 40:{if(E=A.length?A.pop()[1]:"",x=i.charCodeAt(g+1),E==="url"&&x!==39&&x!==34&&x!==32&&x!==10&&x!==9&&x!==12&&x!==13){a=g;do{if(p=!1,a=i.indexOf(")",a+1),a===-1)if(r||T){a=g;break}else B("bracket");for(f=a;i.charCodeAt(f-1)===92;)f-=1,p=!p}while(p);c=["brackets",i.slice(g,a+1),g,a],g=a}else g<=N?c=["(","(",g]:(a=i.indexOf(")",g+1),s=i.slice(g,a+1),a===-1||Su.test(s)?(N=a===-1?b:a,c=["(","(",g]):(c=["brackets",s,g,a],g=a));break}case 39:case 34:{l=o===39?"\'":\'"\',a=g;do{if(p=!1,a=i.indexOf(l,a+1),a===-1)if(r||T){a=g+1;break}else B("string");for(f=a;i.charCodeAt(f-1)===92;)f-=1,p=!p}while(p);c=["string",i.slice(g,a+1),g,a],g=a;break}case 64:{En.lastIndex=g+1,En.test(i),En.lastIndex===0?a=i.length-1:a=En.lastIndex-2,c=["at-word",i.slice(g,a+1),g,a],g=a;break}case 92:{for(a=g,u=!0;i.charCodeAt(a+1)===92;)a+=1,u=!u;if(o=i.charCodeAt(a+1),u&&o!==47&&o!==32&&o!==10&&o!==9&&o!==13&&o!==12&&(a+=1,Xo.test(i.charAt(a)))){for(;Xo.test(i.charAt(a+1));)a+=1;i.charCodeAt(a+1)===32&&(a+=1)}c=["word",i.slice(g,a+1),g,a],g=a;break}default:{o===47&&i.charCodeAt(g+1)===42?(a=i.indexOf("*/",g+2)+1,a===0&&(r||T?a=i.length:B("comment")),c=["comment",i.slice(g,a+1),g,a],g=a):(An.lastIndex=g+1,An.test(i),An.lastIndex===0?a=i.length-1:a=An.lastIndex-2,c=["word",i.slice(g,a+1),g,a],A.push(c),g=a);break}}return g++,c}function F(_){C.push(_)}return{back:F,endOfFile:v,nextToken:S,position:$}}});var ns=te((Pp,ts)=>{"use strict";var Eu=mn(),Au=Wt(),wu=Vt(),Fu=gt(),Zo=bn(),Cu=Qo(),es={empty:!0,space:!0};function _u(e){for(let t=e.length-1;t>=0;t--){let n=e[t],i=n[3]||n[2];if(i)return i}}var _i=class{constructor(t){this.input=t,this.root=new Fu,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:t,start:{column:1,line:1,offset:0}}}atrule(t){let n=new Eu;n.name=t[1].slice(1),n.name===""&&this.unnamedAtrule(n,t),this.init(n,t[2]);let i,r,o,s=!1,u=!1,a=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=this.tokenizer.nextToken(),i=t[0],i==="("||i==="["?l.push(i==="("?")":"]"):i==="{"&&l.length>0?l.push("}"):i===l[l.length-1]&&l.pop(),l.length===0)if(i===";"){n.source.end=this.getPosition(t[2]),n.source.end.offset++,this.semicolon=!0;break}else if(i==="{"){u=!0;break}else if(i==="}"){if(a.length>0){for(o=a.length-1,r=a[o];r&&r[0]==="space";)r=a[--o];r&&(n.source.end=this.getPosition(r[3]||r[2]),n.source.end.offset++)}this.end(t);break}else a.push(t);else a.push(t);if(this.tokenizer.endOfFile()){s=!0;break}}n.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(n.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(n,"params",a),s&&(t=a[a.length-1],n.source.end=this.getPosition(t[3]||t[2]),n.source.end.offset++,this.spaces=n.raws.between,n.raws.between="")):(n.raws.afterName="",n.params=""),u&&(n.nodes=[],this.current=n)}checkMissedSemicolon(t){let n=this.colon(t);if(n===!1)return;let i=0,r;for(let o=n-1;o>=0&&(r=t[o],!(r[0]!=="space"&&(i+=1,i===2)));o--);throw this.input.error("Missed semicolon",r[0]==="word"?r[3]+1:r[2])}colon(t){let n=0,i,r,o;for(let[s,u]of t.entries()){if(r=u,o=r[0],o==="("&&(n+=1),o===")"&&(n-=1),n===0&&o===":")if(!i)this.doubleColon(r);else{if(i[0]==="word"&&i[1]==="progid")continue;return s}i=r}return!1}comment(t){let n=new Au;this.init(n,t[2]),n.source.end=this.getPosition(t[3]||t[2]),n.source.end.offset++;let i=t[1].slice(2,-2);if(!i.trim())n.text="",n.raws.left=i,n.raws.right="";else{let r=i.match(/^(\\s*)([^]*\\S)(\\s*)$/);n.text=r[2],n.raws.left=r[1],n.raws.right=r[3]}}createTokenizer(){this.tokenizer=Cu(this.input)}decl(t,n){let i=new wu;this.init(i,t[0][2]);let r=t[t.length-1];for(r[0]===";"&&(this.semicolon=!0,t.pop()),i.source.end=this.getPosition(r[3]||r[2]||_u(t)),i.source.end.offset++;t[0][0]!=="word";)t.length===1&&this.unknownWord(t),i.raws.before+=t.shift()[1];for(i.source.start=this.getPosition(t[0][2]),i.prop="";t.length;){let l=t[0][0];if(l===":"||l==="space"||l==="comment")break;i.prop+=t.shift()[1]}i.raws.between="";let o;for(;t.length;)if(o=t.shift(),o[0]===":"){i.raws.between+=o[1];break}else o[0]==="word"&&/\\w/.test(o[1])&&this.unknownWord([o]),i.raws.between+=o[1];(i.prop[0]==="_"||i.prop[0]==="*")&&(i.raws.before+=i.prop[0],i.prop=i.prop.slice(1));let s=[],u;for(;t.length&&(u=t[0][0],!(u!=="space"&&u!=="comment"));)s.push(t.shift());this.precheckMissedSemicolon(t);for(let l=t.length-1;l>=0;l--){if(o=t[l],o[1].toLowerCase()==="!important"){i.important=!0;let c=this.stringFrom(t,l);c=this.spacesFromEnd(t)+c,c!==" !important"&&(i.raws.important=c);break}else if(o[1].toLowerCase()==="important"){let c=t.slice(0),p="";for(let f=l;f>0;f--){let x=c[f][0];if(p.trim().startsWith("!")&&x!=="space")break;p=c.pop()[1]+p}p.trim().startsWith("!")&&(i.important=!0,i.raws.important=p,t=c)}if(o[0]!=="space"&&o[0]!=="comment")break}t.some(l=>l[0]!=="space"&&l[0]!=="comment")&&(i.raws.between+=s.map(l=>l[1]).join(""),s=[]),this.raw(i,"value",s.concat(t),n),i.value.includes(":")&&!n&&this.checkMissedSemicolon(t)}doubleColon(t){throw this.input.error("Double colon",{offset:t[2]},{offset:t[2]+t[1].length})}emptyRule(t){let n=new Zo;this.init(n,t[2]),n.selector="",n.raws.between="",this.current=n}end(t){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(t[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(t)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(t){if(this.spaces+=t[1],this.current.nodes){let n=this.current.nodes[this.current.nodes.length-1];n&&n.type==="rule"&&!n.raws.ownSemicolon&&(n.raws.ownSemicolon=this.spaces,this.spaces="",n.source.end=this.getPosition(t[2]),n.source.end.offset+=n.raws.ownSemicolon.length)}}getPosition(t){let n=this.input.fromOffset(t);return{column:n.col,line:n.line,offset:t}}init(t,n){this.current.push(t),t.source={input:this.input,start:this.getPosition(n)},t.raws.before=this.spaces,this.spaces="",t.type!=="comment"&&(this.semicolon=!1)}other(t){let n=!1,i=null,r=!1,o=null,s=[],u=t[1].startsWith("--"),a=[],l=t;for(;l;){if(i=l[0],a.push(l),i==="("||i==="[")o||(o=l),s.push(i==="("?")":"]");else if(u&&r&&i==="{")o||(o=l),s.push("}");else if(s.length===0)if(i===";")if(r){this.decl(a,u);return}else break;else if(i==="{"){this.rule(a);return}else if(i==="}"){this.tokenizer.back(a.pop()),n=!0;break}else i===":"&&(r=!0);else i===s[s.length-1]&&(s.pop(),s.length===0&&(o=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(n=!0),s.length>0&&this.unclosedBracket(o),n&&r){if(!u)for(;a.length&&(l=a[a.length-1][0],!(l!=="space"&&l!=="comment"));)this.tokenizer.back(a.pop());this.decl(a,u)}else this.unknownWord(a)}parse(){let t;for(;!this.tokenizer.endOfFile();)switch(t=this.tokenizer.nextToken(),t[0]){case"space":this.spaces+=t[1];break;case";":this.freeSemicolon(t);break;case"}":this.end(t);break;case"comment":this.comment(t);break;case"at-word":this.atrule(t);break;case"{":this.emptyRule(t);break;default:this.other(t);break}this.endFile()}precheckMissedSemicolon(){}raw(t,n,i,r){let o,s,u=i.length,a="",l=!0,c,p;for(let f=0;f<u;f+=1)o=i[f],s=o[0],s==="space"&&f===u-1&&!r?l=!1:s==="comment"?(p=i[f-1]?i[f-1][0]:"empty",c=i[f+1]?i[f+1][0]:"empty",!es[p]&&!es[c]?a.slice(-1)===","?l=!1:a+=o[1]:l=!1):a+=o[1];if(!l){let f=i.reduce((x,E)=>x+E[1],"");t.raws[n]={raw:f,value:a}}t[n]=a}rule(t){t.pop();let n=new Zo;this.init(n,t[0][2]),n.raws.between=this.spacesAndCommentsFromEnd(t),this.raw(n,"selector",t),this.current=n}spacesAndCommentsFromEnd(t){let n,i="";for(;t.length&&(n=t[t.length-1][0],!(n!=="space"&&n!=="comment"));)i=t.pop()[1]+i;return i}spacesAndCommentsFromStart(t){let n,i="";for(;t.length&&(n=t[0][0],!(n!=="space"&&n!=="comment"));)i+=t.shift()[1];return i}spacesFromEnd(t){let n,i="";for(;t.length&&(n=t[t.length-1][0],n==="space");)i=t.pop()[1]+i;return i}stringFrom(t,n){let i="";for(let r=n;r<t.length;r++)i+=t[r][1];return t.splice(n,t.length-n),i}unclosedBlock(){let t=this.current.source.start;throw this.input.error("Unclosed block",t.line,t.column)}unclosedBracket(t){throw this.input.error("Unclosed bracket",{offset:t[2]},{offset:t[2]+1})}unexpectedClose(t){throw this.input.error("Unexpected }",{offset:t[2]},{offset:t[2]+1})}unknownWord(t){throw this.input.error("Unknown word "+t[0][1],{offset:t[0][2]},{offset:t[0][2]+t[0][1].length})}unnamedAtrule(t,n){throw this.input.error("At-rule without name",{offset:n[2]},{offset:n[2]+n[1].length})}};ts.exports=_i});var Fn=te((Op,is)=>{"use strict";var Mu=Je(),vu=qt(),Tu=ns();function wn(e,t){let n=new vu(e,t),i=new Tu(n);try{i.parse()}catch(r){throw r}return i.root}is.exports=wn;wn.default=wn;Mu.registerParse(wn)});var Mi=te((Bp,rs)=>{"use strict";var Kt=class{constructor(t,n={}){if(this.type="warning",this.text=t,n.node&&n.node.source){let i=n.node.rangeBy(n);this.line=i.start.line,this.column=i.start.column,this.endLine=i.end.line,this.endColumn=i.end.column}for(let i in n)this[i]=n[i]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};rs.exports=Kt;Kt.default=Kt});var Cn=te((Hp,os)=>{"use strict";var Nu=Mi(),Jt=class{get content(){return this.css}constructor(t,n,i){this.processor=t,this.messages=[],this.root=n,this.opts=i,this.css="",this.map=void 0}toString(){return this.css}warn(t,n={}){n.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(n.plugin=this.lastPlugin.postcssPlugin);let i=new Nu(t,n);return this.messages.push(i),i}warnings(){return this.messages.filter(t=>t.type==="warning")}};os.exports=Jt;Jt.default=Jt});var vi=te((Gp,as)=>{"use strict";var ss={};as.exports=function(t){ss[t]||(ss[t]=!0,typeof console<"u"&&console.warn&&console.warn(t))}});var Li=te((Up,ds)=>{"use strict";var Lu=Je(),Ru=pn(),ku=Ci(),Du=Fn(),ls=Cn(),Iu=gt(),Pu=Pt(),{isClean:He,my:Ou}=fn(),Wp=vi(),Bu={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},Hu={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},Gu={Once:!0,postcssPlugin:!0,prepare:!0},bt=0;function Xt(e){return typeof e=="object"&&typeof e.then=="function"}function cs(e){let t=!1,n=Bu[e.type];return e.type==="decl"?t=e.prop.toLowerCase():e.type==="atrule"&&(t=e.name.toLowerCase()),t&&e.append?[n,n+"-"+t,bt,n+"Exit",n+"Exit-"+t]:t?[n,n+"-"+t,n+"Exit",n+"Exit-"+t]:e.append?[n,bt,n+"Exit"]:[n,n+"Exit"]}function us(e){let t;return e.type==="document"?t=["Document",bt,"DocumentExit"]:e.type==="root"?t=["Root",bt,"RootExit"]:t=cs(e),{eventIndex:0,events:t,iterator:0,node:e,visitorIndex:0,visitors:[]}}function Ti(e){return e[He]=!1,e.nodes&&e.nodes.forEach(t=>Ti(t)),e}var Ni={},Ye=class e{get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}constructor(t,n,i){this.stringified=!1,this.processed=!1;let r;if(typeof n=="object"&&n!==null&&(n.type==="root"||n.type==="document"))r=Ti(n);else if(n instanceof e||n instanceof ls)r=Ti(n.root),n.map&&(typeof i.map>"u"&&(i.map={}),i.map.inline||(i.map.inline=!1),i.map.prev=n.map);else{let o=Du;i.syntax&&(o=i.syntax.parse),i.parser&&(o=i.parser),o.parse&&(o=o.parse);try{r=o(n,i)}catch(s){this.processed=!0,this.error=s}r&&!r[Ou]&&Lu.rebuild(r)}this.result=new ls(t,r,i),this.helpers={...Ni,postcss:Ni,result:this.result},this.plugins=this.processor.plugins.map(o=>typeof o=="object"&&o.prepare?{...o,...o.prepare(this.result)}:o)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(t){return this.async().catch(t)}finally(t){return this.async().then(t,t)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(t,n){let i=this.result.lastPlugin;try{n&&n.addToError(t),this.error=t,t.name==="CssSyntaxError"&&!t.plugin?(t.plugin=i.postcssPlugin,t.setMessage()):i.postcssVersion}catch(r){console&&console.error&&console.error(r)}return t}prepareVisitors(){this.listeners={};let t=(n,i,r)=>{this.listeners[i]||(this.listeners[i]=[]),this.listeners[i].push([n,r])};for(let n of this.plugins)if(typeof n=="object")for(let i in n){if(!Hu[i]&&/^[A-Z]/.test(i))throw new Error(`Unknown event ${i} in ${n.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Gu[i])if(typeof n[i]=="object")for(let r in n[i])r==="*"?t(n,i,n[i][r]):t(n,i+"-"+r.toLowerCase(),n[i][r]);else typeof n[i]=="function"&&t(n,i,n[i])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let t=0;t<this.plugins.length;t++){let n=this.plugins[t],i=this.runOnRoot(n);if(Xt(i))try{await i}catch(r){throw this.handleError(r)}}if(this.prepareVisitors(),this.hasListener){let t=this.result.root;for(;!t[He];){t[He]=!0;let n=[us(t)];for(;n.length>0;){let i=this.visitTick(n);if(Xt(i))try{await i}catch(r){let o=n[n.length-1].node;throw this.handleError(r,o)}}}if(this.listeners.OnceExit)for(let[n,i]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if(t.type==="document"){let r=t.nodes.map(o=>i(o,this.helpers));await Promise.all(r)}else await i(t,this.helpers)}catch(r){throw this.handleError(r)}}}return this.processed=!0,this.stringify()}runOnRoot(t){this.result.lastPlugin=t;try{if(typeof t=="object"&&t.Once){if(this.result.root.type==="document"){let n=this.result.root.nodes.map(i=>t.Once(i,this.helpers));return Xt(n[0])?Promise.all(n):n}return t.Once(this.result.root,this.helpers)}else if(typeof t=="function")return t(this.result.root,this.result)}catch(n){throw this.handleError(n)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let t=this.result.opts,n=Pu;t.syntax&&(n=t.syntax.stringify),t.stringifier&&(n=t.stringifier),n.stringify&&(n=n.stringify);let i=this.result.root.source;if(t.map===void 0&&!(i&&i.input&&i.input.map)){let s="";return n(this.result.root,u=>{s+=u}),this.result.css=s,this.result}let o=new ku(n,this.result.root,this.result.opts).generate();return this.result.css=o[0],this.result.map=o[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let t of this.plugins){let n=this.runOnRoot(t);if(Xt(n))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let t=this.result.root;for(;!t[He];)t[He]=!0,this.walkSync(t);if(this.listeners.OnceExit)if(t.type==="document")for(let n of t.nodes)this.visitSync(this.listeners.OnceExit,n);else this.visitSync(this.listeners.OnceExit,t)}return this.result}then(t,n){return this.async().then(t,n)}toString(){return this.css}visitSync(t,n){for(let[i,r]of t){this.result.lastPlugin=i;let o;try{o=r(n,this.helpers)}catch(s){throw this.handleError(s,n.proxyOf)}if(n.type!=="root"&&n.type!=="document"&&!n.parent)return!0;if(Xt(o))throw this.getAsyncError()}}visitTick(t){let n=t[t.length-1],{node:i,visitors:r}=n;if(i.type!=="root"&&i.type!=="document"&&!i.parent){t.pop();return}if(r.length>0&&n.visitorIndex<r.length){let[s,u]=r[n.visitorIndex];n.visitorIndex+=1,n.visitorIndex===r.length&&(n.visitors=[],n.visitorIndex=0),this.result.lastPlugin=s;try{return u(i.toProxy(),this.helpers)}catch(a){throw this.handleError(a,i)}}if(n.iterator!==0){let s=n.iterator,u;for(;u=i.nodes[i.indexes[s]];)if(i.indexes[s]+=1,!u[He]){u[He]=!0,t.push(us(u));return}n.iterator=0,delete i.indexes[s]}let o=n.events;for(;n.eventIndex<o.length;){let s=o[n.eventIndex];if(n.eventIndex+=1,s===bt){i.nodes&&i.nodes.length&&(i[He]=!0,n.iterator=i.getIterator());return}else if(this.listeners[s]){n.visitors=this.listeners[s];return}}t.pop()}walkSync(t){t[He]=!0;let n=cs(t);for(let i of n)if(i===bt)t.nodes&&t.each(r=>{r[He]||this.walkSync(r)});else{let r=this.listeners[i];if(r&&this.visitSync(r,t.toProxy()))return}}warnings(){return this.sync().warnings()}};Ye.registerPostcss=e=>{Ni=e};ds.exports=Ye;Ye.default=Ye;Iu.registerLazyResult(Ye);Ru.registerLazyResult(Ye)});var ms=te((zp,fs)=>{"use strict";var Wu=Ci(),Uu=Fn(),Vu=Cn(),zu=Pt(),Vp=vi(),Yt=class{get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let t,n=Uu;try{t=n(this._css,this._opts)}catch(i){this.error=i}if(this.error)throw this.error;return this._root=t,t}get[Symbol.toStringTag](){return"NoWorkResult"}constructor(t,n,i){n=n.toString(),this.stringified=!1,this._processor=t,this._css=n,this._opts=i,this._map=void 0;let r=zu;this.result=new Vu(this._processor,void 0,this._opts),this.result.css=n;let o=this;Object.defineProperty(this.result,"root",{get(){return o.root}});let s=new Wu(r,void 0,this._opts,n);if(s.isMap()){let[u,a]=s.generate();u&&(this.result.css=u),a&&(this.result.map=a)}else s.clearAnnotation(),this.result.css=s.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(t){return this.async().catch(t)}finally(t){return this.async().then(t,t)}sync(){if(this.error)throw this.error;return this.result}then(t,n){return this.async().then(t,n)}toString(){return this._css}warnings(){return[]}};fs.exports=Yt;Yt.default=Yt});var hs=te((qp,ps)=>{"use strict";var qu=pn(),ju=Li(),$u=ms(),Ku=gt(),lt=class{constructor(t=[]){this.version="8.5.14",this.plugins=this.normalize(t)}normalize(t){let n=[];for(let i of t)if(i.postcss===!0?i=i():i.postcss&&(i=i.postcss),typeof i=="object"&&Array.isArray(i.plugins))n=n.concat(i.plugins);else if(typeof i=="object"&&i.postcssPlugin)n.push(i);else if(typeof i=="function")n.push(i);else if(!(typeof i=="object"&&(i.parse||i.stringify)))throw new Error(i+" is not a PostCSS plugin");return n}process(t,n={}){return!this.plugins.length&&!n.parser&&!n.stringifier&&!n.syntax?new $u(this,t,n):new ju(this,t,n)}use(t){return this.plugins=this.plugins.concat(this.normalize([t])),this}};ps.exports=lt;lt.default=lt;Ku.registerProcessor(lt);qu.registerProcessor(lt)});var ws=te((jp,As)=>{"use strict";var gs=mn(),xs=Wt(),Ju=Je(),Xu=dn(),bs=Vt(),ys=pn(),Yu=Vo(),Qu=qt(),Zu=Li(),ec=wi(),tc=Ht(),nc=Fn(),Ri=hs(),ic=Cn(),Ss=gt(),Es=bn(),rc=Pt(),oc=Mi();function le(...e){return e.length===1&&Array.isArray(e[0])&&(e=e[0]),new Ri(e)}le.plugin=function(t,n){let i=!1;function r(...s){console&&console.warn&&!i&&(i=!0,console.warn(t+`: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(t+`: \\u91CC\\u9762 postcss.plugin \\u88AB\\u5F03\\u7528. \\u8FC1\\u79FB\\u6307\\u5357:\nhttps://www.w3ctech.com/topic/2226`));let u=n(...s);return u.postcssPlugin=t,u.postcssVersion=new Ri().version,u}let o;return Object.defineProperty(r,"postcss",{get(){return o||(o=r()),o}}),r.process=function(s,u,a){return le([r(a)]).process(s,u)},r};le.stringify=rc;le.parse=nc;le.fromJSON=Yu;le.list=ec;le.comment=e=>new xs(e);le.atRule=e=>new gs(e);le.decl=e=>new bs(e);le.rule=e=>new Es(e);le.root=e=>new Ss(e);le.document=e=>new ys(e);le.CssSyntaxError=Xu;le.Declaration=bs;le.Container=Ju;le.Processor=Ri;le.Document=ys;le.Comment=xs;le.Warning=oc;le.AtRule=gs;le.Result=ic;le.Input=Qu;le.Rule=Es;le.Root=Ss;le.Node=tc;Zu.registerPostcss(le);As.exports=le;le.default=le});function un(){return globalThis}function L(e,t){if(typeof window>"u")return;let n=un(),i=n.__hf?.onSwallowed;if(i)try{i({label:e,error:t})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${e} swallowed:`,t)}function Fe(e){try{window.parent.postMessage(e,"*")}catch(t){L("bridge.postMessage",t)}}var sl={play:(e,t)=>t.onPlay(),pause:(e,t)=>t.onPause(),"stop-media":(e,t)=>t.onStopMedia(),seek:(e,t)=>t.onSeek(Number(e.frame??0),e.seekMode??"commit"),tick:(e,t)=>t.onTick(),"set-muted":(e,t)=>t.onSetMuted(!!e.muted),"set-volume":(e,t)=>t.onSetVolume(Math.max(0,Math.min(1,Number(e.volume??1)))),"set-media-output-muted":(e,t)=>t.onSetMediaOutputMuted(!!e.muted),"set-native-media-sync-disabled":(e,t)=>t.onSetNativeMediaSyncDisabled(!!e.disabled),"set-web-audio-media-disabled":(e,t)=>t.onSetWebAudioMediaDisabled(!!e.disabled),"set-playback-rate":(e,t)=>t.onSetPlaybackRate(Number(e.playbackRate??1)),"set-color-grading":(e,t)=>t.onSetColorGrading(e.target??null,e.grading??null),"set-color-grading-compare":(e,t)=>t.onSetColorGradingCompare(e.target??null,e.compare??null),"enable-pick-mode":(e,t)=>t.onEnablePickMode(),"disable-pick-mode":(e,t)=>t.onDisablePickMode(),"flash-elements":e=>al(e)};function al(e){let t=e.selectors,n=e.duration||800;t&&ll(t,n)}function yr(e){let t=n=>{let i=n.data;if(!i||i.source!=="hf-parent"||i.type!=="control")return;let r=i.action;if(typeof r!="string")return;let o=sl[r];o&&o(i,e)};return window.addEventListener("message",t),Fe({source:"hf-preview",type:"ready"}),t}function ll(e,t){if(!document.getElementById("__hf-flash-styles")){let n=document.createElement("style");n.id="__hf-flash-styles",n.textContent=`\n .__hf-flash {\n outline: 2px solid rgba(59, 130, 246, 0.6) !important;\n outline-offset: 2px !important;\n animation: __hf-flash-pulse ${t}ms ease-out forwards !important;\n }\n @keyframes __hf-flash-pulse {\n 0% { outline-color: rgba(59, 130, 246, 0.8); }\n 100% { outline-color: transparent; }\n }\n `,document.head.appendChild(n)}for(let n of e)try{document.querySelectorAll(n).forEach(r=>{r.classList.add("__hf-flash"),setTimeout(()=>r.classList.remove("__hf-flash"),t)})}catch(i){L("bridge.flashElements.querySelector",i)}}var Xn=null;function Sr(e){Xn=e}function ot(e,t){if(Xn)try{Xn({source:"hf-preview",type:"analytics",event:e,properties:t??{}})}catch(n){L("runtime.analytics.site1",n)}}function Er(e){let t=[],n=l=>{if(typeof l.getAnimations!="function")return[];try{return l.getAnimations()}catch{return[]}},i=l=>e?.resolveStartSeconds?e.resolveStartSeconds(l):Number.parseFloat(l.getAttribute("data-start")??"0")||0,r=(l,c)=>{let p=null;try{p=l.effect?.getComputedTiming?.()??null}catch(x){L("runtime.adapters.css.site5",x)}if(!p)return{};let f=Number(p.endTime);return Number.isFinite(f)?{endSeconds:c+f/1e3}:{unbounded:!0}},o=(l,c)=>{for(let p of l){try{p.currentTime=c}catch(f){L("runtime.adapters.css.site1",f)}try{p.pause()}catch(f){L("runtime.adapters.css.site2",f)}}},s=l=>{for(let c of l)try{c.play()}catch(p){L("runtime.adapters.css.site3",p)}},u=l=>{for(let c of l)try{c.pause()}catch(p){L("runtime.adapters.css.site4",p)}},a=l=>{l.baseDelay?l.el.style.animationDelay=l.baseDelay:l.el.style.removeProperty("animation-delay"),l.basePlayState?l.el.style.animationPlayState=l.basePlayState:l.el.style.removeProperty("animation-play-state")};return{name:"css",discover:()=>{t=[];let l=document.querySelectorAll("*");for(let c of l){if(!(c instanceof HTMLElement))continue;let p=window.getComputedStyle(c);!p.animationName||p.animationName==="none"||t.push({el:c,baseDelay:c.style.animationDelay||"",basePlayState:c.style.animationPlayState||"",animations:n(c)})}},getInferredDurationSeconds:()=>{let l=0;for(let c of t){if(!c.el.isConnected)continue;let p=i(c.el);for(let f of n(c.el)){let x=r(f,p);x.endSeconds!=null&&(l=Math.max(l,x.endSeconds))}}return l>0?l:null},seek:l=>{let c=Number(l.time)||0;for(let p of t){if(!p.el.isConnected)continue;let f=i(p.el),x=Math.max(0,c-f)*1e3,E=p.animations;if(E.length>0){o(E,x);continue}p.el.style.animationPlayState="paused",p.el.style.animationDelay=`-${(x/1e3).toFixed(3)}s`}},pause:()=>{for(let l of t){if(!l.el.isConnected)continue;let c=l.animations;c.length>0&&u(c),a(l)}},play:()=>{for(let l of t)l.el.isConnected&&(a(l),s(l.animations))},revert:()=>{t=[]}}}function Ar(e){return{name:"gsap",discover:()=>{},seek:t=>{let n=e.getTimeline();if(!n)return;n.pause();let i=Math.max(0,Number(t.time)||0);typeof n.totalTime=="function"?(n.totalTime(i+.001,!0),n.totalTime(i,!1)):n.seek(i,!1)},pause:()=>{let t=e.getTimeline();t&&t.pause()}}}function wr(){return{name:"animejs",discover:()=>{try{let e=window.anime;if(!e||typeof e.running>"u")return;let t=e.running;if(!Array.isArray(t)||t.length===0)return;let n=window.__hfAnime??[],i=new Set(n);for(let r of t)i.has(r)||n.push(r);window.__hfAnime=n}catch(e){L("runtime.adapters.animejs.site1",e)}},seek:e=>{let t=Math.max(0,(Number(e.time)||0)*1e3),n=window.__hfAnime;if(!(!n||n.length===0))for(let i of n)try{typeof i.seek=="function"&&i.seek(t)}catch(r){L("runtime.adapters.animejs.site2",r)}},pause:()=>{let e=window.__hfAnime;if(!(!e||e.length===0))for(let t of e)try{typeof t.pause=="function"&&t.pause()}catch(n){L("runtime.adapters.animejs.site3",n)}},play:()=>{let e=window.__hfAnime;if(!(!e||e.length===0))for(let t of e)try{typeof t.play=="function"&&t.play()}catch(n){L("runtime.adapters.animejs.site4",n)}},revert:()=>{}}}function Cr(){return{name:"lottie",discover:()=>{try{let e=window.lottie;if(e&&typeof e.getRegisteredAnimations=="function"){let t=e.getRegisteredAnimations();if(Array.isArray(t)&&t.length>0){let n=window.__hfLottie??[],i=new Set(n);for(let r of t)i.has(r)||n.push(r);window.__hfLottie=n}}}catch(e){L("runtime.adapters.lottie.site1",e)}},seek:e=>{let t=Math.max(0,Number(e.time)||0),n=window.__hfLottie;if(!(!n||n.length===0))for(let i of n)try{if(Yn(i))i.goToAndStop(t*1e3,!1);else if(Qn(i)){if(typeof i.setCurrentRawFrameValue=="function"){let r=i.totalFrames??0,o=i.frameRate??30,s=t*o;r>0&&i.setCurrentRawFrameValue(Math.min(s,r-1))}else if(typeof i.seek=="function"){let r=i.duration??1,o=Math.min(100,t/r*100);i.seek(o)}}}catch(r){L("runtime.adapters.lottie.site2",r)}},pause:()=>{let e=window.__hfLottie;if(!(!e||e.length===0))for(let t of e)try{(Yn(t)||Qn(t))&&t.pause()}catch(n){L("runtime.adapters.lottie.site3",n)}},revert:()=>{},getInferredDurationSeconds:()=>{let e=window.__hfLottie;if(!e||e.length===0)return null;let t=0,n=!1;for(let i of e){let r=null;try{r=ul(i)}catch(o){L("runtime.adapters.lottie.site4",o)}r!=null&&(n=!0,t=Math.max(t,r))}return n?t:null}}}function Fr(e,t){return!Number.isFinite(e)||!e||e<=0||!Number.isFinite(t)||!t||t<=0?null:e/t}function ul(e){return Yn(e)?Fr(e.totalFrames,e.frameRate):Qn(e)?Number.isFinite(e.duration)&&(e.duration??0)>0?e.duration??null:Fr(e.totalFrames,e.frameRate):null}function Yn(e){return typeof e=="object"&&e!==null&&typeof e.goToAndStop=="function"}function Qn(e){return typeof e=="object"&&e!==null&&typeof e.pause=="function"&&("totalFrames"in e||"duration"in e)}var Zn=-1;function cn(e){if(e!==Zn){Zn=e;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:e}}))}catch(t){L("runtime.adapters.seek-dispatch.site1",t)}}}function _r(e){Zn=e;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:e}}))}catch(t){L("runtime.adapters.seek-dispatch.force",t)}}function Mr(){let e=null,t=0,n=null,i=null,r=null,o=null,s=()=>{if(typeof window>"u")return null;let c=window.THREE?.DefaultLoadingManager;return!c||typeof c!="object"||typeof c.itemsLoaded!="number"||typeof c.itemsTotal!="number"?null:c},u=l=>{o||l.itemsTotal<=l.itemsLoaded||(o=new Promise(c=>{l.onLoad=function(){try{r?.call(this)}finally{o=null,l.onLoad=r??null,c()}}}))},a=l=>{n!==l&&(n=l,i=l.onStart??null,r=l.onLoad??null,l.onStart=function(c,p,f){try{i?.call(this,c,p,f)}finally{u(l)}})};return{name:"three",discover:()=>{let l=s();l&&(a(l),u(l))},seek:l=>{e=Math.max(0,Number(l.time)||0),t=e,window.__hfThreeTime=e,cn(e)},pause:()=>{e==null&&(e=Math.max(0,t))},play:()=>{e=null},revert:()=>{e=null,t=0},getReadyPromise:()=>{let l=s();return!l||l.itemsTotal<=l.itemsLoaded?null:(o||u(l),o)}}}function Be(e){let t=null,n=new WeakSet;return{name:e.name,discover:()=>{},seek:()=>{},pause:()=>{},play:()=>{},revert:()=>{},getReadyPromise:()=>{let i=e.getInstances();if(i.length===0)return null;let r=i.filter(o=>!n.has(o));return r.length===0?null:t||(t=Promise.allSettled(r.map(o=>e.waitFor(o).then(()=>{n.add(o)}))).then(()=>{t=null}),t)}}}function vr(){return Be({name:"mapbox",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfMapbox;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>{if(e.loaded()){t();return}e.on("load",t)})})}function Tr(){return Be({name:"leaflet",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfLeaflet;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>e.whenReady(t))})}function Nr(){return Be({name:"google-maps",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfGoogleMaps;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>{let n=e.addListener("tilesloaded",()=>{n.remove(),t()})})})}function Lr(){return Be({name:"maplibre",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfMaplibre;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>{if(e.loaded()){t();return}e.on("load",t)})})}function Rr(){return Be({name:"d3",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfD3;return Array.isArray(e)?e:[]},waitFor:e=>e.end()})}function kr(){let e=null,t=0;return{name:"typegpu",discover:()=>{},seek:n=>{e=Math.max(0,Number(n.time)||0),t=e,window.__hfTypegpuTime=e,cn(e)},pause:()=>{e==null&&(e=Math.max(0,t))},play:()=>{e=null},revert:()=>{e=null,t=0}}}function Dr(e){let t=e.nextElementSibling;if(t instanceof HTMLImageElement&&t.classList.contains("__render_frame__")&&t.complete&&t.naturalWidth>0)return t;if(e.id){let n=document.getElementById(`__render_frame_${e.id}__`);if(n instanceof HTMLImageElement&&n.complete&&n.naturalWidth>0)return n}return null}function Ir(){let e=globalThis.GPUQueue;if(!e?.prototype?.copyExternalImageToTexture)return;let t=e.prototype.copyExternalImageToTexture;e.prototype.copyExternalImageToTexture=function(n,i,r){if(n?.source instanceof HTMLVideoElement){let o=Dr(n.source);if(o)return t.call(this,{...n,source:o},i,r)}return t.call(this,n,i,r)}}function Pr(){let e=[globalThis.WebGL2RenderingContext,globalThis.WebGLRenderingContext],t=["texImage2D","texSubImage2D"];for(let n of e){let i=n?.prototype;if(i)for(let r of t){let o=i[r];if(typeof o!="function"||o.__hfVideoPatched)continue;let s=function(...u){let a=u.length-1,l=u[a];if(l instanceof HTMLVideoElement){let c=Dr(l);c&&(u[a]=c)}return o.apply(this,u)};s.__hfVideoPatched=!0,i[r]=s}}}function Or(){let e=!1,t=0,n=!1,i,r,o,s=new Set,u=new WeakMap,a=()=>{if(!document.getAnimations)return[];try{return document.getAnimations()}catch{return[]}},l=g=>{let A=Number(g.currentTime);return Number.isFinite(A)&&A>0?A:0},c=(g,A)=>A<=0?g:g>=A?Math.max(0,g-A):g,p=(g,A)=>{let C=u.get(g);if(C)return C;let N={compositionTimeMs:A,animationTimeMs:e?c(l(g),A):l(g)};return u.set(g,N),N},f=(g,A)=>{if(!s.has(g)){s.add(g);let C=()=>{s.delete(g)};try{g.addEventListener("finish",C,{once:!0}),g.addEventListener("cancel",C,{once:!0})}catch(N){L("runtime.adapters.waapi.site4",N)}}p(g,A)},x=(g,A)=>{for(let C of g)f(C,A)},E=()=>{if(n||typeof Element>"u")return;let g=Element.prototype;if(typeof g.animate!="function"||g.__hfOriginalAnimate)return;let A=g.animate;try{Object.defineProperty(g,"__hfOriginalAnimate",{value:A,configurable:!0});let C=function(...N){let $=A.apply(this,N);return f($,t),$};g.animate=C,i=g,r=A,o=C,n=!0}catch{}},b=g=>{let A=null;try{A=g.effect?.getComputedTiming?.()??null}catch($){L("runtime.adapters.waapi.site4",$)}if(!A)return{};let C=Number(A.endTime);return Number.isFinite(C)?{endSeconds:(u.get(g)?.compositionTimeMs??0)/1e3+C/1e3}:{unbounded:!0}};return{name:"waapi",discover:()=>{e=!0,E(),x(a(),t)},seek:g=>{let A=Math.max(0,(Number(g.time)||0)*1e3);t=A,(!e||s.size>0)&&x(a(),e?A:0);for(let C of s){let N=e?p(C,A):p(C,0),$=N.animationTimeMs+Math.max(0,A-N.compositionTimeMs);try{C.currentTime=$}catch(B){L("runtime.adapters.waapi.site1",B)}try{C.pause()}catch(B){L("runtime.adapters.waapi.site2",B)}}},pause:()=>{e||x(a(),t);for(let g of s)try{g.pause()}catch(A){L("runtime.adapters.waapi.site3",A)}},revert:()=>{if(s.clear(),u=new WeakMap,e=!1,t=0,i&&r&&o&&i.animate===o)try{i.animate=r,i.__hfOriginalAnimate===r&&delete i.__hfOriginalAnimate}catch(g){L("runtime.adapters.waapi.site5",g)}i=void 0,r=void 0,o=void 0,n=!1},getInferredDurationSeconds:()=>{let g=0;for(let A of a()){let C=b(A);C.endSeconds!=null&&(g=Math.max(g,C.endSeconds))}return g>0?g:null}}}function Br(e,t){if(e.length===0)return 1;let n=0;for(;n<e.length-2&&t>=e[n+1].time;)n+=1;let i=e[n],r=e[n+1]??i,o=r.time-i.time,s=o<=0?0:Math.min(1,Math.max(0,(t-i.time)/o));return i.volume+(r.volume-i.volume)*s}function cl(e,t,n,i){let r=Number.parseFloat(e.dataset.start??"0")||0,o=Number.parseFloat(e.dataset.end??""),s=Number.parseFloat(e.dataset.duration??""),u=Number.isFinite(o)&&o>r?o:Number.isFinite(s)&&s>0?r+s:n,a=Number.parseFloat(e.dataset.volume??""),l=Number.isFinite(a)?Math.max(0,Math.min(1,a)):1;e.volume=l;let c=1/Math.min(60,Math.max(1,i)),p=Math.max(0,r),f=Math.min(n,u),x=[];for(let b=p;b<=f+1e-6;b+=c){let g=Math.min(f,b);t(g);let A=Number(e.volume);if(!Number.isFinite(A))continue;let C=Math.max(0,Math.min(1,A)),N=x.at(-1);if((!N||Math.abs(N.volume-C)>1e-4||g===f)&&x.push({time:Number(g.toFixed(6)),volume:Number(C.toFixed(6))}),g===f)break}return x.some(b=>Math.abs(b.volume-l)>1e-4)?x:null}function Hr(e,t,n,i){if(!t||!(e instanceof HTMLAudioElement)&&!(e instanceof HTMLVideoElement)||n<=0)return;let o=cl(e,s=>{try{typeof t.totalTime=="function"?t.totalTime(s,!0):typeof t.seek=="function"&&t.seek(s,!0)}catch{}},n,60);o&&i.set(e,o)}function Tt(e){let t=e.defaultPlaybackRate;return Number.isFinite(t)&&t>0?Math.max(.1,Math.min(5,t)):1}function Gr(e){let t=Array.from(document.querySelectorAll("video, audio")),n=e?.shouldIncludeElement?t.filter(s=>e.shouldIncludeElement?.(s)):t.filter(s=>s.hasAttribute("data-start")),i=[],r=[],o=0;for(let s of n){let u=e?.resolveStartSeconds?e.resolveStartSeconds(s):Number.parseFloat(s.dataset.start??"0");if(!Number.isFinite(u))continue;let a=Number.parseFloat(s.dataset.playbackStart??s.dataset.mediaStart??"0")||0,l=Tt(s),c=s.loop,p=Number.isFinite(s.duration)&&s.duration>0?s.duration:null,f=e?.resolveDurationSeconds?.(s)??Number.parseFloat(s.dataset.duration??"");(!Number.isFinite(f)||f<=0)&&p!=null&&(f=Math.max(0,(p-a)/l));let x=Number.isFinite(f)&&f>0?u+f:Number.POSITIVE_INFINITY,E=Number.parseFloat(s.dataset.volume??""),b={el:s,start:u,mediaStart:a,duration:Number.isFinite(f)&&f>0?f:Number.POSITIVE_INFINITY,end:x,volume:Number.isFinite(E)?E:null,playbackRate:l,loop:c,sourceDuration:p};i.push(b),s.tagName==="VIDEO"&&r.push(b),Number.isFinite(x)&&(o=Math.max(o,x))}return{timedMediaEls:n,mediaClips:i,videoClips:r,maxMediaEnd:o}}var ei=new WeakMap,Mt=new WeakMap,ti=new WeakSet,ft=new WeakSet;function dl(e){if(ft.has(e))return;ft.add(e);let t=()=>ft.delete(e);e.addEventListener("playing",t,{once:!0}),e.addEventListener("pause",t,{once:!0}),e.addEventListener("error",t,{once:!0})}var fl=3;function ml(e){return e.error!=null||e.networkState===fl}var ni=new WeakMap;function vt(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):1}function Wr(e){let t=!!(e.outputMuted||e.userMuted);for(let n of e.clips){let{el:i}=n;if(!i.isConnected)continue;let r=(e.timeSeconds-n.start)*n.playbackRate+n.mediaStart;if(e.timeSeconds>=n.start&&e.timeSeconds<=n.end&&r>=0&&(!i.ended||n.loop)){if(n.loop&&n.sourceDuration!=null&&n.sourceDuration>0){let T=n.sourceDuration-n.mediaStart;T>0&&r>=n.sourceDuration&&(r=n.mediaStart+(r-n.mediaStart)%T)}let s=vt(e.userVolume??1),u=vt(n.volume??1),a=ni.get(i),l=vt(i.volume),c;n.volumeKeyframes&&n.volumeKeyframes.length>0?c=vt(Br(n.volumeKeyframes,r)):a===void 0||Math.abs(l-a)>1e-4?c=l:c=u;let p=vt(c*s);i.volume=p,ni.set(i,p),e.onElementVolume?.(i,p),(t||e.isWebAudioOwned?.(i))&&(i.muted=!0),i.preload!=="auto"&&(i.preload="auto");try{i.playbackRate=n.playbackRate*e.playbackRate}catch(T){L("runtime.media.site1",T)}let f=.04,x=2,E=i.currentTime||0,b=Math.abs(E-r),g=r-E,A=ei.get(i);ei.set(i,g);let C=A===void 0,N=!C&&Math.abs(g-A)>.5,$=b>3,B=b>.5&&(C||N||$),v=i.tagName==="VIDEO"&&!i.paused,S=A!==void 0&&Math.abs(g-A)<.004,F=!1;if(!v&&!B&&!C&&S&&b>f){let T=(Mt.get(i)??0)+1;Mt.set(i,T),T>=x&&(F=!0,Mt.set(i,0))}else b<=f&&Mt.set(i,0);let _=!v&&e.forceSync&&b>.02;if(B||F||_){if(!(i.tagName==="VIDEO"&&i.id&&!!document.getElementById(`__render_frame_${i.id}__`))){try{i.currentTime=r}catch(R){L("runtime.media.site2",R)}if(Math.abs(i.currentTime-r)>.5&&!ti.has(i)){ti.add(i),i.load();try{i.currentTime=r}catch(R){L("runtime.media.site3",R)}}}ft.delete(i)}e.playing&&i.paused&&!ft.has(i)&&!ml(i)?(dl(i),i.play().catch(T=>{ft.delete(i),(T&&typeof T=="object"&&"name"in T?String(T.name??""):"")==="NotAllowedError"&&e.onAutoplayBlocked?.()})):!e.playing&&!i.paused&&i.pause();continue}ei.delete(i),Mt.delete(i),ti.delete(i),ni.delete(i),i.paused||i.pause()}}var pl=["[data-hyperframes-ignore]","[data-hyperframes-picker-ignore]","[data-hf-ignore]","[data-no-inspect]","[data-no-pick]","[data-hyper-shader-loading]"].join(","),hl=["[data-hyperframes-picker-block]","[data-hyper-shader-loading]"].join(","),gl="data-hf-color-grading-source-hidden";function Ur(e){let t=!1,n=null,i=null,r=null,o=null;function s(S,F){try{window.dispatchEvent(new CustomEvent(S,{detail:F}))}catch(_){L("runtime.picker.site1",_)}}function u(S){r=S,s("hyperframe:picker:hovered",{elementInfo:r,isPickMode:t,timestamp:Date.now()})}function a(S){o=S,s("hyperframe:picker:selected",{elementInfo:o,isPickMode:t,timestamp:Date.now()})}function l(S){let F=S.ownerDocument.defaultView;if(!F)return!1;let _=S;for(;_&&_!==document.body&&_!==document.documentElement;){let T=F.getComputedStyle(_);if(T.display==="none"||T.visibility==="hidden"||T.pointerEvents==="none")return!0;let R=Number.parseFloat(T.opacity);if(Number.isFinite(R)&&R<=.01&&!_.hasAttribute(gl))return!0;_=_.parentElement}return!1}function c(S){if(!S||S===document.body||S===document.documentElement)return!1;let F=S.tagName.toLowerCase();return!(F==="script"||F==="style"||F==="link"||F==="meta"||S.classList.contains("__hf-pick-highlight")||S.closest(pl)||l(S))}function p(S){return!!S?.closest(hl)}function f(S){let F=S;if(F.id)return`#${F.id}`;let _=S.getAttribute("data-composition-id");if(_)return`[data-composition-id="${CSS.escape(_)}"]`;let T=S.getAttribute("data-composition-src");if(T)return`[data-composition-src="${CSS.escape(T)}"]`;let R=S.getAttribute("data-track-index");if(R)return`[data-track-index="${CSS.escape(R)}"]`;let W=S.tagName.toLowerCase(),q=S.parentElement;if(!q)return W;let ie=q.querySelectorAll(`:scope > ${W}`);if(ie.length===1)return W;for(let P=0;P<ie.length;P+=1)if(ie[P]===S)return`${W}:nth-of-type(${P+1})`;return W}function x(S){let F=S.tagName.toLowerCase(),_=(S.textContent??"").trim().replace(/\\s+/g," "),T=(R,W)=>R.length>W?`${R.slice(0,W-1)}\\u2026`:R;return F==="h1"||F==="h2"||F==="h3"?"Heading":F==="p"||F==="span"||F==="div"?_.length>0?T(_,56):"Text":F==="img"?"Image":F==="video"?"Video":F==="audio"?"Audio":F==="svg"?"Shape":S.getAttribute("data-composition-src")?"Composition":F==="section"?"Section":`${F.charAt(0).toUpperCase()}${F.slice(1)}`}function E(S,F,_){let T=typeof _=="number"&&_>0?_:8,R=[];if(document.elementsFromPoint)R=document.elementsFromPoint(S,F);else if(document.elementFromPoint){let ie=document.elementFromPoint(S,F);R=ie?[ie]:[]}if(p(R[0]??null))return[];let W={},q=[];for(let ie=0;ie<R.length;ie+=1){let P=R[ie];if(!c(P))continue;let se=`${P.tagName}::${P.id||""}::${ie}`;if(!W[se]&&(W[se]=!0,q.push(P),q.length>=T))break}return q}function b(S){let F=S.getBoundingClientRect(),_={};for(let R=0;R<S.attributes.length;R+=1){let W=S.attributes[R];W.name.startsWith("data-")&&(_[W.name]=W.value)}return{id:S.id||null,tagName:S.tagName.toLowerCase(),selector:f(S),label:x(S),boundingBox:{x:F.left,y:F.top,width:F.width,height:F.height},textContent:S.textContent?S.textContent.trim().slice(0,200):null,src:S.getAttribute("src")||S.getAttribute("data-composition-src")||null,dataAttributes:_}}function g(S,F,_){return E(S,F,_).map(b)}function A(S){if(!t)return;let _=E(S.clientX,S.clientY,1)[0]??(S.target instanceof Element?S.target:null);if(!c(_)||n===_)return;n&&n.classList.remove("__hf-pick-highlight"),n=_,_.classList.add("__hf-pick-highlight");let T=b(_);u(T),e.postMessage({source:"hf-preview",type:"element-hovered",elementInfo:T})}function C(S){if(!t)return;S.preventDefault(),S.stopPropagation(),S.stopImmediatePropagation();let F=g(S.clientX,S.clientY,8);F.length!==0&&(u(F[0]??null),e.postMessage({source:"hf-preview",type:"element-pick-candidates",candidates:F,selectedIndex:0,point:{x:S.clientX,y:S.clientY}}))}function N(S){S.key==="Escape"&&(B(),e.postMessage({source:"hf-preview",type:"pick-mode-cancelled"}))}function $(){t||(t=!0,i=document.createElement("style"),i.textContent=[".__hf-pick-highlight { outline: 2px solid #4f8cf7 !important; outline-offset: 2px; cursor: crosshair !important; }",".__hf-pick-active * { cursor: crosshair !important; }"].join(`\n`),document.head.appendChild(i),document.body.classList.add("__hf-pick-active"),document.addEventListener("mousemove",A,!0),document.addEventListener("click",C,!0),document.addEventListener("keydown",N,!0),s("hyperframe:picker:mode",{isPickMode:!0,timestamp:Date.now()}))}function B(){t&&(t=!1,n&&(n.classList.remove("__hf-pick-highlight"),n=null),i&&(i.remove(),i=null),document.body.classList.remove("__hf-pick-active"),document.removeEventListener("mousemove",A,!0),document.removeEventListener("click",C,!0),document.removeEventListener("keydown",N,!0),s("hyperframe:picker:mode",{isPickMode:!1,timestamp:Date.now()}))}function v(){window.__HF_PICKER_API={enable:$,disable:B,isActive:()=>t,getHovered:()=>r,getSelected:()=>o,getCandidatesAtPoint:(S,F,_)=>Number.isFinite(S)&&Number.isFinite(F)?g(S,F,_):[],pickAtPoint:(S,F,_)=>{if(!Number.isFinite(S)||!Number.isFinite(F))return null;let T=g(S,F,8);if(!T.length)return null;let R=Math.max(0,Math.min(T.length-1,Number(_??0))),W=T[R]??null;return W?(a(W),e.postMessage({source:"hf-preview",type:"element-picked",elementInfo:W}),B(),W):null},pickManyAtPoint:(S,F,_)=>{if(!Number.isFinite(S)||!Number.isFinite(F))return[];let T=g(S,F,8);if(!T.length)return[];let R=[],W=Array.isArray(_)?_:[0];for(let q of W){let ie=Math.max(0,Math.min(T.length-1,Math.floor(Number(q)))),P=T[ie];if(!P)continue;R.some(Ee=>Ee.selector===P.selector&&Ee.tagName===P.tagName)||R.push(P)}return R.length?(a(R[0]??null),e.postMessage({source:"hf-preview",type:"element-picked-many",elementInfos:R}),B(),R):[]}},s("hyperframe:picker:api-ready",{hasApi:!0,timestamp:Date.now()})}return{enablePickMode:$,disablePickMode:B,installPickerApi:v}}var xl=["width","height","top","left","right","bottom","inset","object-fit","object-position","z-index","opacity","visibility","filter","mix-blend-mode","backdrop-filter","border-radius","overflow","clip-path","mask","mask-image","mask-size","mask-position","mask-repeat","transform","transform-origin","translate","rotate","scale","box-sizing"];function mt(e,t){let n=Number.isFinite(t)&&t>0?t:30,i=Number.isFinite(e)&&e>0?e:0;return Math.floor(i*n+1e-9)/n}function Vr(e,t,n=xl){for(let i of n){let r=t.getPropertyValue(i);r&&e.setProperty(i,r)}}function Nt(e,t,n){let i=e?.[t];return typeof i=="function"?Number(i.call(e))||n:typeof i=="number"&&Number.isFinite(i)?i:(i!=null&&L("runtime.player.nonConformantNum",{prop:t,actual:typeof i}),n)}function ke(e,t){let n=e?.[t];if(typeof n=="function"){n.call(e);return}n!==void 0&&L("runtime.player.nonConformantVoid",{method:t,actual:typeof n})}function Lt(e,t,n){if(e){for(let i of Object.values(e))if(!(!i||i===t))try{n(i)}catch(r){L("runtime.player.site1",r)}}}function zr(e,t,n){let i=mt(t,n);return ke(e,"pause"),typeof e.totalTime=="function"?e.totalTime(i,!1):typeof e.seek=="function"&&e.seek(i,!1),i}function bl(e,t,n,i){let r=[];Lt(e,t,o=>{ke(o,"play"),r.push(o)});try{return zr(t,n,i)}finally{for(let o of r)try{ke(o,"pause")}catch(s){L("runtime.player.site2",s)}}}function yl(e,t){Lt(e,t,n=>{ke(n,"play")})}function qr(e){return{_timeline:null,play:()=>{let t=e.getTimeline();if(!t||e.getIsPlaying())return;let n=Math.max(0,Number(e.getSafeDuration?.()??Nt(t,"duration",0))||0);n>0&&Math.max(0,Nt(t,"time",0))>=n&&(ke(t,"pause"),typeof t.seek=="function"&&t.seek(0,!1),e.onDeterministicSeek(0),e.setIsPlaying(!1),e.onSyncMedia(0,!1),e.onRenderFrameSeek(0)),typeof t.timeScale=="function"&&t.timeScale(e.getPlaybackRate()),ke(t,"play"),Lt(e.getTimelineRegistry?.(),t,i=>{typeof i.timeScale=="function"&&i.timeScale(e.getPlaybackRate()),ke(i,"play")}),e.onDeterministicPlay(),e.setIsPlaying(!0),e.onShowNativeVideos(),e.onStatePost(!0)},pause:()=>{let t=e.getTimeline();if(!t)return;ke(t,"pause"),Lt(e.getTimelineRegistry?.(),t,i=>{ke(i,"pause")});let n=Math.max(0,Nt(t,"time",0));e.onDeterministicSeek(n),e.onDeterministicPause(),e.setIsPlaying(!1),e.onSyncMedia(n,!1),e.onRenderFrameSeek(n),e.onStatePost(!0)},seek:(t,n)=>{let i=e.getTimeline();if(!i)return;let r=Math.max(0,Number(t)||0),o=e.getIsPlaying(),s=bl(e.getTimelineRegistry?.(),i,r,e.getCanonicalFps());e.onDeterministicSeek(s),n?.keepPlaying&&o?(typeof i.timeScale=="function"&&i.timeScale(e.getPlaybackRate()),ke(i,"play"),Lt(e.getTimelineRegistry?.(),i,u=>{typeof u.timeScale=="function"&&u.timeScale(e.getPlaybackRate()),ke(u,"play")}),e.onDeterministicPlay(),e.onShowNativeVideos(),e.onSyncMedia(s,!0)):(e.setIsPlaying(!1),e.onSyncMedia(s,!1)),e.onRenderFrameSeek(s),e.onStatePost(!0)},renderSeek:t=>{let n=e.getTimeline(),i=e.getCanonicalFps(),r=n?(yl(e.getTimelineRegistry?.(),n),zr(n,t,i)):mt(Math.max(0,Number(t)||0),i);e.onDeterministicSeek(r),e.setIsPlaying(!1),e.onSyncMedia(r,!1),e.onRenderFrameSeek(r),e.onStatePost(!0)},getTime:()=>Nt(e.getTimeline(),"time",0),getDuration:()=>Nt(e.getTimeline(),"duration",0),isPlaying:()=>e.getIsPlaying(),setPlaybackRate:t=>e.setPlaybackRate(t),getPlaybackRate:()=>e.getPlaybackRate()}}function jr(){return{capturedTimeline:null,isPlaying:!1,currentTime:0,deterministicAdapters:[],canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,nativeMediaSyncDisabled:!1,webAudioMediaDisabled:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,beforeUnloadHandler:null,injectedCompStyles:[],injectedCompScripts:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,transportClock:null,transportRafId:null}}var Sl=new Set(["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"]);function ri(e){return e.id||e.getAttribute("data-hf-id")||null}function ii(e){if(e==null)return null;let t=Number(e);return Number.isFinite(t)?t:null}function El(e,t){let n=e.getAttribute("data-composition-id");if(!n)return null;let i=Number(t[n]?.duration?.());return Number.isFinite(i)&&i>0?i:null}function Al(e){if(!(e instanceof HTMLMediaElement)||!Number.isFinite(e.duration))return null;let t=ii(e.getAttribute("data-playback-start"))??ii(e.getAttribute("data-media-start"))??0;return e.duration>t?e.duration-t:null}function wl(e,t,n,i){let r=ii(e.getAttribute("data-duration"));return r!=null&&r>0?r:El(e,t)??Al(e)??Math.max(0,n-i)}function Fl(e){for(let[t,n]of e){let i=t.parentElement;for(;i;){let r=e.get(i);if(r){n.parentId=r.id,r.children.push(n);break}i=i.parentElement}}}function $r(e){let{startResolver:t,timelineRegistry:n,rootDuration:i}=e,r=new Map,o=document.querySelector("[data-composition-id]"),s=0;for(let u of document.querySelectorAll("[data-start]")){if(u===o||Sl.has(u.tagName))continue;let a=t.resolveStartForElement(u,0);if(wl(u,n,i,a)<=0)continue;let l={id:ri(u)??`__clip-${s++}`,element:u,parentId:null,children:[]};r.set(u,l)}return Fl(r),{roots:Array.from(r.values()).filter(u=>u.parentId===null)}}var Cl="data-hf-authored-duration",_l="data-hf-authored-end";function st(e){if(e==null||e==="")return null;let t=Number(e);return Number.isFinite(t)?t:null}function Ml(e){return st(e.getAttribute("data-duration"))}function vl(e){return st(e.getAttribute("data-end"))}function Tl(e){return st(e.getAttribute(Cl))}function Nl(e){return st(e.getAttribute(_l))}function Ll(e){let t=(e??"").trim();if(!t)return null;let n=st(t);if(n!=null)return{kind:"absolute",value:n};let i=t.match(/^([A-Za-z0-9_.:-]+)(?:\\s*([+-])\\s*([0-9]*\\.?[0-9]+))?$/);if(!i)return null;let r=(i[1]??"").trim();if(!r)return null;let o=i[2]??"+",s=i[3]??"0",u=Number.parseFloat(s),a=Number.isFinite(u)?Math.max(0,u):0,l=o==="-"?-a:a;return{kind:"reference",refId:r,offset:l}}function $e(e){let t=e.timelineRegistry??{},n=e.includeAuthoredTimingAttrs??!1,i=new WeakMap,r=new WeakMap,o=new Set,s=c=>{let p=document.getElementById(c);return p||(document.querySelector(`[data-composition-id="${CSS.escape(c)}"]`)??null)},u=c=>{let p=r.get(c);if(p!==void 0)return p;let f=null,x=Ml(c)??(n?Tl(c):null);if(x!=null&&x>0&&(f=x),f==null||f<=0){let E=vl(c)??(n?Nl(c):null);if(E!=null){let b=l(c,0),g=E-b;Number.isFinite(g)&&g>0&&(f=g)}}if((f==null||f<=0)&&c instanceof HTMLMediaElement){let E=st(c.getAttribute("data-playback-start"))??st(c.getAttribute("data-media-start"))??0;Number.isFinite(c.duration)&&c.duration>E&&(f=(c.duration-E)/Tt(c))}if(f==null||f<=0){let E=c.getAttribute("data-composition-id");if(E){let b=t[E]??null;if(b&&typeof b.duration=="function")try{let g=Number(b.duration());Number.isFinite(g)&&g>0&&(f=g)}catch(g){L("runtime.startResolver.site1",g)}}}return f!=null&&Number.isFinite(f)&&f>0?(r.set(c,f),f):(r.set(c,null),null)},a=(c,p)=>{if(c.hasAttribute("data-composition-id")){let x=c.parentElement?.closest("[data-composition-id]");return x?l(x,p):0}let f=c.closest("[data-composition-id]");return f?l(f,p):0},l=(c,p)=>{let f=i.get(c);if(f!==void 0)return f??p;if(o.has(c))return p;o.add(c);try{let x=Ll(c.getAttribute("data-start"));if(!x){if(c.hasAttribute("data-composition-id")){let C=c.parentElement;if(C&&(C.hasAttribute("data-composition-src")||C.hasAttribute("data-composition-id")||C.hasAttribute("data-composition-file"))){let N=l(C,p);return i.set(c,N),N}}return i.set(c,p),p}if(x.kind==="absolute"){let C=Math.max(0,x.value),N=Math.max(0,a(c,p)+C);return i.set(c,N),N}let E=s(x.refId);if(!E)return i.set(c,p),p;let b=l(E,0),g=u(E);if(g==null||g<=0){let C=Math.max(0,b+x.offset);return i.set(c,C),C}let A=Math.max(0,b+g+x.offset);return i.set(c,A),A}finally{o.delete(c)}};return{resolveStartForElement:(c,p=0)=>l(c,Math.max(0,p)),resolveDurationForElement:c=>u(c)}}function oi(e){let t=e.trim().toLowerCase();return!(!t||t==="main"||t.includes("caption")||t.includes("ambient"))}var Rl="data-hf-authored-duration",kl="data-hf-authored-end";function Ce(e){if(e==null||e==="")return null;let t=Number(e);return Number.isFinite(t)?t:null}function si(e){return Ce(e.getAttribute("data-duration"))??Ce(e.getAttribute(Rl))}function Kr(e){return Ce(e.getAttribute("data-end"))??Ce(e.getAttribute(kl))}function ai(...e){let t=e.filter(n=>Number.isFinite(n??null));return t.length===0?null:Math.max(...t)}var Jr={composition:0,video:1,image:2,element:3,audio:4};function Dl(e){if(e.length===0)return;let t=new Map;for(let s of e){let u=t.get(s.track)??new Set;u.add(s.kind),t.set(s.track,u)}if(!Array.from(t.values()).some(s=>s.size>1))return;let i=0,r=new Map,o=[...t.keys()].sort((s,u)=>s-u);for(let s of o){let u=t.get(s);if(u.size===1)r.set(`${s}:${[...u][0]}`,i++);else{let a=[...u].sort((l,c)=>(Jr[l]??99)-(Jr[c]??99));for(let l of a)r.set(`${s}:${l}`,i++)}}for(let s of e){let u=`${s.track}:${s.kind}`,a=r.get(u);a!=null&&(s.track=a)}}function kt(e){let t=String(e??"").trim();if(!t)return null;let n=t.toLowerCase();if(n.startsWith("data:")||n.startsWith("javascript:"))return null;try{return new URL(t,document.baseURI).toString()}catch{return t}}function Xr(e){let t=e.getAttribute("src")??e.getAttribute("data-src");if(t)return kt(t);let n=e.getAttribute("data-composition-src");if(n)return kt(n);let i=e.querySelector("img[src], video[src], audio[src], source[src]");return i?kt(i.getAttribute("src")):null}function Il(e){let t=e.className;return typeof t!="string"?null:t.split(/\\s+/).map(n=>n.trim()).find(n=>n&&n!=="clip"&&!n.startsWith("__hf-"))??null}function Pl(e){if(!e)return null;try{return new URL(e,document.baseURI).pathname.split("/").filter(Boolean).at(-1)??null}catch{return e.split(/[\\\\/]/).filter(Boolean).at(-1)??null}}function Ol(e){let t=e.textContent?.replace(/\\s+/g," ").trim();return t?t.length>32?`${t.slice(0,31)}...`:t:null}function Rt(e){let t=e.replace(/\\.[^.]+$/i,"").replace(/[-_]+/g," ").replace(/\\s+/g," ").trim();return t?t.replace(/\\b\\w/g,n=>n.toUpperCase()):e}function Bl(e,t,n){let i=e.getAttribute("data-timeline-label")??e.getAttribute("data-label")??e.getAttribute("aria-label")??null;if(i?.trim())return i.trim();let r=e.getAttribute("data-composition-id");if(r)return Rt(r);let o=e.id;if(o)return Rt(o);let s=Il(e);if(s)return Rt(s);let u=Pl(Xr(e));if(u)return Rt(u);let a=Ol(e);return a||`${Rt(t)} ${n+1}`}function Yr(e){let n=window.__timelines??{},i=$e({timelineRegistry:n,includeAuthoredTimingAttrs:!0}),r=O=>{if(!O)return null;let D=n[O]??null;if(!D||typeof D.duration!="function")return null;try{let G=Number(D.duration());return Number.isFinite(G)&&G>0?G:null}catch{return null}},o=O=>{let D=Ce(O.getAttribute("data-duration"));if(D!=null&&D>0)return D;let G=Ce(O.getAttribute("data-playback-start"))??Ce(O.getAttribute("data-media-start"))??0;return Number.isFinite(O.duration)&&O.duration>G?Math.max(0,(O.duration-G)/Tt(O)):null},s=()=>{let O=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(O.length===0)return null;let D=0;for(let G of O){let Q=G.hasAttribute("data-hf-auto-start")?i.resolveStartForElement(G,0):Math.max(0,Number(G.getAttribute("data-start")??0)||0);if(!Number.isFinite(Q))continue;let ae=o(G);ae==null||ae<=0||(D=Math.max(D,Math.max(0,Q)+ae))}return D>0?D:null},u=(O,D)=>{let G=[],Q=null,ae=null,j=null,z=O.parentElement;for(;z;){let Y=z.getAttribute("data-composition-id");Y&&(G.push(Y),!j&&z!==D&&(j=Y),Q==null&&(Q=i.resolveStartForElement(z,0)),ae==null&&(ae=Ce(z.getAttribute("data-duration"))??r(Y)??null)),z=z.parentElement}return{parentCompositionId:j,compositionAncestors:G.reverse(),inheritedStart:Q,inheritedDuration:ae}},a=document.querySelector("[data-composition-id]"),l=Array.from(document.querySelectorAll("[data-composition-id]")),c=a?.getAttribute("data-composition-id")??null,p=a?i.resolveStartForElement(a,0):0,f=s(),x=f!=null?Math.max(0,f-Math.max(0,p)):null,E=r(c),b=si(a??document.body),g=ai(...l.filter(O=>O!==a).map(O=>{let D=i.resolveStartForElement(O,0),G=i.resolveDurationForElement(O)??r(O.getAttribute("data-composition-id"))??null;return!Number.isFinite(D)||G==null||G<=0?null:Math.max(0,D)+G})),A=g!=null?Math.max(0,g-Math.max(0,p)):null,C=typeof E=="number"&&Number.isFinite(E)&&E>0?E:null,N=typeof b=="number"&&Number.isFinite(b)&&b>0?b:null,$=typeof x=="number"&&Number.isFinite(x)&&x>0?x:null,B=typeof A=="number"&&Number.isFinite(A)&&A>0?A:null,v=ai($,B),S=C!=null&&v!=null&&C>v+1,_=N??(S?v:ai(C,$,B))??null,R=(_!=null?p+_:null)??(typeof f=="number"&&Number.isFinite(f)&&f>0?f:null),W=(O,D)=>!Number.isFinite(D)||D<=0?0:R==null||!Number.isFinite(R)?D:!Number.isFinite(O)||O>=R?0:Math.max(0,Math.min(D,R-O)),q=[],ie=[],P=Array.from(document.querySelectorAll("[data-start], [data-track-index], [data-composition-id], video, audio, img")),se=0;for(let O=0;O<P.length;O+=1){let D=P[O];if(D===a||["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"].includes(D.tagName))continue;let G=u(D,a),Q=i.resolveStartForElement(D,G.inheritedStart??0),ae=D.getAttribute("data-composition-id"),j=si(D);if((j==null||j<=0)&&ae&&ae!==c&&(j=r(ae)),(j==null||j<=0)&&D instanceof HTMLMediaElement){let Me=Ce(D.getAttribute("data-playback-start"))??Ce(D.getAttribute("data-media-start"))??0;Number.isFinite(D.duration)&&D.duration>0&&(j=Math.max(0,D.duration-Me))}if(j==null||j<=0){let Me=G.inheritedDuration;if(Me!=null&&Me>0){let Ue=(G.inheritedStart??0)+Me;j=Math.max(0,Ue-Q)}}if(j==null||j<=0||(j=W(Q,j),j<=0))continue;let z=Q+j;se=Math.max(se,z);let Y=D.tagName.toLowerCase(),Pe=ae&&ae!==c?"composition":Y==="video"?"video":Y==="audio"?"audio":Y==="img"?"image":"element";q.push({id:ri(D)??ae??null,label:Bl(D,Pe,q.length),start:Q,duration:j,track:Number.parseInt(D.getAttribute("data-track-index")??D.getAttribute("data-track")??String(O),10)||0,kind:Pe,tagName:Y,compositionId:D.getAttribute("data-composition-id"),compositionAncestors:G.compositionAncestors,parentCompositionId:G.parentCompositionId,nodePath:null,compositionSrc:kt(D.getAttribute("data-composition-src")),assetUrl:Xr(D),timelineRole:D.getAttribute("data-timeline-role"),timelineLabel:D.getAttribute("data-timeline-label"),timelineGroup:D.getAttribute("data-timeline-group"),timelinePriority:Ce(D.getAttribute("data-timeline-priority"))})}let Ee=new Set(q.map(O=>O.id)),H=a?.getAttribute("data-composition-id")??null,U=H?n[H]??null:null;if(U&&a){let O=U;if(typeof O.getChildren=="function")try{let D=O.getChildren(!0,!0,!1)??[],G=new Map;for(let j of a.children){let z=j;if(!z.id)continue;let Y=z.tagName.toLowerCase();Y==="script"||Y==="style"||Y==="link"||G.set(z,{id:z.id,start:1/0,end:-1/0})}let Q=j=>{let z=j;for(;z;){if(G.has(z))return z;if(z===a)return null;z=z.parentElement}return null};for(let j of D){if(typeof j.targets!="function"||typeof j.startTime!="function"||typeof j.duration!="function")continue;let z=j.startTime(),Y=j.parent;for(;Y&&Y!==U&&typeof Y.startTime=="function";)z+=Y.startTime(),Y=Y.parent;let Pe=z+j.duration();if(!(!Number.isFinite(z)||!Number.isFinite(Pe)))for(let Me of j.targets()){if(!(Me instanceof Element))continue;let At=Q(Me);if(!At)continue;let Ue=G.get(At);Ue&&(Ue.start=Math.min(Ue.start,z),Ue.end=Math.max(Ue.end,Pe))}}let ae=q.length>0?Math.max(...q.map(j=>j.track))+1:0;for(let[j,z]of G){if(z.start===1/0||z.end===-1/0)continue;let Y=j;if(Ee.has(Y.id))continue;let Pe=Math.max(0,z.end-z.start);if(Pe<=0)continue;let Me=W(z.start,Pe);Me<=0||(se=Math.max(se,z.start+Me),q.push({id:Y.id,label:Y.getAttribute("data-timeline-label")??Y.getAttribute("data-label")??Y.getAttribute("aria-label")??Y.id,start:z.start,duration:Me,track:Number.parseInt(Y.getAttribute("data-track-index")??Y.getAttribute("data-track")??"",10)||ae,kind:"element",tagName:Y.tagName.toLowerCase(),compositionId:Y.getAttribute("data-composition-id"),compositionAncestors:H?[H]:[],parentCompositionId:H,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:Y.getAttribute("data-timeline-role"),timelineLabel:Y.getAttribute("data-timeline-label"),timelineGroup:Y.getAttribute("data-timeline-group"),timelinePriority:Ce(Y.getAttribute("data-timeline-priority"))}),Ee.add(Y.id))}}catch(D){L("runtime.timeline.site1",D)}}if(a&&_!=null&&_>0){let O=q.length>0?Math.max(...q.map(D=>D.track))+1:0;for(let D of a.children){let G=D;if(!G.id||Ee.has(G.id))continue;let Q=G.getAttribute("data-timeline-role");if(Q!=="overlay"&&Q!=="persistent-overlay")continue;let ae=G.tagName.toLowerCase();if(ae==="script"||ae==="style"||ae==="link"||ae==="meta"||window.getComputedStyle(G).display==="none")continue;let z=W(0,_);z<=0||(se=Math.max(se,z),q.push({id:G.id,label:G.getAttribute("data-timeline-label")??G.getAttribute("data-label")??G.getAttribute("aria-label")??G.id,start:0,duration:z,track:Number.parseInt(G.getAttribute("data-track-index")??G.getAttribute("data-track")??"",10)||O,kind:"element",tagName:ae,compositionId:G.getAttribute("data-composition-id"),compositionAncestors:H?[H]:[],parentCompositionId:H,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:Q,timelineLabel:G.getAttribute("data-timeline-label"),timelineGroup:G.getAttribute("data-timeline-group"),timelinePriority:Ce(G.getAttribute("data-timeline-priority"))}),Ee.add(G.id))}}Dl(q);for(let O of l){if(O===a)continue;let D=O.getAttribute("data-composition-id");if(!D||!oi(D))continue;let G=i.resolveStartForElement(O,0),Q=si(O);if((Q==null||Q<=0)&&Kr(O)!=null){let Y=Kr(O);Q=Math.max(0,Y-G)}let ae=r(D),j=Q&&Q>0?Q:ae;if(j==null||j<=0)continue;let z=W(G,j);z<=0||ie.push({id:D,label:O.getAttribute("data-label")??D,start:G,duration:z,thumbnailUrl:kt(O.getAttribute("data-thumbnail-url")),avatarName:null})}let V=Math.max(1,se||1,_??0);return{source:"hf-preview",type:"timeline",durationInFrames:S&&N==null?Number.POSITIVE_INFINITY:Math.max(1,Math.ceil(V*Math.max(1,e.canonicalFps))),clips:q,scenes:ie,compositionWidth:Ce(a?.getAttribute("data-width"))??1920,compositionHeight:Ce(a?.getAttribute("data-height"))??1080}}var ce=ol(ws(),1),Fs=ce.default,$p=ce.default.stringify,Kp=ce.default.fromJSON,Jp=ce.default.plugin,Xp=ce.default.parse,Yp=ce.default.list,Qp=ce.default.document,Zp=ce.default.comment,eh=ce.default.atRule,th=ce.default.rule,nh=ce.default.decl,ih=ce.default.root,rh=ce.default.CssSyntaxError,oh=ce.default.Declaration,sh=ce.default.Container,ah=ce.default.Processor,lh=ce.default.Document,uh=ce.default.Comment,ch=ce.default.Warning,dh=ce.default.AtRule,fh=ce.default.Result,mh=ce.default.Input,ph=ce.default.Rule,hh=ce.default.Root,gh=ce.default.Node;var ki="data-hf-authored-id",Cs="data-hf-inner-root";function Di(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&")}function Ii(e){return e.replace(/\\\\/g,"\\\\\\\\").replace(/"/g,\'\\\\"\')}function sc(e){return e&&e.replace(/[^a-zA-Z0-9_-]/g,n=>`\\\\${n}`).replace(/^-?\\d/,n=>`\\\\${n}`)}function _s(e){let t=e.trim();return t?Array.from(new Set([t,sc(t)])).filter(Boolean):[]}function ac(e){return!!e&&/[\\w-]/.test(e)}function lc(e,t,n){let i=_s(t).sort((u,a)=>a.length-u.length);if(i.length===0)return e;let r="",o=0,s=null;for(let u=0;u<e.length;u+=1){let a=e[u],l=u>0?e[u-1]:"";if(s){r+=a,a===s&&l!=="\\\\"&&(s=null);continue}if(a===\'"\'||a==="\'"){s=a,r+=a;continue}if(a==="["){o+=1,r+=a;continue}if(a==="]"){o=Math.max(0,o-1),r+=a;continue}if(a==="#"&&o===0){let c=i.find(p=>e.startsWith(p,u+1));if(c){let p=e[u+1+c.length];if(!ac(p)){r+=n,u+=c.length;continue}}}r+=a}return r}function uc(e,t){let n=t?.trim();return n?lc(e,n,`[${ki}="${Ii(n)}"]`):e}function cc(e,t,n,i,r){let o=uc(e,i),s=dc(o,t,n),u=s.trim();if(!u||/^(html|body|:root|\\*)$/i.test(u))return e;let a=new RegExp(`\\\\[\\\\s*data-composition-id\\\\s*=\\\\s*(["\'])${Di(n)}\\\\1\\\\s*\\\\]`,"g");if(a.test(u))return u.replace(a,"").trim()===""?`${t}:not(:has([${Cs}])), ${t} > [${Cs}]`:s.replace(a,t);let l=s.match(/^\\s*/)?.[0]??"",c=s.match(/\\s*$/)?.[0]??"";if(r){let p=i?`[${ki}="${Ii(i)}"]`:null;if(p&&u.startsWith(p)){let f=u.slice(p.length);return`${l}${t}${p}${f}${c}`}}return`${l}${t} ${u}${c}`}function dc(e,t,n){let i=Di(n),r=String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${i}"|\'${i}\')\\s*\\]`,o=String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`;return e.replace(new RegExp(`${r}(?:${o})+`,"g"),t).replace(new RegExp(`(?:${o})+${r}`,"g"),t)}var fc=new Set(["keyframes","-webkit-keyframes","font-face"]);function mc(e){return e?.type==="atrule"}function pc(e){let t=e.parent;for(;t;){if(mc(t)&&fc.has(t.name.toLowerCase()))return!0;t=t.parent}return!1}function Pi(e,t,n,i,r){let o=t.trim();if(!e||!o)return e;let s=n||`[data-composition-id="${Ii(o)}"]`,u=Fs.parse(e);return u.walkRules(a=>{pc(a)||(a.selectors=a.selectors.map(l=>cc(l,s,o,i,r?.compoundAuthoredRoot)))}),u.toResult({map:!1}).css}function Ms(e,t,n="[HyperFrames] composition script error:",i,r=t,o){let s=JSON.stringify(t),u=JSON.stringify(r),a=JSON.stringify(n),l=Di(t),c=JSON.stringify(o?.trim()||null),p=JSON.stringify(i??null),f=JSON.stringify(String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${l}"|\'${l}\')\\s*\\]`),x=JSON.stringify(String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`),E=JSON.stringify(_s(o?.trim()||""));return`(function(){\n var __hfCompId = ${s};\n var __hfTimelineCompId = ${u};\n var __hfErrorLabel = ${a};\n var __hfAuthoredRootId = ${c};\n var __hfAuthoredRootAttr = ${JSON.stringify(ki)};\n var __hfEscapeAttr = function(value) {\n return (value + "").replace(/\\\\\\\\/g, "\\\\\\\\\\\\\\\\").replace(/"/g, "\\\\\\\\\\\\"");\n };\n var __hfRootSelector = ${p} || (__hfCompId\n ? \'[data-composition-id="\' + __hfEscapeAttr(__hfCompId) + \'"]\'\n : "");\n var __hfRoot = null;\n var __hfRootSelectorPattern = ${f};\n var __hfTimingSelectorPattern = ${x};\n var __hfAuthoredRootIdForms = ${E};\n var __hfAuthoredRootSelector = __hfAuthoredRootId\n ? "[" + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(__hfAuthoredRootId) + \'"]\'\n : "";\n var __hfIsSelectorNameChar = function(char) {\n return !!char && /[\\\\w-]/.test(char);\n };\n var __hfReplaceAuthoredRootIdSelectors = function(selector) {\n if (!__hfAuthoredRootSelector || !__hfAuthoredRootIdForms.length || typeof selector !== "string") {\n return selector;\n }\n var result = "";\n var bracketDepth = 0;\n var quote = null;\n for (var index = 0; index < selector.length; index += 1) {\n var char = selector[index];\n var previousChar = index > 0 ? selector[index - 1] : "";\n if (quote) {\n result += char;\n if (char === quote && previousChar !== "\\\\\\\\") {\n quote = null;\n }\n continue;\n }\n if (char === \'"\' || char === "\'") {\n quote = char;\n result += char;\n continue;\n }\n if (char === "[") {\n bracketDepth += 1;\n result += char;\n continue;\n }\n if (char === "]") {\n bracketDepth = Math.max(0, bracketDepth - 1);\n result += char;\n continue;\n }\n if (char === "#" && bracketDepth === 0) {\n var matchedForm = null;\n for (var formIndex = 0; formIndex < __hfAuthoredRootIdForms.length; formIndex += 1) {\n var form = __hfAuthoredRootIdForms[formIndex];\n if (selector.slice(index + 1, index + 1 + form.length) === form) {\n matchedForm = form;\n break;\n }\n }\n if (matchedForm) {\n var nextChar = selector[index + 1 + matchedForm.length];\n if (!__hfIsSelectorNameChar(nextChar)) {\n result += __hfAuthoredRootSelector;\n index += matchedForm.length;\n continue;\n }\n }\n }\n result += char;\n }\n return result;\n };\n var __hfNormalizeSelector = function(selector) {\n if (!__hfCompId || typeof selector !== "string") return selector;\n var normalized = selector\n .replace(new RegExp(__hfRootSelectorPattern + \'(?:\' + __hfTimingSelectorPattern + \')+\', \'g\'), __hfRootSelector)\n .replace(new RegExp(\'(?:\' + __hfTimingSelectorPattern + \')+\' + __hfRootSelectorPattern, \'g\'), __hfRootSelector);\n if (__hfAuthoredRootSelector) {\n normalized = __hfReplaceAuthoredRootIdSelectors(normalized);\n }\n return normalized;\n };\n var __hfFindRoot = function() {\n if (!__hfRoot && __hfRootSelector) {\n __hfRoot = window.document.querySelector(__hfRootSelector);\n }\n return __hfRoot;\n };\n var __hfContains = function(node) {\n var root = __hfFindRoot();\n return !root || node === root || root.contains(node);\n };\n var __hfQueryAll = function(selector) {\n var root = __hfFindRoot();\n if (!root || typeof selector !== "string") {\n return window.document.querySelectorAll(selector);\n }\n return Array.prototype.filter.call(window.document.querySelectorAll(__hfNormalizeSelector(selector)), function(node) {\n return __hfContains(node);\n });\n };\n var __hfQueryOne = function(selector) {\n var matches = __hfQueryAll(selector);\n return matches[0] || null;\n };\n var __hfGetElementById = function(id) {\n var found = window.document.getElementById(id);\n if (found && __hfContains(found)) return found;\n var root = __hfFindRoot();\n if (!root) return found || null;\n var idValue = id + "";\n if (__hfAuthoredRootId && __hfAuthoredRootId === idValue && root.getAttribute && root.getAttribute(__hfAuthoredRootAttr) === idValue) {\n return root;\n }\n if (root.id === idValue) return root;\n if (typeof root.querySelector !== "function") return null;\n try {\n var authoredRootMatch = root.querySelector(\'[\' + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(idValue) + \'"]\');\n if (authoredRootMatch) return authoredRootMatch;\n } catch {}\n if (typeof CSS !== "undefined" && CSS && typeof CSS.escape === "function") {\n try {\n return root.querySelector("#" + CSS.escape(idValue)) || null;\n } catch {}\n }\n try {\n return root.querySelector(\'[id="\' + __hfEscapeAttr(idValue) + \'"]\') || null;\n } catch {}\n return null;\n };\n var __hfScopedDocument = typeof Proxy === "function"\n ? new Proxy(window.document, {\n get: function(target, prop, receiver) {\n if (prop === "querySelector") return __hfQueryOne;\n if (prop === "querySelectorAll") return __hfQueryAll;\n if (prop === "getElementById") return __hfGetElementById;\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n })\n : window.document;\n var __hfTimelineRegistryProxy = null;\n var __hfGetTimelineRegistry = function() {\n window.__timelines = window.__timelines || {};\n if (!__hfCompId || __hfCompId === __hfTimelineCompId || typeof Proxy !== "function") {\n return window.__timelines;\n }\n if (!__hfTimelineRegistryProxy) {\n __hfTimelineRegistryProxy = new Proxy(window.__timelines, {\n get: function(target, prop, receiver) {\n return Reflect.get(target, prop === __hfCompId ? __hfTimelineCompId : prop, target);\n },\n set: function(target, prop, value, receiver) {\n return Reflect.set(target, prop === __hfCompId ? __hfTimelineCompId : prop, value, target);\n },\n });\n }\n return __hfTimelineRegistryProxy;\n };\n var __hfScopedWindow = typeof Proxy === "function"\n ? new Proxy(window, {\n get: function(target, prop, receiver) {\n if (prop === "__timelines") return __hfGetTimelineRegistry();\n // Inside a sub-composition, __hyperframes is passed as a bare script\n // param bound to the SCOPED variant (per-comp getVariables). But\n // authors routinely write the documented window.__hyperframes.\n // getVariables() form, which would otherwise fall through to the host\n // page\'s base __hyperframes and return the WRONG (or empty) variables\n // for this instance. Route it to the scoped variant too so both\n // spellings resolve to this composition\'s own variables.\n // (__hfScopedHyperframes is a hoisted var assigned below, before any\n // sub-comp script -- the only code that reads this -- runs.)\n if (prop === "__hyperframes") return __hfScopedHyperframes;\n return Reflect.get(target, prop, target);\n },\n set: function(target, prop, value, receiver) {\n if (prop === "__timelines") {\n target.__timelines = value || {};\n __hfTimelineRegistryProxy = null;\n return true;\n }\n return Reflect.set(target, prop, value, target);\n },\n })\n : window;\n var __hfResolveGsapTarget = function(target) {\n if (typeof target !== "string") return target;\n return __hfQueryAll(target);\n };\n var __hfScopeTimeline = function(timeline) {\n if (!timeline || timeline.__hfScopedCompositionRoot === __hfFindRoot()) return timeline;\n ["to", "from", "fromTo", "set"].forEach(function(method) {\n var original = timeline[method];\n if (typeof original !== "function") return;\n timeline[method] = function(target) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(target);\n return original.apply(timeline, args);\n };\n });\n try {\n Object.defineProperty(timeline, "__hfScopedCompositionRoot", {\n value: __hfFindRoot(),\n configurable: true,\n });\n } catch {\n // Best-effort: timelines coming from user code may have a frozen target\n // or a non-extensible defineProperty path. Swallow \\u2014 the scoped root\n // is an enrichment, not a correctness invariant for playback.\n }\n return timeline;\n };\n var __hfBaseGsap = typeof gsap === "undefined" ? window.gsap : gsap;\n var __hfScopedGsap = !__hfBaseGsap || typeof Proxy !== "function"\n ? __hfBaseGsap\n : new Proxy(__hfBaseGsap, {\n get: function(target, prop, receiver) {\n if (prop === "timeline") {\n return function() {\n return __hfScopeTimeline(target.timeline.apply(target, arguments));\n };\n }\n if (prop === "to" || prop === "from" || prop === "fromTo" || prop === "set") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return target[prop].apply(target, args);\n };\n }\n if (prop === "utils" && target.utils && typeof Proxy === "function") {\n return new Proxy(target.utils, {\n get: function(utilsTarget, utilsProp, utilsReceiver) {\n if (utilsProp === "toArray") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return utilsTarget.toArray.apply(utilsTarget, args);\n };\n }\n if (utilsProp === "selector") {\n return function(base) {\n var baseEl = typeof base === "string" ? __hfQueryOne(base) : base;\n var root = baseEl || __hfFindRoot();\n return function(selector) {\n if (!root || typeof selector !== "string") return [];\n return Array.prototype.filter.call(\n window.document.querySelectorAll(__hfNormalizeSelector(selector)),\n function(node) {\n return node === root || (typeof root.contains === "function" && root.contains(node));\n },\n );\n };\n };\n }\n var value = Reflect.get(utilsTarget, utilsProp, utilsTarget);\n return typeof value === "function" ? value.bind(utilsTarget) : value;\n },\n });\n }\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n });\n var __hfBaseHyperframes = window.__hyperframes;\n var __hfScopedHyperframes = !__hfBaseHyperframes\n ? __hfBaseHyperframes\n : Object.assign({}, __hfBaseHyperframes, {\n getVariables: function() {\n var byComp = window.__hfVariablesByComp;\n var scoped = byComp && __hfTimelineCompId ? byComp[__hfTimelineCompId] : null;\n return scoped ? Object.assign({}, scoped) : {};\n },\n });\n var __hfRun = function() {\n try {\n (function(document, gsap, window, __hyperframes) {\n${e.replace(/<\\/(script)/gi,"<\\\\/$1")}\n }).call(window, __hfScopedDocument, __hfScopedGsap, __hfScopedWindow, __hfScopedHyperframes);\n } catch (_err) {\n console.error(__hfErrorLabel, __hfCompId, _err);\n }\n };\n __hfFindRoot();\n __hfRun();\n})();`}function vs(){if(typeof document>"u")return{};let e=Oi(document.documentElement),t=hc();return{...e,...t}}function Oi(e){if(!e)return{};let t=e.getAttribute("data-composition-variables");if(!t)return{};let n;try{n=JSON.parse(t)}catch{return{}}if(!Array.isArray(n))return{};let i={};for(let r of n){if(!r||typeof r!="object")continue;let o=r;typeof o.id!="string"||!("default"in o)||(i[o.id]=o.default)}return i}function hc(){if(typeof window>"u")return{};let e=window.__hfVariables;return!e||typeof e!="object"||Array.isArray(e)?{}:e}var gc=8e3,xc=/^(?![a-zA-Z][a-zA-Z\\d+\\-.]*:)(?!\\/\\/)(?!\\/)(?!\\.\\.?\\/).+/,bc=/\\burl\\(\\s*(["\']?)([^)"\']+)\\1\\s*\\)/g,yc=["src","href"];function Sc(e){return!e||e.startsWith("http://")||e.startsWith("https://")||e.startsWith("//")||e.startsWith("data:")||e.startsWith("#")||e.startsWith("/")}function Ns(e,t){if(!t)return e;let n=e.trim();if(Sc(n)||!n.startsWith("../")&&n!=="..")return e;try{return new URL(n,t).href}catch{return e}}function Ls(e,t){return!t||!e?e:e.replace(bc,(n,i,r)=>{let o=Ns(r||"",t);return o===r?n:`url(${i||""}${o}${i||""})`})}function Ec(e,t){for(let n of Array.from(e.querySelectorAll("[src], [href]")))for(let i of yc){let r=n.getAttribute(i);if(r==null)continue;let o=Ns(r,t);o!==r&&n.setAttribute(i,o)}}function Ac(e,t){for(let n of Array.from(e.querySelectorAll("[style]"))){let i=n.getAttribute("style");if(i==null)continue;let r=Ls(i,t);r!==i&&n.setAttribute("style",r)}}function wc(e,t){for(let n of Array.from(e.querySelectorAll("style"))){let i=n.textContent||"",r=Ls(i,t);r!==i&&(n.textContent=r)}}function Rs(e,t){if(t){Ec(e,t),Ac(e,t),wc(e,t);for(let n of Array.from(e.querySelectorAll("template")))Rs(n.content,t)}}function Fc(e,t){return`${e}__hf${t}`}var Cc=e=>new Promise(t=>{let n=!1,i=Date.now(),r=null,o=s=>{n||(n=!0,r!=null&&window.clearTimeout(r),t({status:s,elapsedMs:Math.max(0,Date.now()-i)}))};e.addEventListener("load",()=>o("load"),{once:!0}),e.addEventListener("error",()=>o("error"),{once:!0}),r=window.setTimeout(()=>o("timeout"),gc)});function Bi(e){for(;e.firstChild;)e.removeChild(e.firstChild);e.textContent=""}var _c=["data-composition-id","data-composition-file","data-start","data-duration","data-end","data-track-index","data-track","data-composition-src","data-hf-authored-duration","data-hf-authored-end"];function Mc(e){let t=document.importNode(e,!0),n=t.getAttribute("id")?.trim();for(let o of _c)t.removeAttribute(o);n&&(t.removeAttribute("id"),t.setAttribute("data-hf-authored-id",n)),t.setAttribute("data-hf-inner-root","true");let i=t.getAttribute("data-width"),r=t.getAttribute("data-height");return t.style.width=i?`${i}px`:"100%",t.style.height=r?`${r}px`:"100%",t}function Ts(e,t){let n=e.trim();if(!n)return e;try{return xc.test(n)?new URL(n,document.baseURI).toString():t?new URL(n,t).toString():new URL(n,document.baseURI).toString()}catch{return e}}function vc(e){let t=e.getAttribute("data-variable-values");if(!t)return{};let n;try{n=JSON.parse(t)}catch{return{}}return!n||typeof n!="object"||Array.isArray(n)?{}:n}function _n(e){let t=(e.getAttribute("data-composition-id")||"").trim()||null;return{authoredCompositionId:(e.getAttribute("data-hf-original-composition-id")||t||"").trim()||null,runtimeCompositionId:t}}function Tc(e){let t=new Map;for(let n of e){let i=_n(n).authoredCompositionId||"";i&&t.set(i,(t.get(i)||0)+1)}return t}function ks(e){let t=_n(e).authoredCompositionId;return t?!!document.querySelector(`template#${CSS.escape(t)}-template`):!1}function Nc(e){return!!e.querySelector(\'[data-hf-inner-root="true"]\')}function Lc(e){return e.hasAttribute("data-composition-src")?!0:ks(e)?e.children.length===0||e.hasAttribute("data-hf-original-composition-id")?!0:Nc(e):!1}function Gi(){return Array.from(document.querySelectorAll("[data-composition-src], [data-composition-id]")).filter(t=>t.hasAttribute("data-composition-src")?!0:ks(t))}function Ds(){let e=window.__hfVariablesByComp;if(!e)return;let t=new Set(Gi().map(n=>_n(n).runtimeCompositionId).filter(n=>!!n));for(let n of Object.keys(e))t.has(n)||delete e[n]}function Is(e,t=Tc(e)){let n=new Map,i=new Map;for(let r of e){let{authoredCompositionId:o,runtimeCompositionId:s}=_n(r),u=Lc(r);if(!o){i.set(r,{authoredCompositionId:null,runtimeCompositionId:s});continue}let a=(t.get(o)||0)>1,l=s||o;if(u){let c=a?(n.get(o)||0)+1:0;a&&n.set(o,c),l=a?Fc(o,c):o,a?r.setAttribute("data-hf-original-composition-id",o):r.removeAttribute("data-hf-original-composition-id"),r.setAttribute("data-composition-id",l),s&&s!==l&&window.__hfVariablesByComp&&delete window.__hfVariablesByComp[s]}i.set(r,{authoredCompositionId:o,runtimeCompositionId:l})}return i}async function Hi(e){let t=null;e.authoredCompositionId&&(t=Array.from(e.sourceNode.querySelectorAll("[data-composition-id]")).find(x=>x.getAttribute("data-composition-id")===e.authoredCompositionId)??null);let n=t??e.sourceNode,i=t?.getAttribute("data-composition-id")?.trim()||e.authoredCompositionId||null,r=e.runtimeCompositionId||i||null,o=t?.getAttribute("id")?.trim()||null,s=r?`[data-composition-id="${CSS.escape(r)}"]`:void 0;if(e.headLinks)for(let f of e.headLinks){let x=f.getAttribute("href")||"";x&&(document.head.querySelector(`link[href="${CSS.escape(x)}"]`)||document.head.appendChild(f.cloneNode(!0)))}if(e.headStyles)for(let f of e.headStyles){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=Pi(x.textContent||"",i,s,o)),document.head.appendChild(x),e.injectedStyles.push(x))}let u=Array.from(n.querySelectorAll("style"));for(let f of u){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=Pi(x.textContent||"",i,s,o)),document.head.appendChild(x),e.injectedStyles.push(x))}let a=[];if(e.headScripts)for(let f of e.headScripts){let x=f.getAttribute("type")?.trim()??"",E=f.getAttribute("src")?.trim()??"";if(E){let b=Ts(E,e.compositionUrl);a.push({kind:"external",src:b,type:x})}else{let b=f.textContent?.trim()??"";b&&a.push({kind:"inline",content:b,type:x,scopeCompositionId:i})}}let l=Array.from(n.querySelectorAll("script")),c=[...a];for(let f of l){let x=f.getAttribute("type")?.trim()??"",E=f.getAttribute("src")?.trim()??"";if(E){let b=Ts(E,e.compositionUrl);c.push({kind:"external",src:b,type:x})}else{let b=f.textContent?.trim()??"";b&&c.push({kind:"inline",content:b,type:x,scopeCompositionId:i})}f.parentNode?.removeChild(f)}let p=Array.from(n.querySelectorAll("style"));for(let f of p)f.parentNode?.removeChild(f);if(t){let f=t.getAttribute("data-width"),x=t.getAttribute("data-height"),E=e.parseDimensionPx(f),b=e.parseDimensionPx(x);f&&e.host.setAttribute("data-width",f),x&&e.host.setAttribute("data-height",x),E&&e.host instanceof HTMLElement&&(e.host.style.width=E),b&&e.host instanceof HTMLElement&&(e.host.style.height=b),t.hasAttribute("data-timeline-locked")&&e.host.setAttribute("data-timeline-locked",""),e.host.appendChild(Mc(t))}else e.hasTemplate?e.host.appendChild(document.importNode(n,!0)):e.host.innerHTML=e.fallbackBodyInnerHtml;if(r){let f={...e.declaredVariableDefaults??{},...vc(e.host)};Object.keys(f).length>0?(window.__hfVariablesByComp||(window.__hfVariablesByComp={}),window.__hfVariablesByComp[r]=f):window.__hfVariablesByComp&&delete window.__hfVariablesByComp[r]}for(let f of c){let x=document.createElement("script");if(f.type&&(x.type=f.type),x.async=!1,f.kind==="external"?x.src=f.src:f.type.toLowerCase()==="module"?x.textContent=f.content:f.scopeCompositionId?x.textContent=Ms(f.content,f.scopeCompositionId,"[HyperFrames] composition script error:",s,r||f.scopeCompositionId,o):x.textContent=`(function(){${f.content}})();`,document.body.appendChild(x),e.injectedScripts.push(x),f.kind==="external"){let E=await Cc(x);E.status!=="load"&&e.onDiagnostic?.({code:"external_composition_script_load_issue",details:{hostCompositionId:e.authoredCompositionId,runtimeCompositionId:e.runtimeCompositionId,hostCompositionSrc:e.hostCompositionSrc,resolvedScriptSrc:f.src,loadStatus:E.status,elapsedMs:E.elapsedMs}})}}}async function Ps(e){let t=Gi();if(Ds(),t.length===0)return;let n=Is(t),i=t.filter(r=>{if(r.hasAttribute("data-composition-src")||r.children.length>0)return!1;let o=n.get(r)?.authoredCompositionId;return o?!!document.querySelector(`template#${CSS.escape(o)}-template`):!1});if(i.length!==0)for(let r of i){let o=n.get(r),s=o?.authoredCompositionId;if(!s)continue;let u=document.querySelector(`template#${CSS.escape(s)}-template`);Bi(r),await Hi({host:r,authoredCompositionId:s,runtimeCompositionId:o?.runtimeCompositionId||s,hostCompositionSrc:`template#${s}-template`,sourceNode:u.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:null,injectedStyles:e.injectedStyles,injectedScripts:e.injectedScripts,parseDimensionPx:e.parseDimensionPx,onDiagnostic:e.onDiagnostic})}}async function Os(e){let t=Gi();if(Ds(),t.length===0)return;let n=Is(t),i=t.filter(r=>r.hasAttribute("data-composition-src"));i.length!==0&&await Promise.all(i.map(async r=>{let o=r.getAttribute("data-composition-src");if(!o)return;let s=n.get(r),u=s?.authoredCompositionId||null,a=s?.runtimeCompositionId||u||null,l=null;try{l=new URL(o,document.baseURI)}catch{l=null}Bi(r);try{let c=u!=null?document.querySelector(`template#${CSS.escape(u)}-template`):null;if(c){await Hi({host:r,authoredCompositionId:u,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:c.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:l,injectedStyles:e.injectedStyles,injectedScripts:e.injectedScripts,parseDimensionPx:e.parseDimensionPx,onDiagnostic:e.onDiagnostic});return}let p=await fetch(o);if(!p.ok)throw new Error(`HTTP ${p.status}`);let f=await p.text(),E=new DOMParser().parseFromString(f,"text/html");Rs(E,l);let b=(u?E.querySelector(`template#${CSS.escape(u)}-template`):null)??E.querySelector("template"),g=b?b.content:E.body,A=b?void 0:Array.from(E.head.querySelectorAll("style")),C=b?void 0:Array.from(E.head.querySelectorAll("script")),N=b?void 0:Array.from(E.head.querySelectorAll(\'link[rel="stylesheet"], link[rel="preconnect"]\'));await Hi({host:r,authoredCompositionId:u,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:g,hasTemplate:!!b,fallbackBodyInnerHtml:E.body.innerHTML,compositionUrl:l,injectedStyles:e.injectedStyles,injectedScripts:e.injectedScripts,parseDimensionPx:e.parseDimensionPx,headStyles:A,headScripts:C,headLinks:N,declaredVariableDefaults:Oi(E.documentElement),onDiagnostic:e.onDiagnostic})}catch(c){e.onDiagnostic?.({code:"external_composition_load_failed",details:{hostCompositionId:u,runtimeCompositionId:a,hostCompositionSrc:o,errorMessage:c instanceof Error?c.message:"unknown_error"}}),Bi(r)}}))}function Rc(e){return e instanceof HTMLElement?e.dataset.captionWrapper!=="true"?e:e.querySelector(":scope > span")??null:null}function kc(){let e=[],t=document.querySelectorAll(".caption-group");for(let n of t)for(let i of n.children){if(!(i instanceof HTMLElement))continue;let r=i.dataset.captionWrapper==="true"?i.querySelector(":scope > span"):i.tagName==="SPAN"?i:null;r&&e.push(r)}return e}function Dc(e){let t=e.parentElement;if(t?.dataset.captionWrapper==="true")return t;let n=document.createElement("span");return n.style.display="inline-block",n.dataset.captionWrapper="true",e.parentNode?.insertBefore(n,e),n.appendChild(e),n}function Wi(){let e=window.gsap;e&&document.querySelectorAll(".caption-group").length!==0&&fetch("caption-overrides.json").then(t=>t.ok?t.json():null).then(t=>{if(!t||!Array.isArray(t)||t.length===0)return;let n=kc();for(let i of t){let r=null;if(i.wordId&&(r=Rc(document.getElementById(i.wordId))),!r&&i.wordIndex!==void 0&&(r=n[i.wordIndex]??null),!r)continue;let o={},s={};if(i.x!==void 0&&(o.x=i.x),i.y!==void 0&&(o.y=i.y),i.scale!==void 0&&(o.scale=i.scale),i.rotation!==void 0&&(o.rotation=i.rotation),i.opacity!==void 0&&(s.opacity=i.opacity),i.fontSize!==void 0&&(s.fontSize=`${i.fontSize}px`),i.fontWeight!==void 0&&(s.fontWeight=i.fontWeight),i.fontFamily!==void 0&&(s.fontFamily=i.fontFamily),i.activeColor||i.dimColor){let a=e.getTweensOf(r).filter(c=>c.vars.color!==void 0).sort((c,p)=>c.startTime()-p.startTime()),l=a.length>0?String(a[0].vars.color):"";for(let c of a)String(c.vars.color)===l?i.dimColor&&(c.vars.color=i.dimColor):i.activeColor&&(c.vars.color=i.activeColor);i.dimColor&&e.set(r,{color:i.dimColor})}if(Object.keys(s).length>0&&e.set(r,s),Object.keys(o).length>0){let u=Dc(r);e.set(u,o)}}}).catch(()=>{})}var Gs="data-hf-edit-base-x",Ws="data-hf-edit-base-y",Ui="data-hf-edit-original-translate",Mn=e=>{let t=parseFloat(e??"");return Number.isFinite(t)?t:0},Ic=e=>{let t=[],n=0,i="";for(let r of e.trim())r==="("&&(n+=1),r===")"&&(n=Math.max(0,n-1)),/\\s/.test(r)&&n===0?(i&&t.push(i),i=""):i+=r;return i&&t.push(i),t},Bs=/^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)px$/,Vi=(e,t)=>Bs.test(e)&&Bs.test(t)?`${parseFloat(e)+parseFloat(t)}px`:`calc(${e} + ${t})`,Pc=(e,t,n)=>{if(!e||e==="none")return`${t} ${n}`;let[i,r,o]=Ic(e);if(i===void 0)return`${t} ${n}`;if(r===void 0)return`${Vi(i,t)} ${n}`;let s=o===void 0?"":` ${o}`;return`${Vi(i,t)} ${Vi(r,n)}${s}`},Oc=e=>{try{e.ownerDocument.defaultView?.gsap?.getProperty?.(e,"x")}catch{}},Bc=e=>{let t=e.style.getPropertyValue("translate").trim();if(t)return t==="none"?"":t;try{let n=e.ownerDocument.defaultView,i=n?n.getComputedStyle(e).getPropertyValue("translate").trim():"";return i==="none"?"":i}catch{return""}},Hs=new WeakMap;function Hc(e,t){let n=Hs.get(e);if(!t?.force&&n!==void 0&&e.style.getPropertyValue("translate")!==n){ot("position_edit_fold_skipped",{hfId:e.getAttribute("data-hf-id")});return}let i=Mn(e.getAttribute("data-x"))-Mn(e.getAttribute(Gs)),r=Mn(e.getAttribute("data-y"))-Mn(e.getAttribute(Ws));e.hasAttribute(Ui)||e.setAttribute(Ui,Bc(e)),n===void 0&&Oc(e);let o=e.getAttribute(Ui)??"",s=Pc(o,`${i}px`,`${r}px`);e.style.setProperty("translate",s),Hs.set(e,e.style.getPropertyValue("translate"))}function zi(e){let t=e.querySelectorAll(`[${Gs}], [${Ws}]`),n=0;for(let i=0;i<t.length;i++){let r=t[i];r instanceof HTMLElement&&(Hc(r),n+=1)}return n}var Qt="data-color-grading",Us="__hf_color_grading_",Gc="rec709",vn={exposure:0,contrast:0,highlights:0,shadows:0,whites:0,blacks:0,temperature:0,tint:0,vibrance:0,saturation:0},Tn={vignette:0,vignetteMidpoint:.5,vignetteRoundness:0,vignetteFeather:.65,grain:0,grainSize:.25,grainRoughness:.5},Nn={blur:0,pixelate:0},Vs=Object.keys(vn),Wc=Object.keys(Tn),zs=Object.keys(Nn);function Ae(e,t,n={},i={}){return{id:e,label:t,adjust:{...vn,...n},details:{...Tn,...i},effects:{...Nn}}}var Uc=[Ae("neutral","Neutral"),Ae("natural-lift","Natural Lift",{exposure:.04,contrast:.06,highlights:-.06,shadows:.08,saturation:.05}),Ae("fresh-pop","Fresh Pop",{exposure:.08,contrast:.12,whites:.06,shadows:.04,temperature:-.02,vibrance:.08,saturation:.16}),Ae("warm-daylight","Warm Daylight",{exposure:.06,contrast:.07,highlights:-.06,shadows:.08,temperature:.18,saturation:.08}),Ae("clean-studio","Clean Studio",{contrast:.08,highlights:-.08,shadows:.06,temperature:-.08,tint:.03,saturation:.04}),Ae("skin-soft","Skin Soft",{exposure:.04,contrast:-.03,highlights:-.12,shadows:.12,temperature:.08,tint:.02,saturation:.04}),Ae("food-pop","Food Pop",{exposure:.06,contrast:.1,shadows:.06,temperature:.14,vibrance:.1,saturation:.18}),Ae("night-lift","Night Lift",{exposure:.08,contrast:.08,highlights:-.18,shadows:.2,blacks:-.08,saturation:.04},{vignette:.12}),Ae("muted-editorial","Muted Editorial",{exposure:-.02,contrast:.08,highlights:-.08,shadows:.06,blacks:-.05,temperature:-.03,saturation:-.12},{vignette:.1}),Ae("vintage-wash","Vintage Wash",{exposure:.03,contrast:-.12,highlights:-.1,shadows:.16,whites:-.04,blacks:.08,temperature:.13,vibrance:-.08,saturation:-.08},{vignette:.18}),Ae("mono-clean","Mono Clean",{contrast:.12,highlights:-.04,shadows:.04,blacks:-.08,saturation:-1}),Ae("mono-fade","Mono Fade",{contrast:-.04,highlights:-.06,shadows:.1,blacks:.12,saturation:-1},{vignette:.08}),Ae("warm-clean","Warm Clean",{exposure:.05,contrast:.08,highlights:-.08,shadows:.08,temperature:.16,vibrance:.04,saturation:.06}),Ae("cool-clean","Cool Clean",{contrast:.06,highlights:-.06,shadows:.06,temperature:-.12,tint:.04,saturation:.04}),Ae("soft-boost","Soft Boost",{exposure:.06,contrast:-.04,highlights:-.14,shadows:.16,vibrance:.08,saturation:.1}),Ae("bright-pop","Bright Pop",{exposure:.12,contrast:.12,whites:.08,blacks:-.04,vibrance:.08,saturation:.14}),Ae("deep-contrast","Deep Contrast",{exposure:-.03,contrast:.2,highlights:-.08,shadows:-.08,blacks:-.12,saturation:.06})],Vc=new Map(Uc.map(e=>[e.id,e])),zc=/^\\$(?:\\{([A-Za-z0-9_.:-]+)\\}|([A-Za-z0-9_.:-]+))$/,qc={exposure:{min:-2,max:2},contrast:{min:-1,max:1},highlights:{min:-1,max:1},shadows:{min:-1,max:1},whites:{min:-1,max:1},blacks:{min:-1,max:1},temperature:{min:-1,max:1},tint:{min:-1,max:1},vibrance:{min:-1,max:1},saturation:{min:-1,max:1}},jc={vignette:{min:0,max:1},vignetteMidpoint:{min:0,max:1},vignetteRoundness:{min:-1,max:1},vignetteFeather:{min:0,max:1},grain:{min:0,max:1},grainSize:{min:0,max:1},grainRoughness:{min:0,max:1}},$c={blur:{min:0,max:1},pixelate:{min:0,max:1}};function ut(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Kc(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,e)):0}function qs(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?Math.min(1,Math.max(0,n)):t}function qi(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?Kc(n,t.min,t.max):0}function Jc(e){if(e==null)return null;let t=String(e).trim();return t||null}function Xc(e){if(e==null)return null;if(typeof e=="string"){let n=e.trim();return n?{src:n,intensity:1}:null}if(!ut(e))return null;let t=e.src;return typeof t!="string"||t.trim()===""?null:{src:t.trim(),intensity:qs(e.intensity,1)}}function Yc(e){if(typeof e=="string"){let t=e.trim();if(!t)return null;if(t.startsWith("{"))try{let n=JSON.parse(t);return ut(n)?n:null}catch{return null}return{preset:t,intensity:1}}return ut(e)?e:null}function Qc(e,t){let n=e.trim().match(zc);if(!n)return e;let i=n[1]??n[2]??"";return i&&Object.hasOwn(t,i)?t[i]:e}function ji(e,t){if(typeof e=="string"){let i=Qc(e,t);if(i!==e)return i;let r=e.trim();if(!r.startsWith("{"))return e;try{return ji(JSON.parse(r),t)}catch{return e}}if(!ut(e))return e;let n={};for(let[i,r]of Object.entries(e))n[i]=ji(r,t);return n}function Zc(e){return e?Vc.get(e)??null:null}function $i(e){let t=Yc(e);if(!t||t.enabled===!1)return null;let n=Jc(t.preset),i=Zc(n),r=i?.adjust??vn,o=i?.details??Tn,s=i?.effects??Nn,u=ut(t.adjust)?t.adjust:{},a=ut(t.details)?t.details:{},l=ut(t.effects)?t.effects:{},c=Vs.reduce((x,E)=>(x[E]=qi(u[E]??r[E],qc[E]),x),{...vn}),p=Wc.reduce((x,E)=>(x[E]=qi(a[E]??o[E],jc[E]),x),{...Tn}),f=zs.reduce((x,E)=>(x[E]=qi(l[E]??s[E],$c[E]),x),{...Nn});return{enabled:!0,preset:n,intensity:qs(t.intensity,1),adjust:c,details:p,effects:f,lut:Xc(t.lut),colorSpace:typeof t.colorSpace=="string"&&t.colorSpace.trim()?t.colorSpace.trim():Gc}}function js(e,t){return $i(ji(e,t))}function Zt(e){return!e?.enabled||e.intensity===0?!1:e.lut&&e.lut.intensity!==0?!0:Vs.some(t=>Math.abs(e.adjust[t])>1e-4)||Math.abs(e.details.vignette)>1e-4||Math.abs(e.details.grain)>1e-4||zs.some(t=>Math.abs(e.effects[t])>1e-4)}var Se=class extends Error{constructor(n,i=null){super(i==null?n:`${n} at line ${i}`);xe(this,"lineNumber");this.name="CubeLutParseError",this.lineNumber=i}},ed=[0,0,0],td=[1,1,1],Ji=64;function nd(e){let t=!1;for(let n=0;n<e.length;n++){let i=e[n];if(i===\'"\'&&(t=!t),i==="#"&&!t)return e.slice(0,n)}return e}function Qe(e,t){let n=Number(e);if(!Number.isFinite(n))throw new Se(`Invalid number "${e}"`,t);return n}function $s(e,t,n){if(e.length!==3)throw new Se(`${t} expects three numbers`,n);return[Qe(e[0],n),Qe(e[1],n),Qe(e[2],n)]}function Ks(e,t,n){if(!e)throw new Se(`${t} expects a size`,n);let i=Number(e);if(!Number.isInteger(i)||i<2)throw new Se(`${t} must be an integer greater than 1`,n);return i}function id(e,t){if(t[0]<=e[0]||t[1]<=e[1]||t[2]<=e[2])throw new Se("DOMAIN_MAX values must be greater than DOMAIN_MIN values")}function rd(e){let t=/^TITLE\\s+"([^"]*)"\\s*$/i.exec(e);if(t)return t[1]??null;let n=/^TITLE\\s+(.+)\\s*$/i.exec(e);return n&&(n[1]??"").trim()||null}function od(e){return/^[+-]?(?:\\d|\\.\\d)/.test(e)}function Js(e,t={}){let n=t.maxSize??Ji,i=null,r=ed,o=td,s=null,u=null,a=[],l=e.replace(/^\\uFEFF/,"").split(/\\r?\\n/);for(let p=0;p<l.length;p++){let f=p+1,x=nd(l[p]??"").trim();if(!x)continue;let E=x.split(/\\s+/),b=(E[0]??"").toUpperCase(),g=E.slice(1);if(b==="TITLE"){i=rd(x);continue}if(b==="DOMAIN_MIN"){r=$s(g,b,f);continue}if(b==="DOMAIN_MAX"){o=$s(g,b,f);continue}if(b==="LUT_3D_INPUT_RANGE"){if(g.length!==2)throw new Se(`${b} expects two numbers`,f);let A=Qe(g[0],f),C=Qe(g[1],f);if(C<=A)throw new Se("LUT_3D_INPUT_RANGE max must exceed min",f);r=[A,A,A],o=[C,C,C];continue}if(b==="LUT_1D_SIZE"){s=Ks(g[0],b,f);continue}if(b==="LUT_3D_SIZE"){if(u=Ks(g[0],b,f),u>n)throw new Se(`LUT_3D_SIZE ${u} exceeds max ${n}`,f);continue}if(!od(b)){if(b.startsWith("LUT_"))throw new Se(`Unsupported cube keyword ${b}`,f);continue}if(!u)throw s?new Se("1D cube LUTs are not supported yet",f):new Se("LUT data appears before LUT_3D_SIZE",f);if(E.length!==3)throw new Se("LUT data rows must contain three numbers",f);a.push(Qe(E[0],f),Qe(E[1],f),Qe(E[2],f))}if(s&&u)throw new Se("Mixed 1D and 3D cube LUTs are not supported yet");if(!u)throw s?new Se("1D cube LUTs are not supported yet"):new Se("Missing LUT_3D_SIZE");id(r,o);let c=u*u*u;if(a.length!==c*3)throw new Se(`Expected ${c} LUT rows for size ${u}, found ${a.length/3}`);return{title:i,size:u,domainMin:r,domainMax:o,data:new Float32Array(a)}}function sd(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function Ki(e){return Math.round(sd(e)*255)}function Xs(e){let t=e.size,n=t*t,i=t,r=new Uint8Array(n*i*4);for(let o=0;o<t;o++)for(let s=0;s<t;s++)for(let u=0;u<t;u++){let a=((o*t+s)*t+u)*3,l=(s*n+o*t+u)*4;r[l]=Ki(e.data[a]??0),r[l+1]=Ki(e.data[a+1]??0),r[l+2]=Ki(e.data[a+2]??0),r[l+3]=255}return{width:n,height:i,data:r}}var qe=new Map,ad="data-hf-color-grading-canvas",ia="data-hf-color-grading-source-hidden",ld="__hf_color_grading_canvas__",ud=16,en={enabled:!1,position:.5,softness:0,lineWidth:2};function cd(e){let t=window,i=e.closest("[data-composition-id]")?.getAttribute("data-composition-id")?.trim()??"",r=i?t.__hfVariablesByComp?.[i]:void 0;if(r)return r;let o=t.__hyperframes?.getVariables?.();return o&&typeof o=="object"?o:t.__hfVariables??{}}function Xi(e){let t=e.getAttribute(Qt);return t==null?null:js(t,cd(e))}var dd=["attribute vec2 a_pos;","varying vec2 v_uv;","void main(){"," v_uv = a_pos * 0.5 + 0.5;"," gl_Position = vec4(a_pos, 0.0, 1.0);","}"].join(`\n`),fd=["#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","#else","precision mediump float;","#endif","varying vec2 v_uv;","uniform sampler2D u_source;","uniform sampler2D u_blurSource;","uniform sampler2D u_lut;","uniform vec2 u_resolution;","uniform vec2 u_uvScale;","uniform vec2 u_uvOffset;","uniform float u_blurReady;","uniform float u_lutEnabled;","uniform float u_lutSize;","uniform vec2 u_lutTextureSize;","uniform vec3 u_lutDomainMin;","uniform vec3 u_lutDomainMax;","uniform float u_lutIntensity;","uniform float u_exposure;","uniform float u_contrast;","uniform float u_highlights;","uniform float u_shadows;","uniform float u_whites;","uniform float u_blacks;","uniform float u_temperature;","uniform float u_tint;","uniform float u_vibrance;","uniform float u_saturation;","uniform float u_vignette;","uniform float u_vignetteMidpoint;","uniform float u_vignetteRoundness;","uniform float u_vignetteFeather;","uniform float u_grain;","uniform float u_grainSize;","uniform float u_grainRoughness;","uniform float u_grainSeed;","uniform float u_blur;","uniform float u_pixelate;","uniform float u_intensity;","uniform float u_compareEnabled;","uniform float u_comparePosition;","uniform float u_compareSoftness;","uniform float u_compareLineWidth;","float lumaOf(vec3 c){ return dot(c, vec3(0.2126, 0.7152, 0.0722)); }","float grainHash(vec2 p){ return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123); }","float colorSaturation(vec3 c){ return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b); }","vec2 clampUv(vec2 uv){ return clamp(uv, vec2(0.0), vec2(1.0)); }","vec4 sampleSource(vec2 uv){ return texture2D(u_source, clampUv(uv)); }","vec4 sampleBlur(vec2 uv){ return texture2D(u_blurSource, clampUv(uv)); }","vec4 sampleMedia(vec2 uv){"," float pixel = clamp(u_pixelate, 0.0, 1.0);"," vec2 sampleUv = uv;"," if (pixel > 0.0) {"," float blockSize = mix(1.0, 48.0, pixel);"," vec2 cells = max(u_resolution / blockSize, vec2(1.0));"," sampleUv = (floor(clamp(uv, vec2(0.0), vec2(0.999999)) * cells) + 0.5) / cells;"," }"," vec4 base = sampleSource(sampleUv);"," float blur = clamp(u_blur, 0.0, 1.0);"," if (blur > 0.0 && u_blurReady > 0.5) {"," base = mix(base, sampleBlur(sampleUv), blur);"," }"," return base;","}","vec3 sampleLut(float r, float g, float b){"," float size = max(u_lutSize, 2.0);"," float x = (r + b * size + 0.5) / max(u_lutTextureSize.x, 1.0);"," float y = (g + 0.5) / max(u_lutTextureSize.y, 1.0);"," return texture2D(u_lut, vec2(x, y)).rgb;","}","vec3 applyLut(vec3 color){"," if (u_lutEnabled < 0.5) return color;"," float size = max(u_lutSize, 2.0);"," vec3 span = max(u_lutDomainMax - u_lutDomainMin, vec3(0.00001));"," vec3 scaled = clamp((color - u_lutDomainMin) / span, 0.0, 1.0) * (size - 1.0);"," vec3 lo = floor(scaled);"," vec3 hi = min(lo + 1.0, vec3(size - 1.0));"," vec3 f = scaled - lo;"," vec3 c000 = sampleLut(lo.r, lo.g, lo.b);"," vec3 c100 = sampleLut(hi.r, lo.g, lo.b);"," vec3 c010 = sampleLut(lo.r, hi.g, lo.b);"," vec3 c110 = sampleLut(hi.r, hi.g, lo.b);"," vec3 c001 = sampleLut(lo.r, lo.g, hi.b);"," vec3 c101 = sampleLut(hi.r, lo.g, hi.b);"," vec3 c011 = sampleLut(lo.r, hi.g, hi.b);"," vec3 c111 = sampleLut(hi.r, hi.g, hi.b);"," vec3 c00 = mix(c000, c100, f.r);"," vec3 c10 = mix(c010, c110, f.r);"," vec3 c01 = mix(c001, c101, f.r);"," vec3 c11 = mix(c011, c111, f.r);"," vec3 c0 = mix(c00, c10, f.g);"," vec3 c1 = mix(c01, c11, f.g);"," vec3 lutColor = mix(c0, c1, f.b);"," return mix(color, lutColor, clamp(u_lutIntensity, 0.0, 1.0));","}","void main(){"," vec2 uv = (v_uv - u_uvOffset) / u_uvScale;"," if (uv.x < 0.0 || uv.y < 0.0 || uv.x > 1.0 || uv.y > 1.0) {"," gl_FragColor = vec4(0.0);"," return;"," }"," vec4 originalSample = sampleSource(uv);"," vec4 sampleColor = sampleMedia(uv);"," vec3 original = originalSample.rgb;"," vec3 color = sampleColor.rgb * pow(2.0, u_exposure);"," float y = lumaOf(color);"," float shadowMask = 1.0 - smoothstep(0.0, 0.65, y);"," float highlightMask = smoothstep(0.35, 1.0, y);"," color += u_shadows * 0.35 * shadowMask;"," color += u_highlights * 0.35 * highlightMask;"," float blackPoint = clamp(u_blacks * 0.18, -0.18, 0.18);"," float whitePoint = clamp(1.0 - u_whites * 0.18, 0.82, 1.18);"," color = (color - blackPoint) / max(whitePoint - blackPoint, 0.2);"," color.r += u_temperature * 0.08 + u_tint * 0.04;"," color.b -= u_temperature * 0.08 - u_tint * 0.04;"," color.g -= u_tint * 0.08;"," color = (color - 0.5) * max(0.0, 1.0 + u_contrast) + 0.5;"," float satLuma = lumaOf(color);"," float currentSat = clamp(colorSaturation(color), 0.0, 1.0);"," float skinLike = smoothstep(0.02, 0.18, color.r - color.g) * smoothstep(0.0, 0.16, color.g - color.b) * smoothstep(0.18, 0.82, satLuma);"," float vibranceWeight = (1.0 - currentSat * 0.72) * mix(1.0, 0.55, skinLike);"," color = mix(vec3(satLuma), color, max(0.0, 1.0 + u_vibrance * vibranceWeight));"," color = mix(vec3(satLuma), color, max(0.0, 1.0 + u_saturation));"," color = clamp(color, 0.0, 1.0);"," color = clamp(applyLut(color), 0.0, 1.0);"," vec2 vignetteAspect = u_resolution.x > u_resolution.y"," ? vec2(u_resolution.x / max(u_resolution.y, 1.0), 1.0)"," : vec2(1.0, u_resolution.y / max(u_resolution.x, 1.0));"," vec2 vignetteUv = abs((v_uv - vec2(0.5)) * 2.0) * vignetteAspect;"," float vignettePower = mix(8.0, 1.8, clamp(u_vignetteRoundness * 0.5 + 0.5, 0.0, 1.0));"," float vignetteDistance = pow(pow(vignetteUv.x, vignettePower) + pow(vignetteUv.y, vignettePower), 1.0 / vignettePower);"," float vignetteMidpoint = mix(0.22, 1.08, clamp(u_vignetteMidpoint, 0.0, 1.0));"," float vignetteFeather = mix(0.08, 0.72, clamp(u_vignetteFeather, 0.0, 1.0));"," float vignetteMask = smoothstep(vignetteMidpoint, vignetteMidpoint + vignetteFeather, vignetteDistance);"," color *= 1.0 - vignetteMask * clamp(u_vignette, 0.0, 1.0) * 0.75;"," float grainAmount = clamp(u_grain, 0.0, 1.0);"," if (grainAmount > 0.0) {"," float grainPixelSize = mix(1.0, 6.0, clamp(u_grainSize, 0.0, 1.0));"," vec2 grainCoord = floor(gl_FragCoord.xy / grainPixelSize) + vec2(u_grainSeed, u_grainSeed * 1.37);"," float grainBase = grainHash(grainCoord) - grainHash(grainCoord + vec2(19.19, 73.31));"," float grainFine = grainHash(gl_FragCoord.xy + vec2(u_grainSeed * 2.11, u_grainSeed * 0.71)) - 0.5;"," float grain = mix(grainBase * 0.7, grainBase + grainFine * 0.35, clamp(u_grainRoughness, 0.0, 1.0));"," float grainLuma = lumaOf(color);"," float grainMask = smoothstep(0.02, 0.55, grainLuma) * (1.0 - smoothstep(0.88, 1.0, grainLuma));"," color += grain * grainAmount * mix(0.025, 0.08, grainMask);"," }"," color = clamp(color, 0.0, 1.0);"," vec3 graded = mix(original, color, u_intensity);"," if (u_compareEnabled > 0.5) {"," float pos = clamp(u_comparePosition, 0.0, 1.0);"," float softness = max(u_compareSoftness, 0.00001);"," float afterMask = smoothstep(pos - softness, pos + softness, v_uv.x);"," vec3 splitColor = mix(original, graded, afterMask);"," float lineMask = 0.0;"," if (u_compareLineWidth > 0.0) {"," float lineWidth = max(u_compareLineWidth / max(u_resolution.x, 1.0), 0.00001);"," lineMask = 1.0 - smoothstep(lineWidth, lineWidth * 1.8, abs(v_uv.x - pos));"," }"," gl_FragColor = vec4(mix(splitColor, vec3(1.0), lineMask * 0.82), sampleColor.a);"," return;"," }"," gl_FragColor = vec4(graded, sampleColor.a);","}"].join(`\n`),md=["#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","#else","precision mediump float;","#endif","varying vec2 v_uv;","uniform sampler2D u_source;","uniform vec2 u_resolution;","uniform vec2 u_direction;","uniform float u_radius;","vec4 readSource(vec2 uv){"," vec4 color = texture2D(u_source, clamp(uv, vec2(0.0), vec2(1.0)));"," color.rgb *= color.a;"," return color;","}","void main(){"," vec2 stepUv = u_direction * max(u_radius, 0.0) / max(u_resolution, vec2(1.0)) / 12.0;"," vec4 color = readSource(v_uv) * 0.08077993;"," color += readSource(v_uv + stepUv * 1.0) * 0.07918038;"," color += readSource(v_uv - stepUv * 1.0) * 0.07918038;"," color += readSource(v_uv + stepUv * 2.0) * 0.07456928;"," color += readSource(v_uv - stepUv * 2.0) * 0.07456928;"," color += readSource(v_uv + stepUv * 3.0) * 0.06747307;"," color += readSource(v_uv - stepUv * 3.0) * 0.06747307;"," color += readSource(v_uv + stepUv * 4.0) * 0.05865827;"," color += readSource(v_uv - stepUv * 4.0) * 0.05865827;"," color += readSource(v_uv + stepUv * 5.0) * 0.04899551;"," color += readSource(v_uv - stepUv * 5.0) * 0.04899551;"," color += readSource(v_uv + stepUv * 6.0) * 0.03931982;"," color += readSource(v_uv - stepUv * 6.0) * 0.03931982;"," color += readSource(v_uv + stepUv * 7.0) * 0.03031761;"," color += readSource(v_uv - stepUv * 7.0) * 0.03031761;"," color += readSource(v_uv + stepUv * 8.0) * 0.02245983;"," color += readSource(v_uv - stepUv * 8.0) * 0.02245983;"," color += readSource(v_uv + stepUv * 9.0) * 0.01598624;"," color += readSource(v_uv - stepUv * 9.0) * 0.01598624;"," color += readSource(v_uv + stepUv * 10.0) * 0.01093238;"," color += readSource(v_uv - stepUv * 10.0) * 0.01093238;"," color += readSource(v_uv + stepUv * 11.0) * 0.00718308;"," color += readSource(v_uv - stepUv * 11.0) * 0.00718308;"," color += readSource(v_uv + stepUv * 12.0) * 0.00453456;"," color += readSource(v_uv - stepUv * 12.0) * 0.00453456;"," if (color.a > 0.0001) color.rgb /= color.a;"," gl_FragColor = color;","}"].join(`\n`);function ct(e){return e instanceof HTMLVideoElement||e instanceof HTMLImageElement}function Ys(e,t,n){let i=e.createShader(n);return i?(e.shaderSource(i,t),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(L("runtime.colorGrading.compileShader",e.getShaderInfoLog(i)),e.deleteShader(i),null)):null}function ra(e,t=fd){let n=Ys(e,dd,e.VERTEX_SHADER),i=Ys(e,t,e.FRAGMENT_SHADER);if(!n||!i)return n&&e.deleteShader(n),i&&e.deleteShader(i),null;let r=e.createProgram();return r?(e.attachShader(r,n),e.attachShader(r,i),e.linkProgram(r),e.deleteShader(n),e.deleteShader(i),e.getProgramParameter(r,e.LINK_STATUS)?r:(L("runtime.colorGrading.linkProgram",e.getProgramInfoLog(r)),e.deleteProgram(r),null)):null}function Qi(e,t=e.LINEAR){let n=e.createTexture();return n?(e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,null),n):null}function pd(e,t){let n=ra(e,md);return n?{program:n,quad:t,position:e.getAttribLocation(n,"a_pos"),source:e.getUniformLocation(n,"u_source"),resolution:e.getUniformLocation(n,"u_resolution"),direction:e.getUniformLocation(n,"u_direction"),radius:e.getUniformLocation(n,"u_radius")}:null}function Qs(e){let t=Qi(e),n=e.createFramebuffer();if(!t||!n)return t&&e.deleteTexture(t),n&&e.deleteFramebuffer(n),null;e.bindFramebuffer(e.FRAMEBUFFER,n),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER);return e.bindFramebuffer(e.FRAMEBUFFER,null),i!==e.FRAMEBUFFER_COMPLETE?(e.deleteTexture(t),e.deleteFramebuffer(n),null):{texture:t,framebuffer:n,width:1,height:1}}function Zs(e,t,n,i){t.width===n&&t.height===i||(t.width=n,t.height=i,e.bindTexture(e.TEXTURE_2D,t.texture),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n,i,0,e.RGBA,e.UNSIGNED_BYTE,null))}function oa(e){let t=e.getContext("webgl",{alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0});if(!t)return null;let n=ra(t),i=Qi(t),r=Qi(t,t.NEAREST);if(!n||!i||!r)return n&&t.deleteProgram(n),i&&t.deleteTexture(i),r&&t.deleteTexture(r),null;let o=t.createBuffer();return o?(t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),t.STATIC_DRAW),{gl:t,program:{program:n,texture:i,lutTexture:r,quad:o,position:t.getAttribLocation(n,"a_pos"),source:t.getUniformLocation(n,"u_source"),blurSource:t.getUniformLocation(n,"u_blurSource"),lut:t.getUniformLocation(n,"u_lut"),resolution:t.getUniformLocation(n,"u_resolution"),uvScale:t.getUniformLocation(n,"u_uvScale"),uvOffset:t.getUniformLocation(n,"u_uvOffset"),blurReady:t.getUniformLocation(n,"u_blurReady"),lutEnabled:t.getUniformLocation(n,"u_lutEnabled"),lutSize:t.getUniformLocation(n,"u_lutSize"),lutTextureSize:t.getUniformLocation(n,"u_lutTextureSize"),lutDomainMin:t.getUniformLocation(n,"u_lutDomainMin"),lutDomainMax:t.getUniformLocation(n,"u_lutDomainMax"),lutIntensity:t.getUniformLocation(n,"u_lutIntensity"),exposure:t.getUniformLocation(n,"u_exposure"),contrast:t.getUniformLocation(n,"u_contrast"),highlights:t.getUniformLocation(n,"u_highlights"),shadows:t.getUniformLocation(n,"u_shadows"),whites:t.getUniformLocation(n,"u_whites"),blacks:t.getUniformLocation(n,"u_blacks"),temperature:t.getUniformLocation(n,"u_temperature"),tint:t.getUniformLocation(n,"u_tint"),vibrance:t.getUniformLocation(n,"u_vibrance"),saturation:t.getUniformLocation(n,"u_saturation"),vignette:t.getUniformLocation(n,"u_vignette"),vignetteMidpoint:t.getUniformLocation(n,"u_vignetteMidpoint"),vignetteRoundness:t.getUniformLocation(n,"u_vignetteRoundness"),vignetteFeather:t.getUniformLocation(n,"u_vignetteFeather"),grain:t.getUniformLocation(n,"u_grain"),grainSize:t.getUniformLocation(n,"u_grainSize"),grainRoughness:t.getUniformLocation(n,"u_grainRoughness"),grainSeed:t.getUniformLocation(n,"u_grainSeed"),blur:t.getUniformLocation(n,"u_blur"),pixelate:t.getUniformLocation(n,"u_pixelate"),intensity:t.getUniformLocation(n,"u_intensity"),compareEnabled:t.getUniformLocation(n,"u_compareEnabled"),comparePosition:t.getUniformLocation(n,"u_comparePosition"),compareSoftness:t.getUniformLocation(n,"u_compareSoftness"),compareLineWidth:t.getUniformLocation(n,"u_compareLineWidth")}}):(t.deleteProgram(n),t.deleteTexture(i),t.deleteTexture(r),null)}function hd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function gd(e){if(!hd(e))return{...en};let t=(n,i,r,o)=>{let s=typeof n=="number"?n:Number(n);return Math.min(o,Math.max(r,Number.isFinite(s)?s:i))};return{enabled:e.enabled===!0,position:t(e.position,en.position,0,1),softness:t(e.softness,en.softness,0,.25),lineWidth:t(e.lineWidth,en.lineWidth,0,12)}}function sa(e){try{let t=new URL(e,document.baseURI);return t.protocol==="data:"?{href:t.href}:t.protocol!=="http:"&&t.protocol!=="https:"?{error:"LUT must be project-local or a data URL"}:t.origin!==window.location.origin?{error:"Remote LUT URLs are not supported"}:{href:t.href}}catch{return{error:"Invalid LUT URL"}}}function er(e){return e instanceof Error?e.message:"LUT failed to load"}function xd(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0)%1e4}function bd(e){let t=e.id||e.currentSrc||e.getAttribute("src")||`${e.tagName}:${Array.prototype.indexOf.call(e.parentNode?.children??[],e)}`;return xd(t)}function yd(e){let t=sa(e);if("error"in t)return{state:"error",message:t.error};let n=qe.get(t.href);if(n)return n;let i=fetch(t.href,{credentials:"same-origin"}).then(o=>{if(!o.ok)throw new Error(`Failed to load LUT (${o.status})`);return o.text()}).then(o=>Js(o,{maxSize:Ji})),r={state:"pending",promise:i};for(;qe.size>=ud;){let o=qe.keys().next().value;if(!o)break;qe.delete(o)}return qe.set(t.href,r),i.then(o=>{qe.get(t.href)===r&&qe.set(t.href,{state:"ready",lut:o})},o=>{qe.get(t.href)===r&&qe.set(t.href,{state:"error",message:er(o)})}),r}function ea(e,t,n){if(e.lut?.src===t)return e.lut;let i=Xs(n),{gl:r,program:o}=e;try{return r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,o.lutTexture),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,i.width,i.height,0,r.RGBA,r.UNSIGNED_BYTE,i.data),e.lut={src:t,size:n.size,domainMin:n.domainMin,domainMax:n.domainMax,textureWidth:i.width,textureHeight:i.height},e.lutError=null,e.lutLoadingSrc=null,e.lut}catch(s){return e.lut=null,e.lutError=er(s),e.lutLoadingSrc=null,L("runtime.colorGrading.uploadLut",s),null}}function Ln(e,t){e.deleteTexture(t.texture),e.deleteFramebuffer(t.framebuffer)}function aa(e){let t=e.effectTargets;t&&(e.gl.deleteProgram(t.blurProgram.program),Ln(e.gl,t.scratch),Ln(e.gl,t.blur),e.effectTargets=null)}function la(e){aa(e),e.gl.deleteTexture(e.program.texture),e.gl.deleteTexture(e.program.lutTexture),e.gl.deleteBuffer(e.program.quad),e.gl.deleteProgram(e.program.program)}function Sd(e){let t=oa(e.canvas);return t?(la(e),e.gl=t.gl,e.program=t.program,e.lut=null,e.lutLoadingSrc=null,e.lutError=null,e.effectError=null,!0):!1}function Zi(e){if(!e.sourceHidden)return;e.element.removeAttribute(ia);let t=e.element.style.getPropertyValue("opacity"),n=e.element.style.getPropertyPriority("opacity");t==="0"&&n==="important"&&(e.sourceInlineOpacity===null?e.element.style.removeProperty("opacity"):e.element.style.setProperty("opacity",e.sourceInlineOpacity,e.sourceInlineOpacityPriority)),e.sourceHidden=!1}function Ed(e){if(e.effectTargets)return e.effectTargets;let{gl:t}=e,n=pd(t,e.program.quad),i=Qs(t),r=Qs(t);return!n||!i||!r?(n&&t.deleteProgram(n.program),i&&Ln(t,i),r&&Ln(t,r),e.effectError="Framebuffer effects unavailable",null):(e.effectError=null,e.effectTargets={blurProgram:n,scratch:i,blur:r},e.effectTargets)}function Ad(e,t,n,i,r){let o=Math.max(1,Math.ceil(i)),s=Math.max(1,Math.ceil(r));return Zs(e,t,o,s),Zs(e,n,o,s),{width:o,height:s}}function ta(e,t,n,i,r,o,s){e.bindFramebuffer(e.FRAMEBUFFER,i.framebuffer),e.viewport(0,0,r.width,r.height),e.useProgram(t.program),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,n),e.uniform1i(t.source,0),e.uniform2f(t.resolution,r.width,r.height),e.uniform2f(t.direction,o.x,o.y),e.uniform1f(t.radius,s),e.bindBuffer(e.ARRAY_BUFFER,t.quad),e.enableVertexAttribArray(t.position),e.vertexAttribPointer(t.position,2,e.FLOAT,!1,0,0),e.drawArrays(e.TRIANGLE_STRIP,0,4)}function wd(e,t,n,i,r,o,s){let u=n;for(let a=0;a<Math.max(1,Math.floor(s));a++)ta(e,t.blurProgram,u,t.scratch,r,{x:1,y:0},o),ta(e,t.blurProgram,t.scratch.texture,i,r,{x:0,y:1},o),u=i.texture}function Fd(e){let t=e.grading.lut?.src.trim()??"",n=e.grading.lut?.intensity??1;if(!t||n<=0)return e.lut=null,e.lutLoadingSrc=null,e.lutError=null,null;let i=sa(t);if("error"in i)return e.lut=null,e.lutLoadingSrc=null,e.lutError=i.error,null;if(e.lut?.src===i.href)return e.lut;e.lut=null;let r=yd(t);return r.state==="ready"?ea(e,i.href,r.lut):r.state==="error"?(e.lutError=r.message,e.lutLoadingSrc=null,null):(e.lutLoadingSrc!==i.href&&(e.lutLoadingSrc=i.href,e.lutError=null,r.promise.then(o=>{e.destroyed||e.grading.lut?.src.trim()!==t||(ea(e,i.href,o),We(e))},o=>{e.destroyed||e.grading.lut?.src.trim()!==t||(e.lut=null,e.lutError=er(o),e.lutLoadingSrc=null,We(e))})),null)}function Yi(e){if(!e)return null;if(typeof e=="string"){let t=e.trim();if(!t)return null;let n=document.getElementById(t.replace(/^#/,""));if(n&&ct(n))return n;try{let i=document.querySelector(t);return i&&ct(i)?i:null}catch{return null}}if(e.hfId){let t=document.querySelector(`[data-hf-id="${CSS.escape(e.hfId)}"]`);if(t&&ct(t))return t}if(e.id){let t=document.getElementById(e.id);if(t&&ct(t))return t}if(!e.selector)return null;try{let t=Array.from(document.querySelectorAll(e.selector)),n=Math.max(0,Math.floor(Number(e.selectorIndex??0)||0)),i=t[n]??null;return i&&ct(i)?i:null}catch{return null}}function Cd(e){return e instanceof HTMLVideoElement?e.videoWidth>0&&e.videoHeight>0?{width:e.videoWidth,height:e.videoHeight}:null:e instanceof HTMLImageElement&&e.naturalWidth>0&&e.naturalHeight>0?{width:e.naturalWidth,height:e.naturalHeight}:null}function ua(e){return e instanceof HTMLVideoElement?e.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA&&e.videoWidth>0&&e.videoHeight>0:e instanceof HTMLImageElement?e.complete&&e.naturalWidth>0&&e.naturalHeight>0:!1}function _d(e){if(!e.id)return null;let t=document.getElementById(`__render_frame_${e.id}__`);return t instanceof HTMLImageElement&&ua(t)?t:null}function Md(e){return e instanceof HTMLImageElement&&e.classList.contains("__render_frame__")}function vd(e,t){t.parentNode&&t.nextSibling!==e.canvas&&t.parentNode.insertBefore(e.canvas,t.nextSibling)}function Td(e){if(e instanceof HTMLVideoElement){let t=_d(e);if(t)return t}return ua(e)?e:null}function na(e,t){let n=e.toLowerCase();if(n==="center")return .5;if(t==="x"){if(n==="left")return 0;if(n==="right")return 1}else{if(n==="top")return 0;if(n==="bottom")return 1}if(n.endsWith("%")){let i=Number.parseFloat(n);return Number.isFinite(i)?i/100:null}return null}function Nd(e){let t=e.trim().split(/\\s+/).filter(Boolean),n=.5,i=.5;for(let r=0;r<t.length;r++){let o=t[r]??"",s=na(o,"x"),u=na(o,"y");if(s!==null&&(o==="left"||o==="right"||o.endsWith("%")&&r===0)){n=s;continue}if(u!==null&&(o==="top"||o==="bottom"||o.endsWith("%")&&r>0)){i=u;continue}}return{x:n,y:i}}function Ld(e,t,n,i,r,o){if(e<=0||t<=0||n<=0||i<=0)return{scaleX:1,scaleY:1,offsetX:0,offsetY:0};let s=r||"fill",u=e,a=t;if(s==="contain"||s==="cover"||s==="scale-down"){let f=s==="cover"?Math.max(e/n,t/i):Math.min(e/n,t/i);u=n*f,a=i*f,s==="scale-down"&&u>n&&a>i&&(u=n,a=i)}else s==="none"&&(u=n,a=i);let l=Nd(o||"center"),c=(e-u)*l.x/e,p=(t-a)*l.y/t;return{scaleX:u/e,scaleY:a/t,offsetX:c,offsetY:p}}function Rd(e,t){window.getComputedStyle(t).position==="static"&&(e.touchedParent||(e.touchedParent=t,e.parentInlinePosition=t.style.position||null),t.style.position="relative")}function kd(e,t){let{element:n,canvas:i}=e,r=n.parentElement;r&&Rd(e,r);let o=window.getComputedStyle(t);Vr(i.style,o),i.style.pointerEvents="none",i.style.position="absolute",i.style.inset="auto",i.style.left=`${n.offsetLeft}px`,i.style.top=`${n.offsetTop}px`,i.style.right="auto",i.style.bottom="auto",i.style.width=`${n.offsetWidth}px`,i.style.height=`${n.offsetHeight}px`,i.style.display="block",i.style.opacity=e.sourceOpacityForCanvas,i.style.visibility=e.sourceVisibleForCanvas?"visible":"hidden";let s=n.getBoundingClientRect(),u=Math.max(0,Math.round(n.offsetWidth||s.width)),a=Math.max(0,Math.round(n.offsetHeight||s.height));return u<=0||a<=0?(i.style.display="none",null):(i.width!==u&&(i.width=u),i.height!==a&&(i.height=a),{width:u,height:a})}function Dd(e,t,n,i,r,o,s,u,a){e.uniform1i(t.source,0),e.uniform1i(t.blurSource,1),e.uniform1i(t.lut,2),e.uniform2f(t.resolution,s.width,s.height),e.uniform2f(t.uvScale,u.scaleX,u.scaleY),e.uniform2f(t.uvOffset,u.offsetX,u.offsetY),e.uniform1f(t.blurReady,r?1:0),e.uniform1f(t.lutEnabled,i?1:0),e.uniform1f(t.lutSize,i?.size??2),e.uniform2f(t.lutTextureSize,i?.textureWidth??1,i?.textureHeight??1),e.uniform3f(t.lutDomainMin,i?.domainMin[0]??0,i?.domainMin[1]??0,i?.domainMin[2]??0),e.uniform3f(t.lutDomainMax,i?.domainMax[0]??1,i?.domainMax[1]??1,i?.domainMax[2]??1),e.uniform1f(t.lutIntensity,n.lut?.intensity??0),e.uniform1f(t.exposure,n.adjust.exposure),e.uniform1f(t.contrast,n.adjust.contrast),e.uniform1f(t.highlights,n.adjust.highlights),e.uniform1f(t.shadows,n.adjust.shadows),e.uniform1f(t.whites,n.adjust.whites),e.uniform1f(t.blacks,n.adjust.blacks),e.uniform1f(t.temperature,n.adjust.temperature),e.uniform1f(t.tint,n.adjust.tint),e.uniform1f(t.vibrance,n.adjust.vibrance),e.uniform1f(t.saturation,n.adjust.saturation),e.uniform1f(t.vignette,n.details.vignette),e.uniform1f(t.vignetteMidpoint,n.details.vignetteMidpoint),e.uniform1f(t.vignetteRoundness,n.details.vignetteRoundness),e.uniform1f(t.vignetteFeather,n.details.vignetteFeather),e.uniform1f(t.grain,n.details.grain),e.uniform1f(t.grainSize,n.details.grainSize),e.uniform1f(t.grainRoughness,n.details.grainRoughness),e.uniform1f(t.grainSeed,a),e.uniform1f(t.blur,n.effects.blur),e.uniform1f(t.pixelate,n.effects.pixelate),e.uniform1f(t.intensity,n.intensity),e.uniform1f(t.compareEnabled,o.enabled?1:0),e.uniform1f(t.comparePosition,o.position),e.uniform1f(t.compareSoftness,o.softness),e.uniform1f(t.compareLineWidth,o.lineWidth)}function Id(e){e.sourceHidden||(e.sourceInlineOpacity=e.element.style.getPropertyValue("opacity")||null,e.sourceInlineOpacityPriority=e.element.style.getPropertyPriority("opacity")),e.element.setAttribute(ia,"true"),e.element.style.setProperty("opacity","0","important"),e.sourceHidden=!0}function We(e){if(e.destroyed||e.contextLost)return!1;let t=Td(e.element);if(!t)return e.hasDrawn||(e.canvas.style.display="none"),!1;let n=Cd(t);if(!n)return!1;let i=t instanceof HTMLElement?t:e.element,r=e.element.style.getPropertyValue("opacity"),o=e.element.style.getPropertyPriority("opacity"),s=e.sourceHidden&&r==="0"&&o==="important",u=e.element.style.getPropertyValue("visibility"),a=Md(t);if(a&&vd(e,t),a||!s){let E=window.getComputedStyle(a?t:e.element);e.sourceOpacityForCanvas=E.opacity||"1",e.sourceVisibleForCanvas=(a||u!=="hidden")&&E.visibility!=="hidden"}let l=kd(e,i);if(!l)return!1;let c=window.getComputedStyle(i),p=Ld(l.width,l.height,n.width,n.height,c.objectFit,c.objectPosition),{gl:f,program:x}=e;try{let E=Fd(e);f.activeTexture(f.TEXTURE0),f.bindTexture(f.TEXTURE_2D,x.texture),f.pixelStorei(f.UNPACK_FLIP_Y_WEBGL,!0),f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,t);let b=!1,g=Math.min(1,Math.max(0,e.grading.effects.blur));if(g>0){let C=Ed(e);if(C){let N=Ad(f,C.scratch,C.blur,l.width,l.height);wd(f,C,x.texture,C.blur,N,.75+Math.pow(g,1.35)*32,g>.55?3:2),b=!0}}else e.effectError=null,e.effectTargets&&aa(e);f.bindFramebuffer(f.FRAMEBUFFER,null),f.viewport(0,0,l.width,l.height),f.useProgram(x.program),f.activeTexture(f.TEXTURE0),f.bindTexture(f.TEXTURE_2D,x.texture),f.activeTexture(f.TEXTURE1),f.bindTexture(f.TEXTURE_2D,e.effectTargets?.blur.texture??x.texture),f.activeTexture(f.TEXTURE2),f.bindTexture(f.TEXTURE_2D,x.lutTexture);let A=e.grainSeed+(e.element instanceof HTMLVideoElement?Math.floor(e.element.currentTime*60):0);return Dd(f,x,e.grading,E,b,e.compare,l,p,A),f.bindBuffer(f.ARRAY_BUFFER,x.quad),f.enableVertexAttribArray(x.position),f.vertexAttribPointer(x.position,2,f.FLOAT,!1,0,0),f.drawArrays(f.TRIANGLE_STRIP,0,4),Id(e),e.hasDrawn=!0,e.drawError=null,!0}catch(E){return e.drawError=E instanceof Error?E.message:"Shader draw failed",L("runtime.colorGrading.drawEntry",E),!1}}function Ge(e,t,n,i){t.addEventListener(n,i),e.cleanup.push(()=>t.removeEventListener(n,i))}function Pd(e){e.animationFrame!==null&&(window.cancelAnimationFrame(e.animationFrame),e.animationFrame=null),e.videoFrameHandle!==null&&e.element instanceof HTMLVideoElement&&(e.element.cancelVideoFrameCallback?.(e.videoFrameHandle),e.videoFrameHandle=null)}function tn(e){if(e.destroyed||!(e.element instanceof HTMLVideoElement)||e.videoFrameHandle!==null||e.animationFrame!==null)return;let t=e.element,n=t;if(typeof n.requestVideoFrameCallback=="function"){e.videoFrameHandle=n.requestVideoFrameCallback(()=>{e.videoFrameHandle=null,We(e),!e.destroyed&&!t.paused&&!t.ended&&tn(e)});return}e.animationFrame=window.requestAnimationFrame(()=>{e.animationFrame=null,We(e),!e.destroyed&&!t.paused&&!t.ended&&tn(e)})}function Od(e){let t=()=>{We(e)};Ge(e,e.element,"load",t),Ge(e,e.element,"loadedmetadata",t),Ge(e,e.element,"loadeddata",t),Ge(e,e.element,"seeked",t),Ge(e,e.element,"timeupdate",t),Ge(e,window,"resize",t),e.element instanceof HTMLVideoElement&&(Ge(e,e.element,"play",()=>tn(e)),Ge(e,e.element,"pause",t)),Ge(e,e.canvas,"webglcontextlost",n=>{n.preventDefault(),e.contextLost=!0,e.drawError="WebGL context lost",e.canvas.style.display="none",Zi(e)}),Ge(e,e.canvas,"webglcontextrestored",()=>{if(e.contextLost=!1,!Sd(e)){e.contextLost=!0,e.drawError="WebGL context restore failed",Zi(e);return}e.drawError=null,We(e)}),typeof ResizeObserver<"u"&&(e.resizeObserver=new ResizeObserver(t),e.resizeObserver.observe(e.element))}function Bd(e){if(!e.destroyed){e.destroyed=!0,Pd(e),e.resizeObserver?.disconnect();for(let t of e.cleanup)t();e.cleanup.length=0,e.canvas.remove(),la(e),Zi(e),e.touchedParent&&(e.parentInlinePosition===null?e.touchedParent.style.removeProperty("position"):e.touchedParent.style.position=e.parentInlinePosition)}}function Hd(e){let t=document.createElement("canvas");return e.id&&(t.id=`${Us}${e.id}`),t.className=ld,t.setAttribute(ad,"true"),t.setAttribute("data-hyperframes-ignore",""),t.setAttribute("data-hyperframes-picker-ignore",""),t.setAttribute("data-hf-ignore",""),t.setAttribute("aria-hidden","true"),t.style.pointerEvents="none",t.style.display="none",e.parentNode?.insertBefore(t,e.nextSibling),t}function ca(){let e=new WeakMap,t=new Set,n=null,i=!1,r=(b,g,A)=>{let C=e.get(b);if(C)return C.grading=g,C.source=A,We(C),b instanceof HTMLVideoElement&&!b.paused&&tn(C),!0;let N=Hd(b),$=oa(N);if(!$)return N.remove(),!1;let B={element:b,canvas:N,gl:$.gl,program:$.program,grading:g,compare:{...en},lut:null,lutLoadingSrc:null,lutError:null,drawError:null,effectTargets:null,effectError:null,source:A,animationFrame:null,videoFrameHandle:null,resizeObserver:null,cleanup:[],touchedParent:null,parentInlinePosition:null,sourceHidden:!1,sourceInlineOpacity:null,sourceInlineOpacityPriority:"",sourceOpacityForCanvas:window.getComputedStyle(b).opacity||"1",sourceVisibleForCanvas:window.getComputedStyle(b).visibility!=="hidden",hasDrawn:!1,contextLost:!1,grainSeed:bd(b),destroyed:!1};return e.set(b,B),t.add(b),Od(B),We(B),b instanceof HTMLVideoElement&&!b.paused&&tn(B),!0},o=(b,g)=>{if(i)return!1;let A=Yi(b);if(!A)return!1;let C=e.get(A);if(!C){let N=Xi(A);if(!Zt(N)||!r(A,N,"attribute"))return!1;C=e.get(A)}return C?(C.compare=gd(g),We(C),!0):!1},s=b=>{let g=e.get(b);g&&(Bd(g),e.delete(b),t.delete(b))},u=()=>{if(i)return 0;let b=new Set;document.querySelectorAll(`video[${Qt}], img[${Qt}]`).forEach(A=>{if(!ct(A))return;b.add(A);let C=Xi(A);Zt(C)?r(A,C,"attribute"):s(A)});for(let A of Array.from(t)){let C=e.get(A);C&&(!A.isConnected||C.source==="attribute"&&!b.has(A))&&s(A)}return t.size},a=()=>{if(i)return 0;let b=0;for(let g of Array.from(t,A=>e.get(A)))g&&We(g)&&(b+=1);return b},l=(b,g)=>{if(i)return!1;let A=Yi(b);if(!A)return!1;let C=$i(g);return Zt(C)?r(A,C,"live"):(s(A),!0)},c=(b,g)=>{if(!ct(b))return!1;let A=e.get(b);return A?(A.sourceVisibleForCanvas=g,!0):!1},p=b=>{let g=Yi(b);if(!g)return{state:"missing",message:"Media not found"};let A=e.get(g);if(A)return A.effectError?{state:"unavailable",message:A.effectError}:A.drawError?{state:"unavailable",message:A.drawError}:A.lutError?{state:"unavailable",message:`LUT error: ${A.lutError}`}:A.grading.lut&&A.lutLoadingSrc?{state:"pending",message:"Loading LUT"}:A.canvas.style.display==="none"?{state:"pending",message:"Waiting for media frame"}:{state:"active",message:A.lut?"Shader + LUT active":"Shader active"};let C=Xi(g);return Zt(C)?{state:"unavailable",message:"WebGL unavailable"}:{state:"inactive",message:"No grading applied"}},f=()=>{if(!i){i=!0,n?.disconnect(),n=null;for(let b of Array.from(t))s(b)}};document.body&&(n=new MutationObserver(()=>u()),n.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[Qt]}));let x={refresh:u,redraw:a,setGrading:l,setCompare:o,setSourceVisibility:c,getStatus:p,destroy:f},E=window;return E.__hf=E.__hf||{},E.__hf.colorGrading=x,u(),x}var Rn=class{constructor(t){xe(this,"_baseTime",0);xe(this,"_playStartMs",null);xe(this,"_rate",1);xe(this,"_duration",1/0);xe(this,"_nowMs");xe(this,"_audioSource",null);this._baseTime=t?.initialTime??0,this._rate=t?.rate??1,this._duration=t?.duration??1/0,this._nowMs=t?.nowMs??(()=>performance.now())}now(){if(this._playStartMs===null)return this._baseTime;if(this._audioSource){let i=null;if("currentTimeSeconds"in this._audioSource)i=this._audioSource.currentTimeSeconds;else{let{el:r,compositionStart:o,mediaStart:s}=this._audioSource;!r.paused&&Number.isFinite(r.currentTime)&&(i=(r.currentTime-s)/(r.playbackRate>0?r.playbackRate:1)*this._rate+o)}if(i!==null)return Number.isFinite(this._duration)&&i>=this._duration?this._duration:Math.max(0,i)}let t=(this._nowMs()-this._playStartMs)/1e3,n=this._baseTime+t*this._rate;return Number.isFinite(this._duration)&&n>=this._duration?this._duration:Math.max(0,n)}play(){return this._playStartMs!==null||Number.isFinite(this._duration)&&this._baseTime>=this._duration?!1:(this._playStartMs=this._nowMs(),!0)}pause(){return this._playStartMs===null?!1:(this._baseTime=this.now(),this._playStartMs=null,!0)}seek(t){let n=Number.isFinite(this._duration)?Math.max(0,Math.min(t,this._duration)):Math.max(0,t);this._baseTime=n,this._playStartMs!==null&&(this._playStartMs=this._nowMs())}isPlaying(){return this._playStartMs!==null}setRate(t){let n=Number.isFinite(t)&&t>0?Math.max(.1,Math.min(5,t)):1;this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._rate=n}getRate(){return this._rate}setDuration(t){this._duration=Number.isFinite(t)&&t>0?t:1/0,this._baseTime>this._duration&&(this._baseTime=this._duration)}getDuration(){return this._duration}attachAudioSource(t){this._audioSource=t}detachAudioSource(){this._audioSource&&this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._audioSource=null}hasAudioSource(){return this._audioSource!==null}getSource(){if(this._audioSource&&this._playStartMs!==null){if("currentTimeSeconds"in this._audioSource)return"audio";let{el:t}=this._audioSource;if(!t.paused&&Number.isFinite(t.currentTime))return"audio"}return"monotonic"}snapshot(){return{time:this.now(),playing:this.isPlaying(),rate:this._rate,duration:this._duration,source:this.getSource()}}reachedEnd(){return Number.isFinite(this._duration)&&this.now()>=this._duration}};function da(e){return!Number.isFinite(e)||e<=0?1:e}function Gd(e,t){t||e.paused||!un().__hfDebug||console.debug("[hyperframes] webAudioTransport claimed fallback-playing element:",e.currentSrc||e.getAttribute("src")||"")}function Wd(e,t){let{elapsed:n,mediaStart:i,scheduledAt:r,safeRate:o,clipDuration:s}=t,u=Number.isFinite(s)&&s>0,a=s*o;if(n>=0){let c=a-n;return u&&c<=0?!1:(u?e.start(0,n+i,c):e.start(0,n+i),!0)}let l=-n/o;return u?e.start(r+l,i,a):e.start(r+l,i),!0}var kn=class{constructor(){xe(this,"_ctx",null);xe(this,"_bufferCache",new Map);xe(this,"_failedSrcs",new Set);xe(this,"_activeSources",[]);xe(this,"_masterGain",null);xe(this,"_rateAnchorCtx",0);xe(this,"_rateAnchorComp",0);xe(this,"_rate",1);xe(this,"_paused",!0);xe(this,"_playGeneration",0)}async init(){try{return this._ctx=new AudioContext,this._masterGain=this._ctx.createGain(),this._masterGain.connect(this._ctx.destination),!0}catch{return!1}}get context(){return this._ctx}getTime(){return!this._ctx||this._paused?-1:this._rateAnchorComp+(this._ctx.currentTime-this._rateAnchorCtx)*this._rate}async decodeAudioElement(t){let n=t.currentSrc||t.getAttribute("src");if(!n)return null;if(this._bufferCache.has(n))return this._bufferCache.get(n);if(this._failedSrcs.has(n)||!this._ctx)return null;let i;try{let r=await fetch(n,{cache:"no-store"});if(!r.ok)return L("webAudioTransport.fetch",new Error(`${r.status} ${n}`)),null;i=await r.arrayBuffer()}catch(r){return L("webAudioTransport.fetch",r),null}try{let r=await this._ctx.decodeAudioData(i);return this._bufferCache.set(n,r),r}catch(r){return this._failedSrcs.add(n),L("webAudioTransport.decode",r),null}}startGeneration(){return this._playGeneration+=1,this._playGeneration}currentGeneration(){return this._playGeneration}async schedulePlayback(t,n,i,r,o,s,u,a=1,l=Number.POSITIVE_INFINITY){if(!this._ctx||!this._masterGain||u!==this._playGeneration)return null;try{if(this._ctx.state==="suspended"&&await this._ctx.resume(),u!==this._playGeneration)return null;let c=da(a),p=this._ctx.createBufferSource();p.buffer=n,p.playbackRate.value=c;let f=this._ctx.createGain();f.gain.value=s,p.connect(f),f.connect(this._masterGain);let x=o-i,E=this._ctx.currentTime;if(this._rate=c,this._rateAnchorCtx=E,this._rateAnchorComp=o,!Wd(p,{elapsed:x,mediaStart:r,scheduledAt:E,safeRate:c,clipDuration:l}))return p.disconnect(),f.disconnect(),null;let b=t.muted;t.muted=!0,Gd(t,b);let g={el:t,sourceNode:p,gainNode:f,compositionStart:i,mediaStart:r,scheduledAt:E,priorMuted:b,bounded:Number.isFinite(l)&&l>0};return this._activeSources.push(g),this._paused=!1,p.addEventListener("ended",()=>{let A=this._activeSources.indexOf(g);A!==-1&&(this._activeSources.splice(A,1),t.muted=b,this._activeSources.length===0&&(this._paused=!0))}),g}catch(c){return L("webAudioTransport.schedule",c),null}}setRate(t){let n=da(t);if(n===this._rate)return!1;this._ctx&&!this._paused&&(this._rateAnchorComp=this.getTime(),this._rateAnchorCtx=this._ctx.currentTime),this._rate=n;for(let i of this._activeSources)try{i.sourceNode.playbackRate.value=n}catch(r){L("webAudioTransport.setRate",r)}return!0}hasBoundedActiveSources(){return this._activeSources.some(t=>t.bounded)}stopAll(){for(let t of this._activeSources){try{t.sourceNode.stop(),t.sourceNode.disconnect(),t.gainNode.disconnect()}catch{}t.el.muted=t.priorMuted}this._activeSources=[],this._paused=!0}setVolume(t){this._masterGain&&(this._masterGain.gain.value=Math.max(0,Math.min(1,t)))}setElementVolume(t,n){let i=Math.max(0,Math.min(1,n));for(let r of this._activeSources)if(r.el===t)try{r.gainNode.gain.value=i}catch(o){L("webAudioTransport.setElementVolume",o)}}setMuted(t){this._masterGain&&(this._masterGain.gain.value=t?0:1)}isActive(){return this._activeSources.length>0&&!this._paused}ownsElement(t){return!this._paused&&this._activeSources.some(n=>n.el===t)}destroy(){if(this.stopAll(),this._bufferCache.clear(),this._failedSrcs.clear(),this._ctx)try{this._ctx.close()}catch{}this._ctx=null,this._masterGain=null}};var fa="data-hf-studio-manual-edit-gesture";var tr="data-hf-authored-duration",nr="data-hf-authored-end";function Ud(){let e=window.__HF_EXPORT_RENDER_SEEK_CONFIG,t=e?.fps,n=e?.fpsSource,i=Number(t);return!e||t==null?{fps:null,source:"default",rawFpsSource:n,rawFps:t,fallbackReason:"missing"}:!Number.isFinite(i)||i<=0?{fps:null,source:"default",rawFpsSource:n,rawFps:t,fallbackReason:"invalid"}:{fps:i,source:n==="render-options"||n==="default"?n:"unknown",rawFpsSource:n,rawFps:t,fallbackReason:e.fpsFallbackReason}}function ma(){let e=jr();zi(document);let t=Ud();e.canonicalFps=t.fps??e.canonicalFps,window.__HF_EXPORT_RENDER_SEEK_CONFIG&&console.info("[hyperframes] render runtime fps",{canonicalFps:e.canonicalFps,source:t.source,rawFpsSource:t.rawFpsSource,rawFps:t.rawFps,fallbackReason:t.fallbackReason});let n=null,i=null,r=null,o=[],s=new Set,u=null;if(typeof window.__hfRuntimeTeardown=="function")try{window.__hfRuntimeTeardown()}catch(d){L("runtime.init.site1",d)}(()=>{let d=window.gsap,m=window;if(!(!d?.registerPlugin||m.__hfAutoNoopRegistered))try{d.registerPlugin({name:"_auto",init:()=>!1}),m.__hfAutoNoopRegistered=!0}catch{}})(),document.documentElement&&(document.documentElement.style.margin="0",document.documentElement.style.padding="0",document.documentElement.style.overflow="hidden"),document.body&&(document.body.style.margin="0",document.body.style.padding="0",document.body.style.overflow="hidden"),window.__timelines=window.__timelines||{};let l=()=>{let d=document.querySelector(\'[data-composition-id][data-root="true"]\');if(d instanceof HTMLElement)return d;let m=Array.from(document.querySelectorAll("[data-composition-id]"));return m.find(h=>!h.parentElement?.closest("[data-composition-id]"))??m[0]??null};if(Array.isArray(window.__timelines)){let d=window.__timelines,m=l()?.getAttribute("data-composition-id")??"root",h={};if(d.length===1)h[m]=d[0];else for(let y=0;y<d.length;y++)h[`tl-${y}`]=d[y];window.__timelines=h}let c=l();c&&!c.hasAttribute("data-start")&&c.setAttribute("data-start","0");let p=d=>{o.push(d)},f=(d,m,h)=>{let y=h??`${d}:${JSON.stringify(m)}`;s.has(y)||(s.add(y),Fe({source:"hf-preview",type:"diagnostic",code:d,details:m}))},x=d=>{let m={scale:1,focusX:960,focusY:540},h=[],y=[],w={time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying(),renderMode:!1,timelineDirty:!1};return{play:d.play,pause:d.pause,seek:d.seek,getTime:d.getTime,getDuration:d.getDuration,isPlaying:d.isPlaying,getMainTimeline:()=>null,getElementBounds:()=>{},getElementsAtPoint:()=>{},setElementPosition:()=>{},previewElementPosition:()=>{},setElementKeyframes:()=>{},setElementScale:()=>{},setElementFontSize:()=>{},setElementTextContent:()=>{},setElementTextColor:()=>{},setElementTextShadow:()=>{},setElementTextFontWeight:()=>{},setElementTextFontFamily:()=>{},setElementTextOutline:()=>{},setElementTextHighlight:()=>{},setElementVolume:()=>{},setStageZoom:()=>{},getStageZoom:()=>m,setStageZoomKeyframes:()=>{},getStageZoomKeyframes:()=>h,addElement:()=>!1,removeElement:()=>!1,updateElementTiming:()=>!1,setElementTiming:()=>{},updateElementSrc:()=>!1,updateElementLayer:()=>!1,updateElementBasePosition:()=>!1,markTimelineDirty:()=>{},isTimelineDirty:()=>!1,rebuildTimeline:()=>{},ensureTimeline:()=>{},enableRenderMode:()=>{},disableRenderMode:()=>{},renderSeek:d.renderSeek,getElementVisibility:()=>({visible:!1}),getVisibleElements:()=>y,getRenderState:()=>({...w,time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying()})}},E=1/60,b=.75,g=2,A=.05,C=100,N=240,$=d=>{if(d instanceof Error)return d.message||String(d);if(typeof d=="string")return d;try{return JSON.stringify(d)}catch{return String(d??"")}},B=d=>{let m=d.toLowerCase();return m.includes("cannot read properties of null")||m.includes("cannot set properties of null")?{code:"runtime_null_dom_access",category:"dom-null-access"}:m.includes("failed to execute \'queryselector\'")?{code:"runtime_invalid_selector",category:"selector-invalid"}:m.includes("is not defined")?{code:"runtime_reference_missing",category:"reference-missing"}:{code:"runtime_script_error",category:"script-error"}},v=d=>{if(d==null||d.trim()==="")return null;let m=Number.parseFloat(d);return!Number.isFinite(m)||m<=0?null:`${m}px`},S=()=>l(),F=()=>{let d=S();if(!d)return;let m=v(d.getAttribute("data-width")),h=v(d.getAttribute("data-height"));m&&(d.style.width=m),h&&(d.style.height=h),m&&d.style.setProperty("--comp-width",m),h&&d.style.setProperty("--comp-height",h)},_=()=>{let d=S(),m=Array.from(document.querySelectorAll("[data-composition-id]")).filter(h=>h.hasAttribute("data-duration")||h.hasAttribute("data-end"));for(let h of m){if(d&&h===d)continue;let y=h.getAttribute("data-duration"),w=h.getAttribute("data-end");y!=null&&!h.hasAttribute(tr)&&h.setAttribute(tr,y),w!=null&&!h.hasAttribute(nr)&&h.setAttribute(nr,w),h.removeAttribute("data-duration"),h.removeAttribute("data-end")}},T=()=>{let d=S();if(!d)return;d.style.position||(d.style.position="relative"),d.style.overflow="hidden";let m=v(d.getAttribute("data-width")),h=v(d.getAttribute("data-height"));m&&(d.style.width=m),h&&(d.style.height=h);let y=Array.from(d.children);for(let w of y){let M=w.tagName.toLowerCase();if(M==="script"||M==="style"||M==="link"||M==="meta"||!w.hasAttribute("data-start")||w.hasAttribute("data-hf-autostamped"))continue;let k=(w.style.top==="0px"||w.style.top==="0")&&(w.style.left==="0px"||w.style.left==="0")&&w.style.width==="100%"&&w.style.height==="100%",J=/translate\\(\\s*-50%\\s*,\\s*-50%\\s*\\)/.test(w.style.transform);if(k&&J&&!w.hasAttribute("data-width")&&!w.hasAttribute("data-height")){let be=w.style.top,rt=w.style.left,we=w.style.width,_t=w.style.height;w.style.top="",w.style.left="",w.style.width="",w.style.height="";let ne=window.getComputedStyle(w);ne.top!=="auto"||ne.bottom!=="auto"||ne.left!=="auto"||ne.right!=="auto"||ne.width!=="0px"||ne.height!=="0px"||(w.style.top=be,w.style.left=rt,w.style.width=we,w.style.height=_t)}let K=window.getComputedStyle(w),me=K.position;if(me!=="absolute"&&me!=="fixed"&&(w.style.position="absolute"),!!w.style.top||!!w.style.bottom||K.top!=="auto"||K.bottom!=="auto"||(w.style.top="0"),!!w.style.left||!!w.style.right||K.left!=="auto"||K.right!=="auto"||(w.style.left="0"),M!=="audio"){let be=v(w.getAttribute("data-width")),rt=v(w.getAttribute("data-height")),we=K.width!=="0px"&&K.width!=="auto",_t=K.height!=="0px"&&K.height!=="auto";be?!w.style.width&&!we&&(w.style.width=be):!w.style.width&&K.width==="0px"&&(w.style.width="100%"),rt?!w.style.height&&!_t&&(w.style.height=rt):!w.style.height&&K.height==="0px"&&(w.style.height="100%")}}},R=(d,m=0,h)=>$e({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:h?.includeAuthoredTimingAttrs??!0}).resolveStartForElement(d,m),W=(d,m)=>$e({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:m?.includeAuthoredTimingAttrs??!0}).resolveDurationForElement(d),q=(d,m=0)=>!d.hasAttribute("data-hf-auto-start")&&d.hasAttribute("data-start")?Math.max(0,Number(d.getAttribute("data-start")??0)||0)+m:R(d,m),ie=(d,m)=>{let h=d.tagName.toLowerCase();if(h==="script"||h==="style"||h==="link"||h==="meta")return!1;let y=h==="video"||h==="audio"?q(d,0):R(d,0),w=W(d),M=d.getAttribute("data-composition-id");if(M){let J=(window.__timelines??{})[M],K=null;if(J&&typeof J.duration=="function"){let ye=Number(J.duration());Number.isFinite(ye)&&ye>0&&(K=ye)}!(d.hasAttribute("data-duration")||d.hasAttribute("data-end")||d.hasAttribute(tr)||d.hasAttribute(nr))&&(w==null||w<=0)&&K!=null&&(w=K)}let k=w!=null&&w>0?y+w:Number.POSITIVE_INFINITY;return m>=y&&(Number.isFinite(k)?m<=k:!0)},P=!!document.querySelector("[data-composition-src]"),se=!1;{let d=document.querySelectorAll("[data-composition-id]:not([data-composition-src])");for(let m of d){let h=m.getAttribute("data-composition-id");if(h&&m.children.length===0&&document.querySelector(`template#${CSS.escape(h)}-template`)){se=!0;break}}}let Ee=!P&&!se,H=d=>{if(!d||typeof d.duration!="function")return null;try{let m=Number(d.duration());return Number.isFinite(m)?Math.max(0,m):null}catch{return null}},U=d=>typeof d=="number"&&Number.isFinite(d)&&d>E,V=d=>{let m=Number(d.getAttribute("data-duration"));if(Number.isFinite(m)&&m>0)return m;let h=Number(d.getAttribute("data-playback-start")??d.getAttribute("data-media-start")??"0"),y=Number.isFinite(h)?Math.max(0,h):0;return Number.isFinite(d.duration)&&d.duration>y?Math.max(0,d.duration-y):null},re=()=>{let d=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(d.length===0)return null;let m=0;for(let h of d){let y=q(h,0);if(!Number.isFinite(y))continue;let w=V(h);w==null||w<=E||(m=Math.max(m,Math.max(0,y)+w))}return m>E?m:null},_e=()=>{let d=S();if(!d)return null;let m=window.__timelines??{},h=$e({timelineRegistry:m,includeAuthoredTimingAttrs:!0}),y=0,w=Number.parseFloat(d.getAttribute("data-duration")??"");Number.isFinite(w)&&w>0&&(y=w);let M=Array.from(d.querySelectorAll("[data-composition-id][data-start]"));for(let k of M){if(!(k instanceof Element)||k.parentElement?.closest("[data-composition-id]")!==d)continue;let K=h.resolveStartForElement(k,0),me=h.resolveDurationForElement(k);!Number.isFinite(K)||me==null||me<=0||(y=Math.max(y,Math.max(0,K)+me))}return y>E?y:null},O=()=>{let d=re();return typeof d!="number"||!Number.isFinite(d)||d<=E?null:d},D=d=>U(d)?Math.max(E,d*b):E,G=()=>{let d=0;for(let m of e.deterministicAdapters){let h=m.getInferredDurationSeconds;if(typeof h!="function")continue;let y=null;try{y=h()}catch(w){L("runtime.init.adapterDuration",w)}typeof y=="number"&&Number.isFinite(y)&&y>0&&(d=Math.max(d,y))}return d>E?d:null},Q=(d,m=0)=>{let h=H(d),y=O(),w=_e(),M=G(),k=Math.max(y??0,w??0,M??0),J=Number.isFinite(m)&&m>E?m:0,K=0;return U(h)?K=Math.max(h,k,J):U(k)?K=Math.max(k,J):K=J,K>0?Math.max(0,K):0},ae=()=>{let d=window.__timelines??{},m=ne=>{let ee=Object.entries(d).filter(ge=>!!ge[1]&&typeof ge[1].play=="function"&&typeof ge[1].pause=="function");if(ee.length!==1)return{timeline:null};let[fe,pe]=ee[0];return{timeline:pe,selectedTimelineIds:[fe],selectedDurationSeconds:H(pe),diagnostics:{code:"root_timeline_sole_registered_fallback",details:{reason:ne,soleTimelineId:fe}}}},h=$e({timelineRegistry:d,includeAuthoredTimingAttrs:!0}),y=O(),w=_e(),M=Math.max(y??0,w??0)||null,k=D(M),J=ne=>{let ee=document.querySelector(`[data-composition-id="${CSS.escape(ne)}"]`);return ee?h.resolveStartForElement(ee,0):0},K=ne=>{let ee=window.gsap;if(!ee||typeof ee.timeline!="function")return null;let fe=ee.timeline({paused:!0});for(let pe of ne)fe.add(pe.timeline,J(pe.compositionId));return fe},me=(ne,ee)=>{if(!U(ne))return null;let fe=window.gsap;if(!fe||typeof fe.timeline!="function")return null;let pe=fe.timeline({paused:!0});if(ee)try{pe.add(ee,0)}catch(ue){L("runtime.init.site2",ue)}let ge=pe;if(typeof ge.to=="function")try{ge.to({},{duration:ne})}catch(ue){L("runtime.init.site3",ue)}return pe},ye=(ne,ee)=>{let fe=ne;if(typeof fe.getChildren!="function")return[];try{let pe=fe.getChildren(!0,!0,!0)??[];if(!Array.isArray(pe))return[];let ge=[];for(let ue of ee)if(!pe.some(Re=>Re===ue.timeline))try{let Re=J(ue.compositionId);ne.add(ue.timeline,Re),ge.push(ue.compositionId)}catch(Re){L("runtime.init.site4",Re)}return ge}catch{return[]}},oe=S(),Z=oe?.getAttribute("data-composition-id")??null;if(!Z)return m("root_missing_composition_id");let be=d[Z]??null,we=(()=>{if(!oe)return[];let ne=new Set,ee=Array.from(oe.querySelectorAll("[data-composition-id]")),fe=[];for(let pe of ee){let ge=pe.getAttribute("data-composition-id");if(!ge||ge===Z||ne.has(ge))continue;ne.add(ge);let ue=d[ge]??null;if(!ue||typeof ue.play!="function"||typeof ue.pause!="function")continue;let ve=H(ue);fe.push({compositionId:ge,timeline:ue,durationSeconds:ve??0})}return fe})(),_t=ne=>{for(let ee of ne){let fe=ee.timeline;if(typeof fe.paused=="function")try{fe.paused(!1)}catch(pe){L("runtime.init.site5",pe)}}};if(we.length>0&&_t(we),be){let ne=we.length>0?ye(be,we):[];if((we.length>0||!document.querySelector("[data-composition-id]:not([data-composition-id=\'"+Z+"\'])"))&&(j=!0),ne.length>0)try{let ue=be.time();be.seek(ue,!1)}catch{}let ee=H(be);if(!U(ee)&&we.length>0){let ue=we.map(Ya=>Ya.compositionId),ve=K(we),Re=H(ve);if(ve&&U(Re))return{timeline:ve,selectedTimelineIds:ue,selectedDurationSeconds:Re,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_unusable_fallback",details:{rootCompositionId:Z,rootDurationSeconds:ee,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:k,selectedDurationSeconds:Re,mediaDurationFloorSeconds:y,authoredCompositionDurationFloorSeconds:w,selectedTimelineIds:ue,autoNestedChildren:ne}}};let $n=me(M??0,be),Kn=H($n);if($n&&U(Kn))return{timeline:$n,selectedTimelineIds:[Z],selectedDurationSeconds:Kn,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:Z,rootDurationSeconds:ee,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:y,authoredCompositionDurationFloorSeconds:w,selectedDurationSeconds:Kn,selectedTimelineIds:[Z],autoNestedChildren:ne}}}}if(!U(ee)&&we.length===0){let ue=me(M??0,be),ve=H(ue);if(ue&&U(ve))return{timeline:ue,selectedTimelineIds:[Z],selectedDurationSeconds:ve,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:Z,rootDurationSeconds:ee,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:y,authoredCompositionDurationFloorSeconds:w,selectedDurationSeconds:ve,selectedTimelineIds:[Z]}}}}let fe=oe?.getAttribute("data-duration"),pe=fe?parseFloat(fe):null,ge=Math.max(U(pe)?pe:0,w??0);if(ge>0&&U(ge)&&U(ee)&&ge>=ee+.5){let ue=be;if(typeof ue.to=="function")try{ue.to({},{duration:0},ge)}catch(Re){L("runtime.init.site6",Re)}let ve=H(be);if(U(ve))return{timeline:be,selectedTimelineIds:[Z],selectedDurationSeconds:ve,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_padded_to_declared_duration",details:{rootCompositionId:Z,rootDurationSeconds:ee,rootDeclaredDur:pe,authoredCompositionDurationFloorSeconds:w,newDur:ve}}}}return{timeline:be,selectedTimelineIds:[Z],selectedDurationSeconds:ee,mediaDurationFloorSeconds:y,diagnostics:ne.length>0?{code:"root_timeline_auto_nested_children",details:{rootCompositionId:Z,selectedDurationSeconds:ee,autoNestedChildren:ne}}:void 0}}if(we.length>0){let ne=we.map(pe=>pe.compositionId),ee=K(we),fe=H(ee);if(ee)return{timeline:ee,selectedTimelineIds:ne,selectedDurationSeconds:fe,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_missing_fallback",details:{rootCompositionId:Z,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:k,selectedDurationSeconds:fe,mediaDurationFloorSeconds:y,selectedTimelineIds:ne}}}}return m("root_composition_id_unmatched_in_registry")},j=!1,z=()=>{if(!Ee)return!1;let d=e.capturedTimeline,m=H(d),h=U(m);if(d&&h&&j)return!1;let y=ae();if(!y.timeline)return!1;if(d&&d===y.timeline)return typeof d.timeScale=="function"&&d.timeScale(e.playbackRate),!1;e.capturedTimeline=y.timeline,typeof e.capturedTimeline.timeScale=="function"&&e.capturedTimeline.timeScale(e.playbackRate);let w=Q(e.capturedTimeline,0);if(w<=0&&typeof e.capturedTimeline.progress=="function"&&(e.capturedTimeline.progress(1,!0),e.capturedTimeline.progress(0,!1),e.capturedTimeline.pause()),w>0){try{I.setDuration(w)}catch{}if(typeof e.capturedTimeline.totalTime=="function"){typeof e.capturedTimeline.progress=="function"&&e.capturedTimeline.progress(1e-4,!0);let k=Math.max(0,e.currentTime||0);e.capturedTimeline.totalTime(k,!1),e.capturedTimeline.pause()}let M=window.__hfStudioManualEditsApply;typeof M=="function"&&M(),zi(document)}if(y.diagnostics&&Fe({source:"hf-preview",type:"diagnostic",code:y.diagnostics.code,details:y.diagnostics.details}),Fe({source:"hf-preview",type:"diagnostic",code:"timeline_bound",details:{selectedTimelineIds:y.selectedTimelineIds??[],selectedDurationSeconds:y.selectedDurationSeconds??null,mediaDurationFloorSeconds:y.mediaDurationFloorSeconds??null}}),window.parent!==window){let M=S(),k=w>0?w:0,J=String(k>0?k:1),K=new Set,me=new Set(document.querySelectorAll("[data-start]")),ye=oe=>{let Z=oe.parentElement;for(;Z&&Z!==M;){if(me.has(Z))return!0;Z=Z.parentElement}return!1};if(e.capturedTimeline.getChildren)try{for(let oe of e.capturedTimeline.getChildren(!0))if(typeof oe.targets=="function")for(let Z of oe.targets())Z instanceof HTMLElement&&Z!==M&&(Z.hasAttribute("data-start")||ye(Z)||K.has(Z)||(K.add(Z),Z.setAttribute("data-start","0"),Z.setAttribute("data-duration",J),Z.setAttribute("data-hf-autostamped","1")))}catch{}if(M instanceof HTMLElement)for(let oe of M.querySelectorAll("[id]"))oe instanceof HTMLElement&&oe!==M&&(oe.hasAttribute("data-start")||ye(oe)||K.has(oe)||oe.tagName==="SCRIPT"||oe.tagName==="STYLE"||oe.tagName==="LINK"||(K.add(oe),oe.setAttribute("data-start","0"),oe.setAttribute("data-duration",J),oe.setAttribute("data-hf-autostamped","1")))}for(let M of wt)on.delete(M),fr(M);return!0};window.__hfForceTimelineRebind=()=>{j=!1,z()};let Y=()=>{let d=S();if(!(d instanceof HTMLElement))return;let m=d.getBoundingClientRect(),h=Number(d.getAttribute("data-width")),y=Number(d.getAttribute("data-height")),w=window.getComputedStyle(d),M=Number.isFinite(h)&&h>0&&Number.isFinite(y)&&y>0,k=m.width<=0||m.height<=0||d.clientWidth<=0||d.clientHeight<=0;!M||!k||f("root_stage_layout_zero",{compositionId:d.getAttribute("data-composition-id")??null,declaredWidth:h,declaredHeight:y,rectWidth:Math.round(m.width),rectHeight:Math.round(m.height),clientWidth:d.clientWidth,clientHeight:d.clientHeight,display:w.display,visibility:w.visibility,overflow:w.overflow},`root-stage-layout-zero:${d.getAttribute("data-composition-id")??"unknown"}`)},Pe=()=>{e.tornDown||(u!=null&&window.cancelAnimationFrame(u),u=window.requestAnimationFrame(()=>{u=null,Y()}))},Me=()=>{i=d=>{let m=$(d.error??d.message).slice(0,N);if(!m)return;let h=B(m);Fe({source:"hf-preview",type:"diagnostic",code:h.code,details:{category:h.category,message:m,filename:d.filename||null,line:Number.isFinite(d.lineno)?d.lineno:null,column:Number.isFinite(d.colno)?d.colno:null}})},r=d=>{let m=$(d.reason).slice(0,N);if(!m)return;let h=B(m);Fe({source:"hf-preview",type:"diagnostic",code:`${h.code}_unhandled_rejection`,details:{category:`${h.category}-unhandled-rejection`,message:m}})},window.addEventListener("error",i),window.addEventListener("unhandledrejection",r)},At=()=>{let d=Array.from(document.querySelectorAll("img, video, audio, source, link[rel=\'stylesheet\']"));for(let h of d){let y=()=>{if(!(h instanceof Element))return;let w=h.tagName.toLowerCase(),M=h.getAttribute("src")??h.getAttribute("href")??h.getAttribute("poster")??null,k=w==="link"?"runtime_stylesheet_load_failed":"runtime_asset_load_failed";f(k,{tagName:w,assetUrl:M,currentSrc:(h instanceof HTMLImageElement||h instanceof HTMLMediaElement)&&h.currentSrc||null,readyState:h instanceof HTMLMediaElement?h.readyState:null,networkState:h instanceof HTMLMediaElement?h.networkState:null},`${k}:${w}:${M??"unknown"}`)};h.addEventListener("error",y),p(()=>{h.removeEventListener("error",y)})}let m=document.fonts;m&&m.ready.then(()=>{if(e.tornDown)return;let h=Array.from(m).filter(y=>y.status==="error").map(y=>y.family).filter(y=>!!y).slice(0,10);h.length!==0&&f("runtime_font_load_issue",{failedFamilies:h,totalFaces:Array.from(m).length},`runtime-font-load-issue:${h.join("|")}`)}).catch(()=>{})},Ue=(d,m)=>{if(!d.timeline)return!1;let h=e.capturedTimeline;if(h&&h===d.timeline)return!1;let y=Math.max(0,e.currentTime||0),w=e.isPlaying;e.capturedTimeline=d.timeline,typeof e.capturedTimeline.timeScale=="function"&&e.capturedTimeline.timeScale(e.playbackRate);try{e.capturedTimeline.pause(),e.capturedTimeline.seek(y,!1),w&&e.capturedTimeline.play()}catch(M){L("runtime.init.site7",M)}return Fe({source:"hf-preview",type:"diagnostic",code:"timeline_loop_guard_rebind",details:{reason:m,previousTime:y,selectedTimelineIds:d.selectedTimelineIds??[],selectedDurationSeconds:d.selectedDurationSeconds??null,mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),!0},tt=null,dr=!1,wt=new Set,on=new WeakMap,sn=()=>{e.tornDown||(tt!=null&&window.clearTimeout(tt),tt=window.setTimeout(()=>{if(e.tornDown)return;tt=null;let d=ae();if(!d.timeline||!U(d.mediaDurationFloorSeconds??null))return;if(!e.capturedTimeline){z()&&(dt(),Te(!0));return}if(dr)return;let h=H(e.capturedTimeline),y=d.selectedDurationSeconds??H(d.timeline);U(y)&&(!U(h)||y>=h+A)&&Ue(d,"manual")&&(dr=!0,Fe({source:"hf-preview",type:"diagnostic",code:"timeline_rebind_after_media_metadata",details:{previousDurationSeconds:h??null,selectedDurationSeconds:y??null,selectedTimelineIds:d.selectedTimelineIds??[],mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),dt(),Te(!0))},C))},Ga=()=>{for(let d of wt)d.removeEventListener("loadedmetadata",sn),d.removeEventListener("durationchange",sn);wt.clear()},Hn=()=>{if(e.tornDown)return;let d=Array.from(document.querySelectorAll("video, audio"));for(let m of d){if(wt.has(m))continue;wt.add(m);let h=Number.parseFloat(m.dataset.volume??"");Number.isFinite(h)&&(m.volume=Math.max(0,Math.min(1,h))),m.addEventListener("loadedmetadata",sn),m.addEventListener("durationchange",sn),m.preload!=="auto"&&(m.preload="auto"),m.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&m.load(),fr(m)}},fr=d=>{on.has(d)||Hr(d,e.capturedTimeline,Q(e.capturedTimeline,0),on)},Gn=new WeakMap,mr=d=>{let m=Gn.get(d);if(m!==void 0)return m;let h=window.getComputedStyle(d).position,y=h==="static"||h==="relative"||h==="sticky";return Gn.set(d,y),y},Wn=new WeakMap,Wa=d=>{let m=Wn.get(d);if(m!==void 0)return m;let h=d.querySelector("[data-start]")===null;return Wn.set(d,h),h},Ua=()=>{Gn=new WeakMap,Wn=new WeakMap},Le=()=>{let d=M=>{let k=M.closest("[data-composition-id]"),J=k?R(k,0):null,K=k?W(k,{includeAuthoredTimingAttrs:!0}):null;return{compositionRoot:k,inheritedStart:J,inheritedDuration:K}},m=Gr({shouldIncludeElement:M=>M.hasAttribute("data-start")||!!d(M).compositionRoot,resolveStartSeconds:M=>{let k=d(M);return q(M,k.inheritedStart??0)},resolveDurationSeconds:M=>{let k=d(M),J=q(M,k.inheritedStart??0),K=Number.parseFloat(M.dataset.playbackStart??M.dataset.mediaStart??"0")||0,me=k.inheritedStart!=null&&k.inheritedDuration!=null&&k.inheritedDuration>0?Math.max(0,k.inheritedStart+k.inheritedDuration-J):null,ye=Number.isFinite(M.duration)&&M.duration>K?Math.max(0,M.duration-K):null,oe=Number.parseFloat(M.dataset.duration??""),Z=Number.isFinite(oe)&&oe>0?oe:null,be=[ye,me,Z].filter(rt=>rt!=null);return be.length>0?Math.min(...be):null}});for(let M of m.mediaClips){let k=on.get(M.el);k&&(M.volumeKeyframes=k)}let h=e.mediaForceSyncNextTick;h&&(e.mediaForceSyncNextTick=!1),e.nativeMediaSyncDisabled||Wr({clips:m.mediaClips,timeSeconds:e.currentTime,playing:e.isPlaying,playbackRate:e.playbackRate,outputMuted:e.mediaOutputMuted||!e.webAudioMediaDisabled&&!e.nativeMediaSyncDisabled&&de.isActive(),userMuted:e.bridgeMuted,userVolume:e.bridgeVolume,forceSync:h,onElementVolume:(M,k)=>de.setElementVolume(M,k),isWebAudioOwned:M=>de.ownsElement(M),onAutoplayBlocked:()=>{e.mediaAutoplayBlockedPosted||(e.mediaAutoplayBlockedPosted=!0,Fe({source:"hf-preview",type:"media-autoplay-blocked"}))}});let y=Array.from(document.querySelectorAll("[data-start]")),w=S();for(let M of y){if(!(M instanceof HTMLElement))continue;let k=ie(M,e.currentTime);if(k){let J=M.parentElement;for(;J&&J!==w;){if(J instanceof HTMLElement&&J.hasAttribute("data-start")&&!ie(J,e.currentTime)){k=!1;break}J=J.parentElement}}M.style.visibility=k?"visible":"hidden",(M instanceof HTMLVideoElement||M instanceof HTMLImageElement)&&n?.setSourceVisibility(M,k),k?mr(M)&&M.style.removeProperty("display"):mr(M)&&Wa(M)&&(M.style.display="none")}},Te=d=>{let m=Math.max(0,Math.round((e.currentTime||0)*e.canonicalFps)),h=Date.now();(d||m!==e.bridgeLastPostedFrame||e.isPlaying!==e.bridgeLastPostedPlaying||e.bridgeMuted!==e.bridgeLastPostedMuted||h-e.bridgeLastPostedAt>=e.bridgeMaxPostIntervalMs)&&(e.bridgeLastPostedFrame=m,e.bridgeLastPostedPlaying=e.isPlaying,e.bridgeLastPostedMuted=e.bridgeMuted,e.bridgeLastPostedAt=h,Fe({source:"hf-preview",type:"state",frame:m,isPlaying:e.isPlaying,muted:e.bridgeMuted,playbackRate:e.playbackRate}))},Un="",Va=()=>{let d="";for(let m of document.querySelectorAll("[data-start]"))d+=`${m.id}:${m.tagName}|`;return d},dt=()=>{_(),F(),T();let d=S();if(d){let y=v(d.getAttribute("data-width")),w=v(d.getAttribute("data-height")),M=y?parseInt(y,10):0,k=w?parseInt(w,10):0;M>0&&k>0&&Fe({source:"hf-preview",type:"stage-size",width:M,height:k})}z();let m=Yr({canonicalFps:e.canonicalFps});window.__clipManifest=m;let h=Va();if(Un!==h&&Ua(),!window.__clipTree||Un!==h){let y=window;window.__clipTree=$r({startResolver:$e({timelineRegistry:y.__timelines??{},includeAuthoredTimingAttrs:!0}),timelineRegistry:y.__timelines??{},rootDuration:m.durationInFrames/e.canonicalFps}),Un=h}Fe(m),Pe()},Oe=(d,m=0)=>{for(let h of e.deterministicAdapters){try{d==="discover"&&h.discover(),d==="pause"&&h.pause(),d==="play"&&h.play&&h.play()}catch(y){L("runtime.init.site8",y)}if(d==="discover")try{h.seek({time:m})}catch(y){L("runtime.init.site9",y)}}},nt=()=>{window.__renderReady=!1},Ft=null,Ct=!0,za=()=>{let d=[];for(let m of e.deterministicAdapters){let h=m.getReadyPromise;if(typeof h=="function")try{let y=h();y&&d.push(y)}catch(y){L("runtime.init.adapterReady",y)}}return d},qa=()=>{let d=za();if(d.length===0)return Ft=null,Ct=!0,!0;let m=d.length===1?d[0]:Promise.all(d);return m!==Ft&&(Ft=m,Ct=!1,Promise.resolve(m).then(()=>{Ft===m&&(Ct=!0,nt())},h=>{Ft===m&&(Ct=!0,L("runtime.init.adapterReady",h),nt())})),Ct};if(Ee)Wi();else{let d={injectedStyles:e.injectedCompStyles,injectedScripts:e.injectedCompScripts,parseDimensionPx:v,onDiagnostic:({code:m,details:h})=>{Fe({source:"hf-preview",type:"diagnostic",code:m,details:h})}};Os(d).then(()=>Ps(d)).finally(()=>{Ee=!0,Hn(),At(),Wi(),nt()})}let an=Ur({postMessage:d=>Fe(d)});an.installPickerApi();let Ve=ca();n=Ve,p(()=>{Ve.destroy(),n=null});let Vn=d=>{let m=Number(d);!Number.isFinite(m)||m<=0?e.playbackRate=1:e.playbackRate=Math.max(.1,Math.min(5,m)),e.mediaForceSyncNextTick=!0,e.capturedTimeline&&typeof e.capturedTimeline.timeScale=="function"&&e.capturedTimeline.timeScale(e.playbackRate);let h=document.querySelectorAll("video, audio");for(let y of h)if(y instanceof HTMLMediaElement)try{y.playbackRate=e.playbackRate}catch(w){L("runtime.init.site10",w)}},he=qr({getTimeline:()=>e.capturedTimeline,setTimeline:d=>{e.capturedTimeline=d},getTimelineRegistry:()=>window.__timelines??{},getIsPlaying:()=>e.isPlaying,setIsPlaying:d=>{e.isPlaying!==d&&(e.mediaForceSyncNextTick=!0),e.isPlaying=d},getPlaybackRate:()=>e.playbackRate,setPlaybackRate:Vn,getCanonicalFps:()=>e.canonicalFps,onSyncMedia:(d,m)=>{e.currentTime=Math.max(0,Number(d)||0),e.isPlaying!==m&&(e.mediaForceSyncNextTick=!0),e.isPlaying=m,Le()},onStatePost:Te,onDeterministicSeek:d=>{for(let m of e.deterministicAdapters)try{m.seek({time:Number(d)||0})}catch(h){L("runtime.init.site11",h)}},onDeterministicPause:()=>Oe("pause"),onDeterministicPlay:()=>Oe("play"),onRenderFrameSeek:()=>{Ve.redraw()},onShowNativeVideos:()=>{},getSafeDuration:()=>Q(e.capturedTimeline,0)});window.__player=x(he),window.__playerReady=!0,Sr(Fe),ot("composition_loaded",{duration:he.getDuration(),compositionId:document.querySelector("[data-composition-id]")?.getAttribute("data-composition-id")??null}),e.controlBridgeHandler=yr({onPlay:()=>{he.play(),ot("composition_played",{time:he.getTime()})},onPause:()=>{he.pause(),ot("composition_paused",{time:he.getTime()})},onStopMedia:()=>{de.stopAll();let d=document.querySelectorAll("video, audio");for(let m of d)m instanceof HTMLMediaElement&&!m.paused&&m.pause()},onSeek:(d,m)=>{let h=Math.max(0,d)/e.canonicalFps;he.seek(h),ot("composition_seeked",{time:h})},onSetMuted:d=>{e.bridgeMuted=d;let m=d||e.mediaOutputMuted;de.setMuted(m);let h=document.querySelectorAll("video, audio");for(let y of h)y instanceof HTMLMediaElement&&(y.muted=m||y.defaultMuted)},onSetVolume:d=>{e.bridgeVolume=d,de.setVolume(d);let m=document.querySelectorAll("video, audio");for(let h of m){if(!(h instanceof HTMLMediaElement))continue;let y=parseFloat(h.dataset.volume??""),w=Number.isFinite(y)?y:1;h.volume=w*d}},onSetMediaOutputMuted:d=>{e.mediaOutputMuted=d;let m=d||e.bridgeMuted;de.setMuted(m);let h=document.querySelectorAll("video, audio");for(let y of h)y instanceof HTMLMediaElement&&(y.muted=m||y.defaultMuted)},onSetNativeMediaSyncDisabled:d=>{e.nativeMediaSyncDisabled!==d&&(e.nativeMediaSyncDisabled=d,e.mediaForceSyncNextTick=!0,d?(de.stopAll(),I.detachAudioSource()):Le())},onSetWebAudioMediaDisabled:d=>{e.webAudioMediaDisabled!==d&&(e.webAudioMediaDisabled=d,e.mediaForceSyncNextTick=!0,d&&(de.stopAll(),I.detachAudioSource()),Le())},onSetPlaybackRate:d=>{Vn(d),e.transportClock&&e.transportClock.setRate(e.playbackRate),xr()},onSetColorGrading:(d,m)=>{Ve.setGrading(d,m)},onSetColorGradingCompare:(d,m)=>{Ve.setCompare(d,m)},onTick:()=>{if(e.tornDown||!I.isPlaying())return;let d=I.now();if(e.currentTime=d,it(d),I.reachedEnd()){de.stopAll(),I.detachAudioSource(),I.pause(),e.isPlaying=!1;let m=I.getDuration();Number.isFinite(m)&&(I.seek(m),e.currentTime=m,it(m)),Oe("pause"),Le(),Te(!0)}},onEnablePickMode:()=>an.enablePickMode(),onDisablePickMode:()=>an.disablePickMode()}),e.deterministicAdapters=[Or(),Er({resolveStartSeconds:d=>R(d,0)}),wr(),Cr(),Mr(),vr(),Tr(),Nr(),Lr(),Rr(),kr(),Ar({getTimeline:()=>e.capturedTimeline})],Ir(),Pr(),window.__hfReseekGpu=d=>{let m=Math.max(0,Number(d)||0);window.__hfThreeTime=m,window.__hfTypegpuTime=m,_r(m)},Me(),Hn(),Oe("discover");let I=new Rn;e.transportClock=I;let de=new kn,zn=!1;de.init().then(d=>{zn=d});let ja=()=>{let d=e.capturedTimeline,m=z();e.capturedTimeline&&(m||e.capturedTimeline!==d||!he._timeline)&&(he._timeline=e.capturedTimeline);let h=Q(e.capturedTimeline,0);if(h>0&&I.setDuration(h),Oe("discover",e.currentTime),!e.capturedTimeline){let y=window.__timelines??{},w=Object.keys(y).filter(M=>y[M]);if(w.length>0){let k=S()?.getAttribute("data-composition-id")??null;f("root_timeline_unbound_registry_present",{reason:k?"root data-composition-id has no matching key in window.__timelines":"root composition element has no data-composition-id attribute",rootCompositionId:k,registeredTimelineKeys:w},"root_timeline_unbound_registry_present"),console.warn("[hyperframes] Root timeline not bound \\u2014 render will freeze at t=0. "+(k?`Root data-composition-id is "${k}" but window.__timelines has no such key. `:"Root composition element has no data-composition-id. ")+`Registered timeline keys: [${w.join(", ")}]. Register the root timeline under its data-composition-id (window.__timelines["${k??"<root-id>"}"] = tl).`)}}window.__renderReady=!0,dt(),Te(!0)};if(nt=()=>{if(!Ee||window.__hfTimelinesBuilding){window.__renderReady=!1;return}if(Oe("discover",e.currentTime),!qa()){window.__renderReady=!1;return}ja()},window.__hfTimelinesBuilding){window.__renderReady=!1;let d=()=>{window.removeEventListener("hf-timelines-built",d),nt()};window.addEventListener("hf-timelines-built",d)}nt(),Ee&&setTimeout(()=>{nt()},0);let ln=0,qn=!1,$a=(d,m,h)=>{try{d.pause(),typeof d.totalTime=="function"?d.totalTime(m,!1):d.seek(m,!1)}catch(y){L(h,y)}},Ka=d=>{let m=window.__timelines??{},h=S()?.getAttribute("data-composition-id")??null;for(let[y,w]of Object.entries(m)){if(!w||y===h)continue;let M=document.querySelector(`[data-composition-id="${CSS.escape(y)}"]`);if(!M)continue;let k=R(M,0);if(!Number.isFinite(k))continue;let J=W(M,{includeAuthoredTimingAttrs:!0}),K=H(w),me=J!=null&&J>0?J:K,ye=Math.max(0,me!=null&&me>0?Math.min(me,d-k):d-k);$a(w,ye,"runtime.init.transport.childTimeline")}},Ja=d=>{let m=window.__timelines??{};for(let h of Object.values(m))if(!(!h||h===d))try{h.play()}catch(y){L("runtime.init.activateSiblings",y)}},it=(d,m)=>{let h=e.capturedTimeline;if(h){m?.activateChildren&&Ja(h);let y=h,w=d;if(typeof y.totalDuration=="function")try{let M=Number(y.totalDuration());Number.isFinite(M)&&M>0&&d>M&&(w=M)}catch(M){L("runtime.init.transport.clampDuration",M)}try{typeof h.totalTime=="function"?h.totalTime(w,!1):h.seek(w,!1)}catch(M){L("runtime.init.transport.seek",M)}}else Ka(d);for(let y of e.deterministicAdapters)try{y.seek({time:d})}catch(w){L("runtime.init.transport.adapter",w)}},Xa=()=>{try{return document.querySelector(`[${fa}]`)!=null}catch{return!1}},pr=()=>{if(!(e.tornDown||qn)){qn=!0;try{if(e.transportRafId=window.requestAnimationFrame(pr),ln+=1,ln%60===0&&!(I.isPlaying()&&e.capturedTimeline!=null&&I.now()<g)){let h=e.capturedTimeline;if(z()){e.capturedTimeline&&!he._timeline&&(he._timeline=e.capturedTimeline),e.capturedTimeline&&e.capturedTimeline!==h&&e.capturedTimeline.pause();let y=Q(e.capturedTimeline,0);y>0&&I.setDuration(y),dt()}}if(ln%20===0&&dt(),ln%30===0&&Hn(),e.capturedTimeline){let m=Q(e.capturedTimeline,0);m>0&&(!I.isPlaying()||m>=I.getDuration())&&I.setDuration(m)}if(I.isPlaying()&&!e.mediaOutputMuted)if(!e.nativeMediaSyncDisabled&&!e.webAudioMediaDisabled&&de.isActive()&&de.context){let m=de.getTime();m>=0&&I.attachAudioSource({currentTimeSeconds:m})}else{let m=document.querySelectorAll("audio[data-start]"),h=!1;for(let y of m){if(!(y instanceof HTMLMediaElement)||!y.isConnected)continue;let w=Number.parseFloat(y.dataset.start??""),M=Number.parseFloat(y.dataset.duration??""),k=Number.isFinite(M)&&M>0?w+M:1/0,J=Number.parseFloat(y.dataset.playbackStart??y.dataset.mediaStart??"0")||0;if(Number.isFinite(w)&&e.currentTime>=w&&e.currentTime<=k){y.paused?!y.error&&y.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&(I.attachAudioSource({currentTimeSeconds:e.currentTime}),h=!0):(I.attachAudioSource({el:y,compositionStart:w,mediaStart:J}),h=!0);break}}!h&&I.hasAudioSource()&&I.detachAudioSource()}else I.hasAudioSource()&&I.detachAudioSource();let d=I.now();if(e.currentTime=d,(I.isPlaying()||!Xa())&&it(d),I.isPlaying()&&I.reachedEnd()){de.stopAll(),I.detachAudioSource(),I.pause(),e.isPlaying=!1;let m=I.getDuration();Number.isFinite(m)&&(I.seek(m),e.currentTime=m,it(m)),Oe("pause"),Le(),Te(!0);return}I.isPlaying()&&Le(),Te(!1)}finally{qn=!1}}},hr=d=>{let m=document.querySelectorAll("video, audio");for(let h of m){if(!(h instanceof HTMLMediaElement)||!h.isConnected)continue;let y=Number.parseFloat(h.dataset.start??"");if(!Number.isFinite(y))continue;let w=Number.parseFloat(h.dataset.duration??""),M=Number.isFinite(w)&&w>0?y+w:1/0;if(d<y||d>=M)continue;let k=Number.parseFloat(h.dataset.playbackStart??h.dataset.mediaStart??"0")||0,J=d-y+k;if(J>=0)try{h.currentTime=J}catch{}}},gr=()=>{if(e.nativeMediaSyncDisabled||e.webAudioMediaDisabled)return;let d=de.startGeneration(),m=document.querySelectorAll("audio[data-start]");for(let h of m){if(!(h instanceof HTMLMediaElement)||!h.isConnected)continue;let y=Number.parseFloat(h.dataset.start??"");if(!Number.isFinite(y))continue;let w=Number.parseFloat(h.dataset.playbackStart??h.dataset.mediaStart??"0")||0,M=Number.parseFloat(h.dataset.volume??""),k=Number.isFinite(M)?M:1,J=Number.parseFloat(h.dataset.duration??""),K=Number.isFinite(J)&&J>0?J:Number.POSITIVE_INFINITY,me=h.closest("[data-composition-id]");if(me){let ye=R(me,0),oe=W(me,{includeAuthoredTimingAttrs:!0});oe!=null&&oe>0&&(K=Math.min(K,Math.max(0,ye+oe-y)))}de.decodeAudioElement(h).then(ye=>{!ye||!I.isPlaying()||de.schedulePlayback(h,ye,y,w,I.now(),k*e.bridgeVolume,d,e.playbackRate,K)})}},xr=()=>{de.setRate(e.playbackRate)&&!e.nativeMediaSyncDisabled&&!e.webAudioMediaDisabled&&zn&&I.isPlaying()&&de.hasBoundedActiveSources()&&(de.stopAll(),gr())};if(he.play=()=>{let d=e.capturedTimeline;if(I.isPlaying())return;let m=Q(d,0);if(m>0)I.setDuration(m),I.reachedEnd()&&(I.seek(0),e.currentTime=0,it(0));else{let h=S(),y=Number(h?.getAttribute("data-duration")??0);y>0&&I.setDuration(y)}d&&d.pause(),I.play()&&(e.isPlaying=!0,e.mediaForceSyncNextTick=!0,hr(I.now()),zn&&!e.nativeMediaSyncDisabled&&!e.webAudioMediaDisabled&&gr(),Oe("play"),Le(),Ve.redraw(),Te(!0))},he.pause=()=>{if(!I.isPlaying())return;de.stopAll(),I.detachAudioSource(),I.pause(),e.isPlaying=!1,e.currentTime=I.now(),e.mediaForceSyncNextTick=!0,hr(e.currentTime);let d=e.capturedTimeline;d&&d.pause(),Oe("pause"),Le(),Ve.redraw(),Te(!0)},he.seek=d=>{let m=mt(Math.max(0,Number(d)||0),e.canonicalFps);de.stopAll(),I.detachAudioSource(),I.isPlaying()&&I.pause(),I.seek(m),e.currentTime=I.now(),e.isPlaying=!1,e.mediaForceSyncNextTick=!0;let y=e.capturedTimeline;y&&y.pause(),it(e.currentTime),Oe("pause"),Le(),Ve.redraw(),Te(!0)},he.renderSeek=d=>{let m=mt(Math.max(0,Number(d)||0),e.canonicalFps);I.isPlaying()&&I.pause(),I.seek(m),e.currentTime=I.now(),e.isPlaying=!1,e.mediaForceSyncNextTick=!0,it(e.currentTime,{activateChildren:!0}),Le(),Ve.redraw(),Te(!0)},he.getTime=()=>I.now(),he.getDuration=()=>{let d=I.getDuration();return Number.isFinite(d)?d:0},he.isPlaying=()=>I.isPlaying(),he.setPlaybackRate=d=>{Vn(d),I.setRate(e.playbackRate),xr()},e.capturedTimeline){let d=Q(e.capturedTimeline,0);d>0&&I.setDuration(d),e.capturedTimeline.pause()}let br=window.__player;if(br){let d=["play","pause","seek","renderSeek","getTime","getDuration","isPlaying"];for(let m of d)Object.defineProperty(br,m,{get:()=>he[m],set:h=>{he[m]=h},configurable:!0})}e.transportRafId=window.requestAnimationFrame(pr),dt(),Te(!0);let jn=()=>{if(!e.tornDown){e.tornDown=!0,e.transportRafId!=null&&(window.cancelAnimationFrame(e.transportRafId),e.transportRafId=null),e.transportClock=null,de.destroy(),tt!=null&&(window.clearTimeout(tt),tt=null),u!=null&&(window.cancelAnimationFrame(u),u=null),Ga(),e.controlBridgeHandler&&(window.removeEventListener("message",e.controlBridgeHandler),e.controlBridgeHandler=null),i&&(window.removeEventListener("error",i),i=null),r&&(window.removeEventListener("unhandledrejection",r),r=null),e.beforeUnloadHandler&&(window.removeEventListener("beforeunload",e.beforeUnloadHandler),e.beforeUnloadHandler=null),an.disablePickMode();for(let d of e.deterministicAdapters)if(!(!d||typeof d.revert!="function"))try{d.revert()}catch(m){L("runtime.init.site12",m)}e.deterministicAdapters=[];for(let d of o.splice(0))try{d()}catch(m){L("runtime.init.site13",m)}for(let d of e.injectedCompStyles)try{d.remove()}catch(m){L("runtime.init.site14",m)}e.injectedCompStyles=[];for(let d of e.injectedCompScripts)try{d.remove()}catch(m){L("runtime.init.site15",m)}e.injectedCompScripts=[],e.capturedTimeline=null,window.__hfRuntimeTeardown===jn&&(window.__hfRuntimeTeardown=null)}};window.__hfRuntimeTeardown=jn,e.beforeUnloadHandler=jn,window.addEventListener("beforeunload",e.beforeUnloadHandler)}var pa=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],ir=[[697,698,"ON"],[706,719,"ON"],[722,735,"ON"],[741,749,"ON"],[751,767,"ON"],[768,879,"NSM"],[884,885,"ON"],[894,894,"ON"],[900,901,"ON"],[903,903,"ON"],[1014,1014,"ON"],[1155,1161,"NSM"],[1418,1418,"ON"],[1421,1422,"ON"],[1423,1423,"ET"],[1424,1424,"R"],[1425,1469,"NSM"],[1470,1470,"R"],[1471,1471,"NSM"],[1472,1472,"R"],[1473,1474,"NSM"],[1475,1475,"R"],[1476,1477,"NSM"],[1478,1478,"R"],[1479,1479,"NSM"],[1480,1535,"R"],[1536,1541,"AN"],[1542,1543,"ON"],[1544,1544,"AL"],[1545,1546,"ET"],[1547,1547,"AL"],[1548,1548,"CS"],[1549,1549,"AL"],[1550,1551,"ON"],[1552,1562,"NSM"],[1563,1610,"AL"],[1611,1631,"NSM"],[1632,1641,"AN"],[1642,1642,"ET"],[1643,1644,"AN"],[1645,1647,"AL"],[1648,1648,"NSM"],[1649,1749,"AL"],[1750,1756,"NSM"],[1757,1757,"AN"],[1758,1758,"ON"],[1759,1764,"NSM"],[1765,1766,"AL"],[1767,1768,"NSM"],[1769,1769,"ON"],[1770,1773,"NSM"],[1774,1775,"AL"],[1776,1785,"EN"],[1786,1808,"AL"],[1809,1809,"NSM"],[1810,1839,"AL"],[1840,1866,"NSM"],[1867,1957,"AL"],[1958,1968,"NSM"],[1969,1983,"AL"],[1984,2026,"R"],[2027,2035,"NSM"],[2036,2037,"R"],[2038,2041,"ON"],[2042,2044,"R"],[2045,2045,"NSM"],[2046,2069,"R"],[2070,2073,"NSM"],[2074,2074,"R"],[2075,2083,"NSM"],[2084,2084,"R"],[2085,2087,"NSM"],[2088,2088,"R"],[2089,2093,"NSM"],[2094,2136,"R"],[2137,2139,"NSM"],[2140,2143,"R"],[2144,2191,"AL"],[2192,2193,"AN"],[2194,2198,"AL"],[2199,2207,"NSM"],[2208,2249,"AL"],[2250,2273,"NSM"],[2274,2274,"AN"],[2275,2306,"NSM"],[2362,2362,"NSM"],[2364,2364,"NSM"],[2369,2376,"NSM"],[2381,2381,"NSM"],[2385,2391,"NSM"],[2402,2403,"NSM"],[2433,2433,"NSM"],[2492,2492,"NSM"],[2497,2500,"NSM"],[2509,2509,"NSM"],[2530,2531,"NSM"],[2546,2547,"ET"],[2555,2555,"ET"],[2558,2558,"NSM"],[2561,2562,"NSM"],[2620,2620,"NSM"],[2625,2626,"NSM"],[2631,2632,"NSM"],[2635,2637,"NSM"],[2641,2641,"NSM"],[2672,2673,"NSM"],[2677,2677,"NSM"],[2689,2690,"NSM"],[2748,2748,"NSM"],[2753,2757,"NSM"],[2759,2760,"NSM"],[2765,2765,"NSM"],[2786,2787,"NSM"],[2801,2801,"ET"],[2810,2815,"NSM"],[2817,2817,"NSM"],[2876,2876,"NSM"],[2879,2879,"NSM"],[2881,2884,"NSM"],[2893,2893,"NSM"],[2901,2902,"NSM"],[2914,2915,"NSM"],[2946,2946,"NSM"],[3008,3008,"NSM"],[3021,3021,"NSM"],[3059,3064,"ON"],[3065,3065,"ET"],[3066,3066,"ON"],[3072,3072,"NSM"],[3076,3076,"NSM"],[3132,3132,"NSM"],[3134,3136,"NSM"],[3142,3144,"NSM"],[3146,3149,"NSM"],[3157,3158,"NSM"],[3170,3171,"NSM"],[3192,3198,"ON"],[3201,3201,"NSM"],[3260,3260,"NSM"],[3276,3277,"NSM"],[3298,3299,"NSM"],[3328,3329,"NSM"],[3387,3388,"NSM"],[3393,3396,"NSM"],[3405,3405,"NSM"],[3426,3427,"NSM"],[3457,3457,"NSM"],[3530,3530,"NSM"],[3538,3540,"NSM"],[3542,3542,"NSM"],[3633,3633,"NSM"],[3636,3642,"NSM"],[3647,3647,"ET"],[3655,3662,"NSM"],[3761,3761,"NSM"],[3764,3772,"NSM"],[3784,3790,"NSM"],[3864,3865,"NSM"],[3893,3893,"NSM"],[3895,3895,"NSM"],[3897,3897,"NSM"],[3898,3901,"ON"],[3953,3966,"NSM"],[3968,3972,"NSM"],[3974,3975,"NSM"],[3981,3991,"NSM"],[3993,4028,"NSM"],[4038,4038,"NSM"],[4141,4144,"NSM"],[4146,4151,"NSM"],[4153,4154,"NSM"],[4157,4158,"NSM"],[4184,4185,"NSM"],[4190,4192,"NSM"],[4209,4212,"NSM"],[4226,4226,"NSM"],[4229,4230,"NSM"],[4237,4237,"NSM"],[4253,4253,"NSM"],[4957,4959,"NSM"],[5008,5017,"ON"],[5120,5120,"ON"],[5760,5760,"WS"],[5787,5788,"ON"],[5906,5908,"NSM"],[5938,5939,"NSM"],[5970,5971,"NSM"],[6002,6003,"NSM"],[6068,6069,"NSM"],[6071,6077,"NSM"],[6086,6086,"NSM"],[6089,6099,"NSM"],[6107,6107,"ET"],[6109,6109,"NSM"],[6128,6137,"ON"],[6144,6154,"ON"],[6155,6157,"NSM"],[6158,6158,"BN"],[6159,6159,"NSM"],[6277,6278,"NSM"],[6313,6313,"NSM"],[6432,6434,"NSM"],[6439,6440,"NSM"],[6450,6450,"NSM"],[6457,6459,"NSM"],[6464,6464,"ON"],[6468,6469,"ON"],[6622,6655,"ON"],[6679,6680,"NSM"],[6683,6683,"NSM"],[6742,6742,"NSM"],[6744,6750,"NSM"],[6752,6752,"NSM"],[6754,6754,"NSM"],[6757,6764,"NSM"],[6771,6780,"NSM"],[6783,6783,"NSM"],[6832,6877,"NSM"],[6880,6891,"NSM"],[6912,6915,"NSM"],[6964,6964,"NSM"],[6966,6970,"NSM"],[6972,6972,"NSM"],[6978,6978,"NSM"],[7019,7027,"NSM"],[7040,7041,"NSM"],[7074,7077,"NSM"],[7080,7081,"NSM"],[7083,7085,"NSM"],[7142,7142,"NSM"],[7144,7145,"NSM"],[7149,7149,"NSM"],[7151,7153,"NSM"],[7212,7219,"NSM"],[7222,7223,"NSM"],[7376,7378,"NSM"],[7380,7392,"NSM"],[7394,7400,"NSM"],[7405,7405,"NSM"],[7412,7412,"NSM"],[7416,7417,"NSM"],[7616,7679,"NSM"],[8125,8125,"ON"],[8127,8129,"ON"],[8141,8143,"ON"],[8157,8159,"ON"],[8173,8175,"ON"],[8189,8190,"ON"],[8192,8202,"WS"],[8203,8205,"BN"],[8207,8207,"R"],[8208,8231,"ON"],[8232,8232,"WS"],[8233,8233,"B"],[8234,8238,"BN"],[8239,8239,"CS"],[8240,8244,"ET"],[8245,8259,"ON"],[8260,8260,"CS"],[8261,8286,"ON"],[8287,8287,"WS"],[8288,8303,"BN"],[8304,8304,"EN"],[8308,8313,"EN"],[8314,8315,"ES"],[8316,8318,"ON"],[8320,8329,"EN"],[8330,8331,"ES"],[8332,8334,"ON"],[8352,8399,"ET"],[8400,8432,"NSM"],[8448,8449,"ON"],[8451,8454,"ON"],[8456,8457,"ON"],[8468,8468,"ON"],[8470,8472,"ON"],[8478,8483,"ON"],[8485,8485,"ON"],[8487,8487,"ON"],[8489,8489,"ON"],[8494,8494,"ET"],[8506,8507,"ON"],[8512,8516,"ON"],[8522,8525,"ON"],[8528,8543,"ON"],[8585,8587,"ON"],[8592,8721,"ON"],[8722,8722,"ES"],[8723,8723,"ET"],[8724,9013,"ON"],[9083,9108,"ON"],[9110,9257,"ON"],[9280,9290,"ON"],[9312,9351,"ON"],[9352,9371,"EN"],[9450,9899,"ON"],[9901,10239,"ON"],[10496,11123,"ON"],[11126,11263,"ON"],[11493,11498,"ON"],[11503,11505,"NSM"],[11513,11519,"ON"],[11647,11647,"NSM"],[11744,11775,"NSM"],[11776,11869,"ON"],[11904,11929,"ON"],[11931,12019,"ON"],[12032,12245,"ON"],[12272,12287,"ON"],[12288,12288,"WS"],[12289,12292,"ON"],[12296,12320,"ON"],[12330,12333,"NSM"],[12336,12336,"ON"],[12342,12343,"ON"],[12349,12351,"ON"],[12441,12442,"NSM"],[12443,12444,"ON"],[12448,12448,"ON"],[12539,12539,"ON"],[12736,12773,"ON"],[12783,12783,"ON"],[12829,12830,"ON"],[12880,12895,"ON"],[12924,12926,"ON"],[12977,12991,"ON"],[13004,13007,"ON"],[13175,13178,"ON"],[13278,13279,"ON"],[13311,13311,"ON"],[19904,19967,"ON"],[42128,42182,"ON"],[42509,42511,"ON"],[42607,42610,"NSM"],[42611,42611,"ON"],[42612,42621,"NSM"],[42622,42623,"ON"],[42654,42655,"NSM"],[42736,42737,"NSM"],[42752,42785,"ON"],[42888,42888,"ON"],[43010,43010,"NSM"],[43014,43014,"NSM"],[43019,43019,"NSM"],[43045,43046,"NSM"],[43048,43051,"ON"],[43052,43052,"NSM"],[43064,43065,"ET"],[43124,43127,"ON"],[43204,43205,"NSM"],[43232,43249,"NSM"],[43263,43263,"NSM"],[43302,43309,"NSM"],[43335,43345,"NSM"],[43392,43394,"NSM"],[43443,43443,"NSM"],[43446,43449,"NSM"],[43452,43453,"NSM"],[43493,43493,"NSM"],[43561,43566,"NSM"],[43569,43570,"NSM"],[43573,43574,"NSM"],[43587,43587,"NSM"],[43596,43596,"NSM"],[43644,43644,"NSM"],[43696,43696,"NSM"],[43698,43700,"NSM"],[43703,43704,"NSM"],[43710,43711,"NSM"],[43713,43713,"NSM"],[43756,43757,"NSM"],[43766,43766,"NSM"],[43882,43883,"ON"],[44005,44005,"NSM"],[44008,44008,"NSM"],[44013,44013,"NSM"],[64285,64285,"R"],[64286,64286,"NSM"],[64287,64296,"R"],[64297,64297,"ES"],[64298,64335,"R"],[64336,64450,"AL"],[64451,64466,"ON"],[64467,64829,"AL"],[64830,64847,"ON"],[64848,64911,"AL"],[64912,64913,"ON"],[64914,64967,"AL"],[64968,64975,"ON"],[64976,65007,"BN"],[65008,65020,"AL"],[65021,65023,"ON"],[65024,65039,"NSM"],[65040,65049,"ON"],[65056,65071,"NSM"],[65072,65103,"ON"],[65104,65104,"CS"],[65105,65105,"ON"],[65106,65106,"CS"],[65108,65108,"ON"],[65109,65109,"CS"],[65110,65118,"ON"],[65119,65119,"ET"],[65120,65121,"ON"],[65122,65123,"ES"],[65124,65126,"ON"],[65128,65128,"ON"],[65129,65130,"ET"],[65131,65131,"ON"],[65136,65278,"AL"],[65279,65279,"BN"],[65281,65282,"ON"],[65283,65285,"ET"],[65286,65290,"ON"],[65291,65291,"ES"],[65292,65292,"CS"],[65293,65293,"ES"],[65294,65295,"CS"],[65296,65305,"EN"],[65306,65306,"CS"],[65307,65312,"ON"],[65339,65344,"ON"],[65371,65381,"ON"],[65504,65505,"ET"],[65506,65508,"ON"],[65509,65510,"ET"],[65512,65518,"ON"],[65520,65528,"BN"],[65529,65533,"ON"],[65534,65535,"BN"],[65793,65793,"ON"],[65856,65932,"ON"],[65936,65948,"ON"],[65952,65952,"ON"],[66045,66045,"NSM"],[66272,66272,"NSM"],[66273,66299,"EN"],[66422,66426,"NSM"],[67584,67870,"R"],[67871,67871,"ON"],[67872,68096,"R"],[68097,68099,"NSM"],[68100,68100,"R"],[68101,68102,"NSM"],[68103,68107,"R"],[68108,68111,"NSM"],[68112,68151,"R"],[68152,68154,"NSM"],[68155,68158,"R"],[68159,68159,"NSM"],[68160,68324,"R"],[68325,68326,"NSM"],[68327,68408,"R"],[68409,68415,"ON"],[68416,68863,"R"],[68864,68899,"AL"],[68900,68903,"NSM"],[68904,68911,"AL"],[68912,68921,"AN"],[68922,68927,"AL"],[68928,68937,"AN"],[68938,68968,"R"],[68969,68973,"NSM"],[68974,68974,"ON"],[68975,69215,"R"],[69216,69246,"AN"],[69247,69290,"R"],[69291,69292,"NSM"],[69293,69311,"R"],[69312,69327,"AL"],[69328,69336,"ON"],[69337,69369,"AL"],[69370,69375,"NSM"],[69376,69423,"R"],[69424,69445,"AL"],[69446,69456,"NSM"],[69457,69487,"AL"],[69488,69505,"R"],[69506,69509,"NSM"],[69510,69631,"R"],[69633,69633,"NSM"],[69688,69702,"NSM"],[69714,69733,"ON"],[69744,69744,"NSM"],[69747,69748,"NSM"],[69759,69761,"NSM"],[69811,69814,"NSM"],[69817,69818,"NSM"],[69826,69826,"NSM"],[69888,69890,"NSM"],[69927,69931,"NSM"],[69933,69940,"NSM"],[70003,70003,"NSM"],[70016,70017,"NSM"],[70070,70078,"NSM"],[70089,70092,"NSM"],[70095,70095,"NSM"],[70191,70193,"NSM"],[70196,70196,"NSM"],[70198,70199,"NSM"],[70206,70206,"NSM"],[70209,70209,"NSM"],[70367,70367,"NSM"],[70371,70378,"NSM"],[70400,70401,"NSM"],[70459,70460,"NSM"],[70464,70464,"NSM"],[70502,70508,"NSM"],[70512,70516,"NSM"],[70587,70592,"NSM"],[70606,70606,"NSM"],[70608,70608,"NSM"],[70610,70610,"NSM"],[70625,70626,"NSM"],[70712,70719,"NSM"],[70722,70724,"NSM"],[70726,70726,"NSM"],[70750,70750,"NSM"],[70835,70840,"NSM"],[70842,70842,"NSM"],[70847,70848,"NSM"],[70850,70851,"NSM"],[71090,71093,"NSM"],[71100,71101,"NSM"],[71103,71104,"NSM"],[71132,71133,"NSM"],[71219,71226,"NSM"],[71229,71229,"NSM"],[71231,71232,"NSM"],[71264,71276,"ON"],[71339,71339,"NSM"],[71341,71341,"NSM"],[71344,71349,"NSM"],[71351,71351,"NSM"],[71453,71453,"NSM"],[71455,71455,"NSM"],[71458,71461,"NSM"],[71463,71467,"NSM"],[71727,71735,"NSM"],[71737,71738,"NSM"],[71995,71996,"NSM"],[71998,71998,"NSM"],[72003,72003,"NSM"],[72148,72151,"NSM"],[72154,72155,"NSM"],[72160,72160,"NSM"],[72193,72198,"NSM"],[72201,72202,"NSM"],[72243,72248,"NSM"],[72251,72254,"NSM"],[72263,72263,"NSM"],[72273,72278,"NSM"],[72281,72283,"NSM"],[72330,72342,"NSM"],[72344,72345,"NSM"],[72544,72544,"NSM"],[72546,72548,"NSM"],[72550,72550,"NSM"],[72752,72758,"NSM"],[72760,72765,"NSM"],[72850,72871,"NSM"],[72874,72880,"NSM"],[72882,72883,"NSM"],[72885,72886,"NSM"],[73009,73014,"NSM"],[73018,73018,"NSM"],[73020,73021,"NSM"],[73023,73029,"NSM"],[73031,73031,"NSM"],[73104,73105,"NSM"],[73109,73109,"NSM"],[73111,73111,"NSM"],[73459,73460,"NSM"],[73472,73473,"NSM"],[73526,73530,"NSM"],[73536,73536,"NSM"],[73538,73538,"NSM"],[73562,73562,"NSM"],[73685,73692,"ON"],[73693,73696,"ET"],[73697,73713,"ON"],[78912,78912,"NSM"],[78919,78933,"NSM"],[90398,90409,"NSM"],[90413,90415,"NSM"],[92912,92916,"NSM"],[92976,92982,"NSM"],[94031,94031,"NSM"],[94095,94098,"NSM"],[94178,94178,"ON"],[94180,94180,"NSM"],[113821,113822,"NSM"],[113824,113827,"BN"],[117760,117973,"ON"],[118e3,118009,"EN"],[118010,118012,"ON"],[118016,118451,"ON"],[118458,118480,"ON"],[118496,118512,"ON"],[118528,118573,"NSM"],[118576,118598,"NSM"],[119143,119145,"NSM"],[119155,119162,"BN"],[119163,119170,"NSM"],[119173,119179,"NSM"],[119210,119213,"NSM"],[119273,119274,"ON"],[119296,119361,"ON"],[119362,119364,"NSM"],[119365,119365,"ON"],[119552,119638,"ON"],[120513,120513,"ON"],[120539,120539,"ON"],[120571,120571,"ON"],[120597,120597,"ON"],[120629,120629,"ON"],[120655,120655,"ON"],[120687,120687,"ON"],[120713,120713,"ON"],[120745,120745,"ON"],[120771,120771,"ON"],[120782,120831,"EN"],[121344,121398,"NSM"],[121403,121452,"NSM"],[121461,121461,"NSM"],[121476,121476,"NSM"],[121499,121503,"NSM"],[121505,121519,"NSM"],[122880,122886,"NSM"],[122888,122904,"NSM"],[122907,122913,"NSM"],[122915,122916,"NSM"],[122918,122922,"NSM"],[123023,123023,"NSM"],[123184,123190,"NSM"],[123566,123566,"NSM"],[123628,123631,"NSM"],[123647,123647,"ET"],[124140,124143,"NSM"],[124398,124399,"NSM"],[124643,124643,"NSM"],[124646,124646,"NSM"],[124654,124655,"NSM"],[124661,124661,"NSM"],[124928,125135,"R"],[125136,125142,"NSM"],[125143,125251,"R"],[125252,125258,"NSM"],[125259,126063,"R"],[126064,126143,"AL"],[126144,126207,"R"],[126208,126287,"AL"],[126288,126463,"R"],[126464,126703,"AL"],[126704,126705,"ON"],[126706,126719,"AL"],[126720,126975,"R"],[126976,127019,"ON"],[127024,127123,"ON"],[127136,127150,"ON"],[127153,127167,"ON"],[127169,127183,"ON"],[127185,127221,"ON"],[127232,127242,"EN"],[127243,127247,"ON"],[127279,127279,"ON"],[127338,127343,"ON"],[127405,127405,"ON"],[127584,127589,"ON"],[127744,128728,"ON"],[128732,128748,"ON"],[128752,128764,"ON"],[128768,128985,"ON"],[128992,129003,"ON"],[129008,129008,"ON"],[129024,129035,"ON"],[129040,129095,"ON"],[129104,129113,"ON"],[129120,129159,"ON"],[129168,129197,"ON"],[129200,129211,"ON"],[129216,129217,"ON"],[129232,129240,"ON"],[129280,129623,"ON"],[129632,129645,"ON"],[129648,129660,"ON"],[129664,129674,"ON"],[129678,129734,"ON"],[129736,129736,"ON"],[129741,129756,"ON"],[129759,129770,"ON"],[129775,129784,"ON"],[129792,129938,"ON"],[129940,130031,"ON"],[130032,130041,"EN"],[130042,130042,"ON"],[131070,131071,"BN"],[196606,196607,"BN"],[262142,262143,"BN"],[327678,327679,"BN"],[393214,393215,"BN"],[458750,458751,"BN"],[524286,524287,"BN"],[589822,589823,"BN"],[655358,655359,"BN"],[720894,720895,"BN"],[786430,786431,"BN"],[851966,851967,"BN"],[917502,917759,"BN"],[917760,917999,"NSM"],[918e3,921599,"BN"],[983038,983039,"BN"],[1048574,1048575,"BN"],[1114110,1114111,"BN"]];function Vd(e){if(e<=255)return pa[e];let t=0,n=ir.length-1;for(;t<=n;){let i=t+n>>1,r=ir[i];if(e<r[0]){n=i-1;continue}if(e>r[1]){t=i+1;continue}return r[2]}return"L"}function zd(e){let t=e.length;if(t===0)return null;let n=new Array(t),i=!1;for(let l=0;l<t;){let c=e.charCodeAt(l),p=c,f=1;if(c>=55296&&c<=56319&&l+1<t){let E=e.charCodeAt(l+1);E>=56320&&E<=57343&&(p=(c-55296<<10)+(E-56320)+65536,f=2)}let x=Vd(p);(x==="R"||x==="AL"||x==="AN")&&(i=!0);for(let E=0;E<f;E++)n[l+E]=x;l+=f}if(!i)return null;let r=0;for(let l=0;l<t;l++){let c=n[l];if(c==="L"){r=0;break}if(c==="R"||c==="AL"){r=1;break}}let o=new Int8Array(t);for(let l=0;l<t;l++)o[l]=r;let s=r&1?"R":"L",u=s,a=u;for(let l=0;l<t;l++)n[l]==="NSM"?n[l]=a:a=n[l];a=u;for(let l=0;l<t;l++){let c=n[l];c==="EN"?n[l]=a==="AL"?"AN":"EN":(c==="R"||c==="L"||c==="AL")&&(a=c)}for(let l=0;l<t;l++)n[l]==="AL"&&(n[l]="R");for(let l=1;l<t-1;l++)n[l]==="ES"&&n[l-1]==="EN"&&n[l+1]==="EN"&&(n[l]="EN"),n[l]==="CS"&&(n[l-1]==="EN"||n[l-1]==="AN")&&n[l+1]===n[l-1]&&(n[l]=n[l-1]);for(let l=0;l<t;l++){if(n[l]!=="EN")continue;let c;for(c=l-1;c>=0&&n[c]==="ET";c--)n[c]="EN";for(c=l+1;c<t&&n[c]==="ET";c++)n[c]="EN"}for(let l=0;l<t;l++){let c=n[l];(c==="WS"||c==="ES"||c==="ET"||c==="CS")&&(n[l]="ON")}a=u;for(let l=0;l<t;l++){let c=n[l];c==="EN"?n[l]=a==="L"?"L":"EN":(c==="R"||c==="L")&&(a=c)}for(let l=0;l<t;l++){if(n[l]!=="ON")continue;let c=l+1;for(;c<t&&n[c]==="ON";)c++;let p=l>0?n[l-1]:u,f=c<t?n[c]:u,x=p!=="L"?"R":"L";if(x===(f!=="L"?"R":"L"))for(let b=l;b<c;b++)n[b]=x;l=c-1}for(let l=0;l<t;l++)n[l]==="ON"&&(n[l]=s);for(let l=0;l<t;l++){let c=n[l];(o[l]&1)===0?c==="R"?o[l]++:(c==="AN"||c==="EN")&&(o[l]+=2):(c==="L"||c==="AN"||c==="EN")&&o[l]++}return o}function ha(e,t){let n=zd(e);if(n===null)return null;let i=new Int8Array(t.length);for(let r=0;r<t.length;r++)i[r]=n[t[r]];return i}var qd=/[ \\t\\n\\r\\f]+/g,jd=/[\\t\\n\\r\\f]| {2,}|^ | $/;function $d(e){let t=e??"normal";return t==="pre-wrap"?{mode:t,preserveOrdinarySpaces:!0,preserveHardBreaks:!0}:{mode:t,preserveOrdinarySpaces:!1,preserveHardBreaks:!1}}function Kd(e){if(!jd.test(e))return e;let t=e.replace(qd," ");return t.charCodeAt(0)===32&&(t=t.slice(1)),t.length>0&&t.charCodeAt(t.length-1)===32&&(t=t.slice(0,-1)),t}function Jd(e){return/[\\r\\f]/.test(e)?e.replace(/\\r\\n/g,`\n`).replace(/[\\r\\f]/g,`\n`):e.replace(/\\r\\n/g,`\n`)}var rr=null,Xd;function Yd(){return rr===null&&(rr=new Intl.Segmenter(Xd,{granularity:"word"})),rr}var Qd=/\\p{Script=Arabic}/u,Dn=/\\p{M}/u,wa=/\\p{Nd}/u;function ga(e){return Qd.test(e)}function xa(e){return e>=19968&&e<=40959||e>=13312&&e<=19903||e>=131072&&e<=173791||e>=173824&&e<=177983||e>=177984&&e<=178207||e>=178208&&e<=183983||e>=183984&&e<=191471||e>=191472&&e<=192093||e>=194560&&e<=195103||e>=196608&&e<=201551||e>=201552&&e<=205743||e>=205744&&e<=210041||e>=63744&&e<=64255||e>=12288&&e<=12351||e>=12352&&e<=12447||e>=12448&&e<=12543||e>=44032&&e<=55215||e>=65280&&e<=65519}function Ie(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(!(n<12288)){if(n>=55296&&n<=56319&&t+1<e.length){let i=e.charCodeAt(t+1);if(i>=56320&&i<=57343){let r=(n-55296<<10)+(i-56320)+65536;if(xa(r))return!0;t++;continue}}if(xa(n))return!0}}return!1}function Zd(e){let t=On(e);return t!==null&&(Pn.has(t)||Ze.has(t))}var ef=new Set(["\\xA0","\\u202F","\\u2060","\\uFEFF"]);function tf(e){return Ie(e)}function nf(e){let t=On(e);return t!==null&&ef.has(t)}function In(e){return!Zd(e)&&!nf(e)}var Pn=new Set(["\\uFF0C","\\uFF0E","\\uFF01","\\uFF1A","\\uFF1B","\\uFF1F","\\u3001","\\u3002","\\u30FB","\\uFF09","\\u3015","\\u3009","\\u300B","\\u300D","\\u300F","\\u3011","\\u3017","\\u3019","\\u301B","\\u30FC","\\u3005","\\u303B","\\u309D","\\u309E","\\u30FD","\\u30FE"]),rn=new Set([\'"\',"(","[","{","\\u201C","\\u2018","\\xAB","\\u2039","\\uFF08","\\u3014","\\u3008","\\u300A","\\u300C","\\u300E","\\u3010","\\u3016","\\u3018","\\u301A"]),sr=new Set(["\'","\\u2019"]),Ze=new Set([".",",","!","?",":",";","\\u060C","\\u061B","\\u061F","\\u0964","\\u0965","\\u104A","\\u104B","\\u104C","\\u104D","\\u104F",")","]","}","%",\'"\',"\\u201D","\\u2019","\\xBB","\\u203A","\\u2026"]),rf=new Set([":",".","\\u060C","\\u061B"]),of=new Set(["\\u104F"]),sf=new Set(["\\u201D","\\u2019","\\xBB","\\u203A","\\u300D","\\u300F","\\u3011","\\u300B","\\u3009","\\u3015","\\uFF09"]);function af(e){if(ar(e))return!0;let t=!1;for(let n of e){if(Ze.has(n)){t=!0;continue}if(!(t&&Dn.test(n)))return!1}return t}function lf(e){for(let t of e)if(!Pn.has(t)&&!Ze.has(t))return!1;return e.length>0}function uf(e){if(ar(e))return!0;for(let t of e)if(!rn.has(t)&&!sr.has(t)&&!Dn.test(t))return!1;return e.length>0}function ar(e){let t=!1;for(let n of e)if(!(n==="\\\\"||Dn.test(n))){if(rn.has(n)||Ze.has(n)||sr.has(n)){t=!0;continue}return!1}return t}function Fa(e,t){let n=t-1;if(n<=0)return Math.max(n,0);let i=e.charCodeAt(n);if(i<56320||i>57343)return n;let r=n-1;if(r<0)return n;let o=e.charCodeAt(r);return o>=55296&&o<=56319?r:n}function On(e){if(e.length===0)return null;let t=Fa(e,e.length);return e.slice(t)}function cf(e){let t=Array.from(e),n=t.length;for(;n>0;){let i=t[n-1];if(Dn.test(i)){n--;continue}if(rn.has(i)||sr.has(i)){n--;continue}break}return n<=0||n===t.length?null:{head:t.slice(0,n).join(""),tail:t.slice(n).join("")}}function df(e,t,n){return n==="text"&&!t&&e.length===1&&e!=="-"&&e!=="\\u2014"?e:null}function ba(e,t,n,i){let r=t[i],o=e[i];if(r==null)return o;let s=n[i];if(o.length===s)return o;let u=r.repeat(s);return e[i]=u,u}function ya(e,t){return e&&t!==null&&rf.has(t)}function ff(e){let t=On(e);return t!==null&&of.has(t)}function mf(e){if(e.length<2||e[0]!==" ")return null;let t=e.slice(1);return/^\\p{M}+$/u.test(t)?{space:" ",marks:t}:null}function Bn(e){let t=e.length;for(;t>0;){let n=Fa(e,t),i=e.slice(n,t);if(sf.has(i))return!0;if(!Ze.has(i))return!1;t=n}return!1}function pf(e,t){if(t.preserveOrdinarySpaces||t.preserveHardBreaks){if(e===" ")return"preserved-space";if(e===" ")return"tab";if(t.preserveHardBreaks&&e===`\n`)return"hard-break"}return e===" "?"space":e==="\\xA0"||e==="\\u202F"||e==="\\u2060"||e==="\\uFEFF"?"glue":e==="\\u200B"?"zero-width-break":e==="\\xAD"?"soft-hyphen":"text"}var hf=/[\\x20\\t\\n\\xA0\\xAD\\u200B\\u202F\\u2060\\uFEFF]/;function Ne(e){return e.length===1?e[0]:e.join("")}function gf(e,t){let n=[];for(let i=e.length-1;i>=0;i--)n.push(e[i]);return n.push(t),Ne(n)}function xf(e,t,n,i){if(!hf.test(e))return[{text:e,isWordLike:t,kind:"text",start:n}];let r=[],o=null,s=[],u=n,a=!1,l=0;for(let c of e){let p=pf(c,i),f=p==="text"&&t;if(o!==null&&p===o&&f===a){s.push(c),l+=c.length;continue}o!==null&&r.push({text:Ne(s),isWordLike:a,kind:o,start:u}),o=p,s=[c],u=n+l,a=f,l+=c.length}return o!==null&&r.push({text:Ne(s),isWordLike:a,kind:o,start:u}),r}function or(e){return e==="space"||e==="preserved-space"||e==="zero-width-break"||e==="hard-break"}var bf=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function yf(e,t){let n=e.texts[t];return n.startsWith("www.")?!0:bf.test(n)&&t+1<e.len&&e.kinds[t+1]==="text"&&e.texts[t+1]==="//"}function Sf(e){return e.includes("?")&&(e.includes("://")||e.startsWith("www."))}function Ef(e){let t=e.texts.slice(),n=e.isWordLike.slice(),i=e.kinds.slice(),r=e.starts.slice();for(let s=0;s<e.len;s++){if(i[s]!=="text"||!yf(e,s))continue;let u=[t[s]],a=s+1;for(;a<e.len&&!or(i[a]);){u.push(t[a]),n[s]=!0;let l=t[a].includes("?");if(i[a]="text",t[a]="",a++,l)break}t[s]=Ne(u)}let o=0;for(let s=0;s<t.length;s++){let u=t[s];u.length!==0&&(o!==s&&(t[o]=u,n[o]=n[s],i[o]=i[s],r[o]=r[s]),o++)}return t.length=o,n.length=o,i.length=o,r.length=o,{len:o,texts:t,isWordLike:n,kinds:i,starts:r}}function Af(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o];if(t.push(s),n.push(e.isWordLike[o]),i.push(e.kinds[o]),r.push(e.starts[o]),!Sf(s))continue;let u=o+1;if(u>=e.len||or(e.kinds[u]))continue;let a=[],l=e.starts[u],c=u;for(;c<e.len&&!or(e.kinds[c]);)a.push(e.texts[c]),c++;a.length>0&&(t.push(Ne(a)),n.push(!0),i.push("text"),r.push(l),o=c-1)}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}var wf=new Set([":","-","/","\\xD7",",",".","+","\\u2013","\\u2014"]),Sa=/^[A-Za-z0-9_]+[,:;]*$/,Ea=/[,:;]+$/;function Ca(e){for(let t of e)if(wa.test(t))return!0;return!1}function nn(e){if(e.length===0)return!1;for(let t of e)if(!(wa.test(t)||wf.has(t)))return!1;return!0}function Ff(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o],u=e.kinds[o];if(u==="text"&&nn(s)&&Ca(s)){let a=[s],l=o+1;for(;l<e.len&&e.kinds[l]==="text"&&nn(e.texts[l]);)a.push(e.texts[l]),l++;t.push(Ne(a)),n.push(!0),i.push("text"),r.push(e.starts[o]),o=l-1;continue}t.push(s),n.push(e.isWordLike[o]),i.push(u),r.push(e.starts[o])}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Cf(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o],u=e.kinds[o],a=e.isWordLike[o];if(u==="text"&&a&&Sa.test(s)){let l=[s],c=Ea.test(s),p=o+1;for(;c&&p<e.len&&e.kinds[p]==="text"&&e.isWordLike[p]&&Sa.test(e.texts[p]);){let f=e.texts[p];l.push(f),c=Ea.test(f),p++}t.push(Ne(l)),n.push(!0),i.push("text"),r.push(e.starts[o]),o=p-1;continue}t.push(s),n.push(a),i.push(u),r.push(e.starts[o])}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function _f(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o];if(e.kinds[o]==="text"&&s.includes("-")){let u=s.split("-"),a=u.length>1;for(let l=0;l<u.length;l++){let c=u[l];if(!a)break;(c.length===0||!Ca(c)||!nn(c))&&(a=!1)}if(a){let l=0;for(let c=0;c<u.length;c++){let p=u[c],f=c<u.length-1?`${p}-`:p;t.push(f),n.push(!0),i.push("text"),r.push(e.starts[o]+l),l+=f.length}continue}}t.push(s),n.push(e.isWordLike[o]),i.push(e.kinds[o]),r.push(e.starts[o])}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Mf(e){let t=[],n=[],i=[],r=[],o=0;for(;o<e.len;){let s=[e.texts[o]],u=e.isWordLike[o],a=e.kinds[o],l=e.starts[o];if(a==="glue"){let c=[s[0]],p=l;for(o++;o<e.len&&e.kinds[o]==="glue";)c.push(e.texts[o]),o++;let f=Ne(c);if(o<e.len&&e.kinds[o]==="text")s[0]=f,s.push(e.texts[o]),u=e.isWordLike[o],a="text",l=p,o++;else{t.push(f),n.push(!1),i.push("glue"),r.push(p);continue}}else o++;if(a==="text")for(;o<e.len&&e.kinds[o]==="glue";){let c=[];for(;o<e.len&&e.kinds[o]==="glue";)c.push(e.texts[o]),o++;let p=Ne(c);if(o<e.len&&e.kinds[o]==="text"){s.push(p,e.texts[o]),u=u||e.isWordLike[o],o++;continue}s.push(p)}t.push(Ne(s)),n.push(u),i.push(a),r.push(l)}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function vf(e){let t=e.texts.slice(),n=e.isWordLike.slice(),i=e.kinds.slice(),r=e.starts.slice();for(let o=0;o<t.length-1;o++){if(i[o]!=="text"||i[o+1]!=="text"||!Ie(t[o])||!Ie(t[o+1]))continue;let s=cf(t[o]);s!==null&&(t[o]=s.head,t[o+1]=s.tail+t[o+1],r[o+1]=r[o]+s.head.length)}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Aa(e,t,n){let i=Yd(),r=0,o=[],s=[],u=[],a=[],l=[],c=[],p=[],f=[],x=[],E=[],b=[],g=[];for(let v of i.segment(e))for(let S of xf(v.segment,v.isWordLike??!1,v.index,n)){let se=function(){c[P]!==null&&(s[P]=[ba(o,c,p,P)],c[P]=null),s[P].push(S.text),u[P]=u[P]||S.isWordLike,f[P]=f[P]||T,x[P]=x[P]||R,E[P]=q,b[P]=ie,g[P]=ya(x[P],W)},F=S.kind==="text",_=df(S.text,S.isWordLike,S.kind),T=Ie(S.text),R=ga(S.text),W=On(S.text),q=Bn(S.text),ie=ff(S.text),P=r-1;t.carryCJKAfterClosingQuote&&F&&r>0&&a[P]==="text"&&T&&f[P]&&E[P]||F&&r>0&&a[P]==="text"&&lf(S.text)&&f[P]||F&&r>0&&a[P]==="text"&&b[P]?se():F&&r>0&&a[P]==="text"&&S.isWordLike&&R&&g[P]?(se(),u[P]=!0):_!==null&&r>0&&a[P]==="text"&&c[P]===_?p[P]=(p[P]??1)+1:F&&!S.isWordLike&&r>0&&a[P]==="text"&&(af(S.text)||S.text==="-"&&u[P])?se():(o[r]=S.text,s[r]=[S.text],u[r]=S.isWordLike,a[r]=S.kind,l[r]=S.start,c[r]=_,p[r]=_===null?0:1,f[r]=T,x[r]=R,E[r]=q,b[r]=ie,g[r]=ya(R,W),r++)}for(let v=0;v<r;v++){if(c[v]!==null){o[v]=ba(o,c,p,v);continue}o[v]=Ne(s[v])}for(let v=1;v<r;v++)a[v]==="text"&&!u[v]&&ar(o[v])&&a[v-1]==="text"&&(o[v-1]+=o[v],u[v-1]=u[v-1]||u[v],o[v]="");let A=Array.from({length:r},()=>null),C=-1;for(let v=r-1;v>=0;v--){let S=o[v];if(S.length!==0){if(a[v]==="text"&&!u[v]&&uf(S)&&C>=0&&a[C]==="text"){let F=A[C]??[];F.push(S),A[C]=F,l[C]=l[v],o[v]="";continue}C=v}}for(let v=0;v<r;v++){let S=A[v];S!=null&&(o[v]=gf(S,o[v]))}let N=0;for(let v=0;v<r;v++){let S=o[v];S.length!==0&&(N!==v&&(o[N]=S,u[N]=u[v],a[N]=a[v],l[N]=l[v]),N++)}o.length=N,u.length=N,a.length=N,l.length=N;let $=Mf({len:N,texts:o,isWordLike:u,kinds:a,starts:l}),B=vf(Cf(_f(Ff(Af(Ef($))))));for(let v=0;v<B.len-1;v++){let S=mf(B.texts[v]);S!==null&&(B.kinds[v]!=="space"&&B.kinds[v]!=="preserved-space"||B.kinds[v+1]!=="text"||!ga(B.texts[v+1])||(B.texts[v]=S.space,B.isWordLike[v]=!1,B.kinds[v]=B.kinds[v]==="preserved-space"?"preserved-space":"space",B.texts[v+1]=S.marks+B.texts[v+1],B.starts[v+1]=B.starts[v]+S.space.length))}return B}function Tf(e,t){if(e.len===0)return[];if(!t.preserveHardBreaks)return[{startSegmentIndex:0,endSegmentIndex:e.len,consumedEndSegmentIndex:e.len}];let n=[],i=0;for(let r=0;r<e.len;r++)e.kinds[r]==="hard-break"&&(n.push({startSegmentIndex:i,endSegmentIndex:r,consumedEndSegmentIndex:r+1}),i=r+1);return i<e.len&&n.push({startSegmentIndex:i,endSegmentIndex:e.len,consumedEndSegmentIndex:e.len}),n}function Nf(e){if(e.len<=1)return e;let t=[],n=[],i=[],r=[],o=null,s=!1,u=0,a=!1,l=!1;function c(){o!==null&&(t.push(Ne(o)),n.push(s),i.push("text"),r.push(u),o=null)}for(let p=0;p<e.len;p++){let f=e.texts[p],x=e.kinds[p],E=e.isWordLike[p],b=e.starts[p];if(x==="text"){let g=tf(f),A=In(f);if(o!==null&&a&&l){o.push(f),s=s||E,a=a||g,l=A;continue}c(),o=[f],s=E,u=b,a=g,l=A;continue}c(),t.push(f),n.push(E),i.push(x),r.push(b)}return c(),{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function _a(e,t,n="normal",i="normal"){let r=$d(n),o=r.mode==="pre-wrap"?Jd(e):Kd(e);if(o.length===0)return{normalized:o,chunks:[],len:0,texts:[],isWordLike:[],kinds:[],starts:[]};let s=i==="keep-all"?Nf(Aa(o,t,r)):Aa(o,t,r);return{normalized:o,chunks:Tf(s,r),...s}}var yt=null,Ma=new Map,St=null,Lf=96,Rf=/\\p{Emoji_Presentation}/u,kf=/[\\p{Emoji_Presentation}\\p{Extended_Pictographic}\\p{Regional_Indicator}\\uFE0F\\u20E3]/u,lr=null,va=new Map;function ur(){if(yt!==null)return yt;if(typeof OffscreenCanvas<"u")return yt=new OffscreenCanvas(1,1).getContext("2d"),yt;if(typeof document<"u")return yt=document.createElement("canvas").getContext("2d"),yt;throw new Error("Text measurement requires OffscreenCanvas or a DOM canvas context.")}function Df(e){let t=Ma.get(e);return t||(t=new Map,Ma.set(e,t)),t}function je(e,t){let n=t.get(e);return n===void 0&&(n={width:ur().measureText(e).width,containsCJK:Ie(e)},t.set(e,n)),n}function Et(){if(St!==null)return St;if(typeof navigator>"u")return St={lineFitEpsilon:.005,carryCJKAfterClosingQuote:!1,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},St;let e=navigator.userAgent,n=navigator.vendor==="Apple Computer, Inc."&&e.includes("Safari/")&&!e.includes("Chrome/")&&!e.includes("Chromium/")&&!e.includes("CriOS/")&&!e.includes("FxiOS/")&&!e.includes("EdgiOS/"),i=e.includes("Chrome/")||e.includes("Chromium/")||e.includes("CriOS/")||e.includes("Edg/");return St={lineFitEpsilon:n?1/64:.005,carryCJKAfterClosingQuote:i,preferPrefixWidthsForBreakableRuns:n,preferEarlySoftHyphenBreak:n},St}function If(e){let t=e.match(/(\\d+(?:\\.\\d+)?)\\s*px/);return t?parseFloat(t[1]):16}function Ta(){return lr===null&&(lr=new Intl.Segmenter(void 0,{granularity:"grapheme"})),lr}function Pf(e){return Rf.test(e)||e.includes("\\uFE0F")}function Na(e){return kf.test(e)}function Of(e,t){let n=va.get(e);if(n!==void 0)return n;let i=ur();i.font=e;let r=i.measureText("\\u{1F600}").width;if(n=0,r>t+.5&&typeof document<"u"&&document.body!==null){let o=document.createElement("span");o.style.font=e,o.style.display="inline-block",o.style.visibility="hidden",o.style.position="absolute",o.textContent="\\u{1F600}",document.body.appendChild(o);let s=o.getBoundingClientRect().width;document.body.removeChild(o),r-s>.5&&(n=r-s)}return va.set(e,n),n}function Bf(e){let t=0,n=Ta();for(let i of n.segment(e))Pf(i.segment)&&t++;return t}function Hf(e,t){return t.emojiCount===void 0&&(t.emojiCount=Bf(e)),t.emojiCount}function et(e,t,n){return n===0?t.width:t.width-Hf(e,t)*n}function La(e,t,n,i,r){if(t.breakableFitAdvances!==void 0)return t.breakableFitAdvances;let o=Ta(),s=[];for(let c of o.segment(e))s.push(c.segment);if(s.length<=1)return t.breakableFitAdvances=null,t.breakableFitAdvances;if(r==="sum-graphemes"){let c=[];for(let p of s){let f=je(p,n);c.push(et(p,f,i))}return t.breakableFitAdvances=c,t.breakableFitAdvances}if(r==="pair-context"||s.length>Lf){let c=[],p=null,f=0;for(let x of s){let E=je(x,n),b=et(x,E,i);if(p===null)c.push(b);else{let g=p+x,A=je(g,n);c.push(et(g,A,i)-f)}p=x,f=b}return t.breakableFitAdvances=c,t.breakableFitAdvances}let u=[],a="",l=0;for(let c of s){a+=c;let p=je(a,n),f=et(a,p,i);u.push(f-l),l=f}return t.breakableFitAdvances=u,t.breakableFitAdvances}function Ra(e,t){let n=ur();n.font=e;let i=Df(e),r=If(e),o=t?Of(e,r):0;return{cache:i,fontSize:r,emojiCorrection:o}}function Gf(e,t){for(;t<e.widths.length;){let n=e.kinds[t];if(n!=="space"&&n!=="zero-width-break"&&n!=="soft-hyphen")break;t++}return t}function Wf(e,t){if(t<=0)return 0;let n=e%t;return Math.abs(n)<=1e-6?t:t-n}function Uf(e,t,n,i,r){let o=0,s=t;for(;o<e.length;){let u=s+e[o];if((o+1<e.length?u+r:u)>n+i)break;s=u,o++}return{fitCount:o,fittedWidth:s}}function ka(e,t){return e.simpleLineWalkFastPath?Da(e,t):Ia(e,t)}function Da(e,t,n){let{widths:i,kinds:r,breakableFitAdvances:o}=e;if(i.length===0)return 0;let u=Et().lineFitEpsilon,a=t+u,l=0,c=0,p=!1,f=0,x=0,E=0,b=0,g=-1,A=0;function C(){g=-1,A=0}function N(_=E,T=b,R=c){l++,n?.({startSegmentIndex:f,startGraphemeIndex:x,endSegmentIndex:_,endGraphemeIndex:T,width:R}),c=0,p=!1,C()}function $(_,T){p=!0,f=_,x=0,E=_+1,b=0,c=T}function B(_,T,R){p=!0,f=_,x=T,E=_,b=T+1,c=R}function v(_,T){if(!p){$(_,T);return}c+=T,E=_+1,b=0}function S(_,T){let R=o[_];for(let W=T;W<R.length;W++){let q=R[W];p?c+q>a?(N(),B(_,W,q)):(c+=q,E=_,b=W+1):B(_,W,q)}p&&E===_&&b===R.length&&(E=_+1,b=0)}let F=0;for(;F<i.length&&!(!p&&(F=Gf(e,F),F>=i.length));){let _=i[F],T=r[F],R=T==="space"||T==="preserved-space"||T==="tab"||T==="zero-width-break"||T==="soft-hyphen";if(!p){_>t&&o[F]!==null?S(F,0):$(F,_),R&&(g=F+1,A=c-_),F++;continue}if(c+_>a){if(R){v(F,_),N(F+1,0,c-_),F++;continue}if(g>=0){if(E>g||E===g&&b>0){N();continue}N(g,0,A);continue}if(_>t&&o[F]!==null){N(),S(F,0),F++;continue}N();continue}v(F,_),R&&(g=F+1,A=c-_),F++}return p&&N(),l}function Ia(e,t,n){if(e.simpleLineWalkFastPath)return Da(e,t,n);let{widths:i,lineEndFitAdvances:r,lineEndPaintAdvances:o,kinds:s,breakableFitAdvances:u,discretionaryHyphenWidth:a,tabStopAdvance:l,chunks:c}=e;if(i.length===0||c.length===0)return 0;let p=Et(),f=p.lineFitEpsilon,x=t+f,E=0,b=0,g=!1,A=0,C=0,N=0,$=0,B=-1,v=0,S=0,F=null;function _(){B=-1,v=0,S=0,F=null}function T(H=N,U=$,V=b){E++,n?.({startSegmentIndex:A,startGraphemeIndex:C,endSegmentIndex:H,endGraphemeIndex:U,width:V}),b=0,g=!1,_()}function R(H,U){g=!0,A=H,C=0,N=H+1,$=0,b=U}function W(H,U,V){g=!0,A=H,C=U,N=H,$=U+1,b=V}function q(H,U){if(!g){R(H,U);return}b+=U,N=H+1,$=0}function ie(H,U,V,re){if(!U)return;let _e=H==="tab"?0:r[V],O=H==="tab"?re:o[V];B=V+1,v=b-re+_e,S=b-re+O,F=H}function P(H,U){let V=u[H];for(let re=U;re<V.length;re++){let _e=V[re];g?b+_e>x?(T(),W(H,re,_e)):(b+=_e,N=H,$=re+1):W(H,re,_e)}g&&N===H&&$===V.length&&(N=H+1,$=0)}function se(H){if(F!=="soft-hyphen")return!1;let U=u[H];if(U==null)return!1;let{fitCount:V,fittedWidth:re}=Uf(U,b,t,f,a);return V===0?!1:(b=re,N=H,$=V,_(),V===U.length?(N=H+1,$=0,!0):(T(H,V,re+a),P(H,V),!0))}function Ee(H){E++,n?.({startSegmentIndex:H.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:H.consumedEndSegmentIndex,endGraphemeIndex:0,width:0}),_()}for(let H=0;H<c.length;H++){let U=c[H];if(U.startSegmentIndex===U.endSegmentIndex){Ee(U);continue}g=!1,b=0,A=U.startSegmentIndex,C=0,N=U.startSegmentIndex,$=0,_();let V=U.startSegmentIndex;for(;V<U.endSegmentIndex;){let re=s[V],_e=re==="space"||re==="preserved-space"||re==="tab"||re==="zero-width-break"||re==="soft-hyphen",O=re==="tab"?Wf(b,l):i[V];if(re==="soft-hyphen"){g&&(N=V+1,$=0,B=V+1,v=b+a,S=b+a,F=re),V++;continue}if(!g){O>t&&u[V]!==null?P(V,0):R(V,O),ie(re,_e,V,O),V++;continue}if(b+O>x){let G=b+(re==="tab"?0:r[V]),Q=b+(re==="tab"?O:o[V]);if(F==="soft-hyphen"&&p.preferEarlySoftHyphenBreak&&v<=x){T(B,0,S);continue}if(F==="soft-hyphen"&&se(V)){V++;continue}if(_e&&G<=x){q(V,O),T(V+1,0,Q),V++;continue}if(B>=0&&v<=x){if(N>B||N===B&&$>0){T();continue}let ae=B;T(ae,0,S),V=ae;continue}if(O>t&&u[V]!==null){T(),P(V,0),V++;continue}T();continue}q(V,O),ie(re,_e,V,O),V++}if(g){let re=B===U.consumedEndSegmentIndex?S:b;T(U.consumedEndSegmentIndex,0,re)}}return E}var cr=null;function Vf(){return cr===null&&(cr=new Intl.Segmenter(void 0,{granularity:"grapheme"})),cr}function zf(e){return e?{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[],segments:[]}:{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[]}}function qf(e,t){let n=[],i=[],r=0,o=!1,s=!1,u=!1;function a(){i.length!==0&&(n.push({text:i.length===1?i[0]:i.join(""),start:r}),i=[],o=!1,s=!1,u=!1)}function l(p,f,x){i=[p],r=f,o=x,s=Bn(p),u=rn.has(p)}function c(p,f){i.push(p),o=o||f;let x=Bn(p);p.length===1&&Ze.has(p)?s=s||x:s=x,u=!1}for(let p of Vf().segment(e)){let f=p.segment,x=Ie(f);if(i.length===0){l(f,p.index,x);continue}if(u||Pn.has(f)||Ze.has(f)||t.carryCJKAfterClosingQuote&&x&&s){c(f,x);continue}if(!o&&!x){c(f,x);continue}a(),l(f,p.index,x)}return a(),n}function jf(e){if(e.length<=1)return e;let t=[],n=[e[0].text],i=e[0].start,r=Ie(e[0].text),o=In(e[0].text);function s(){t.push({text:n.length===1?n[0]:n.join(""),start:i})}for(let u=1;u<e.length;u++){let a=e[u],l=Ie(a.text),c=In(a.text);if(r&&o){n.push(a.text),r=r||l,o=c;continue}s(),n=[a.text],i=a.start,r=l,o=c}return s(),t}function $f(e,t,n,i){let r=Et(),{cache:o,emojiCorrection:s}=Ra(t,Na(e.normalized)),u=et("-",je("-",o),s),l=et(" ",je(" ",o),s)*8;if(e.len===0)return zf(n);let c=[],p=[],f=[],x=[],E=e.chunks.length<=1,b=n?[]:null,g=[],A=n?[]:null,C=Array.from({length:e.len});function N(S,F,_,T,R,W,q){R!=="text"&&R!=="space"&&R!=="zero-width-break"&&(E=!1),c.push(F),p.push(_),f.push(T),x.push(R),b?.push(W),g.push(q),A!==null&&A.push(S)}function $(S,F,_,T,R){let W=je(S,o),q=et(S,W,s),ie=F==="space"||F==="preserved-space"||F==="zero-width-break"?0:q,P=F==="space"||F==="zero-width-break"?0:q;if(R&&T&&S.length>1){let se="sum-graphemes";nn(S)?se="pair-context":r.preferPrefixWidthsForBreakableRuns&&(se="segment-prefixes");let Ee=La(S,W,o,s,se);N(S,q,ie,P,F,_,Ee);return}N(S,q,ie,P,F,_,null)}for(let S=0;S<e.len;S++){C[S]=c.length;let F=e.texts[S],_=e.isWordLike[S],T=e.kinds[S],R=e.starts[S];if(T==="soft-hyphen"){N(F,0,u,u,T,R,null);continue}if(T==="hard-break"){N(F,0,0,0,T,R,null);continue}if(T==="tab"){N(F,0,0,0,T,R,null);continue}let W=je(F,o);if(T==="text"&&W.containsCJK){let q=qf(F,r),ie=i==="keep-all"?jf(q):q;for(let P=0;P<ie.length;P++){let se=ie[P];$(se.text,"text",R+se.start,_,i==="keep-all"||!Ie(se.text))}continue}$(F,T,R,_,!0)}let B=Kf(e.chunks,C,c.length),v=b===null?null:ha(e.normalized,b);return A!==null?{widths:c,lineEndFitAdvances:p,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:E,segLevels:v,breakableFitAdvances:g,discretionaryHyphenWidth:u,tabStopAdvance:l,chunks:B,segments:A}:{widths:c,lineEndFitAdvances:p,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:E,segLevels:v,breakableFitAdvances:g,discretionaryHyphenWidth:u,tabStopAdvance:l,chunks:B}}function Kf(e,t,n){let i=[];for(let r=0;r<e.length;r++){let o=e[r],s=o.startSegmentIndex<t.length?t[o.startSegmentIndex]:n,u=o.endSegmentIndex<t.length?t[o.endSegmentIndex]:n,a=o.consumedEndSegmentIndex<t.length?t[o.consumedEndSegmentIndex]:n;i.push({startSegmentIndex:s,endSegmentIndex:u,consumedEndSegmentIndex:a})}return i}function Jf(e,t,n,i){let r=i?.wordBreak??"normal",o=_a(e,Et(),i?.whiteSpace,r);return $f(o,t,n,r)}function Pa(e,t,n){return Jf(e,t,!1,n)}function Oa(e,t,n){let i=ka(e,t);return{lineCount:i,height:i*n}}var Xf={maxWidth:1600,baseFontSize:78,minFontSize:42,fontWeight:900,fontFamily:"Outfit",step:2};function Ba(e,t){let n={...Xf,...t},i=1.2;for(let r=n.baseFontSize;r>=n.minFontSize;r-=n.step){let o=`${n.fontWeight} ${r}px ${n.fontFamily}`,s=Pa(e,o),{lineCount:u}=Oa(s,n.maxWidth,r*i);if(u<=1)return{fontSize:r,fits:!0}}return{fontSize:n.minFontSize,fits:!1}}window.__timelines=window.__timelines||{};window.__hyperframes={fitTextFontSize:Ba,getVariables:vs};function Ha(){let e=window;e.__hyperframeRuntimeBootstrapped||(e.__hyperframeRuntimeBootstrapped=!0,ma())}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Ha,{once:!0}):Ha();})();\n';
|
|
56111
|
+
RUNTIME_IIFE = '"use strict";(()=>{var el=Object.create;var Yn=Object.defineProperty;var tl=Object.getOwnPropertyDescriptor;var nl=Object.getOwnPropertyNames;var il=Object.getPrototypeOf,rl=Object.prototype.hasOwnProperty;var ol=(e,t,n)=>t in e?Yn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var te=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var sl=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of nl(t))!rl.call(e,r)&&r!==n&&Yn(e,r,{get:()=>t[r],enumerable:!(i=tl(t,r))||i.enumerable});return e};var al=(e,t,n)=>(n=e!=null?el(il(e)):{},sl(t||!e||!e.__esModule?Yn(n,"default",{value:e,enumerable:!0}):n,e));var xe=(e,t,n)=>ol(e,typeof t!="symbol"?t+"":t,n);var to=te((lp,ci)=>{var X=String,eo=function(){return{isColorSupported:!1,reset:X,bold:X,dim:X,italic:X,underline:X,inverse:X,hidden:X,strikethrough:X,black:X,red:X,green:X,yellow:X,blue:X,magenta:X,cyan:X,white:X,gray:X,bgBlack:X,bgRed:X,bgGreen:X,bgYellow:X,bgBlue:X,bgMagenta:X,bgCyan:X,bgWhite:X,blackBright:X,redBright:X,greenBright:X,yellowBright:X,blueBright:X,magentaBright:X,cyanBright:X,whiteBright:X,bgBlackBright:X,bgRedBright:X,bgGreenBright:X,bgYellowBright:X,bgBlueBright:X,bgMagentaBright:X,bgCyanBright:X,bgWhiteBright:X}};ci.exports=eo();ci.exports.createColors=eo});var di=te(()=>{});var fn=te((dp,ro)=>{"use strict";var no=to(),io=di(),Dt=class e extends Error{constructor(t,n,i,r,o,s){super(t),this.name="CssSyntaxError",this.reason=t,o&&(this.file=o),r&&(this.source=r),s&&(this.plugin=s),typeof n<"u"&&typeof i<"u"&&(typeof n=="number"?(this.line=n,this.column=i):(this.line=n.line,this.column=n.column,this.endLine=i.line,this.endColumn=i.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(t){if(!this.source)return"";let n=this.source;t==null&&(t=no.isColorSupported);let i=c=>c,r=c=>c,o=c=>c;if(t){let{bold:c,gray:p,red:f}=no.createColors(!0);r=x=>c(f(x)),i=x=>p(x),io&&(o=x=>io(x))}let s=n.split(/\\r?\\n/),u=Math.max(this.line-3,0),a=Math.min(this.line+2,s.length),l=String(a).length;return s.slice(u,a).map((c,p)=>{let f=u+1+p,x=" "+(" "+f).slice(-l)+" | ";if(f===this.line){if(c.length>160){let b=20,g=Math.max(0,this.column-b),A=Math.max(this.column+b,this.endColumn+b),_=c.slice(g,A),N=i(x.replace(/\\d/g," "))+c.slice(0,Math.min(this.column-1,b-1)).replace(/[^\\t]/g," ");return r(">")+i(x)+o(_)+`\n `+N+r("^")}let E=i(x.replace(/\\d/g," "))+c.slice(0,this.column-1).replace(/[^\\t]/g," ");return r(">")+i(x)+o(c)+`\n `+E+r("^")}return" "+i(x)+o(c)}).join(`\n`)}toString(){let t=this.showSourceCode();return t&&(t=`\n\n`+t+`\n`),this.name+": "+this.message+t}};ro.exports=Dt;Dt.default=Dt});var fi=te((fp,so)=>{"use strict";var Wl=/(<)(\\/?style\\b)/gi,Ul=/(<)(!--)/g;function Ke(e){return typeof e!="string"||!e.includes("<")?e:e.replace(Wl,"\\\\3c $2").replace(Ul,"\\\\3c $2")}var oo={after:`\n`,beforeClose:`\n`,beforeComment:`\n`,beforeDecl:`\n`,beforeOpen:" ",beforeRule:`\n`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function Vl(e){return e[0].toUpperCase()+e.slice(1)}var It=class{constructor(t){this.builder=t}atrule(t,n){let i=t.raws,r="@"+t.name,o=t.params?this.rawValue(t,"params"):"";if(typeof i.afterName<"u"?r+=i.afterName:o&&(r+=" "),t.nodes)this.block(t,r+o);else{let s=(i.between||"")+(n?";":"");this.builder(Ke(r+o+s),t)}}beforeAfter(t,n){let i;t.type==="decl"?i=this.raw(t,null,"beforeDecl"):t.type==="comment"?i=this.raw(t,null,"beforeComment"):n==="before"?i=this.raw(t,null,"beforeRule"):i=this.raw(t,null,"beforeClose");let r=t.parent,o=0;for(;r&&r.type!=="root";)o+=1,r=r.parent;if(i.includes(`\n`)){let s=this.raw(t,null,"indent");if(s.length)for(let u=0;u<o;u++)i+=s}return i}block(t,n){let i=this.raw(t,"between","beforeOpen");this.builder(Ke(n+i)+"{",t,"start");let r;t.nodes&&t.nodes.length?(this.body(t),r=this.raw(t,"after")):r=this.raw(t,"after","emptyBody"),r&&this.builder(Ke(r)),this.builder("}",t,"end")}body(t){let n=t.nodes,i=n.length-1;for(;i>0&&n[i].type==="comment";)i-=1;let r=this.raw(t,"semicolon"),o=t.type==="document";for(let s=0;s<n.length;s++){let u=n[s],a=this.raw(u,"before");a&&this.builder(o?a:Ke(a)),this.stringify(u,i!==s||r)}}comment(t){let n=this.raw(t,"left","commentLeft"),i=this.raw(t,"right","commentRight");this.builder(Ke("/*"+n+t.text+i+"*/"),t)}decl(t,n){let i=t.raws,r=this.raw(t,"between","colon"),o=t.prop+r+this.rawValue(t,"value");t.important&&(o+=i.important||" !important"),n&&(o+=";"),this.builder(Ke(o),t)}document(t){this.body(t)}raw(t,n,i){let r;if(i||(i=n),n&&(r=t.raws[n],typeof r<"u"))return r;let o=t.parent;if(i==="before"&&(!o||o.type==="root"&&o.first===t||o&&o.type==="document"))return"";if(!o)return oo[i];let s=t.root(),u=s.rawCache||(s.rawCache={});if(typeof u[i]<"u")return u[i];if(i==="before"||i==="after")return this.beforeAfter(t,i);{let a="raw"+Vl(i);this[a]?r=this[a](s,t):s.walk(l=>{if(r=l.raws[n],typeof r<"u")return!1})}return typeof r>"u"&&(r=oo[i]),u[i]=r,r}rawBeforeClose(t){let n;return t.walk(i=>{if(i.nodes&&i.nodes.length>0&&typeof i.raws.after<"u")return n=i.raws.after,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawBeforeComment(t,n){let i;return t.walkComments(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeDecl"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeDecl(t,n){let i;return t.walkDecls(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeRule"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeOpen(t){let n;return t.walk(i=>{if(i.type!=="decl"&&(n=i.raws.between,typeof n<"u"))return!1}),n}rawBeforeRule(t){let n;return t.walk(i=>{if(i.nodes&&(i.parent!==t||t.first!==i)&&typeof i.raws.before<"u")return n=i.raws.before,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawColon(t){let n;return t.walkDecls(i=>{if(typeof i.raws.between<"u")return n=i.raws.between.replace(/[^\\s:]/g,""),!1}),n}rawEmptyBody(t){let n;return t.walk(i=>{if(i.nodes&&i.nodes.length===0&&(n=i.raws.after,typeof n<"u"))return!1}),n}rawIndent(t){if(t.raws.indent)return t.raws.indent;let n;return t.walk(i=>{let r=i.parent;if(r&&r!==t&&r.parent&&r.parent===t&&typeof i.raws.before<"u"){let o=i.raws.before.split(`\n`);return n=o[o.length-1],n=n.replace(/\\S/g,""),!1}}),n}rawSemicolon(t){let n;return t.walk(i=>{if(i.nodes&&i.nodes.length&&i.last.type==="decl"&&(n=i.raws.semicolon,typeof n<"u"))return!1}),n}rawValue(t,n){let i=t[n],r=t.raws[n];return r&&r.value===i?r.raw:i}root(t){if(this.body(t),t.raws.after){let n=t.raws.after,i=t.parent&&t.parent.type==="document";this.builder(i?n:Ke(n))}}rule(t){this.block(t,this.rawValue(t,"selector")),t.raws.ownSemicolon&&this.builder(Ke(t.raws.ownSemicolon),t,"end")}stringify(t,n){if(!this[t.type])throw new Error("Unknown AST node type "+t.type+". Maybe you need to change PostCSS stringifier.");this[t.type](t,n)}};so.exports=It;It.default=It});var Pt=te((mp,ao)=>{"use strict";var zl=fi();function mi(e,t){new zl(t).stringify(e)}ao.exports=mi;mi.default=mi});var mn=te((pp,pi)=>{"use strict";pi.exports.isClean=Symbol("isClean");pi.exports.my=Symbol("my")});var Ht=te((hp,lo)=>{"use strict";var ql=fn(),jl=fi(),$l=Pt(),{isClean:Ot,my:Kl}=mn();function hi(e,t){let n=new e.constructor;for(let i in e){if(!Object.prototype.hasOwnProperty.call(e,i)||i==="proxyCache")continue;let r=e[i],o=typeof r;i==="parent"&&o==="object"?t&&(n[i]=t):i==="source"?n[i]=r:Array.isArray(r)?n[i]=r.map(s=>hi(s,n)):(o==="object"&&r!==null&&(r=hi(r)),n[i]=r)}return n}function ze(e,t){if(t&&typeof t.offset<"u")return t.offset;let n=1,i=1,r=0;for(let o=0;o<e.length;o++){if(i===t.line&&n===t.column){r=o;break}e[o]===`\n`?(n=1,i+=1):n+=1}return r}var Bt=class{get proxyOf(){return this}constructor(t={}){this.raws={},this[Ot]=!1,this[Kl]=!0;for(let n in t)if(n==="nodes"){this.nodes=[];for(let i of t[n])typeof i.clone=="function"?this.append(i.clone()):this.append(i)}else this[n]=t[n]}addToError(t){if(t.postcssNode=this,t.stack&&this.source&&/\\n\\s{4}at /.test(t.stack)){let n=this.source;t.stack=t.stack.replace(/\\n\\s{4}at /,`$&${n.input.from}:${n.start.line}:${n.start.column}$&`)}return t}after(t){return this.parent.insertAfter(this,t),this}assign(t={}){for(let n in t)this[n]=t[n];return this}before(t){return this.parent.insertBefore(this,t),this}cleanRaws(t){delete this.raws.before,delete this.raws.after,t||delete this.raws.between}clone(t={}){let n=hi(this);for(let i in t)n[i]=t[i];return n}cloneAfter(t={}){let n=this.clone(t);return this.parent.insertAfter(this,n),n}cloneBefore(t={}){let n=this.clone(t);return this.parent.insertBefore(this,n),n}error(t,n={}){if(this.source){let{end:i,start:r}=this.rangeBy(n);return this.source.input.error(t,{column:r.column,line:r.line},{column:i.column,line:i.line},n)}return new ql(t)}getProxyProcessor(){return{get(t,n){return n==="proxyOf"?t:n==="root"?()=>t.root().toProxy():t[n]},set(t,n,i){return t[n]===i||(t[n]=i,(n==="prop"||n==="value"||n==="name"||n==="params"||n==="important"||n==="text")&&t.markDirty()),!0}}}markClean(){this[Ot]=!0}markDirty(){if(this[Ot]){this[Ot]=!1;let t=this;for(;t=t.parent;)t[Ot]=!1}}next(){if(!this.parent)return;let t=this.parent.index(this);return this.parent.nodes[t+1]}positionBy(t={}){let n=this.source.start;if(t.index)n=this.positionInside(t.index);else if(t.word){let i="document"in this.source.input?this.source.input.document:this.source.input.css,o=i.slice(ze(i,this.source.start),ze(i,this.source.end)).indexOf(t.word);o!==-1&&(n=this.positionInside(o))}return n}positionInside(t){let n=this.source.start.column,i=this.source.start.line,r="document"in this.source.input?this.source.input.document:this.source.input.css,o=ze(r,this.source.start),s=o+t;for(let u=o;u<s;u++)r[u]===`\n`?(n=1,i+=1):n+=1;return{column:n,line:i,offset:s}}prev(){if(!this.parent)return;let t=this.parent.index(this);return this.parent.nodes[t-1]}rangeBy(t={}){let n="document"in this.source.input?this.source.input.document:this.source.input.css,i={column:this.source.start.column,line:this.source.start.line,offset:ze(n,this.source.start)},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line,offset:typeof this.source.end.offset=="number"?this.source.end.offset:ze(n,this.source.end)+1}:{column:i.column+1,line:i.line,offset:i.offset+1};if(t.word){let s=n.slice(ze(n,this.source.start),ze(n,this.source.end)).indexOf(t.word);s!==-1&&(i=this.positionInside(s),r=this.positionInside(s+t.word.length))}else t.start?i={column:t.start.column,line:t.start.line,offset:ze(n,t.start)}:t.index&&(i=this.positionInside(t.index)),t.end?r={column:t.end.column,line:t.end.line,offset:ze(n,t.end)}:typeof t.endIndex=="number"?r=this.positionInside(t.endIndex):t.index&&(r=this.positionInside(t.index+1));return(r.line<i.line||r.line===i.line&&r.column<=i.column)&&(r={column:i.column+1,line:i.line,offset:i.offset+1}),{end:r,start:i}}raw(t,n){return new jl().raw(this,t,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...t){if(this.parent){let n=this,i=!1;for(let r of t)r===this?i=!0:i?(this.parent.insertAfter(n,r),n=r):this.parent.insertBefore(n,r);i||this.remove()}return this}root(){let t=this;for(;t.parent&&t.parent.type!=="document";)t=t.parent;return t}toJSON(t,n){let i={},r=n==null;n=n||new Map;let o=0;for(let s in this){if(!Object.prototype.hasOwnProperty.call(this,s)||s==="parent"||s==="proxyCache")continue;let u=this[s];if(Array.isArray(u))i[s]=u.map(a=>typeof a=="object"&&a.toJSON?a.toJSON(null,n):a);else if(typeof u=="object"&&u.toJSON)i[s]=u.toJSON(null,n);else if(s==="source"){if(u==null)continue;let a=n.get(u.input);a==null&&(a=o,n.set(u.input,o),o++),i[s]={end:u.end,inputId:a,start:u.start}}else i[s]=u}return r&&(i.inputs=[...n.keys()].map(s=>s.toJSON())),i}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(t=$l){t.stringify&&(t=t.stringify);let n="";return t(this,i=>{n+=i}),n}warn(t,n,i={}){let r={node:this};for(let o in i)r[o]=i[o];return t.warn(n,r)}};lo.exports=Bt;Bt.default=Bt});var Wt=te((gp,uo)=>{"use strict";var Jl=Ht(),Gt=class extends Jl{constructor(t){super(t),this.type="comment"}};uo.exports=Gt;Gt.default=Gt});var Vt=te((xp,co)=>{"use strict";var Xl=Ht(),Ut=class extends Xl{get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}constructor(t){t&&typeof t.value<"u"&&typeof t.value!="string"&&(t={...t,value:String(t.value)}),super(t),this.type="decl"}};co.exports=Ut;Ut.default=Ut});var Je=te((bp,So)=>{"use strict";var fo=Wt(),mo=Vt(),Yl=Ht(),{isClean:po,my:ho}=mn(),gi,go,xo,xi;function bo(e){return e.map(t=>(t.nodes&&(t.nodes=bo(t.nodes)),delete t.source,t))}function yo(e){if(e[po]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)yo(t)}var De=class e extends Yl{get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}append(...t){for(let n of t){let i=this.normalize(n,this.last);for(let r of i)this.proxyOf.nodes.push(r)}return this.markDirty(),this}cleanRaws(t){if(super.cleanRaws(t),this.nodes)for(let n of this.nodes)n.cleanRaws(t)}each(t){if(!this.proxyOf.nodes)return;let n=this.getIterator(),i,r;for(;this.indexes[n]<this.proxyOf.nodes.length&&(i=this.indexes[n],r=t(this.proxyOf.nodes[i],i),r!==!1);)this.indexes[n]+=1;return delete this.indexes[n],r}every(t){return this.nodes.every(t)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let t=this.lastEach;return this.indexes[t]=0,t}getProxyProcessor(){return{get(t,n){return n==="proxyOf"?t:t[n]?n==="each"||typeof n=="string"&&n.startsWith("walk")?(...i)=>t[n](...i.map(r=>typeof r=="function"?(o,s)=>r(o.toProxy(),s):r)):n==="every"||n==="some"?i=>t[n]((r,...o)=>i(r.toProxy(),...o)):n==="root"?()=>t.root().toProxy():n==="nodes"?t.nodes.map(i=>i.toProxy()):n==="first"||n==="last"?t[n].toProxy():t[n]:t[n]},set(t,n,i){return t[n]===i||(t[n]=i,(n==="name"||n==="params"||n==="selector")&&t.markDirty()),!0}}}index(t){return typeof t=="number"?t:(t.proxyOf&&(t=t.proxyOf),this.proxyOf.nodes.indexOf(t))}insertAfter(t,n){let i=this.index(t),r=this.normalize(n,this.proxyOf.nodes[i]).reverse();i=this.index(t);for(let s of r)this.proxyOf.nodes.splice(i+1,0,s);let o;for(let s in this.indexes)o=this.indexes[s],i<o&&(this.indexes[s]=o+r.length);return this.markDirty(),this}insertBefore(t,n){let i=this.index(t),r=i===0?"prepend":!1,o=this.normalize(n,this.proxyOf.nodes[i],r).reverse();i=this.index(t);for(let u of o)this.proxyOf.nodes.splice(i,0,u);let s;for(let u in this.indexes)s=this.indexes[u],i<=s&&(this.indexes[u]=s+o.length);return this.markDirty(),this}normalize(t,n){if(typeof t=="string")t=bo(go(t).nodes);else if(typeof t>"u")t=[];else if(Array.isArray(t)){t=t.slice(0);for(let r of t)r.parent&&r.parent.removeChild(r,"ignore")}else if(t.type==="root"&&this.type!=="document"){t=t.nodes.slice(0);for(let r of t)r.parent&&r.parent.removeChild(r,"ignore")}else if(t.type)t=[t];else if(t.prop){if(typeof t.value>"u")throw new Error("Value field is missed in node creation");typeof t.value!="string"&&(t.value=String(t.value)),t=[new mo(t)]}else if(t.selector||t.selectors)t=[new xi(t)];else if(t.name)t=[new gi(t)];else if(t.text)t=[new fo(t)];else throw new Error("Unknown node type in node creation");return t.map(r=>(r[ho]||e.rebuild(r),r=r.proxyOf,r.parent&&r.parent.removeChild(r),r[po]&&yo(r),r.raws||(r.raws={}),typeof r.raws.before>"u"&&n&&typeof n.raws.before<"u"&&(r.raws.before=n.raws.before.replace(/\\S/g,"")),r.parent=this.proxyOf,r))}prepend(...t){t=t.reverse();for(let n of t){let i=this.normalize(n,this.first,"prepend").reverse();for(let r of i)this.proxyOf.nodes.unshift(r);for(let r in this.indexes)this.indexes[r]=this.indexes[r]+i.length}return this.markDirty(),this}push(t){return t.parent=this,this.proxyOf.nodes.push(t),this}removeAll(){for(let t of this.proxyOf.nodes)t.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(t){t=this.index(t),this.proxyOf.nodes[t].parent=void 0,this.proxyOf.nodes.splice(t,1);let n;for(let i in this.indexes)n=this.indexes[i],n>=t&&(this.indexes[i]=n-1);return this.markDirty(),this}replaceValues(t,n,i){return i||(i=n,n={}),this.walkDecls(r=>{n.props&&!n.props.includes(r.prop)||n.fast&&!r.value.includes(n.fast)||(r.value=r.value.replace(t,i))}),this.markDirty(),this}some(t){return this.nodes.some(t)}walk(t){return this.each((n,i)=>{let r;try{r=t(n,i)}catch(o){throw n.addToError(o)}return r!==!1&&n.walk&&(r=n.walk(t)),r})}walkAtRules(t,n){return n?t instanceof RegExp?this.walk((i,r)=>{if(i.type==="atrule"&&t.test(i.name))return n(i,r)}):this.walk((i,r)=>{if(i.type==="atrule"&&i.name===t)return n(i,r)}):(n=t,this.walk((i,r)=>{if(i.type==="atrule")return n(i,r)}))}walkComments(t){return this.walk((n,i)=>{if(n.type==="comment")return t(n,i)})}walkDecls(t,n){return n?t instanceof RegExp?this.walk((i,r)=>{if(i.type==="decl"&&t.test(i.prop))return n(i,r)}):this.walk((i,r)=>{if(i.type==="decl"&&i.prop===t)return n(i,r)}):(n=t,this.walk((i,r)=>{if(i.type==="decl")return n(i,r)}))}walkRules(t,n){return n?t instanceof RegExp?this.walk((i,r)=>{if(i.type==="rule"&&t.test(i.selector))return n(i,r)}):this.walk((i,r)=>{if(i.type==="rule"&&i.selector===t)return n(i,r)}):(n=t,this.walk((i,r)=>{if(i.type==="rule")return n(i,r)}))}};De.registerParse=e=>{go=e};De.registerRule=e=>{xi=e};De.registerAtRule=e=>{gi=e};De.registerRoot=e=>{xo=e};So.exports=De;De.default=De;De.rebuild=e=>{e.type==="atrule"?Object.setPrototypeOf(e,gi.prototype):e.type==="rule"?Object.setPrototypeOf(e,xi.prototype):e.type==="decl"?Object.setPrototypeOf(e,mo.prototype):e.type==="comment"?Object.setPrototypeOf(e,fo.prototype):e.type==="root"&&Object.setPrototypeOf(e,xo.prototype),e[ho]=!0,e.nodes&&e.nodes.forEach(t=>{De.rebuild(t)})}});var pn=te((yp,Ao)=>{"use strict";var Eo=Je(),pt=class extends Eo{constructor(t){super(t),this.type="atrule"}append(...t){return this.proxyOf.nodes||(this.nodes=[]),super.append(...t)}prepend(...t){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...t)}};Ao.exports=pt;pt.default=pt;Eo.registerAtRule(pt)});var hn=te((Sp,Co)=>{"use strict";var Ql=Je(),wo,Fo,at=class extends Ql{constructor(t){super({type:"document",...t}),this.nodes||(this.nodes=[])}toResult(t={}){return new wo(new Fo,this,t).stringify()}};at.registerLazyResult=e=>{wo=e};at.registerProcessor=e=>{Fo=e};Co.exports=at;at.default=at});var Mo=te((Ep,_o)=>{var Zl="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",eu=(e,t=21)=>(n=t)=>{let i="",r=n|0;for(;r--;)i+=e[Math.random()*e.length|0];return i},tu=(e=21)=>{let t="",n=e|0;for(;n--;)t+=Zl[Math.random()*64|0];return t};_o.exports={nanoid:tu,customAlphabet:eu}});var gn=te(()=>{});var xn=te(()=>{});var bi=te(()=>{});var vo=te(()=>{});var Si=te((Np,Lo)=>{"use strict";var{existsSync:nu,readFileSync:iu}=vo(),{dirname:yi,join:ru}=gn(),{SourceMapConsumer:To,SourceMapGenerator:No}=xn();function ou(e){return Buffer?Buffer.from(e,"base64").toString():window.atob(e)}var zt=class{constructor(t,n){if(n.map===!1)return;n.unsafeMap&&(this.unsafeMap=!0),this.loadAnnotation(t),this.inline=this.startWith(this.annotation,"data:");let i=n.map?n.map.prev:void 0,r=this.loadMap(n.from,i);!this.mapFile&&n.from&&(this.mapFile=n.from),this.mapFile&&(this.root=yi(this.mapFile)),r&&(this.text=r)}consumer(){return this.consumerCache||(this.consumerCache=new To(this.json||this.text)),this.consumerCache}decodeInline(t){let n=/^data:application\\/json;charset=utf-?8;base64,/,i=/^data:application\\/json;base64,/,r=/^data:application\\/json;charset=utf-?8,/,o=/^data:application\\/json,/,s=t.match(r)||t.match(o);if(s)return decodeURIComponent(t.substr(s[0].length));let u=t.match(n)||t.match(i);if(u)return ou(t.substr(u[0].length));let a=t.slice(22);throw a=a.slice(0,a.indexOf(",")),new Error("Unsupported source map encoding "+a)}getAnnotationURL(t){return t.replace(/^\\/\\*\\s*# sourceMappingURL=/,"").trim()}isMap(t){return typeof t!="object"?!1:typeof t.mappings=="string"||typeof t._mappings=="string"||Array.isArray(t.sections)}loadAnnotation(t){let n=t.match(/\\/\\*\\s*# sourceMappingURL=/g);if(!n)return;let i=t.lastIndexOf(n.pop()),r=t.indexOf("*/",i);i>-1&&r>-1&&(this.annotation=this.getAnnotationURL(t.substring(i,r)))}loadFile(t,n,i){if(!(!i&&!this.unsafeMap&&!/\\.map$/i.test(t))&&(this.root=yi(t),nu(t)))return this.mapFile=t,iu(t,"utf-8").toString().trim()}loadMap(t,n){if(n===!1)return!1;if(n){if(typeof n=="string")return n;if(typeof n=="function"){let i=n(t);if(i){let r=this.loadFile(i,t,!0);if(!r)throw new Error("Unable to load previous source map: "+i.toString());return r}}else{if(n instanceof To)return No.fromSourceMap(n).toString();if(n instanceof No)return n.toString();if(this.isMap(n))return JSON.stringify(n);throw new Error("Unsupported previous source map format: "+n.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let i=this.annotation;t&&(i=ru(yi(t),i));let r=this.loadFile(i,t,!1);if(r)try{this.json=JSON.parse(r.replace(/^\\)]}\'[^\\n]*\\n/,""))}catch{return}return r}}}startWith(t,n){return t?t.substr(0,n.length)===n:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};Lo.exports=zt;zt.default=zt});var qt=te((Lp,Po)=>{"use strict";var{nanoid:su}=Mo(),{isAbsolute:wi,resolve:Fi}=gn(),{SourceMapConsumer:au,SourceMapGenerator:lu}=xn(),{fileURLToPath:Ro,pathToFileURL:bn}=bi(),ko=fn(),uu=Si(),Ei=di(),Ai=Symbol("lineToIndexCache"),cu=!!(au&&lu),Do=!!(Fi&&wi);function Io(e){if(e[Ai])return e[Ai];let t=e.css.split(`\n`),n=new Array(t.length),i=0;for(let r=0,o=t.length;r<o;r++)n[r]=i,i+=t[r].length+1;return e[Ai]=n,n}var ht=class{get from(){return this.file||this.id}constructor(t,n={}){if(t===null||typeof t>"u"||typeof t=="object"&&!t.toString)throw new Error(`PostCSS received ${t} instead of CSS string`);if(this.css=t.toString(),this.css[0]==="\\uFEFF"||this.css[0]==="\\uFFFE"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,this.document=this.css,n.document&&(this.document=n.document.toString()),n.from&&(!Do||/^\\w+:\\/\\//.test(n.from)||wi(n.from)?this.file=n.from:this.file=Fi(n.from)),Do&&cu){let i=new uu(this.css,n);if(i.text){this.map=i;let r=i.consumer().file;!this.file&&r&&(this.file=this.mapResolve(r))}}this.file||(this.id="<input css "+su(6)+">"),this.map&&(this.map.file=this.from)}error(t,n,i,r={}){let o,s,u,a,l;if(n&&typeof n=="object"){let p=n,f=i;if(typeof p.offset=="number"){a=p.offset;let x=this.fromOffset(a);n=x.line,i=x.col}else n=p.line,i=p.column,a=this.fromLineAndColumn(n,i);if(typeof f.offset=="number"){u=f.offset;let x=this.fromOffset(u);s=x.line,o=x.col}else s=f.line,o=f.column,u=this.fromLineAndColumn(f.line,f.column)}else if(i)a=this.fromLineAndColumn(n,i);else{a=n;let p=this.fromOffset(a);n=p.line,i=p.col}let c=this.origin(n,i,s,o);return c?l=new ko(t,c.endLine===void 0?c.line:{column:c.column,line:c.line},c.endLine===void 0?c.column:{column:c.endColumn,line:c.endLine},c.source,c.file,r.plugin):l=new ko(t,s===void 0?n:{column:i,line:n},s===void 0?i:{column:o,line:s},this.css,this.file,r.plugin),l.input={column:i,endColumn:o,endLine:s,endOffset:u,line:n,offset:a,source:this.css},this.file&&(bn&&(l.input.url=bn(this.file).toString()),l.input.file=this.file),l}fromLineAndColumn(t,n){return Io(this)[t-1]+n-1}fromOffset(t){let n=Io(this),i=n[n.length-1],r=0;if(t>=i)r=n.length-1;else{let o=n.length-2,s;for(;r<o;)if(s=r+(o-r>>1),t<n[s])o=s-1;else if(t>=n[s+1])r=s+1;else{r=s;break}}return{col:t-n[r]+1,line:r+1}}mapResolve(t){return/^\\w+:\\/\\//.test(t)?t:Fi(this.map.consumer().sourceRoot||this.map.root||".",t)}origin(t,n,i,r){if(!this.map)return!1;let o=this.map.consumer(),s=o.originalPositionFor({column:n,line:t});if(!s.source)return!1;let u;typeof i=="number"&&(u=o.originalPositionFor({column:r,line:i}));let a;wi(s.source)?a=bn(s.source):a=new URL(s.source,this.map.consumer().sourceRoot||bn(this.map.mapFile));let l={column:s.column,endColumn:u&&u.column,endLine:u&&u.line,line:s.line,url:a.toString()};if(a.protocol==="file:")if(Ro)l.file=Ro(a);else throw new Error("file: protocol is not available in this PostCSS build");let c=o.sourceContentFor(s.source);return c&&(l.source=c),l}toJSON(){let t={};for(let n of["hasBOM","css","file","id"])this[n]!=null&&(t[n]=this[n]);return this.map&&(t.map={...this.map},t.map.consumerCache&&(t.map.consumerCache=void 0)),t}};Po.exports=ht;ht.default=ht;Ei&&Ei.registerInput&&Ei.registerInput(ht)});var gt=te((Rp,Go)=>{"use strict";var Oo=Je(),Bo,Ho,Xe=class extends Oo{constructor(t){super(t),this.type="root",this.nodes||(this.nodes=[])}normalize(t,n,i){let r=super.normalize(t);if(n){if(i==="prepend")this.nodes.length>1?n.raws.before=this.nodes[1].raws.before:delete n.raws.before;else if(this.first!==n)for(let o of r)o.raws.before=n.raws.before}return r}removeChild(t,n){let i=this.index(t);return!n&&i===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[i].raws.before),super.removeChild(t)}toResult(t={}){return new Bo(new Ho,this,t).stringify()}};Xe.registerLazyResult=e=>{Bo=e};Xe.registerProcessor=e=>{Ho=e};Go.exports=Xe;Xe.default=Xe;Oo.registerRoot(Xe)});var Ci=te((kp,Wo)=>{"use strict";var jt={comma(e){return jt.split(e,[","],!0)},space(e){let t=[" ",`\n`," "];return jt.split(e,t)},split(e,t,n){let i=[],r="",o=!1,s=0,u=!1,a="",l=!1;for(let c of e)l?l=!1:c==="\\\\"?l=!0:u?c===a&&(u=!1):c===\'"\'||c==="\'"?(u=!0,a=c):c==="("?s+=1:c===")"?s>0&&(s-=1):s===0&&t.includes(c)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=c;return(n||r!=="")&&i.push(r.trim()),i}};Wo.exports=jt;jt.default=jt});var yn=te((Dp,Vo)=>{"use strict";var Uo=Je(),du=Ci(),xt=class extends Uo{get selectors(){return du.comma(this.selector)}set selectors(t){let n=this.selector?this.selector.match(/,\\s*/):null,i=n?n[0]:","+this.raw("between","beforeOpen");this.selector=t.join(i)}constructor(t){super(t),this.type="rule",this.nodes||(this.nodes=[])}};Vo.exports=xt;xt.default=xt;Uo.registerRule(xt)});var qo=te((Ip,zo)=>{"use strict";var fu=pn(),mu=Wt(),pu=Vt(),hu=qt(),gu=Si(),xu=gt(),bu=yn();function $t(e,t){if(Array.isArray(e))return e.map(r=>$t(r));let{inputs:n,...i}=e;if(n){t=[];for(let r of n){let o={...r,__proto__:hu.prototype};o.map&&(o.map={...o.map,__proto__:gu.prototype}),t.push(o)}}if(i.nodes&&(i.nodes=e.nodes.map(r=>$t(r,t))),i.source){let{inputId:r,...o}=i.source;i.source=o,r!=null&&(i.source.input=t[r])}if(i.type==="root")return new xu(i);if(i.type==="decl")return new pu(i);if(i.type==="rule")return new bu(i);if(i.type==="comment")return new mu(i);if(i.type==="atrule")return new fu(i);throw new Error("Unknown node type: "+e.type)}zo.exports=$t;$t.default=$t});var Mi=te((Pp,Yo)=>{"use strict";var{dirname:Sn,relative:$o,resolve:Ko,sep:Jo}=gn(),{SourceMapConsumer:Xo,SourceMapGenerator:En}=xn(),{pathToFileURL:jo}=bi(),yu=qt(),Su=!!(Xo&&En),Eu=!!(Sn&&Ko&&$o&&Jo),_i=class{constructor(t,n,i,r){this.stringify=t,this.mapOpts=i.map||{},this.root=n,this.opts=i,this.css=r,this.originalCSS=r,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let t;this.isInline()?t="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?t=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?t=this.mapOpts.annotation(this.opts.to,this.root):t=this.outputFile()+".map";let n=`\n`;this.css.includes(`\\r\n`)&&(n=`\\r\n`),this.css+=n+"/*# sourceMappingURL="+t+" */"}applyPrevMaps(){for(let t of this.previous()){let n=this.toUrl(this.path(t.file)),i=t.root||Sn(t.file),r;this.mapOpts.sourcesContent===!1?(r=new Xo(t.text),r.sourcesContent&&(r.sourcesContent=null)):r=t.consumer(),this.map.applySourceMap(r,n,this.toUrl(this.path(i)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1){if(this.root){let t;for(let n=this.root.nodes.length-1;n>=0;n--)t=this.root.nodes[n],t.type==="comment"&&t.text.startsWith("# sourceMappingURL=")&&this.root.removeChild(n)}else if(this.css){let t;for(;(t=this.css.lastIndexOf("/*#"))!==-1;){let n=this.css.indexOf("*/",t+3);if(n===-1)break;for(;t>0&&this.css[t-1]===`\n`;)t--;this.css=this.css.slice(0,t)+this.css.slice(n+2)}}}}generate(){if(this.clearAnnotation(),Eu&&Su&&this.isMap())return this.generateMap();{let t="";return this.stringify(this.root,n=>{t+=n}),[t]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let t=this.previous()[0].consumer();t.file=this.outputFile(),this.map=En.fromSourceMap(t,{ignoreInvalidMapping:!0})}else this.map=new En({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new En({file:this.outputFile(),ignoreInvalidMapping:!0});let t=1,n=1,i="<no source>",r={generated:{column:0,line:0},original:{column:0,line:0},source:""},o,s;this.stringify(this.root,(u,a,l)=>{if(this.css+=u,a&&l!=="end"&&(r.generated.line=t,r.generated.column=n-1,a.source&&a.source.start?(r.source=this.sourcePath(a),r.original.line=a.source.start.line,r.original.column=a.source.start.column-1,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,this.map.addMapping(r))),s=u.match(/\\n/g),s?(t+=s.length,o=u.lastIndexOf(`\n`),n=u.length-o):n+=u.length,a&&l!=="start"){let c=a.parent||{raws:{}};(!(a.type==="decl"||a.type==="atrule"&&!a.nodes)||a!==c.last||c.raws.semicolon)&&(a.source&&a.source.end?(r.source=this.sourcePath(a),r.original.line=a.source.end.line,r.original.column=a.source.end.column-1,r.generated.line=t,r.generated.column=n-2,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,r.generated.line=t,r.generated.column=n-1,this.map.addMapping(r)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(t=>t.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let t=this.mapOpts.annotation;return typeof t<"u"&&t!==!0?!1:this.previous().length?this.previous().some(n=>n.inline):!0}isMap(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(t=>t.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(t){if(this.mapOpts.absolute||t.charCodeAt(0)===60||/^\\w+:\\/\\//.test(t))return t;let n=this.memoizedPaths.get(t);if(n)return n;let i=this.opts.to?Sn(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(i=Sn(Ko(i,this.mapOpts.annotation)));let r=$o(i,t);return this.memoizedPaths.set(t,r),r}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(t=>{if(t.source&&t.source.input.map){let n=t.source.input.map;this.previousMaps.includes(n)||this.previousMaps.push(n)}});else{let t=new yu(this.originalCSS,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps}setSourcesContent(){let t={};if(this.root)this.root.walk(n=>{if(n.source){let i=n.source.input.from;if(i&&!t[i]){t[i]=!0;let r=this.usesFileUrls?this.toFileUrl(i):this.toUrl(this.path(i));this.map.setSourceContent(r,n.source.input.css)}}});else if(this.css){let n=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(n,this.css)}}sourcePath(t){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(t.source.input.from):this.toUrl(this.path(t.source.input.from))}toBase64(t){return Buffer?Buffer.from(t).toString("base64"):window.btoa(unescape(encodeURIComponent(t)))}toFileUrl(t){let n=this.memoizedFileURLs.get(t);if(n)return n;if(jo){let i=jo(t).toString();return this.memoizedFileURLs.set(t,i),i}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(t){let n=this.memoizedURLs.get(t);if(n)return n;Jo==="\\\\"&&(t=t.replace(/\\\\/g,"/"));let i=encodeURI(t).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(t,i),i}};Yo.exports=_i});var es=te((Op,Zo)=>{"use strict";var An=/[\\t\\n\\f\\r "#\'()/;[\\\\\\]{}]/g,wn=/[\\t\\n\\f\\r !"#\'():;@[\\\\\\]{}]|\\/(?=\\*)/g,Au=/.[\\r\\n"\'(/\\\\]/,Qo=/[\\da-f]/i;Zo.exports=function(t,n={}){let i=t.css.valueOf(),r=n.ignoreErrors,o,s,u,a,l,c,p,f,x,E,b=i.length,g=0,A=[],_=[],N=-1;function $(){return g}function B(M){throw t.error("Unclosed "+M,g)}function v(){return _.length===0&&g>=b}function S(M){if(_.length)return _.pop();if(g>=b)return;let T=M?M.ignoreUnclosed:!1;switch(o=i.charCodeAt(g),o){case 10:case 32:case 9:case 13:case 12:{a=g;do a+=1,o=i.charCodeAt(a);while(o===32||o===10||o===9||o===13||o===12);c=["space",i.slice(g,a)],g=a-1;break}case 91:case 93:case 123:case 125:case 58:case 59:case 41:{let R=String.fromCharCode(o);c=[R,R,g];break}case 40:{if(E=A.length?A.pop()[1]:"",x=i.charCodeAt(g+1),E==="url"&&x!==39&&x!==34&&x!==32&&x!==10&&x!==9&&x!==12&&x!==13){a=g;do{if(p=!1,a=i.indexOf(")",a+1),a===-1)if(r||T){a=g;break}else B("bracket");for(f=a;i.charCodeAt(f-1)===92;)f-=1,p=!p}while(p);c=["brackets",i.slice(g,a+1),g,a],g=a}else g<=N?c=["(","(",g]:(a=i.indexOf(")",g+1),s=i.slice(g,a+1),a===-1||Au.test(s)?(N=a===-1?b:a,c=["(","(",g]):(c=["brackets",s,g,a],g=a));break}case 39:case 34:{l=o===39?"\'":\'"\',a=g;do{if(p=!1,a=i.indexOf(l,a+1),a===-1)if(r||T){a=g+1;break}else B("string");for(f=a;i.charCodeAt(f-1)===92;)f-=1,p=!p}while(p);c=["string",i.slice(g,a+1),g,a],g=a;break}case 64:{An.lastIndex=g+1,An.test(i),An.lastIndex===0?a=i.length-1:a=An.lastIndex-2,c=["at-word",i.slice(g,a+1),g,a],g=a;break}case 92:{for(a=g,u=!0;i.charCodeAt(a+1)===92;)a+=1,u=!u;if(o=i.charCodeAt(a+1),u&&o!==47&&o!==32&&o!==10&&o!==9&&o!==13&&o!==12&&(a+=1,Qo.test(i.charAt(a)))){for(;Qo.test(i.charAt(a+1));)a+=1;i.charCodeAt(a+1)===32&&(a+=1)}c=["word",i.slice(g,a+1),g,a],g=a;break}default:{o===47&&i.charCodeAt(g+1)===42?(a=i.indexOf("*/",g+2)+1,a===0&&(r||T?a=i.length:B("comment")),c=["comment",i.slice(g,a+1),g,a],g=a):(wn.lastIndex=g+1,wn.test(i),wn.lastIndex===0?a=i.length-1:a=wn.lastIndex-2,c=["word",i.slice(g,a+1),g,a],A.push(c),g=a);break}}return g++,c}function C(M){_.push(M)}return{back:C,endOfFile:v,nextToken:S,position:$}}});var rs=te((Bp,is)=>{"use strict";var wu=pn(),Fu=Wt(),Cu=Vt(),_u=gt(),ts=yn(),Mu=es(),ns={empty:!0,space:!0};function vu(e){for(let t=e.length-1;t>=0;t--){let n=e[t],i=n[3]||n[2];if(i)return i}}var vi=class{constructor(t){this.input=t,this.root=new _u,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:t,start:{column:1,line:1,offset:0}}}atrule(t){let n=new wu;n.name=t[1].slice(1),n.name===""&&this.unnamedAtrule(n,t),this.init(n,t[2]);let i,r,o,s=!1,u=!1,a=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=this.tokenizer.nextToken(),i=t[0],i==="("||i==="["?l.push(i==="("?")":"]"):i==="{"&&l.length>0?l.push("}"):i===l[l.length-1]&&l.pop(),l.length===0)if(i===";"){n.source.end=this.getPosition(t[2]),n.source.end.offset++,this.semicolon=!0;break}else if(i==="{"){u=!0;break}else if(i==="}"){if(a.length>0){for(o=a.length-1,r=a[o];r&&r[0]==="space";)r=a[--o];r&&(n.source.end=this.getPosition(r[3]||r[2]),n.source.end.offset++)}this.end(t);break}else a.push(t);else a.push(t);if(this.tokenizer.endOfFile()){s=!0;break}}n.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(n.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(n,"params",a),s&&(t=a[a.length-1],n.source.end=this.getPosition(t[3]||t[2]),n.source.end.offset++,this.spaces=n.raws.between,n.raws.between="")):(n.raws.afterName="",n.params=""),u&&(n.nodes=[],this.current=n)}checkMissedSemicolon(t){let n=this.colon(t);if(n===!1)return;let i=0,r;for(let o=n-1;o>=0&&(r=t[o],!(r[0]!=="space"&&(i+=1,i===2)));o--);throw this.input.error("Missed semicolon",r[0]==="word"?r[3]+1:r[2])}colon(t){let n=0,i,r,o;for(let[s,u]of t.entries()){if(r=u,o=r[0],o==="("&&(n+=1),o===")"&&(n-=1),n===0&&o===":")if(!i)this.doubleColon(r);else{if(i[0]==="word"&&i[1]==="progid")continue;return s}i=r}return!1}comment(t){let n=new Fu;this.init(n,t[2]),n.source.end=this.getPosition(t[3]||t[2]),n.source.end.offset++;let i=t[1].slice(2,-2);if(!i.trim())n.text="",n.raws.left=i,n.raws.right="";else{let r=i.match(/^(\\s*)([^]*\\S)(\\s*)$/);n.text=r[2],n.raws.left=r[1],n.raws.right=r[3]}}createTokenizer(){this.tokenizer=Mu(this.input)}decl(t,n){let i=new Cu;this.init(i,t[0][2]);let r=t[t.length-1];for(r[0]===";"&&(this.semicolon=!0,t.pop()),i.source.end=this.getPosition(r[3]||r[2]||vu(t)),i.source.end.offset++;t[0][0]!=="word";)t.length===1&&this.unknownWord(t),i.raws.before+=t.shift()[1];for(i.source.start=this.getPosition(t[0][2]),i.prop="";t.length;){let l=t[0][0];if(l===":"||l==="space"||l==="comment")break;i.prop+=t.shift()[1]}i.raws.between="";let o;for(;t.length;)if(o=t.shift(),o[0]===":"){i.raws.between+=o[1];break}else o[0]==="word"&&/\\w/.test(o[1])&&this.unknownWord([o]),i.raws.between+=o[1];(i.prop[0]==="_"||i.prop[0]==="*")&&(i.raws.before+=i.prop[0],i.prop=i.prop.slice(1));let s=[],u;for(;t.length&&(u=t[0][0],!(u!=="space"&&u!=="comment"));)s.push(t.shift());this.precheckMissedSemicolon(t);for(let l=t.length-1;l>=0;l--){if(o=t[l],o[1].toLowerCase()==="!important"){i.important=!0;let c=this.stringFrom(t,l);c=this.spacesFromEnd(t)+c,c!==" !important"&&(i.raws.important=c);break}else if(o[1].toLowerCase()==="important"){let c=t.slice(0),p="";for(let f=l;f>0;f--){let x=c[f][0];if(p.trim().startsWith("!")&&x!=="space")break;p=c.pop()[1]+p}p.trim().startsWith("!")&&(i.important=!0,i.raws.important=p,t=c)}if(o[0]!=="space"&&o[0]!=="comment")break}t.some(l=>l[0]!=="space"&&l[0]!=="comment")&&(i.raws.between+=s.map(l=>l[1]).join(""),s=[]),this.raw(i,"value",s.concat(t),n),i.value.includes(":")&&!n&&this.checkMissedSemicolon(t)}doubleColon(t){throw this.input.error("Double colon",{offset:t[2]},{offset:t[2]+t[1].length})}emptyRule(t){let n=new ts;this.init(n,t[2]),n.selector="",n.raws.between="",this.current=n}end(t){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(t[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(t)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(t){if(this.spaces+=t[1],this.current.nodes){let n=this.current.nodes[this.current.nodes.length-1];n&&n.type==="rule"&&!n.raws.ownSemicolon&&(n.raws.ownSemicolon=this.spaces,this.spaces="",n.source.end=this.getPosition(t[2]),n.source.end.offset+=n.raws.ownSemicolon.length)}}getPosition(t){let n=this.input.fromOffset(t);return{column:n.col,line:n.line,offset:t}}init(t,n){this.current.push(t),t.source={input:this.input,start:this.getPosition(n)},t.raws.before=this.spaces,this.spaces="",t.type!=="comment"&&(this.semicolon=!1)}other(t){let n=!1,i=null,r=!1,o=null,s=[],u=t[1].startsWith("--"),a=[],l=t;for(;l;){if(i=l[0],a.push(l),i==="("||i==="[")o||(o=l),s.push(i==="("?")":"]");else if(u&&r&&i==="{")o||(o=l),s.push("}");else if(s.length===0)if(i===";")if(r){this.decl(a,u);return}else break;else if(i==="{"){this.rule(a);return}else if(i==="}"){this.tokenizer.back(a.pop()),n=!0;break}else i===":"&&(r=!0);else i===s[s.length-1]&&(s.pop(),s.length===0&&(o=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(n=!0),s.length>0&&this.unclosedBracket(o),n&&r){if(!u)for(;a.length&&(l=a[a.length-1][0],!(l!=="space"&&l!=="comment"));)this.tokenizer.back(a.pop());this.decl(a,u)}else this.unknownWord(a)}parse(){let t;for(;!this.tokenizer.endOfFile();)switch(t=this.tokenizer.nextToken(),t[0]){case"space":this.spaces+=t[1];break;case";":this.freeSemicolon(t);break;case"}":this.end(t);break;case"comment":this.comment(t);break;case"at-word":this.atrule(t);break;case"{":this.emptyRule(t);break;default:this.other(t);break}this.endFile()}precheckMissedSemicolon(){}raw(t,n,i,r){let o,s,u=i.length,a="",l=!0,c,p;for(let f=0;f<u;f+=1)o=i[f],s=o[0],s==="space"&&f===u-1&&!r?l=!1:s==="comment"?(p=i[f-1]?i[f-1][0]:"empty",c=i[f+1]?i[f+1][0]:"empty",!ns[p]&&!ns[c]?a.slice(-1)===","?l=!1:a+=o[1]:l=!1):a+=o[1];if(!l){let f=i.reduce((x,E)=>x+E[1],"");t.raws[n]={raw:f,value:a}}t[n]=a}rule(t){t.pop();let n=new ts;this.init(n,t[0][2]),n.raws.between=this.spacesAndCommentsFromEnd(t),this.raw(n,"selector",t),this.current=n}spacesAndCommentsFromEnd(t){let n,i="";for(;t.length&&(n=t[t.length-1][0],!(n!=="space"&&n!=="comment"));)i=t.pop()[1]+i;return i}spacesAndCommentsFromStart(t){let n,i="";for(;t.length&&(n=t[0][0],!(n!=="space"&&n!=="comment"));)i+=t.shift()[1];return i}spacesFromEnd(t){let n,i="";for(;t.length&&(n=t[t.length-1][0],n==="space");)i=t.pop()[1]+i;return i}stringFrom(t,n){let i="";for(let r=n;r<t.length;r++)i+=t[r][1];return t.splice(n,t.length-n),i}unclosedBlock(){let t=this.current.source.start;throw this.input.error("Unclosed block",t.line,t.column)}unclosedBracket(t){throw this.input.error("Unclosed bracket",{offset:t[2]},{offset:t[2]+1})}unexpectedClose(t){throw this.input.error("Unexpected }",{offset:t[2]},{offset:t[2]+1})}unknownWord(t){throw this.input.error("Unknown word "+t[0][1],{offset:t[0][2]},{offset:t[0][2]+t[0][1].length})}unnamedAtrule(t,n){throw this.input.error("At-rule without name",{offset:n[2]},{offset:n[2]+n[1].length})}};is.exports=vi});var Cn=te((Hp,os)=>{"use strict";var Tu=Je(),Nu=qt(),Lu=rs();function Fn(e,t){let n=new Nu(e,t),i=new Lu(n);try{i.parse()}catch(r){throw r}return i.root}os.exports=Fn;Fn.default=Fn;Tu.registerParse(Fn)});var Ti=te((Gp,ss)=>{"use strict";var Kt=class{constructor(t,n={}){if(this.type="warning",this.text=t,n.node&&n.node.source){let i=n.node.rangeBy(n);this.line=i.start.line,this.column=i.start.column,this.endLine=i.end.line,this.endColumn=i.end.column}for(let i in n)this[i]=n[i]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};ss.exports=Kt;Kt.default=Kt});var _n=te((Wp,as)=>{"use strict";var Ru=Ti(),Jt=class{get content(){return this.css}constructor(t,n,i){this.processor=t,this.messages=[],this.root=n,this.opts=i,this.css="",this.map=void 0}toString(){return this.css}warn(t,n={}){n.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(n.plugin=this.lastPlugin.postcssPlugin);let i=new Ru(t,n);return this.messages.push(i),i}warnings(){return this.messages.filter(t=>t.type==="warning")}};as.exports=Jt;Jt.default=Jt});var Ni=te((Up,us)=>{"use strict";var ls={};us.exports=function(t){ls[t]||(ls[t]=!0,typeof console<"u"&&console.warn&&console.warn(t))}});var ki=te((zp,ms)=>{"use strict";var ku=Je(),Du=hn(),Iu=Mi(),Pu=Cn(),cs=_n(),Ou=gt(),Bu=Pt(),{isClean:He,my:Hu}=mn(),Vp=Ni(),Gu={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},Wu={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},Uu={Once:!0,postcssPlugin:!0,prepare:!0},bt=0;function Xt(e){return typeof e=="object"&&typeof e.then=="function"}function fs(e){let t=!1,n=Gu[e.type];return e.type==="decl"?t=e.prop.toLowerCase():e.type==="atrule"&&(t=e.name.toLowerCase()),t&&e.append?[n,n+"-"+t,bt,n+"Exit",n+"Exit-"+t]:t?[n,n+"-"+t,n+"Exit",n+"Exit-"+t]:e.append?[n,bt,n+"Exit"]:[n,n+"Exit"]}function ds(e){let t;return e.type==="document"?t=["Document",bt,"DocumentExit"]:e.type==="root"?t=["Root",bt,"RootExit"]:t=fs(e),{eventIndex:0,events:t,iterator:0,node:e,visitorIndex:0,visitors:[]}}function Li(e){return e[He]=!1,e.nodes&&e.nodes.forEach(t=>Li(t)),e}var Ri={},Ye=class e{get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}constructor(t,n,i){this.stringified=!1,this.processed=!1;let r;if(typeof n=="object"&&n!==null&&(n.type==="root"||n.type==="document"))r=Li(n);else if(n instanceof e||n instanceof cs)r=Li(n.root),n.map&&(typeof i.map>"u"&&(i.map={}),i.map.inline||(i.map.inline=!1),i.map.prev=n.map);else{let o=Pu;i.syntax&&(o=i.syntax.parse),i.parser&&(o=i.parser),o.parse&&(o=o.parse);try{r=o(n,i)}catch(s){this.processed=!0,this.error=s}r&&!r[Hu]&&ku.rebuild(r)}this.result=new cs(t,r,i),this.helpers={...Ri,postcss:Ri,result:this.result},this.plugins=this.processor.plugins.map(o=>typeof o=="object"&&o.prepare?{...o,...o.prepare(this.result)}:o)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(t){return this.async().catch(t)}finally(t){return this.async().then(t,t)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(t,n){let i=this.result.lastPlugin;try{n&&n.addToError(t),this.error=t,t.name==="CssSyntaxError"&&!t.plugin?(t.plugin=i.postcssPlugin,t.setMessage()):i.postcssVersion}catch(r){console&&console.error&&console.error(r)}return t}prepareVisitors(){this.listeners={};let t=(n,i,r)=>{this.listeners[i]||(this.listeners[i]=[]),this.listeners[i].push([n,r])};for(let n of this.plugins)if(typeof n=="object")for(let i in n){if(!Wu[i]&&/^[A-Z]/.test(i))throw new Error(`Unknown event ${i} in ${n.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Uu[i])if(typeof n[i]=="object")for(let r in n[i])r==="*"?t(n,i,n[i][r]):t(n,i+"-"+r.toLowerCase(),n[i][r]);else typeof n[i]=="function"&&t(n,i,n[i])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let t=0;t<this.plugins.length;t++){let n=this.plugins[t],i=this.runOnRoot(n);if(Xt(i))try{await i}catch(r){throw this.handleError(r)}}if(this.prepareVisitors(),this.hasListener){let t=this.result.root;for(;!t[He];){t[He]=!0;let n=[ds(t)];for(;n.length>0;){let i=this.visitTick(n);if(Xt(i))try{await i}catch(r){let o=n[n.length-1].node;throw this.handleError(r,o)}}}if(this.listeners.OnceExit)for(let[n,i]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if(t.type==="document"){let r=t.nodes.map(o=>i(o,this.helpers));await Promise.all(r)}else await i(t,this.helpers)}catch(r){throw this.handleError(r)}}}return this.processed=!0,this.stringify()}runOnRoot(t){this.result.lastPlugin=t;try{if(typeof t=="object"&&t.Once){if(this.result.root.type==="document"){let n=this.result.root.nodes.map(i=>t.Once(i,this.helpers));return Xt(n[0])?Promise.all(n):n}return t.Once(this.result.root,this.helpers)}else if(typeof t=="function")return t(this.result.root,this.result)}catch(n){throw this.handleError(n)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let t=this.result.opts,n=Bu;t.syntax&&(n=t.syntax.stringify),t.stringifier&&(n=t.stringifier),n.stringify&&(n=n.stringify);let i=this.result.root.source;if(t.map===void 0&&!(i&&i.input&&i.input.map)){let s="";return n(this.result.root,u=>{s+=u}),this.result.css=s,this.result}let o=new Iu(n,this.result.root,this.result.opts).generate();return this.result.css=o[0],this.result.map=o[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let t of this.plugins){let n=this.runOnRoot(t);if(Xt(n))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let t=this.result.root;for(;!t[He];)t[He]=!0,this.walkSync(t);if(this.listeners.OnceExit)if(t.type==="document")for(let n of t.nodes)this.visitSync(this.listeners.OnceExit,n);else this.visitSync(this.listeners.OnceExit,t)}return this.result}then(t,n){return this.async().then(t,n)}toString(){return this.css}visitSync(t,n){for(let[i,r]of t){this.result.lastPlugin=i;let o;try{o=r(n,this.helpers)}catch(s){throw this.handleError(s,n.proxyOf)}if(n.type!=="root"&&n.type!=="document"&&!n.parent)return!0;if(Xt(o))throw this.getAsyncError()}}visitTick(t){let n=t[t.length-1],{node:i,visitors:r}=n;if(i.type!=="root"&&i.type!=="document"&&!i.parent){t.pop();return}if(r.length>0&&n.visitorIndex<r.length){let[s,u]=r[n.visitorIndex];n.visitorIndex+=1,n.visitorIndex===r.length&&(n.visitors=[],n.visitorIndex=0),this.result.lastPlugin=s;try{return u(i.toProxy(),this.helpers)}catch(a){throw this.handleError(a,i)}}if(n.iterator!==0){let s=n.iterator,u;for(;u=i.nodes[i.indexes[s]];)if(i.indexes[s]+=1,!u[He]){u[He]=!0,t.push(ds(u));return}n.iterator=0,delete i.indexes[s]}let o=n.events;for(;n.eventIndex<o.length;){let s=o[n.eventIndex];if(n.eventIndex+=1,s===bt){i.nodes&&i.nodes.length&&(i[He]=!0,n.iterator=i.getIterator());return}else if(this.listeners[s]){n.visitors=this.listeners[s];return}}t.pop()}walkSync(t){t[He]=!0;let n=fs(t);for(let i of n)if(i===bt)t.nodes&&t.each(r=>{r[He]||this.walkSync(r)});else{let r=this.listeners[i];if(r&&this.visitSync(r,t.toProxy()))return}}warnings(){return this.sync().warnings()}};Ye.registerPostcss=e=>{Ri=e};ms.exports=Ye;Ye.default=Ye;Ou.registerLazyResult(Ye);Du.registerLazyResult(Ye)});var hs=te((jp,ps)=>{"use strict";var Vu=Mi(),zu=Cn(),qu=_n(),ju=Pt(),qp=Ni(),Yt=class{get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let t,n=zu;try{t=n(this._css,this._opts)}catch(i){this.error=i}if(this.error)throw this.error;return this._root=t,t}get[Symbol.toStringTag](){return"NoWorkResult"}constructor(t,n,i){n=n.toString(),this.stringified=!1,this._processor=t,this._css=n,this._opts=i,this._map=void 0;let r=ju;this.result=new qu(this._processor,void 0,this._opts),this.result.css=n;let o=this;Object.defineProperty(this.result,"root",{get(){return o.root}});let s=new Vu(r,void 0,this._opts,n);if(s.isMap()){let[u,a]=s.generate();u&&(this.result.css=u),a&&(this.result.map=a)}else s.clearAnnotation(),this.result.css=s.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(t){return this.async().catch(t)}finally(t){return this.async().then(t,t)}sync(){if(this.error)throw this.error;return this.result}then(t,n){return this.async().then(t,n)}toString(){return this._css}warnings(){return[]}};ps.exports=Yt;Yt.default=Yt});var xs=te(($p,gs)=>{"use strict";var $u=hn(),Ku=ki(),Ju=hs(),Xu=gt(),lt=class{constructor(t=[]){this.version="8.5.14",this.plugins=this.normalize(t)}normalize(t){let n=[];for(let i of t)if(i.postcss===!0?i=i():i.postcss&&(i=i.postcss),typeof i=="object"&&Array.isArray(i.plugins))n=n.concat(i.plugins);else if(typeof i=="object"&&i.postcssPlugin)n.push(i);else if(typeof i=="function")n.push(i);else if(!(typeof i=="object"&&(i.parse||i.stringify)))throw new Error(i+" is not a PostCSS plugin");return n}process(t,n={}){return!this.plugins.length&&!n.parser&&!n.stringifier&&!n.syntax?new Ju(this,t,n):new Ku(this,t,n)}use(t){return this.plugins=this.plugins.concat(this.normalize([t])),this}};gs.exports=lt;lt.default=lt;Xu.registerProcessor(lt);$u.registerProcessor(lt)});var Cs=te((Kp,Fs)=>{"use strict";var bs=pn(),ys=Wt(),Yu=Je(),Qu=fn(),Ss=Vt(),Es=hn(),Zu=qo(),ec=qt(),tc=ki(),nc=Ci(),ic=Ht(),rc=Cn(),Di=xs(),oc=_n(),As=gt(),ws=yn(),sc=Pt(),ac=Ti();function le(...e){return e.length===1&&Array.isArray(e[0])&&(e=e[0]),new Di(e)}le.plugin=function(t,n){let i=!1;function r(...s){console&&console.warn&&!i&&(i=!0,console.warn(t+`: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(t+`: \\u91CC\\u9762 postcss.plugin \\u88AB\\u5F03\\u7528. \\u8FC1\\u79FB\\u6307\\u5357:\nhttps://www.w3ctech.com/topic/2226`));let u=n(...s);return u.postcssPlugin=t,u.postcssVersion=new Di().version,u}let o;return Object.defineProperty(r,"postcss",{get(){return o||(o=r()),o}}),r.process=function(s,u,a){return le([r(a)]).process(s,u)},r};le.stringify=sc;le.parse=rc;le.fromJSON=Zu;le.list=nc;le.comment=e=>new ys(e);le.atRule=e=>new bs(e);le.decl=e=>new Ss(e);le.rule=e=>new ws(e);le.root=e=>new As(e);le.document=e=>new Es(e);le.CssSyntaxError=Qu;le.Declaration=Ss;le.Container=Yu;le.Processor=Di;le.Document=Es;le.Comment=ys;le.Warning=ac;le.AtRule=bs;le.Result=oc;le.Input=ec;le.Rule=ws;le.Root=As;le.Node=ic;tc.registerPostcss(le);Fs.exports=le;le.default=le});function cn(){return globalThis}function L(e,t){if(typeof window>"u")return;let n=cn(),i=n.__hf?.onSwallowed;if(i)try{i({label:e,error:t})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${e} swallowed:`,t)}function Fe(e){try{window.parent.postMessage(e,"*")}catch(t){L("bridge.postMessage",t)}}var ll={play:(e,t)=>t.onPlay(),pause:(e,t)=>t.onPause(),"stop-media":(e,t)=>t.onStopMedia(),seek:(e,t)=>t.onSeek(Number(e.frame??0),e.seekMode??"commit"),tick:(e,t)=>t.onTick(),"set-muted":(e,t)=>t.onSetMuted(!!e.muted),"set-volume":(e,t)=>t.onSetVolume(Math.max(0,Math.min(1,Number(e.volume??1)))),"set-media-output-muted":(e,t)=>t.onSetMediaOutputMuted(!!e.muted),"set-native-media-sync-disabled":(e,t)=>t.onSetNativeMediaSyncDisabled(!!e.disabled),"set-web-audio-media-disabled":(e,t)=>t.onSetWebAudioMediaDisabled(!!e.disabled),"set-playback-rate":(e,t)=>t.onSetPlaybackRate(Number(e.playbackRate??1)),"set-color-grading":(e,t)=>t.onSetColorGrading(e.target??null,e.grading??null),"set-color-grading-compare":(e,t)=>t.onSetColorGradingCompare(e.target??null,e.compare??null),"enable-pick-mode":(e,t)=>t.onEnablePickMode(),"disable-pick-mode":(e,t)=>t.onDisablePickMode(),"flash-elements":e=>ul(e)};function ul(e){let t=e.selectors,n=e.duration||800;t&&cl(t,n)}function Er(e){let t=n=>{let i=n.data;if(!i||i.source!=="hf-parent"||i.type!=="control")return;let r=i.action;if(typeof r!="string")return;let o=ll[r];o&&o(i,e)};return window.addEventListener("message",t),Fe({source:"hf-preview",type:"ready"}),t}function cl(e,t){if(!document.getElementById("__hf-flash-styles")){let n=document.createElement("style");n.id="__hf-flash-styles",n.textContent=`\n .__hf-flash {\n outline: 2px solid rgba(59, 130, 246, 0.6) !important;\n outline-offset: 2px !important;\n animation: __hf-flash-pulse ${t}ms ease-out forwards !important;\n }\n @keyframes __hf-flash-pulse {\n 0% { outline-color: rgba(59, 130, 246, 0.8); }\n 100% { outline-color: transparent; }\n }\n `,document.head.appendChild(n)}for(let n of e)try{document.querySelectorAll(n).forEach(r=>{r.classList.add("__hf-flash"),setTimeout(()=>r.classList.remove("__hf-flash"),t)})}catch(i){L("bridge.flashElements.querySelector",i)}}var Qn=null;function Ar(e){Qn=e}function ot(e,t){if(Qn)try{Qn({source:"hf-preview",type:"analytics",event:e,properties:t??{}})}catch(n){L("runtime.analytics.site1",n)}}function wr(e){let t=[],n=l=>{if(typeof l.getAnimations!="function")return[];try{return l.getAnimations()}catch{return[]}},i=l=>e?.resolveStartSeconds?e.resolveStartSeconds(l):Number.parseFloat(l.getAttribute("data-start")??"0")||0,r=(l,c)=>{let p=null;try{p=l.effect?.getComputedTiming?.()??null}catch(x){L("runtime.adapters.css.site5",x)}if(!p)return{};let f=Number(p.endTime);return Number.isFinite(f)?{endSeconds:c+f/1e3}:{unbounded:!0}},o=(l,c)=>{for(let p of l){try{p.currentTime=c}catch(f){L("runtime.adapters.css.site1",f)}try{p.pause()}catch(f){L("runtime.adapters.css.site2",f)}}},s=l=>{for(let c of l)try{c.play()}catch(p){L("runtime.adapters.css.site3",p)}},u=l=>{for(let c of l)try{c.pause()}catch(p){L("runtime.adapters.css.site4",p)}},a=l=>{l.baseDelay?l.el.style.animationDelay=l.baseDelay:l.el.style.removeProperty("animation-delay"),l.basePlayState?l.el.style.animationPlayState=l.basePlayState:l.el.style.removeProperty("animation-play-state")};return{name:"css",discover:()=>{t=[];let l=document.querySelectorAll("*");for(let c of l){if(!(c instanceof HTMLElement))continue;let p=window.getComputedStyle(c);!p.animationName||p.animationName==="none"||t.push({el:c,baseDelay:c.style.animationDelay||"",basePlayState:c.style.animationPlayState||"",animations:n(c)})}},getInferredDurationSeconds:()=>{let l=0;for(let c of t){if(!c.el.isConnected)continue;let p=i(c.el);for(let f of n(c.el)){let x=r(f,p);x.endSeconds!=null&&(l=Math.max(l,x.endSeconds))}}return l>0?l:null},seek:l=>{let c=Number(l.time)||0;for(let p of t){if(!p.el.isConnected)continue;let f=i(p.el),x=Math.max(0,c-f)*1e3,E=p.animations;if(E.length>0){o(E,x);continue}p.el.style.animationPlayState="paused",p.el.style.animationDelay=`-${(x/1e3).toFixed(3)}s`}},pause:()=>{for(let l of t){if(!l.el.isConnected)continue;let c=l.animations;c.length>0&&u(c),a(l)}},play:()=>{for(let l of t)l.el.isConnected&&(a(l),s(l.animations))},revert:()=>{t=[]}}}function Fr(e){return{name:"gsap",discover:()=>{},seek:t=>{let n=e.getTimeline();if(!n)return;n.pause();let i=Math.max(0,Number(t.time)||0);typeof n.totalTime=="function"?(n.totalTime(i+.001,!0),n.totalTime(i,!1)):n.seek(i,!1)},pause:()=>{let t=e.getTimeline();t&&t.pause()}}}function Cr(){return{name:"animejs",discover:()=>{try{let e=window.anime;if(!e||typeof e.running>"u")return;let t=e.running;if(!Array.isArray(t)||t.length===0)return;let n=window.__hfAnime??[],i=new Set(n);for(let r of t)i.has(r)||n.push(r);window.__hfAnime=n}catch(e){L("runtime.adapters.animejs.site1",e)}},seek:e=>{let t=Math.max(0,(Number(e.time)||0)*1e3),n=window.__hfAnime;if(!(!n||n.length===0))for(let i of n)try{typeof i.seek=="function"&&i.seek(t)}catch(r){L("runtime.adapters.animejs.site2",r)}},pause:()=>{let e=window.__hfAnime;if(!(!e||e.length===0))for(let t of e)try{typeof t.pause=="function"&&t.pause()}catch(n){L("runtime.adapters.animejs.site3",n)}},play:()=>{let e=window.__hfAnime;if(!(!e||e.length===0))for(let t of e)try{typeof t.play=="function"&&t.play()}catch(n){L("runtime.adapters.animejs.site4",n)}},revert:()=>{}}}function Mr(){return{name:"lottie",discover:()=>{try{let e=window.lottie;if(e&&typeof e.getRegisteredAnimations=="function"){let t=e.getRegisteredAnimations();if(Array.isArray(t)&&t.length>0){let n=window.__hfLottie??[],i=new Set(n);for(let r of t)i.has(r)||n.push(r);window.__hfLottie=n}}}catch(e){L("runtime.adapters.lottie.site1",e)}},seek:e=>{let t=Math.max(0,Number(e.time)||0),n=window.__hfLottie;if(!(!n||n.length===0))for(let i of n)try{if(Zn(i))i.goToAndStop(t*1e3,!1);else if(ei(i)){if(typeof i.setCurrentRawFrameValue=="function"){let r=i.totalFrames??0,o=i.frameRate??30,s=t*o;r>0&&i.setCurrentRawFrameValue(Math.min(s,r-1))}else if(typeof i.seek=="function"){let r=i.duration??1,o=Math.min(100,t/r*100);i.seek(o)}}}catch(r){L("runtime.adapters.lottie.site2",r)}},pause:()=>{let e=window.__hfLottie;if(!(!e||e.length===0))for(let t of e)try{(Zn(t)||ei(t))&&t.pause()}catch(n){L("runtime.adapters.lottie.site3",n)}},revert:()=>{},getInferredDurationSeconds:()=>{let e=window.__hfLottie;if(!e||e.length===0)return null;let t=0,n=!1;for(let i of e){let r=null;try{r=dl(i)}catch(o){L("runtime.adapters.lottie.site4",o)}r!=null&&(n=!0,t=Math.max(t,r))}return n?t:null}}}function _r(e,t){return!Number.isFinite(e)||!e||e<=0||!Number.isFinite(t)||!t||t<=0?null:e/t}function dl(e){return Zn(e)?_r(e.totalFrames,e.frameRate):ei(e)?Number.isFinite(e.duration)&&(e.duration??0)>0?e.duration??null:_r(e.totalFrames,e.frameRate):null}function Zn(e){return typeof e=="object"&&e!==null&&typeof e.goToAndStop=="function"}function ei(e){return typeof e=="object"&&e!==null&&typeof e.pause=="function"&&("totalFrames"in e||"duration"in e)}var ti=-1;function dn(e){if(e!==ti){ti=e;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:e}}))}catch(t){L("runtime.adapters.seek-dispatch.site1",t)}}}function vr(e){ti=e;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:e}}))}catch(t){L("runtime.adapters.seek-dispatch.force",t)}}function Tr(){let e=null,t=0,n=null,i=null,r=null,o=null,s=()=>{if(typeof window>"u")return null;let c=window.THREE?.DefaultLoadingManager;return!c||typeof c!="object"||typeof c.itemsLoaded!="number"||typeof c.itemsTotal!="number"?null:c},u=l=>{o||l.itemsTotal<=l.itemsLoaded||(o=new Promise(c=>{l.onLoad=function(){try{r?.call(this)}finally{o=null,l.onLoad=r??null,c()}}}))},a=l=>{n!==l&&(n=l,i=l.onStart??null,r=l.onLoad??null,l.onStart=function(c,p,f){try{i?.call(this,c,p,f)}finally{u(l)}})};return{name:"three",discover:()=>{let l=s();l&&(a(l),u(l))},seek:l=>{e=Math.max(0,Number(l.time)||0),t=e,window.__hfThreeTime=e,dn(e)},pause:()=>{e==null&&(e=Math.max(0,t))},play:()=>{e=null},revert:()=>{e=null,t=0},getReadyPromise:()=>{let l=s();return!l||l.itemsTotal<=l.itemsLoaded?null:(o||u(l),o)}}}function Be(e){let t=null,n=new WeakSet;return{name:e.name,discover:()=>{},seek:()=>{},pause:()=>{},play:()=>{},revert:()=>{},getReadyPromise:()=>{let i=e.getInstances();if(i.length===0)return null;let r=i.filter(o=>!n.has(o));return r.length===0?null:t||(t=Promise.allSettled(r.map(o=>e.waitFor(o).then(()=>{n.add(o)}))).then(()=>{t=null}),t)}}}function Nr(){return Be({name:"mapbox",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfMapbox;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>{if(e.loaded()){t();return}e.on("load",t)})})}function Lr(){return Be({name:"leaflet",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfLeaflet;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>e.whenReady(t))})}function Rr(){return Be({name:"google-maps",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfGoogleMaps;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>{let n=e.addListener("tilesloaded",()=>{n.remove(),t()})})})}function kr(){return Be({name:"maplibre",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfMaplibre;return Array.isArray(e)?e:[]},waitFor:e=>new Promise(t=>{if(e.loaded()){t();return}e.on("load",t)})})}function Dr(){return Be({name:"d3",getInstances:()=>{if(typeof window>"u")return[];let e=window.__hfD3;return Array.isArray(e)?e:[]},waitFor:e=>e.end()})}function Ir(){let e=null,t=0;return{name:"typegpu",discover:()=>{},seek:n=>{e=Math.max(0,Number(n.time)||0),t=e,window.__hfTypegpuTime=e,dn(e)},pause:()=>{e==null&&(e=Math.max(0,t))},play:()=>{e=null},revert:()=>{e=null,t=0}}}function Pr(e){let t=e.nextElementSibling;if(t instanceof HTMLImageElement&&t.classList.contains("__render_frame__")&&t.complete&&t.naturalWidth>0)return t;if(e.id){let n=document.getElementById(`__render_frame_${e.id}__`);if(n instanceof HTMLImageElement&&n.complete&&n.naturalWidth>0)return n}return null}function Or(){let e=globalThis.GPUQueue;if(!e?.prototype?.copyExternalImageToTexture)return;let t=e.prototype.copyExternalImageToTexture;e.prototype.copyExternalImageToTexture=function(n,i,r){if(n?.source instanceof HTMLVideoElement){let o=Pr(n.source);if(o)return t.call(this,{...n,source:o},i,r)}return t.call(this,n,i,r)}}function Br(){let e=[globalThis.WebGL2RenderingContext,globalThis.WebGLRenderingContext],t=["texImage2D","texSubImage2D"];for(let n of e){let i=n?.prototype;if(i)for(let r of t){let o=i[r];if(typeof o!="function"||o.__hfVideoPatched)continue;let s=function(...u){let a=u.length-1,l=u[a];if(l instanceof HTMLVideoElement){let c=Pr(l);c&&(u[a]=c)}return o.apply(this,u)};s.__hfVideoPatched=!0,i[r]=s}}}function Hr(){let e=!1,t=0,n=!1,i,r,o,s=new Set,u=new WeakMap,a=()=>{if(!document.getAnimations)return[];try{return document.getAnimations()}catch{return[]}},l=g=>{let A=Number(g.currentTime);return Number.isFinite(A)&&A>0?A:0},c=(g,A)=>A<=0?g:g>=A?Math.max(0,g-A):g,p=(g,A)=>{let _=u.get(g);if(_)return _;let N={compositionTimeMs:A,animationTimeMs:e?c(l(g),A):l(g)};return u.set(g,N),N},f=(g,A)=>{if(!s.has(g)){s.add(g);let _=()=>{s.delete(g)};try{g.addEventListener("finish",_,{once:!0}),g.addEventListener("cancel",_,{once:!0})}catch(N){L("runtime.adapters.waapi.site4",N)}}p(g,A)},x=(g,A)=>{for(let _ of g)f(_,A)},E=()=>{if(n||typeof Element>"u")return;let g=Element.prototype;if(typeof g.animate!="function"||g.__hfOriginalAnimate)return;let A=g.animate;try{Object.defineProperty(g,"__hfOriginalAnimate",{value:A,configurable:!0});let _=function(...N){let $=A.apply(this,N);return f($,t),$};g.animate=_,i=g,r=A,o=_,n=!0}catch{}},b=g=>{let A=null;try{A=g.effect?.getComputedTiming?.()??null}catch($){L("runtime.adapters.waapi.site4",$)}if(!A)return{};let _=Number(A.endTime);return Number.isFinite(_)?{endSeconds:(u.get(g)?.compositionTimeMs??0)/1e3+_/1e3}:{unbounded:!0}};return{name:"waapi",discover:()=>{e=!0,E(),x(a(),t)},seek:g=>{let A=Math.max(0,(Number(g.time)||0)*1e3);t=A,(!e||s.size>0)&&x(a(),e?A:0);for(let _ of s){let N=e?p(_,A):p(_,0),$=N.animationTimeMs+Math.max(0,A-N.compositionTimeMs);try{_.currentTime=$}catch(B){L("runtime.adapters.waapi.site1",B)}try{_.pause()}catch(B){L("runtime.adapters.waapi.site2",B)}}},pause:()=>{e||x(a(),t);for(let g of s)try{g.pause()}catch(A){L("runtime.adapters.waapi.site3",A)}},revert:()=>{if(s.clear(),u=new WeakMap,e=!1,t=0,i&&r&&o&&i.animate===o)try{i.animate=r,i.__hfOriginalAnimate===r&&delete i.__hfOriginalAnimate}catch(g){L("runtime.adapters.waapi.site5",g)}i=void 0,r=void 0,o=void 0,n=!1},getInferredDurationSeconds:()=>{let g=0;for(let A of a()){let _=b(A);_.endSeconds!=null&&(g=Math.max(g,_.endSeconds))}return g>0?g:null}}}function Gr(e,t){if(e.length===0)return 1;let n=0;for(;n<e.length-2&&t>=e[n+1].time;)n+=1;let i=e[n],r=e[n+1]??i,o=r.time-i.time,s=o<=0?0:Math.min(1,Math.max(0,(t-i.time)/o));return i.volume+(r.volume-i.volume)*s}function fl(e,t,n,i){let r=Number.parseFloat(e.dataset.start??"0")||0,o=Number.parseFloat(e.dataset.end??""),s=Number.parseFloat(e.dataset.duration??""),u=Number.isFinite(o)&&o>r?o:Number.isFinite(s)&&s>0?r+s:n,a=Number.parseFloat(e.dataset.volume??""),l=Number.isFinite(a)?Math.max(0,Math.min(1,a)):1;e.volume=l;let c=1/Math.min(60,Math.max(1,i)),p=Math.max(0,r),f=Math.min(n,u),x=[];for(let b=p;b<=f+1e-6;b+=c){let g=Math.min(f,b);t(g);let A=Number(e.volume);if(!Number.isFinite(A))continue;let _=Math.max(0,Math.min(1,A)),N=x.at(-1);if((!N||Math.abs(N.volume-_)>1e-4||g===f)&&x.push({time:Number(g.toFixed(6)),volume:Number(_.toFixed(6))}),g===f)break}return x.some(b=>Math.abs(b.volume-l)>1e-4)?x:null}function Wr(e,t,n,i){if(!t||!(e instanceof HTMLAudioElement)&&!(e instanceof HTMLVideoElement)||n<=0)return;let o=fl(e,s=>{try{typeof t.totalTime=="function"?t.totalTime(s,!0):typeof t.seek=="function"&&t.seek(s,!0)}catch{}},n,60);o&&i.set(e,o)}function Tt(e){let t=e.defaultPlaybackRate;return Number.isFinite(t)&&t>0?Math.max(.1,Math.min(5,t)):1}function Ur(e){let t=Array.from(document.querySelectorAll("video, audio")),n=e?.shouldIncludeElement?t.filter(s=>e.shouldIncludeElement?.(s)):t.filter(s=>s.hasAttribute("data-start")),i=[],r=[],o=0;for(let s of n){let u=e?.resolveStartSeconds?e.resolveStartSeconds(s):Number.parseFloat(s.dataset.start??"0");if(!Number.isFinite(u))continue;let a=Number.parseFloat(s.dataset.playbackStart??s.dataset.mediaStart??"0")||0,l=Tt(s),c=s.loop,p=Number.isFinite(s.duration)&&s.duration>0?s.duration:null,f=e?.resolveDurationSeconds?.(s)??Number.parseFloat(s.dataset.duration??"");(!Number.isFinite(f)||f<=0)&&p!=null&&(f=Math.max(0,(p-a)/l));let x=Number.isFinite(f)&&f>0?u+f:Number.POSITIVE_INFINITY,E=Number.parseFloat(s.dataset.volume??""),b={el:s,start:u,mediaStart:a,duration:Number.isFinite(f)&&f>0?f:Number.POSITIVE_INFINITY,end:x,volume:Number.isFinite(E)?E:null,playbackRate:l,loop:c,sourceDuration:p};i.push(b),s.tagName==="VIDEO"&&r.push(b),Number.isFinite(x)&&(o=Math.max(o,x))}return{timedMediaEls:n,mediaClips:i,videoClips:r,maxMediaEnd:o}}var ni=new WeakMap,Mt=new WeakMap,ii=new WeakSet,ft=new WeakSet;function ml(e){if(ft.has(e))return;ft.add(e);let t=()=>ft.delete(e);e.addEventListener("playing",t,{once:!0}),e.addEventListener("pause",t,{once:!0}),e.addEventListener("error",t,{once:!0})}var pl=3;function hl(e){return e.error!=null||e.networkState===pl}var ri=new WeakMap;function vt(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):1}function Vr(e){let t=!!(e.outputMuted||e.userMuted);for(let n of e.clips){let{el:i}=n;if(!i.isConnected)continue;let r=(e.timeSeconds-n.start)*n.playbackRate+n.mediaStart;if(e.timeSeconds>=n.start&&e.timeSeconds<=n.end&&r>=0&&(!i.ended||n.loop)){if(n.loop&&n.sourceDuration!=null&&n.sourceDuration>0){let T=n.sourceDuration-n.mediaStart;T>0&&r>=n.sourceDuration&&(r=n.mediaStart+(r-n.mediaStart)%T)}let s=vt(e.userVolume??1),u=vt(n.volume??1),a=ri.get(i),l=vt(i.volume),c;n.volumeKeyframes&&n.volumeKeyframes.length>0?c=vt(Gr(n.volumeKeyframes,r)):a===void 0||Math.abs(l-a)>1e-4?c=l:c=u;let p=vt(c*s);i.volume=p,ri.set(i,p),e.onElementVolume?.(i,p),(t||e.isWebAudioOwned?.(i))&&(i.muted=!0),i.preload!=="auto"&&(i.preload="auto");try{i.playbackRate=n.playbackRate*e.playbackRate}catch(T){L("runtime.media.site1",T)}let f=.04,x=2,E=i.currentTime||0,b=Math.abs(E-r),g=r-E,A=ni.get(i);ni.set(i,g);let _=A===void 0,N=!_&&Math.abs(g-A)>.5,$=b>3,B=b>.5&&(_||N||$),v=i.tagName==="VIDEO"&&!i.paused,S=A!==void 0&&Math.abs(g-A)<.004,C=!1;if(!v&&!B&&!_&&S&&b>f){let T=(Mt.get(i)??0)+1;Mt.set(i,T),T>=x&&(C=!0,Mt.set(i,0))}else b<=f&&Mt.set(i,0);let M=!v&&e.forceSync&&b>.02;if(B||C||M){if(!(i.tagName==="VIDEO"&&i.id&&!!document.getElementById(`__render_frame_${i.id}__`))){try{i.currentTime=r}catch(R){L("runtime.media.site2",R)}if(Math.abs(i.currentTime-r)>.5&&!ii.has(i)){ii.add(i),i.load();try{i.currentTime=r}catch(R){L("runtime.media.site3",R)}}}ft.delete(i)}e.playing&&i.paused&&!ft.has(i)&&!hl(i)?(ml(i),i.play().catch(T=>{ft.delete(i),(T&&typeof T=="object"&&"name"in T?String(T.name??""):"")==="NotAllowedError"&&e.onAutoplayBlocked?.()})):!e.playing&&!i.paused&&i.pause();continue}ni.delete(i),Mt.delete(i),ii.delete(i),ri.delete(i),i.paused||i.pause()}}var gl=["[data-hyperframes-ignore]","[data-hyperframes-picker-ignore]","[data-hf-ignore]","[data-no-inspect]","[data-no-pick]","[data-hyper-shader-loading]"].join(","),xl=["[data-hyperframes-picker-block]","[data-hyper-shader-loading]"].join(","),bl="data-hf-color-grading-source-hidden";function zr(e){let t=!1,n=null,i=null,r=null,o=null;function s(S,C){try{window.dispatchEvent(new CustomEvent(S,{detail:C}))}catch(M){L("runtime.picker.site1",M)}}function u(S){r=S,s("hyperframe:picker:hovered",{elementInfo:r,isPickMode:t,timestamp:Date.now()})}function a(S){o=S,s("hyperframe:picker:selected",{elementInfo:o,isPickMode:t,timestamp:Date.now()})}function l(S){let C=S.ownerDocument.defaultView;if(!C)return!1;let M=S;for(;M&&M!==document.body&&M!==document.documentElement;){let T=C.getComputedStyle(M);if(T.display==="none"||T.visibility==="hidden"||T.pointerEvents==="none")return!0;let R=Number.parseFloat(T.opacity);if(Number.isFinite(R)&&R<=.01&&!M.hasAttribute(bl))return!0;M=M.parentElement}return!1}function c(S){if(!S||S===document.body||S===document.documentElement)return!1;let C=S.tagName.toLowerCase();return!(C==="script"||C==="style"||C==="link"||C==="meta"||S.classList.contains("__hf-pick-highlight")||S.closest(gl)||l(S))}function p(S){return!!S?.closest(xl)}function f(S){let C=S;if(C.id)return`#${C.id}`;let M=S.getAttribute("data-composition-id");if(M)return`[data-composition-id="${CSS.escape(M)}"]`;let T=S.getAttribute("data-composition-src");if(T)return`[data-composition-src="${CSS.escape(T)}"]`;let R=S.getAttribute("data-track-index");if(R)return`[data-track-index="${CSS.escape(R)}"]`;let W=S.tagName.toLowerCase(),q=S.parentElement;if(!q)return W;let ie=q.querySelectorAll(`:scope > ${W}`);if(ie.length===1)return W;for(let P=0;P<ie.length;P+=1)if(ie[P]===S)return`${W}:nth-of-type(${P+1})`;return W}function x(S){let C=S.tagName.toLowerCase(),M=(S.textContent??"").trim().replace(/\\s+/g," "),T=(R,W)=>R.length>W?`${R.slice(0,W-1)}\\u2026`:R;return C==="h1"||C==="h2"||C==="h3"?"Heading":C==="p"||C==="span"||C==="div"?M.length>0?T(M,56):"Text":C==="img"?"Image":C==="video"?"Video":C==="audio"?"Audio":C==="svg"?"Shape":S.getAttribute("data-composition-src")?"Composition":C==="section"?"Section":`${C.charAt(0).toUpperCase()}${C.slice(1)}`}function E(S,C,M){let T=typeof M=="number"&&M>0?M:8,R=[];if(document.elementsFromPoint)R=document.elementsFromPoint(S,C);else if(document.elementFromPoint){let ie=document.elementFromPoint(S,C);R=ie?[ie]:[]}if(p(R[0]??null))return[];let W={},q=[];for(let ie=0;ie<R.length;ie+=1){let P=R[ie];if(!c(P))continue;let se=`${P.tagName}::${P.id||""}::${ie}`;if(!W[se]&&(W[se]=!0,q.push(P),q.length>=T))break}return q}function b(S){let C=S.getBoundingClientRect(),M={};for(let R=0;R<S.attributes.length;R+=1){let W=S.attributes[R];W.name.startsWith("data-")&&(M[W.name]=W.value)}return{id:S.id||null,tagName:S.tagName.toLowerCase(),selector:f(S),label:x(S),boundingBox:{x:C.left,y:C.top,width:C.width,height:C.height},textContent:S.textContent?S.textContent.trim().slice(0,200):null,src:S.getAttribute("src")||S.getAttribute("data-composition-src")||null,dataAttributes:M}}function g(S,C,M){return E(S,C,M).map(b)}function A(S){if(!t)return;let M=E(S.clientX,S.clientY,1)[0]??(S.target instanceof Element?S.target:null);if(!c(M)||n===M)return;n&&n.classList.remove("__hf-pick-highlight"),n=M,M.classList.add("__hf-pick-highlight");let T=b(M);u(T),e.postMessage({source:"hf-preview",type:"element-hovered",elementInfo:T})}function _(S){if(!t)return;S.preventDefault(),S.stopPropagation(),S.stopImmediatePropagation();let C=g(S.clientX,S.clientY,8);C.length!==0&&(u(C[0]??null),e.postMessage({source:"hf-preview",type:"element-pick-candidates",candidates:C,selectedIndex:0,point:{x:S.clientX,y:S.clientY}}))}function N(S){S.key==="Escape"&&(B(),e.postMessage({source:"hf-preview",type:"pick-mode-cancelled"}))}function $(){t||(t=!0,i=document.createElement("style"),i.textContent=[".__hf-pick-highlight { outline: 2px solid #4f8cf7 !important; outline-offset: 2px; cursor: crosshair !important; }",".__hf-pick-active * { cursor: crosshair !important; }"].join(`\n`),document.head.appendChild(i),document.body.classList.add("__hf-pick-active"),document.addEventListener("mousemove",A,!0),document.addEventListener("click",_,!0),document.addEventListener("keydown",N,!0),s("hyperframe:picker:mode",{isPickMode:!0,timestamp:Date.now()}))}function B(){t&&(t=!1,n&&(n.classList.remove("__hf-pick-highlight"),n=null),i&&(i.remove(),i=null),document.body.classList.remove("__hf-pick-active"),document.removeEventListener("mousemove",A,!0),document.removeEventListener("click",_,!0),document.removeEventListener("keydown",N,!0),s("hyperframe:picker:mode",{isPickMode:!1,timestamp:Date.now()}))}function v(){window.__HF_PICKER_API={enable:$,disable:B,isActive:()=>t,getHovered:()=>r,getSelected:()=>o,getCandidatesAtPoint:(S,C,M)=>Number.isFinite(S)&&Number.isFinite(C)?g(S,C,M):[],pickAtPoint:(S,C,M)=>{if(!Number.isFinite(S)||!Number.isFinite(C))return null;let T=g(S,C,8);if(!T.length)return null;let R=Math.max(0,Math.min(T.length-1,Number(M??0))),W=T[R]??null;return W?(a(W),e.postMessage({source:"hf-preview",type:"element-picked",elementInfo:W}),B(),W):null},pickManyAtPoint:(S,C,M)=>{if(!Number.isFinite(S)||!Number.isFinite(C))return[];let T=g(S,C,8);if(!T.length)return[];let R=[],W=Array.isArray(M)?M:[0];for(let q of W){let ie=Math.max(0,Math.min(T.length-1,Math.floor(Number(q)))),P=T[ie];if(!P)continue;R.some(Ee=>Ee.selector===P.selector&&Ee.tagName===P.tagName)||R.push(P)}return R.length?(a(R[0]??null),e.postMessage({source:"hf-preview",type:"element-picked-many",elementInfos:R}),B(),R):[]}},s("hyperframe:picker:api-ready",{hasApi:!0,timestamp:Date.now()})}return{enablePickMode:$,disablePickMode:B,installPickerApi:v}}var yl=["width","height","top","left","right","bottom","inset","object-fit","object-position","z-index","opacity","visibility","filter","mix-blend-mode","backdrop-filter","border-radius","overflow","clip-path","mask","mask-image","mask-size","mask-position","mask-repeat","transform","transform-origin","translate","rotate","scale","box-sizing"];function mt(e,t){let n=Number.isFinite(t)&&t>0?t:30,i=Number.isFinite(e)&&e>0?e:0;return Math.floor(i*n+1e-9)/n}function qr(e,t,n=yl){for(let i of n){let r=t.getPropertyValue(i);r&&e.setProperty(i,r)}}function Nt(e,t,n){let i=e?.[t];return typeof i=="function"?Number(i.call(e))||n:typeof i=="number"&&Number.isFinite(i)?i:(i!=null&&L("runtime.player.nonConformantNum",{prop:t,actual:typeof i}),n)}function ke(e,t){let n=e?.[t];if(typeof n=="function"){n.call(e);return}n!==void 0&&L("runtime.player.nonConformantVoid",{method:t,actual:typeof n})}function Lt(e,t,n){if(e){for(let i of Object.values(e))if(!(!i||i===t))try{n(i)}catch(r){L("runtime.player.site1",r)}}}function jr(e,t,n){let i=mt(t,n);return ke(e,"pause"),typeof e.totalTime=="function"?e.totalTime(i,!1):typeof e.seek=="function"&&e.seek(i,!1),i}function Sl(e,t,n,i){let r=[];Lt(e,t,o=>{ke(o,"play"),r.push(o)});try{return jr(t,n,i)}finally{for(let o of r)try{ke(o,"pause")}catch(s){L("runtime.player.site2",s)}}}function El(e,t){Lt(e,t,n=>{ke(n,"play")})}function $r(e){return{_timeline:null,play:()=>{let t=e.getTimeline();if(!t||e.getIsPlaying())return;let n=Math.max(0,Number(e.getSafeDuration?.()??Nt(t,"duration",0))||0);n>0&&Math.max(0,Nt(t,"time",0))>=n&&(ke(t,"pause"),typeof t.seek=="function"&&t.seek(0,!1),e.onDeterministicSeek(0),e.setIsPlaying(!1),e.onSyncMedia(0,!1),e.onRenderFrameSeek(0)),typeof t.timeScale=="function"&&t.timeScale(e.getPlaybackRate()),ke(t,"play"),Lt(e.getTimelineRegistry?.(),t,i=>{typeof i.timeScale=="function"&&i.timeScale(e.getPlaybackRate()),ke(i,"play")}),e.onDeterministicPlay(),e.setIsPlaying(!0),e.onShowNativeVideos(),e.onStatePost(!0)},pause:()=>{let t=e.getTimeline();if(!t)return;ke(t,"pause"),Lt(e.getTimelineRegistry?.(),t,i=>{ke(i,"pause")});let n=Math.max(0,Nt(t,"time",0));e.onDeterministicSeek(n),e.onDeterministicPause(),e.setIsPlaying(!1),e.onSyncMedia(n,!1),e.onRenderFrameSeek(n),e.onStatePost(!0)},seek:(t,n)=>{let i=e.getTimeline();if(!i)return;let r=Math.max(0,Number(t)||0),o=e.getIsPlaying(),s=Sl(e.getTimelineRegistry?.(),i,r,e.getCanonicalFps());e.onDeterministicSeek(s),n?.keepPlaying&&o?(typeof i.timeScale=="function"&&i.timeScale(e.getPlaybackRate()),ke(i,"play"),Lt(e.getTimelineRegistry?.(),i,u=>{typeof u.timeScale=="function"&&u.timeScale(e.getPlaybackRate()),ke(u,"play")}),e.onDeterministicPlay(),e.onShowNativeVideos(),e.onSyncMedia(s,!0)):(e.setIsPlaying(!1),e.onSyncMedia(s,!1)),e.onRenderFrameSeek(s),e.onStatePost(!0)},renderSeek:t=>{let n=e.getTimeline(),i=e.getCanonicalFps(),r=n?(El(e.getTimelineRegistry?.(),n),jr(n,t,i)):mt(Math.max(0,Number(t)||0),i);e.onDeterministicSeek(r),e.setIsPlaying(!1),e.onSyncMedia(r,!1),e.onRenderFrameSeek(r),e.onStatePost(!0)},getTime:()=>Nt(e.getTimeline(),"time",0),getDuration:()=>Nt(e.getTimeline(),"duration",0),isPlaying:()=>e.getIsPlaying(),setPlaybackRate:t=>e.setPlaybackRate(t),getPlaybackRate:()=>e.getPlaybackRate()}}function Kr(){return{capturedTimeline:null,isPlaying:!1,currentTime:0,deterministicAdapters:[],canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,nativeMediaSyncDisabled:!1,webAudioMediaDisabled:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,beforeUnloadHandler:null,injectedCompStyles:[],injectedCompScripts:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,transportClock:null,transportRafId:null}}var Al=new Set(["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"]);function si(e){return e.id||e.getAttribute("data-hf-id")||null}function oi(e){if(e==null)return null;let t=Number(e);return Number.isFinite(t)?t:null}function wl(e,t){let n=e.getAttribute("data-composition-id");if(!n)return null;let i=Number(t[n]?.duration?.());return Number.isFinite(i)&&i>0?i:null}function Fl(e){if(!(e instanceof HTMLMediaElement)||!Number.isFinite(e.duration))return null;let t=oi(e.getAttribute("data-playback-start"))??oi(e.getAttribute("data-media-start"))??0;return e.duration>t?e.duration-t:null}function Cl(e,t,n,i){let r=oi(e.getAttribute("data-duration"));return r!=null&&r>0?r:wl(e,t)??Fl(e)??Math.max(0,n-i)}function _l(e){for(let[t,n]of e){let i=t.parentElement;for(;i;){let r=e.get(i);if(r){n.parentId=r.id,r.children.push(n);break}i=i.parentElement}}}function Jr(e){let{startResolver:t,timelineRegistry:n,rootDuration:i}=e,r=new Map,o=document.querySelector("[data-composition-id]"),s=0;for(let u of document.querySelectorAll("[data-start]")){if(u===o||Al.has(u.tagName))continue;let a=t.resolveStartForElement(u,0);if(Cl(u,n,i,a)<=0)continue;let l={id:si(u)??`__clip-${s++}`,element:u,parentId:null,children:[]};r.set(u,l)}return _l(r),{roots:Array.from(r.values()).filter(u=>u.parentId===null)}}var Ml="data-hf-authored-duration",vl="data-hf-authored-end";function st(e){if(e==null||e==="")return null;let t=Number(e);return Number.isFinite(t)?t:null}function Tl(e){return st(e.getAttribute("data-duration"))}function Nl(e){return st(e.getAttribute("data-end"))}function Ll(e){return st(e.getAttribute(Ml))}function Rl(e){return st(e.getAttribute(vl))}function kl(e){let t=(e??"").trim();if(!t)return null;let n=st(t);if(n!=null)return{kind:"absolute",value:n};let i=t.match(/^([A-Za-z0-9_.:-]+)(?:\\s*([+-])\\s*([0-9]*\\.?[0-9]+))?$/);if(!i)return null;let r=(i[1]??"").trim();if(!r)return null;let o=i[2]??"+",s=i[3]??"0",u=Number.parseFloat(s),a=Number.isFinite(u)?Math.max(0,u):0,l=o==="-"?-a:a;return{kind:"reference",refId:r,offset:l}}function $e(e){let t=e.timelineRegistry??{},n=e.includeAuthoredTimingAttrs??!1,i=new WeakMap,r=new WeakMap,o=new Set,s=c=>{let p=document.getElementById(c);return p||(document.querySelector(`[data-composition-id="${CSS.escape(c)}"]`)??null)},u=c=>{let p=r.get(c);if(p!==void 0)return p;let f=null,x=Tl(c)??(n?Ll(c):null);if(x!=null&&x>0&&(f=x),f==null||f<=0){let E=Nl(c)??(n?Rl(c):null);if(E!=null){let b=l(c,0),g=E-b;Number.isFinite(g)&&g>0&&(f=g)}}if((f==null||f<=0)&&c instanceof HTMLMediaElement){let E=st(c.getAttribute("data-playback-start"))??st(c.getAttribute("data-media-start"))??0;Number.isFinite(c.duration)&&c.duration>E&&(f=(c.duration-E)/Tt(c))}if(f==null||f<=0){let E=c.getAttribute("data-composition-id");if(E){let b=t[E]??null;if(b&&typeof b.duration=="function")try{let g=Number(b.duration());Number.isFinite(g)&&g>0&&(f=g)}catch(g){L("runtime.startResolver.site1",g)}}}return f!=null&&Number.isFinite(f)&&f>0?(r.set(c,f),f):(r.set(c,null),null)},a=(c,p)=>{if(c.hasAttribute("data-composition-id")){let x=c.parentElement?.closest("[data-composition-id]");return x?l(x,p):0}let f=c.closest("[data-composition-id]");return f?l(f,p):0},l=(c,p)=>{let f=i.get(c);if(f!==void 0)return f??p;if(o.has(c))return p;o.add(c);try{let x=kl(c.getAttribute("data-start"));if(!x){if(c.hasAttribute("data-composition-id")){let _=c.parentElement;if(_&&(_.hasAttribute("data-composition-src")||_.hasAttribute("data-composition-id")||_.hasAttribute("data-composition-file"))){let N=l(_,p);return i.set(c,N),N}}return i.set(c,p),p}if(x.kind==="absolute"){let _=Math.max(0,x.value),N=Math.max(0,a(c,p)+_);return i.set(c,N),N}let E=s(x.refId);if(!E)return i.set(c,p),p;let b=l(E,0),g=u(E);if(g==null||g<=0){let _=Math.max(0,b+x.offset);return i.set(c,_),_}let A=Math.max(0,b+g+x.offset);return i.set(c,A),A}finally{o.delete(c)}};return{resolveStartForElement:(c,p=0)=>l(c,Math.max(0,p)),resolveDurationForElement:c=>u(c)}}function ai(e){let t=e.trim().toLowerCase();return!(!t||t==="main"||t.includes("caption")||t.includes("ambient"))}var Dl="data-hf-authored-duration",Il="data-hf-authored-end";function Ce(e){if(e==null||e==="")return null;let t=Number(e);return Number.isFinite(t)?t:null}function li(e){return Ce(e.getAttribute("data-duration"))??Ce(e.getAttribute(Dl))}function Xr(e){return Ce(e.getAttribute("data-end"))??Ce(e.getAttribute(Il))}function ui(...e){let t=e.filter(n=>Number.isFinite(n??null));return t.length===0?null:Math.max(...t)}var Yr={composition:0,video:1,image:2,element:3,audio:4};function Pl(e){if(e.length===0)return;let t=new Map;for(let s of e){let u=t.get(s.track)??new Set;u.add(s.kind),t.set(s.track,u)}if(!Array.from(t.values()).some(s=>s.size>1))return;let i=0,r=new Map,o=[...t.keys()].sort((s,u)=>s-u);for(let s of o){let u=t.get(s);if(u.size===1)r.set(`${s}:${[...u][0]}`,i++);else{let a=[...u].sort((l,c)=>(Yr[l]??99)-(Yr[c]??99));for(let l of a)r.set(`${s}:${l}`,i++)}}for(let s of e){let u=`${s.track}:${s.kind}`,a=r.get(u);a!=null&&(s.track=a)}}function kt(e){let t=String(e??"").trim();if(!t)return null;let n=t.toLowerCase();if(n.startsWith("data:")||n.startsWith("javascript:"))return null;try{return new URL(t,document.baseURI).toString()}catch{return t}}function Qr(e){let t=e.getAttribute("src")??e.getAttribute("data-src");if(t)return kt(t);let n=e.getAttribute("data-composition-src");if(n)return kt(n);let i=e.querySelector("img[src], video[src], audio[src], source[src]");return i?kt(i.getAttribute("src")):null}function Ol(e){let t=e.className;return typeof t!="string"?null:t.split(/\\s+/).map(n=>n.trim()).find(n=>n&&n!=="clip"&&!n.startsWith("__hf-"))??null}function Bl(e){if(!e)return null;try{return new URL(e,document.baseURI).pathname.split("/").filter(Boolean).at(-1)??null}catch{return e.split(/[\\\\/]/).filter(Boolean).at(-1)??null}}function Hl(e){let t=e.textContent?.replace(/\\s+/g," ").trim();return t?t.length>32?`${t.slice(0,31)}...`:t:null}function Rt(e){let t=e.replace(/\\.[^.]+$/i,"").replace(/[-_]+/g," ").replace(/\\s+/g," ").trim();return t?t.replace(/\\b\\w/g,n=>n.toUpperCase()):e}function Gl(e,t,n){let i=e.getAttribute("data-timeline-label")??e.getAttribute("data-label")??e.getAttribute("aria-label")??null;if(i?.trim())return i.trim();let r=e.getAttribute("data-composition-id");if(r)return Rt(r);let o=e.id;if(o)return Rt(o);let s=Ol(e);if(s)return Rt(s);let u=Bl(Qr(e));if(u)return Rt(u);let a=Hl(e);return a||`${Rt(t)} ${n+1}`}function Zr(e){let n=window.__timelines??{},i=$e({timelineRegistry:n,includeAuthoredTimingAttrs:!0}),r=O=>{if(!O)return null;let D=n[O]??null;if(!D||typeof D.duration!="function")return null;try{let G=Number(D.duration());return Number.isFinite(G)&&G>0?G:null}catch{return null}},o=O=>{let D=Ce(O.getAttribute("data-duration"));if(D!=null&&D>0)return D;let G=Ce(O.getAttribute("data-playback-start"))??Ce(O.getAttribute("data-media-start"))??0;return Number.isFinite(O.duration)&&O.duration>G?Math.max(0,(O.duration-G)/Tt(O)):null},s=()=>{let O=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(O.length===0)return null;let D=0;for(let G of O){let Q=G.hasAttribute("data-hf-auto-start")?i.resolveStartForElement(G,0):Math.max(0,Number(G.getAttribute("data-start")??0)||0);if(!Number.isFinite(Q))continue;let ae=o(G);ae==null||ae<=0||(D=Math.max(D,Math.max(0,Q)+ae))}return D>0?D:null},u=(O,D)=>{let G=[],Q=null,ae=null,j=null,z=O.parentElement;for(;z;){let Y=z.getAttribute("data-composition-id");Y&&(G.push(Y),!j&&z!==D&&(j=Y),Q==null&&(Q=i.resolveStartForElement(z,0)),ae==null&&(ae=Ce(z.getAttribute("data-duration"))??r(Y)??null)),z=z.parentElement}return{parentCompositionId:j,compositionAncestors:G.reverse(),inheritedStart:Q,inheritedDuration:ae}},a=document.querySelector("[data-composition-id]"),l=Array.from(document.querySelectorAll("[data-composition-id]")),c=a?.getAttribute("data-composition-id")??null,p=a?i.resolveStartForElement(a,0):0,f=s(),x=f!=null?Math.max(0,f-Math.max(0,p)):null,E=r(c),b=li(a??document.body),g=ui(...l.filter(O=>O!==a).map(O=>{let D=i.resolveStartForElement(O,0),G=i.resolveDurationForElement(O)??r(O.getAttribute("data-composition-id"))??null;return!Number.isFinite(D)||G==null||G<=0?null:Math.max(0,D)+G})),A=g!=null?Math.max(0,g-Math.max(0,p)):null,_=typeof E=="number"&&Number.isFinite(E)&&E>0?E:null,N=typeof b=="number"&&Number.isFinite(b)&&b>0?b:null,$=typeof x=="number"&&Number.isFinite(x)&&x>0?x:null,B=typeof A=="number"&&Number.isFinite(A)&&A>0?A:null,v=ui($,B),S=_!=null&&v!=null&&_>v+1,M=N??(S?v:ui(_,$,B))??null,R=(M!=null?p+M:null)??(typeof f=="number"&&Number.isFinite(f)&&f>0?f:null),W=(O,D)=>!Number.isFinite(D)||D<=0?0:R==null||!Number.isFinite(R)?D:!Number.isFinite(O)||O>=R?0:Math.max(0,Math.min(D,R-O)),q=[],ie=[],P=Array.from(document.querySelectorAll("[data-start], [data-track-index], [data-composition-id], video, audio, img")),se=0;for(let O=0;O<P.length;O+=1){let D=P[O];if(D===a||["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"].includes(D.tagName))continue;let G=u(D,a),Q=i.resolveStartForElement(D,G.inheritedStart??0),ae=D.getAttribute("data-composition-id"),j=li(D);if((j==null||j<=0)&&ae&&ae!==c&&(j=r(ae)),(j==null||j<=0)&&D instanceof HTMLMediaElement){let Me=Ce(D.getAttribute("data-playback-start"))??Ce(D.getAttribute("data-media-start"))??0;Number.isFinite(D.duration)&&D.duration>0&&(j=Math.max(0,D.duration-Me))}if(j==null||j<=0){let Me=G.inheritedDuration;if(Me!=null&&Me>0){let Ue=(G.inheritedStart??0)+Me;j=Math.max(0,Ue-Q)}}if(j==null||j<=0||(j=W(Q,j),j<=0))continue;let z=Q+j;se=Math.max(se,z);let Y=D.tagName.toLowerCase(),Pe=ae&&ae!==c?"composition":Y==="video"?"video":Y==="audio"?"audio":Y==="img"?"image":"element";q.push({id:si(D)??ae??null,label:Gl(D,Pe,q.length),start:Q,duration:j,track:Number.parseInt(D.getAttribute("data-track-index")??D.getAttribute("data-track")??String(O),10)||0,kind:Pe,tagName:Y,compositionId:D.getAttribute("data-composition-id"),compositionAncestors:G.compositionAncestors,parentCompositionId:G.parentCompositionId,nodePath:null,compositionSrc:kt(D.getAttribute("data-composition-src")),assetUrl:Qr(D),timelineRole:D.getAttribute("data-timeline-role"),timelineLabel:D.getAttribute("data-timeline-label"),timelineGroup:D.getAttribute("data-timeline-group"),timelinePriority:Ce(D.getAttribute("data-timeline-priority"))})}let Ee=new Set(q.map(O=>O.id)),H=a?.getAttribute("data-composition-id")??null,U=H?n[H]??null:null;if(U&&a){let O=U;if(typeof O.getChildren=="function")try{let D=O.getChildren(!0,!0,!1)??[],G=new Map;for(let j of a.children){let z=j;if(!z.id)continue;let Y=z.tagName.toLowerCase();Y==="script"||Y==="style"||Y==="link"||G.set(z,{id:z.id,start:1/0,end:-1/0})}let Q=j=>{let z=j;for(;z;){if(G.has(z))return z;if(z===a)return null;z=z.parentElement}return null};for(let j of D){if(typeof j.targets!="function"||typeof j.startTime!="function"||typeof j.duration!="function")continue;let z=j.startTime(),Y=j.parent;for(;Y&&Y!==U&&typeof Y.startTime=="function";)z+=Y.startTime(),Y=Y.parent;let Pe=z+j.duration();if(!(!Number.isFinite(z)||!Number.isFinite(Pe)))for(let Me of j.targets()){if(!(Me instanceof Element))continue;let At=Q(Me);if(!At)continue;let Ue=G.get(At);Ue&&(Ue.start=Math.min(Ue.start,z),Ue.end=Math.max(Ue.end,Pe))}}let ae=q.length>0?Math.max(...q.map(j=>j.track))+1:0;for(let[j,z]of G){if(z.start===1/0||z.end===-1/0)continue;let Y=j;if(Ee.has(Y.id))continue;let Pe=Math.max(0,z.end-z.start);if(Pe<=0)continue;let Me=W(z.start,Pe);Me<=0||(se=Math.max(se,z.start+Me),q.push({id:Y.id,label:Y.getAttribute("data-timeline-label")??Y.getAttribute("data-label")??Y.getAttribute("aria-label")??Y.id,start:z.start,duration:Me,track:Number.parseInt(Y.getAttribute("data-track-index")??Y.getAttribute("data-track")??"",10)||ae,kind:"element",tagName:Y.tagName.toLowerCase(),compositionId:Y.getAttribute("data-composition-id"),compositionAncestors:H?[H]:[],parentCompositionId:H,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:Y.getAttribute("data-timeline-role"),timelineLabel:Y.getAttribute("data-timeline-label"),timelineGroup:Y.getAttribute("data-timeline-group"),timelinePriority:Ce(Y.getAttribute("data-timeline-priority"))}),Ee.add(Y.id))}}catch(D){L("runtime.timeline.site1",D)}}if(a&&M!=null&&M>0){let O=q.length>0?Math.max(...q.map(D=>D.track))+1:0;for(let D of a.children){let G=D;if(!G.id||Ee.has(G.id))continue;let Q=G.getAttribute("data-timeline-role");if(Q!=="overlay"&&Q!=="persistent-overlay")continue;let ae=G.tagName.toLowerCase();if(ae==="script"||ae==="style"||ae==="link"||ae==="meta"||window.getComputedStyle(G).display==="none")continue;let z=W(0,M);z<=0||(se=Math.max(se,z),q.push({id:G.id,label:G.getAttribute("data-timeline-label")??G.getAttribute("data-label")??G.getAttribute("aria-label")??G.id,start:0,duration:z,track:Number.parseInt(G.getAttribute("data-track-index")??G.getAttribute("data-track")??"",10)||O,kind:"element",tagName:ae,compositionId:G.getAttribute("data-composition-id"),compositionAncestors:H?[H]:[],parentCompositionId:H,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:Q,timelineLabel:G.getAttribute("data-timeline-label"),timelineGroup:G.getAttribute("data-timeline-group"),timelinePriority:Ce(G.getAttribute("data-timeline-priority"))}),Ee.add(G.id))}}Pl(q);for(let O of l){if(O===a)continue;let D=O.getAttribute("data-composition-id");if(!D||!ai(D))continue;let G=i.resolveStartForElement(O,0),Q=li(O);if((Q==null||Q<=0)&&Xr(O)!=null){let Y=Xr(O);Q=Math.max(0,Y-G)}let ae=r(D),j=Q&&Q>0?Q:ae;if(j==null||j<=0)continue;let z=W(G,j);z<=0||ie.push({id:D,label:O.getAttribute("data-label")??D,start:G,duration:z,thumbnailUrl:kt(O.getAttribute("data-thumbnail-url")),avatarName:null})}let V=Math.max(1,se||1,M??0);return{source:"hf-preview",type:"timeline",durationInFrames:S&&N==null?Number.POSITIVE_INFINITY:Math.max(1,Math.ceil(V*Math.max(1,e.canonicalFps))),clips:q,scenes:ie,compositionWidth:Ce(a?.getAttribute("data-width"))??1920,compositionHeight:Ce(a?.getAttribute("data-height"))??1080}}var ce=al(Cs(),1),_s=ce.default,Jp=ce.default.stringify,Xp=ce.default.fromJSON,Yp=ce.default.plugin,Qp=ce.default.parse,Zp=ce.default.list,eh=ce.default.document,th=ce.default.comment,nh=ce.default.atRule,ih=ce.default.rule,rh=ce.default.decl,oh=ce.default.root,sh=ce.default.CssSyntaxError,ah=ce.default.Declaration,lh=ce.default.Container,uh=ce.default.Processor,ch=ce.default.Document,dh=ce.default.Comment,fh=ce.default.Warning,mh=ce.default.AtRule,ph=ce.default.Result,hh=ce.default.Input,gh=ce.default.Rule,xh=ce.default.Root,bh=ce.default.Node;var Ii="data-hf-authored-id",Ms="data-hf-inner-root";function Pi(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&")}function Oi(e){return e.replace(/\\\\/g,"\\\\\\\\").replace(/"/g,\'\\\\"\')}function lc(e){return e&&e.replace(/[^a-zA-Z0-9_-]/g,n=>`\\\\${n}`).replace(/^-?\\d/,n=>`\\\\${n}`)}function vs(e){let t=e.trim();return t?Array.from(new Set([t,lc(t)])).filter(Boolean):[]}function uc(e){return!!e&&/[\\w-]/.test(e)}function cc(e,t,n){let i=vs(t).sort((u,a)=>a.length-u.length);if(i.length===0)return e;let r="",o=0,s=null;for(let u=0;u<e.length;u+=1){let a=e[u],l=u>0?e[u-1]:"";if(s){r+=a,a===s&&l!=="\\\\"&&(s=null);continue}if(a===\'"\'||a==="\'"){s=a,r+=a;continue}if(a==="["){o+=1,r+=a;continue}if(a==="]"){o=Math.max(0,o-1),r+=a;continue}if(a==="#"&&o===0){let c=i.find(p=>e.startsWith(p,u+1));if(c){let p=e[u+1+c.length];if(!uc(p)){r+=n,u+=c.length;continue}}}r+=a}return r}function dc(e,t){let n=t?.trim();return n?cc(e,n,`[${Ii}="${Oi(n)}"]`):e}function fc(e,t,n,i,r){let o=dc(e,i),s=mc(o,t,n),u=s.trim();if(!u||/^(html|body|:root|\\*)$/i.test(u))return e;let a=new RegExp(`\\\\[\\\\s*data-composition-id\\\\s*=\\\\s*(["\'])${Pi(n)}\\\\1\\\\s*\\\\]`,"g");if(a.test(u))return u.replace(a,"").trim()===""?`${t}:not(:has([${Ms}])), ${t} > [${Ms}]`:s.replace(a,t);let l=s.match(/^\\s*/)?.[0]??"",c=s.match(/\\s*$/)?.[0]??"";if(r){let p=i?`[${Ii}="${Oi(i)}"]`:null;if(p&&u.startsWith(p)){let f=u.slice(p.length);return`${l}${t}${p}${f}${c}`}}return`${l}${t} ${u}${c}`}function mc(e,t,n){let i=Pi(n),r=String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${i}"|\'${i}\')\\s*\\]`,o=String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`;return e.replace(new RegExp(`${r}(?:${o})+`,"g"),t).replace(new RegExp(`(?:${o})+${r}`,"g"),t)}var pc=new Set(["keyframes","-webkit-keyframes","font-face"]);function hc(e){return e?.type==="atrule"}function gc(e){let t=e.parent;for(;t;){if(hc(t)&&pc.has(t.name.toLowerCase()))return!0;t=t.parent}return!1}function Bi(e,t,n,i,r){let o=t.trim();if(!e||!o)return e;let s=n||`[data-composition-id="${Oi(o)}"]`,u=_s.parse(e);return u.walkRules(a=>{gc(a)||(a.selectors=a.selectors.map(l=>fc(l,s,o,i,r?.compoundAuthoredRoot)))}),u.toResult({map:!1}).css}function Ts(e,t,n="[HyperFrames] composition script error:",i,r=t,o){let s=JSON.stringify(t),u=JSON.stringify(r),a=JSON.stringify(n),l=Pi(t),c=JSON.stringify(o?.trim()||null),p=JSON.stringify(i??null),f=JSON.stringify(String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${l}"|\'${l}\')\\s*\\]`),x=JSON.stringify(String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`),E=JSON.stringify(vs(o?.trim()||""));return`(function(){\n var __hfCompId = ${s};\n var __hfTimelineCompId = ${u};\n var __hfErrorLabel = ${a};\n var __hfAuthoredRootId = ${c};\n var __hfAuthoredRootAttr = ${JSON.stringify(Ii)};\n var __hfEscapeAttr = function(value) {\n return (value + "").replace(/\\\\\\\\/g, "\\\\\\\\\\\\\\\\").replace(/"/g, "\\\\\\\\\\\\"");\n };\n var __hfRootSelector = ${p} || (__hfCompId\n ? \'[data-composition-id="\' + __hfEscapeAttr(__hfCompId) + \'"]\'\n : "");\n var __hfRoot = null;\n var __hfRootSelectorPattern = ${f};\n var __hfTimingSelectorPattern = ${x};\n var __hfAuthoredRootIdForms = ${E};\n var __hfAuthoredRootSelector = __hfAuthoredRootId\n ? "[" + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(__hfAuthoredRootId) + \'"]\'\n : "";\n var __hfIsSelectorNameChar = function(char) {\n return !!char && /[\\\\w-]/.test(char);\n };\n var __hfReplaceAuthoredRootIdSelectors = function(selector) {\n if (!__hfAuthoredRootSelector || !__hfAuthoredRootIdForms.length || typeof selector !== "string") {\n return selector;\n }\n var result = "";\n var bracketDepth = 0;\n var quote = null;\n for (var index = 0; index < selector.length; index += 1) {\n var char = selector[index];\n var previousChar = index > 0 ? selector[index - 1] : "";\n if (quote) {\n result += char;\n if (char === quote && previousChar !== "\\\\\\\\") {\n quote = null;\n }\n continue;\n }\n if (char === \'"\' || char === "\'") {\n quote = char;\n result += char;\n continue;\n }\n if (char === "[") {\n bracketDepth += 1;\n result += char;\n continue;\n }\n if (char === "]") {\n bracketDepth = Math.max(0, bracketDepth - 1);\n result += char;\n continue;\n }\n if (char === "#" && bracketDepth === 0) {\n var matchedForm = null;\n for (var formIndex = 0; formIndex < __hfAuthoredRootIdForms.length; formIndex += 1) {\n var form = __hfAuthoredRootIdForms[formIndex];\n if (selector.slice(index + 1, index + 1 + form.length) === form) {\n matchedForm = form;\n break;\n }\n }\n if (matchedForm) {\n var nextChar = selector[index + 1 + matchedForm.length];\n if (!__hfIsSelectorNameChar(nextChar)) {\n result += __hfAuthoredRootSelector;\n index += matchedForm.length;\n continue;\n }\n }\n }\n result += char;\n }\n return result;\n };\n var __hfNormalizeSelector = function(selector) {\n if (!__hfCompId || typeof selector !== "string") return selector;\n var normalized = selector\n .replace(new RegExp(__hfRootSelectorPattern + \'(?:\' + __hfTimingSelectorPattern + \')+\', \'g\'), __hfRootSelector)\n .replace(new RegExp(\'(?:\' + __hfTimingSelectorPattern + \')+\' + __hfRootSelectorPattern, \'g\'), __hfRootSelector);\n if (__hfAuthoredRootSelector) {\n normalized = __hfReplaceAuthoredRootIdSelectors(normalized);\n }\n return normalized;\n };\n var __hfFindRoot = function() {\n if (!__hfRoot && __hfRootSelector) {\n __hfRoot = window.document.querySelector(__hfRootSelector);\n }\n return __hfRoot;\n };\n var __hfContains = function(node) {\n var root = __hfFindRoot();\n return !root || node === root || root.contains(node);\n };\n var __hfQueryAll = function(selector) {\n var root = __hfFindRoot();\n if (!root || typeof selector !== "string") {\n return window.document.querySelectorAll(selector);\n }\n return Array.prototype.filter.call(window.document.querySelectorAll(__hfNormalizeSelector(selector)), function(node) {\n return __hfContains(node);\n });\n };\n var __hfQueryOne = function(selector) {\n var matches = __hfQueryAll(selector);\n return matches[0] || null;\n };\n var __hfGetElementById = function(id) {\n var found = window.document.getElementById(id);\n if (found && __hfContains(found)) return found;\n var root = __hfFindRoot();\n if (!root) return found || null;\n var idValue = id + "";\n if (__hfAuthoredRootId && __hfAuthoredRootId === idValue && root.getAttribute && root.getAttribute(__hfAuthoredRootAttr) === idValue) {\n return root;\n }\n if (root.id === idValue) return root;\n if (typeof root.querySelector !== "function") return null;\n try {\n var authoredRootMatch = root.querySelector(\'[\' + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(idValue) + \'"]\');\n if (authoredRootMatch) return authoredRootMatch;\n } catch {}\n if (typeof CSS !== "undefined" && CSS && typeof CSS.escape === "function") {\n try {\n return root.querySelector("#" + CSS.escape(idValue)) || null;\n } catch {}\n }\n try {\n return root.querySelector(\'[id="\' + __hfEscapeAttr(idValue) + \'"]\') || null;\n } catch {}\n return null;\n };\n var __hfScopedDocument = typeof Proxy === "function"\n ? new Proxy(window.document, {\n get: function(target, prop, receiver) {\n if (prop === "querySelector") return __hfQueryOne;\n if (prop === "querySelectorAll") return __hfQueryAll;\n if (prop === "getElementById") return __hfGetElementById;\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n })\n : window.document;\n var __hfTimelineRegistryProxy = null;\n var __hfGetTimelineRegistry = function() {\n window.__timelines = window.__timelines || {};\n if (!__hfCompId || __hfCompId === __hfTimelineCompId || typeof Proxy !== "function") {\n return window.__timelines;\n }\n if (!__hfTimelineRegistryProxy) {\n __hfTimelineRegistryProxy = new Proxy(window.__timelines, {\n get: function(target, prop, receiver) {\n return Reflect.get(target, prop === __hfCompId ? __hfTimelineCompId : prop, target);\n },\n set: function(target, prop, value, receiver) {\n return Reflect.set(target, prop === __hfCompId ? __hfTimelineCompId : prop, value, target);\n },\n });\n }\n return __hfTimelineRegistryProxy;\n };\n var __hfScopedWindow = typeof Proxy === "function"\n ? new Proxy(window, {\n get: function(target, prop, receiver) {\n if (prop === "__timelines") return __hfGetTimelineRegistry();\n // Inside a sub-composition, __hyperframes is passed as a bare script\n // param bound to the SCOPED variant (per-comp getVariables). But\n // authors routinely write the documented window.__hyperframes.\n // getVariables() form, which would otherwise fall through to the host\n // page\'s base __hyperframes and return the WRONG (or empty) variables\n // for this instance. Route it to the scoped variant too so both\n // spellings resolve to this composition\'s own variables.\n // (__hfScopedHyperframes is a hoisted var assigned below, before any\n // sub-comp script -- the only code that reads this -- runs.)\n if (prop === "__hyperframes") return __hfScopedHyperframes;\n return Reflect.get(target, prop, target);\n },\n set: function(target, prop, value, receiver) {\n if (prop === "__timelines") {\n target.__timelines = value || {};\n __hfTimelineRegistryProxy = null;\n return true;\n }\n return Reflect.set(target, prop, value, target);\n },\n })\n : window;\n var __hfResolveGsapTarget = function(target) {\n if (typeof target !== "string") return target;\n return __hfQueryAll(target);\n };\n var __hfScopeTimeline = function(timeline) {\n if (!timeline || timeline.__hfScopedCompositionRoot === __hfFindRoot()) return timeline;\n ["to", "from", "fromTo", "set"].forEach(function(method) {\n var original = timeline[method];\n if (typeof original !== "function") return;\n timeline[method] = function(target) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(target);\n return original.apply(timeline, args);\n };\n });\n try {\n Object.defineProperty(timeline, "__hfScopedCompositionRoot", {\n value: __hfFindRoot(),\n configurable: true,\n });\n } catch {\n // Best-effort: timelines coming from user code may have a frozen target\n // or a non-extensible defineProperty path. Swallow \\u2014 the scoped root\n // is an enrichment, not a correctness invariant for playback.\n }\n return timeline;\n };\n var __hfBaseGsap = typeof gsap === "undefined" ? window.gsap : gsap;\n var __hfScopedGsap = !__hfBaseGsap || typeof Proxy !== "function"\n ? __hfBaseGsap\n : new Proxy(__hfBaseGsap, {\n get: function(target, prop, receiver) {\n if (prop === "timeline") {\n return function() {\n return __hfScopeTimeline(target.timeline.apply(target, arguments));\n };\n }\n if (prop === "to" || prop === "from" || prop === "fromTo" || prop === "set") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return target[prop].apply(target, args);\n };\n }\n if (prop === "utils" && target.utils && typeof Proxy === "function") {\n return new Proxy(target.utils, {\n get: function(utilsTarget, utilsProp, utilsReceiver) {\n if (utilsProp === "toArray") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return utilsTarget.toArray.apply(utilsTarget, args);\n };\n }\n if (utilsProp === "selector") {\n return function(base) {\n var baseEl = typeof base === "string" ? __hfQueryOne(base) : base;\n var root = baseEl || __hfFindRoot();\n return function(selector) {\n if (!root || typeof selector !== "string") return [];\n return Array.prototype.filter.call(\n window.document.querySelectorAll(__hfNormalizeSelector(selector)),\n function(node) {\n return node === root || (typeof root.contains === "function" && root.contains(node));\n },\n );\n };\n };\n }\n var value = Reflect.get(utilsTarget, utilsProp, utilsTarget);\n return typeof value === "function" ? value.bind(utilsTarget) : value;\n },\n });\n }\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n });\n var __hfBaseHyperframes = window.__hyperframes;\n var __hfScopedHyperframes = !__hfBaseHyperframes\n ? __hfBaseHyperframes\n : Object.assign({}, __hfBaseHyperframes, {\n getVariables: function() {\n var byComp = window.__hfVariablesByComp;\n var scoped = byComp && __hfTimelineCompId ? byComp[__hfTimelineCompId] : null;\n return scoped ? Object.assign({}, scoped) : {};\n },\n });\n var __hfRun = function() {\n try {\n (function(document, gsap, window, __hyperframes) {\n${e.replace(/<\\/(script)/gi,"<\\\\/$1")}\n }).call(window, __hfScopedDocument, __hfScopedGsap, __hfScopedWindow, __hfScopedHyperframes);\n } catch (_err) {\n console.error(__hfErrorLabel, __hfCompId, _err);\n }\n };\n __hfFindRoot();\n __hfRun();\n})();`}function Ns(){if(typeof document>"u")return{};let e=Hi(document.documentElement),t=xc();return{...e,...t}}function Hi(e){if(!e)return{};let t=e.getAttribute("data-composition-variables");if(!t)return{};let n;try{n=JSON.parse(t)}catch{return{}}if(!Array.isArray(n))return{};let i={};for(let r of n){if(!r||typeof r!="object")continue;let o=r;typeof o.id!="string"||!("default"in o)||(i[o.id]=o.default)}return i}function xc(){if(typeof window>"u")return{};let e=window.__hfVariables;return!e||typeof e!="object"||Array.isArray(e)?{}:e}var bc=8e3,yc=/^(?![a-zA-Z][a-zA-Z\\d+\\-.]*:)(?!\\/\\/)(?!\\/)(?!\\.\\.?\\/).+/,Sc=/\\burl\\(\\s*(["\']?)([^)"\']+)\\1\\s*\\)/g,Ec=["src","href"];function Ac(e){return!e||e.startsWith("http://")||e.startsWith("https://")||e.startsWith("//")||e.startsWith("data:")||e.startsWith("#")||e.startsWith("/")}function Rs(e,t){if(!t)return e;let n=e.trim();if(Ac(n)||!n.startsWith("../")&&n!=="..")return e;try{return new URL(n,t).href}catch{return e}}function ks(e,t){return!t||!e?e:e.replace(Sc,(n,i,r)=>{let o=Rs(r||"",t);return o===r?n:`url(${i||""}${o}${i||""})`})}function wc(e,t){for(let n of Array.from(e.querySelectorAll("[src], [href]")))for(let i of Ec){let r=n.getAttribute(i);if(r==null)continue;let o=Rs(r,t);o!==r&&n.setAttribute(i,o)}}function Fc(e,t){for(let n of Array.from(e.querySelectorAll("[style]"))){let i=n.getAttribute("style");if(i==null)continue;let r=ks(i,t);r!==i&&n.setAttribute("style",r)}}function Cc(e,t){for(let n of Array.from(e.querySelectorAll("style"))){let i=n.textContent||"",r=ks(i,t);r!==i&&(n.textContent=r)}}function Ds(e,t){if(t){wc(e,t),Fc(e,t),Cc(e,t);for(let n of Array.from(e.querySelectorAll("template")))Ds(n.content,t)}}function _c(e,t){return`${e}__hf${t}`}var Mc=e=>new Promise(t=>{let n=!1,i=Date.now(),r=null,o=s=>{n||(n=!0,r!=null&&window.clearTimeout(r),t({status:s,elapsedMs:Math.max(0,Date.now()-i)}))};e.addEventListener("load",()=>o("load"),{once:!0}),e.addEventListener("error",()=>o("error"),{once:!0}),r=window.setTimeout(()=>o("timeout"),bc)});function Gi(e){for(;e.firstChild;)e.removeChild(e.firstChild);e.textContent=""}var vc=["data-composition-id","data-composition-file","data-start","data-duration","data-end","data-track-index","data-track","data-composition-src","data-hf-authored-duration","data-hf-authored-end"];function Tc(e){let t=document.importNode(e,!0),n=t.getAttribute("id")?.trim();for(let o of vc)t.removeAttribute(o);n&&(t.removeAttribute("id"),t.setAttribute("data-hf-authored-id",n)),t.setAttribute("data-hf-inner-root","true");let i=t.getAttribute("data-width"),r=t.getAttribute("data-height");return t.style.width=i?`${i}px`:"100%",t.style.height=r?`${r}px`:"100%",t}function Ls(e,t){let n=e.trim();if(!n)return e;try{return yc.test(n)?new URL(n,document.baseURI).toString():t?new URL(n,t).toString():new URL(n,document.baseURI).toString()}catch{return e}}function Nc(e){let t=e.getAttribute("data-variable-values");if(!t)return{};let n;try{n=JSON.parse(t)}catch{return{}}return!n||typeof n!="object"||Array.isArray(n)?{}:n}function Mn(e){let t=(e.getAttribute("data-composition-id")||"").trim()||null;return{authoredCompositionId:(e.getAttribute("data-hf-original-composition-id")||t||"").trim()||null,runtimeCompositionId:t}}function Lc(e){let t=new Map;for(let n of e){let i=Mn(n).authoredCompositionId||"";i&&t.set(i,(t.get(i)||0)+1)}return t}function Is(e){let t=Mn(e).authoredCompositionId;return t?!!document.querySelector(`template#${CSS.escape(t)}-template`):!1}function Rc(e){return!!e.querySelector(\'[data-hf-inner-root="true"]\')}function kc(e){return e.hasAttribute("data-composition-src")?!0:Is(e)?e.children.length===0||e.hasAttribute("data-hf-original-composition-id")?!0:Rc(e):!1}function Ui(){return Array.from(document.querySelectorAll("[data-composition-src], [data-composition-id]")).filter(t=>t.hasAttribute("data-composition-src")?!0:Is(t))}function Ps(){let e=window.__hfVariablesByComp;if(!e)return;let t=new Set(Ui().map(n=>Mn(n).runtimeCompositionId).filter(n=>!!n));for(let n of Object.keys(e))t.has(n)||delete e[n]}function Os(e,t=Lc(e)){let n=new Map,i=new Map;for(let r of e){let{authoredCompositionId:o,runtimeCompositionId:s}=Mn(r),u=kc(r);if(!o){i.set(r,{authoredCompositionId:null,runtimeCompositionId:s});continue}let a=(t.get(o)||0)>1,l=s||o;if(u){let c=a?(n.get(o)||0)+1:0;a&&n.set(o,c),l=a?_c(o,c):o,a?r.setAttribute("data-hf-original-composition-id",o):r.removeAttribute("data-hf-original-composition-id"),r.setAttribute("data-composition-id",l),s&&s!==l&&window.__hfVariablesByComp&&delete window.__hfVariablesByComp[s]}i.set(r,{authoredCompositionId:o,runtimeCompositionId:l})}return i}async function Wi(e){let t=null;e.authoredCompositionId&&(t=Array.from(e.sourceNode.querySelectorAll("[data-composition-id]")).find(x=>x.getAttribute("data-composition-id")===e.authoredCompositionId)??null);let n=t??e.sourceNode,i=t?.getAttribute("data-composition-id")?.trim()||e.authoredCompositionId||null,r=e.runtimeCompositionId||i||null,o=t?.getAttribute("id")?.trim()||null,s=r?`[data-composition-id="${CSS.escape(r)}"]`:void 0;if(e.headLinks)for(let f of e.headLinks){let x=f.getAttribute("href")||"";x&&(document.head.querySelector(`link[href="${CSS.escape(x)}"]`)||document.head.appendChild(f.cloneNode(!0)))}if(e.headStyles)for(let f of e.headStyles){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=Bi(x.textContent||"",i,s,o)),document.head.appendChild(x),e.injectedStyles.push(x))}let u=Array.from(n.querySelectorAll("style"));for(let f of u){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=Bi(x.textContent||"",i,s,o)),document.head.appendChild(x),e.injectedStyles.push(x))}let a=[];if(e.headScripts)for(let f of e.headScripts){let x=f.getAttribute("type")?.trim()??"",E=f.getAttribute("src")?.trim()??"";if(E){let b=Ls(E,e.compositionUrl);a.push({kind:"external",src:b,type:x})}else{let b=f.textContent?.trim()??"";b&&a.push({kind:"inline",content:b,type:x,scopeCompositionId:i})}}let l=Array.from(n.querySelectorAll("script")),c=[...a];for(let f of l){let x=f.getAttribute("type")?.trim()??"",E=f.getAttribute("src")?.trim()??"";if(E){let b=Ls(E,e.compositionUrl);c.push({kind:"external",src:b,type:x})}else{let b=f.textContent?.trim()??"";b&&c.push({kind:"inline",content:b,type:x,scopeCompositionId:i})}f.parentNode?.removeChild(f)}let p=Array.from(n.querySelectorAll("style"));for(let f of p)f.parentNode?.removeChild(f);if(t){let f=t.getAttribute("data-width"),x=t.getAttribute("data-height"),E=e.parseDimensionPx(f),b=e.parseDimensionPx(x);f&&e.host.setAttribute("data-width",f),x&&e.host.setAttribute("data-height",x),E&&e.host instanceof HTMLElement&&(e.host.style.width=E),b&&e.host instanceof HTMLElement&&(e.host.style.height=b),t.hasAttribute("data-timeline-locked")&&e.host.setAttribute("data-timeline-locked",""),e.host.appendChild(Tc(t))}else e.hasTemplate?e.host.appendChild(document.importNode(n,!0)):e.host.innerHTML=e.fallbackBodyInnerHtml;if(r){let f={...e.declaredVariableDefaults??{},...Nc(e.host)};Object.keys(f).length>0?(window.__hfVariablesByComp||(window.__hfVariablesByComp={}),window.__hfVariablesByComp[r]=f):window.__hfVariablesByComp&&delete window.__hfVariablesByComp[r]}for(let f of c){let x=document.createElement("script");if(f.type&&(x.type=f.type),x.async=!1,f.kind==="external"?x.src=f.src:f.type.toLowerCase()==="module"?x.textContent=f.content:f.scopeCompositionId?x.textContent=Ts(f.content,f.scopeCompositionId,"[HyperFrames] composition script error:",s,r||f.scopeCompositionId,o):x.textContent=`(function(){${f.content}})();`,document.body.appendChild(x),e.injectedScripts.push(x),f.kind==="external"){let E=await Mc(x);E.status!=="load"&&e.onDiagnostic?.({code:"external_composition_script_load_issue",details:{hostCompositionId:e.authoredCompositionId,runtimeCompositionId:e.runtimeCompositionId,hostCompositionSrc:e.hostCompositionSrc,resolvedScriptSrc:f.src,loadStatus:E.status,elapsedMs:E.elapsedMs}})}}}async function Bs(e){let t=Ui();if(Ps(),t.length===0)return;let n=Os(t),i=t.filter(r=>{if(r.hasAttribute("data-composition-src")||r.children.length>0)return!1;let o=n.get(r)?.authoredCompositionId;return o?!!document.querySelector(`template#${CSS.escape(o)}-template`):!1});if(i.length!==0)for(let r of i){let o=n.get(r),s=o?.authoredCompositionId;if(!s)continue;let u=document.querySelector(`template#${CSS.escape(s)}-template`);Gi(r),await Wi({host:r,authoredCompositionId:s,runtimeCompositionId:o?.runtimeCompositionId||s,hostCompositionSrc:`template#${s}-template`,sourceNode:u.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:null,injectedStyles:e.injectedStyles,injectedScripts:e.injectedScripts,parseDimensionPx:e.parseDimensionPx,onDiagnostic:e.onDiagnostic})}}async function Hs(e){let t=Ui();if(Ps(),t.length===0)return;let n=Os(t),i=t.filter(r=>r.hasAttribute("data-composition-src"));i.length!==0&&await Promise.all(i.map(async r=>{let o=r.getAttribute("data-composition-src");if(!o)return;let s=n.get(r),u=s?.authoredCompositionId||null,a=s?.runtimeCompositionId||u||null,l=null;try{l=new URL(o,document.baseURI)}catch{l=null}Gi(r);try{let c=u!=null?document.querySelector(`template#${CSS.escape(u)}-template`):null;if(c){await Wi({host:r,authoredCompositionId:u,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:c.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:l,injectedStyles:e.injectedStyles,injectedScripts:e.injectedScripts,parseDimensionPx:e.parseDimensionPx,onDiagnostic:e.onDiagnostic});return}let p=await fetch(o);if(!p.ok)throw new Error(`HTTP ${p.status}`);let f=await p.text(),E=new DOMParser().parseFromString(f,"text/html");Ds(E,l);let b=(u?E.querySelector(`template#${CSS.escape(u)}-template`):null)??E.querySelector("template"),g=b?b.content:E.body,A=b?void 0:Array.from(E.head.querySelectorAll("style")),_=b?void 0:Array.from(E.head.querySelectorAll("script")),N=b?void 0:Array.from(E.head.querySelectorAll(\'link[rel="stylesheet"], link[rel="preconnect"]\'));await Wi({host:r,authoredCompositionId:u,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:g,hasTemplate:!!b,fallbackBodyInnerHtml:E.body.innerHTML,compositionUrl:l,injectedStyles:e.injectedStyles,injectedScripts:e.injectedScripts,parseDimensionPx:e.parseDimensionPx,headStyles:A,headScripts:_,headLinks:N,declaredVariableDefaults:Hi(E.documentElement),onDiagnostic:e.onDiagnostic})}catch(c){e.onDiagnostic?.({code:"external_composition_load_failed",details:{hostCompositionId:u,runtimeCompositionId:a,hostCompositionSrc:o,errorMessage:c instanceof Error?c.message:"unknown_error"}}),Gi(r)}}))}function Dc(e){return e instanceof HTMLElement?e.dataset.captionWrapper!=="true"?e:e.querySelector(":scope > span")??null:null}function Ic(){let e=[],t=document.querySelectorAll(".caption-group");for(let n of t)for(let i of n.children){if(!(i instanceof HTMLElement))continue;let r=i.dataset.captionWrapper==="true"?i.querySelector(":scope > span"):i.tagName==="SPAN"?i:null;r&&e.push(r)}return e}function Pc(e){let t=e.parentElement;if(t?.dataset.captionWrapper==="true")return t;let n=document.createElement("span");return n.style.display="inline-block",n.dataset.captionWrapper="true",e.parentNode?.insertBefore(n,e),n.appendChild(e),n}function Vi(){let e=window.gsap;e&&document.querySelectorAll(".caption-group").length!==0&&fetch("caption-overrides.json").then(t=>t.ok?t.json():null).then(t=>{if(!t||!Array.isArray(t)||t.length===0)return;let n=Ic();for(let i of t){let r=null;if(i.wordId&&(r=Dc(document.getElementById(i.wordId))),!r&&i.wordIndex!==void 0&&(r=n[i.wordIndex]??null),!r)continue;let o={},s={};if(i.x!==void 0&&(o.x=i.x),i.y!==void 0&&(o.y=i.y),i.scale!==void 0&&(o.scale=i.scale),i.rotation!==void 0&&(o.rotation=i.rotation),i.opacity!==void 0&&(s.opacity=i.opacity),i.fontSize!==void 0&&(s.fontSize=`${i.fontSize}px`),i.fontWeight!==void 0&&(s.fontWeight=i.fontWeight),i.fontFamily!==void 0&&(s.fontFamily=i.fontFamily),i.activeColor||i.dimColor){let a=e.getTweensOf(r).filter(c=>c.vars.color!==void 0).sort((c,p)=>c.startTime()-p.startTime()),l=a.length>0?String(a[0].vars.color):"";for(let c of a)String(c.vars.color)===l?i.dimColor&&(c.vars.color=i.dimColor):i.activeColor&&(c.vars.color=i.activeColor);i.dimColor&&e.set(r,{color:i.dimColor})}if(Object.keys(s).length>0&&e.set(r,s),Object.keys(o).length>0){let u=Pc(r);e.set(u,o)}}}).catch(()=>{})}var Us="data-hf-edit-base-x",Vs="data-hf-edit-base-y",zi="data-hf-edit-original-translate",vn=e=>{let t=parseFloat(e??"");return Number.isFinite(t)?t:0},Oc=e=>{let t=[],n=0,i="";for(let r of e.trim())r==="("&&(n+=1),r===")"&&(n=Math.max(0,n-1)),/\\s/.test(r)&&n===0?(i&&t.push(i),i=""):i+=r;return i&&t.push(i),t},Gs=/^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)px$/,qi=(e,t)=>Gs.test(e)&&Gs.test(t)?`${parseFloat(e)+parseFloat(t)}px`:`calc(${e} + ${t})`,Bc=(e,t,n)=>{if(!e||e==="none")return`${t} ${n}`;let[i,r,o]=Oc(e);if(i===void 0)return`${t} ${n}`;if(r===void 0)return`${qi(i,t)} ${n}`;let s=o===void 0?"":` ${o}`;return`${qi(i,t)} ${qi(r,n)}${s}`},Hc=e=>{try{e.ownerDocument.defaultView?.gsap?.getProperty?.(e,"x")}catch{}},Gc=e=>{let t=e.style.getPropertyValue("translate").trim();if(t)return t==="none"?"":t;try{let n=e.ownerDocument.defaultView,i=n?n.getComputedStyle(e).getPropertyValue("translate").trim():"";return i==="none"?"":i}catch{return""}},Ws=new WeakMap;function Wc(e,t){let n=Ws.get(e);if(!t?.force&&n!==void 0&&e.style.getPropertyValue("translate")!==n){ot("position_edit_fold_skipped",{hfId:e.getAttribute("data-hf-id")});return}let i=vn(e.getAttribute("data-x"))-vn(e.getAttribute(Us)),r=vn(e.getAttribute("data-y"))-vn(e.getAttribute(Vs));e.hasAttribute(zi)||e.setAttribute(zi,Gc(e)),n===void 0&&Hc(e);let o=e.getAttribute(zi)??"",s=Bc(o,`${i}px`,`${r}px`);e.style.setProperty("translate",s),Ws.set(e,e.style.getPropertyValue("translate"))}function ji(e){let t=e.querySelectorAll(`[${Us}], [${Vs}]`),n=0;for(let i=0;i<t.length;i++){let r=t[i];r instanceof HTMLElement&&(Wc(r),n+=1)}return n}var Qt="data-color-grading",zs="__hf_color_grading_",Uc="rec709",Tn={exposure:0,contrast:0,highlights:0,shadows:0,whites:0,blacks:0,temperature:0,tint:0,vibrance:0,saturation:0},Nn={vignette:0,vignetteMidpoint:.5,vignetteRoundness:0,vignetteFeather:.65,grain:0,grainSize:.25,grainRoughness:.5},Ln={blur:0,pixelate:0},qs=Object.keys(Tn),Vc=Object.keys(Nn),js=Object.keys(Ln);function Ae(e,t,n={},i={}){return{id:e,label:t,adjust:{...Tn,...n},details:{...Nn,...i},effects:{...Ln}}}var zc=[Ae("neutral","Neutral"),Ae("natural-lift","Natural Lift",{exposure:.04,contrast:.06,highlights:-.06,shadows:.08,saturation:.05}),Ae("fresh-pop","Fresh Pop",{exposure:.08,contrast:.12,whites:.06,shadows:.04,temperature:-.02,vibrance:.08,saturation:.16}),Ae("warm-daylight","Warm Daylight",{exposure:.06,contrast:.07,highlights:-.06,shadows:.08,temperature:.18,saturation:.08}),Ae("clean-studio","Clean Studio",{contrast:.08,highlights:-.08,shadows:.06,temperature:-.08,tint:.03,saturation:.04}),Ae("skin-soft","Skin Soft",{exposure:.04,contrast:-.03,highlights:-.12,shadows:.12,temperature:.08,tint:.02,saturation:.04}),Ae("food-pop","Food Pop",{exposure:.06,contrast:.1,shadows:.06,temperature:.14,vibrance:.1,saturation:.18}),Ae("night-lift","Night Lift",{exposure:.08,contrast:.08,highlights:-.18,shadows:.2,blacks:-.08,saturation:.04},{vignette:.12}),Ae("muted-editorial","Muted Editorial",{exposure:-.02,contrast:.08,highlights:-.08,shadows:.06,blacks:-.05,temperature:-.03,saturation:-.12},{vignette:.1}),Ae("vintage-wash","Vintage Wash",{exposure:.03,contrast:-.12,highlights:-.1,shadows:.16,whites:-.04,blacks:.08,temperature:.13,vibrance:-.08,saturation:-.08},{vignette:.18}),Ae("mono-clean","Mono Clean",{contrast:.12,highlights:-.04,shadows:.04,blacks:-.08,saturation:-1}),Ae("mono-fade","Mono Fade",{contrast:-.04,highlights:-.06,shadows:.1,blacks:.12,saturation:-1},{vignette:.08}),Ae("warm-clean","Warm Clean",{exposure:.05,contrast:.08,highlights:-.08,shadows:.08,temperature:.16,vibrance:.04,saturation:.06}),Ae("cool-clean","Cool Clean",{contrast:.06,highlights:-.06,shadows:.06,temperature:-.12,tint:.04,saturation:.04}),Ae("soft-boost","Soft Boost",{exposure:.06,contrast:-.04,highlights:-.14,shadows:.16,vibrance:.08,saturation:.1}),Ae("bright-pop","Bright Pop",{exposure:.12,contrast:.12,whites:.08,blacks:-.04,vibrance:.08,saturation:.14}),Ae("deep-contrast","Deep Contrast",{exposure:-.03,contrast:.2,highlights:-.08,shadows:-.08,blacks:-.12,saturation:.06})],qc=new Map(zc.map(e=>[e.id,e])),jc=/^\\$(?:\\{([A-Za-z0-9_.:-]+)\\}|([A-Za-z0-9_.:-]+))$/,$c={exposure:{min:-2,max:2},contrast:{min:-1,max:1},highlights:{min:-1,max:1},shadows:{min:-1,max:1},whites:{min:-1,max:1},blacks:{min:-1,max:1},temperature:{min:-1,max:1},tint:{min:-1,max:1},vibrance:{min:-1,max:1},saturation:{min:-1,max:1}},Kc={vignette:{min:0,max:1},vignetteMidpoint:{min:0,max:1},vignetteRoundness:{min:-1,max:1},vignetteFeather:{min:0,max:1},grain:{min:0,max:1},grainSize:{min:0,max:1},grainRoughness:{min:0,max:1}},Jc={blur:{min:0,max:1},pixelate:{min:0,max:1}};function ut(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Xc(e,t,n){return Number.isFinite(e)?Math.min(n,Math.max(t,e)):0}function $s(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?Math.min(1,Math.max(0,n)):t}function $i(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?Xc(n,t.min,t.max):0}function Yc(e){if(e==null)return null;let t=String(e).trim();return t||null}function Qc(e){if(e==null)return null;if(typeof e=="string"){let n=e.trim();return n?{src:n,intensity:1}:null}if(!ut(e))return null;let t=e.src;return typeof t!="string"||t.trim()===""?null:{src:t.trim(),intensity:$s(e.intensity,1)}}function Zc(e){if(typeof e=="string"){let t=e.trim();if(!t)return null;if(t.startsWith("{"))try{let n=JSON.parse(t);return ut(n)?n:null}catch{return null}return{preset:t,intensity:1}}return ut(e)?e:null}function ed(e,t){let n=e.trim().match(jc);if(!n)return e;let i=n[1]??n[2]??"";return i&&Object.hasOwn(t,i)?t[i]:e}function Ki(e,t){if(typeof e=="string"){let i=ed(e,t);if(i!==e)return i;let r=e.trim();if(!r.startsWith("{"))return e;try{return Ki(JSON.parse(r),t)}catch{return e}}if(!ut(e))return e;let n={};for(let[i,r]of Object.entries(e))n[i]=Ki(r,t);return n}function td(e){return e?qc.get(e)??null:null}function Ji(e){let t=Zc(e);if(!t||t.enabled===!1)return null;let n=Yc(t.preset),i=td(n),r=i?.adjust??Tn,o=i?.details??Nn,s=i?.effects??Ln,u=ut(t.adjust)?t.adjust:{},a=ut(t.details)?t.details:{},l=ut(t.effects)?t.effects:{},c=qs.reduce((x,E)=>(x[E]=$i(u[E]??r[E],$c[E]),x),{...Tn}),p=Vc.reduce((x,E)=>(x[E]=$i(a[E]??o[E],Kc[E]),x),{...Nn}),f=js.reduce((x,E)=>(x[E]=$i(l[E]??s[E],Jc[E]),x),{...Ln});return{enabled:!0,preset:n,intensity:$s(t.intensity,1),adjust:c,details:p,effects:f,lut:Qc(t.lut),colorSpace:typeof t.colorSpace=="string"&&t.colorSpace.trim()?t.colorSpace.trim():Uc}}function Ks(e,t){return Ji(Ki(e,t))}function Zt(e){return!e?.enabled||e.intensity===0?!1:e.lut&&e.lut.intensity!==0?!0:qs.some(t=>Math.abs(e.adjust[t])>1e-4)||Math.abs(e.details.vignette)>1e-4||Math.abs(e.details.grain)>1e-4||js.some(t=>Math.abs(e.effects[t])>1e-4)}var Se=class extends Error{constructor(n,i=null){super(i==null?n:`${n} at line ${i}`);xe(this,"lineNumber");this.name="CubeLutParseError",this.lineNumber=i}},nd=[0,0,0],id=[1,1,1],Yi=64;function rd(e){let t=!1;for(let n=0;n<e.length;n++){let i=e[n];if(i===\'"\'&&(t=!t),i==="#"&&!t)return e.slice(0,n)}return e}function Qe(e,t){let n=Number(e);if(!Number.isFinite(n))throw new Se(`Invalid number "${e}"`,t);return n}function Js(e,t,n){if(e.length!==3)throw new Se(`${t} expects three numbers`,n);return[Qe(e[0],n),Qe(e[1],n),Qe(e[2],n)]}function Xs(e,t,n){if(!e)throw new Se(`${t} expects a size`,n);let i=Number(e);if(!Number.isInteger(i)||i<2)throw new Se(`${t} must be an integer greater than 1`,n);return i}function od(e,t){if(t[0]<=e[0]||t[1]<=e[1]||t[2]<=e[2])throw new Se("DOMAIN_MAX values must be greater than DOMAIN_MIN values")}function sd(e){let t=/^TITLE\\s+"([^"]*)"\\s*$/i.exec(e);if(t)return t[1]??null;let n=/^TITLE\\s+(.+)\\s*$/i.exec(e);return n&&(n[1]??"").trim()||null}function ad(e){return/^[+-]?(?:\\d|\\.\\d)/.test(e)}function Ys(e,t={}){let n=t.maxSize??Yi,i=null,r=nd,o=id,s=null,u=null,a=[],l=e.replace(/^\\uFEFF/,"").split(/\\r?\\n/);for(let p=0;p<l.length;p++){let f=p+1,x=rd(l[p]??"").trim();if(!x)continue;let E=x.split(/\\s+/),b=(E[0]??"").toUpperCase(),g=E.slice(1);if(b==="TITLE"){i=sd(x);continue}if(b==="DOMAIN_MIN"){r=Js(g,b,f);continue}if(b==="DOMAIN_MAX"){o=Js(g,b,f);continue}if(b==="LUT_3D_INPUT_RANGE"){if(g.length!==2)throw new Se(`${b} expects two numbers`,f);let A=Qe(g[0],f),_=Qe(g[1],f);if(_<=A)throw new Se("LUT_3D_INPUT_RANGE max must exceed min",f);r=[A,A,A],o=[_,_,_];continue}if(b==="LUT_1D_SIZE"){s=Xs(g[0],b,f);continue}if(b==="LUT_3D_SIZE"){if(u=Xs(g[0],b,f),u>n)throw new Se(`LUT_3D_SIZE ${u} exceeds max ${n}`,f);continue}if(!ad(b)){if(b.startsWith("LUT_"))throw new Se(`Unsupported cube keyword ${b}`,f);continue}if(!u)throw s?new Se("1D cube LUTs are not supported yet",f):new Se("LUT data appears before LUT_3D_SIZE",f);if(E.length!==3)throw new Se("LUT data rows must contain three numbers",f);a.push(Qe(E[0],f),Qe(E[1],f),Qe(E[2],f))}if(s&&u)throw new Se("Mixed 1D and 3D cube LUTs are not supported yet");if(!u)throw s?new Se("1D cube LUTs are not supported yet"):new Se("Missing LUT_3D_SIZE");od(r,o);let c=u*u*u;if(a.length!==c*3)throw new Se(`Expected ${c} LUT rows for size ${u}, found ${a.length/3}`);return{title:i,size:u,domainMin:r,domainMax:o,data:new Float32Array(a)}}function ld(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function Xi(e){return Math.round(ld(e)*255)}function Qs(e){let t=e.size,n=t*t,i=t,r=new Uint8Array(n*i*4);for(let o=0;o<t;o++)for(let s=0;s<t;s++)for(let u=0;u<t;u++){let a=((o*t+s)*t+u)*3,l=(s*n+o*t+u)*4;r[l]=Xi(e.data[a]??0),r[l+1]=Xi(e.data[a+1]??0),r[l+2]=Xi(e.data[a+2]??0),r[l+3]=255}return{width:n,height:i,data:r}}var qe=new Map,ud="data-hf-color-grading-canvas",oa="data-hf-color-grading-source-hidden",cd="__hf_color_grading_canvas__",dd=16,en={enabled:!1,position:.5,softness:0,lineWidth:2};function fd(e){let t=window,i=e.closest("[data-composition-id]")?.getAttribute("data-composition-id")?.trim()??"",r=i?t.__hfVariablesByComp?.[i]:void 0;if(r)return r;let o=t.__hyperframes?.getVariables?.();return o&&typeof o=="object"?o:t.__hfVariables??{}}function Qi(e){let t=e.getAttribute(Qt);return t==null?null:Ks(t,fd(e))}var md=["attribute vec2 a_pos;","varying vec2 v_uv;","void main(){"," v_uv = a_pos * 0.5 + 0.5;"," gl_Position = vec4(a_pos, 0.0, 1.0);","}"].join(`\n`),pd=["#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","#else","precision mediump float;","#endif","varying vec2 v_uv;","uniform sampler2D u_source;","uniform sampler2D u_blurSource;","uniform sampler2D u_lut;","uniform vec2 u_resolution;","uniform vec2 u_uvScale;","uniform vec2 u_uvOffset;","uniform float u_blurReady;","uniform float u_lutEnabled;","uniform float u_lutSize;","uniform vec2 u_lutTextureSize;","uniform vec3 u_lutDomainMin;","uniform vec3 u_lutDomainMax;","uniform float u_lutIntensity;","uniform float u_exposure;","uniform float u_contrast;","uniform float u_highlights;","uniform float u_shadows;","uniform float u_whites;","uniform float u_blacks;","uniform float u_temperature;","uniform float u_tint;","uniform float u_vibrance;","uniform float u_saturation;","uniform float u_vignette;","uniform float u_vignetteMidpoint;","uniform float u_vignetteRoundness;","uniform float u_vignetteFeather;","uniform float u_grain;","uniform float u_grainSize;","uniform float u_grainRoughness;","uniform float u_grainSeed;","uniform float u_blur;","uniform float u_pixelate;","uniform float u_intensity;","uniform float u_compareEnabled;","uniform float u_comparePosition;","uniform float u_compareSoftness;","uniform float u_compareLineWidth;","float lumaOf(vec3 c){ return dot(c, vec3(0.2126, 0.7152, 0.0722)); }","float grainHash(vec2 p){ return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123); }","float colorSaturation(vec3 c){ return max(max(c.r, c.g), c.b) - min(min(c.r, c.g), c.b); }","vec2 clampUv(vec2 uv){ return clamp(uv, vec2(0.0), vec2(1.0)); }","vec4 sampleSource(vec2 uv){ return texture2D(u_source, clampUv(uv)); }","vec4 sampleBlur(vec2 uv){ return texture2D(u_blurSource, clampUv(uv)); }","vec4 sampleMedia(vec2 uv){"," float pixel = clamp(u_pixelate, 0.0, 1.0);"," vec2 sampleUv = uv;"," if (pixel > 0.0) {"," float blockSize = mix(1.0, 48.0, pixel);"," vec2 cells = max(u_resolution / blockSize, vec2(1.0));"," sampleUv = (floor(clamp(uv, vec2(0.0), vec2(0.999999)) * cells) + 0.5) / cells;"," }"," vec4 base = sampleSource(sampleUv);"," float blur = clamp(u_blur, 0.0, 1.0);"," if (blur > 0.0 && u_blurReady > 0.5) {"," base = mix(base, sampleBlur(sampleUv), blur);"," }"," return base;","}","vec3 sampleLut(float r, float g, float b){"," float size = max(u_lutSize, 2.0);"," float x = (r + b * size + 0.5) / max(u_lutTextureSize.x, 1.0);"," float y = (g + 0.5) / max(u_lutTextureSize.y, 1.0);"," return texture2D(u_lut, vec2(x, y)).rgb;","}","vec3 applyLut(vec3 color){"," if (u_lutEnabled < 0.5) return color;"," float size = max(u_lutSize, 2.0);"," vec3 span = max(u_lutDomainMax - u_lutDomainMin, vec3(0.00001));"," vec3 scaled = clamp((color - u_lutDomainMin) / span, 0.0, 1.0) * (size - 1.0);"," vec3 lo = floor(scaled);"," vec3 hi = min(lo + 1.0, vec3(size - 1.0));"," vec3 f = scaled - lo;"," vec3 c000 = sampleLut(lo.r, lo.g, lo.b);"," vec3 c100 = sampleLut(hi.r, lo.g, lo.b);"," vec3 c010 = sampleLut(lo.r, hi.g, lo.b);"," vec3 c110 = sampleLut(hi.r, hi.g, lo.b);"," vec3 c001 = sampleLut(lo.r, lo.g, hi.b);"," vec3 c101 = sampleLut(hi.r, lo.g, hi.b);"," vec3 c011 = sampleLut(lo.r, hi.g, hi.b);"," vec3 c111 = sampleLut(hi.r, hi.g, hi.b);"," vec3 c00 = mix(c000, c100, f.r);"," vec3 c10 = mix(c010, c110, f.r);"," vec3 c01 = mix(c001, c101, f.r);"," vec3 c11 = mix(c011, c111, f.r);"," vec3 c0 = mix(c00, c10, f.g);"," vec3 c1 = mix(c01, c11, f.g);"," vec3 lutColor = mix(c0, c1, f.b);"," return mix(color, lutColor, clamp(u_lutIntensity, 0.0, 1.0));","}","void main(){"," vec2 uv = (v_uv - u_uvOffset) / u_uvScale;"," if (uv.x < 0.0 || uv.y < 0.0 || uv.x > 1.0 || uv.y > 1.0) {"," gl_FragColor = vec4(0.0);"," return;"," }"," vec4 originalSample = sampleSource(uv);"," vec4 sampleColor = sampleMedia(uv);"," vec3 original = originalSample.rgb;"," vec3 color = sampleColor.rgb * pow(2.0, u_exposure);"," float y = lumaOf(color);"," float shadowMask = 1.0 - smoothstep(0.0, 0.65, y);"," float highlightMask = smoothstep(0.35, 1.0, y);"," color += u_shadows * 0.35 * shadowMask;"," color += u_highlights * 0.35 * highlightMask;"," float blackPoint = clamp(u_blacks * 0.18, -0.18, 0.18);"," float whitePoint = clamp(1.0 - u_whites * 0.18, 0.82, 1.18);"," color = (color - blackPoint) / max(whitePoint - blackPoint, 0.2);"," color.r += u_temperature * 0.08 + u_tint * 0.04;"," color.b -= u_temperature * 0.08 - u_tint * 0.04;"," color.g -= u_tint * 0.08;"," color = (color - 0.5) * max(0.0, 1.0 + u_contrast) + 0.5;"," float satLuma = lumaOf(color);"," float currentSat = clamp(colorSaturation(color), 0.0, 1.0);"," float skinLike = smoothstep(0.02, 0.18, color.r - color.g) * smoothstep(0.0, 0.16, color.g - color.b) * smoothstep(0.18, 0.82, satLuma);"," float vibranceWeight = (1.0 - currentSat * 0.72) * mix(1.0, 0.55, skinLike);"," color = mix(vec3(satLuma), color, max(0.0, 1.0 + u_vibrance * vibranceWeight));"," color = mix(vec3(satLuma), color, max(0.0, 1.0 + u_saturation));"," color = clamp(color, 0.0, 1.0);"," color = clamp(applyLut(color), 0.0, 1.0);"," vec2 vignetteAspect = u_resolution.x > u_resolution.y"," ? vec2(u_resolution.x / max(u_resolution.y, 1.0), 1.0)"," : vec2(1.0, u_resolution.y / max(u_resolution.x, 1.0));"," vec2 vignetteUv = abs((v_uv - vec2(0.5)) * 2.0) * vignetteAspect;"," float vignettePower = mix(8.0, 1.8, clamp(u_vignetteRoundness * 0.5 + 0.5, 0.0, 1.0));"," float vignetteDistance = pow(pow(vignetteUv.x, vignettePower) + pow(vignetteUv.y, vignettePower), 1.0 / vignettePower);"," float vignetteMidpoint = mix(0.22, 1.08, clamp(u_vignetteMidpoint, 0.0, 1.0));"," float vignetteFeather = mix(0.08, 0.72, clamp(u_vignetteFeather, 0.0, 1.0));"," float vignetteMask = smoothstep(vignetteMidpoint, vignetteMidpoint + vignetteFeather, vignetteDistance);"," color *= 1.0 - vignetteMask * clamp(u_vignette, 0.0, 1.0) * 0.75;"," float grainAmount = clamp(u_grain, 0.0, 1.0);"," if (grainAmount > 0.0) {"," float grainPixelSize = mix(1.0, 6.0, clamp(u_grainSize, 0.0, 1.0));"," vec2 grainCoord = floor(gl_FragCoord.xy / grainPixelSize) + vec2(u_grainSeed, u_grainSeed * 1.37);"," float grainBase = grainHash(grainCoord) - grainHash(grainCoord + vec2(19.19, 73.31));"," float grainFine = grainHash(gl_FragCoord.xy + vec2(u_grainSeed * 2.11, u_grainSeed * 0.71)) - 0.5;"," float grain = mix(grainBase * 0.7, grainBase + grainFine * 0.35, clamp(u_grainRoughness, 0.0, 1.0));"," float grainLuma = lumaOf(color);"," float grainMask = smoothstep(0.02, 0.55, grainLuma) * (1.0 - smoothstep(0.88, 1.0, grainLuma));"," color += grain * grainAmount * mix(0.025, 0.08, grainMask);"," }"," color = clamp(color, 0.0, 1.0);"," vec3 graded = mix(original, color, u_intensity);"," if (u_compareEnabled > 0.5) {"," float pos = clamp(u_comparePosition, 0.0, 1.0);"," float softness = max(u_compareSoftness, 0.00001);"," float afterMask = smoothstep(pos - softness, pos + softness, v_uv.x);"," vec3 splitColor = mix(original, graded, afterMask);"," float lineMask = 0.0;"," if (u_compareLineWidth > 0.0) {"," float lineWidth = max(u_compareLineWidth / max(u_resolution.x, 1.0), 0.00001);"," lineMask = 1.0 - smoothstep(lineWidth, lineWidth * 1.8, abs(v_uv.x - pos));"," }"," gl_FragColor = vec4(mix(splitColor, vec3(1.0), lineMask * 0.82), sampleColor.a);"," return;"," }"," gl_FragColor = vec4(graded, sampleColor.a);","}"].join(`\n`),hd=["#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","#else","precision mediump float;","#endif","varying vec2 v_uv;","uniform sampler2D u_source;","uniform vec2 u_resolution;","uniform vec2 u_direction;","uniform float u_radius;","vec4 readSource(vec2 uv){"," vec4 color = texture2D(u_source, clamp(uv, vec2(0.0), vec2(1.0)));"," color.rgb *= color.a;"," return color;","}","void main(){"," vec2 stepUv = u_direction * max(u_radius, 0.0) / max(u_resolution, vec2(1.0)) / 12.0;"," vec4 color = readSource(v_uv) * 0.08077993;"," color += readSource(v_uv + stepUv * 1.0) * 0.07918038;"," color += readSource(v_uv - stepUv * 1.0) * 0.07918038;"," color += readSource(v_uv + stepUv * 2.0) * 0.07456928;"," color += readSource(v_uv - stepUv * 2.0) * 0.07456928;"," color += readSource(v_uv + stepUv * 3.0) * 0.06747307;"," color += readSource(v_uv - stepUv * 3.0) * 0.06747307;"," color += readSource(v_uv + stepUv * 4.0) * 0.05865827;"," color += readSource(v_uv - stepUv * 4.0) * 0.05865827;"," color += readSource(v_uv + stepUv * 5.0) * 0.04899551;"," color += readSource(v_uv - stepUv * 5.0) * 0.04899551;"," color += readSource(v_uv + stepUv * 6.0) * 0.03931982;"," color += readSource(v_uv - stepUv * 6.0) * 0.03931982;"," color += readSource(v_uv + stepUv * 7.0) * 0.03031761;"," color += readSource(v_uv - stepUv * 7.0) * 0.03031761;"," color += readSource(v_uv + stepUv * 8.0) * 0.02245983;"," color += readSource(v_uv - stepUv * 8.0) * 0.02245983;"," color += readSource(v_uv + stepUv * 9.0) * 0.01598624;"," color += readSource(v_uv - stepUv * 9.0) * 0.01598624;"," color += readSource(v_uv + stepUv * 10.0) * 0.01093238;"," color += readSource(v_uv - stepUv * 10.0) * 0.01093238;"," color += readSource(v_uv + stepUv * 11.0) * 0.00718308;"," color += readSource(v_uv - stepUv * 11.0) * 0.00718308;"," color += readSource(v_uv + stepUv * 12.0) * 0.00453456;"," color += readSource(v_uv - stepUv * 12.0) * 0.00453456;"," if (color.a > 0.0001) color.rgb /= color.a;"," gl_FragColor = color;","}"].join(`\n`);function ct(e){return e instanceof HTMLVideoElement||e instanceof HTMLImageElement}function Zs(e,t,n){let i=e.createShader(n);return i?(e.shaderSource(i,t),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(L("runtime.colorGrading.compileShader",e.getShaderInfoLog(i)),e.deleteShader(i),null)):null}function sa(e,t=pd){let n=Zs(e,md,e.VERTEX_SHADER),i=Zs(e,t,e.FRAGMENT_SHADER);if(!n||!i)return n&&e.deleteShader(n),i&&e.deleteShader(i),null;let r=e.createProgram();return r?(e.attachShader(r,n),e.attachShader(r,i),e.linkProgram(r),e.deleteShader(n),e.deleteShader(i),e.getProgramParameter(r,e.LINK_STATUS)?r:(L("runtime.colorGrading.linkProgram",e.getProgramInfoLog(r)),e.deleteProgram(r),null)):null}function er(e,t=e.LINEAR){let n=e.createTexture();return n?(e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,null),n):null}function gd(e,t){let n=sa(e,hd);return n?{program:n,quad:t,position:e.getAttribLocation(n,"a_pos"),source:e.getUniformLocation(n,"u_source"),resolution:e.getUniformLocation(n,"u_resolution"),direction:e.getUniformLocation(n,"u_direction"),radius:e.getUniformLocation(n,"u_radius")}:null}function ea(e){let t=er(e),n=e.createFramebuffer();if(!t||!n)return t&&e.deleteTexture(t),n&&e.deleteFramebuffer(n),null;e.bindFramebuffer(e.FRAMEBUFFER,n),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER);return e.bindFramebuffer(e.FRAMEBUFFER,null),i!==e.FRAMEBUFFER_COMPLETE?(e.deleteTexture(t),e.deleteFramebuffer(n),null):{texture:t,framebuffer:n,width:1,height:1}}function ta(e,t,n,i){t.width===n&&t.height===i||(t.width=n,t.height=i,e.bindTexture(e.TEXTURE_2D,t.texture),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n,i,0,e.RGBA,e.UNSIGNED_BYTE,null))}function aa(e){let t=e.getContext("webgl",{alpha:!0,premultipliedAlpha:!1,preserveDrawingBuffer:!0});if(!t)return null;let n=sa(t),i=er(t),r=er(t,t.NEAREST);if(!n||!i||!r)return n&&t.deleteProgram(n),i&&t.deleteTexture(i),r&&t.deleteTexture(r),null;let o=t.createBuffer();return o?(t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),t.STATIC_DRAW),{gl:t,program:{program:n,texture:i,lutTexture:r,quad:o,position:t.getAttribLocation(n,"a_pos"),source:t.getUniformLocation(n,"u_source"),blurSource:t.getUniformLocation(n,"u_blurSource"),lut:t.getUniformLocation(n,"u_lut"),resolution:t.getUniformLocation(n,"u_resolution"),uvScale:t.getUniformLocation(n,"u_uvScale"),uvOffset:t.getUniformLocation(n,"u_uvOffset"),blurReady:t.getUniformLocation(n,"u_blurReady"),lutEnabled:t.getUniformLocation(n,"u_lutEnabled"),lutSize:t.getUniformLocation(n,"u_lutSize"),lutTextureSize:t.getUniformLocation(n,"u_lutTextureSize"),lutDomainMin:t.getUniformLocation(n,"u_lutDomainMin"),lutDomainMax:t.getUniformLocation(n,"u_lutDomainMax"),lutIntensity:t.getUniformLocation(n,"u_lutIntensity"),exposure:t.getUniformLocation(n,"u_exposure"),contrast:t.getUniformLocation(n,"u_contrast"),highlights:t.getUniformLocation(n,"u_highlights"),shadows:t.getUniformLocation(n,"u_shadows"),whites:t.getUniformLocation(n,"u_whites"),blacks:t.getUniformLocation(n,"u_blacks"),temperature:t.getUniformLocation(n,"u_temperature"),tint:t.getUniformLocation(n,"u_tint"),vibrance:t.getUniformLocation(n,"u_vibrance"),saturation:t.getUniformLocation(n,"u_saturation"),vignette:t.getUniformLocation(n,"u_vignette"),vignetteMidpoint:t.getUniformLocation(n,"u_vignetteMidpoint"),vignetteRoundness:t.getUniformLocation(n,"u_vignetteRoundness"),vignetteFeather:t.getUniformLocation(n,"u_vignetteFeather"),grain:t.getUniformLocation(n,"u_grain"),grainSize:t.getUniformLocation(n,"u_grainSize"),grainRoughness:t.getUniformLocation(n,"u_grainRoughness"),grainSeed:t.getUniformLocation(n,"u_grainSeed"),blur:t.getUniformLocation(n,"u_blur"),pixelate:t.getUniformLocation(n,"u_pixelate"),intensity:t.getUniformLocation(n,"u_intensity"),compareEnabled:t.getUniformLocation(n,"u_compareEnabled"),comparePosition:t.getUniformLocation(n,"u_comparePosition"),compareSoftness:t.getUniformLocation(n,"u_compareSoftness"),compareLineWidth:t.getUniformLocation(n,"u_compareLineWidth")}}):(t.deleteProgram(n),t.deleteTexture(i),t.deleteTexture(r),null)}function xd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function bd(e){if(!xd(e))return{...en};let t=(n,i,r,o)=>{let s=typeof n=="number"?n:Number(n);return Math.min(o,Math.max(r,Number.isFinite(s)?s:i))};return{enabled:e.enabled===!0,position:t(e.position,en.position,0,1),softness:t(e.softness,en.softness,0,.25),lineWidth:t(e.lineWidth,en.lineWidth,0,12)}}function la(e){try{let t=new URL(e,document.baseURI);return t.protocol==="data:"?{href:t.href}:t.protocol!=="http:"&&t.protocol!=="https:"?{error:"LUT must be project-local or a data URL"}:t.origin!==window.location.origin?{error:"Remote LUT URLs are not supported"}:{href:t.href}}catch{return{error:"Invalid LUT URL"}}}function nr(e){return e instanceof Error?e.message:"LUT failed to load"}function yd(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0)%1e4}function Sd(e){let t=e.id||e.currentSrc||e.getAttribute("src")||`${e.tagName}:${Array.prototype.indexOf.call(e.parentNode?.children??[],e)}`;return yd(t)}function Ed(e){let t=la(e);if("error"in t)return{state:"error",message:t.error};let n=qe.get(t.href);if(n)return n;let i=fetch(t.href,{credentials:"same-origin"}).then(o=>{if(!o.ok)throw new Error(`Failed to load LUT (${o.status})`);return o.text()}).then(o=>Ys(o,{maxSize:Yi})),r={state:"pending",promise:i};for(;qe.size>=dd;){let o=qe.keys().next().value;if(!o)break;qe.delete(o)}return qe.set(t.href,r),i.then(o=>{qe.get(t.href)===r&&qe.set(t.href,{state:"ready",lut:o})},o=>{qe.get(t.href)===r&&qe.set(t.href,{state:"error",message:nr(o)})}),r}function na(e,t,n){if(e.lut?.src===t)return e.lut;let i=Qs(n),{gl:r,program:o}=e;try{return r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,o.lutTexture),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,i.width,i.height,0,r.RGBA,r.UNSIGNED_BYTE,i.data),e.lut={src:t,size:n.size,domainMin:n.domainMin,domainMax:n.domainMax,textureWidth:i.width,textureHeight:i.height},e.lutError=null,e.lutLoadingSrc=null,e.lut}catch(s){return e.lut=null,e.lutError=nr(s),e.lutLoadingSrc=null,L("runtime.colorGrading.uploadLut",s),null}}function Rn(e,t){e.deleteTexture(t.texture),e.deleteFramebuffer(t.framebuffer)}function ua(e){let t=e.effectTargets;t&&(e.gl.deleteProgram(t.blurProgram.program),Rn(e.gl,t.scratch),Rn(e.gl,t.blur),e.effectTargets=null)}function ca(e){ua(e),e.gl.deleteTexture(e.program.texture),e.gl.deleteTexture(e.program.lutTexture),e.gl.deleteBuffer(e.program.quad),e.gl.deleteProgram(e.program.program)}function Ad(e){let t=aa(e.canvas);return t?(ca(e),e.gl=t.gl,e.program=t.program,e.lut=null,e.lutLoadingSrc=null,e.lutError=null,e.effectError=null,!0):!1}function tr(e){if(!e.sourceHidden)return;e.element.removeAttribute(oa);let t=e.element.style.getPropertyValue("opacity"),n=e.element.style.getPropertyPriority("opacity");t==="0"&&n==="important"&&(e.sourceInlineOpacity===null?e.element.style.removeProperty("opacity"):e.element.style.setProperty("opacity",e.sourceInlineOpacity,e.sourceInlineOpacityPriority)),e.sourceHidden=!1}function wd(e){if(e.effectTargets)return e.effectTargets;let{gl:t}=e,n=gd(t,e.program.quad),i=ea(t),r=ea(t);return!n||!i||!r?(n&&t.deleteProgram(n.program),i&&Rn(t,i),r&&Rn(t,r),e.effectError="Framebuffer effects unavailable",null):(e.effectError=null,e.effectTargets={blurProgram:n,scratch:i,blur:r},e.effectTargets)}function Fd(e,t,n,i,r){let o=Math.max(1,Math.ceil(i)),s=Math.max(1,Math.ceil(r));return ta(e,t,o,s),ta(e,n,o,s),{width:o,height:s}}function ia(e,t,n,i,r,o,s){e.bindFramebuffer(e.FRAMEBUFFER,i.framebuffer),e.viewport(0,0,r.width,r.height),e.useProgram(t.program),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,n),e.uniform1i(t.source,0),e.uniform2f(t.resolution,r.width,r.height),e.uniform2f(t.direction,o.x,o.y),e.uniform1f(t.radius,s),e.bindBuffer(e.ARRAY_BUFFER,t.quad),e.enableVertexAttribArray(t.position),e.vertexAttribPointer(t.position,2,e.FLOAT,!1,0,0),e.drawArrays(e.TRIANGLE_STRIP,0,4)}function Cd(e,t,n,i,r,o,s){let u=n;for(let a=0;a<Math.max(1,Math.floor(s));a++)ia(e,t.blurProgram,u,t.scratch,r,{x:1,y:0},o),ia(e,t.blurProgram,t.scratch.texture,i,r,{x:0,y:1},o),u=i.texture}function _d(e){let t=e.grading.lut?.src.trim()??"",n=e.grading.lut?.intensity??1;if(!t||n<=0)return e.lut=null,e.lutLoadingSrc=null,e.lutError=null,null;let i=la(t);if("error"in i)return e.lut=null,e.lutLoadingSrc=null,e.lutError=i.error,null;if(e.lut?.src===i.href)return e.lut;e.lut=null;let r=Ed(t);return r.state==="ready"?na(e,i.href,r.lut):r.state==="error"?(e.lutError=r.message,e.lutLoadingSrc=null,null):(e.lutLoadingSrc!==i.href&&(e.lutLoadingSrc=i.href,e.lutError=null,r.promise.then(o=>{e.destroyed||e.grading.lut?.src.trim()!==t||(na(e,i.href,o),We(e))},o=>{e.destroyed||e.grading.lut?.src.trim()!==t||(e.lut=null,e.lutError=nr(o),e.lutLoadingSrc=null,We(e))})),null)}function Zi(e){if(!e)return null;if(typeof e=="string"){let t=e.trim();if(!t)return null;let n=document.getElementById(t.replace(/^#/,""));if(n&&ct(n))return n;try{let i=document.querySelector(t);return i&&ct(i)?i:null}catch{return null}}if(e.hfId){let t=document.querySelector(`[data-hf-id="${CSS.escape(e.hfId)}"]`);if(t&&ct(t))return t}if(e.id){let t=document.getElementById(e.id);if(t&&ct(t))return t}if(!e.selector)return null;try{let t=Array.from(document.querySelectorAll(e.selector)),n=Math.max(0,Math.floor(Number(e.selectorIndex??0)||0)),i=t[n]??null;return i&&ct(i)?i:null}catch{return null}}function Md(e){return e instanceof HTMLVideoElement?e.videoWidth>0&&e.videoHeight>0?{width:e.videoWidth,height:e.videoHeight}:null:e instanceof HTMLImageElement&&e.naturalWidth>0&&e.naturalHeight>0?{width:e.naturalWidth,height:e.naturalHeight}:null}function da(e){return e instanceof HTMLVideoElement?e.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA&&e.videoWidth>0&&e.videoHeight>0:e instanceof HTMLImageElement?e.complete&&e.naturalWidth>0&&e.naturalHeight>0:!1}function vd(e){if(!e.id)return null;let t=document.getElementById(`__render_frame_${e.id}__`);return t instanceof HTMLImageElement&&da(t)?t:null}function Td(e){return e instanceof HTMLImageElement&&e.classList.contains("__render_frame__")}function Nd(e,t){t.parentNode&&t.nextSibling!==e.canvas&&t.parentNode.insertBefore(e.canvas,t.nextSibling)}function Ld(e){if(e instanceof HTMLVideoElement){let t=vd(e);if(t)return t}return da(e)?e:null}function ra(e,t){let n=e.toLowerCase();if(n==="center")return .5;if(t==="x"){if(n==="left")return 0;if(n==="right")return 1}else{if(n==="top")return 0;if(n==="bottom")return 1}if(n.endsWith("%")){let i=Number.parseFloat(n);return Number.isFinite(i)?i/100:null}return null}function Rd(e){let t=e.trim().split(/\\s+/).filter(Boolean),n=.5,i=.5;for(let r=0;r<t.length;r++){let o=t[r]??"",s=ra(o,"x"),u=ra(o,"y");if(s!==null&&(o==="left"||o==="right"||o.endsWith("%")&&r===0)){n=s;continue}if(u!==null&&(o==="top"||o==="bottom"||o.endsWith("%")&&r>0)){i=u;continue}}return{x:n,y:i}}function kd(e,t,n,i,r,o){if(e<=0||t<=0||n<=0||i<=0)return{scaleX:1,scaleY:1,offsetX:0,offsetY:0};let s=r||"fill",u=e,a=t;if(s==="contain"||s==="cover"||s==="scale-down"){let f=s==="cover"?Math.max(e/n,t/i):Math.min(e/n,t/i);u=n*f,a=i*f,s==="scale-down"&&u>n&&a>i&&(u=n,a=i)}else s==="none"&&(u=n,a=i);let l=Rd(o||"center"),c=(e-u)*l.x/e,p=(t-a)*l.y/t;return{scaleX:u/e,scaleY:a/t,offsetX:c,offsetY:p}}function Dd(e,t){window.getComputedStyle(t).position==="static"&&(e.touchedParent||(e.touchedParent=t,e.parentInlinePosition=t.style.position||null),t.style.position="relative")}function Id(e,t){let{element:n,canvas:i}=e,r=n.parentElement;r&&Dd(e,r);let o=window.getComputedStyle(t);qr(i.style,o),i.style.pointerEvents="none",i.style.position="absolute",i.style.inset="auto",i.style.left=`${n.offsetLeft}px`,i.style.top=`${n.offsetTop}px`,i.style.right="auto",i.style.bottom="auto",i.style.width=`${n.offsetWidth}px`,i.style.height=`${n.offsetHeight}px`,i.style.display="block",i.style.opacity=e.sourceOpacityForCanvas,i.style.visibility=e.sourceVisibleForCanvas?"visible":"hidden";let s=n.getBoundingClientRect(),u=Math.max(0,Math.round(n.offsetWidth||s.width)),a=Math.max(0,Math.round(n.offsetHeight||s.height));return u<=0||a<=0?(i.style.display="none",null):(i.width!==u&&(i.width=u),i.height!==a&&(i.height=a),{width:u,height:a})}function Pd(e,t,n,i,r,o,s,u,a){e.uniform1i(t.source,0),e.uniform1i(t.blurSource,1),e.uniform1i(t.lut,2),e.uniform2f(t.resolution,s.width,s.height),e.uniform2f(t.uvScale,u.scaleX,u.scaleY),e.uniform2f(t.uvOffset,u.offsetX,u.offsetY),e.uniform1f(t.blurReady,r?1:0),e.uniform1f(t.lutEnabled,i?1:0),e.uniform1f(t.lutSize,i?.size??2),e.uniform2f(t.lutTextureSize,i?.textureWidth??1,i?.textureHeight??1),e.uniform3f(t.lutDomainMin,i?.domainMin[0]??0,i?.domainMin[1]??0,i?.domainMin[2]??0),e.uniform3f(t.lutDomainMax,i?.domainMax[0]??1,i?.domainMax[1]??1,i?.domainMax[2]??1),e.uniform1f(t.lutIntensity,n.lut?.intensity??0),e.uniform1f(t.exposure,n.adjust.exposure),e.uniform1f(t.contrast,n.adjust.contrast),e.uniform1f(t.highlights,n.adjust.highlights),e.uniform1f(t.shadows,n.adjust.shadows),e.uniform1f(t.whites,n.adjust.whites),e.uniform1f(t.blacks,n.adjust.blacks),e.uniform1f(t.temperature,n.adjust.temperature),e.uniform1f(t.tint,n.adjust.tint),e.uniform1f(t.vibrance,n.adjust.vibrance),e.uniform1f(t.saturation,n.adjust.saturation),e.uniform1f(t.vignette,n.details.vignette),e.uniform1f(t.vignetteMidpoint,n.details.vignetteMidpoint),e.uniform1f(t.vignetteRoundness,n.details.vignetteRoundness),e.uniform1f(t.vignetteFeather,n.details.vignetteFeather),e.uniform1f(t.grain,n.details.grain),e.uniform1f(t.grainSize,n.details.grainSize),e.uniform1f(t.grainRoughness,n.details.grainRoughness),e.uniform1f(t.grainSeed,a),e.uniform1f(t.blur,n.effects.blur),e.uniform1f(t.pixelate,n.effects.pixelate),e.uniform1f(t.intensity,n.intensity),e.uniform1f(t.compareEnabled,o.enabled?1:0),e.uniform1f(t.comparePosition,o.position),e.uniform1f(t.compareSoftness,o.softness),e.uniform1f(t.compareLineWidth,o.lineWidth)}function Od(e){e.sourceHidden||(e.sourceInlineOpacity=e.element.style.getPropertyValue("opacity")||null,e.sourceInlineOpacityPriority=e.element.style.getPropertyPriority("opacity")),e.element.setAttribute(oa,"true"),e.element.style.setProperty("opacity","0","important"),e.sourceHidden=!0}function We(e){if(e.destroyed||e.contextLost)return!1;let t=Ld(e.element);if(!t)return e.hasDrawn||(e.canvas.style.display="none"),!1;let n=Md(t);if(!n)return!1;let i=t instanceof HTMLElement?t:e.element,r=e.element.style.getPropertyValue("opacity"),o=e.element.style.getPropertyPriority("opacity"),s=e.sourceHidden&&r==="0"&&o==="important",u=e.element.style.getPropertyValue("visibility"),a=Td(t);if(a&&Nd(e,t),a||!s){let E=window.getComputedStyle(a?t:e.element);e.sourceOpacityForCanvas=E.opacity||"1",e.sourceVisibleForCanvas=(a||u!=="hidden")&&E.visibility!=="hidden"}let l=Id(e,i);if(!l)return!1;let c=window.getComputedStyle(i),p=kd(l.width,l.height,n.width,n.height,c.objectFit,c.objectPosition),{gl:f,program:x}=e;try{let E=_d(e);f.activeTexture(f.TEXTURE0),f.bindTexture(f.TEXTURE_2D,x.texture),f.pixelStorei(f.UNPACK_FLIP_Y_WEBGL,!0),f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,t);let b=!1,g=Math.min(1,Math.max(0,e.grading.effects.blur));if(g>0){let _=wd(e);if(_){let N=Fd(f,_.scratch,_.blur,l.width,l.height);Cd(f,_,x.texture,_.blur,N,.75+Math.pow(g,1.35)*32,g>.55?3:2),b=!0}}else e.effectError=null,e.effectTargets&&ua(e);f.bindFramebuffer(f.FRAMEBUFFER,null),f.viewport(0,0,l.width,l.height),f.useProgram(x.program),f.activeTexture(f.TEXTURE0),f.bindTexture(f.TEXTURE_2D,x.texture),f.activeTexture(f.TEXTURE1),f.bindTexture(f.TEXTURE_2D,e.effectTargets?.blur.texture??x.texture),f.activeTexture(f.TEXTURE2),f.bindTexture(f.TEXTURE_2D,x.lutTexture);let A=e.grainSeed+(e.element instanceof HTMLVideoElement?Math.floor(e.element.currentTime*60):0);return Pd(f,x,e.grading,E,b,e.compare,l,p,A),f.bindBuffer(f.ARRAY_BUFFER,x.quad),f.enableVertexAttribArray(x.position),f.vertexAttribPointer(x.position,2,f.FLOAT,!1,0,0),f.drawArrays(f.TRIANGLE_STRIP,0,4),Od(e),e.hasDrawn=!0,e.drawError=null,!0}catch(E){return e.drawError=E instanceof Error?E.message:"Shader draw failed",L("runtime.colorGrading.drawEntry",E),!1}}function Ge(e,t,n,i){t.addEventListener(n,i),e.cleanup.push(()=>t.removeEventListener(n,i))}function Bd(e){e.animationFrame!==null&&(window.cancelAnimationFrame(e.animationFrame),e.animationFrame=null),e.videoFrameHandle!==null&&e.element instanceof HTMLVideoElement&&(e.element.cancelVideoFrameCallback?.(e.videoFrameHandle),e.videoFrameHandle=null)}function tn(e){if(e.destroyed||!(e.element instanceof HTMLVideoElement)||e.videoFrameHandle!==null||e.animationFrame!==null)return;let t=e.element,n=t;if(typeof n.requestVideoFrameCallback=="function"){e.videoFrameHandle=n.requestVideoFrameCallback(()=>{e.videoFrameHandle=null,We(e),!e.destroyed&&!t.paused&&!t.ended&&tn(e)});return}e.animationFrame=window.requestAnimationFrame(()=>{e.animationFrame=null,We(e),!e.destroyed&&!t.paused&&!t.ended&&tn(e)})}function Hd(e){let t=()=>{We(e)};Ge(e,e.element,"load",t),Ge(e,e.element,"loadedmetadata",t),Ge(e,e.element,"loadeddata",t),Ge(e,e.element,"seeked",t),Ge(e,e.element,"timeupdate",t),Ge(e,window,"resize",t),e.element instanceof HTMLVideoElement&&(Ge(e,e.element,"play",()=>tn(e)),Ge(e,e.element,"pause",t)),Ge(e,e.canvas,"webglcontextlost",n=>{n.preventDefault(),e.contextLost=!0,e.drawError="WebGL context lost",e.canvas.style.display="none",tr(e)}),Ge(e,e.canvas,"webglcontextrestored",()=>{if(e.contextLost=!1,!Ad(e)){e.contextLost=!0,e.drawError="WebGL context restore failed",tr(e);return}e.drawError=null,We(e)}),typeof ResizeObserver<"u"&&(e.resizeObserver=new ResizeObserver(t),e.resizeObserver.observe(e.element))}function Gd(e){if(!e.destroyed){e.destroyed=!0,Bd(e),e.resizeObserver?.disconnect();for(let t of e.cleanup)t();e.cleanup.length=0,e.canvas.remove(),ca(e),tr(e),e.touchedParent&&(e.parentInlinePosition===null?e.touchedParent.style.removeProperty("position"):e.touchedParent.style.position=e.parentInlinePosition)}}function Wd(e){let t=document.createElement("canvas");return e.id&&(t.id=`${zs}${e.id}`),t.className=cd,t.setAttribute(ud,"true"),t.setAttribute("data-hyperframes-ignore",""),t.setAttribute("data-hyperframes-picker-ignore",""),t.setAttribute("data-hf-ignore",""),t.setAttribute("aria-hidden","true"),t.style.pointerEvents="none",t.style.display="none",e.parentNode?.insertBefore(t,e.nextSibling),t}function fa(){let e=new WeakMap,t=new Set,n=null,i=!1,r=(b,g,A)=>{let _=e.get(b);if(_)return _.grading=g,_.source=A,We(_),b instanceof HTMLVideoElement&&!b.paused&&tn(_),!0;let N=Wd(b),$=aa(N);if(!$)return N.remove(),!1;let B={element:b,canvas:N,gl:$.gl,program:$.program,grading:g,compare:{...en},lut:null,lutLoadingSrc:null,lutError:null,drawError:null,effectTargets:null,effectError:null,source:A,animationFrame:null,videoFrameHandle:null,resizeObserver:null,cleanup:[],touchedParent:null,parentInlinePosition:null,sourceHidden:!1,sourceInlineOpacity:null,sourceInlineOpacityPriority:"",sourceOpacityForCanvas:window.getComputedStyle(b).opacity||"1",sourceVisibleForCanvas:window.getComputedStyle(b).visibility!=="hidden",hasDrawn:!1,contextLost:!1,grainSeed:Sd(b),destroyed:!1};return e.set(b,B),t.add(b),Hd(B),We(B),b instanceof HTMLVideoElement&&!b.paused&&tn(B),!0},o=(b,g)=>{if(i)return!1;let A=Zi(b);if(!A)return!1;let _=e.get(A);if(!_){let N=Qi(A);if(!Zt(N)||!r(A,N,"attribute"))return!1;_=e.get(A)}return _?(_.compare=bd(g),We(_),!0):!1},s=b=>{let g=e.get(b);g&&(Gd(g),e.delete(b),t.delete(b))},u=()=>{if(i)return 0;let b=new Set;document.querySelectorAll(`video[${Qt}], img[${Qt}]`).forEach(A=>{if(!ct(A))return;b.add(A);let _=Qi(A);Zt(_)?r(A,_,"attribute"):s(A)});for(let A of Array.from(t)){let _=e.get(A);_&&(!A.isConnected||_.source==="attribute"&&!b.has(A))&&s(A)}return t.size},a=()=>{if(i)return 0;let b=0;for(let g of Array.from(t,A=>e.get(A)))g&&We(g)&&(b+=1);return b},l=(b,g)=>{if(i)return!1;let A=Zi(b);if(!A)return!1;let _=Ji(g);return Zt(_)?r(A,_,"live"):(s(A),!0)},c=(b,g)=>{if(!ct(b))return!1;let A=e.get(b);return A?(A.sourceVisibleForCanvas=g,!0):!1},p=b=>{let g=Zi(b);if(!g)return{state:"missing",message:"Media not found"};let A=e.get(g);if(A)return A.effectError?{state:"unavailable",message:A.effectError}:A.drawError?{state:"unavailable",message:A.drawError}:A.lutError?{state:"unavailable",message:`LUT error: ${A.lutError}`}:A.grading.lut&&A.lutLoadingSrc?{state:"pending",message:"Loading LUT"}:A.canvas.style.display==="none"?{state:"pending",message:"Waiting for media frame"}:{state:"active",message:A.lut?"Shader + LUT active":"Shader active"};let _=Qi(g);return Zt(_)?{state:"unavailable",message:"WebGL unavailable"}:{state:"inactive",message:"No grading applied"}},f=()=>{if(!i){i=!0,n?.disconnect(),n=null;for(let b of Array.from(t))s(b)}};document.body&&(n=new MutationObserver(()=>u()),n.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[Qt]}));let x={refresh:u,redraw:a,setGrading:l,setCompare:o,setSourceVisibility:c,getStatus:p,destroy:f},E=window;return E.__hf=E.__hf||{},E.__hf.colorGrading=x,u(),x}var kn=class{constructor(t){xe(this,"_baseTime",0);xe(this,"_playStartMs",null);xe(this,"_rate",1);xe(this,"_duration",1/0);xe(this,"_nowMs");xe(this,"_audioSource",null);this._baseTime=t?.initialTime??0,this._rate=t?.rate??1,this._duration=t?.duration??1/0,this._nowMs=t?.nowMs??(()=>performance.now())}now(){if(this._playStartMs===null)return this._baseTime;if(this._audioSource){let i=null;if("currentTimeSeconds"in this._audioSource)i=this._audioSource.currentTimeSeconds;else{let{el:r,compositionStart:o,mediaStart:s}=this._audioSource;!r.paused&&Number.isFinite(r.currentTime)&&(i=(r.currentTime-s)/(r.playbackRate>0?r.playbackRate:1)*this._rate+o)}if(i!==null)return Number.isFinite(this._duration)&&i>=this._duration?this._duration:Math.max(0,i)}let t=(this._nowMs()-this._playStartMs)/1e3,n=this._baseTime+t*this._rate;return Number.isFinite(this._duration)&&n>=this._duration?this._duration:Math.max(0,n)}play(){return this._playStartMs!==null||Number.isFinite(this._duration)&&this._baseTime>=this._duration?!1:(this._playStartMs=this._nowMs(),!0)}pause(){return this._playStartMs===null?!1:(this._baseTime=this.now(),this._playStartMs=null,!0)}seek(t){let n=Number.isFinite(this._duration)?Math.max(0,Math.min(t,this._duration)):Math.max(0,t);this._baseTime=n,this._playStartMs!==null&&(this._playStartMs=this._nowMs())}isPlaying(){return this._playStartMs!==null}setRate(t){let n=Number.isFinite(t)&&t>0?Math.max(.1,Math.min(5,t)):1;this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._rate=n}getRate(){return this._rate}setDuration(t){this._duration=Number.isFinite(t)&&t>0?t:1/0,this._baseTime>this._duration&&(this._baseTime=this._duration)}getDuration(){return this._duration}attachAudioSource(t){this._audioSource=t}detachAudioSource(){this._audioSource&&this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._audioSource=null}hasAudioSource(){return this._audioSource!==null}getSource(){if(this._audioSource&&this._playStartMs!==null){if("currentTimeSeconds"in this._audioSource)return"audio";let{el:t}=this._audioSource;if(!t.paused&&Number.isFinite(t.currentTime))return"audio"}return"monotonic"}snapshot(){return{time:this.now(),playing:this.isPlaying(),rate:this._rate,duration:this._duration,source:this.getSource()}}reachedEnd(){return Number.isFinite(this._duration)&&this.now()>=this._duration}};function ma(e){return!Number.isFinite(e)||e<=0?1:e}function Ud(e,t){t||e.paused||!cn().__hfDebug||console.debug("[hyperframes] webAudioTransport claimed fallback-playing element:",e.currentSrc||e.getAttribute("src")||"")}function Vd(e,t){let{elapsed:n,mediaStart:i,scheduledAt:r,safeRate:o,clipDuration:s}=t,u=Number.isFinite(s)&&s>0,a=s*o;if(n>=0){let c=a-n;return u&&c<=0?!1:(u?e.start(0,n+i,c):e.start(0,n+i),!0)}let l=-n/o;return u?e.start(r+l,i,a):e.start(r+l,i),!0}var Dn=class{constructor(){xe(this,"_ctx",null);xe(this,"_bufferCache",new Map);xe(this,"_failedSrcs",new Set);xe(this,"_activeSources",[]);xe(this,"_masterGain",null);xe(this,"_rateAnchorCtx",0);xe(this,"_rateAnchorComp",0);xe(this,"_rate",1);xe(this,"_paused",!0);xe(this,"_playGeneration",0)}async init(){try{return this._ctx=new AudioContext,this._masterGain=this._ctx.createGain(),this._masterGain.connect(this._ctx.destination),!0}catch{return!1}}get context(){return this._ctx}getTime(){return!this._ctx||this._paused?-1:this._rateAnchorComp+(this._ctx.currentTime-this._rateAnchorCtx)*this._rate}async decodeAudioElement(t){let n=t.currentSrc||t.getAttribute("src");if(!n)return null;if(this._bufferCache.has(n))return this._bufferCache.get(n);if(this._failedSrcs.has(n)||!this._ctx)return null;let i;try{let r=await fetch(n,{cache:"no-store"});if(!r.ok)return L("webAudioTransport.fetch",new Error(`${r.status} ${n}`)),null;i=await r.arrayBuffer()}catch(r){return L("webAudioTransport.fetch",r),null}try{let r=await this._ctx.decodeAudioData(i);return this._bufferCache.set(n,r),r}catch(r){return this._failedSrcs.add(n),L("webAudioTransport.decode",r),null}}startGeneration(){return this._playGeneration+=1,this._playGeneration}currentGeneration(){return this._playGeneration}async schedulePlayback(t,n,i,r,o,s,u,a=1,l=Number.POSITIVE_INFINITY){if(!this._ctx||!this._masterGain||u!==this._playGeneration)return null;try{if(this._ctx.state==="suspended"&&await this._ctx.resume(),u!==this._playGeneration)return null;let c=ma(a),p=this._ctx.createBufferSource();p.buffer=n,p.playbackRate.value=c;let f=this._ctx.createGain();f.gain.value=s,p.connect(f),f.connect(this._masterGain);let x=o-i,E=this._ctx.currentTime;if(this._rate=c,this._rateAnchorCtx=E,this._rateAnchorComp=o,!Vd(p,{elapsed:x,mediaStart:r,scheduledAt:E,safeRate:c,clipDuration:l}))return p.disconnect(),f.disconnect(),null;let b=t.muted;t.muted=!0,Ud(t,b);let g={el:t,sourceNode:p,gainNode:f,compositionStart:i,mediaStart:r,scheduledAt:E,priorMuted:b,bounded:Number.isFinite(l)&&l>0};return this._activeSources.push(g),this._paused=!1,p.addEventListener("ended",()=>{let A=this._activeSources.indexOf(g);A!==-1&&(this._activeSources.splice(A,1),t.muted=b,this._activeSources.length===0&&(this._paused=!0))}),g}catch(c){return L("webAudioTransport.schedule",c),null}}setRate(t){let n=ma(t);if(n===this._rate)return!1;this._ctx&&!this._paused&&(this._rateAnchorComp=this.getTime(),this._rateAnchorCtx=this._ctx.currentTime),this._rate=n;for(let i of this._activeSources)try{i.sourceNode.playbackRate.value=n}catch(r){L("webAudioTransport.setRate",r)}return!0}hasBoundedActiveSources(){return this._activeSources.some(t=>t.bounded)}stopAll(){for(let t of this._activeSources){try{t.sourceNode.stop(),t.sourceNode.disconnect(),t.gainNode.disconnect()}catch{}t.el.muted=t.priorMuted}this._activeSources=[],this._paused=!0}setVolume(t){this._masterGain&&(this._masterGain.gain.value=Math.max(0,Math.min(1,t)))}setElementVolume(t,n){let i=Math.max(0,Math.min(1,n));for(let r of this._activeSources)if(r.el===t)try{r.gainNode.gain.value=i}catch(o){L("webAudioTransport.setElementVolume",o)}}setMuted(t){this._masterGain&&(this._masterGain.gain.value=t?0:1)}isActive(){return this._activeSources.length>0&&!this._paused}ownsElement(t){return!this._paused&&this._activeSources.some(n=>n.el===t)}destroy(){if(this.stopAll(),this._bufferCache.clear(),this._failedSrcs.clear(),this._ctx)try{this._ctx.close()}catch{}this._ctx=null,this._masterGain=null}};var pa="data-hf-studio-manual-edit-gesture";var ir="data-hf-authored-duration",rr="data-hf-authored-end";function zd(){let e=window.__HF_EXPORT_RENDER_SEEK_CONFIG,t=e?.fps,n=e?.fpsSource,i=Number(t);return!e||t==null?{fps:null,source:"default",rawFpsSource:n,rawFps:t,fallbackReason:"missing"}:!Number.isFinite(i)||i<=0?{fps:null,source:"default",rawFpsSource:n,rawFps:t,fallbackReason:"invalid"}:{fps:i,source:n==="render-options"||n==="default"?n:"unknown",rawFpsSource:n,rawFps:t,fallbackReason:e.fpsFallbackReason}}function ha(){let e=Kr();ji(document);let t=zd();e.canonicalFps=t.fps??e.canonicalFps,window.__HF_EXPORT_RENDER_SEEK_CONFIG&&console.info("[hyperframes] render runtime fps",{canonicalFps:e.canonicalFps,source:t.source,rawFpsSource:t.rawFpsSource,rawFps:t.rawFps,fallbackReason:t.fallbackReason});let n=null,i=null,r=null,o=[],s=new Set,u=null;if(typeof window.__hfRuntimeTeardown=="function")try{window.__hfRuntimeTeardown()}catch(d){L("runtime.init.site1",d)}(()=>{let d=window.gsap,m=window;if(!(!d?.registerPlugin||m.__hfAutoNoopRegistered))try{d.registerPlugin({name:"_auto",init:()=>!1}),m.__hfAutoNoopRegistered=!0}catch{}})(),document.documentElement&&(document.documentElement.style.margin="0",document.documentElement.style.padding="0",document.documentElement.style.overflow="hidden"),document.body&&(document.body.style.margin="0",document.body.style.padding="0",document.body.style.overflow="hidden"),window.__timelines=window.__timelines||{};let l=()=>{let d=document.querySelector(\'[data-composition-id][data-root="true"]\');if(d instanceof HTMLElement)return d;let m=Array.from(document.querySelectorAll("[data-composition-id]"));return m.find(h=>!h.parentElement?.closest("[data-composition-id]"))??m[0]??null};if(Array.isArray(window.__timelines)){let d=window.__timelines,m=l()?.getAttribute("data-composition-id")??"root",h={};if(d.length===1)h[m]=d[0];else for(let y=0;y<d.length;y++)h[`tl-${y}`]=d[y];window.__timelines=h}let c=l();c&&!c.hasAttribute("data-start")&&c.setAttribute("data-start","0");let p=d=>{o.push(d)},f=(d,m,h)=>{let y=h??`${d}:${JSON.stringify(m)}`;s.has(y)||(s.add(y),Fe({source:"hf-preview",type:"diagnostic",code:d,details:m}))},x=d=>{let m={scale:1,focusX:960,focusY:540},h=[],y=[],w={time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying(),renderMode:!1,timelineDirty:!1};return{play:d.play,pause:d.pause,seek:d.seek,getTime:d.getTime,getDuration:d.getDuration,isPlaying:d.isPlaying,getMainTimeline:()=>null,getElementBounds:()=>{},getElementsAtPoint:()=>{},setElementPosition:()=>{},previewElementPosition:()=>{},setElementKeyframes:()=>{},setElementScale:()=>{},setElementFontSize:()=>{},setElementTextContent:()=>{},setElementTextColor:()=>{},setElementTextShadow:()=>{},setElementTextFontWeight:()=>{},setElementTextFontFamily:()=>{},setElementTextOutline:()=>{},setElementTextHighlight:()=>{},setElementVolume:()=>{},setStageZoom:()=>{},getStageZoom:()=>m,setStageZoomKeyframes:()=>{},getStageZoomKeyframes:()=>h,addElement:()=>!1,removeElement:()=>!1,updateElementTiming:()=>!1,setElementTiming:()=>{},updateElementSrc:()=>!1,updateElementLayer:()=>!1,updateElementBasePosition:()=>!1,markTimelineDirty:()=>{},isTimelineDirty:()=>!1,rebuildTimeline:()=>{},ensureTimeline:()=>{},enableRenderMode:()=>{},disableRenderMode:()=>{},renderSeek:d.renderSeek,getElementVisibility:()=>({visible:!1}),getVisibleElements:()=>y,getRenderState:()=>({...w,time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying()})}},E=1/60,b=.75,g=2,A=.05,_=100,N=240,$=d=>{if(d instanceof Error)return d.message||String(d);if(typeof d=="string")return d;try{return JSON.stringify(d)}catch{return String(d??"")}},B=d=>{let m=d.toLowerCase();return m.includes("cannot read properties of null")||m.includes("cannot set properties of null")?{code:"runtime_null_dom_access",category:"dom-null-access"}:m.includes("failed to execute \'queryselector\'")?{code:"runtime_invalid_selector",category:"selector-invalid"}:m.includes("is not defined")?{code:"runtime_reference_missing",category:"reference-missing"}:{code:"runtime_script_error",category:"script-error"}},v=d=>{if(d==null||d.trim()==="")return null;let m=Number.parseFloat(d);return!Number.isFinite(m)||m<=0?null:`${m}px`},S=()=>l(),C=()=>{let d=S();if(!d)return;let m=v(d.getAttribute("data-width")),h=v(d.getAttribute("data-height"));m&&(d.style.width=m),h&&(d.style.height=h),m&&d.style.setProperty("--comp-width",m),h&&d.style.setProperty("--comp-height",h)},M=()=>{let d=S(),m=Array.from(document.querySelectorAll("[data-composition-id]")).filter(h=>h.hasAttribute("data-duration")||h.hasAttribute("data-end"));for(let h of m){if(d&&h===d)continue;let y=h.getAttribute("data-duration"),w=h.getAttribute("data-end");y!=null&&!h.hasAttribute(ir)&&h.setAttribute(ir,y),w!=null&&!h.hasAttribute(rr)&&h.setAttribute(rr,w),h.removeAttribute("data-duration"),h.removeAttribute("data-end")}},T=()=>{let d=S();if(!d)return;d.style.position||(d.style.position="relative"),d.style.overflow="hidden";let m=v(d.getAttribute("data-width")),h=v(d.getAttribute("data-height"));m&&(d.style.width=m),h&&(d.style.height=h);let y=Array.from(d.children);for(let w of y){let F=w.tagName.toLowerCase();if(F==="script"||F==="style"||F==="link"||F==="meta"||!w.hasAttribute("data-start")||w.hasAttribute("data-hf-autostamped"))continue;let k=(w.style.top==="0px"||w.style.top==="0")&&(w.style.left==="0px"||w.style.left==="0")&&w.style.width==="100%"&&w.style.height==="100%",K=/translate\\(\\s*-50%\\s*,\\s*-50%\\s*\\)/.test(w.style.transform);if(k&&K&&!w.hasAttribute("data-width")&&!w.hasAttribute("data-height")){let be=w.style.top,rt=w.style.left,we=w.style.width,_t=w.style.height;w.style.top="",w.style.left="",w.style.width="",w.style.height="";let ne=window.getComputedStyle(w);ne.top!=="auto"||ne.bottom!=="auto"||ne.left!=="auto"||ne.right!=="auto"||ne.width!=="0px"||ne.height!=="0px"||(w.style.top=be,w.style.left=rt,w.style.width=we,w.style.height=_t)}let J=window.getComputedStyle(w),me=J.position;if(me!=="absolute"&&me!=="fixed"&&(w.style.position="absolute"),!!w.style.top||!!w.style.bottom||J.top!=="auto"||J.bottom!=="auto"||(w.style.top="0"),!!w.style.left||!!w.style.right||J.left!=="auto"||J.right!=="auto"||(w.style.left="0"),F!=="audio"){let be=v(w.getAttribute("data-width")),rt=v(w.getAttribute("data-height")),we=J.width!=="0px"&&J.width!=="auto",_t=J.height!=="0px"&&J.height!=="auto";be?!w.style.width&&!we&&(w.style.width=be):!w.style.width&&J.width==="0px"&&(w.style.width="100%"),rt?!w.style.height&&!_t&&(w.style.height=rt):!w.style.height&&J.height==="0px"&&(w.style.height="100%")}}},R=(d,m=0,h)=>$e({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:h?.includeAuthoredTimingAttrs??!0}).resolveStartForElement(d,m),W=(d,m)=>$e({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:m?.includeAuthoredTimingAttrs??!0}).resolveDurationForElement(d),q=(d,m=0)=>!d.hasAttribute("data-hf-auto-start")&&d.hasAttribute("data-start")?Math.max(0,Number(d.getAttribute("data-start")??0)||0)+m:R(d,m),ie=(d,m)=>{let h=d.tagName.toLowerCase();if(h==="script"||h==="style"||h==="link"||h==="meta")return!1;let y=h==="video"||h==="audio"?q(d,0):R(d,0),w=W(d),F=d.getAttribute("data-composition-id");if(F){let K=(window.__timelines??{})[F],J=null;if(K&&typeof K.duration=="function"){let ye=Number(K.duration());Number.isFinite(ye)&&ye>0&&(J=ye)}!(d.hasAttribute("data-duration")||d.hasAttribute("data-end")||d.hasAttribute(ir)||d.hasAttribute(rr))&&(w==null||w<=0)&&J!=null&&(w=J)}let k=w!=null&&w>0?y+w:Number.POSITIVE_INFINITY;return m>=y&&(Number.isFinite(k)?m<=k:!0)},P=!!document.querySelector("[data-composition-src]"),se=!1;{let d=document.querySelectorAll("[data-composition-id]:not([data-composition-src])");for(let m of d){let h=m.getAttribute("data-composition-id");if(h&&m.children.length===0&&document.querySelector(`template#${CSS.escape(h)}-template`)){se=!0;break}}}let Ee=!P&&!se,H=d=>{if(!d||typeof d.duration!="function")return null;try{let m=Number(d.duration());return Number.isFinite(m)?Math.max(0,m):null}catch{return null}},U=d=>typeof d=="number"&&Number.isFinite(d)&&d>E,V=d=>{let m=Number(d.getAttribute("data-duration"));if(Number.isFinite(m)&&m>0)return m;let h=Number(d.getAttribute("data-playback-start")??d.getAttribute("data-media-start")??"0"),y=Number.isFinite(h)?Math.max(0,h):0;return Number.isFinite(d.duration)&&d.duration>y?Math.max(0,d.duration-y):null},re=()=>{let d=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(d.length===0)return null;let m=0;for(let h of d){let y=q(h,0);if(!Number.isFinite(y))continue;let w=V(h);w==null||w<=E||(m=Math.max(m,Math.max(0,y)+w))}return m>E?m:null},_e=()=>{let d=S();if(!d)return null;let m=window.__timelines??{},h=$e({timelineRegistry:m,includeAuthoredTimingAttrs:!0}),y=0,w=Number.parseFloat(d.getAttribute("data-duration")??"");Number.isFinite(w)&&w>0&&(y=w);let F=Array.from(d.querySelectorAll("[data-composition-id][data-start]"));for(let k of F){if(!(k instanceof Element)||k.parentElement?.closest("[data-composition-id]")!==d)continue;let J=h.resolveStartForElement(k,0),me=h.resolveDurationForElement(k);!Number.isFinite(J)||me==null||me<=0||(y=Math.max(y,Math.max(0,J)+me))}return y>E?y:null},O=()=>{let d=re();return typeof d!="number"||!Number.isFinite(d)||d<=E?null:d},D=d=>U(d)?Math.max(E,d*b):E,G=()=>{let d=0;for(let m of e.deterministicAdapters){let h=m.getInferredDurationSeconds;if(typeof h!="function")continue;let y=null;try{y=h()}catch(w){L("runtime.init.adapterDuration",w)}typeof y=="number"&&Number.isFinite(y)&&y>0&&(d=Math.max(d,y))}return d>E?d:null},Q=(d,m=0)=>{let h=H(d),y=O(),w=_e(),F=G(),k=Math.max(y??0,w??0,F??0),K=Number.isFinite(m)&&m>E?m:0,J=0;return U(h)?J=Math.max(h,k,K):U(k)?J=Math.max(k,K):J=K,J>0?Math.max(0,J):0},ae=()=>{let d=window.__timelines??{},m=ne=>{let ee=Object.entries(d).filter(ge=>!!ge[1]&&typeof ge[1].play=="function"&&typeof ge[1].pause=="function");if(ee.length!==1)return{timeline:null};let[fe,pe]=ee[0];return{timeline:pe,selectedTimelineIds:[fe],selectedDurationSeconds:H(pe),diagnostics:{code:"root_timeline_sole_registered_fallback",details:{reason:ne,soleTimelineId:fe}}}},h=$e({timelineRegistry:d,includeAuthoredTimingAttrs:!0}),y=O(),w=_e(),F=Math.max(y??0,w??0)||null,k=D(F),K=ne=>{let ee=document.querySelector(`[data-composition-id="${CSS.escape(ne)}"]`);return ee?h.resolveStartForElement(ee,0):0},J=ne=>{let ee=window.gsap;if(!ee||typeof ee.timeline!="function")return null;let fe=ee.timeline({paused:!0});for(let pe of ne)fe.add(pe.timeline,K(pe.compositionId));return fe},me=(ne,ee)=>{if(!U(ne))return null;let fe=window.gsap;if(!fe||typeof fe.timeline!="function")return null;let pe=fe.timeline({paused:!0});if(ee)try{pe.add(ee,0)}catch(ue){L("runtime.init.site2",ue)}let ge=pe;if(typeof ge.to=="function")try{ge.to({},{duration:ne})}catch(ue){L("runtime.init.site3",ue)}return pe},ye=(ne,ee)=>{let fe=ne;if(typeof fe.getChildren!="function")return[];try{let pe=fe.getChildren(!0,!0,!0)??[];if(!Array.isArray(pe))return[];let ge=[];for(let ue of ee)if(!pe.some(Re=>Re===ue.timeline))try{let Re=K(ue.compositionId);ne.add(ue.timeline,Re),ge.push(ue.compositionId)}catch(Re){L("runtime.init.site4",Re)}return ge}catch{return[]}},oe=S(),Z=oe?.getAttribute("data-composition-id")??null;if(!Z)return m("root_missing_composition_id");let be=d[Z]??null,we=(()=>{if(!oe)return[];let ne=new Set,ee=Array.from(oe.querySelectorAll("[data-composition-id]")),fe=[];for(let pe of ee){let ge=pe.getAttribute("data-composition-id");if(!ge||ge===Z||ne.has(ge))continue;ne.add(ge);let ue=d[ge]??null;if(!ue||typeof ue.play!="function"||typeof ue.pause!="function")continue;let ve=H(ue);fe.push({compositionId:ge,timeline:ue,durationSeconds:ve??0})}return fe})(),_t=ne=>{for(let ee of ne){let fe=ee.timeline;if(typeof fe.paused=="function")try{fe.paused(!1)}catch(pe){L("runtime.init.site5",pe)}}};if(we.length>0&&_t(we),be){let ne=we.length>0?ye(be,we):[];if((we.length>0||!document.querySelector("[data-composition-id]:not([data-composition-id=\'"+Z+"\'])"))&&(j=!0),ne.length>0)try{let ue=be.time();be.seek(ue,!1)}catch{}let ee=H(be);if(!U(ee)&&we.length>0){let ue=we.map(Za=>Za.compositionId),ve=J(we),Re=H(ve);if(ve&&U(Re))return{timeline:ve,selectedTimelineIds:ue,selectedDurationSeconds:Re,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_unusable_fallback",details:{rootCompositionId:Z,rootDurationSeconds:ee,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:k,selectedDurationSeconds:Re,mediaDurationFloorSeconds:y,authoredCompositionDurationFloorSeconds:w,selectedTimelineIds:ue,autoNestedChildren:ne}}};let Jn=me(F??0,be),Xn=H(Jn);if(Jn&&U(Xn))return{timeline:Jn,selectedTimelineIds:[Z],selectedDurationSeconds:Xn,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:Z,rootDurationSeconds:ee,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:y,authoredCompositionDurationFloorSeconds:w,selectedDurationSeconds:Xn,selectedTimelineIds:[Z],autoNestedChildren:ne}}}}if(!U(ee)&&we.length===0){let ue=me(F??0,be),ve=H(ue);if(ue&&U(ve))return{timeline:ue,selectedTimelineIds:[Z],selectedDurationSeconds:ve,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:Z,rootDurationSeconds:ee,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:y,authoredCompositionDurationFloorSeconds:w,selectedDurationSeconds:ve,selectedTimelineIds:[Z]}}}}let fe=oe?.getAttribute("data-duration"),pe=fe?parseFloat(fe):null,ge=Math.max(U(pe)?pe:0,w??0);if(ge>0&&U(ge)&&U(ee)&&ge>=ee+.5){let ue=be;if(typeof ue.to=="function")try{ue.to({},{duration:0},ge)}catch(Re){L("runtime.init.site6",Re)}let ve=H(be);if(U(ve))return{timeline:be,selectedTimelineIds:[Z],selectedDurationSeconds:ve,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_padded_to_declared_duration",details:{rootCompositionId:Z,rootDurationSeconds:ee,rootDeclaredDur:pe,authoredCompositionDurationFloorSeconds:w,newDur:ve}}}}return{timeline:be,selectedTimelineIds:[Z],selectedDurationSeconds:ee,mediaDurationFloorSeconds:y,diagnostics:ne.length>0?{code:"root_timeline_auto_nested_children",details:{rootCompositionId:Z,selectedDurationSeconds:ee,autoNestedChildren:ne}}:void 0}}if(we.length>0){let ne=we.map(pe=>pe.compositionId),ee=J(we),fe=H(ee);if(ee)return{timeline:ee,selectedTimelineIds:ne,selectedDurationSeconds:fe,mediaDurationFloorSeconds:y,diagnostics:{code:"root_timeline_missing_fallback",details:{rootCompositionId:Z,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:k,selectedDurationSeconds:fe,mediaDurationFloorSeconds:y,selectedTimelineIds:ne}}}}return m("root_composition_id_unmatched_in_registry")},j=!1,z=()=>{if(!Ee)return!1;let d=e.capturedTimeline,m=H(d),h=U(m);if(d&&h&&j)return!1;let y=ae();if(!y.timeline)return!1;if(d&&d===y.timeline)return typeof d.timeScale=="function"&&d.timeScale(e.playbackRate),!1;e.capturedTimeline=y.timeline,typeof e.capturedTimeline.timeScale=="function"&&e.capturedTimeline.timeScale(e.playbackRate);let w=Q(e.capturedTimeline,0);if(w<=0&&typeof e.capturedTimeline.progress=="function"&&(e.capturedTimeline.progress(1,!0),e.capturedTimeline.progress(0,!1),e.capturedTimeline.pause()),w>0){try{I.setDuration(w)}catch{}if(typeof e.capturedTimeline.totalTime=="function"){typeof e.capturedTimeline.progress=="function"&&e.capturedTimeline.progress(1e-4,!0);let k=Math.max(0,e.currentTime||0);e.capturedTimeline.totalTime(k,!1),e.capturedTimeline.pause()}let F=window.__hfStudioManualEditsApply;typeof F=="function"&&F(),ji(document)}if(y.diagnostics&&Fe({source:"hf-preview",type:"diagnostic",code:y.diagnostics.code,details:y.diagnostics.details}),Fe({source:"hf-preview",type:"diagnostic",code:"timeline_bound",details:{selectedTimelineIds:y.selectedTimelineIds??[],selectedDurationSeconds:y.selectedDurationSeconds??null,mediaDurationFloorSeconds:y.mediaDurationFloorSeconds??null}}),window.parent!==window){let F=S(),k=w>0?w:0,K=String(k>0?k:1),J=new Set,me=new Set(document.querySelectorAll("[data-start]")),ye=oe=>{let Z=oe.parentElement;for(;Z&&Z!==F;){if(me.has(Z))return!0;Z=Z.parentElement}return!1};if(e.capturedTimeline.getChildren)try{for(let oe of e.capturedTimeline.getChildren(!0))if(typeof oe.targets=="function")for(let Z of oe.targets())Z instanceof HTMLElement&&Z!==F&&(Z.hasAttribute("data-start")||ye(Z)||J.has(Z)||(J.add(Z),Z.setAttribute("data-start","0"),Z.setAttribute("data-duration",K),Z.setAttribute("data-hf-autostamped","1")))}catch{}if(F instanceof HTMLElement)for(let oe of F.querySelectorAll("[id]"))oe instanceof HTMLElement&&oe!==F&&(oe.hasAttribute("data-start")||ye(oe)||J.has(oe)||oe.tagName==="SCRIPT"||oe.tagName==="STYLE"||oe.tagName==="LINK"||(J.add(oe),oe.setAttribute("data-start","0"),oe.setAttribute("data-duration",K),oe.setAttribute("data-hf-autostamped","1")))}for(let F of wt)on.delete(F),pr(F);return!0};window.__hfForceTimelineRebind=()=>{j=!1,z()};let Y=()=>{let d=S();if(!(d instanceof HTMLElement))return;let m=d.getBoundingClientRect(),h=Number(d.getAttribute("data-width")),y=Number(d.getAttribute("data-height")),w=window.getComputedStyle(d),F=Number.isFinite(h)&&h>0&&Number.isFinite(y)&&y>0,k=m.width<=0||m.height<=0||d.clientWidth<=0||d.clientHeight<=0;!F||!k||f("root_stage_layout_zero",{compositionId:d.getAttribute("data-composition-id")??null,declaredWidth:h,declaredHeight:y,rectWidth:Math.round(m.width),rectHeight:Math.round(m.height),clientWidth:d.clientWidth,clientHeight:d.clientHeight,display:w.display,visibility:w.visibility,overflow:w.overflow},`root-stage-layout-zero:${d.getAttribute("data-composition-id")??"unknown"}`)},Pe=()=>{e.tornDown||(u!=null&&window.cancelAnimationFrame(u),u=window.requestAnimationFrame(()=>{u=null,Y()}))},Me=()=>{i=d=>{let m=$(d.error??d.message).slice(0,N);if(!m)return;let h=B(m);Fe({source:"hf-preview",type:"diagnostic",code:h.code,details:{category:h.category,message:m,filename:d.filename||null,line:Number.isFinite(d.lineno)?d.lineno:null,column:Number.isFinite(d.colno)?d.colno:null}})},r=d=>{let m=$(d.reason).slice(0,N);if(!m)return;let h=B(m);Fe({source:"hf-preview",type:"diagnostic",code:`${h.code}_unhandled_rejection`,details:{category:`${h.category}-unhandled-rejection`,message:m}})},window.addEventListener("error",i),window.addEventListener("unhandledrejection",r)},At=()=>{let d=Array.from(document.querySelectorAll("img, video, audio, source, link[rel=\'stylesheet\']"));for(let h of d){let y=()=>{if(!(h instanceof Element))return;let w=h.tagName.toLowerCase(),F=h.getAttribute("src")??h.getAttribute("href")??h.getAttribute("poster")??null,k=w==="link"?"runtime_stylesheet_load_failed":"runtime_asset_load_failed";f(k,{tagName:w,assetUrl:F,currentSrc:(h instanceof HTMLImageElement||h instanceof HTMLMediaElement)&&h.currentSrc||null,readyState:h instanceof HTMLMediaElement?h.readyState:null,networkState:h instanceof HTMLMediaElement?h.networkState:null},`${k}:${w}:${F??"unknown"}`)};h.addEventListener("error",y),p(()=>{h.removeEventListener("error",y)})}let m=document.fonts;m&&m.ready.then(()=>{if(e.tornDown)return;let h=Array.from(m).filter(y=>y.status==="error").map(y=>y.family).filter(y=>!!y).slice(0,10);h.length!==0&&f("runtime_font_load_issue",{failedFamilies:h,totalFaces:Array.from(m).length},`runtime-font-load-issue:${h.join("|")}`)}).catch(()=>{})},Ue=(d,m)=>{if(!d.timeline)return!1;let h=e.capturedTimeline;if(h&&h===d.timeline)return!1;let y=Math.max(0,e.currentTime||0),w=e.isPlaying;e.capturedTimeline=d.timeline,typeof e.capturedTimeline.timeScale=="function"&&e.capturedTimeline.timeScale(e.playbackRate);try{e.capturedTimeline.pause(),e.capturedTimeline.seek(y,!1),w&&e.capturedTimeline.play()}catch(F){L("runtime.init.site7",F)}return Fe({source:"hf-preview",type:"diagnostic",code:"timeline_loop_guard_rebind",details:{reason:m,previousTime:y,selectedTimelineIds:d.selectedTimelineIds??[],selectedDurationSeconds:d.selectedDurationSeconds??null,mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),!0},tt=null,mr=!1,wt=new Set,on=new WeakMap,sn=()=>{e.tornDown||(tt!=null&&window.clearTimeout(tt),tt=window.setTimeout(()=>{if(e.tornDown)return;tt=null;let d=ae();if(!d.timeline||!U(d.mediaDurationFloorSeconds??null))return;if(!e.capturedTimeline){z()&&(dt(),Te(!0));return}if(mr)return;let h=H(e.capturedTimeline),y=d.selectedDurationSeconds??H(d.timeline);U(y)&&(!U(h)||y>=h+A)&&Ue(d,"manual")&&(mr=!0,Fe({source:"hf-preview",type:"diagnostic",code:"timeline_rebind_after_media_metadata",details:{previousDurationSeconds:h??null,selectedDurationSeconds:y??null,selectedTimelineIds:d.selectedTimelineIds??[],mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),dt(),Te(!0))},_))},Ua=()=>{for(let d of wt)d.removeEventListener("loadedmetadata",sn),d.removeEventListener("durationchange",sn);wt.clear()},Gn=()=>{if(e.tornDown)return;let d=Array.from(document.querySelectorAll("video, audio"));for(let m of d){if(wt.has(m))continue;wt.add(m);let h=Number.parseFloat(m.dataset.volume??"");Number.isFinite(h)&&(m.volume=Math.max(0,Math.min(1,h))),m.addEventListener("loadedmetadata",sn),m.addEventListener("durationchange",sn),m.preload!=="auto"&&(m.preload="auto"),m.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&m.load(),pr(m)}},pr=d=>{on.has(d)||Wr(d,e.capturedTimeline,Q(e.capturedTimeline,0),on)},Wn=new WeakMap,hr=d=>{let m=Wn.get(d);if(m!==void 0)return m;let h=window.getComputedStyle(d).position,y=h==="static"||h==="relative"||h==="sticky";return Wn.set(d,y),y},Un=new WeakMap,Va=d=>{let m=Un.get(d);if(m!==void 0)return m;let h=d.querySelector("[data-start]")===null;return Un.set(d,h),h},za=()=>{Wn=new WeakMap,Un=new WeakMap},Vn=new WeakMap,an=new WeakSet,Le=()=>{let d=F=>{let k=F.closest("[data-composition-id]"),K=k?R(k,0):null,J=k?W(k,{includeAuthoredTimingAttrs:!0}):null;return{compositionRoot:k,inheritedStart:K,inheritedDuration:J}},m=Ur({shouldIncludeElement:F=>F.hasAttribute("data-start")||!!d(F).compositionRoot,resolveStartSeconds:F=>{let k=d(F);return q(F,k.inheritedStart??0)},resolveDurationSeconds:F=>{let k=d(F),K=q(F,k.inheritedStart??0),J=Number.parseFloat(F.dataset.playbackStart??F.dataset.mediaStart??"0")||0,me=k.inheritedStart!=null&&k.inheritedDuration!=null&&k.inheritedDuration>0?Math.max(0,k.inheritedStart+k.inheritedDuration-K):null,ye=Number.isFinite(F.duration)&&F.duration>J?Math.max(0,F.duration-J):null,oe=Number.parseFloat(F.dataset.duration??""),Z=Number.isFinite(oe)&&oe>0?oe:null,be=[ye,me,Z].filter(rt=>rt!=null);return be.length>0?Math.min(...be):null}});for(let F of m.mediaClips){let k=on.get(F.el);k&&(F.volumeKeyframes=k)}let h=e.mediaForceSyncNextTick;h&&(e.mediaForceSyncNextTick=!1),e.nativeMediaSyncDisabled||Vr({clips:m.mediaClips,timeSeconds:e.currentTime,playing:e.isPlaying,playbackRate:e.playbackRate,outputMuted:e.mediaOutputMuted||!e.webAudioMediaDisabled&&!e.nativeMediaSyncDisabled&&de.isActive(),userMuted:e.bridgeMuted,userVolume:e.bridgeVolume,forceSync:h,onElementVolume:(F,k)=>de.setElementVolume(F,k),isWebAudioOwned:F=>de.ownsElement(F),onAutoplayBlocked:()=>{e.mediaAutoplayBlockedPosted||(e.mediaAutoplayBlockedPosted=!0,Fe({source:"hf-preview",type:"media-autoplay-blocked"}))}});let y=Array.from(document.querySelectorAll("[data-start]")),w=S();for(let F of y){if(!(F instanceof HTMLElement))continue;if(F.hasAttribute("data-hidden")){an.has(F)||(Vn.set(F,F.style.getPropertyValue("display")),an.add(F)),F.style.display="none",(F instanceof HTMLVideoElement||F instanceof HTMLImageElement)&&n?.setSourceVisibility(F,!1);continue}if(an.has(F)){let K=Vn.get(F);K?F.style.display=K:F.style.removeProperty("display"),Vn.delete(F),an.delete(F)}let k=ie(F,e.currentTime);if(k){let K=F.parentElement;for(;K&&K!==w;){if(K instanceof HTMLElement&&K.hasAttribute("data-start")&&!ie(K,e.currentTime)){k=!1;break}K=K.parentElement}}F.style.visibility=k?"visible":"hidden",(F instanceof HTMLVideoElement||F instanceof HTMLImageElement)&&n?.setSourceVisibility(F,k),k?hr(F)&&F.style.removeProperty("display"):hr(F)&&Va(F)&&(F.style.display="none")}},Te=d=>{let m=Math.max(0,Math.round((e.currentTime||0)*e.canonicalFps)),h=Date.now();(d||m!==e.bridgeLastPostedFrame||e.isPlaying!==e.bridgeLastPostedPlaying||e.bridgeMuted!==e.bridgeLastPostedMuted||h-e.bridgeLastPostedAt>=e.bridgeMaxPostIntervalMs)&&(e.bridgeLastPostedFrame=m,e.bridgeLastPostedPlaying=e.isPlaying,e.bridgeLastPostedMuted=e.bridgeMuted,e.bridgeLastPostedAt=h,Fe({source:"hf-preview",type:"state",frame:m,isPlaying:e.isPlaying,muted:e.bridgeMuted,playbackRate:e.playbackRate}))},zn="",qa=()=>{let d="";for(let m of document.querySelectorAll("[data-start]"))d+=`${m.id}:${m.tagName}|`;return d},dt=()=>{M(),C(),T();let d=S();if(d){let y=v(d.getAttribute("data-width")),w=v(d.getAttribute("data-height")),F=y?parseInt(y,10):0,k=w?parseInt(w,10):0;F>0&&k>0&&Fe({source:"hf-preview",type:"stage-size",width:F,height:k})}z();let m=Zr({canonicalFps:e.canonicalFps});window.__clipManifest=m;let h=qa();if(zn!==h&&za(),!window.__clipTree||zn!==h){let y=window;window.__clipTree=Jr({startResolver:$e({timelineRegistry:y.__timelines??{},includeAuthoredTimingAttrs:!0}),timelineRegistry:y.__timelines??{},rootDuration:m.durationInFrames/e.canonicalFps}),zn=h}Fe(m),Pe()},Oe=(d,m=0)=>{for(let h of e.deterministicAdapters){try{d==="discover"&&h.discover(),d==="pause"&&h.pause(),d==="play"&&h.play&&h.play()}catch(y){L("runtime.init.site8",y)}if(d==="discover")try{h.seek({time:m})}catch(y){L("runtime.init.site9",y)}}},nt=()=>{window.__renderReady=!1},Ft=null,Ct=!0,ja=()=>{let d=[];for(let m of e.deterministicAdapters){let h=m.getReadyPromise;if(typeof h=="function")try{let y=h();y&&d.push(y)}catch(y){L("runtime.init.adapterReady",y)}}return d},$a=()=>{let d=ja();if(d.length===0)return Ft=null,Ct=!0,!0;let m=d.length===1?d[0]:Promise.all(d);return m!==Ft&&(Ft=m,Ct=!1,Promise.resolve(m).then(()=>{Ft===m&&(Ct=!0,nt())},h=>{Ft===m&&(Ct=!0,L("runtime.init.adapterReady",h),nt())})),Ct};if(Ee)Vi();else{let d={injectedStyles:e.injectedCompStyles,injectedScripts:e.injectedCompScripts,parseDimensionPx:v,onDiagnostic:({code:m,details:h})=>{Fe({source:"hf-preview",type:"diagnostic",code:m,details:h})}};Hs(d).then(()=>Bs(d)).finally(()=>{Ee=!0,Gn(),At(),Vi(),nt()})}let ln=zr({postMessage:d=>Fe(d)});ln.installPickerApi();let Ve=fa();n=Ve,p(()=>{Ve.destroy(),n=null});let qn=d=>{let m=Number(d);!Number.isFinite(m)||m<=0?e.playbackRate=1:e.playbackRate=Math.max(.1,Math.min(5,m)),e.mediaForceSyncNextTick=!0,e.capturedTimeline&&typeof e.capturedTimeline.timeScale=="function"&&e.capturedTimeline.timeScale(e.playbackRate);let h=document.querySelectorAll("video, audio");for(let y of h)if(y instanceof HTMLMediaElement)try{y.playbackRate=e.playbackRate}catch(w){L("runtime.init.site10",w)}},he=$r({getTimeline:()=>e.capturedTimeline,setTimeline:d=>{e.capturedTimeline=d},getTimelineRegistry:()=>window.__timelines??{},getIsPlaying:()=>e.isPlaying,setIsPlaying:d=>{e.isPlaying!==d&&(e.mediaForceSyncNextTick=!0),e.isPlaying=d},getPlaybackRate:()=>e.playbackRate,setPlaybackRate:qn,getCanonicalFps:()=>e.canonicalFps,onSyncMedia:(d,m)=>{e.currentTime=Math.max(0,Number(d)||0),e.isPlaying!==m&&(e.mediaForceSyncNextTick=!0),e.isPlaying=m,Le()},onStatePost:Te,onDeterministicSeek:d=>{for(let m of e.deterministicAdapters)try{m.seek({time:Number(d)||0})}catch(h){L("runtime.init.site11",h)}},onDeterministicPause:()=>Oe("pause"),onDeterministicPlay:()=>Oe("play"),onRenderFrameSeek:()=>{Ve.redraw()},onShowNativeVideos:()=>{},getSafeDuration:()=>Q(e.capturedTimeline,0)});window.__player=x(he),window.__playerReady=!0,Ar(Fe),ot("composition_loaded",{duration:he.getDuration(),compositionId:document.querySelector("[data-composition-id]")?.getAttribute("data-composition-id")??null}),e.controlBridgeHandler=Er({onPlay:()=>{he.play(),ot("composition_played",{time:he.getTime()})},onPause:()=>{he.pause(),ot("composition_paused",{time:he.getTime()})},onStopMedia:()=>{de.stopAll();let d=document.querySelectorAll("video, audio");for(let m of d)m instanceof HTMLMediaElement&&!m.paused&&m.pause()},onSeek:(d,m)=>{let h=Math.max(0,d)/e.canonicalFps;he.seek(h),ot("composition_seeked",{time:h})},onSetMuted:d=>{e.bridgeMuted=d;let m=d||e.mediaOutputMuted;de.setMuted(m);let h=document.querySelectorAll("video, audio");for(let y of h)y instanceof HTMLMediaElement&&(y.muted=m||y.defaultMuted)},onSetVolume:d=>{e.bridgeVolume=d,de.setVolume(d);let m=document.querySelectorAll("video, audio");for(let h of m){if(!(h instanceof HTMLMediaElement))continue;let y=parseFloat(h.dataset.volume??""),w=Number.isFinite(y)?y:1;h.volume=w*d}},onSetMediaOutputMuted:d=>{e.mediaOutputMuted=d;let m=d||e.bridgeMuted;de.setMuted(m);let h=document.querySelectorAll("video, audio");for(let y of h)y instanceof HTMLMediaElement&&(y.muted=m||y.defaultMuted)},onSetNativeMediaSyncDisabled:d=>{e.nativeMediaSyncDisabled!==d&&(e.nativeMediaSyncDisabled=d,e.mediaForceSyncNextTick=!0,d?(de.stopAll(),I.detachAudioSource()):Le())},onSetWebAudioMediaDisabled:d=>{e.webAudioMediaDisabled!==d&&(e.webAudioMediaDisabled=d,e.mediaForceSyncNextTick=!0,d&&(de.stopAll(),I.detachAudioSource()),Le())},onSetPlaybackRate:d=>{qn(d),e.transportClock&&e.transportClock.setRate(e.playbackRate),yr()},onSetColorGrading:(d,m)=>{Ve.setGrading(d,m)},onSetColorGradingCompare:(d,m)=>{Ve.setCompare(d,m)},onTick:()=>{if(e.tornDown||!I.isPlaying())return;let d=I.now();if(e.currentTime=d,it(d),I.reachedEnd()){de.stopAll(),I.detachAudioSource(),I.pause(),e.isPlaying=!1;let m=I.getDuration();Number.isFinite(m)&&(I.seek(m),e.currentTime=m,it(m)),Oe("pause"),Le(),Te(!0)}},onEnablePickMode:()=>ln.enablePickMode(),onDisablePickMode:()=>ln.disablePickMode()}),e.deterministicAdapters=[Hr(),wr({resolveStartSeconds:d=>R(d,0)}),Cr(),Mr(),Tr(),Nr(),Lr(),Rr(),kr(),Dr(),Ir(),Fr({getTimeline:()=>e.capturedTimeline})],Or(),Br(),window.__hfReseekGpu=d=>{let m=Math.max(0,Number(d)||0);window.__hfThreeTime=m,window.__hfTypegpuTime=m,vr(m)},Me(),Gn(),Oe("discover");let I=new kn;e.transportClock=I;let de=new Dn,jn=!1;de.init().then(d=>{jn=d});let Ka=()=>{let d=e.capturedTimeline,m=z();e.capturedTimeline&&(m||e.capturedTimeline!==d||!he._timeline)&&(he._timeline=e.capturedTimeline);let h=Q(e.capturedTimeline,0);if(h>0&&I.setDuration(h),Oe("discover",e.currentTime),!e.capturedTimeline){let y=window.__timelines??{},w=Object.keys(y).filter(F=>y[F]);if(w.length>0){let k=S()?.getAttribute("data-composition-id")??null;f("root_timeline_unbound_registry_present",{reason:k?"root data-composition-id has no matching key in window.__timelines":"root composition element has no data-composition-id attribute",rootCompositionId:k,registeredTimelineKeys:w},"root_timeline_unbound_registry_present"),console.warn("[hyperframes] Root timeline not bound \\u2014 render will freeze at t=0. "+(k?`Root data-composition-id is "${k}" but window.__timelines has no such key. `:"Root composition element has no data-composition-id. ")+`Registered timeline keys: [${w.join(", ")}]. Register the root timeline under its data-composition-id (window.__timelines["${k??"<root-id>"}"] = tl).`)}}window.__renderReady=!0,dt(),Te(!0)};if(nt=()=>{if(!Ee||window.__hfTimelinesBuilding){window.__renderReady=!1;return}if(Oe("discover",e.currentTime),!$a()){window.__renderReady=!1;return}Ka()},window.__hfTimelinesBuilding){window.__renderReady=!1;let d=()=>{window.removeEventListener("hf-timelines-built",d),nt()};window.addEventListener("hf-timelines-built",d)}nt(),Ee&&setTimeout(()=>{nt()},0);let un=0,$n=!1,Ja=(d,m,h)=>{try{d.pause(),typeof d.totalTime=="function"?d.totalTime(m,!1):d.seek(m,!1)}catch(y){L(h,y)}},Xa=d=>{let m=window.__timelines??{},h=S()?.getAttribute("data-composition-id")??null;for(let[y,w]of Object.entries(m)){if(!w||y===h)continue;let F=document.querySelector(`[data-composition-id="${CSS.escape(y)}"]`);if(!F)continue;let k=R(F,0);if(!Number.isFinite(k))continue;let K=W(F,{includeAuthoredTimingAttrs:!0}),J=H(w),me=K!=null&&K>0?K:J,ye=Math.max(0,me!=null&&me>0?Math.min(me,d-k):d-k);Ja(w,ye,"runtime.init.transport.childTimeline")}},Ya=d=>{let m=window.__timelines??{};for(let h of Object.values(m))if(!(!h||h===d))try{h.play()}catch(y){L("runtime.init.activateSiblings",y)}},it=(d,m)=>{let h=e.capturedTimeline;if(h){m?.activateChildren&&Ya(h);let y=h,w=d;if(typeof y.totalDuration=="function")try{let F=Number(y.totalDuration());Number.isFinite(F)&&F>0&&d>F&&(w=F)}catch(F){L("runtime.init.transport.clampDuration",F)}try{typeof h.totalTime=="function"?h.totalTime(w,!1):h.seek(w,!1)}catch(F){L("runtime.init.transport.seek",F)}}else Xa(d);for(let y of e.deterministicAdapters)try{y.seek({time:d})}catch(w){L("runtime.init.transport.adapter",w)}},Qa=()=>{try{return document.querySelector(`[${pa}]`)!=null}catch{return!1}},gr=()=>{if(!(e.tornDown||$n)){$n=!0;try{if(e.transportRafId=window.requestAnimationFrame(gr),un+=1,un%60===0&&!(I.isPlaying()&&e.capturedTimeline!=null&&I.now()<g)){let h=e.capturedTimeline;if(z()){e.capturedTimeline&&!he._timeline&&(he._timeline=e.capturedTimeline),e.capturedTimeline&&e.capturedTimeline!==h&&e.capturedTimeline.pause();let y=Q(e.capturedTimeline,0);y>0&&I.setDuration(y),dt()}}if(un%20===0&&dt(),un%30===0&&Gn(),e.capturedTimeline){let m=Q(e.capturedTimeline,0);m>0&&(!I.isPlaying()||m>=I.getDuration())&&I.setDuration(m)}if(I.isPlaying()&&!e.mediaOutputMuted)if(!e.nativeMediaSyncDisabled&&!e.webAudioMediaDisabled&&de.isActive()&&de.context){let m=de.getTime();m>=0&&I.attachAudioSource({currentTimeSeconds:m})}else{let m=document.querySelectorAll("audio[data-start]"),h=!1;for(let y of m){if(!(y instanceof HTMLMediaElement)||!y.isConnected)continue;let w=Number.parseFloat(y.dataset.start??""),F=Number.parseFloat(y.dataset.duration??""),k=Number.isFinite(F)&&F>0?w+F:1/0,K=Number.parseFloat(y.dataset.playbackStart??y.dataset.mediaStart??"0")||0;if(Number.isFinite(w)&&e.currentTime>=w&&e.currentTime<=k){y.paused?!y.error&&y.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&(I.attachAudioSource({currentTimeSeconds:e.currentTime}),h=!0):(I.attachAudioSource({el:y,compositionStart:w,mediaStart:K}),h=!0);break}}!h&&I.hasAudioSource()&&I.detachAudioSource()}else I.hasAudioSource()&&I.detachAudioSource();let d=I.now();if(e.currentTime=d,(I.isPlaying()||!Qa())&&it(d),I.isPlaying()&&I.reachedEnd()){de.stopAll(),I.detachAudioSource(),I.pause(),e.isPlaying=!1;let m=I.getDuration();Number.isFinite(m)&&(I.seek(m),e.currentTime=m,it(m)),Oe("pause"),Le(),Te(!0);return}I.isPlaying()&&Le(),Te(!1)}finally{$n=!1}}},xr=d=>{let m=document.querySelectorAll("video, audio");for(let h of m){if(!(h instanceof HTMLMediaElement)||!h.isConnected)continue;let y=Number.parseFloat(h.dataset.start??"");if(!Number.isFinite(y))continue;let w=Number.parseFloat(h.dataset.duration??""),F=Number.isFinite(w)&&w>0?y+w:1/0;if(d<y||d>=F)continue;let k=Number.parseFloat(h.dataset.playbackStart??h.dataset.mediaStart??"0")||0,K=d-y+k;if(K>=0)try{h.currentTime=K}catch{}}},br=()=>{if(e.nativeMediaSyncDisabled||e.webAudioMediaDisabled)return;let d=de.startGeneration(),m=document.querySelectorAll("audio[data-start]");for(let h of m){if(!(h instanceof HTMLMediaElement)||!h.isConnected)continue;let y=Number.parseFloat(h.dataset.start??"");if(!Number.isFinite(y))continue;let w=Number.parseFloat(h.dataset.playbackStart??h.dataset.mediaStart??"0")||0,F=Number.parseFloat(h.dataset.volume??""),k=Number.isFinite(F)?F:1,K=Number.parseFloat(h.dataset.duration??""),J=Number.isFinite(K)&&K>0?K:Number.POSITIVE_INFINITY,me=h.closest("[data-composition-id]");if(me){let ye=R(me,0),oe=W(me,{includeAuthoredTimingAttrs:!0});oe!=null&&oe>0&&(J=Math.min(J,Math.max(0,ye+oe-y)))}de.decodeAudioElement(h).then(ye=>{!ye||!I.isPlaying()||de.schedulePlayback(h,ye,y,w,I.now(),k*e.bridgeVolume,d,e.playbackRate,J)})}},yr=()=>{de.setRate(e.playbackRate)&&!e.nativeMediaSyncDisabled&&!e.webAudioMediaDisabled&&jn&&I.isPlaying()&&de.hasBoundedActiveSources()&&(de.stopAll(),br())};if(he.play=()=>{let d=e.capturedTimeline;if(I.isPlaying())return;let m=Q(d,0);if(m>0)I.setDuration(m),I.reachedEnd()&&(I.seek(0),e.currentTime=0,it(0));else{let h=S(),y=Number(h?.getAttribute("data-duration")??0);y>0&&I.setDuration(y)}d&&d.pause(),I.play()&&(e.isPlaying=!0,e.mediaForceSyncNextTick=!0,xr(I.now()),jn&&!e.nativeMediaSyncDisabled&&!e.webAudioMediaDisabled&&br(),Oe("play"),Le(),Ve.redraw(),Te(!0))},he.pause=()=>{if(!I.isPlaying())return;de.stopAll(),I.detachAudioSource(),I.pause(),e.isPlaying=!1,e.currentTime=I.now(),e.mediaForceSyncNextTick=!0,xr(e.currentTime);let d=e.capturedTimeline;d&&d.pause(),Oe("pause"),Le(),Ve.redraw(),Te(!0)},he.seek=d=>{let m=mt(Math.max(0,Number(d)||0),e.canonicalFps);de.stopAll(),I.detachAudioSource(),I.isPlaying()&&I.pause(),I.seek(m),e.currentTime=I.now(),e.isPlaying=!1,e.mediaForceSyncNextTick=!0;let y=e.capturedTimeline;y&&y.pause(),it(e.currentTime),Oe("pause"),Le(),Ve.redraw(),Te(!0)},he.renderSeek=d=>{let m=mt(Math.max(0,Number(d)||0),e.canonicalFps);I.isPlaying()&&I.pause(),I.seek(m),e.currentTime=I.now(),e.isPlaying=!1,e.mediaForceSyncNextTick=!0,it(e.currentTime,{activateChildren:!0}),Le(),Ve.redraw(),Te(!0)},he.getTime=()=>I.now(),he.getDuration=()=>{let d=I.getDuration();return Number.isFinite(d)?d:0},he.isPlaying=()=>I.isPlaying(),he.setPlaybackRate=d=>{qn(d),I.setRate(e.playbackRate),yr()},e.capturedTimeline){let d=Q(e.capturedTimeline,0);d>0&&I.setDuration(d),e.capturedTimeline.pause()}let Sr=window.__player;if(Sr){let d=["play","pause","seek","renderSeek","getTime","getDuration","isPlaying"];for(let m of d)Object.defineProperty(Sr,m,{get:()=>he[m],set:h=>{he[m]=h},configurable:!0})}e.transportRafId=window.requestAnimationFrame(gr),dt(),Te(!0);let Kn=()=>{if(!e.tornDown){e.tornDown=!0,e.transportRafId!=null&&(window.cancelAnimationFrame(e.transportRafId),e.transportRafId=null),e.transportClock=null,de.destroy(),tt!=null&&(window.clearTimeout(tt),tt=null),u!=null&&(window.cancelAnimationFrame(u),u=null),Ua(),e.controlBridgeHandler&&(window.removeEventListener("message",e.controlBridgeHandler),e.controlBridgeHandler=null),i&&(window.removeEventListener("error",i),i=null),r&&(window.removeEventListener("unhandledrejection",r),r=null),e.beforeUnloadHandler&&(window.removeEventListener("beforeunload",e.beforeUnloadHandler),e.beforeUnloadHandler=null),ln.disablePickMode();for(let d of e.deterministicAdapters)if(!(!d||typeof d.revert!="function"))try{d.revert()}catch(m){L("runtime.init.site12",m)}e.deterministicAdapters=[];for(let d of o.splice(0))try{d()}catch(m){L("runtime.init.site13",m)}for(let d of e.injectedCompStyles)try{d.remove()}catch(m){L("runtime.init.site14",m)}e.injectedCompStyles=[];for(let d of e.injectedCompScripts)try{d.remove()}catch(m){L("runtime.init.site15",m)}e.injectedCompScripts=[],e.capturedTimeline=null,window.__hfRuntimeTeardown===Kn&&(window.__hfRuntimeTeardown=null)}};window.__hfRuntimeTeardown=Kn,e.beforeUnloadHandler=Kn,window.addEventListener("beforeunload",e.beforeUnloadHandler)}var ga=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],or=[[697,698,"ON"],[706,719,"ON"],[722,735,"ON"],[741,749,"ON"],[751,767,"ON"],[768,879,"NSM"],[884,885,"ON"],[894,894,"ON"],[900,901,"ON"],[903,903,"ON"],[1014,1014,"ON"],[1155,1161,"NSM"],[1418,1418,"ON"],[1421,1422,"ON"],[1423,1423,"ET"],[1424,1424,"R"],[1425,1469,"NSM"],[1470,1470,"R"],[1471,1471,"NSM"],[1472,1472,"R"],[1473,1474,"NSM"],[1475,1475,"R"],[1476,1477,"NSM"],[1478,1478,"R"],[1479,1479,"NSM"],[1480,1535,"R"],[1536,1541,"AN"],[1542,1543,"ON"],[1544,1544,"AL"],[1545,1546,"ET"],[1547,1547,"AL"],[1548,1548,"CS"],[1549,1549,"AL"],[1550,1551,"ON"],[1552,1562,"NSM"],[1563,1610,"AL"],[1611,1631,"NSM"],[1632,1641,"AN"],[1642,1642,"ET"],[1643,1644,"AN"],[1645,1647,"AL"],[1648,1648,"NSM"],[1649,1749,"AL"],[1750,1756,"NSM"],[1757,1757,"AN"],[1758,1758,"ON"],[1759,1764,"NSM"],[1765,1766,"AL"],[1767,1768,"NSM"],[1769,1769,"ON"],[1770,1773,"NSM"],[1774,1775,"AL"],[1776,1785,"EN"],[1786,1808,"AL"],[1809,1809,"NSM"],[1810,1839,"AL"],[1840,1866,"NSM"],[1867,1957,"AL"],[1958,1968,"NSM"],[1969,1983,"AL"],[1984,2026,"R"],[2027,2035,"NSM"],[2036,2037,"R"],[2038,2041,"ON"],[2042,2044,"R"],[2045,2045,"NSM"],[2046,2069,"R"],[2070,2073,"NSM"],[2074,2074,"R"],[2075,2083,"NSM"],[2084,2084,"R"],[2085,2087,"NSM"],[2088,2088,"R"],[2089,2093,"NSM"],[2094,2136,"R"],[2137,2139,"NSM"],[2140,2143,"R"],[2144,2191,"AL"],[2192,2193,"AN"],[2194,2198,"AL"],[2199,2207,"NSM"],[2208,2249,"AL"],[2250,2273,"NSM"],[2274,2274,"AN"],[2275,2306,"NSM"],[2362,2362,"NSM"],[2364,2364,"NSM"],[2369,2376,"NSM"],[2381,2381,"NSM"],[2385,2391,"NSM"],[2402,2403,"NSM"],[2433,2433,"NSM"],[2492,2492,"NSM"],[2497,2500,"NSM"],[2509,2509,"NSM"],[2530,2531,"NSM"],[2546,2547,"ET"],[2555,2555,"ET"],[2558,2558,"NSM"],[2561,2562,"NSM"],[2620,2620,"NSM"],[2625,2626,"NSM"],[2631,2632,"NSM"],[2635,2637,"NSM"],[2641,2641,"NSM"],[2672,2673,"NSM"],[2677,2677,"NSM"],[2689,2690,"NSM"],[2748,2748,"NSM"],[2753,2757,"NSM"],[2759,2760,"NSM"],[2765,2765,"NSM"],[2786,2787,"NSM"],[2801,2801,"ET"],[2810,2815,"NSM"],[2817,2817,"NSM"],[2876,2876,"NSM"],[2879,2879,"NSM"],[2881,2884,"NSM"],[2893,2893,"NSM"],[2901,2902,"NSM"],[2914,2915,"NSM"],[2946,2946,"NSM"],[3008,3008,"NSM"],[3021,3021,"NSM"],[3059,3064,"ON"],[3065,3065,"ET"],[3066,3066,"ON"],[3072,3072,"NSM"],[3076,3076,"NSM"],[3132,3132,"NSM"],[3134,3136,"NSM"],[3142,3144,"NSM"],[3146,3149,"NSM"],[3157,3158,"NSM"],[3170,3171,"NSM"],[3192,3198,"ON"],[3201,3201,"NSM"],[3260,3260,"NSM"],[3276,3277,"NSM"],[3298,3299,"NSM"],[3328,3329,"NSM"],[3387,3388,"NSM"],[3393,3396,"NSM"],[3405,3405,"NSM"],[3426,3427,"NSM"],[3457,3457,"NSM"],[3530,3530,"NSM"],[3538,3540,"NSM"],[3542,3542,"NSM"],[3633,3633,"NSM"],[3636,3642,"NSM"],[3647,3647,"ET"],[3655,3662,"NSM"],[3761,3761,"NSM"],[3764,3772,"NSM"],[3784,3790,"NSM"],[3864,3865,"NSM"],[3893,3893,"NSM"],[3895,3895,"NSM"],[3897,3897,"NSM"],[3898,3901,"ON"],[3953,3966,"NSM"],[3968,3972,"NSM"],[3974,3975,"NSM"],[3981,3991,"NSM"],[3993,4028,"NSM"],[4038,4038,"NSM"],[4141,4144,"NSM"],[4146,4151,"NSM"],[4153,4154,"NSM"],[4157,4158,"NSM"],[4184,4185,"NSM"],[4190,4192,"NSM"],[4209,4212,"NSM"],[4226,4226,"NSM"],[4229,4230,"NSM"],[4237,4237,"NSM"],[4253,4253,"NSM"],[4957,4959,"NSM"],[5008,5017,"ON"],[5120,5120,"ON"],[5760,5760,"WS"],[5787,5788,"ON"],[5906,5908,"NSM"],[5938,5939,"NSM"],[5970,5971,"NSM"],[6002,6003,"NSM"],[6068,6069,"NSM"],[6071,6077,"NSM"],[6086,6086,"NSM"],[6089,6099,"NSM"],[6107,6107,"ET"],[6109,6109,"NSM"],[6128,6137,"ON"],[6144,6154,"ON"],[6155,6157,"NSM"],[6158,6158,"BN"],[6159,6159,"NSM"],[6277,6278,"NSM"],[6313,6313,"NSM"],[6432,6434,"NSM"],[6439,6440,"NSM"],[6450,6450,"NSM"],[6457,6459,"NSM"],[6464,6464,"ON"],[6468,6469,"ON"],[6622,6655,"ON"],[6679,6680,"NSM"],[6683,6683,"NSM"],[6742,6742,"NSM"],[6744,6750,"NSM"],[6752,6752,"NSM"],[6754,6754,"NSM"],[6757,6764,"NSM"],[6771,6780,"NSM"],[6783,6783,"NSM"],[6832,6877,"NSM"],[6880,6891,"NSM"],[6912,6915,"NSM"],[6964,6964,"NSM"],[6966,6970,"NSM"],[6972,6972,"NSM"],[6978,6978,"NSM"],[7019,7027,"NSM"],[7040,7041,"NSM"],[7074,7077,"NSM"],[7080,7081,"NSM"],[7083,7085,"NSM"],[7142,7142,"NSM"],[7144,7145,"NSM"],[7149,7149,"NSM"],[7151,7153,"NSM"],[7212,7219,"NSM"],[7222,7223,"NSM"],[7376,7378,"NSM"],[7380,7392,"NSM"],[7394,7400,"NSM"],[7405,7405,"NSM"],[7412,7412,"NSM"],[7416,7417,"NSM"],[7616,7679,"NSM"],[8125,8125,"ON"],[8127,8129,"ON"],[8141,8143,"ON"],[8157,8159,"ON"],[8173,8175,"ON"],[8189,8190,"ON"],[8192,8202,"WS"],[8203,8205,"BN"],[8207,8207,"R"],[8208,8231,"ON"],[8232,8232,"WS"],[8233,8233,"B"],[8234,8238,"BN"],[8239,8239,"CS"],[8240,8244,"ET"],[8245,8259,"ON"],[8260,8260,"CS"],[8261,8286,"ON"],[8287,8287,"WS"],[8288,8303,"BN"],[8304,8304,"EN"],[8308,8313,"EN"],[8314,8315,"ES"],[8316,8318,"ON"],[8320,8329,"EN"],[8330,8331,"ES"],[8332,8334,"ON"],[8352,8399,"ET"],[8400,8432,"NSM"],[8448,8449,"ON"],[8451,8454,"ON"],[8456,8457,"ON"],[8468,8468,"ON"],[8470,8472,"ON"],[8478,8483,"ON"],[8485,8485,"ON"],[8487,8487,"ON"],[8489,8489,"ON"],[8494,8494,"ET"],[8506,8507,"ON"],[8512,8516,"ON"],[8522,8525,"ON"],[8528,8543,"ON"],[8585,8587,"ON"],[8592,8721,"ON"],[8722,8722,"ES"],[8723,8723,"ET"],[8724,9013,"ON"],[9083,9108,"ON"],[9110,9257,"ON"],[9280,9290,"ON"],[9312,9351,"ON"],[9352,9371,"EN"],[9450,9899,"ON"],[9901,10239,"ON"],[10496,11123,"ON"],[11126,11263,"ON"],[11493,11498,"ON"],[11503,11505,"NSM"],[11513,11519,"ON"],[11647,11647,"NSM"],[11744,11775,"NSM"],[11776,11869,"ON"],[11904,11929,"ON"],[11931,12019,"ON"],[12032,12245,"ON"],[12272,12287,"ON"],[12288,12288,"WS"],[12289,12292,"ON"],[12296,12320,"ON"],[12330,12333,"NSM"],[12336,12336,"ON"],[12342,12343,"ON"],[12349,12351,"ON"],[12441,12442,"NSM"],[12443,12444,"ON"],[12448,12448,"ON"],[12539,12539,"ON"],[12736,12773,"ON"],[12783,12783,"ON"],[12829,12830,"ON"],[12880,12895,"ON"],[12924,12926,"ON"],[12977,12991,"ON"],[13004,13007,"ON"],[13175,13178,"ON"],[13278,13279,"ON"],[13311,13311,"ON"],[19904,19967,"ON"],[42128,42182,"ON"],[42509,42511,"ON"],[42607,42610,"NSM"],[42611,42611,"ON"],[42612,42621,"NSM"],[42622,42623,"ON"],[42654,42655,"NSM"],[42736,42737,"NSM"],[42752,42785,"ON"],[42888,42888,"ON"],[43010,43010,"NSM"],[43014,43014,"NSM"],[43019,43019,"NSM"],[43045,43046,"NSM"],[43048,43051,"ON"],[43052,43052,"NSM"],[43064,43065,"ET"],[43124,43127,"ON"],[43204,43205,"NSM"],[43232,43249,"NSM"],[43263,43263,"NSM"],[43302,43309,"NSM"],[43335,43345,"NSM"],[43392,43394,"NSM"],[43443,43443,"NSM"],[43446,43449,"NSM"],[43452,43453,"NSM"],[43493,43493,"NSM"],[43561,43566,"NSM"],[43569,43570,"NSM"],[43573,43574,"NSM"],[43587,43587,"NSM"],[43596,43596,"NSM"],[43644,43644,"NSM"],[43696,43696,"NSM"],[43698,43700,"NSM"],[43703,43704,"NSM"],[43710,43711,"NSM"],[43713,43713,"NSM"],[43756,43757,"NSM"],[43766,43766,"NSM"],[43882,43883,"ON"],[44005,44005,"NSM"],[44008,44008,"NSM"],[44013,44013,"NSM"],[64285,64285,"R"],[64286,64286,"NSM"],[64287,64296,"R"],[64297,64297,"ES"],[64298,64335,"R"],[64336,64450,"AL"],[64451,64466,"ON"],[64467,64829,"AL"],[64830,64847,"ON"],[64848,64911,"AL"],[64912,64913,"ON"],[64914,64967,"AL"],[64968,64975,"ON"],[64976,65007,"BN"],[65008,65020,"AL"],[65021,65023,"ON"],[65024,65039,"NSM"],[65040,65049,"ON"],[65056,65071,"NSM"],[65072,65103,"ON"],[65104,65104,"CS"],[65105,65105,"ON"],[65106,65106,"CS"],[65108,65108,"ON"],[65109,65109,"CS"],[65110,65118,"ON"],[65119,65119,"ET"],[65120,65121,"ON"],[65122,65123,"ES"],[65124,65126,"ON"],[65128,65128,"ON"],[65129,65130,"ET"],[65131,65131,"ON"],[65136,65278,"AL"],[65279,65279,"BN"],[65281,65282,"ON"],[65283,65285,"ET"],[65286,65290,"ON"],[65291,65291,"ES"],[65292,65292,"CS"],[65293,65293,"ES"],[65294,65295,"CS"],[65296,65305,"EN"],[65306,65306,"CS"],[65307,65312,"ON"],[65339,65344,"ON"],[65371,65381,"ON"],[65504,65505,"ET"],[65506,65508,"ON"],[65509,65510,"ET"],[65512,65518,"ON"],[65520,65528,"BN"],[65529,65533,"ON"],[65534,65535,"BN"],[65793,65793,"ON"],[65856,65932,"ON"],[65936,65948,"ON"],[65952,65952,"ON"],[66045,66045,"NSM"],[66272,66272,"NSM"],[66273,66299,"EN"],[66422,66426,"NSM"],[67584,67870,"R"],[67871,67871,"ON"],[67872,68096,"R"],[68097,68099,"NSM"],[68100,68100,"R"],[68101,68102,"NSM"],[68103,68107,"R"],[68108,68111,"NSM"],[68112,68151,"R"],[68152,68154,"NSM"],[68155,68158,"R"],[68159,68159,"NSM"],[68160,68324,"R"],[68325,68326,"NSM"],[68327,68408,"R"],[68409,68415,"ON"],[68416,68863,"R"],[68864,68899,"AL"],[68900,68903,"NSM"],[68904,68911,"AL"],[68912,68921,"AN"],[68922,68927,"AL"],[68928,68937,"AN"],[68938,68968,"R"],[68969,68973,"NSM"],[68974,68974,"ON"],[68975,69215,"R"],[69216,69246,"AN"],[69247,69290,"R"],[69291,69292,"NSM"],[69293,69311,"R"],[69312,69327,"AL"],[69328,69336,"ON"],[69337,69369,"AL"],[69370,69375,"NSM"],[69376,69423,"R"],[69424,69445,"AL"],[69446,69456,"NSM"],[69457,69487,"AL"],[69488,69505,"R"],[69506,69509,"NSM"],[69510,69631,"R"],[69633,69633,"NSM"],[69688,69702,"NSM"],[69714,69733,"ON"],[69744,69744,"NSM"],[69747,69748,"NSM"],[69759,69761,"NSM"],[69811,69814,"NSM"],[69817,69818,"NSM"],[69826,69826,"NSM"],[69888,69890,"NSM"],[69927,69931,"NSM"],[69933,69940,"NSM"],[70003,70003,"NSM"],[70016,70017,"NSM"],[70070,70078,"NSM"],[70089,70092,"NSM"],[70095,70095,"NSM"],[70191,70193,"NSM"],[70196,70196,"NSM"],[70198,70199,"NSM"],[70206,70206,"NSM"],[70209,70209,"NSM"],[70367,70367,"NSM"],[70371,70378,"NSM"],[70400,70401,"NSM"],[70459,70460,"NSM"],[70464,70464,"NSM"],[70502,70508,"NSM"],[70512,70516,"NSM"],[70587,70592,"NSM"],[70606,70606,"NSM"],[70608,70608,"NSM"],[70610,70610,"NSM"],[70625,70626,"NSM"],[70712,70719,"NSM"],[70722,70724,"NSM"],[70726,70726,"NSM"],[70750,70750,"NSM"],[70835,70840,"NSM"],[70842,70842,"NSM"],[70847,70848,"NSM"],[70850,70851,"NSM"],[71090,71093,"NSM"],[71100,71101,"NSM"],[71103,71104,"NSM"],[71132,71133,"NSM"],[71219,71226,"NSM"],[71229,71229,"NSM"],[71231,71232,"NSM"],[71264,71276,"ON"],[71339,71339,"NSM"],[71341,71341,"NSM"],[71344,71349,"NSM"],[71351,71351,"NSM"],[71453,71453,"NSM"],[71455,71455,"NSM"],[71458,71461,"NSM"],[71463,71467,"NSM"],[71727,71735,"NSM"],[71737,71738,"NSM"],[71995,71996,"NSM"],[71998,71998,"NSM"],[72003,72003,"NSM"],[72148,72151,"NSM"],[72154,72155,"NSM"],[72160,72160,"NSM"],[72193,72198,"NSM"],[72201,72202,"NSM"],[72243,72248,"NSM"],[72251,72254,"NSM"],[72263,72263,"NSM"],[72273,72278,"NSM"],[72281,72283,"NSM"],[72330,72342,"NSM"],[72344,72345,"NSM"],[72544,72544,"NSM"],[72546,72548,"NSM"],[72550,72550,"NSM"],[72752,72758,"NSM"],[72760,72765,"NSM"],[72850,72871,"NSM"],[72874,72880,"NSM"],[72882,72883,"NSM"],[72885,72886,"NSM"],[73009,73014,"NSM"],[73018,73018,"NSM"],[73020,73021,"NSM"],[73023,73029,"NSM"],[73031,73031,"NSM"],[73104,73105,"NSM"],[73109,73109,"NSM"],[73111,73111,"NSM"],[73459,73460,"NSM"],[73472,73473,"NSM"],[73526,73530,"NSM"],[73536,73536,"NSM"],[73538,73538,"NSM"],[73562,73562,"NSM"],[73685,73692,"ON"],[73693,73696,"ET"],[73697,73713,"ON"],[78912,78912,"NSM"],[78919,78933,"NSM"],[90398,90409,"NSM"],[90413,90415,"NSM"],[92912,92916,"NSM"],[92976,92982,"NSM"],[94031,94031,"NSM"],[94095,94098,"NSM"],[94178,94178,"ON"],[94180,94180,"NSM"],[113821,113822,"NSM"],[113824,113827,"BN"],[117760,117973,"ON"],[118e3,118009,"EN"],[118010,118012,"ON"],[118016,118451,"ON"],[118458,118480,"ON"],[118496,118512,"ON"],[118528,118573,"NSM"],[118576,118598,"NSM"],[119143,119145,"NSM"],[119155,119162,"BN"],[119163,119170,"NSM"],[119173,119179,"NSM"],[119210,119213,"NSM"],[119273,119274,"ON"],[119296,119361,"ON"],[119362,119364,"NSM"],[119365,119365,"ON"],[119552,119638,"ON"],[120513,120513,"ON"],[120539,120539,"ON"],[120571,120571,"ON"],[120597,120597,"ON"],[120629,120629,"ON"],[120655,120655,"ON"],[120687,120687,"ON"],[120713,120713,"ON"],[120745,120745,"ON"],[120771,120771,"ON"],[120782,120831,"EN"],[121344,121398,"NSM"],[121403,121452,"NSM"],[121461,121461,"NSM"],[121476,121476,"NSM"],[121499,121503,"NSM"],[121505,121519,"NSM"],[122880,122886,"NSM"],[122888,122904,"NSM"],[122907,122913,"NSM"],[122915,122916,"NSM"],[122918,122922,"NSM"],[123023,123023,"NSM"],[123184,123190,"NSM"],[123566,123566,"NSM"],[123628,123631,"NSM"],[123647,123647,"ET"],[124140,124143,"NSM"],[124398,124399,"NSM"],[124643,124643,"NSM"],[124646,124646,"NSM"],[124654,124655,"NSM"],[124661,124661,"NSM"],[124928,125135,"R"],[125136,125142,"NSM"],[125143,125251,"R"],[125252,125258,"NSM"],[125259,126063,"R"],[126064,126143,"AL"],[126144,126207,"R"],[126208,126287,"AL"],[126288,126463,"R"],[126464,126703,"AL"],[126704,126705,"ON"],[126706,126719,"AL"],[126720,126975,"R"],[126976,127019,"ON"],[127024,127123,"ON"],[127136,127150,"ON"],[127153,127167,"ON"],[127169,127183,"ON"],[127185,127221,"ON"],[127232,127242,"EN"],[127243,127247,"ON"],[127279,127279,"ON"],[127338,127343,"ON"],[127405,127405,"ON"],[127584,127589,"ON"],[127744,128728,"ON"],[128732,128748,"ON"],[128752,128764,"ON"],[128768,128985,"ON"],[128992,129003,"ON"],[129008,129008,"ON"],[129024,129035,"ON"],[129040,129095,"ON"],[129104,129113,"ON"],[129120,129159,"ON"],[129168,129197,"ON"],[129200,129211,"ON"],[129216,129217,"ON"],[129232,129240,"ON"],[129280,129623,"ON"],[129632,129645,"ON"],[129648,129660,"ON"],[129664,129674,"ON"],[129678,129734,"ON"],[129736,129736,"ON"],[129741,129756,"ON"],[129759,129770,"ON"],[129775,129784,"ON"],[129792,129938,"ON"],[129940,130031,"ON"],[130032,130041,"EN"],[130042,130042,"ON"],[131070,131071,"BN"],[196606,196607,"BN"],[262142,262143,"BN"],[327678,327679,"BN"],[393214,393215,"BN"],[458750,458751,"BN"],[524286,524287,"BN"],[589822,589823,"BN"],[655358,655359,"BN"],[720894,720895,"BN"],[786430,786431,"BN"],[851966,851967,"BN"],[917502,917759,"BN"],[917760,917999,"NSM"],[918e3,921599,"BN"],[983038,983039,"BN"],[1048574,1048575,"BN"],[1114110,1114111,"BN"]];function qd(e){if(e<=255)return ga[e];let t=0,n=or.length-1;for(;t<=n;){let i=t+n>>1,r=or[i];if(e<r[0]){n=i-1;continue}if(e>r[1]){t=i+1;continue}return r[2]}return"L"}function jd(e){let t=e.length;if(t===0)return null;let n=new Array(t),i=!1;for(let l=0;l<t;){let c=e.charCodeAt(l),p=c,f=1;if(c>=55296&&c<=56319&&l+1<t){let E=e.charCodeAt(l+1);E>=56320&&E<=57343&&(p=(c-55296<<10)+(E-56320)+65536,f=2)}let x=qd(p);(x==="R"||x==="AL"||x==="AN")&&(i=!0);for(let E=0;E<f;E++)n[l+E]=x;l+=f}if(!i)return null;let r=0;for(let l=0;l<t;l++){let c=n[l];if(c==="L"){r=0;break}if(c==="R"||c==="AL"){r=1;break}}let o=new Int8Array(t);for(let l=0;l<t;l++)o[l]=r;let s=r&1?"R":"L",u=s,a=u;for(let l=0;l<t;l++)n[l]==="NSM"?n[l]=a:a=n[l];a=u;for(let l=0;l<t;l++){let c=n[l];c==="EN"?n[l]=a==="AL"?"AN":"EN":(c==="R"||c==="L"||c==="AL")&&(a=c)}for(let l=0;l<t;l++)n[l]==="AL"&&(n[l]="R");for(let l=1;l<t-1;l++)n[l]==="ES"&&n[l-1]==="EN"&&n[l+1]==="EN"&&(n[l]="EN"),n[l]==="CS"&&(n[l-1]==="EN"||n[l-1]==="AN")&&n[l+1]===n[l-1]&&(n[l]=n[l-1]);for(let l=0;l<t;l++){if(n[l]!=="EN")continue;let c;for(c=l-1;c>=0&&n[c]==="ET";c--)n[c]="EN";for(c=l+1;c<t&&n[c]==="ET";c++)n[c]="EN"}for(let l=0;l<t;l++){let c=n[l];(c==="WS"||c==="ES"||c==="ET"||c==="CS")&&(n[l]="ON")}a=u;for(let l=0;l<t;l++){let c=n[l];c==="EN"?n[l]=a==="L"?"L":"EN":(c==="R"||c==="L")&&(a=c)}for(let l=0;l<t;l++){if(n[l]!=="ON")continue;let c=l+1;for(;c<t&&n[c]==="ON";)c++;let p=l>0?n[l-1]:u,f=c<t?n[c]:u,x=p!=="L"?"R":"L";if(x===(f!=="L"?"R":"L"))for(let b=l;b<c;b++)n[b]=x;l=c-1}for(let l=0;l<t;l++)n[l]==="ON"&&(n[l]=s);for(let l=0;l<t;l++){let c=n[l];(o[l]&1)===0?c==="R"?o[l]++:(c==="AN"||c==="EN")&&(o[l]+=2):(c==="L"||c==="AN"||c==="EN")&&o[l]++}return o}function xa(e,t){let n=jd(e);if(n===null)return null;let i=new Int8Array(t.length);for(let r=0;r<t.length;r++)i[r]=n[t[r]];return i}var $d=/[ \\t\\n\\r\\f]+/g,Kd=/[\\t\\n\\r\\f]| {2,}|^ | $/;function Jd(e){let t=e??"normal";return t==="pre-wrap"?{mode:t,preserveOrdinarySpaces:!0,preserveHardBreaks:!0}:{mode:t,preserveOrdinarySpaces:!1,preserveHardBreaks:!1}}function Xd(e){if(!Kd.test(e))return e;let t=e.replace($d," ");return t.charCodeAt(0)===32&&(t=t.slice(1)),t.length>0&&t.charCodeAt(t.length-1)===32&&(t=t.slice(0,-1)),t}function Yd(e){return/[\\r\\f]/.test(e)?e.replace(/\\r\\n/g,`\n`).replace(/[\\r\\f]/g,`\n`):e.replace(/\\r\\n/g,`\n`)}var sr=null,Qd;function Zd(){return sr===null&&(sr=new Intl.Segmenter(Qd,{granularity:"word"})),sr}var ef=/\\p{Script=Arabic}/u,In=/\\p{M}/u,Ca=/\\p{Nd}/u;function ba(e){return ef.test(e)}function ya(e){return e>=19968&&e<=40959||e>=13312&&e<=19903||e>=131072&&e<=173791||e>=173824&&e<=177983||e>=177984&&e<=178207||e>=178208&&e<=183983||e>=183984&&e<=191471||e>=191472&&e<=192093||e>=194560&&e<=195103||e>=196608&&e<=201551||e>=201552&&e<=205743||e>=205744&&e<=210041||e>=63744&&e<=64255||e>=12288&&e<=12351||e>=12352&&e<=12447||e>=12448&&e<=12543||e>=44032&&e<=55215||e>=65280&&e<=65519}function Ie(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(!(n<12288)){if(n>=55296&&n<=56319&&t+1<e.length){let i=e.charCodeAt(t+1);if(i>=56320&&i<=57343){let r=(n-55296<<10)+(i-56320)+65536;if(ya(r))return!0;t++;continue}}if(ya(n))return!0}}return!1}function tf(e){let t=Bn(e);return t!==null&&(On.has(t)||Ze.has(t))}var nf=new Set(["\\xA0","\\u202F","\\u2060","\\uFEFF"]);function rf(e){return Ie(e)}function of(e){let t=Bn(e);return t!==null&&nf.has(t)}function Pn(e){return!tf(e)&&!of(e)}var On=new Set(["\\uFF0C","\\uFF0E","\\uFF01","\\uFF1A","\\uFF1B","\\uFF1F","\\u3001","\\u3002","\\u30FB","\\uFF09","\\u3015","\\u3009","\\u300B","\\u300D","\\u300F","\\u3011","\\u3017","\\u3019","\\u301B","\\u30FC","\\u3005","\\u303B","\\u309D","\\u309E","\\u30FD","\\u30FE"]),rn=new Set([\'"\',"(","[","{","\\u201C","\\u2018","\\xAB","\\u2039","\\uFF08","\\u3014","\\u3008","\\u300A","\\u300C","\\u300E","\\u3010","\\u3016","\\u3018","\\u301A"]),lr=new Set(["\'","\\u2019"]),Ze=new Set([".",",","!","?",":",";","\\u060C","\\u061B","\\u061F","\\u0964","\\u0965","\\u104A","\\u104B","\\u104C","\\u104D","\\u104F",")","]","}","%",\'"\',"\\u201D","\\u2019","\\xBB","\\u203A","\\u2026"]),sf=new Set([":",".","\\u060C","\\u061B"]),af=new Set(["\\u104F"]),lf=new Set(["\\u201D","\\u2019","\\xBB","\\u203A","\\u300D","\\u300F","\\u3011","\\u300B","\\u3009","\\u3015","\\uFF09"]);function uf(e){if(ur(e))return!0;let t=!1;for(let n of e){if(Ze.has(n)){t=!0;continue}if(!(t&&In.test(n)))return!1}return t}function cf(e){for(let t of e)if(!On.has(t)&&!Ze.has(t))return!1;return e.length>0}function df(e){if(ur(e))return!0;for(let t of e)if(!rn.has(t)&&!lr.has(t)&&!In.test(t))return!1;return e.length>0}function ur(e){let t=!1;for(let n of e)if(!(n==="\\\\"||In.test(n))){if(rn.has(n)||Ze.has(n)||lr.has(n)){t=!0;continue}return!1}return t}function _a(e,t){let n=t-1;if(n<=0)return Math.max(n,0);let i=e.charCodeAt(n);if(i<56320||i>57343)return n;let r=n-1;if(r<0)return n;let o=e.charCodeAt(r);return o>=55296&&o<=56319?r:n}function Bn(e){if(e.length===0)return null;let t=_a(e,e.length);return e.slice(t)}function ff(e){let t=Array.from(e),n=t.length;for(;n>0;){let i=t[n-1];if(In.test(i)){n--;continue}if(rn.has(i)||lr.has(i)){n--;continue}break}return n<=0||n===t.length?null:{head:t.slice(0,n).join(""),tail:t.slice(n).join("")}}function mf(e,t,n){return n==="text"&&!t&&e.length===1&&e!=="-"&&e!=="\\u2014"?e:null}function Sa(e,t,n,i){let r=t[i],o=e[i];if(r==null)return o;let s=n[i];if(o.length===s)return o;let u=r.repeat(s);return e[i]=u,u}function Ea(e,t){return e&&t!==null&&sf.has(t)}function pf(e){let t=Bn(e);return t!==null&&af.has(t)}function hf(e){if(e.length<2||e[0]!==" ")return null;let t=e.slice(1);return/^\\p{M}+$/u.test(t)?{space:" ",marks:t}:null}function Hn(e){let t=e.length;for(;t>0;){let n=_a(e,t),i=e.slice(n,t);if(lf.has(i))return!0;if(!Ze.has(i))return!1;t=n}return!1}function gf(e,t){if(t.preserveOrdinarySpaces||t.preserveHardBreaks){if(e===" ")return"preserved-space";if(e===" ")return"tab";if(t.preserveHardBreaks&&e===`\n`)return"hard-break"}return e===" "?"space":e==="\\xA0"||e==="\\u202F"||e==="\\u2060"||e==="\\uFEFF"?"glue":e==="\\u200B"?"zero-width-break":e==="\\xAD"?"soft-hyphen":"text"}var xf=/[\\x20\\t\\n\\xA0\\xAD\\u200B\\u202F\\u2060\\uFEFF]/;function Ne(e){return e.length===1?e[0]:e.join("")}function bf(e,t){let n=[];for(let i=e.length-1;i>=0;i--)n.push(e[i]);return n.push(t),Ne(n)}function yf(e,t,n,i){if(!xf.test(e))return[{text:e,isWordLike:t,kind:"text",start:n}];let r=[],o=null,s=[],u=n,a=!1,l=0;for(let c of e){let p=gf(c,i),f=p==="text"&&t;if(o!==null&&p===o&&f===a){s.push(c),l+=c.length;continue}o!==null&&r.push({text:Ne(s),isWordLike:a,kind:o,start:u}),o=p,s=[c],u=n+l,a=f,l+=c.length}return o!==null&&r.push({text:Ne(s),isWordLike:a,kind:o,start:u}),r}function ar(e){return e==="space"||e==="preserved-space"||e==="zero-width-break"||e==="hard-break"}var Sf=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function Ef(e,t){let n=e.texts[t];return n.startsWith("www.")?!0:Sf.test(n)&&t+1<e.len&&e.kinds[t+1]==="text"&&e.texts[t+1]==="//"}function Af(e){return e.includes("?")&&(e.includes("://")||e.startsWith("www."))}function wf(e){let t=e.texts.slice(),n=e.isWordLike.slice(),i=e.kinds.slice(),r=e.starts.slice();for(let s=0;s<e.len;s++){if(i[s]!=="text"||!Ef(e,s))continue;let u=[t[s]],a=s+1;for(;a<e.len&&!ar(i[a]);){u.push(t[a]),n[s]=!0;let l=t[a].includes("?");if(i[a]="text",t[a]="",a++,l)break}t[s]=Ne(u)}let o=0;for(let s=0;s<t.length;s++){let u=t[s];u.length!==0&&(o!==s&&(t[o]=u,n[o]=n[s],i[o]=i[s],r[o]=r[s]),o++)}return t.length=o,n.length=o,i.length=o,r.length=o,{len:o,texts:t,isWordLike:n,kinds:i,starts:r}}function Ff(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o];if(t.push(s),n.push(e.isWordLike[o]),i.push(e.kinds[o]),r.push(e.starts[o]),!Af(s))continue;let u=o+1;if(u>=e.len||ar(e.kinds[u]))continue;let a=[],l=e.starts[u],c=u;for(;c<e.len&&!ar(e.kinds[c]);)a.push(e.texts[c]),c++;a.length>0&&(t.push(Ne(a)),n.push(!0),i.push("text"),r.push(l),o=c-1)}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}var Cf=new Set([":","-","/","\\xD7",",",".","+","\\u2013","\\u2014"]),Aa=/^[A-Za-z0-9_]+[,:;]*$/,wa=/[,:;]+$/;function Ma(e){for(let t of e)if(Ca.test(t))return!0;return!1}function nn(e){if(e.length===0)return!1;for(let t of e)if(!(Ca.test(t)||Cf.has(t)))return!1;return!0}function _f(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o],u=e.kinds[o];if(u==="text"&&nn(s)&&Ma(s)){let a=[s],l=o+1;for(;l<e.len&&e.kinds[l]==="text"&&nn(e.texts[l]);)a.push(e.texts[l]),l++;t.push(Ne(a)),n.push(!0),i.push("text"),r.push(e.starts[o]),o=l-1;continue}t.push(s),n.push(e.isWordLike[o]),i.push(u),r.push(e.starts[o])}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Mf(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o],u=e.kinds[o],a=e.isWordLike[o];if(u==="text"&&a&&Aa.test(s)){let l=[s],c=wa.test(s),p=o+1;for(;c&&p<e.len&&e.kinds[p]==="text"&&e.isWordLike[p]&&Aa.test(e.texts[p]);){let f=e.texts[p];l.push(f),c=wa.test(f),p++}t.push(Ne(l)),n.push(!0),i.push("text"),r.push(e.starts[o]),o=p-1;continue}t.push(s),n.push(a),i.push(u),r.push(e.starts[o])}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function vf(e){let t=[],n=[],i=[],r=[];for(let o=0;o<e.len;o++){let s=e.texts[o];if(e.kinds[o]==="text"&&s.includes("-")){let u=s.split("-"),a=u.length>1;for(let l=0;l<u.length;l++){let c=u[l];if(!a)break;(c.length===0||!Ma(c)||!nn(c))&&(a=!1)}if(a){let l=0;for(let c=0;c<u.length;c++){let p=u[c],f=c<u.length-1?`${p}-`:p;t.push(f),n.push(!0),i.push("text"),r.push(e.starts[o]+l),l+=f.length}continue}}t.push(s),n.push(e.isWordLike[o]),i.push(e.kinds[o]),r.push(e.starts[o])}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Tf(e){let t=[],n=[],i=[],r=[],o=0;for(;o<e.len;){let s=[e.texts[o]],u=e.isWordLike[o],a=e.kinds[o],l=e.starts[o];if(a==="glue"){let c=[s[0]],p=l;for(o++;o<e.len&&e.kinds[o]==="glue";)c.push(e.texts[o]),o++;let f=Ne(c);if(o<e.len&&e.kinds[o]==="text")s[0]=f,s.push(e.texts[o]),u=e.isWordLike[o],a="text",l=p,o++;else{t.push(f),n.push(!1),i.push("glue"),r.push(p);continue}}else o++;if(a==="text")for(;o<e.len&&e.kinds[o]==="glue";){let c=[];for(;o<e.len&&e.kinds[o]==="glue";)c.push(e.texts[o]),o++;let p=Ne(c);if(o<e.len&&e.kinds[o]==="text"){s.push(p,e.texts[o]),u=u||e.isWordLike[o],o++;continue}s.push(p)}t.push(Ne(s)),n.push(u),i.push(a),r.push(l)}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Nf(e){let t=e.texts.slice(),n=e.isWordLike.slice(),i=e.kinds.slice(),r=e.starts.slice();for(let o=0;o<t.length-1;o++){if(i[o]!=="text"||i[o+1]!=="text"||!Ie(t[o])||!Ie(t[o+1]))continue;let s=ff(t[o]);s!==null&&(t[o]=s.head,t[o+1]=s.tail+t[o+1],r[o+1]=r[o]+s.head.length)}return{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function Fa(e,t,n){let i=Zd(),r=0,o=[],s=[],u=[],a=[],l=[],c=[],p=[],f=[],x=[],E=[],b=[],g=[];for(let v of i.segment(e))for(let S of yf(v.segment,v.isWordLike??!1,v.index,n)){let se=function(){c[P]!==null&&(s[P]=[Sa(o,c,p,P)],c[P]=null),s[P].push(S.text),u[P]=u[P]||S.isWordLike,f[P]=f[P]||T,x[P]=x[P]||R,E[P]=q,b[P]=ie,g[P]=Ea(x[P],W)},C=S.kind==="text",M=mf(S.text,S.isWordLike,S.kind),T=Ie(S.text),R=ba(S.text),W=Bn(S.text),q=Hn(S.text),ie=pf(S.text),P=r-1;t.carryCJKAfterClosingQuote&&C&&r>0&&a[P]==="text"&&T&&f[P]&&E[P]||C&&r>0&&a[P]==="text"&&cf(S.text)&&f[P]||C&&r>0&&a[P]==="text"&&b[P]?se():C&&r>0&&a[P]==="text"&&S.isWordLike&&R&&g[P]?(se(),u[P]=!0):M!==null&&r>0&&a[P]==="text"&&c[P]===M?p[P]=(p[P]??1)+1:C&&!S.isWordLike&&r>0&&a[P]==="text"&&(uf(S.text)||S.text==="-"&&u[P])?se():(o[r]=S.text,s[r]=[S.text],u[r]=S.isWordLike,a[r]=S.kind,l[r]=S.start,c[r]=M,p[r]=M===null?0:1,f[r]=T,x[r]=R,E[r]=q,b[r]=ie,g[r]=Ea(R,W),r++)}for(let v=0;v<r;v++){if(c[v]!==null){o[v]=Sa(o,c,p,v);continue}o[v]=Ne(s[v])}for(let v=1;v<r;v++)a[v]==="text"&&!u[v]&&ur(o[v])&&a[v-1]==="text"&&(o[v-1]+=o[v],u[v-1]=u[v-1]||u[v],o[v]="");let A=Array.from({length:r},()=>null),_=-1;for(let v=r-1;v>=0;v--){let S=o[v];if(S.length!==0){if(a[v]==="text"&&!u[v]&&df(S)&&_>=0&&a[_]==="text"){let C=A[_]??[];C.push(S),A[_]=C,l[_]=l[v],o[v]="";continue}_=v}}for(let v=0;v<r;v++){let S=A[v];S!=null&&(o[v]=bf(S,o[v]))}let N=0;for(let v=0;v<r;v++){let S=o[v];S.length!==0&&(N!==v&&(o[N]=S,u[N]=u[v],a[N]=a[v],l[N]=l[v]),N++)}o.length=N,u.length=N,a.length=N,l.length=N;let $=Tf({len:N,texts:o,isWordLike:u,kinds:a,starts:l}),B=Nf(Mf(vf(_f(Ff(wf($))))));for(let v=0;v<B.len-1;v++){let S=hf(B.texts[v]);S!==null&&(B.kinds[v]!=="space"&&B.kinds[v]!=="preserved-space"||B.kinds[v+1]!=="text"||!ba(B.texts[v+1])||(B.texts[v]=S.space,B.isWordLike[v]=!1,B.kinds[v]=B.kinds[v]==="preserved-space"?"preserved-space":"space",B.texts[v+1]=S.marks+B.texts[v+1],B.starts[v+1]=B.starts[v]+S.space.length))}return B}function Lf(e,t){if(e.len===0)return[];if(!t.preserveHardBreaks)return[{startSegmentIndex:0,endSegmentIndex:e.len,consumedEndSegmentIndex:e.len}];let n=[],i=0;for(let r=0;r<e.len;r++)e.kinds[r]==="hard-break"&&(n.push({startSegmentIndex:i,endSegmentIndex:r,consumedEndSegmentIndex:r+1}),i=r+1);return i<e.len&&n.push({startSegmentIndex:i,endSegmentIndex:e.len,consumedEndSegmentIndex:e.len}),n}function Rf(e){if(e.len<=1)return e;let t=[],n=[],i=[],r=[],o=null,s=!1,u=0,a=!1,l=!1;function c(){o!==null&&(t.push(Ne(o)),n.push(s),i.push("text"),r.push(u),o=null)}for(let p=0;p<e.len;p++){let f=e.texts[p],x=e.kinds[p],E=e.isWordLike[p],b=e.starts[p];if(x==="text"){let g=rf(f),A=Pn(f);if(o!==null&&a&&l){o.push(f),s=s||E,a=a||g,l=A;continue}c(),o=[f],s=E,u=b,a=g,l=A;continue}c(),t.push(f),n.push(E),i.push(x),r.push(b)}return c(),{len:t.length,texts:t,isWordLike:n,kinds:i,starts:r}}function va(e,t,n="normal",i="normal"){let r=Jd(n),o=r.mode==="pre-wrap"?Yd(e):Xd(e);if(o.length===0)return{normalized:o,chunks:[],len:0,texts:[],isWordLike:[],kinds:[],starts:[]};let s=i==="keep-all"?Rf(Fa(o,t,r)):Fa(o,t,r);return{normalized:o,chunks:Lf(s,r),...s}}var yt=null,Ta=new Map,St=null,kf=96,Df=/\\p{Emoji_Presentation}/u,If=/[\\p{Emoji_Presentation}\\p{Extended_Pictographic}\\p{Regional_Indicator}\\uFE0F\\u20E3]/u,cr=null,Na=new Map;function dr(){if(yt!==null)return yt;if(typeof OffscreenCanvas<"u")return yt=new OffscreenCanvas(1,1).getContext("2d"),yt;if(typeof document<"u")return yt=document.createElement("canvas").getContext("2d"),yt;throw new Error("Text measurement requires OffscreenCanvas or a DOM canvas context.")}function Pf(e){let t=Ta.get(e);return t||(t=new Map,Ta.set(e,t)),t}function je(e,t){let n=t.get(e);return n===void 0&&(n={width:dr().measureText(e).width,containsCJK:Ie(e)},t.set(e,n)),n}function Et(){if(St!==null)return St;if(typeof navigator>"u")return St={lineFitEpsilon:.005,carryCJKAfterClosingQuote:!1,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},St;let e=navigator.userAgent,n=navigator.vendor==="Apple Computer, Inc."&&e.includes("Safari/")&&!e.includes("Chrome/")&&!e.includes("Chromium/")&&!e.includes("CriOS/")&&!e.includes("FxiOS/")&&!e.includes("EdgiOS/"),i=e.includes("Chrome/")||e.includes("Chromium/")||e.includes("CriOS/")||e.includes("Edg/");return St={lineFitEpsilon:n?1/64:.005,carryCJKAfterClosingQuote:i,preferPrefixWidthsForBreakableRuns:n,preferEarlySoftHyphenBreak:n},St}function Of(e){let t=e.match(/(\\d+(?:\\.\\d+)?)\\s*px/);return t?parseFloat(t[1]):16}function La(){return cr===null&&(cr=new Intl.Segmenter(void 0,{granularity:"grapheme"})),cr}function Bf(e){return Df.test(e)||e.includes("\\uFE0F")}function Ra(e){return If.test(e)}function Hf(e,t){let n=Na.get(e);if(n!==void 0)return n;let i=dr();i.font=e;let r=i.measureText("\\u{1F600}").width;if(n=0,r>t+.5&&typeof document<"u"&&document.body!==null){let o=document.createElement("span");o.style.font=e,o.style.display="inline-block",o.style.visibility="hidden",o.style.position="absolute",o.textContent="\\u{1F600}",document.body.appendChild(o);let s=o.getBoundingClientRect().width;document.body.removeChild(o),r-s>.5&&(n=r-s)}return Na.set(e,n),n}function Gf(e){let t=0,n=La();for(let i of n.segment(e))Bf(i.segment)&&t++;return t}function Wf(e,t){return t.emojiCount===void 0&&(t.emojiCount=Gf(e)),t.emojiCount}function et(e,t,n){return n===0?t.width:t.width-Wf(e,t)*n}function ka(e,t,n,i,r){if(t.breakableFitAdvances!==void 0)return t.breakableFitAdvances;let o=La(),s=[];for(let c of o.segment(e))s.push(c.segment);if(s.length<=1)return t.breakableFitAdvances=null,t.breakableFitAdvances;if(r==="sum-graphemes"){let c=[];for(let p of s){let f=je(p,n);c.push(et(p,f,i))}return t.breakableFitAdvances=c,t.breakableFitAdvances}if(r==="pair-context"||s.length>kf){let c=[],p=null,f=0;for(let x of s){let E=je(x,n),b=et(x,E,i);if(p===null)c.push(b);else{let g=p+x,A=je(g,n);c.push(et(g,A,i)-f)}p=x,f=b}return t.breakableFitAdvances=c,t.breakableFitAdvances}let u=[],a="",l=0;for(let c of s){a+=c;let p=je(a,n),f=et(a,p,i);u.push(f-l),l=f}return t.breakableFitAdvances=u,t.breakableFitAdvances}function Da(e,t){let n=dr();n.font=e;let i=Pf(e),r=Of(e),o=t?Hf(e,r):0;return{cache:i,fontSize:r,emojiCorrection:o}}function Uf(e,t){for(;t<e.widths.length;){let n=e.kinds[t];if(n!=="space"&&n!=="zero-width-break"&&n!=="soft-hyphen")break;t++}return t}function Vf(e,t){if(t<=0)return 0;let n=e%t;return Math.abs(n)<=1e-6?t:t-n}function zf(e,t,n,i,r){let o=0,s=t;for(;o<e.length;){let u=s+e[o];if((o+1<e.length?u+r:u)>n+i)break;s=u,o++}return{fitCount:o,fittedWidth:s}}function Ia(e,t){return e.simpleLineWalkFastPath?Pa(e,t):Oa(e,t)}function Pa(e,t,n){let{widths:i,kinds:r,breakableFitAdvances:o}=e;if(i.length===0)return 0;let u=Et().lineFitEpsilon,a=t+u,l=0,c=0,p=!1,f=0,x=0,E=0,b=0,g=-1,A=0;function _(){g=-1,A=0}function N(M=E,T=b,R=c){l++,n?.({startSegmentIndex:f,startGraphemeIndex:x,endSegmentIndex:M,endGraphemeIndex:T,width:R}),c=0,p=!1,_()}function $(M,T){p=!0,f=M,x=0,E=M+1,b=0,c=T}function B(M,T,R){p=!0,f=M,x=T,E=M,b=T+1,c=R}function v(M,T){if(!p){$(M,T);return}c+=T,E=M+1,b=0}function S(M,T){let R=o[M];for(let W=T;W<R.length;W++){let q=R[W];p?c+q>a?(N(),B(M,W,q)):(c+=q,E=M,b=W+1):B(M,W,q)}p&&E===M&&b===R.length&&(E=M+1,b=0)}let C=0;for(;C<i.length&&!(!p&&(C=Uf(e,C),C>=i.length));){let M=i[C],T=r[C],R=T==="space"||T==="preserved-space"||T==="tab"||T==="zero-width-break"||T==="soft-hyphen";if(!p){M>t&&o[C]!==null?S(C,0):$(C,M),R&&(g=C+1,A=c-M),C++;continue}if(c+M>a){if(R){v(C,M),N(C+1,0,c-M),C++;continue}if(g>=0){if(E>g||E===g&&b>0){N();continue}N(g,0,A);continue}if(M>t&&o[C]!==null){N(),S(C,0),C++;continue}N();continue}v(C,M),R&&(g=C+1,A=c-M),C++}return p&&N(),l}function Oa(e,t,n){if(e.simpleLineWalkFastPath)return Pa(e,t,n);let{widths:i,lineEndFitAdvances:r,lineEndPaintAdvances:o,kinds:s,breakableFitAdvances:u,discretionaryHyphenWidth:a,tabStopAdvance:l,chunks:c}=e;if(i.length===0||c.length===0)return 0;let p=Et(),f=p.lineFitEpsilon,x=t+f,E=0,b=0,g=!1,A=0,_=0,N=0,$=0,B=-1,v=0,S=0,C=null;function M(){B=-1,v=0,S=0,C=null}function T(H=N,U=$,V=b){E++,n?.({startSegmentIndex:A,startGraphemeIndex:_,endSegmentIndex:H,endGraphemeIndex:U,width:V}),b=0,g=!1,M()}function R(H,U){g=!0,A=H,_=0,N=H+1,$=0,b=U}function W(H,U,V){g=!0,A=H,_=U,N=H,$=U+1,b=V}function q(H,U){if(!g){R(H,U);return}b+=U,N=H+1,$=0}function ie(H,U,V,re){if(!U)return;let _e=H==="tab"?0:r[V],O=H==="tab"?re:o[V];B=V+1,v=b-re+_e,S=b-re+O,C=H}function P(H,U){let V=u[H];for(let re=U;re<V.length;re++){let _e=V[re];g?b+_e>x?(T(),W(H,re,_e)):(b+=_e,N=H,$=re+1):W(H,re,_e)}g&&N===H&&$===V.length&&(N=H+1,$=0)}function se(H){if(C!=="soft-hyphen")return!1;let U=u[H];if(U==null)return!1;let{fitCount:V,fittedWidth:re}=zf(U,b,t,f,a);return V===0?!1:(b=re,N=H,$=V,M(),V===U.length?(N=H+1,$=0,!0):(T(H,V,re+a),P(H,V),!0))}function Ee(H){E++,n?.({startSegmentIndex:H.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:H.consumedEndSegmentIndex,endGraphemeIndex:0,width:0}),M()}for(let H=0;H<c.length;H++){let U=c[H];if(U.startSegmentIndex===U.endSegmentIndex){Ee(U);continue}g=!1,b=0,A=U.startSegmentIndex,_=0,N=U.startSegmentIndex,$=0,M();let V=U.startSegmentIndex;for(;V<U.endSegmentIndex;){let re=s[V],_e=re==="space"||re==="preserved-space"||re==="tab"||re==="zero-width-break"||re==="soft-hyphen",O=re==="tab"?Vf(b,l):i[V];if(re==="soft-hyphen"){g&&(N=V+1,$=0,B=V+1,v=b+a,S=b+a,C=re),V++;continue}if(!g){O>t&&u[V]!==null?P(V,0):R(V,O),ie(re,_e,V,O),V++;continue}if(b+O>x){let G=b+(re==="tab"?0:r[V]),Q=b+(re==="tab"?O:o[V]);if(C==="soft-hyphen"&&p.preferEarlySoftHyphenBreak&&v<=x){T(B,0,S);continue}if(C==="soft-hyphen"&&se(V)){V++;continue}if(_e&&G<=x){q(V,O),T(V+1,0,Q),V++;continue}if(B>=0&&v<=x){if(N>B||N===B&&$>0){T();continue}let ae=B;T(ae,0,S),V=ae;continue}if(O>t&&u[V]!==null){T(),P(V,0),V++;continue}T();continue}q(V,O),ie(re,_e,V,O),V++}if(g){let re=B===U.consumedEndSegmentIndex?S:b;T(U.consumedEndSegmentIndex,0,re)}}return E}var fr=null;function qf(){return fr===null&&(fr=new Intl.Segmenter(void 0,{granularity:"grapheme"})),fr}function jf(e){return e?{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[],segments:[]}:{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[]}}function $f(e,t){let n=[],i=[],r=0,o=!1,s=!1,u=!1;function a(){i.length!==0&&(n.push({text:i.length===1?i[0]:i.join(""),start:r}),i=[],o=!1,s=!1,u=!1)}function l(p,f,x){i=[p],r=f,o=x,s=Hn(p),u=rn.has(p)}function c(p,f){i.push(p),o=o||f;let x=Hn(p);p.length===1&&Ze.has(p)?s=s||x:s=x,u=!1}for(let p of qf().segment(e)){let f=p.segment,x=Ie(f);if(i.length===0){l(f,p.index,x);continue}if(u||On.has(f)||Ze.has(f)||t.carryCJKAfterClosingQuote&&x&&s){c(f,x);continue}if(!o&&!x){c(f,x);continue}a(),l(f,p.index,x)}return a(),n}function Kf(e){if(e.length<=1)return e;let t=[],n=[e[0].text],i=e[0].start,r=Ie(e[0].text),o=Pn(e[0].text);function s(){t.push({text:n.length===1?n[0]:n.join(""),start:i})}for(let u=1;u<e.length;u++){let a=e[u],l=Ie(a.text),c=Pn(a.text);if(r&&o){n.push(a.text),r=r||l,o=c;continue}s(),n=[a.text],i=a.start,r=l,o=c}return s(),t}function Jf(e,t,n,i){let r=Et(),{cache:o,emojiCorrection:s}=Da(t,Ra(e.normalized)),u=et("-",je("-",o),s),l=et(" ",je(" ",o),s)*8;if(e.len===0)return jf(n);let c=[],p=[],f=[],x=[],E=e.chunks.length<=1,b=n?[]:null,g=[],A=n?[]:null,_=Array.from({length:e.len});function N(S,C,M,T,R,W,q){R!=="text"&&R!=="space"&&R!=="zero-width-break"&&(E=!1),c.push(C),p.push(M),f.push(T),x.push(R),b?.push(W),g.push(q),A!==null&&A.push(S)}function $(S,C,M,T,R){let W=je(S,o),q=et(S,W,s),ie=C==="space"||C==="preserved-space"||C==="zero-width-break"?0:q,P=C==="space"||C==="zero-width-break"?0:q;if(R&&T&&S.length>1){let se="sum-graphemes";nn(S)?se="pair-context":r.preferPrefixWidthsForBreakableRuns&&(se="segment-prefixes");let Ee=ka(S,W,o,s,se);N(S,q,ie,P,C,M,Ee);return}N(S,q,ie,P,C,M,null)}for(let S=0;S<e.len;S++){_[S]=c.length;let C=e.texts[S],M=e.isWordLike[S],T=e.kinds[S],R=e.starts[S];if(T==="soft-hyphen"){N(C,0,u,u,T,R,null);continue}if(T==="hard-break"){N(C,0,0,0,T,R,null);continue}if(T==="tab"){N(C,0,0,0,T,R,null);continue}let W=je(C,o);if(T==="text"&&W.containsCJK){let q=$f(C,r),ie=i==="keep-all"?Kf(q):q;for(let P=0;P<ie.length;P++){let se=ie[P];$(se.text,"text",R+se.start,M,i==="keep-all"||!Ie(se.text))}continue}$(C,T,R,M,!0)}let B=Xf(e.chunks,_,c.length),v=b===null?null:xa(e.normalized,b);return A!==null?{widths:c,lineEndFitAdvances:p,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:E,segLevels:v,breakableFitAdvances:g,discretionaryHyphenWidth:u,tabStopAdvance:l,chunks:B,segments:A}:{widths:c,lineEndFitAdvances:p,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:E,segLevels:v,breakableFitAdvances:g,discretionaryHyphenWidth:u,tabStopAdvance:l,chunks:B}}function Xf(e,t,n){let i=[];for(let r=0;r<e.length;r++){let o=e[r],s=o.startSegmentIndex<t.length?t[o.startSegmentIndex]:n,u=o.endSegmentIndex<t.length?t[o.endSegmentIndex]:n,a=o.consumedEndSegmentIndex<t.length?t[o.consumedEndSegmentIndex]:n;i.push({startSegmentIndex:s,endSegmentIndex:u,consumedEndSegmentIndex:a})}return i}function Yf(e,t,n,i){let r=i?.wordBreak??"normal",o=va(e,Et(),i?.whiteSpace,r);return Jf(o,t,n,r)}function Ba(e,t,n){return Yf(e,t,!1,n)}function Ha(e,t,n){let i=Ia(e,t);return{lineCount:i,height:i*n}}var Qf={maxWidth:1600,baseFontSize:78,minFontSize:42,fontWeight:900,fontFamily:"Outfit",step:2};function Ga(e,t){let n={...Qf,...t},i=1.2;for(let r=n.baseFontSize;r>=n.minFontSize;r-=n.step){let o=`${n.fontWeight} ${r}px ${n.fontFamily}`,s=Ba(e,o),{lineCount:u}=Ha(s,n.maxWidth,r*i);if(u<=1)return{fontSize:r,fits:!0}}return{fontSize:n.minFontSize,fits:!1}}window.__timelines=window.__timelines||{};window.__hyperframes={fitTextFontSize:Ga,getVariables:Ns};function Wa(){let e=window;e.__hyperframeRuntimeBootstrapped||(e.__hyperframeRuntimeBootstrapped=!0,ha())}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Wa,{once:!0}):Wa();})();\n';
|
|
56112
56112
|
}
|
|
56113
56113
|
});
|
|
56114
56114
|
|
|
@@ -61191,6 +61191,18 @@ async function injectDrawElementCanvas(page, width, height) {
|
|
|
61191
61191
|
tick.id = "__hf_de_tick";
|
|
61192
61192
|
tick.style.cssText = "position:absolute;left:0px;top:0;width:1px;height:1px;background:#000;opacity:0.01;pointer-events:none";
|
|
61193
61193
|
canvas.appendChild(tick);
|
|
61194
|
+
window.__hfDeInvalidate = () => {
|
|
61195
|
+
tick.style.backgroundColor = tick.style.backgroundColor === "rgb(0, 0, 0)" ? "rgb(1, 1, 1)" : "rgb(0, 0, 0)";
|
|
61196
|
+
const cvp = canvas;
|
|
61197
|
+
if (typeof cvp.requestPaint === "function") {
|
|
61198
|
+
try {
|
|
61199
|
+
cvp.requestPaint();
|
|
61200
|
+
return true;
|
|
61201
|
+
} catch {
|
|
61202
|
+
}
|
|
61203
|
+
}
|
|
61204
|
+
return false;
|
|
61205
|
+
};
|
|
61194
61206
|
},
|
|
61195
61207
|
{ w: width, h: height }
|
|
61196
61208
|
);
|
|
@@ -61210,6 +61222,7 @@ async function captureDrawElementFrame(page, width, height, format = "jpeg", qua
|
|
|
61210
61222
|
const ctx = canvas.getContext("2d");
|
|
61211
61223
|
if (!ctx) throw new Error("drawElement: 2d context unavailable");
|
|
61212
61224
|
const aw = window;
|
|
61225
|
+
let usedRequestPaint = false;
|
|
61213
61226
|
aw.__hf3d?.update();
|
|
61214
61227
|
const accel = (aw.__hf_accel_canvases ?? []).filter((c3) => root.contains(c3));
|
|
61215
61228
|
if (!sync) {
|
|
@@ -61252,19 +61265,20 @@ async function captureDrawElementFrame(page, width, height, format = "jpeg", qua
|
|
|
61252
61265
|
} catch {
|
|
61253
61266
|
}
|
|
61254
61267
|
}
|
|
61255
|
-
const __rw = window;
|
|
61256
|
-
let __appliedAlpha = false;
|
|
61257
61268
|
let __appliedTransform = false;
|
|
61258
|
-
|
|
61269
|
+
let __appliedAlpha = false;
|
|
61270
|
+
if (aw.__HF_ROOT_PROPS__) {
|
|
61259
61271
|
try {
|
|
61260
61272
|
const rcs = getComputedStyle(root);
|
|
61261
|
-
|
|
61262
|
-
|
|
61263
|
-
|
|
61264
|
-
|
|
61265
|
-
|
|
61266
|
-
|
|
61267
|
-
|
|
61273
|
+
if (!usedRequestPaint) {
|
|
61274
|
+
const baseOp = aw.__HF_ROOT_BASE_OPACITY__ ?? 1;
|
|
61275
|
+
const curOp = parseFloat(rcs.opacity);
|
|
61276
|
+
if (baseOp > 1e-3 && Number.isFinite(curOp)) {
|
|
61277
|
+
const ratio = curOp / baseOp;
|
|
61278
|
+
if (Math.abs(ratio - 1) > 2e-3) {
|
|
61279
|
+
ctx.globalAlpha = Math.max(0, Math.min(1, ratio));
|
|
61280
|
+
__appliedAlpha = true;
|
|
61281
|
+
}
|
|
61268
61282
|
}
|
|
61269
61283
|
}
|
|
61270
61284
|
const curTransform = rcs.transform;
|
|
@@ -61315,10 +61329,7 @@ async function captureDrawElementFrame(page, width, height, format = "jpeg", qua
|
|
|
61315
61329
|
drawAndEncode();
|
|
61316
61330
|
};
|
|
61317
61331
|
canvas.addEventListener("paint", onPaint);
|
|
61318
|
-
|
|
61319
|
-
if (tick) {
|
|
61320
|
-
tick.style.backgroundColor = tick.style.backgroundColor === "rgb(0, 0, 0)" ? "rgb(1, 1, 1)" : "rgb(0, 0, 0)";
|
|
61321
|
-
}
|
|
61332
|
+
usedRequestPaint = aw.__hfDeInvalidate?.() === true;
|
|
61322
61333
|
setTimeout(() => {
|
|
61323
61334
|
canvas.removeEventListener("paint", onPaint);
|
|
61324
61335
|
drawAndEncode();
|
|
@@ -61473,6 +61484,7 @@ async function produceDrawElementFrame(page, width, height, quality = 80, syncTo
|
|
|
61473
61484
|
}
|
|
61474
61485
|
return new Promise((resolveCapture, rejectCapture) => {
|
|
61475
61486
|
let settled = false;
|
|
61487
|
+
let usedRequestPaint = false;
|
|
61476
61488
|
const drawAndKick = () => {
|
|
61477
61489
|
if (settled) return;
|
|
61478
61490
|
settled = true;
|
|
@@ -61500,19 +61512,20 @@ async function produceDrawElementFrame(page, width, height, quality = 80, syncTo
|
|
|
61500
61512
|
} catch {
|
|
61501
61513
|
}
|
|
61502
61514
|
}
|
|
61503
|
-
const __rw = window;
|
|
61504
|
-
let __appliedAlpha = false;
|
|
61505
61515
|
let __appliedTransform = false;
|
|
61506
|
-
|
|
61516
|
+
let __appliedAlpha = false;
|
|
61517
|
+
if (aw.__HF_ROOT_PROPS__) {
|
|
61507
61518
|
try {
|
|
61508
61519
|
const rcs = getComputedStyle(root);
|
|
61509
|
-
|
|
61510
|
-
|
|
61511
|
-
|
|
61512
|
-
|
|
61513
|
-
|
|
61514
|
-
|
|
61515
|
-
|
|
61520
|
+
if (!usedRequestPaint) {
|
|
61521
|
+
const baseOp = aw.__HF_ROOT_BASE_OPACITY__ ?? 1;
|
|
61522
|
+
const curOp = parseFloat(rcs.opacity);
|
|
61523
|
+
if (baseOp > 1e-3 && Number.isFinite(curOp)) {
|
|
61524
|
+
const ratio = curOp / baseOp;
|
|
61525
|
+
if (Math.abs(ratio - 1) > 2e-3) {
|
|
61526
|
+
ctx.globalAlpha = Math.max(0, Math.min(1, ratio));
|
|
61527
|
+
__appliedAlpha = true;
|
|
61528
|
+
}
|
|
61516
61529
|
}
|
|
61517
61530
|
}
|
|
61518
61531
|
const curTransform = rcs.transform;
|
|
@@ -61566,10 +61579,7 @@ async function produceDrawElementFrame(page, width, height, quality = 80, syncTo
|
|
|
61566
61579
|
drawAndKick();
|
|
61567
61580
|
};
|
|
61568
61581
|
canvas.addEventListener("paint", onPaint);
|
|
61569
|
-
|
|
61570
|
-
if (tick) {
|
|
61571
|
-
tick.style.backgroundColor = tick.style.backgroundColor === "rgb(0, 0, 0)" ? "rgb(1, 1, 1)" : "rgb(0, 0, 0)";
|
|
61572
|
-
}
|
|
61582
|
+
usedRequestPaint = aw.__hfDeInvalidate?.() === true;
|
|
61573
61583
|
setTimeout(() => {
|
|
61574
61584
|
canvas.removeEventListener("paint", onPaint);
|
|
61575
61585
|
drawAndKick();
|
|
@@ -61626,6 +61636,7 @@ async function produceDrawElementFrameBatch(page, times, width, height, quality
|
|
|
61626
61636
|
const ctx = canvas.getContext("2d");
|
|
61627
61637
|
if (!ctx) return { failedAt: 0, error: "drawElement: 2d context unavailable" };
|
|
61628
61638
|
const aw = window;
|
|
61639
|
+
let usedRequestPaint = false;
|
|
61629
61640
|
const waitPaint = () => new Promise((res) => {
|
|
61630
61641
|
let done = false;
|
|
61631
61642
|
const settle = () => {
|
|
@@ -61635,10 +61646,7 @@ async function produceDrawElementFrameBatch(page, times, width, height, quality
|
|
|
61635
61646
|
res();
|
|
61636
61647
|
};
|
|
61637
61648
|
canvas.addEventListener("paint", settle);
|
|
61638
|
-
|
|
61639
|
-
if (tick) {
|
|
61640
|
-
tick.style.backgroundColor = tick.style.backgroundColor === "rgb(0, 0, 0)" ? "rgb(1, 1, 1)" : "rgb(0, 0, 0)";
|
|
61641
|
-
}
|
|
61649
|
+
usedRequestPaint = aw.__hfDeInvalidate?.() === true;
|
|
61642
61650
|
setTimeout(settle, 250);
|
|
61643
61651
|
});
|
|
61644
61652
|
let prevBitmap = Promise.resolve();
|
|
@@ -61681,18 +61689,20 @@ async function produceDrawElementFrameBatch(page, times, width, height, quality
|
|
|
61681
61689
|
} catch {
|
|
61682
61690
|
}
|
|
61683
61691
|
}
|
|
61684
|
-
let appliedAlpha = false;
|
|
61685
61692
|
let appliedTransform = false;
|
|
61693
|
+
let appliedAlpha = false;
|
|
61686
61694
|
if (aw.__HF_ROOT_PROPS__) {
|
|
61687
61695
|
try {
|
|
61688
61696
|
const rcs = getComputedStyle(root);
|
|
61689
|
-
|
|
61690
|
-
|
|
61691
|
-
|
|
61692
|
-
|
|
61693
|
-
|
|
61694
|
-
|
|
61695
|
-
|
|
61697
|
+
if (!usedRequestPaint) {
|
|
61698
|
+
const baseOp = aw.__HF_ROOT_BASE_OPACITY__ ?? 1;
|
|
61699
|
+
const curOp = parseFloat(rcs.opacity);
|
|
61700
|
+
if (baseOp > 1e-3 && Number.isFinite(curOp)) {
|
|
61701
|
+
const ratio = curOp / baseOp;
|
|
61702
|
+
if (Math.abs(ratio - 1) > 2e-3) {
|
|
61703
|
+
ctx.globalAlpha = Math.max(0, Math.min(1, ratio));
|
|
61704
|
+
appliedAlpha = true;
|
|
61705
|
+
}
|
|
61696
61706
|
}
|
|
61697
61707
|
}
|
|
61698
61708
|
const curTransform = rcs.transform;
|
|
@@ -62632,11 +62642,6 @@ async function initDrawElementOrTransparentBackground(session, page, logInitPhas
|
|
|
62632
62642
|
"[engine] fast capture: falling back to screenshot \u2014 render-mode compatibility hint forced screenshot capture (e.g. raw requestAnimationFrame composition)."
|
|
62633
62643
|
);
|
|
62634
62644
|
}
|
|
62635
|
-
async function retractAutoAlphaFlag() {
|
|
62636
|
-
await page.evaluate(() => {
|
|
62637
|
-
window.__HF_FAST_CAPTURE_AUTOALPHA__ = false;
|
|
62638
|
-
});
|
|
62639
|
-
}
|
|
62640
62645
|
if (useDrawElement) {
|
|
62641
62646
|
session.isSwiftShader = await detectSwiftShader(page);
|
|
62642
62647
|
const transparent = session.options.format === "png";
|
|
@@ -62645,7 +62650,6 @@ async function initDrawElementOrTransparentBackground(session, page, logInitPhas
|
|
|
62645
62650
|
if (transparent) {
|
|
62646
62651
|
await initTransparentBackground(session.page);
|
|
62647
62652
|
}
|
|
62648
|
-
await retractAutoAlphaFlag();
|
|
62649
62653
|
if (session.launchCaptureMode === "screenshot") {
|
|
62650
62654
|
await armStaticDedup(session, page, logInitPhase);
|
|
62651
62655
|
}
|
|
@@ -62701,37 +62705,59 @@ async function initDrawElementOrTransparentBackground(session, page, logInitPhas
|
|
|
62701
62705
|
);
|
|
62702
62706
|
}
|
|
62703
62707
|
await armStaticDedup(session, page, logInitPhase);
|
|
62704
|
-
{
|
|
62705
|
-
const
|
|
62706
|
-
|
|
62707
|
-
|
|
62708
|
-
|
|
62709
|
-
|
|
62710
|
-
if (transparent) {
|
|
62711
|
-
await initTransparentBackground(session.page);
|
|
62712
|
-
}
|
|
62713
|
-
session.captureMode = "drawelement";
|
|
62714
|
-
session.drawElementReady = true;
|
|
62715
|
-
logInitPhase("drawElement canvas injected");
|
|
62716
|
-
if (process.env.HF_FAST_CAPTURE_BOUNDARY_SS !== "false" && !forceDE) {
|
|
62717
|
-
const fps = fpsToNumber(session.options.fps);
|
|
62718
|
-
const boundaryFrames = await computeClipBoundaryFrames(page, fps);
|
|
62719
|
-
if (boundaryFrames.size > 0) {
|
|
62720
|
-
session.clipBoundaryFrames = boundaryFrames;
|
|
62721
|
-
logInitPhase(`screenshot fallback: ${boundaryFrames.size} clip-boundary frame(s)`);
|
|
62708
|
+
if (!session.onBeforeCapture && !forceDE) {
|
|
62709
|
+
const hasVideos = await page.evaluate(() => document.querySelector("video") !== null);
|
|
62710
|
+
if (hasVideos) {
|
|
62711
|
+
session.deInitDeferred = true;
|
|
62712
|
+
logInitPhase("drawElement init deferred: video comp awaiting frame injector");
|
|
62713
|
+
return;
|
|
62722
62714
|
}
|
|
62723
62715
|
}
|
|
62724
|
-
|
|
62725
|
-
if (workerEncodeEnabled) {
|
|
62726
|
-
await initDrawElementWorkerEncode(page);
|
|
62727
|
-
session.workerEncodeEnabled = true;
|
|
62728
|
-
logInitPhase("drawElement worker encode initialized");
|
|
62729
|
-
}
|
|
62716
|
+
await finalizeDrawElementInit(session, page, logInitPhase, { transparent, forceDE });
|
|
62730
62717
|
}
|
|
62731
62718
|
} else if (session.options.format === "png") {
|
|
62732
62719
|
await initTransparentBackground(session.page);
|
|
62733
62720
|
}
|
|
62734
62721
|
}
|
|
62722
|
+
async function finalizeDrawElementInit(session, page, logInitPhase, opts) {
|
|
62723
|
+
const { transparent, forceDE } = opts;
|
|
62724
|
+
{
|
|
62725
|
+
const verifyStart = Date.now();
|
|
62726
|
+
await captureDeVerificationFrames(session, page, logInitPhase);
|
|
62727
|
+
session.deVerifyInitMs = Date.now() - verifyStart;
|
|
62728
|
+
}
|
|
62729
|
+
await injectDrawElementCanvas(page, session.options.width, session.options.height);
|
|
62730
|
+
if (transparent) {
|
|
62731
|
+
await initTransparentBackground(session.page);
|
|
62732
|
+
}
|
|
62733
|
+
session.captureMode = "drawelement";
|
|
62734
|
+
session.drawElementReady = true;
|
|
62735
|
+
logInitPhase("drawElement canvas injected");
|
|
62736
|
+
if (process.env.HF_FAST_CAPTURE_BOUNDARY_SS !== "false" && !forceDE) {
|
|
62737
|
+
const fps = fpsToNumber(session.options.fps);
|
|
62738
|
+
const boundaryFrames = await computeClipBoundaryFrames(page, fps);
|
|
62739
|
+
if (boundaryFrames.size > 0) {
|
|
62740
|
+
session.clipBoundaryFrames = boundaryFrames;
|
|
62741
|
+
logInitPhase(`screenshot fallback: ${boundaryFrames.size} clip-boundary frame(s)`);
|
|
62742
|
+
}
|
|
62743
|
+
}
|
|
62744
|
+
const workerEncodeEnabled = (session.config?.enableDrawElementWorkerEncode ?? false) && !transparent && session.beginFrameTimeTicks === 0;
|
|
62745
|
+
if (workerEncodeEnabled) {
|
|
62746
|
+
await initDrawElementWorkerEncode(page);
|
|
62747
|
+
session.workerEncodeEnabled = true;
|
|
62748
|
+
logInitPhase("drawElement worker encode initialized");
|
|
62749
|
+
}
|
|
62750
|
+
}
|
|
62751
|
+
async function completeDeferredDrawElementInit(session) {
|
|
62752
|
+
if (!session.deInitDeferred || !session.onBeforeCapture) return;
|
|
62753
|
+
const page = session.page;
|
|
62754
|
+
const logInitPhase = (phase) => console.log(`[initSession:${session.captureMode}] ${phase} (deferred drawElement init)`);
|
|
62755
|
+
await finalizeDrawElementInit(session, page, logInitPhase, {
|
|
62756
|
+
transparent: session.options.format === "png",
|
|
62757
|
+
forceDE: process.env.HF_FORCE_DRAWELEMENT === "1"
|
|
62758
|
+
});
|
|
62759
|
+
session.deInitDeferred = false;
|
|
62760
|
+
}
|
|
62735
62761
|
async function createCaptureSession(serverUrl, outputDir, options, onBeforeCapture = null, config) {
|
|
62736
62762
|
if (!existsSync4(outputDir)) mkdirSync2(outputDir, { recursive: true });
|
|
62737
62763
|
const headlessShell = resolveHeadlessShellPath(config);
|
|
@@ -62766,10 +62792,10 @@ async function createCaptureSession(serverUrl, outputDir, options, onBeforeCaptu
|
|
|
62766
62792
|
if (useDrawElement) {
|
|
62767
62793
|
await page.evaluateOnNewDocument(instrumentAcceleratedCanvases);
|
|
62768
62794
|
}
|
|
62769
|
-
if (
|
|
62770
|
-
|
|
62771
|
-
|
|
62772
|
-
|
|
62795
|
+
if (process.env.HF_FAST_CAPTURE_AUTOALPHA !== void 0) {
|
|
62796
|
+
console.warn(
|
|
62797
|
+
"[engine] HF_FAST_CAPTURE_AUTOALPHA is retired and ignored \u2014 the requestPaint paint contract captures animated opacity natively (see drawElementService.ts)."
|
|
62798
|
+
);
|
|
62773
62799
|
}
|
|
62774
62800
|
if (useDrawElement && process.env.HF_FAST_CAPTURE_ROOT_PROPS !== "false") {
|
|
62775
62801
|
await page.evaluateOnNewDocument(() => {
|
|
@@ -62819,7 +62845,8 @@ async function createCaptureSession(serverUrl, outputDir, options, onBeforeCaptu
|
|
|
62819
62845
|
seekMs: 0,
|
|
62820
62846
|
beforeCaptureMs: 0,
|
|
62821
62847
|
screenshotMs: 0,
|
|
62822
|
-
totalMs: 0
|
|
62848
|
+
totalMs: 0,
|
|
62849
|
+
frameMs: []
|
|
62823
62850
|
},
|
|
62824
62851
|
captureMode,
|
|
62825
62852
|
launchCaptureMode: captureMode,
|
|
@@ -63707,6 +63734,7 @@ async function captureFrameCore(session, frameIndex, time) {
|
|
|
63707
63734
|
session.capturePerf.beforeCaptureMs += beforeCaptureMs;
|
|
63708
63735
|
session.capturePerf.screenshotMs += screenshotMs;
|
|
63709
63736
|
session.capturePerf.totalMs += captureTimeMs;
|
|
63737
|
+
session.capturePerf.frameMs.push(captureTimeMs);
|
|
63710
63738
|
if (session.staticFrames) session.lastFrameBuffer = screenshotBuffer;
|
|
63711
63739
|
return { buffer: screenshotBuffer, quantizedTime, captureTimeMs };
|
|
63712
63740
|
} catch (captureError) {
|
|
@@ -63760,7 +63788,11 @@ async function captureFrameToBufferPipelined(session, frameIndex, time) {
|
|
|
63760
63788
|
session.capturePerf.frames += 1;
|
|
63761
63789
|
session.capturePerf.seekMs += seekMs;
|
|
63762
63790
|
session.capturePerf.beforeCaptureMs += beforeCaptureMs;
|
|
63763
|
-
|
|
63791
|
+
{
|
|
63792
|
+
const boundaryMs = Date.now() - startTime;
|
|
63793
|
+
session.capturePerf.totalMs += boundaryMs;
|
|
63794
|
+
session.capturePerf.frameMs.push(boundaryMs);
|
|
63795
|
+
}
|
|
63764
63796
|
const boundaryResult = Promise.resolve(buffer);
|
|
63765
63797
|
if (session.staticFrames) session.lastEncodeResult = boundaryResult;
|
|
63766
63798
|
return { encodeResult: boundaryResult, captureTimeMs: Date.now() - startTime };
|
|
@@ -63778,6 +63810,7 @@ async function captureFrameToBufferPipelined(session, frameIndex, time) {
|
|
|
63778
63810
|
session.capturePerf.beforeCaptureMs += beforeCaptureMs;
|
|
63779
63811
|
session.capturePerf.screenshotMs += captureTimeMs - seekMs - beforeCaptureMs;
|
|
63780
63812
|
session.capturePerf.totalMs += captureTimeMs;
|
|
63813
|
+
session.capturePerf.frameMs.push(captureTimeMs);
|
|
63781
63814
|
if (session.staticFrames) session.lastEncodeResult = encodeResult;
|
|
63782
63815
|
return { encodeResult, captureTimeMs };
|
|
63783
63816
|
} catch (captureError) {
|
|
@@ -63835,6 +63868,10 @@ async function captureFramesBatchPipelined(session, frameIndices, times) {
|
|
|
63835
63868
|
session.capturePerf.frames += okCount;
|
|
63836
63869
|
session.capturePerf.screenshotMs += elapsed;
|
|
63837
63870
|
session.capturePerf.totalMs += elapsed;
|
|
63871
|
+
if (okCount > 0) {
|
|
63872
|
+
const perFrame = elapsed / okCount;
|
|
63873
|
+
for (let s2 = 0; s2 < okCount; s2++) session.capturePerf.frameMs.push(perFrame);
|
|
63874
|
+
}
|
|
63838
63875
|
const results = [];
|
|
63839
63876
|
for (let i2 = 0; i2 < okCount; i2++) {
|
|
63840
63877
|
const frameIndex = frameIndices[i2];
|
|
@@ -63921,7 +63958,8 @@ function prepareCaptureSessionForReuse(session, outputDir, onBeforeCapture) {
|
|
|
63921
63958
|
seekMs: 0,
|
|
63922
63959
|
beforeCaptureMs: 0,
|
|
63923
63960
|
screenshotMs: 0,
|
|
63924
|
-
totalMs: 0
|
|
63961
|
+
totalMs: 0,
|
|
63962
|
+
frameMs: []
|
|
63925
63963
|
};
|
|
63926
63964
|
session.beginFrameHasDamageCount = 0;
|
|
63927
63965
|
session.beginFrameNoDamageCount = 0;
|
|
@@ -63985,6 +64023,11 @@ async function captureDeVerificationFrames(session, page, logInitPhase) {
|
|
|
63985
64023
|
`drawElement self-verify armed: ${frames.size} ground-truth frame(s) @ [${[...frames.keys()].join(", ")}] of ${totalFrames}`
|
|
63986
64024
|
);
|
|
63987
64025
|
}
|
|
64026
|
+
function medianOf(samples) {
|
|
64027
|
+
if (samples.length === 0) return 0;
|
|
64028
|
+
const sorted = [...samples].sort((a, b2) => a - b2);
|
|
64029
|
+
return Math.round(sorted[Math.floor(sorted.length / 2)] ?? 0);
|
|
64030
|
+
}
|
|
63988
64031
|
function getCapturePerfSummary(session) {
|
|
63989
64032
|
const frames = Math.max(1, session.capturePerf.frames);
|
|
63990
64033
|
return {
|
|
@@ -63993,6 +64036,7 @@ function getCapturePerfSummary(session) {
|
|
|
63993
64036
|
avgSeekMs: Math.round(session.capturePerf.seekMs / frames),
|
|
63994
64037
|
avgBeforeCaptureMs: Math.round(session.capturePerf.beforeCaptureMs / frames),
|
|
63995
64038
|
avgScreenshotMs: Math.round(session.capturePerf.screenshotMs / frames),
|
|
64039
|
+
p50TotalMs: medianOf(session.capturePerf.frameMs),
|
|
63996
64040
|
staticDedupReused: session.staticDedupCount ?? 0,
|
|
63997
64041
|
staticDedupEnabled: session.staticDedupEnabled ?? false,
|
|
63998
64042
|
// armed ⟺ a non-empty static set survived verification; predicted === its size.
|
|
@@ -77489,6 +77533,7 @@ __export(src_exports, {
|
|
|
77489
77533
|
captureScreenshotWithAlpha: () => captureScreenshotWithAlpha,
|
|
77490
77534
|
cdpSessionCache: () => cdpSessionCache,
|
|
77491
77535
|
closeCaptureSession: () => closeCaptureSession,
|
|
77536
|
+
completeDeferredDrawElementInit: () => completeDeferredDrawElementInit,
|
|
77492
77537
|
convertTransfer: () => convertTransfer,
|
|
77493
77538
|
createCaptureSession: () => createCaptureSession,
|
|
77494
77539
|
createFileServer: () => createFileServer,
|
|
@@ -78126,7 +78171,10 @@ function showTelemetryNotice() {
|
|
|
78126
78171
|
writeConfig(config);
|
|
78127
78172
|
console.log();
|
|
78128
78173
|
console.log(` ${c.dim("Hyperframes collects anonymous usage data to improve the tool.")}`);
|
|
78129
|
-
console.log(` ${c.dim("
|
|
78174
|
+
console.log(` ${c.dim("File paths and composition content are never collected.")}`);
|
|
78175
|
+
console.log(
|
|
78176
|
+
` ${c.dim("If you sign in to HeyGen, your account (email, or username) is linked to your usage.")}`
|
|
78177
|
+
);
|
|
78130
78178
|
console.log();
|
|
78131
78179
|
console.log(` ${c.dim("Disable anytime:")} ${c.accent("hyperframes telemetry disable")}`);
|
|
78132
78180
|
console.log();
|
|
@@ -78152,6 +78200,7 @@ var init_client = __esm({
|
|
|
78152
78200
|
// src/telemetry/events.ts
|
|
78153
78201
|
var events_exports = {};
|
|
78154
78202
|
__export(events_exports, {
|
|
78203
|
+
identifyUser: () => identifyUser,
|
|
78155
78204
|
trackAuthLoginCompleted: () => trackAuthLoginCompleted,
|
|
78156
78205
|
trackAuthLoginFailed: () => trackAuthLoginFailed,
|
|
78157
78206
|
trackAuthLoginStarted: () => trackAuthLoginStarted,
|
|
@@ -78259,6 +78308,8 @@ function trackRenderComplete(props) {
|
|
|
78259
78308
|
total_frames: props.totalFrames,
|
|
78260
78309
|
speed_ratio: props.speedRatio,
|
|
78261
78310
|
capture_avg_ms: props.captureAvgMs,
|
|
78311
|
+
capture_p50_ms: props.captureP50Ms,
|
|
78312
|
+
video_count: props.videoCount,
|
|
78262
78313
|
capture_peak_ms: props.capturePeakMs,
|
|
78263
78314
|
peak_memory_mb: props.peakMemoryMb,
|
|
78264
78315
|
memory_free_mb: props.memoryFreeMb,
|
|
@@ -78350,6 +78401,10 @@ function trackAuthLoginCompleted(method, distinctId) {
|
|
|
78350
78401
|
function trackAuthLoginFailed(method, reason, distinctId) {
|
|
78351
78402
|
trackEvent("auth_login_failed", { method, reason }, distinctId);
|
|
78352
78403
|
}
|
|
78404
|
+
function identifyUser(distinctId) {
|
|
78405
|
+
if (!distinctId) return;
|
|
78406
|
+
trackEvent("$identify", { $anon_distinct_id: readConfig().anonymousId }, distinctId);
|
|
78407
|
+
}
|
|
78353
78408
|
function trackRenderPreflightRejected(props) {
|
|
78354
78409
|
trackEvent("render_preflight_rejected", { kind: props.kind });
|
|
78355
78410
|
}
|
|
@@ -78373,7 +78428,8 @@ function trackFigmaImport(props) {
|
|
|
78373
78428
|
...props.tokensMode !== void 0 ? { tokens_mode: props.tokensMode } : {},
|
|
78374
78429
|
...props.entryCount !== void 0 ? { entry_count: props.entryCount } : {},
|
|
78375
78430
|
...props.unresolvedBindings !== void 0 ? { unresolved_bindings: props.unresolvedBindings } : {},
|
|
78376
|
-
...props.rasterizedNodes !== void 0 ? { rasterized_nodes: props.rasterizedNodes } : {}
|
|
78431
|
+
...props.rasterizedNodes !== void 0 ? { rasterized_nodes: props.rasterizedNodes } : {},
|
|
78432
|
+
...props.rasterizeFailures !== void 0 ? { rasterize_failures: props.rasterizeFailures } : {}
|
|
78377
78433
|
});
|
|
78378
78434
|
}
|
|
78379
78435
|
function trackCommandFailure(command2, err) {
|
|
@@ -78414,6 +78470,7 @@ var init_events = __esm({
|
|
|
78414
78470
|
"use strict";
|
|
78415
78471
|
init_dist3();
|
|
78416
78472
|
init_client();
|
|
78473
|
+
init_config();
|
|
78417
78474
|
}
|
|
78418
78475
|
});
|
|
78419
78476
|
|
|
@@ -93563,6 +93620,9 @@ import { existsSync as existsSync92, mkdirSync as mkdirSync72 } from "fs";
|
|
|
93563
93620
|
import { basename as basename22, dirname as dirname22, extname as extname32, join as join132 } from "path";
|
|
93564
93621
|
import { spawnSync as spawnSync2 } from "child_process";
|
|
93565
93622
|
import { extname as extname22 } from "path";
|
|
93623
|
+
import { existsSync as existsSync102, readFileSync as readFileSync122 } from "fs";
|
|
93624
|
+
import { homedir as homedir9 } from "os";
|
|
93625
|
+
import { join as join142 } from "path";
|
|
93566
93626
|
function shouldIgnoreDir(rel) {
|
|
93567
93627
|
return rel === ".hyperframes/backup";
|
|
93568
93628
|
}
|
|
@@ -97849,6 +97909,26 @@ function registerMediaRoutes(api, adapter2, options = {}) {
|
|
|
97849
97909
|
});
|
|
97850
97910
|
});
|
|
97851
97911
|
}
|
|
97912
|
+
function readGlobalAssets(home = homedir9()) {
|
|
97913
|
+
const manifestPath2 = join142(home, ".media", "manifest.jsonl");
|
|
97914
|
+
if (!existsSync102(manifestPath2)) return [];
|
|
97915
|
+
const out = [];
|
|
97916
|
+
for (const line2 of readFileSync122(manifestPath2, "utf8").split("\n")) {
|
|
97917
|
+
if (!line2.trim()) continue;
|
|
97918
|
+
try {
|
|
97919
|
+
const rec = JSON.parse(line2);
|
|
97920
|
+
if (rec && rec.reusable) out.push(rec);
|
|
97921
|
+
} catch {
|
|
97922
|
+
}
|
|
97923
|
+
}
|
|
97924
|
+
return out;
|
|
97925
|
+
}
|
|
97926
|
+
function toPublicAsset(r2) {
|
|
97927
|
+
return { id: r2.id, type: r2.type, description: r2.description, sha: r2.sha, entity: r2.entity };
|
|
97928
|
+
}
|
|
97929
|
+
function registerGlobalAssetRoutes(api) {
|
|
97930
|
+
api.get("/assets/global", (c3) => c3.json({ assets: readGlobalAssets().map(toPublicAsset) }));
|
|
97931
|
+
}
|
|
97852
97932
|
function createStudioApi(adapter2) {
|
|
97853
97933
|
const api = new Hono2();
|
|
97854
97934
|
registerProjectRoutes(api, adapter2);
|
|
@@ -97863,6 +97943,7 @@ function createStudioApi(adapter2) {
|
|
|
97863
97943
|
registerWaveformRoutes(api, adapter2);
|
|
97864
97944
|
registerFontRoutes(api);
|
|
97865
97945
|
registerRegistryRoutes(api, adapter2);
|
|
97946
|
+
registerGlobalAssetRoutes(api);
|
|
97866
97947
|
return api;
|
|
97867
97948
|
}
|
|
97868
97949
|
function getElementScreenshotClip(selector, selectorIndex) {
|
|
@@ -98246,7 +98327,7 @@ var HF_EARLY_STUB_IIFE;
|
|
|
98246
98327
|
var init_hf_early_stub_inline = __esm({
|
|
98247
98328
|
"../producer/src/generated/hf-early-stub-inline.ts"() {
|
|
98248
98329
|
"use strict";
|
|
98249
|
-
HF_EARLY_STUB_IIFE = '"use strict";(()=>{var
|
|
98330
|
+
HF_EARLY_STUB_IIFE = '"use strict";(()=>{var P=100,x=[],s=[],w=!1,f=!1,T=new Set;function p(n){let e=window.__HF_VIRTUAL_TIME__?.originalRequestAnimationFrame;return typeof e=="function"?e(n):requestAnimationFrame(n)}function b(n){let e=window.__HF_VIRTUAL_TIME__?.originalSetTimeout;if(typeof e=="function"){e(n,0);return}setTimeout(n,0)}function O(n){return n!==null&&typeof n=="object"&&"__hfIsProxy"in n?n.__hfReal:n}function m(n,e){n!=="add"&&v(e)}function h(n){if(n===null||typeof n!="object"||Array.isArray(n))return!1;let e=n;return"rotationX"in e||"rotationY"in e||"transformPerspective"in e}var d=new Set;function v(n){let e=n[0];if(e==null)return;let o=window;d.has(e)||(d.add(e),o.__hfAllTweenTargets=Array.from(d)),(h(n[1])||h(n[2]))&&(T.add(e),o.__hf3dTweenTargets=Array.from(T))}function _(n){let e=n.proxy.__hfReal,o=e[n.method];if(typeof o=="function"){let i=n.method==="add"?n.args.map(O):n.args;o.call(e,...i)}}function l(n,e,o){m(e,o);let i={proxy:n,method:e,args:o};return n.__hfQueue.push(i),s.push(i),R(),n}function y(n){let e=n.proxy.__hfQueue.indexOf(n);e>=0&&n.proxy.__hfQueue.splice(e,1)}function t(){for(;s.length>0;){let n=s.shift();n&&(y(n),_(n))}A()}function k(){f=!1,window.__hfTimelinesBuilding=!1;try{window.dispatchEvent(new CustomEvent("hf-timelines-built"))}catch{}}function A(){f||(f=!0,b(()=>{s.length===0?k():f=!1}))}function g(){w=!1;let n=s.splice(0,P);for(let e of n)y(e),_(e);s.length>0?(w=!0,p(g)):k()}function R(){w||(w=!0,window.__hfTimelinesBuilding=!0,p(g))}var S=new Set(["to","from","fromTo","set","add"]);function I(n,e){let o=e;for(;o!==null&&o!==Object.prototype;){for(let i of Object.getOwnPropertyNames(o)){if(i==="constructor"||i==="then"||i in n||S.has(i)||i.charAt(0)==="_")continue;let u=Object.getOwnPropertyDescriptor(o,i);if(!u||typeof u.value!="function")continue;let r=u.value;n[i]=function(...c){t();let a=r.call(e,...c);return a===e?n:a}}o=Object.getPrototypeOf(o)}}function G(n){let e={__hfReal:n,__hfQueue:[],__hfIsProxy:!0,to(...o){return l(e,"to",o)},from(...o){return l(e,"from",o)},fromTo(...o){return l(e,"fromTo",o)},set(...o){return l(e,"set",o)},add(...o){return l(e,"add",o)},pause(...o){return t(),n.pause(...o),e},play(...o){return t(),n.play(...o),e},seek(...o){return t(),n.seek(...o),e},totalTime(...o){return t(),o.length>0?(n.totalTime(...o),e):n.totalTime()},time(...o){return t(),o.length>0?(n.time(...o),e):n.time()},duration(...o){return t(),o.length>0?(n.duration(...o),e):n.duration()},getChildren(...o){t();let i=n.getChildren(...o);return Array.isArray(i)?i:[]},paused(...o){return t(),o.length>0?(n.paused(...o),e):n.paused()},timeScale(...o){return t(),o.length>0?(n.timeScale(...o),e):n.timeScale()},kill(){t(),n.kill()}};return I(e,n),x.push(e),e}if(typeof window<"u"){window.__hf||(window.__hf={}),window.__hfTimelinesBuilding=!1,window.__hfFlushSync=()=>{t(),s.length===0&&window.__hfTimelinesBuilding&&k()};let n=null;try{Object.defineProperty(window,"gsap",{configurable:!0,enumerable:!0,get(){return n},set(e){if(n=e,!e||typeof e.timeline!="function")return;let o=e.timeline.bind(e);e.timeline=u=>G(o(u));for(let u of["to","from","set"]){let r=e[u];if(typeof r!="function")continue;let c=r.bind(e);e[u]=(...a)=>(m(u,a),c(...a))}let i=e.fromTo;if(typeof i=="function"){let u=i.bind(e);e.fromTo=(...r)=>(m("fromTo",r),u(...r))}}})}catch{}}})();\n';
|
|
98250
98331
|
}
|
|
98251
98332
|
});
|
|
98252
98333
|
|
|
@@ -99431,6 +99512,11 @@ function buildRenderPerfSummary(input2) {
|
|
|
99431
99512
|
captureAvgMs: input2.totalFrames > 0 ? Math.round(
|
|
99432
99513
|
(input2.perfStages.captureFrameMs ?? input2.perfStages.captureMs ?? 0) / input2.totalFrames
|
|
99433
99514
|
) : void 0,
|
|
99515
|
+
captureP50Ms: (() => {
|
|
99516
|
+
const withSamples = input2.dedupPerfs.filter((p2) => (p2.p50TotalMs ?? 0) > 0);
|
|
99517
|
+
if (withSamples.length === 0) return void 0;
|
|
99518
|
+
return withSamples.reduce((a, b2) => b2.frames > a.frames ? b2 : a).p50TotalMs;
|
|
99519
|
+
})(),
|
|
99434
99520
|
peakRssMb: Math.round(input2.peakRssBytes / (1024 * 1024)),
|
|
99435
99521
|
peakHeapUsedMb: Math.round(input2.peakHeapUsedBytes / (1024 * 1024)),
|
|
99436
99522
|
staticDedup: aggregateDedup(input2.dedupPerfs),
|
|
@@ -103265,7 +103351,7 @@ __export(deterministicFonts_exports, {
|
|
|
103265
103351
|
});
|
|
103266
103352
|
import { createHash as createHash8 } from "crypto";
|
|
103267
103353
|
import { existsSync as existsSync35, mkdirSync as mkdirSync16, readFileSync as readFileSync21, writeFileSync as writeFileSync13 } from "fs";
|
|
103268
|
-
import { homedir as
|
|
103354
|
+
import { homedir as homedir10, tmpdir as tmpdir4 } from "os";
|
|
103269
103355
|
import { join as join34 } from "path";
|
|
103270
103356
|
import postcss4 from "postcss";
|
|
103271
103357
|
function parseFontFamilyValue(value) {
|
|
@@ -103583,7 +103669,7 @@ function warnUnresolvedFonts(unresolved) {
|
|
|
103583
103669
|
);
|
|
103584
103670
|
}
|
|
103585
103671
|
function resolveFontCacheRoot() {
|
|
103586
|
-
return process.env.HYPERFRAMES_FONT_CACHE_DIR ?? (process.env.AWS_LAMBDA_FUNCTION_NAME ? join34(tmpdir4(), "hyperframes", "fonts") : join34(
|
|
103672
|
+
return process.env.HYPERFRAMES_FONT_CACHE_DIR ?? (process.env.AWS_LAMBDA_FUNCTION_NAME ? join34(tmpdir4(), "hyperframes", "fonts") : join34(homedir10(), ".cache", "hyperframes", "fonts"));
|
|
103587
103673
|
}
|
|
103588
103674
|
function fontSlug(familyName) {
|
|
103589
103675
|
return familyName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
|
|
@@ -105515,6 +105601,7 @@ async function discoverMediaFromBrowser(page) {
|
|
|
105515
105601
|
const loop = htmlEl.hasAttribute("loop");
|
|
105516
105602
|
const hasAudio = htmlEl.getAttribute("data-has-audio") === "true";
|
|
105517
105603
|
const volume = parseFloat(htmlEl.getAttribute("data-volume") || "1");
|
|
105604
|
+
const muted = htmlEl.hasAttribute("muted") || htmlEl.muted;
|
|
105518
105605
|
results.push({
|
|
105519
105606
|
id,
|
|
105520
105607
|
tagName: htmlEl.tagName.toLowerCase(),
|
|
@@ -105525,7 +105612,8 @@ async function discoverMediaFromBrowser(page) {
|
|
|
105525
105612
|
mediaStart,
|
|
105526
105613
|
loop,
|
|
105527
105614
|
hasAudio,
|
|
105528
|
-
volume
|
|
105615
|
+
volume,
|
|
105616
|
+
muted
|
|
105529
105617
|
});
|
|
105530
105618
|
});
|
|
105531
105619
|
return results;
|
|
@@ -106104,8 +106192,10 @@ async function runProbeStage(input2) {
|
|
|
106104
106192
|
if (browserMedia.length > 0) {
|
|
106105
106193
|
const existingVideoIds = new Set(composition.videos.map((v2) => v2.id));
|
|
106106
106194
|
const existingAudioIds = new Set(composition.audios.map((a) => a.id));
|
|
106195
|
+
pruneMutedBrowserMedia(composition, browserMedia, existingAudioIds);
|
|
106107
106196
|
for (const el of browserMedia) {
|
|
106108
106197
|
if (!el.src || el.src === "about:blank") continue;
|
|
106198
|
+
if (el.muted && el.tagName === "audio") continue;
|
|
106109
106199
|
let src = el.src;
|
|
106110
106200
|
if (fileServer && src.startsWith(fileServer.url)) {
|
|
106111
106201
|
src = src.slice(fileServer.url.length).replace(/^\//, "");
|
|
@@ -106128,7 +106218,7 @@ async function runProbeStage(input2) {
|
|
|
106128
106218
|
if (el.mediaStart > 0 && (existing.mediaStart <= 0 || Math.abs(existing.mediaStart - el.mediaStart) > BROWSER_MEDIA_EPSILON)) {
|
|
106129
106219
|
existing.mediaStart = el.mediaStart;
|
|
106130
106220
|
}
|
|
106131
|
-
if (el.hasAudio && !existing.hasAudio) {
|
|
106221
|
+
if (el.hasAudio && !el.muted && !existing.hasAudio) {
|
|
106132
106222
|
existing.hasAudio = true;
|
|
106133
106223
|
}
|
|
106134
106224
|
if (el.loop && !existing.loop) {
|
|
@@ -106143,7 +106233,7 @@ async function runProbeStage(input2) {
|
|
|
106143
106233
|
end: el.end,
|
|
106144
106234
|
mediaStart: el.mediaStart,
|
|
106145
106235
|
loop: el.loop,
|
|
106146
|
-
hasAudio: el.hasAudio
|
|
106236
|
+
hasAudio: el.hasAudio && !el.muted
|
|
106147
106237
|
});
|
|
106148
106238
|
existingVideoIds.add(el.id);
|
|
106149
106239
|
}
|
|
@@ -106294,6 +106384,19 @@ async function runProbeStage(input2) {
|
|
|
106294
106384
|
beginFrameStalled
|
|
106295
106385
|
};
|
|
106296
106386
|
}
|
|
106387
|
+
function pruneMutedBrowserMedia(composition, browserMedia, existingAudioIds) {
|
|
106388
|
+
for (const el of browserMedia) {
|
|
106389
|
+
if (!el.muted) continue;
|
|
106390
|
+
if (el.tagName === "video") {
|
|
106391
|
+
const existing = composition.videos.find((v2) => v2.id === el.id);
|
|
106392
|
+
if (existing) existing.hasAudio = false;
|
|
106393
|
+
} else {
|
|
106394
|
+
const idx = composition.audios.findIndex((a) => a.id === el.id);
|
|
106395
|
+
if (idx >= 0) composition.audios.splice(idx, 1);
|
|
106396
|
+
existingAudioIds?.delete(el.id);
|
|
106397
|
+
}
|
|
106398
|
+
}
|
|
106399
|
+
}
|
|
106297
106400
|
var init_probeStage = __esm({
|
|
106298
106401
|
"../producer/src/services/render/stages/probeStage.ts"() {
|
|
106299
106402
|
"use strict";
|
|
@@ -106576,6 +106679,8 @@ async function runCaptureStage(input2) {
|
|
|
106576
106679
|
try {
|
|
106577
106680
|
if (!session.isInitialized) {
|
|
106578
106681
|
await initializeSession(session);
|
|
106682
|
+
} else if (process.env.PRODUCER_EXPERIMENTAL_FAST_CAPTURE === "true") {
|
|
106683
|
+
await completeDeferredDrawElementInit(session);
|
|
106579
106684
|
}
|
|
106580
106685
|
assertNotAborted();
|
|
106581
106686
|
lastBrowserConsole = session.browserConsoleBuffer;
|
|
@@ -107634,6 +107739,7 @@ async function runCaptureStreamingStage(input2) {
|
|
|
107634
107739
|
if (!session.isInitialized) {
|
|
107635
107740
|
await initializeSession(session);
|
|
107636
107741
|
}
|
|
107742
|
+
await completeDeferredDrawElementInit(session);
|
|
107637
107743
|
assertNotAborted();
|
|
107638
107744
|
lastBrowserConsole = session.browserConsoleBuffer;
|
|
107639
107745
|
if (session.workerEncodeEnabled) {
|
|
@@ -113242,7 +113348,7 @@ __export(manager_exports2, {
|
|
|
113242
113348
|
import { execSync as execSync5, spawnSync as spawnSync3 } from "child_process";
|
|
113243
113349
|
import { existsSync as existsSync53, mkdirSync as mkdirSync29, readdirSync as readdirSync20, rmSync as rmSync17, statSync as statSync17 } from "fs";
|
|
113244
113350
|
import { basename as basename7 } from "path";
|
|
113245
|
-
import { homedir as
|
|
113351
|
+
import { homedir as homedir11 } from "os";
|
|
113246
113352
|
import { join as join63 } from "path";
|
|
113247
113353
|
async function loadPuppeteerBrowsers() {
|
|
113248
113354
|
try {
|
|
@@ -113585,9 +113691,9 @@ var init_manager2 = __esm({
|
|
|
113585
113691
|
"use strict";
|
|
113586
113692
|
init_errorMessage();
|
|
113587
113693
|
CHROME_VERSION = "131.0.6778.85";
|
|
113588
|
-
CACHE_ROOT_DIR = join63(
|
|
113589
|
-
CACHE_DIR2 = join63(
|
|
113590
|
-
PUPPETEER_CACHE_DIR = join63(
|
|
113694
|
+
CACHE_ROOT_DIR = join63(homedir11(), ".cache", "hyperframes");
|
|
113695
|
+
CACHE_DIR2 = join63(homedir11(), ".cache", "hyperframes", "chrome");
|
|
113696
|
+
PUPPETEER_CACHE_DIR = join63(homedir11(), ".cache", "puppeteer", "chrome-headless-shell");
|
|
113591
113697
|
INSTALL_LOCK_DIR = join63(CACHE_ROOT_DIR, ".chrome.install.lock");
|
|
113592
113698
|
INSTALL_RECLAIM_LOCK_DIR = join63(CACHE_ROOT_DIR, ".chrome.install.reclaim.lock");
|
|
113593
113699
|
INSTALL_LOCK_TIMEOUT_MS = 12e4;
|
|
@@ -113616,7 +113722,7 @@ __export(manager_exports3, {
|
|
|
113616
113722
|
selectProviders: () => selectProviders
|
|
113617
113723
|
});
|
|
113618
113724
|
import { existsSync as existsSync54, mkdirSync as mkdirSync30 } from "fs";
|
|
113619
|
-
import { homedir as
|
|
113725
|
+
import { homedir as homedir12, platform as platform6, arch } from "os";
|
|
113620
113726
|
import { join as join64 } from "path";
|
|
113621
113727
|
function isDevice(value) {
|
|
113622
113728
|
return typeof value === "string" && DEVICES2.includes(value);
|
|
@@ -113675,7 +113781,7 @@ var init_manager3 = __esm({
|
|
|
113675
113781
|
"src/background-removal/manager.ts"() {
|
|
113676
113782
|
"use strict";
|
|
113677
113783
|
init_download();
|
|
113678
|
-
MODELS_DIR2 = join64(
|
|
113784
|
+
MODELS_DIR2 = join64(homedir12(), ".cache", "hyperframes", "background-removal", "models");
|
|
113679
113785
|
DEFAULT_MODEL2 = "u2net_human_seg";
|
|
113680
113786
|
MODEL_URLS = {
|
|
113681
113787
|
u2net_human_seg: "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_human_seg.onnx"
|
|
@@ -119411,6 +119517,8 @@ function trackRenderMetrics(job, elapsedMs, options, docker) {
|
|
|
119411
119517
|
totalFrames: perf?.totalFrames,
|
|
119412
119518
|
speedRatio,
|
|
119413
119519
|
captureAvgMs: perf?.captureAvgMs,
|
|
119520
|
+
captureP50Ms: perf?.captureP50Ms,
|
|
119521
|
+
videoCount: perf?.videoCount,
|
|
119414
119522
|
capturePeakMs: perf?.capturePeakMs,
|
|
119415
119523
|
tmpPeakBytes: perf?.tmpPeakBytes,
|
|
119416
119524
|
stageCompileMs: stages.compileMs,
|
|
@@ -120777,7 +120885,7 @@ function uniqueSortedTimes(times) {
|
|
|
120777
120885
|
function buildTransitionSampleTimes({
|
|
120778
120886
|
duration,
|
|
120779
120887
|
boundaries,
|
|
120780
|
-
cap
|
|
120888
|
+
cap: cap2
|
|
120781
120889
|
}) {
|
|
120782
120890
|
if (!Number.isFinite(duration) || duration <= 0) return { times: [], dropped: 0 };
|
|
120783
120891
|
const inRange = uniqueSortedTimes(
|
|
@@ -120791,10 +120899,10 @@ function buildTransitionSampleTimes({
|
|
|
120791
120899
|
withMidpoints.push(roundTime((current2 + next) / 2));
|
|
120792
120900
|
}
|
|
120793
120901
|
const merged = uniqueSortedTimes(withMidpoints);
|
|
120794
|
-
if (
|
|
120902
|
+
if (cap2 === void 0 || merged.length <= Math.max(2, cap2)) {
|
|
120795
120903
|
return { times: merged, dropped: 0 };
|
|
120796
120904
|
}
|
|
120797
|
-
const limit = Math.max(2,
|
|
120905
|
+
const limit = Math.max(2, cap2);
|
|
120798
120906
|
const strided = [];
|
|
120799
120907
|
for (let i2 = 0; i2 < limit; i2++) {
|
|
120800
120908
|
const pick = merged[Math.floor(i2 * (merged.length - 1) / (limit - 1))];
|
|
@@ -125110,17 +125218,17 @@ __export(remove_background_exports, {
|
|
|
125110
125218
|
import { resolve as resolve50 } from "path";
|
|
125111
125219
|
import { existsSync as existsSync75 } from "fs";
|
|
125112
125220
|
async function showInfo(json) {
|
|
125113
|
-
const { selectProviders: selectProviders2, listAvailableProviders: listAvailableProviders2, DEFAULT_MODEL:
|
|
125221
|
+
const { selectProviders: selectProviders2, listAvailableProviders: listAvailableProviders2, DEFAULT_MODEL: DEFAULT_MODEL5, MODEL_MEMORY_MB: MODEL_MEMORY_MB2, modelPath: modelPath2 } = await Promise.resolve().then(() => (init_manager3(), manager_exports3));
|
|
125114
125222
|
const providers = listAvailableProviders2();
|
|
125115
125223
|
const auto = selectProviders2("auto");
|
|
125116
125224
|
const cached2 = existsSync75(modelPath2());
|
|
125117
125225
|
if (json) {
|
|
125118
125226
|
console.log(
|
|
125119
125227
|
JSON.stringify({
|
|
125120
|
-
defaultModel:
|
|
125228
|
+
defaultModel: DEFAULT_MODEL5,
|
|
125121
125229
|
modelCached: cached2,
|
|
125122
125230
|
modelPath: modelPath2(),
|
|
125123
|
-
peakMemoryMb: MODEL_MEMORY_MB2[
|
|
125231
|
+
peakMemoryMb: MODEL_MEMORY_MB2[DEFAULT_MODEL5],
|
|
125124
125232
|
availableProviders: providers,
|
|
125125
125233
|
autoProvider: auto.label
|
|
125126
125234
|
})
|
|
@@ -125129,8 +125237,8 @@ async function showInfo(json) {
|
|
|
125129
125237
|
}
|
|
125130
125238
|
console.log(c.bold("hyperframes remove-background \u2014 system info"));
|
|
125131
125239
|
console.log("");
|
|
125132
|
-
console.log(` ${c.dim("Default model:")} ${c.accent(
|
|
125133
|
-
console.log(` ${c.dim("Peak memory:")} ~${MODEL_MEMORY_MB2[
|
|
125240
|
+
console.log(` ${c.dim("Default model:")} ${c.accent(DEFAULT_MODEL5)}`);
|
|
125241
|
+
console.log(` ${c.dim("Peak memory:")} ~${MODEL_MEMORY_MB2[DEFAULT_MODEL5]} MB`);
|
|
125134
125242
|
console.log(
|
|
125135
125243
|
` ${c.dim("Weights cached:")} ${cached2 ? c.success("yes") : c.dim("no (will download on first run)")}`
|
|
125136
125244
|
);
|
|
@@ -125316,14 +125424,111 @@ var init_remove_background = __esm({
|
|
|
125316
125424
|
}
|
|
125317
125425
|
});
|
|
125318
125426
|
|
|
125427
|
+
// src/whisper/parakeet.ts
|
|
125428
|
+
import { execFileSync as execFileSync10 } from "child_process";
|
|
125429
|
+
import { existsSync as existsSync76, mkdtempSync as mkdtempSync6, readFileSync as readFileSync50, rmSync as rmSync19, writeFileSync as writeFileSync27 } from "fs";
|
|
125430
|
+
import { homedir as homedir13, tmpdir as tmpdir8 } from "os";
|
|
125431
|
+
import { basename as basename15, extname as extname12, join as join79 } from "path";
|
|
125432
|
+
function isRunnable(bin) {
|
|
125433
|
+
try {
|
|
125434
|
+
execFileSync10(bin, ["--help"], { stdio: ["ignore", "ignore", "ignore"], timeout: 1e4 });
|
|
125435
|
+
return true;
|
|
125436
|
+
} catch {
|
|
125437
|
+
return false;
|
|
125438
|
+
}
|
|
125439
|
+
}
|
|
125440
|
+
function findParakeet() {
|
|
125441
|
+
const candidates = [
|
|
125442
|
+
process.env.HYPERFRAMES_PARAKEET,
|
|
125443
|
+
join79(homedir13(), ".venvs", "parakeet", "bin", "parakeet-mlx")
|
|
125444
|
+
].filter((p2) => Boolean(p2));
|
|
125445
|
+
for (const path2 of candidates) {
|
|
125446
|
+
if (existsSync76(path2) && isRunnable(path2)) return path2;
|
|
125447
|
+
}
|
|
125448
|
+
try {
|
|
125449
|
+
const which = process.platform === "win32" ? "where" : "which";
|
|
125450
|
+
const out = execFileSync10(which, ["parakeet-mlx"], {
|
|
125451
|
+
encoding: "utf-8",
|
|
125452
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
125453
|
+
timeout: 5e3
|
|
125454
|
+
});
|
|
125455
|
+
const first = out.split(/\r?\n/).map((s2) => s2.trim()).find(Boolean);
|
|
125456
|
+
if (first && existsSync76(first)) return first;
|
|
125457
|
+
} catch {
|
|
125458
|
+
}
|
|
125459
|
+
return void 0;
|
|
125460
|
+
}
|
|
125461
|
+
function tokenBounds(token) {
|
|
125462
|
+
const text2 = typeof token.text === "string" ? token.text : "";
|
|
125463
|
+
const start = typeof token.start === "number" ? token.start : 0;
|
|
125464
|
+
const end = typeof token.end === "number" ? token.end : start;
|
|
125465
|
+
return { text: text2, start, end };
|
|
125466
|
+
}
|
|
125467
|
+
function mergeTokensToWords(parakeet) {
|
|
125468
|
+
const words = [];
|
|
125469
|
+
for (const sentence of parakeet.sentences ?? []) {
|
|
125470
|
+
for (const token of sentence.tokens ?? []) {
|
|
125471
|
+
const { text: text2, start, end } = tokenBounds(token);
|
|
125472
|
+
if (text2.startsWith(" ") || words.length === 0) {
|
|
125473
|
+
words.push({ text: text2.trim(), start, end });
|
|
125474
|
+
} else {
|
|
125475
|
+
const w3 = words[words.length - 1];
|
|
125476
|
+
w3.text += text2;
|
|
125477
|
+
w3.end = end;
|
|
125478
|
+
}
|
|
125479
|
+
}
|
|
125480
|
+
}
|
|
125481
|
+
return words.filter((w3) => w3.text.length > 0);
|
|
125482
|
+
}
|
|
125483
|
+
function transcribeWithParakeet(inputPath, dir, options) {
|
|
125484
|
+
const runner = findParakeet();
|
|
125485
|
+
if (!runner) {
|
|
125486
|
+
throw new Error(
|
|
125487
|
+
`parakeet-mlx not found. Enable the Parakeet engine with:
|
|
125488
|
+
${PARAKEET_INSTALL}
|
|
125489
|
+
(or use --engine whisper)`
|
|
125490
|
+
);
|
|
125491
|
+
}
|
|
125492
|
+
const model = options?.model ?? DEFAULT_MODEL3;
|
|
125493
|
+
const cached2 = existsSync76(
|
|
125494
|
+
join79(homedir13(), ".cache", "huggingface", "hub", `models--${model.replace(/\//g, "--")}`)
|
|
125495
|
+
);
|
|
125496
|
+
options?.onProgress?.(
|
|
125497
|
+
cached2 ? "Transcribing with Parakeet..." : "Downloading Parakeet model (first run, ~600MB)..."
|
|
125498
|
+
);
|
|
125499
|
+
const workDir = mkdtempSync6(join79(tmpdir8(), "hyperframes-parakeet-"));
|
|
125500
|
+
try {
|
|
125501
|
+
const argv2 = [inputPath, "--model", model, "--output-format", "json", "--output-dir", workDir];
|
|
125502
|
+
if (options?.language) argv2.push("--language", options.language);
|
|
125503
|
+
execFileSync10(runner, argv2, { stdio: ["ignore", "pipe", "pipe"], timeout: 18e5 });
|
|
125504
|
+
const produced = join79(workDir, `${basename15(inputPath, extname12(inputPath))}.json`);
|
|
125505
|
+
if (!existsSync76(produced)) throw new Error("Parakeet did not produce output.");
|
|
125506
|
+
const words = mergeTokensToWords(JSON.parse(readFileSync50(produced, "utf-8")));
|
|
125507
|
+
const transcriptPath = join79(dir, "transcript.json");
|
|
125508
|
+
writeFileSync27(transcriptPath, JSON.stringify(words, null, 2));
|
|
125509
|
+
const durationSeconds = words.length > 0 ? words[words.length - 1].end : 0;
|
|
125510
|
+
return { transcriptPath, wordCount: words.length, durationSeconds, speechOnsetSeconds: null };
|
|
125511
|
+
} finally {
|
|
125512
|
+
rmSync19(workDir, { recursive: true, force: true });
|
|
125513
|
+
}
|
|
125514
|
+
}
|
|
125515
|
+
var DEFAULT_MODEL3, PARAKEET_INSTALL;
|
|
125516
|
+
var init_parakeet = __esm({
|
|
125517
|
+
"src/whisper/parakeet.ts"() {
|
|
125518
|
+
"use strict";
|
|
125519
|
+
DEFAULT_MODEL3 = "mlx-community/parakeet-tdt-0.6b-v3";
|
|
125520
|
+
PARAKEET_INSTALL = "uv venv ~/.venvs/parakeet && VIRTUAL_ENV=~/.venvs/parakeet uv pip install parakeet-mlx";
|
|
125521
|
+
}
|
|
125522
|
+
});
|
|
125523
|
+
|
|
125319
125524
|
// src/commands/transcribe.ts
|
|
125320
125525
|
var transcribe_exports2 = {};
|
|
125321
125526
|
__export(transcribe_exports2, {
|
|
125322
125527
|
default: () => transcribe_default,
|
|
125323
125528
|
examples: () => examples20
|
|
125324
125529
|
});
|
|
125325
|
-
import { existsSync as
|
|
125326
|
-
import { resolve as resolve51, join as
|
|
125530
|
+
import { existsSync as existsSync77, writeFileSync as writeFileSync28 } from "fs";
|
|
125531
|
+
import { resolve as resolve51, join as join80, extname as extname13, dirname as dirname36 } from "path";
|
|
125327
125532
|
function failWith(message, json) {
|
|
125328
125533
|
trackCommandFailure("transcribe", message);
|
|
125329
125534
|
if (json) {
|
|
@@ -125346,8 +125551,8 @@ async function importTranscript(inputPath, dir, json) {
|
|
|
125346
125551
|
const { loadTranscript: loadTranscript2, patchCaptionHtml: patchCaptionHtml2 } = await Promise.resolve().then(() => (init_normalize(), normalize_exports));
|
|
125347
125552
|
const { words, format } = loadTranscript2(inputPath);
|
|
125348
125553
|
if (words.length === 0) exitNoWords(json);
|
|
125349
|
-
const outPath =
|
|
125350
|
-
|
|
125554
|
+
const outPath = join80(dir, "transcript.json");
|
|
125555
|
+
writeFileSync28(outPath, JSON.stringify(words, null, 2));
|
|
125351
125556
|
patchCaptionHtml2(dir, words);
|
|
125352
125557
|
if (json) {
|
|
125353
125558
|
console.log(
|
|
@@ -125364,9 +125569,9 @@ async function exportTranscript(inputPath, dir, to, output, json, preserveCues)
|
|
|
125364
125569
|
const { words, format } = loadTranscript2(inputPath);
|
|
125365
125570
|
if (words.length === 0) exitNoWords(json);
|
|
125366
125571
|
const preGrouped = preserveCues || format === "srt" || format === "vtt" || void 0;
|
|
125367
|
-
const outPath = resolve51(output ??
|
|
125572
|
+
const outPath = resolve51(output ?? join80(dir, `transcript.${to}`));
|
|
125368
125573
|
const content = to === "srt" ? formatSrt2(words, { preGrouped }) : formatVtt2(words, { preGrouped });
|
|
125369
|
-
|
|
125574
|
+
writeFileSync28(outPath, content);
|
|
125370
125575
|
if (json) {
|
|
125371
125576
|
console.log(
|
|
125372
125577
|
JSON.stringify({ ok: true, format: to, wordCount: words.length, outputPath: outPath })
|
|
@@ -125380,11 +125585,25 @@ async function exportTranscript(inputPath, dir, to, output, json, preserveCues)
|
|
|
125380
125585
|
async function transcribeAudio(inputPath, dir, opts) {
|
|
125381
125586
|
const { transcribe: transcribe2 } = await Promise.resolve().then(() => (init_transcribe(), transcribe_exports));
|
|
125382
125587
|
const { loadTranscript: loadTranscript2, patchCaptionHtml: patchCaptionHtml2, stripBeforeOnset: stripBeforeOnset2 } = await Promise.resolve().then(() => (init_normalize(), normalize_exports));
|
|
125588
|
+
const engine = (opts.engine ?? "auto").toLowerCase();
|
|
125589
|
+
if (engine !== "auto" && engine !== "parakeet" && engine !== "whisper") {
|
|
125590
|
+
failWith(`Unknown --engine: ${opts.engine}. Use auto, parakeet, or whisper.`, !!opts.json);
|
|
125591
|
+
}
|
|
125592
|
+
const useParakeet = engine === "parakeet" || engine === "auto" && !!findParakeet();
|
|
125383
125593
|
const model = opts.model ?? DEFAULT_MODEL;
|
|
125594
|
+
if (useParakeet && opts.model && !opts.json) {
|
|
125595
|
+
console.error(
|
|
125596
|
+
c.dim(` Note: --model applies to the whisper engine only; ignored under Parakeet.`)
|
|
125597
|
+
);
|
|
125598
|
+
}
|
|
125599
|
+
const label2 = useParakeet ? "Parakeet" : model;
|
|
125384
125600
|
const spin = opts.json ? null : ft();
|
|
125385
|
-
spin?.start(`Transcribing with ${c.accent(
|
|
125601
|
+
spin?.start(`Transcribing with ${c.accent(label2)}...`);
|
|
125386
125602
|
try {
|
|
125387
|
-
const result =
|
|
125603
|
+
const result = useParakeet ? transcribeWithParakeet(inputPath, dir, {
|
|
125604
|
+
language: opts.language,
|
|
125605
|
+
onProgress: spin ? (msg) => spin.message(msg) : void 0
|
|
125606
|
+
}) : await transcribe2(inputPath, dir, {
|
|
125388
125607
|
model,
|
|
125389
125608
|
language: opts.language,
|
|
125390
125609
|
onProgress: spin ? (msg) => spin.message(msg) : void 0
|
|
@@ -125400,13 +125619,14 @@ async function transcribeAudio(inputPath, dir, opts) {
|
|
|
125400
125619
|
);
|
|
125401
125620
|
}
|
|
125402
125621
|
}
|
|
125403
|
-
|
|
125622
|
+
writeFileSync28(result.transcriptPath, JSON.stringify(words, null, 2));
|
|
125404
125623
|
patchCaptionHtml2(dir, words);
|
|
125405
125624
|
if (opts.json) {
|
|
125406
125625
|
console.log(
|
|
125407
125626
|
JSON.stringify({
|
|
125408
125627
|
ok: true,
|
|
125409
|
-
|
|
125628
|
+
engine: useParakeet ? "parakeet" : "whisper",
|
|
125629
|
+
model: useParakeet ? "parakeet-tdt-0.6b-v3" : model,
|
|
125410
125630
|
wordCount: words.length,
|
|
125411
125631
|
durationSeconds: result.durationSeconds,
|
|
125412
125632
|
speechOnsetSeconds: result.speechOnsetSeconds,
|
|
@@ -125422,7 +125642,10 @@ async function transcribeAudio(inputPath, dir, opts) {
|
|
|
125422
125642
|
);
|
|
125423
125643
|
}
|
|
125424
125644
|
} catch (err) {
|
|
125425
|
-
const
|
|
125645
|
+
const stderr = err && typeof err === "object" && "stderr" in err && err.stderr ? String(err.stderr).trim().split("\n").slice(-3).join("\n") : "";
|
|
125646
|
+
const base2 = err instanceof Error ? err.message : String(err);
|
|
125647
|
+
const message = stderr ? `${base2}
|
|
125648
|
+
${stderr}` : base2;
|
|
125426
125649
|
if (isWhisperUnavailable(err)) {
|
|
125427
125650
|
trackTranscribeUnavailable({ optional: opts.optional === true });
|
|
125428
125651
|
if (opts.json) {
|
|
@@ -125447,6 +125670,7 @@ var init_transcribe2 = __esm({
|
|
|
125447
125670
|
"src/commands/transcribe.ts"() {
|
|
125448
125671
|
"use strict";
|
|
125449
125672
|
init_dist();
|
|
125673
|
+
init_parakeet();
|
|
125450
125674
|
init_dist8();
|
|
125451
125675
|
init_colors();
|
|
125452
125676
|
init_manager();
|
|
@@ -125480,6 +125704,11 @@ var init_transcribe2 = __esm({
|
|
|
125480
125704
|
description: "Project directory (default: current directory)",
|
|
125481
125705
|
alias: "d"
|
|
125482
125706
|
},
|
|
125707
|
+
engine: {
|
|
125708
|
+
type: "string",
|
|
125709
|
+
description: "ASR engine: auto (Parakeet if installed, else whisper), parakeet, or whisper. Default: auto. Parakeet is more accurate and faster; enable with `uv pip install parakeet-mlx`.",
|
|
125710
|
+
alias: "e"
|
|
125711
|
+
},
|
|
125483
125712
|
model: {
|
|
125484
125713
|
type: "string",
|
|
125485
125714
|
description: `Whisper model (default: ${DEFAULT_MODEL}). Options: tiny.en, base.en, small.en, medium.en, large-v3`,
|
|
@@ -125517,14 +125746,14 @@ var init_transcribe2 = __esm({
|
|
|
125517
125746
|
},
|
|
125518
125747
|
async run({ args }) {
|
|
125519
125748
|
const inputPath = resolve51(args.input);
|
|
125520
|
-
if (!
|
|
125749
|
+
if (!existsSync77(inputPath)) {
|
|
125521
125750
|
const message = `File not found: ${args.input}`;
|
|
125522
125751
|
trackCommandFailure("transcribe", message);
|
|
125523
125752
|
console.error(c.error(message));
|
|
125524
125753
|
process.exit(1);
|
|
125525
125754
|
}
|
|
125526
125755
|
const dir = resolve51(args.dir ?? dirname36(inputPath));
|
|
125527
|
-
const ext =
|
|
125756
|
+
const ext = extname13(inputPath).toLowerCase();
|
|
125528
125757
|
const isImport = ext === ".json" || ext === ".srt" || ext === ".vtt";
|
|
125529
125758
|
const to = parseExportFormat(args.to, args.json);
|
|
125530
125759
|
if (to) {
|
|
@@ -125540,6 +125769,7 @@ var init_transcribe2 = __esm({
|
|
|
125540
125769
|
return importTranscript(inputPath, dir, args.json);
|
|
125541
125770
|
}
|
|
125542
125771
|
return transcribeAudio(inputPath, dir, {
|
|
125772
|
+
engine: args.engine,
|
|
125543
125773
|
model: args.model,
|
|
125544
125774
|
language: args.language,
|
|
125545
125775
|
json: args.json,
|
|
@@ -125551,9 +125781,9 @@ var init_transcribe2 = __esm({
|
|
|
125551
125781
|
});
|
|
125552
125782
|
|
|
125553
125783
|
// src/tts/manager.ts
|
|
125554
|
-
import { existsSync as
|
|
125555
|
-
import { homedir as
|
|
125556
|
-
import { join as
|
|
125784
|
+
import { existsSync as existsSync78, mkdirSync as mkdirSync37 } from "fs";
|
|
125785
|
+
import { homedir as homedir14 } from "os";
|
|
125786
|
+
import { join as join81 } from "path";
|
|
125557
125787
|
function inferLangFromVoiceId(voiceId) {
|
|
125558
125788
|
const first = voiceId.charAt(0).toLowerCase();
|
|
125559
125789
|
return VOICE_PREFIX_LANG[first] ?? "en-us";
|
|
@@ -125561,9 +125791,9 @@ function inferLangFromVoiceId(voiceId) {
|
|
|
125561
125791
|
function isSupportedLang(value) {
|
|
125562
125792
|
return SUPPORTED_LANGS.includes(value);
|
|
125563
125793
|
}
|
|
125564
|
-
async function ensureModel3(model =
|
|
125565
|
-
const modelPath2 =
|
|
125566
|
-
if (
|
|
125794
|
+
async function ensureModel3(model = DEFAULT_MODEL4, options) {
|
|
125795
|
+
const modelPath2 = join81(MODELS_DIR3, `${model}.onnx`);
|
|
125796
|
+
if (existsSync78(modelPath2)) return modelPath2;
|
|
125567
125797
|
const url = MODEL_URLS2[model];
|
|
125568
125798
|
if (!url) {
|
|
125569
125799
|
throw new Error(
|
|
@@ -125573,31 +125803,31 @@ async function ensureModel3(model = DEFAULT_MODEL3, options) {
|
|
|
125573
125803
|
mkdirSync37(MODELS_DIR3, { recursive: true });
|
|
125574
125804
|
options?.onProgress?.(`Downloading TTS model ${model} (~311 MB)...`);
|
|
125575
125805
|
await downloadFile(url, modelPath2);
|
|
125576
|
-
if (!
|
|
125806
|
+
if (!existsSync78(modelPath2)) {
|
|
125577
125807
|
throw new Error(`Model download failed: ${model}`);
|
|
125578
125808
|
}
|
|
125579
125809
|
return modelPath2;
|
|
125580
125810
|
}
|
|
125581
125811
|
async function ensureVoices(options) {
|
|
125582
|
-
const voicesPath =
|
|
125583
|
-
if (
|
|
125812
|
+
const voicesPath = join81(VOICES_DIR, "voices-v1.0.bin");
|
|
125813
|
+
if (existsSync78(voicesPath)) return voicesPath;
|
|
125584
125814
|
mkdirSync37(VOICES_DIR, { recursive: true });
|
|
125585
125815
|
options?.onProgress?.("Downloading voice data (~27 MB)...");
|
|
125586
125816
|
await downloadFile(VOICES_URL, voicesPath);
|
|
125587
|
-
if (!
|
|
125817
|
+
if (!existsSync78(voicesPath)) {
|
|
125588
125818
|
throw new Error("Voice data download failed");
|
|
125589
125819
|
}
|
|
125590
125820
|
return voicesPath;
|
|
125591
125821
|
}
|
|
125592
|
-
var CACHE_DIR3, MODELS_DIR3, VOICES_DIR,
|
|
125822
|
+
var CACHE_DIR3, MODELS_DIR3, VOICES_DIR, DEFAULT_MODEL4, MODEL_URLS2, VOICES_URL, SUPPORTED_LANGS, VOICE_PREFIX_LANG, BUNDLED_VOICES, DEFAULT_VOICE;
|
|
125593
125823
|
var init_manager4 = __esm({
|
|
125594
125824
|
"src/tts/manager.ts"() {
|
|
125595
125825
|
"use strict";
|
|
125596
125826
|
init_download();
|
|
125597
|
-
CACHE_DIR3 =
|
|
125598
|
-
MODELS_DIR3 =
|
|
125599
|
-
VOICES_DIR =
|
|
125600
|
-
|
|
125827
|
+
CACHE_DIR3 = join81(homedir14(), ".cache", "hyperframes", "tts");
|
|
125828
|
+
MODELS_DIR3 = join81(CACHE_DIR3, "models");
|
|
125829
|
+
VOICES_DIR = join81(CACHE_DIR3, "voices");
|
|
125830
|
+
DEFAULT_MODEL4 = "kokoro-v1.0";
|
|
125601
125831
|
MODEL_URLS2 = {
|
|
125602
125832
|
"kokoro-v1.0": "https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/kokoro-v1.0.onnx"
|
|
125603
125833
|
};
|
|
@@ -125652,19 +125882,31 @@ var init_manager4 = __esm({
|
|
|
125652
125882
|
});
|
|
125653
125883
|
|
|
125654
125884
|
// src/tts/python.ts
|
|
125655
|
-
import { execFileSync as
|
|
125885
|
+
import { execFileSync as execFileSync11 } from "child_process";
|
|
125656
125886
|
function findPython() {
|
|
125887
|
+
const override = process.env.HYPERFRAMES_PYTHON;
|
|
125888
|
+
if (override) {
|
|
125889
|
+
try {
|
|
125890
|
+
const version2 = execFileSync11(override, ["--version"], {
|
|
125891
|
+
encoding: "utf-8",
|
|
125892
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
125893
|
+
timeout: 5e3
|
|
125894
|
+
});
|
|
125895
|
+
if (/Python 3/.test(version2)) return override;
|
|
125896
|
+
} catch {
|
|
125897
|
+
}
|
|
125898
|
+
}
|
|
125657
125899
|
for (const name of ["python3", "python"]) {
|
|
125658
125900
|
try {
|
|
125659
125901
|
const cmd = process.platform === "win32" ? "where" : "which";
|
|
125660
|
-
const output =
|
|
125902
|
+
const output = execFileSync11(cmd, [name], {
|
|
125661
125903
|
encoding: "utf-8",
|
|
125662
125904
|
stdio: ["pipe", "pipe", "pipe"],
|
|
125663
125905
|
timeout: 5e3
|
|
125664
125906
|
});
|
|
125665
125907
|
const first = output.split(/\r?\n/).map((s2) => s2.trim()).find(Boolean);
|
|
125666
125908
|
if (!first) continue;
|
|
125667
|
-
const version2 =
|
|
125909
|
+
const version2 = execFileSync11(first, ["--version"], {
|
|
125668
125910
|
encoding: "utf-8",
|
|
125669
125911
|
stdio: ["pipe", "pipe", "pipe"],
|
|
125670
125912
|
timeout: 5e3
|
|
@@ -125677,7 +125919,7 @@ function findPython() {
|
|
|
125677
125919
|
}
|
|
125678
125920
|
function hasPythonPackage(python, pkg) {
|
|
125679
125921
|
try {
|
|
125680
|
-
|
|
125922
|
+
execFileSync11(python, ["-c", `import ${pkg}`], {
|
|
125681
125923
|
stdio: ["pipe", "pipe", "pipe"],
|
|
125682
125924
|
timeout: 1e4
|
|
125683
125925
|
});
|
|
@@ -125692,7 +125934,7 @@ function hasPythonModules(modules) {
|
|
|
125692
125934
|
const list = JSON.stringify(modules);
|
|
125693
125935
|
const probe = `import importlib.util,sys; sys.exit(0 if all(importlib.util.find_spec(m) for m in ${list}) else 1)`;
|
|
125694
125936
|
try {
|
|
125695
|
-
|
|
125937
|
+
execFileSync11(python, ["-c", probe], {
|
|
125696
125938
|
stdio: ["pipe", "pipe", "pipe"],
|
|
125697
125939
|
timeout: 1e4
|
|
125698
125940
|
});
|
|
@@ -125712,20 +125954,20 @@ var synthesize_exports = {};
|
|
|
125712
125954
|
__export(synthesize_exports, {
|
|
125713
125955
|
synthesize: () => synthesize
|
|
125714
125956
|
});
|
|
125715
|
-
import { execFileSync as
|
|
125716
|
-
import { existsSync as
|
|
125717
|
-
import { join as
|
|
125718
|
-
import { homedir as
|
|
125957
|
+
import { execFileSync as execFileSync12 } from "child_process";
|
|
125958
|
+
import { existsSync as existsSync79, writeFileSync as writeFileSync29, mkdirSync as mkdirSync38, readdirSync as readdirSync27, unlinkSync as unlinkSync6 } from "fs";
|
|
125959
|
+
import { join as join83, dirname as dirname37, basename as basename16 } from "path";
|
|
125960
|
+
import { homedir as homedir15 } from "os";
|
|
125719
125961
|
function ensureSynthScript() {
|
|
125720
|
-
if (!
|
|
125962
|
+
if (!existsSync79(SCRIPT_PATH)) {
|
|
125721
125963
|
mkdirSync38(SCRIPT_DIR, { recursive: true });
|
|
125722
|
-
|
|
125723
|
-
const currentName =
|
|
125964
|
+
writeFileSync29(SCRIPT_PATH, SYNTH_SCRIPT);
|
|
125965
|
+
const currentName = basename16(SCRIPT_PATH);
|
|
125724
125966
|
try {
|
|
125725
125967
|
for (const entry of readdirSync27(SCRIPT_DIR)) {
|
|
125726
125968
|
if (entry !== currentName && /^synth(-v\d+)?\.py$/.test(entry)) {
|
|
125727
125969
|
try {
|
|
125728
|
-
unlinkSync6(
|
|
125970
|
+
unlinkSync6(join83(SCRIPT_DIR, entry));
|
|
125729
125971
|
} catch {
|
|
125730
125972
|
}
|
|
125731
125973
|
}
|
|
@@ -125743,12 +125985,12 @@ async function synthesize(text2, outputPath, options) {
|
|
|
125743
125985
|
const python = findPython();
|
|
125744
125986
|
if (!python) {
|
|
125745
125987
|
throw new Error(
|
|
125746
|
-
"Python 3 is required for text-to-speech. Install Python 3.
|
|
125988
|
+
"Python 3 is required for text-to-speech. Install Python 3.10+ and run: pip install kokoro-onnx soundfile (or point HYPERFRAMES_PYTHON at a venv python that has them)"
|
|
125747
125989
|
);
|
|
125748
125990
|
}
|
|
125749
125991
|
if (!hasPythonPackage(python, "kokoro_onnx")) {
|
|
125750
125992
|
throw new Error(
|
|
125751
|
-
"The kokoro-onnx package is not installed. Run: pip install kokoro-onnx soundfile"
|
|
125993
|
+
"The kokoro-onnx package is not installed. Run: pip install kokoro-onnx soundfile (or point HYPERFRAMES_PYTHON at a venv python that has them)"
|
|
125752
125994
|
);
|
|
125753
125995
|
}
|
|
125754
125996
|
if (!hasPythonPackage(python, "soundfile")) {
|
|
@@ -125762,7 +126004,7 @@ async function synthesize(text2, outputPath, options) {
|
|
|
125762
126004
|
mkdirSync38(dirname37(outputPath), { recursive: true });
|
|
125763
126005
|
options?.onProgress?.(`Generating speech with voice ${voice} (${lang})...`);
|
|
125764
126006
|
try {
|
|
125765
|
-
const stdout2 =
|
|
126007
|
+
const stdout2 = execFileSync12(
|
|
125766
126008
|
python,
|
|
125767
126009
|
[scriptPath, modelPath2, voicesPath, text2, voice, String(speed), outputPath, lang],
|
|
125768
126010
|
{
|
|
@@ -125771,7 +126013,7 @@ async function synthesize(text2, outputPath, options) {
|
|
|
125771
126013
|
stdio: ["pipe", "pipe", "pipe"]
|
|
125772
126014
|
}
|
|
125773
126015
|
);
|
|
125774
|
-
if (!
|
|
126016
|
+
if (!existsSync79(outputPath)) {
|
|
125775
126017
|
throw new Error("Synthesis completed but no output file was created");
|
|
125776
126018
|
}
|
|
125777
126019
|
const lines = stdout2.trim().split("\n");
|
|
@@ -125784,7 +126026,7 @@ async function synthesize(text2, outputPath, options) {
|
|
|
125784
126026
|
langApplied: result.langApplied
|
|
125785
126027
|
};
|
|
125786
126028
|
} catch (err) {
|
|
125787
|
-
if (err instanceof SyntaxError &&
|
|
126029
|
+
if (err instanceof SyntaxError && existsSync79(outputPath)) {
|
|
125788
126030
|
throw new Error(
|
|
125789
126031
|
"Speech was generated but metadata could not be read. Check the output file manually."
|
|
125790
126032
|
);
|
|
@@ -125836,8 +126078,8 @@ print(json.dumps({
|
|
|
125836
126078
|
"langApplied": bool(lang and supports_lang),
|
|
125837
126079
|
}))
|
|
125838
126080
|
`;
|
|
125839
|
-
SCRIPT_DIR =
|
|
125840
|
-
SCRIPT_PATH =
|
|
126081
|
+
SCRIPT_DIR = join83(homedir15(), ".cache", "hyperframes", "tts");
|
|
126082
|
+
SCRIPT_PATH = join83(SCRIPT_DIR, "synth-v2.py");
|
|
125841
126083
|
}
|
|
125842
126084
|
});
|
|
125843
126085
|
|
|
@@ -125847,8 +126089,8 @@ __export(tts_exports, {
|
|
|
125847
126089
|
default: () => tts_default,
|
|
125848
126090
|
examples: () => examples21
|
|
125849
126091
|
});
|
|
125850
|
-
import { existsSync as
|
|
125851
|
-
import { resolve as resolve52, extname as
|
|
126092
|
+
import { existsSync as existsSync80, readFileSync as readFileSync51 } from "fs";
|
|
126093
|
+
import { resolve as resolve52, extname as extname14 } from "path";
|
|
125852
126094
|
function listVoices(json) {
|
|
125853
126095
|
const rows = BUNDLED_VOICES.map((v2) => ({ ...v2, defaultLang: inferLangFromVoiceId(v2.id) }));
|
|
125854
126096
|
if (json) {
|
|
@@ -125919,7 +126161,7 @@ var init_tts = __esm({
|
|
|
125919
126161
|
output: {
|
|
125920
126162
|
type: "string",
|
|
125921
126163
|
description: "Output file path (default: speech.wav in current directory)",
|
|
125922
|
-
alias: "o"
|
|
126164
|
+
alias: ["o", "out"]
|
|
125923
126165
|
},
|
|
125924
126166
|
voice: {
|
|
125925
126167
|
type: "string",
|
|
@@ -125947,6 +126189,7 @@ var init_tts = __esm({
|
|
|
125947
126189
|
default: false
|
|
125948
126190
|
}
|
|
125949
126191
|
},
|
|
126192
|
+
// fallow-ignore-next-line complexity
|
|
125950
126193
|
async run({ args }) {
|
|
125951
126194
|
if (args.list) {
|
|
125952
126195
|
return listVoices(args.json);
|
|
@@ -125957,8 +126200,8 @@ var init_tts = __esm({
|
|
|
125957
126200
|
}
|
|
125958
126201
|
let text2;
|
|
125959
126202
|
const maybeFile = resolve52(args.input);
|
|
125960
|
-
if (
|
|
125961
|
-
text2 =
|
|
126203
|
+
if (existsSync80(maybeFile) && extname14(maybeFile).toLowerCase() === ".txt") {
|
|
126204
|
+
text2 = readFileSync51(maybeFile, "utf-8").trim();
|
|
125962
126205
|
if (!text2) {
|
|
125963
126206
|
console.error(c.error("File is empty."));
|
|
125964
126207
|
process.exit(1);
|
|
@@ -126050,15 +126293,15 @@ __export(docs_exports, {
|
|
|
126050
126293
|
default: () => docs_default,
|
|
126051
126294
|
examples: () => examples22
|
|
126052
126295
|
});
|
|
126053
|
-
import { readFileSync as
|
|
126054
|
-
import { resolve as resolve53, dirname as dirname38, join as
|
|
126296
|
+
import { readFileSync as readFileSync53, existsSync as existsSync81 } from "fs";
|
|
126297
|
+
import { resolve as resolve53, dirname as dirname38, join as join84 } from "path";
|
|
126055
126298
|
import { fileURLToPath as fileURLToPath13 } from "url";
|
|
126056
126299
|
function docsDir() {
|
|
126057
126300
|
const thisFile = fileURLToPath13(import.meta.url);
|
|
126058
126301
|
const dir = dirname38(thisFile);
|
|
126059
126302
|
const devPath = resolve53(dir, "..", "docs");
|
|
126060
126303
|
const builtPath = resolve53(dir, "docs");
|
|
126061
|
-
return
|
|
126304
|
+
return existsSync81(devPath) ? devPath : builtPath;
|
|
126062
126305
|
}
|
|
126063
126306
|
function formatInlineCode(line2) {
|
|
126064
126307
|
return line2.replace(/`([^`]+)`/g, (_match, code) => c.accent(code));
|
|
@@ -126155,12 +126398,12 @@ var init_docs = __esm({
|
|
|
126155
126398
|
}
|
|
126156
126399
|
process.exit(1);
|
|
126157
126400
|
}
|
|
126158
|
-
const filePath =
|
|
126159
|
-
if (!
|
|
126401
|
+
const filePath = join84(docsDir(), entry.file);
|
|
126402
|
+
if (!existsSync81(filePath)) {
|
|
126160
126403
|
console.error(c.error(`Doc file not found: ${filePath}`));
|
|
126161
126404
|
process.exit(1);
|
|
126162
126405
|
}
|
|
126163
|
-
const content =
|
|
126406
|
+
const content = readFileSync53(filePath, "utf-8");
|
|
126164
126407
|
console.log();
|
|
126165
126408
|
renderMarkdown(content);
|
|
126166
126409
|
}
|
|
@@ -126485,7 +126728,7 @@ __export(upgrade_exports, {
|
|
|
126485
126728
|
default: () => upgrade_default,
|
|
126486
126729
|
examples: () => examples24
|
|
126487
126730
|
});
|
|
126488
|
-
import { execFileSync as
|
|
126731
|
+
import { execFileSync as execFileSync13 } from "child_process";
|
|
126489
126732
|
var examples24, upgrade_default;
|
|
126490
126733
|
var init_upgrade = __esm({
|
|
126491
126734
|
"src/commands/upgrade.ts"() {
|
|
@@ -126556,7 +126799,7 @@ var init_upgrade = __esm({
|
|
|
126556
126799
|
console.log(` ${c.dim("Running:")} ${c.accent(installCmd)}`);
|
|
126557
126800
|
console.log();
|
|
126558
126801
|
try {
|
|
126559
|
-
|
|
126802
|
+
execFileSync13("npm", installArgs, { stdio: "inherit", shell: false });
|
|
126560
126803
|
ye(c.success(`Upgraded to v${result.latest}`));
|
|
126561
126804
|
} catch {
|
|
126562
126805
|
ye(c.dim("Install failed. Try running manually:"));
|
|
@@ -126576,6 +126819,42 @@ var init_upgrade = __esm({
|
|
|
126576
126819
|
}
|
|
126577
126820
|
});
|
|
126578
126821
|
|
|
126822
|
+
// src/utils/submitFeedback.ts
|
|
126823
|
+
function cap(value, max) {
|
|
126824
|
+
if (value === void 0) return void 0;
|
|
126825
|
+
return value.length > max ? value.slice(0, max) : value;
|
|
126826
|
+
}
|
|
126827
|
+
async function submitFeedback(input2) {
|
|
126828
|
+
try {
|
|
126829
|
+
const apiBaseUrl2 = getPublishApiBaseUrl();
|
|
126830
|
+
await fetch(`${apiBaseUrl2}/v1/hyperframes/feedback`, {
|
|
126831
|
+
method: "POST",
|
|
126832
|
+
body: JSON.stringify({
|
|
126833
|
+
rating: input2.rating,
|
|
126834
|
+
comment: cap(input2.comment, MAX_COMMENT),
|
|
126835
|
+
cli_version: cap(input2.cliVersion, MAX_CLI_VERSION),
|
|
126836
|
+
env: cap(input2.env, MAX_ENV)
|
|
126837
|
+
}),
|
|
126838
|
+
headers: {
|
|
126839
|
+
"content-type": "application/json",
|
|
126840
|
+
heygen_route: "canary"
|
|
126841
|
+
},
|
|
126842
|
+
signal: AbortSignal.timeout(5e3)
|
|
126843
|
+
});
|
|
126844
|
+
} catch {
|
|
126845
|
+
}
|
|
126846
|
+
}
|
|
126847
|
+
var MAX_COMMENT, MAX_CLI_VERSION, MAX_ENV;
|
|
126848
|
+
var init_submitFeedback = __esm({
|
|
126849
|
+
"src/utils/submitFeedback.ts"() {
|
|
126850
|
+
"use strict";
|
|
126851
|
+
init_publishProject();
|
|
126852
|
+
MAX_COMMENT = 2e3;
|
|
126853
|
+
MAX_CLI_VERSION = 100;
|
|
126854
|
+
MAX_ENV = 500;
|
|
126855
|
+
}
|
|
126856
|
+
});
|
|
126857
|
+
|
|
126579
126858
|
// src/utils/feedbackIssue.ts
|
|
126580
126859
|
function normalizeRepoUrl(repoUrl) {
|
|
126581
126860
|
const trimmed = repoUrl.trim().replace(/\/$/, "").replace(/\.git$/, "");
|
|
@@ -126721,6 +127000,7 @@ var init_feedback2 = __esm({
|
|
|
126721
127000
|
init_client();
|
|
126722
127001
|
init_feedback();
|
|
126723
127002
|
init_publishProject();
|
|
127003
|
+
init_submitFeedback();
|
|
126724
127004
|
init_feedbackIssue();
|
|
126725
127005
|
init_version();
|
|
126726
127006
|
init_colors();
|
|
@@ -126775,6 +127055,7 @@ var init_feedback2 = __esm({
|
|
|
126775
127055
|
trackRenderFeedback({ rating, comment, doctorSummary });
|
|
126776
127056
|
await flush();
|
|
126777
127057
|
console.log(c.dim("Thanks for the feedback!"));
|
|
127058
|
+
await submitFeedback({ rating, comment, cliVersion: VERSION, env: doctorSummary });
|
|
126778
127059
|
if (args["file-issue"] === true) {
|
|
126779
127060
|
await fileGithubIssue({
|
|
126780
127061
|
rating,
|
|
@@ -126985,9 +127266,9 @@ __export(validate_exports, {
|
|
|
126985
127266
|
shouldIgnoreRequestFailure: () => shouldIgnoreRequestFailure,
|
|
126986
127267
|
waitForPreferredSeekTarget: () => waitForPreferredSeekTarget
|
|
126987
127268
|
});
|
|
126988
|
-
import { existsSync as
|
|
126989
|
-
import { tmpdir as
|
|
126990
|
-
import { join as
|
|
127269
|
+
import { existsSync as existsSync83, mkdtempSync as mkdtempSync7, readFileSync as readFileSync54, rmSync as rmSync20 } from "fs";
|
|
127270
|
+
import { tmpdir as tmpdir9 } from "os";
|
|
127271
|
+
import { join as join85, dirname as dirname39 } from "path";
|
|
126991
127272
|
import { fileURLToPath as fileURLToPath14 } from "url";
|
|
126992
127273
|
function resolveNavigationTimeoutMs(optTimeout) {
|
|
126993
127274
|
return Math.max(NAV_TIMEOUT_FLOOR_MS, optTimeout ?? 0);
|
|
@@ -127145,11 +127426,11 @@ async function runContrastAudit(page) {
|
|
|
127145
127426
|
}
|
|
127146
127427
|
function loadContrastAuditScript() {
|
|
127147
127428
|
const candidates = [
|
|
127148
|
-
|
|
127149
|
-
|
|
127429
|
+
join85(__dirname3, "contrast-audit.browser.js"),
|
|
127430
|
+
join85(__dirname3, "commands", "contrast-audit.browser.js")
|
|
127150
127431
|
];
|
|
127151
127432
|
for (const candidate of candidates) {
|
|
127152
|
-
if (
|
|
127433
|
+
if (existsSync83(candidate)) return readFileSync54(candidate, "utf-8");
|
|
127153
127434
|
}
|
|
127154
127435
|
throw new Error("Missing contrast audit browser script");
|
|
127155
127436
|
}
|
|
@@ -127161,7 +127442,7 @@ async function localizeRemoteAssets(html) {
|
|
|
127161
127442
|
try {
|
|
127162
127443
|
const { loadProducer: loadProducer2 } = await Promise.resolve().then(() => (init_producer(), producer_exports));
|
|
127163
127444
|
const { localizeRemoteMediaSources: localizeRemoteMediaSources2, localizeRemoteImageSources: localizeRemoteImageSources2, localizeRemoteFontFaces: localizeRemoteFontFaces2 } = await loadProducer2();
|
|
127164
|
-
dir =
|
|
127445
|
+
dir = mkdtempSync7(join85(tmpdir9(), "hf-validate-assets-"));
|
|
127165
127446
|
const assetDir = dir;
|
|
127166
127447
|
const media = await localizeRemoteMediaSources2(html, assetDir);
|
|
127167
127448
|
const images = await localizeRemoteImageSources2(media.html, assetDir);
|
|
@@ -127170,10 +127451,10 @@ async function localizeRemoteAssets(html) {
|
|
|
127170
127451
|
return {
|
|
127171
127452
|
html: fonts.html,
|
|
127172
127453
|
assetRoots: count > 0 ? [assetDir] : [],
|
|
127173
|
-
cleanup: () =>
|
|
127454
|
+
cleanup: () => rmSync20(assetDir, { recursive: true, force: true })
|
|
127174
127455
|
};
|
|
127175
127456
|
} catch {
|
|
127176
|
-
if (dir)
|
|
127457
|
+
if (dir) rmSync20(dir, { recursive: true, force: true });
|
|
127177
127458
|
return { html, assetRoots: [], cleanup: () => {
|
|
127178
127459
|
} };
|
|
127179
127460
|
}
|
|
@@ -127412,8 +127693,8 @@ __export(contactSheet_exports, {
|
|
|
127412
127693
|
createSvgContactSheet: () => createSvgContactSheet
|
|
127413
127694
|
});
|
|
127414
127695
|
import sharp from "sharp";
|
|
127415
|
-
import { readdirSync as readdirSync28, readFileSync as
|
|
127416
|
-
import { join as
|
|
127696
|
+
import { readdirSync as readdirSync28, readFileSync as readFileSync55, writeFileSync as writeFileSync30, unlinkSync as unlinkSync7, existsSync as existsSync84 } from "fs";
|
|
127697
|
+
import { join as join86, extname as extname15, basename as basename17, dirname as dirname40 } from "path";
|
|
127417
127698
|
async function createContactSheet(imagePaths, outputPath, opts = {}) {
|
|
127418
127699
|
const {
|
|
127419
127700
|
cols = 3,
|
|
@@ -127446,7 +127727,7 @@ async function createContactSheet(imagePaths, outputPath, opts = {}) {
|
|
|
127446
127727
|
overlays.push({ input: resized, left: x3, top: y + labelH });
|
|
127447
127728
|
let labelText = `${i2 + 1}`;
|
|
127448
127729
|
if (labelMode === "filename") {
|
|
127449
|
-
labelText = `${i2 + 1}. ${
|
|
127730
|
+
labelText = `${i2 + 1}. ${basename17(files[i2]).replace(extname15(files[i2]), "")}`;
|
|
127450
127731
|
} else if (labelMode === "custom" && labels?.[i2]) {
|
|
127451
127732
|
labelText = `${i2 + 1}. ${labels[i2]}`;
|
|
127452
127733
|
}
|
|
@@ -127492,10 +127773,10 @@ async function createContactSheetPages(imagePaths, outputBasePath, opts = {}, la
|
|
|
127492
127773
|
return results;
|
|
127493
127774
|
}
|
|
127494
127775
|
async function createScrollContactSheet(screenshotsDir, outputPath) {
|
|
127495
|
-
if (!
|
|
127776
|
+
if (!existsSync84(screenshotsDir)) return [];
|
|
127496
127777
|
const scrollFiles = readdirSync28(screenshotsDir).filter((f3) => f3.startsWith("scroll-") && f3.endsWith(".png")).sort();
|
|
127497
127778
|
if (scrollFiles.length === 0) return [];
|
|
127498
|
-
const paths = scrollFiles.map((f3) =>
|
|
127779
|
+
const paths = scrollFiles.map((f3) => join86(screenshotsDir, f3));
|
|
127499
127780
|
const labels = scrollFiles.map((f3) => {
|
|
127500
127781
|
const m2 = f3.match(/scroll-(\d+)\.png/);
|
|
127501
127782
|
return m2 ? `${m2[1]}% scroll` : f3;
|
|
@@ -127509,10 +127790,10 @@ async function createScrollContactSheet(screenshotsDir, outputPath) {
|
|
|
127509
127790
|
);
|
|
127510
127791
|
}
|
|
127511
127792
|
async function createSnapshotContactSheet(snapshotsDir, outputPath) {
|
|
127512
|
-
if (!
|
|
127793
|
+
if (!existsSync84(snapshotsDir)) return [];
|
|
127513
127794
|
const snapshotFiles = readdirSync28(snapshotsDir).filter((f3) => f3.startsWith("frame-") && f3.endsWith(".png")).sort();
|
|
127514
127795
|
if (snapshotFiles.length === 0) return [];
|
|
127515
|
-
const paths = snapshotFiles.map((f3) =>
|
|
127796
|
+
const paths = snapshotFiles.map((f3) => join86(snapshotsDir, f3));
|
|
127516
127797
|
const labels = snapshotFiles.map((f3) => {
|
|
127517
127798
|
const m2 = f3.match(/at-([\d.]+)s/);
|
|
127518
127799
|
return m2 ? `${m2[1]}s` : f3;
|
|
@@ -127526,11 +127807,11 @@ async function createSnapshotContactSheet(snapshotsDir, outputPath) {
|
|
|
127526
127807
|
);
|
|
127527
127808
|
}
|
|
127528
127809
|
async function createAssetContactSheet(assetsDir, outputPath) {
|
|
127529
|
-
if (!
|
|
127810
|
+
if (!existsSync84(assetsDir)) return [];
|
|
127530
127811
|
const imageExts = /* @__PURE__ */ new Set([".png", ".jpg", ".jpeg", ".webp"]);
|
|
127531
|
-
const assetFiles = readdirSync28(assetsDir).filter((f3) => imageExts.has(
|
|
127812
|
+
const assetFiles = readdirSync28(assetsDir).filter((f3) => imageExts.has(extname15(f3).toLowerCase()) && !f3.includes("contact-sheet")).sort();
|
|
127532
127813
|
if (assetFiles.length === 0) return [];
|
|
127533
|
-
const paths = assetFiles.map((f3) =>
|
|
127814
|
+
const paths = assetFiles.map((f3) => join86(assetsDir, f3));
|
|
127534
127815
|
return createContactSheetPages(paths, outputPath, {
|
|
127535
127816
|
cols: 4,
|
|
127536
127817
|
cellWidth: 480,
|
|
@@ -127540,7 +127821,7 @@ async function createAssetContactSheet(assetsDir, outputPath) {
|
|
|
127540
127821
|
}
|
|
127541
127822
|
async function createSvgContactSheet(svgsDir, outputPath, assetsRootDir) {
|
|
127542
127823
|
const dirsToScan = [svgsDir, assetsRootDir].filter(
|
|
127543
|
-
(d2) => d2 !== void 0 &&
|
|
127824
|
+
(d2) => d2 !== void 0 && existsSync84(d2)
|
|
127544
127825
|
);
|
|
127545
127826
|
if (dirsToScan.length === 0) return [];
|
|
127546
127827
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -127549,7 +127830,7 @@ async function createSvgContactSheet(svgsDir, outputPath, assetsRootDir) {
|
|
|
127549
127830
|
for (const f3 of readdirSync28(dir).filter((f4) => f4.endsWith(".svg")).sort()) {
|
|
127550
127831
|
if (!seen.has(f3)) {
|
|
127551
127832
|
seen.add(f3);
|
|
127552
|
-
svgPaths.push(
|
|
127833
|
+
svgPaths.push(join86(dir, f3));
|
|
127553
127834
|
}
|
|
127554
127835
|
}
|
|
127555
127836
|
}
|
|
@@ -127561,14 +127842,14 @@ async function createSvgContactSheet(svgsDir, outputPath, assetsRootDir) {
|
|
|
127561
127842
|
const labels = [];
|
|
127562
127843
|
for (let i2 = 0; i2 < svgPaths.length; i2++) {
|
|
127563
127844
|
const svgPath = svgPaths[i2];
|
|
127564
|
-
const tmpPath =
|
|
127845
|
+
const tmpPath = join86(tmpDir, `.thumb-${i2}.png`);
|
|
127565
127846
|
try {
|
|
127566
|
-
const svgBuf =
|
|
127847
|
+
const svgBuf = readFileSync55(svgPath);
|
|
127567
127848
|
const thumb = await sharp(svgBuf).resize(thumbSize, thumbSize, {
|
|
127568
127849
|
fit: "contain",
|
|
127569
127850
|
background: { r: 245, g: 245, b: 245, alpha: 1 }
|
|
127570
127851
|
}).flatten({ background: { r: 245, g: 245, b: 245 } }).png().toBuffer();
|
|
127571
|
-
|
|
127852
|
+
writeFileSync30(tmpPath, thumb);
|
|
127572
127853
|
tmpPaths.push(tmpPath);
|
|
127573
127854
|
labels.push(svgFileNames[i2].replace(".svg", ""));
|
|
127574
127855
|
} catch {
|
|
@@ -133764,7 +134045,7 @@ var require_node_domexception = __commonJS({
|
|
|
133764
134045
|
|
|
133765
134046
|
// ../../node_modules/.bun/fetch-blob@3.2.0/node_modules/fetch-blob/from.js
|
|
133766
134047
|
import { statSync as statSync26, createReadStream as createReadStream4, promises as fs2 } from "fs";
|
|
133767
|
-
import { basename as
|
|
134048
|
+
import { basename as basename18 } from "path";
|
|
133768
134049
|
var import_node_domexception, stat, blobFromSync, blobFrom, fileFrom, fileFromSync, fromBlob, fromFile, BlobDataItem;
|
|
133769
134050
|
var init_from = __esm({
|
|
133770
134051
|
"../../node_modules/.bun/fetch-blob@3.2.0/node_modules/fetch-blob/from.js"() {
|
|
@@ -133788,7 +134069,7 @@ var init_from = __esm({
|
|
|
133788
134069
|
size: stat3.size,
|
|
133789
134070
|
lastModified: stat3.mtimeMs,
|
|
133790
134071
|
start: 0
|
|
133791
|
-
})],
|
|
134072
|
+
})], basename18(path2), { type, lastModified: stat3.mtimeMs });
|
|
133792
134073
|
BlobDataItem = class _BlobDataItem {
|
|
133793
134074
|
#path;
|
|
133794
134075
|
#start;
|
|
@@ -167343,9 +167624,9 @@ __export(snapshot_exports, {
|
|
|
167343
167624
|
tailFrameTime: () => tailFrameTime
|
|
167344
167625
|
});
|
|
167345
167626
|
import { spawn as spawn16 } from "child_process";
|
|
167346
|
-
import { existsSync as
|
|
167347
|
-
import { tmpdir as
|
|
167348
|
-
import { resolve as resolve55, join as
|
|
167627
|
+
import { existsSync as existsSync85, mkdtempSync as mkdtempSync8, readFileSync as readFileSync56, mkdirSync as mkdirSync39, rmSync as rmSync21, writeFileSync as writeFileSync31 } from "fs";
|
|
167628
|
+
import { tmpdir as tmpdir10 } from "os";
|
|
167629
|
+
import { resolve as resolve55, join as join87, relative as relative15, isAbsolute as isAbsolute14, basename as basename20 } from "path";
|
|
167349
167630
|
function orbitStageSource() {
|
|
167350
167631
|
return `function(cam) {
|
|
167351
167632
|
var root = document.querySelector("[data-composition-id]")
|
|
@@ -167368,8 +167649,8 @@ function orbitStageSource() {
|
|
|
167368
167649
|
}`;
|
|
167369
167650
|
}
|
|
167370
167651
|
async function extractVideoFrameToBuffer(videoPath, timeSeconds, useVp9AlphaDecoder = false) {
|
|
167371
|
-
const tmp =
|
|
167372
|
-
const outPath =
|
|
167652
|
+
const tmp = mkdtempSync8(join87(tmpdir10(), "hf-snapshot-frame-"));
|
|
167653
|
+
const outPath = join87(tmp, "frame.png");
|
|
167373
167654
|
try {
|
|
167374
167655
|
const ffmpegPath = findFFmpeg();
|
|
167375
167656
|
if (!ffmpegPath) return null;
|
|
@@ -167411,11 +167692,11 @@ async function extractVideoFrameToBuffer(videoPath, timeSeconds, useVp9AlphaDeco
|
|
|
167411
167692
|
});
|
|
167412
167693
|
}
|
|
167413
167694
|
);
|
|
167414
|
-
if (result.code !== 0 || result.timedOut || !
|
|
167415
|
-
return
|
|
167695
|
+
if (result.code !== 0 || result.timedOut || !existsSync85(outPath)) return null;
|
|
167696
|
+
return readFileSync56(outPath);
|
|
167416
167697
|
} finally {
|
|
167417
167698
|
try {
|
|
167418
|
-
|
|
167699
|
+
rmSync21(tmp, { recursive: true, force: true });
|
|
167419
167700
|
} catch {
|
|
167420
167701
|
}
|
|
167421
167702
|
}
|
|
@@ -167544,13 +167825,13 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
167544
167825
|
);
|
|
167545
167826
|
}
|
|
167546
167827
|
const cameraExpr = opts.angle && (opts.angle.yaw !== 0 || opts.angle.pitch !== 0) ? `(${orbitStageSource()})(${JSON.stringify(opts.angle)})` : null;
|
|
167547
|
-
const snapshotDir = opts.outputDir ??
|
|
167828
|
+
const snapshotDir = opts.outputDir ?? join87(projectDir, "snapshots");
|
|
167548
167829
|
mkdirSync39(snapshotDir, { recursive: true });
|
|
167549
167830
|
try {
|
|
167550
167831
|
const { readdirSync: readdirSync35 } = await import("fs");
|
|
167551
167832
|
for (const file of readdirSync35(snapshotDir)) {
|
|
167552
167833
|
if (/\.(png|jpg|jpeg)$/i.test(file)) {
|
|
167553
|
-
|
|
167834
|
+
rmSync21(join87(snapshotDir, file), { force: true });
|
|
167554
167835
|
}
|
|
167555
167836
|
}
|
|
167556
167837
|
} catch {
|
|
@@ -167633,7 +167914,7 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
167633
167914
|
const decodedPath = decodeURIComponent(url.pathname).replace(/^\//, "");
|
|
167634
167915
|
const candidate = resolve55(projectDir, decodedPath);
|
|
167635
167916
|
const rel2 = relative15(projectDir, candidate);
|
|
167636
|
-
if (!rel2.startsWith("..") && !isAbsolute14(rel2) &&
|
|
167917
|
+
if (!rel2.startsWith("..") && !isAbsolute14(rel2) && existsSync85(candidate)) {
|
|
167637
167918
|
ffmpegInput = candidate;
|
|
167638
167919
|
inputIsLocal = true;
|
|
167639
167920
|
} else if (url.protocol === "http:" || url.protocol === "https:") {
|
|
@@ -167667,7 +167948,7 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
167667
167948
|
}
|
|
167668
167949
|
const timeLabel = `${time.toFixed(1)}s`;
|
|
167669
167950
|
const filename = `frame-${String(i2).padStart(2, "0")}-at-${timeLabel}.png`;
|
|
167670
|
-
const framePath =
|
|
167951
|
+
const framePath = join87(snapshotDir, filename);
|
|
167671
167952
|
await page.screenshot({ path: framePath, type: "png" });
|
|
167672
167953
|
const rel = relative15(projectDir, framePath);
|
|
167673
167954
|
savedPaths.push(rel.startsWith("..") || isAbsolute14(rel) ? framePath : rel);
|
|
@@ -167753,7 +168034,7 @@ var init_snapshot = __esm({
|
|
|
167753
168034
|
const angleLabel = camera && (camera.yaw !== 0 || camera.pitch !== 0) ? ` ${c.dim(`(angle yaw ${camera.yaw}\xB0 pitch ${camera.pitch}\xB0)`)}` : "";
|
|
167754
168035
|
console.log(`${c.accent("\u25C6")} Capturing ${label2} from ${c.accent(project.name)}${angleLabel}`);
|
|
167755
168036
|
try {
|
|
167756
|
-
const snapshotDir = args.output ? resolve55(String(args.output)) :
|
|
168037
|
+
const snapshotDir = args.output ? resolve55(String(args.output)) : join87(project.dir, "snapshots");
|
|
167757
168038
|
const paths = await captureSnapshots(project.dir, {
|
|
167758
168039
|
frames,
|
|
167759
168040
|
timeout,
|
|
@@ -167780,7 +168061,7 @@ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${args.output ? snaps
|
|
|
167780
168061
|
const { createSnapshotContactSheet: createSnapshotContactSheet2 } = await Promise.resolve().then(() => (init_contactSheet(), contactSheet_exports));
|
|
167781
168062
|
const sheets = await createSnapshotContactSheet2(
|
|
167782
168063
|
snapshotDir,
|
|
167783
|
-
|
|
168064
|
+
join87(snapshotDir, "contact-sheet.jpg")
|
|
167784
168065
|
);
|
|
167785
168066
|
if (sheets.length > 0) {
|
|
167786
168067
|
const label3 = sheets.length === 1 ? "contact-sheet.jpg" : `contact-sheet-1..${sheets.length}.jpg`;
|
|
@@ -167815,10 +168096,10 @@ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${args.output ? snaps
|
|
|
167815
168096
|
}
|
|
167816
168097
|
const results = await Promise.allSettled(
|
|
167817
168098
|
paths.map(async (p2) => {
|
|
167818
|
-
const filename =
|
|
167819
|
-
const filePath =
|
|
167820
|
-
if (!
|
|
167821
|
-
const raw =
|
|
168099
|
+
const filename = basename20(p2);
|
|
168100
|
+
const filePath = join87(snapshotDir, filename);
|
|
168101
|
+
if (!existsSync85(filePath)) return { filename, desc: "file not found" };
|
|
168102
|
+
const raw = readFileSync56(filePath);
|
|
167822
168103
|
let imageData;
|
|
167823
168104
|
let mimeType = "image/png";
|
|
167824
168105
|
if (sharpFn) {
|
|
@@ -167854,8 +168135,8 @@ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${args.output ? snaps
|
|
|
167854
168135
|
descriptions.push(`## (error)`, `Gemini call failed: ${errMsg.slice(0, 120)}`, ``);
|
|
167855
168136
|
}
|
|
167856
168137
|
}
|
|
167857
|
-
const descPath =
|
|
167858
|
-
|
|
168138
|
+
const descPath = join87(snapshotDir, "descriptions.md");
|
|
168139
|
+
writeFileSync31(descPath, descriptions.join("\n"));
|
|
167859
168140
|
console.log(` ${c.dim("descriptions.md")} (Gemini frame analysis)`);
|
|
167860
168141
|
}
|
|
167861
168142
|
} catch (descErr) {
|
|
@@ -167875,19 +168156,19 @@ ${c.error("\u2717")} Snapshot failed: ${msg}`);
|
|
|
167875
168156
|
});
|
|
167876
168157
|
|
|
167877
168158
|
// src/capture/assetDownloader.ts
|
|
167878
|
-
import { writeFileSync as
|
|
167879
|
-
import { join as
|
|
168159
|
+
import { writeFileSync as writeFileSync33, mkdirSync as mkdirSync40 } from "fs";
|
|
168160
|
+
import { join as join88, extname as extname16 } from "path";
|
|
167880
168161
|
import { createHash as createHash12 } from "crypto";
|
|
167881
168162
|
function svgContentHashSlug(svgSource, isLogo) {
|
|
167882
168163
|
const hash2 = createHash12("sha1").update(svgSource).digest("hex").slice(0, 8);
|
|
167883
168164
|
return isLogo ? `logo-${hash2}` : `svg-${hash2}`;
|
|
167884
168165
|
}
|
|
167885
168166
|
async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks) {
|
|
167886
|
-
const assetsDir =
|
|
168167
|
+
const assetsDir = join88(outputDir, "assets");
|
|
167887
168168
|
mkdirSync40(assetsDir, { recursive: true });
|
|
167888
168169
|
const assets = [];
|
|
167889
168170
|
const downloadedUrls = /* @__PURE__ */ new Set();
|
|
167890
|
-
mkdirSync40(
|
|
168171
|
+
mkdirSync40(join88(outputDir, "assets", "svgs"), { recursive: true });
|
|
167891
168172
|
const usedSvgNames = /* @__PURE__ */ new Set();
|
|
167892
168173
|
for (let i2 = 0; i2 < tokens.svgs.length && i2 < 30; i2++) {
|
|
167893
168174
|
const svg = tokens.svgs[i2];
|
|
@@ -167903,7 +168184,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
|
|
|
167903
168184
|
const name = `${finalSlug}.svg`;
|
|
167904
168185
|
const localPath = `assets/svgs/${name}`;
|
|
167905
168186
|
try {
|
|
167906
|
-
|
|
168187
|
+
writeFileSync33(join88(outputDir, localPath), svg.outerHTML, "utf-8");
|
|
167907
168188
|
assets.push({ url: "", localPath, type: "svg" });
|
|
167908
168189
|
} catch {
|
|
167909
168190
|
}
|
|
@@ -167911,12 +168192,12 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
|
|
|
167911
168192
|
for (const icon of faviconLinks || []) {
|
|
167912
168193
|
if (!icon.href) continue;
|
|
167913
168194
|
try {
|
|
167914
|
-
const ext =
|
|
168195
|
+
const ext = extname16(new URL(icon.href).pathname) || ".ico";
|
|
167915
168196
|
const name = `favicon${ext}`;
|
|
167916
168197
|
const localPath = `assets/${name}`;
|
|
167917
168198
|
const buffer = await fetchBuffer(icon.href);
|
|
167918
168199
|
if (buffer) {
|
|
167919
|
-
|
|
168200
|
+
writeFileSync33(join88(outputDir, localPath), buffer);
|
|
167920
168201
|
assets.push({ url: icon.href, localPath, type: "favicon" });
|
|
167921
168202
|
break;
|
|
167922
168203
|
}
|
|
@@ -167955,7 +168236,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
|
|
|
167955
168236
|
const results = await Promise.allSettled(
|
|
167956
168237
|
batch.map(async ({ url, isPoster, catalog }) => {
|
|
167957
168238
|
const parsedUrl = new URL(url);
|
|
167958
|
-
const pathExt =
|
|
168239
|
+
const pathExt = extname16(parsedUrl.pathname);
|
|
167959
168240
|
const ext = pathExt && pathExt.length <= 5 ? pathExt : ".jpg";
|
|
167960
168241
|
const buffer = await fetchBuffer(url);
|
|
167961
168242
|
if (!buffer) return null;
|
|
@@ -167981,7 +168262,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
|
|
|
167981
168262
|
const name = `${slug}${ext}`;
|
|
167982
168263
|
usedNames.add(slug);
|
|
167983
168264
|
const localPath = `assets/${name}`;
|
|
167984
|
-
|
|
168265
|
+
writeFileSync33(join88(outputDir, localPath), buffer);
|
|
167985
168266
|
assets.push({ url, localPath, type: "image" });
|
|
167986
168267
|
imgIdx++;
|
|
167987
168268
|
} catch {
|
|
@@ -167990,11 +168271,11 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
|
|
|
167990
168271
|
}
|
|
167991
168272
|
if (tokens.ogImage && !downloadedUrls.has(normalizeUrl(tokens.ogImage))) {
|
|
167992
168273
|
try {
|
|
167993
|
-
const ext =
|
|
168274
|
+
const ext = extname16(new URL(tokens.ogImage).pathname) || ".jpg";
|
|
167994
168275
|
const localPath = `assets/og-image${ext}`;
|
|
167995
168276
|
const buffer = await fetchBuffer(tokens.ogImage);
|
|
167996
168277
|
if (buffer && buffer.length > 5e3) {
|
|
167997
|
-
|
|
168278
|
+
writeFileSync33(join88(outputDir, localPath), buffer);
|
|
167998
168279
|
assets.push({ url: tokens.ogImage, localPath, type: "image" });
|
|
167999
168280
|
}
|
|
168000
168281
|
} catch {
|
|
@@ -168017,7 +168298,7 @@ function normalizeUrl(u) {
|
|
|
168017
168298
|
}
|
|
168018
168299
|
}
|
|
168019
168300
|
async function downloadAndRewriteFonts(css, outputDir) {
|
|
168020
|
-
const assetsDir =
|
|
168301
|
+
const assetsDir = join88(outputDir, "assets", "fonts");
|
|
168021
168302
|
mkdirSync40(assetsDir, { recursive: true });
|
|
168022
168303
|
const fontUrlRegex = /url\(['"]?(https?:\/\/[^'")\s]+\.(?:woff2?|ttf|otf)[^'")\s]*?)['"]?\)/g;
|
|
168023
168304
|
const fontUrls = /* @__PURE__ */ new Set();
|
|
@@ -168053,11 +168334,11 @@ async function downloadAndRewriteFonts(css, outputDir) {
|
|
|
168053
168334
|
try {
|
|
168054
168335
|
const urlObj = new URL(fontUrl);
|
|
168055
168336
|
const filename = urlObj.pathname.split("/").pop() || `font-${count}.woff2`;
|
|
168056
|
-
const localPath =
|
|
168337
|
+
const localPath = join88(assetsDir, filename);
|
|
168057
168338
|
const relativePath = `assets/fonts/${filename}`;
|
|
168058
168339
|
const buffer = await fetchBuffer(fontUrl);
|
|
168059
168340
|
if (buffer) {
|
|
168060
|
-
|
|
168341
|
+
writeFileSync33(localPath, buffer);
|
|
168061
168342
|
rewritten = rewritten.split(fontUrl).join(relativePath);
|
|
168062
168343
|
familyCounts.set(family, familyCount + 1);
|
|
168063
168344
|
count++;
|
|
@@ -168211,8 +168492,8 @@ __export(video_exports, {
|
|
|
168211
168492
|
runVideoMode: () => runVideoMode,
|
|
168212
168493
|
safeFilename: () => safeFilename
|
|
168213
168494
|
});
|
|
168214
|
-
import { createWriteStream as createWriteStream4, existsSync as
|
|
168215
|
-
import { resolve as resolve56, join as
|
|
168495
|
+
import { createWriteStream as createWriteStream4, existsSync as existsSync86, mkdirSync as mkdirSync41, readFileSync as readFileSync57, unlinkSync as unlinkSync8 } from "fs";
|
|
168496
|
+
import { resolve as resolve56, join as join89, basename as basename21 } from "path";
|
|
168216
168497
|
async function streamToFile(url, destPath) {
|
|
168217
168498
|
const r2 = await safeFetch(url, {
|
|
168218
168499
|
signal: AbortSignal.timeout(12e4),
|
|
@@ -168290,9 +168571,9 @@ function safeFilename(name) {
|
|
|
168290
168571
|
return decoded.replace(/[^A-Za-z0-9._-]+/g, "_");
|
|
168291
168572
|
}
|
|
168292
168573
|
function findFilenameCollision(manifest, selected) {
|
|
168293
|
-
const selectedName = safeFilename(selected.filename ||
|
|
168574
|
+
const selectedName = safeFilename(selected.filename || basename21(selected.url));
|
|
168294
168575
|
return manifest.filter(
|
|
168295
|
-
(e3) => e3.index !== selected.index && safeFilename(e3.filename ||
|
|
168576
|
+
(e3) => e3.index !== selected.index && safeFilename(e3.filename || basename21(e3.url)) === selectedName
|
|
168296
168577
|
);
|
|
168297
168578
|
}
|
|
168298
168579
|
function pickManifestEntry(manifest, args) {
|
|
@@ -168331,11 +168612,11 @@ function pickManifestEntry(manifest, args) {
|
|
|
168331
168612
|
}
|
|
168332
168613
|
async function runVideoMode(args) {
|
|
168333
168614
|
const projectDir = resolve56(args.project);
|
|
168334
|
-
const directPath =
|
|
168335
|
-
const w2hPath =
|
|
168336
|
-
const manifestPath2 =
|
|
168615
|
+
const directPath = join89(projectDir, "extracted", "video-manifest.json");
|
|
168616
|
+
const w2hPath = join89(projectDir, "capture", "extracted", "video-manifest.json");
|
|
168617
|
+
const manifestPath2 = existsSync86(directPath) ? directPath : w2hPath;
|
|
168337
168618
|
const isW2hLayout = manifestPath2 === w2hPath;
|
|
168338
|
-
if (!
|
|
168619
|
+
if (!existsSync86(manifestPath2)) {
|
|
168339
168620
|
console.error(
|
|
168340
168621
|
`${c.error("\u2717")} no video-manifest.json at ${directPath} or ${w2hPath}
|
|
168341
168622
|
Was this directory produced by \`hyperframes capture\`?`
|
|
@@ -168345,7 +168626,7 @@ async function runVideoMode(args) {
|
|
|
168345
168626
|
}
|
|
168346
168627
|
let manifest;
|
|
168347
168628
|
try {
|
|
168348
|
-
manifest = JSON.parse(
|
|
168629
|
+
manifest = JSON.parse(readFileSync57(manifestPath2, "utf-8"));
|
|
168349
168630
|
} catch (e3) {
|
|
168350
168631
|
console.error(`${c.error("\u2717")} video-manifest.json is malformed: ${e3.message}`);
|
|
168351
168632
|
process.exitCode = 1;
|
|
@@ -168381,15 +168662,15 @@ async function runVideoMode(args) {
|
|
|
168381
168662
|
const collisions = findFilenameCollision(manifest, entry);
|
|
168382
168663
|
if (collisions.length > 0) {
|
|
168383
168664
|
console.error(
|
|
168384
|
-
`${c.error("\u2717")} filename "${safeFilename(entry.filename ||
|
|
168665
|
+
`${c.error("\u2717")} filename "${safeFilename(entry.filename || basename21(entry.url))}" collides with manifest entr${collisions.length === 1 ? "y" : "ies"} ${collisions.map((co) => `[${co.index}]`).join(", ")}. Refusing to download \u2014 the on-disk file's bytes would not match the requested entry.`
|
|
168385
168666
|
);
|
|
168386
168667
|
process.exitCode = 1;
|
|
168387
168668
|
return;
|
|
168388
168669
|
}
|
|
168389
|
-
const outDir = isW2hLayout ?
|
|
168670
|
+
const outDir = isW2hLayout ? join89(projectDir, "capture", "assets", "videos") : join89(projectDir, "assets", "videos");
|
|
168390
168671
|
mkdirSync41(outDir, { recursive: true });
|
|
168391
|
-
const fname = safeFilename(entry.filename ||
|
|
168392
|
-
const outPath =
|
|
168672
|
+
const fname = safeFilename(entry.filename || basename21(entry.url));
|
|
168673
|
+
const outPath = join89(outDir, fname);
|
|
168393
168674
|
const relPath = isW2hLayout ? `capture/assets/videos/${fname}` : `assets/videos/${fname}`;
|
|
168394
168675
|
console.log(
|
|
168395
168676
|
`${c.accent("\u25B8")} downloading [${entry.index}] ${entry.filename} (${entry.sourceWidth || entry.width}\xD7${entry.sourceHeight || entry.height})`
|
|
@@ -169632,8 +169913,8 @@ var init_designStyleExtractor = __esm({
|
|
|
169632
169913
|
});
|
|
169633
169914
|
|
|
169634
169915
|
// src/capture/fontMetadataExtractor.ts
|
|
169635
|
-
import { readdirSync as readdirSync29, readFileSync as
|
|
169636
|
-
import { join as
|
|
169916
|
+
import { readdirSync as readdirSync29, readFileSync as readFileSync58, writeFileSync as writeFileSync34, existsSync as existsSync87 } from "fs";
|
|
169917
|
+
import { join as join90 } from "path";
|
|
169637
169918
|
import * as fontkit from "fontkit";
|
|
169638
169919
|
function isFontCollection(value) {
|
|
169639
169920
|
return value.type === "TTC" || value.type === "DFont";
|
|
@@ -169641,10 +169922,10 @@ function isFontCollection(value) {
|
|
|
169641
169922
|
function extractFontMetadata(fontsDir, outputPath) {
|
|
169642
169923
|
const files = [];
|
|
169643
169924
|
const unidentified = [];
|
|
169644
|
-
if (
|
|
169925
|
+
if (existsSync87(fontsDir)) {
|
|
169645
169926
|
const fontFiles = readdirSync29(fontsDir).filter((f3) => /\.(woff2?|ttf|otf)$/i.test(f3));
|
|
169646
169927
|
for (const filename of fontFiles) {
|
|
169647
|
-
const fullPath =
|
|
169928
|
+
const fullPath = join90(fontsDir, filename);
|
|
169648
169929
|
const meta = readSingleFont(fullPath, filename);
|
|
169649
169930
|
if (meta.identified) {
|
|
169650
169931
|
files.push(meta);
|
|
@@ -169666,7 +169947,7 @@ function extractFontMetadata(fontsDir, outputPath) {
|
|
|
169666
169947
|
tool: "fontkit"
|
|
169667
169948
|
}
|
|
169668
169949
|
};
|
|
169669
|
-
|
|
169950
|
+
writeFileSync34(outputPath, JSON.stringify(manifest, null, 2), "utf-8");
|
|
169670
169951
|
return manifest;
|
|
169671
169952
|
}
|
|
169672
169953
|
function readSingleFont(fullPath, filename) {
|
|
@@ -169683,7 +169964,7 @@ function readSingleFont(fullPath, filename) {
|
|
|
169683
169964
|
isIcon: false
|
|
169684
169965
|
};
|
|
169685
169966
|
try {
|
|
169686
|
-
const buf =
|
|
169967
|
+
const buf = readFileSync58(fullPath);
|
|
169687
169968
|
const created = fontkit.create(buf);
|
|
169688
169969
|
const font = isFontCollection(created) ? created.fonts[0] : created;
|
|
169689
169970
|
if (!font) return empty2;
|
|
@@ -169955,8 +170236,8 @@ var init_animationCataloger = __esm({
|
|
|
169955
170236
|
});
|
|
169956
170237
|
|
|
169957
170238
|
// src/capture/mediaCapture.ts
|
|
169958
|
-
import { mkdirSync as mkdirSync43, writeFileSync as
|
|
169959
|
-
import { join as
|
|
170239
|
+
import { mkdirSync as mkdirSync43, writeFileSync as writeFileSync35, readdirSync as readdirSync30, readFileSync as readFileSync59, statSync as statSync27 } from "fs";
|
|
170240
|
+
import { join as join91, extname as extname17 } from "path";
|
|
169960
170241
|
async function saveLottieAnimations(discoveredLotties, lottieDir) {
|
|
169961
170242
|
let savedCount = 0;
|
|
169962
170243
|
const savedHashes = /* @__PURE__ */ new Set();
|
|
@@ -169988,7 +170269,7 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
|
|
|
169988
170269
|
const hash2 = buf.toString("base64").slice(0, 100);
|
|
169989
170270
|
if (savedHashes.has(hash2)) continue;
|
|
169990
170271
|
savedHashes.add(hash2);
|
|
169991
|
-
|
|
170272
|
+
writeFileSync35(join91(lottieDir, `animation-${savedCount}.lottie`), buf);
|
|
169992
170273
|
savedCount++;
|
|
169993
170274
|
continue;
|
|
169994
170275
|
}
|
|
@@ -170006,7 +170287,7 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
|
|
|
170006
170287
|
} catch {
|
|
170007
170288
|
continue;
|
|
170008
170289
|
}
|
|
170009
|
-
|
|
170290
|
+
writeFileSync35(join91(lottieDir, `animation-${savedCount}.json`), jsonData, "utf-8");
|
|
170010
170291
|
savedCount++;
|
|
170011
170292
|
}
|
|
170012
170293
|
} catch {
|
|
@@ -170016,22 +170297,22 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
|
|
|
170016
170297
|
}
|
|
170017
170298
|
async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
|
|
170018
170299
|
const manifest = [];
|
|
170019
|
-
const previewDir =
|
|
170300
|
+
const previewDir = join91(lottieDir, "previews");
|
|
170020
170301
|
mkdirSync43(previewDir, { recursive: true });
|
|
170021
170302
|
for (const file of readdirSync30(lottieDir)) {
|
|
170022
170303
|
if (!file.endsWith(".json")) continue;
|
|
170023
170304
|
try {
|
|
170024
|
-
const raw = JSON.parse(
|
|
170305
|
+
const raw = JSON.parse(readFileSync59(join91(lottieDir, file), "utf-8"));
|
|
170025
170306
|
const fr = raw.fr || 30;
|
|
170026
170307
|
const dur = ((raw.op || 0) - (raw.ip || 0)) / fr;
|
|
170027
170308
|
const previewName = file.replace(".json", "-preview.png");
|
|
170028
|
-
const fileSize = statSync27(
|
|
170309
|
+
const fileSize = statSync27(join91(lottieDir, file)).size;
|
|
170029
170310
|
if (fileSize > 2e6) continue;
|
|
170030
170311
|
let previewPage;
|
|
170031
170312
|
try {
|
|
170032
170313
|
previewPage = await chromeBrowser.newPage();
|
|
170033
170314
|
await previewPage.setViewport({ width: 400, height: 400 });
|
|
170034
|
-
const animData = JSON.parse(
|
|
170315
|
+
const animData = JSON.parse(readFileSync59(join91(lottieDir, file), "utf-8"));
|
|
170035
170316
|
const midFrame = Math.floor(((raw.op || 0) - (raw.ip || 0)) * 0.3);
|
|
170036
170317
|
await previewPage.setContent(
|
|
170037
170318
|
`<!DOCTYPE html>
|
|
@@ -170061,7 +170342,7 @@ async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
|
|
|
170061
170342
|
await previewPage.waitForFunction(() => window.__READY === true, { timeout: 5e3 }).catch(() => {
|
|
170062
170343
|
});
|
|
170063
170344
|
await previewPage.screenshot({
|
|
170064
|
-
path:
|
|
170345
|
+
path: join91(previewDir, previewName),
|
|
170065
170346
|
type: "png",
|
|
170066
170347
|
omitBackground: true
|
|
170067
170348
|
});
|
|
@@ -170084,8 +170365,8 @@ async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
|
|
|
170084
170365
|
}
|
|
170085
170366
|
}
|
|
170086
170367
|
if (manifest.length > 0) {
|
|
170087
|
-
|
|
170088
|
-
|
|
170368
|
+
writeFileSync35(
|
|
170369
|
+
join91(outputDir, "extracted", "lottie-manifest.json"),
|
|
170089
170370
|
JSON.stringify(manifest, null, 2),
|
|
170090
170371
|
"utf-8"
|
|
170091
170372
|
);
|
|
@@ -170095,7 +170376,7 @@ async function downloadVideoBody(srcUrl, filename, videosDir) {
|
|
|
170095
170376
|
if (isPrivateUrl(srcUrl)) return null;
|
|
170096
170377
|
let ext = "";
|
|
170097
170378
|
try {
|
|
170098
|
-
ext =
|
|
170379
|
+
ext = extname17(new URL(srcUrl).pathname).toLowerCase();
|
|
170099
170380
|
} catch {
|
|
170100
170381
|
return null;
|
|
170101
170382
|
}
|
|
@@ -170120,7 +170401,7 @@ async function downloadVideoBody(srcUrl, filename, videosDir) {
|
|
|
170120
170401
|
}
|
|
170121
170402
|
if (total < 1024) return null;
|
|
170122
170403
|
const safe = /\.[a-z0-9]+$/i.test(filename) ? filename.replace(/[^\w.-]/g, "_") : `video${ext}`;
|
|
170123
|
-
|
|
170404
|
+
writeFileSync35(join91(videosDir, safe), Buffer.concat(chunks));
|
|
170124
170405
|
return `assets/videos/${safe}`;
|
|
170125
170406
|
} catch {
|
|
170126
170407
|
return null;
|
|
@@ -170182,9 +170463,9 @@ async function captureVideoManifest(page, outputDir, progress, opts) {
|
|
|
170182
170463
|
}
|
|
170183
170464
|
const merged = [...byKey.values()];
|
|
170184
170465
|
if (merged.length === 0) return;
|
|
170185
|
-
const videoManifestDir =
|
|
170466
|
+
const videoManifestDir = join91(outputDir, "assets", "videos");
|
|
170186
170467
|
mkdirSync43(videoManifestDir, { recursive: true });
|
|
170187
|
-
const previewDir =
|
|
170468
|
+
const previewDir = join91(videoManifestDir, "previews");
|
|
170188
170469
|
mkdirSync43(previewDir, { recursive: true });
|
|
170189
170470
|
const videoManifest = [];
|
|
170190
170471
|
const dlStart = Date.now();
|
|
@@ -170207,7 +170488,7 @@ async function captureVideoManifest(page, outputDir, progress, opts) {
|
|
|
170207
170488
|
if (rect && rect.width >= 10) {
|
|
170208
170489
|
await new Promise((r2) => setTimeout(r2, 200));
|
|
170209
170490
|
await page.screenshot({
|
|
170210
|
-
path:
|
|
170491
|
+
path: join91(previewDir, previewName),
|
|
170211
170492
|
clip: {
|
|
170212
170493
|
x: Math.max(0, rect.x),
|
|
170213
170494
|
y: Math.max(0, rect.y),
|
|
@@ -170238,8 +170519,8 @@ async function captureVideoManifest(page, outputDir, progress, opts) {
|
|
|
170238
170519
|
});
|
|
170239
170520
|
}
|
|
170240
170521
|
if (videoManifest.length > 0) {
|
|
170241
|
-
|
|
170242
|
-
|
|
170522
|
+
writeFileSync35(
|
|
170523
|
+
join91(outputDir, "extracted", "video-manifest.json"),
|
|
170243
170524
|
JSON.stringify(videoManifest, null, 2),
|
|
170244
170525
|
"utf-8"
|
|
170245
170526
|
);
|
|
@@ -170307,8 +170588,8 @@ var init_mediaCapture = __esm({
|
|
|
170307
170588
|
});
|
|
170308
170589
|
|
|
170309
170590
|
// src/capture/contentExtractor.ts
|
|
170310
|
-
import { existsSync as
|
|
170311
|
-
import { basename as
|
|
170591
|
+
import { existsSync as existsSync88, readdirSync as readdirSync31, statSync as statSync28, readFileSync as readFileSync60 } from "fs";
|
|
170592
|
+
import { basename as basename23, join as join93 } from "path";
|
|
170312
170593
|
async function detectLibraries(page, capturedShaders) {
|
|
170313
170594
|
let detectedLibraries = [];
|
|
170314
170595
|
try {
|
|
@@ -170475,7 +170756,7 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
|
|
|
170475
170756
|
return response.text?.trim() || "";
|
|
170476
170757
|
};
|
|
170477
170758
|
}
|
|
170478
|
-
const imageFiles = readdirSync31(
|
|
170759
|
+
const imageFiles = readdirSync31(join93(outputDir, "assets")).filter(
|
|
170479
170760
|
(f3) => /\.(png|jpg|jpeg|webp|gif)$/i.test(f3)
|
|
170480
170761
|
);
|
|
170481
170762
|
const BATCH_SIZE = 20;
|
|
@@ -170483,10 +170764,10 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
|
|
|
170483
170764
|
const batch = imageFiles.slice(i2, i2 + BATCH_SIZE);
|
|
170484
170765
|
const results = await Promise.allSettled(
|
|
170485
170766
|
batch.map(async (file) => {
|
|
170486
|
-
const filePath =
|
|
170767
|
+
const filePath = join93(outputDir, "assets", file);
|
|
170487
170768
|
const stat3 = statSync28(filePath);
|
|
170488
170769
|
if (stat3.size > 4e6) return { file, caption: "" };
|
|
170489
|
-
const buffer =
|
|
170770
|
+
const buffer = readFileSync60(filePath);
|
|
170490
170771
|
const base64 = buffer.toString("base64");
|
|
170491
170772
|
const ext = file.split(".").pop()?.toLowerCase() || "png";
|
|
170492
170773
|
const mimeType = ext === "jpg" ? "image/jpeg" : `image/${ext}`;
|
|
@@ -170517,12 +170798,12 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
|
|
|
170517
170798
|
`${Object.keys(geminiCaptions).length} images captioned with ${providerName}`
|
|
170518
170799
|
);
|
|
170519
170800
|
const svgFiles = [];
|
|
170520
|
-
const assetsDir =
|
|
170801
|
+
const assetsDir = join93(outputDir, "assets");
|
|
170521
170802
|
for (const f3 of readdirSync31(assetsDir)) {
|
|
170522
170803
|
if (/\.svg$/i.test(f3)) svgFiles.push({ file: f3, relPath: f3 });
|
|
170523
170804
|
}
|
|
170524
|
-
const svgsSubdir =
|
|
170525
|
-
if (
|
|
170805
|
+
const svgsSubdir = join93(assetsDir, "svgs");
|
|
170806
|
+
if (existsSync88(svgsSubdir)) {
|
|
170526
170807
|
for (const f3 of readdirSync31(svgsSubdir)) {
|
|
170527
170808
|
if (/\.svg$/i.test(f3)) svgFiles.push({ file: f3, relPath: `svgs/${f3}` });
|
|
170528
170809
|
}
|
|
@@ -170545,10 +170826,10 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
|
|
|
170545
170826
|
const batch = svgFiles.slice(i2, i2 + SVG_BATCH);
|
|
170546
170827
|
const results = await Promise.allSettled(
|
|
170547
170828
|
batch.map(async ({ relPath }) => {
|
|
170548
|
-
const filePath =
|
|
170829
|
+
const filePath = join93(assetsDir, relPath);
|
|
170549
170830
|
let pngBase64;
|
|
170550
170831
|
try {
|
|
170551
|
-
const svgSource =
|
|
170832
|
+
const svgSource = readFileSync60(filePath, "utf-8");
|
|
170552
170833
|
const lightFillHits = (svgSource.match(/fill\s*=\s*["'](#fff(fff)?|white|#[ef][ef][ef]|#[ef]{6})["']/gi) || []).length;
|
|
170553
170834
|
const darkFillHits = (svgSource.match(/fill\s*=\s*["'](#000(000)?|black|#[0-3]{6}|#[0-3]{3})["']/gi) || []).length;
|
|
170554
170835
|
const bg = lightFillHits > darkFillHits ? { r: 32, g: 32, b: 32 } : { r: 255, g: 255, b: 255 };
|
|
@@ -170603,11 +170884,11 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
|
|
|
170603
170884
|
const uncaptionedLines = [];
|
|
170604
170885
|
const svgLines = [];
|
|
170605
170886
|
const fontLines = [];
|
|
170606
|
-
const assetsPath =
|
|
170887
|
+
const assetsPath = join93(outputDir, "assets");
|
|
170607
170888
|
try {
|
|
170608
170889
|
for (const file of readdirSync31(assetsPath)) {
|
|
170609
170890
|
if (file === "svgs" || file === "fonts" || file === "lottie" || file === "videos") continue;
|
|
170610
|
-
const filePath =
|
|
170891
|
+
const filePath = join93(assetsPath, file);
|
|
170611
170892
|
const stat3 = statSync28(filePath);
|
|
170612
170893
|
if (!stat3.isFile()) continue;
|
|
170613
170894
|
const sizeKb = Math.round(stat3.size / 1024);
|
|
@@ -170636,7 +170917,7 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
|
|
|
170636
170917
|
} catch {
|
|
170637
170918
|
}
|
|
170638
170919
|
try {
|
|
170639
|
-
const svgsPath =
|
|
170920
|
+
const svgsPath = join93(assetsPath, "svgs");
|
|
170640
170921
|
for (const file of readdirSync31(svgsPath)) {
|
|
170641
170922
|
if (!file.endsWith(".svg")) continue;
|
|
170642
170923
|
const svgMatch = tokens.svgs.find(
|
|
@@ -170655,7 +170936,7 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
|
|
|
170655
170936
|
} catch {
|
|
170656
170937
|
}
|
|
170657
170938
|
try {
|
|
170658
|
-
const fontsPath =
|
|
170939
|
+
const fontsPath = join93(assetsPath, "fonts");
|
|
170659
170940
|
for (const file of readdirSync31(fontsPath)) {
|
|
170660
170941
|
fontLines.push(`fonts/${file} \u2014 font file`);
|
|
170661
170942
|
}
|
|
@@ -170664,11 +170945,11 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
|
|
|
170664
170945
|
const videoLines = [];
|
|
170665
170946
|
try {
|
|
170666
170947
|
const manifest = JSON.parse(
|
|
170667
|
-
|
|
170948
|
+
readFileSync60(join93(outputDir, "extracted", "video-manifest.json"), "utf-8")
|
|
170668
170949
|
);
|
|
170669
170950
|
for (const v2 of manifest) {
|
|
170670
170951
|
if (!v2.localPath) continue;
|
|
170671
|
-
const base2 =
|
|
170952
|
+
const base2 = basename23(v2.localPath) || v2.filename || "";
|
|
170672
170953
|
if (!base2) continue;
|
|
170673
170954
|
const desc = (v2.caption || v2.heading || "").trim().replace(/\s+/g, " ").slice(0, 140) || "motion clip";
|
|
170674
170955
|
const dimW = v2.sourceWidth || v2.width;
|
|
@@ -170691,8 +170972,8 @@ var agentPromptGenerator_exports = {};
|
|
|
170691
170972
|
__export(agentPromptGenerator_exports, {
|
|
170692
170973
|
generateAgentPrompt: () => generateAgentPrompt
|
|
170693
170974
|
});
|
|
170694
|
-
import { writeFileSync as
|
|
170695
|
-
import { join as
|
|
170975
|
+
import { writeFileSync as writeFileSync36, readdirSync as readdirSync33, existsSync as existsSync89 } from "fs";
|
|
170976
|
+
import { join as join94 } from "path";
|
|
170696
170977
|
function inferColorRole(hex) {
|
|
170697
170978
|
const r2 = parseInt(hex.slice(1, 3), 16) / 255;
|
|
170698
170979
|
const g = parseInt(hex.slice(3, 5), 16) / 255;
|
|
@@ -170711,9 +170992,9 @@ function inferColorRole(hex) {
|
|
|
170711
170992
|
}
|
|
170712
170993
|
function generateAgentPrompt(outputDir, url, tokens, _animations, hasScreenshot, hasLottie, hasShaders, _catalogedAssets, _detectedLibraries) {
|
|
170713
170994
|
const prompt = buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShaders);
|
|
170714
|
-
|
|
170715
|
-
|
|
170716
|
-
|
|
170995
|
+
writeFileSync36(join94(outputDir, "AGENTS.md"), prompt, "utf-8");
|
|
170996
|
+
writeFileSync36(join94(outputDir, "CLAUDE.md"), prompt, "utf-8");
|
|
170997
|
+
writeFileSync36(join94(outputDir, ".cursorrules"), prompt, "utf-8");
|
|
170717
170998
|
}
|
|
170718
170999
|
function buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShaders) {
|
|
170719
171000
|
const title = tokens.title || new URL(url).hostname.replace(/^www\./, "");
|
|
@@ -170722,8 +171003,8 @@ function buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShader
|
|
|
170722
171003
|
(f3) => f3.family + (f3.variable && f3.weightRange ? ` (${f3.weightRange[0]}-${f3.weightRange[1]} variable)` : f3.weights.length > 0 ? ` (${f3.weights.join(",")})` : "")
|
|
170723
171004
|
).join(", ") || "none detected";
|
|
170724
171005
|
function contactSheetRows(dir, baseFile, label2) {
|
|
170725
|
-
const fullDir =
|
|
170726
|
-
if (!
|
|
171006
|
+
const fullDir = join94(outputDir, dir);
|
|
171007
|
+
if (!existsSync89(fullDir)) return [];
|
|
170727
171008
|
const baseName = baseFile.replace(/\.jpg$/, "");
|
|
170728
171009
|
const escapedBase = baseName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
170729
171010
|
const paginatedRe = new RegExp(`^${escapedBase}(?:-(\\d+))?\\.jpg$`);
|
|
@@ -170755,7 +171036,7 @@ function buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShader
|
|
|
170755
171036
|
tableRows.push(
|
|
170756
171037
|
`| \`extracted/tokens.json\` | Design tokens: ${tokens.colors.length} colors, ${tokens.fonts.length} fonts, ${tokens.headings?.length ?? 0} headings, ${tokens.ctas?.length ?? 0} CTAs |`
|
|
170757
171038
|
);
|
|
170758
|
-
if (
|
|
171039
|
+
if (existsSync89(join94(outputDir, "extracted", "design-styles.json"))) {
|
|
170759
171040
|
tableRows.push(
|
|
170760
171041
|
"| `extracted/design-styles.json` | Computed styles from live DOM: typography hierarchy, button/card/nav styles, spacing scale, border-radius, box shadows. Primary data source for DESIGN.md. |"
|
|
170761
171042
|
);
|
|
@@ -170826,15 +171107,15 @@ var init_agentPromptGenerator = __esm({
|
|
|
170826
171107
|
});
|
|
170827
171108
|
|
|
170828
171109
|
// src/capture/scaffolding.ts
|
|
170829
|
-
import { existsSync as
|
|
170830
|
-
import { join as
|
|
171110
|
+
import { existsSync as existsSync90, writeFileSync as writeFileSync37, readFileSync as readFileSync61 } from "fs";
|
|
171111
|
+
import { join as join95, resolve as resolve57 } from "path";
|
|
170831
171112
|
function loadEnvFile(startDir) {
|
|
170832
171113
|
try {
|
|
170833
171114
|
let dir = resolve57(startDir);
|
|
170834
171115
|
for (let i2 = 0; i2 < 5; i2++) {
|
|
170835
171116
|
const envPath = resolve57(dir, ".env");
|
|
170836
171117
|
try {
|
|
170837
|
-
const envContent =
|
|
171118
|
+
const envContent = readFileSync61(envPath, "utf-8");
|
|
170838
171119
|
for (const line2 of envContent.split("\n")) {
|
|
170839
171120
|
const trimmed = line2.trim();
|
|
170840
171121
|
if (!trimmed || trimmed.startsWith("#")) continue;
|
|
@@ -170853,10 +171134,10 @@ function loadEnvFile(startDir) {
|
|
|
170853
171134
|
}
|
|
170854
171135
|
}
|
|
170855
171136
|
async function generateProjectScaffold(outputDir, url, tokens, animationCatalog, hasScreenshots, hasLotties, hasShaders, catalogedAssets, progress, warnings, detectedLibraries) {
|
|
170856
|
-
const metaPath =
|
|
170857
|
-
if (!
|
|
171137
|
+
const metaPath = join95(outputDir, "meta.json");
|
|
171138
|
+
if (!existsSync90(metaPath)) {
|
|
170858
171139
|
const hostname = new URL(url).hostname.replace(/^www\./, "");
|
|
170859
|
-
|
|
171140
|
+
writeFileSync37(
|
|
170860
171141
|
metaPath,
|
|
170861
171142
|
JSON.stringify({ id: hostname + "-video", name: tokens.title || hostname }, null, 2),
|
|
170862
171143
|
"utf-8"
|
|
@@ -170891,10 +171172,10 @@ var screenshotCapture_exports = {};
|
|
|
170891
171172
|
__export(screenshotCapture_exports, {
|
|
170892
171173
|
captureScrollScreenshots: () => captureScrollScreenshots
|
|
170893
171174
|
});
|
|
170894
|
-
import { writeFileSync as
|
|
170895
|
-
import { join as
|
|
171175
|
+
import { writeFileSync as writeFileSync38, mkdirSync as mkdirSync44 } from "fs";
|
|
171176
|
+
import { join as join96 } from "path";
|
|
170896
171177
|
async function captureScrollScreenshots(page, outputDir) {
|
|
170897
|
-
const screenshotsDir =
|
|
171178
|
+
const screenshotsDir = join96(outputDir, "screenshots");
|
|
170898
171179
|
mkdirSync44(screenshotsDir, { recursive: true });
|
|
170899
171180
|
const MAX_SCREENSHOTS = 20;
|
|
170900
171181
|
const filePaths = [];
|
|
@@ -170986,9 +171267,9 @@ async function captureScrollScreenshots(page, outputDir) {
|
|
|
170986
171267
|
finalPositions[i2] / Math.max(1, scrollHeight - viewportHeight) * 100
|
|
170987
171268
|
);
|
|
170988
171269
|
const filename = `scroll-${String(Math.min(pct, 100)).padStart(3, "0")}.png`;
|
|
170989
|
-
const filePath =
|
|
171270
|
+
const filePath = join96(screenshotsDir, filename);
|
|
170990
171271
|
const buffer = await page.screenshot({ type: "png" });
|
|
170991
|
-
|
|
171272
|
+
writeFileSync38(filePath, buffer);
|
|
170992
171273
|
filePaths.push(`screenshots/${filename}`);
|
|
170993
171274
|
}
|
|
170994
171275
|
await page.evaluate(`window.scrollTo(0, 0)`);
|
|
@@ -171335,8 +171616,8 @@ var capture_exports = {};
|
|
|
171335
171616
|
__export(capture_exports, {
|
|
171336
171617
|
captureWebsite: () => captureWebsite
|
|
171337
171618
|
});
|
|
171338
|
-
import { mkdirSync as mkdirSync45, writeFileSync as
|
|
171339
|
-
import { join as
|
|
171619
|
+
import { mkdirSync as mkdirSync45, writeFileSync as writeFileSync39, existsSync as existsSync91 } from "fs";
|
|
171620
|
+
import { join as join97 } from "path";
|
|
171340
171621
|
async function captureWebsite(opts, onProgress) {
|
|
171341
171622
|
const {
|
|
171342
171623
|
url,
|
|
@@ -171353,9 +171634,9 @@ async function captureWebsite(opts, onProgress) {
|
|
|
171353
171634
|
onProgress?.(stage, detail);
|
|
171354
171635
|
};
|
|
171355
171636
|
loadEnvFile(outputDir);
|
|
171356
|
-
mkdirSync45(
|
|
171357
|
-
mkdirSync45(
|
|
171358
|
-
mkdirSync45(
|
|
171637
|
+
mkdirSync45(join97(outputDir, "extracted"), { recursive: true });
|
|
171638
|
+
mkdirSync45(join97(outputDir, "screenshots"), { recursive: true });
|
|
171639
|
+
mkdirSync45(join97(outputDir, "assets"), { recursive: true });
|
|
171359
171640
|
progress("browser", "Launching headless Chrome...");
|
|
171360
171641
|
const { ensureBrowser: ensureBrowser2 } = await Promise.resolve().then(() => (init_manager2(), manager_exports2));
|
|
171361
171642
|
const browser = await ensureBrowser2();
|
|
@@ -171515,7 +171796,7 @@ async function captureWebsite(opts, onProgress) {
|
|
|
171515
171796
|
} catch {
|
|
171516
171797
|
}
|
|
171517
171798
|
if (discoveredLotties.length > 0) {
|
|
171518
|
-
const lottieDir =
|
|
171799
|
+
const lottieDir = join97(outputDir, "assets", "lottie");
|
|
171519
171800
|
mkdirSync45(lottieDir, { recursive: true });
|
|
171520
171801
|
const savedCount = await saveLottieAnimations(discoveredLotties, lottieDir);
|
|
171521
171802
|
if (savedCount > 0) {
|
|
@@ -171534,8 +171815,8 @@ async function captureWebsite(opts, onProgress) {
|
|
|
171534
171815
|
return true;
|
|
171535
171816
|
});
|
|
171536
171817
|
capturedShaders = unique;
|
|
171537
|
-
|
|
171538
|
-
|
|
171818
|
+
writeFileSync39(
|
|
171819
|
+
join97(outputDir, "extracted", "shaders.json"),
|
|
171539
171820
|
JSON.stringify(unique, null, 2),
|
|
171540
171821
|
"utf-8"
|
|
171541
171822
|
);
|
|
@@ -171549,16 +171830,16 @@ async function captureWebsite(opts, onProgress) {
|
|
|
171549
171830
|
...tokens,
|
|
171550
171831
|
svgs: tokens.svgs.map(({ outerHTML: _, ...rest }) => rest)
|
|
171551
171832
|
};
|
|
171552
|
-
|
|
171553
|
-
|
|
171833
|
+
writeFileSync39(
|
|
171834
|
+
join97(outputDir, "extracted", "tokens.json"),
|
|
171554
171835
|
JSON.stringify(tokensForDisk, null, 2),
|
|
171555
171836
|
"utf-8"
|
|
171556
171837
|
);
|
|
171557
171838
|
progress("style", "Extracting design styles...");
|
|
171558
171839
|
try {
|
|
171559
171840
|
const designStyles = await extractDesignStyles(page1);
|
|
171560
|
-
|
|
171561
|
-
|
|
171841
|
+
writeFileSync39(
|
|
171842
|
+
join97(outputDir, "extracted", "design-styles.json"),
|
|
171562
171843
|
JSON.stringify(designStyles, null, 2),
|
|
171563
171844
|
"utf-8"
|
|
171564
171845
|
);
|
|
@@ -171637,8 +171918,8 @@ ${err.stack}` : normalizeErrorMessage(err);
|
|
|
171637
171918
|
extracted.headHtml = await downloadAndRewriteFonts(extracted.headHtml, outputDir);
|
|
171638
171919
|
try {
|
|
171639
171920
|
const fontsManifest = extractFontMetadata(
|
|
171640
|
-
|
|
171641
|
-
|
|
171921
|
+
join97(outputDir, "assets", "fonts"),
|
|
171922
|
+
join97(outputDir, "extracted", "fonts-manifest.json")
|
|
171642
171923
|
);
|
|
171643
171924
|
if (fontsManifest.families.length > 0) {
|
|
171644
171925
|
const summary = fontsManifest.families.map((f3) => `${f3.family}${f3.variable ? " (variable)" : ""} \xD7 ${f3.fileCount}`).join(", ");
|
|
@@ -171664,8 +171945,8 @@ ${err.stack}` : normalizeErrorMessage(err);
|
|
|
171664
171945
|
scrollTriggeredElements: (animationCatalog.scrollTargets || []).length,
|
|
171665
171946
|
representativeAnimations: representativeAnims
|
|
171666
171947
|
};
|
|
171667
|
-
|
|
171668
|
-
|
|
171948
|
+
writeFileSync39(
|
|
171949
|
+
join97(outputDir, "extracted", "animations.json"),
|
|
171669
171950
|
JSON.stringify(leanCatalog, null, 2),
|
|
171670
171951
|
"utf-8"
|
|
171671
171952
|
);
|
|
@@ -171695,8 +171976,8 @@ ${err.stack}` : normalizeErrorMessage(err);
|
|
|
171695
171976
|
...tokens,
|
|
171696
171977
|
svgs: tokens.svgs.map(({ outerHTML: _, ...rest }) => rest)
|
|
171697
171978
|
};
|
|
171698
|
-
|
|
171699
|
-
|
|
171979
|
+
writeFileSync39(
|
|
171980
|
+
join97(outputDir, "extracted", "tokens.json"),
|
|
171700
171981
|
JSON.stringify(tokensForDisk2, null, 2),
|
|
171701
171982
|
"utf-8"
|
|
171702
171983
|
);
|
|
@@ -171712,12 +171993,12 @@ ${extracted.bodyHtml}
|
|
|
171712
171993
|
</body>
|
|
171713
171994
|
</html>
|
|
171714
171995
|
`;
|
|
171715
|
-
|
|
171996
|
+
writeFileSync39(join97(outputDir, "extracted", "page.html"), pageHtml, "utf-8");
|
|
171716
171997
|
} catch (err) {
|
|
171717
171998
|
warnings.push(`page.html write failed: ${err}`);
|
|
171718
171999
|
}
|
|
171719
172000
|
if (visibleTextContent) {
|
|
171720
|
-
|
|
172001
|
+
writeFileSync39(join97(outputDir, "extracted", "visible-text.txt"), visibleTextContent, "utf-8");
|
|
171721
172002
|
}
|
|
171722
172003
|
const geminiCaptions = await captionImagesWithGemini(outputDir, progress, warnings);
|
|
171723
172004
|
progress("design", "Generating asset descriptions...");
|
|
@@ -171726,8 +172007,8 @@ ${extracted.bodyHtml}
|
|
|
171726
172007
|
if (lines.length > 0) {
|
|
171727
172008
|
const hasGeminiKey = !!(process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY);
|
|
171728
172009
|
const header = hasGeminiKey ? "# Asset Descriptions\n\nOne line per file. Read this instead of opening every image individually.\n\nTo find a specific brand or icon, **grep this file for the brand name in the description text** (e.g. `grep -i 'autodesk' asset-descriptions.md`). The Gemini Vision captions identify what's actually in each file \u2014 that's the agent's selector.\n\nThe `logo-<hash>.svg` filename prefix is a cheap structural hint (DOM said this SVG was inside a `<header>`, home-link `<a>`, or had an aria-label matching the page brand). It is NOT a content claim \u2014 many `logo-*` files are nav icons or decorative shapes. Trust the captions, not the filename prefix.\n\n" : "# Asset Descriptions\n\n\u26A0\uFE0F GEMINI_API_KEY not set \u2014 descriptions below are catalog-derived (alt text, headings, section context, filename) instead of Vision-generated. To get richer Vision descriptions on the next capture, set GEMINI_API_KEY (or GOOGLE_API_KEY) and re-run.\n\nThe `logo-<hash>.svg` filename prefix is a structural hint (DOM said this SVG was inside a `<header>`, home-link `<a>`, or had an aria-label matching the page brand). To pick the actual brand logo without Vision, open the `logo-*` candidates in a previewer or rasterize them with `sharp` before referencing \u2014 composing a fake logo ships off-brand in the final video.\n\n";
|
|
171729
|
-
|
|
171730
|
-
|
|
172010
|
+
writeFileSync39(
|
|
172011
|
+
join97(outputDir, "extracted", "asset-descriptions.md"),
|
|
171731
172012
|
header + lines.map((l) => "- " + l).join("\n") + "\n",
|
|
171732
172013
|
"utf-8"
|
|
171733
172014
|
);
|
|
@@ -171742,19 +172023,19 @@ ${extracted.bodyHtml}
|
|
|
171742
172023
|
try {
|
|
171743
172024
|
const { createScrollContactSheet: createScrollContactSheet2, createAssetContactSheet: createAssetContactSheet2, createSvgContactSheet: createSvgContactSheet2 } = await Promise.resolve().then(() => (init_contactSheet(), contactSheet_exports));
|
|
171744
172025
|
const scrollSheets = await createScrollContactSheet2(
|
|
171745
|
-
|
|
171746
|
-
|
|
172026
|
+
join97(outputDir, "screenshots"),
|
|
172027
|
+
join97(outputDir, "screenshots", "contact-sheet.jpg")
|
|
171747
172028
|
);
|
|
171748
172029
|
if (scrollSheets.length > 0)
|
|
171749
172030
|
progress(
|
|
171750
172031
|
"design",
|
|
171751
172032
|
`Screenshot contact sheet generated (${scrollSheets.length} page${scrollSheets.length > 1 ? "s" : ""})`
|
|
171752
172033
|
);
|
|
171753
|
-
const assetsImgDir =
|
|
171754
|
-
if (
|
|
172034
|
+
const assetsImgDir = join97(outputDir, "assets");
|
|
172035
|
+
if (existsSync91(assetsImgDir)) {
|
|
171755
172036
|
const assetSheets = await createAssetContactSheet2(
|
|
171756
172037
|
assetsImgDir,
|
|
171757
|
-
|
|
172038
|
+
join97(outputDir, "assets", "contact-sheet.jpg")
|
|
171758
172039
|
);
|
|
171759
172040
|
if (assetSheets.length > 0)
|
|
171760
172041
|
progress(
|
|
@@ -171762,9 +172043,9 @@ ${extracted.bodyHtml}
|
|
|
171762
172043
|
`Asset contact sheet generated (${assetSheets.length} page${assetSheets.length > 1 ? "s" : ""})`
|
|
171763
172044
|
);
|
|
171764
172045
|
}
|
|
171765
|
-
const svgsDir =
|
|
171766
|
-
const assetsRootDir =
|
|
171767
|
-
const svgOutputPath =
|
|
172046
|
+
const svgsDir = join97(outputDir, "assets", "svgs");
|
|
172047
|
+
const assetsRootDir = join97(outputDir, "assets");
|
|
172048
|
+
const svgOutputPath = existsSync91(svgsDir) ? join97(outputDir, "assets", "svgs", "contact-sheet.jpg") : join97(outputDir, "assets", "contact-sheet-svgs.jpg");
|
|
171768
172049
|
const svgSheets = await createSvgContactSheet2(svgsDir, svgOutputPath, assetsRootDir);
|
|
171769
172050
|
if (svgSheets.length > 0)
|
|
171770
172051
|
progress(
|
|
@@ -171780,7 +172061,7 @@ ${extracted.bodyHtml}
|
|
|
171780
172061
|
animationCatalog,
|
|
171781
172062
|
screenshots.length > 0,
|
|
171782
172063
|
discoveredLotties.length > 0,
|
|
171783
|
-
|
|
172064
|
+
existsSync91(join97(outputDir, "extracted", "shaders.json")),
|
|
171784
172065
|
catalogedAssets,
|
|
171785
172066
|
progress,
|
|
171786
172067
|
warnings,
|
|
@@ -171926,14 +172207,14 @@ var init_capture2 = __esm({
|
|
|
171926
172207
|
let outputName = args.output ?? "capture";
|
|
171927
172208
|
let outputDir = resolve58(outputName);
|
|
171928
172209
|
if (isDefaultOutput) {
|
|
171929
|
-
const { existsSync:
|
|
172210
|
+
const { existsSync: existsSync107 } = await import("fs");
|
|
171930
172211
|
let n2 = 2;
|
|
171931
|
-
while (
|
|
172212
|
+
while (existsSync107(outputDir) && n2 < 100) {
|
|
171932
172213
|
outputName = `capture-${n2}`;
|
|
171933
172214
|
outputDir = resolve58(outputName);
|
|
171934
172215
|
n2++;
|
|
171935
172216
|
}
|
|
171936
|
-
if (
|
|
172217
|
+
if (existsSync107(outputDir)) {
|
|
171937
172218
|
console.error(`./capture-{2..99} are all taken. Pass -o <name> to pick a directory.`);
|
|
171938
172219
|
process.exit(1);
|
|
171939
172220
|
}
|
|
@@ -172018,11 +172299,11 @@ var init_capture2 = __esm({
|
|
|
172018
172299
|
} catch (err) {
|
|
172019
172300
|
const errMsg = normalizeErrorMessage(err);
|
|
172020
172301
|
try {
|
|
172021
|
-
const { mkdirSync: mkdirSync56, writeFileSync:
|
|
172302
|
+
const { mkdirSync: mkdirSync56, writeFileSync: writeFileSync49 } = await import("fs");
|
|
172022
172303
|
mkdirSync56(outputDir, { recursive: true });
|
|
172023
172304
|
const isTimeout = /timeout|timed out/i.test(errMsg);
|
|
172024
172305
|
const reason = isTimeout ? "Page navigation timed out \u2014 the site may be blocking headless browsers or requires authentication." : `Capture failed: ${errMsg}`;
|
|
172025
|
-
|
|
172306
|
+
writeFileSync49(
|
|
172026
172307
|
`${outputDir}/BLOCKED.md`,
|
|
172027
172308
|
`# Capture Failed
|
|
172028
172309
|
|
|
@@ -172065,33 +172346,33 @@ __export(state_exports, {
|
|
|
172065
172346
|
stateFilePath: () => stateFilePath,
|
|
172066
172347
|
writeStackOutputs: () => writeStackOutputs
|
|
172067
172348
|
});
|
|
172068
|
-
import { existsSync as
|
|
172069
|
-
import { dirname as dirname41, join as
|
|
172349
|
+
import { existsSync as existsSync93, mkdirSync as mkdirSync46, readdirSync as readdirSync34, readFileSync as readFileSync63, rmSync as rmSync23, writeFileSync as writeFileSync40 } from "fs";
|
|
172350
|
+
import { dirname as dirname41, join as join98 } from "path";
|
|
172070
172351
|
function stateFilePath(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
|
|
172071
|
-
return
|
|
172352
|
+
return join98(cwd, STATE_DIR_NAME, `${STATE_FILE_PREFIX}${stackName}.json`);
|
|
172072
172353
|
}
|
|
172073
172354
|
function writeStackOutputs(outputs, cwd = process.cwd()) {
|
|
172074
172355
|
const path2 = stateFilePath(outputs.stackName, cwd);
|
|
172075
172356
|
mkdirSync46(dirname41(path2), { recursive: true });
|
|
172076
|
-
|
|
172357
|
+
writeFileSync40(path2, JSON.stringify(outputs, null, 2) + "\n");
|
|
172077
172358
|
return path2;
|
|
172078
172359
|
}
|
|
172079
172360
|
function readStackOutputs(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
|
|
172080
172361
|
const path2 = stateFilePath(stackName, cwd);
|
|
172081
|
-
if (!
|
|
172362
|
+
if (!existsSync93(path2)) return null;
|
|
172082
172363
|
try {
|
|
172083
|
-
return JSON.parse(
|
|
172364
|
+
return JSON.parse(readFileSync63(path2, "utf-8"));
|
|
172084
172365
|
} catch {
|
|
172085
172366
|
return null;
|
|
172086
172367
|
}
|
|
172087
172368
|
}
|
|
172088
172369
|
function deleteStackOutputs(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
|
|
172089
172370
|
const path2 = stateFilePath(stackName, cwd);
|
|
172090
|
-
if (
|
|
172371
|
+
if (existsSync93(path2)) rmSync23(path2);
|
|
172091
172372
|
}
|
|
172092
172373
|
function listStackNames(cwd = process.cwd()) {
|
|
172093
|
-
const dir =
|
|
172094
|
-
if (!
|
|
172374
|
+
const dir = join98(cwd, STATE_DIR_NAME);
|
|
172375
|
+
if (!existsSync93(dir)) return [];
|
|
172095
172376
|
return readdirSync34(dir).filter((f3) => f3.startsWith(STATE_FILE_PREFIX) && f3.endsWith(".json")).map((f3) => f3.slice(STATE_FILE_PREFIX.length, -".json".length));
|
|
172096
172377
|
}
|
|
172097
172378
|
function requireStack(stackName, cwd = process.cwd()) {
|
|
@@ -172120,12 +172401,12 @@ var init_state = __esm({
|
|
|
172120
172401
|
});
|
|
172121
172402
|
|
|
172122
172403
|
// src/commands/lambda/sam.ts
|
|
172123
|
-
import { execFileSync as
|
|
172124
|
-
import { existsSync as
|
|
172125
|
-
import { join as
|
|
172404
|
+
import { execFileSync as execFileSync14, spawnSync as spawnSync5 } from "child_process";
|
|
172405
|
+
import { existsSync as existsSync94 } from "fs";
|
|
172406
|
+
import { join as join99 } from "path";
|
|
172126
172407
|
function assertSamAvailable() {
|
|
172127
172408
|
try {
|
|
172128
|
-
|
|
172409
|
+
execFileSync14("sam", ["--version"], { stdio: "ignore" });
|
|
172129
172410
|
} catch {
|
|
172130
172411
|
throw new Error(
|
|
172131
172412
|
"`sam` CLI not found on PATH. Install AWS SAM CLI from https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html and retry."
|
|
@@ -172134,7 +172415,7 @@ function assertSamAvailable() {
|
|
|
172134
172415
|
}
|
|
172135
172416
|
function assertAwsCliAvailable() {
|
|
172136
172417
|
try {
|
|
172137
|
-
|
|
172418
|
+
execFileSync14("aws", ["--version"], { stdio: "ignore" });
|
|
172138
172419
|
} catch {
|
|
172139
172420
|
throw new Error(
|
|
172140
172421
|
"`aws` CLI not found on PATH. Install from https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html and configure credentials before retrying."
|
|
@@ -172142,8 +172423,8 @@ function assertAwsCliAvailable() {
|
|
|
172142
172423
|
}
|
|
172143
172424
|
}
|
|
172144
172425
|
function locateSamTemplate(repoRoot2) {
|
|
172145
|
-
const candidate =
|
|
172146
|
-
if (!
|
|
172426
|
+
const candidate = join99(repoRoot2, "examples", "aws-lambda", "template.yaml");
|
|
172427
|
+
if (!existsSync94(candidate)) {
|
|
172147
172428
|
throw new Error(
|
|
172148
172429
|
`[lambda] SAM template not found at ${candidate}. If you're running from an installed package, point --sam-template at your local copy of examples/aws-lambda/template.yaml.`
|
|
172149
172430
|
);
|
|
@@ -172176,7 +172457,7 @@ function samDeploy(opts) {
|
|
|
172176
172457
|
if (opts.awsProfile) {
|
|
172177
172458
|
args.push("--profile", opts.awsProfile);
|
|
172178
172459
|
}
|
|
172179
|
-
const samDir =
|
|
172460
|
+
const samDir = join99(opts.repoRoot, "examples", "aws-lambda");
|
|
172180
172461
|
const result = spawnSync5("sam", args, { cwd: samDir, stdio: opts.stdio ?? "inherit" });
|
|
172181
172462
|
if (result.status !== 0) {
|
|
172182
172463
|
throw new Error(`[lambda] sam deploy exited with code ${result.status ?? "unknown"}`);
|
|
@@ -172188,7 +172469,7 @@ function samDelete(opts) {
|
|
|
172188
172469
|
if (opts.awsProfile) {
|
|
172189
172470
|
args.push("--profile", opts.awsProfile);
|
|
172190
172471
|
}
|
|
172191
|
-
const samDir =
|
|
172472
|
+
const samDir = join99(opts.repoRoot, "examples", "aws-lambda");
|
|
172192
172473
|
const result = spawnSync5("sam", args, { cwd: samDir, stdio: opts.stdio ?? "inherit" });
|
|
172193
172474
|
if (result.status !== 0) {
|
|
172194
172475
|
throw new Error(`[lambda] sam delete exited with code ${result.status ?? "unknown"}`);
|
|
@@ -172211,7 +172492,7 @@ function fetchStackOutputs(opts) {
|
|
|
172211
172492
|
if (opts.awsProfile) {
|
|
172212
172493
|
args.unshift("--profile", opts.awsProfile);
|
|
172213
172494
|
}
|
|
172214
|
-
const out =
|
|
172495
|
+
const out = execFileSync14("aws", args, { encoding: "utf-8" });
|
|
172215
172496
|
const parsed = JSON.parse(out);
|
|
172216
172497
|
const byKey = new Map(parsed.map((o) => [o.OutputKey, o.OutputValue]));
|
|
172217
172498
|
const bucketName = byKey.get("RenderBucketName");
|
|
@@ -172238,17 +172519,17 @@ var init_sam = __esm({
|
|
|
172238
172519
|
});
|
|
172239
172520
|
|
|
172240
172521
|
// src/commands/lambda/repoRoot.ts
|
|
172241
|
-
import { existsSync as
|
|
172522
|
+
import { existsSync as existsSync95 } from "fs";
|
|
172242
172523
|
import { dirname as dirname42, resolve as resolve59 } from "path";
|
|
172243
172524
|
import { fileURLToPath as fileURLToPath15 } from "url";
|
|
172244
172525
|
function repoRoot() {
|
|
172245
172526
|
const override = process.env.HYPERFRAMES_REPO_ROOT;
|
|
172246
|
-
if (override &&
|
|
172527
|
+
if (override && existsSync95(resolve59(override, "packages", "aws-lambda", "package.json"))) {
|
|
172247
172528
|
return override;
|
|
172248
172529
|
}
|
|
172249
172530
|
let dir = dirname42(fileURLToPath15(import.meta.url));
|
|
172250
172531
|
for (let depth = 0; depth < 12; depth++) {
|
|
172251
|
-
if (
|
|
172532
|
+
if (existsSync95(resolve59(dir, "packages", "aws-lambda", "package.json"))) {
|
|
172252
172533
|
return dir;
|
|
172253
172534
|
}
|
|
172254
172535
|
const parent = dirname42(dir);
|
|
@@ -172271,8 +172552,8 @@ __export(deploy_exports, {
|
|
|
172271
172552
|
runDeploy: () => runDeploy
|
|
172272
172553
|
});
|
|
172273
172554
|
import { spawnSync as spawnSync6 } from "child_process";
|
|
172274
|
-
import { existsSync as
|
|
172275
|
-
import { join as
|
|
172555
|
+
import { existsSync as existsSync96 } from "fs";
|
|
172556
|
+
import { join as join100, resolve as resolve60 } from "path";
|
|
172276
172557
|
async function runDeploy(args = {}) {
|
|
172277
172558
|
const resolved = {
|
|
172278
172559
|
stackName: args.stackName ?? DEFAULT_STACK_NAME,
|
|
@@ -172289,8 +172570,8 @@ async function runDeploy(args = {}) {
|
|
|
172289
172570
|
console.log(c.dim("\u2192 Building handler ZIP"));
|
|
172290
172571
|
buildHandlerZip(root);
|
|
172291
172572
|
} else {
|
|
172292
|
-
const zip =
|
|
172293
|
-
if (!
|
|
172573
|
+
const zip = join100(root, "packages", "aws-lambda", "dist", "handler.zip");
|
|
172574
|
+
if (!existsSync96(zip)) {
|
|
172294
172575
|
throw new Error(
|
|
172295
172576
|
`--skip-build set but ${zip} does not exist. Run \`bun run --cwd packages/aws-lambda build:zip\` first or drop --skip-build.`
|
|
172296
172577
|
);
|
|
@@ -172333,7 +172614,7 @@ async function runDeploy(args = {}) {
|
|
|
172333
172614
|
function buildHandlerZip(root) {
|
|
172334
172615
|
const result = spawnSync6(
|
|
172335
172616
|
"bun",
|
|
172336
|
-
["run", "--cwd",
|
|
172617
|
+
["run", "--cwd", join100(root, "packages", "aws-lambda"), "build:zip"],
|
|
172337
172618
|
{ stdio: "inherit" }
|
|
172338
172619
|
);
|
|
172339
172620
|
if (result.status !== 0) {
|
|
@@ -172402,14 +172683,14 @@ var init_sites = __esm({
|
|
|
172402
172683
|
});
|
|
172403
172684
|
|
|
172404
172685
|
// src/commands/lambda/_dimensions.ts
|
|
172405
|
-
import { readFileSync as
|
|
172406
|
-
import { join as
|
|
172686
|
+
import { readFileSync as readFileSync64 } from "fs";
|
|
172687
|
+
import { join as join101 } from "path";
|
|
172407
172688
|
function warnOnDimensionMismatch(args) {
|
|
172408
172689
|
if (args.quiet) return;
|
|
172409
172690
|
if (args.outputResolution) return;
|
|
172410
172691
|
let html;
|
|
172411
172692
|
try {
|
|
172412
|
-
html =
|
|
172693
|
+
html = readFileSync64(join101(args.projectDir, "index.html"), "utf-8");
|
|
172413
172694
|
} catch {
|
|
172414
172695
|
return;
|
|
172415
172696
|
}
|
|
@@ -172437,8 +172718,8 @@ var render_exports2 = {};
|
|
|
172437
172718
|
__export(render_exports2, {
|
|
172438
172719
|
runRender: () => runRender
|
|
172439
172720
|
});
|
|
172440
|
-
import { existsSync as
|
|
172441
|
-
import { join as
|
|
172721
|
+
import { existsSync as existsSync97 } from "fs";
|
|
172722
|
+
import { join as join103, resolve as resolvePath2 } from "path";
|
|
172442
172723
|
async function loadSDK2() {
|
|
172443
172724
|
return import("@hyperframes/aws-lambda/sdk");
|
|
172444
172725
|
}
|
|
@@ -172454,8 +172735,8 @@ async function runRender(args) {
|
|
|
172454
172735
|
});
|
|
172455
172736
|
const variables = resolveVariablesArg(args.variables, args.variablesFile);
|
|
172456
172737
|
if (variables && Object.keys(variables).length > 0) {
|
|
172457
|
-
const indexPath2 =
|
|
172458
|
-
if (
|
|
172738
|
+
const indexPath2 = join103(projectDir, "index.html");
|
|
172739
|
+
if (existsSync97(indexPath2)) {
|
|
172459
172740
|
const issues = validateVariablesAgainstProject(indexPath2, variables);
|
|
172460
172741
|
reportVariableIssues(issues, { strict: args.strictVariables ?? false, quiet: args.json });
|
|
172461
172742
|
} else if (args.strictVariables && !args.json) {
|
|
@@ -172579,8 +172860,8 @@ __export(render_batch_exports, {
|
|
|
172579
172860
|
runRenderBatch: () => runRenderBatch,
|
|
172580
172861
|
runWithConcurrencyLimit: () => runWithConcurrencyLimit
|
|
172581
172862
|
});
|
|
172582
|
-
import { existsSync as
|
|
172583
|
-
import { join as
|
|
172863
|
+
import { existsSync as existsSync98, readFileSync as readFileSync65 } from "fs";
|
|
172864
|
+
import { join as join104, resolve as resolvePath3 } from "path";
|
|
172584
172865
|
async function loadSDK3() {
|
|
172585
172866
|
return import("@hyperframes/aws-lambda/sdk");
|
|
172586
172867
|
}
|
|
@@ -172588,7 +172869,7 @@ async function runRenderBatch(args) {
|
|
|
172588
172869
|
const projectDir = resolvePath3(args.projectDir);
|
|
172589
172870
|
const stack = requireStack(args.stackName);
|
|
172590
172871
|
const batchPath = resolvePath3(args.batch);
|
|
172591
|
-
if (!
|
|
172872
|
+
if (!existsSync98(batchPath)) {
|
|
172592
172873
|
errorBox("Batch file not found", `No such file: ${batchPath}`);
|
|
172593
172874
|
process.exit(1);
|
|
172594
172875
|
}
|
|
@@ -172604,7 +172885,7 @@ async function runRenderBatch(args) {
|
|
|
172604
172885
|
outputResolution: args.outputResolution,
|
|
172605
172886
|
quiet: args.json
|
|
172606
172887
|
});
|
|
172607
|
-
const schema = loadProjectVariableSchema(
|
|
172888
|
+
const schema = loadProjectVariableSchema(join104(projectDir, "index.html"));
|
|
172608
172889
|
const strict = args.strictVariables ?? false;
|
|
172609
172890
|
let hadStrictIssue = false;
|
|
172610
172891
|
for (const { entry, lineNumber } of entries2) {
|
|
@@ -172732,7 +173013,7 @@ function makePlaceholderSiteHandle(siteId, bucketName) {
|
|
|
172732
173013
|
};
|
|
172733
173014
|
}
|
|
172734
173015
|
function parseBatchFile(path2) {
|
|
172735
|
-
const raw =
|
|
173016
|
+
const raw = readFileSync65(path2, "utf8");
|
|
172736
173017
|
const lines = raw.split(/\r?\n/);
|
|
172737
173018
|
const out = [];
|
|
172738
173019
|
for (let i2 = 0; i2 < lines.length; i2++) {
|
|
@@ -172924,7 +173205,7 @@ __export(policies_exports, {
|
|
|
172924
173205
|
runPolicies: () => runPolicies,
|
|
172925
173206
|
validatePolicy: () => validatePolicy
|
|
172926
173207
|
});
|
|
172927
|
-
import { readFileSync as
|
|
173208
|
+
import { readFileSync as readFileSync66 } from "fs";
|
|
172928
173209
|
function allRequiredActions() {
|
|
172929
173210
|
const set = /* @__PURE__ */ new Set();
|
|
172930
173211
|
for (const group of Object.values(REQUIRED_ACTIONS)) {
|
|
@@ -173030,7 +173311,7 @@ async function runPolicies(args) {
|
|
|
173030
173311
|
}
|
|
173031
173312
|
}
|
|
173032
173313
|
function validatePolicy(policyPath) {
|
|
173033
|
-
const raw =
|
|
173314
|
+
const raw = readFileSync66(policyPath, "utf-8");
|
|
173034
173315
|
const parsed = JSON.parse(raw);
|
|
173035
173316
|
const statements = Array.isArray(parsed.Statement) ? parsed.Statement : parsed.Statement ? [
|
|
173036
173317
|
parsed.Statement
|
|
@@ -173625,18 +173906,18 @@ __export(cloudrun_exports, {
|
|
|
173625
173906
|
});
|
|
173626
173907
|
import { spawnSync as spawnSync7 } from "child_process";
|
|
173627
173908
|
import { createRequire as createRequire4 } from "module";
|
|
173628
|
-
import { existsSync as
|
|
173629
|
-
import { homedir as
|
|
173630
|
-
import { dirname as dirname43, join as
|
|
173909
|
+
import { existsSync as existsSync99, mkdirSync as mkdirSync47, readFileSync as readFileSync67, writeFileSync as writeFileSync41 } from "fs";
|
|
173910
|
+
import { homedir as homedir16 } from "os";
|
|
173911
|
+
import { dirname as dirname43, join as join105, resolve as resolve61 } from "path";
|
|
173631
173912
|
function stateDir() {
|
|
173632
|
-
return
|
|
173913
|
+
return join105(homedir16(), ".hyperframes");
|
|
173633
173914
|
}
|
|
173634
173915
|
function statePath() {
|
|
173635
|
-
return
|
|
173916
|
+
return join105(stateDir(), "cloudrun-state.json");
|
|
173636
173917
|
}
|
|
173637
173918
|
function writeState(state) {
|
|
173638
173919
|
mkdirSync47(stateDir(), { recursive: true });
|
|
173639
|
-
|
|
173920
|
+
writeFileSync41(statePath(), JSON.stringify(state, null, 2));
|
|
173640
173921
|
}
|
|
173641
173922
|
function readState(args) {
|
|
173642
173923
|
const overrides = {
|
|
@@ -173644,9 +173925,9 @@ function readState(args) {
|
|
|
173644
173925
|
region: args.region
|
|
173645
173926
|
};
|
|
173646
173927
|
let base2 = {};
|
|
173647
|
-
if (
|
|
173928
|
+
if (existsSync99(statePath())) {
|
|
173648
173929
|
try {
|
|
173649
|
-
base2 = JSON.parse(
|
|
173930
|
+
base2 = JSON.parse(readFileSync67(statePath(), "utf8"));
|
|
173650
173931
|
} catch {
|
|
173651
173932
|
}
|
|
173652
173933
|
}
|
|
@@ -173666,7 +173947,7 @@ function stripUndefined2(o) {
|
|
|
173666
173947
|
function terraformDir() {
|
|
173667
173948
|
const require3 = createRequire4(import.meta.url);
|
|
173668
173949
|
const pkgJson = require3.resolve("@hyperframes/gcp-cloud-run/package.json");
|
|
173669
|
-
return
|
|
173950
|
+
return join105(dirname43(pkgJson), "terraform");
|
|
173670
173951
|
}
|
|
173671
173952
|
function run(cmd, cmdArgs, opts = {}) {
|
|
173672
173953
|
const res = spawnSync7(cmd, cmdArgs, { stdio: "inherit", cwd: opts.cwd });
|
|
@@ -173793,13 +174074,13 @@ function machineVars(args, project, region, image) {
|
|
|
173793
174074
|
}
|
|
173794
174075
|
function findRepoRoot(tfDir) {
|
|
173795
174076
|
const candidate = resolve61(tfDir, "..", "..", "..");
|
|
173796
|
-
if (
|
|
174077
|
+
if (existsSync99(join105(candidate, "packages", "gcp-cloud-run", "Dockerfile"))) return candidate;
|
|
173797
174078
|
return null;
|
|
173798
174079
|
}
|
|
173799
174080
|
function writeCloudBuildConfig(image) {
|
|
173800
|
-
const cfgPath =
|
|
174081
|
+
const cfgPath = join105(stateDir(), "cloudrun-cloudbuild.yaml");
|
|
173801
174082
|
mkdirSync47(stateDir(), { recursive: true });
|
|
173802
|
-
|
|
174083
|
+
writeFileSync41(
|
|
173803
174084
|
cfgPath,
|
|
173804
174085
|
[
|
|
173805
174086
|
"steps:",
|
|
@@ -173944,7 +174225,7 @@ async function runRenderBatch2(args) {
|
|
|
173944
174225
|
console.error(`[cloudrun render-batch] --fps must be 24, 30, or 60; got ${fps}.`);
|
|
173945
174226
|
process.exit(1);
|
|
173946
174227
|
}
|
|
173947
|
-
if (!
|
|
174228
|
+
if (!existsSync99(resolve61(batchPath))) {
|
|
173948
174229
|
console.error(`[cloudrun render-batch] batch file not found: ${batchPath}`);
|
|
173949
174230
|
process.exit(1);
|
|
173950
174231
|
}
|
|
@@ -174011,7 +174292,7 @@ async function runRenderBatch2(args) {
|
|
|
174011
174292
|
if (failed.length > 0) process.exit(1);
|
|
174012
174293
|
}
|
|
174013
174294
|
function parseBatchFile2(path2) {
|
|
174014
|
-
const lines =
|
|
174295
|
+
const lines = readFileSync67(path2, "utf8").split(/\r?\n/);
|
|
174015
174296
|
const entries2 = [];
|
|
174016
174297
|
lines.forEach((line2, idx) => {
|
|
174017
174298
|
const trimmed = line2.trim();
|
|
@@ -174035,7 +174316,7 @@ function parseBatchFile2(path2) {
|
|
|
174035
174316
|
}
|
|
174036
174317
|
function runDestroy2(args) {
|
|
174037
174318
|
const tfDir = terraformDir();
|
|
174038
|
-
const state =
|
|
174319
|
+
const state = existsSync99(statePath()) ? JSON.parse(readFileSync67(statePath(), "utf8")) : {};
|
|
174039
174320
|
const project = args.project ?? state.projectId;
|
|
174040
174321
|
const region = args.region ?? state.region ?? "us-central1";
|
|
174041
174322
|
const image = args.image ?? "unused:latest";
|
|
@@ -174083,8 +174364,8 @@ function resolveAndValidateVariables(args, projectDir) {
|
|
|
174083
174364
|
args["variables-file"]
|
|
174084
174365
|
);
|
|
174085
174366
|
if (variables && Object.keys(variables).length > 0) {
|
|
174086
|
-
const indexPath2 =
|
|
174087
|
-
if (
|
|
174367
|
+
const indexPath2 = join105(projectDir, "index.html");
|
|
174368
|
+
if (existsSync99(indexPath2)) {
|
|
174088
174369
|
const issues = validateVariablesAgainstProject(indexPath2, variables);
|
|
174089
174370
|
reportVariableIssues(issues, {
|
|
174090
174371
|
strict: Boolean(args["strict-variables"]),
|
|
@@ -174314,7 +174595,7 @@ ${HELP2}`);
|
|
|
174314
174595
|
});
|
|
174315
174596
|
|
|
174316
174597
|
// src/cloud/detectAspectRatio.ts
|
|
174317
|
-
import { readFileSync as
|
|
174598
|
+
import { readFileSync as readFileSync68 } from "fs";
|
|
174318
174599
|
function extractAttributeNumber(tag, re2) {
|
|
174319
174600
|
const match = tag.match(re2);
|
|
174320
174601
|
if (!match) return null;
|
|
@@ -174326,7 +174607,7 @@ function extractAttributeNumber(tag, re2) {
|
|
|
174326
174607
|
function detectAspectRatioFromHtml(entryHtmlPath) {
|
|
174327
174608
|
let html;
|
|
174328
174609
|
try {
|
|
174329
|
-
html =
|
|
174610
|
+
html = readFileSync68(entryHtmlPath, "utf-8");
|
|
174330
174611
|
} catch (err) {
|
|
174331
174612
|
return { kind: "read-error", error: normalizeErrorMessage(err) };
|
|
174332
174613
|
}
|
|
@@ -175097,15 +175378,15 @@ var init_browser2 = __esm({
|
|
|
175097
175378
|
});
|
|
175098
175379
|
|
|
175099
175380
|
// src/auth/paths.ts
|
|
175100
|
-
import { homedir as
|
|
175101
|
-
import { join as
|
|
175381
|
+
import { homedir as homedir17 } from "os";
|
|
175382
|
+
import { join as join106 } from "path";
|
|
175102
175383
|
function configDir() {
|
|
175103
175384
|
const override = process.env["HEYGEN_CONFIG_DIR"];
|
|
175104
175385
|
if (override && override.length > 0) return override;
|
|
175105
|
-
return
|
|
175386
|
+
return join106(homedir17(), ".heygen");
|
|
175106
175387
|
}
|
|
175107
175388
|
function credentialPath() {
|
|
175108
|
-
return
|
|
175389
|
+
return join106(configDir(), CREDENTIAL_FILENAME);
|
|
175109
175390
|
}
|
|
175110
175391
|
var CREDENTIAL_FILENAME;
|
|
175111
175392
|
var init_paths2 = __esm({
|
|
@@ -175982,7 +176263,7 @@ __export(render_exports3, {
|
|
|
175982
176263
|
validateResolutionFormatCombo: () => validateResolutionFormatCombo
|
|
175983
176264
|
});
|
|
175984
176265
|
import { isAbsolute as isAbsolute15, resolve as resolvePath4 } from "path";
|
|
175985
|
-
import { existsSync as
|
|
176266
|
+
import { existsSync as existsSync100 } from "fs";
|
|
175986
176267
|
function parsePollIntervalMs(raw) {
|
|
175987
176268
|
const n2 = parseNumericFlag(raw, { flag: "--poll-interval", min: 1 });
|
|
175988
176269
|
return n2 === void 0 ? DEFAULT_POLL_INTERVAL_MS : Math.round(n2 * 1e3);
|
|
@@ -176024,7 +176305,7 @@ function resolveAspectRatioForSubmit(project, compositionArg, explicit, asJson)
|
|
|
176024
176305
|
const dir = project.dir ?? ".";
|
|
176025
176306
|
const entryRelative = compositionArg ?? "index.html";
|
|
176026
176307
|
const entryPath = resolvePath4(dir, entryRelative);
|
|
176027
|
-
if (!
|
|
176308
|
+
if (!existsSync100(entryPath)) {
|
|
176028
176309
|
errorBox(
|
|
176029
176310
|
"Composition not found",
|
|
176030
176311
|
`Entry file "${entryRelative}" does not exist in ${dir}.`,
|
|
@@ -176929,6 +177210,7 @@ __export(telemetry_exports2, {
|
|
|
176929
177210
|
getFreeDiskMb: () => getFreeDiskMb,
|
|
176930
177211
|
getShmSizeMb: () => getShmSizeMb,
|
|
176931
177212
|
getSystemMeta: () => getSystemMeta,
|
|
177213
|
+
identifyUser: () => identifyUser,
|
|
176932
177214
|
incrementCommandCount: () => incrementCommandCount,
|
|
176933
177215
|
readConfig: () => readConfig,
|
|
176934
177216
|
shouldTrack: () => shouldTrack,
|
|
@@ -176978,29 +177260,35 @@ async function runOAuthLogin() {
|
|
|
176978
177260
|
await reportIdentity();
|
|
176979
177261
|
}
|
|
176980
177262
|
async function reportIdentity() {
|
|
176981
|
-
const { trackAuthLoginCompleted: trackAuthLoginCompleted2, trackAuthLoginFailed: trackAuthLoginFailed2 } = await Promise.resolve().then(() => (init_telemetry2(), telemetry_exports2));
|
|
177263
|
+
const { trackAuthLoginCompleted: trackAuthLoginCompleted2, trackAuthLoginFailed: trackAuthLoginFailed2, identifyUser: identifyUser2 } = await Promise.resolve().then(() => (init_telemetry2(), telemetry_exports2));
|
|
176982
177264
|
const credential = await tryResolveCredential();
|
|
176983
177265
|
if (!credential) {
|
|
176984
177266
|
trackAuthLoginFailed2("oauth", "no_credential");
|
|
176985
177267
|
console.error(c.warn("Sign-in completed but no credential was persisted."));
|
|
176986
177268
|
process.exit(1);
|
|
176987
177269
|
}
|
|
176988
|
-
trackAuthLoginCompleted2("oauth");
|
|
176989
177270
|
const client = new AuthClient({
|
|
176990
177271
|
onUnauthenticatedRefresh: async (rt2) => await refreshTokens(rt2)
|
|
176991
177272
|
});
|
|
176992
177273
|
try {
|
|
176993
177274
|
const user = await client.getCurrentUser(credential);
|
|
176994
177275
|
await persistUserInfo(user);
|
|
177276
|
+
const id = identityKey(user);
|
|
177277
|
+
if (id) identifyUser2(id);
|
|
177278
|
+
trackAuthLoginCompleted2("oauth", id);
|
|
176995
177279
|
const identity = userDisplayName(toStoredUserInfo(user)) ?? "(unknown user)";
|
|
176996
177280
|
console.log(c.success(`\u2713 Signed in as ${identity}.`));
|
|
176997
177281
|
} catch (err) {
|
|
176998
177282
|
await clearUserInfoBestEffort();
|
|
177283
|
+
trackAuthLoginCompleted2("oauth");
|
|
176999
177284
|
console.error(
|
|
177000
177285
|
c.warn(`Signed in. Identity check failed (transient): ${err.message}`)
|
|
177001
177286
|
);
|
|
177002
177287
|
}
|
|
177003
177288
|
}
|
|
177289
|
+
function identityKey(user) {
|
|
177290
|
+
return user.email ?? user.username;
|
|
177291
|
+
}
|
|
177004
177292
|
function toStoredUserInfo(user) {
|
|
177005
177293
|
const out = {};
|
|
177006
177294
|
if (user.email) out.email = user.email;
|
|
@@ -177029,7 +177317,7 @@ async function clearUserInfoBestEffort() {
|
|
|
177029
177317
|
}
|
|
177030
177318
|
}
|
|
177031
177319
|
async function runApiKeyLogin(inlineKey) {
|
|
177032
|
-
const { trackAuthLoginStarted: trackAuthLoginStarted2, trackAuthLoginCompleted: trackAuthLoginCompleted2, trackAuthLoginFailed: trackAuthLoginFailed2 } = await Promise.resolve().then(() => (init_telemetry2(), telemetry_exports2));
|
|
177320
|
+
const { trackAuthLoginStarted: trackAuthLoginStarted2, trackAuthLoginCompleted: trackAuthLoginCompleted2, trackAuthLoginFailed: trackAuthLoginFailed2, identifyUser: identifyUser2 } = await Promise.resolve().then(() => (init_telemetry2(), telemetry_exports2));
|
|
177033
177321
|
trackAuthLoginStarted2("api_key");
|
|
177034
177322
|
let key2;
|
|
177035
177323
|
try {
|
|
@@ -177057,13 +177345,15 @@ async function runApiKeyLogin(inlineKey) {
|
|
|
177057
177345
|
const previous = await snapshotStore();
|
|
177058
177346
|
const next = { ...previous, api_key: key2 };
|
|
177059
177347
|
await writeStore(next);
|
|
177060
|
-
const
|
|
177061
|
-
if (!
|
|
177348
|
+
const user = await verifyAndReport(key2);
|
|
177349
|
+
if (!user) {
|
|
177062
177350
|
trackAuthLoginFailed2("api_key", "rejected");
|
|
177063
177351
|
await rollback(previous);
|
|
177064
177352
|
process.exit(1);
|
|
177065
177353
|
}
|
|
177066
|
-
|
|
177354
|
+
const id = identityKey(user);
|
|
177355
|
+
if (id) identifyUser2(id);
|
|
177356
|
+
trackAuthLoginCompleted2("api_key", id);
|
|
177067
177357
|
}
|
|
177068
177358
|
async function snapshotStore() {
|
|
177069
177359
|
try {
|
|
@@ -177093,7 +177383,7 @@ async function verifyAndReport(key2) {
|
|
|
177093
177383
|
await persistUserInfo(user);
|
|
177094
177384
|
const identity = userDisplayName(toStoredUserInfo(user)) ?? "(unknown user)";
|
|
177095
177385
|
console.log(c.success(`\u2713 API key saved. Authenticated as ${identity}.`));
|
|
177096
|
-
return
|
|
177386
|
+
return user;
|
|
177097
177387
|
} catch (err) {
|
|
177098
177388
|
if (isAuthError(err) && err.code === "UNAUTHENTICATED") {
|
|
177099
177389
|
console.error(
|
|
@@ -177101,7 +177391,7 @@ async function verifyAndReport(key2) {
|
|
|
177101
177391
|
${c.dim(err.message)}
|
|
177102
177392
|
Run ${c.accent("hyperframes auth login --api-key")} again with a valid key.`
|
|
177103
177393
|
);
|
|
177104
|
-
return
|
|
177394
|
+
return null;
|
|
177105
177395
|
}
|
|
177106
177396
|
throw err;
|
|
177107
177397
|
}
|
|
@@ -177189,11 +177479,11 @@ function offlineEngineLines(engines) {
|
|
|
177189
177479
|
}
|
|
177190
177480
|
const lines = ["Prefer offline? Workflows will use these local engines:"];
|
|
177191
177481
|
for (const e3 of engines) {
|
|
177192
|
-
const
|
|
177482
|
+
const cap2 = e3.capability.padEnd(5);
|
|
177193
177483
|
if (e3.ready) {
|
|
177194
|
-
lines.push(` ${
|
|
177484
|
+
lines.push(` ${cap2} \u2192 ${e3.label} ${c.success("\u2713 ready")}`);
|
|
177195
177485
|
} else {
|
|
177196
|
-
lines.push(` ${
|
|
177486
|
+
lines.push(` ${cap2} \u2192 ${e3.label} ${c.warn("\u26A0 deps missing")}`);
|
|
177197
177487
|
if (e3.setupHint) lines.push(` ${c.dim(e3.setupHint)}`);
|
|
177198
177488
|
}
|
|
177199
177489
|
}
|
|
@@ -177404,8 +177694,8 @@ function pushCreditRow(rows, label2, credit) {
|
|
|
177404
177694
|
function pushUsageRow(rows, user) {
|
|
177405
177695
|
const current2 = user.usage_based?.spending_current_usd;
|
|
177406
177696
|
if (current2 === void 0) return;
|
|
177407
|
-
const
|
|
177408
|
-
const capPart =
|
|
177697
|
+
const cap2 = user.usage_based?.spending_cap_usd;
|
|
177698
|
+
const capPart = cap2 !== void 0 ? ` / $${cap2}` : "";
|
|
177409
177699
|
rows.push(["Usage: ", `$${current2}${capPart}`]);
|
|
177410
177700
|
}
|
|
177411
177701
|
var status_default, SOURCE_LABELS;
|
|
@@ -177807,7 +178097,7 @@ var init_parseFigmaRef = __esm({
|
|
|
177807
178097
|
});
|
|
177808
178098
|
|
|
177809
178099
|
// ../core/dist/figma/freeze.js
|
|
177810
|
-
import { copyFileSync as copyFileSync8, mkdirSync as mkdirSync49, rmSync as
|
|
178100
|
+
import { copyFileSync as copyFileSync8, mkdirSync as mkdirSync49, rmSync as rmSync24, statSync as statSync29, writeFileSync as writeFileSync43 } from "fs";
|
|
177811
178101
|
import { dirname as dirname46 } from "path";
|
|
177812
178102
|
function exceedsFreezeCap(byteLength) {
|
|
177813
178103
|
return byteLength > MAX_FREEZE_BYTES;
|
|
@@ -177819,12 +178109,12 @@ function freezeBytes(bytes, destPath) {
|
|
|
177819
178109
|
throw new Error(`freeze failed: ${bytes.length} bytes exceeds ${MAX_FREEZE_BYTES} cap`);
|
|
177820
178110
|
mkdirSync49(dirname46(destPath), { recursive: true });
|
|
177821
178111
|
try {
|
|
177822
|
-
|
|
178112
|
+
writeFileSync43(destPath, bytes, { flag: "wx" });
|
|
177823
178113
|
} catch (err) {
|
|
177824
178114
|
if (err.code !== "EEXIST")
|
|
177825
178115
|
throw err;
|
|
177826
|
-
|
|
177827
|
-
|
|
178116
|
+
rmSync24(destPath);
|
|
178117
|
+
writeFileSync43(destPath, bytes, { flag: "wx" });
|
|
177828
178118
|
}
|
|
177829
178119
|
return bytes.length;
|
|
177830
178120
|
}
|
|
@@ -177837,12 +178127,12 @@ var init_freeze = __esm({
|
|
|
177837
178127
|
});
|
|
177838
178128
|
|
|
177839
178129
|
// ../core/dist/figma/jsonl.js
|
|
177840
|
-
import { existsSync as
|
|
178130
|
+
import { existsSync as existsSync101, readFileSync as readFileSync69 } from "fs";
|
|
177841
178131
|
function readJsonlValues(path2) {
|
|
177842
|
-
if (!
|
|
178132
|
+
if (!existsSync101(path2))
|
|
177843
178133
|
return [];
|
|
177844
178134
|
const out = [];
|
|
177845
|
-
for (const line2 of
|
|
178135
|
+
for (const line2 of readFileSync69(path2, "utf8").split(/\r?\n/)) {
|
|
177846
178136
|
const trimmed = line2.trim();
|
|
177847
178137
|
if (trimmed.length === 0)
|
|
177848
178138
|
continue;
|
|
@@ -177861,16 +178151,16 @@ var init_jsonl = __esm({
|
|
|
177861
178151
|
});
|
|
177862
178152
|
|
|
177863
178153
|
// ../core/dist/figma/manifest.js
|
|
177864
|
-
import { appendFileSync as appendFileSync2, existsSync as
|
|
177865
|
-
import { join as
|
|
178154
|
+
import { appendFileSync as appendFileSync2, existsSync as existsSync103, mkdirSync as mkdirSync50, readFileSync as readFileSync70, writeFileSync as writeFileSync44 } from "fs";
|
|
178155
|
+
import { join as join107 } from "path";
|
|
177866
178156
|
function mediaDir(projectDir) {
|
|
177867
|
-
return
|
|
178157
|
+
return join107(projectDir, ".media");
|
|
177868
178158
|
}
|
|
177869
178159
|
function manifestPath(projectDir) {
|
|
177870
|
-
return
|
|
178160
|
+
return join107(mediaDir(projectDir), MANIFEST_FILE2);
|
|
177871
178161
|
}
|
|
177872
178162
|
function typeDirPath(projectDir, type) {
|
|
177873
|
-
return
|
|
178163
|
+
return join107(mediaDir(projectDir), TYPE_DIRS[type]);
|
|
177874
178164
|
}
|
|
177875
178165
|
function isFigmaManifestRecord(value) {
|
|
177876
178166
|
if (typeof value !== "object" || value === null)
|
|
@@ -177902,7 +178192,7 @@ function findAllByFigmaNode(projectDir, fileKey, nodeId) {
|
|
|
177902
178192
|
}
|
|
177903
178193
|
function updateRecord(projectDir, record) {
|
|
177904
178194
|
const p2 = manifestPath(projectDir);
|
|
177905
|
-
const lines =
|
|
178195
|
+
const lines = readFileSync70(p2, "utf8").split(/\r?\n/);
|
|
177906
178196
|
const out = lines.map((line2) => {
|
|
177907
178197
|
const trimmed = line2.trim();
|
|
177908
178198
|
if (trimmed.length === 0)
|
|
@@ -177915,15 +178205,15 @@ function updateRecord(projectDir, record) {
|
|
|
177915
178205
|
}
|
|
177916
178206
|
return line2;
|
|
177917
178207
|
});
|
|
177918
|
-
|
|
178208
|
+
writeFileSync44(p2, out.join("\n"));
|
|
177919
178209
|
}
|
|
177920
178210
|
function nextId(projectDir, type) {
|
|
177921
178211
|
const re2 = new RegExp(`^${type}_(\\d+)$`);
|
|
177922
178212
|
let max = 0;
|
|
177923
178213
|
const p2 = manifestPath(projectDir);
|
|
177924
|
-
if (!
|
|
178214
|
+
if (!existsSync103(p2))
|
|
177925
178215
|
return `${type}_001`;
|
|
177926
|
-
for (const line2 of
|
|
178216
|
+
for (const line2 of readFileSync70(p2, "utf8").split(/\r?\n/)) {
|
|
177927
178217
|
const trimmed = line2.trim();
|
|
177928
178218
|
if (trimmed.length === 0)
|
|
177929
178219
|
continue;
|
|
@@ -177956,13 +178246,13 @@ var init_manifest = __esm({
|
|
|
177956
178246
|
});
|
|
177957
178247
|
|
|
177958
178248
|
// ../core/dist/figma/mediaIndex.js
|
|
177959
|
-
import { mkdirSync as mkdirSync51, writeFileSync as
|
|
177960
|
-
import { dirname as dirname47, join as
|
|
178249
|
+
import { mkdirSync as mkdirSync51, writeFileSync as writeFileSync45 } from "fs";
|
|
178250
|
+
import { dirname as dirname47, join as join108 } from "path";
|
|
177961
178251
|
function isRow(value) {
|
|
177962
178252
|
return typeof value === "object" && value !== null;
|
|
177963
178253
|
}
|
|
177964
178254
|
function indexPath(projectDir) {
|
|
177965
|
-
return
|
|
178255
|
+
return join108(mediaDir(projectDir), "index.md");
|
|
177966
178256
|
}
|
|
177967
178257
|
function pad(str, len2) {
|
|
177968
178258
|
return String(str ?? "").padEnd(len2);
|
|
@@ -178008,7 +178298,7 @@ function regenerateIndex(projectDir) {
|
|
|
178008
178298
|
const content = generateIndexContent(records);
|
|
178009
178299
|
const p2 = indexPath(projectDir);
|
|
178010
178300
|
mkdirSync51(dirname47(p2), { recursive: true });
|
|
178011
|
-
|
|
178301
|
+
writeFileSync45(p2, content);
|
|
178012
178302
|
return content;
|
|
178013
178303
|
}
|
|
178014
178304
|
var init_mediaIndex = __esm({
|
|
@@ -178073,10 +178363,10 @@ var init_sanitizeSvg = __esm({
|
|
|
178073
178363
|
});
|
|
178074
178364
|
|
|
178075
178365
|
// ../core/dist/figma/bindings.js
|
|
178076
|
-
import { appendFileSync as appendFileSync3, mkdirSync as mkdirSync53, writeFileSync as
|
|
178077
|
-
import { join as
|
|
178366
|
+
import { appendFileSync as appendFileSync3, mkdirSync as mkdirSync53, writeFileSync as writeFileSync46 } from "fs";
|
|
178367
|
+
import { join as join109 } from "path";
|
|
178078
178368
|
function bindingsPath(projectDir) {
|
|
178079
|
-
return
|
|
178369
|
+
return join109(mediaDir(projectDir), BINDINGS_FILE);
|
|
178080
178370
|
}
|
|
178081
178371
|
function isRecord6(value) {
|
|
178082
178372
|
return typeof value === "object" && value !== null;
|
|
@@ -178095,7 +178385,7 @@ function upsertBindings(projectDir, records) {
|
|
|
178095
178385
|
const survivors = readLines(projectDir).filter((line2) => !(isBindingRecord(line2) && incoming.has(line2.figmaId)));
|
|
178096
178386
|
mkdirSync53(mediaDir(projectDir), { recursive: true });
|
|
178097
178387
|
const lines = [...survivors, ...records].map((r2) => JSON.stringify(r2)).join("\n");
|
|
178098
|
-
|
|
178388
|
+
writeFileSync46(bindingsPath(projectDir), lines.length > 0 ? lines + "\n" : "");
|
|
178099
178389
|
}
|
|
178100
178390
|
var BINDINGS_FILE;
|
|
178101
178391
|
var init_bindings = __esm({
|
|
@@ -178643,8 +178933,8 @@ __export(asset_exports, {
|
|
|
178643
178933
|
default: () => asset_default,
|
|
178644
178934
|
runAssetImport: () => runAssetImport
|
|
178645
178935
|
});
|
|
178646
|
-
import { existsSync as
|
|
178647
|
-
import { join as
|
|
178936
|
+
import { existsSync as existsSync104 } from "fs";
|
|
178937
|
+
import { join as join110, relative as relative16 } from "path";
|
|
178648
178938
|
async function runAssetImport(refInput, opts, deps) {
|
|
178649
178939
|
const ref2 = parseFigmaRef(refInput);
|
|
178650
178940
|
if (!ref2.nodeId)
|
|
@@ -178655,7 +178945,7 @@ async function runAssetImport(refInput, opts, deps) {
|
|
|
178655
178945
|
const description = normalizeMeta(opts.description);
|
|
178656
178946
|
const entity = normalizeMeta(opts.entity);
|
|
178657
178947
|
const existing = findAllByFigmaNode(deps.projectDir, ref2.fileKey, ref2.nodeId).find(
|
|
178658
|
-
(r2) => r2.provenance.format === opts.format && (r2.provenance.scale ?? 1) === (opts.scale ?? 1) && r2.provenance.version === version2 &&
|
|
178948
|
+
(r2) => r2.provenance.format === opts.format && (r2.provenance.scale ?? 1) === (opts.scale ?? 1) && r2.provenance.version === version2 && existsSync104(join110(deps.projectDir, r2.path))
|
|
178659
178949
|
);
|
|
178660
178950
|
if (existing) {
|
|
178661
178951
|
let record2 = existing;
|
|
@@ -178679,7 +178969,7 @@ async function runAssetImport(refInput, opts, deps) {
|
|
|
178679
178969
|
bytes = new TextEncoder().encode(sanitizeSvg(new TextDecoder().decode(bytes)));
|
|
178680
178970
|
}
|
|
178681
178971
|
const id = nextId(deps.projectDir, "image");
|
|
178682
|
-
const destAbs =
|
|
178972
|
+
const destAbs = join110(typeDirPath(deps.projectDir, "image"), `${id}.${rendered.ext}`);
|
|
178683
178973
|
freezeBytes(bytes, destAbs);
|
|
178684
178974
|
const record = {
|
|
178685
178975
|
id,
|
|
@@ -178778,12 +179068,12 @@ __export(tokens_exports, {
|
|
|
178778
179068
|
default: () => tokens_default,
|
|
178779
179069
|
runTokensImport: () => runTokensImport
|
|
178780
179070
|
});
|
|
178781
|
-
import { writeFileSync as
|
|
178782
|
-
import { join as
|
|
179071
|
+
import { writeFileSync as writeFileSync47 } from "fs";
|
|
179072
|
+
import { join as join111 } from "path";
|
|
178783
179073
|
async function runTokensImport(refInput, deps) {
|
|
178784
179074
|
const { fileKey } = parseFigmaRef(refInput);
|
|
178785
179075
|
const { version: version2 } = await deps.client.fileVersion(fileKey);
|
|
178786
|
-
const sidecarPath =
|
|
179076
|
+
const sidecarPath = join111(deps.projectDir, "figma-tokens.json");
|
|
178787
179077
|
let vars = null;
|
|
178788
179078
|
try {
|
|
178789
179079
|
vars = await deps.client.variables(fileKey);
|
|
@@ -178793,7 +179083,7 @@ async function runTokensImport(refInput, deps) {
|
|
|
178793
179083
|
if (vars !== null) {
|
|
178794
179084
|
const out = tokensToVariables(vars, { fileKey, version: version2 });
|
|
178795
179085
|
upsertBindings(deps.projectDir, out.bindings);
|
|
178796
|
-
|
|
179086
|
+
writeFileSync47(sidecarPath, JSON.stringify(out.sidecar, null, 2) + "\n");
|
|
178797
179087
|
return { mode: "variables", entries: out.entries, sidecarPath };
|
|
178798
179088
|
}
|
|
178799
179089
|
const styles = await deps.client.styles(fileKey);
|
|
@@ -178807,7 +179097,7 @@ async function runTokensImport(refInput, deps) {
|
|
|
178807
179097
|
value: null
|
|
178808
179098
|
}))
|
|
178809
179099
|
};
|
|
178810
|
-
|
|
179100
|
+
writeFileSync47(sidecarPath, JSON.stringify(sidecar, null, 2) + "\n");
|
|
178811
179101
|
return { mode: "styles", entries: [], sidecarPath };
|
|
178812
179102
|
}
|
|
178813
179103
|
var tokens_default;
|
|
@@ -178857,8 +179147,8 @@ __export(component_exports, {
|
|
|
178857
179147
|
default: () => component_default,
|
|
178858
179148
|
runComponentImport: () => runComponentImport
|
|
178859
179149
|
});
|
|
178860
|
-
import { existsSync as
|
|
178861
|
-
import { join as
|
|
179150
|
+
import { existsSync as existsSync105, mkdirSync as mkdirSync54, writeFileSync as writeFileSync48 } from "fs";
|
|
179151
|
+
import { join as join113, relative as relative17 } from "path";
|
|
178862
179152
|
function escapeAttr2(value) {
|
|
178863
179153
|
return value.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
178864
179154
|
}
|
|
@@ -178869,22 +179159,38 @@ async function runComponentImport(refInput, deps) {
|
|
|
178869
179159
|
const bindings = resolveBindings(tree, readBindings(deps.projectDir));
|
|
178870
179160
|
const mapped = nodeToHtml(tree, bindings);
|
|
178871
179161
|
const name = slugify2(tree.name);
|
|
178872
|
-
const componentDir =
|
|
178873
|
-
if (
|
|
179162
|
+
const componentDir = join113(deps.projectDir, "compositions", "components", name);
|
|
179163
|
+
if (existsSync105(componentDir))
|
|
178874
179164
|
console.warn(
|
|
178875
179165
|
`component dir compositions/components/${name} already exists \u2014 overwriting (rename the figma frame for a separate import)`
|
|
178876
179166
|
);
|
|
178877
179167
|
mkdirSync54(componentDir, { recursive: true });
|
|
178878
179168
|
let html = mapped.html;
|
|
178879
179169
|
const frozenAssets = [];
|
|
179170
|
+
const failedRasterize = [];
|
|
178880
179171
|
for (const req of mapped.rasterize) {
|
|
178881
|
-
|
|
178882
|
-
|
|
178883
|
-
{
|
|
178884
|
-
|
|
178885
|
-
|
|
179172
|
+
let asset = null;
|
|
179173
|
+
for (const format of ["svg", "png"]) {
|
|
179174
|
+
try {
|
|
179175
|
+
asset = await runAssetImport(
|
|
179176
|
+
`${ref2.fileKey}:${req.nodeId}`,
|
|
179177
|
+
{ format, description: req.name },
|
|
179178
|
+
{ projectDir: deps.projectDir, client: deps.client, download: deps.download }
|
|
179179
|
+
);
|
|
179180
|
+
break;
|
|
179181
|
+
} catch (err) {
|
|
179182
|
+
if (!(err instanceof FigmaClientError) || err.code !== "RENDER_FAILED") throw err;
|
|
179183
|
+
}
|
|
179184
|
+
}
|
|
179185
|
+
if (asset === null) {
|
|
179186
|
+
failedRasterize.push(req.nodeId);
|
|
179187
|
+
console.warn(
|
|
179188
|
+
`could not render node ${req.nodeId} ("${req.name}") as svg or png \u2014 leaving its placeholder without src`
|
|
179189
|
+
);
|
|
179190
|
+
continue;
|
|
179191
|
+
}
|
|
178886
179192
|
frozenAssets.push(asset.record.path);
|
|
178887
|
-
const srcRel = relative17(componentDir,
|
|
179193
|
+
const srcRel = relative17(componentDir, join113(deps.projectDir, asset.record.path)).replaceAll(
|
|
178888
179194
|
"\\",
|
|
178889
179195
|
"/"
|
|
178890
179196
|
);
|
|
@@ -178894,8 +179200,8 @@ async function runComponentImport(refInput, deps) {
|
|
|
178894
179200
|
`data-figma-rasterize="${emittedId}" src="${escapeAttr2(srcRel)}" `
|
|
178895
179201
|
);
|
|
178896
179202
|
}
|
|
178897
|
-
const htmlFile =
|
|
178898
|
-
|
|
179203
|
+
const htmlFile = join113(componentDir, `${name}.html`);
|
|
179204
|
+
writeFileSync48(htmlFile, html + "\n");
|
|
178899
179205
|
const registryItem = {
|
|
178900
179206
|
name,
|
|
178901
179207
|
type: "hyperframes:component",
|
|
@@ -178915,15 +179221,16 @@ async function runComponentImport(refInput, deps) {
|
|
|
178915
179221
|
}))
|
|
178916
179222
|
]
|
|
178917
179223
|
};
|
|
178918
|
-
|
|
178919
|
-
|
|
179224
|
+
writeFileSync48(
|
|
179225
|
+
join113(componentDir, "registry-item.json"),
|
|
178920
179226
|
JSON.stringify(registryItem, null, 2) + "\n"
|
|
178921
179227
|
);
|
|
178922
179228
|
return {
|
|
178923
179229
|
name,
|
|
178924
179230
|
htmlPath: relative17(deps.projectDir, htmlFile),
|
|
178925
179231
|
unresolved: bindings.unresolved,
|
|
178926
|
-
rasterized: mapped.rasterize
|
|
179232
|
+
rasterized: mapped.rasterize,
|
|
179233
|
+
failedRasterize
|
|
178927
179234
|
};
|
|
178928
179235
|
}
|
|
178929
179236
|
var component_default;
|
|
@@ -178951,8 +179258,12 @@ var init_component = __esm({
|
|
|
178951
179258
|
download: downloadRender
|
|
178952
179259
|
});
|
|
178953
179260
|
console.log(`imported component "${result.name}" \u2192 ${result.htmlPath}`);
|
|
178954
|
-
if (result.rasterized.length > 0)
|
|
178955
|
-
|
|
179261
|
+
if (result.rasterized.length > 0) {
|
|
179262
|
+
const ok = result.rasterized.length - result.failedRasterize.length;
|
|
179263
|
+
console.log(
|
|
179264
|
+
result.failedRasterize.length > 0 ? `rasterized ${ok}/${result.rasterized.length} node(s) via asset export \u2014 ${result.failedRasterize.length} skipped (unrenderable; placeholders have no src)` : `rasterized ${result.rasterized.length} node(s) via asset export`
|
|
179265
|
+
);
|
|
179266
|
+
}
|
|
178956
179267
|
if (result.unresolved.length > 0) {
|
|
178957
179268
|
console.log(
|
|
178958
179269
|
`${result.unresolved.length} binding(s) reference tokens not yet imported \u2014 colors baked as literals (flagged data-figma-unresolved). Run \`hyperframes figma tokens\` on the source/library file, then re-import to link them.`
|
|
@@ -178963,6 +179274,7 @@ var init_component = __esm({
|
|
|
178963
179274
|
phase: "component",
|
|
178964
179275
|
unresolvedBindings: result.unresolved.length,
|
|
178965
179276
|
rasterizedNodes: result.rasterized.length,
|
|
179277
|
+
rasterizeFailures: result.failedRasterize.length,
|
|
178966
179278
|
durationMs: Date.now() - t0
|
|
178967
179279
|
});
|
|
178968
179280
|
});
|
|
@@ -179131,8 +179443,8 @@ __export(autoUpdate_exports, {
|
|
|
179131
179443
|
});
|
|
179132
179444
|
import { spawn as spawn17 } from "child_process";
|
|
179133
179445
|
import { appendFileSync as appendFileSync4, mkdirSync as mkdirSync55, openSync as openSync4 } from "fs";
|
|
179134
|
-
import { homedir as
|
|
179135
|
-
import { join as
|
|
179446
|
+
import { homedir as homedir18 } from "os";
|
|
179447
|
+
import { join as join114 } from "path";
|
|
179136
179448
|
import { compareVersions as compareVersions3 } from "compare-versions";
|
|
179137
179449
|
function isAutoInstallDisabled() {
|
|
179138
179450
|
if (isDevMode()) return true;
|
|
@@ -179155,7 +179467,7 @@ function log(line2) {
|
|
|
179155
179467
|
}
|
|
179156
179468
|
function launchDetachedInstall(installCommand, version2) {
|
|
179157
179469
|
mkdirSync55(CONFIG_DIR2, { recursive: true, mode: 448 });
|
|
179158
|
-
const configFile =
|
|
179470
|
+
const configFile = join114(CONFIG_DIR2, "config.json");
|
|
179159
179471
|
const nodeScript = `
|
|
179160
179472
|
const { exec } = require("node:child_process");
|
|
179161
179473
|
const { readFileSync, renameSync, writeFileSync } = require("node:fs");
|
|
@@ -179274,8 +179586,8 @@ var init_autoUpdate = __esm({
|
|
|
179274
179586
|
init_config();
|
|
179275
179587
|
init_env();
|
|
179276
179588
|
init_installerDetection();
|
|
179277
|
-
CONFIG_DIR2 =
|
|
179278
|
-
LOG_FILE =
|
|
179589
|
+
CONFIG_DIR2 = join114(homedir18(), ".hyperframes");
|
|
179590
|
+
LOG_FILE = join114(CONFIG_DIR2, "auto-update.log");
|
|
179279
179591
|
PENDING_TIMEOUT_MS = 10 * 60 * 1e3;
|
|
179280
179592
|
}
|
|
179281
179593
|
});
|
|
@@ -179523,9 +179835,9 @@ var init_help = __esm({
|
|
|
179523
179835
|
// src/cli.ts
|
|
179524
179836
|
init_version();
|
|
179525
179837
|
init_dist();
|
|
179526
|
-
import { dirname as dirname48, join as
|
|
179838
|
+
import { dirname as dirname48, join as join115 } from "path";
|
|
179527
179839
|
import { fileURLToPath as fileURLToPath16 } from "url";
|
|
179528
|
-
import { existsSync as
|
|
179840
|
+
import { existsSync as existsSync106 } from "fs";
|
|
179529
179841
|
|
|
179530
179842
|
// src/utils/command-failure-tracking.ts
|
|
179531
179843
|
function trackCommandFailures(load, onFailure) {
|
|
@@ -179568,8 +179880,8 @@ for (const stream of [process.stdout, process.stderr]) {
|
|
|
179568
179880
|
}
|
|
179569
179881
|
(() => {
|
|
179570
179882
|
const here = dirname48(fileURLToPath16(import.meta.url));
|
|
179571
|
-
const shader =
|
|
179572
|
-
if (!process.env.HF_SHADER_WORKER_ENTRY &&
|
|
179883
|
+
const shader = join115(here, "shaderTransitionWorker.js");
|
|
179884
|
+
if (!process.env.HF_SHADER_WORKER_ENTRY && existsSync106(shader)) {
|
|
179573
179885
|
process.env.HF_SHADER_WORKER_ENTRY = shader;
|
|
179574
179886
|
}
|
|
179575
179887
|
})();
|
|
@@ -179581,10 +179893,10 @@ if (rootVersionRequested) {
|
|
|
179581
179893
|
process.exit(0);
|
|
179582
179894
|
}
|
|
179583
179895
|
try {
|
|
179584
|
-
const { readFileSync:
|
|
179896
|
+
const { readFileSync: readFileSync71 } = await import("fs");
|
|
179585
179897
|
const { resolve: resolve62 } = await import("path");
|
|
179586
179898
|
const envPath = resolve62(process.cwd(), ".env");
|
|
179587
|
-
const envContent =
|
|
179899
|
+
const envContent = readFileSync71(envPath, "utf-8");
|
|
179588
179900
|
for (const rawLine of envContent.split("\n")) {
|
|
179589
179901
|
let line2 = rawLine.trim();
|
|
179590
179902
|
if (!line2 || line2.startsWith("#")) continue;
|