@ai-gui/image 0.36.0 → 0.36.1

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.
Files changed (2) hide show
  1. package/dist/page/entry.js +13 -9
  2. package/package.json +11 -11
@@ -20,19 +20,21 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
20
20
  `),ee+=ne,ee;const xe=findOpenInlineCode(ee),it=xe?ee.slice(0,xe.index):ee,ut=countUnescaped(it,"**"),ht=countUnescaped(it,"~~");return xe&&(ee+=xe.marker),ht%2===1&&(ee+="~~"),ut%2===1&&(ee+="**"),ee}function findOpenFence(te){let ee;for(const ne of te.split(/\r\n|\r|\n/)){const xe=ne.match(/^ {0,3}(`{3,}|~{3,})(.*)$/);if(!xe)continue;const it=xe[1];ee?it[0]===ee.char&&it.length>=ee.length&&xe[2].trim()===""&&(ee=void 0):ee={char:it[0],length:it.length,marker:it}}return ee?.marker}function findOpenInlineCode(te){let ee;for(let ne=0;ne<te.length;){if(te[ne]!=="`"||isEscaped(te,ne)){ne++;continue}let xe=ne+1;for(;te[xe]==="`";)xe++;const it=te.slice(ne,xe);ee?ee.marker===it&&(ee=void 0):ee={index:ne,marker:it},ne=xe}return ee}function countUnescaped(te,ee){let ne=0;for(let xe=0;xe<=te.length-ee.length;xe++)te.startsWith(ee,xe)&&!isEscaped(te,xe)&&(ne++,xe+=ee.length-1);return ne}function isEscaped(te,ee){let ne=0;for(let xe=ee-1;xe>=0&&te[xe]==="\\";xe--)ne++;return ne%2===1}function escapeHtml$4(te){return te.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function sanitizeHtml(te,ee={}){if(ee.sanitizer)return ee.sanitizer(te);if(typeof window>"u"){if(ee.ssr==="throw")throw new Error("sanitizeHtml requires a DOM or an injected sanitizer");return escapeHtml$4(te)}return purify.sanitize(te)}function sanitizeRenderedHtml(te,ee,ne=!1){if(ee===!1)return te;const xe=typeof ee=="object"?ee:void 0;return ne&&xe?.trustPlugins!==!1?te:sanitizeHtml(te,xe)}const DEFAULT_MAX_STRING_LENGTH=2048,DEFAULT_MAX_DEPTH=8,DEFAULT_MAX_NODES=1e3,SENSITIVE_KEY_PARTS=["authorization","auth","accesstoken","refreshtoken","clientsecret","credentials","cookie","setcookie","proxyauthorization","password","passwd","apikey","secret","token"];var DebugEmitter=class{enabled;source;limits;listeners=new Set;sequence=0;constructor(te,ee={}){this.source=te,this.enabled=ee.debug===!0,this.limits={maxStringLength:positiveInteger(ee.maxStringLength,DEFAULT_MAX_STRING_LENGTH,"maxStringLength"),maxDepth:positiveInteger(ee.maxDepth,DEFAULT_MAX_DEPTH,"maxDepth"),maxNodes:positiveInteger(ee.maxNodes,DEFAULT_MAX_NODES,"maxNodes"),redact:ee.redact},this.enabled&&ee.onDebugEvent&&this.listeners.add(ee.onDebugEvent)}get active(){return this.enabled&&this.listeners.size>0}get available(){return this.enabled}subscribe(te){return this.enabled?(this.listeners.add(te),()=>this.listeners.delete(te)):()=>{}}emit(te,ee={}){if(!this.active)return;const ne=Object.freeze({type:te,source:this.source,timestamp:Date.now(),sequence:++this.sequence,data:safeDebugValue(ee,this.limits)});for(const xe of this.listeners)try{xe(ne)}catch{}}};function safeDebugValue(te,ee={}){const ne=positiveInteger(ee.maxStringLength,DEFAULT_MAX_STRING_LENGTH,"maxStringLength"),xe=positiveInteger(ee.maxDepth,DEFAULT_MAX_DEPTH,"maxDepth"),it=positiveInteger(ee.maxNodes,DEFAULT_MAX_NODES,"maxNodes"),ut=new WeakSet;let ht=0;const dt=(Mt,ft="",gt=[],xt=0)=>{if(++ht>it)return"[MAX_NODES]";if(isSensitiveKey(ft)||ee.redact?.({key:ft,path:gt,value:Mt}))return"[REDACTED]";if(typeof Mt=="string")return limitString(redactText(Mt),ne);if(Mt===null||typeof Mt=="boolean")return Mt;if(typeof Mt=="number")return Number.isFinite(Mt)?Mt:String(Mt);if(typeof Mt=="bigint"||typeof Mt=="symbol"||typeof Mt=="function"||typeof Mt>"u")return String(Mt);if(Mt instanceof Error)return{name:limitString(Mt.name||"Error",ne),message:limitString(redactText(Mt.message),ne)};if(xt>=xe)return"[MAX_DEPTH]";if(ut.has(Mt))return"[CIRCULAR]";ut.add(Mt);try{if(Array.isArray(Mt))return Mt.map((Dt,yt)=>dt(Dt,"",[...gt,yt],xt+1));const mt={};for(const[Dt,yt]of Object.entries(Mt))mt[Dt]=dt(yt,Dt,[...gt,Dt],xt+1);return mt}finally{ut.delete(Mt)}};return dt(te)}function isSensitiveKey(te){const ee=te.toLowerCase().replace(/[^a-z0-9]/g,"");return ee!==""&&SENSITIVE_KEY_PARTS.some(ne=>ee.includes(ne))}function redactText(te){return te.replace(/\bBearer\s+[^\s,;]+/gi,"Bearer [REDACTED]").replace(/([?&](?:access[_-]?token|refresh[_-]?token|client[_-]?secret|api[_-]?key|password|passwd|token|secret)=)[^&#\s]*/gi,"$1[REDACTED]").replace(/\b((?:access[_-]?token|refresh[_-]?token|client[_-]?secret|api[_-]?key|password|passwd|token|secret)\s*[:=]\s*)[^\s,;]+/gi,"$1[REDACTED]")}function limitString(te,ee){return te.includes("[REDACTED]")&&ee<20?`[REDACTED][TRUNCATED length=${te.length}]`:te.length>ee?`${te.slice(0,ee)}[TRUNCATED length=${te.length}]`:te}function positiveInteger(te,ee,ne){if(te===void 0)return ee;if(!Number.isSafeInteger(te)||te<=0)throw new TypeError(`${ne} must be a positive integer`);return te}function loadPlugins(te){return te?Array.isArray(te)?te:te():[]}function samePlugins(te,ee){return te===ee?!0:!te||!ee||te.length!==ee.length?!1:te.every((ne,xe)=>ne===ee[xe])}function assertPlugins(te,ee="plugins"){te&&te.forEach((ne,xe)=>{const it=`${ee}[${xe}]`;if(typeof ne=="function"){const ht=ne.name?`${ne.name}()`:"the factory";throw new TypeError(`${it} is a factory function, not a plugin. Call it: ${ht}`)}if(ne===null||typeof ne!="object")throw new TypeError(`${it} is ${ne===null?"null":typeof ne}, not a plugin object`);const{name:ut}=ne;if(typeof ut!="string"||ut.length===0)throw new TypeError(`${it} has no \`name\`. A plugin needs one: its stylesheet and its debug events are keyed by it`)})}function collectNodeRenderers(te=[],ee={}){assertPlugins(te);const ne={},xe=ee.debugTarget,it=xe?void 0:ee.debug===!0?new DebugEmitter("renderer",ee):void 0;for(const ut of te)for(const[ht,dt]of Object.entries(ut.nodeRenderers??{})){if(!(xe?.debugEnabled||ee.debug===!0)){ne[ht]=dt;continue}ne[ht]=(Mt,ft)=>{const gt=(xt,mt)=>xe?.emitDebug(xt,mt)??it?.emit(xt,mt);gt("plugin-render-started",{plugin:ut.name,nodeType:Mt.type,nodeKey:Mt.key});try{const xt=dt(Mt,ft);return isPromise(xt)?xt.then(mt=>(gt("async-output-resolved",{plugin:ut.name,nodeType:Mt.type,nodeKey:Mt.key,outputKind:mt.kind}),gt("plugin-render-completed",{plugin:ut.name,nodeType:Mt.type,nodeKey:Mt.key,outputKind:mt.kind}),mt),mt=>{throw gt("async-output-rejected",{plugin:ut.name,nodeType:Mt.type,nodeKey:Mt.key,error:mt}),gt("plugin-render-failed",{plugin:ut.name,nodeType:Mt.type,nodeKey:Mt.key,error:mt}),mt}):(gt("plugin-render-completed",{plugin:ut.name,nodeType:Mt.type,nodeKey:Mt.key,outputKind:xt.kind}),xt)}catch(xt){throw gt("plugin-render-failed",{plugin:ut.name,nodeType:Mt.type,nodeKey:Mt.key,error:xt}),xt}}}return ne}function pluginNodeTypes(te=[]){return new Set(Object.keys(collectNodeRenderers(te)))}function isPromise(te){return typeof te?.then=="function"}function createParserWithMetadata(te={}){const ee=new MarkdownIt({html:te.rawHtml!==!1,linkify:!0});ee.use(markdownItCjkFriendlyPlugin),te.configureMd?.(ee);for(const ut of te.plugins??[])ut.extendParser?.(ee);const ne=!!(te.configureMd||te.plugins?.some(ut=>ut.extendParser)),xe=pluginNodeTypes(te.plugins),it=new Map;for(const ut of te.plugins??[])for(const ht of Object.keys(ut.nodeRenderers??{}))ut.isBlockComplete&&it.set(ht,ut.isBlockComplete);return(ut,ht=ut,dt=0)=>{const Mt={},ft=ee.parse(normalizeLineEndings(ut),Mt),gt=[],xt=[],mt=getLineOffsets(ht),Dt=new Map,yt=(wt,At)=>{const Lt=sourceRange(At,ht.length,mt,dt),bt=xt.at(-1),vt=bt&&bt.start===Lt.start&&bt.end===Lt.end?bt:void 0,Qt=Dt.get(Lt.start)??0;Dt.set(Lt.start,Qt+1),gt.push({key:`${Lt.start}:${Qt}`,...wt}),vt?vt.nodeEnd=gt.length:xt.push({...Lt,nodeStart:gt.length-1,nodeEnd:gt.length})};for(let wt=0;wt<ft.length;wt++){const At=ft[wt];if(At.type==="fence"){const Lt=At.info.trim();if(Lt.startsWith("card:")&&te.registry){const bt=Lt.slice(5),vt=te.registry.parse(bt,At.content),Qt=vt.complete&&isClosedFence(ht,At.map,At.markup),Ct=Qt&&vt.valid?getCardId(vt.data):void 0;yt({type:"card",card:{type:bt,data:vt.data,complete:Qt,valid:Qt&&vt.valid&&Ct!==!1,...typeof Ct=="string"?{id:Ct}:{}}},At.map)}else if(xe.has(Lt)){const bt=it.get(Lt);let Qt=isClosedFence(ht,At.map,At.markup);if(Qt&&bt)try{Qt=bt(Lt,At.content)}catch{Qt=!1}yt({type:Lt,content:At.content,attrs:{info:Lt},complete:Qt},At.map)}else yt({type:"code",tag:"code",attrs:Lt?{lang:Lt}:void 0,content:At.content},At.map);continue}if(At.type==="hr"){yt({type:"hr",tag:"hr"},At.map);continue}if(At.type==="code_block"){yt({type:"code",tag:"code",content:At.content},At.map);continue}if(At.type==="html_block"){yt({type:"html",content:At.content},At.map);continue}if(At.type==="heading_open"){const Lt=ft[wt+1],bt=Lt?.content??"";yt({type:"heading",tag:At.tag,content:bt,html:ee.renderer.renderInline(Lt?.children??[],ee.options,Mt)},At.map),wt+=2;continue}if(At.type==="paragraph_open"){const Lt=ft[wt+1],bt=Lt?.content??"";yt({type:"paragraph",tag:"p",content:bt,html:ee.renderer.renderInline(Lt?.children??[],ee.options,Mt)},At.map),wt+=2;continue}if(At.type.endsWith("_open")&&At.level===0){const Lt=At.type.replace("_open","_close");let bt=wt,vt=0;for(;bt<ft.length&&(ft[bt].type===At.type&&vt++,!(ft[bt].type===Lt&&(vt--,vt===0)));bt++);const Qt=ft.slice(wt,bt+1);yt({type:"html",content:ee.renderer.render(Qt,ee.options,Mt)},At.map),wt=bt;continue}if(At.block&&At.level===0){yt({type:"html",content:ee.renderer.render([At],ee.options,Mt)},At.map);continue}}return{nodes:gt,blocks:xt,incrementalSafe:!ne&&!hasReferenceSyntax(ht)}}}function getCardId(te){if(typeof te!="object"||te===null||Array.isArray(te)||!Object.hasOwn(te,"id"))return;const ee=te.id;return typeof ee=="string"&&ee.trim().length>0&&ee.length<=256?ee:!1}function getLineOffsets(te){const ee=[0];for(let ne=0;ne<te.length;ne++)te[ne]==="\r"?(te[ne+1]===`
21
21
  `&&ne++,ee.push(ne+1)):te[ne]===`
22
22
  `&&ee.push(ne+1);return ee.push(te.length),ee}function sourceRange(te,ee,ne,xe){return te?{start:xe+Math.min(ne[te[0]]??ee,ee),end:xe+Math.min(ne[te[1]]??ee,ee)}:{start:xe,end:xe+ee}}function hasReferenceSyntax(te){return/^ {0,3}\[[^\]\n]+\]:/m.test(te)||/\[[^\]\n]+\]\s*\[[^\]\n]*\]/.test(te)||/(^|[^!])\[[^\]\n]+\](?![([])/m.test(te)}function isClosedFence(te,ee,ne){if(!ee)return!1;const xe=te.split(/\r\n|\r|\n/)[ee[1]-1]?.trim()??"";return xe.length<ne.length||xe[0]!==ne[0]?!1:xe.split("").every(it=>it===ne[0])}function normalizeLineEndings(te){return te.replace(/\r\n|\r/g,`
23
- `)}const baseCss=["[data-aigui-renderer]{max-width:100%}","[data-aigui-renderer] img,[data-aigui-renderer] svg,[data-aigui-renderer] video,[data-aigui-renderer] canvas{max-width:100%;height:auto}","[data-aigui-renderer] pre{max-width:100%;overflow-x:auto}","[data-aigui-renderer] code{overflow-wrap:anywhere}","[data-aigui-renderer] pre code{overflow-wrap:normal}","[data-aigui-renderer] table:where(:not([data-aigui-resultset] *):not([data-aigui-dashboard] *)){display:block;max-width:100%;overflow-x:auto;border-collapse:collapse}","[data-aigui-renderer] p,[data-aigui-renderer] li,[data-aigui-renderer] h1,[data-aigui-renderer] h2,[data-aigui-renderer] h3{overflow-wrap:break-word}","[data-aigui-renderer] a{overflow-wrap:anywhere}","[data-aigui-renderer] [data-aigui-chart],[data-aigui-renderer] [data-aigui-mermaid],[data-aigui-renderer] [data-aigui-map],[data-aigui-renderer] [data-aigui-molecule]{max-width:100%;overflow-x:auto}"].join("");function collectPluginStyles(te){const ee=new Map;ee.set("base",baseCss);for(const ne of te??[]){const xe=ne?.css?.trim();xe&&(xe.startsWith("@import")&&!/@import\s+url\(|@import\s+["'](?:https?:)?\/\//.test(xe)||ee.set(ne.name,xe))}return[...ee].map(([ne,xe])=>({name:ne,css:xe}))}const STYLE_ATTR="data-aigui-style";function injectPluginStyles(te,ee){const ne=ee??(typeof document>"u"?void 0:document);if(ne?.head)for(const{name:xe,css:it}of collectPluginStyles(te)){if(ne.querySelector(`style[${STYLE_ATTR}="${CSS_ESCAPE(xe)}"]`))continue;const ut=ne.createElement("style");ut.setAttribute(STYLE_ATTR,xe),ut.textContent=it,ne.head.appendChild(ut)}}function CSS_ESCAPE(te){return te.replace(/["\\]/g,"\\$&")}function resolveMessages(te,ee){const ne=te.en??{};if(!ee)return ne;const xe=te[ee];if(xe)return{...ne,...xe};const it=ee.split("-")[0],ut=it&&it!==ee?te[it]:void 0;return ut?{...ne,...ut}:ne}function translate$2(te,ee,ne){return resolveMessages(te,ee)[ne]??ne}function measure(te,ee){const ne=typeof te.getBoundingClientRect=="function"?te.getBoundingClientRect():void 0,xe=ht=>Number.parseFloat(te.getAttribute(ht)??""),it=ht=>{const dt=(te.getAttribute("viewBox")??"").split(/[\s,]+/).map(Number);return dt.length===4&&Number.isFinite(dt[ht])?dt[ht]:Number.NaN},ut=(...ht)=>ht.find(dt=>Number.isFinite(dt)&&dt>0);return{width:Math.round(ut(ee.width??Number.NaN,ne?.width??Number.NaN,xe("width"),it(2),720)),height:Math.round(ut(ee.height??Number.NaN,ne?.height??Number.NaN,xe("height"),it(3),400))}}function rasterisable(te){const ee=te.cloneNode(!0),ne=Array.from(ee.querySelectorAll("foreignObject"));for(const xe of ne){const it=(xe.textContent??"").trim(),ut=xe.parentNode;if(!ut)continue;if(!it){ut.removeChild(xe);continue}const ht=Number.parseFloat(xe.getAttribute("x")??"0"),dt=Number.parseFloat(xe.getAttribute("y")??"0"),Mt=Number.parseFloat(xe.getAttribute("width")??"0"),ft=Number.parseFloat(xe.getAttribute("height")??"0"),gt=document.createElementNS("http://www.w3.org/2000/svg","text");gt.setAttribute("x",String(ht+Mt/2)),gt.setAttribute("y",String(dt+ft/2)),gt.setAttribute("text-anchor","middle"),gt.setAttribute("dominant-baseline","middle"),gt.setAttribute("font-size","14"),gt.setAttribute("fill","currentColor"),gt.textContent=it,ut.replaceChild(gt,xe)}return ee}async function exportSVGToImage(te,ee={}){const{width:ne,height:xe}=measure(te,ee),it=ee.scale&&ee.scale>0?ee.scale:globalThis.devicePixelRatio||1,ut=new XMLSerializer().serializeToString(rasterisable(te)),ht=/\sxmlns=/.test(ut)?ut:ut.replace(/^<svg/,'<svg xmlns="http://www.w3.org/2000/svg"'),dt=URL.createObjectURL(new Blob([ht],{type:"image/svg+xml;charset=utf-8"}));try{const Mt=await loadImage(dt),ft=document.createElement("canvas");ft.width=Math.max(1,Math.round(ne*it)),ft.height=Math.max(1,Math.round(xe*it));const gt=ft.getContext("2d");if(!gt)throw new Error("This browser cannot rasterize images");const xt=ee.background??"#ffffff";return xt!=="transparent"&&(gt.fillStyle=xt,gt.fillRect(0,0,ft.width,ft.height)),gt.scale(it,it),gt.drawImage(Mt,0,0,ne,xe),{dataUrl:ft.toDataURL(ee.type??"image/png",ee.quality),width:ft.width,height:ft.height}}finally{URL.revokeObjectURL(dt)}}async function exportRenderedImages(te,ee={}){const ne=[];for(const xe of Array.from(te.querySelectorAll("svg")))if(!xe.closest(".katex"))try{ne.push(await exportSVGToImage(xe,ee))}catch(it){ee.onSkip?.(xe,it)}return ne}function loadImage(te){return new Promise((ee,ne)=>{const xe=new Image;xe.onload=()=>ee(xe),xe.onerror=()=>ne(new Error("The drawing could not be decoded")),xe.src=te})}function diffAst(te,ee){const ne=[],xe=new Set(ee.map(ut=>ut.key)),it=[...te];for(let ut=it.length-1;ut>=0;ut--)xe.has(it[ut].key)||(ne.push({op:"remove",key:it[ut].key}),it.splice(ut,1));for(let ut=0;ut<ee.length;ut++){const ht=ee[ut],dt=it.findIndex(Mt=>Mt.key===ht.key);if(dt===-1){ne.push({op:"insert",index:ut,node:ht}),it.splice(ut,0,ht);continue}if(dt!==ut){ne.push({op:"move",key:ht.key,index:ut});const[Mt]=it.splice(dt,1);it.splice(ut,0,Mt)}nodeEqual(it[ut],ht)||(ne.push({op:"update",key:ht.key,node:ht}),it[ut]=ht)}return ne}function nodeEqual(te,ee){return te===ee?!0:JSON.stringify(te)===JSON.stringify(ee)}var Renderer$1=class{debugSource="renderer";buffer="";prevAst=[];parse;parsed;options;sanitize;generation=0;activeFeed;renderScheduled=!1;scheduleGeneration=0;debug;constructor(ee={}){this.options=ee,assertPlugins(ee.plugins),this.debug=new DebugEmitter(this.debugSource,ee),this.sanitize=ee.sanitize===!1?!1:typeof ee.sanitize=="object"?ee.sanitize:{},this.registerPluginCards(ee.plugins),this.parse=createParserWithMetadata({registry:ee.registry,plugins:ee.plugins,rawHtml:ee.rawHtml})}get plugins(){return this.options.plugins??[]}setPlugins(ee){assertPlugins(ee),!samePlugins(this.options.plugins,ee)&&(this.options={...this.options,plugins:ee},this.registerPluginCards(ee),this.parse=createParserWithMetadata({registry:this.options.registry,plugins:ee,rawHtml:this.options.rawHtml}),this.parsed=void 0,this.renderScheduled=!1,this.scheduleGeneration++,this.debug.active&&this.debug.emit("plugins-changed",{plugins:(ee??[]).map(ne=>ne.name)}),this.render())}registerPluginCards(ee){const ne=this.options.registry;if(ne)for(const xe of ee??[])for(const it of xe.cards??[])ne.register(it)}get debugEnabled(){return this.debug.available}emitDebug(ee,ne={}){this.debug.emit(ee,ne)}push(ee){this.buffer+=ee,this.debug.active&&this.debug.emit("chunk-received",{chunk:ee,length:ee.length,bufferLength:this.buffer.length}),this.scheduleRender()}subscribeDebug(ee){return this.debug.subscribe(ee)}async feed(ee,ne={}){const xe=++this.generation;this.cancelActiveFeed(createAbortError("Superseded by a newer feed")),this.debug.active&&this.debug.emit("feed-started",{generation:xe});const it=new TextDecoder,ut=ne.signal;if(ut?.aborted)throw abortReason$1(ut);let ht=!1,dt;const Mt=()=>{ht=!0,dt=abortReason$1(ut),this.activeFeed?.generation===xe&&this.cancelActiveFeed(dt)};ut?.addEventListener("abort",Mt,{once:!0});const ft=gt=>{if(xe!==this.generation||ht)return;const xt=typeof gt=="string"?it.decode()+gt:it.decode(gt,{stream:!0});xt&&this.push(xt)};try{if(isReadableStream$2(ee)){const gt=ee.getReader();let xt=!1;this.activeFeed={generation:xe,cancel:async mt=>{xt||(xt=!0,await gt.cancel(mt))}};try{for(;;){const{done:mt,value:Dt}=await gt.read();if(mt||xe!==this.generation||ht)break;Dt!=null&&ft(Dt)}}finally{gt.releaseLock()}}else{const gt=ee[Symbol.asyncIterator]();let xt=!1;this.activeFeed={generation:xe,cancel:async()=>{xt||(xt=!0,await gt.return?.())}};try{for(;;){const{done:mt,value:Dt}=await gt.next();if(mt||xe!==this.generation||ht)break;ft(Dt)}}finally{(xe!==this.generation||ht)&&!xt&&(xt=!0,await gt.return?.())}}if(xe===this.generation&&!ht){const gt=it.decode();gt&&this.push(gt),this.flush()}if(ht)throw this.debug.active&&this.debug.emit("feed-cancelled",{generation:xe,error:dt}),dt;xe===this.generation&&this.debug.active&&this.debug.emit("feed-completed",{generation:xe,bufferLength:this.buffer.length})}finally{!ht&&xe!==this.generation&&this.debug.active&&this.debug.emit("feed-cancelled",{generation:xe,reason:"superseded-or-reset"}),ut?.removeEventListener("abort",Mt),this.activeFeed?.generation===xe&&(this.activeFeed=void 0)}}reset(){this.generation++,this.cancelActiveFeed(createAbortError("Renderer reset")),this.activeFeed=void 0,this.buffer="",this.renderScheduled=!1,this.scheduleGeneration++;const ee=diffAst(this.prevAst,[]);this.prevAst=[],this.parsed=void 0,this.options.onPatch?.(ee,[]),this.debug.active&&this.debug.emit("renderer-reset",{patches:ee})}flush(){this.renderScheduled&&(this.renderScheduled=!1,this.scheduleGeneration++,this.render())}scheduleRender(){if(!this.options.scheduler){this.render();return}if(this.renderScheduled)return;this.renderScheduled=!0;const ee=++this.scheduleGeneration;this.options.scheduler(()=>{!this.renderScheduled||ee!==this.scheduleGeneration||(this.renderScheduled=!1,this.render())})}cancelActiveFeed(ee){const ne=this.activeFeed;ne&&Promise.resolve(ne.cancel(ee)).catch(()=>{})}render(){const ee=this.debug.active,ne=ee?now$1():0,xe=this.parsed;let it,ut="full";if(xe?.incrementalSafe&&xe.blocks.length>1){const mt=xe.blocks.at(-1),Dt=xe.blocks.slice(0,-1),yt=mt.nodeStart,wt=this.buffer.slice(mt.start),At=repairMarkdown(wt);ee&&this.debug.emit("markdown-repaired",{mode:"mutable-tail",raw:wt,rawLength:wt.length,repaired:At,repairedLength:At.length,sourceOffset:mt.start});const Lt=ee?now$1():0,bt=this.parse(At,wt,mt.start);if(ee&&this.debug.emit("mutable-tail-reparsed",{sourceOffset:mt.start,durationMs:now$1()-Lt}),bt.incrementalSafe)ut="mutable-tail",this.sanitize!==!1&&this.sanitizeNodesWithDebug(bt.nodes),it={nodes:[...xe.nodes.slice(0,yt),...bt.nodes],blocks:[...Dt,...bt.blocks.map(vt=>({...vt,nodeStart:vt.nodeStart+yt,nodeEnd:vt.nodeEnd+yt}))],incrementalSafe:!0},ee&&this.debug.emit("stable-prefix-committed",{blocks:Dt.length,nodes:yt});else{const vt=repairMarkdown(this.buffer);ee&&this.debug.emit("markdown-repaired",{mode:"full",raw:this.buffer,rawLength:this.buffer.length,repaired:vt,repairedLength:vt.length});const Qt=ee?now$1():0;it=this.parse(vt,this.buffer),ee&&this.debug.emit("parse-completed",{mode:"full",durationMs:now$1()-Qt}),this.sanitize!==!1&&this.sanitizeNodesWithDebug(it.nodes)}}else{const mt=repairMarkdown(this.buffer);ee&&this.debug.emit("markdown-repaired",{mode:"full",raw:this.buffer,rawLength:this.buffer.length,repaired:mt,repairedLength:mt.length});const Dt=ee?now$1():0;it=this.parse(mt,this.buffer),ee&&this.debug.emit("parse-completed",{mode:"full",durationMs:now$1()-Dt}),this.sanitize!==!1&&this.sanitizeNodesWithDebug(it.nodes)}const ht=it.nodes;for(const mt of this.options.plugins??[])if(mt.onASTCommit)try{mt.onASTCommit(ht,{generation:this.generation,emitDebug:(Dt,yt={})=>this.debug.emit(Dt,{plugin:mt.name,...yt})})}catch(Dt){ee&&this.debug.emit("plugin-commit-failed",{plugin:mt.name,error:Dt})}const dt=ee?now$1():0,Mt=diffAst(this.prevAst,ht),ft=ee?now$1()-dt:0;this.parsed=it,this.prevAst=ht;const gt=ee?now$1():0;Mt.length>0&&this.options.onPatch?.(Mt,ht);const xt=ee?now$1()-gt:0;ee&&(this.debug.emit("ast-snapshot",{mode:ut,nodes:ht}),this.debug.emit("ast-patches",{patches:Mt,durationMs:ft}),this.debug.emit("patch-dispatched",{patches:Mt.length,durationMs:xt,renderDurationMs:now$1()-ne}))}sanitizeNodesWithDebug(ee){if(this.sanitize===!1)return;if(!this.debug.active){sanitizeNodes(ee,this.sanitize);return}const ne=nodeMarkupSize(ee),xe=now$1();sanitizeNodes(ee,this.sanitize),this.debug.emit("sanitizer-completed",{inputSize:ne,outputSize:nodeMarkupSize(ee),durationMs:now$1()-xe})}};function sanitizeNodes(te,ee){for(const ne of te)ne.type==="html"&&typeof ne.content=="string"&&(ne.content=sanitizeHtml(ne.content,ee)),ne.html&&(ne.html=sanitizeHtml(ne.html,ee)),ne.children&&sanitizeNodes(ne.children,ee)}function isReadableStream$2(te){return"getReader"in te&&typeof te.getReader=="function"}function abortReason$1(te){return te?.reason??createAbortError("The operation was aborted")}function createAbortError(te){const ee=new Error(te);return ee.name="AbortError",ee}function now$1(){return typeof performance>"u"?Date.now():performance.now()}function nodeMarkupSize(te){let ee=0;for(const ne of te)ee+=ne.content?.length??0,ee+=ne.html?.length??0,ne.children&&(ee+=nodeMarkupSize(ne.children));return ee}function renderOutputToElement(te,ee,ne={}){switch(te.kind){case"html":{const xe=document.createElement("div");return xe.innerHTML=sanitizeRenderedHtml(te.html,ee,te.trusted),xe}case"element":{const xe=document.createElement(te.tag);for(const[it,ut]of Object.entries(te.props??{}))it==="class"||it==="className"?xe.className=String(ut):xe.setAttribute(it,String(ut));for(const it of te.children??[])xe.appendChild(renderOutputToElement(it,ee,ne));return xe}case"card":{const xe=document.createElement("pre");xe.setAttribute("data-aigui-card-fallback","");const it=document.createElement("code");return it.textContent=JSON.stringify(te.data,null,2),xe.appendChild(it),xe}case"mount":{const xe=document.createElement("div");return xe.setAttribute("data-aigui-mount",""),queueMicrotask(()=>{if(xe.__aiguiDisposed)return;const it=te.mount(xe,ne);typeof it=="function"&&(xe.__aiguiDisposed?it():xe.__aiguiCleanup=it)}),xe}}}function renderNodeToElement(te,ee){const ne=(ee.nodeRenderers??collectNodeRenderers(ee.plugins))[te.type];if(ne){if(te.complete===!1){const xe=document.createElement("div");return xe.setAttribute("data-aigui-block-loading",""),xe.setAttribute("data-block-type",te.type),xe}try{const xe=ne(te,{theme:ee.theme,locale:ee.locale});if(typeof xe?.then=="function"){const it=document.createElement("div");return it.setAttribute("data-aigui-async-pending",""),xe.then(ut=>{it.__aiguiDisposed||(it.removeAttribute("data-aigui-async-pending"),it.replaceChildren(renderOutputToElement(ut,ee.sanitize,createRenderMountContext(ee))))},()=>{it.__aiguiDisposed||(it.removeAttribute("data-aigui-async-pending"),it.setAttribute("data-aigui-async-error",""))}),it}return renderOutputToElement(xe,ee.sanitize,createRenderMountContext(ee))}catch{return renderFallback(te,ee)}}switch(te.type){case"heading":{const xe=document.createElement(te.tag??"h1");return xe.innerHTML=renderHtml(te.html??"",ee),xe}case"paragraph":{const xe=document.createElement("p");return xe.innerHTML=renderHtml(te.html??"",ee),xe}case"code":{const xe=document.createElement("pre");te.attrs?.lang&&xe.setAttribute("data-lang",te.attrs.lang);const it=document.createElement("code");return it.textContent=te.content??"",xe.appendChild(it),xe}case"hr":return document.createElement("hr");case"html":{const xe=document.createElement("div");return xe.innerHTML=renderHtml(te.content??"",ee),xe}case"card":return renderCardElement(te,ee);default:return renderFallback(te,ee)}}function renderFallback(te,ee){const ne=document.createElement("div");return ne.innerHTML=renderHtml(te.html??te.content??"",ee),ne}function renderHtml(te,ee){return ee.sanitized||ee.sanitize===!1?te:sanitizeHtml(te,typeof ee.sanitize=="object"?ee.sanitize:void 0)}function renderCardElement(te,ee){const ne=te.card;if(!ne)return document.createElement("div");if(!ne.complete){const ht=document.createElement("div");return ht.setAttribute("data-aigui-card-loading",""),ht.setAttribute("data-card-type",ne.type),ht}if(!ne.valid){const ht=document.createElement("pre");ht.setAttribute("data-aigui-card-invalid","");const dt=document.createElement("code");return dt.textContent=JSON.stringify(ne.data,null,2),ht.appendChild(dt),ht}const xe=ee.registry?.getRender(ne.type);if(!xe)return createCardFallback(ne,ee);const it=document.createElement("div");it.setAttribute("data-aigui-card",ne.type);const ut=createCardController(it,ne,xe,ee);return it.__aiguiCardController=ut,it.__aiguiCleanup=()=>ut.destroy(),it}function createRenderMountContext(te){return{mountCard(ee,ne){return mountCardSlot(ee,ne,te)}}}function mountCardSlot(te,ee,ne){const xe=ne.registry?.getRender(ee.type);if(xe)return createVanillaCardSlot(te,ee.data,xe,()=>({state:{status:"idle"},onAction:it=>ne.onCardAction?.({...it,cardType:ee.type})}))}function createVanillaCardSlot(te,ee,ne,xe){let it=!1,ut,ht;const dt=Mt=>{const ft=ne(Mt,xe());isVanillaCardInstance(ft)?(ut=ft,ht=ft.element):(ut=void 0,ht=ft),te.replaceChildren(ht)};return dt(ee),{element:()=>ht,update(Mt){it||(ut?ut.update(Mt,xe()):dt(Mt))},destroy(){it||(it=!0,ut?.destroy?.(),ut=void 0)}}}function createCardFallback(te,ee){const ne=document.createElement("pre");ne.setAttribute("data-aigui-card-fallback","");const xe=document.createElement("code");ne.appendChild(xe);const it=dt=>{ne.removeAttribute("data-aigui-card-missing"),xe.textContent=JSON.stringify(dt,null,2)},ut=()=>{ne.setAttribute("data-aigui-card-missing",""),xe.textContent="Card data is unavailable"};let ht=()=>{};if(te.id!==void 0&&ee.cardStore){try{const dt=ee.cardStore.register({id:te.id,type:te.type,data:te.data});it(dt.data)}catch(dt){ne.setAttribute("data-aigui-card-store-error",""),xe.textContent=dt instanceof Error?dt.message:"Card registration failed"}ht=ee.cardStore.subscribe(te.id,dt=>{!dt||dt.type!==te.type?ut():(ne.removeAttribute("data-aigui-card-store-error"),it(dt.data))}),ne.__aiguiCleanup=ht}else it(te.data);return ne}function updateCardElement(te,ee){return te.__aiguiCardController?.updateNode(ee)??!1}function createCardController(te,ee,ne,xe){let it=ee,ut=!1,ht=()=>{},dt,Mt=!1;const ft=it.id,gt=Lt=>xe.onCardAction?.({...Lt,cardType:it.type,...ft===void 0?{}:{cardId:ft}});let xt=it.data,mt={status:"idle"},Dt;if(ft!==void 0&&xe.cardStore)try{const Lt=xe.cardStore.register({id:ft,type:it.type,data:xt});xt=Lt.data,mt=Lt.action}catch(Lt){Dt=Lt}const yt=Lt=>{dt=createVanillaCardSlot(te,Lt,ne,()=>({state:mt,onAction:gt}))},wt=(Lt,bt)=>{if(!ut){if(xt=Lt,mt=bt,te.removeAttribute("data-aigui-card-store-error"),Mt){Mt=!1,te.removeAttribute("data-aigui-card-missing");const vt=dt?.element();vt&&te.replaceChildren(vt)}dt?dt.update(xt):yt(xt)}},At=()=>{if(ut||Mt)return;Mt=!0,te.removeAttribute("data-aigui-card-store-error"),te.setAttribute("data-aigui-card-missing","");const Lt=document.createElement("code");Lt.textContent="Card data is unavailable",te.replaceChildren(Lt)};if(Dt===void 0)yt(xt);else{te.setAttribute("data-aigui-card-store-error","");const Lt=document.createElement("code");Lt.textContent=Dt instanceof Error?Dt.message:"Card registration failed",te.replaceChildren(Lt)}return ft!==void 0&&xe.cardStore&&(ht=xe.cardStore.subscribe(ft,Lt=>{if(!Lt||Lt.type!==it.type){At();return}wt(Lt.data,Lt.action)})),{updateNode(Lt){const bt=Lt.card;return!bt?.complete||!bt.valid||bt.type!==it.type||bt.id!==ft?!1:(it=bt,(ft===void 0||!xe.cardStore)&&wt(bt.data,mt),!0)},destroy(){ut||(ut=!0,ht(),ht=()=>{},dt?.destroy(),dt=void 0)}}}function isVanillaCardInstance(te){return!(te instanceof HTMLElement)&&te!==null&&typeof te=="object"&&te.element instanceof HTMLElement&&typeof te.update=="function"}function createReconcileState(){return{els:new Map}}function disposeEl(te){for(const ee of te.querySelectorAll("*"))disposeManagedEl(ee);disposeManagedEl(te)}function disposeManagedEl(te){const ee=te;ee.__aiguiDisposed||(ee.__aiguiDisposed=!0,ee.__aiguiCleanup?.(),ee.__aiguiCleanup=void 0)}function reconcile(te,ee,ne,xe){const it=new Set(ee.map(ht=>ht.key));for(const[ht,dt]of xe.els)it.has(ht)||(disposeEl(dt.el),dt.el.remove(),xe.els.delete(ht));let ut=null;for(const ht of ee){const dt=JSON.stringify(ht);let Mt=xe.els.get(ht.key);if(!Mt)Mt={el:renderNodeToElement(ht,ne),hash:dt},xe.els.set(ht.key,Mt);else if(Mt.hash!==dt)if(updateElementInPlace(Mt.el,ht,ne))Mt.hash=dt;else{disposeEl(Mt.el);const gt=renderNodeToElement(ht,ne);Mt.el.replaceWith(gt),Mt.el=gt,Mt.hash=dt}const ft=ut?ut.nextSibling:te.firstChild;Mt.el!==ft&&te.insertBefore(Mt.el,ft),ut=Mt.el}}function updateElementInPlace(te,ee,ne){if(ne.nodeRenderers?.[ee.type])return!1;switch(ee.type){case"heading":return te.tagName!==(ee.tag??"h1").toUpperCase()?!1:(te.innerHTML=ee.html??"",!0);case"paragraph":return te.tagName!=="P"?!1:(te.innerHTML=ee.html??"",!0);case"code":{if(te.tagName!=="PRE")return!1;ee.attrs?.lang&&te.setAttribute("data-lang",ee.attrs.lang);let xe=te.querySelector("code");return xe||(xe=document.createElement("code"),te.appendChild(xe)),xe.textContent=ee.content??"",!0}case"hr":return te.tagName==="HR";case"html":return te.tagName!=="DIV"?!1:(te.innerHTML=ee.content??"",!0);case"card":return updateCardElement(te,ee);default:return te.tagName!=="DIV"?!1:(te.innerHTML=ee.html??ee.content??"",!0)}}function createRenderer(te,ee={}){const{actionRuntime:ne,cardStore:xe,onCardAction:it,nodeRenderers:ut,theme:ht,locale:dt,onRender:Mt,onNodeClick:ft,plugins:gt,...xt}=ee,mt=loadPlugins(gt),Dt=Array.isArray(mt)?mt:void 0;injectPluginStyles(Dt,te.ownerDocument);let yt="",wt=[],At={owner:{},controller:new AbortController};const Lt=Ot=>{ne&&ne.dispatch({...Ot,params:Ot.params},{owner:At.owner,signal:At.controller.signal}).catch(()=>{}),it?.(Ot)},bt=createReconcileState();let vt=!1;const Qt=new Renderer$1({...xt,plugins:Dt,onPatch:(Ot,zt)=>{vt||(wt=zt,reconcile(te,zt,Ut,bt),Mt?.(zt))}}),Ct=Ot=>({...collectNodeRenderers(Ot,{debugTarget:Qt}),...ut}),Ut={registry:ee.registry,cardStore:xe,onCardAction:Lt,plugins:Dt,nodeRenderers:Ct(Dt),sanitize:ee.sanitize,sanitized:!0,theme:ht,locale:dt},Rt=()=>{for(const Ot of bt.els.values())disposeEl(Ot.el)},Ft=Ot=>{assertPlugins(Ot),!(vt||samePlugins(Ut.plugins,Ot))&&(Ut.plugins=Ot,Ut.nodeRenderers=Ct(Ot),injectPluginStyles(Ot,te.ownerDocument),Rt(),bt.els.clear(),te.replaceChildren(),Qt.setPlugins(Ot),reconcile(te,wt,Ut,bt))},Gt=Ot=>{const zt=Ot;if(!(!zt||typeof zt.nodeType!="number")){for(const[Xt,Zt]of bt.els)if(Zt.el===zt||Zt.el.contains(zt))return wt.find(Ht=>Ht.key===Xt)}},_t=Ot=>{const zt=Gt(Ot.target);zt&&ft?.(zt,Ot)};ft&&te.addEventListener("click",_t),Array.isArray(mt)||mt.then(Ot=>{try{Ft(Ot)}catch(zt){Qt.emitDebug("plugins-load-failed",{error:zt}),console.error(zt)}},Ot=>Qt.emitDebug("plugins-load-failed",{error:Ot}));const Pt=()=>{At.controller.abort(),At={owner:{},controller:new AbortController}};return{debugSource:"renderer",subscribeDebug:Ot=>Qt.subscribeDebug(Ot),push:Ot=>{vt||(Qt.push(Ot),yt+=Ot)},setText:Ot=>{vt||Ot===yt||(Ot.startsWith(yt)?Qt.push(Ot.slice(yt.length)):(Pt(),Rt(),Qt.reset(),bt.els.clear(),te.replaceChildren(),Qt.push(Ot)),yt=Ot)},setTheme:Ot=>{vt||Ut.theme===Ot||(Ut.theme=Ot,Rt(),bt.els.clear(),te.replaceChildren(),reconcile(te,wt,Ut,bt))},setPlugins:Ft,exportImages:Ot=>exportRenderedImages(te,Ot),feed:(Ot,zt)=>vt?Promise.resolve():Qt.feed(Ot,zt),reset:()=>{vt||(Pt(),Rt(),Qt.reset(),bt.els.clear(),te.replaceChildren(),yt="")},destroy:()=>{vt||(vt=!0,yt="",te.removeEventListener("click",_t),At.controller.abort(),Qt.reset(),Rt(),bt.els.clear(),te.replaceChildren())}}}function palette$2(te){const ee=te.accent??(te.theme==="dark"?"#22d3ee":"#0369a1");return te.theme==="dark"?{accent:ee,text:"#e2e8f0",muted:"#94a3b8",good:"#34d399",bad:"#fb7185",warn:"#fbbf24",track:"rgba(148,163,184,0.18)",series:[ee,"#a78bfa","#34d399","#fbbf24","#fb7185","#60a5fa","#f472b6","#2dd4bf"],gridLine:"rgba(148,163,184,0.16)"}:{accent:ee,text:"#1e293b",muted:"#64748b",good:"#059669",bad:"#e11d48",warn:"#d97706",track:"rgba(100,116,139,0.16)",series:[ee,"#7c3aed","#059669","#d97706","#e11d48","#2563eb","#db2777","#0d9488"],gridLine:"rgba(100,116,139,0.2)"}}function withAlpha(te,ee){const ne=te.replace("#",""),xe=ne.length===3?ne.split("").map(ut=>ut+ut).join(""):ne,it=Number.parseInt(xe,16);return`rgba(${it>>16&255},${it>>8&255},${it&255},${ee})`}const FONT="ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'PingFang SC', 'Noto Sans CJK SC', sans-serif";function formatNumber$1(te,ee=0){return te.toLocaleString("en-US",{minimumFractionDigits:ee,maximumFractionDigits:ee})}function gaugeColour(te,ee,ne){return ee?te>=ee[1]?ne.bad:te>=ee[0]?ne.warn:ne.good:ne.accent}function gaugeOption(te,ee,ne){const xe=te.max??100,it=Math.max(0,Math.min(1,te.value/xe)),ut=gaugeColour(it,te.thresholds,ee),ht=te.style==="ring";return{animation:ne,animationDuration:1400,animationEasing:"cubicOut",series:[{type:"gauge",startAngle:ht?90:210,endAngle:ht?-270:-30,min:0,max:xe,radius:"92%",center:["50%",ht?"50%":"58%"],progress:{show:!0,width:ht?14:16,roundCap:!0,itemStyle:{color:ut,shadowBlur:12,shadowColor:withAlpha(ut,.5)}},pointer:{show:!ht,length:"60%",width:4,itemStyle:{color:ut}},axisLine:{lineStyle:{width:ht?14:16,color:[[1,ee.track]]}},axisTick:{show:!1},splitLine:{show:!ht,length:8,lineStyle:{color:ee.muted,width:1}},axisLabel:{show:!ht,color:ee.muted,fontSize:10,distance:18,fontFamily:FONT},anchor:{show:!ht,size:10,itemStyle:{color:ut}},title:{show:!1},detail:{valueAnimation:ne,offsetCenter:[0,ht?0:"28%"],fontSize:ht?28:24,fontWeight:700,fontFamily:FONT,color:ee.text,formatter:dt=>`${formatNumber$1(dt,Number.isInteger(te.value)?0:1)}${te.unit??""}`},data:[{value:te.value}]}]}}function chartOption(te,ee,ne){const xe={axisLine:{lineStyle:{color:ee.gridLine}},axisLabel:{color:ee.muted,fontFamily:FONT},splitLine:{lineStyle:{color:ee.gridLine}}},it=ht=>Array.isArray(ht)?ht.map(dt=>({...xe,...dt})):ht&&typeof ht=="object"?{...xe,...ht}:ht,ut=te.option;return{backgroundColor:"transparent",color:ee.series,textStyle:{color:ee.text,fontFamily:FONT},animation:ne,animationDuration:1200,animationEasing:"cubicOut",grid:{left:40,right:16,top:28,bottom:28,containLabel:!0},legend:{textStyle:{color:ee.muted}},tooltip:{trigger:"axis"},...ut,...ut.xAxis!==void 0?{xAxis:it(ut.xAxis)}:{},...ut.yAxis!==void 0?{yAxis:it(ut.yAxis)}:{}}}function chart3dOption(te,ee,ne){const xe=te.data.map(Mt=>Mt[2]),it=Math.max(...xe),ut=Math.min(...xe),ht=(Mt,ft)=>({type:Mt?"category":"value",data:Mt,name:"",axisLine:{lineStyle:{color:ee.gridLine}},axisLabel:{color:ee.muted,fontFamily:FONT},splitLine:{lineStyle:{color:ee.gridLine}},axisPointer:{show:!1},nameTextStyle:{color:ee.muted},id:ft}),dt={type:te.type,data:te.data,shading:"lambert",emphasis:{itemStyle:{color:ee.text}}};return te.type==="bar3D"&&(dt.bevelSize=.2),te.type==="scatter3D"&&(dt.symbolSize=9),te.type==="line3D"&&(dt.lineStyle={width:3,color:ee.accent}),te.type==="surface"&&(dt.wireframe={show:!0,lineStyle:{color:withAlpha(ee.accent,.35)}}),{backgroundColor:"transparent",textStyle:{fontFamily:FONT},tooltip:{},visualMap:{show:!1,min:ut,max:it,dimension:2,inRange:{color:[withAlpha(ee.accent,.55),ee.accent,ee.series[1]]}},xAxis3D:ht(te.xAxis,"x"),yAxis3D:ht(te.yAxis,"y"),zAxis3D:{type:"value",name:"",axisLine:{lineStyle:{color:ee.gridLine}},axisLabel:{color:ee.muted,fontFamily:FONT},splitLine:{lineStyle:{color:ee.gridLine}}},grid3D:{boxWidth:100,boxDepth:80,boxHeight:60,axisPointer:{show:!1},light:{main:{intensity:1.3,shadow:!1,alpha:40,beta:30},ambient:{intensity:.5}},viewControl:{autoRotate:ne&&te.rotate!==!1,autoRotateSpeed:8,distance:190,alpha:24,beta:35,projection:"perspective"},environment:"none"},series:[dt]}}function globeTexture(te,ee){if(typeof document>"u")return;const ne=document.createElement("canvas");ne.width=1024,ne.height=512;const xe=ne.getContext("2d");if(xe){xe.fillStyle=ee==="dark"?"#0b1a33":"#dbe7f5",xe.fillRect(0,0,ne.width,ne.height),xe.strokeStyle=withAlpha(te.accent,ee==="dark"?.28:.35),xe.lineWidth=1.2;for(let it=0;it<360;it+=15){const ut=it/360*ne.width;xe.beginPath(),xe.moveTo(ut,0),xe.lineTo(ut,ne.height),xe.stroke()}for(let it=15;it<180;it+=15){const ut=it/180*ne.height;xe.beginPath(),xe.moveTo(0,ut),xe.lineTo(ne.width,ut),xe.stroke()}return xe.strokeStyle=withAlpha(te.accent,.6),xe.lineWidth=2,xe.beginPath(),xe.moveTo(0,ne.height/2),xe.lineTo(ne.width,ne.height/2),xe.stroke(),ne.toDataURL("image/png")}}function globeOption(te,ee,ne,xe){const it=(te.arcs??[]).map(dt=>({coords:[dt.from,dt.to],name:dt.label})),ut=(te.points??[]).map(dt=>({name:dt.label,value:[dt.coord[0],dt.coord[1],0,dt.value??1]})),ht=Math.max(1,...ut.map(dt=>dt.value[3]));return{backgroundColor:"transparent",globe:{baseTexture:xe,shading:"color",environment:"none",globeRadius:78,atmosphere:{show:!0,color:ee.accent,glowPower:5,innerGlowPower:2,offset:4},light:{ambient:{intensity:1},main:{intensity:.2}},viewControl:{autoRotate:ne&&te.rotate!==!1,autoRotateSpeed:3,distance:150,targetCoord:it[0]?.coords[0]??ut[0]?.value.slice(0,2)}},series:[{type:"lines3D",coordinateSystem:"globe",blendMode:"lighter",lineStyle:{width:2.5,color:ee.series[1],opacity:.9},effect:{show:ne,period:3,trailWidth:4,trailLength:.3,trailOpacity:1,trailColor:"#ffffff"},data:it},{type:"scatter3D",coordinateSystem:"globe",symbolSize:dt=>6+10*Math.sqrt((dt[3]??1)/ht),itemStyle:{color:ee.series[1],opacity:.9},label:{show:!0,formatter:"{b}",color:ee.text,fontSize:11,fontFamily:FONT,backgroundColor:"transparent",distance:6},data:ut}]}}const SCREEN_FIELDS=new Set(["title","subtitle","theme","accent","columns","panels"]),COMMON=["kind","title","span","height"],FIELDS={kpi:["value","unit","prefix","decimals","delta","upIsGood","trend","label"],gauge:["value","max","unit","style","thresholds"],rank:["items","unit","top"],chart:["option"],chart3d:["type","data","xAxis","yAxis","rotate"],globe:["arcs","points","rotate"]},KINDS=new Set(["kpi","gauge","rank","chart","chart3d","globe"]),CHART3D_TYPES=new Set(["bar3D","scatter3D","surface","line3D"]),HEX$2=/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i,MAX_POINTS=5e3,MAX_ITEMS=50,MAX_ARCS=300,bad$3=te=>({ok:!1,error:{code:"invalid-definition",message:te}}),isRecord$2=te=>typeof te=="object"&&te!==null&&!Array.isArray(te),finite$2=te=>typeof te=="number"&&Number.isFinite(te),text$4=(te,ee=120)=>typeof te=="string"&&te.length<=ee,lngLat=te=>Array.isArray(te)&&te.length===2&&te.every(finite$2)&&Math.abs(te[0])<=180&&Math.abs(te[1])<=90;function parseKpi(te,ee){if(!finite$2(te.value))return bad$3(`${ee}.value must be a number`);const ne={kind:"kpi",value:te.value};if(te.unit!==void 0){if(!text$4(te.unit,16))return bad$3(`${ee}.unit must be a short string`);ne.unit=te.unit}if(te.prefix!==void 0){if(!text$4(te.prefix,8))return bad$3(`${ee}.prefix must be a short string`);ne.prefix=te.prefix}if(te.decimals!==void 0){if(!Number.isInteger(te.decimals)||te.decimals<0||te.decimals>6)return bad$3(`${ee}.decimals must be a whole number from 0 to 6`);ne.decimals=te.decimals}if(te.delta!==void 0){if(!finite$2(te.delta))return bad$3(`${ee}.delta must be a number (a fraction: 0.12 is +12%)`);ne.delta=te.delta}if(te.upIsGood!==void 0){if(typeof te.upIsGood!="boolean")return bad$3(`${ee}.upIsGood must be true or false`);ne.upIsGood=te.upIsGood}if(te.trend!==void 0){if(!Array.isArray(te.trend)||te.trend.length<2||te.trend.length>200||!te.trend.every(finite$2))return bad$3(`${ee}.trend must be 2 to 200 numbers`);ne.trend=te.trend}if(te.label!==void 0){if(!text$4(te.label,40))return bad$3(`${ee}.label must be a short string`);ne.label=te.label}return{ok:!0,value:ne}}function parseGauge(te,ee){if(!finite$2(te.value))return bad$3(`${ee}.value must be a number`);const ne={kind:"gauge",value:te.value};if(te.max!==void 0){if(!finite$2(te.max)||te.max<=0)return bad$3(`${ee}.max must be a positive number`);ne.max=te.max}if(te.unit!==void 0){if(!text$4(te.unit,16))return bad$3(`${ee}.unit must be a short string`);ne.unit=te.unit}if(te.style!==void 0){if(te.style!=="dial"&&te.style!=="ring")return bad$3(`${ee}.style must be dial or ring`);ne.style=te.style}if(te.thresholds!==void 0){const xe=te.thresholds;if(!Array.isArray(xe)||xe.length!==2||!xe.every(finite$2)||!(xe[0]>=0&&xe[0]<=xe[1]&&xe[1]<=1))return bad$3(`${ee}.thresholds must be two fractions in order, e.g. [0.6, 0.85]`);ne.thresholds=[xe[0],xe[1]]}return{ok:!0,value:ne}}function parseRank(te,ee){if(!Array.isArray(te.items)||te.items.length===0||te.items.length>MAX_ITEMS)return bad$3(`${ee}.items must be 1 to ${MAX_ITEMS} entries`);const ne=[];for(const[it,ut]of te.items.entries()){if(!isRecord$2(ut)||!text$4(ut.name,40)||!finite$2(ut.value))return bad$3(`${ee}.items[${it}] must be {name, value}`);for(const ht of Object.keys(ut))if(ht!=="name"&&ht!=="value")return bad$3(`${ee}.items[${it}].${ht} is not a field of a rank item`);ne.push({name:ut.name,value:ut.value})}const xe={kind:"rank",items:ne};if(te.unit!==void 0){if(!text$4(te.unit,16))return bad$3(`${ee}.unit must be a short string`);xe.unit=te.unit}if(te.top!==void 0){if(!Number.isInteger(te.top)||te.top<1||te.top>MAX_ITEMS)return bad$3(`${ee}.top must be a whole number from 1 to ${MAX_ITEMS}`);xe.top=te.top}return{ok:!0,value:xe}}function parseChart3d(te,ee){if(typeof te.type!="string"||!CHART3D_TYPES.has(te.type))return bad$3(`${ee}.type must be one of ${[...CHART3D_TYPES].join(", ")}`);if(!Array.isArray(te.data)||te.data.length===0||te.data.length>MAX_POINTS)return bad$3(`${ee}.data must be 1 to ${MAX_POINTS} points`);const ne=[];for(const[it,ut]of te.data.entries()){if(!Array.isArray(ut)||ut.length!==3||!ut.every(finite$2))return bad$3(`${ee}.data[${it}] must be [x, y, z]`);ne.push([ut[0],ut[1],ut[2]])}const xe={kind:"chart3d",type:te.type,data:ne};for(const it of["xAxis","yAxis"]){const ut=te[it];if(ut!==void 0){if(!Array.isArray(ut)||ut.length===0||ut.length>200||!ut.every(ht=>text$4(ht,40)))return bad$3(`${ee}.${it} must be a list of category names`);xe[it]=ut}}if(te.rotate!==void 0){if(typeof te.rotate!="boolean")return bad$3(`${ee}.rotate must be true or false`);xe.rotate=te.rotate}return{ok:!0,value:xe}}function parseGlobe(te,ee){const ne={kind:"globe"};if(te.arcs!==void 0){if(!Array.isArray(te.arcs)||te.arcs.length>MAX_ARCS)return bad$3(`${ee}.arcs must be up to ${MAX_ARCS} entries`);ne.arcs=[];for(const[xe,it]of te.arcs.entries()){if(!isRecord$2(it)||!lngLat(it.from)||!lngLat(it.to))return bad$3(`${ee}.arcs[${xe}] must be {from: [lng, lat], to: [lng, lat]}`);const ut={from:it.from,to:it.to};if(it.label!==void 0){if(!text$4(it.label,40))return bad$3(`${ee}.arcs[${xe}].label must be a short string`);ut.label=it.label}ne.arcs.push(ut)}}if(te.points!==void 0){if(!Array.isArray(te.points)||te.points.length>MAX_ARCS)return bad$3(`${ee}.points must be up to ${MAX_ARCS} entries`);ne.points=[];for(const[xe,it]of te.points.entries()){if(!isRecord$2(it)||!lngLat(it.coord))return bad$3(`${ee}.points[${xe}] must be {coord: [lng, lat]}`);const ut={coord:it.coord};if(it.label!==void 0){if(!text$4(it.label,40))return bad$3(`${ee}.points[${xe}].label must be a short string`);ut.label=it.label}if(it.value!==void 0){if(!finite$2(it.value)||it.value<0)return bad$3(`${ee}.points[${xe}].value must be zero or a positive number`);ut.value=it.value}ne.points.push(ut)}}if(!ne.arcs?.length&&!ne.points?.length)return bad$3(`${ee} needs arcs or points`);if(te.rotate!==void 0){if(typeof te.rotate!="boolean")return bad$3(`${ee}.rotate must be true or false`);ne.rotate=te.rotate}return{ok:!0,value:ne}}function parsePanel(te,ee,ne){const xe=`panels[${ee}]`;if(!isRecord$2(te))return bad$3(`${xe} must be an object`);if(typeof te.kind!="string"||!KINDS.has(te.kind))return bad$3(`${xe}.kind must be one of ${[...KINDS].join(", ")}`);const it=te.kind,ut=new Set([...COMMON,...FIELDS[it]]);for(const Mt of Object.keys(te))if(!ut.has(Mt))return bad$3(`${xe}.${Mt} is not a field of a ${it} panel`);let ht;switch(it){case"kpi":ht=parseKpi(te,xe);break;case"gauge":ht=parseGauge(te,xe);break;case"rank":ht=parseRank(te,xe);break;case"chart":if(!isRecord$2(te.option))return bad$3(`${xe}.option must be an ECharts option object`);ht={ok:!0,value:{kind:"chart",option:te.option}};break;case"chart3d":ht=parseChart3d(te,xe);break;case"globe":ht=parseGlobe(te,xe);break}if(!ht.ok)return ht;const dt=ht.value;if(te.title!==void 0){if(!text$4(te.title,80))return bad$3(`${xe}.title must be a short string`);dt.title=te.title}if(te.span!==void 0){if(!Number.isInteger(te.span)||te.span<1||te.span>ne)return bad$3(`${xe}.span must be a whole number from 1 to ${ne}`);dt.span=te.span}if(te.height!==void 0){if(!finite$2(te.height)||te.height<80||te.height>900)return bad$3(`${xe}.height must be from 80 to 900 pixels`);dt.height=te.height}return{ok:!0,value:dt}}function parseBigscreen(te,ee={}){const ne=ee.maxPanels??24,xe=ee.maxSourceBytes??64*1024;if(new TextEncoder().encode(te).byteLength>xe)return{ok:!1,error:{code:"too-large",message:"Screen definition is too large."}};let it;try{it=JSON.parse(te)}catch{return{ok:!1,error:{code:"invalid-json",message:"Screen definition is not valid JSON."}}}if(!isRecord$2(it))return bad$3("A screen definition must be a JSON object");for(const ht of Object.keys(it))if(!SCREEN_FIELDS.has(ht))return bad$3(`${ht} is not a field of a screen definition`);const ut={theme:ee.theme??"dark",columns:12,panels:[]};if(it.title!==void 0){if(!text$4(it.title,80))return bad$3("title must be a short string");ut.title=it.title}if(it.subtitle!==void 0){if(!text$4(it.subtitle,120))return bad$3("subtitle must be a short string");ut.subtitle=it.subtitle}if(it.theme!==void 0){if(it.theme!=="dark"&&it.theme!=="light")return bad$3("theme must be dark or light");ut.theme=it.theme}if(it.accent!==void 0){if(typeof it.accent!="string"||!HEX$2.test(it.accent))return bad$3("accent must be a hex colour like #22d3ee");ut.accent=it.accent}if(it.columns!==void 0){if(!Number.isInteger(it.columns)||it.columns<1||it.columns>24)return bad$3("columns must be a whole number from 1 to 24");ut.columns=it.columns}if(!Array.isArray(it.panels)||it.panels.length===0)return bad$3("panels must be a non-empty array");if(it.panels.length>ne)return bad$3(`panels has more than ${ne} entries`);for(const[ht,dt]of it.panels.entries()){const Mt=parsePanel(dt,ht,ut.columns);if(!Mt.ok)return Mt;ut.panels.push(Mt.value)}return{ok:!0,value:ut}}function bigscreenPromptSpec(te){return translate$2(PROMPT$5,te,"spec")}const ZH$2=`数据大屏(围栏代码块):\`\`\`bigscreen 开头,块内是一个 JSON 对象。当用户要一个"大屏 / 看板 / dashboard / 总览",或者要把一组指标、排行、趋势、地域分布放在一起漂亮地展示时,输出一个 bigscreen 块。它会画成深色发光的数据墙:数字滚动增长、仪表盘扫过、排行条生长、图表逐步绘出、3D 图和地球缓慢旋转。文字说明照常写在块外。
23
+ `)}const baseCss=["[data-aigui-renderer]{max-width:100%}","[data-aigui-renderer] img,[data-aigui-renderer] svg,[data-aigui-renderer] video,[data-aigui-renderer] canvas{max-width:100%;height:auto}","[data-aigui-renderer] pre{max-width:100%;overflow-x:auto}","[data-aigui-renderer] code{overflow-wrap:anywhere}","[data-aigui-renderer] pre code{overflow-wrap:normal}","[data-aigui-renderer] table:where(:not([data-aigui-resultset] *):not([data-aigui-dashboard] *)){display:block;max-width:100%;overflow-x:auto;border-collapse:collapse}","[data-aigui-renderer] p,[data-aigui-renderer] li,[data-aigui-renderer] h1,[data-aigui-renderer] h2,[data-aigui-renderer] h3{overflow-wrap:break-word}","[data-aigui-renderer] a{overflow-wrap:anywhere}","[data-aigui-renderer] [data-aigui-chart],[data-aigui-renderer] [data-aigui-mermaid],[data-aigui-renderer] [data-aigui-map],[data-aigui-renderer] [data-aigui-molecule]{max-width:100%;overflow-x:auto}"].join("");function collectPluginStyles(te){const ee=new Map;ee.set("base",baseCss);for(const ne of te??[]){const xe=ne?.css?.trim();xe&&(xe.startsWith("@import")&&!/@import\s+url\(|@import\s+["'](?:https?:)?\/\//.test(xe)||ee.set(ne.name,xe))}return[...ee].map(([ne,xe])=>({name:ne,css:xe}))}const STYLE_ATTR="data-aigui-style";function injectPluginStyles(te,ee){const ne=ee??(typeof document>"u"?void 0:document);if(ne?.head)for(const{name:xe,css:it}of collectPluginStyles(te)){if(ne.querySelector(`style[${STYLE_ATTR}="${CSS_ESCAPE(xe)}"]`))continue;const ut=ne.createElement("style");ut.setAttribute(STYLE_ATTR,xe),ut.textContent=it,ne.head.appendChild(ut)}}function CSS_ESCAPE(te){return te.replace(/["\\]/g,"\\$&")}function resolveMessages(te,ee){const ne=te.en??{};if(!ee)return ne;const xe=te[ee];if(xe)return{...ne,...xe};const it=ee.split("-")[0],ut=it&&it!==ee?te[it]:void 0;return ut?{...ne,...ut}:ne}function translate$2(te,ee,ne){return resolveMessages(te,ee)[ne]??ne}function measure(te,ee){const ne=typeof te.getBoundingClientRect=="function"?te.getBoundingClientRect():void 0,xe=ht=>Number.parseFloat(te.getAttribute(ht)??""),it=ht=>{const dt=(te.getAttribute("viewBox")??"").split(/[\s,]+/).map(Number);return dt.length===4&&Number.isFinite(dt[ht])?dt[ht]:Number.NaN},ut=(...ht)=>ht.find(dt=>Number.isFinite(dt)&&dt>0);return{width:Math.round(ut(ee.width??Number.NaN,ne?.width??Number.NaN,xe("width"),it(2),720)),height:Math.round(ut(ee.height??Number.NaN,ne?.height??Number.NaN,xe("height"),it(3),400))}}function rasterisable(te){const ee=te.cloneNode(!0),ne=Array.from(ee.querySelectorAll("foreignObject"));for(const xe of ne){const it=(xe.textContent??"").trim(),ut=xe.parentNode;if(!ut)continue;if(!it){ut.removeChild(xe);continue}const ht=Number.parseFloat(xe.getAttribute("x")??"0"),dt=Number.parseFloat(xe.getAttribute("y")??"0"),Mt=Number.parseFloat(xe.getAttribute("width")??"0"),ft=Number.parseFloat(xe.getAttribute("height")??"0"),gt=document.createElementNS("http://www.w3.org/2000/svg","text");gt.setAttribute("x",String(ht+Mt/2)),gt.setAttribute("y",String(dt+ft/2)),gt.setAttribute("text-anchor","middle"),gt.setAttribute("dominant-baseline","middle"),gt.setAttribute("font-size","14"),gt.setAttribute("fill","currentColor"),gt.textContent=it,ut.replaceChild(gt,xe)}return ee}async function exportSVGToImage(te,ee={}){const{width:ne,height:xe}=measure(te,ee),it=ee.scale&&ee.scale>0?ee.scale:globalThis.devicePixelRatio||1,ut=new XMLSerializer().serializeToString(rasterisable(te)),ht=/\sxmlns=/.test(ut)?ut:ut.replace(/^<svg/,'<svg xmlns="http://www.w3.org/2000/svg"'),dt=URL.createObjectURL(new Blob([ht],{type:"image/svg+xml;charset=utf-8"}));try{const Mt=await loadImage(dt),ft=document.createElement("canvas");ft.width=Math.max(1,Math.round(ne*it)),ft.height=Math.max(1,Math.round(xe*it));const gt=ft.getContext("2d");if(!gt)throw new Error("This browser cannot rasterize images");const xt=ee.background??"#ffffff";return xt!=="transparent"&&(gt.fillStyle=xt,gt.fillRect(0,0,ft.width,ft.height)),gt.scale(it,it),gt.drawImage(Mt,0,0,ne,xe),{dataUrl:ft.toDataURL(ee.type??"image/png",ee.quality),width:ft.width,height:ft.height}}finally{URL.revokeObjectURL(dt)}}async function exportRenderedImages(te,ee={}){const ne=[];for(const xe of Array.from(te.querySelectorAll("svg")))if(!xe.closest(".katex"))try{ne.push(await exportSVGToImage(xe,ee))}catch(it){ee.onSkip?.(xe,it)}return ne}function loadImage(te){return new Promise((ee,ne)=>{const xe=new Image;xe.onload=()=>ee(xe),xe.onerror=()=>ne(new Error("The drawing could not be decoded")),xe.src=te})}function diffAst(te,ee){const ne=[],xe=new Set(ee.map(ut=>ut.key)),it=[...te];for(let ut=it.length-1;ut>=0;ut--)xe.has(it[ut].key)||(ne.push({op:"remove",key:it[ut].key}),it.splice(ut,1));for(let ut=0;ut<ee.length;ut++){const ht=ee[ut],dt=it.findIndex(Mt=>Mt.key===ht.key);if(dt===-1){ne.push({op:"insert",index:ut,node:ht}),it.splice(ut,0,ht);continue}if(dt!==ut){ne.push({op:"move",key:ht.key,index:ut});const[Mt]=it.splice(dt,1);it.splice(ut,0,Mt)}nodeEqual(it[ut],ht)||(ne.push({op:"update",key:ht.key,node:ht}),it[ut]=ht)}return ne}function nodeEqual(te,ee){return te===ee?!0:JSON.stringify(te)===JSON.stringify(ee)}var Renderer$1=class{debugSource="renderer";buffer="";prevAst=[];parse;parsed;options;sanitize;generation=0;activeFeed;renderScheduled=!1;scheduleGeneration=0;debug;constructor(ee={}){this.options=ee,assertPlugins(ee.plugins),this.debug=new DebugEmitter(this.debugSource,ee),this.sanitize=ee.sanitize===!1?!1:typeof ee.sanitize=="object"?ee.sanitize:{},this.registerPluginCards(ee.plugins),this.parse=createParserWithMetadata({registry:ee.registry,plugins:ee.plugins,rawHtml:ee.rawHtml})}get plugins(){return this.options.plugins??[]}setPlugins(ee){assertPlugins(ee),!samePlugins(this.options.plugins,ee)&&(this.options={...this.options,plugins:ee},this.registerPluginCards(ee),this.parse=createParserWithMetadata({registry:this.options.registry,plugins:ee,rawHtml:this.options.rawHtml}),this.parsed=void 0,this.renderScheduled=!1,this.scheduleGeneration++,this.debug.active&&this.debug.emit("plugins-changed",{plugins:(ee??[]).map(ne=>ne.name)}),this.render())}registerPluginCards(ee){const ne=this.options.registry;if(ne)for(const xe of ee??[])for(const it of xe.cards??[])ne.register(it)}get debugEnabled(){return this.debug.available}emitDebug(ee,ne={}){this.debug.emit(ee,ne)}push(ee){this.buffer+=ee,this.debug.active&&this.debug.emit("chunk-received",{chunk:ee,length:ee.length,bufferLength:this.buffer.length}),this.scheduleRender()}subscribeDebug(ee){return this.debug.subscribe(ee)}async feed(ee,ne={}){const xe=++this.generation;this.cancelActiveFeed(createAbortError("Superseded by a newer feed")),this.debug.active&&this.debug.emit("feed-started",{generation:xe});const it=new TextDecoder,ut=ne.signal;if(ut?.aborted)throw abortReason$1(ut);let ht=!1,dt;const Mt=()=>{ht=!0,dt=abortReason$1(ut),this.activeFeed?.generation===xe&&this.cancelActiveFeed(dt)};ut?.addEventListener("abort",Mt,{once:!0});const ft=gt=>{if(xe!==this.generation||ht)return;const xt=typeof gt=="string"?it.decode()+gt:it.decode(gt,{stream:!0});xt&&this.push(xt)};try{if(isReadableStream$2(ee)){const gt=ee.getReader();let xt=!1;this.activeFeed={generation:xe,cancel:async mt=>{xt||(xt=!0,await gt.cancel(mt))}};try{for(;;){const{done:mt,value:Dt}=await gt.read();if(mt||xe!==this.generation||ht)break;Dt!=null&&ft(Dt)}}finally{gt.releaseLock()}}else{const gt=ee[Symbol.asyncIterator]();let xt=!1;this.activeFeed={generation:xe,cancel:async()=>{xt||(xt=!0,await gt.return?.())}};try{for(;;){const{done:mt,value:Dt}=await gt.next();if(mt||xe!==this.generation||ht)break;ft(Dt)}}finally{(xe!==this.generation||ht)&&!xt&&(xt=!0,await gt.return?.())}}if(xe===this.generation&&!ht){const gt=it.decode();gt&&this.push(gt),this.flush()}if(ht)throw this.debug.active&&this.debug.emit("feed-cancelled",{generation:xe,error:dt}),dt;xe===this.generation&&this.debug.active&&this.debug.emit("feed-completed",{generation:xe,bufferLength:this.buffer.length})}finally{!ht&&xe!==this.generation&&this.debug.active&&this.debug.emit("feed-cancelled",{generation:xe,reason:"superseded-or-reset"}),ut?.removeEventListener("abort",Mt),this.activeFeed?.generation===xe&&(this.activeFeed=void 0)}}reset(){this.generation++,this.cancelActiveFeed(createAbortError("Renderer reset")),this.activeFeed=void 0,this.buffer="",this.renderScheduled=!1,this.scheduleGeneration++;const ee=diffAst(this.prevAst,[]);this.prevAst=[],this.parsed=void 0,this.options.onPatch?.(ee,[]),this.debug.active&&this.debug.emit("renderer-reset",{patches:ee})}flush(){this.renderScheduled&&(this.renderScheduled=!1,this.scheduleGeneration++,this.render())}scheduleRender(){if(!this.options.scheduler){this.render();return}if(this.renderScheduled)return;this.renderScheduled=!0;const ee=++this.scheduleGeneration;this.options.scheduler(()=>{!this.renderScheduled||ee!==this.scheduleGeneration||(this.renderScheduled=!1,this.render())})}cancelActiveFeed(ee){const ne=this.activeFeed;ne&&Promise.resolve(ne.cancel(ee)).catch(()=>{})}render(){const ee=this.debug.active,ne=ee?now$1():0,xe=this.parsed;let it,ut="full";if(xe?.incrementalSafe&&xe.blocks.length>1){const mt=xe.blocks.at(-1),Dt=xe.blocks.slice(0,-1),yt=mt.nodeStart,wt=this.buffer.slice(mt.start),At=repairMarkdown(wt);ee&&this.debug.emit("markdown-repaired",{mode:"mutable-tail",raw:wt,rawLength:wt.length,repaired:At,repairedLength:At.length,sourceOffset:mt.start});const Lt=ee?now$1():0,bt=this.parse(At,wt,mt.start);if(ee&&this.debug.emit("mutable-tail-reparsed",{sourceOffset:mt.start,durationMs:now$1()-Lt}),bt.incrementalSafe)ut="mutable-tail",this.sanitize!==!1&&this.sanitizeNodesWithDebug(bt.nodes),it={nodes:[...xe.nodes.slice(0,yt),...bt.nodes],blocks:[...Dt,...bt.blocks.map(vt=>({...vt,nodeStart:vt.nodeStart+yt,nodeEnd:vt.nodeEnd+yt}))],incrementalSafe:!0},ee&&this.debug.emit("stable-prefix-committed",{blocks:Dt.length,nodes:yt});else{const vt=repairMarkdown(this.buffer);ee&&this.debug.emit("markdown-repaired",{mode:"full",raw:this.buffer,rawLength:this.buffer.length,repaired:vt,repairedLength:vt.length});const Qt=ee?now$1():0;it=this.parse(vt,this.buffer),ee&&this.debug.emit("parse-completed",{mode:"full",durationMs:now$1()-Qt}),this.sanitize!==!1&&this.sanitizeNodesWithDebug(it.nodes)}}else{const mt=repairMarkdown(this.buffer);ee&&this.debug.emit("markdown-repaired",{mode:"full",raw:this.buffer,rawLength:this.buffer.length,repaired:mt,repairedLength:mt.length});const Dt=ee?now$1():0;it=this.parse(mt,this.buffer),ee&&this.debug.emit("parse-completed",{mode:"full",durationMs:now$1()-Dt}),this.sanitize!==!1&&this.sanitizeNodesWithDebug(it.nodes)}const ht=it.nodes;for(const mt of this.options.plugins??[])if(mt.onASTCommit)try{mt.onASTCommit(ht,{generation:this.generation,emitDebug:(Dt,yt={})=>this.debug.emit(Dt,{plugin:mt.name,...yt})})}catch(Dt){ee&&this.debug.emit("plugin-commit-failed",{plugin:mt.name,error:Dt})}const dt=ee?now$1():0,Mt=diffAst(this.prevAst,ht),ft=ee?now$1()-dt:0;this.parsed=it,this.prevAst=ht;const gt=ee?now$1():0;Mt.length>0&&this.options.onPatch?.(Mt,ht);const xt=ee?now$1()-gt:0;ee&&(this.debug.emit("ast-snapshot",{mode:ut,nodes:ht}),this.debug.emit("ast-patches",{patches:Mt,durationMs:ft}),this.debug.emit("patch-dispatched",{patches:Mt.length,durationMs:xt,renderDurationMs:now$1()-ne}))}sanitizeNodesWithDebug(ee){if(this.sanitize===!1)return;if(!this.debug.active){sanitizeNodes(ee,this.sanitize);return}const ne=nodeMarkupSize(ee),xe=now$1();sanitizeNodes(ee,this.sanitize),this.debug.emit("sanitizer-completed",{inputSize:ne,outputSize:nodeMarkupSize(ee),durationMs:now$1()-xe})}};function sanitizeNodes(te,ee){for(const ne of te)ne.type==="html"&&typeof ne.content=="string"&&(ne.content=sanitizeHtml(ne.content,ee)),ne.html&&(ne.html=sanitizeHtml(ne.html,ee)),ne.children&&sanitizeNodes(ne.children,ee)}function isReadableStream$2(te){return"getReader"in te&&typeof te.getReader=="function"}function abortReason$1(te){return te?.reason??createAbortError("The operation was aborted")}function createAbortError(te){const ee=new Error(te);return ee.name="AbortError",ee}function now$1(){return typeof performance>"u"?Date.now():performance.now()}function nodeMarkupSize(te){let ee=0;for(const ne of te)ee+=ne.content?.length??0,ee+=ne.html?.length??0,ne.children&&(ee+=nodeMarkupSize(ne.children));return ee}function renderOutputToElement(te,ee,ne={}){switch(te.kind){case"html":{const xe=document.createElement("div");return xe.innerHTML=sanitizeRenderedHtml(te.html,ee,te.trusted),xe}case"element":{const xe=document.createElement(te.tag);for(const[it,ut]of Object.entries(te.props??{}))it==="class"||it==="className"?xe.className=String(ut):xe.setAttribute(it,String(ut));for(const it of te.children??[])xe.appendChild(renderOutputToElement(it,ee,ne));return xe}case"card":{const xe=document.createElement("pre");xe.setAttribute("data-aigui-card-fallback","");const it=document.createElement("code");return it.textContent=JSON.stringify(te.data,null,2),xe.appendChild(it),xe}case"mount":{const xe=document.createElement("div");return xe.setAttribute("data-aigui-mount",""),queueMicrotask(()=>{if(xe.__aiguiDisposed)return;const it=te.mount(xe,ne);typeof it=="function"&&(xe.__aiguiDisposed?it():xe.__aiguiCleanup=it)}),xe}}}function renderNodeToElement(te,ee){const ne=(ee.nodeRenderers??collectNodeRenderers(ee.plugins))[te.type];if(ne){if(te.complete===!1){const xe=document.createElement("div");return xe.setAttribute("data-aigui-block-loading",""),xe.setAttribute("data-block-type",te.type),xe}try{const xe=ne(te,{theme:ee.theme,locale:ee.locale});if(typeof xe?.then=="function"){const it=document.createElement("div");return it.setAttribute("data-aigui-async-pending",""),xe.then(ut=>{it.__aiguiDisposed||(it.removeAttribute("data-aigui-async-pending"),it.replaceChildren(renderOutputToElement(ut,ee.sanitize,createRenderMountContext(ee))))},()=>{it.__aiguiDisposed||(it.removeAttribute("data-aigui-async-pending"),it.setAttribute("data-aigui-async-error",""))}),it}return renderOutputToElement(xe,ee.sanitize,createRenderMountContext(ee))}catch{return renderFallback(te,ee)}}switch(te.type){case"heading":{const xe=document.createElement(te.tag??"h1");return xe.innerHTML=renderHtml(te.html??"",ee),xe}case"paragraph":{const xe=document.createElement("p");return xe.innerHTML=renderHtml(te.html??"",ee),xe}case"code":{const xe=document.createElement("pre");te.attrs?.lang&&xe.setAttribute("data-lang",te.attrs.lang);const it=document.createElement("code");return it.textContent=te.content??"",xe.appendChild(it),xe}case"hr":return document.createElement("hr");case"html":{const xe=document.createElement("div");return xe.innerHTML=renderHtml(te.content??"",ee),xe}case"card":return renderCardElement(te,ee);default:return renderFallback(te,ee)}}function renderFallback(te,ee){const ne=document.createElement("div");return ne.innerHTML=renderHtml(te.html??te.content??"",ee),ne}function renderHtml(te,ee){return ee.sanitized||ee.sanitize===!1?te:sanitizeHtml(te,typeof ee.sanitize=="object"?ee.sanitize:void 0)}function renderCardElement(te,ee){const ne=te.card;if(!ne)return document.createElement("div");if(!ne.complete){const ht=document.createElement("div");return ht.setAttribute("data-aigui-card-loading",""),ht.setAttribute("data-card-type",ne.type),ht}if(!ne.valid){const ht=document.createElement("pre");ht.setAttribute("data-aigui-card-invalid","");const dt=document.createElement("code");return dt.textContent=JSON.stringify(ne.data,null,2),ht.appendChild(dt),ht}const xe=ee.registry?.getRender(ne.type);if(!xe)return createCardFallback(ne,ee);const it=document.createElement("div");it.setAttribute("data-aigui-card",ne.type);const ut=createCardController(it,ne,xe,ee);return it.__aiguiCardController=ut,it.__aiguiCleanup=()=>ut.destroy(),it}function createRenderMountContext(te){return{mountCard(ee,ne){return mountCardSlot(ee,ne,te)}}}function mountCardSlot(te,ee,ne){const xe=ne.registry?.getRender(ee.type);if(xe)return createVanillaCardSlot(te,ee.data,xe,()=>({state:{status:"idle"},onAction:it=>ne.onCardAction?.({...it,cardType:ee.type})}))}function createVanillaCardSlot(te,ee,ne,xe){let it=!1,ut,ht;const dt=Mt=>{const ft=ne(Mt,xe());isVanillaCardInstance(ft)?(ut=ft,ht=ft.element):(ut=void 0,ht=ft),te.replaceChildren(ht)};return dt(ee),{element:()=>ht,update(Mt){it||(ut?ut.update(Mt,xe()):dt(Mt))},destroy(){it||(it=!0,ut?.destroy?.(),ut=void 0)}}}function createCardFallback(te,ee){const ne=document.createElement("pre");ne.setAttribute("data-aigui-card-fallback","");const xe=document.createElement("code");ne.appendChild(xe);const it=dt=>{ne.removeAttribute("data-aigui-card-missing"),xe.textContent=JSON.stringify(dt,null,2)},ut=()=>{ne.setAttribute("data-aigui-card-missing",""),xe.textContent="Card data is unavailable"};let ht=()=>{};if(te.id!==void 0&&ee.cardStore){try{const dt=ee.cardStore.register({id:te.id,type:te.type,data:te.data});it(dt.data)}catch(dt){ne.setAttribute("data-aigui-card-store-error",""),xe.textContent=dt instanceof Error?dt.message:"Card registration failed"}ht=ee.cardStore.subscribe(te.id,dt=>{!dt||dt.type!==te.type?ut():(ne.removeAttribute("data-aigui-card-store-error"),it(dt.data))}),ne.__aiguiCleanup=ht}else it(te.data);return ne}function updateCardElement(te,ee){return te.__aiguiCardController?.updateNode(ee)??!1}function createCardController(te,ee,ne,xe){let it=ee,ut=!1,ht=()=>{},dt,Mt=!1;const ft=it.id,gt=Lt=>xe.onCardAction?.({...Lt,cardType:it.type,...ft===void 0?{}:{cardId:ft}});let xt=it.data,mt={status:"idle"},Dt;if(ft!==void 0&&xe.cardStore)try{const Lt=xe.cardStore.register({id:ft,type:it.type,data:xt});xt=Lt.data,mt=Lt.action}catch(Lt){Dt=Lt}const yt=Lt=>{dt=createVanillaCardSlot(te,Lt,ne,()=>({state:mt,onAction:gt}))},wt=(Lt,bt)=>{if(!ut){if(xt=Lt,mt=bt,te.removeAttribute("data-aigui-card-store-error"),Mt){Mt=!1,te.removeAttribute("data-aigui-card-missing");const vt=dt?.element();vt&&te.replaceChildren(vt)}dt?dt.update(xt):yt(xt)}},At=()=>{if(ut||Mt)return;Mt=!0,te.removeAttribute("data-aigui-card-store-error"),te.setAttribute("data-aigui-card-missing","");const Lt=document.createElement("code");Lt.textContent="Card data is unavailable",te.replaceChildren(Lt)};if(Dt===void 0)yt(xt);else{te.setAttribute("data-aigui-card-store-error","");const Lt=document.createElement("code");Lt.textContent=Dt instanceof Error?Dt.message:"Card registration failed",te.replaceChildren(Lt)}return ft!==void 0&&xe.cardStore&&(ht=xe.cardStore.subscribe(ft,Lt=>{if(!Lt||Lt.type!==it.type){At();return}wt(Lt.data,Lt.action)})),{updateNode(Lt){const bt=Lt.card;return!bt?.complete||!bt.valid||bt.type!==it.type||bt.id!==ft?!1:(it=bt,(ft===void 0||!xe.cardStore)&&wt(bt.data,mt),!0)},destroy(){ut||(ut=!0,ht(),ht=()=>{},dt?.destroy(),dt=void 0)}}}function isVanillaCardInstance(te){return!(te instanceof HTMLElement)&&te!==null&&typeof te=="object"&&te.element instanceof HTMLElement&&typeof te.update=="function"}function createReconcileState(){return{els:new Map}}function disposeEl(te){for(const ee of te.querySelectorAll("*"))disposeManagedEl(ee);disposeManagedEl(te)}function disposeManagedEl(te){const ee=te;ee.__aiguiDisposed||(ee.__aiguiDisposed=!0,ee.__aiguiCleanup?.(),ee.__aiguiCleanup=void 0)}function reconcile(te,ee,ne,xe){const it=new Set(ee.map(ht=>ht.key));for(const[ht,dt]of xe.els)it.has(ht)||(disposeEl(dt.el),dt.el.remove(),xe.els.delete(ht));let ut=null;for(const ht of ee){const dt=JSON.stringify(ht);let Mt=xe.els.get(ht.key);if(!Mt)Mt={el:renderNodeToElement(ht,ne),hash:dt},xe.els.set(ht.key,Mt);else if(Mt.hash!==dt)if(updateElementInPlace(Mt.el,ht,ne))Mt.hash=dt;else{disposeEl(Mt.el);const gt=renderNodeToElement(ht,ne);Mt.el.replaceWith(gt),Mt.el=gt,Mt.hash=dt}const ft=ut?ut.nextSibling:te.firstChild;Mt.el!==ft&&te.insertBefore(Mt.el,ft),ut=Mt.el}}function updateElementInPlace(te,ee,ne){if(ne.nodeRenderers?.[ee.type])return!1;switch(ee.type){case"heading":return te.tagName!==(ee.tag??"h1").toUpperCase()?!1:(te.innerHTML=ee.html??"",!0);case"paragraph":return te.tagName!=="P"?!1:(te.innerHTML=ee.html??"",!0);case"code":{if(te.tagName!=="PRE")return!1;ee.attrs?.lang&&te.setAttribute("data-lang",ee.attrs.lang);let xe=te.querySelector("code");return xe||(xe=document.createElement("code"),te.appendChild(xe)),xe.textContent=ee.content??"",!0}case"hr":return te.tagName==="HR";case"html":return te.tagName!=="DIV"?!1:(te.innerHTML=ee.content??"",!0);case"card":return updateCardElement(te,ee);default:return te.tagName!=="DIV"?!1:(te.innerHTML=ee.html??ee.content??"",!0)}}function createRenderer(te,ee={}){const{actionRuntime:ne,cardStore:xe,onCardAction:it,nodeRenderers:ut,theme:ht,locale:dt,onRender:Mt,onNodeClick:ft,plugins:gt,...xt}=ee,mt=loadPlugins(gt),Dt=Array.isArray(mt)?mt:void 0;injectPluginStyles(Dt,te.ownerDocument);let yt="",wt=[],At={owner:{},controller:new AbortController};const Lt=Ot=>{ne&&ne.dispatch({...Ot,params:Ot.params},{owner:At.owner,signal:At.controller.signal}).catch(()=>{}),it?.(Ot)},bt=createReconcileState();let vt=!1;const Qt=new Renderer$1({...xt,plugins:Dt,onPatch:(Ot,zt)=>{vt||(wt=zt,reconcile(te,zt,Ut,bt),Mt?.(zt))}}),Ct=Ot=>({...collectNodeRenderers(Ot,{debugTarget:Qt}),...ut}),Ut={registry:ee.registry,cardStore:xe,onCardAction:Lt,plugins:Dt,nodeRenderers:Ct(Dt),sanitize:ee.sanitize,sanitized:!0,theme:ht,locale:dt},Rt=()=>{for(const Ot of bt.els.values())disposeEl(Ot.el)},Ft=Ot=>{assertPlugins(Ot),!(vt||samePlugins(Ut.plugins,Ot))&&(Ut.plugins=Ot,Ut.nodeRenderers=Ct(Ot),injectPluginStyles(Ot,te.ownerDocument),Rt(),bt.els.clear(),te.replaceChildren(),Qt.setPlugins(Ot),reconcile(te,wt,Ut,bt))},Gt=Ot=>{const zt=Ot;if(!(!zt||typeof zt.nodeType!="number")){for(const[Xt,Zt]of bt.els)if(Zt.el===zt||Zt.el.contains(zt))return wt.find(Ht=>Ht.key===Xt)}},_t=Ot=>{const zt=Gt(Ot.target);zt&&ft?.(zt,Ot)};ft&&te.addEventListener("click",_t),Array.isArray(mt)||mt.then(Ot=>{try{Ft(Ot)}catch(zt){Qt.emitDebug("plugins-load-failed",{error:zt}),console.error(zt)}},Ot=>Qt.emitDebug("plugins-load-failed",{error:Ot}));const Pt=()=>{At.controller.abort(),At={owner:{},controller:new AbortController}};return{debugSource:"renderer",subscribeDebug:Ot=>Qt.subscribeDebug(Ot),push:Ot=>{vt||(Qt.push(Ot),yt+=Ot)},setText:Ot=>{vt||Ot===yt||(Ot.startsWith(yt)?Qt.push(Ot.slice(yt.length)):(Pt(),Rt(),Qt.reset(),bt.els.clear(),te.replaceChildren(),Qt.push(Ot)),yt=Ot)},setTheme:Ot=>{vt||Ut.theme===Ot||(Ut.theme=Ot,Rt(),bt.els.clear(),te.replaceChildren(),reconcile(te,wt,Ut,bt))},setPlugins:Ft,exportImages:Ot=>exportRenderedImages(te,Ot),feed:(Ot,zt)=>vt?Promise.resolve():Qt.feed(Ot,zt),reset:()=>{vt||(Pt(),Rt(),Qt.reset(),bt.els.clear(),te.replaceChildren(),yt="")},destroy:()=>{vt||(vt=!0,yt="",te.removeEventListener("click",_t),At.controller.abort(),Qt.reset(),Rt(),bt.els.clear(),te.replaceChildren())}}}function palette$2(te){const ee=te.accent??(te.theme==="dark"?"#22d3ee":"#0369a1");return te.theme==="dark"?{accent:ee,text:"#e2e8f0",muted:"#94a3b8",good:"#34d399",bad:"#fb7185",warn:"#fbbf24",track:"rgba(148,163,184,0.18)",series:[ee,"#a78bfa","#34d399","#fbbf24","#fb7185","#60a5fa","#f472b6","#2dd4bf"],gridLine:"rgba(148,163,184,0.16)"}:{accent:ee,text:"#1e293b",muted:"#64748b",good:"#059669",bad:"#e11d48",warn:"#d97706",track:"rgba(100,116,139,0.16)",series:[ee,"#7c3aed","#059669","#d97706","#e11d48","#2563eb","#db2777","#0d9488"],gridLine:"rgba(100,116,139,0.2)"}}function withAlpha(te,ee){const ne=te.replace("#",""),xe=ne.length===3?ne.split("").map(ut=>ut+ut).join(""):ne,it=Number.parseInt(xe,16);return`rgba(${it>>16&255},${it>>8&255},${it&255},${ee})`}const FONT="ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'PingFang SC', 'Noto Sans CJK SC', sans-serif";function formatNumber$1(te,ee=0){return te.toLocaleString("en-US",{minimumFractionDigits:ee,maximumFractionDigits:ee})}function gaugeColour(te,ee,ne){return ee?te>=ee[1]?ne.bad:te>=ee[0]?ne.warn:ne.good:ne.accent}function gaugeOption(te,ee,ne){const xe=te.max??100,it=Math.max(0,Math.min(1,te.value/xe)),ut=gaugeColour(it,te.thresholds,ee),ht=te.style==="ring";return{animation:ne,animationDuration:1400,animationEasing:"cubicOut",series:[{type:"gauge",startAngle:ht?90:210,endAngle:ht?-270:-30,min:0,max:xe,radius:"92%",center:["50%",ht?"50%":"58%"],progress:{show:!0,width:ht?14:16,roundCap:!0,itemStyle:{color:ut,shadowBlur:12,shadowColor:withAlpha(ut,.5)}},pointer:{show:!ht,length:"60%",width:4,itemStyle:{color:ut}},axisLine:{lineStyle:{width:ht?14:16,color:[[1,ee.track]]}},axisTick:{show:!1},splitLine:{show:!ht,length:8,lineStyle:{color:ee.muted,width:1}},axisLabel:{show:!ht,color:ee.muted,fontSize:10,distance:18,fontFamily:FONT},anchor:{show:!ht,size:10,itemStyle:{color:ut}},title:{show:!1},detail:{valueAnimation:ne,offsetCenter:[0,ht?0:"28%"],fontSize:ht?28:24,fontWeight:700,fontFamily:FONT,color:ee.text,formatter:dt=>`${formatNumber$1(dt,Number.isInteger(te.value)?0:1)}${te.unit??""}`},data:[{value:te.value}]}]}}function chartOption(te,ee,ne){const xe={axisLine:{lineStyle:{color:ee.gridLine}},axisLabel:{color:ee.muted,fontFamily:FONT},splitLine:{lineStyle:{color:ee.gridLine}}},it=ht=>Array.isArray(ht)?ht.map(dt=>({...xe,...dt})):ht&&typeof ht=="object"?{...xe,...ht}:ht,ut=te.option;return{backgroundColor:"transparent",color:ee.series,textStyle:{color:ee.text,fontFamily:FONT},animation:ne,animationDuration:1200,animationEasing:"cubicOut",grid:{left:40,right:16,top:28,bottom:28,containLabel:!0},legend:{textStyle:{color:ee.muted}},tooltip:{trigger:"axis"},...ut,...ut.xAxis!==void 0?{xAxis:it(ut.xAxis)}:{},...ut.yAxis!==void 0?{yAxis:it(ut.yAxis)}:{}}}function chart3dOption(te,ee,ne){const xe=te.data.map(Mt=>Mt[2]),it=Math.max(...xe),ut=Math.min(...xe),ht=(Mt,ft)=>({type:Mt?"category":"value",data:Mt,name:"",axisLine:{lineStyle:{color:ee.gridLine}},axisLabel:{color:ee.muted,fontFamily:FONT},splitLine:{lineStyle:{color:ee.gridLine}},axisPointer:{show:!1},nameTextStyle:{color:ee.muted},id:ft}),dt={type:te.type,data:te.data,shading:"lambert",emphasis:{itemStyle:{color:ee.text}}};return te.type==="bar3D"&&(dt.bevelSize=.2),te.type==="scatter3D"&&(dt.symbolSize=9),te.type==="line3D"&&(dt.lineStyle={width:3,color:ee.accent}),te.type==="surface"&&(dt.wireframe={show:!0,lineStyle:{color:withAlpha(ee.accent,.35)}}),{backgroundColor:"transparent",textStyle:{fontFamily:FONT},tooltip:{},visualMap:{show:!1,min:ut,max:it,dimension:2,inRange:{color:[withAlpha(ee.accent,.55),ee.accent,ee.series[1]]}},xAxis3D:ht(te.xAxis,"x"),yAxis3D:ht(te.yAxis,"y"),zAxis3D:{type:"value",name:"",axisLine:{lineStyle:{color:ee.gridLine}},axisLabel:{color:ee.muted,fontFamily:FONT},splitLine:{lineStyle:{color:ee.gridLine}}},grid3D:{boxWidth:100,boxDepth:80,boxHeight:60,axisPointer:{show:!1},light:{main:{intensity:1.3,shadow:!1,alpha:40,beta:30},ambient:{intensity:.5}},viewControl:{autoRotate:ne&&te.rotate!==!1,autoRotateSpeed:8,distance:190,alpha:24,beta:35,projection:"perspective"},environment:"none"},series:[dt]}}function globeTexture(te,ee){if(typeof document>"u")return;const ne=document.createElement("canvas");ne.width=1024,ne.height=512;const xe=ne.getContext("2d");if(xe){xe.fillStyle=ee==="dark"?"#0b1a33":"#dbe7f5",xe.fillRect(0,0,ne.width,ne.height),xe.strokeStyle=withAlpha(te.accent,ee==="dark"?.28:.35),xe.lineWidth=1.2;for(let it=0;it<360;it+=15){const ut=it/360*ne.width;xe.beginPath(),xe.moveTo(ut,0),xe.lineTo(ut,ne.height),xe.stroke()}for(let it=15;it<180;it+=15){const ut=it/180*ne.height;xe.beginPath(),xe.moveTo(0,ut),xe.lineTo(ne.width,ut),xe.stroke()}return xe.strokeStyle=withAlpha(te.accent,.6),xe.lineWidth=2,xe.beginPath(),xe.moveTo(0,ne.height/2),xe.lineTo(ne.width,ne.height/2),xe.stroke(),ne.toDataURL("image/png")}}function globeOption(te,ee,ne,xe){const it=(te.arcs??[]).map(dt=>({coords:[dt.from,dt.to],name:dt.label})),ut=(te.points??[]).map(dt=>({name:dt.label,value:[dt.coord[0],dt.coord[1],0,dt.value??1]})),ht=Math.max(1,...ut.map(dt=>dt.value[3]));return{backgroundColor:"transparent",globe:{baseTexture:xe,shading:"color",environment:"none",globeRadius:78,atmosphere:{show:!0,color:ee.accent,glowPower:5,innerGlowPower:2,offset:4},light:{ambient:{intensity:1},main:{intensity:.2}},viewControl:{autoRotate:ne&&te.rotate!==!1,autoRotateSpeed:3,distance:150,targetCoord:it[0]?.coords[0]??ut[0]?.value.slice(0,2)}},series:[{type:"lines3D",coordinateSystem:"globe",blendMode:"lighter",lineStyle:{width:2.5,color:ee.series[1],opacity:.9},effect:{show:ne,period:3,trailWidth:4,trailLength:.3,trailOpacity:1,trailColor:"#ffffff"},data:it},{type:"scatter3D",coordinateSystem:"globe",symbolSize:dt=>6+10*Math.sqrt((dt[3]??1)/ht),itemStyle:{color:ee.series[1],opacity:.9},label:{show:!0,formatter:"{b}",color:ee.text,fontSize:11,fontFamily:FONT,backgroundColor:"transparent",distance:6},data:ut}]}}const SCREEN_FIELDS=new Set(["title","subtitle","theme","accent","columns","panels"]),COMMON=["kind","title","span","height"],FIELDS={kpi:["value","unit","prefix","decimals","delta","upIsGood","trend","label"],gauge:["value","max","unit","style","thresholds"],rank:["items","unit","top"],chart:["option"],chart3d:["type","data","xAxis","yAxis","rotate"],globe:["arcs","points","rotate"]},KINDS=new Set(["kpi","gauge","rank","chart","chart3d","globe"]),CHART3D_TYPES=new Set(["bar3D","scatter3D","surface","line3D"]),HEX$2=/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i,MAX_POINTS=5e3,MAX_ITEMS=50,MAX_ARCS=300,bad$3=te=>({ok:!1,error:{code:"invalid-definition",message:te}}),isRecord$2=te=>typeof te=="object"&&te!==null&&!Array.isArray(te),finite$2=te=>typeof te=="number"&&Number.isFinite(te),text$4=(te,ee=120)=>typeof te=="string"&&te.length<=ee,tooLong=(te,ee,ne)=>typeof ne=="string"?`${te} must be at most ${ee} characters (got ${ne.length})`:`${te} must be a string of at most ${ee} characters`,lngLat=te=>Array.isArray(te)&&te.length===2&&te.every(finite$2)&&Math.abs(te[0])<=180&&Math.abs(te[1])<=90;function parseKpi(te,ee){if(!finite$2(te.value))return bad$3(`${ee}.value must be a number`);const ne={kind:"kpi",value:te.value};if(te.unit!==void 0){if(!text$4(te.unit,16))return bad$3(tooLong(`${ee}.unit`,16,te.unit));ne.unit=te.unit}if(te.prefix!==void 0){if(!text$4(te.prefix,8))return bad$3(tooLong(`${ee}.prefix`,8,te.prefix));ne.prefix=te.prefix}if(te.decimals!==void 0){if(!Number.isInteger(te.decimals)||te.decimals<0||te.decimals>6)return bad$3(`${ee}.decimals must be a whole number from 0 to 6`);ne.decimals=te.decimals}if(te.delta!==void 0){if(!finite$2(te.delta))return bad$3(`${ee}.delta must be a number (a fraction: 0.12 is +12%)`);ne.delta=te.delta}if(te.upIsGood!==void 0){if(typeof te.upIsGood!="boolean")return bad$3(`${ee}.upIsGood must be true or false`);ne.upIsGood=te.upIsGood}if(te.trend!==void 0){if(!Array.isArray(te.trend)||te.trend.length<2||te.trend.length>200||!te.trend.every(finite$2))return bad$3(`${ee}.trend must be 2 to 200 numbers`);ne.trend=te.trend}if(te.label!==void 0){if(!text$4(te.label,40))return bad$3(tooLong(`${ee}.label`,40,te.label));ne.label=te.label}return{ok:!0,value:ne}}function parseGauge(te,ee){if(!finite$2(te.value))return bad$3(`${ee}.value must be a number`);const ne={kind:"gauge",value:te.value};if(te.max!==void 0){if(!finite$2(te.max)||te.max<=0)return bad$3(`${ee}.max must be a positive number`);ne.max=te.max}if(te.unit!==void 0){if(!text$4(te.unit,16))return bad$3(tooLong(`${ee}.unit`,16,te.unit));ne.unit=te.unit}if(te.style!==void 0){if(te.style!=="dial"&&te.style!=="ring")return bad$3(`${ee}.style must be dial or ring`);ne.style=te.style}if(te.thresholds!==void 0){const xe=te.thresholds;if(!Array.isArray(xe)||xe.length!==2||!xe.every(finite$2)||!(xe[0]>=0&&xe[0]<=xe[1]&&xe[1]<=1))return bad$3(`${ee}.thresholds must be two fractions in order, e.g. [0.6, 0.85]`);ne.thresholds=[xe[0],xe[1]]}return{ok:!0,value:ne}}function parseRank(te,ee){if(!Array.isArray(te.items)||te.items.length===0||te.items.length>MAX_ITEMS)return bad$3(`${ee}.items must be 1 to ${MAX_ITEMS} entries`);const ne=[];for(const[it,ut]of te.items.entries()){if(!isRecord$2(ut)||!text$4(ut.name,40)||!finite$2(ut.value))return bad$3(`${ee}.items[${it}] must be {name, value}`);for(const ht of Object.keys(ut))if(ht!=="name"&&ht!=="value")return bad$3(`${ee}.items[${it}].${ht} is not a field of a rank item`);ne.push({name:ut.name,value:ut.value})}const xe={kind:"rank",items:ne};if(te.unit!==void 0){if(!text$4(te.unit,16))return bad$3(tooLong(`${ee}.unit`,16,te.unit));xe.unit=te.unit}if(te.top!==void 0){if(!Number.isInteger(te.top)||te.top<1||te.top>MAX_ITEMS)return bad$3(`${ee}.top must be a whole number from 1 to ${MAX_ITEMS}`);xe.top=te.top}return{ok:!0,value:xe}}function parseChart3d(te,ee){if(typeof te.type!="string"||!CHART3D_TYPES.has(te.type))return bad$3(`${ee}.type must be one of ${[...CHART3D_TYPES].join(", ")}`);if(!Array.isArray(te.data)||te.data.length===0||te.data.length>MAX_POINTS)return bad$3(`${ee}.data must be 1 to ${MAX_POINTS} points`);const ne=[];for(const[it,ut]of te.data.entries()){if(!Array.isArray(ut)||ut.length!==3||!ut.every(finite$2))return bad$3(`${ee}.data[${it}] must be [x, y, z]`);ne.push([ut[0],ut[1],ut[2]])}const xe={kind:"chart3d",type:te.type,data:ne};for(const it of["xAxis","yAxis"]){const ut=te[it];if(ut!==void 0){if(!Array.isArray(ut)||ut.length===0||ut.length>200||!ut.every(ht=>text$4(ht,40)))return bad$3(`${ee}.${it} must be a list of category names`);xe[it]=ut}}if(te.rotate!==void 0){if(typeof te.rotate!="boolean")return bad$3(`${ee}.rotate must be true or false`);xe.rotate=te.rotate}return{ok:!0,value:xe}}function parseGlobe(te,ee){const ne={kind:"globe"};if(te.arcs!==void 0){if(!Array.isArray(te.arcs)||te.arcs.length>MAX_ARCS)return bad$3(`${ee}.arcs must be up to ${MAX_ARCS} entries`);ne.arcs=[];for(const[xe,it]of te.arcs.entries()){if(!isRecord$2(it)||!lngLat(it.from)||!lngLat(it.to))return bad$3(`${ee}.arcs[${xe}] must be {from: [lng, lat], to: [lng, lat]}`);const ut={from:it.from,to:it.to};if(it.label!==void 0){if(!text$4(it.label,40))return bad$3(tooLong(`${ee}.arcs[${xe}].label`,40,it.label));ut.label=it.label}ne.arcs.push(ut)}}if(te.points!==void 0){if(!Array.isArray(te.points)||te.points.length>MAX_ARCS)return bad$3(`${ee}.points must be up to ${MAX_ARCS} entries`);ne.points=[];for(const[xe,it]of te.points.entries()){if(!isRecord$2(it)||!lngLat(it.coord))return bad$3(`${ee}.points[${xe}] must be {coord: [lng, lat]}`);const ut={coord:it.coord};if(it.label!==void 0){if(!text$4(it.label,40))return bad$3(tooLong(`${ee}.points[${xe}].label`,40,it.label));ut.label=it.label}if(it.value!==void 0){if(!finite$2(it.value)||it.value<0)return bad$3(`${ee}.points[${xe}].value must be zero or a positive number`);ut.value=it.value}ne.points.push(ut)}}if(!ne.arcs?.length&&!ne.points?.length)return bad$3(`${ee} needs arcs or points`);if(te.rotate!==void 0){if(typeof te.rotate!="boolean")return bad$3(`${ee}.rotate must be true or false`);ne.rotate=te.rotate}return{ok:!0,value:ne}}function parsePanel(te,ee,ne){const xe=`panels[${ee}]`;if(!isRecord$2(te))return bad$3(`${xe} must be an object`);if(typeof te.kind!="string"||!KINDS.has(te.kind))return bad$3(`${xe}.kind must be one of ${[...KINDS].join(", ")}`);const it=te.kind,ut=new Set([...COMMON,...FIELDS[it]]);for(const Mt of Object.keys(te))if(!ut.has(Mt))return bad$3(`${xe}.${Mt} is not a field of a ${it} panel`);let ht;switch(it){case"kpi":ht=parseKpi(te,xe);break;case"gauge":ht=parseGauge(te,xe);break;case"rank":ht=parseRank(te,xe);break;case"chart":if(!isRecord$2(te.option))return bad$3(`${xe}.option must be an ECharts option object`);ht={ok:!0,value:{kind:"chart",option:te.option}};break;case"chart3d":ht=parseChart3d(te,xe);break;case"globe":ht=parseGlobe(te,xe);break}if(!ht.ok)return ht;const dt=ht.value;if(te.title!==void 0){if(!text$4(te.title,80))return bad$3(tooLong(`${xe}.title`,80,te.title));dt.title=te.title}if(te.span!==void 0){if(!Number.isInteger(te.span)||te.span<1||te.span>ne)return bad$3(`${xe}.span must be a whole number from 1 to ${ne}`);dt.span=te.span}if(te.height!==void 0){if(!finite$2(te.height)||te.height<80||te.height>900)return bad$3(`${xe}.height must be from 80 to 900 pixels`);dt.height=te.height}return{ok:!0,value:dt}}function parseBigscreen(te,ee={}){const ne=ee.maxPanels??24,xe=ee.maxSourceBytes??64*1024;if(new TextEncoder().encode(te).byteLength>xe)return{ok:!1,error:{code:"too-large",message:"Screen definition is too large."}};let it;try{it=JSON.parse(te)}catch{return{ok:!1,error:{code:"invalid-json",message:"Screen definition is not valid JSON."}}}if(!isRecord$2(it))return bad$3("A screen definition must be a JSON object");for(const ht of Object.keys(it))if(!SCREEN_FIELDS.has(ht))return bad$3(`${ht} is not a field of a screen definition`);const ut={theme:ee.theme??"dark",columns:12,panels:[]};if(it.title!==void 0){if(!text$4(it.title,80))return bad$3(tooLong("title",80,it.title));ut.title=it.title}if(it.subtitle!==void 0){if(!text$4(it.subtitle,120))return bad$3(tooLong("subtitle",120,it.subtitle));ut.subtitle=it.subtitle}if(it.theme!==void 0){if(it.theme!=="dark"&&it.theme!=="light")return bad$3("theme must be dark or light");ut.theme=it.theme}if(it.accent!==void 0){if(typeof it.accent!="string"||!HEX$2.test(it.accent))return bad$3("accent must be a hex colour like #22d3ee");ut.accent=it.accent}if(it.columns!==void 0){if(!Number.isInteger(it.columns)||it.columns<1||it.columns>24)return bad$3("columns must be a whole number from 1 to 24");ut.columns=it.columns}if(!Array.isArray(it.panels)||it.panels.length===0)return bad$3("panels must be a non-empty array");if(it.panels.length>ne)return bad$3(`panels has more than ${ne} entries`);for(const[ht,dt]of it.panels.entries()){const Mt=parsePanel(dt,ht,ut.columns);if(!Mt.ok)return Mt;ut.panels.push(Mt.value)}return{ok:!0,value:ut}}function bigscreenPromptSpec(te){return translate$2(PROMPT$5,te,"spec")}const ZH$2=`数据大屏(围栏代码块):\`\`\`bigscreen 开头,块内是一个 JSON 对象。当用户要一个"大屏 / 看板 / dashboard / 总览",或者要把一组指标、排行、趋势、地域分布放在一起漂亮地展示时,输出一个 bigscreen 块。它会画成深色发光的数据墙:数字滚动增长、仪表盘扫过、排行条生长、图表逐步绘出、3D 图和地球缓慢旋转。文字说明照常写在块外。
24
+
25
+ 字数超了整个块就作废——一个太长的 label 会让整面墙消失,而不是那一句被截断。所有文字字段都短:unit 最多 16、prefix 最多 8、label 和排行项名字最多 40、面板 title 最多 80。它们是标签,不是句子。
24
26
 
25
27
  只用对话里已有的数字。没有的数据就不要放这个面板,或者在块外说明缺什么。绝对不要编造一个看起来合理的数字来填空——大屏上的数字看起来像证据。
26
28
 
27
29
  顶层字段:
28
- - title、subtitle:大屏标题、副标题
30
+ - title、subtitle:大屏标题(最多 80 字符)、副标题(最多 120 字符)
29
31
  - theme:"dark"(默认)| "light"
30
32
  - accent:主色,十六进制,如 "#22d3ee"
31
33
  - columns:网格列数,默认 12
32
34
  - panels(必填):面板数组,最多 24 个
33
35
 
34
- 每个面板:kind(必填)、titlespan(占几列,默认 4)、height(像素)。按 kind 填:
35
- - "kpi":value(必填)、unit、prefix(如 "¥")、decimals、delta(变化率,小数:0.12 就是 +12%)、upIsGood(默认 true)、trend(一列数,画成迷你折线)、label
36
+ 每个面板:kind(必填)、title(最多 80 字符)、span(占几列,默认 4)、height(像素)。按 kind 填:
37
+ - "kpi":value(必填)、unit、prefix(如 "¥")、decimals、delta(变化率,小数:0.12 就是 +12%)、upIsGood(默认 true)、trend(一列数,画成迷你折线)、label(数字下面的一行小字,**最多 40 字符**——写"较上月""同比"这种一眼看完的说明;明细放不下,要写明细就再开一个面板或者写在块外)
36
38
  - "gauge":value(必填)、max(默认 100)、unit、style "dial"(默认)| "ring"、thresholds [0.6, 0.85](告警线:超过第一个变黄,超过第二个变红——只给"越高越危险"的指标用,如 CPU 占用、库存水位;完成率这类越高越好的不要给)
37
39
  - "rank":items(必填,[{"name","value"}])、unit、top(默认 8)
38
40
  - "chart":option(必填)——完整的 ECharts option,颜色、字体、动画由大屏统一
@@ -62,11 +64,13 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
62
64
 
63
65
  这一版画不了的(遇到就退回普通图表或文字):实时刷新、可交互筛选、表格、地图着色(省份热力图)、视频。需要宿主提供真实数据的 BI 看板用 dashboard 块,不用这个。`,EN$2=`Data walls (fenced): \`\`\`bigscreen with a JSON object inside. Emit one when the user asks for a dashboard, an overview, a "big screen", or wants a set of metrics, rankings, trends and places shown together and shown well. It draws a dark, glowing wall: numbers count up, gauges sweep, rank bars grow, charts draw themselves, 3D charts and globes turn slowly. Keep the explanation itself outside the block.
64
66
 
67
+ Overrunning a length throws the whole block away — one label two characters too long loses the entire wall, rather than being trimmed. Every text field is short: unit at most 16, prefix 8, label and rank item names 40, panel title 80. They are labels, not sentences.
68
+
65
69
  Use only numbers the conversation already contains. Leave out a panel whose data you do not have, or say outside the block what is missing. Never invent a plausible figure to fill a gap — a number on a wall looks like evidence.
66
70
 
67
- Top level: title, subtitle, theme ("dark" default or "light"), accent (hex), columns (default 12), panels (required, at most 24).
71
+ Top level: title (at most 80 characters), subtitle (at most 120), theme ("dark" default or "light"), accent (hex), columns (default 12), panels (required, at most 24).
68
72
 
69
- Each panel: kind (required), title, span (columns, default 4), height (px). By kind: "kpi" (value, unit, prefix, decimals, delta as a fraction, upIsGood, trend as a short number list, label); "gauge" (value, max default 100, unit, style "dial" or "ring", thresholds [0.6, 0.85] as alarm levels — amber past the first, red past the second — only for metrics where higher is worse, never for a completion rate); "rank" (items as {name, value}, unit, top default 8); "chart" (option: a full ECharts option — colours, fonts and animation come from the wall); "chart3d" (type "bar3D" | "scatter3D" | "surface" | "line3D", data as [x, y, z] points, optional xAxis and yAxis category lists, rotate); "globe" (arcs as {from: [lng, lat], to: [lng, lat], label}, points as {coord: [lng, lat], label, value}, rotate; at least one of arcs or points; for intercontinental flows — a route within one region is a few pixels on a globe, so use an ordinary chart for those).
73
+ Each panel: kind (required), title (at most 80 characters), span (columns, default 4), height (px). By kind: "kpi" (value, unit, prefix, decimals, delta as a fraction, upIsGood, trend as a short number list, label — one short line under the number, **at most 40 characters**, for a caption like "vs last month"; detail does not fit there, so put it in its own panel or outside the block); "gauge" (value, max default 100, unit, style "dial" or "ring", thresholds [0.6, 0.85] as alarm levels — amber past the first, red past the second — only for metrics where higher is worse, never for a completion rate); "rank" (items as {name, value}, unit, top default 8); "chart" (option: a full ECharts option — colours, fonts and animation come from the wall); "chart3d" (type "bar3D" | "scatter3D" | "surface" | "line3D", data as [x, y, z] points, optional xAxis and yAxis category lists, rotate); "globe" (arcs as {from: [lng, lat], to: [lng, lat], label}, points as {coord: [lng, lat], label, value}, rotate; at least one of arcs or points; for intercontinental flows — a route within one region is a few pixels on a globe, so use an ordinary chart for those).
70
74
 
71
75
  Layout: a first row of three or four kpi panels at span 3, then a wide chart at span 8 beside a rank or gauge at span 4, and 3D or globe panels at span 6.
72
76
 
@@ -86,7 +90,7 @@ Example:
86
90
  }
87
91
  \`\`\`
88
92
 
89
- Not supported — fall back to ordinary charts or prose: live refresh, interactive filters, tables, choropleth maps, video. A BI board whose numbers must come from the host's own queries is a dashboard block, not this.`,PROMPT$5={en:{spec:EN$2},"zh-CN":{spec:ZH$2}},escapeHtml$3=te=>te.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),bigscreenCss=["[data-aigui-bigscreen]{--aigui-bs-accent:#22d3ee;--aigui-bs-text:#e2e8f0;--aigui-bs-muted:#94a3b8;box-sizing:border-box;margin-block:1rem;padding:1.1rem 1.2rem 1.3rem;border-radius:14px;color:var(--aigui-bs-text);font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,'PingFang SC','Noto Sans CJK SC',sans-serif;font-variant-numeric:tabular-nums}","[data-aigui-bigscreen] *{box-sizing:border-box}","[data-aigui-bigscreen='dark']{background:radial-gradient(120% 90% at 50% 0%,#0f1f3d 0%,#0a1428 45%,#050b18 100%);box-shadow:inset 0 0 0 1px rgba(56,189,248,.12),0 20px 60px rgba(0,0,0,.45)}","[data-aigui-bigscreen='light']{background:linear-gradient(180deg,#f8fafc,#eef2f7);box-shadow:inset 0 0 0 1px rgba(15,23,42,.06)}",".aigui-bs-head{text-align:center;margin-bottom:1rem}",".aigui-bs-title{margin:0;font-size:1.5rem;font-weight:700;letter-spacing:.06em}",".aigui-bs-subtitle{margin:.25rem 0 0;font-size:.85rem;color:var(--aigui-bs-muted);letter-spacing:.12em}",".aigui-bs-rule{height:1px;margin:.8rem auto 0;width:70%}",".aigui-bs-grid{display:grid;gap:.9rem}",".aigui-bs-panel{display:flex;flex-direction:column;min-width:0;border:1px solid;border-radius:10px;padding:.7rem .85rem .85rem;backdrop-filter:blur(6px)}","[data-aigui-bigscreen='dark'] .aigui-bs-panel{background:linear-gradient(180deg,rgba(17,27,50,.82),rgba(10,18,36,.82));box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 10px 30px rgba(0,0,0,.35)}","[data-aigui-bigscreen='light'] .aigui-bs-panel{background:rgba(255,255,255,.9);box-shadow:0 6px 20px rgba(15,23,42,.06)}",".aigui-bs-panel-title{display:flex;align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--aigui-bs-muted)}",".aigui-bs-panel-mark{display:inline-block;width:4px;height:14px;border-radius:2px}",".aigui-bs-panel-body{position:relative;flex:1 1 auto;width:100%;min-width:0;container-type:inline-size}",".aigui-bs-kpi{display:flex;flex-direction:column;gap:.35rem;justify-content:center;height:100%}",".aigui-bs-kpi-row{display:flex;align-items:baseline;gap:.35rem;min-width:0}",".aigui-bs-kpi-value{font-size:2rem;font-size:clamp(1.2rem,13cqi,2.6rem);font-weight:800;line-height:1.05;letter-spacing:-.01em;white-space:nowrap}",".aigui-bs-kpi-unit{font-size:.95rem;color:var(--aigui-bs-muted)}",".aigui-bs-kpi-meta{display:flex;gap:.7rem;font-size:.8rem;color:var(--aigui-bs-muted)}",".aigui-bs-kpi-delta{font-weight:600}",".aigui-bs-kpi-spark{margin-top:.2rem;opacity:.9}",".aigui-bs-rank{display:flex;flex-direction:column;gap:.45rem;overflow:hidden}",".aigui-bs-rank-row{display:grid;grid-template-columns:1.4rem minmax(3rem,auto) 1fr auto;align-items:center;gap:.5rem;font-size:.85rem}",".aigui-bs-rank-n{font-weight:700;color:var(--aigui-bs-muted);text-align:center}",".aigui-bs-rank-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".aigui-bs-rank-track{display:block;height:8px;border-radius:4px;overflow:hidden}",".aigui-bs-rank-fill{display:block;height:100%;border-radius:4px;transition:width 1.2s cubic-bezier(.22,1,.36,1)}",".aigui-bs-rank-value{color:var(--aigui-bs-muted);font-variant-numeric:tabular-nums}",".aigui-bs-note{display:flex;align-items:center;justify-content:center;height:100%;min-height:4rem;font-size:.85rem;color:var(--aigui-bs-muted)}","[data-aigui-bigscreen-loading]{min-height:8rem;border-radius:14px;background:currentColor;opacity:.06}","[data-aigui-bigscreen-error]{padding:.5rem .75rem;border-radius:.5rem;font-size:.875rem;opacity:.8;background:currentColor}","@media (max-width:640px){.aigui-bs-grid{grid-template-columns:1fr!important}.aigui-bs-panel{grid-column:span 1!important}}"].join("");function failed$2(te){const ee=escapeHtml$3(te);return{kind:"html",html:`<div data-aigui-bigscreen-error role="img" aria-label="${ee}">${ee}</div>`,trusted:!0}}function bigscreen(te={}){return{name:"bigscreen",css:bigscreenCss,nodeRenderers:{bigscreen:(ne,xe)=>{if(ne.complete===!1)return{kind:"html",html:'<div data-aigui-bigscreen-loading aria-label="Loading screen"></div>'};const it=te.theme??(xe?.theme==="light"?"light":xe?.theme==="dark"?"dark":void 0),ut=parseBigscreen(ne.content??"",{...te,theme:it});if(!ut.ok)return failed$2(ut.error.message);const ht=ut.value;return{kind:"mount",mount:dt=>{let Mt,ft=!1;return Promise.resolve().then(()=>mountDVHPS1xP).then(({mountScreen:gt})=>{ft||(Mt=gt(dt,ht,te.animate!==!1))}).catch(()=>{const gt=document.createElement("div");gt.setAttribute("data-aigui-bigscreen-error",""),gt.setAttribute("role","img"),gt.setAttribute("aria-label","Screen could not be drawn."),gt.textContent="Screen could not be drawn.",dt.replaceChildren(gt)}),()=>{ft=!0,Mt?.()}}}}},isBlockComplete:(ne,xe)=>{const it=xe.trim();if(!it.startsWith("{")||!it.endsWith("}"))return!1;try{return JSON.parse(it),!0}catch{return!1}},promptSpec:ne=>bigscreenPromptSpec(ne)}}/*! *****************************************************************************
93
+ Not supported — fall back to ordinary charts or prose: live refresh, interactive filters, tables, choropleth maps, video. A BI board whose numbers must come from the host's own queries is a dashboard block, not this.`,PROMPT$5={en:{spec:EN$2},"zh-CN":{spec:ZH$2}},escapeHtml$3=te=>te.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),bigscreenCss=["[data-aigui-bigscreen]{--aigui-bs-accent:#22d3ee;--aigui-bs-text:#e2e8f0;--aigui-bs-muted:#94a3b8;box-sizing:border-box;margin-block:1rem;padding:1.1rem 1.2rem 1.3rem;border-radius:14px;color:var(--aigui-bs-text);font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,'PingFang SC','Noto Sans CJK SC',sans-serif;font-variant-numeric:tabular-nums}","[data-aigui-bigscreen] *{box-sizing:border-box}","[data-aigui-bigscreen='dark']{background:radial-gradient(120% 90% at 50% 0%,#0f1f3d 0%,#0a1428 45%,#050b18 100%);box-shadow:inset 0 0 0 1px rgba(56,189,248,.12),0 20px 60px rgba(0,0,0,.45)}","[data-aigui-bigscreen='light']{background:linear-gradient(180deg,#f8fafc,#eef2f7);box-shadow:inset 0 0 0 1px rgba(15,23,42,.06)}",".aigui-bs-head{text-align:center;margin-bottom:1rem}",".aigui-bs-title{margin:0;font-size:1.5rem;font-weight:700;letter-spacing:.06em}",".aigui-bs-subtitle{margin:.25rem 0 0;font-size:.85rem;color:var(--aigui-bs-muted);letter-spacing:.12em}",".aigui-bs-rule{height:1px;margin:.8rem auto 0;width:70%}",".aigui-bs-grid{display:grid;gap:.9rem}",".aigui-bs-panel{display:flex;flex-direction:column;min-width:0;border:1px solid;border-radius:10px;padding:.7rem .85rem .85rem;backdrop-filter:blur(6px)}","[data-aigui-bigscreen='dark'] .aigui-bs-panel{background:linear-gradient(180deg,rgba(17,27,50,.82),rgba(10,18,36,.82));box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 10px 30px rgba(0,0,0,.35)}","[data-aigui-bigscreen='light'] .aigui-bs-panel{background:rgba(255,255,255,.9);box-shadow:0 6px 20px rgba(15,23,42,.06)}",".aigui-bs-panel-title{display:flex;align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--aigui-bs-muted)}",".aigui-bs-panel-mark{display:inline-block;width:4px;height:14px;border-radius:2px}",".aigui-bs-panel-body{position:relative;flex:1 1 auto;width:100%;min-width:0;container-type:inline-size}",".aigui-bs-kpi{display:flex;flex-direction:column;gap:.35rem;justify-content:center;height:100%}",".aigui-bs-kpi-row{display:flex;align-items:baseline;gap:.35rem;min-width:0}",".aigui-bs-kpi-value{font-size:2rem;font-size:clamp(1.2rem,13cqi,2.6rem);font-weight:800;line-height:1.05;letter-spacing:-.01em;white-space:nowrap}",".aigui-bs-kpi-unit{font-size:.95rem;color:var(--aigui-bs-muted)}",".aigui-bs-kpi-meta{display:flex;gap:.7rem;font-size:.8rem;color:var(--aigui-bs-muted)}",".aigui-bs-kpi-delta{font-weight:600}",".aigui-bs-kpi-spark{margin-top:.2rem;opacity:.9}",".aigui-bs-rank{display:flex;flex-direction:column;gap:.45rem;overflow:hidden}",".aigui-bs-rank-row{display:grid;grid-template-columns:1.4rem minmax(3rem,auto) 1fr auto;align-items:center;gap:.5rem;font-size:.85rem}",".aigui-bs-rank-n{font-weight:700;color:var(--aigui-bs-muted);text-align:center}",".aigui-bs-rank-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",".aigui-bs-rank-track{display:block;height:8px;border-radius:4px;overflow:hidden}",".aigui-bs-rank-fill{display:block;height:100%;border-radius:4px;transition:width 1.2s cubic-bezier(.22,1,.36,1)}",".aigui-bs-rank-value{color:var(--aigui-bs-muted);font-variant-numeric:tabular-nums}",".aigui-bs-note{display:flex;align-items:center;justify-content:center;height:100%;min-height:4rem;font-size:.85rem;color:var(--aigui-bs-muted)}","[data-aigui-bigscreen-loading]{min-height:8rem;border-radius:14px;background:currentColor;opacity:.06}",":where([data-aigui-bigscreen-error]){padding:0.5rem 0.75rem;border-radius:0.5rem;font-size:0.875rem;background:color-mix(in srgb,currentColor 8%,transparent);border:1px solid color-mix(in srgb,currentColor 25%,transparent)}","@media (max-width:640px){.aigui-bs-grid{grid-template-columns:1fr!important}.aigui-bs-panel{grid-column:span 1!important}}"].join("");function failed$2(te){const ee=escapeHtml$3(te);return{kind:"html",html:`<div data-aigui-bigscreen-error role="img" aria-label="${ee}">${ee}</div>`,trusted:!0}}function bigscreen(te={}){return{name:"bigscreen",css:bigscreenCss,nodeRenderers:{bigscreen:(ne,xe)=>{if(ne.complete===!1)return{kind:"html",html:'<div data-aigui-bigscreen-loading aria-label="Loading screen"></div>'};const it=te.theme??(xe?.theme==="light"?"light":xe?.theme==="dark"?"dark":void 0),ut=parseBigscreen(ne.content??"",{...te,theme:it});if(!ut.ok)return failed$2(ut.error.message);const ht=ut.value;return{kind:"mount",mount:dt=>{let Mt,ft=!1;return Promise.resolve().then(()=>mountDVHPS1xP).then(({mountScreen:gt})=>{ft||(Mt=gt(dt,ht,te.animate!==!1))}).catch(()=>{const gt=document.createElement("div");gt.setAttribute("data-aigui-bigscreen-error",""),gt.setAttribute("role","img"),gt.setAttribute("aria-label","Screen could not be drawn."),gt.textContent="Screen could not be drawn.",dt.replaceChildren(gt)}),()=>{ft=!0,Mt?.()}}}}},isBlockComplete:(ne,xe)=>{const it=xe.trim();if(!it.startsWith("{")||!it.endsWith("}"))return!1;try{return JSON.parse(it),!0}catch{return!1}},promptSpec:ne=>bigscreenPromptSpec(ne)}}/*! *****************************************************************************
90
94
  Copyright (c) Microsoft Corporation.
91
95
 
92
96
  Permission to use, copy, modify, and/or distribute this software for any
@@ -240,7 +244,7 @@ Example — a comet on a highly eccentric orbit:
240
244
  }
241
245
  \`\`\`
242
246
 
243
- Not supported — explain these in markdown or use another block: three-dimensional orbits, relativistic effects, tides and non-point bodies, air resistance; projectiles and free fall near the ground belong in a motion block, as do head-on one-dimensional collisions.`,PROMPT$3={en:{spec:EN$1},"zh-CN":{spec:ZH$1}},LABELS={en:{speed:"orbital speed",period:"period",twoBody:"two-body",merged:"{a} and {b} collided and merged into {into}",bounced:"{a} and {b} bounced",more:"and {n} more",drift:"energy drift",truncated:"stopped early at t = {t} (step limit)",at:"t = "},"zh-CN":{speed:"轨道速度",period:"周期",twoBody:"二体",merged:"{a} 与 {b} 相撞,合并为 {into}",bounced:"{a} 与 {b} 碰撞弹开",more:"另有 {n} 次",drift:"能量漂移",truncated:"在 t = {t} 提前结束(步数超限)",at:"t = "}};function fmt$1(te){if(te===0)return"0";const ee=Math.abs(te);return ee>=1e5||ee<.001?te.toExponential(2).replace(/\.?0+e/,"e"):String(Number(te.toPrecision(3)))}function fill$1(te,ee){return te.replace(/\{(\w+)\}/g,(ne,xe)=>ee[xe]??"")}function conclusionText(te,ee,ne){const xe=xt=>translate$2(LABELS,ne,xt),it=UNITS[te.units],ut=ne?.startsWith("zh")===!0,ht=ut?";":"; ",dt=ut?":":": ",Mt=xt=>xt?` ${xt}`:"",ft=[];for(const xt of ee.initial){if(!xt.orbit)continue;const Dt=ee.initial.filter(yt=>yt.mass>0).length>2?`${xe("period")}(${xe("twoBody")})`:xe("period");ft.push(`${xt.id}${dt}${xe("speed")} ${fmt$1(xt.orbit.speed)}${Mt(it.speed)}, ${Dt} ${fmt$1(xt.orbit.period)}${Mt(it.time)}`.replace(", ",ut?",":", "))}const gt=ee.events.slice(0,4);for(const xt of gt){const mt=xt.rule==="merge"?fill$1(xe("merged"),{a:xt.a,b:xt.b,into:xt.into??xt.a}):fill$1(xe("bounced"),{a:xt.a,b:xt.b});ft.push(`${xe("at")}${fmt$1(xt.time)}${Mt(it.time)}${dt}${mt}`)}return ee.events.length>gt.length&&ft.push(fill$1(xe("more"),{n:String(ee.events.length-gt.length)})),!ee.events.some(xt=>xt.rule==="merge")&&ee.initial.filter(xt=>xt.mass>0).length>=2&&ft.push(`${xe("drift")} ${fmt$1(ee.energy.drift*100)}%`),ee.truncated&&ft.push(fill$1(xe("truncated"),{t:fmt$1(ee.samples[ee.samples.length-1].time)})),ft.join(ht)}function palette$1(te){return te==="dark"?{text:"#d4d4d8",grid:"#3f3f46",bodies:["#38bdf8","#fbbf24","#a3e635","#f472b6","#c084fc","#2dd4bf","#fb923c","#818cf8"]}:{text:"#3f3f46",grid:"#e4e4e7",bodies:["#0369a1","#b45309","#4d7c0f","#be185d","#7c3aed","#0f766e","#c2410c","#4338ca"]}}const escapeHtml$1$1=te=>te.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),px$1=te=>String(Math.round(te*100)/100);function renderGravitySVG(te,ee,ne={},xe){const it=ne.width??640,ut=ne.height??400,ht=palette$1(xe),dt=28;let Mt=1/0,ft=1/0,gt=-1/0,xt=-1/0;for(const zt of ee.samples)zt.positions.forEach((Xt,Zt)=>{if(!Xt)return;const Ht=ee.initial[Zt].radius??0;Mt=Math.min(Mt,Xt[0]-Ht),gt=Math.max(gt,Xt[0]+Ht),ft=Math.min(ft,Xt[1]-Ht),xt=Math.max(xt,Xt[1]+Ht)});Number.isFinite(Mt)||(Mt=-1,gt=1,ft=-1,xt=1);const mt=Math.max(gt-Mt,1e-9),Dt=Math.max(xt-ft,1e-9),yt=Math.max(mt,Dt),wt=Math.min((it-2*dt)/yt,(ut-2*dt)/yt),At=(Mt+gt)/2,Lt=(ft+xt)/2,bt=zt=>[it/2+(zt[0]-At)*wt,ut/2-(zt[1]-Lt)*wt],vt=Math.max(...ee.initial.map(zt=>zt.mass),0),Qt=ee.initial.map(zt=>zt.radius?Math.max(2.5,zt.radius*wt):vt>0&&zt.mass>0?3+6*Math.cbrt(zt.mass/vt):2.5),Ct=zt=>ee.initial[zt].color??ht.bodies[zt%ht.bodies.length],Ut=[];Ut.push(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${it} ${ut}" width="${it}" height="${ut}" role="img" aria-label="${escapeHtml$1$1(te.caption??"gravity")}">`);const Rt=Math.pow(10,Math.floor(Math.log10(yt/3))),Ft=[1,2,5].map(zt=>zt*Rt).reduce((zt,Xt)=>Math.abs(Xt*wt-it/5)<Math.abs(zt*wt-it/5)?Xt:zt),Gt=Ft*wt,_t=UNITS[te.units].length;Ut.push(`<line x1="${px$1(dt)}" y1="${px$1(ut-dt/2)}" x2="${px$1(dt+Gt)}" y2="${px$1(ut-dt/2)}" stroke="${ht.text}" stroke-width="1.5"/>`),Ut.push(`<text x="${px$1(dt+Gt+6)}" y="${px$1(ut-dt/2+4)}" fill="${ht.text}" font-size="11" font-family="ui-sans-serif, system-ui, sans-serif">${fmt$1(Ft)}${_t?` ${escapeHtml$1$1(_t)}`:""}</text>`),te.trails&&ee.initial.forEach((zt,Xt)=>{const Zt=[];let Ht=[];for(const $t of ee.samples){const Yt=$t.positions[Xt];if(!Yt){Ht.length&&Zt.push(Ht.join(" ")),Ht=[];continue}const[Kt,nn]=bt(Yt),tn=`${px$1(Kt)},${px$1(nn)}`;Ht[Ht.length-1]!==tn&&Ht.push(tn)}Ht.length&&Zt.push(Ht.join(" "));for(const $t of Zt)Ut.push(`<polyline points="${$t}" fill="none" stroke="${Ct(Xt)}" stroke-width="1.4" stroke-opacity="0.65" stroke-linejoin="round"/>`)});const Pt=ee.samples.map(zt=>zt.positions.map(Xt=>Xt?bt(Xt):null)),Ot=Pt[Pt.length-1];return ee.initial.forEach((zt,Xt)=>{const Zt=Ot[Xt];if(!Zt)return;const Ht=Qt[Xt],$t=ee.final[Xt].fixed?`<line x1="${px$1(Zt[0]-Ht-3)}" y1="${px$1(Zt[1])}" x2="${px$1(Zt[0]+Ht+3)}" y2="${px$1(Zt[1])}" stroke="${ht.text}" stroke-width="1"/><line x1="${px$1(Zt[0])}" y1="${px$1(Zt[1]-Ht-3)}" x2="${px$1(Zt[0])}" y2="${px$1(Zt[1]+Ht+3)}" stroke="${ht.text}" stroke-width="1"/>`:"";Ut.push(`<g data-gravity-body="${Xt}">${$t}<circle cx="${px$1(Zt[0])}" cy="${px$1(Zt[1])}" r="${px$1(Ht)}" fill="${Ct(Xt)}"/><text x="${px$1(Zt[0]+Ht+4)}" y="${px$1(Zt[1]-Ht-2)}" fill="${ht.text}" font-size="12" font-family="ui-sans-serif, system-ui, sans-serif">${escapeHtml$1$1(zt.id)}</text></g>`)}),Ut.push("</svg>"),{svg:Ut.join(""),frames:Pt,radii:Qt}}const escapeHtml$2=te=>te.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),gravityCss=["[data-aigui-gravity-figure]{max-width:100%;margin-block:0.75rem}","[data-aigui-gravity-figure] svg{display:block;max-width:100%;height:auto;margin-inline:auto}","[data-aigui-gravity-result]{margin-top:0.3rem;font-size:0.9rem;text-align:center;font-weight:600}","[data-aigui-gravity-caption]{margin-top:0.2rem;font-size:0.875rem;opacity:0.7;text-align:center}","[data-aigui-gravity-loading]{min-height:6rem;border-radius:0.5rem;background:currentColor;opacity:0.06}","[data-aigui-gravity-error]{padding:0.5rem 0.75rem;border-radius:0.5rem;font-size:0.875rem;opacity:0.8;background:currentColor}"].join("");function failed$1(te){const ee=escapeHtml$2(te);return{kind:"html",html:`<div data-aigui-gravity-error role="img" aria-label="${ee}">${ee}</div>`,trusted:!0}}const LOOP_MS=1e4;function animate(te,ee){const xe=Array.from(te.querySelectorAll("[data-gravity-body]")).map(Mt=>({group:Mt,circle:Mt.querySelector("circle"),label:Mt.querySelector("text"),index:Number(Mt.dataset.gravityBody)})),it=ee.frames;if(it.length<2||typeof requestAnimationFrame!="function")return()=>{};if(typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches)return()=>{};let ut=0;const ht=performance.now(),dt=Mt=>{ut=requestAnimationFrame(dt);const ft=Math.max(0,Mt-ht)%LOOP_MS/LOOP_MS,gt=it[Math.min(it.length-1,Math.floor(ft*(it.length-1)))];for(const{group:xt,circle:mt,label:Dt,index:yt}of xe){const wt=gt[yt];if(!wt){xt.setAttribute("visibility","hidden");continue}xt.removeAttribute("visibility");const At=ee.radii[yt];mt?.setAttribute("cx",String(wt[0])),mt?.setAttribute("cy",String(wt[1])),Dt?.setAttribute("x",String(wt[0]+At+4)),Dt?.setAttribute("y",String(wt[1]-At-2))}};return ut=requestAnimationFrame(dt),()=>cancelAnimationFrame(ut)}function gravity(te={}){return{name:"gravity",css:gravityCss,nodeRenderers:{gravity:(ne,xe)=>{if(ne.complete===!1)return{kind:"html",html:'<div data-aigui-gravity-loading aria-label="Loading figure"></div>'};const it=parseGravity(ne.content??"",te);if(!it.ok)return failed$1(it.error.message);const{definition:ut,initial:ht}=it.value;let dt,Mt;try{const xt=simulate(ut,ht,{maxSteps:te.maxSteps});dt=renderGravitySVG(ut,xt,te,xe?.theme),Mt=conclusionText(ut,xt,xe?.locale)}catch{return failed$1("Figure could not be drawn.")}const ft=ut.caption?`<div data-aigui-gravity-caption>${escapeHtml$2(ut.caption)}</div>`:"",gt=`<figure data-aigui-gravity-figure>${dt.svg}<div data-aigui-gravity-result>${escapeHtml$2(Mt)}</div>${ft}</figure>`;return ut.animate?{kind:"mount",mount:xt=>(xt.innerHTML=gt,animate(xt,dt))}:{kind:"html",html:gt,trusted:!0}}},isBlockComplete:(ne,xe)=>{const it=xe.trim();if(!it.startsWith("{")||!it.endsWith("}"))return!1;try{return JSON.parse(it),!0}catch{return!1}},promptSpec:ne=>gravityPromptSpec(ne)}}class ParseError extends Error{constructor(ee,ne){var xe="KaTeX parse error: "+ee,it,ut,ht=ne&&ne.loc;if(ht&&ht.start<=ht.end){var dt=ht.lexer.input;it=ht.start,ut=ht.end,it===dt.length?xe+=" at end of input: ":xe+=" at position "+(it+1)+": ";var Mt=dt.slice(it,ut).replace(/[^]/g,"$&̲"),ft;it>15?ft="…"+dt.slice(it-15,it):ft=dt.slice(0,it);var gt;ut+15<dt.length?gt=dt.slice(ut,ut+15)+"…":gt=dt.slice(ut),xe+=ft+Mt+gt}super(xe),this.name="ParseError",this.position=void 0,this.length=void 0,this.rawMessage=void 0,Object.setPrototypeOf(this,ParseError.prototype),this.position=it,it!=null&&ut!=null&&(this.length=ut-it),this.rawMessage=ee}}var uppercase=/([A-Z])/g,hyphenate=te=>te.replace(uppercase,"-$1").toLowerCase(),ESCAPE_LOOKUP={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},ESCAPE_REGEX=/[&><"']/g,escape$1=te=>String(te).replace(ESCAPE_REGEX,ee=>ESCAPE_LOOKUP[ee]),getBaseElem=te=>te.type==="ordgroup"||te.type==="color"?te.body.length===1?getBaseElem(te.body[0]):te:te.type==="font"?getBaseElem(te.body):te,characterNodesTypes=new Set(["mathord","textord","atom"]),isCharacterBox=te=>characterNodesTypes.has(getBaseElem(te).type),protocolFromUrl=te=>{var ee=/^[\x00-\x20]*([^\\/#?]*?)(:|&#0*58|&#x0*3a|&colon)/i.exec(te);return ee?ee[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(ee[1])?null:ee[1].toLowerCase():"_relative"},SETTINGS_SCHEMA={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:te=>"#"+te},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(te,ee)=>(ee.push(te),ee)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:te=>Math.max(0,te),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:te=>Math.max(0,te),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:te=>Math.max(0,te),cli:"-e, --max-expand <n>",cliProcessor:te=>te==="Infinity"?1/0:parseInt(te)},globalGroup:{type:"boolean",cli:!1}};function getImplicitDefault(te){if(typeof te!="string")return te.enum[0];switch(te){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{};default:throw new Error("Unexpected schema type; settings must declare an explicit default.")}}function getDefaultValue(te){if(te.default!==void 0)return te.default;var ee=Array.isArray(te.type)?te.type[0]:te.type;return getImplicitDefault(ee)}function applySetting(te,ee,ne,xe){var it=ne[ee];te[ee]=it!==void 0?xe.processor?xe.processor(it):it:getDefaultValue(xe)}class Settings{constructor(ee){ee===void 0&&(ee={}),this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,ee=ee||{};for(var ne of Object.keys(SETTINGS_SCHEMA)){var xe=SETTINGS_SCHEMA[ne];xe&&applySetting(this,ne,ee,xe)}}reportNonstrict(ee,ne,xe){var it=this.strict;if(typeof it=="function"&&(it=it(ee,ne,xe)),!(!it||it==="ignore")){if(it===!0||it==="error")throw new ParseError("LaTeX-incompatible input and strict mode is set to 'error': "+(ne+" ["+ee+"]"),xe);it==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(ne+" ["+ee+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+it+"': "+ne+" ["+ee+"]"))}}useStrictBehavior(ee,ne,xe){var it=this.strict;if(typeof it=="function")try{it=it(ee,ne,xe)}catch{it="error"}return!it||it==="ignore"?!1:it===!0||it==="error"?!0:it==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(ne+" ["+ee+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+it+"': "+ne+" ["+ee+"]")),!1)}isTrusted(ee){if("url"in ee&&ee.url&&!ee.protocol){var ne=protocolFromUrl(ee.url);if(ne==null)return!1;ee.protocol=ne}var xe=typeof this.trust=="function"?this.trust(ee):this.trust;return!!xe}}class Style{constructor(ee,ne,xe){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=ee,this.size=ne,this.cramped=xe}sup(){return styles$5[sup[this.id]]}sub(){return styles$5[sub$1[this.id]]}fracNum(){return styles$5[fracNum[this.id]]}fracDen(){return styles$5[fracDen[this.id]]}cramp(){return styles$5[cramp[this.id]]}text(){return styles$5[text$1[this.id]]}isTight(){return this.size>=2}}var D$2=0,Dc=1,T$2=2,Tc=3,S$2=4,Sc=5,SS=6,SSc=7,styles$5=[new Style(D$2,0,!1),new Style(Dc,0,!0),new Style(T$2,1,!1),new Style(Tc,1,!0),new Style(S$2,2,!1),new Style(Sc,2,!0),new Style(SS,3,!1),new Style(SSc,3,!0)],sup=[S$2,Sc,S$2,Sc,SS,SSc,SS,SSc],sub$1=[Sc,Sc,Sc,Sc,SSc,SSc,SSc,SSc],fracNum=[T$2,Tc,S$2,Sc,SS,SSc,SS,SSc],fracDen=[Tc,Tc,Sc,Sc,SSc,SSc,SSc,SSc],cramp=[Dc,Dc,Tc,Tc,Sc,Sc,SSc,SSc],text$1=[D$2,Dc,T$2,Tc,T$2,Tc,T$2,Tc],Style$1={DISPLAY:styles$5[D$2],TEXT:styles$5[T$2],SCRIPT:styles$5[S$2],SCRIPTSCRIPT:styles$5[SS]},scriptData=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function scriptFromCodepoint(te){for(var ee=0;ee<scriptData.length;ee++)for(var ne=scriptData[ee],xe=0;xe<ne.blocks.length;xe++){var it=ne.blocks[xe];if(te>=it[0]&&te<=it[1])return ne.name}return null}var allBlocks=[];scriptData.forEach(te=>te.blocks.forEach(ee=>allBlocks.push(...ee)));function supportedCodepoint(te){for(var ee=0;ee<allBlocks.length;ee+=2)if(te>=allBlocks[ee]&&te<=allBlocks[ee+1])return!0;return!1}var doubleBrushStroke=te=>te+" "+te,hLinePad=80,sqrtMain=function(ee,ne){return"M95,"+(622+ee+ne)+`
247
+ Not supported — explain these in markdown or use another block: three-dimensional orbits, relativistic effects, tides and non-point bodies, air resistance; projectiles and free fall near the ground belong in a motion block, as do head-on one-dimensional collisions.`,PROMPT$3={en:{spec:EN$1},"zh-CN":{spec:ZH$1}},LABELS={en:{speed:"orbital speed",period:"period",twoBody:"two-body",merged:"{a} and {b} collided and merged into {into}",bounced:"{a} and {b} bounced",more:"and {n} more",drift:"energy drift",truncated:"stopped early at t = {t} (step limit)",at:"t = "},"zh-CN":{speed:"轨道速度",period:"周期",twoBody:"二体",merged:"{a} 与 {b} 相撞,合并为 {into}",bounced:"{a} 与 {b} 碰撞弹开",more:"另有 {n} 次",drift:"能量漂移",truncated:"在 t = {t} 提前结束(步数超限)",at:"t = "}};function fmt$1(te){if(te===0)return"0";const ee=Math.abs(te);return ee>=1e5||ee<.001?te.toExponential(2).replace(/\.?0+e/,"e"):String(Number(te.toPrecision(3)))}function fill$1(te,ee){return te.replace(/\{(\w+)\}/g,(ne,xe)=>ee[xe]??"")}function conclusionText(te,ee,ne){const xe=xt=>translate$2(LABELS,ne,xt),it=UNITS[te.units],ut=ne?.startsWith("zh")===!0,ht=ut?";":"; ",dt=ut?":":": ",Mt=xt=>xt?` ${xt}`:"",ft=[];for(const xt of ee.initial){if(!xt.orbit)continue;const Dt=ee.initial.filter(yt=>yt.mass>0).length>2?`${xe("period")}(${xe("twoBody")})`:xe("period");ft.push(`${xt.id}${dt}${xe("speed")} ${fmt$1(xt.orbit.speed)}${Mt(it.speed)}, ${Dt} ${fmt$1(xt.orbit.period)}${Mt(it.time)}`.replace(", ",ut?",":", "))}const gt=ee.events.slice(0,4);for(const xt of gt){const mt=xt.rule==="merge"?fill$1(xe("merged"),{a:xt.a,b:xt.b,into:xt.into??xt.a}):fill$1(xe("bounced"),{a:xt.a,b:xt.b});ft.push(`${xe("at")}${fmt$1(xt.time)}${Mt(it.time)}${dt}${mt}`)}return ee.events.length>gt.length&&ft.push(fill$1(xe("more"),{n:String(ee.events.length-gt.length)})),!ee.events.some(xt=>xt.rule==="merge")&&ee.initial.filter(xt=>xt.mass>0).length>=2&&ft.push(`${xe("drift")} ${fmt$1(ee.energy.drift*100)}%`),ee.truncated&&ft.push(fill$1(xe("truncated"),{t:fmt$1(ee.samples[ee.samples.length-1].time)})),ft.join(ht)}function palette$1(te){return te==="dark"?{text:"#d4d4d8",grid:"#3f3f46",bodies:["#38bdf8","#fbbf24","#a3e635","#f472b6","#c084fc","#2dd4bf","#fb923c","#818cf8"]}:{text:"#3f3f46",grid:"#e4e4e7",bodies:["#0369a1","#b45309","#4d7c0f","#be185d","#7c3aed","#0f766e","#c2410c","#4338ca"]}}const escapeHtml$1$1=te=>te.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),px$1=te=>String(Math.round(te*100)/100);function renderGravitySVG(te,ee,ne={},xe){const it=ne.width??640,ut=ne.height??400,ht=palette$1(xe),dt=28;let Mt=1/0,ft=1/0,gt=-1/0,xt=-1/0;for(const zt of ee.samples)zt.positions.forEach((Xt,Zt)=>{if(!Xt)return;const Ht=ee.initial[Zt].radius??0;Mt=Math.min(Mt,Xt[0]-Ht),gt=Math.max(gt,Xt[0]+Ht),ft=Math.min(ft,Xt[1]-Ht),xt=Math.max(xt,Xt[1]+Ht)});Number.isFinite(Mt)||(Mt=-1,gt=1,ft=-1,xt=1);const mt=Math.max(gt-Mt,1e-9),Dt=Math.max(xt-ft,1e-9),yt=Math.max(mt,Dt),wt=Math.min((it-2*dt)/yt,(ut-2*dt)/yt),At=(Mt+gt)/2,Lt=(ft+xt)/2,bt=zt=>[it/2+(zt[0]-At)*wt,ut/2-(zt[1]-Lt)*wt],vt=Math.max(...ee.initial.map(zt=>zt.mass),0),Qt=ee.initial.map(zt=>zt.radius?Math.max(2.5,zt.radius*wt):vt>0&&zt.mass>0?3+6*Math.cbrt(zt.mass/vt):2.5),Ct=zt=>ee.initial[zt].color??ht.bodies[zt%ht.bodies.length],Ut=[];Ut.push(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${it} ${ut}" width="${it}" height="${ut}" role="img" aria-label="${escapeHtml$1$1(te.caption??"gravity")}">`);const Rt=Math.pow(10,Math.floor(Math.log10(yt/3))),Ft=[1,2,5].map(zt=>zt*Rt).reduce((zt,Xt)=>Math.abs(Xt*wt-it/5)<Math.abs(zt*wt-it/5)?Xt:zt),Gt=Ft*wt,_t=UNITS[te.units].length;Ut.push(`<line x1="${px$1(dt)}" y1="${px$1(ut-dt/2)}" x2="${px$1(dt+Gt)}" y2="${px$1(ut-dt/2)}" stroke="${ht.text}" stroke-width="1.5"/>`),Ut.push(`<text x="${px$1(dt+Gt+6)}" y="${px$1(ut-dt/2+4)}" fill="${ht.text}" font-size="11" font-family="ui-sans-serif, system-ui, sans-serif">${fmt$1(Ft)}${_t?` ${escapeHtml$1$1(_t)}`:""}</text>`),te.trails&&ee.initial.forEach((zt,Xt)=>{const Zt=[];let Ht=[];for(const $t of ee.samples){const Yt=$t.positions[Xt];if(!Yt){Ht.length&&Zt.push(Ht.join(" ")),Ht=[];continue}const[Kt,nn]=bt(Yt),tn=`${px$1(Kt)},${px$1(nn)}`;Ht[Ht.length-1]!==tn&&Ht.push(tn)}Ht.length&&Zt.push(Ht.join(" "));for(const $t of Zt)Ut.push(`<polyline points="${$t}" fill="none" stroke="${Ct(Xt)}" stroke-width="1.4" stroke-opacity="0.65" stroke-linejoin="round"/>`)});const Pt=ee.samples.map(zt=>zt.positions.map(Xt=>Xt?bt(Xt):null)),Ot=Pt[Pt.length-1];return ee.initial.forEach((zt,Xt)=>{const Zt=Ot[Xt];if(!Zt)return;const Ht=Qt[Xt],$t=ee.final[Xt].fixed?`<line x1="${px$1(Zt[0]-Ht-3)}" y1="${px$1(Zt[1])}" x2="${px$1(Zt[0]+Ht+3)}" y2="${px$1(Zt[1])}" stroke="${ht.text}" stroke-width="1"/><line x1="${px$1(Zt[0])}" y1="${px$1(Zt[1]-Ht-3)}" x2="${px$1(Zt[0])}" y2="${px$1(Zt[1]+Ht+3)}" stroke="${ht.text}" stroke-width="1"/>`:"";Ut.push(`<g data-gravity-body="${Xt}">${$t}<circle cx="${px$1(Zt[0])}" cy="${px$1(Zt[1])}" r="${px$1(Ht)}" fill="${Ct(Xt)}"/><text x="${px$1(Zt[0]+Ht+4)}" y="${px$1(Zt[1]-Ht-2)}" fill="${ht.text}" font-size="12" font-family="ui-sans-serif, system-ui, sans-serif">${escapeHtml$1$1(zt.id)}</text></g>`)}),Ut.push("</svg>"),{svg:Ut.join(""),frames:Pt,radii:Qt}}const escapeHtml$2=te=>te.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),gravityCss=["[data-aigui-gravity-figure]{max-width:100%;margin-block:0.75rem}","[data-aigui-gravity-figure] svg{display:block;max-width:100%;height:auto;margin-inline:auto}","[data-aigui-gravity-result]{margin-top:0.3rem;font-size:0.9rem;text-align:center;font-weight:600}","[data-aigui-gravity-caption]{margin-top:0.2rem;font-size:0.875rem;opacity:0.7;text-align:center}","[data-aigui-gravity-loading]{min-height:6rem;border-radius:0.5rem;background:currentColor;opacity:0.06}",":where([data-aigui-gravity-error]){padding:0.5rem 0.75rem;border-radius:0.5rem;font-size:0.875rem;background:color-mix(in srgb,currentColor 8%,transparent);border:1px solid color-mix(in srgb,currentColor 25%,transparent)}"].join("");function failed$1(te){const ee=escapeHtml$2(te);return{kind:"html",html:`<div data-aigui-gravity-error role="img" aria-label="${ee}">${ee}</div>`,trusted:!0}}const LOOP_MS=1e4;function animate(te,ee){const xe=Array.from(te.querySelectorAll("[data-gravity-body]")).map(Mt=>({group:Mt,circle:Mt.querySelector("circle"),label:Mt.querySelector("text"),index:Number(Mt.dataset.gravityBody)})),it=ee.frames;if(it.length<2||typeof requestAnimationFrame!="function")return()=>{};if(typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches)return()=>{};let ut=0;const ht=performance.now(),dt=Mt=>{ut=requestAnimationFrame(dt);const ft=Math.max(0,Mt-ht)%LOOP_MS/LOOP_MS,gt=it[Math.min(it.length-1,Math.floor(ft*(it.length-1)))];for(const{group:xt,circle:mt,label:Dt,index:yt}of xe){const wt=gt[yt];if(!wt){xt.setAttribute("visibility","hidden");continue}xt.removeAttribute("visibility");const At=ee.radii[yt];mt?.setAttribute("cx",String(wt[0])),mt?.setAttribute("cy",String(wt[1])),Dt?.setAttribute("x",String(wt[0]+At+4)),Dt?.setAttribute("y",String(wt[1]-At-2))}};return ut=requestAnimationFrame(dt),()=>cancelAnimationFrame(ut)}function gravity(te={}){return{name:"gravity",css:gravityCss,nodeRenderers:{gravity:(ne,xe)=>{if(ne.complete===!1)return{kind:"html",html:'<div data-aigui-gravity-loading aria-label="Loading figure"></div>'};const it=parseGravity(ne.content??"",te);if(!it.ok)return failed$1(it.error.message);const{definition:ut,initial:ht}=it.value;let dt,Mt;try{const xt=simulate(ut,ht,{maxSteps:te.maxSteps});dt=renderGravitySVG(ut,xt,te,xe?.theme),Mt=conclusionText(ut,xt,xe?.locale)}catch{return failed$1("Figure could not be drawn.")}const ft=ut.caption?`<div data-aigui-gravity-caption>${escapeHtml$2(ut.caption)}</div>`:"",gt=`<figure data-aigui-gravity-figure>${dt.svg}<div data-aigui-gravity-result>${escapeHtml$2(Mt)}</div>${ft}</figure>`;return ut.animate?{kind:"mount",mount:xt=>(xt.innerHTML=gt,animate(xt,dt))}:{kind:"html",html:gt,trusted:!0}}},isBlockComplete:(ne,xe)=>{const it=xe.trim();if(!it.startsWith("{")||!it.endsWith("}"))return!1;try{return JSON.parse(it),!0}catch{return!1}},promptSpec:ne=>gravityPromptSpec(ne)}}class ParseError extends Error{constructor(ee,ne){var xe="KaTeX parse error: "+ee,it,ut,ht=ne&&ne.loc;if(ht&&ht.start<=ht.end){var dt=ht.lexer.input;it=ht.start,ut=ht.end,it===dt.length?xe+=" at end of input: ":xe+=" at position "+(it+1)+": ";var Mt=dt.slice(it,ut).replace(/[^]/g,"$&̲"),ft;it>15?ft="…"+dt.slice(it-15,it):ft=dt.slice(0,it);var gt;ut+15<dt.length?gt=dt.slice(ut,ut+15)+"…":gt=dt.slice(ut),xe+=ft+Mt+gt}super(xe),this.name="ParseError",this.position=void 0,this.length=void 0,this.rawMessage=void 0,Object.setPrototypeOf(this,ParseError.prototype),this.position=it,it!=null&&ut!=null&&(this.length=ut-it),this.rawMessage=ee}}var uppercase=/([A-Z])/g,hyphenate=te=>te.replace(uppercase,"-$1").toLowerCase(),ESCAPE_LOOKUP={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},ESCAPE_REGEX=/[&><"']/g,escape$1=te=>String(te).replace(ESCAPE_REGEX,ee=>ESCAPE_LOOKUP[ee]),getBaseElem=te=>te.type==="ordgroup"||te.type==="color"?te.body.length===1?getBaseElem(te.body[0]):te:te.type==="font"?getBaseElem(te.body):te,characterNodesTypes=new Set(["mathord","textord","atom"]),isCharacterBox=te=>characterNodesTypes.has(getBaseElem(te).type),protocolFromUrl=te=>{var ee=/^[\x00-\x20]*([^\\/#?]*?)(:|&#0*58|&#x0*3a|&colon)/i.exec(te);return ee?ee[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(ee[1])?null:ee[1].toLowerCase():"_relative"},SETTINGS_SCHEMA={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:te=>"#"+te},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(te,ee)=>(ee.push(te),ee)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:te=>Math.max(0,te),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:te=>Math.max(0,te),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:te=>Math.max(0,te),cli:"-e, --max-expand <n>",cliProcessor:te=>te==="Infinity"?1/0:parseInt(te)},globalGroup:{type:"boolean",cli:!1}};function getImplicitDefault(te){if(typeof te!="string")return te.enum[0];switch(te){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{};default:throw new Error("Unexpected schema type; settings must declare an explicit default.")}}function getDefaultValue(te){if(te.default!==void 0)return te.default;var ee=Array.isArray(te.type)?te.type[0]:te.type;return getImplicitDefault(ee)}function applySetting(te,ee,ne,xe){var it=ne[ee];te[ee]=it!==void 0?xe.processor?xe.processor(it):it:getDefaultValue(xe)}class Settings{constructor(ee){ee===void 0&&(ee={}),this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,ee=ee||{};for(var ne of Object.keys(SETTINGS_SCHEMA)){var xe=SETTINGS_SCHEMA[ne];xe&&applySetting(this,ne,ee,xe)}}reportNonstrict(ee,ne,xe){var it=this.strict;if(typeof it=="function"&&(it=it(ee,ne,xe)),!(!it||it==="ignore")){if(it===!0||it==="error")throw new ParseError("LaTeX-incompatible input and strict mode is set to 'error': "+(ne+" ["+ee+"]"),xe);it==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(ne+" ["+ee+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+it+"': "+ne+" ["+ee+"]"))}}useStrictBehavior(ee,ne,xe){var it=this.strict;if(typeof it=="function")try{it=it(ee,ne,xe)}catch{it="error"}return!it||it==="ignore"?!1:it===!0||it==="error"?!0:it==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(ne+" ["+ee+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+it+"': "+ne+" ["+ee+"]")),!1)}isTrusted(ee){if("url"in ee&&ee.url&&!ee.protocol){var ne=protocolFromUrl(ee.url);if(ne==null)return!1;ee.protocol=ne}var xe=typeof this.trust=="function"?this.trust(ee):this.trust;return!!xe}}class Style{constructor(ee,ne,xe){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=ee,this.size=ne,this.cramped=xe}sup(){return styles$5[sup[this.id]]}sub(){return styles$5[sub$1[this.id]]}fracNum(){return styles$5[fracNum[this.id]]}fracDen(){return styles$5[fracDen[this.id]]}cramp(){return styles$5[cramp[this.id]]}text(){return styles$5[text$1[this.id]]}isTight(){return this.size>=2}}var D$2=0,Dc=1,T$2=2,Tc=3,S$2=4,Sc=5,SS=6,SSc=7,styles$5=[new Style(D$2,0,!1),new Style(Dc,0,!0),new Style(T$2,1,!1),new Style(Tc,1,!0),new Style(S$2,2,!1),new Style(Sc,2,!0),new Style(SS,3,!1),new Style(SSc,3,!0)],sup=[S$2,Sc,S$2,Sc,SS,SSc,SS,SSc],sub$1=[Sc,Sc,Sc,Sc,SSc,SSc,SSc,SSc],fracNum=[T$2,Tc,S$2,Sc,SS,SSc,SS,SSc],fracDen=[Tc,Tc,Sc,Sc,SSc,SSc,SSc,SSc],cramp=[Dc,Dc,Tc,Tc,Sc,Sc,SSc,SSc],text$1=[D$2,Dc,T$2,Tc,T$2,Tc,T$2,Tc],Style$1={DISPLAY:styles$5[D$2],TEXT:styles$5[T$2],SCRIPT:styles$5[S$2],SCRIPTSCRIPT:styles$5[SS]},scriptData=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function scriptFromCodepoint(te){for(var ee=0;ee<scriptData.length;ee++)for(var ne=scriptData[ee],xe=0;xe<ne.blocks.length;xe++){var it=ne.blocks[xe];if(te>=it[0]&&te<=it[1])return ne.name}return null}var allBlocks=[];scriptData.forEach(te=>te.blocks.forEach(ee=>allBlocks.push(...ee)));function supportedCodepoint(te){for(var ee=0;ee<allBlocks.length;ee+=2)if(te>=allBlocks[ee]&&te<=allBlocks[ee+1])return!0;return!1}var doubleBrushStroke=te=>te+" "+te,hLinePad=80,sqrtMain=function(ee,ne){return"M95,"+(622+ee+ne)+`
244
248
  c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14
245
249
  c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54
246
250
  c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10
@@ -594,7 +598,7 @@ Example — a table, its top resting on four legs:
594
598
  }
595
599
  \`\`\`
596
600
 
597
- Not supported in this version — explain these in markdown instead: boolean operations (holes, cuts), curved surface modelling, textures, animation, physics, lighting setup. For solid-geometry questions (sections of a cube and the like) use a solid block, not a scene.`,PROMPT={en:{spec:EN},"zh-CN":{spec:ZH}},escapeHtml=te=>te.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");function loading$1(){return{kind:"html",html:'<div data-aigui-scene-loading aria-label="Loading scene"></div>'}}function failedHtml(te){return`<div data-aigui-scene-error role="img" aria-label="${escapeHtml(te)}">${escapeHtml(te)}</div>`}function failed(te){return{kind:"html",html:failedHtml(te),trusted:!0}}const sceneCss=["[data-aigui-scene]{max-width:100%;margin-block:0.75rem}","[data-aigui-scene] canvas{display:block;max-width:100%;touch-action:none;cursor:grab}","[data-aigui-scene] canvas:active{cursor:grabbing}","[data-aigui-scene-caption]{margin-top:0.35rem;font-size:0.875rem;opacity:0.75;text-align:center}","[data-aigui-scene-loading]{min-height:6rem;border-radius:0.5rem;background:currentColor;opacity:0.06}","[data-aigui-scene-error]{padding:0.5rem 0.75rem;border-radius:0.5rem;font-size:0.875rem;opacity:0.8;background:currentColor}","[data-aigui-scene-model-error]{margin-top:0.25rem;font-size:0.8rem;opacity:0.7}"].join("");function scene(te={}){const ee=te.height??360;return{name:"scene",css:sceneCss,nodeRenderers:{scene:async(xe,it)=>{if(xe.complete===!1)return loading$1();const ut=parseScene(xe.content??"",te);if(!ut.ok)return failed(ut.error.message);const{definition:ht,refused:dt}=ut.value;return{kind:"mount",mount:Mt=>{Mt.setAttribute("data-aigui-scene",String(ht.objects.length));const ft=document.createElement("div");if(Mt.appendChild(ft),ht.caption){const mt=document.createElement("div");mt.setAttribute("data-aigui-scene-caption",""),mt.textContent=ht.caption,Mt.appendChild(mt)}for(const mt of dt){const Dt=document.createElement("div");Dt.setAttribute("data-aigui-scene-model-error",""),Dt.textContent=mt.message,Mt.appendChild(Dt)}let gt,xt=!1;return Promise.resolve().then(()=>renderCI1iZ6Yu).then(({mountScene:mt})=>mt(ft,ht,{height:ee,theme:it?.theme,onModelError:Dt=>{const yt=document.createElement("div");yt.setAttribute("data-aigui-scene-model-error",""),yt.textContent=`Model could not be loaded from ${new URL(Dt.src).origin}.`,Mt.appendChild(yt)}})).then(mt=>{xt?mt.destroy():gt=mt}).catch(()=>{ft.replaceChildren(),ft.innerHTML=failedHtml("Scene could not be drawn.")}),()=>{xt=!0,gt?.destroy()}}}}},isBlockComplete:(xe,it)=>{const ut=it.trim();if(!ut.startsWith("{")||!ut.endsWith("}"))return!1;try{return JSON.parse(ut),!0}catch{return!1}},promptSpec:xe=>scenePromptSpec(xe)}}const DEFAULT_WIDTH=720;function imagePlugins(te=DEFAULT_WIDTH){const ee=Math.max(200,te-32);return[chart({interactive:!1,width:ee,height:Math.round(ee*.625)}),mermaid$1(),katex({css:""}),dashboard(),scene({height:Math.round(ee*.6)}),gravity({animate:!1,width:ee,height:Math.round(ee*.625)}),bigscreen({animate:!1}),molecule({width:ee,height:Math.round(ee*.6)})]}const PENDING="[data-aigui-async-pending]",FAILED="[data-aigui-async-error]";function quiescent(te,ee){return new Promise(ne=>{let xe=0;const it=new MutationObserver(ut);function ut(){window.clearTimeout(xe),xe=window.setTimeout(ht,ee)}function ht(){if(te.querySelector(PENDING)){ut();return}it.disconnect(),ne()}it.observe(te,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),ut()})}function frame$1(){return new Promise(te=>window.requestAnimationFrame(()=>te()))}window.__aiguiRenderBlock=async(te,ee={})=>{const ne=document.getElementById("root");ne.replaceChildren(),createRenderer(ne,{plugins:imagePlugins(ee.width),theme:ee.theme}).push(te),await quiescent(ne,ee.quietMs??150),await document.fonts.ready,await frame$1(),await frame$1(),ne.querySelector("canvas")&&(await new Promise(ut=>window.setTimeout(ut,ee.canvasSettleMs??600)),await frame$1(),await frame$1());const it=ne.getBoundingClientRect();return{width:Math.ceil(it.width),height:Math.ceil(it.height),failed:ne.querySelector(FAILED)!==null}},use([install$15,install$16,install$14,install$12,install$W,install$10,install$P,install$O,install$V,install$N,install$i,install$H,install$r,install$G,install$11,install$y,install$A,install$l,install$g]);let glReady=null;const loadGl=()=>glReady??=Promise.resolve().then(()=>index),DEFAULT_HEIGHT={kpi:0,gauge:180,rank:220,chart:240,chart3d:280,globe:300},easeOut=te=>1-Math.pow(1-te,3);function el(te,ee={},ne){const xe=document.createElement(te);for(const[it,ut]of Object.entries(ee))xe.setAttribute(it,ut);return ne!==void 0&&(xe.textContent=ne),xe}function countUp(te,ee,ne){const xe=ee.decimals??0,it=ft=>{te.textContent=`${ee.prefix??""}${formatNumber$1(ft,xe)}`};if(!ne||typeof requestAnimationFrame!="function")return it(ee.value),()=>{};const ut=1400;let ht,dt=0;const Mt=ft=>{ht??=ft;const gt=Math.min(1,(ft-ht)/ut);it(ee.value*easeOut(gt)),gt<1&&(dt=requestAnimationFrame(Mt))};return dt=requestAnimationFrame(Mt),()=>cancelAnimationFrame(dt)}function sparkline(te,ee,ne,xe){const it=Math.min(...te),ht=Math.max(...te)-it||1,dt=ne/(te.length-1),Mt=te.map((mt,Dt)=>`${(Dt*dt).toFixed(1)},${(xe-2-(mt-it)/ht*(xe-4)).toFixed(1)}`),ft=document.createElementNS("http://www.w3.org/2000/svg","svg");ft.setAttribute("viewBox",`0 0 ${ne} ${xe}`),ft.setAttribute("width","100%"),ft.setAttribute("height",String(xe)),ft.setAttribute("preserveAspectRatio","none"),ft.setAttribute("aria-hidden","true");const gt=document.createElementNS("http://www.w3.org/2000/svg","polygon");gt.setAttribute("points",`0,${xe} ${Mt.join(" ")} ${ne},${xe}`),gt.setAttribute("fill",withAlpha(ee.accent,.18));const xt=document.createElementNS("http://www.w3.org/2000/svg","polyline");return xt.setAttribute("points",Mt.join(" ")),xt.setAttribute("fill","none"),xt.setAttribute("stroke",ee.accent),xt.setAttribute("stroke-width","2"),xt.setAttribute("stroke-linejoin","round"),xt.setAttribute("vector-effect","non-scaling-stroke"),ft.append(gt,xt),ft}function mountKpi(te,ee,ne,xe){te.classList.add("aigui-bs-kpi");const it=el("div",{class:"aigui-bs-kpi-row"}),ut=el("span",{class:"aigui-bs-kpi-value"});ut.style.color=ne.accent,ut.style.textShadow=`0 0 18px ${withAlpha(ne.accent,.45)}`,it.appendChild(ut),ee.unit&&it.appendChild(el("span",{class:"aigui-bs-kpi-unit"},ee.unit)),te.appendChild(it);const ht=el("div",{class:"aigui-bs-kpi-meta"});if(ee.delta!==void 0){const dt=ee.delta>=0,Mt=(ee.upIsGood??!0)===dt,ft=el("span",{class:"aigui-bs-kpi-delta"},`${dt?"▲":"▼"} ${formatNumber$1(Math.abs(ee.delta)*100,1)}%`);ft.style.color=Mt?ne.good:ne.bad,ht.appendChild(ft)}if(ee.label&&ht.appendChild(el("span",{class:"aigui-bs-kpi-label"},ee.label)),ht.childNodes.length&&te.appendChild(ht),ee.trend){const dt=el("div",{class:"aigui-bs-kpi-spark"});dt.appendChild(sparkline(ee.trend,ne,200,36)),te.appendChild(dt)}return countUp(ut,ee,xe)}function mountRank(te,ee,ne,xe){te.classList.add("aigui-bs-rank");const it=[...ee.items].sort((Mt,ft)=>ft.value-Mt.value).slice(0,ee.top??8),ut=Math.max(...it.map(Mt=>Mt.value),0)||1,ht=[];if(it.forEach((Mt,ft)=>{const gt=el("div",{class:"aigui-bs-rank-row"}),xt=el("span",{class:"aigui-bs-rank-n"},String(ft+1));ft<3&&(xt.style.color=ne.accent);const mt=el("span",{class:"aigui-bs-rank-name"},Mt.name),Dt=el("span",{class:"aigui-bs-rank-track"});Dt.style.background=ne.track;const yt=el("span",{class:"aigui-bs-rank-fill"}),wt=ft===0?ne.accent:ne.series[ft%(ne.series.length-1)+1];yt.style.background=`linear-gradient(90deg, ${withAlpha(wt,.55)}, ${wt})`,yt.style.boxShadow=`0 0 10px ${withAlpha(wt,.5)}`;const At=`${Math.max(2,Math.max(Mt.value,0)/ut*100)}%`;yt.style.width=xe?"0%":At,Dt.appendChild(yt);const Lt=el("span",{class:"aigui-bs-rank-value"},`${formatNumber$1(Mt.value,Number.isInteger(Mt.value)?0:1)}${ee.unit??""}`);gt.append(xt,mt,Dt,Lt),te.appendChild(gt),ht.push({fill:yt,width:At})}),!xe||typeof requestAnimationFrame!="function")return()=>{};const dt=requestAnimationFrame(()=>requestAnimationFrame(()=>ht.forEach(({fill:Mt,width:ft})=>Mt.style.width=ft)));return()=>cancelAnimationFrame(dt)}function follow(te,ee){if(typeof ResizeObserver>"u")return()=>{};const ne=new ResizeObserver(()=>ee.resize());return ne.observe(te),()=>ne.disconnect()}function whenSized(te,ee){if(te.clientWidth>0||typeof requestAnimationFrame!="function")return ee(),()=>{};const ne=requestAnimationFrame(ee);return()=>cancelAnimationFrame(ne)}function mountChart(te,ee,ne){let xe,it;const ut=whenSized(te,()=>{xe=init$3(te,ne==="dark"?"dark":void 0,{renderer:"canvas"}),xe.setOption(ee),it=follow(te,xe)});return()=>{ut(),it?.(),xe?.dispose()}}function mountGl(te,ee,ne,xe){let it,ut,ht,dt=!1;return loadGl().then(()=>{dt||(ht=whenSized(te,()=>{dt||(it=init$3(te,ne==="dark"?"dark":void 0,{renderer:"canvas"}),it.setOption(ee()),ut=follow(te,it))}))}).catch(()=>{dt||(it?.dispose(),it=void 0,xe())}),()=>{dt=!0,ht?.(),ut?.(),it?.dispose()}}function note$2(te,ee){te.replaceChildren(el("div",{class:"aigui-bs-note"},ee))}function mountPanel(te,ee,ne,xe){const it=el("section",{class:"aigui-bs-panel","data-aigui-bigscreen-panel":te.kind});if(it.style.gridColumn=`span ${Math.min(te.span??4,ee.columns)}`,it.style.borderColor=withAlpha(ne.accent,ee.theme==="dark"?.22:.18),te.title){const Mt=el("header",{class:"aigui-bs-panel-title"},te.title),ft=el("i",{class:"aigui-bs-panel-mark"});ft.style.background=ne.accent,ft.style.boxShadow=`0 0 8px ${ne.accent}`,Mt.prepend(ft),it.appendChild(Mt)}const ut=el("div",{class:"aigui-bs-panel-body"}),ht=te.height??DEFAULT_HEIGHT[te.kind];ht&&(ut.style.height=`${ht}px`),it.appendChild(ut);let dt=()=>{};try{switch(te.kind){case"kpi":dt=mountKpi(ut,te,ne,xe);break;case"rank":dt=mountRank(ut,te,ne,xe);break;case"gauge":dt=mountChart(ut,gaugeOption(te,ne,xe),ee.theme);break;case"chart":dt=mountChart(ut,chartOption(te,ne,xe),ee.theme);break;case"chart3d":dt=mountGl(ut,()=>chart3dOption(te,ne,xe),ee.theme,()=>note$2(ut,"3D panels need echarts-gl and WebGL."));break;case"globe":dt=mountGl(ut,()=>globeOption(te,ne,xe,globeTexture(ne,ee.theme)),ee.theme,()=>note$2(ut,"Globe panels need echarts-gl and WebGL."));break}}catch{note$2(ut,"Panel could not be drawn.")}return{node:it,destroy:dt}}function mountScreen(te,ee,ne){const xe=palette$2(ee);if(te.setAttribute("data-aigui-bigscreen",ee.theme),te.style.setProperty("--aigui-bs-accent",xe.accent),te.style.setProperty("--aigui-bs-text",xe.text),te.style.setProperty("--aigui-bs-muted",xe.muted),ee.title||ee.subtitle){const ht=el("header",{class:"aigui-bs-head"});if(ee.title){const Mt=el("h2",{class:"aigui-bs-title"},ee.title);Mt.style.textShadow=ee.theme==="dark"?`0 0 24px ${withAlpha(xe.accent,.35)}`:"none",ht.appendChild(Mt)}ee.subtitle&&ht.appendChild(el("p",{class:"aigui-bs-subtitle"},ee.subtitle));const dt=el("div",{class:"aigui-bs-rule"});dt.style.background=`linear-gradient(90deg, transparent, ${xe.accent}, transparent)`,ht.appendChild(dt),te.appendChild(ht)}const it=el("div",{class:"aigui-bs-grid"});it.style.gridTemplateColumns=`repeat(${ee.columns}, minmax(0, 1fr))`,te.appendChild(it);const ut=ee.panels.map(ht=>mountPanel(ht,ee,xe,ne));for(const{node:ht}of ut)it.appendChild(ht);return()=>{for(const{destroy:ht}of ut)ht();te.replaceChildren()}}const mountDVHPS1xP=Object.freeze(Object.defineProperty({__proto__:null,mountScreen},Symbol.toStringTag,{value:"Module"}));use([install$g,install$i]);const echarts$2={init:function(){return init$3.apply(null,arguments)}};use(installLabelLayout);const echartsNS=Object.freeze(Object.defineProperty({__proto__:null,Axis:Axis$1,ChartView,ComponentModel,ComponentView,List:SeriesData,Model,PRIORITY,SeriesModel,color:color$1,connect,dataTool,default:echarts$2,dependencies,disConnect,disconnect,dispose,env,extendChartView,extendComponentModel,extendComponentView,extendSeriesModel,format:format$2,getCoordinateSystemDimensions,getInstanceByDom,getInstanceById,getMap:getMap$1,graphic,helper,init:init$3,innerDrawElementOnCanvas:brushSingle,matrix,number:number$5,parseGeoJSON,parseGeoJson:parseGeoJSON,registerAction,registerCoordinateSystem,registerLayout,registerLoading,registerLocale,registerMap:registerMap$1,registerPostInit,registerPostUpdate,registerPreprocessor,registerProcessor,registerTheme,registerTransform,registerUpdateLifecycle,registerVisual,setCanvasCreator,setPlatformAPI,throttle,time:time$1,use,util:util$1,vector,version:version$2,zrUtil:util$2,zrender},Symbol.toStringTag,{value:"Module"}));function derive(te,ee,ne){typeof ee=="object"&&(ne=ee,ee=null);var xe=this,it;if(!(te instanceof Function)){it=[];for(var ut in te)te.hasOwnProperty(ut)&&it.push(ut)}var ht=function(Mt){if(xe.apply(this,arguments),te instanceof Function?extend$3(this,te.call(this,Mt)):extendWithPropList(this,te,it),this.constructor===ht)for(var ft=ht.__initializers__,gt=0;gt<ft.length;gt++)ft[gt].apply(this,arguments)};ht.__super__=xe,xe.__initializers__?ht.__initializers__=xe.__initializers__.slice():ht.__initializers__=[],ee&&ht.__initializers__.push(ee);var dt=function(){};return dt.prototype=xe.prototype,ht.prototype=new dt,ht.prototype.constructor=ht,extend$3(ht.prototype,ne),ht.extend=xe.extend,ht.derive=xe.extend,ht}function extend$3(te,ee){if(ee)for(var ne in ee)ee.hasOwnProperty(ne)&&(te[ne]=ee[ne])}function extendWithPropList(te,ee,ne){for(var xe=0;xe<ne.length;xe++){var it=ne[xe];te[it]=ee[it]}}const extendMixin={extend:derive,derive};function Handler(te,ee){this.action=te,this.context=ee}var notifier={trigger:function(te){if(this.hasOwnProperty("__handlers__")&&this.__handlers__.hasOwnProperty(te)){var ee=this.__handlers__[te],ne=ee.length,xe=-1,it=arguments;switch(it.length){case 1:for(;++xe<ne;)ee[xe].action.call(ee[xe].context);return;case 2:for(;++xe<ne;)ee[xe].action.call(ee[xe].context,it[1]);return;case 3:for(;++xe<ne;)ee[xe].action.call(ee[xe].context,it[1],it[2]);return;case 4:for(;++xe<ne;)ee[xe].action.call(ee[xe].context,it[1],it[2],it[3]);return;case 5:for(;++xe<ne;)ee[xe].action.call(ee[xe].context,it[1],it[2],it[3],it[4]);return;default:for(;++xe<ne;)ee[xe].action.apply(ee[xe].context,Array.prototype.slice.call(it,1));return}}},on:function(te,ee,ne){if(!(!te||!ee)){var xe=this.__handlers__||(this.__handlers__={});if(!xe[te])xe[te]=[];else if(this.has(te,ee))return;var it=new Handler(ee,ne||this);return xe[te].push(it),this}},once:function(te,ee,ne){if(!te||!ee)return;var xe=this;function it(){xe.off(te,it),ee.apply(this,arguments)}return this.on(te,it,ne)},before:function(te,ee,ne){if(!(!te||!ee))return te="before"+te,this.on(te,ee,ne)},after:function(te,ee,ne){if(!(!te||!ee))return te="after"+te,this.on(te,ee,ne)},success:function(te,ee){return this.once("success",te,ee)},error:function(te,ee){return this.once("error",te,ee)},off:function(te,ee){var ne=this.__handlers__||(this.__handlers__={});if(!ee){ne[te]=[];return}if(ne[te]){for(var xe=ne[te],it=[],ut=0;ut<xe.length;ut++)ee&&xe[ut].action!==ee&&it.push(xe[ut]);ne[te]=it}return this},has:function(te,ee){var ne=this.__handlers__;if(!ne||!ne[te])return!1;for(var xe=ne[te],it=0;it<xe.length;it++)if(xe[it].action===ee)return!0}},guid=0,ArrayProto=Array.prototype,nativeForEach=ArrayProto.forEach,util={genGUID:function(){return++guid},relative2absolute:function(te,ee){if(!ee||te.match(/^\//))return te;for(var ne=te.split("/"),xe=ee.split("/"),it=ne[0];it==="."||it==="..";)it===".."&&xe.pop(),ne.shift(),it=ne[0];return xe.join("/")+"/"+ne.join("/")},extend:function(te,ee){if(ee)for(var ne in ee)ee.hasOwnProperty(ne)&&(te[ne]=ee[ne]);return te},defaults:function(te,ee){if(ee)for(var ne in ee)te[ne]===void 0&&(te[ne]=ee[ne]);return te},extendWithPropList:function(te,ee,ne){if(ee)for(var xe=0;xe<ne.length;xe++){var it=ne[xe];te[it]=ee[it]}return te},defaultsWithPropList:function(te,ee,ne){if(ee)for(var xe=0;xe<ne.length;xe++){var it=ne[xe];te[it]==null&&(te[it]=ee[it])}return te},each:function(te,ee,ne){if(te&&ee)if(te.forEach&&te.forEach===nativeForEach)te.forEach(ee,ne);else if(te.length===+te.length)for(var xe=0,it=te.length;xe<it;xe++)ee.call(ne,te[xe],xe,te);else for(var ut in te)te.hasOwnProperty(ut)&&ee.call(ne,te[ut],ut,te)},isObject:function(te){return te===Object(te)},isArray:function(te){return Array.isArray(te)},isArrayLike:function(te){return te?te.length===+te.length:!1},clone:function(te){if(util.isObject(te)){if(util.isArray(te))return te.slice();if(util.isArrayLike(te)){for(var ee=new te.constructor(te.length),ne=0;ne<te.length;ne++)ee[ne]=te[ne];return ee}else return util.extend({},te)}else return te}},Base=function(){this.__uid__=util.genGUID()};Base.__initializers__=[function(te){util.extend(this,te)}],util.extend(Base,extendMixin),util.extend(Base.prototype,notifier);var GLMAT_EPSILON=1e-6,GLMAT_ARRAY_TYPE=Array,GLMAT_RANDOM$1=Math.random,vec3$f={};vec3$f.create=function(){var te=new GLMAT_ARRAY_TYPE(3);return te[0]=0,te[1]=0,te[2]=0,te},vec3$f.clone=function(te){var ee=new GLMAT_ARRAY_TYPE(3);return ee[0]=te[0],ee[1]=te[1],ee[2]=te[2],ee},vec3$f.fromValues=function(te,ee,ne){var xe=new GLMAT_ARRAY_TYPE(3);return xe[0]=te,xe[1]=ee,xe[2]=ne,xe},vec3$f.copy=function(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te},vec3$f.set=function(te,ee,ne,xe){return te[0]=ee,te[1]=ne,te[2]=xe,te},vec3$f.add=function(te,ee,ne){return te[0]=ee[0]+ne[0],te[1]=ee[1]+ne[1],te[2]=ee[2]+ne[2],te},vec3$f.subtract=function(te,ee,ne){return te[0]=ee[0]-ne[0],te[1]=ee[1]-ne[1],te[2]=ee[2]-ne[2],te},vec3$f.sub=vec3$f.subtract,vec3$f.multiply=function(te,ee,ne){return te[0]=ee[0]*ne[0],te[1]=ee[1]*ne[1],te[2]=ee[2]*ne[2],te},vec3$f.mul=vec3$f.multiply,vec3$f.divide=function(te,ee,ne){return te[0]=ee[0]/ne[0],te[1]=ee[1]/ne[1],te[2]=ee[2]/ne[2],te},vec3$f.div=vec3$f.divide,vec3$f.min=function(te,ee,ne){return te[0]=Math.min(ee[0],ne[0]),te[1]=Math.min(ee[1],ne[1]),te[2]=Math.min(ee[2],ne[2]),te},vec3$f.max=function(te,ee,ne){return te[0]=Math.max(ee[0],ne[0]),te[1]=Math.max(ee[1],ne[1]),te[2]=Math.max(ee[2],ne[2]),te},vec3$f.scale=function(te,ee,ne){return te[0]=ee[0]*ne,te[1]=ee[1]*ne,te[2]=ee[2]*ne,te},vec3$f.scaleAndAdd=function(te,ee,ne,xe){return te[0]=ee[0]+ne[0]*xe,te[1]=ee[1]+ne[1]*xe,te[2]=ee[2]+ne[2]*xe,te},vec3$f.distance=function(te,ee){var ne=ee[0]-te[0],xe=ee[1]-te[1],it=ee[2]-te[2];return Math.sqrt(ne*ne+xe*xe+it*it)},vec3$f.dist=vec3$f.distance,vec3$f.squaredDistance=function(te,ee){var ne=ee[0]-te[0],xe=ee[1]-te[1],it=ee[2]-te[2];return ne*ne+xe*xe+it*it},vec3$f.sqrDist=vec3$f.squaredDistance,vec3$f.length=function(te){var ee=te[0],ne=te[1],xe=te[2];return Math.sqrt(ee*ee+ne*ne+xe*xe)},vec3$f.len=vec3$f.length,vec3$f.squaredLength=function(te){var ee=te[0],ne=te[1],xe=te[2];return ee*ee+ne*ne+xe*xe},vec3$f.sqrLen=vec3$f.squaredLength,vec3$f.negate=function(te,ee){return te[0]=-ee[0],te[1]=-ee[1],te[2]=-ee[2],te},vec3$f.inverse=function(te,ee){return te[0]=1/ee[0],te[1]=1/ee[1],te[2]=1/ee[2],te},vec3$f.normalize=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ne*ne+xe*xe+it*it;return ut>0&&(ut=1/Math.sqrt(ut),te[0]=ee[0]*ut,te[1]=ee[1]*ut,te[2]=ee[2]*ut),te},vec3$f.dot=function(te,ee){return te[0]*ee[0]+te[1]*ee[1]+te[2]*ee[2]},vec3$f.cross=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ne[0],dt=ne[1],Mt=ne[2];return te[0]=it*Mt-ut*dt,te[1]=ut*ht-xe*Mt,te[2]=xe*dt-it*ht,te},vec3$f.lerp=function(te,ee,ne,xe){var it=ee[0],ut=ee[1],ht=ee[2];return te[0]=it+xe*(ne[0]-it),te[1]=ut+xe*(ne[1]-ut),te[2]=ht+xe*(ne[2]-ht),te},vec3$f.random=function(te,ee){ee=ee||1;var ne=GLMAT_RANDOM$1()*2*Math.PI,xe=GLMAT_RANDOM$1()*2-1,it=Math.sqrt(1-xe*xe)*ee;return te[0]=Math.cos(ne)*it,te[1]=Math.sin(ne)*it,te[2]=xe*ee,te},vec3$f.transformMat4=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ne[3]*xe+ne[7]*it+ne[11]*ut+ne[15];return ht=ht||1,te[0]=(ne[0]*xe+ne[4]*it+ne[8]*ut+ne[12])/ht,te[1]=(ne[1]*xe+ne[5]*it+ne[9]*ut+ne[13])/ht,te[2]=(ne[2]*xe+ne[6]*it+ne[10]*ut+ne[14])/ht,te},vec3$f.transformMat3=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2];return te[0]=xe*ne[0]+it*ne[3]+ut*ne[6],te[1]=xe*ne[1]+it*ne[4]+ut*ne[7],te[2]=xe*ne[2]+it*ne[5]+ut*ne[8],te},vec3$f.transformQuat=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ne[0],dt=ne[1],Mt=ne[2],ft=ne[3],gt=ft*xe+dt*ut-Mt*it,xt=ft*it+Mt*xe-ht*ut,mt=ft*ut+ht*it-dt*xe,Dt=-ht*xe-dt*it-Mt*ut;return te[0]=gt*ft+Dt*-ht+xt*-Mt-mt*-dt,te[1]=xt*ft+Dt*-dt+mt*-ht-gt*-Mt,te[2]=mt*ft+Dt*-Mt+gt*-dt-xt*-ht,te},vec3$f.rotateX=function(te,ee,ne,xe){var it=[],ut=[];return it[0]=ee[0]-ne[0],it[1]=ee[1]-ne[1],it[2]=ee[2]-ne[2],ut[0]=it[0],ut[1]=it[1]*Math.cos(xe)-it[2]*Math.sin(xe),ut[2]=it[1]*Math.sin(xe)+it[2]*Math.cos(xe),te[0]=ut[0]+ne[0],te[1]=ut[1]+ne[1],te[2]=ut[2]+ne[2],te},vec3$f.rotateY=function(te,ee,ne,xe){var it=[],ut=[];return it[0]=ee[0]-ne[0],it[1]=ee[1]-ne[1],it[2]=ee[2]-ne[2],ut[0]=it[2]*Math.sin(xe)+it[0]*Math.cos(xe),ut[1]=it[1],ut[2]=it[2]*Math.cos(xe)-it[0]*Math.sin(xe),te[0]=ut[0]+ne[0],te[1]=ut[1]+ne[1],te[2]=ut[2]+ne[2],te},vec3$f.rotateZ=function(te,ee,ne,xe){var it=[],ut=[];return it[0]=ee[0]-ne[0],it[1]=ee[1]-ne[1],it[2]=ee[2]-ne[2],ut[0]=it[0]*Math.cos(xe)-it[1]*Math.sin(xe),ut[1]=it[0]*Math.sin(xe)+it[1]*Math.cos(xe),ut[2]=it[2],te[0]=ut[0]+ne[0],te[1]=ut[1]+ne[1],te[2]=ut[2]+ne[2],te},vec3$f.forEach=function(){var te=vec3$f.create();return function(ee,ne,xe,it,ut,ht){var dt,Mt;for(ne||(ne=3),xe||(xe=0),it?Mt=Math.min(it*ne+xe,ee.length):Mt=ee.length,dt=xe;dt<Mt;dt+=ne)te[0]=ee[dt],te[1]=ee[dt+1],te[2]=ee[dt+2],ut(te,te,ht),ee[dt]=te[0],ee[dt+1]=te[1],ee[dt+2]=te[2];return ee}}(),vec3$f.angle=function(te,ee){var ne=vec3$f.fromValues(te[0],te[1],te[2]),xe=vec3$f.fromValues(ee[0],ee[1],ee[2]);vec3$f.normalize(ne,ne),vec3$f.normalize(xe,xe);var it=vec3$f.dot(ne,xe);return it>1?0:Math.acos(it)};var Vector3$1=function(te,ee,ne){te=te||0,ee=ee||0,ne=ne||0,this.array=vec3$f.fromValues(te,ee,ne),this._dirty=!0};Vector3$1.prototype={constructor:Vector3$1,add:function(te){return vec3$f.add(this.array,this.array,te.array),this._dirty=!0,this},set:function(te,ee,ne){return this.array[0]=te,this.array[1]=ee,this.array[2]=ne,this._dirty=!0,this},setArray:function(te){return this.array[0]=te[0],this.array[1]=te[1],this.array[2]=te[2],this._dirty=!0,this},clone:function(){return new Vector3$1(this.x,this.y,this.z)},copy:function(te){return vec3$f.copy(this.array,te.array),this._dirty=!0,this},cross:function(te,ee){return vec3$f.cross(this.array,te.array,ee.array),this._dirty=!0,this},dist:function(te){return vec3$f.dist(this.array,te.array)},distance:function(te){return vec3$f.distance(this.array,te.array)},div:function(te){return vec3$f.div(this.array,this.array,te.array),this._dirty=!0,this},divide:function(te){return vec3$f.divide(this.array,this.array,te.array),this._dirty=!0,this},dot:function(te){return vec3$f.dot(this.array,te.array)},len:function(){return vec3$f.len(this.array)},length:function(){return vec3$f.length(this.array)},lerp:function(te,ee,ne){return vec3$f.lerp(this.array,te.array,ee.array,ne),this._dirty=!0,this},min:function(te){return vec3$f.min(this.array,this.array,te.array),this._dirty=!0,this},max:function(te){return vec3$f.max(this.array,this.array,te.array),this._dirty=!0,this},mul:function(te){return vec3$f.mul(this.array,this.array,te.array),this._dirty=!0,this},multiply:function(te){return vec3$f.multiply(this.array,this.array,te.array),this._dirty=!0,this},negate:function(){return vec3$f.negate(this.array,this.array),this._dirty=!0,this},normalize:function(){return vec3$f.normalize(this.array,this.array),this._dirty=!0,this},random:function(te){return vec3$f.random(this.array,te),this._dirty=!0,this},scale:function(te){return vec3$f.scale(this.array,this.array,te),this._dirty=!0,this},scaleAndAdd:function(te,ee){return vec3$f.scaleAndAdd(this.array,this.array,te.array,ee),this._dirty=!0,this},sqrDist:function(te){return vec3$f.sqrDist(this.array,te.array)},squaredDistance:function(te){return vec3$f.squaredDistance(this.array,te.array)},sqrLen:function(){return vec3$f.sqrLen(this.array)},squaredLength:function(){return vec3$f.squaredLength(this.array)},sub:function(te){return vec3$f.sub(this.array,this.array,te.array),this._dirty=!0,this},subtract:function(te){return vec3$f.subtract(this.array,this.array,te.array),this._dirty=!0,this},transformMat3:function(te){return vec3$f.transformMat3(this.array,this.array,te.array),this._dirty=!0,this},transformMat4:function(te){return vec3$f.transformMat4(this.array,this.array,te.array),this._dirty=!0,this},transformQuat:function(te){return vec3$f.transformQuat(this.array,this.array,te.array),this._dirty=!0,this},applyProjection:function(te){var ee=this.array;if(te=te.array,te[15]===0){var ne=-1/ee[2];ee[0]=te[0]*ee[0]*ne,ee[1]=te[5]*ee[1]*ne,ee[2]=(te[10]*ee[2]+te[14])*ne}else ee[0]=te[0]*ee[0]+te[12],ee[1]=te[5]*ee[1]+te[13],ee[2]=te[10]*ee[2]+te[14];return this._dirty=!0,this},eulerFromQuat:function(te,ee){Vector3$1.eulerFromQuat(this,te,ee)},eulerFromMat3:function(te,ee){Vector3$1.eulerFromMat3(this,te,ee)},toString:function(){return"["+Array.prototype.join.call(this.array,",")+"]"},toArray:function(){return Array.prototype.slice.call(this.array)}};var defineProperty$5=Object.defineProperty;if(defineProperty$5){var proto$4=Vector3$1.prototype;defineProperty$5(proto$4,"x",{get:function(){return this.array[0]},set:function(te){this.array[0]=te,this._dirty=!0}}),defineProperty$5(proto$4,"y",{get:function(){return this.array[1]},set:function(te){this.array[1]=te,this._dirty=!0}}),defineProperty$5(proto$4,"z",{get:function(){return this.array[2]},set:function(te){this.array[2]=te,this._dirty=!0}})}Vector3$1.add=function(te,ee,ne){return vec3$f.add(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.set=function(te,ee,ne,xe){vec3$f.set(te.array,ee,ne,xe),te._dirty=!0},Vector3$1.copy=function(te,ee){return vec3$f.copy(te.array,ee.array),te._dirty=!0,te},Vector3$1.cross=function(te,ee,ne){return vec3$f.cross(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.dist=function(te,ee){return vec3$f.distance(te.array,ee.array)},Vector3$1.distance=Vector3$1.dist,Vector3$1.div=function(te,ee,ne){return vec3$f.divide(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.divide=Vector3$1.div,Vector3$1.dot=function(te,ee){return vec3$f.dot(te.array,ee.array)},Vector3$1.len=function(te){return vec3$f.length(te.array)},Vector3$1.lerp=function(te,ee,ne,xe){return vec3$f.lerp(te.array,ee.array,ne.array,xe),te._dirty=!0,te},Vector3$1.min=function(te,ee,ne){return vec3$f.min(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.max=function(te,ee,ne){return vec3$f.max(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.mul=function(te,ee,ne){return vec3$f.multiply(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.multiply=Vector3$1.mul,Vector3$1.negate=function(te,ee){return vec3$f.negate(te.array,ee.array),te._dirty=!0,te},Vector3$1.normalize=function(te,ee){return vec3$f.normalize(te.array,ee.array),te._dirty=!0,te},Vector3$1.random=function(te,ee){return vec3$f.random(te.array,ee),te._dirty=!0,te},Vector3$1.scale=function(te,ee,ne){return vec3$f.scale(te.array,ee.array,ne),te._dirty=!0,te},Vector3$1.scaleAndAdd=function(te,ee,ne,xe){return vec3$f.scaleAndAdd(te.array,ee.array,ne.array,xe),te._dirty=!0,te},Vector3$1.sqrDist=function(te,ee){return vec3$f.sqrDist(te.array,ee.array)},Vector3$1.squaredDistance=Vector3$1.sqrDist,Vector3$1.sqrLen=function(te){return vec3$f.sqrLen(te.array)},Vector3$1.squaredLength=Vector3$1.sqrLen,Vector3$1.sub=function(te,ee,ne){return vec3$f.subtract(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.subtract=Vector3$1.sub,Vector3$1.transformMat3=function(te,ee,ne){return vec3$f.transformMat3(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.transformMat4=function(te,ee,ne){return vec3$f.transformMat4(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.transformQuat=function(te,ee,ne){return vec3$f.transformQuat(te.array,ee.array,ne.array),te._dirty=!0,te};function clamp$2(te,ee,ne){return te<ee?ee:te>ne?ne:te}var atan2$1=Math.atan2,asin$2=Math.asin,abs$2=Math.abs;Vector3$1.eulerFromQuat=function(te,ee,mt){te._dirty=!0,ee=ee.array;var xe=te.array,it=ee[0],ut=ee[1],ht=ee[2],dt=ee[3],Mt=it*it,ft=ut*ut,gt=ht*ht,xt=dt*dt,mt=(mt||"XYZ").toUpperCase();switch(mt){case"XYZ":xe[0]=atan2$1(2*(it*dt-ut*ht),xt-Mt-ft+gt),xe[1]=asin$2(clamp$2(2*(it*ht+ut*dt),-1,1)),xe[2]=atan2$1(2*(ht*dt-it*ut),xt+Mt-ft-gt);break;case"YXZ":xe[0]=asin$2(clamp$2(2*(it*dt-ut*ht),-1,1)),xe[1]=atan2$1(2*(it*ht+ut*dt),xt-Mt-ft+gt),xe[2]=atan2$1(2*(it*ut+ht*dt),xt-Mt+ft-gt);break;case"ZXY":xe[0]=asin$2(clamp$2(2*(it*dt+ut*ht),-1,1)),xe[1]=atan2$1(2*(ut*dt-ht*it),xt-Mt-ft+gt),xe[2]=atan2$1(2*(ht*dt-it*ut),xt-Mt+ft-gt);break;case"ZYX":xe[0]=atan2$1(2*(it*dt+ht*ut),xt-Mt-ft+gt),xe[1]=asin$2(clamp$2(2*(ut*dt-it*ht),-1,1)),xe[2]=atan2$1(2*(it*ut+ht*dt),xt+Mt-ft-gt);break;case"YZX":xe[0]=atan2$1(2*(it*dt-ht*ut),xt-Mt+ft-gt),xe[1]=atan2$1(2*(ut*dt-it*ht),xt+Mt-ft-gt),xe[2]=asin$2(clamp$2(2*(it*ut+ht*dt),-1,1));break;case"XZY":xe[0]=atan2$1(2*(it*dt+ut*ht),xt-Mt+ft-gt),xe[1]=atan2$1(2*(it*ht+ut*dt),xt+Mt-ft-gt),xe[2]=asin$2(clamp$2(2*(ht*dt-it*ut),-1,1));break;default:console.warn("Unkown order: "+mt)}return te},Vector3$1.eulerFromMat3=function(te,ee,yt){var xe=ee.array,it=xe[0],ut=xe[3],ht=xe[6],dt=xe[1],Mt=xe[4],ft=xe[7],gt=xe[2],xt=xe[5],mt=xe[8],Dt=te.array,yt=(yt||"XYZ").toUpperCase();switch(yt){case"XYZ":Dt[1]=asin$2(clamp$2(ht,-1,1)),abs$2(ht)<.99999?(Dt[0]=atan2$1(-ft,mt),Dt[2]=atan2$1(-ut,it)):(Dt[0]=atan2$1(xt,Mt),Dt[2]=0);break;case"YXZ":Dt[0]=asin$2(-clamp$2(ft,-1,1)),abs$2(ft)<.99999?(Dt[1]=atan2$1(ht,mt),Dt[2]=atan2$1(dt,Mt)):(Dt[1]=atan2$1(-gt,it),Dt[2]=0);break;case"ZXY":Dt[0]=asin$2(clamp$2(xt,-1,1)),abs$2(xt)<.99999?(Dt[1]=atan2$1(-gt,mt),Dt[2]=atan2$1(-ut,Mt)):(Dt[1]=0,Dt[2]=atan2$1(dt,it));break;case"ZYX":Dt[1]=asin$2(-clamp$2(gt,-1,1)),abs$2(gt)<.99999?(Dt[0]=atan2$1(xt,mt),Dt[2]=atan2$1(dt,it)):(Dt[0]=0,Dt[2]=atan2$1(-ut,Mt));break;case"YZX":Dt[2]=asin$2(clamp$2(dt,-1,1)),abs$2(dt)<.99999?(Dt[0]=atan2$1(-ft,Mt),Dt[1]=atan2$1(-gt,it)):(Dt[0]=0,Dt[1]=atan2$1(ht,mt));break;case"XZY":Dt[2]=asin$2(-clamp$2(ut,-1,1)),abs$2(ut)<.99999?(Dt[0]=atan2$1(xt,Mt),Dt[1]=atan2$1(ht,it)):(Dt[0]=atan2$1(-ft,mt),Dt[1]=0);break;default:console.warn("Unkown order: "+yt)}return te._dirty=!0,te},Object.defineProperties(Vector3$1,{POSITIVE_X:{get:function(){return new Vector3$1(1,0,0)}},NEGATIVE_X:{get:function(){return new Vector3$1(-1,0,0)}},POSITIVE_Y:{get:function(){return new Vector3$1(0,1,0)}},NEGATIVE_Y:{get:function(){return new Vector3$1(0,-1,0)}},POSITIVE_Z:{get:function(){return new Vector3$1(0,0,1)}},NEGATIVE_Z:{get:function(){return new Vector3$1(0,0,-1)}},UP:{get:function(){return new Vector3$1(0,1,0)}},ZERO:{get:function(){return new Vector3$1}}});var vec4$1={};vec4$1.create=function(){var te=new GLMAT_ARRAY_TYPE(4);return te[0]=0,te[1]=0,te[2]=0,te[3]=0,te},vec4$1.clone=function(te){var ee=new GLMAT_ARRAY_TYPE(4);return ee[0]=te[0],ee[1]=te[1],ee[2]=te[2],ee[3]=te[3],ee},vec4$1.fromValues=function(te,ee,ne,xe){var it=new GLMAT_ARRAY_TYPE(4);return it[0]=te,it[1]=ee,it[2]=ne,it[3]=xe,it},vec4$1.copy=function(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te[3]=ee[3],te},vec4$1.set=function(te,ee,ne,xe,it){return te[0]=ee,te[1]=ne,te[2]=xe,te[3]=it,te},vec4$1.add=function(te,ee,ne){return te[0]=ee[0]+ne[0],te[1]=ee[1]+ne[1],te[2]=ee[2]+ne[2],te[3]=ee[3]+ne[3],te},vec4$1.subtract=function(te,ee,ne){return te[0]=ee[0]-ne[0],te[1]=ee[1]-ne[1],te[2]=ee[2]-ne[2],te[3]=ee[3]-ne[3],te},vec4$1.sub=vec4$1.subtract,vec4$1.multiply=function(te,ee,ne){return te[0]=ee[0]*ne[0],te[1]=ee[1]*ne[1],te[2]=ee[2]*ne[2],te[3]=ee[3]*ne[3],te},vec4$1.mul=vec4$1.multiply,vec4$1.divide=function(te,ee,ne){return te[0]=ee[0]/ne[0],te[1]=ee[1]/ne[1],te[2]=ee[2]/ne[2],te[3]=ee[3]/ne[3],te},vec4$1.div=vec4$1.divide,vec4$1.min=function(te,ee,ne){return te[0]=Math.min(ee[0],ne[0]),te[1]=Math.min(ee[1],ne[1]),te[2]=Math.min(ee[2],ne[2]),te[3]=Math.min(ee[3],ne[3]),te},vec4$1.max=function(te,ee,ne){return te[0]=Math.max(ee[0],ne[0]),te[1]=Math.max(ee[1],ne[1]),te[2]=Math.max(ee[2],ne[2]),te[3]=Math.max(ee[3],ne[3]),te},vec4$1.scale=function(te,ee,ne){return te[0]=ee[0]*ne,te[1]=ee[1]*ne,te[2]=ee[2]*ne,te[3]=ee[3]*ne,te},vec4$1.scaleAndAdd=function(te,ee,ne,xe){return te[0]=ee[0]+ne[0]*xe,te[1]=ee[1]+ne[1]*xe,te[2]=ee[2]+ne[2]*xe,te[3]=ee[3]+ne[3]*xe,te},vec4$1.distance=function(te,ee){var ne=ee[0]-te[0],xe=ee[1]-te[1],it=ee[2]-te[2],ut=ee[3]-te[3];return Math.sqrt(ne*ne+xe*xe+it*it+ut*ut)},vec4$1.dist=vec4$1.distance,vec4$1.squaredDistance=function(te,ee){var ne=ee[0]-te[0],xe=ee[1]-te[1],it=ee[2]-te[2],ut=ee[3]-te[3];return ne*ne+xe*xe+it*it+ut*ut},vec4$1.sqrDist=vec4$1.squaredDistance,vec4$1.length=function(te){var ee=te[0],ne=te[1],xe=te[2],it=te[3];return Math.sqrt(ee*ee+ne*ne+xe*xe+it*it)},vec4$1.len=vec4$1.length,vec4$1.squaredLength=function(te){var ee=te[0],ne=te[1],xe=te[2],it=te[3];return ee*ee+ne*ne+xe*xe+it*it},vec4$1.sqrLen=vec4$1.squaredLength,vec4$1.negate=function(te,ee){return te[0]=-ee[0],te[1]=-ee[1],te[2]=-ee[2],te[3]=-ee[3],te},vec4$1.inverse=function(te,ee){return te[0]=1/ee[0],te[1]=1/ee[1],te[2]=1/ee[2],te[3]=1/ee[3],te},vec4$1.normalize=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ne*ne+xe*xe+it*it+ut*ut;return ht>0&&(ht=1/Math.sqrt(ht),te[0]=ee[0]*ht,te[1]=ee[1]*ht,te[2]=ee[2]*ht,te[3]=ee[3]*ht),te},vec4$1.dot=function(te,ee){return te[0]*ee[0]+te[1]*ee[1]+te[2]*ee[2]+te[3]*ee[3]},vec4$1.lerp=function(te,ee,ne,xe){var it=ee[0],ut=ee[1],ht=ee[2],dt=ee[3];return te[0]=it+xe*(ne[0]-it),te[1]=ut+xe*(ne[1]-ut),te[2]=ht+xe*(ne[2]-ht),te[3]=dt+xe*(ne[3]-dt),te},vec4$1.random=function(te,ee){return ee=ee||1,te[0]=GLMAT_RANDOM$1(),te[1]=GLMAT_RANDOM$1(),te[2]=GLMAT_RANDOM$1(),te[3]=GLMAT_RANDOM$1(),vec4$1.normalize(te,te),vec4$1.scale(te,te,ee),te},vec4$1.transformMat4=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3];return te[0]=ne[0]*xe+ne[4]*it+ne[8]*ut+ne[12]*ht,te[1]=ne[1]*xe+ne[5]*it+ne[9]*ut+ne[13]*ht,te[2]=ne[2]*xe+ne[6]*it+ne[10]*ut+ne[14]*ht,te[3]=ne[3]*xe+ne[7]*it+ne[11]*ut+ne[15]*ht,te},vec4$1.transformQuat=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ne[0],dt=ne[1],Mt=ne[2],ft=ne[3],gt=ft*xe+dt*ut-Mt*it,xt=ft*it+Mt*xe-ht*ut,mt=ft*ut+ht*it-dt*xe,Dt=-ht*xe-dt*it-Mt*ut;return te[0]=gt*ft+Dt*-ht+xt*-Mt-mt*-dt,te[1]=xt*ft+Dt*-dt+mt*-ht-gt*-Mt,te[2]=mt*ft+Dt*-Mt+gt*-dt-xt*-ht,te},vec4$1.forEach=function(){var te=vec4$1.create();return function(ee,ne,xe,it,ut,ht){var dt,Mt;for(ne||(ne=4),xe||(xe=0),it?Mt=Math.min(it*ne+xe,ee.length):Mt=ee.length,dt=xe;dt<Mt;dt+=ne)te[0]=ee[dt],te[1]=ee[dt+1],te[2]=ee[dt+2],te[3]=ee[dt+3],ut(te,te,ht),ee[dt]=te[0],ee[dt+1]=te[1],ee[dt+2]=te[2],ee[dt+3]=te[3];return ee}}();var mat3$1={};mat3$1.create=function(){var te=new GLMAT_ARRAY_TYPE(9);return te[0]=1,te[1]=0,te[2]=0,te[3]=0,te[4]=1,te[5]=0,te[6]=0,te[7]=0,te[8]=1,te},mat3$1.fromMat4=function(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te[3]=ee[4],te[4]=ee[5],te[5]=ee[6],te[6]=ee[8],te[7]=ee[9],te[8]=ee[10],te},mat3$1.clone=function(te){var ee=new GLMAT_ARRAY_TYPE(9);return ee[0]=te[0],ee[1]=te[1],ee[2]=te[2],ee[3]=te[3],ee[4]=te[4],ee[5]=te[5],ee[6]=te[6],ee[7]=te[7],ee[8]=te[8],ee},mat3$1.copy=function(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te[3]=ee[3],te[4]=ee[4],te[5]=ee[5],te[6]=ee[6],te[7]=ee[7],te[8]=ee[8],te},mat3$1.identity=function(te){return te[0]=1,te[1]=0,te[2]=0,te[3]=0,te[4]=1,te[5]=0,te[6]=0,te[7]=0,te[8]=1,te},mat3$1.transpose=function(te,ee){if(te===ee){var ne=ee[1],xe=ee[2],it=ee[5];te[1]=ee[3],te[2]=ee[6],te[3]=ne,te[5]=ee[7],te[6]=xe,te[7]=it}else te[0]=ee[0],te[1]=ee[3],te[2]=ee[6],te[3]=ee[1],te[4]=ee[4],te[5]=ee[7],te[6]=ee[2],te[7]=ee[5],te[8]=ee[8];return te},mat3$1.invert=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ee[4],dt=ee[5],Mt=ee[6],ft=ee[7],gt=ee[8],xt=gt*ht-dt*ft,mt=-gt*ut+dt*Mt,Dt=ft*ut-ht*Mt,yt=ne*xt+xe*mt+it*Dt;return yt?(yt=1/yt,te[0]=xt*yt,te[1]=(-gt*xe+it*ft)*yt,te[2]=(dt*xe-it*ht)*yt,te[3]=mt*yt,te[4]=(gt*ne-it*Mt)*yt,te[5]=(-dt*ne+it*ut)*yt,te[6]=Dt*yt,te[7]=(-ft*ne+xe*Mt)*yt,te[8]=(ht*ne-xe*ut)*yt,te):null},mat3$1.adjoint=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ee[4],dt=ee[5],Mt=ee[6],ft=ee[7],gt=ee[8];return te[0]=ht*gt-dt*ft,te[1]=it*ft-xe*gt,te[2]=xe*dt-it*ht,te[3]=dt*Mt-ut*gt,te[4]=ne*gt-it*Mt,te[5]=it*ut-ne*dt,te[6]=ut*ft-ht*Mt,te[7]=xe*Mt-ne*ft,te[8]=ne*ht-xe*ut,te},mat3$1.determinant=function(te){var ee=te[0],ne=te[1],xe=te[2],it=te[3],ut=te[4],ht=te[5],dt=te[6],Mt=te[7],ft=te[8];return ee*(ft*ut-ht*Mt)+ne*(-ft*it+ht*dt)+xe*(Mt*it-ut*dt)},mat3$1.multiply=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=ee[4],Mt=ee[5],ft=ee[6],gt=ee[7],xt=ee[8],mt=ne[0],Dt=ne[1],yt=ne[2],wt=ne[3],At=ne[4],Lt=ne[5],bt=ne[6],vt=ne[7],Qt=ne[8];return te[0]=mt*xe+Dt*ht+yt*ft,te[1]=mt*it+Dt*dt+yt*gt,te[2]=mt*ut+Dt*Mt+yt*xt,te[3]=wt*xe+At*ht+Lt*ft,te[4]=wt*it+At*dt+Lt*gt,te[5]=wt*ut+At*Mt+Lt*xt,te[6]=bt*xe+vt*ht+Qt*ft,te[7]=bt*it+vt*dt+Qt*gt,te[8]=bt*ut+vt*Mt+Qt*xt,te},mat3$1.mul=mat3$1.multiply,mat3$1.translate=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=ee[4],Mt=ee[5],ft=ee[6],gt=ee[7],xt=ee[8],mt=ne[0],Dt=ne[1];return te[0]=xe,te[1]=it,te[2]=ut,te[3]=ht,te[4]=dt,te[5]=Mt,te[6]=mt*xe+Dt*ht+ft,te[7]=mt*it+Dt*dt+gt,te[8]=mt*ut+Dt*Mt+xt,te},mat3$1.rotate=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=ee[4],Mt=ee[5],ft=ee[6],gt=ee[7],xt=ee[8],mt=Math.sin(ne),Dt=Math.cos(ne);return te[0]=Dt*xe+mt*ht,te[1]=Dt*it+mt*dt,te[2]=Dt*ut+mt*Mt,te[3]=Dt*ht-mt*xe,te[4]=Dt*dt-mt*it,te[5]=Dt*Mt-mt*ut,te[6]=ft,te[7]=gt,te[8]=xt,te},mat3$1.scale=function(te,ee,ne){var xe=ne[0],it=ne[1];return te[0]=xe*ee[0],te[1]=xe*ee[1],te[2]=xe*ee[2],te[3]=it*ee[3],te[4]=it*ee[4],te[5]=it*ee[5],te[6]=ee[6],te[7]=ee[7],te[8]=ee[8],te},mat3$1.fromMat2d=function(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=0,te[3]=ee[2],te[4]=ee[3],te[5]=0,te[6]=ee[4],te[7]=ee[5],te[8]=1,te},mat3$1.fromQuat=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ne+ne,dt=xe+xe,Mt=it+it,ft=ne*ht,gt=xe*ht,xt=xe*dt,mt=it*ht,Dt=it*dt,yt=it*Mt,wt=ut*ht,At=ut*dt,Lt=ut*Mt;return te[0]=1-xt-yt,te[3]=gt-Lt,te[6]=mt+At,te[1]=gt+Lt,te[4]=1-ft-yt,te[7]=Dt-wt,te[2]=mt-At,te[5]=Dt+wt,te[8]=1-ft-xt,te},mat3$1.normalFromMat4=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ee[4],dt=ee[5],Mt=ee[6],ft=ee[7],gt=ee[8],xt=ee[9],mt=ee[10],Dt=ee[11],yt=ee[12],wt=ee[13],At=ee[14],Lt=ee[15],bt=ne*dt-xe*ht,vt=ne*Mt-it*ht,Qt=ne*ft-ut*ht,Ct=xe*Mt-it*dt,Ut=xe*ft-ut*dt,Rt=it*ft-ut*Mt,Ft=gt*wt-xt*yt,Gt=gt*At-mt*yt,_t=gt*Lt-Dt*yt,Pt=xt*At-mt*wt,Ot=xt*Lt-Dt*wt,zt=mt*Lt-Dt*At,Xt=bt*zt-vt*Ot+Qt*Pt+Ct*_t-Ut*Gt+Rt*Ft;return Xt?(Xt=1/Xt,te[0]=(dt*zt-Mt*Ot+ft*Pt)*Xt,te[1]=(Mt*_t-ht*zt-ft*Gt)*Xt,te[2]=(ht*Ot-dt*_t+ft*Ft)*Xt,te[3]=(it*Ot-xe*zt-ut*Pt)*Xt,te[4]=(ne*zt-it*_t+ut*Gt)*Xt,te[5]=(xe*_t-ne*Ot-ut*Ft)*Xt,te[6]=(wt*Rt-At*Ut+Lt*Ct)*Xt,te[7]=(At*Qt-yt*Rt-Lt*vt)*Xt,te[8]=(yt*Ut-wt*Qt+Lt*bt)*Xt,te):null},mat3$1.frob=function(te){return Math.sqrt(Math.pow(te[0],2)+Math.pow(te[1],2)+Math.pow(te[2],2)+Math.pow(te[3],2)+Math.pow(te[4],2)+Math.pow(te[5],2)+Math.pow(te[6],2)+Math.pow(te[7],2)+Math.pow(te[8],2))};var quat={};quat.create=function(){var te=new GLMAT_ARRAY_TYPE(4);return te[0]=0,te[1]=0,te[2]=0,te[3]=1,te},quat.rotationTo=function(){var te=vec3$f.create(),ee=vec3$f.fromValues(1,0,0),ne=vec3$f.fromValues(0,1,0);return function(xe,it,ut){var ht=vec3$f.dot(it,ut);return ht<-.999999?(vec3$f.cross(te,ee,it),vec3$f.length(te)<1e-6&&vec3$f.cross(te,ne,it),vec3$f.normalize(te,te),quat.setAxisAngle(xe,te,Math.PI),xe):ht>.999999?(xe[0]=0,xe[1]=0,xe[2]=0,xe[3]=1,xe):(vec3$f.cross(te,it,ut),xe[0]=te[0],xe[1]=te[1],xe[2]=te[2],xe[3]=1+ht,quat.normalize(xe,xe))}}(),quat.setAxes=function(){var te=mat3$1.create();return function(ee,ne,xe,it){return te[0]=xe[0],te[3]=xe[1],te[6]=xe[2],te[1]=it[0],te[4]=it[1],te[7]=it[2],te[2]=-ne[0],te[5]=-ne[1],te[8]=-ne[2],quat.normalize(ee,quat.fromMat3(ee,te))}}(),quat.clone=vec4$1.clone,quat.fromValues=vec4$1.fromValues,quat.copy=vec4$1.copy,quat.set=vec4$1.set,quat.identity=function(te){return te[0]=0,te[1]=0,te[2]=0,te[3]=1,te},quat.setAxisAngle=function(te,ee,ne){ne=ne*.5;var xe=Math.sin(ne);return te[0]=xe*ee[0],te[1]=xe*ee[1],te[2]=xe*ee[2],te[3]=Math.cos(ne),te},quat.add=vec4$1.add,quat.multiply=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=ne[0],Mt=ne[1],ft=ne[2],gt=ne[3];return te[0]=xe*gt+ht*dt+it*ft-ut*Mt,te[1]=it*gt+ht*Mt+ut*dt-xe*ft,te[2]=ut*gt+ht*ft+xe*Mt-it*dt,te[3]=ht*gt-xe*dt-it*Mt-ut*ft,te},quat.mul=quat.multiply,quat.scale=vec4$1.scale,quat.rotateX=function(te,ee,ne){ne*=.5;var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=Math.sin(ne),Mt=Math.cos(ne);return te[0]=xe*Mt+ht*dt,te[1]=it*Mt+ut*dt,te[2]=ut*Mt-it*dt,te[3]=ht*Mt-xe*dt,te},quat.rotateY=function(te,ee,ne){ne*=.5;var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=Math.sin(ne),Mt=Math.cos(ne);return te[0]=xe*Mt-ut*dt,te[1]=it*Mt+ht*dt,te[2]=ut*Mt+xe*dt,te[3]=ht*Mt-it*dt,te},quat.rotateZ=function(te,ee,ne){ne*=.5;var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=Math.sin(ne),Mt=Math.cos(ne);return te[0]=xe*Mt+it*dt,te[1]=it*Mt-xe*dt,te[2]=ut*Mt+ht*dt,te[3]=ht*Mt-ut*dt,te},quat.calculateW=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2];return te[0]=ne,te[1]=xe,te[2]=it,te[3]=Math.sqrt(Math.abs(1-ne*ne-xe*xe-it*it)),te},quat.dot=vec4$1.dot,quat.lerp=vec4$1.lerp,quat.slerp=function(te,ee,ne,xe){var it=ee[0],ut=ee[1],ht=ee[2],dt=ee[3],Mt=ne[0],ft=ne[1],gt=ne[2],xt=ne[3],mt,Dt,yt,wt,At;return Dt=it*Mt+ut*ft+ht*gt+dt*xt,Dt<0&&(Dt=-Dt,Mt=-Mt,ft=-ft,gt=-gt,xt=-xt),1-Dt>1e-6?(mt=Math.acos(Dt),yt=Math.sin(mt),wt=Math.sin((1-xe)*mt)/yt,At=Math.sin(xe*mt)/yt):(wt=1-xe,At=xe),te[0]=wt*it+At*Mt,te[1]=wt*ut+At*ft,te[2]=wt*ht+At*gt,te[3]=wt*dt+At*xt,te},quat.invert=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ne*ne+xe*xe+it*it+ut*ut,dt=ht?1/ht:0;return te[0]=-ne*dt,te[1]=-xe*dt,te[2]=-it*dt,te[3]=ut*dt,te},quat.conjugate=function(te,ee){return te[0]=-ee[0],te[1]=-ee[1],te[2]=-ee[2],te[3]=ee[3],te},quat.length=vec4$1.length,quat.len=quat.length,quat.squaredLength=vec4$1.squaredLength,quat.sqrLen=quat.squaredLength,quat.normalize=vec4$1.normalize,quat.fromMat3=function(te,ee){var ne=ee[0]+ee[4]+ee[8],xe;if(ne>0)xe=Math.sqrt(ne+1),te[3]=.5*xe,xe=.5/xe,te[0]=(ee[5]-ee[7])*xe,te[1]=(ee[6]-ee[2])*xe,te[2]=(ee[1]-ee[3])*xe;else{var it=0;ee[4]>ee[0]&&(it=1),ee[8]>ee[it*3+it]&&(it=2);var ut=(it+1)%3,ht=(it+2)%3;xe=Math.sqrt(ee[it*3+it]-ee[ut*3+ut]-ee[ht*3+ht]+1),te[it]=.5*xe,xe=.5/xe,te[3]=(ee[ut*3+ht]-ee[ht*3+ut])*xe,te[ut]=(ee[ut*3+it]+ee[it*3+ut])*xe,te[ht]=(ee[ht*3+it]+ee[it*3+ht])*xe}return te};var Quaternion$1=function(te,ee,ne,xe){te=te||0,ee=ee||0,ne=ne||0,xe=xe===void 0?1:xe,this.array=quat.fromValues(te,ee,ne,xe),this._dirty=!0};Quaternion$1.prototype={constructor:Quaternion$1,add:function(te){return quat.add(this.array,this.array,te.array),this._dirty=!0,this},calculateW:function(){return quat.calculateW(this.array,this.array),this._dirty=!0,this},set:function(te,ee,ne,xe){return this.array[0]=te,this.array[1]=ee,this.array[2]=ne,this.array[3]=xe,this._dirty=!0,this},setArray:function(te){return this.array[0]=te[0],this.array[1]=te[1],this.array[2]=te[2],this.array[3]=te[3],this._dirty=!0,this},clone:function(){return new Quaternion$1(this.x,this.y,this.z,this.w)},conjugate:function(){return quat.conjugate(this.array,this.array),this._dirty=!0,this},copy:function(te){return quat.copy(this.array,te.array),this._dirty=!0,this},dot:function(te){return quat.dot(this.array,te.array)},fromMat3:function(te){return quat.fromMat3(this.array,te.array),this._dirty=!0,this},fromMat4:function(){var te=mat3$1.create();return function(ee){return mat3$1.fromMat4(te,ee.array),mat3$1.transpose(te,te),quat.fromMat3(this.array,te),this._dirty=!0,this}}(),identity:function(){return quat.identity(this.array),this._dirty=!0,this},invert:function(){return quat.invert(this.array,this.array),this._dirty=!0,this},len:function(){return quat.len(this.array)},length:function(){return quat.length(this.array)},lerp:function(te,ee,ne){return quat.lerp(this.array,te.array,ee.array,ne),this._dirty=!0,this},mul:function(te){return quat.mul(this.array,this.array,te.array),this._dirty=!0,this},mulLeft:function(te){return quat.multiply(this.array,te.array,this.array),this._dirty=!0,this},multiply:function(te){return quat.multiply(this.array,this.array,te.array),this._dirty=!0,this},multiplyLeft:function(te){return quat.multiply(this.array,te.array,this.array),this._dirty=!0,this},normalize:function(){return quat.normalize(this.array,this.array),this._dirty=!0,this},rotateX:function(te){return quat.rotateX(this.array,this.array,te),this._dirty=!0,this},rotateY:function(te){return quat.rotateY(this.array,this.array,te),this._dirty=!0,this},rotateZ:function(te){return quat.rotateZ(this.array,this.array,te),this._dirty=!0,this},rotationTo:function(te,ee){return quat.rotationTo(this.array,te.array,ee.array),this._dirty=!0,this},setAxes:function(te,ee,ne){return quat.setAxes(this.array,te.array,ee.array,ne.array),this._dirty=!0,this},setAxisAngle:function(te,ee){return quat.setAxisAngle(this.array,te.array,ee),this._dirty=!0,this},slerp:function(te,ee,ne){return quat.slerp(this.array,te.array,ee.array,ne),this._dirty=!0,this},sqrLen:function(){return quat.sqrLen(this.array)},squaredLength:function(){return quat.squaredLength(this.array)},fromEuler:function(te,ee){return Quaternion$1.fromEuler(this,te,ee)},toString:function(){return"["+Array.prototype.join.call(this.array,",")+"]"},toArray:function(){return Array.prototype.slice.call(this.array)}};var defineProperty$4=Object.defineProperty;if(defineProperty$4){var proto$3=Quaternion$1.prototype;defineProperty$4(proto$3,"x",{get:function(){return this.array[0]},set:function(te){this.array[0]=te,this._dirty=!0}}),defineProperty$4(proto$3,"y",{get:function(){return this.array[1]},set:function(te){this.array[1]=te,this._dirty=!0}}),defineProperty$4(proto$3,"z",{get:function(){return this.array[2]},set:function(te){this.array[2]=te,this._dirty=!0}}),defineProperty$4(proto$3,"w",{get:function(){return this.array[3]},set:function(te){this.array[3]=te,this._dirty=!0}})}Quaternion$1.add=function(te,ee,ne){return quat.add(te.array,ee.array,ne.array),te._dirty=!0,te},Quaternion$1.set=function(te,ee,ne,xe,it){quat.set(te.array,ee,ne,xe,it),te._dirty=!0},Quaternion$1.copy=function(te,ee){return quat.copy(te.array,ee.array),te._dirty=!0,te},Quaternion$1.calculateW=function(te,ee){return quat.calculateW(te.array,ee.array),te._dirty=!0,te},Quaternion$1.conjugate=function(te,ee){return quat.conjugate(te.array,ee.array),te._dirty=!0,te},Quaternion$1.identity=function(te){return quat.identity(te.array),te._dirty=!0,te},Quaternion$1.invert=function(te,ee){return quat.invert(te.array,ee.array),te._dirty=!0,te},Quaternion$1.dot=function(te,ee){return quat.dot(te.array,ee.array)},Quaternion$1.len=function(te){return quat.length(te.array)},Quaternion$1.lerp=function(te,ee,ne,xe){return quat.lerp(te.array,ee.array,ne.array,xe),te._dirty=!0,te},Quaternion$1.slerp=function(te,ee,ne,xe){return quat.slerp(te.array,ee.array,ne.array,xe),te._dirty=!0,te},Quaternion$1.mul=function(te,ee,ne){return quat.multiply(te.array,ee.array,ne.array),te._dirty=!0,te},Quaternion$1.multiply=Quaternion$1.mul,Quaternion$1.rotateX=function(te,ee,ne){return quat.rotateX(te.array,ee.array,ne),te._dirty=!0,te},Quaternion$1.rotateY=function(te,ee,ne){return quat.rotateY(te.array,ee.array,ne),te._dirty=!0,te},Quaternion$1.rotateZ=function(te,ee,ne){return quat.rotateZ(te.array,ee.array,ne),te._dirty=!0,te},Quaternion$1.setAxisAngle=function(te,ee,ne){return quat.setAxisAngle(te.array,ee.array,ne),te._dirty=!0,te},Quaternion$1.normalize=function(te,ee){return quat.normalize(te.array,ee.array),te._dirty=!0,te},Quaternion$1.sqrLen=function(te){return quat.sqrLen(te.array)},Quaternion$1.squaredLength=Quaternion$1.sqrLen,Quaternion$1.fromMat3=function(te,ee){return quat.fromMat3(te.array,ee.array),te._dirty=!0,te},Quaternion$1.setAxes=function(te,ee,ne,xe){return quat.setAxes(te.array,ee.array,ne.array,xe.array),te._dirty=!0,te},Quaternion$1.rotationTo=function(te,ee,ne){return quat.rotationTo(te.array,ee.array,ne.array),te._dirty=!0,te},Quaternion$1.fromEuler=function(te,ee,gt){te._dirty=!0,ee=ee.array;var xe=te.array,it=Math.cos(ee[0]/2),ut=Math.cos(ee[1]/2),ht=Math.cos(ee[2]/2),dt=Math.sin(ee[0]/2),Mt=Math.sin(ee[1]/2),ft=Math.sin(ee[2]/2),gt=(gt||"XYZ").toUpperCase();switch(gt){case"XYZ":xe[0]=dt*ut*ht+it*Mt*ft,xe[1]=it*Mt*ht-dt*ut*ft,xe[2]=it*ut*ft+dt*Mt*ht,xe[3]=it*ut*ht-dt*Mt*ft;break;case"YXZ":xe[0]=dt*ut*ht+it*Mt*ft,xe[1]=it*Mt*ht-dt*ut*ft,xe[2]=it*ut*ft-dt*Mt*ht,xe[3]=it*ut*ht+dt*Mt*ft;break;case"ZXY":xe[0]=dt*ut*ht-it*Mt*ft,xe[1]=it*Mt*ht+dt*ut*ft,xe[2]=it*ut*ft+dt*Mt*ht,xe[3]=it*ut*ht-dt*Mt*ft;break;case"ZYX":xe[0]=dt*ut*ht-it*Mt*ft,xe[1]=it*Mt*ht+dt*ut*ft,xe[2]=it*ut*ft-dt*Mt*ht,xe[3]=it*ut*ht+dt*Mt*ft;break;case"YZX":xe[0]=dt*ut*ht+it*Mt*ft,xe[1]=it*Mt*ht+dt*ut*ft,xe[2]=it*ut*ft-dt*Mt*ht,xe[3]=it*ut*ht-dt*Mt*ft;break;case"XZY":xe[0]=dt*ut*ht-it*Mt*ft,xe[1]=it*Mt*ht-dt*ut*ft,xe[2]=it*ut*ft+dt*Mt*ht,xe[3]=it*ut*ht+dt*Mt*ft;break}};var mat4$2={};mat4$2.create=function(){var te=new GLMAT_ARRAY_TYPE(16);return te[0]=1,te[1]=0,te[2]=0,te[3]=0,te[4]=0,te[5]=1,te[6]=0,te[7]=0,te[8]=0,te[9]=0,te[10]=1,te[11]=0,te[12]=0,te[13]=0,te[14]=0,te[15]=1,te},mat4$2.clone=function(te){var ee=new GLMAT_ARRAY_TYPE(16);return ee[0]=te[0],ee[1]=te[1],ee[2]=te[2],ee[3]=te[3],ee[4]=te[4],ee[5]=te[5],ee[6]=te[6],ee[7]=te[7],ee[8]=te[8],ee[9]=te[9],ee[10]=te[10],ee[11]=te[11],ee[12]=te[12],ee[13]=te[13],ee[14]=te[14],ee[15]=te[15],ee},mat4$2.copy=function(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te[3]=ee[3],te[4]=ee[4],te[5]=ee[5],te[6]=ee[6],te[7]=ee[7],te[8]=ee[8],te[9]=ee[9],te[10]=ee[10],te[11]=ee[11],te[12]=ee[12],te[13]=ee[13],te[14]=ee[14],te[15]=ee[15],te},mat4$2.identity=function(te){return te[0]=1,te[1]=0,te[2]=0,te[3]=0,te[4]=0,te[5]=1,te[6]=0,te[7]=0,te[8]=0,te[9]=0,te[10]=1,te[11]=0,te[12]=0,te[13]=0,te[14]=0,te[15]=1,te},mat4$2.transpose=function(te,ee){if(te===ee){var ne=ee[1],xe=ee[2],it=ee[3],ut=ee[6],ht=ee[7],dt=ee[11];te[1]=ee[4],te[2]=ee[8],te[3]=ee[12],te[4]=ne,te[6]=ee[9],te[7]=ee[13],te[8]=xe,te[9]=ut,te[11]=ee[14],te[12]=it,te[13]=ht,te[14]=dt}else te[0]=ee[0],te[1]=ee[4],te[2]=ee[8],te[3]=ee[12],te[4]=ee[1],te[5]=ee[5],te[6]=ee[9],te[7]=ee[13],te[8]=ee[2],te[9]=ee[6],te[10]=ee[10],te[11]=ee[14],te[12]=ee[3],te[13]=ee[7],te[14]=ee[11],te[15]=ee[15];return te},mat4$2.invert=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ee[4],dt=ee[5],Mt=ee[6],ft=ee[7],gt=ee[8],xt=ee[9],mt=ee[10],Dt=ee[11],yt=ee[12],wt=ee[13],At=ee[14],Lt=ee[15],bt=ne*dt-xe*ht,vt=ne*Mt-it*ht,Qt=ne*ft-ut*ht,Ct=xe*Mt-it*dt,Ut=xe*ft-ut*dt,Rt=it*ft-ut*Mt,Ft=gt*wt-xt*yt,Gt=gt*At-mt*yt,_t=gt*Lt-Dt*yt,Pt=xt*At-mt*wt,Ot=xt*Lt-Dt*wt,zt=mt*Lt-Dt*At,Xt=bt*zt-vt*Ot+Qt*Pt+Ct*_t-Ut*Gt+Rt*Ft;return Xt?(Xt=1/Xt,te[0]=(dt*zt-Mt*Ot+ft*Pt)*Xt,te[1]=(it*Ot-xe*zt-ut*Pt)*Xt,te[2]=(wt*Rt-At*Ut+Lt*Ct)*Xt,te[3]=(mt*Ut-xt*Rt-Dt*Ct)*Xt,te[4]=(Mt*_t-ht*zt-ft*Gt)*Xt,te[5]=(ne*zt-it*_t+ut*Gt)*Xt,te[6]=(At*Qt-yt*Rt-Lt*vt)*Xt,te[7]=(gt*Rt-mt*Qt+Dt*vt)*Xt,te[8]=(ht*Ot-dt*_t+ft*Ft)*Xt,te[9]=(xe*_t-ne*Ot-ut*Ft)*Xt,te[10]=(yt*Ut-wt*Qt+Lt*bt)*Xt,te[11]=(xt*Qt-gt*Ut-Dt*bt)*Xt,te[12]=(dt*Gt-ht*Pt-Mt*Ft)*Xt,te[13]=(ne*Pt-xe*Gt+it*Ft)*Xt,te[14]=(wt*vt-yt*Ct-At*bt)*Xt,te[15]=(gt*Ct-xt*vt+mt*bt)*Xt,te):null},mat4$2.adjoint=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ee[4],dt=ee[5],Mt=ee[6],ft=ee[7],gt=ee[8],xt=ee[9],mt=ee[10],Dt=ee[11],yt=ee[12],wt=ee[13],At=ee[14],Lt=ee[15];return te[0]=dt*(mt*Lt-Dt*At)-xt*(Mt*Lt-ft*At)+wt*(Mt*Dt-ft*mt),te[1]=-(xe*(mt*Lt-Dt*At)-xt*(it*Lt-ut*At)+wt*(it*Dt-ut*mt)),te[2]=xe*(Mt*Lt-ft*At)-dt*(it*Lt-ut*At)+wt*(it*ft-ut*Mt),te[3]=-(xe*(Mt*Dt-ft*mt)-dt*(it*Dt-ut*mt)+xt*(it*ft-ut*Mt)),te[4]=-(ht*(mt*Lt-Dt*At)-gt*(Mt*Lt-ft*At)+yt*(Mt*Dt-ft*mt)),te[5]=ne*(mt*Lt-Dt*At)-gt*(it*Lt-ut*At)+yt*(it*Dt-ut*mt),te[6]=-(ne*(Mt*Lt-ft*At)-ht*(it*Lt-ut*At)+yt*(it*ft-ut*Mt)),te[7]=ne*(Mt*Dt-ft*mt)-ht*(it*Dt-ut*mt)+gt*(it*ft-ut*Mt),te[8]=ht*(xt*Lt-Dt*wt)-gt*(dt*Lt-ft*wt)+yt*(dt*Dt-ft*xt),te[9]=-(ne*(xt*Lt-Dt*wt)-gt*(xe*Lt-ut*wt)+yt*(xe*Dt-ut*xt)),te[10]=ne*(dt*Lt-ft*wt)-ht*(xe*Lt-ut*wt)+yt*(xe*ft-ut*dt),te[11]=-(ne*(dt*Dt-ft*xt)-ht*(xe*Dt-ut*xt)+gt*(xe*ft-ut*dt)),te[12]=-(ht*(xt*At-mt*wt)-gt*(dt*At-Mt*wt)+yt*(dt*mt-Mt*xt)),te[13]=ne*(xt*At-mt*wt)-gt*(xe*At-it*wt)+yt*(xe*mt-it*xt),te[14]=-(ne*(dt*At-Mt*wt)-ht*(xe*At-it*wt)+yt*(xe*Mt-it*dt)),te[15]=ne*(dt*mt-Mt*xt)-ht*(xe*mt-it*xt)+gt*(xe*Mt-it*dt),te},mat4$2.determinant=function(te){var ee=te[0],ne=te[1],xe=te[2],it=te[3],ut=te[4],ht=te[5],dt=te[6],Mt=te[7],ft=te[8],gt=te[9],xt=te[10],mt=te[11],Dt=te[12],yt=te[13],wt=te[14],At=te[15],Lt=ee*ht-ne*ut,bt=ee*dt-xe*ut,vt=ee*Mt-it*ut,Qt=ne*dt-xe*ht,Ct=ne*Mt-it*ht,Ut=xe*Mt-it*dt,Rt=ft*yt-gt*Dt,Ft=ft*wt-xt*Dt,Gt=ft*At-mt*Dt,_t=gt*wt-xt*yt,Pt=gt*At-mt*yt,Ot=xt*At-mt*wt;return Lt*Ot-bt*Pt+vt*_t+Qt*Gt-Ct*Ft+Ut*Rt},mat4$2.multiply=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=ee[4],Mt=ee[5],ft=ee[6],gt=ee[7],xt=ee[8],mt=ee[9],Dt=ee[10],yt=ee[11],wt=ee[12],At=ee[13],Lt=ee[14],bt=ee[15],vt=ne[0],Qt=ne[1],Ct=ne[2],Ut=ne[3];return te[0]=vt*xe+Qt*dt+Ct*xt+Ut*wt,te[1]=vt*it+Qt*Mt+Ct*mt+Ut*At,te[2]=vt*ut+Qt*ft+Ct*Dt+Ut*Lt,te[3]=vt*ht+Qt*gt+Ct*yt+Ut*bt,vt=ne[4],Qt=ne[5],Ct=ne[6],Ut=ne[7],te[4]=vt*xe+Qt*dt+Ct*xt+Ut*wt,te[5]=vt*it+Qt*Mt+Ct*mt+Ut*At,te[6]=vt*ut+Qt*ft+Ct*Dt+Ut*Lt,te[7]=vt*ht+Qt*gt+Ct*yt+Ut*bt,vt=ne[8],Qt=ne[9],Ct=ne[10],Ut=ne[11],te[8]=vt*xe+Qt*dt+Ct*xt+Ut*wt,te[9]=vt*it+Qt*Mt+Ct*mt+Ut*At,te[10]=vt*ut+Qt*ft+Ct*Dt+Ut*Lt,te[11]=vt*ht+Qt*gt+Ct*yt+Ut*bt,vt=ne[12],Qt=ne[13],Ct=ne[14],Ut=ne[15],te[12]=vt*xe+Qt*dt+Ct*xt+Ut*wt,te[13]=vt*it+Qt*Mt+Ct*mt+Ut*At,te[14]=vt*ut+Qt*ft+Ct*Dt+Ut*Lt,te[15]=vt*ht+Qt*gt+Ct*yt+Ut*bt,te},mat4$2.multiplyAffine=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[4],dt=ee[5],Mt=ee[6],ft=ee[8],gt=ee[9],xt=ee[10],mt=ee[12],Dt=ee[13],yt=ee[14],wt=ne[0],At=ne[1],Lt=ne[2];return te[0]=wt*xe+At*ht+Lt*ft,te[1]=wt*it+At*dt+Lt*gt,te[2]=wt*ut+At*Mt+Lt*xt,wt=ne[4],At=ne[5],Lt=ne[6],te[4]=wt*xe+At*ht+Lt*ft,te[5]=wt*it+At*dt+Lt*gt,te[6]=wt*ut+At*Mt+Lt*xt,wt=ne[8],At=ne[9],Lt=ne[10],te[8]=wt*xe+At*ht+Lt*ft,te[9]=wt*it+At*dt+Lt*gt,te[10]=wt*ut+At*Mt+Lt*xt,wt=ne[12],At=ne[13],Lt=ne[14],te[12]=wt*xe+At*ht+Lt*ft+mt,te[13]=wt*it+At*dt+Lt*gt+Dt,te[14]=wt*ut+At*Mt+Lt*xt+yt,te},mat4$2.mul=mat4$2.multiply,mat4$2.mulAffine=mat4$2.multiplyAffine,mat4$2.translate=function(te,ee,ne){var xe=ne[0],it=ne[1],ut=ne[2],ht,dt,Mt,ft,gt,xt,mt,Dt,yt,wt,At,Lt;return ee===te?(te[12]=ee[0]*xe+ee[4]*it+ee[8]*ut+ee[12],te[13]=ee[1]*xe+ee[5]*it+ee[9]*ut+ee[13],te[14]=ee[2]*xe+ee[6]*it+ee[10]*ut+ee[14],te[15]=ee[3]*xe+ee[7]*it+ee[11]*ut+ee[15]):(ht=ee[0],dt=ee[1],Mt=ee[2],ft=ee[3],gt=ee[4],xt=ee[5],mt=ee[6],Dt=ee[7],yt=ee[8],wt=ee[9],At=ee[10],Lt=ee[11],te[0]=ht,te[1]=dt,te[2]=Mt,te[3]=ft,te[4]=gt,te[5]=xt,te[6]=mt,te[7]=Dt,te[8]=yt,te[9]=wt,te[10]=At,te[11]=Lt,te[12]=ht*xe+gt*it+yt*ut+ee[12],te[13]=dt*xe+xt*it+wt*ut+ee[13],te[14]=Mt*xe+mt*it+At*ut+ee[14],te[15]=ft*xe+Dt*it+Lt*ut+ee[15]),te},mat4$2.scale=function(te,ee,ne){var xe=ne[0],it=ne[1],ut=ne[2];return te[0]=ee[0]*xe,te[1]=ee[1]*xe,te[2]=ee[2]*xe,te[3]=ee[3]*xe,te[4]=ee[4]*it,te[5]=ee[5]*it,te[6]=ee[6]*it,te[7]=ee[7]*it,te[8]=ee[8]*ut,te[9]=ee[9]*ut,te[10]=ee[10]*ut,te[11]=ee[11]*ut,te[12]=ee[12],te[13]=ee[13],te[14]=ee[14],te[15]=ee[15],te},mat4$2.rotate=function(te,ee,ne,xe){var it=xe[0],ut=xe[1],ht=xe[2],dt=Math.sqrt(it*it+ut*ut+ht*ht),Mt,ft,gt,xt,mt,Dt,yt,wt,At,Lt,bt,vt,Qt,Ct,Ut,Rt,Ft,Gt,_t,Pt,Ot,zt,Xt,Zt;return Math.abs(dt)<GLMAT_EPSILON?null:(dt=1/dt,it*=dt,ut*=dt,ht*=dt,Mt=Math.sin(ne),ft=Math.cos(ne),gt=1-ft,xt=ee[0],mt=ee[1],Dt=ee[2],yt=ee[3],wt=ee[4],At=ee[5],Lt=ee[6],bt=ee[7],vt=ee[8],Qt=ee[9],Ct=ee[10],Ut=ee[11],Rt=it*it*gt+ft,Ft=ut*it*gt+ht*Mt,Gt=ht*it*gt-ut*Mt,_t=it*ut*gt-ht*Mt,Pt=ut*ut*gt+ft,Ot=ht*ut*gt+it*Mt,zt=it*ht*gt+ut*Mt,Xt=ut*ht*gt-it*Mt,Zt=ht*ht*gt+ft,te[0]=xt*Rt+wt*Ft+vt*Gt,te[1]=mt*Rt+At*Ft+Qt*Gt,te[2]=Dt*Rt+Lt*Ft+Ct*Gt,te[3]=yt*Rt+bt*Ft+Ut*Gt,te[4]=xt*_t+wt*Pt+vt*Ot,te[5]=mt*_t+At*Pt+Qt*Ot,te[6]=Dt*_t+Lt*Pt+Ct*Ot,te[7]=yt*_t+bt*Pt+Ut*Ot,te[8]=xt*zt+wt*Xt+vt*Zt,te[9]=mt*zt+At*Xt+Qt*Zt,te[10]=Dt*zt+Lt*Xt+Ct*Zt,te[11]=yt*zt+bt*Xt+Ut*Zt,ee!==te&&(te[12]=ee[12],te[13]=ee[13],te[14]=ee[14],te[15]=ee[15]),te)},mat4$2.rotateX=function(te,ee,ne){var xe=Math.sin(ne),it=Math.cos(ne),ut=ee[4],ht=ee[5],dt=ee[6],Mt=ee[7],ft=ee[8],gt=ee[9],xt=ee[10],mt=ee[11];return ee!==te&&(te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te[3]=ee[3],te[12]=ee[12],te[13]=ee[13],te[14]=ee[14],te[15]=ee[15]),te[4]=ut*it+ft*xe,te[5]=ht*it+gt*xe,te[6]=dt*it+xt*xe,te[7]=Mt*it+mt*xe,te[8]=ft*it-ut*xe,te[9]=gt*it-ht*xe,te[10]=xt*it-dt*xe,te[11]=mt*it-Mt*xe,te},mat4$2.rotateY=function(te,ee,ne){var xe=Math.sin(ne),it=Math.cos(ne),ut=ee[0],ht=ee[1],dt=ee[2],Mt=ee[3],ft=ee[8],gt=ee[9],xt=ee[10],mt=ee[11];return ee!==te&&(te[4]=ee[4],te[5]=ee[5],te[6]=ee[6],te[7]=ee[7],te[12]=ee[12],te[13]=ee[13],te[14]=ee[14],te[15]=ee[15]),te[0]=ut*it-ft*xe,te[1]=ht*it-gt*xe,te[2]=dt*it-xt*xe,te[3]=Mt*it-mt*xe,te[8]=ut*xe+ft*it,te[9]=ht*xe+gt*it,te[10]=dt*xe+xt*it,te[11]=Mt*xe+mt*it,te},mat4$2.rotateZ=function(te,ee,ne){var xe=Math.sin(ne),it=Math.cos(ne),ut=ee[0],ht=ee[1],dt=ee[2],Mt=ee[3],ft=ee[4],gt=ee[5],xt=ee[6],mt=ee[7];return ee!==te&&(te[8]=ee[8],te[9]=ee[9],te[10]=ee[10],te[11]=ee[11],te[12]=ee[12],te[13]=ee[13],te[14]=ee[14],te[15]=ee[15]),te[0]=ut*it+ft*xe,te[1]=ht*it+gt*xe,te[2]=dt*it+xt*xe,te[3]=Mt*it+mt*xe,te[4]=ft*it-ut*xe,te[5]=gt*it-ht*xe,te[6]=xt*it-dt*xe,te[7]=mt*it-Mt*xe,te},mat4$2.fromRotationTranslation=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=xe+xe,Mt=it+it,ft=ut+ut,gt=xe*dt,xt=xe*Mt,mt=xe*ft,Dt=it*Mt,yt=it*ft,wt=ut*ft,At=ht*dt,Lt=ht*Mt,bt=ht*ft;return te[0]=1-(Dt+wt),te[1]=xt+bt,te[2]=mt-Lt,te[3]=0,te[4]=xt-bt,te[5]=1-(gt+wt),te[6]=yt+At,te[7]=0,te[8]=mt+Lt,te[9]=yt-At,te[10]=1-(gt+Dt),te[11]=0,te[12]=ne[0],te[13]=ne[1],te[14]=ne[2],te[15]=1,te},mat4$2.fromQuat=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ne+ne,dt=xe+xe,Mt=it+it,ft=ne*ht,gt=xe*ht,xt=xe*dt,mt=it*ht,Dt=it*dt,yt=it*Mt,wt=ut*ht,At=ut*dt,Lt=ut*Mt;return te[0]=1-xt-yt,te[1]=gt+Lt,te[2]=mt-At,te[3]=0,te[4]=gt-Lt,te[5]=1-ft-yt,te[6]=Dt+wt,te[7]=0,te[8]=mt+At,te[9]=Dt-wt,te[10]=1-ft-xt,te[11]=0,te[12]=0,te[13]=0,te[14]=0,te[15]=1,te},mat4$2.frustum=function(te,ee,ne,xe,it,ut,ht){var dt=1/(ne-ee),Mt=1/(it-xe),ft=1/(ut-ht);return te[0]=ut*2*dt,te[1]=0,te[2]=0,te[3]=0,te[4]=0,te[5]=ut*2*Mt,te[6]=0,te[7]=0,te[8]=(ne+ee)*dt,te[9]=(it+xe)*Mt,te[10]=(ht+ut)*ft,te[11]=-1,te[12]=0,te[13]=0,te[14]=ht*ut*2*ft,te[15]=0,te},mat4$2.perspective=function(te,ee,ne,xe,it){var ut=1/Math.tan(ee/2),ht=1/(xe-it);return te[0]=ut/ne,te[1]=0,te[2]=0,te[3]=0,te[4]=0,te[5]=ut,te[6]=0,te[7]=0,te[8]=0,te[9]=0,te[10]=(it+xe)*ht,te[11]=-1,te[12]=0,te[13]=0,te[14]=2*it*xe*ht,te[15]=0,te},mat4$2.ortho=function(te,ee,ne,xe,it,ut,ht){var dt=1/(ee-ne),Mt=1/(xe-it),ft=1/(ut-ht);return te[0]=-2*dt,te[1]=0,te[2]=0,te[3]=0,te[4]=0,te[5]=-2*Mt,te[6]=0,te[7]=0,te[8]=0,te[9]=0,te[10]=2*ft,te[11]=0,te[12]=(ee+ne)*dt,te[13]=(it+xe)*Mt,te[14]=(ht+ut)*ft,te[15]=1,te},mat4$2.lookAt=function(te,ee,ne,xe){var it,ut,ht,dt,Mt,ft,gt,xt,mt,Dt,yt=ee[0],wt=ee[1],At=ee[2],Lt=xe[0],bt=xe[1],vt=xe[2],Qt=ne[0],Ct=ne[1],Ut=ne[2];return Math.abs(yt-Qt)<GLMAT_EPSILON&&Math.abs(wt-Ct)<GLMAT_EPSILON&&Math.abs(At-Ut)<GLMAT_EPSILON?mat4$2.identity(te):(gt=yt-Qt,xt=wt-Ct,mt=At-Ut,Dt=1/Math.sqrt(gt*gt+xt*xt+mt*mt),gt*=Dt,xt*=Dt,mt*=Dt,it=bt*mt-vt*xt,ut=vt*gt-Lt*mt,ht=Lt*xt-bt*gt,Dt=Math.sqrt(it*it+ut*ut+ht*ht),Dt?(Dt=1/Dt,it*=Dt,ut*=Dt,ht*=Dt):(it=0,ut=0,ht=0),dt=xt*ht-mt*ut,Mt=mt*it-gt*ht,ft=gt*ut-xt*it,Dt=Math.sqrt(dt*dt+Mt*Mt+ft*ft),Dt?(Dt=1/Dt,dt*=Dt,Mt*=Dt,ft*=Dt):(dt=0,Mt=0,ft=0),te[0]=it,te[1]=dt,te[2]=gt,te[3]=0,te[4]=ut,te[5]=Mt,te[6]=xt,te[7]=0,te[8]=ht,te[9]=ft,te[10]=mt,te[11]=0,te[12]=-(it*yt+ut*wt+ht*At),te[13]=-(dt*yt+Mt*wt+ft*At),te[14]=-(gt*yt+xt*wt+mt*At),te[15]=1,te)},mat4$2.frob=function(te){return Math.sqrt(Math.pow(te[0],2)+Math.pow(te[1],2)+Math.pow(te[2],2)+Math.pow(te[3],2)+Math.pow(te[4],2)+Math.pow(te[5],2)+Math.pow(te[6],2)+Math.pow(te[7],2)+Math.pow(te[8],2)+Math.pow(te[9],2)+Math.pow(te[10],2)+Math.pow(te[11],2)+Math.pow(te[12],2)+Math.pow(te[13],2)+Math.pow(te[14],2)+Math.pow(te[15],2))};var Matrix4$1=function(){this._axisX=new Vector3$1,this._axisY=new Vector3$1,this._axisZ=new Vector3$1,this.array=mat4$2.create(),this._dirty=!0};Matrix4$1.prototype={constructor:Matrix4$1,setArray:function(te){for(var ee=0;ee<this.array.length;ee++)this.array[ee]=te[ee];return this._dirty=!0,this},adjoint:function(){return mat4$2.adjoint(this.array,this.array),this._dirty=!0,this},clone:function(){return new Matrix4$1().copy(this)},copy:function(te){return mat4$2.copy(this.array,te.array),this._dirty=!0,this},determinant:function(){return mat4$2.determinant(this.array)},fromQuat:function(te){return mat4$2.fromQuat(this.array,te.array),this._dirty=!0,this},fromRotationTranslation:function(te,ee){return mat4$2.fromRotationTranslation(this.array,te.array,ee.array),this._dirty=!0,this},fromMat2d:function(te){return Matrix4$1.fromMat2d(this,te),this},frustum:function(te,ee,ne,xe,it,ut){return mat4$2.frustum(this.array,te,ee,ne,xe,it,ut),this._dirty=!0,this},identity:function(){return mat4$2.identity(this.array),this._dirty=!0,this},invert:function(){return mat4$2.invert(this.array,this.array),this._dirty=!0,this},lookAt:function(te,ee,ne){return mat4$2.lookAt(this.array,te.array,ee.array,ne.array),this._dirty=!0,this},mul:function(te){return mat4$2.mul(this.array,this.array,te.array),this._dirty=!0,this},mulLeft:function(te){return mat4$2.mul(this.array,te.array,this.array),this._dirty=!0,this},multiply:function(te){return mat4$2.multiply(this.array,this.array,te.array),this._dirty=!0,this},multiplyLeft:function(te){return mat4$2.multiply(this.array,te.array,this.array),this._dirty=!0,this},ortho:function(te,ee,ne,xe,it,ut){return mat4$2.ortho(this.array,te,ee,ne,xe,it,ut),this._dirty=!0,this},perspective:function(te,ee,ne,xe){return mat4$2.perspective(this.array,te,ee,ne,xe),this._dirty=!0,this},rotate:function(te,ee){return mat4$2.rotate(this.array,this.array,te,ee.array),this._dirty=!0,this},rotateX:function(te){return mat4$2.rotateX(this.array,this.array,te),this._dirty=!0,this},rotateY:function(te){return mat4$2.rotateY(this.array,this.array,te),this._dirty=!0,this},rotateZ:function(te){return mat4$2.rotateZ(this.array,this.array,te),this._dirty=!0,this},scale:function(te){return mat4$2.scale(this.array,this.array,te.array),this._dirty=!0,this},translate:function(te){return mat4$2.translate(this.array,this.array,te.array),this._dirty=!0,this},transpose:function(){return mat4$2.transpose(this.array,this.array),this._dirty=!0,this},decomposeMatrix:function(){var te=vec3$f.create(),ee=vec3$f.create(),ne=vec3$f.create(),xe=mat3$1.create();return function(it,ut,ht){var dt=this.array;vec3$f.set(te,dt[0],dt[1],dt[2]),vec3$f.set(ee,dt[4],dt[5],dt[6]),vec3$f.set(ne,dt[8],dt[9],dt[10]);var Mt=vec3$f.length(te),ft=vec3$f.length(ee),gt=vec3$f.length(ne),xt=this.determinant();xt<0&&(Mt=-Mt),it&&it.set(Mt,ft,gt),ht.set(dt[12],dt[13],dt[14]),mat3$1.fromMat4(xe,dt),xe[0]/=Mt,xe[1]/=Mt,xe[2]/=Mt,xe[3]/=ft,xe[4]/=ft,xe[5]/=ft,xe[6]/=gt,xe[7]/=gt,xe[8]/=gt,quat.fromMat3(ut.array,xe),quat.normalize(ut.array,ut.array),ut._dirty=!0,ht._dirty=!0}}(),toString:function(){return"["+Array.prototype.join.call(this.array,",")+"]"},toArray:function(){return Array.prototype.slice.call(this.array)}};var defineProperty$3=Object.defineProperty;if(defineProperty$3){var proto$2=Matrix4$1.prototype;defineProperty$3(proto$2,"z",{get:function(){var te=this.array;return this._axisZ.set(te[8],te[9],te[10]),this._axisZ},set:function(te){var ee=this.array;te=te.array,ee[8]=te[0],ee[9]=te[1],ee[10]=te[2],this._dirty=!0}}),defineProperty$3(proto$2,"y",{get:function(){var te=this.array;return this._axisY.set(te[4],te[5],te[6]),this._axisY},set:function(te){var ee=this.array;te=te.array,ee[4]=te[0],ee[5]=te[1],ee[6]=te[2],this._dirty=!0}}),defineProperty$3(proto$2,"x",{get:function(){var te=this.array;return this._axisX.set(te[0],te[1],te[2]),this._axisX},set:function(te){var ee=this.array;te=te.array,ee[0]=te[0],ee[1]=te[1],ee[2]=te[2],this._dirty=!0}})}Matrix4$1.adjoint=function(te,ee){return mat4$2.adjoint(te.array,ee.array),te._dirty=!0,te},Matrix4$1.copy=function(te,ee){return mat4$2.copy(te.array,ee.array),te._dirty=!0,te},Matrix4$1.determinant=function(te){return mat4$2.determinant(te.array)},Matrix4$1.identity=function(te){return mat4$2.identity(te.array),te._dirty=!0,te},Matrix4$1.ortho=function(te,ee,ne,xe,it,ut,ht){return mat4$2.ortho(te.array,ee,ne,xe,it,ut,ht),te._dirty=!0,te},Matrix4$1.perspective=function(te,ee,ne,xe,it){return mat4$2.perspective(te.array,ee,ne,xe,it),te._dirty=!0,te},Matrix4$1.lookAt=function(te,ee,ne,xe){return mat4$2.lookAt(te.array,ee.array,ne.array,xe.array),te._dirty=!0,te},Matrix4$1.invert=function(te,ee){return mat4$2.invert(te.array,ee.array),te._dirty=!0,te},Matrix4$1.mul=function(te,ee,ne){return mat4$2.mul(te.array,ee.array,ne.array),te._dirty=!0,te},Matrix4$1.multiply=Matrix4$1.mul,Matrix4$1.fromQuat=function(te,ee){return mat4$2.fromQuat(te.array,ee.array),te._dirty=!0,te},Matrix4$1.fromRotationTranslation=function(te,ee,ne){return mat4$2.fromRotationTranslation(te.array,ee.array,ne.array),te._dirty=!0,te},Matrix4$1.fromMat2d=function(xe,ne){xe._dirty=!0;var ne=ne.array,xe=xe.array;return xe[0]=ne[0],xe[4]=ne[2],xe[12]=ne[4],xe[1]=ne[1],xe[5]=ne[3],xe[13]=ne[5],xe},Matrix4$1.rotate=function(te,ee,ne,xe){return mat4$2.rotate(te.array,ee.array,ne,xe.array),te._dirty=!0,te},Matrix4$1.rotateX=function(te,ee,ne){return mat4$2.rotateX(te.array,ee.array,ne),te._dirty=!0,te},Matrix4$1.rotateY=function(te,ee,ne){return mat4$2.rotateY(te.array,ee.array,ne),te._dirty=!0,te},Matrix4$1.rotateZ=function(te,ee,ne){return mat4$2.rotateZ(te.array,ee.array,ne),te._dirty=!0,te},Matrix4$1.scale=function(te,ee,ne){return mat4$2.scale(te.array,ee.array,ne.array),te._dirty=!0,te},Matrix4$1.transpose=function(te,ee){return mat4$2.transpose(te.array,ee.array),te._dirty=!0,te},Matrix4$1.translate=function(te,ee,ne){return mat4$2.translate(te.array,ee.array,ne.array),te._dirty=!0,te};var vec3Set$2=vec3$f.set,vec3Copy$1=vec3$f.copy,BoundingBox=function(te,ee){this.min=te||new Vector3$1(1/0,1/0,1/0),this.max=ee||new Vector3$1(-1/0,-1/0,-1/0),this.vertices=null};BoundingBox.prototype={constructor:BoundingBox,updateFromVertices:function(te){if(te.length>0){var ee=this.min,ne=this.max,xe=ee.array,it=ne.array;vec3Copy$1(xe,te[0]),vec3Copy$1(it,te[0]);for(var ut=1;ut<te.length;ut++){var ht=te[ut];ht[0]<xe[0]&&(xe[0]=ht[0]),ht[1]<xe[1]&&(xe[1]=ht[1]),ht[2]<xe[2]&&(xe[2]=ht[2]),ht[0]>it[0]&&(it[0]=ht[0]),ht[1]>it[1]&&(it[1]=ht[1]),ht[2]>it[2]&&(it[2]=ht[2])}ee._dirty=!0,ne._dirty=!0}},union:function(te){var ee=this.min,ne=this.max;return vec3$f.min(ee.array,ee.array,te.min.array),vec3$f.max(ne.array,ne.array,te.max.array),ee._dirty=!0,ne._dirty=!0,this},intersection:function(te){var ee=this.min,ne=this.max;return vec3$f.max(ee.array,ee.array,te.min.array),vec3$f.min(ne.array,ne.array,te.max.array),ee._dirty=!0,ne._dirty=!0,this},intersectBoundingBox:function(te){var ee=this.min.array,ne=this.max.array,xe=te.min.array,it=te.max.array;return!(ee[0]>it[0]||ee[1]>it[1]||ee[2]>it[2]||ne[0]<xe[0]||ne[1]<xe[1]||ne[2]<xe[2])},containBoundingBox:function(te){var ee=this.min.array,ne=this.max.array,xe=te.min.array,it=te.max.array;return ee[0]<=xe[0]&&ee[1]<=xe[1]&&ee[2]<=xe[2]&&ne[0]>=it[0]&&ne[1]>=it[1]&&ne[2]>=it[2]},containPoint:function(te){var ee=this.min.array,ne=this.max.array,xe=te.array;return ee[0]<=xe[0]&&ee[1]<=xe[1]&&ee[2]<=xe[2]&&ne[0]>=xe[0]&&ne[1]>=xe[1]&&ne[2]>=xe[2]},isFinite:function(){var te=this.min.array,ee=this.max.array;return isFinite(te[0])&&isFinite(te[1])&&isFinite(te[2])&&isFinite(ee[0])&&isFinite(ee[1])&&isFinite(ee[2])},applyTransform:function(te){this.transformFrom(this,te)},transformFrom:function(){var te=vec3$f.create(),ee=vec3$f.create(),ne=vec3$f.create(),xe=vec3$f.create(),it=vec3$f.create(),ut=vec3$f.create();return function(ht,dt){var Mt=ht.min.array,ft=ht.max.array,gt=dt.array;return te[0]=gt[0]*Mt[0],te[1]=gt[1]*Mt[0],te[2]=gt[2]*Mt[0],ee[0]=gt[0]*ft[0],ee[1]=gt[1]*ft[0],ee[2]=gt[2]*ft[0],ne[0]=gt[4]*Mt[1],ne[1]=gt[5]*Mt[1],ne[2]=gt[6]*Mt[1],xe[0]=gt[4]*ft[1],xe[1]=gt[5]*ft[1],xe[2]=gt[6]*ft[1],it[0]=gt[8]*Mt[2],it[1]=gt[9]*Mt[2],it[2]=gt[10]*Mt[2],ut[0]=gt[8]*ft[2],ut[1]=gt[9]*ft[2],ut[2]=gt[10]*ft[2],Mt=this.min.array,ft=this.max.array,Mt[0]=Math.min(te[0],ee[0])+Math.min(ne[0],xe[0])+Math.min(it[0],ut[0])+gt[12],Mt[1]=Math.min(te[1],ee[1])+Math.min(ne[1],xe[1])+Math.min(it[1],ut[1])+gt[13],Mt[2]=Math.min(te[2],ee[2])+Math.min(ne[2],xe[2])+Math.min(it[2],ut[2])+gt[14],ft[0]=Math.max(te[0],ee[0])+Math.max(ne[0],xe[0])+Math.max(it[0],ut[0])+gt[12],ft[1]=Math.max(te[1],ee[1])+Math.max(ne[1],xe[1])+Math.max(it[1],ut[1])+gt[13],ft[2]=Math.max(te[2],ee[2])+Math.max(ne[2],xe[2])+Math.max(it[2],ut[2])+gt[14],this.min._dirty=!0,this.max._dirty=!0,this}}(),applyProjection:function(te){var ee=this.min.array,ne=this.max.array,xe=te.array,it=ee[0],ut=ee[1],ht=ee[2],dt=ne[0],Mt=ne[1],ft=ee[2],gt=ne[0],xt=ne[1],mt=ne[2];if(xe[15]===1)ee[0]=xe[0]*it+xe[12],ee[1]=xe[5]*ut+xe[13],ne[2]=xe[10]*ht+xe[14],ne[0]=xe[0]*gt+xe[12],ne[1]=xe[5]*xt+xe[13],ee[2]=xe[10]*mt+xe[14];else{var Dt=-1/ht;ee[0]=xe[0]*it*Dt,ee[1]=xe[5]*ut*Dt,ne[2]=(xe[10]*ht+xe[14])*Dt,Dt=-1/ft,ne[0]=xe[0]*dt*Dt,ne[1]=xe[5]*Mt*Dt,Dt=-1/mt,ee[2]=(xe[10]*mt+xe[14])*Dt}return this.min._dirty=!0,this.max._dirty=!0,this},updateVertices:function(){var te=this.vertices;if(!te){te=[];for(var ee=0;ee<8;ee++)te[ee]=vec3$f.fromValues(0,0,0);this.vertices=te}var ne=this.min.array,xe=this.max.array;return vec3Set$2(te[0],ne[0],ne[1],ne[2]),vec3Set$2(te[1],ne[0],xe[1],ne[2]),vec3Set$2(te[2],xe[0],ne[1],ne[2]),vec3Set$2(te[3],xe[0],xe[1],ne[2]),vec3Set$2(te[4],ne[0],ne[1],xe[2]),vec3Set$2(te[5],ne[0],xe[1],xe[2]),vec3Set$2(te[6],xe[0],ne[1],xe[2]),vec3Set$2(te[7],xe[0],xe[1],xe[2]),this},copy:function(te){var ee=this.min,ne=this.max;return vec3Copy$1(ee.array,te.min.array),vec3Copy$1(ne.array,te.max.array),ee._dirty=!0,ne._dirty=!0,this},clone:function(){var te=new BoundingBox;return te.copy(this),te}};var nameId=0,Node$2=Base.extend({name:"",position:null,rotation:null,scale:null,worldTransform:null,localTransform:null,autoUpdateLocalTransform:!0,_parent:null,_scene:null,_needsUpdateWorldTransform:!0,_inIterating:!1,__depth:0},function(){this.name||(this.name=(this.type||"NODE")+"_"+nameId++),this.position||(this.position=new Vector3$1),this.rotation||(this.rotation=new Quaternion$1),this.scale||(this.scale=new Vector3$1(1,1,1)),this.worldTransform=new Matrix4$1,this.localTransform=new Matrix4$1,this._children=[]},{target:null,invisible:!1,isSkinnedMesh:function(){return!1},isRenderable:function(){return!1},setName:function(te){var ee=this._scene;if(ee){var ne=ee._nodeRepository;delete ne[this.name],ne[te]=this}this.name=te},add:function(te){var ee=te._parent;if(ee!==this){ee&&ee.remove(te),te._parent=this,this._children.push(te);var ne=this._scene;ne&&ne!==te.scene&&te.traverse(this._addSelfToScene,this),te._needsUpdateWorldTransform=!0}},remove:function(te){var ee=this._children,ne=ee.indexOf(te);ne<0||(ee.splice(ne,1),te._parent=null,this._scene&&te.traverse(this._removeSelfFromScene,this))},removeAll:function(){for(var te=this._children,ee=0;ee<te.length;ee++)te[ee]._parent=null,this._scene&&te[ee].traverse(this._removeSelfFromScene,this);this._children=[]},getScene:function(){return this._scene},getParent:function(){return this._parent},_removeSelfFromScene:function(te){te._scene.removeFromScene(te),te._scene=null},_addSelfToScene:function(te){this._scene.addToScene(te),te._scene=this._scene},isAncestor:function(te){for(var ee=te._parent;ee;){if(ee===this)return!0;ee=ee._parent}return!1},children:function(){return this._children.slice()},childAt:function(te){return this._children[te]},getChildByName:function(te){for(var ee=this._children,ne=0;ne<ee.length;ne++)if(ee[ne].name===te)return ee[ne]},getDescendantByName:function(te){for(var ee=this._children,ne=0;ne<ee.length;ne++){var xe=ee[ne];if(xe.name===te)return xe;var it=xe.getDescendantByName(te);if(it)return it}},queryNode:function(te){if(te){for(var ee=te.split("/"),ne=this,xe=0;xe<ee.length;xe++){var it=ee[xe];if(it){for(var ut=!1,ht=ne._children,dt=0;dt<ht.length;dt++){var Mt=ht[dt];if(Mt.name===it){ne=Mt,ut=!0;break}}if(!ut)return}}return ne}},getPath:function(te){if(!this._parent)return"/";for(var ee=this._parent,ne=this.name;ee._parent&&(ne=ee.name+"/"+ne,ee._parent!=te);)ee=ee._parent;return!ee._parent&&te?null:ne},traverse:function(te,ee){te.call(ee,this);for(var ne=this._children,xe=0,it=ne.length;xe<it;xe++)ne[xe].traverse(te,ee)},eachChild:function(te,ee){for(var ne=this._children,xe=0,it=ne.length;xe<it;xe++){var ut=ne[xe];te.call(ee,ut,xe)}},setLocalTransform:function(te){mat4$2.copy(this.localTransform.array,te.array),this.decomposeLocalTransform()},decomposeLocalTransform:function(te){var ee=te?null:this.scale;this.localTransform.decomposeMatrix(ee,this.rotation,this.position)},setWorldTransform:function(te){mat4$2.copy(this.worldTransform.array,te.array),this.decomposeWorldTransform()},decomposeWorldTransform:function(){var te=mat4$2.create();return function(ee){var ne=this.localTransform,xe=this.worldTransform;this._parent?(mat4$2.invert(te,this._parent.worldTransform.array),mat4$2.multiply(ne.array,te,xe.array)):mat4$2.copy(ne.array,xe.array);var it=ee?null:this.scale;ne.decomposeMatrix(it,this.rotation,this.position)}}(),transformNeedsUpdate:function(){return this.position._dirty||this.rotation._dirty||this.scale._dirty},updateLocalTransform:function(){var te=this.position,ee=this.rotation,ne=this.scale;if(this.transformNeedsUpdate()){var xe=this.localTransform.array;mat4$2.fromRotationTranslation(xe,ee.array,te.array),mat4$2.scale(xe,xe,ne.array),ee._dirty=!1,ne._dirty=!1,te._dirty=!1,this._needsUpdateWorldTransform=!0}},_updateWorldTransformTopDown:function(){var te=this.localTransform.array,ee=this.worldTransform.array;this._parent?mat4$2.multiplyAffine(ee,this._parent.worldTransform.array,te):mat4$2.copy(ee,te)},updateWorldTransform:function(){for(var te=this;te&&te.getParent()&&te.getParent().transformNeedsUpdate();)te=te.getParent();te.update()},update:function(te){this.autoUpdateLocalTransform?this.updateLocalTransform():te=!0,(te||this._needsUpdateWorldTransform)&&(this._updateWorldTransformTopDown(),te=!0,this._needsUpdateWorldTransform=!1);for(var ee=this._children,ne=0,xe=ee.length;ne<xe;ne++)ee[ne].update(te)},getBoundingBox:function(){function te(it){return!it.invisible&&it.geometry}var ee=new BoundingBox,ne=new Matrix4$1,xe=new Matrix4$1;return function(it,ut){return ut=ut||new BoundingBox,this._parent?Matrix4$1.invert(xe,this._parent.worldTransform):Matrix4$1.identity(xe),this.traverse(function(ht){ht.geometry&&ht.geometry.boundingBox&&(ee.copy(ht.geometry.boundingBox),Matrix4$1.multiply(ne,xe,ht.worldTransform),ee.applyTransform(ne),ut.union(ee))},this,te),ut}}(),getWorldPosition:function(te){this.transformNeedsUpdate()&&this.updateWorldTransform();var ee=this.worldTransform.array;if(te){var ne=te.array;return ne[0]=ee[12],ne[1]=ee[13],ne[2]=ee[14],te}else return new Vector3$1(ee[12],ee[13],ee[14])},clone:function(){var te=new this.constructor,ee=this._children;te.setName(this.name),te.position.copy(this.position),te.rotation.copy(this.rotation),te.scale.copy(this.scale);for(var ne=0;ne<ee.length;ne++)te.add(ee[ne].clone());return te},rotateAround:function(){var te=new Vector3$1,ee=new Matrix4$1;return function(ne,xe,it){te.copy(this.position).subtract(ne);var ut=this.localTransform;ut.identity(),ut.translate(ne),ut.rotate(it,xe),ee.fromRotationTranslation(this.rotation,te),ut.multiply(ee),ut.scale(this.scale),this.decomposeLocalTransform(),this._needsUpdateWorldTransform=!0}}(),lookAt:function(){var te=new Matrix4$1;return function(ee,ne){te.lookAt(this.position,ee,ne||this.localTransform.y).invert(),this.setLocalTransform(te),this.target=ee}}()});const glenum={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CW:2304,CCW:2305,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_2D:3553,TEXTURE_CUBE_MAP:34067,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FRAMEBUFFER:36160,RENDERBUFFER:36161,DEPTH_STENCIL:34041,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306};var Renderable=Node$2.extend({material:null,geometry:null,mode:glenum.TRIANGLES,_renderInfo:null},{__program:null,lightGroup:0,renderOrder:0,culling:!0,cullFace:glenum.BACK,frontFace:glenum.CCW,frustumCulling:!0,receiveShadow:!0,castShadow:!0,ignorePicking:!1,ignorePreZ:!1,ignoreGBuffer:!1,isRenderable:function(){return this.geometry&&this.material&&this.material.shader&&!this.invisible&&this.geometry.vertexCount>0},beforeRender:function(te){},afterRender:function(te,ee){},getBoundingBox:function(te,ee){return ee=Node$2.prototype.getBoundingBox.call(this,te,ee),this.geometry&&this.geometry.boundingBox&&ee.union(this.geometry.boundingBox),ee},clone:function(){var te=["castShadow","receiveShadow","mode","culling","cullFace","frontFace","frustumCulling","renderOrder","lineWidth","ignorePicking","ignorePreZ","ignoreGBuffer"];return function(){var ee=Node$2.prototype.clone.call(this);ee.geometry=this.geometry,ee.material=this.material;for(var ne=0;ne<te.length;ne++){var xe=te[ne];ee[xe]!==this[xe]&&(ee[xe]=this[xe])}return ee}}()});Renderable.POINTS=glenum.POINTS,Renderable.LINES=glenum.LINES,Renderable.LINE_LOOP=glenum.LINE_LOOP,Renderable.LINE_STRIP=glenum.LINE_STRIP,Renderable.TRIANGLES=glenum.TRIANGLES,Renderable.TRIANGLE_STRIP=glenum.TRIANGLE_STRIP,Renderable.TRIANGLE_FAN=glenum.TRIANGLE_FAN,Renderable.BACK=glenum.BACK,Renderable.FRONT=glenum.FRONT,Renderable.FRONT_AND_BACK=glenum.FRONT_AND_BACK,Renderable.CW=glenum.CW,Renderable.CCW=glenum.CCW;var Mesh$1=Renderable.extend({skeleton:null,joints:null},function(){this.joints||(this.joints=[])},{offsetMatrix:null,isInstancedMesh:function(){return!1},isSkinnedMesh:function(){return!!(this.skeleton&&this.joints&&this.joints.length>0)},clone:function(){var te=Renderable.prototype.clone.call(this);return te.skeleton=this.skeleton,this.joints&&(te.joints=this.joints.slice()),te}});Mesh$1.POINTS=glenum.POINTS,Mesh$1.LINES=glenum.LINES,Mesh$1.LINE_LOOP=glenum.LINE_LOOP,Mesh$1.LINE_STRIP=glenum.LINE_STRIP,Mesh$1.TRIANGLES=glenum.TRIANGLES,Mesh$1.TRIANGLE_STRIP=glenum.TRIANGLE_STRIP,Mesh$1.TRIANGLE_FAN=glenum.TRIANGLE_FAN,Mesh$1.BACK=glenum.BACK,Mesh$1.FRONT=glenum.FRONT,Mesh$1.FRONT_AND_BACK=glenum.FRONT_AND_BACK,Mesh$1.CW=glenum.CW,Mesh$1.CCW=glenum.CCW;var EXTENSION_LIST=["OES_texture_float","OES_texture_half_float","OES_texture_float_linear","OES_texture_half_float_linear","OES_standard_derivatives","OES_vertex_array_object","OES_element_index_uint","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","EXT_texture_filter_anisotropic","EXT_shader_texture_lod","WEBGL_draw_buffers","EXT_frag_depth","EXT_sRGB","ANGLE_instanced_arrays"],PARAMETER_NAMES=["MAX_TEXTURE_SIZE","MAX_CUBE_MAP_TEXTURE_SIZE"];function GLInfo(te){for(var ee={},ne={},xe=0;xe<EXTENSION_LIST.length;xe++){var it=EXTENSION_LIST[xe];ht(it)}for(var xe=0;xe<PARAMETER_NAMES.length;xe++){var ut=PARAMETER_NAMES[xe];ne[ut]=te.getParameter(te[ut])}this.getExtension=function(dt){return dt in ee||ht(dt),ee[dt]},this.getParameter=function(dt){return ne[dt]};function ht(dt){if(te.getExtension){var Mt=te.getExtension(dt);Mt||(Mt=te.getExtension("MOZ_"+dt)),Mt||(Mt=te.getExtension("WEBKIT_"+dt)),ee[dt]=Mt}}}function get$5(te){var ee=new XMLHttpRequest;ee.open("get",te.url),ee.responseType=te.responseType||"text",te.onprogress&&(ee.onprogress=function(ne){if(ne.lengthComputable){var xe=ne.loaded/ne.total;te.onprogress(xe,ne.loaded,ne.total)}else te.onprogress(null)}),ee.onload=function(ne){ee.status>=400?te.onerror&&te.onerror():te.onload&&te.onload(ee.response)},te.onerror&&(ee.onerror=te.onerror),ee.send(null)}const request={get:get$5};var supportWebGL,vendor={};vendor.supportWebGL=function(){if(supportWebGL==null)try{var te=document.createElement("canvas"),ee=te.getContext("webgl")||te.getContext("experimental-webgl");if(!ee)throw new Error}catch{supportWebGL=!1}return supportWebGL},vendor.Int8Array=typeof Int8Array>"u"?Array:Int8Array,vendor.Uint8Array=typeof Uint8Array>"u"?Array:Uint8Array,vendor.Uint16Array=typeof Uint16Array>"u"?Array:Uint16Array,vendor.Uint32Array=typeof Uint32Array>"u"?Array:Uint32Array,vendor.Int16Array=typeof Int16Array>"u"?Array:Int16Array,vendor.Float32Array=typeof Float32Array>"u"?Array:Float32Array,vendor.Float64Array=typeof Float64Array>"u"?Array:Float64Array;var g$1={};typeof window<"u"?g$1=window:typeof globalThis<"u"&&(g$1=globalThis),vendor.requestAnimationFrame=g$1.requestAnimationFrame||g$1.msRequestAnimationFrame||g$1.mozRequestAnimationFrame||g$1.webkitRequestAnimationFrame||function(te){setTimeout(te,16)},vendor.createCanvas=function(){return document.createElement("canvas")},vendor.createImage=function(){return new g$1.Image},vendor.request={get:request.get},vendor.addEventListener=function(te,ee,ne,xe){te.addEventListener(ee,ne,xe)},vendor.removeEventListener=function(te,ee,ne){te.removeEventListener(ee,ne)};var LinkedList=function(){this.head=null,this.tail=null,this._length=0};LinkedList.prototype.insert=function(te){var ee=new LinkedList.Entry(te);return this.insertEntry(ee),ee},LinkedList.prototype.insertAt=function(te,ee){if(!(te<0)){for(var ne=this.head,xe=0;ne&&xe!=te;)ne=ne.next,xe++;if(ne){var it=new LinkedList.Entry(ee),ut=ne.prev;ut?(ut.next=it,it.prev=ut):this.head=it,it.next=ne,ne.prev=it}else this.insert(ee)}},LinkedList.prototype.insertBeforeEntry=function(te,ee){var ne=new LinkedList.Entry(te),xe=ee.prev;xe?(xe.next=ne,ne.prev=xe):this.head=ne,ne.next=ee,ee.prev=ne,this._length++},LinkedList.prototype.insertEntry=function(te){this.head?(this.tail.next=te,te.prev=this.tail,this.tail=te):this.head=this.tail=te,this._length++},LinkedList.prototype.remove=function(te){var ee=te.prev,ne=te.next;ee?ee.next=ne:this.head=ne,ne?ne.prev=ee:this.tail=ee,te.next=te.prev=null,this._length--},LinkedList.prototype.removeAt=function(te){if(!(te<0)){for(var ee=this.head,ne=0;ee&&ne!=te;)ee=ee.next,ne++;if(ee)return this.remove(ee),ee.value}},LinkedList.prototype.getHead=function(){if(this.head)return this.head.value},LinkedList.prototype.getTail=function(){if(this.tail)return this.tail.value},LinkedList.prototype.getAt=function(te){if(!(te<0)){for(var ee=this.head,ne=0;ee&&ne!=te;)ee=ee.next,ne++;return ee.value}},LinkedList.prototype.indexOf=function(te){for(var ee=this.head,ne=0;ee;){if(ee.value===te)return ne;ee=ee.next,ne++}},LinkedList.prototype.length=function(){return this._length},LinkedList.prototype.isEmpty=function(){return this._length===0},LinkedList.prototype.forEach=function(te,ee){for(var ne=this.head,xe=0,it=typeof ee<"u";ne;)it?te.call(ee,ne.value,xe):te(ne.value,xe),ne=ne.next,xe++},LinkedList.prototype.clear=function(){this.tail=this.head=null,this._length=0},LinkedList.Entry=function(te){this.value=te,this.next=null,this.prev=null};var LRU=function(te){this._list=new LinkedList,this._map={},this._maxSize=te||10};LRU.prototype.setMaxSize=function(te){this._maxSize=te},LRU.prototype.put=function(te,ee){if(!this._map.hasOwnProperty(te)){var ne=this._list.length();if(ne>=this._maxSize&&ne>0){var xe=this._list.head;this._list.remove(xe),delete this._map[xe.key]}var it=this._list.insert(ee);it.key=te,this._map[te]=it}},LRU.prototype.get=function(te){var ee=this._map[te];if(this._map.hasOwnProperty(te))return ee!==this._list.tail&&(this._list.remove(ee),this._list.insertEntry(ee)),ee.value},LRU.prototype.remove=function(te){var ee=this._map[te];typeof ee<"u"&&(delete this._map[te],this._list.remove(ee))},LRU.prototype.clear=function(){this._list.clear(),this._map={}};var colorUtil={},kCSSColorTable={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function clampCssByte(te){return te=Math.round(te),te<0?0:te>255?255:te}function clampCssAngle(te){return te=Math.round(te),te<0?0:te>360?360:te}function clampCssFloat(te){return te<0?0:te>1?1:te}function parseCssInt(te){return te.length&&te.charAt(te.length-1)==="%"?clampCssByte(parseFloat(te)/100*255):clampCssByte(parseInt(te,10))}function parseCssFloat(te){return te.length&&te.charAt(te.length-1)==="%"?clampCssFloat(parseFloat(te)/100):clampCssFloat(parseFloat(te))}function cssHueToRgb(te,ee,ne){return ne<0?ne+=1:ne>1&&(ne-=1),ne*6<1?te+(ee-te)*ne*6:ne*2<1?ee:ne*3<2?te+(ee-te)*(2/3-ne)*6:te}function lerpNumber(te,ee,ne){return te+(ee-te)*ne}function setRgba(te,ee,ne,xe,it){return te[0]=ee,te[1]=ne,te[2]=xe,te[3]=it,te}function copyRgba(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te[3]=ee[3],te}var colorCache=new LRU(20),lastRemovedArr=null;function putToCache(te,ee){lastRemovedArr&&copyRgba(lastRemovedArr,ee),lastRemovedArr=colorCache.put(te,lastRemovedArr||ee.slice())}colorUtil.parse=function(te,ee){if(te){ee=ee||[];var ne=colorCache.get(te);if(ne)return copyRgba(ee,ne);te=te+"";var xe=te.replace(/ /g,"").toLowerCase();if(xe in kCSSColorTable)return copyRgba(ee,kCSSColorTable[xe]),putToCache(te,ee),ee;if(xe.charAt(0)==="#"){if(xe.length===4){var it=parseInt(xe.substr(1),16);if(!(it>=0&&it<=4095)){setRgba(ee,0,0,0,1);return}return setRgba(ee,(it&3840)>>4|(it&3840)>>8,it&240|(it&240)>>4,it&15|(it&15)<<4,1),putToCache(te,ee),ee}else if(xe.length===7){var it=parseInt(xe.substr(1),16);if(!(it>=0&&it<=16777215)){setRgba(ee,0,0,0,1);return}return setRgba(ee,(it&16711680)>>16,(it&65280)>>8,it&255,1),putToCache(te,ee),ee}return}var ut=xe.indexOf("("),ht=xe.indexOf(")");if(ut!==-1&&ht+1===xe.length){var dt=xe.substr(0,ut),Mt=xe.substr(ut+1,ht-(ut+1)).split(","),ft=1;switch(dt){case"rgba":if(Mt.length!==4){setRgba(ee,0,0,0,1);return}ft=parseCssFloat(Mt.pop());case"rgb":if(Mt.length!==3){setRgba(ee,0,0,0,1);return}return setRgba(ee,parseCssInt(Mt[0]),parseCssInt(Mt[1]),parseCssInt(Mt[2]),ft),putToCache(te,ee),ee;case"hsla":if(Mt.length!==4){setRgba(ee,0,0,0,1);return}return Mt[3]=parseCssFloat(Mt[3]),hsla2rgba(Mt,ee),putToCache(te,ee),ee;case"hsl":if(Mt.length!==3){setRgba(ee,0,0,0,1);return}return hsla2rgba(Mt,ee),putToCache(te,ee),ee;default:return}}setRgba(ee,0,0,0,1)}},colorUtil.parseToFloat=function(te,ee){if(ee=colorUtil.parse(te,ee),!!ee)return ee[0]/=255,ee[1]/=255,ee[2]/=255,ee};function hsla2rgba(te,ee){var ne=(parseFloat(te[0])%360+360)%360/360,xe=parseCssFloat(te[1]),it=parseCssFloat(te[2]),ut=it<=.5?it*(xe+1):it+xe-it*xe,ht=it*2-ut;return ee=ee||[],setRgba(ee,clampCssByte(cssHueToRgb(ht,ut,ne+1/3)*255),clampCssByte(cssHueToRgb(ht,ut,ne)*255),clampCssByte(cssHueToRgb(ht,ut,ne-1/3)*255),1),te.length===4&&(ee[3]=te[3]),ee}function rgba2hsla(te){if(te){var ee=te[0]/255,ne=te[1]/255,xe=te[2]/255,it=Math.min(ee,ne,xe),ut=Math.max(ee,ne,xe),ht=ut-it,dt=(ut+it)/2,Mt,ft;if(ht===0)Mt=0,ft=0;else{dt<.5?ft=ht/(ut+it):ft=ht/(2-ut-it);var gt=((ut-ee)/6+ht/2)/ht,xt=((ut-ne)/6+ht/2)/ht,mt=((ut-xe)/6+ht/2)/ht;ee===ut?Mt=mt-xt:ne===ut?Mt=1/3+gt-mt:xe===ut&&(Mt=2/3+xt-gt),Mt<0&&(Mt+=1),Mt>1&&(Mt-=1)}var Dt=[Mt*360,ft,dt];return te[3]!=null&&Dt.push(te[3]),Dt}}colorUtil.lift=function(te,ee){var ne=colorUtil.parse(te);if(ne){for(var xe=0;xe<3;xe++)ee<0?ne[xe]=ne[xe]*(1-ee)|0:ne[xe]=(255-ne[xe])*ee+ne[xe]|0;return colorUtil.stringify(ne,ne.length===4?"rgba":"rgb")}},colorUtil.toHex=function(te){var ee=colorUtil.parse(te);if(ee)return((1<<24)+(ee[0]<<16)+(ee[1]<<8)+ +ee[2]).toString(16).slice(1)},colorUtil.fastLerp=function(te,ee,ne){if(!(!(ee&&ee.length)||!(te>=0&&te<=1))){ne=ne||[];var xe=te*(ee.length-1),it=Math.floor(xe),ut=Math.ceil(xe),ht=ee[it],dt=ee[ut],Mt=xe-it;return ne[0]=clampCssByte(lerpNumber(ht[0],dt[0],Mt)),ne[1]=clampCssByte(lerpNumber(ht[1],dt[1],Mt)),ne[2]=clampCssByte(lerpNumber(ht[2],dt[2],Mt)),ne[3]=clampCssFloat(lerpNumber(ht[3],dt[3],Mt)),ne}},colorUtil.fastMapToColor=colorUtil.fastLerp,colorUtil.lerp=function(te,ee,ne){if(!(!(ee&&ee.length)||!(te>=0&&te<=1))){var xe=te*(ee.length-1),it=Math.floor(xe),ut=Math.ceil(xe),ht=colorUtil.parse(ee[it]),dt=colorUtil.parse(ee[ut]),Mt=xe-it,ft=colorUtil.stringify([clampCssByte(lerpNumber(ht[0],dt[0],Mt)),clampCssByte(lerpNumber(ht[1],dt[1],Mt)),clampCssByte(lerpNumber(ht[2],dt[2],Mt)),clampCssFloat(lerpNumber(ht[3],dt[3],Mt))],"rgba");return ne?{color:ft,leftIndex:it,rightIndex:ut,value:xe}:ft}},colorUtil.mapToColor=colorUtil.lerp,colorUtil.modifyHSL=function(te,ee,ne,xe){if(te=colorUtil.parse(te),te)return te=rgba2hsla(te),ee!=null&&(te[0]=clampCssAngle(ee)),ne!=null&&(te[1]=parseCssFloat(ne)),xe!=null&&(te[2]=parseCssFloat(xe)),colorUtil.stringify(hsla2rgba(te),"rgba")},colorUtil.modifyAlpha=function(te,ee){if(te=colorUtil.parse(te),te&&ee!=null)return te[3]=clampCssFloat(ee),colorUtil.stringify(te,"rgba")},colorUtil.stringify=function(te,ee){if(!(!te||!te.length)){var ne=te[0]+","+te[1]+","+te[2];return(ee==="rgba"||ee==="hsva"||ee==="hsla")&&(ne+=","+te[3]),ee+"("+ne+")"}};var parseColor=colorUtil.parseToFloat,programKeyCache$1={};function getDefineCode$1(te){var ee=Object.keys(te);ee.sort();for(var ne=[],xe=0;xe<ee.length;xe++){var it=ee[xe],ut=te[it];ut===null?ne.push(it):ne.push(it+" "+ut.toString())}return ne.join(`
601
+ Not supported in this version — explain these in markdown instead: boolean operations (holes, cuts), curved surface modelling, textures, animation, physics, lighting setup. For solid-geometry questions (sections of a cube and the like) use a solid block, not a scene.`,PROMPT={en:{spec:EN},"zh-CN":{spec:ZH}},escapeHtml=te=>te.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");function loading$1(){return{kind:"html",html:'<div data-aigui-scene-loading aria-label="Loading scene"></div>'}}function failedHtml(te){return`<div data-aigui-scene-error role="img" aria-label="${escapeHtml(te)}">${escapeHtml(te)}</div>`}function failed(te){return{kind:"html",html:failedHtml(te),trusted:!0}}const sceneCss=["[data-aigui-scene]{max-width:100%;margin-block:0.75rem}","[data-aigui-scene] canvas{display:block;max-width:100%;touch-action:none;cursor:grab}","[data-aigui-scene] canvas:active{cursor:grabbing}","[data-aigui-scene-caption]{margin-top:0.35rem;font-size:0.875rem;opacity:0.75;text-align:center}","[data-aigui-scene-loading]{min-height:6rem;border-radius:0.5rem;background:currentColor;opacity:0.06}",":where([data-aigui-scene-error]){padding:0.5rem 0.75rem;border-radius:0.5rem;font-size:0.875rem;background:color-mix(in srgb,currentColor 8%,transparent);border:1px solid color-mix(in srgb,currentColor 25%,transparent)}","[data-aigui-scene-model-error]{margin-top:0.25rem;font-size:0.8rem;opacity:0.7}"].join("");function scene(te={}){const ee=te.height??360;return{name:"scene",css:sceneCss,nodeRenderers:{scene:async(xe,it)=>{if(xe.complete===!1)return loading$1();const ut=parseScene(xe.content??"",te);if(!ut.ok)return failed(ut.error.message);const{definition:ht,refused:dt}=ut.value;return{kind:"mount",mount:Mt=>{Mt.setAttribute("data-aigui-scene",String(ht.objects.length));const ft=document.createElement("div");if(Mt.appendChild(ft),ht.caption){const mt=document.createElement("div");mt.setAttribute("data-aigui-scene-caption",""),mt.textContent=ht.caption,Mt.appendChild(mt)}for(const mt of dt){const Dt=document.createElement("div");Dt.setAttribute("data-aigui-scene-model-error",""),Dt.textContent=mt.message,Mt.appendChild(Dt)}let gt,xt=!1;return Promise.resolve().then(()=>renderCI1iZ6Yu).then(({mountScene:mt})=>mt(ft,ht,{height:ee,theme:it?.theme,onModelError:Dt=>{const yt=document.createElement("div");yt.setAttribute("data-aigui-scene-model-error",""),yt.textContent=`Model could not be loaded from ${new URL(Dt.src).origin}.`,Mt.appendChild(yt)}})).then(mt=>{xt?mt.destroy():gt=mt}).catch(()=>{ft.replaceChildren(),ft.innerHTML=failedHtml("Scene could not be drawn.")}),()=>{xt=!0,gt?.destroy()}}}}},isBlockComplete:(xe,it)=>{const ut=it.trim();if(!ut.startsWith("{")||!ut.endsWith("}"))return!1;try{return JSON.parse(ut),!0}catch{return!1}},promptSpec:xe=>scenePromptSpec(xe)}}const DEFAULT_WIDTH=720;function imagePlugins(te=DEFAULT_WIDTH){const ee=Math.max(200,te-32);return[chart({interactive:!1,width:ee,height:Math.round(ee*.625)}),mermaid$1(),katex({css:""}),dashboard(),scene({height:Math.round(ee*.6)}),gravity({animate:!1,width:ee,height:Math.round(ee*.625)}),bigscreen({animate:!1}),molecule({width:ee,height:Math.round(ee*.6)})]}const PENDING="[data-aigui-async-pending]",FAILED="[data-aigui-async-error]";function quiescent(te,ee){return new Promise(ne=>{let xe=0;const it=new MutationObserver(ut);function ut(){window.clearTimeout(xe),xe=window.setTimeout(ht,ee)}function ht(){if(te.querySelector(PENDING)){ut();return}it.disconnect(),ne()}it.observe(te,{childList:!0,subtree:!0,attributes:!0,characterData:!0}),ut()})}function frame$1(){return new Promise(te=>window.requestAnimationFrame(()=>te()))}window.__aiguiRenderBlock=async(te,ee={})=>{const ne=document.getElementById("root");ne.replaceChildren(),createRenderer(ne,{plugins:imagePlugins(ee.width),theme:ee.theme}).push(te),await quiescent(ne,ee.quietMs??150),await document.fonts.ready,await frame$1(),await frame$1(),ne.querySelector("canvas")&&(await new Promise(ut=>window.setTimeout(ut,ee.canvasSettleMs??600)),await frame$1(),await frame$1());const it=ne.getBoundingClientRect();return{width:Math.ceil(it.width),height:Math.ceil(it.height),failed:ne.querySelector(FAILED)!==null}},use([install$15,install$16,install$14,install$12,install$W,install$10,install$P,install$O,install$V,install$N,install$i,install$H,install$r,install$G,install$11,install$y,install$A,install$l,install$g]);let glReady=null;const loadGl=()=>glReady??=Promise.resolve().then(()=>index),DEFAULT_HEIGHT={kpi:0,gauge:180,rank:220,chart:240,chart3d:280,globe:300},easeOut=te=>1-Math.pow(1-te,3);function el(te,ee={},ne){const xe=document.createElement(te);for(const[it,ut]of Object.entries(ee))xe.setAttribute(it,ut);return ne!==void 0&&(xe.textContent=ne),xe}function countUp(te,ee,ne){const xe=ee.decimals??0,it=ft=>{te.textContent=`${ee.prefix??""}${formatNumber$1(ft,xe)}`};if(!ne||typeof requestAnimationFrame!="function")return it(ee.value),()=>{};const ut=1400;let ht,dt=0;const Mt=ft=>{ht??=ft;const gt=Math.min(1,(ft-ht)/ut);it(ee.value*easeOut(gt)),gt<1&&(dt=requestAnimationFrame(Mt))};return dt=requestAnimationFrame(Mt),()=>cancelAnimationFrame(dt)}function sparkline(te,ee,ne,xe){const it=Math.min(...te),ht=Math.max(...te)-it||1,dt=ne/(te.length-1),Mt=te.map((mt,Dt)=>`${(Dt*dt).toFixed(1)},${(xe-2-(mt-it)/ht*(xe-4)).toFixed(1)}`),ft=document.createElementNS("http://www.w3.org/2000/svg","svg");ft.setAttribute("viewBox",`0 0 ${ne} ${xe}`),ft.setAttribute("width","100%"),ft.setAttribute("height",String(xe)),ft.setAttribute("preserveAspectRatio","none"),ft.setAttribute("aria-hidden","true");const gt=document.createElementNS("http://www.w3.org/2000/svg","polygon");gt.setAttribute("points",`0,${xe} ${Mt.join(" ")} ${ne},${xe}`),gt.setAttribute("fill",withAlpha(ee.accent,.18));const xt=document.createElementNS("http://www.w3.org/2000/svg","polyline");return xt.setAttribute("points",Mt.join(" ")),xt.setAttribute("fill","none"),xt.setAttribute("stroke",ee.accent),xt.setAttribute("stroke-width","2"),xt.setAttribute("stroke-linejoin","round"),xt.setAttribute("vector-effect","non-scaling-stroke"),ft.append(gt,xt),ft}function mountKpi(te,ee,ne,xe){te.classList.add("aigui-bs-kpi");const it=el("div",{class:"aigui-bs-kpi-row"}),ut=el("span",{class:"aigui-bs-kpi-value"});ut.style.color=ne.accent,ut.style.textShadow=`0 0 18px ${withAlpha(ne.accent,.45)}`,it.appendChild(ut),ee.unit&&it.appendChild(el("span",{class:"aigui-bs-kpi-unit"},ee.unit)),te.appendChild(it);const ht=el("div",{class:"aigui-bs-kpi-meta"});if(ee.delta!==void 0){const dt=ee.delta>=0,Mt=(ee.upIsGood??!0)===dt,ft=el("span",{class:"aigui-bs-kpi-delta"},`${dt?"▲":"▼"} ${formatNumber$1(Math.abs(ee.delta)*100,1)}%`);ft.style.color=Mt?ne.good:ne.bad,ht.appendChild(ft)}if(ee.label&&ht.appendChild(el("span",{class:"aigui-bs-kpi-label"},ee.label)),ht.childNodes.length&&te.appendChild(ht),ee.trend){const dt=el("div",{class:"aigui-bs-kpi-spark"});dt.appendChild(sparkline(ee.trend,ne,200,36)),te.appendChild(dt)}return countUp(ut,ee,xe)}function mountRank(te,ee,ne,xe){te.classList.add("aigui-bs-rank");const it=[...ee.items].sort((Mt,ft)=>ft.value-Mt.value).slice(0,ee.top??8),ut=Math.max(...it.map(Mt=>Mt.value),0)||1,ht=[];if(it.forEach((Mt,ft)=>{const gt=el("div",{class:"aigui-bs-rank-row"}),xt=el("span",{class:"aigui-bs-rank-n"},String(ft+1));ft<3&&(xt.style.color=ne.accent);const mt=el("span",{class:"aigui-bs-rank-name"},Mt.name),Dt=el("span",{class:"aigui-bs-rank-track"});Dt.style.background=ne.track;const yt=el("span",{class:"aigui-bs-rank-fill"}),wt=ft===0?ne.accent:ne.series[ft%(ne.series.length-1)+1];yt.style.background=`linear-gradient(90deg, ${withAlpha(wt,.55)}, ${wt})`,yt.style.boxShadow=`0 0 10px ${withAlpha(wt,.5)}`;const At=`${Math.max(2,Math.max(Mt.value,0)/ut*100)}%`;yt.style.width=xe?"0%":At,Dt.appendChild(yt);const Lt=el("span",{class:"aigui-bs-rank-value"},`${formatNumber$1(Mt.value,Number.isInteger(Mt.value)?0:1)}${ee.unit??""}`);gt.append(xt,mt,Dt,Lt),te.appendChild(gt),ht.push({fill:yt,width:At})}),!xe||typeof requestAnimationFrame!="function")return()=>{};const dt=requestAnimationFrame(()=>requestAnimationFrame(()=>ht.forEach(({fill:Mt,width:ft})=>Mt.style.width=ft)));return()=>cancelAnimationFrame(dt)}function follow(te,ee){if(typeof ResizeObserver>"u")return()=>{};const ne=new ResizeObserver(()=>ee.resize());return ne.observe(te),()=>ne.disconnect()}function whenSized(te,ee){if(te.clientWidth>0||typeof requestAnimationFrame!="function")return ee(),()=>{};const ne=requestAnimationFrame(ee);return()=>cancelAnimationFrame(ne)}function mountChart(te,ee,ne){let xe,it;const ut=whenSized(te,()=>{xe=init$3(te,ne==="dark"?"dark":void 0,{renderer:"canvas"}),xe.setOption(ee),it=follow(te,xe)});return()=>{ut(),it?.(),xe?.dispose()}}function mountGl(te,ee,ne,xe){let it,ut,ht,dt=!1;return loadGl().then(()=>{dt||(ht=whenSized(te,()=>{dt||(it=init$3(te,ne==="dark"?"dark":void 0,{renderer:"canvas"}),it.setOption(ee()),ut=follow(te,it))}))}).catch(()=>{dt||(it?.dispose(),it=void 0,xe())}),()=>{dt=!0,ht?.(),ut?.(),it?.dispose()}}function note$2(te,ee){te.replaceChildren(el("div",{class:"aigui-bs-note"},ee))}function mountPanel(te,ee,ne,xe){const it=el("section",{class:"aigui-bs-panel","data-aigui-bigscreen-panel":te.kind});if(it.style.gridColumn=`span ${Math.min(te.span??4,ee.columns)}`,it.style.borderColor=withAlpha(ne.accent,ee.theme==="dark"?.22:.18),te.title){const Mt=el("header",{class:"aigui-bs-panel-title"},te.title),ft=el("i",{class:"aigui-bs-panel-mark"});ft.style.background=ne.accent,ft.style.boxShadow=`0 0 8px ${ne.accent}`,Mt.prepend(ft),it.appendChild(Mt)}const ut=el("div",{class:"aigui-bs-panel-body"}),ht=te.height??DEFAULT_HEIGHT[te.kind];ht&&(ut.style.height=`${ht}px`),it.appendChild(ut);let dt=()=>{};try{switch(te.kind){case"kpi":dt=mountKpi(ut,te,ne,xe);break;case"rank":dt=mountRank(ut,te,ne,xe);break;case"gauge":dt=mountChart(ut,gaugeOption(te,ne,xe),ee.theme);break;case"chart":dt=mountChart(ut,chartOption(te,ne,xe),ee.theme);break;case"chart3d":dt=mountGl(ut,()=>chart3dOption(te,ne,xe),ee.theme,()=>note$2(ut,"3D panels need echarts-gl and WebGL."));break;case"globe":dt=mountGl(ut,()=>globeOption(te,ne,xe,globeTexture(ne,ee.theme)),ee.theme,()=>note$2(ut,"Globe panels need echarts-gl and WebGL."));break}}catch{note$2(ut,"Panel could not be drawn.")}return{node:it,destroy:dt}}function mountScreen(te,ee,ne){const xe=palette$2(ee);if(te.setAttribute("data-aigui-bigscreen",ee.theme),te.style.setProperty("--aigui-bs-accent",xe.accent),te.style.setProperty("--aigui-bs-text",xe.text),te.style.setProperty("--aigui-bs-muted",xe.muted),ee.title||ee.subtitle){const ht=el("header",{class:"aigui-bs-head"});if(ee.title){const Mt=el("h2",{class:"aigui-bs-title"},ee.title);Mt.style.textShadow=ee.theme==="dark"?`0 0 24px ${withAlpha(xe.accent,.35)}`:"none",ht.appendChild(Mt)}ee.subtitle&&ht.appendChild(el("p",{class:"aigui-bs-subtitle"},ee.subtitle));const dt=el("div",{class:"aigui-bs-rule"});dt.style.background=`linear-gradient(90deg, transparent, ${xe.accent}, transparent)`,ht.appendChild(dt),te.appendChild(ht)}const it=el("div",{class:"aigui-bs-grid"});it.style.gridTemplateColumns=`repeat(${ee.columns}, minmax(0, 1fr))`,te.appendChild(it);const ut=ee.panels.map(ht=>mountPanel(ht,ee,xe,ne));for(const{node:ht}of ut)it.appendChild(ht);return()=>{for(const{destroy:ht}of ut)ht();te.replaceChildren()}}const mountDVHPS1xP=Object.freeze(Object.defineProperty({__proto__:null,mountScreen},Symbol.toStringTag,{value:"Module"}));use([install$g,install$i]);const echarts$2={init:function(){return init$3.apply(null,arguments)}};use(installLabelLayout);const echartsNS=Object.freeze(Object.defineProperty({__proto__:null,Axis:Axis$1,ChartView,ComponentModel,ComponentView,List:SeriesData,Model,PRIORITY,SeriesModel,color:color$1,connect,dataTool,default:echarts$2,dependencies,disConnect,disconnect,dispose,env,extendChartView,extendComponentModel,extendComponentView,extendSeriesModel,format:format$2,getCoordinateSystemDimensions,getInstanceByDom,getInstanceById,getMap:getMap$1,graphic,helper,init:init$3,innerDrawElementOnCanvas:brushSingle,matrix,number:number$5,parseGeoJSON,parseGeoJson:parseGeoJSON,registerAction,registerCoordinateSystem,registerLayout,registerLoading,registerLocale,registerMap:registerMap$1,registerPostInit,registerPostUpdate,registerPreprocessor,registerProcessor,registerTheme,registerTransform,registerUpdateLifecycle,registerVisual,setCanvasCreator,setPlatformAPI,throttle,time:time$1,use,util:util$1,vector,version:version$2,zrUtil:util$2,zrender},Symbol.toStringTag,{value:"Module"}));function derive(te,ee,ne){typeof ee=="object"&&(ne=ee,ee=null);var xe=this,it;if(!(te instanceof Function)){it=[];for(var ut in te)te.hasOwnProperty(ut)&&it.push(ut)}var ht=function(Mt){if(xe.apply(this,arguments),te instanceof Function?extend$3(this,te.call(this,Mt)):extendWithPropList(this,te,it),this.constructor===ht)for(var ft=ht.__initializers__,gt=0;gt<ft.length;gt++)ft[gt].apply(this,arguments)};ht.__super__=xe,xe.__initializers__?ht.__initializers__=xe.__initializers__.slice():ht.__initializers__=[],ee&&ht.__initializers__.push(ee);var dt=function(){};return dt.prototype=xe.prototype,ht.prototype=new dt,ht.prototype.constructor=ht,extend$3(ht.prototype,ne),ht.extend=xe.extend,ht.derive=xe.extend,ht}function extend$3(te,ee){if(ee)for(var ne in ee)ee.hasOwnProperty(ne)&&(te[ne]=ee[ne])}function extendWithPropList(te,ee,ne){for(var xe=0;xe<ne.length;xe++){var it=ne[xe];te[it]=ee[it]}}const extendMixin={extend:derive,derive};function Handler(te,ee){this.action=te,this.context=ee}var notifier={trigger:function(te){if(this.hasOwnProperty("__handlers__")&&this.__handlers__.hasOwnProperty(te)){var ee=this.__handlers__[te],ne=ee.length,xe=-1,it=arguments;switch(it.length){case 1:for(;++xe<ne;)ee[xe].action.call(ee[xe].context);return;case 2:for(;++xe<ne;)ee[xe].action.call(ee[xe].context,it[1]);return;case 3:for(;++xe<ne;)ee[xe].action.call(ee[xe].context,it[1],it[2]);return;case 4:for(;++xe<ne;)ee[xe].action.call(ee[xe].context,it[1],it[2],it[3]);return;case 5:for(;++xe<ne;)ee[xe].action.call(ee[xe].context,it[1],it[2],it[3],it[4]);return;default:for(;++xe<ne;)ee[xe].action.apply(ee[xe].context,Array.prototype.slice.call(it,1));return}}},on:function(te,ee,ne){if(!(!te||!ee)){var xe=this.__handlers__||(this.__handlers__={});if(!xe[te])xe[te]=[];else if(this.has(te,ee))return;var it=new Handler(ee,ne||this);return xe[te].push(it),this}},once:function(te,ee,ne){if(!te||!ee)return;var xe=this;function it(){xe.off(te,it),ee.apply(this,arguments)}return this.on(te,it,ne)},before:function(te,ee,ne){if(!(!te||!ee))return te="before"+te,this.on(te,ee,ne)},after:function(te,ee,ne){if(!(!te||!ee))return te="after"+te,this.on(te,ee,ne)},success:function(te,ee){return this.once("success",te,ee)},error:function(te,ee){return this.once("error",te,ee)},off:function(te,ee){var ne=this.__handlers__||(this.__handlers__={});if(!ee){ne[te]=[];return}if(ne[te]){for(var xe=ne[te],it=[],ut=0;ut<xe.length;ut++)ee&&xe[ut].action!==ee&&it.push(xe[ut]);ne[te]=it}return this},has:function(te,ee){var ne=this.__handlers__;if(!ne||!ne[te])return!1;for(var xe=ne[te],it=0;it<xe.length;it++)if(xe[it].action===ee)return!0}},guid=0,ArrayProto=Array.prototype,nativeForEach=ArrayProto.forEach,util={genGUID:function(){return++guid},relative2absolute:function(te,ee){if(!ee||te.match(/^\//))return te;for(var ne=te.split("/"),xe=ee.split("/"),it=ne[0];it==="."||it==="..";)it===".."&&xe.pop(),ne.shift(),it=ne[0];return xe.join("/")+"/"+ne.join("/")},extend:function(te,ee){if(ee)for(var ne in ee)ee.hasOwnProperty(ne)&&(te[ne]=ee[ne]);return te},defaults:function(te,ee){if(ee)for(var ne in ee)te[ne]===void 0&&(te[ne]=ee[ne]);return te},extendWithPropList:function(te,ee,ne){if(ee)for(var xe=0;xe<ne.length;xe++){var it=ne[xe];te[it]=ee[it]}return te},defaultsWithPropList:function(te,ee,ne){if(ee)for(var xe=0;xe<ne.length;xe++){var it=ne[xe];te[it]==null&&(te[it]=ee[it])}return te},each:function(te,ee,ne){if(te&&ee)if(te.forEach&&te.forEach===nativeForEach)te.forEach(ee,ne);else if(te.length===+te.length)for(var xe=0,it=te.length;xe<it;xe++)ee.call(ne,te[xe],xe,te);else for(var ut in te)te.hasOwnProperty(ut)&&ee.call(ne,te[ut],ut,te)},isObject:function(te){return te===Object(te)},isArray:function(te){return Array.isArray(te)},isArrayLike:function(te){return te?te.length===+te.length:!1},clone:function(te){if(util.isObject(te)){if(util.isArray(te))return te.slice();if(util.isArrayLike(te)){for(var ee=new te.constructor(te.length),ne=0;ne<te.length;ne++)ee[ne]=te[ne];return ee}else return util.extend({},te)}else return te}},Base=function(){this.__uid__=util.genGUID()};Base.__initializers__=[function(te){util.extend(this,te)}],util.extend(Base,extendMixin),util.extend(Base.prototype,notifier);var GLMAT_EPSILON=1e-6,GLMAT_ARRAY_TYPE=Array,GLMAT_RANDOM$1=Math.random,vec3$f={};vec3$f.create=function(){var te=new GLMAT_ARRAY_TYPE(3);return te[0]=0,te[1]=0,te[2]=0,te},vec3$f.clone=function(te){var ee=new GLMAT_ARRAY_TYPE(3);return ee[0]=te[0],ee[1]=te[1],ee[2]=te[2],ee},vec3$f.fromValues=function(te,ee,ne){var xe=new GLMAT_ARRAY_TYPE(3);return xe[0]=te,xe[1]=ee,xe[2]=ne,xe},vec3$f.copy=function(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te},vec3$f.set=function(te,ee,ne,xe){return te[0]=ee,te[1]=ne,te[2]=xe,te},vec3$f.add=function(te,ee,ne){return te[0]=ee[0]+ne[0],te[1]=ee[1]+ne[1],te[2]=ee[2]+ne[2],te},vec3$f.subtract=function(te,ee,ne){return te[0]=ee[0]-ne[0],te[1]=ee[1]-ne[1],te[2]=ee[2]-ne[2],te},vec3$f.sub=vec3$f.subtract,vec3$f.multiply=function(te,ee,ne){return te[0]=ee[0]*ne[0],te[1]=ee[1]*ne[1],te[2]=ee[2]*ne[2],te},vec3$f.mul=vec3$f.multiply,vec3$f.divide=function(te,ee,ne){return te[0]=ee[0]/ne[0],te[1]=ee[1]/ne[1],te[2]=ee[2]/ne[2],te},vec3$f.div=vec3$f.divide,vec3$f.min=function(te,ee,ne){return te[0]=Math.min(ee[0],ne[0]),te[1]=Math.min(ee[1],ne[1]),te[2]=Math.min(ee[2],ne[2]),te},vec3$f.max=function(te,ee,ne){return te[0]=Math.max(ee[0],ne[0]),te[1]=Math.max(ee[1],ne[1]),te[2]=Math.max(ee[2],ne[2]),te},vec3$f.scale=function(te,ee,ne){return te[0]=ee[0]*ne,te[1]=ee[1]*ne,te[2]=ee[2]*ne,te},vec3$f.scaleAndAdd=function(te,ee,ne,xe){return te[0]=ee[0]+ne[0]*xe,te[1]=ee[1]+ne[1]*xe,te[2]=ee[2]+ne[2]*xe,te},vec3$f.distance=function(te,ee){var ne=ee[0]-te[0],xe=ee[1]-te[1],it=ee[2]-te[2];return Math.sqrt(ne*ne+xe*xe+it*it)},vec3$f.dist=vec3$f.distance,vec3$f.squaredDistance=function(te,ee){var ne=ee[0]-te[0],xe=ee[1]-te[1],it=ee[2]-te[2];return ne*ne+xe*xe+it*it},vec3$f.sqrDist=vec3$f.squaredDistance,vec3$f.length=function(te){var ee=te[0],ne=te[1],xe=te[2];return Math.sqrt(ee*ee+ne*ne+xe*xe)},vec3$f.len=vec3$f.length,vec3$f.squaredLength=function(te){var ee=te[0],ne=te[1],xe=te[2];return ee*ee+ne*ne+xe*xe},vec3$f.sqrLen=vec3$f.squaredLength,vec3$f.negate=function(te,ee){return te[0]=-ee[0],te[1]=-ee[1],te[2]=-ee[2],te},vec3$f.inverse=function(te,ee){return te[0]=1/ee[0],te[1]=1/ee[1],te[2]=1/ee[2],te},vec3$f.normalize=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ne*ne+xe*xe+it*it;return ut>0&&(ut=1/Math.sqrt(ut),te[0]=ee[0]*ut,te[1]=ee[1]*ut,te[2]=ee[2]*ut),te},vec3$f.dot=function(te,ee){return te[0]*ee[0]+te[1]*ee[1]+te[2]*ee[2]},vec3$f.cross=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ne[0],dt=ne[1],Mt=ne[2];return te[0]=it*Mt-ut*dt,te[1]=ut*ht-xe*Mt,te[2]=xe*dt-it*ht,te},vec3$f.lerp=function(te,ee,ne,xe){var it=ee[0],ut=ee[1],ht=ee[2];return te[0]=it+xe*(ne[0]-it),te[1]=ut+xe*(ne[1]-ut),te[2]=ht+xe*(ne[2]-ht),te},vec3$f.random=function(te,ee){ee=ee||1;var ne=GLMAT_RANDOM$1()*2*Math.PI,xe=GLMAT_RANDOM$1()*2-1,it=Math.sqrt(1-xe*xe)*ee;return te[0]=Math.cos(ne)*it,te[1]=Math.sin(ne)*it,te[2]=xe*ee,te},vec3$f.transformMat4=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ne[3]*xe+ne[7]*it+ne[11]*ut+ne[15];return ht=ht||1,te[0]=(ne[0]*xe+ne[4]*it+ne[8]*ut+ne[12])/ht,te[1]=(ne[1]*xe+ne[5]*it+ne[9]*ut+ne[13])/ht,te[2]=(ne[2]*xe+ne[6]*it+ne[10]*ut+ne[14])/ht,te},vec3$f.transformMat3=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2];return te[0]=xe*ne[0]+it*ne[3]+ut*ne[6],te[1]=xe*ne[1]+it*ne[4]+ut*ne[7],te[2]=xe*ne[2]+it*ne[5]+ut*ne[8],te},vec3$f.transformQuat=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ne[0],dt=ne[1],Mt=ne[2],ft=ne[3],gt=ft*xe+dt*ut-Mt*it,xt=ft*it+Mt*xe-ht*ut,mt=ft*ut+ht*it-dt*xe,Dt=-ht*xe-dt*it-Mt*ut;return te[0]=gt*ft+Dt*-ht+xt*-Mt-mt*-dt,te[1]=xt*ft+Dt*-dt+mt*-ht-gt*-Mt,te[2]=mt*ft+Dt*-Mt+gt*-dt-xt*-ht,te},vec3$f.rotateX=function(te,ee,ne,xe){var it=[],ut=[];return it[0]=ee[0]-ne[0],it[1]=ee[1]-ne[1],it[2]=ee[2]-ne[2],ut[0]=it[0],ut[1]=it[1]*Math.cos(xe)-it[2]*Math.sin(xe),ut[2]=it[1]*Math.sin(xe)+it[2]*Math.cos(xe),te[0]=ut[0]+ne[0],te[1]=ut[1]+ne[1],te[2]=ut[2]+ne[2],te},vec3$f.rotateY=function(te,ee,ne,xe){var it=[],ut=[];return it[0]=ee[0]-ne[0],it[1]=ee[1]-ne[1],it[2]=ee[2]-ne[2],ut[0]=it[2]*Math.sin(xe)+it[0]*Math.cos(xe),ut[1]=it[1],ut[2]=it[2]*Math.cos(xe)-it[0]*Math.sin(xe),te[0]=ut[0]+ne[0],te[1]=ut[1]+ne[1],te[2]=ut[2]+ne[2],te},vec3$f.rotateZ=function(te,ee,ne,xe){var it=[],ut=[];return it[0]=ee[0]-ne[0],it[1]=ee[1]-ne[1],it[2]=ee[2]-ne[2],ut[0]=it[0]*Math.cos(xe)-it[1]*Math.sin(xe),ut[1]=it[0]*Math.sin(xe)+it[1]*Math.cos(xe),ut[2]=it[2],te[0]=ut[0]+ne[0],te[1]=ut[1]+ne[1],te[2]=ut[2]+ne[2],te},vec3$f.forEach=function(){var te=vec3$f.create();return function(ee,ne,xe,it,ut,ht){var dt,Mt;for(ne||(ne=3),xe||(xe=0),it?Mt=Math.min(it*ne+xe,ee.length):Mt=ee.length,dt=xe;dt<Mt;dt+=ne)te[0]=ee[dt],te[1]=ee[dt+1],te[2]=ee[dt+2],ut(te,te,ht),ee[dt]=te[0],ee[dt+1]=te[1],ee[dt+2]=te[2];return ee}}(),vec3$f.angle=function(te,ee){var ne=vec3$f.fromValues(te[0],te[1],te[2]),xe=vec3$f.fromValues(ee[0],ee[1],ee[2]);vec3$f.normalize(ne,ne),vec3$f.normalize(xe,xe);var it=vec3$f.dot(ne,xe);return it>1?0:Math.acos(it)};var Vector3$1=function(te,ee,ne){te=te||0,ee=ee||0,ne=ne||0,this.array=vec3$f.fromValues(te,ee,ne),this._dirty=!0};Vector3$1.prototype={constructor:Vector3$1,add:function(te){return vec3$f.add(this.array,this.array,te.array),this._dirty=!0,this},set:function(te,ee,ne){return this.array[0]=te,this.array[1]=ee,this.array[2]=ne,this._dirty=!0,this},setArray:function(te){return this.array[0]=te[0],this.array[1]=te[1],this.array[2]=te[2],this._dirty=!0,this},clone:function(){return new Vector3$1(this.x,this.y,this.z)},copy:function(te){return vec3$f.copy(this.array,te.array),this._dirty=!0,this},cross:function(te,ee){return vec3$f.cross(this.array,te.array,ee.array),this._dirty=!0,this},dist:function(te){return vec3$f.dist(this.array,te.array)},distance:function(te){return vec3$f.distance(this.array,te.array)},div:function(te){return vec3$f.div(this.array,this.array,te.array),this._dirty=!0,this},divide:function(te){return vec3$f.divide(this.array,this.array,te.array),this._dirty=!0,this},dot:function(te){return vec3$f.dot(this.array,te.array)},len:function(){return vec3$f.len(this.array)},length:function(){return vec3$f.length(this.array)},lerp:function(te,ee,ne){return vec3$f.lerp(this.array,te.array,ee.array,ne),this._dirty=!0,this},min:function(te){return vec3$f.min(this.array,this.array,te.array),this._dirty=!0,this},max:function(te){return vec3$f.max(this.array,this.array,te.array),this._dirty=!0,this},mul:function(te){return vec3$f.mul(this.array,this.array,te.array),this._dirty=!0,this},multiply:function(te){return vec3$f.multiply(this.array,this.array,te.array),this._dirty=!0,this},negate:function(){return vec3$f.negate(this.array,this.array),this._dirty=!0,this},normalize:function(){return vec3$f.normalize(this.array,this.array),this._dirty=!0,this},random:function(te){return vec3$f.random(this.array,te),this._dirty=!0,this},scale:function(te){return vec3$f.scale(this.array,this.array,te),this._dirty=!0,this},scaleAndAdd:function(te,ee){return vec3$f.scaleAndAdd(this.array,this.array,te.array,ee),this._dirty=!0,this},sqrDist:function(te){return vec3$f.sqrDist(this.array,te.array)},squaredDistance:function(te){return vec3$f.squaredDistance(this.array,te.array)},sqrLen:function(){return vec3$f.sqrLen(this.array)},squaredLength:function(){return vec3$f.squaredLength(this.array)},sub:function(te){return vec3$f.sub(this.array,this.array,te.array),this._dirty=!0,this},subtract:function(te){return vec3$f.subtract(this.array,this.array,te.array),this._dirty=!0,this},transformMat3:function(te){return vec3$f.transformMat3(this.array,this.array,te.array),this._dirty=!0,this},transformMat4:function(te){return vec3$f.transformMat4(this.array,this.array,te.array),this._dirty=!0,this},transformQuat:function(te){return vec3$f.transformQuat(this.array,this.array,te.array),this._dirty=!0,this},applyProjection:function(te){var ee=this.array;if(te=te.array,te[15]===0){var ne=-1/ee[2];ee[0]=te[0]*ee[0]*ne,ee[1]=te[5]*ee[1]*ne,ee[2]=(te[10]*ee[2]+te[14])*ne}else ee[0]=te[0]*ee[0]+te[12],ee[1]=te[5]*ee[1]+te[13],ee[2]=te[10]*ee[2]+te[14];return this._dirty=!0,this},eulerFromQuat:function(te,ee){Vector3$1.eulerFromQuat(this,te,ee)},eulerFromMat3:function(te,ee){Vector3$1.eulerFromMat3(this,te,ee)},toString:function(){return"["+Array.prototype.join.call(this.array,",")+"]"},toArray:function(){return Array.prototype.slice.call(this.array)}};var defineProperty$5=Object.defineProperty;if(defineProperty$5){var proto$4=Vector3$1.prototype;defineProperty$5(proto$4,"x",{get:function(){return this.array[0]},set:function(te){this.array[0]=te,this._dirty=!0}}),defineProperty$5(proto$4,"y",{get:function(){return this.array[1]},set:function(te){this.array[1]=te,this._dirty=!0}}),defineProperty$5(proto$4,"z",{get:function(){return this.array[2]},set:function(te){this.array[2]=te,this._dirty=!0}})}Vector3$1.add=function(te,ee,ne){return vec3$f.add(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.set=function(te,ee,ne,xe){vec3$f.set(te.array,ee,ne,xe),te._dirty=!0},Vector3$1.copy=function(te,ee){return vec3$f.copy(te.array,ee.array),te._dirty=!0,te},Vector3$1.cross=function(te,ee,ne){return vec3$f.cross(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.dist=function(te,ee){return vec3$f.distance(te.array,ee.array)},Vector3$1.distance=Vector3$1.dist,Vector3$1.div=function(te,ee,ne){return vec3$f.divide(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.divide=Vector3$1.div,Vector3$1.dot=function(te,ee){return vec3$f.dot(te.array,ee.array)},Vector3$1.len=function(te){return vec3$f.length(te.array)},Vector3$1.lerp=function(te,ee,ne,xe){return vec3$f.lerp(te.array,ee.array,ne.array,xe),te._dirty=!0,te},Vector3$1.min=function(te,ee,ne){return vec3$f.min(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.max=function(te,ee,ne){return vec3$f.max(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.mul=function(te,ee,ne){return vec3$f.multiply(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.multiply=Vector3$1.mul,Vector3$1.negate=function(te,ee){return vec3$f.negate(te.array,ee.array),te._dirty=!0,te},Vector3$1.normalize=function(te,ee){return vec3$f.normalize(te.array,ee.array),te._dirty=!0,te},Vector3$1.random=function(te,ee){return vec3$f.random(te.array,ee),te._dirty=!0,te},Vector3$1.scale=function(te,ee,ne){return vec3$f.scale(te.array,ee.array,ne),te._dirty=!0,te},Vector3$1.scaleAndAdd=function(te,ee,ne,xe){return vec3$f.scaleAndAdd(te.array,ee.array,ne.array,xe),te._dirty=!0,te},Vector3$1.sqrDist=function(te,ee){return vec3$f.sqrDist(te.array,ee.array)},Vector3$1.squaredDistance=Vector3$1.sqrDist,Vector3$1.sqrLen=function(te){return vec3$f.sqrLen(te.array)},Vector3$1.squaredLength=Vector3$1.sqrLen,Vector3$1.sub=function(te,ee,ne){return vec3$f.subtract(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.subtract=Vector3$1.sub,Vector3$1.transformMat3=function(te,ee,ne){return vec3$f.transformMat3(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.transformMat4=function(te,ee,ne){return vec3$f.transformMat4(te.array,ee.array,ne.array),te._dirty=!0,te},Vector3$1.transformQuat=function(te,ee,ne){return vec3$f.transformQuat(te.array,ee.array,ne.array),te._dirty=!0,te};function clamp$2(te,ee,ne){return te<ee?ee:te>ne?ne:te}var atan2$1=Math.atan2,asin$2=Math.asin,abs$2=Math.abs;Vector3$1.eulerFromQuat=function(te,ee,mt){te._dirty=!0,ee=ee.array;var xe=te.array,it=ee[0],ut=ee[1],ht=ee[2],dt=ee[3],Mt=it*it,ft=ut*ut,gt=ht*ht,xt=dt*dt,mt=(mt||"XYZ").toUpperCase();switch(mt){case"XYZ":xe[0]=atan2$1(2*(it*dt-ut*ht),xt-Mt-ft+gt),xe[1]=asin$2(clamp$2(2*(it*ht+ut*dt),-1,1)),xe[2]=atan2$1(2*(ht*dt-it*ut),xt+Mt-ft-gt);break;case"YXZ":xe[0]=asin$2(clamp$2(2*(it*dt-ut*ht),-1,1)),xe[1]=atan2$1(2*(it*ht+ut*dt),xt-Mt-ft+gt),xe[2]=atan2$1(2*(it*ut+ht*dt),xt-Mt+ft-gt);break;case"ZXY":xe[0]=asin$2(clamp$2(2*(it*dt+ut*ht),-1,1)),xe[1]=atan2$1(2*(ut*dt-ht*it),xt-Mt-ft+gt),xe[2]=atan2$1(2*(ht*dt-it*ut),xt-Mt+ft-gt);break;case"ZYX":xe[0]=atan2$1(2*(it*dt+ht*ut),xt-Mt-ft+gt),xe[1]=asin$2(clamp$2(2*(ut*dt-it*ht),-1,1)),xe[2]=atan2$1(2*(it*ut+ht*dt),xt+Mt-ft-gt);break;case"YZX":xe[0]=atan2$1(2*(it*dt-ht*ut),xt-Mt+ft-gt),xe[1]=atan2$1(2*(ut*dt-it*ht),xt+Mt-ft-gt),xe[2]=asin$2(clamp$2(2*(it*ut+ht*dt),-1,1));break;case"XZY":xe[0]=atan2$1(2*(it*dt+ut*ht),xt-Mt+ft-gt),xe[1]=atan2$1(2*(it*ht+ut*dt),xt+Mt-ft-gt),xe[2]=asin$2(clamp$2(2*(ht*dt-it*ut),-1,1));break;default:console.warn("Unkown order: "+mt)}return te},Vector3$1.eulerFromMat3=function(te,ee,yt){var xe=ee.array,it=xe[0],ut=xe[3],ht=xe[6],dt=xe[1],Mt=xe[4],ft=xe[7],gt=xe[2],xt=xe[5],mt=xe[8],Dt=te.array,yt=(yt||"XYZ").toUpperCase();switch(yt){case"XYZ":Dt[1]=asin$2(clamp$2(ht,-1,1)),abs$2(ht)<.99999?(Dt[0]=atan2$1(-ft,mt),Dt[2]=atan2$1(-ut,it)):(Dt[0]=atan2$1(xt,Mt),Dt[2]=0);break;case"YXZ":Dt[0]=asin$2(-clamp$2(ft,-1,1)),abs$2(ft)<.99999?(Dt[1]=atan2$1(ht,mt),Dt[2]=atan2$1(dt,Mt)):(Dt[1]=atan2$1(-gt,it),Dt[2]=0);break;case"ZXY":Dt[0]=asin$2(clamp$2(xt,-1,1)),abs$2(xt)<.99999?(Dt[1]=atan2$1(-gt,mt),Dt[2]=atan2$1(-ut,Mt)):(Dt[1]=0,Dt[2]=atan2$1(dt,it));break;case"ZYX":Dt[1]=asin$2(-clamp$2(gt,-1,1)),abs$2(gt)<.99999?(Dt[0]=atan2$1(xt,mt),Dt[2]=atan2$1(dt,it)):(Dt[0]=0,Dt[2]=atan2$1(-ut,Mt));break;case"YZX":Dt[2]=asin$2(clamp$2(dt,-1,1)),abs$2(dt)<.99999?(Dt[0]=atan2$1(-ft,Mt),Dt[1]=atan2$1(-gt,it)):(Dt[0]=0,Dt[1]=atan2$1(ht,mt));break;case"XZY":Dt[2]=asin$2(-clamp$2(ut,-1,1)),abs$2(ut)<.99999?(Dt[0]=atan2$1(xt,Mt),Dt[1]=atan2$1(ht,it)):(Dt[0]=atan2$1(-ft,mt),Dt[1]=0);break;default:console.warn("Unkown order: "+yt)}return te._dirty=!0,te},Object.defineProperties(Vector3$1,{POSITIVE_X:{get:function(){return new Vector3$1(1,0,0)}},NEGATIVE_X:{get:function(){return new Vector3$1(-1,0,0)}},POSITIVE_Y:{get:function(){return new Vector3$1(0,1,0)}},NEGATIVE_Y:{get:function(){return new Vector3$1(0,-1,0)}},POSITIVE_Z:{get:function(){return new Vector3$1(0,0,1)}},NEGATIVE_Z:{get:function(){return new Vector3$1(0,0,-1)}},UP:{get:function(){return new Vector3$1(0,1,0)}},ZERO:{get:function(){return new Vector3$1}}});var vec4$1={};vec4$1.create=function(){var te=new GLMAT_ARRAY_TYPE(4);return te[0]=0,te[1]=0,te[2]=0,te[3]=0,te},vec4$1.clone=function(te){var ee=new GLMAT_ARRAY_TYPE(4);return ee[0]=te[0],ee[1]=te[1],ee[2]=te[2],ee[3]=te[3],ee},vec4$1.fromValues=function(te,ee,ne,xe){var it=new GLMAT_ARRAY_TYPE(4);return it[0]=te,it[1]=ee,it[2]=ne,it[3]=xe,it},vec4$1.copy=function(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te[3]=ee[3],te},vec4$1.set=function(te,ee,ne,xe,it){return te[0]=ee,te[1]=ne,te[2]=xe,te[3]=it,te},vec4$1.add=function(te,ee,ne){return te[0]=ee[0]+ne[0],te[1]=ee[1]+ne[1],te[2]=ee[2]+ne[2],te[3]=ee[3]+ne[3],te},vec4$1.subtract=function(te,ee,ne){return te[0]=ee[0]-ne[0],te[1]=ee[1]-ne[1],te[2]=ee[2]-ne[2],te[3]=ee[3]-ne[3],te},vec4$1.sub=vec4$1.subtract,vec4$1.multiply=function(te,ee,ne){return te[0]=ee[0]*ne[0],te[1]=ee[1]*ne[1],te[2]=ee[2]*ne[2],te[3]=ee[3]*ne[3],te},vec4$1.mul=vec4$1.multiply,vec4$1.divide=function(te,ee,ne){return te[0]=ee[0]/ne[0],te[1]=ee[1]/ne[1],te[2]=ee[2]/ne[2],te[3]=ee[3]/ne[3],te},vec4$1.div=vec4$1.divide,vec4$1.min=function(te,ee,ne){return te[0]=Math.min(ee[0],ne[0]),te[1]=Math.min(ee[1],ne[1]),te[2]=Math.min(ee[2],ne[2]),te[3]=Math.min(ee[3],ne[3]),te},vec4$1.max=function(te,ee,ne){return te[0]=Math.max(ee[0],ne[0]),te[1]=Math.max(ee[1],ne[1]),te[2]=Math.max(ee[2],ne[2]),te[3]=Math.max(ee[3],ne[3]),te},vec4$1.scale=function(te,ee,ne){return te[0]=ee[0]*ne,te[1]=ee[1]*ne,te[2]=ee[2]*ne,te[3]=ee[3]*ne,te},vec4$1.scaleAndAdd=function(te,ee,ne,xe){return te[0]=ee[0]+ne[0]*xe,te[1]=ee[1]+ne[1]*xe,te[2]=ee[2]+ne[2]*xe,te[3]=ee[3]+ne[3]*xe,te},vec4$1.distance=function(te,ee){var ne=ee[0]-te[0],xe=ee[1]-te[1],it=ee[2]-te[2],ut=ee[3]-te[3];return Math.sqrt(ne*ne+xe*xe+it*it+ut*ut)},vec4$1.dist=vec4$1.distance,vec4$1.squaredDistance=function(te,ee){var ne=ee[0]-te[0],xe=ee[1]-te[1],it=ee[2]-te[2],ut=ee[3]-te[3];return ne*ne+xe*xe+it*it+ut*ut},vec4$1.sqrDist=vec4$1.squaredDistance,vec4$1.length=function(te){var ee=te[0],ne=te[1],xe=te[2],it=te[3];return Math.sqrt(ee*ee+ne*ne+xe*xe+it*it)},vec4$1.len=vec4$1.length,vec4$1.squaredLength=function(te){var ee=te[0],ne=te[1],xe=te[2],it=te[3];return ee*ee+ne*ne+xe*xe+it*it},vec4$1.sqrLen=vec4$1.squaredLength,vec4$1.negate=function(te,ee){return te[0]=-ee[0],te[1]=-ee[1],te[2]=-ee[2],te[3]=-ee[3],te},vec4$1.inverse=function(te,ee){return te[0]=1/ee[0],te[1]=1/ee[1],te[2]=1/ee[2],te[3]=1/ee[3],te},vec4$1.normalize=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ne*ne+xe*xe+it*it+ut*ut;return ht>0&&(ht=1/Math.sqrt(ht),te[0]=ee[0]*ht,te[1]=ee[1]*ht,te[2]=ee[2]*ht,te[3]=ee[3]*ht),te},vec4$1.dot=function(te,ee){return te[0]*ee[0]+te[1]*ee[1]+te[2]*ee[2]+te[3]*ee[3]},vec4$1.lerp=function(te,ee,ne,xe){var it=ee[0],ut=ee[1],ht=ee[2],dt=ee[3];return te[0]=it+xe*(ne[0]-it),te[1]=ut+xe*(ne[1]-ut),te[2]=ht+xe*(ne[2]-ht),te[3]=dt+xe*(ne[3]-dt),te},vec4$1.random=function(te,ee){return ee=ee||1,te[0]=GLMAT_RANDOM$1(),te[1]=GLMAT_RANDOM$1(),te[2]=GLMAT_RANDOM$1(),te[3]=GLMAT_RANDOM$1(),vec4$1.normalize(te,te),vec4$1.scale(te,te,ee),te},vec4$1.transformMat4=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3];return te[0]=ne[0]*xe+ne[4]*it+ne[8]*ut+ne[12]*ht,te[1]=ne[1]*xe+ne[5]*it+ne[9]*ut+ne[13]*ht,te[2]=ne[2]*xe+ne[6]*it+ne[10]*ut+ne[14]*ht,te[3]=ne[3]*xe+ne[7]*it+ne[11]*ut+ne[15]*ht,te},vec4$1.transformQuat=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ne[0],dt=ne[1],Mt=ne[2],ft=ne[3],gt=ft*xe+dt*ut-Mt*it,xt=ft*it+Mt*xe-ht*ut,mt=ft*ut+ht*it-dt*xe,Dt=-ht*xe-dt*it-Mt*ut;return te[0]=gt*ft+Dt*-ht+xt*-Mt-mt*-dt,te[1]=xt*ft+Dt*-dt+mt*-ht-gt*-Mt,te[2]=mt*ft+Dt*-Mt+gt*-dt-xt*-ht,te},vec4$1.forEach=function(){var te=vec4$1.create();return function(ee,ne,xe,it,ut,ht){var dt,Mt;for(ne||(ne=4),xe||(xe=0),it?Mt=Math.min(it*ne+xe,ee.length):Mt=ee.length,dt=xe;dt<Mt;dt+=ne)te[0]=ee[dt],te[1]=ee[dt+1],te[2]=ee[dt+2],te[3]=ee[dt+3],ut(te,te,ht),ee[dt]=te[0],ee[dt+1]=te[1],ee[dt+2]=te[2],ee[dt+3]=te[3];return ee}}();var mat3$1={};mat3$1.create=function(){var te=new GLMAT_ARRAY_TYPE(9);return te[0]=1,te[1]=0,te[2]=0,te[3]=0,te[4]=1,te[5]=0,te[6]=0,te[7]=0,te[8]=1,te},mat3$1.fromMat4=function(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te[3]=ee[4],te[4]=ee[5],te[5]=ee[6],te[6]=ee[8],te[7]=ee[9],te[8]=ee[10],te},mat3$1.clone=function(te){var ee=new GLMAT_ARRAY_TYPE(9);return ee[0]=te[0],ee[1]=te[1],ee[2]=te[2],ee[3]=te[3],ee[4]=te[4],ee[5]=te[5],ee[6]=te[6],ee[7]=te[7],ee[8]=te[8],ee},mat3$1.copy=function(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te[3]=ee[3],te[4]=ee[4],te[5]=ee[5],te[6]=ee[6],te[7]=ee[7],te[8]=ee[8],te},mat3$1.identity=function(te){return te[0]=1,te[1]=0,te[2]=0,te[3]=0,te[4]=1,te[5]=0,te[6]=0,te[7]=0,te[8]=1,te},mat3$1.transpose=function(te,ee){if(te===ee){var ne=ee[1],xe=ee[2],it=ee[5];te[1]=ee[3],te[2]=ee[6],te[3]=ne,te[5]=ee[7],te[6]=xe,te[7]=it}else te[0]=ee[0],te[1]=ee[3],te[2]=ee[6],te[3]=ee[1],te[4]=ee[4],te[5]=ee[7],te[6]=ee[2],te[7]=ee[5],te[8]=ee[8];return te},mat3$1.invert=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ee[4],dt=ee[5],Mt=ee[6],ft=ee[7],gt=ee[8],xt=gt*ht-dt*ft,mt=-gt*ut+dt*Mt,Dt=ft*ut-ht*Mt,yt=ne*xt+xe*mt+it*Dt;return yt?(yt=1/yt,te[0]=xt*yt,te[1]=(-gt*xe+it*ft)*yt,te[2]=(dt*xe-it*ht)*yt,te[3]=mt*yt,te[4]=(gt*ne-it*Mt)*yt,te[5]=(-dt*ne+it*ut)*yt,te[6]=Dt*yt,te[7]=(-ft*ne+xe*Mt)*yt,te[8]=(ht*ne-xe*ut)*yt,te):null},mat3$1.adjoint=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ee[4],dt=ee[5],Mt=ee[6],ft=ee[7],gt=ee[8];return te[0]=ht*gt-dt*ft,te[1]=it*ft-xe*gt,te[2]=xe*dt-it*ht,te[3]=dt*Mt-ut*gt,te[4]=ne*gt-it*Mt,te[5]=it*ut-ne*dt,te[6]=ut*ft-ht*Mt,te[7]=xe*Mt-ne*ft,te[8]=ne*ht-xe*ut,te},mat3$1.determinant=function(te){var ee=te[0],ne=te[1],xe=te[2],it=te[3],ut=te[4],ht=te[5],dt=te[6],Mt=te[7],ft=te[8];return ee*(ft*ut-ht*Mt)+ne*(-ft*it+ht*dt)+xe*(Mt*it-ut*dt)},mat3$1.multiply=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=ee[4],Mt=ee[5],ft=ee[6],gt=ee[7],xt=ee[8],mt=ne[0],Dt=ne[1],yt=ne[2],wt=ne[3],At=ne[4],Lt=ne[5],bt=ne[6],vt=ne[7],Qt=ne[8];return te[0]=mt*xe+Dt*ht+yt*ft,te[1]=mt*it+Dt*dt+yt*gt,te[2]=mt*ut+Dt*Mt+yt*xt,te[3]=wt*xe+At*ht+Lt*ft,te[4]=wt*it+At*dt+Lt*gt,te[5]=wt*ut+At*Mt+Lt*xt,te[6]=bt*xe+vt*ht+Qt*ft,te[7]=bt*it+vt*dt+Qt*gt,te[8]=bt*ut+vt*Mt+Qt*xt,te},mat3$1.mul=mat3$1.multiply,mat3$1.translate=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=ee[4],Mt=ee[5],ft=ee[6],gt=ee[7],xt=ee[8],mt=ne[0],Dt=ne[1];return te[0]=xe,te[1]=it,te[2]=ut,te[3]=ht,te[4]=dt,te[5]=Mt,te[6]=mt*xe+Dt*ht+ft,te[7]=mt*it+Dt*dt+gt,te[8]=mt*ut+Dt*Mt+xt,te},mat3$1.rotate=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=ee[4],Mt=ee[5],ft=ee[6],gt=ee[7],xt=ee[8],mt=Math.sin(ne),Dt=Math.cos(ne);return te[0]=Dt*xe+mt*ht,te[1]=Dt*it+mt*dt,te[2]=Dt*ut+mt*Mt,te[3]=Dt*ht-mt*xe,te[4]=Dt*dt-mt*it,te[5]=Dt*Mt-mt*ut,te[6]=ft,te[7]=gt,te[8]=xt,te},mat3$1.scale=function(te,ee,ne){var xe=ne[0],it=ne[1];return te[0]=xe*ee[0],te[1]=xe*ee[1],te[2]=xe*ee[2],te[3]=it*ee[3],te[4]=it*ee[4],te[5]=it*ee[5],te[6]=ee[6],te[7]=ee[7],te[8]=ee[8],te},mat3$1.fromMat2d=function(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=0,te[3]=ee[2],te[4]=ee[3],te[5]=0,te[6]=ee[4],te[7]=ee[5],te[8]=1,te},mat3$1.fromQuat=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ne+ne,dt=xe+xe,Mt=it+it,ft=ne*ht,gt=xe*ht,xt=xe*dt,mt=it*ht,Dt=it*dt,yt=it*Mt,wt=ut*ht,At=ut*dt,Lt=ut*Mt;return te[0]=1-xt-yt,te[3]=gt-Lt,te[6]=mt+At,te[1]=gt+Lt,te[4]=1-ft-yt,te[7]=Dt-wt,te[2]=mt-At,te[5]=Dt+wt,te[8]=1-ft-xt,te},mat3$1.normalFromMat4=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ee[4],dt=ee[5],Mt=ee[6],ft=ee[7],gt=ee[8],xt=ee[9],mt=ee[10],Dt=ee[11],yt=ee[12],wt=ee[13],At=ee[14],Lt=ee[15],bt=ne*dt-xe*ht,vt=ne*Mt-it*ht,Qt=ne*ft-ut*ht,Ct=xe*Mt-it*dt,Ut=xe*ft-ut*dt,Rt=it*ft-ut*Mt,Ft=gt*wt-xt*yt,Gt=gt*At-mt*yt,_t=gt*Lt-Dt*yt,Pt=xt*At-mt*wt,Ot=xt*Lt-Dt*wt,zt=mt*Lt-Dt*At,Xt=bt*zt-vt*Ot+Qt*Pt+Ct*_t-Ut*Gt+Rt*Ft;return Xt?(Xt=1/Xt,te[0]=(dt*zt-Mt*Ot+ft*Pt)*Xt,te[1]=(Mt*_t-ht*zt-ft*Gt)*Xt,te[2]=(ht*Ot-dt*_t+ft*Ft)*Xt,te[3]=(it*Ot-xe*zt-ut*Pt)*Xt,te[4]=(ne*zt-it*_t+ut*Gt)*Xt,te[5]=(xe*_t-ne*Ot-ut*Ft)*Xt,te[6]=(wt*Rt-At*Ut+Lt*Ct)*Xt,te[7]=(At*Qt-yt*Rt-Lt*vt)*Xt,te[8]=(yt*Ut-wt*Qt+Lt*bt)*Xt,te):null},mat3$1.frob=function(te){return Math.sqrt(Math.pow(te[0],2)+Math.pow(te[1],2)+Math.pow(te[2],2)+Math.pow(te[3],2)+Math.pow(te[4],2)+Math.pow(te[5],2)+Math.pow(te[6],2)+Math.pow(te[7],2)+Math.pow(te[8],2))};var quat={};quat.create=function(){var te=new GLMAT_ARRAY_TYPE(4);return te[0]=0,te[1]=0,te[2]=0,te[3]=1,te},quat.rotationTo=function(){var te=vec3$f.create(),ee=vec3$f.fromValues(1,0,0),ne=vec3$f.fromValues(0,1,0);return function(xe,it,ut){var ht=vec3$f.dot(it,ut);return ht<-.999999?(vec3$f.cross(te,ee,it),vec3$f.length(te)<1e-6&&vec3$f.cross(te,ne,it),vec3$f.normalize(te,te),quat.setAxisAngle(xe,te,Math.PI),xe):ht>.999999?(xe[0]=0,xe[1]=0,xe[2]=0,xe[3]=1,xe):(vec3$f.cross(te,it,ut),xe[0]=te[0],xe[1]=te[1],xe[2]=te[2],xe[3]=1+ht,quat.normalize(xe,xe))}}(),quat.setAxes=function(){var te=mat3$1.create();return function(ee,ne,xe,it){return te[0]=xe[0],te[3]=xe[1],te[6]=xe[2],te[1]=it[0],te[4]=it[1],te[7]=it[2],te[2]=-ne[0],te[5]=-ne[1],te[8]=-ne[2],quat.normalize(ee,quat.fromMat3(ee,te))}}(),quat.clone=vec4$1.clone,quat.fromValues=vec4$1.fromValues,quat.copy=vec4$1.copy,quat.set=vec4$1.set,quat.identity=function(te){return te[0]=0,te[1]=0,te[2]=0,te[3]=1,te},quat.setAxisAngle=function(te,ee,ne){ne=ne*.5;var xe=Math.sin(ne);return te[0]=xe*ee[0],te[1]=xe*ee[1],te[2]=xe*ee[2],te[3]=Math.cos(ne),te},quat.add=vec4$1.add,quat.multiply=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=ne[0],Mt=ne[1],ft=ne[2],gt=ne[3];return te[0]=xe*gt+ht*dt+it*ft-ut*Mt,te[1]=it*gt+ht*Mt+ut*dt-xe*ft,te[2]=ut*gt+ht*ft+xe*Mt-it*dt,te[3]=ht*gt-xe*dt-it*Mt-ut*ft,te},quat.mul=quat.multiply,quat.scale=vec4$1.scale,quat.rotateX=function(te,ee,ne){ne*=.5;var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=Math.sin(ne),Mt=Math.cos(ne);return te[0]=xe*Mt+ht*dt,te[1]=it*Mt+ut*dt,te[2]=ut*Mt-it*dt,te[3]=ht*Mt-xe*dt,te},quat.rotateY=function(te,ee,ne){ne*=.5;var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=Math.sin(ne),Mt=Math.cos(ne);return te[0]=xe*Mt-ut*dt,te[1]=it*Mt+ht*dt,te[2]=ut*Mt+xe*dt,te[3]=ht*Mt-it*dt,te},quat.rotateZ=function(te,ee,ne){ne*=.5;var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=Math.sin(ne),Mt=Math.cos(ne);return te[0]=xe*Mt+it*dt,te[1]=it*Mt-xe*dt,te[2]=ut*Mt+ht*dt,te[3]=ht*Mt-ut*dt,te},quat.calculateW=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2];return te[0]=ne,te[1]=xe,te[2]=it,te[3]=Math.sqrt(Math.abs(1-ne*ne-xe*xe-it*it)),te},quat.dot=vec4$1.dot,quat.lerp=vec4$1.lerp,quat.slerp=function(te,ee,ne,xe){var it=ee[0],ut=ee[1],ht=ee[2],dt=ee[3],Mt=ne[0],ft=ne[1],gt=ne[2],xt=ne[3],mt,Dt,yt,wt,At;return Dt=it*Mt+ut*ft+ht*gt+dt*xt,Dt<0&&(Dt=-Dt,Mt=-Mt,ft=-ft,gt=-gt,xt=-xt),1-Dt>1e-6?(mt=Math.acos(Dt),yt=Math.sin(mt),wt=Math.sin((1-xe)*mt)/yt,At=Math.sin(xe*mt)/yt):(wt=1-xe,At=xe),te[0]=wt*it+At*Mt,te[1]=wt*ut+At*ft,te[2]=wt*ht+At*gt,te[3]=wt*dt+At*xt,te},quat.invert=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ne*ne+xe*xe+it*it+ut*ut,dt=ht?1/ht:0;return te[0]=-ne*dt,te[1]=-xe*dt,te[2]=-it*dt,te[3]=ut*dt,te},quat.conjugate=function(te,ee){return te[0]=-ee[0],te[1]=-ee[1],te[2]=-ee[2],te[3]=ee[3],te},quat.length=vec4$1.length,quat.len=quat.length,quat.squaredLength=vec4$1.squaredLength,quat.sqrLen=quat.squaredLength,quat.normalize=vec4$1.normalize,quat.fromMat3=function(te,ee){var ne=ee[0]+ee[4]+ee[8],xe;if(ne>0)xe=Math.sqrt(ne+1),te[3]=.5*xe,xe=.5/xe,te[0]=(ee[5]-ee[7])*xe,te[1]=(ee[6]-ee[2])*xe,te[2]=(ee[1]-ee[3])*xe;else{var it=0;ee[4]>ee[0]&&(it=1),ee[8]>ee[it*3+it]&&(it=2);var ut=(it+1)%3,ht=(it+2)%3;xe=Math.sqrt(ee[it*3+it]-ee[ut*3+ut]-ee[ht*3+ht]+1),te[it]=.5*xe,xe=.5/xe,te[3]=(ee[ut*3+ht]-ee[ht*3+ut])*xe,te[ut]=(ee[ut*3+it]+ee[it*3+ut])*xe,te[ht]=(ee[ht*3+it]+ee[it*3+ht])*xe}return te};var Quaternion$1=function(te,ee,ne,xe){te=te||0,ee=ee||0,ne=ne||0,xe=xe===void 0?1:xe,this.array=quat.fromValues(te,ee,ne,xe),this._dirty=!0};Quaternion$1.prototype={constructor:Quaternion$1,add:function(te){return quat.add(this.array,this.array,te.array),this._dirty=!0,this},calculateW:function(){return quat.calculateW(this.array,this.array),this._dirty=!0,this},set:function(te,ee,ne,xe){return this.array[0]=te,this.array[1]=ee,this.array[2]=ne,this.array[3]=xe,this._dirty=!0,this},setArray:function(te){return this.array[0]=te[0],this.array[1]=te[1],this.array[2]=te[2],this.array[3]=te[3],this._dirty=!0,this},clone:function(){return new Quaternion$1(this.x,this.y,this.z,this.w)},conjugate:function(){return quat.conjugate(this.array,this.array),this._dirty=!0,this},copy:function(te){return quat.copy(this.array,te.array),this._dirty=!0,this},dot:function(te){return quat.dot(this.array,te.array)},fromMat3:function(te){return quat.fromMat3(this.array,te.array),this._dirty=!0,this},fromMat4:function(){var te=mat3$1.create();return function(ee){return mat3$1.fromMat4(te,ee.array),mat3$1.transpose(te,te),quat.fromMat3(this.array,te),this._dirty=!0,this}}(),identity:function(){return quat.identity(this.array),this._dirty=!0,this},invert:function(){return quat.invert(this.array,this.array),this._dirty=!0,this},len:function(){return quat.len(this.array)},length:function(){return quat.length(this.array)},lerp:function(te,ee,ne){return quat.lerp(this.array,te.array,ee.array,ne),this._dirty=!0,this},mul:function(te){return quat.mul(this.array,this.array,te.array),this._dirty=!0,this},mulLeft:function(te){return quat.multiply(this.array,te.array,this.array),this._dirty=!0,this},multiply:function(te){return quat.multiply(this.array,this.array,te.array),this._dirty=!0,this},multiplyLeft:function(te){return quat.multiply(this.array,te.array,this.array),this._dirty=!0,this},normalize:function(){return quat.normalize(this.array,this.array),this._dirty=!0,this},rotateX:function(te){return quat.rotateX(this.array,this.array,te),this._dirty=!0,this},rotateY:function(te){return quat.rotateY(this.array,this.array,te),this._dirty=!0,this},rotateZ:function(te){return quat.rotateZ(this.array,this.array,te),this._dirty=!0,this},rotationTo:function(te,ee){return quat.rotationTo(this.array,te.array,ee.array),this._dirty=!0,this},setAxes:function(te,ee,ne){return quat.setAxes(this.array,te.array,ee.array,ne.array),this._dirty=!0,this},setAxisAngle:function(te,ee){return quat.setAxisAngle(this.array,te.array,ee),this._dirty=!0,this},slerp:function(te,ee,ne){return quat.slerp(this.array,te.array,ee.array,ne),this._dirty=!0,this},sqrLen:function(){return quat.sqrLen(this.array)},squaredLength:function(){return quat.squaredLength(this.array)},fromEuler:function(te,ee){return Quaternion$1.fromEuler(this,te,ee)},toString:function(){return"["+Array.prototype.join.call(this.array,",")+"]"},toArray:function(){return Array.prototype.slice.call(this.array)}};var defineProperty$4=Object.defineProperty;if(defineProperty$4){var proto$3=Quaternion$1.prototype;defineProperty$4(proto$3,"x",{get:function(){return this.array[0]},set:function(te){this.array[0]=te,this._dirty=!0}}),defineProperty$4(proto$3,"y",{get:function(){return this.array[1]},set:function(te){this.array[1]=te,this._dirty=!0}}),defineProperty$4(proto$3,"z",{get:function(){return this.array[2]},set:function(te){this.array[2]=te,this._dirty=!0}}),defineProperty$4(proto$3,"w",{get:function(){return this.array[3]},set:function(te){this.array[3]=te,this._dirty=!0}})}Quaternion$1.add=function(te,ee,ne){return quat.add(te.array,ee.array,ne.array),te._dirty=!0,te},Quaternion$1.set=function(te,ee,ne,xe,it){quat.set(te.array,ee,ne,xe,it),te._dirty=!0},Quaternion$1.copy=function(te,ee){return quat.copy(te.array,ee.array),te._dirty=!0,te},Quaternion$1.calculateW=function(te,ee){return quat.calculateW(te.array,ee.array),te._dirty=!0,te},Quaternion$1.conjugate=function(te,ee){return quat.conjugate(te.array,ee.array),te._dirty=!0,te},Quaternion$1.identity=function(te){return quat.identity(te.array),te._dirty=!0,te},Quaternion$1.invert=function(te,ee){return quat.invert(te.array,ee.array),te._dirty=!0,te},Quaternion$1.dot=function(te,ee){return quat.dot(te.array,ee.array)},Quaternion$1.len=function(te){return quat.length(te.array)},Quaternion$1.lerp=function(te,ee,ne,xe){return quat.lerp(te.array,ee.array,ne.array,xe),te._dirty=!0,te},Quaternion$1.slerp=function(te,ee,ne,xe){return quat.slerp(te.array,ee.array,ne.array,xe),te._dirty=!0,te},Quaternion$1.mul=function(te,ee,ne){return quat.multiply(te.array,ee.array,ne.array),te._dirty=!0,te},Quaternion$1.multiply=Quaternion$1.mul,Quaternion$1.rotateX=function(te,ee,ne){return quat.rotateX(te.array,ee.array,ne),te._dirty=!0,te},Quaternion$1.rotateY=function(te,ee,ne){return quat.rotateY(te.array,ee.array,ne),te._dirty=!0,te},Quaternion$1.rotateZ=function(te,ee,ne){return quat.rotateZ(te.array,ee.array,ne),te._dirty=!0,te},Quaternion$1.setAxisAngle=function(te,ee,ne){return quat.setAxisAngle(te.array,ee.array,ne),te._dirty=!0,te},Quaternion$1.normalize=function(te,ee){return quat.normalize(te.array,ee.array),te._dirty=!0,te},Quaternion$1.sqrLen=function(te){return quat.sqrLen(te.array)},Quaternion$1.squaredLength=Quaternion$1.sqrLen,Quaternion$1.fromMat3=function(te,ee){return quat.fromMat3(te.array,ee.array),te._dirty=!0,te},Quaternion$1.setAxes=function(te,ee,ne,xe){return quat.setAxes(te.array,ee.array,ne.array,xe.array),te._dirty=!0,te},Quaternion$1.rotationTo=function(te,ee,ne){return quat.rotationTo(te.array,ee.array,ne.array),te._dirty=!0,te},Quaternion$1.fromEuler=function(te,ee,gt){te._dirty=!0,ee=ee.array;var xe=te.array,it=Math.cos(ee[0]/2),ut=Math.cos(ee[1]/2),ht=Math.cos(ee[2]/2),dt=Math.sin(ee[0]/2),Mt=Math.sin(ee[1]/2),ft=Math.sin(ee[2]/2),gt=(gt||"XYZ").toUpperCase();switch(gt){case"XYZ":xe[0]=dt*ut*ht+it*Mt*ft,xe[1]=it*Mt*ht-dt*ut*ft,xe[2]=it*ut*ft+dt*Mt*ht,xe[3]=it*ut*ht-dt*Mt*ft;break;case"YXZ":xe[0]=dt*ut*ht+it*Mt*ft,xe[1]=it*Mt*ht-dt*ut*ft,xe[2]=it*ut*ft-dt*Mt*ht,xe[3]=it*ut*ht+dt*Mt*ft;break;case"ZXY":xe[0]=dt*ut*ht-it*Mt*ft,xe[1]=it*Mt*ht+dt*ut*ft,xe[2]=it*ut*ft+dt*Mt*ht,xe[3]=it*ut*ht-dt*Mt*ft;break;case"ZYX":xe[0]=dt*ut*ht-it*Mt*ft,xe[1]=it*Mt*ht+dt*ut*ft,xe[2]=it*ut*ft-dt*Mt*ht,xe[3]=it*ut*ht+dt*Mt*ft;break;case"YZX":xe[0]=dt*ut*ht+it*Mt*ft,xe[1]=it*Mt*ht+dt*ut*ft,xe[2]=it*ut*ft-dt*Mt*ht,xe[3]=it*ut*ht-dt*Mt*ft;break;case"XZY":xe[0]=dt*ut*ht-it*Mt*ft,xe[1]=it*Mt*ht-dt*ut*ft,xe[2]=it*ut*ft+dt*Mt*ht,xe[3]=it*ut*ht+dt*Mt*ft;break}};var mat4$2={};mat4$2.create=function(){var te=new GLMAT_ARRAY_TYPE(16);return te[0]=1,te[1]=0,te[2]=0,te[3]=0,te[4]=0,te[5]=1,te[6]=0,te[7]=0,te[8]=0,te[9]=0,te[10]=1,te[11]=0,te[12]=0,te[13]=0,te[14]=0,te[15]=1,te},mat4$2.clone=function(te){var ee=new GLMAT_ARRAY_TYPE(16);return ee[0]=te[0],ee[1]=te[1],ee[2]=te[2],ee[3]=te[3],ee[4]=te[4],ee[5]=te[5],ee[6]=te[6],ee[7]=te[7],ee[8]=te[8],ee[9]=te[9],ee[10]=te[10],ee[11]=te[11],ee[12]=te[12],ee[13]=te[13],ee[14]=te[14],ee[15]=te[15],ee},mat4$2.copy=function(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te[3]=ee[3],te[4]=ee[4],te[5]=ee[5],te[6]=ee[6],te[7]=ee[7],te[8]=ee[8],te[9]=ee[9],te[10]=ee[10],te[11]=ee[11],te[12]=ee[12],te[13]=ee[13],te[14]=ee[14],te[15]=ee[15],te},mat4$2.identity=function(te){return te[0]=1,te[1]=0,te[2]=0,te[3]=0,te[4]=0,te[5]=1,te[6]=0,te[7]=0,te[8]=0,te[9]=0,te[10]=1,te[11]=0,te[12]=0,te[13]=0,te[14]=0,te[15]=1,te},mat4$2.transpose=function(te,ee){if(te===ee){var ne=ee[1],xe=ee[2],it=ee[3],ut=ee[6],ht=ee[7],dt=ee[11];te[1]=ee[4],te[2]=ee[8],te[3]=ee[12],te[4]=ne,te[6]=ee[9],te[7]=ee[13],te[8]=xe,te[9]=ut,te[11]=ee[14],te[12]=it,te[13]=ht,te[14]=dt}else te[0]=ee[0],te[1]=ee[4],te[2]=ee[8],te[3]=ee[12],te[4]=ee[1],te[5]=ee[5],te[6]=ee[9],te[7]=ee[13],te[8]=ee[2],te[9]=ee[6],te[10]=ee[10],te[11]=ee[14],te[12]=ee[3],te[13]=ee[7],te[14]=ee[11],te[15]=ee[15];return te},mat4$2.invert=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ee[4],dt=ee[5],Mt=ee[6],ft=ee[7],gt=ee[8],xt=ee[9],mt=ee[10],Dt=ee[11],yt=ee[12],wt=ee[13],At=ee[14],Lt=ee[15],bt=ne*dt-xe*ht,vt=ne*Mt-it*ht,Qt=ne*ft-ut*ht,Ct=xe*Mt-it*dt,Ut=xe*ft-ut*dt,Rt=it*ft-ut*Mt,Ft=gt*wt-xt*yt,Gt=gt*At-mt*yt,_t=gt*Lt-Dt*yt,Pt=xt*At-mt*wt,Ot=xt*Lt-Dt*wt,zt=mt*Lt-Dt*At,Xt=bt*zt-vt*Ot+Qt*Pt+Ct*_t-Ut*Gt+Rt*Ft;return Xt?(Xt=1/Xt,te[0]=(dt*zt-Mt*Ot+ft*Pt)*Xt,te[1]=(it*Ot-xe*zt-ut*Pt)*Xt,te[2]=(wt*Rt-At*Ut+Lt*Ct)*Xt,te[3]=(mt*Ut-xt*Rt-Dt*Ct)*Xt,te[4]=(Mt*_t-ht*zt-ft*Gt)*Xt,te[5]=(ne*zt-it*_t+ut*Gt)*Xt,te[6]=(At*Qt-yt*Rt-Lt*vt)*Xt,te[7]=(gt*Rt-mt*Qt+Dt*vt)*Xt,te[8]=(ht*Ot-dt*_t+ft*Ft)*Xt,te[9]=(xe*_t-ne*Ot-ut*Ft)*Xt,te[10]=(yt*Ut-wt*Qt+Lt*bt)*Xt,te[11]=(xt*Qt-gt*Ut-Dt*bt)*Xt,te[12]=(dt*Gt-ht*Pt-Mt*Ft)*Xt,te[13]=(ne*Pt-xe*Gt+it*Ft)*Xt,te[14]=(wt*vt-yt*Ct-At*bt)*Xt,te[15]=(gt*Ct-xt*vt+mt*bt)*Xt,te):null},mat4$2.adjoint=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ee[4],dt=ee[5],Mt=ee[6],ft=ee[7],gt=ee[8],xt=ee[9],mt=ee[10],Dt=ee[11],yt=ee[12],wt=ee[13],At=ee[14],Lt=ee[15];return te[0]=dt*(mt*Lt-Dt*At)-xt*(Mt*Lt-ft*At)+wt*(Mt*Dt-ft*mt),te[1]=-(xe*(mt*Lt-Dt*At)-xt*(it*Lt-ut*At)+wt*(it*Dt-ut*mt)),te[2]=xe*(Mt*Lt-ft*At)-dt*(it*Lt-ut*At)+wt*(it*ft-ut*Mt),te[3]=-(xe*(Mt*Dt-ft*mt)-dt*(it*Dt-ut*mt)+xt*(it*ft-ut*Mt)),te[4]=-(ht*(mt*Lt-Dt*At)-gt*(Mt*Lt-ft*At)+yt*(Mt*Dt-ft*mt)),te[5]=ne*(mt*Lt-Dt*At)-gt*(it*Lt-ut*At)+yt*(it*Dt-ut*mt),te[6]=-(ne*(Mt*Lt-ft*At)-ht*(it*Lt-ut*At)+yt*(it*ft-ut*Mt)),te[7]=ne*(Mt*Dt-ft*mt)-ht*(it*Dt-ut*mt)+gt*(it*ft-ut*Mt),te[8]=ht*(xt*Lt-Dt*wt)-gt*(dt*Lt-ft*wt)+yt*(dt*Dt-ft*xt),te[9]=-(ne*(xt*Lt-Dt*wt)-gt*(xe*Lt-ut*wt)+yt*(xe*Dt-ut*xt)),te[10]=ne*(dt*Lt-ft*wt)-ht*(xe*Lt-ut*wt)+yt*(xe*ft-ut*dt),te[11]=-(ne*(dt*Dt-ft*xt)-ht*(xe*Dt-ut*xt)+gt*(xe*ft-ut*dt)),te[12]=-(ht*(xt*At-mt*wt)-gt*(dt*At-Mt*wt)+yt*(dt*mt-Mt*xt)),te[13]=ne*(xt*At-mt*wt)-gt*(xe*At-it*wt)+yt*(xe*mt-it*xt),te[14]=-(ne*(dt*At-Mt*wt)-ht*(xe*At-it*wt)+yt*(xe*Mt-it*dt)),te[15]=ne*(dt*mt-Mt*xt)-ht*(xe*mt-it*xt)+gt*(xe*Mt-it*dt),te},mat4$2.determinant=function(te){var ee=te[0],ne=te[1],xe=te[2],it=te[3],ut=te[4],ht=te[5],dt=te[6],Mt=te[7],ft=te[8],gt=te[9],xt=te[10],mt=te[11],Dt=te[12],yt=te[13],wt=te[14],At=te[15],Lt=ee*ht-ne*ut,bt=ee*dt-xe*ut,vt=ee*Mt-it*ut,Qt=ne*dt-xe*ht,Ct=ne*Mt-it*ht,Ut=xe*Mt-it*dt,Rt=ft*yt-gt*Dt,Ft=ft*wt-xt*Dt,Gt=ft*At-mt*Dt,_t=gt*wt-xt*yt,Pt=gt*At-mt*yt,Ot=xt*At-mt*wt;return Lt*Ot-bt*Pt+vt*_t+Qt*Gt-Ct*Ft+Ut*Rt},mat4$2.multiply=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=ee[4],Mt=ee[5],ft=ee[6],gt=ee[7],xt=ee[8],mt=ee[9],Dt=ee[10],yt=ee[11],wt=ee[12],At=ee[13],Lt=ee[14],bt=ee[15],vt=ne[0],Qt=ne[1],Ct=ne[2],Ut=ne[3];return te[0]=vt*xe+Qt*dt+Ct*xt+Ut*wt,te[1]=vt*it+Qt*Mt+Ct*mt+Ut*At,te[2]=vt*ut+Qt*ft+Ct*Dt+Ut*Lt,te[3]=vt*ht+Qt*gt+Ct*yt+Ut*bt,vt=ne[4],Qt=ne[5],Ct=ne[6],Ut=ne[7],te[4]=vt*xe+Qt*dt+Ct*xt+Ut*wt,te[5]=vt*it+Qt*Mt+Ct*mt+Ut*At,te[6]=vt*ut+Qt*ft+Ct*Dt+Ut*Lt,te[7]=vt*ht+Qt*gt+Ct*yt+Ut*bt,vt=ne[8],Qt=ne[9],Ct=ne[10],Ut=ne[11],te[8]=vt*xe+Qt*dt+Ct*xt+Ut*wt,te[9]=vt*it+Qt*Mt+Ct*mt+Ut*At,te[10]=vt*ut+Qt*ft+Ct*Dt+Ut*Lt,te[11]=vt*ht+Qt*gt+Ct*yt+Ut*bt,vt=ne[12],Qt=ne[13],Ct=ne[14],Ut=ne[15],te[12]=vt*xe+Qt*dt+Ct*xt+Ut*wt,te[13]=vt*it+Qt*Mt+Ct*mt+Ut*At,te[14]=vt*ut+Qt*ft+Ct*Dt+Ut*Lt,te[15]=vt*ht+Qt*gt+Ct*yt+Ut*bt,te},mat4$2.multiplyAffine=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[4],dt=ee[5],Mt=ee[6],ft=ee[8],gt=ee[9],xt=ee[10],mt=ee[12],Dt=ee[13],yt=ee[14],wt=ne[0],At=ne[1],Lt=ne[2];return te[0]=wt*xe+At*ht+Lt*ft,te[1]=wt*it+At*dt+Lt*gt,te[2]=wt*ut+At*Mt+Lt*xt,wt=ne[4],At=ne[5],Lt=ne[6],te[4]=wt*xe+At*ht+Lt*ft,te[5]=wt*it+At*dt+Lt*gt,te[6]=wt*ut+At*Mt+Lt*xt,wt=ne[8],At=ne[9],Lt=ne[10],te[8]=wt*xe+At*ht+Lt*ft,te[9]=wt*it+At*dt+Lt*gt,te[10]=wt*ut+At*Mt+Lt*xt,wt=ne[12],At=ne[13],Lt=ne[14],te[12]=wt*xe+At*ht+Lt*ft+mt,te[13]=wt*it+At*dt+Lt*gt+Dt,te[14]=wt*ut+At*Mt+Lt*xt+yt,te},mat4$2.mul=mat4$2.multiply,mat4$2.mulAffine=mat4$2.multiplyAffine,mat4$2.translate=function(te,ee,ne){var xe=ne[0],it=ne[1],ut=ne[2],ht,dt,Mt,ft,gt,xt,mt,Dt,yt,wt,At,Lt;return ee===te?(te[12]=ee[0]*xe+ee[4]*it+ee[8]*ut+ee[12],te[13]=ee[1]*xe+ee[5]*it+ee[9]*ut+ee[13],te[14]=ee[2]*xe+ee[6]*it+ee[10]*ut+ee[14],te[15]=ee[3]*xe+ee[7]*it+ee[11]*ut+ee[15]):(ht=ee[0],dt=ee[1],Mt=ee[2],ft=ee[3],gt=ee[4],xt=ee[5],mt=ee[6],Dt=ee[7],yt=ee[8],wt=ee[9],At=ee[10],Lt=ee[11],te[0]=ht,te[1]=dt,te[2]=Mt,te[3]=ft,te[4]=gt,te[5]=xt,te[6]=mt,te[7]=Dt,te[8]=yt,te[9]=wt,te[10]=At,te[11]=Lt,te[12]=ht*xe+gt*it+yt*ut+ee[12],te[13]=dt*xe+xt*it+wt*ut+ee[13],te[14]=Mt*xe+mt*it+At*ut+ee[14],te[15]=ft*xe+Dt*it+Lt*ut+ee[15]),te},mat4$2.scale=function(te,ee,ne){var xe=ne[0],it=ne[1],ut=ne[2];return te[0]=ee[0]*xe,te[1]=ee[1]*xe,te[2]=ee[2]*xe,te[3]=ee[3]*xe,te[4]=ee[4]*it,te[5]=ee[5]*it,te[6]=ee[6]*it,te[7]=ee[7]*it,te[8]=ee[8]*ut,te[9]=ee[9]*ut,te[10]=ee[10]*ut,te[11]=ee[11]*ut,te[12]=ee[12],te[13]=ee[13],te[14]=ee[14],te[15]=ee[15],te},mat4$2.rotate=function(te,ee,ne,xe){var it=xe[0],ut=xe[1],ht=xe[2],dt=Math.sqrt(it*it+ut*ut+ht*ht),Mt,ft,gt,xt,mt,Dt,yt,wt,At,Lt,bt,vt,Qt,Ct,Ut,Rt,Ft,Gt,_t,Pt,Ot,zt,Xt,Zt;return Math.abs(dt)<GLMAT_EPSILON?null:(dt=1/dt,it*=dt,ut*=dt,ht*=dt,Mt=Math.sin(ne),ft=Math.cos(ne),gt=1-ft,xt=ee[0],mt=ee[1],Dt=ee[2],yt=ee[3],wt=ee[4],At=ee[5],Lt=ee[6],bt=ee[7],vt=ee[8],Qt=ee[9],Ct=ee[10],Ut=ee[11],Rt=it*it*gt+ft,Ft=ut*it*gt+ht*Mt,Gt=ht*it*gt-ut*Mt,_t=it*ut*gt-ht*Mt,Pt=ut*ut*gt+ft,Ot=ht*ut*gt+it*Mt,zt=it*ht*gt+ut*Mt,Xt=ut*ht*gt-it*Mt,Zt=ht*ht*gt+ft,te[0]=xt*Rt+wt*Ft+vt*Gt,te[1]=mt*Rt+At*Ft+Qt*Gt,te[2]=Dt*Rt+Lt*Ft+Ct*Gt,te[3]=yt*Rt+bt*Ft+Ut*Gt,te[4]=xt*_t+wt*Pt+vt*Ot,te[5]=mt*_t+At*Pt+Qt*Ot,te[6]=Dt*_t+Lt*Pt+Ct*Ot,te[7]=yt*_t+bt*Pt+Ut*Ot,te[8]=xt*zt+wt*Xt+vt*Zt,te[9]=mt*zt+At*Xt+Qt*Zt,te[10]=Dt*zt+Lt*Xt+Ct*Zt,te[11]=yt*zt+bt*Xt+Ut*Zt,ee!==te&&(te[12]=ee[12],te[13]=ee[13],te[14]=ee[14],te[15]=ee[15]),te)},mat4$2.rotateX=function(te,ee,ne){var xe=Math.sin(ne),it=Math.cos(ne),ut=ee[4],ht=ee[5],dt=ee[6],Mt=ee[7],ft=ee[8],gt=ee[9],xt=ee[10],mt=ee[11];return ee!==te&&(te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te[3]=ee[3],te[12]=ee[12],te[13]=ee[13],te[14]=ee[14],te[15]=ee[15]),te[4]=ut*it+ft*xe,te[5]=ht*it+gt*xe,te[6]=dt*it+xt*xe,te[7]=Mt*it+mt*xe,te[8]=ft*it-ut*xe,te[9]=gt*it-ht*xe,te[10]=xt*it-dt*xe,te[11]=mt*it-Mt*xe,te},mat4$2.rotateY=function(te,ee,ne){var xe=Math.sin(ne),it=Math.cos(ne),ut=ee[0],ht=ee[1],dt=ee[2],Mt=ee[3],ft=ee[8],gt=ee[9],xt=ee[10],mt=ee[11];return ee!==te&&(te[4]=ee[4],te[5]=ee[5],te[6]=ee[6],te[7]=ee[7],te[12]=ee[12],te[13]=ee[13],te[14]=ee[14],te[15]=ee[15]),te[0]=ut*it-ft*xe,te[1]=ht*it-gt*xe,te[2]=dt*it-xt*xe,te[3]=Mt*it-mt*xe,te[8]=ut*xe+ft*it,te[9]=ht*xe+gt*it,te[10]=dt*xe+xt*it,te[11]=Mt*xe+mt*it,te},mat4$2.rotateZ=function(te,ee,ne){var xe=Math.sin(ne),it=Math.cos(ne),ut=ee[0],ht=ee[1],dt=ee[2],Mt=ee[3],ft=ee[4],gt=ee[5],xt=ee[6],mt=ee[7];return ee!==te&&(te[8]=ee[8],te[9]=ee[9],te[10]=ee[10],te[11]=ee[11],te[12]=ee[12],te[13]=ee[13],te[14]=ee[14],te[15]=ee[15]),te[0]=ut*it+ft*xe,te[1]=ht*it+gt*xe,te[2]=dt*it+xt*xe,te[3]=Mt*it+mt*xe,te[4]=ft*it-ut*xe,te[5]=gt*it-ht*xe,te[6]=xt*it-dt*xe,te[7]=mt*it-Mt*xe,te},mat4$2.fromRotationTranslation=function(te,ee,ne){var xe=ee[0],it=ee[1],ut=ee[2],ht=ee[3],dt=xe+xe,Mt=it+it,ft=ut+ut,gt=xe*dt,xt=xe*Mt,mt=xe*ft,Dt=it*Mt,yt=it*ft,wt=ut*ft,At=ht*dt,Lt=ht*Mt,bt=ht*ft;return te[0]=1-(Dt+wt),te[1]=xt+bt,te[2]=mt-Lt,te[3]=0,te[4]=xt-bt,te[5]=1-(gt+wt),te[6]=yt+At,te[7]=0,te[8]=mt+Lt,te[9]=yt-At,te[10]=1-(gt+Dt),te[11]=0,te[12]=ne[0],te[13]=ne[1],te[14]=ne[2],te[15]=1,te},mat4$2.fromQuat=function(te,ee){var ne=ee[0],xe=ee[1],it=ee[2],ut=ee[3],ht=ne+ne,dt=xe+xe,Mt=it+it,ft=ne*ht,gt=xe*ht,xt=xe*dt,mt=it*ht,Dt=it*dt,yt=it*Mt,wt=ut*ht,At=ut*dt,Lt=ut*Mt;return te[0]=1-xt-yt,te[1]=gt+Lt,te[2]=mt-At,te[3]=0,te[4]=gt-Lt,te[5]=1-ft-yt,te[6]=Dt+wt,te[7]=0,te[8]=mt+At,te[9]=Dt-wt,te[10]=1-ft-xt,te[11]=0,te[12]=0,te[13]=0,te[14]=0,te[15]=1,te},mat4$2.frustum=function(te,ee,ne,xe,it,ut,ht){var dt=1/(ne-ee),Mt=1/(it-xe),ft=1/(ut-ht);return te[0]=ut*2*dt,te[1]=0,te[2]=0,te[3]=0,te[4]=0,te[5]=ut*2*Mt,te[6]=0,te[7]=0,te[8]=(ne+ee)*dt,te[9]=(it+xe)*Mt,te[10]=(ht+ut)*ft,te[11]=-1,te[12]=0,te[13]=0,te[14]=ht*ut*2*ft,te[15]=0,te},mat4$2.perspective=function(te,ee,ne,xe,it){var ut=1/Math.tan(ee/2),ht=1/(xe-it);return te[0]=ut/ne,te[1]=0,te[2]=0,te[3]=0,te[4]=0,te[5]=ut,te[6]=0,te[7]=0,te[8]=0,te[9]=0,te[10]=(it+xe)*ht,te[11]=-1,te[12]=0,te[13]=0,te[14]=2*it*xe*ht,te[15]=0,te},mat4$2.ortho=function(te,ee,ne,xe,it,ut,ht){var dt=1/(ee-ne),Mt=1/(xe-it),ft=1/(ut-ht);return te[0]=-2*dt,te[1]=0,te[2]=0,te[3]=0,te[4]=0,te[5]=-2*Mt,te[6]=0,te[7]=0,te[8]=0,te[9]=0,te[10]=2*ft,te[11]=0,te[12]=(ee+ne)*dt,te[13]=(it+xe)*Mt,te[14]=(ht+ut)*ft,te[15]=1,te},mat4$2.lookAt=function(te,ee,ne,xe){var it,ut,ht,dt,Mt,ft,gt,xt,mt,Dt,yt=ee[0],wt=ee[1],At=ee[2],Lt=xe[0],bt=xe[1],vt=xe[2],Qt=ne[0],Ct=ne[1],Ut=ne[2];return Math.abs(yt-Qt)<GLMAT_EPSILON&&Math.abs(wt-Ct)<GLMAT_EPSILON&&Math.abs(At-Ut)<GLMAT_EPSILON?mat4$2.identity(te):(gt=yt-Qt,xt=wt-Ct,mt=At-Ut,Dt=1/Math.sqrt(gt*gt+xt*xt+mt*mt),gt*=Dt,xt*=Dt,mt*=Dt,it=bt*mt-vt*xt,ut=vt*gt-Lt*mt,ht=Lt*xt-bt*gt,Dt=Math.sqrt(it*it+ut*ut+ht*ht),Dt?(Dt=1/Dt,it*=Dt,ut*=Dt,ht*=Dt):(it=0,ut=0,ht=0),dt=xt*ht-mt*ut,Mt=mt*it-gt*ht,ft=gt*ut-xt*it,Dt=Math.sqrt(dt*dt+Mt*Mt+ft*ft),Dt?(Dt=1/Dt,dt*=Dt,Mt*=Dt,ft*=Dt):(dt=0,Mt=0,ft=0),te[0]=it,te[1]=dt,te[2]=gt,te[3]=0,te[4]=ut,te[5]=Mt,te[6]=xt,te[7]=0,te[8]=ht,te[9]=ft,te[10]=mt,te[11]=0,te[12]=-(it*yt+ut*wt+ht*At),te[13]=-(dt*yt+Mt*wt+ft*At),te[14]=-(gt*yt+xt*wt+mt*At),te[15]=1,te)},mat4$2.frob=function(te){return Math.sqrt(Math.pow(te[0],2)+Math.pow(te[1],2)+Math.pow(te[2],2)+Math.pow(te[3],2)+Math.pow(te[4],2)+Math.pow(te[5],2)+Math.pow(te[6],2)+Math.pow(te[7],2)+Math.pow(te[8],2)+Math.pow(te[9],2)+Math.pow(te[10],2)+Math.pow(te[11],2)+Math.pow(te[12],2)+Math.pow(te[13],2)+Math.pow(te[14],2)+Math.pow(te[15],2))};var Matrix4$1=function(){this._axisX=new Vector3$1,this._axisY=new Vector3$1,this._axisZ=new Vector3$1,this.array=mat4$2.create(),this._dirty=!0};Matrix4$1.prototype={constructor:Matrix4$1,setArray:function(te){for(var ee=0;ee<this.array.length;ee++)this.array[ee]=te[ee];return this._dirty=!0,this},adjoint:function(){return mat4$2.adjoint(this.array,this.array),this._dirty=!0,this},clone:function(){return new Matrix4$1().copy(this)},copy:function(te){return mat4$2.copy(this.array,te.array),this._dirty=!0,this},determinant:function(){return mat4$2.determinant(this.array)},fromQuat:function(te){return mat4$2.fromQuat(this.array,te.array),this._dirty=!0,this},fromRotationTranslation:function(te,ee){return mat4$2.fromRotationTranslation(this.array,te.array,ee.array),this._dirty=!0,this},fromMat2d:function(te){return Matrix4$1.fromMat2d(this,te),this},frustum:function(te,ee,ne,xe,it,ut){return mat4$2.frustum(this.array,te,ee,ne,xe,it,ut),this._dirty=!0,this},identity:function(){return mat4$2.identity(this.array),this._dirty=!0,this},invert:function(){return mat4$2.invert(this.array,this.array),this._dirty=!0,this},lookAt:function(te,ee,ne){return mat4$2.lookAt(this.array,te.array,ee.array,ne.array),this._dirty=!0,this},mul:function(te){return mat4$2.mul(this.array,this.array,te.array),this._dirty=!0,this},mulLeft:function(te){return mat4$2.mul(this.array,te.array,this.array),this._dirty=!0,this},multiply:function(te){return mat4$2.multiply(this.array,this.array,te.array),this._dirty=!0,this},multiplyLeft:function(te){return mat4$2.multiply(this.array,te.array,this.array),this._dirty=!0,this},ortho:function(te,ee,ne,xe,it,ut){return mat4$2.ortho(this.array,te,ee,ne,xe,it,ut),this._dirty=!0,this},perspective:function(te,ee,ne,xe){return mat4$2.perspective(this.array,te,ee,ne,xe),this._dirty=!0,this},rotate:function(te,ee){return mat4$2.rotate(this.array,this.array,te,ee.array),this._dirty=!0,this},rotateX:function(te){return mat4$2.rotateX(this.array,this.array,te),this._dirty=!0,this},rotateY:function(te){return mat4$2.rotateY(this.array,this.array,te),this._dirty=!0,this},rotateZ:function(te){return mat4$2.rotateZ(this.array,this.array,te),this._dirty=!0,this},scale:function(te){return mat4$2.scale(this.array,this.array,te.array),this._dirty=!0,this},translate:function(te){return mat4$2.translate(this.array,this.array,te.array),this._dirty=!0,this},transpose:function(){return mat4$2.transpose(this.array,this.array),this._dirty=!0,this},decomposeMatrix:function(){var te=vec3$f.create(),ee=vec3$f.create(),ne=vec3$f.create(),xe=mat3$1.create();return function(it,ut,ht){var dt=this.array;vec3$f.set(te,dt[0],dt[1],dt[2]),vec3$f.set(ee,dt[4],dt[5],dt[6]),vec3$f.set(ne,dt[8],dt[9],dt[10]);var Mt=vec3$f.length(te),ft=vec3$f.length(ee),gt=vec3$f.length(ne),xt=this.determinant();xt<0&&(Mt=-Mt),it&&it.set(Mt,ft,gt),ht.set(dt[12],dt[13],dt[14]),mat3$1.fromMat4(xe,dt),xe[0]/=Mt,xe[1]/=Mt,xe[2]/=Mt,xe[3]/=ft,xe[4]/=ft,xe[5]/=ft,xe[6]/=gt,xe[7]/=gt,xe[8]/=gt,quat.fromMat3(ut.array,xe),quat.normalize(ut.array,ut.array),ut._dirty=!0,ht._dirty=!0}}(),toString:function(){return"["+Array.prototype.join.call(this.array,",")+"]"},toArray:function(){return Array.prototype.slice.call(this.array)}};var defineProperty$3=Object.defineProperty;if(defineProperty$3){var proto$2=Matrix4$1.prototype;defineProperty$3(proto$2,"z",{get:function(){var te=this.array;return this._axisZ.set(te[8],te[9],te[10]),this._axisZ},set:function(te){var ee=this.array;te=te.array,ee[8]=te[0],ee[9]=te[1],ee[10]=te[2],this._dirty=!0}}),defineProperty$3(proto$2,"y",{get:function(){var te=this.array;return this._axisY.set(te[4],te[5],te[6]),this._axisY},set:function(te){var ee=this.array;te=te.array,ee[4]=te[0],ee[5]=te[1],ee[6]=te[2],this._dirty=!0}}),defineProperty$3(proto$2,"x",{get:function(){var te=this.array;return this._axisX.set(te[0],te[1],te[2]),this._axisX},set:function(te){var ee=this.array;te=te.array,ee[0]=te[0],ee[1]=te[1],ee[2]=te[2],this._dirty=!0}})}Matrix4$1.adjoint=function(te,ee){return mat4$2.adjoint(te.array,ee.array),te._dirty=!0,te},Matrix4$1.copy=function(te,ee){return mat4$2.copy(te.array,ee.array),te._dirty=!0,te},Matrix4$1.determinant=function(te){return mat4$2.determinant(te.array)},Matrix4$1.identity=function(te){return mat4$2.identity(te.array),te._dirty=!0,te},Matrix4$1.ortho=function(te,ee,ne,xe,it,ut,ht){return mat4$2.ortho(te.array,ee,ne,xe,it,ut,ht),te._dirty=!0,te},Matrix4$1.perspective=function(te,ee,ne,xe,it){return mat4$2.perspective(te.array,ee,ne,xe,it),te._dirty=!0,te},Matrix4$1.lookAt=function(te,ee,ne,xe){return mat4$2.lookAt(te.array,ee.array,ne.array,xe.array),te._dirty=!0,te},Matrix4$1.invert=function(te,ee){return mat4$2.invert(te.array,ee.array),te._dirty=!0,te},Matrix4$1.mul=function(te,ee,ne){return mat4$2.mul(te.array,ee.array,ne.array),te._dirty=!0,te},Matrix4$1.multiply=Matrix4$1.mul,Matrix4$1.fromQuat=function(te,ee){return mat4$2.fromQuat(te.array,ee.array),te._dirty=!0,te},Matrix4$1.fromRotationTranslation=function(te,ee,ne){return mat4$2.fromRotationTranslation(te.array,ee.array,ne.array),te._dirty=!0,te},Matrix4$1.fromMat2d=function(xe,ne){xe._dirty=!0;var ne=ne.array,xe=xe.array;return xe[0]=ne[0],xe[4]=ne[2],xe[12]=ne[4],xe[1]=ne[1],xe[5]=ne[3],xe[13]=ne[5],xe},Matrix4$1.rotate=function(te,ee,ne,xe){return mat4$2.rotate(te.array,ee.array,ne,xe.array),te._dirty=!0,te},Matrix4$1.rotateX=function(te,ee,ne){return mat4$2.rotateX(te.array,ee.array,ne),te._dirty=!0,te},Matrix4$1.rotateY=function(te,ee,ne){return mat4$2.rotateY(te.array,ee.array,ne),te._dirty=!0,te},Matrix4$1.rotateZ=function(te,ee,ne){return mat4$2.rotateZ(te.array,ee.array,ne),te._dirty=!0,te},Matrix4$1.scale=function(te,ee,ne){return mat4$2.scale(te.array,ee.array,ne.array),te._dirty=!0,te},Matrix4$1.transpose=function(te,ee){return mat4$2.transpose(te.array,ee.array),te._dirty=!0,te},Matrix4$1.translate=function(te,ee,ne){return mat4$2.translate(te.array,ee.array,ne.array),te._dirty=!0,te};var vec3Set$2=vec3$f.set,vec3Copy$1=vec3$f.copy,BoundingBox=function(te,ee){this.min=te||new Vector3$1(1/0,1/0,1/0),this.max=ee||new Vector3$1(-1/0,-1/0,-1/0),this.vertices=null};BoundingBox.prototype={constructor:BoundingBox,updateFromVertices:function(te){if(te.length>0){var ee=this.min,ne=this.max,xe=ee.array,it=ne.array;vec3Copy$1(xe,te[0]),vec3Copy$1(it,te[0]);for(var ut=1;ut<te.length;ut++){var ht=te[ut];ht[0]<xe[0]&&(xe[0]=ht[0]),ht[1]<xe[1]&&(xe[1]=ht[1]),ht[2]<xe[2]&&(xe[2]=ht[2]),ht[0]>it[0]&&(it[0]=ht[0]),ht[1]>it[1]&&(it[1]=ht[1]),ht[2]>it[2]&&(it[2]=ht[2])}ee._dirty=!0,ne._dirty=!0}},union:function(te){var ee=this.min,ne=this.max;return vec3$f.min(ee.array,ee.array,te.min.array),vec3$f.max(ne.array,ne.array,te.max.array),ee._dirty=!0,ne._dirty=!0,this},intersection:function(te){var ee=this.min,ne=this.max;return vec3$f.max(ee.array,ee.array,te.min.array),vec3$f.min(ne.array,ne.array,te.max.array),ee._dirty=!0,ne._dirty=!0,this},intersectBoundingBox:function(te){var ee=this.min.array,ne=this.max.array,xe=te.min.array,it=te.max.array;return!(ee[0]>it[0]||ee[1]>it[1]||ee[2]>it[2]||ne[0]<xe[0]||ne[1]<xe[1]||ne[2]<xe[2])},containBoundingBox:function(te){var ee=this.min.array,ne=this.max.array,xe=te.min.array,it=te.max.array;return ee[0]<=xe[0]&&ee[1]<=xe[1]&&ee[2]<=xe[2]&&ne[0]>=it[0]&&ne[1]>=it[1]&&ne[2]>=it[2]},containPoint:function(te){var ee=this.min.array,ne=this.max.array,xe=te.array;return ee[0]<=xe[0]&&ee[1]<=xe[1]&&ee[2]<=xe[2]&&ne[0]>=xe[0]&&ne[1]>=xe[1]&&ne[2]>=xe[2]},isFinite:function(){var te=this.min.array,ee=this.max.array;return isFinite(te[0])&&isFinite(te[1])&&isFinite(te[2])&&isFinite(ee[0])&&isFinite(ee[1])&&isFinite(ee[2])},applyTransform:function(te){this.transformFrom(this,te)},transformFrom:function(){var te=vec3$f.create(),ee=vec3$f.create(),ne=vec3$f.create(),xe=vec3$f.create(),it=vec3$f.create(),ut=vec3$f.create();return function(ht,dt){var Mt=ht.min.array,ft=ht.max.array,gt=dt.array;return te[0]=gt[0]*Mt[0],te[1]=gt[1]*Mt[0],te[2]=gt[2]*Mt[0],ee[0]=gt[0]*ft[0],ee[1]=gt[1]*ft[0],ee[2]=gt[2]*ft[0],ne[0]=gt[4]*Mt[1],ne[1]=gt[5]*Mt[1],ne[2]=gt[6]*Mt[1],xe[0]=gt[4]*ft[1],xe[1]=gt[5]*ft[1],xe[2]=gt[6]*ft[1],it[0]=gt[8]*Mt[2],it[1]=gt[9]*Mt[2],it[2]=gt[10]*Mt[2],ut[0]=gt[8]*ft[2],ut[1]=gt[9]*ft[2],ut[2]=gt[10]*ft[2],Mt=this.min.array,ft=this.max.array,Mt[0]=Math.min(te[0],ee[0])+Math.min(ne[0],xe[0])+Math.min(it[0],ut[0])+gt[12],Mt[1]=Math.min(te[1],ee[1])+Math.min(ne[1],xe[1])+Math.min(it[1],ut[1])+gt[13],Mt[2]=Math.min(te[2],ee[2])+Math.min(ne[2],xe[2])+Math.min(it[2],ut[2])+gt[14],ft[0]=Math.max(te[0],ee[0])+Math.max(ne[0],xe[0])+Math.max(it[0],ut[0])+gt[12],ft[1]=Math.max(te[1],ee[1])+Math.max(ne[1],xe[1])+Math.max(it[1],ut[1])+gt[13],ft[2]=Math.max(te[2],ee[2])+Math.max(ne[2],xe[2])+Math.max(it[2],ut[2])+gt[14],this.min._dirty=!0,this.max._dirty=!0,this}}(),applyProjection:function(te){var ee=this.min.array,ne=this.max.array,xe=te.array,it=ee[0],ut=ee[1],ht=ee[2],dt=ne[0],Mt=ne[1],ft=ee[2],gt=ne[0],xt=ne[1],mt=ne[2];if(xe[15]===1)ee[0]=xe[0]*it+xe[12],ee[1]=xe[5]*ut+xe[13],ne[2]=xe[10]*ht+xe[14],ne[0]=xe[0]*gt+xe[12],ne[1]=xe[5]*xt+xe[13],ee[2]=xe[10]*mt+xe[14];else{var Dt=-1/ht;ee[0]=xe[0]*it*Dt,ee[1]=xe[5]*ut*Dt,ne[2]=(xe[10]*ht+xe[14])*Dt,Dt=-1/ft,ne[0]=xe[0]*dt*Dt,ne[1]=xe[5]*Mt*Dt,Dt=-1/mt,ee[2]=(xe[10]*mt+xe[14])*Dt}return this.min._dirty=!0,this.max._dirty=!0,this},updateVertices:function(){var te=this.vertices;if(!te){te=[];for(var ee=0;ee<8;ee++)te[ee]=vec3$f.fromValues(0,0,0);this.vertices=te}var ne=this.min.array,xe=this.max.array;return vec3Set$2(te[0],ne[0],ne[1],ne[2]),vec3Set$2(te[1],ne[0],xe[1],ne[2]),vec3Set$2(te[2],xe[0],ne[1],ne[2]),vec3Set$2(te[3],xe[0],xe[1],ne[2]),vec3Set$2(te[4],ne[0],ne[1],xe[2]),vec3Set$2(te[5],ne[0],xe[1],xe[2]),vec3Set$2(te[6],xe[0],ne[1],xe[2]),vec3Set$2(te[7],xe[0],xe[1],xe[2]),this},copy:function(te){var ee=this.min,ne=this.max;return vec3Copy$1(ee.array,te.min.array),vec3Copy$1(ne.array,te.max.array),ee._dirty=!0,ne._dirty=!0,this},clone:function(){var te=new BoundingBox;return te.copy(this),te}};var nameId=0,Node$2=Base.extend({name:"",position:null,rotation:null,scale:null,worldTransform:null,localTransform:null,autoUpdateLocalTransform:!0,_parent:null,_scene:null,_needsUpdateWorldTransform:!0,_inIterating:!1,__depth:0},function(){this.name||(this.name=(this.type||"NODE")+"_"+nameId++),this.position||(this.position=new Vector3$1),this.rotation||(this.rotation=new Quaternion$1),this.scale||(this.scale=new Vector3$1(1,1,1)),this.worldTransform=new Matrix4$1,this.localTransform=new Matrix4$1,this._children=[]},{target:null,invisible:!1,isSkinnedMesh:function(){return!1},isRenderable:function(){return!1},setName:function(te){var ee=this._scene;if(ee){var ne=ee._nodeRepository;delete ne[this.name],ne[te]=this}this.name=te},add:function(te){var ee=te._parent;if(ee!==this){ee&&ee.remove(te),te._parent=this,this._children.push(te);var ne=this._scene;ne&&ne!==te.scene&&te.traverse(this._addSelfToScene,this),te._needsUpdateWorldTransform=!0}},remove:function(te){var ee=this._children,ne=ee.indexOf(te);ne<0||(ee.splice(ne,1),te._parent=null,this._scene&&te.traverse(this._removeSelfFromScene,this))},removeAll:function(){for(var te=this._children,ee=0;ee<te.length;ee++)te[ee]._parent=null,this._scene&&te[ee].traverse(this._removeSelfFromScene,this);this._children=[]},getScene:function(){return this._scene},getParent:function(){return this._parent},_removeSelfFromScene:function(te){te._scene.removeFromScene(te),te._scene=null},_addSelfToScene:function(te){this._scene.addToScene(te),te._scene=this._scene},isAncestor:function(te){for(var ee=te._parent;ee;){if(ee===this)return!0;ee=ee._parent}return!1},children:function(){return this._children.slice()},childAt:function(te){return this._children[te]},getChildByName:function(te){for(var ee=this._children,ne=0;ne<ee.length;ne++)if(ee[ne].name===te)return ee[ne]},getDescendantByName:function(te){for(var ee=this._children,ne=0;ne<ee.length;ne++){var xe=ee[ne];if(xe.name===te)return xe;var it=xe.getDescendantByName(te);if(it)return it}},queryNode:function(te){if(te){for(var ee=te.split("/"),ne=this,xe=0;xe<ee.length;xe++){var it=ee[xe];if(it){for(var ut=!1,ht=ne._children,dt=0;dt<ht.length;dt++){var Mt=ht[dt];if(Mt.name===it){ne=Mt,ut=!0;break}}if(!ut)return}}return ne}},getPath:function(te){if(!this._parent)return"/";for(var ee=this._parent,ne=this.name;ee._parent&&(ne=ee.name+"/"+ne,ee._parent!=te);)ee=ee._parent;return!ee._parent&&te?null:ne},traverse:function(te,ee){te.call(ee,this);for(var ne=this._children,xe=0,it=ne.length;xe<it;xe++)ne[xe].traverse(te,ee)},eachChild:function(te,ee){for(var ne=this._children,xe=0,it=ne.length;xe<it;xe++){var ut=ne[xe];te.call(ee,ut,xe)}},setLocalTransform:function(te){mat4$2.copy(this.localTransform.array,te.array),this.decomposeLocalTransform()},decomposeLocalTransform:function(te){var ee=te?null:this.scale;this.localTransform.decomposeMatrix(ee,this.rotation,this.position)},setWorldTransform:function(te){mat4$2.copy(this.worldTransform.array,te.array),this.decomposeWorldTransform()},decomposeWorldTransform:function(){var te=mat4$2.create();return function(ee){var ne=this.localTransform,xe=this.worldTransform;this._parent?(mat4$2.invert(te,this._parent.worldTransform.array),mat4$2.multiply(ne.array,te,xe.array)):mat4$2.copy(ne.array,xe.array);var it=ee?null:this.scale;ne.decomposeMatrix(it,this.rotation,this.position)}}(),transformNeedsUpdate:function(){return this.position._dirty||this.rotation._dirty||this.scale._dirty},updateLocalTransform:function(){var te=this.position,ee=this.rotation,ne=this.scale;if(this.transformNeedsUpdate()){var xe=this.localTransform.array;mat4$2.fromRotationTranslation(xe,ee.array,te.array),mat4$2.scale(xe,xe,ne.array),ee._dirty=!1,ne._dirty=!1,te._dirty=!1,this._needsUpdateWorldTransform=!0}},_updateWorldTransformTopDown:function(){var te=this.localTransform.array,ee=this.worldTransform.array;this._parent?mat4$2.multiplyAffine(ee,this._parent.worldTransform.array,te):mat4$2.copy(ee,te)},updateWorldTransform:function(){for(var te=this;te&&te.getParent()&&te.getParent().transformNeedsUpdate();)te=te.getParent();te.update()},update:function(te){this.autoUpdateLocalTransform?this.updateLocalTransform():te=!0,(te||this._needsUpdateWorldTransform)&&(this._updateWorldTransformTopDown(),te=!0,this._needsUpdateWorldTransform=!1);for(var ee=this._children,ne=0,xe=ee.length;ne<xe;ne++)ee[ne].update(te)},getBoundingBox:function(){function te(it){return!it.invisible&&it.geometry}var ee=new BoundingBox,ne=new Matrix4$1,xe=new Matrix4$1;return function(it,ut){return ut=ut||new BoundingBox,this._parent?Matrix4$1.invert(xe,this._parent.worldTransform):Matrix4$1.identity(xe),this.traverse(function(ht){ht.geometry&&ht.geometry.boundingBox&&(ee.copy(ht.geometry.boundingBox),Matrix4$1.multiply(ne,xe,ht.worldTransform),ee.applyTransform(ne),ut.union(ee))},this,te),ut}}(),getWorldPosition:function(te){this.transformNeedsUpdate()&&this.updateWorldTransform();var ee=this.worldTransform.array;if(te){var ne=te.array;return ne[0]=ee[12],ne[1]=ee[13],ne[2]=ee[14],te}else return new Vector3$1(ee[12],ee[13],ee[14])},clone:function(){var te=new this.constructor,ee=this._children;te.setName(this.name),te.position.copy(this.position),te.rotation.copy(this.rotation),te.scale.copy(this.scale);for(var ne=0;ne<ee.length;ne++)te.add(ee[ne].clone());return te},rotateAround:function(){var te=new Vector3$1,ee=new Matrix4$1;return function(ne,xe,it){te.copy(this.position).subtract(ne);var ut=this.localTransform;ut.identity(),ut.translate(ne),ut.rotate(it,xe),ee.fromRotationTranslation(this.rotation,te),ut.multiply(ee),ut.scale(this.scale),this.decomposeLocalTransform(),this._needsUpdateWorldTransform=!0}}(),lookAt:function(){var te=new Matrix4$1;return function(ee,ne){te.lookAt(this.position,ee,ne||this.localTransform.y).invert(),this.setLocalTransform(te),this.target=ee}}()});const glenum={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CW:2304,CCW:2305,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_2D:3553,TEXTURE_CUBE_MAP:34067,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FRAMEBUFFER:36160,RENDERBUFFER:36161,DEPTH_STENCIL:34041,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306};var Renderable=Node$2.extend({material:null,geometry:null,mode:glenum.TRIANGLES,_renderInfo:null},{__program:null,lightGroup:0,renderOrder:0,culling:!0,cullFace:glenum.BACK,frontFace:glenum.CCW,frustumCulling:!0,receiveShadow:!0,castShadow:!0,ignorePicking:!1,ignorePreZ:!1,ignoreGBuffer:!1,isRenderable:function(){return this.geometry&&this.material&&this.material.shader&&!this.invisible&&this.geometry.vertexCount>0},beforeRender:function(te){},afterRender:function(te,ee){},getBoundingBox:function(te,ee){return ee=Node$2.prototype.getBoundingBox.call(this,te,ee),this.geometry&&this.geometry.boundingBox&&ee.union(this.geometry.boundingBox),ee},clone:function(){var te=["castShadow","receiveShadow","mode","culling","cullFace","frontFace","frustumCulling","renderOrder","lineWidth","ignorePicking","ignorePreZ","ignoreGBuffer"];return function(){var ee=Node$2.prototype.clone.call(this);ee.geometry=this.geometry,ee.material=this.material;for(var ne=0;ne<te.length;ne++){var xe=te[ne];ee[xe]!==this[xe]&&(ee[xe]=this[xe])}return ee}}()});Renderable.POINTS=glenum.POINTS,Renderable.LINES=glenum.LINES,Renderable.LINE_LOOP=glenum.LINE_LOOP,Renderable.LINE_STRIP=glenum.LINE_STRIP,Renderable.TRIANGLES=glenum.TRIANGLES,Renderable.TRIANGLE_STRIP=glenum.TRIANGLE_STRIP,Renderable.TRIANGLE_FAN=glenum.TRIANGLE_FAN,Renderable.BACK=glenum.BACK,Renderable.FRONT=glenum.FRONT,Renderable.FRONT_AND_BACK=glenum.FRONT_AND_BACK,Renderable.CW=glenum.CW,Renderable.CCW=glenum.CCW;var Mesh$1=Renderable.extend({skeleton:null,joints:null},function(){this.joints||(this.joints=[])},{offsetMatrix:null,isInstancedMesh:function(){return!1},isSkinnedMesh:function(){return!!(this.skeleton&&this.joints&&this.joints.length>0)},clone:function(){var te=Renderable.prototype.clone.call(this);return te.skeleton=this.skeleton,this.joints&&(te.joints=this.joints.slice()),te}});Mesh$1.POINTS=glenum.POINTS,Mesh$1.LINES=glenum.LINES,Mesh$1.LINE_LOOP=glenum.LINE_LOOP,Mesh$1.LINE_STRIP=glenum.LINE_STRIP,Mesh$1.TRIANGLES=glenum.TRIANGLES,Mesh$1.TRIANGLE_STRIP=glenum.TRIANGLE_STRIP,Mesh$1.TRIANGLE_FAN=glenum.TRIANGLE_FAN,Mesh$1.BACK=glenum.BACK,Mesh$1.FRONT=glenum.FRONT,Mesh$1.FRONT_AND_BACK=glenum.FRONT_AND_BACK,Mesh$1.CW=glenum.CW,Mesh$1.CCW=glenum.CCW;var EXTENSION_LIST=["OES_texture_float","OES_texture_half_float","OES_texture_float_linear","OES_texture_half_float_linear","OES_standard_derivatives","OES_vertex_array_object","OES_element_index_uint","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","EXT_texture_filter_anisotropic","EXT_shader_texture_lod","WEBGL_draw_buffers","EXT_frag_depth","EXT_sRGB","ANGLE_instanced_arrays"],PARAMETER_NAMES=["MAX_TEXTURE_SIZE","MAX_CUBE_MAP_TEXTURE_SIZE"];function GLInfo(te){for(var ee={},ne={},xe=0;xe<EXTENSION_LIST.length;xe++){var it=EXTENSION_LIST[xe];ht(it)}for(var xe=0;xe<PARAMETER_NAMES.length;xe++){var ut=PARAMETER_NAMES[xe];ne[ut]=te.getParameter(te[ut])}this.getExtension=function(dt){return dt in ee||ht(dt),ee[dt]},this.getParameter=function(dt){return ne[dt]};function ht(dt){if(te.getExtension){var Mt=te.getExtension(dt);Mt||(Mt=te.getExtension("MOZ_"+dt)),Mt||(Mt=te.getExtension("WEBKIT_"+dt)),ee[dt]=Mt}}}function get$5(te){var ee=new XMLHttpRequest;ee.open("get",te.url),ee.responseType=te.responseType||"text",te.onprogress&&(ee.onprogress=function(ne){if(ne.lengthComputable){var xe=ne.loaded/ne.total;te.onprogress(xe,ne.loaded,ne.total)}else te.onprogress(null)}),ee.onload=function(ne){ee.status>=400?te.onerror&&te.onerror():te.onload&&te.onload(ee.response)},te.onerror&&(ee.onerror=te.onerror),ee.send(null)}const request={get:get$5};var supportWebGL,vendor={};vendor.supportWebGL=function(){if(supportWebGL==null)try{var te=document.createElement("canvas"),ee=te.getContext("webgl")||te.getContext("experimental-webgl");if(!ee)throw new Error}catch{supportWebGL=!1}return supportWebGL},vendor.Int8Array=typeof Int8Array>"u"?Array:Int8Array,vendor.Uint8Array=typeof Uint8Array>"u"?Array:Uint8Array,vendor.Uint16Array=typeof Uint16Array>"u"?Array:Uint16Array,vendor.Uint32Array=typeof Uint32Array>"u"?Array:Uint32Array,vendor.Int16Array=typeof Int16Array>"u"?Array:Int16Array,vendor.Float32Array=typeof Float32Array>"u"?Array:Float32Array,vendor.Float64Array=typeof Float64Array>"u"?Array:Float64Array;var g$1={};typeof window<"u"?g$1=window:typeof globalThis<"u"&&(g$1=globalThis),vendor.requestAnimationFrame=g$1.requestAnimationFrame||g$1.msRequestAnimationFrame||g$1.mozRequestAnimationFrame||g$1.webkitRequestAnimationFrame||function(te){setTimeout(te,16)},vendor.createCanvas=function(){return document.createElement("canvas")},vendor.createImage=function(){return new g$1.Image},vendor.request={get:request.get},vendor.addEventListener=function(te,ee,ne,xe){te.addEventListener(ee,ne,xe)},vendor.removeEventListener=function(te,ee,ne){te.removeEventListener(ee,ne)};var LinkedList=function(){this.head=null,this.tail=null,this._length=0};LinkedList.prototype.insert=function(te){var ee=new LinkedList.Entry(te);return this.insertEntry(ee),ee},LinkedList.prototype.insertAt=function(te,ee){if(!(te<0)){for(var ne=this.head,xe=0;ne&&xe!=te;)ne=ne.next,xe++;if(ne){var it=new LinkedList.Entry(ee),ut=ne.prev;ut?(ut.next=it,it.prev=ut):this.head=it,it.next=ne,ne.prev=it}else this.insert(ee)}},LinkedList.prototype.insertBeforeEntry=function(te,ee){var ne=new LinkedList.Entry(te),xe=ee.prev;xe?(xe.next=ne,ne.prev=xe):this.head=ne,ne.next=ee,ee.prev=ne,this._length++},LinkedList.prototype.insertEntry=function(te){this.head?(this.tail.next=te,te.prev=this.tail,this.tail=te):this.head=this.tail=te,this._length++},LinkedList.prototype.remove=function(te){var ee=te.prev,ne=te.next;ee?ee.next=ne:this.head=ne,ne?ne.prev=ee:this.tail=ee,te.next=te.prev=null,this._length--},LinkedList.prototype.removeAt=function(te){if(!(te<0)){for(var ee=this.head,ne=0;ee&&ne!=te;)ee=ee.next,ne++;if(ee)return this.remove(ee),ee.value}},LinkedList.prototype.getHead=function(){if(this.head)return this.head.value},LinkedList.prototype.getTail=function(){if(this.tail)return this.tail.value},LinkedList.prototype.getAt=function(te){if(!(te<0)){for(var ee=this.head,ne=0;ee&&ne!=te;)ee=ee.next,ne++;return ee.value}},LinkedList.prototype.indexOf=function(te){for(var ee=this.head,ne=0;ee;){if(ee.value===te)return ne;ee=ee.next,ne++}},LinkedList.prototype.length=function(){return this._length},LinkedList.prototype.isEmpty=function(){return this._length===0},LinkedList.prototype.forEach=function(te,ee){for(var ne=this.head,xe=0,it=typeof ee<"u";ne;)it?te.call(ee,ne.value,xe):te(ne.value,xe),ne=ne.next,xe++},LinkedList.prototype.clear=function(){this.tail=this.head=null,this._length=0},LinkedList.Entry=function(te){this.value=te,this.next=null,this.prev=null};var LRU=function(te){this._list=new LinkedList,this._map={},this._maxSize=te||10};LRU.prototype.setMaxSize=function(te){this._maxSize=te},LRU.prototype.put=function(te,ee){if(!this._map.hasOwnProperty(te)){var ne=this._list.length();if(ne>=this._maxSize&&ne>0){var xe=this._list.head;this._list.remove(xe),delete this._map[xe.key]}var it=this._list.insert(ee);it.key=te,this._map[te]=it}},LRU.prototype.get=function(te){var ee=this._map[te];if(this._map.hasOwnProperty(te))return ee!==this._list.tail&&(this._list.remove(ee),this._list.insertEntry(ee)),ee.value},LRU.prototype.remove=function(te){var ee=this._map[te];typeof ee<"u"&&(delete this._map[te],this._list.remove(ee))},LRU.prototype.clear=function(){this._list.clear(),this._map={}};var colorUtil={},kCSSColorTable={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function clampCssByte(te){return te=Math.round(te),te<0?0:te>255?255:te}function clampCssAngle(te){return te=Math.round(te),te<0?0:te>360?360:te}function clampCssFloat(te){return te<0?0:te>1?1:te}function parseCssInt(te){return te.length&&te.charAt(te.length-1)==="%"?clampCssByte(parseFloat(te)/100*255):clampCssByte(parseInt(te,10))}function parseCssFloat(te){return te.length&&te.charAt(te.length-1)==="%"?clampCssFloat(parseFloat(te)/100):clampCssFloat(parseFloat(te))}function cssHueToRgb(te,ee,ne){return ne<0?ne+=1:ne>1&&(ne-=1),ne*6<1?te+(ee-te)*ne*6:ne*2<1?ee:ne*3<2?te+(ee-te)*(2/3-ne)*6:te}function lerpNumber(te,ee,ne){return te+(ee-te)*ne}function setRgba(te,ee,ne,xe,it){return te[0]=ee,te[1]=ne,te[2]=xe,te[3]=it,te}function copyRgba(te,ee){return te[0]=ee[0],te[1]=ee[1],te[2]=ee[2],te[3]=ee[3],te}var colorCache=new LRU(20),lastRemovedArr=null;function putToCache(te,ee){lastRemovedArr&&copyRgba(lastRemovedArr,ee),lastRemovedArr=colorCache.put(te,lastRemovedArr||ee.slice())}colorUtil.parse=function(te,ee){if(te){ee=ee||[];var ne=colorCache.get(te);if(ne)return copyRgba(ee,ne);te=te+"";var xe=te.replace(/ /g,"").toLowerCase();if(xe in kCSSColorTable)return copyRgba(ee,kCSSColorTable[xe]),putToCache(te,ee),ee;if(xe.charAt(0)==="#"){if(xe.length===4){var it=parseInt(xe.substr(1),16);if(!(it>=0&&it<=4095)){setRgba(ee,0,0,0,1);return}return setRgba(ee,(it&3840)>>4|(it&3840)>>8,it&240|(it&240)>>4,it&15|(it&15)<<4,1),putToCache(te,ee),ee}else if(xe.length===7){var it=parseInt(xe.substr(1),16);if(!(it>=0&&it<=16777215)){setRgba(ee,0,0,0,1);return}return setRgba(ee,(it&16711680)>>16,(it&65280)>>8,it&255,1),putToCache(te,ee),ee}return}var ut=xe.indexOf("("),ht=xe.indexOf(")");if(ut!==-1&&ht+1===xe.length){var dt=xe.substr(0,ut),Mt=xe.substr(ut+1,ht-(ut+1)).split(","),ft=1;switch(dt){case"rgba":if(Mt.length!==4){setRgba(ee,0,0,0,1);return}ft=parseCssFloat(Mt.pop());case"rgb":if(Mt.length!==3){setRgba(ee,0,0,0,1);return}return setRgba(ee,parseCssInt(Mt[0]),parseCssInt(Mt[1]),parseCssInt(Mt[2]),ft),putToCache(te,ee),ee;case"hsla":if(Mt.length!==4){setRgba(ee,0,0,0,1);return}return Mt[3]=parseCssFloat(Mt[3]),hsla2rgba(Mt,ee),putToCache(te,ee),ee;case"hsl":if(Mt.length!==3){setRgba(ee,0,0,0,1);return}return hsla2rgba(Mt,ee),putToCache(te,ee),ee;default:return}}setRgba(ee,0,0,0,1)}},colorUtil.parseToFloat=function(te,ee){if(ee=colorUtil.parse(te,ee),!!ee)return ee[0]/=255,ee[1]/=255,ee[2]/=255,ee};function hsla2rgba(te,ee){var ne=(parseFloat(te[0])%360+360)%360/360,xe=parseCssFloat(te[1]),it=parseCssFloat(te[2]),ut=it<=.5?it*(xe+1):it+xe-it*xe,ht=it*2-ut;return ee=ee||[],setRgba(ee,clampCssByte(cssHueToRgb(ht,ut,ne+1/3)*255),clampCssByte(cssHueToRgb(ht,ut,ne)*255),clampCssByte(cssHueToRgb(ht,ut,ne-1/3)*255),1),te.length===4&&(ee[3]=te[3]),ee}function rgba2hsla(te){if(te){var ee=te[0]/255,ne=te[1]/255,xe=te[2]/255,it=Math.min(ee,ne,xe),ut=Math.max(ee,ne,xe),ht=ut-it,dt=(ut+it)/2,Mt,ft;if(ht===0)Mt=0,ft=0;else{dt<.5?ft=ht/(ut+it):ft=ht/(2-ut-it);var gt=((ut-ee)/6+ht/2)/ht,xt=((ut-ne)/6+ht/2)/ht,mt=((ut-xe)/6+ht/2)/ht;ee===ut?Mt=mt-xt:ne===ut?Mt=1/3+gt-mt:xe===ut&&(Mt=2/3+xt-gt),Mt<0&&(Mt+=1),Mt>1&&(Mt-=1)}var Dt=[Mt*360,ft,dt];return te[3]!=null&&Dt.push(te[3]),Dt}}colorUtil.lift=function(te,ee){var ne=colorUtil.parse(te);if(ne){for(var xe=0;xe<3;xe++)ee<0?ne[xe]=ne[xe]*(1-ee)|0:ne[xe]=(255-ne[xe])*ee+ne[xe]|0;return colorUtil.stringify(ne,ne.length===4?"rgba":"rgb")}},colorUtil.toHex=function(te){var ee=colorUtil.parse(te);if(ee)return((1<<24)+(ee[0]<<16)+(ee[1]<<8)+ +ee[2]).toString(16).slice(1)},colorUtil.fastLerp=function(te,ee,ne){if(!(!(ee&&ee.length)||!(te>=0&&te<=1))){ne=ne||[];var xe=te*(ee.length-1),it=Math.floor(xe),ut=Math.ceil(xe),ht=ee[it],dt=ee[ut],Mt=xe-it;return ne[0]=clampCssByte(lerpNumber(ht[0],dt[0],Mt)),ne[1]=clampCssByte(lerpNumber(ht[1],dt[1],Mt)),ne[2]=clampCssByte(lerpNumber(ht[2],dt[2],Mt)),ne[3]=clampCssFloat(lerpNumber(ht[3],dt[3],Mt)),ne}},colorUtil.fastMapToColor=colorUtil.fastLerp,colorUtil.lerp=function(te,ee,ne){if(!(!(ee&&ee.length)||!(te>=0&&te<=1))){var xe=te*(ee.length-1),it=Math.floor(xe),ut=Math.ceil(xe),ht=colorUtil.parse(ee[it]),dt=colorUtil.parse(ee[ut]),Mt=xe-it,ft=colorUtil.stringify([clampCssByte(lerpNumber(ht[0],dt[0],Mt)),clampCssByte(lerpNumber(ht[1],dt[1],Mt)),clampCssByte(lerpNumber(ht[2],dt[2],Mt)),clampCssFloat(lerpNumber(ht[3],dt[3],Mt))],"rgba");return ne?{color:ft,leftIndex:it,rightIndex:ut,value:xe}:ft}},colorUtil.mapToColor=colorUtil.lerp,colorUtil.modifyHSL=function(te,ee,ne,xe){if(te=colorUtil.parse(te),te)return te=rgba2hsla(te),ee!=null&&(te[0]=clampCssAngle(ee)),ne!=null&&(te[1]=parseCssFloat(ne)),xe!=null&&(te[2]=parseCssFloat(xe)),colorUtil.stringify(hsla2rgba(te),"rgba")},colorUtil.modifyAlpha=function(te,ee){if(te=colorUtil.parse(te),te&&ee!=null)return te[3]=clampCssFloat(ee),colorUtil.stringify(te,"rgba")},colorUtil.stringify=function(te,ee){if(!(!te||!te.length)){var ne=te[0]+","+te[1]+","+te[2];return(ee==="rgba"||ee==="hsva"||ee==="hsla")&&(ne+=","+te[3]),ee+"("+ne+")"}};var parseColor=colorUtil.parseToFloat,programKeyCache$1={};function getDefineCode$1(te){var ee=Object.keys(te);ee.sort();for(var ne=[],xe=0;xe<ee.length;xe++){var it=ee[xe],ut=te[it];ut===null?ne.push(it):ne.push(it+" "+ut.toString())}return ne.join(`
598
602
  `)}function getProgramKey$1(te,ee,ne){ne.sort();for(var xe=[],it=0;it<ne.length;it++){var ut=ne[it];xe.push(ut)}var ht=getDefineCode$1(te)+`
599
603
  `+getDefineCode$1(ee)+`
600
604
  `+xe.join(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-gui/image",
3
- "version": "0.36.0",
3
+ "version": "0.36.1",
4
4
  "description": "Render AIGUI markdown blocks (charts, diagrams, math, tables, cards) to PNG in a headless browser.",
5
5
  "keywords": [
6
6
  "llm",
@@ -53,16 +53,16 @@
53
53
  "dependencies": {
54
54
  "echarts-gl": "^2.0.9",
55
55
  "katex": "^0.16.9",
56
- "@ai-gui/core": "0.36.0",
57
- "@ai-gui/vanilla": "0.36.0",
58
- "@ai-gui/plugin-chart": "0.36.0",
59
- "@ai-gui/plugin-katex": "0.36.0",
60
- "@ai-gui/plugin-mermaid": "0.36.0",
61
- "@ai-gui/plugin-dashboard": "0.36.0",
62
- "@ai-gui/plugin-bigscreen": "0.36.0",
63
- "@ai-gui/plugin-molecule": "0.36.0",
64
- "@ai-gui/plugin-scene": "0.36.0",
65
- "@ai-gui/plugin-gravity": "0.36.0"
56
+ "@ai-gui/core": "0.36.1",
57
+ "@ai-gui/plugin-mermaid": "0.36.1",
58
+ "@ai-gui/vanilla": "0.36.1",
59
+ "@ai-gui/plugin-katex": "0.36.1",
60
+ "@ai-gui/plugin-dashboard": "0.36.1",
61
+ "@ai-gui/plugin-chart": "0.36.1",
62
+ "@ai-gui/plugin-scene": "0.36.1",
63
+ "@ai-gui/plugin-gravity": "0.36.1",
64
+ "@ai-gui/plugin-bigscreen": "0.36.1",
65
+ "@ai-gui/plugin-molecule": "0.36.1"
66
66
  },
67
67
  "peerDependencies": {
68
68
  "playwright": "^1.48.0"