three-text 0.2.16 → 0.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * three-text v0.2.16
2
+ * three-text v0.2.18
3
3
  * Copyright (C) 2025 Countertype LLC
4
4
  *
5
5
  * This program is free software: you can redistribute it and/or modify
@@ -12,9 +12,12 @@
12
12
  * This software includes third-party code - see LICENSE_THIRD_PARTY for details.
13
13
  */
14
14
  function t(t){if(!t||0===Object.keys(t).length)return
15
- const e=[]
16
- for(const[i,s]of Object.entries(t))/^[a-zA-Z0-9]{4}$/.test(i)?!1===s||0===s?e.push(i+"=0"):!0===s||1===s?e.push(i):"number"==typeof s&&s>1?e.push(`${i}=${Math.floor(s)}`):l.warn(`Invalid value for feature "${i}": ${s}. Expected boolean or positive number.`):l.warn(`Invalid OpenType feature tag: "${i}". Tags must be exactly 4 alphanumeric characters.`)
17
- return e.length>0?e.join(","):void 0}function e(t){const e=t.getUint16(4),i=new Map
15
+ const e=M.get(t)
16
+ if(void 0!==e)return e??void 0
17
+ const i=[]
18
+ for(const[e,s]of Object.entries(t))/^[a-zA-Z0-9]{4}$/.test(e)?!1===s||0===s?i.push(e+"=0"):!0===s||1===s?i.push(e):"number"==typeof s&&s>1?i.push(`${e}=${Math.floor(s)}`):c.warn(`Invalid value for feature "${e}": ${s}. Expected boolean or positive number.`):c.warn(`Invalid OpenType feature tag: "${e}". Tags must be exactly 4 alphanumeric characters.`)
19
+ const s=i.length>0?i.join(","):void 0
20
+ return M.set(t,s??null),s}function e(t){const e=t.getUint16(4),i=new Map
18
21
  for(let s=0;e>s;s++){const e=12+16*s
19
22
  if(e+16>t.byteLength)break
20
23
  const n=t.getUint32(e),r=t.getUint32(e+4),o=t.getUint32(e+8),h=t.getUint32(e+12)
@@ -23,45 +26,47 @@ if(!e&&!N.has(t))throw Error(`Unsupported hyphenation language "${t}". Use a bui
23
26
  try{if(e)return(await import(`${e}${t}.js`)).default
24
27
  if("string"==typeof import.meta?.url){const e=new URL(".",import.meta.url).href,i=new URL(`./patterns/${t}.js`,e).href
25
28
  return(await import(i)).default}return(await import(`./patterns/${t}.js`)).default}catch(e){throw Error(`Failed to load hyphenation patterns for ${t}. Consider using static imports: import pattern from 'three-text/patterns/${t}'; Text.registerPattern('${t}', pattern);`)}}function s(t,e,i,s){return`${t}_${e}_${Math.round(1e3*i)/1e3}_${s}`}function n(t){let e=0
26
- return e+=4*t.vertices.length,e+=4*t.normals.length,e+=t.indices.length*t.indices.BYTES_PER_ELEMENT,e+=24,e+=256,e}function r(t=250){return new z({i:1/0,o:1048576*t,h:n})}function o(t){return t&&t.l&&{}.hasOwnProperty.call(t,"default")?t.default:t}function h(t){if(t.l)return t
29
+ return e+=4*t.vertices.length,e+=4*t.normals.length,e+=t.indices.length*t.indices.BYTES_PER_ELEMENT,e+=24,e+=256,e}function r(t=250){return new R({i:1/0,o:1048576*t,h:n})}function o(t){return t&&t.l&&{}.hasOwnProperty.call(t,"default")?t.default:t}function h(t){if(t.l)return t
27
30
  var e=t.default
28
31
  if("function"==typeof e){var i=function t(){return this instanceof t?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)}
29
32
  i.prototype=e.prototype}else i={}
30
33
  return Object.defineProperty(i,"l",{value:!0}),Object.keys(t).forEach(e=>{var s=Object.getOwnPropertyDescriptor(t,e)
31
- Object.defineProperty(i,e,s.get?s:{enumerable:!0,get(){return t[e]}})}),i}const a=!("undefined"==typeof window||!window.THREE_TEXT_LOG)||"undefined"!=typeof globalThis&&"true"===globalThis.process?.u?.THREE_TEXT_LOG,l=new class{warn(t,...e){}error(t,...e){console.error(t,...e)}log(t,...e){}},c=new class{constructor(){this.p=[],this.m=new Map}start(t,e){if(!a)return
34
+ Object.defineProperty(i,e,s.get?s:{enumerable:!0,get(){return t[e]}})}),i}const a=!("undefined"==typeof window||!window.THREE_TEXT_LOG)||"undefined"!=typeof globalThis&&"true"===globalThis.process?.u?.THREE_TEXT_LOG,c=new class{warn(t,...e){}error(t,...e){console.error(t,...e)}log(t,...e){}}
35
+ new class{constructor(){this.p=[],this.v=new Map}start(t,e){if(!a)return
32
36
  const i=performance.now()
33
- this.m.set(`${t}_${i}`,i),this.p.push({name:t,startTime:i,metadata:e})}end(t){if(!a)return null
37
+ this.v.set(`${t}_${i}`,i),this.p.push({name:t,startTime:i,metadata:e})}end(t){if(!a)return null
34
38
  const e=performance.now()
35
39
  let i,s
36
- for(const[e,n]of Array.from(this.m.entries()).reverse())if(e.startsWith(t+"_")){i=e,s=n
37
- break}if(void 0===s||!i)return l.warn(`Performance timer "${t}" was not started`),null
40
+ for(const[e,n]of Array.from(this.v.entries()).reverse())if(e.startsWith(t+"_")){i=e,s=n
41
+ break}if(void 0===s||!i)return c.warn(`Performance timer "${t}" was not started`),null
38
42
  const n=e-s
39
- this.m.delete(i)
43
+ this.v.delete(i)
40
44
  for(let i=this.p.length-1;i>=0;i--){const r=this.p[i]
41
45
  if(r.name===t&&r.startTime===s&&!r.endTime){r.endTime=e,r.duration=n
42
- break}}return n.toFixed(2),n}v(){if(!a)return{}
46
+ break}}return n.toFixed(2),n}m(){if(!a)return{}
43
47
  const t={}
44
48
  for(const e of this.p){if(!e.duration)continue
45
49
  const i=t[e.name]
46
- i?(i.count++,i.S+=e.duration,i.T=i.S/i.count,i._=e.duration):t[e.name]={count:1,T:e.duration,S:e.duration,_:e.duration}}return t}L(){if(!a)return
47
- const t=this.v()
50
+ i?(i.count++,i.S+=e.duration,i._=i.S/i.count,i.T=e.duration):t[e.name]={count:1,_:e.duration,S:e.duration,T:e.duration}}return t}L(){if(!a)return
51
+ const t=this.m()
48
52
  console.table(t),Object.keys(t).sort().join(", ")}M(){if(!a)return
49
- const t=this.v()
50
- Object.entries(t).forEach(([t,e])=>{e.T.toFixed(2)})}clear(){a&&(this.p.length=0,this.m.clear())}time(t,e,i){if(!a)return e()
53
+ const t=this.m()
54
+ Object.entries(t).forEach(([t,e])=>{e._.toFixed(2)})}clear(){a&&(this.p.length=0,this.v.clear())}time(t,e,i){if(!a)return e()
51
55
  this.start(t,i)
52
- try{return e()}finally{this.end(t)}}async G(t,e,i){if(!a)return e()
56
+ try{return e()}finally{this.end(t)}}async I(t,e,i){if(!a)return e()
53
57
  this.start(t,i)
54
- try{return await e()}finally{this.end(t)}}},u=800,f=100,d=0,y=1/3
55
- var p,g;(t=>{t[t.BOX=0]="BOX",t[t.GLUE=1]="GLUE",t[t.PENALTY=2]="PENALTY",t[t.DISCRETIONARY=3]="DISCRETIONARY"})(p||(p={})),(t=>{t[t.TIGHT=0]="TIGHT",t[t.NORMAL=1]="NORMAL",t[t.LOOSE=2]="LOOSE",t[t.VERY_LOOSE=3]="VERY_LOOSE"})(g||(g={}))
56
- class w{constructor(){this.F=new Map,this.I=[],this.O=new Set}getKey(t,e){return t<<2|e}k(t){const e=this.getKey(t.position,t.$),i=this.F.get(e)
57
- i&&i.U>t.U?(i.U=t.U,i.N=t.N,i.P=t.P):i||(this.F.set(e,t),this.O.add(t),t.D=this.I.length,this.I.push(t))}R(t,e){return this.F.get(this.getKey(t,e))}W(){return this.I}j(t){if(t.active&&void 0!==t.D){t.active=!1
58
- const e=t.D,i=this.I.length-1
59
- if(e!==i){const t=this.I[i]
60
- this.I[e]=t,t.D=e}this.I.pop(),t.D=void 0}}size(){return this.O.size}}const m=50,v=50,x=1e4,S=10,b=1e4,T=-1/0,E=2,_=4,A=1e4,L=.7
61
- class M{static H(t,e){if(0===t)return 0
62
- if(0>=e)return A
58
+ try{return await e()}finally{this.end(t)}}}
59
+ const l=800,u=100,f=0,d=1/3
60
+ var y,p;(t=>{t[t.BOX=0]="BOX",t[t.GLUE=1]="GLUE",t[t.PENALTY=2]="PENALTY",t[t.DISCRETIONARY=3]="DISCRETIONARY"})(y||(y={})),(t=>{t[t.TIGHT=0]="TIGHT",t[t.NORMAL=1]="NORMAL",t[t.LOOSE=2]="LOOSE",t[t.VERY_LOOSE=3]="VERY_LOOSE"})(p||(p={}))
61
+ class w{constructor(){this.G=new Map,this.O=[],this.F=new Set}getKey(t,e){return t<<2|e}k(t){const e=this.getKey(t.position,t.$),i=this.G.get(e)
62
+ i&&i.U>t.U?(i.U=t.U,i.N=t.N,i.D=t.D):i||(this.G.set(e,t),this.F.add(t),t.P=this.O.length,this.O.push(t))}R(t,e){return this.G.get(this.getKey(t,e))}W(){return this.O}j(t){if(t.active&&void 0!==t.P){t.active=!1
63
+ const e=t.P,i=this.O.length-1
64
+ if(e!==i){const t=this.O[i]
65
+ this.O[e]=t,t.P=e}this.O.pop(),t.P=void 0}}size(){return this.F.size}}const v=50,m=50,g=1e4,x=10,S=1e4,b=-1/0,E=2,_=4,T=1e4,A=.7
66
+ class L{static H(t,e){if(0===t)return 0
67
+ if(0>=e)return T
63
68
  let i
64
- return i=t>7230584?1663497>e?t:Math.floor(t/Math.floor(e/297)):Math.floor(297*t/e),i>1290?A:Math.floor((i*i*i+131072)/262144)}static V(t,e="en-us",i,s=E,n=_){let r
69
+ return i=t>7230584?1663497>e?t:Math.floor(t/Math.floor(e/297)):Math.floor(297*t/e),i>1290?T:Math.floor((i*i*i+131072)/262144)}static V(t,e="en-us",i,s=E,n=_){let r
65
70
  if(!i||!i[e])return[]
66
71
  if(r=i[e],!r)return[]
67
72
  const o=`.${t.toLowerCase()}.`,h=Array(o.length).fill(0)
@@ -71,72 +76,72 @@ if(!e.children||!e.children[s])break
71
76
  if(e=e.children[s],e.q)for(let i=0;e.q.length>i;i++){const s=t+i
72
77
  h.length>s&&(h[s]=Math.max(h[s],e.q[i]))}}}const a=[]
73
78
  for(let t=2;o.length-2>t;t++)h[t]%2==1&&a.push(t-1)
74
- return a.filter(e=>e>=s&&t.length-e>=n)}static J(t,e,i=!1,s="en-us",n,r=E,o=_,h){const a=[]
75
- return a.push(...this.Y(t,e,i,s,n,r,o,h)),a.push({type:p.GLUE,width:0,stretch:1/0,K:0,text:"",X:t.length}),a.push({type:p.PENALTY,width:0,Z:-1/0,text:"",X:t.length}),a}static tt(t){const e=t.codePointAt(0)
79
+ return a.filter(e=>e>=s&&t.length-e>=n)}static J(t,e,i,s=!1,n="en-us",r,o=E,h=_,a){const c=[]
80
+ return c.push(...this.Y(t,e,i,s,n,r,o,h,a)),c.push({type:y.GLUE,width:0,stretch:1/0,K:0,text:"",X:t.length}),c.push({type:y.PENALTY,width:0,Z:-1/0,text:"",X:t.length}),c}static tt(t){const e=t.codePointAt(0)
76
81
  return void 0!==e&&(e>=19968&&40959>=e||e>=13312&&19903>=e||e>=131072&&173791>=e||e>=173824&&177983>=e||e>=177984&&178207>=e||e>=178208&&183983>=e||e>=63744&&64255>=e||e>=12352&&12447>=e||e>=12448&&12543>=e||e>=44032&&55215>=e||e>=4352&&4607>=e||e>=12592&&12687>=e||e>=43360&&43391>=e||e>=55216&&55295>=e||e>=65440&&65500>=e)}static et(t){const e=t.charCodeAt(0)
77
82
  return 12289===e||12290===e||65292===e||65294===e||65306===e||65307===e||65281===e||65311===e||65289===e||12305===e||65373===e||12301===e||12303===e||12297===e||12299===e||12309===e||12311===e||12313===e||12315===e||12540===e||8212===e||8230===e||8229===e}static it(t){const e=t.charCodeAt(0)
78
- return 65288===e||12304===e||65371===e||12300===e||12302===e||12296===e||12298===e||12308===e||12310===e||12312===e||12314===e}static st(t){return this.et(t)||this.it(t)}static nt(t,e,i,s=0,n){const r=[],o=Array.from(t)
79
- let h,a,l,c=s
80
- if(n)h=n.width,a=n.stretch,l=n.K
83
+ return 65288===e||12304===e||65371===e||12300===e||12302===e||12296===e||12298===e||12308===e||12310===e||12312===e||12314===e}static st(t){return this.et(t)||this.it(t)}static nt(t,e,i,s,n=0,r){const o=[],h=Array.from(t),a=i?i(t):null
84
+ let c,l,u,f=n
85
+ if(r)c=r.width,l=r.stretch,u=r.K
81
86
  else{const t=e("字")
82
- h=0,a=.04*t,l=.04*t}for(let t=0;o.length>t;t++){const i=o[t],s=o.length-1>t?o[t+1]:null
83
- if(/\s/.test(i)){const t=e(i)
84
- r.push({type:p.GLUE,width:t,stretch:.5*t,K:t*y,text:i,X:c}),c+=i.length
85
- continue}if(r.push({type:p.BOX,width:e(i),text:i,X:c}),c+=i.length,s&&!/\s/.test(s)){let t=!0
87
+ c=0,l=.04*t,u=.04*t}for(let t=0;h.length>t;t++){const i=h[t],s=h.length-1>t?h[t+1]:null
88
+ if(/\s/.test(i)){const s=a?a[t]??e(i):e(i)
89
+ o.push({type:y.GLUE,width:s,stretch:.5*s,K:s*d,text:i,X:f}),f+=i.length
90
+ continue}if(o.push({type:y.BOX,width:a?a[t]??e(i):e(i),text:i,X:f}),f+=i.length,s&&!/\s/.test(s)){let t=!0
86
91
  this.et(s)&&(t=!1),this.it(i)&&(t=!1)
87
92
  const e=this.st(i)&&this.st(s)
88
- t&&!e&&r.push({type:p.GLUE,width:h,stretch:a,K:l,text:"",X:c})}}return r}static Y(t,e,i,s,n,r,o,h){const a=[],l=Array.from(t),c=e("字"),u={width:0,stretch:.04*c,K:.04*c}
89
- let f="",d=0,y=null,p=0
90
- const g=()=>{if(0!==f.length){if("cjk"===y){const t=this.nt(f,e,h,d,u)
91
- a.push(...t)}else{const t=this.rt(f,d,e,i,s,n,r,o,h)
92
- a.push(...t)}f="",y=null}}
93
+ t&&!e&&o.push({type:y.GLUE,width:c,stretch:l,K:u,text:"",X:f})}}return o}static Y(t,e,i,s,n,r,o,h,a){const c=[],l=Array.from(t)
94
+ let u,f="",d=0,y=null,p=0
95
+ const w=()=>{if(0!==f.length){if("cjk"===y){const t=this.nt(f,e,i,a,d,(()=>{if(!u){const t=e("字")
96
+ u={width:0,stretch:.04*t,K:.04*t}}return u})())
97
+ c.push(...t)}else{const t=this.rt(f,d,e,s,n,r,o,h,a)
98
+ c.push(...t)}f="",y=null}}
93
99
  for(let t=0;l.length>t;t++){const e=l[t],i=this.tt(e)?"cjk":"word"
94
- null!==y&&y!==i&&(g(),d=p),null===y&&(y=i,d=p),f+=e,p+=e.length}return g(),a}static rt(t,e,i,s,n,r,o,h,a){const l=[],c=t.match(/\S+|\s+/g)||[]
100
+ null!==y&&y!==i&&(w(),d=p),null===y&&(y=i,d=p),f+=e,p+=e.length}return w(),c}static rt(t,e,i,s,n,r,o,h,a){const c=[],l=t.match(/\S+|\s+/g)||[]
95
101
  let u=0
96
- for(let t=0;c.length>t;t++){const f=c[t],d=e+u
102
+ for(let t=0;l.length>t;t++){const f=l[t],p=e+u
97
103
  if(/\s+/.test(f)){const t=i(f)
98
- l.push({type:p.GLUE,width:t,stretch:.5*t,K:t*y,text:f,X:d}),u+=f.length}else{const t=f.split(/(-)/)
99
- let e=d
100
- for(let c=0;t.length>c;c++){const u=t[c]
101
- if(u)if("-"===u)l.push({type:p.DISCRETIONARY,width:i("-"),ot:"-",ht:"",lt:"-",ct:i("-"),Z:a?.ut??v,ft:!0,text:"-",X:e}),e+=1
104
+ c.push({type:y.GLUE,width:t,stretch:.5*t,K:t*d,text:f,X:p}),u+=f.length}else{const t=f.split(/(-)/)
105
+ let e=p
106
+ for(let l=0;t.length>l;l++){const u=t[l]
107
+ if(u)if("-"===u)c.push({type:y.DISCRETIONARY,width:i("-"),ot:"-",ht:"",ct:"-",lt:i("-"),Z:a?.ut??m,ft:!0,text:"-",X:e}),e+=1
102
108
  else{if(u.includes("­")){const t=u.split("­")
103
109
  let s=0
104
110
  for(let n=0;t.length>n;n++){const r=t[n]
105
- r.length>0&&(l.push({type:p.BOX,width:i(r),text:r,X:e+s}),s+=r.length),t.length-1>n&&(l.push({type:p.DISCRETIONARY,width:0,ot:"-",ht:"",lt:"",ct:i("-"),Z:a?.dt??m,ft:!0,text:"",X:e+s}),s+=1)}}else if(s&&u.length>=o+h&&/^\p{L}+$/u.test(u)){const t=M.V(u,n,r,o,h)
111
+ r.length>0&&(c.push({type:y.BOX,width:i(r),text:r,X:e+s}),s+=r.length),t.length-1>n&&(c.push({type:y.DISCRETIONARY,width:0,ot:"-",ht:"",ct:"",lt:i("-"),Z:a?.dt??v,ft:!0,text:"",X:e+s}),s+=1)}}else if(s&&u.length>=o+h&&/^\p{L}+$/u.test(u)){const t=L.V(u,n,r,o,h)
106
112
  if(t.length>0){let s=0
107
113
  for(const n of t){const t=u.substring(s,n)
108
- l.push({type:p.BOX,width:i(t),text:t,X:e+s}),l.push({type:p.DISCRETIONARY,width:0,ot:"-",ht:"",lt:"",ct:i("-"),Z:a?.dt??m,ft:!0,text:"",X:e+n}),s=n}const n=u.substring(s)
109
- l.push({type:p.BOX,width:i(n),text:n,X:e+s})}else l.push({type:p.BOX,width:i(u),text:u,X:e})}else l.push({type:p.BOX,width:i(u),text:u,X:e})
110
- e+=u.length}}u+=f.length}}return l}static yt(t,e,i,s){let n=0
114
+ c.push({type:y.BOX,width:i(t),text:t,X:e+s}),c.push({type:y.DISCRETIONARY,width:0,ot:"-",ht:"",ct:"",lt:i("-"),Z:a?.dt??v,ft:!0,text:"",X:e+n}),s=n}const n=u.substring(s)
115
+ c.push({type:y.BOX,width:i(n),text:n,X:e+s})}else c.push({type:y.BOX,width:i(u),text:u,X:e})}else c.push({type:y.BOX,width:i(u),text:u,X:e})
116
+ e+=u.length}}u+=f.length}}return c}static yt(t,e,i,s){let n=0
111
117
  for(let r=0;e.length-1>r;r++){const o=e[r]
112
118
  let h=0
113
- for(let e=n;o>e;e++)t[e].type!==p.PENALTY&&(h+=t[e].width)
119
+ for(let e=n;o>e;e++)t[e].type!==y.PENALTY&&(h+=t[e].width)
114
120
  if(h>0&&s>h/i)return!0
115
- n=o+1}return!1}static gt(t){c.start("LineBreak.breakText",{textLength:t.text.length,width:t.width,align:t.align||"left",wt:t.wt||!1})
116
- const{text:e,width:i,align:s="left",direction:n="ltr",wt:r=!1,language:o="en-us",vt:h=!0,measureText:a,xt:y,St:p,letterSpacing:g=0,bt:w=u,Tt:T=f,Et:G=d,_t:F,At:I=E,Lt:O=_,Mt:C=S,Gt:k=b,Ft:B=m,It:$=v,Ot:U=x,Ct:N=0,kt:P=!1,Bt:D=L}=t
121
+ n=o+1}return!1}static wt(t){const{text:e,width:i,align:s="left",direction:n="ltr",vt:r=!1,language:o="en-us",gt:h=!0,measureText:a,xt:d,St:y,bt:p,letterSpacing:w=0,Et:b=l,_t:M=u,Tt:I=f,At:G,Lt:O=E,Mt:F=_,It:k=x,Gt:C=S,Ot:B=v,Ft:$=m,kt:U=g,Ct:N=0,Bt:D=!1,$t:P=A}=t
117
122
  if(h&&e.includes("\n")){const i=e.split("\n"),s=[]
118
123
  let n=0
119
- for(const e of i){if(0===e.length)s.push({text:"",$t:n,Ut:n,Nt:0,Pt:!0,naturalWidth:0,Dt:!1})
120
- else{const i=M.gt({...t,text:e,vt:!1})
121
- i.forEach(t=>{t.$t+=n,t.Ut+=n}),s.push(...i)}n+=e.length+1}return c.end("LineBreak.breakText"),s}let z=r
122
- !z||y&&y[o]||(l.warn(`Hyphenation patterns for ${o} not available`),z=!1)
123
- let R=G
124
- void 0!==F&&i?R=i*F:!z&&G===d&&i&&(R=.1*i)
125
- const W={zt:C,Rt:k,Wt:U,dt:B,ut:$,jt:s,St:p,Ht:p?g*p:0}
124
+ for(const e of i){if(0===e.length)s.push({text:"",Ut:n,Nt:n,Dt:0,Pt:!0,naturalWidth:0,Rt:!1})
125
+ else{const i=L.wt({...t,text:e,gt:!1})
126
+ i.forEach(t=>{t.Ut+=n,t.Nt+=n}),s.push(...i)}n+=e.length+1}return s}let R=r
127
+ !R||y&&y[o]||(c.warn(`Hyphenation patterns for ${o} not available`),R=!1)
128
+ let z=I
129
+ void 0!==G&&i?z=i*G:!R&&I===f&&i&&(z=.1*i)
130
+ const W={zt:k,Wt:C,jt:U,dt:B,ut:$,Ht:s,bt:p,Vt:p?w*p:0}
126
131
  if(!i||i===1/0){const t=a(e)
127
- return c.end("LineBreak.breakText"),[{text:e,$t:0,Ut:e.length-1,Nt:0,Pt:!0,naturalWidth:t,Dt:!1}]}const j=M.J(e,a,!1,o,y,I,O,W)
132
+ return[{text:e,Ut:0,Nt:e.length-1,Dt:0,Pt:!0,naturalWidth:t,Rt:!1}]}const j=L.J(e,a,d,!1,o,y,O,F,W)
128
133
  if(0===j.length)return[]
129
- let H=0,V=R,q=null
130
- const J=!P
131
- for(;5>H;){let t=j,r=M.Vt(t,i,T,N,!1,0,W)
132
- if(0===r.length&&z&&(t=M.J(e,a,!0,o,y,I,O,W),r=M.Vt(t,i,w,N,!1,0,W)),0===r.length&&(V=R+H*i*.1,r=M.Vt(t,i,w,N,!0,V,W)),0===r.length&&(r=M.Vt(t,i,A,N,!0,V,W)),r.length>0){const o=M.qt(t)
133
- if(q=M.Jt(e,t,r,i,s,n,o,W),J&&r.length>1&&M.yt(t,r,i,D)){H++
134
- continue}break}break}if(c.end("LineBreak.breakText"),q&&q.length>0)return q
134
+ let H=0,V=z,q=null
135
+ const J=!D
136
+ for(;5>H;){let t=j,r=L.qt(t,i,M,N,!1,0,W)
137
+ if(0===r.length&&R&&(t=L.J(e,a,d,!0,o,y,O,F,W),r=L.qt(t,i,b,N,!1,0,W)),0===r.length&&(V=z+H*i*.1,r=L.qt(t,i,b,N,!0,V,W)),0===r.length&&(r=L.qt(t,i,T,N,!0,V,W)),r.length>0){const o=L.Jt(t)
138
+ if(q=L.Yt(e,t,r,i,s,n,o,W),J&&r.length>1&&L.yt(t,r,i,P)){H++
139
+ continue}break}break}if(q&&q.length>0)return q
135
140
  const Y=a(e)
136
- return[{text:e,$t:0,Ut:e.length-1,Nt:0,Yt:0,Pt:!0,naturalWidth:Y,Dt:!1}]}static Vt(t,e,i=1/0,s=0,n=!1,r=0,o){const h=M.qt(t),a=new w,l={value:1/0}
137
- a.k({position:0,line:0,$:g.NORMAL,U:0,P:0,N:null,active:!0})
138
- for(let s=0;t.length>s;s++){const c=t[s]
139
- c.type===p.PENALTY&&1/0>c.Z&&M.Kt(t,a,s,e,i,r,h,o,n,l),c.type===p.DISCRETIONARY&&1/0>c.Z&&M.Kt(t,a,s,e,i,r,h,o,n,l),c.type===p.GLUE&&s>0&&t[s-1].type===p.BOX&&M.Kt(t,a,s,e,i,r,h,o,n,l),M.Xt(a,s,e,h.Qt)}const c=[]
141
+ return[{text:e,Ut:0,Nt:e.length-1,Dt:0,Kt:0,Pt:!0,naturalWidth:Y,Rt:!1}]}static qt(t,e,i=1/0,s=0,n=!1,r=0,o){const h=L.Jt(t),a=new w,c={value:1/0}
142
+ a.k({position:0,line:0,$:p.NORMAL,U:0,D:0,N:null,active:!0})
143
+ for(let s=0;t.length>s;s++){const l=t[s]
144
+ l.type===y.PENALTY&&1/0>l.Z&&L.Xt(t,a,s,e,i,r,h,o,n,c),l.type===y.DISCRETIONARY&&1/0>l.Z&&L.Xt(t,a,s,e,i,r,h,o,n,c),l.type===y.GLUE&&s>0&&t[s-1].type===y.BOX&&L.Xt(t,a,s,e,i,r,h,o,n,c),L.Qt(a,s,e,h.Zt)}const l=[]
140
145
  let u=null
141
146
  if(0===s){const t=a.W()
142
147
  let e=1/0
@@ -147,108 +152,124 @@ let r=0,o=1/0
147
152
  for(const i of t){if(!i.active)continue
148
153
  const t=i.line-e
149
154
  r>t&&t>=s||t>r&&s>=t?(u=i,r=t,o=i.U):t===r&&o>i.U&&(u=i,o=i.U)}if(!n&&r!==s&&u)return[]}if(!u)return[]
150
- for(;u&&u.position>0;)c.unshift(u.position),u=u.N
151
- return c}static Kt(t,e,i,s,n=1/0,r=0,o,h,a=!1,l={value:1/0}){const c=-1/0>=(t[i].type===p.PENALTY?t[i].Z:0),u=e.W()
155
+ for(;u&&u.position>0;)l.unshift(u.position),u=u.N
156
+ return l}static Xt(t,e,i,s,n=1/0,r=0,o,h,a=!1,c={value:1/0}){const l=-1/0>=(t[i].type===y.PENALTY?t[i].Z:0),u=e.W()
152
157
  for(let f=0;u.length>f;f++){const d=u[f]
153
158
  if(!d.active)continue
154
- const y=M.Zt(t,d.position,i,d.line,s,o,h),{ratio:g,te:w,stretch:m,K:v,P:x}=y
159
+ const p=L.te(t,d.position,i,d.line,s,o,h),{ratio:w,ee:v,stretch:m,K:g,D:x}=p
155
160
  let S
156
- if(w>0){const t=m+r
157
- S=t>0?M.H(w,t):10001}else S=0>w?v>0?-w>v?10001:M.H(-w,v):10001:0
158
- const b=a&&c&&l.value===1/0&&1===u.length&&d.active
159
- if(!c&&!b&&-1>g)continue
160
- const E=M.ee(S,w>0)
161
- if(!c&&!b&&S>n)continue
162
- let _=0,A=0,L=(h?.zt??0)+S,G=1e4>Math.abs(L)?L*L:1e8
163
- const F=b,I=t[i].type===p.PENALTY||t[i].type===p.DISCRETIONARY?t[i].Z:0
164
- 0!==I&&(I>0?G+=I*I:I>T&&(G-=I*I)),(t[i].type===p.PENALTY&&t[i].ft||t[i].type===p.DISCRETIONARY&&t[i].ft)&&d.position>0&&(t[d.position].type===p.PENALTY&&t[d.position].ft||t[d.position].type===p.DISCRETIONARY&&t[d.position].ft)&&(_=h?.Wt??0,G+=_),Math.abs(E-d.$)>1&&(A=h?.Rt??0,G+=A),(c||F)&&(G=0)
165
- const O=d.U+G
166
- l.value>O&&(l.value=O)
167
- let C=e.R(i,E)
168
- C?C.U>O&&(C.U=O,C.N=d,C.P=x):e.k({position:i,line:d.line+1,$:E,U:O,P:x,N:d,active:!0})}}static Zt(t,e,i,s,n,r,o){let h=0,a=0,l=0
169
- if(r){h=r.ie[i]-r.ie[e],a=r.se[i]-r.se[e],l=r.ne[i]-r.ne[e]
161
+ if(v>0){const t=m+r
162
+ S=t>0?L.H(v,t):10001}else S=0>v?g>0?-v>g?10001:L.H(-v,g):10001:0
163
+ const E=a&&l&&c.value===1/0&&1===u.length&&d.active
164
+ if(!l&&!E&&-1>w)continue
165
+ const _=L.ie(S,v>0)
166
+ if(!l&&!E&&S>n)continue
167
+ let T=0,A=0,M=(h?.zt??0)+S,I=1e4>Math.abs(M)?M*M:1e8
168
+ const G=E,O=t[i].type===y.PENALTY||t[i].type===y.DISCRETIONARY?t[i].Z:0
169
+ 0!==O&&(O>0?I+=O*O:O>b&&(I-=O*O)),(t[i].type===y.PENALTY&&t[i].ft||t[i].type===y.DISCRETIONARY&&t[i].ft)&&d.position>0&&(t[d.position].type===y.PENALTY&&t[d.position].ft||t[d.position].type===y.DISCRETIONARY&&t[d.position].ft)&&(T=h?.jt??0,I+=T),Math.abs(_-d.$)>1&&(A=h?.Wt??0,I+=A),(l||G)&&(I=0)
170
+ const F=d.U+I
171
+ c.value>F&&(c.value=F)
172
+ let k=e.R(i,_)
173
+ k?k.U>F&&(k.U=F,k.N=d,k.D=x):e.k({position:i,line:d.line+1,$:_,U:F,D:x,N:d,active:!0})}}static te(t,e,i,s,n,r,o){let h=0,a=0,c=0
174
+ if(r){h=r.se[i]-r.se[e],a=r.ne[i]-r.ne[e],c=r.re[i]-r.re[e]
170
175
  for(let s=e;i>s;s++){const e=t[s]
171
- e.type===p.PENALTY&&(h-=e.width)}}else for(let s=e;i>s;s++){const e=t[s]
172
- e.type!==p.PENALTY&&(h+=e.width,e.type===p.GLUE&&(a+=e.stretch,l+=e.K))}i>=t.length||t[i].type!==p.PENALTY&&t[i].type!==p.DISCRETIONARY||(h+=t[i].type===p.PENALTY?t[i].width:t[i].ct),o?.Ht&&0!==h&&(h-=o.Ht)
173
- const c=n-h
176
+ e.type===y.PENALTY&&(h-=e.width)}}else for(let s=e;i>s;s++){const e=t[s]
177
+ e.type!==y.PENALTY&&(h+=e.width,e.type===y.GLUE&&(a+=e.stretch,c+=e.K))}i>=t.length||t[i].type!==y.PENALTY&&t[i].type!==y.DISCRETIONARY||(h+=t[i].type===y.PENALTY?t[i].width:t[i].lt),o?.Vt&&0!==h&&(h-=o.Vt)
178
+ const l=n-h
174
179
  let u
175
- return u=c>0&&a>0?c/a:0>c&&l>0?c/l:0===c?0:c>0?3:-1,{ratio:u,te:c,stretch:a,K:l,P:h}}static ee(t,e){return e?t>12?t>99?g.VERY_LOOSE:g.LOOSE:g.NORMAL:t>12?g.TIGHT:g.NORMAL}static qt(t){const e=t.length+1,i=Array(e),s=Array(e),n=Array(e),r=Array(e)
180
+ return u=l>0&&a>0?l/a:0>l&&c>0?l/c:0===l?0:l>0?3:-1,{ratio:u,ee:l,stretch:a,K:c,D:h}}static ie(t,e){return e?t>12?t>99?p.VERY_LOOSE:p.LOOSE:p.NORMAL:t>12?p.TIGHT:p.NORMAL}static Jt(t){const e=t.length+1,i=Array(e),s=Array(e),n=Array(e),r=Array(e)
176
181
  i[0]=0,s[0]=0,n[0]=0,r[0]=0
177
182
  for(let e=0;t.length>e;e++){const o=t[e]
178
- if(i[e+1]=i[e]+o.width,o.type===p.PENALTY)s[e+1]=s[e],n[e+1]=n[e],r[e+1]=r[e]
179
- else if(o.type===p.GLUE){const t=o
180
- s[e+1]=s[e]+t.stretch,n[e+1]=n[e]+t.K,r[e+1]=r[e]+Math.max(0,t.width-t.K)}else s[e+1]=s[e],n[e+1]=n[e],r[e+1]=r[e]+o.width}return{ie:i,se:s,ne:n,Qt:r}}static Xt(t,e,i,s){const n=t.W()
183
+ if(i[e+1]=i[e]+o.width,o.type===y.PENALTY)s[e+1]=s[e],n[e+1]=n[e],r[e+1]=r[e]
184
+ else if(o.type===y.GLUE){const t=o
185
+ s[e+1]=s[e]+t.stretch,n[e+1]=n[e]+t.K,r[e+1]=r[e]+Math.max(0,t.width-t.K)}else s[e+1]=s[e],n[e+1]=n[e],r[e+1]=r[e]+o.width}return{se:i,ne:s,re:n,Zt:r}}static Qt(t,e,i,s){const n=t.W()
181
186
  for(let r=n.length-1;r>=0;r--){const o=n[r]
182
- o.active&&s[e]-s[o.position]>i&&t.j(o)}}static Jt(t,e,i,s,n,r,o,h){if(0===i.length)return[{text:t,$t:0,Ut:t.length-1,Nt:0}]
187
+ o.active&&s[e]-s[o.position]>i&&t.j(o)}}static Yt(t,e,i,s,n,r,o,h){if(0===i.length)return[{text:t,Ut:0,Nt:t.length-1,Dt:0}]
183
188
  const a=[]
184
- let l=0
185
- for(let t=0;i.length>t;t++){const c=i[t],u=!(e.length-1>i[i.length-1]+1)&&t===i.length-1,f=[]
186
- let d=-1,y=-1,g=0
187
- for(let t=l;c>t;t++){const i=e[t]
188
- if((i.type!==p.PENALTY||i.text)&&(i.type!==p.DISCRETIONARY||i.lt)){if(void 0!==i.X){(-1===d||d>i.X)&&(d=i.X)
189
+ let c=0
190
+ for(let t=0;i.length>t;t++){const l=i[t],u=!(e.length-1>i[i.length-1]+1)&&t===i.length-1,f=[]
191
+ let d=-1,p=-1,w=0
192
+ for(let t=c;l>t;t++){const i=e[t]
193
+ if((i.type!==y.PENALTY||i.text)&&(i.type!==y.DISCRETIONARY||i.ct)){if(void 0!==i.X){(-1===d||d>i.X)&&(d=i.X)
189
194
  const t=i.X+(i.text?i.text.length:0)-1
190
- t>y&&(y=t)}i.text?f.push(i.text):i.type===p.DISCRETIONARY&&i.lt&&f.push(i.lt),g+=i.width}}const w=e[c]
195
+ t>p&&(p=t)}i.text?f.push(i.text):i.type===y.DISCRETIONARY&&i.ct&&f.push(i.ct),w+=i.width}}const v=e[l]
191
196
  let m=!1
192
- if(e.length>c)if(w.type===p.PENALTY&&w.ft)f.push("-"),g+=w.width,m=!0,void 0!==w.X&&(y=w.X-1)
193
- else if(w.type===p.DISCRETIONARY){const t=w
194
- t.ot&&(f.push(t.ot),g+=t.ct,m=t.ft||!1,void 0!==w.X&&(y=w.X-1))}const v=f.join("")
195
- h?.Ht&&0!==g&&(g-=h.Ht)
197
+ if(e.length>l)if(v.type===y.PENALTY&&v.ft)f.push("-"),w+=v.width,m=!0,void 0!==v.X&&(p=v.X-1)
198
+ else if(v.type===y.DISCRETIONARY){const t=v
199
+ t.ot&&(f.push(t.ot),w+=t.lt,m=t.ft||!1,void 0!==v.X&&(p=v.X-1))}const g=f.join("")
200
+ h?.Vt&&0!==w&&(w-=h.Vt)
196
201
  let x=0,S=0,b=n
197
- "justify"===n&&u&&(b="rtl"===r?"right":"left"),"center"===b?x=(s-g)/2:"right"===b?x=s-g:"justify"!==b||u||(S=M.Zt(e,l,c,t,s,o,h).ratio),a.push({text:v,$t:d,Ut:y,Nt:x,Yt:S,Pt:!1,naturalWidth:g,Dt:m}),l=c+1}if(e.length-1>l){const t=[]
198
- let i=-1,o=-1,c=0
199
- for(let s=l;e.length-1>s;s++){const n=e[s]
200
- n.type!==p.PENALTY&&(void 0!==n.X&&((-1===i||i>n.X)&&(i=n.X),n.X>o&&(o=n.X)),n.text&&t.push(n.text),c+=n.width)}const u=t.join("")
201
- h?.Ht&&0!==c&&(c-=h.Ht)
202
+ "justify"===n&&u&&(b="rtl"===r?"right":"left"),"center"===b?x=(s-w)/2:"right"===b?x=s-w:"justify"!==b||u||(S=L.te(e,c,l,t,s,o,h).ratio),a.push({text:g,Ut:d,Nt:p,Dt:x,Kt:S,Pt:!1,naturalWidth:w,Rt:m}),c=l+1}if(e.length-1>c){const t=[]
203
+ let i=-1,o=-1,l=0
204
+ for(let s=c;e.length-1>s;s++){const n=e[s]
205
+ n.type!==y.PENALTY&&(void 0!==n.X&&((-1===i||i>n.X)&&(i=n.X),n.X>o&&(o=n.X)),n.text&&t.push(n.text),l+=n.width)}const u=t.join("")
206
+ h?.Vt&&0!==l&&(l-=h.Vt)
202
207
  let f=0,d=n
203
- "justify"===n&&(d="rtl"===r?"right":"left"),"center"===d?f=(s-c)/2:"right"===d&&(f=s-c),a.push({text:u,$t:i,Ut:o,Nt:f,Yt:0,Pt:!0,naturalWidth:c,Dt:!1}),a.length>1&&(a[a.length-2].Pt=!1),a[a.length-1].Pt=!0}else a.length>0&&(a[a.length-1].Pt=!0)
204
- return a}}class G{static measureTextWidth(e,i,s=0){const n=e.hb.createBuffer()
205
- n.re(i),n.oe()
206
- const r=t(e.he)
208
+ "justify"===n&&(d="rtl"===r?"right":"left"),"center"===d?f=(s-l)/2:"right"===d&&(f=s-l),a.push({text:u,Ut:i,Nt:o,Dt:f,Kt:0,Pt:!0,naturalWidth:l,Rt:!1}),a.length>1&&(a[a.length-2].Pt=!1),a[a.length-1].Pt=!0}else a.length>0&&(a[a.length-1].Pt=!0)
209
+ return a}}const M=new WeakMap
210
+ class I{static xt(e,i,s=0){const n=Array.from(i)
211
+ if(0===n.length)return[]
212
+ const r=new Map
213
+ let o=0
214
+ for(let t=0;n.length>t;t++)r.set(o,t),o+=n[t].length
215
+ const h=Array(n.length).fill(0),a=e.hb.createBuffer()
216
+ try{a.oe(i),a.he()
217
+ const n=t(e.ae)
218
+ e.hb.shape(e.font,a,n)
219
+ const o=a.json(e.font),c=s*e.upem
220
+ for(let t=0;o.length>t;t++){const e=o[t],i=e.ce??0
221
+ let s=r.get(i)
222
+ if(void 0===s)for(let t=i;t>=0;t--){const e=r.get(t)
223
+ if(void 0!==e){s=e
224
+ break}}void 0!==s&&(h[s]+=e.ax,0!==c&&(h[s]+=c))}return h}finally{a.destroy()}}static measureTextWidth(e,i,s=0){const n=e.hb.createBuffer()
225
+ n.oe(i),n.he()
226
+ const r=t(e.ae)
207
227
  e.hb.shape(e.font,n,r)
208
228
  const o=n.json(e.font),h=s*e.upem
209
229
  let a=0
210
- return o.forEach(t=>{a+=t.ax,0!==h&&(a+=h)}),n.destroy(),a}}class F{constructor(t){this.ae=t}le(t){const{text:e,width:i,align:s,direction:n,wt:r,language:o,vt:h,bt:a,Tt:l,Et:c,_t:u,xt:f,At:d,Lt:y,Mt:p,Gt:g,Ft:w,It:m,Ot:v,Ct:x,kt:S,Bt:b,letterSpacing:T}=t
211
- let E
212
- if(i)E=M.gt({text:e,width:i,align:s,direction:n,wt:r,language:o,vt:h,bt:a,Tt:l,Et:c,_t:u,xt:f,At:d,Lt:y,Mt:p,Gt:g,Ft:w,It:m,Ot:v,Ct:x,kt:S,Bt:b,St:this.ae.upem,letterSpacing:T,measureText:t=>G.measureTextWidth(this.ae,t,T)})
230
+ return o.forEach(t=>{a+=t.ax,0!==h&&(a+=h)}),n.destroy(),a}}class G{constructor(t){this.le=t}ue(t){const{text:e,width:i,align:s,direction:n,vt:r,language:o,gt:h,Et:a,_t:c,Tt:l,At:u,St:f,Lt:d,Mt:y,It:p,Gt:w,Ot:v,Ft:m,kt:g,Ct:x,Bt:S,$t:b,letterSpacing:E}=t
231
+ let _
232
+ if(i)_=L.wt({text:e,width:i,align:s,direction:n,vt:r,language:o,gt:h,Et:a,_t:c,Tt:l,At:u,St:f,Lt:d,Mt:y,It:p,Gt:w,Ot:v,Ft:m,kt:g,Ct:x,Bt:S,$t:b,bt:this.le.upem,letterSpacing:E,measureText:t=>I.measureTextWidth(this.le,t,E),xt:t=>I.xt(this.le,t,E)})
213
233
  else{const t=e.split("\n")
214
- E=[]
234
+ _=[]
215
235
  let i=0
216
- for(const e of t)E.push({text:e,$t:i,Ut:0===e.length?i:i+e.length-1,Nt:0}),i+=e.length+1}return{lines:E}}ce(t,e){const{width:i,align:s,planeBounds:n}=e
217
- let r=0
218
- const o={min:{...n.min},max:{...n.max}}
219
- if(i&&("center"===s||"right"===s)&&("center"===s?r=(i-(n.max.x-n.min.x))/2-n.min.x:"right"===s&&(r=i-n.max.x),0!==r)){for(let e=0;t.length>e;e+=3)t[e]+=r
220
- o.min.x+=r,o.max.x+=r}return{offset:r,ue:o}}}const I=1330926671,O=2001684038,C=1851878757
221
- class k{static fe(t){if(!t||12>t.byteLength)throw Error("Invalid font buffer: too small to be a valid font file")
236
+ for(const e of t)_.push({text:e,Ut:i,Nt:0===e.length?i:i+e.length-1,Dt:0}),i+=e.length+1}return{lines:_}}fe(t,e){const{offset:i,de:s}=this.ye(e)
237
+ if(0!==i)for(let e=0;t.length>e;e+=3)t[e]+=i
238
+ return{offset:i,de:s}}ye(t){const{width:e,align:i,planeBounds:s}=t
239
+ let n=0
240
+ const r={min:{...s.min},max:{...s.max}}
241
+ return!e||"center"!==i&&"right"!==i||(n="center"===i?(e-(s.max.x-s.min.x))/2-s.min.x:e-s.max.x),0!==n&&(r.min.x+=n,r.max.x+=n),{offset:n,de:r}}}const O=1330926671,F=2001684038,k=1851878757
242
+ class C{static pe(t){if(!t||12>t.byteLength)throw Error("Invalid font buffer: too small to be a valid font file")
222
243
  const i=new DataView(t),s=i.getUint32(0)
223
- if(![65536,I].includes(s))throw Error("Invalid font format. Expected TTF/OTF (or WOFF), got signature: 0x"+s.toString(16))
224
- const n=e(i),r=n.has(1128678944)||n.has(1128678962),o=n.get(1751474532)?.offset??0,h=n.get(1751672161)?.offset??0,a=n.get(1330851634)?.offset??0,l=n.get(1719034226)?.offset??0,c=n.get(1398030676)?.offset??0,u=n.get(C)?.offset??0,f=o?i.getUint16(o+18):1e3
244
+ if(![65536,O].includes(s))throw Error("Invalid font format. Expected TTF/OTF (or WOFF), got signature: 0x"+s.toString(16))
245
+ const n=e(i),r=n.has(1128678944)||n.has(1128678962),o=n.get(1751474532)?.offset??0,h=n.get(1751672161)?.offset??0,a=n.get(1330851634)?.offset??0,c=n.get(1719034226)?.offset??0,l=n.get(1398030676)?.offset??0,u=n.get(k)?.offset??0,f=o?i.getUint16(o+18):1e3
225
246
  let d=null
226
- h&&(d={de:i.getInt16(h+4),ye:i.getInt16(h+6),pe:i.getInt16(h+8)})
247
+ h&&(d={we:i.getInt16(h+4),ve:i.getInt16(h+6),me:i.getInt16(h+8)})
227
248
  let y=null
228
- a&&(y={ge:i.getInt16(a+68),we:i.getInt16(a+70),me:i.getInt16(a+72),ve:i.getUint16(a+74),xe:i.getUint16(a+76)})
249
+ a&&(y={ge:i.getInt16(a+68),xe:i.getInt16(a+70),Se:i.getInt16(a+72),be:i.getUint16(a+74),Ee:i.getUint16(a+76)})
229
250
  let p=null
230
- return l&&c&&u&&(p=this.Se(i,c,u)),{be:r,St:f,Te:d?.de||null,Ee:d?.ye||null,_e:d?.pe||null,ge:y?.ge||null,we:y?.we||null,me:y?.me||null,ve:y?.ve||null,xe:y?.xe||null,Ae:p}}static Le(t){const i=new DataView(t),s=e(i),n=s.get(1196643650)?.offset??0,r=s.get(1196445523)?.offset??0,o=s.get(C)?.offset??0,h=new Set,a={}
231
- try{if(n){const t=this.Me(i,n,o)
232
- t.features.forEach(t=>h.add(t)),Object.assign(a,t.names)}if(r){const t=this.Me(i,r,o)
233
- t.features.forEach(t=>h.add(t)),Object.assign(a,t.names)}}catch(t){return}const l=Array.from(h).sort()
234
- if(0!==l.length)return{tags:l,names:Object.keys(a).length>0?a:{}}}static Me(t,e,i){const s=e+t.getUint16(e+6),n=t.getUint16(s),r=[],o={}
251
+ return c&&l&&u&&(p=this._e(i,l,u)),{Te:r,bt:f,Ae:d?.we||null,Le:d?.ve||null,Me:d?.me||null,ge:y?.ge||null,xe:y?.xe||null,Se:y?.Se||null,be:y?.be||null,Ee:y?.Ee||null,Ie:p}}static Ge(t){const i=new DataView(t),s=e(i),n=s.get(1196643650)?.offset??0,r=s.get(1196445523)?.offset??0,o=s.get(k)?.offset??0,h=new Set,a={}
252
+ try{if(n){const t=this.Oe(i,n,o)
253
+ t.features.forEach(t=>h.add(t)),Object.assign(a,t.names)}if(r){const t=this.Oe(i,r,o)
254
+ t.features.forEach(t=>h.add(t)),Object.assign(a,t.names)}}catch(t){return}const c=Array.from(h).sort()
255
+ if(0!==c.length)return{tags:c,names:Object.keys(a).length>0?a:{}}}static Oe(t,e,i){const s=e+t.getUint16(e+6),n=t.getUint16(s),r=[],o={}
235
256
  for(let e=0;n>e;e++){const n=s+2+6*e,h=String.fromCharCode(t.getUint8(n),t.getUint8(n+1),t.getUint8(n+2),t.getUint8(n+3))
236
257
  if(r.push(h),/^(ss\d{2}|cv\d{2})$/.test(h)&&i){const e=s+t.getUint16(n+4),r=t.getUint16(e)
237
258
  if(0!==r){const s=e+r
238
- if(0===t.getUint16(s)){const e=t.getUint16(s+2),n=this.Ge(t,i,e)
239
- n&&(o[h]=n)}}}}return{features:r,names:o}}static Se(t,e,i){try{if(1>t.getUint16(e))return null
259
+ if(0===t.getUint16(s)){const e=t.getUint16(s+2),n=this.Fe(t,i,e)
260
+ n&&(o[h]=n)}}}}return{features:r,names:o}}static _e(t,e,i){try{if(1>t.getUint16(e))return null
240
261
  const s=t.getUint16(e+4),n=t.getUint16(e+6),r=t.getUint32(e+8),o={}
241
- for(let h=0;n>h;h++){const n=e+r+h*s,a=String.fromCharCode(t.getUint8(n),t.getUint8(n+1),t.getUint8(n+2),t.getUint8(n+3)),l=t.getUint16(n+4),c=this.Ge(t,i,l)
242
- c&&(o[a]=c)}return Object.keys(o).length>0?o:null}catch(t){return null}}static Ge(t,e,i){try{const s=t.getUint16(e+2),n=t.getUint16(e+4)
243
- for(let r=0;s>r;r++){const s=e+6+12*r,o=t.getUint16(s),h=t.getUint16(s+2),a=t.getUint16(s+4),l=t.getUint16(s+6),c=t.getUint16(s+8),u=t.getUint16(s+10)
244
- if(l===i&&(0===o||3===o&&1033===a)){const i=new Uint8Array(t.buffer,e+n+u,c)
262
+ for(let h=0;n>h;h++){const n=e+r+h*s,a=String.fromCharCode(t.getUint8(n),t.getUint8(n+1),t.getUint8(n+2),t.getUint8(n+3)),c=t.getUint16(n+4),l=this.Fe(t,i,c)
263
+ l&&(o[a]=l)}return Object.keys(o).length>0?o:null}catch(t){return null}}static Fe(t,e,i){try{const s=t.getUint16(e+2),n=t.getUint16(e+4)
264
+ for(let r=0;s>r;r++){const s=e+6+12*r,o=t.getUint16(s),h=t.getUint16(s+2),a=t.getUint16(s+4),c=t.getUint16(s+6),l=t.getUint16(s+8),u=t.getUint16(s+10)
265
+ if(c===i&&(0===o||3===o&&1033===a)){const i=new Uint8Array(t.buffer,e+n+u,l)
245
266
  if(0===o||3===o&&1===h){let t=""
246
267
  for(let e=0;i.length>e;e+=2)t+=String.fromCharCode(i[e]<<8|i[e+1])
247
- return t}return new TextDecoder("ascii").decode(i)}}return null}catch(t){return null}}static Fe(t){return null!==t.ge&&null!==t.we?{de:t.ge,ye:t.we,pe:0}:null!==t.Te&&null!==t.Ee?{de:t.Te,ye:t.Ee,pe:0}:null!==t.ve&&null!==t.xe?{de:t.ve,ye:-t.xe,pe:0}:{de:Math.round(.8*t.St),ye:-Math.round(.2*t.St),pe:0}}static Ie(t){const e=k.Fe(t)
248
- return{de:e.de,ye:e.ye,pe:e.pe,St:t.St,Oe:e.de-e.ye}}}class B{static Ce(t){if(4>t.byteLength)return"ttf/otf"
268
+ return t}return new TextDecoder("ascii").decode(i)}}return null}catch(t){return null}}static ke(t){return null!==t.ge&&null!==t.xe?{we:t.ge,ve:t.xe,me:0}:null!==t.Ae&&null!==t.Le?{we:t.Ae,ve:t.Le,me:0}:null!==t.be&&null!==t.Ee?{we:t.be,ve:-t.Ee,me:0}:{we:Math.round(.8*t.bt),ve:-Math.round(.2*t.bt),me:0}}static Ce(t){const e=C.ke(t)
269
+ return{we:e.we,ve:e.ve,me:e.me,bt:t.bt,Be:e.we-e.ve}}}class B{static $e(t){if(4>t.byteLength)return"ttf/otf"
249
270
  const e=new DataView(t).getUint32(0)
250
- return e===O?"woff":2001684018===e?"woff2":"ttf/otf"}static async ke(t){const e=new DataView(t),i=new Uint8Array(t)
251
- if(e.getUint32(0)!==O)throw Error("Not a valid WOFF font")
271
+ return e===F?"woff":2001684018===e?"woff2":"ttf/otf"}static async Ue(t){const e=new DataView(t),i=new Uint8Array(t)
272
+ if(e.getUint32(0)!==F)throw Error("Not a valid WOFF font")
252
273
  const s=e.getUint32(4),n=e.getUint16(12),r=e.getUint32(16)
253
274
  if("undefined"==typeof DecompressionStream)throw Error("WOFF fonts require DecompressionStream API (Chrome 80+, Firefox 113+, Safari 16.4+). Please use TTF/OTF fonts or upgrade your browser.")
254
275
  const o=new Uint8Array(r),h=new DataView(o.buffer)
@@ -256,617 +277,618 @@ h.setUint32(0,s),h.setUint16(4,n)
256
277
  const a=2**Math.floor(Math.log2(n))*16
257
278
  h.setUint16(6,a),h.setUint16(8,Math.floor(Math.log2(n))),h.setUint16(10,16*n-a)
258
279
  let c=12+16*n
259
- const u=[]
280
+ const l=[]
260
281
  for(let t=0;n>t;t++){const i=44+20*t
261
- u.push({tag:e.getUint32(i),offset:e.getUint32(i+4),length:e.getUint32(i+8),Be:e.getUint32(i+12),t:e.getUint32(i+16)})}u.sort((t,e)=>t.tag-e.tag)
262
- for(let t=0;n>t;t++){const e=u[t],s=12+16*t
263
- if(h.setUint32(s,e.tag),h.setUint32(s+4,e.t),h.setUint32(s+8,c),h.setUint32(s+12,e.Be),e.length===e.Be)o.set(i.subarray(e.offset,e.offset+e.length),c)
264
- else{const t=i.subarray(e.offset,e.offset+e.length),s=await B.$e(t)
265
- if(s.byteLength!==e.Be)throw Error(`Decompression failed: expected ${e.Be} bytes, got ${s.byteLength}`)
266
- o.set(new Uint8Array(s),c)}c+=e.Be,c+=(4-e.Be%4)%4}return l.log("WOFF font decompressed successfully"),o.buffer.slice(0,c)}static async $e(t){const e=new ReadableStream({start(e){e.enqueue(t),e.close()}}).pipeThrough(new DecompressionStream("deflate"))
267
- return new Response(e).arrayBuffer()}}class ${constructor(t){this.Ue=t}async Ne(t,e){if(c.start("FontLoader.loadFont",{bufferSize:t.byteLength}),!t||12>t.byteLength)throw Error("Invalid font buffer: too small to be a valid font file")
268
- const i=B.Ce(t)
269
- if("woff"===i)l.log("WOFF font detected, decompressing..."),t=await B.ke(t)
282
+ l.push({tag:e.getUint32(i),offset:e.getUint32(i+4),length:e.getUint32(i+8),Ne:e.getUint32(i+12),t:e.getUint32(i+16)})}l.sort((t,e)=>t.tag-e.tag)
283
+ for(let t=0;n>t;t++){const e=l[t],s=12+16*t
284
+ if(h.setUint32(s,e.tag),h.setUint32(s+4,e.t),h.setUint32(s+8,c),h.setUint32(s+12,e.Ne),e.length===e.Ne)o.set(i.subarray(e.offset,e.offset+e.length),c)
285
+ else{const t=i.subarray(e.offset,e.offset+e.length),s=await B.De(t)
286
+ if(s.byteLength!==e.Ne)throw Error(`Decompression failed: expected ${e.Ne} bytes, got ${s.byteLength}`)
287
+ o.set(new Uint8Array(s),c)}c+=e.Ne,c+=(4-e.Ne%4)%4}return o.buffer.slice(0,c)}static async De(t){const e=new ReadableStream({start(e){e.enqueue(t),e.close()}}).pipeThrough(new DecompressionStream("deflate"))
288
+ return new Response(e).arrayBuffer()}}class ${constructor(t){this.Pe=t}async Re(t,e){if(!t||12>t.byteLength)throw Error("Invalid font buffer: too small to be a valid font file")
289
+ const i=B.$e(t)
290
+ if("woff"===i)t=await B.Ue(t)
270
291
  else if("woff2"===i)throw Error("WOFF2 fonts are not yet supported. Please use WOFF or TTF/OTF format.")
271
292
  const s=new DataView(t).getUint32(0)
272
- if(![65536,I].includes(s))throw Error("Invalid font format. Expected TTF/OTF (or WOFF), got signature: 0x"+s.toString(16))
273
- const{hb:n,module:r}=await this.Ue()
274
- try{const i=n.Pe(new Uint8Array(t)),s=n.De(i,0),o=n.ze(s)
275
- e&&o.Re(e)
276
- const h=s.We(),a=Object.keys(h).length>0,l=k.fe(t)
277
- let c
278
- if(a&&h){c={}
279
- for(const[t,e]of Object.entries(h))c[t]={...e,name:l.Ae?.[t]||null}}const u=k.Le(t)
280
- return{hb:n,fontBlob:i,face:s,font:o,module:r,upem:l.St,p:l,je:e,He:a,Ve:c,qe:u?.tags,Je:u?.names,Ye:t}}catch(t){throw l.error("Failed to load font:",t),t}finally{c.end("FontLoader.loadFont")}}static Ke(t){try{t.font&&"function"==typeof t.font.destroy&&t.font.destroy(),t.face&&"function"==typeof t.face.destroy&&t.face.destroy(),t.fontBlob&&"function"==typeof t.fontBlob.destroy&&t.fontBlob.destroy()}catch(t){l.error("Error destroying font resources:",t)}}}const U=/^[a-z]{2,3}(?:-[a-z0-9]{2,16})*$/i,N=new Set(["af","as","be","bg","bn","ca","cs","cy","da","de-1996","el-monoton","el-polyton","en-gb","en-us","eo","es","et","eu","fi","fr","fur","ga","gl","gu","hi","hr","hsb","hu","hy","ia","id","is","it","ka","kmr","kn","la","lt","lv","mk","ml","mn-cyrl","mr","mul-ethi","nb","nl","nn","oc","or","pa","pl","pms","pt","rm","ro","ru","sa","sh-cyrl","sh-latn","sk","sl","sq","sr-cyrl","sv","ta","te","th","tk","tr","uk","zh-latn-pinyin"])
281
- class P{constructor(t=0,e=0){this.x=t,this.y=e}set(t,e){return this.x=t,this.y=e,this}clone(){return new P(this.x,this.y)}Xe(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}sub(t){return this.x-=t.x,this.y-=t.y,this}multiply(t){return this.x*=t,this.y*=t,this}Qe(t){return this.x/=t,this.y/=t,this}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}Ze(){return this.x*this.x+this.y*this.y}normalize(){const t=this.length()
282
- return t>0&&this.Qe(t),this}ti(t){return this.x*t.x+this.y*t.y}ei(t){const e=this.x-t.x,i=this.y-t.y
283
- return Math.sqrt(e*e+i*i)}ii(t){const e=this.x-t.x,i=this.y-t.y
284
- return e*e+i*i}equals(t){return this.x===t.x&&this.y===t.y}angle(){return Math.atan2(this.y,this.x)}}class D{constructor(t=0,e=0,i=0){this.x=t,this.y=e,this.z=i}set(t,e,i){return this.x=t,this.y=e,this.z=i,this}clone(){return new D(this.x,this.y,this.z)}Xe(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}multiply(t){return this.x*=t,this.y*=t,this.z*=t,this}Qe(t){return this.x/=t,this.y/=t,this.z/=t,this}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}Ze(){return this.x*this.x+this.y*this.y+this.z*this.z}normalize(){const t=this.length()
285
- return t>0&&this.Qe(t),this}ti(t){return this.x*t.x+this.y*t.y+this.z*t.z}si(t){const e=this.z*t.x-this.x*t.z,i=this.x*t.y-this.y*t.x
286
- return this.x=this.y*t.z-this.z*t.y,this.y=e,this.z=i,this}ei(t){const e=this.x-t.x,i=this.y-t.y,s=this.z-t.z
287
- return Math.sqrt(e*e+i*i+s*s)}ii(t){const e=this.x-t.x,i=this.y-t.y,s=this.z-t.z
288
- return e*e+i*i+s*s}equals(t){return this.x===t.x&&this.y===t.y&&this.z===t.z}}class z{constructor(t={}){this.cache=new Map,this.head=null,this.ni=null,this.stats={ri:0,oi:0,hi:0,size:0,ai:0},this.options={i:t.i??1/0,o:t.o??1/0,h:t.h??(()=>0),li:t.li}}get(t){const e=this.cache.get(t)
289
- return e?(this.stats.ri++,this.ci(e),e.value):void this.stats.oi++}has(t){return this.cache.has(t)}set(t,e){const i=this.cache.get(t)
293
+ if(![65536,O].includes(s))throw Error("Invalid font format. Expected TTF/OTF (or WOFF), got signature: 0x"+s.toString(16))
294
+ const{hb:n,module:r}=await this.Pe()
295
+ try{const i=n.ze(new Uint8Array(t)),s=n.We(i,0),o=n.je(s)
296
+ e&&o.He(e)
297
+ const h=s.Ve(),a=Object.keys(h).length>0,c=C.pe(t)
298
+ let l
299
+ if(a&&h){l={}
300
+ for(const[t,e]of Object.entries(h))l[t]={...e,name:c.Ie?.[t]||null}}const u=C.Ge(t)
301
+ return{hb:n,fontBlob:i,face:s,font:o,module:r,upem:c.bt,p:c,qe:e,Je:a,Ye:l,Ke:u?.tags,Xe:u?.names,Qe:t}}catch(t){throw c.error("Failed to load font:",t),t}}static Ze(t){try{t.font&&"function"==typeof t.font.destroy&&t.font.destroy(),t.face&&"function"==typeof t.face.destroy&&t.face.destroy(),t.fontBlob&&"function"==typeof t.fontBlob.destroy&&t.fontBlob.destroy()}catch(t){c.error("Error destroying font resources:",t)}}}const U=/^[a-z]{2,3}(?:-[a-z0-9]{2,16})*$/i,N=new Set(["af","as","be","bg","bn","ca","cs","cy","da","de-1996","el-monoton","el-polyton","en-gb","en-us","eo","es","et","eu","fi","fr","fur","ga","gl","gu","hi","hr","hsb","hu","hy","ia","id","is","it","ka","kmr","kn","la","lt","lv","mk","ml","mn-cyrl","mr","mul-ethi","nb","nl","nn","oc","or","pa","pl","pms","pt","rm","ro","ru","sa","sh-cyrl","sh-latn","sk","sl","sq","sr-cyrl","sv","ta","te","th","tk","tr","uk","zh-latn-pinyin"])
302
+ class D{constructor(t=0,e=0){this.x=t,this.y=e}set(t,e){return this.x=t,this.y=e,this}clone(){return new D(this.x,this.y)}ti(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}sub(t){return this.x-=t.x,this.y-=t.y,this}multiply(t){return this.x*=t,this.y*=t,this}ei(t){return this.x/=t,this.y/=t,this}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}ii(){return this.x*this.x+this.y*this.y}normalize(){const t=this.length()
303
+ return t>0&&this.ei(t),this}si(t){return this.x*t.x+this.y*t.y}ni(t){const e=this.x-t.x,i=this.y-t.y
304
+ return Math.sqrt(e*e+i*i)}ri(t){const e=this.x-t.x,i=this.y-t.y
305
+ return e*e+i*i}equals(t){return this.x===t.x&&this.y===t.y}angle(){return Math.atan2(this.y,this.x)}}class P{constructor(t=0,e=0,i=0){this.x=t,this.y=e,this.z=i}set(t,e,i){return this.x=t,this.y=e,this.z=i,this}clone(){return new P(this.x,this.y,this.z)}ti(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}multiply(t){return this.x*=t,this.y*=t,this.z*=t,this}ei(t){return this.x/=t,this.y/=t,this.z/=t,this}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}ii(){return this.x*this.x+this.y*this.y+this.z*this.z}normalize(){const t=this.length()
306
+ return t>0&&this.ei(t),this}si(t){return this.x*t.x+this.y*t.y+this.z*t.z}oi(t){const e=this.z*t.x-this.x*t.z,i=this.x*t.y-this.y*t.x
307
+ return this.x=this.y*t.z-this.z*t.y,this.y=e,this.z=i,this}ni(t){const e=this.x-t.x,i=this.y-t.y,s=this.z-t.z
308
+ return Math.sqrt(e*e+i*i+s*s)}ri(t){const e=this.x-t.x,i=this.y-t.y,s=this.z-t.z
309
+ return e*e+i*i+s*s}equals(t){return this.x===t.x&&this.y===t.y&&this.z===t.z}}class R{constructor(t={}){this.cache=new Map,this.head=null,this.hi=null,this.stats={ai:0,ci:0,li:0,size:0,ui:0},this.options={i:t.i??1/0,o:t.o??1/0,h:t.h??(()=>0),fi:t.fi}}get(t){const e=this.cache.get(t)
310
+ return e?(this.stats.ai++,this.di(e),e.value):void this.stats.ci++}has(t){return this.cache.has(t)}set(t,e){const i=this.cache.get(t)
290
311
  if(i){const t=this.options.h(i.value),s=this.options.h(e)
291
- return this.stats.ai=this.stats.ai-t+s,i.value=e,void this.ci(i)}const s=this.options.h(e)
292
- this.ui(s)
293
- const n={key:t,value:e,fi:null,next:null}
294
- this.cache.set(t,n),this.di(n),this.stats.size=this.cache.size,this.stats.ai+=s}delete(t){const e=this.cache.get(t)
312
+ return this.stats.ui=this.stats.ui-t+s,i.value=e,void this.di(i)}const s=this.options.h(e)
313
+ this.yi(s)
314
+ const n={key:t,value:e,pi:null,next:null}
315
+ this.cache.set(t,n),this.wi(n),this.stats.size=this.cache.size,this.stats.ui+=s}delete(t){const e=this.cache.get(t)
295
316
  if(!e)return!1
296
317
  const i=this.options.h(e.value)
297
- return this.removeNode(e),this.cache.delete(t),this.stats.size=this.cache.size,this.stats.ai-=i,this.options.li&&this.options.li(t,e.value),!0}clear(){if(this.options.li)for(const[t,e]of this.cache)this.options.li(t,e.value)
298
- this.cache.clear(),this.head=null,this.ni=null,this.stats={ri:0,oi:0,hi:0,size:0,ai:0}}getStats(){const t=this.stats.ri+this.stats.oi
299
- return{...this.stats,yi:t>0?this.stats.ri/t*100:0,pi:this.stats.ai/1048576}}keys(){const t=[]
318
+ return this.removeNode(e),this.cache.delete(t),this.stats.size=this.cache.size,this.stats.ui-=i,this.options.fi&&this.options.fi(t,e.value),!0}clear(){if(this.options.fi)for(const[t,e]of this.cache)this.options.fi(t,e.value)
319
+ this.cache.clear(),this.head=null,this.hi=null,this.stats={ai:0,ci:0,li:0,size:0,ui:0}}getStats(){const t=this.stats.ai+this.stats.ci
320
+ return{...this.stats,mi:t>0?this.stats.ai/t*100:0,gi:this.stats.ui/1048576}}keys(){const t=[]
300
321
  let e=this.head
301
322
  for(;e;)t.push(e.key),e=e.next
302
- return t}get size(){return this.cache.size}ui(t){for(;this.cache.size>=this.options.i&&this.ni;)this.gi()
303
- if(1/0>this.options.o)for(;this.ni&&this.stats.ai+t>this.options.o;)this.gi()}gi(){if(!this.ni)return
304
- const t=this.ni,e=this.options.h(t.value)
305
- this.wi(),this.cache.delete(t.key),this.stats.size=this.cache.size,this.stats.ai-=e,this.stats.hi++,this.options.li&&this.options.li(t.key,t.value)}di(t){t.fi=null,t.next=null,this.head?(t.next=this.head,this.head.fi=t,this.head=t):this.head=this.ni=t}removeNode(t){t.fi?t.fi.next=t.next:this.head=t.next,t.next?t.next.fi=t.fi:this.ni=t.fi}wi(){this.ni&&this.removeNode(this.ni)}ci(t){t!==this.head&&(this.removeNode(t),this.di(t))}}const R=new z({i:1/0,o:262144e3,h:n}),W=new z({i:1e3,h(t){let e=0
306
- for(const i of t.mi)e+=16*i.points.length
307
- return e+64}}),j=new z({i:1e3,h:n}),H=new z({i:2e3,h(){return 1}})
323
+ return t}get size(){return this.cache.size}yi(t){for(;this.cache.size>=this.options.i&&this.hi;)this.xi()
324
+ if(1/0>this.options.o)for(;this.hi&&this.stats.ui+t>this.options.o;)this.xi()}xi(){if(!this.hi)return
325
+ const t=this.hi,e=this.options.h(t.value)
326
+ this.Si(),this.cache.delete(t.key),this.stats.size=this.cache.size,this.stats.ui-=e,this.stats.li++,this.options.fi&&this.options.fi(t.key,t.value)}wi(t){t.pi=null,t.next=null,this.head?(t.next=this.head,this.head.pi=t,this.head=t):this.head=this.hi=t}removeNode(t){t.pi?t.pi.next=t.next:this.head=t.next,t.next?t.next.pi=t.pi:this.hi=t.pi}Si(){this.hi&&this.removeNode(this.hi)}di(t){t!==this.head&&(this.removeNode(t),this.wi(t))}}const z=new R({i:1/0,o:262144e3,h:n}),W=new R({i:1e3,h(t){let e=0
327
+ for(const i of t.bi)e+=16*i.points.length
328
+ return e+64}}),j=new R({i:1e3,h:n}),H=new R({i:2e3,h(){return 1}})
308
329
  var V="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},q={exports:{}}
309
330
  !(function(t){function e(t,e){return t.b===e.b&&t.a===e.a}function i(t,e){return e.b>t.b||t.b===e.b&&e.a>=t.a}function s(t,e,i){var s=e.b-t.b,n=i.b-e.b
310
331
  return s+n>0?n>s?e.a-t.a+s/(s+n)*(t.a-i.a):e.a-i.a+n/(s+n)*(i.a-t.a):0}function n(t,e,i){var s=e.b-t.b,n=i.b-e.b
311
332
  return s+n>0?(e.a-i.a)*s+(e.a-t.a)*n:0}function r(t,e){return e.a>t.a||t.a===e.a&&e.b>=t.b}function o(t,e,i){var s=e.a-t.a,n=i.a-e.a
312
333
  return s+n>0?n>s?e.b-t.b+s/(s+n)*(t.b-i.b):e.b-i.b+n/(s+n)*(i.b-t.b):0}function h(t,e,i){var s=e.a-t.a,n=i.a-e.a
313
- return s+n>0?(e.b-i.b)*s+(e.b-t.b)*n:0}function a(t){return i(t.b.a,t.a)}function l(t){return i(t.a,t.b.a)}function c(t,e,i,s){return(t=0>t?0:t)>(i=0>i?0:i)?s+i/(t+i)*(e-s):0===i?(e+s)/2:e+t/(t+i)*(s-e)}function u(t){var e=g(t.b)
314
- return m(e,t.c),m(e.b,t.c),v(e,t.a),e}function f(t,e){var i=!1,s=!1
315
- t!==e&&(e.a!==t.a&&(s=!0,S(e.a,t.a)),e.d!==t.d&&(i=!0,b(e.d,t.d)),w(e,t),s||(m(e,t.a),t.a.c=t),i||(v(e,t.d),t.d.a=t))}function d(t){var e=t.b,i=!1
316
- t.d!==t.b.d&&(i=!0,b(t.d,t.b.d)),t.c===t?S(t.a,null):(t.b.d.a=X(t),t.a.c=t.c,w(t,X(t)),i||v(t,t.d)),e.c===e?(S(e.a,null),b(e.d,null)):(t.d.a=X(e),e.a.c=e.c,w(e,X(e))),x(t)}function y(t){var e=g(t),i=e.b
317
- return w(e,t.e),e.a=t.b.a,m(i,e.a),e.d=i.d=t.d,e=e.b,w(t.b,X(t.b)),w(t.b,e),t.b.a=e.a,e.b.a.c=e.b,e.b.d=t.b.d,e.f=t.f,e.b.f=t.b.f,e}function p(t,e){var i=!1,s=g(t),n=s.b
318
- return e.d!==t.d&&(i=!0,b(e.d,t.d)),w(s,t.e),w(n,e),s.a=t.b.a,n.a=e.a,s.d=n.d=t.d,t.d.a=n,i||v(s,t.d),s}function g(t){var e=new K,i=new K,s=t.b.xi
319
- return i.xi=s,s.b.xi=e,e.xi=t,t.b.xi=i,e.b=i,e.c=e,e.e=i,i.b=e,i.c=i,i.e=e}function w(t,e){var i=t.c,s=e.c
334
+ return s+n>0?(e.b-i.b)*s+(e.b-t.b)*n:0}function a(t){return i(t.b.a,t.a)}function c(t){return i(t.a,t.b.a)}function l(t,e,i,s){return(t=0>t?0:t)>(i=0>i?0:i)?s+i/(t+i)*(e-s):0===i?(e+s)/2:e+t/(t+i)*(s-e)}function u(t){var e=w(t.b)
335
+ return m(e,t.c),m(e.b,t.c),g(e,t.a),e}function f(t,e){var i=!1,s=!1
336
+ t!==e&&(e.a!==t.a&&(s=!0,S(e.a,t.a)),e.d!==t.d&&(i=!0,b(e.d,t.d)),v(e,t),s||(m(e,t.a),t.a.c=t),i||(g(e,t.d),t.d.a=t))}function d(t){var e=t.b,i=!1
337
+ t.d!==t.b.d&&(i=!0,b(t.d,t.b.d)),t.c===t?S(t.a,null):(t.b.d.a=X(t),t.a.c=t.c,v(t,X(t)),i||g(t,t.d)),e.c===e?(S(e.a,null),b(e.d,null)):(t.d.a=X(e),e.a.c=e.c,v(e,X(e))),x(t)}function y(t){var e=w(t),i=e.b
338
+ return v(e,t.e),e.a=t.b.a,m(i,e.a),e.d=i.d=t.d,e=e.b,v(t.b,X(t.b)),v(t.b,e),t.b.a=e.a,e.b.a.c=e.b,e.b.d=t.b.d,e.f=t.f,e.b.f=t.b.f,e}function p(t,e){var i=!1,s=w(t),n=s.b
339
+ return e.d!==t.d&&(i=!0,b(e.d,t.d)),v(s,t.e),v(n,e),s.a=t.b.a,n.a=e.a,s.d=n.d=t.d,t.d.a=n,i||g(s,t.d),s}function w(t){var e=new K,i=new K,s=t.b.Ei
340
+ return i.Ei=s,s.b.Ei=e,e.Ei=t,t.b.Ei=i,e.b=i,e.c=e,e.e=i,i.b=e,i.c=i,i.e=e}function v(t,e){var i=t.c,s=e.c
320
341
  i.b.e=e,s.b.e=t,t.c=s,e.c=i}function m(t,e){var i=e.f,s=new Z(e,i)
321
342
  i.e=s,e.f=s,i=s.c=t
322
- do{i.a=s,i=i.c}while(i!==t)}function v(t,e){var i=e.d,s=new Y(e,i)
343
+ do{i.a=s,i=i.c}while(i!==t)}function g(t,e){var i=e.d,s=new Y(e,i)
323
344
  i.b=s,e.d=s,s.a=t,s.c=e.c,i=t
324
- do{i.d=s,i=i.e}while(i!==t)}function x(t){var e=t.xi
325
- e.b.xi=t=t.b.xi,t.b.xi=e}function S(t,e){var i=t.c,s=i
345
+ do{i.d=s,i=i.e}while(i!==t)}function x(t){var e=t.Ei
346
+ e.b.Ei=t=t.b.Ei,t.b.Ei=e}function S(t,e){var i=t.c,s=i
326
347
  do{s.a=e,s=s.c}while(s!==i);(s=t.e).f=i=t.f,i.e=s}function b(t,e){var i=t.a,s=i
327
- do{s.d=e,s=s.e}while(s!==i);(s=t.b).d=i=t.d,i.b=s}function T(t){var e=0
328
- return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e}function E(t,e){t.f+=e.f,t.b.f+=e.b.f}function _(t,e,r){return r=r.a,(e=e.a).b.a===(t=t.a)?r.b.a===t?i(e.a,r.a)?0>=n(r.b.a,e.a,r.a):n(e.b.a,r.a,e.a)>=0:0>=n(r.b.a,t,r.a):r.b.a===t?n(e.b.a,t,e.a)>=0:(e=s(e.b.a,t,e.a))>=(t=s(r.b.a,t,r.a))}function A(t){t.a.Si=null
348
+ do{s.d=e,s=s.e}while(s!==i);(s=t.b).d=i=t.d,i.b=s}function E(t){var e=0
349
+ return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e}function _(t,e){t.f+=e.f,t.b.f+=e.b.f}function T(t,e,r){return r=r.a,(e=e.a).b.a===(t=t.a)?r.b.a===t?i(e.a,r.a)?0>=n(r.b.a,e.a,r.a):n(e.b.a,r.a,e.a)>=0:0>=n(r.b.a,t,r.a):r.b.a===t?n(e.b.a,t,e.a)>=0:(e=s(e.b.a,t,e.a))>=(t=s(r.b.a,t,r.a))}function A(t){t.a._i=null
329
350
  var e=t.e
330
- e.a.c=e.c,e.c.a=e.a,t.e=null}function L(t,e){d(t.a),t.c=!1,t.a=e,e.Si=t}function M(t){var e=t.a.a
351
+ e.a.c=e.c,e.c.a=e.a,t.e=null}function L(t,e){d(t.a),t.c=!1,t.a=e,e._i=t}function M(t){var e=t.a.a
331
352
  do{t=ut(t)}while(t.a.a===e)
332
- return t.c&&(L(t,e=p(ct(t).a.b,t.a.e)),t=ut(t)),t}function G(t,e,i){var s=new lt
333
- return s.a=i,s.e=W(t.f,e.e,s),i.Si=s}function F(t,e){switch(t.s){case 100130:return!!(1&e)
353
+ return t.c&&(L(t,e=p(lt(t).a.b,t.a.e)),t=ut(t)),t}function I(t,e,i){var s=new ct
354
+ return s.a=i,s.e=W(t.f,e.e,s),i._i=s}function G(t,e){switch(t.s){case 100130:return!!(1&e)
334
355
  case 100131:return 0!==e
335
356
  case 100132:return e>0
336
357
  case 100133:return 0>e
337
- case 100134:return e>=2||-2>=e}return!1}function I(t){var e=t.a,i=e.d
338
- i.c=t.d,i.a=e,A(t)}function O(t,e,i){for(t=e,e=e.a;t!==i;){t.c=!1
339
- var s=ct(t),n=s.a
340
- if(n.a!==e.a){if(!s.c){I(t)
341
- break}L(s,n=p(e.c.b,n.b))}e.c!==n&&(f(X(n),n),f(e,n)),I(t),e=s.a,t=s}return e}function C(t,e,i,s,n,r){var o=!0
342
- do{G(t,e,i.b),i=i.c}while(i!==s)
343
- for(null===n&&(n=ct(e).a.b.c);(i=(s=ct(e)).a.b).a===n.a;)i.c!==n&&(f(X(i),i),f(X(n),i)),s.f=e.f-i.f,s.d=F(t,s.f),e.b=!0,!o&&U(t,e)&&(E(i,n),A(e),d(n)),o=!1,e=s,n=i
344
- e.b=!0,r&&P(t,e)}function k(t,e,i,s,n){var r=[e.g[0],e.g[1],e.g[2]]
345
- e.d=null,e.d=t.bi&&t.bi(r,i,s,t.c)||null,null===e.d&&(n?t.n||(J(t,100156),t.n=!0):e.d=i[0])}function B(t,e,i){var s=[null,null,null,null]
346
- s[0]=e.a.d,s[1]=i.a.d,k(t,e.a,s,[.5,.5,0,0],!1),f(e,i)}function $(t,e,i,s,n){var r=Math.abs(e.b-t.b)+Math.abs(e.a-t.a),o=Math.abs(i.b-t.b)+Math.abs(i.a-t.a),h=n+1
347
- s[n]=.5*o/(r+o),s[h]=.5*r/(r+o),t.g[0]+=s[n]*e.g[0]+s[h]*i.g[0],t.g[1]+=s[n]*e.g[1]+s[h]*i.g[1],t.g[2]+=s[n]*e.g[2]+s[h]*i.g[2]}function U(t,s){var r=ct(s),o=s.a,h=r.a
358
+ case 100134:return e>=2||-2>=e}return!1}function O(t){var e=t.a,i=e.d
359
+ i.c=t.d,i.a=e,A(t)}function F(t,e,i){for(t=e,e=e.a;t!==i;){t.c=!1
360
+ var s=lt(t),n=s.a
361
+ if(n.a!==e.a){if(!s.c){O(t)
362
+ break}L(s,n=p(e.c.b,n.b))}e.c!==n&&(f(X(n),n),f(e,n)),O(t),e=s.a,t=s}return e}function k(t,e,i,s,n,r){var o=!0
363
+ do{I(t,e,i.b),i=i.c}while(i!==s)
364
+ for(null===n&&(n=lt(e).a.b.c);(i=(s=lt(e)).a.b).a===n.a;)i.c!==n&&(f(X(i),i),f(X(n),i)),s.f=e.f-i.f,s.d=G(t,s.f),e.b=!0,!o&&U(t,e)&&(_(i,n),A(e),d(n)),o=!1,e=s,n=i
365
+ e.b=!0,r&&D(t,e)}function C(t,e,i,s,n){var r=[e.g[0],e.g[1],e.g[2]]
366
+ e.d=null,e.d=t.Ti&&t.Ti(r,i,s,t.c)||null,null===e.d&&(n?t.n||(J(t,100156),t.n=!0):e.d=i[0])}function B(t,e,i){var s=[null,null,null,null]
367
+ s[0]=e.a.d,s[1]=i.a.d,C(t,e.a,s,[.5,.5,0,0],!1),f(e,i)}function $(t,e,i,s,n){var r=Math.abs(e.b-t.b)+Math.abs(e.a-t.a),o=Math.abs(i.b-t.b)+Math.abs(i.a-t.a),h=n+1
368
+ s[n]=.5*o/(r+o),s[h]=.5*r/(r+o),t.g[0]+=s[n]*e.g[0]+s[h]*i.g[0],t.g[1]+=s[n]*e.g[1]+s[h]*i.g[1],t.g[2]+=s[n]*e.g[2]+s[h]*i.g[2]}function U(t,s){var r=lt(s),o=s.a,h=r.a
348
369
  if(i(o.a,h.a)){if(n(h.b.a,o.a,h.a)>0)return!1
349
370
  if(e(o.a,h.a)){if(o.a!==h.a){r=t.e
350
- var a=o.a.xi
371
+ var a=o.a.Ei
351
372
  if(0>a)for(r.c[-(a+1)]=null;r.a>0&&null===r.c[r.d[r.a-1]];)--r.a
352
- else{var l=(r=r.b).d,c=r.e,u=r.c,d=u[a]
353
- l[d]=l[r.a],u[l[d]]=d,d<=--r.a&&(d>1?i(c[l[d>>1]],c[l[d]])?ht(r,d):at(r,d):ht(r,d)),c[a]=null,u[a]=r.b,r.b=a}B(t,X(h),o)}}else y(h.b),f(o,X(h)),s.b=r.b=!0}else{if(0>n(o.b.a,h.a,o.a))return!1
354
- ut(s).b=s.b=!0,y(o.b),f(X(h),o)}return!0}function N(t,a){var l=ct(a),u=a.a,d=l.a,p=u.a,g=d.a,w=u.b.a,m=d.b.a,v=new Z
355
- if(n(w,t.a,p),n(m,t.a,g),p===g||Math.min(p.a,w.a)>Math.max(g.a,m.a))return!1
356
- if(i(p,g)){if(n(m,p,g)>0)return!1}else if(0>n(w,g,p))return!1
357
- var x,S,b=w,T=p,E=m,_=g
358
- if(i(b,T)||(x=b,b=T,T=x),i(E,_)||(x=E,E=_,_=x),i(b,E)||(x=b,b=E,E=x,x=T,T=_,_=x),i(E,T)?i(T,_)?(0>(x=s(b,E,T))+(S=s(E,T,_))&&(x=-x,S=-S),v.b=c(x,E.b,S,T.b)):(0>(x=n(b,E,T))+(S=-n(b,_,T))&&(x=-x,S=-S),v.b=c(x,E.b,S,_.b)):v.b=(E.b+T.b)/2,r(b,T)||(x=b,b=T,T=x),r(E,_)||(x=E,E=_,_=x),r(b,E)||(x=b,b=E,E=x,x=T,T=_,_=x),r(E,T)?r(T,_)?(0>(x=o(b,E,T))+(S=o(E,T,_))&&(x=-x,S=-S),v.a=c(x,E.a,S,T.a)):(0>(x=h(b,E,T))+(S=-h(b,_,T))&&(x=-x,S=-S),v.a=c(x,E.a,S,_.a)):v.a=(E.a+T.a)/2,i(v,t.a)&&(v.b=t.a.b,v.a=t.a.a),b=i(p,g)?p:g,i(b,v)&&(v.b=b.b,v.a=b.a),e(v,p)||e(v,g))return U(t,a),!1
359
- if(!e(w,t.a)&&n(w,t.a,v)>=0||!e(m,t.a)&&0>=n(m,t.a,v)){if(m===t.a)return y(u.b),f(d.b,u),u=ct(a=M(a)).a,O(t,ct(a),l),C(t,a,X(u),u,u,!0),!0
360
- if(w===t.a){y(d.b),f(u.e,X(d)),g=(p=l=a).a.b.a
361
- do{p=ut(p)}while(p.a.b.a===g)
362
- return p=ct(a=p).a.b.c,l.a=X(d),C(t,a,(d=O(t,l,null)).c,u.b.c,p,!0),!0}return n(w,t.a,v)>=0&&(ut(a).b=a.b=!0,y(u.b),u.a.b=t.a.b,u.a.a=t.a.a),0>=n(m,t.a,v)&&(a.b=l.b=!0,y(d.b),d.a.b=t.a.b,d.a.a=t.a.a),!1}return y(u.b),y(d.b),f(X(d),u),u.a.b=v.b,u.a.a=v.a,u.a.xi=et(t.e,u.a),d=[0,0,0,0],v=[p.d,w.d,g.d,m.d],(u=u.a).g[0]=u.g[1]=u.g[2]=0,$(u,p,w,d,0),$(u,g,m,d,2),k(t,u,v,d,!0),ut(a).b=a.b=l.b=!0,!1}function P(t,e){for(var s=ct(e);;){for(;s.b;)e=s,s=ct(s)
373
+ else{var c=(r=r.b).d,l=r.e,u=r.c,d=u[a]
374
+ c[d]=c[r.a],u[c[d]]=d,d<=--r.a&&(d>1?i(l[c[d>>1]],l[c[d]])?ht(r,d):at(r,d):ht(r,d)),l[a]=null,u[a]=r.b,r.b=a}B(t,X(h),o)}}else y(h.b),f(o,X(h)),s.b=r.b=!0}else{if(0>n(o.b.a,h.a,o.a))return!1
375
+ ut(s).b=s.b=!0,y(o.b),f(X(h),o)}return!0}function N(t,a){var c=lt(a),u=a.a,d=c.a,p=u.a,w=d.a,v=u.b.a,m=d.b.a,g=new Z
376
+ if(n(v,t.a,p),n(m,t.a,w),p===w||Math.min(p.a,v.a)>Math.max(w.a,m.a))return!1
377
+ if(i(p,w)){if(n(m,p,w)>0)return!1}else if(0>n(v,w,p))return!1
378
+ var x,S,b=v,E=p,_=m,T=w
379
+ if(i(b,E)||(x=b,b=E,E=x),i(_,T)||(x=_,_=T,T=x),i(b,_)||(x=b,b=_,_=x,x=E,E=T,T=x),i(_,E)?i(E,T)?(0>(x=s(b,_,E))+(S=s(_,E,T))&&(x=-x,S=-S),g.b=l(x,_.b,S,E.b)):(0>(x=n(b,_,E))+(S=-n(b,T,E))&&(x=-x,S=-S),g.b=l(x,_.b,S,T.b)):g.b=(_.b+E.b)/2,r(b,E)||(x=b,b=E,E=x),r(_,T)||(x=_,_=T,T=x),r(b,_)||(x=b,b=_,_=x,x=E,E=T,T=x),r(_,E)?r(E,T)?(0>(x=o(b,_,E))+(S=o(_,E,T))&&(x=-x,S=-S),g.a=l(x,_.a,S,E.a)):(0>(x=h(b,_,E))+(S=-h(b,T,E))&&(x=-x,S=-S),g.a=l(x,_.a,S,T.a)):g.a=(_.a+E.a)/2,i(g,t.a)&&(g.b=t.a.b,g.a=t.a.a),b=i(p,w)?p:w,i(b,g)&&(g.b=b.b,g.a=b.a),e(g,p)||e(g,w))return U(t,a),!1
380
+ if(!e(v,t.a)&&n(v,t.a,g)>=0||!e(m,t.a)&&0>=n(m,t.a,g)){if(m===t.a)return y(u.b),f(d.b,u),u=lt(a=M(a)).a,F(t,lt(a),c),k(t,a,X(u),u,u,!0),!0
381
+ if(v===t.a){y(d.b),f(u.e,X(d)),w=(p=c=a).a.b.a
382
+ do{p=ut(p)}while(p.a.b.a===w)
383
+ return p=lt(a=p).a.b.c,c.a=X(d),k(t,a,(d=F(t,c,null)).c,u.b.c,p,!0),!0}return n(v,t.a,g)>=0&&(ut(a).b=a.b=!0,y(u.b),u.a.b=t.a.b,u.a.a=t.a.a),0>=n(m,t.a,g)&&(a.b=c.b=!0,y(d.b),d.a.b=t.a.b,d.a.a=t.a.a),!1}return y(u.b),y(d.b),f(X(d),u),u.a.b=g.b,u.a.a=g.a,u.a.Ei=et(t.e,u.a),d=[0,0,0,0],g=[p.d,v.d,w.d,m.d],(u=u.a).g[0]=u.g[1]=u.g[2]=0,$(u,p,v,d,0),$(u,w,m,d,2),C(t,u,g,d,!0),ut(a).b=a.b=c.b=!0,!1}function D(t,e){for(var s=lt(e);;){for(;s.b;)e=s,s=lt(s)
363
384
  if(!e.b&&(s=e,null===(e=ut(e))||!e.b))break
364
385
  e.b=!1
365
386
  var r,o=e.a,h=s.a
366
- if(r=o.b.a!==h.b.a)t:{var a=ct(r=e),l=r.a,c=a.a,u=void 0
367
- if(i(l.b.a,c.b.a)){if(0>n(l.b.a,c.b.a,l.a)){r=!1
368
- break t}ut(r).b=r.b=!0,u=y(l),f(c.b,u),u.d.c=r.d}else{if(n(c.b.a,l.b.a,c.a)>0){r=!1
369
- break t}r.b=a.b=!0,u=y(c),f(l.e,c.b),u.b.d.c=r.d}r=!0}if(r&&(s.c?(A(s),d(h),h=(s=ct(e)).a):e.c&&(A(e),d(o),o=(e=ut(s)).a)),o.a!==h.a)if(o.b.a===h.b.a||e.c||s.c||o.b.a!==t.a&&h.b.a!==t.a)U(t,e)
387
+ if(r=o.b.a!==h.b.a)t:{var a=lt(r=e),c=r.a,l=a.a,u=void 0
388
+ if(i(c.b.a,l.b.a)){if(0>n(c.b.a,l.b.a,c.a)){r=!1
389
+ break t}ut(r).b=r.b=!0,u=y(c),f(l.b,u),u.d.c=r.d}else{if(n(l.b.a,c.b.a,l.a)>0){r=!1
390
+ break t}r.b=a.b=!0,u=y(l),f(c.e,l.b),u.b.d.c=r.d}r=!0}if(r&&(s.c?(A(s),d(h),h=(s=lt(e)).a):e.c&&(A(e),d(o),o=(e=ut(s)).a)),o.a!==h.a)if(o.b.a===h.b.a||e.c||s.c||o.b.a!==t.a&&h.b.a!==t.a)U(t,e)
370
391
  else if(N(t,e))break
371
- o.a===h.a&&o.b.a===h.b.a&&(E(h,o),A(e),d(o),e=ut(s))}}function D(t,s){t.a=s
372
- for(var r=s.c;null===r.Si;)if((r=r.c)===s.c){r=t
373
- var o=s;(u=new lt).a=o.c.b
374
- var h=(c=r.f).a
375
- do{h=h.a}while(null!==h.b&&!c.c(c.b,u,h.b))
376
- if(h=(l=ct(c=h.b)).a,0===n((u=c.a).b.a,o,u.a))e((u=c.a).a,o)||e(u.b.a,o)||(y(u.b),c.c&&(d(u.c),c.c=!1),f(o.c,u),D(r,o))
377
- else{var a=i(h.b.a,u.b.a)?c:l,l=void 0
378
- c.d||a.c?(l=a===c?p(o.c.b,u.e):p(h.b.c.b,o.c).b,a.c?L(a,l):(u=r,(c=G(r,c,l)).f=ut(c).f+c.a.f,c.d=F(u,c.f)),D(r,o)):C(r,c,o.c,o.c,null,!0)}return}if(c=(u=ct(r=M(r.Si))).a,(u=O(t,u,null)).c===c){var c,u=(c=u).c,g=(h=ct(r),!1);(l=r.a).b.a!==(a=h.a).b.a&&N(t,r),e(l.a,t.a)&&(f(X(u),l),u=ct(r=M(r)).a,O(t,ct(r),h),g=!0),e(a.a,t.a)&&(f(c,X(a)),c=O(t,h,null),g=!0),g?C(t,r,c.c,u,u,!0):(o=i(a.a,l.a)?X(a):l,C(t,r,o=p(c.c.b,o),o.c,o.c,!1),o.b.Si.c=!0,P(t,r))}else C(t,r,u.c,c,c,!0)}function z(t,e){var i=new lt,s=u(t.b)
379
- s.a.b=dt,s.a.a=e,s.b.a.b=-dt,s.b.a.a=e,t.a=s.b.a,i.a=s,i.f=0,i.d=!1,i.c=!1,i.xi=!0,i.b=!1,s=W(s=t.f,s.a,i),i.e=s}function R(t){this.a=new j,this.b=t,this.c=_}function W(t,e,i){do{e=e.c}while(null!==e.b&&!t.c(t.b,e.b,i))
380
- return t=new j(i,e.a,e),e.a.c=t,e.a=t}function j(t,e,i){this.b=t||null,this.a=e||this,this.c=i||this}function H(){this.d=yt,this.Ti=this.b=this.Ei=null,this._i=[0,0,0],this.s=100130,this.n=!1,this.bi=this.a=this.e=this.f=null,this.Ai=!1,this.c=this.r=this.Si=this.Li=this.Mi=this.xi=null}function q(t,e){if(t.d!==e)for(;t.d!==e;)if(e>t.d)switch(t.d){case yt:J(t,100151),t.Gi(null)
392
+ o.a===h.a&&o.b.a===h.b.a&&(_(h,o),A(e),d(o),e=ut(s))}}function P(t,s){t.a=s
393
+ for(var r=s.c;null===r._i;)if((r=r.c)===s.c){r=t
394
+ var o=s;(u=new ct).a=o.c.b
395
+ var h=(l=r.f).a
396
+ do{h=h.a}while(null!==h.b&&!l.c(l.b,u,h.b))
397
+ if(h=(c=lt(l=h.b)).a,0===n((u=l.a).b.a,o,u.a))e((u=l.a).a,o)||e(u.b.a,o)||(y(u.b),l.c&&(d(u.c),l.c=!1),f(o.c,u),P(r,o))
398
+ else{var a=i(h.b.a,u.b.a)?l:c,c=void 0
399
+ l.d||a.c?(c=a===l?p(o.c.b,u.e):p(h.b.c.b,o.c).b,a.c?L(a,c):(u=r,(l=I(r,l,c)).f=ut(l).f+l.a.f,l.d=G(u,l.f)),P(r,o)):k(r,l,o.c,o.c,null,!0)}return}if(l=(u=lt(r=M(r._i))).a,(u=F(t,u,null)).c===l){var l,u=(l=u).c,w=(h=lt(r),!1);(c=r.a).b.a!==(a=h.a).b.a&&N(t,r),e(c.a,t.a)&&(f(X(u),c),u=lt(r=M(r)).a,F(t,lt(r),h),w=!0),e(a.a,t.a)&&(f(l,X(a)),l=F(t,h,null),w=!0),w?k(t,r,l.c,u,u,!0):(o=i(a.a,c.a)?X(a):c,k(t,r,o=p(l.c.b,o),o.c,o.c,!1),o.b._i.c=!0,D(t,r))}else k(t,r,u.c,l,l,!0)}function R(t,e){var i=new ct,s=u(t.b)
400
+ s.a.b=dt,s.a.a=e,s.b.a.b=-dt,s.b.a.a=e,t.a=s.b.a,i.a=s,i.f=0,i.d=!1,i.c=!1,i.Ei=!0,i.b=!1,s=W(s=t.f,s.a,i),i.e=s}function z(t){this.a=new j,this.b=t,this.c=T}function W(t,e,i){do{e=e.c}while(null!==e.b&&!t.c(t.b,e.b,i))
401
+ return t=new j(i,e.a,e),e.a.c=t,e.a=t}function j(t,e,i){this.b=t||null,this.a=e||this,this.c=i||this}function H(){this.d=yt,this.Ai=this.b=this.Li=null,this.Mi=[0,0,0],this.s=100130,this.n=!1,this.Ti=this.a=this.e=this.f=null,this.Ii=!1,this.c=this.r=this._i=this.Gi=this.Oi=this.Ei=null}function q(t,e){if(t.d!==e)for(;t.d!==e;)if(e>t.d)switch(t.d){case yt:J(t,100151),t.Fi(null)
381
402
  break
382
- case 1:J(t,100152),t.Fi()}else switch(t.d){case 2:J(t,100154),t.Ii()
403
+ case 1:J(t,100152),t.ki()}else switch(t.d){case 2:J(t,100154),t.Ci()
383
404
  break
384
- case 1:J(t,100153),t.w()}}function J(t,e){t.Ti&&t.Ti(e,t.c)}function Y(t,e){this.b=t||this,this.d=e||this,this.a=null,this.c=!1}function K(){this.xi=this,this.Si=this.d=this.a=this.e=this.c=this.b=null,this.f=0}function X(t){return t.b.e}function Q(){this.c=new Z,this.a=new Y,this.b=new K,this.d=new K,this.b.b=this.d,this.d.b=this.b}function Z(t,e){this.e=t||this,this.f=e||this,this.d=this.c=null,this.g=[0,0,0],this.xi=this.a=this.b=0}function tt(){this.c=[],this.d=null,this.a=0,this.e=!1,this.b=new st}function et(t,e){if(t.e){var i,s=t.b,n=++s.a
385
- return 2*n>s.f&&(s.f*=2,s.c=nt(s.c,s.f+1)),0===s.b?i=n:(i=s.b,s.b=s.c[s.b]),s.e[i]=e,s.c[i]=n,s.d[n]=i,s.xi&&at(s,n),i}return s=t.a++,t.c[s]=e,-(s+1)}function it(t){if(0===t.a)return ot(t.b)
405
+ case 1:J(t,100153),t.w()}}function J(t,e){t.Ai&&t.Ai(e,t.c)}function Y(t,e){this.b=t||this,this.d=e||this,this.a=null,this.c=!1}function K(){this.Ei=this,this._i=this.d=this.a=this.e=this.c=this.b=null,this.f=0}function X(t){return t.b.e}function Q(){this.c=new Z,this.a=new Y,this.b=new K,this.d=new K,this.b.b=this.d,this.d.b=this.b}function Z(t,e){this.e=t||this,this.f=e||this,this.d=this.c=null,this.g=[0,0,0],this.Ei=this.a=this.b=0}function tt(){this.c=[],this.d=null,this.a=0,this.e=!1,this.b=new st}function et(t,e){if(t.e){var i,s=t.b,n=++s.a
406
+ return 2*n>s.f&&(s.f*=2,s.c=nt(s.c,s.f+1)),0===s.b?i=n:(i=s.b,s.b=s.c[s.b]),s.e[i]=e,s.c[i]=n,s.d[n]=i,s.Ei&&at(s,n),i}return s=t.a++,t.c[s]=e,-(s+1)}function it(t){if(0===t.a)return ot(t.b)
386
407
  var e=t.c[t.d[t.a-1]]
387
408
  if(0!==t.b.a&&i(rt(t.b),e))return ot(t.b)
388
409
  do{--t.a}while(t.a>0&&null===t.c[t.d[t.a-1]])
389
- return e}function st(){this.d=nt([0],33),this.e=[null,null],this.c=[0,0],this.a=0,this.f=32,this.b=0,this.xi=!1,this.d[1]=1}function nt(t,e){for(var i=Array(e),s=0;t.length>s;s++)i[s]=t[s]
410
+ return e}function st(){this.d=nt([0],33),this.e=[null,null],this.c=[0,0],this.a=0,this.f=32,this.b=0,this.Ei=!1,this.d[1]=1}function nt(t,e){for(var i=Array(e),s=0;t.length>s;s++)i[s]=t[s]
390
411
  for(;e>s;s++)i[s]=0
391
412
  return i}function rt(t){return t.e[t.d[1]]}function ot(t){var e=t.d,i=t.e,s=t.c,n=e[1],r=i[n]
392
413
  return t.a>0&&(e[1]=e[t.a],s[e[1]]=1,i[n]=null,s[n]=t.b,t.b=n,--t.a>0&&ht(t,1)),r}function ht(t,e){for(var s=t.d,n=t.e,r=t.c,o=e,h=s[o];;){var a=o<<1
393
414
  t.a>a&&i(n[s[a+1]],n[s[a]])&&(a+=1)
394
- var l=s[a]
395
- if(a>t.a||i(n[h],n[l])){s[o]=h,r[h]=o
396
- break}s[o]=l,r[l]=o,o=a}}function at(t,e){for(var s=t.d,n=t.e,r=t.c,o=e,h=s[o];;){var a=o>>1,l=s[a]
397
- if(0===a||i(n[l],n[h])){s[o]=h,r[h]=o
398
- break}s[o]=l,r[l]=o,o=a}}function lt(){this.e=this.a=null,this.f=0,this.c=this.b=this.xi=this.d=!1}function ct(t){return t.e.c.b}function ut(t){return t.e.a.b}var ft,dt=4e150,yt=0;(ft=H.prototype).x=function(){q(this,yt)},ft.B=function(t,e){switch(t){case 100142:return
415
+ var c=s[a]
416
+ if(a>t.a||i(n[h],n[c])){s[o]=h,r[h]=o
417
+ break}s[o]=c,r[c]=o,o=a}}function at(t,e){for(var s=t.d,n=t.e,r=t.c,o=e,h=s[o];;){var a=o>>1,c=s[a]
418
+ if(0===a||i(n[c],n[h])){s[o]=h,r[h]=o
419
+ break}s[o]=c,r[c]=o,o=a}}function ct(){this.e=this.a=null,this.f=0,this.c=this.b=this.Ei=this.d=!1}function lt(t){return t.e.c.b}function ut(t){return t.e.a.b}var ft,dt=4e150,yt=0;(ft=H.prototype).x=function(){q(this,yt)},ft.B=function(t,e){switch(t){case 100142:return
399
420
  case 100140:switch(e){case 100130:case 100131:case 100132:case 100133:case 100134:return void(this.s=e)}break
400
- case 100141:return void(this.Ai=!!e)
421
+ case 100141:return void(this.Ii=!!e)
401
422
  default:return void J(this,100900)}J(this,100901)},ft.y=function(t){switch(t){case 100142:return 0
402
423
  case 100140:return this.s
403
- case 100141:return this.Ai
404
- default:J(this,100900)}return!1},ft.A=function(t,e,i){this._i[0]=t,this._i[1]=e,this._i[2]=i},ft.z=function(t,e){var i=e||null
405
- switch(t){case 100100:case 100106:this.xi=i
424
+ case 100141:return this.Ii
425
+ default:J(this,100900)}return!1},ft.A=function(t,e,i){this.Mi[0]=t,this.Mi[1]=e,this.Mi[2]=i},ft.z=function(t,e){var i=e||null
426
+ switch(t){case 100100:case 100106:this.Ei=i
406
427
  break
407
- case 100104:case 100110:this.Mi=i
428
+ case 100104:case 100110:this.Oi=i
408
429
  break
409
- case 100101:case 100107:this.Li=i
430
+ case 100101:case 100107:this.Gi=i
410
431
  break
411
- case 100102:case 100108:this.Si=i
432
+ case 100102:case 100108:this._i=i
412
433
  break
413
- case 100103:case 100109:this.Ti=i
434
+ case 100103:case 100109:this.Ai=i
414
435
  break
415
- case 100105:case 100111:this.bi=i
436
+ case 100105:case 100111:this.Ti=i
416
437
  break
417
438
  case 100112:this.r=i
418
439
  break
419
440
  default:J(this,100900)}},ft.C=function(t,e){var i=!1,s=[0,0,0]
420
441
  q(this,2)
421
- for(var n=0;3>n;++n){var r=t[n];-1e150>r&&(r=-1e150,i=!0),r>1e150&&(r=1e150,i=!0),s[n]=r}i&&J(this,100155),null===(i=this.Ei)?f(i=u(this.b),i.b):(y(i),i=i.e),i.a.d=e,i.a.g[0]=s[0],i.a.g[1]=s[1],i.a.g[2]=s[2],i.f=1,i.b.f=-1,this.Ei=i},ft.Gi=function(t){q(this,yt),this.d=1,this.b=new Q,this.c=t},ft.Fi=function(){q(this,1),this.d=2,this.Ei=null},ft.Ii=function(){q(this,2),this.d=1},ft.w=function(){q(this,1),this.d=yt
422
- var t=!1,s=[u=this._i[0],r=this._i[1],h=this._i[2]]
423
- if(0===u&&0===r&&0===h){for(var r=[-2e150,-2e150,-2e150],o=[2e150,2e150,2e150],h=[],c=[],u=(t=this.b.c).e;u!==t;u=u.e)for(var f=0;3>f;++f){var y=u.g[f]
424
- o[f]>y&&(o[f]=y,c[f]=u),y>r[f]&&(r[f]=y,h[f]=u)}if(u=0,r[1]-o[1]>r[0]-o[0]&&(u=1),r[2]-o[2]>r[u]-o[u]&&(u=2),r[u]>o[u]){for(r=0,o=c[u],c=[0,0,0],o=[o.g[0]-(h=h[u]).g[0],o.g[1]-h.g[1],o.g[2]-h.g[2]],f=[0,0,0],u=t.e;u!==t;u=u.e)f[0]=u.g[0]-h.g[0],f[1]=u.g[1]-h.g[1],f[2]=u.g[2]-h.g[2],c[0]=o[1]*f[2]-o[2]*f[1],c[1]=o[2]*f[0]-o[0]*f[2],c[2]=o[0]*f[1]-o[1]*f[0],(y=c[0]*c[0]+c[1]*c[1]+c[2]*c[2])>r&&(r=y,s[0]=c[0],s[1]=c[1],s[2]=c[2])
425
- 0>=r&&(s[0]=s[1]=s[2]=0,s[T(o)]=1)}else s[0]=0,s[1]=0,s[2]=1
426
- t=!0}for(r=((c=T(s))+1)%3,h=(c+2)%3,c=s[c]>0?1:-1,s=(u=this.b.c).e;s!==u;s=s.e)s.b=s.g[r],s.a=c*s.g[h]
442
+ for(var n=0;3>n;++n){var r=t[n];-1e150>r&&(r=-1e150,i=!0),r>1e150&&(r=1e150,i=!0),s[n]=r}i&&J(this,100155),null===(i=this.Li)?f(i=u(this.b),i.b):(y(i),i=i.e),i.a.d=e,i.a.g[0]=s[0],i.a.g[1]=s[1],i.a.g[2]=s[2],i.f=1,i.b.f=-1,this.Li=i},ft.Fi=function(t){q(this,yt),this.d=1,this.b=new Q,this.c=t},ft.ki=function(){q(this,1),this.d=2,this.Li=null},ft.Ci=function(){q(this,2),this.d=1},ft.w=function(){q(this,1),this.d=yt
443
+ var t=!1,s=[u=this.Mi[0],r=this.Mi[1],h=this.Mi[2]]
444
+ if(0===u&&0===r&&0===h){for(var r=[-2e150,-2e150,-2e150],o=[2e150,2e150,2e150],h=[],l=[],u=(t=this.b.c).e;u!==t;u=u.e)for(var f=0;3>f;++f){var y=u.g[f]
445
+ o[f]>y&&(o[f]=y,l[f]=u),y>r[f]&&(r[f]=y,h[f]=u)}if(u=0,r[1]-o[1]>r[0]-o[0]&&(u=1),r[2]-o[2]>r[u]-o[u]&&(u=2),r[u]>o[u]){for(r=0,o=l[u],l=[0,0,0],o=[o.g[0]-(h=h[u]).g[0],o.g[1]-h.g[1],o.g[2]-h.g[2]],f=[0,0,0],u=t.e;u!==t;u=u.e)f[0]=u.g[0]-h.g[0],f[1]=u.g[1]-h.g[1],f[2]=u.g[2]-h.g[2],l[0]=o[1]*f[2]-o[2]*f[1],l[1]=o[2]*f[0]-o[0]*f[2],l[2]=o[0]*f[1]-o[1]*f[0],(y=l[0]*l[0]+l[1]*l[1]+l[2]*l[2])>r&&(r=y,s[0]=l[0],s[1]=l[1],s[2]=l[2])
446
+ 0>=r&&(s[0]=s[1]=s[2]=0,s[E(o)]=1)}else s[0]=0,s[1]=0,s[2]=1
447
+ t=!0}for(r=((l=E(s))+1)%3,h=(l+2)%3,l=s[l]>0?1:-1,s=(u=this.b.c).e;s!==u;s=s.e)s.b=s.g[r],s.a=l*s.g[h]
427
448
  if(t){for(s=0,u=(t=this.b.a).b;u!==t;u=u.b)if((r=u.a).f>0)do{s+=(r.a.b-r.b.a.b)*(r.a.a+r.b.a.a),r=r.e}while(r!==u.a)
428
- if(0>s)for(t=(s=this.b.c).e;t!==s;t=t.e)t.a=-t.a}for(this.n=!1,u=(s=this.b.b).xi;u!==s;u=t)t=u.xi,r=u.e,e(u.a,u.b.a)&&u.e.e!==u&&(B(this,r,u),d(u),r=(u=r).e),r.e===u&&(r!==u&&(r!==t&&r!==t.b||(t=t.xi),d(r)),u!==t&&u!==t.b||(t=t.xi),d(u))
429
- for(this.e=s=new tt,u=(t=this.b.c).e;u!==t;u=u.e)u.xi=et(s,u)
449
+ if(0>s)for(t=(s=this.b.c).e;t!==s;t=t.e)t.a=-t.a}for(this.n=!1,u=(s=this.b.b).Ei;u!==s;u=t)t=u.Ei,r=u.e,e(u.a,u.b.a)&&u.e.e!==u&&(B(this,r,u),d(u),r=(u=r).e),r.e===u&&(r!==u&&(r!==t&&r!==t.b||(t=t.Ei),d(r)),u!==t&&u!==t.b||(t=t.Ei),d(u))
450
+ for(this.e=s=new tt,u=(t=this.b.c).e;u!==t;u=u.e)u.Ei=et(s,u)
430
451
  for((t=>{t.d=[]
431
452
  for(var e=0;t.a>e;e++)t.d[e]=e
432
453
  t.d.sort((t=>(e,s)=>i(t[e],t[s])?1:-1)(t.c)),t.e=!0,(t=>{for(var e=t.a;e>=1;--e)ht(t,e)
433
- t.xi=!0})(t.b)})(s),this.f=new R(this),z(this,-dt),z(this,dt);null!==(s=it(this.e));){for(;;){t:if(u=this.e,0===u.a)t=rt(u.b)
454
+ t.Ei=!0})(t.b)})(s),this.f=new z(this),R(this,-dt),R(this,dt);null!==(s=it(this.e));){for(;;){t:if(u=this.e,0===u.a)t=rt(u.b)
434
455
  else if(t=u.c[u.d[u.a-1]],0!==u.b.a&&(u=rt(u.b),i(u,t))){t=u
435
456
  break t}if(null===t||!e(t,s))break
436
- t=it(this.e),B(this,s.c,t.c)}D(this,s)}for(this.a=this.f.a.a.b.a.a,s=0;null!==(t=this.f.a.a.b);)t.xi||++s,A(t)
437
- for(this.f=null,(s=this.e).b=null,s.d=null,this.e=s.c=null,u=(s=this.b).a.b;u!==s.a;u=t)t=u.b,(u=u.a).e.e===u&&(E(u.c,u),d(u))
438
- if(!this.n){if(s=this.b,this.Ai)for(u=s.b.xi;u!==s.b;u=t)t=u.xi,u.b.d.c!==u.d.c?u.f=u.d.c?1:-1:d(u)
457
+ t=it(this.e),B(this,s.c,t.c)}P(this,s)}for(this.a=this.f.a.a.b.a.a,s=0;null!==(t=this.f.a.a.b);)t.Ei||++s,A(t)
458
+ for(this.f=null,(s=this.e).b=null,s.d=null,this.e=s.c=null,u=(s=this.b).a.b;u!==s.a;u=t)t=u.b,(u=u.a).e.e===u&&(_(u.c,u),d(u))
459
+ if(!this.n){if(s=this.b,this.Ii)for(u=s.b.Ei;u!==s.b;u=t)t=u.Ei,u.b.d.c!==u.d.c?u.f=u.d.c?1:-1:d(u)
439
460
  else for(u=s.a.b;u!==s.a;u=t)if(t=u.b,u.c){for(u=u.a;i(u.b.a,u.a);u=u.c.b);for(;i(u.a,u.b.a);u=u.e);for(r=u.c.b,h=void 0;u.e!==r;)if(i(u.b.a,r.a)){for(;r.e!==u&&(a(r.e)||0>=n(r.a,r.b.a,r.e.b.a));)r=(h=p(r.e,r)).b
440
- r=r.c.b}else{for(;r.e!==u&&(l(u.c.b)||n(u.b.a,u.a,u.c.b.a)>=0);)u=(h=p(u,u.c.b)).b
441
- u=u.e}for(;r.e.e!==u;)r=(h=p(r.e,r)).b}if(this.xi||this.Si||this.Li||this.Mi)if(this.Ai){for(t=(s=this.b).a.b;t!==s.a;t=t.b)if(t.c){this.xi&&this.xi(2,this.c),u=t.a
442
- do{this.Li&&this.Li(u.a.d,this.c),u=u.e}while(u!==t.a)
443
- this.Si&&this.Si(this.c)}}else{for(t=!!this.Mi,u=!1,r=-1,h=(s=this.b).a.d;h!==s.a;h=h.d)if(h.c){u||(this.xi&&this.xi(4,this.c),u=!0),c=h.a
444
- do{t&&r!==(o=c.b.d.c?0:1)&&(r=o,this.Mi&&this.Mi(!!r,this.c)),this.Li&&this.Li(c.a.d,this.c),c=c.e}while(c!==h.a)}u&&this.Si&&this.Si(this.c)}if(this.r){for(u=(s=this.b).a.b;u!==s.a;u=t)if(t=u.b,!u.c){h=(r=u.a).e,c=void 0
445
- do{h=(c=h).e,c.d=null,null===c.b.d&&(c.c===c?S(c.a,null):(c.a.c=c.c,w(c,X(c))),(o=c.b).c===o?S(o.a,null):(o.a.c=o.c,w(o,X(o))),x(c))}while(c!==r)
446
- r=u.d,(u=u.b).d=r,r.b=u}return this.r(this.b),void(this.c=this.b=null)}}this.b=this.c=null},V.Oi={GluTesselator:H,Ci:{GLU_TESS_WINDING_ODD:100130,GLU_TESS_WINDING_NONZERO:100131,GLU_TESS_WINDING_POSITIVE:100132,GLU_TESS_WINDING_NEGATIVE:100133,GLU_TESS_WINDING_ABS_GEQ_TWO:100134},primitiveType:{GL_LINE_LOOP:2,GL_TRIANGLES:4,GL_TRIANGLE_STRIP:5,GL_TRIANGLE_FAN:6},ki:{GLU_TESS_MISSING_BEGIN_POLYGON:100151,GLU_TESS_MISSING_END_POLYGON:100153,GLU_TESS_MISSING_BEGIN_CONTOUR:100152,GLU_TESS_MISSING_END_CONTOUR:100154,GLU_TESS_COORD_TOO_LARGE:100155,GLU_TESS_NEED_COMBINE_CALLBACK:100156},Bi:{GLU_TESS_MESH:100112,GLU_TESS_TOLERANCE:100142,GLU_TESS_WINDING_RULE:100140,GLU_TESS_BOUNDARY_ONLY:100141,GLU_INVALID_ENUM:100900,GLU_INVALID_VALUE:100901,GLU_TESS_BEGIN:100100,GLU_TESS_VERTEX:100101,GLU_TESS_END:100102,GLU_TESS_ERROR:100103,GLU_TESS_EDGE_FLAG:100104,GLU_TESS_COMBINE:100105,GLU_TESS_BEGIN_DATA:100106,GLU_TESS_VERTEX_DATA:100107,GLU_TESS_END_DATA:100108,GLU_TESS_ERROR_DATA:100109,GLU_TESS_EDGE_FLAG_DATA:100110,GLU_TESS_COMBINE_DATA:100111}},H.prototype.$i=H.prototype.x,H.prototype.Ui=H.prototype.B,H.prototype.Ni=H.prototype.y,H.prototype.Pi=H.prototype.A,H.prototype.Di=H.prototype.z,H.prototype.zi=H.prototype.C,H.prototype.Ri=H.prototype.Gi,H.prototype.Wi=H.prototype.Fi,H.prototype.ji=H.prototype.Ii,H.prototype.Hi=H.prototype.w,t.exports=V.Oi})(q)
461
+ r=r.c.b}else{for(;r.e!==u&&(c(u.c.b)||n(u.b.a,u.a,u.c.b.a)>=0);)u=(h=p(u,u.c.b)).b
462
+ u=u.e}for(;r.e.e!==u;)r=(h=p(r.e,r)).b}if(this.Ei||this._i||this.Gi||this.Oi)if(this.Ii){for(t=(s=this.b).a.b;t!==s.a;t=t.b)if(t.c){this.Ei&&this.Ei(2,this.c),u=t.a
463
+ do{this.Gi&&this.Gi(u.a.d,this.c),u=u.e}while(u!==t.a)
464
+ this._i&&this._i(this.c)}}else{for(t=!!this.Oi,u=!1,r=-1,h=(s=this.b).a.d;h!==s.a;h=h.d)if(h.c){u||(this.Ei&&this.Ei(4,this.c),u=!0),l=h.a
465
+ do{t&&r!==(o=l.b.d.c?0:1)&&(r=o,this.Oi&&this.Oi(!!r,this.c)),this.Gi&&this.Gi(l.a.d,this.c),l=l.e}while(l!==h.a)}u&&this._i&&this._i(this.c)}if(this.r){for(u=(s=this.b).a.b;u!==s.a;u=t)if(t=u.b,!u.c){h=(r=u.a).e,l=void 0
466
+ do{h=(l=h).e,l.d=null,null===l.b.d&&(l.c===l?S(l.a,null):(l.a.c=l.c,v(l,X(l))),(o=l.b).c===o?S(o.a,null):(o.a.c=o.c,v(o,X(o))),x(l))}while(l!==r)
467
+ r=u.d,(u=u.b).d=r,r.b=u}return this.r(this.b),void(this.c=this.b=null)}}this.b=this.c=null},V.Bi={GluTesselator:H,$i:{GLU_TESS_WINDING_ODD:100130,GLU_TESS_WINDING_NONZERO:100131,GLU_TESS_WINDING_POSITIVE:100132,GLU_TESS_WINDING_NEGATIVE:100133,GLU_TESS_WINDING_ABS_GEQ_TWO:100134},primitiveType:{GL_LINE_LOOP:2,GL_TRIANGLES:4,GL_TRIANGLE_STRIP:5,GL_TRIANGLE_FAN:6},Ui:{GLU_TESS_MISSING_BEGIN_POLYGON:100151,GLU_TESS_MISSING_END_POLYGON:100153,GLU_TESS_MISSING_BEGIN_CONTOUR:100152,GLU_TESS_MISSING_END_CONTOUR:100154,GLU_TESS_COORD_TOO_LARGE:100155,GLU_TESS_NEED_COMBINE_CALLBACK:100156},Ni:{GLU_TESS_MESH:100112,GLU_TESS_TOLERANCE:100142,GLU_TESS_WINDING_RULE:100140,GLU_TESS_BOUNDARY_ONLY:100141,GLU_INVALID_ENUM:100900,GLU_INVALID_VALUE:100901,GLU_TESS_BEGIN:100100,GLU_TESS_VERTEX:100101,GLU_TESS_END:100102,GLU_TESS_ERROR:100103,GLU_TESS_EDGE_FLAG:100104,GLU_TESS_COMBINE:100105,GLU_TESS_BEGIN_DATA:100106,GLU_TESS_VERTEX_DATA:100107,GLU_TESS_END_DATA:100108,GLU_TESS_ERROR_DATA:100109,GLU_TESS_EDGE_FLAG_DATA:100110,GLU_TESS_COMBINE_DATA:100111}},H.prototype.Di=H.prototype.x,H.prototype.Pi=H.prototype.B,H.prototype.Ri=H.prototype.y,H.prototype.zi=H.prototype.A,H.prototype.Wi=H.prototype.z,H.prototype.ji=H.prototype.C,H.prototype.Hi=H.prototype.Fi,H.prototype.Vi=H.prototype.ki,H.prototype.qi=H.prototype.Ci,H.prototype.Ji=H.prototype.w,t.exports=V.Bi})(q)
447
468
  var J=q.exports
448
- class Y{process(t,e=!0,i=!1){if(0===t.length)return{Vi:{vertices:[],indices:[]},qi:[]}
449
- const s=t.filter(t=>t.points.length>=3)
450
- return 0===s.length?{Vi:{vertices:[],indices:[]},qi:[]}:(l.log(`Tessellator: removeOverlaps=${e}, processing ${s.length} paths`),this.Ji(s,e,i))}Ji(t,e,i){const s=i||e?t:t.map(t=>this.Yi(t))
451
- let n=this.Ki(s)
452
- if(e){l.log("Two-pass: boundary extraction then triangulation"),c.start("Tessellator.boundaryPass",{Xi:n.length})
453
- const t=this.Qi(n,"boundary")
454
- if(c.end("Tessellator.boundaryPass"),!t)return l.warn("libtess returned empty result from boundary pass"),{Vi:{vertices:[],indices:[]},qi:[]}
455
- n=this.Zi(t),l.log(`Boundary pass created ${n.length} contours. Starting triangulation pass.`)}else l.log("Single-pass triangulation for "+(i?"CFF":"TTF"))
456
- c.start("Tessellator.triangulationPass",{Xi:n.length})
457
- const r=this.Qi(n,"triangles")
458
- return c.end("Tessellator.triangulationPass"),r?{Vi:{vertices:r.vertices,indices:r.indices||[]},qi:n}:(l.warn(e?"libtess returned empty result from triangulation pass":"libtess returned empty result from single-pass triangulation"),{Vi:{vertices:[],indices:[]},qi:n})}Ki(t){return t.map(t=>{const e=[]
459
- for(const i of t.points)e.push(i.x,i.y)
460
- return e})}Qi(t,e){const i=new J.GluTesselator
461
- i.Ui(J.Bi.GLU_TESS_WINDING_RULE,J.Ci.GLU_TESS_WINDING_NONZERO)
469
+ class Y{process(t,e=!0,i=!1,s=!0){if(0===t.length)return{Yi:{vertices:[],indices:[]},Ki:[]}
470
+ const n=t.filter(t=>t.points.length>=3)
471
+ return 0===n.length?{Yi:{vertices:[],indices:[]},Ki:[]}:this.Xi(n,e,i,s)}Xi(t,e,i,s){const n=!i&&!e
472
+ let r,o
473
+ n?(o=this.Qi(t,!0),(e||s)&&(r=this.Qi(t))):(r=this.Qi(t),o=r)
474
+ let h=s?n?o:r??this.Qi(t):[]
475
+ if(e){const t=this.Zi(r,"boundary")
476
+ if(!t)return c.warn("libtess returned empty result from boundary pass"),{Yi:{vertices:[],indices:[]},Ki:[]}
477
+ o=this.ts(t),s&&(h=o)}const a=this.Zi(o,"triangles")
478
+ return a?{Yi:{vertices:a.vertices,indices:a.indices||[]},Ki:h}:(c.warn(e?"libtess returned empty result from triangulation pass":"libtess returned empty result from single-pass triangulation"),{Yi:{vertices:[],indices:[]},Ki:h})}Qi(t,e=!1){const i=Array(t.length)
479
+ for(let s=0;t.length>s;s++){const n=t[s].points,r=n.length,o=r>1&&n[0].x===n[r-1].x&&n[0].y===n[r-1].y?r-1:r,h=Array(2*(o+1))
480
+ let a=0
481
+ if(e)for(let t=o-1;t>=0;t--){const e=n[t]
482
+ h[a++]=e.x,h[a++]=e.y}else for(let t=0;o>t;t++){const e=n[t]
483
+ h[a++]=e.x,h[a++]=e.y}2>a||(h[a++]=h[0],h[a++]=h[1]),i[s]=h}return i}Zi(t,e){const i=new J.GluTesselator
484
+ i.Pi(J.Ni.GLU_TESS_WINDING_RULE,J.$i.GLU_TESS_WINDING_NONZERO)
462
485
  const s=[],n=[],r=[]
463
486
  let o=[]
464
- "boundary"===e&&i.Ui(J.Bi.GLU_TESS_BOUNDARY_ONLY,!0),"triangles"===e?i.Di(J.Bi.GLU_TESS_VERTEX_DATA,t=>{n.push(t)}):(i.Di(J.Bi.GLU_TESS_BEGIN,()=>{o=[]}),i.Di(J.Bi.GLU_TESS_VERTEX_DATA,t=>{o.push(t)}),i.Di(J.Bi.GLU_TESS_END,()=>{o.length>0&&r.push([...o])})),i.Di(J.Bi.GLU_TESS_COMBINE,t=>{const e=s.length/2
465
- return s.push(t[0],t[1]),e}),i.Di(J.Bi.GLU_TESS_ERROR,t=>{l.warn("libtess error: "+t)}),i.Pi(0,0,1),i.Ri(null)
466
- for(const e of t){i.Wi()
487
+ "boundary"===e&&i.Pi(J.Ni.GLU_TESS_BOUNDARY_ONLY,!0),"triangles"===e?i.Wi(J.Ni.GLU_TESS_VERTEX_DATA,t=>{n.push(t)}):(i.Wi(J.Ni.GLU_TESS_BEGIN,()=>{o=[]}),i.Wi(J.Ni.GLU_TESS_VERTEX_DATA,t=>{o.push(t)}),i.Wi(J.Ni.GLU_TESS_END,()=>{o.length>0&&r.push(o)})),i.Wi(J.Ni.GLU_TESS_COMBINE,t=>{const e=s.length/2
488
+ return s.push(t[0],t[1]),e}),i.Wi(J.Ni.GLU_TESS_ERROR,t=>{c.warn("libtess error: "+t)}),i.zi(0,0,1),i.Hi(null)
489
+ for(const e of t){i.Vi()
467
490
  for(let t=0;e.length>t;t+=2){const n=s.length/2
468
- s.push(e[t],e[t+1]),i.zi([e[t],e[t+1],0],n)}i.ji()}return i.Hi(),0===s.length?null:"triangles"===e?{vertices:s,indices:n}:{vertices:s,ts:r}}Zi(t){if(!t.ts)return[]
491
+ s.push(e[t],e[t+1]),i.ji([e[t],e[t+1],0],n)}i.qi()}return i.Ji(),0===s.length?null:"triangles"===e?{vertices:s,indices:n}:{vertices:s,es:r}}ts(t){if(!t.es)return[]
469
492
  const e=[]
470
- for(const i of t.ts){const s=[]
493
+ for(const i of t.es){const s=[]
471
494
  for(const e of i){const i=2*e
472
- s.push(t.vertices[i],t.vertices[i+1])}s.length>2&&(s[0]===s[s.length-2]&&s[1]===s[s.length-1]||s.push(s[0],s[1])),e.push(s)}return e}Yi(t){return{...t,points:[...t.points].reverse()}}}class K{constructor(){}es(t,e=0,i){const s=t.Vi.vertices,n=t.Vi.indices,r=s.length/2
473
- let o=0
474
- if(0!==e)for(const e of t.qi){const t=e.length/2
475
- 2>t||(o+=t-1)}const h=(0===e?r:2*r)+(0===e?0:4*o),a=new Float32Array(3*h),l=new Float32Array(3*h),c=new Uint32Array(0===e?n.length:2*n.length+6*o)
476
- if(0===e){let t=0
477
- for(let e=0;s.length>e;e+=2)a[t]=s[e],a[t+1]=s[e+1],a[t+2]=0,l[t]=0,l[t+1]=0,l[t+2]=1,t+=3
478
- for(let t=0;n.length>t;t++)c[t]=n[t]
479
- return{vertices:a,normals:l,indices:c}}const u=25e-6*i,f=e>u?e:u
480
- for(let t=0,e=0;s.length>t;t+=2,e++){const i=3*e
481
- a[i]=s[t],a[i+1]=s[t+1],a[i+2]=0,l[i]=0,l[i+1]=0,l[i+2]=-1}for(let t=0,e=0;s.length>t;t+=2,e++){const i=3*(r+e)
482
- a[i]=s[t],a[i+1]=s[t+1],a[i+2]=f,l[i]=0,l[i+1]=0,l[i+2]=1}for(let t=0;n.length>t;t++)c[t]=n[n.length-1-t]
483
- for(let t=0;n.length>t;t++)c[n.length+t]=n[t]+r
484
- let d=2*r,y=2*n.length
485
- for(const e of t.qi)for(let t=0;e.length-2>t;t+=2){const i=e[t],s=e[t+1],n=e[t+2],r=e[t+3],o=n-i,h=r-s,u=o*o+h*h
486
- let p=0,g=0
487
- if(u>0){const t=1/Math.sqrt(u)
488
- p=h*t,g=-o*t}const w=d,m=3*w
489
- a[m]=i,a[m+1]=s,a[m+2]=0,a[m+3]=n,a[m+4]=r,a[m+5]=0,a[m+6]=i,a[m+7]=s,a[m+8]=f,a[m+9]=n,a[m+10]=r,a[m+11]=f,l[m]=p,l[m+1]=g,l[m+2]=0,l[m+3]=p,l[m+4]=g,l[m+5]=0,l[m+6]=p,l[m+7]=g,l[m+8]=0,l[m+9]=p,l[m+10]=g,l[m+11]=0,c[y++]=w,c[y++]=w+1,c[y++]=w+2,c[y++]=w+1,c[y++]=w+3,c[y++]=w+2,d+=4}return{vertices:a,normals:l,indices:c}}}class X{constructor(){}ss(t,e){c.start("BoundaryClusterer.cluster",{ns:t.length})
495
+ s.push(t.vertices[i],t.vertices[i+1])}s.length>2&&(s[0]===s[s.length-2]&&s[1]===s[s.length-1]||s.push(s[0],s[1])),e.push(s)}return e}ss(t){if(0===t.length)return!1
496
+ if(1===t.length)return!1
497
+ let e=null
498
+ for(const i of t){const t=0>this.ns(i)?-1:1
499
+ if(null===e)e=t
500
+ else if(t!==e)return!0}return!1}ns(t){let e=0
490
501
  const i=t.length
491
- if(0===i)return c.end("BoundaryClusterer.cluster"),[]
492
- if(1===i)return c.end("BoundaryClusterer.cluster"),[[0]]
493
- const s=this.rs(t,e)
494
- return c.end("BoundaryClusterer.cluster"),s}rs(t,e){function i(t){return a[t]===t?t:a[t]=i(a[t])}function s(t,e){const s=i(t),n=i(e)
495
- s!==n&&(l[n]>l[s]?a[s]=n:l[s]>l[n]?a[n]=s:(a[n]=s,l[s]++))}const n=t.length,r=Array(n),o=Array(2*n)
502
+ if(6>i)return 0
503
+ for(let s=0;i>s;s+=2)e+=t[s]*t[(s+3)%i]-t[(s+2)%i]*t[s+1]
504
+ return e/2}}class K{constructor(){}rs(t,e){return 4294967296*(e>t?t:e)+(e>t?e:t)}hs(t,e=0,i){const s=t.Yi.vertices,n=t.Yi.indices,r=s.length/2
505
+ let o=[]
506
+ if(0!==e){const t=new Map,e=new Map
507
+ for(let i=0;n.length>i;i+=3){const s=n[i],r=n[i+1],o=n[i+2],h=this.rs(s,r),a=(t.get(h)??0)+1
508
+ t.set(h,a),1===a&&e.set(h,[s,r])
509
+ const c=this.rs(r,o),l=(t.get(c)??0)+1
510
+ t.set(c,l),1===l&&e.set(c,[r,o])
511
+ const u=this.rs(o,s),f=(t.get(u)??0)+1
512
+ t.set(u,f),1===f&&e.set(u,[o,s])}o=[]
513
+ for(const[i,s]of t){if(1!==s)continue
514
+ const t=e.get(i)
515
+ t&&o.push(t)}}const h=0===e?0:o.length,a=(0===e?r:2*r)+(0===e?0:4*h),c=new Float32Array(3*a),l=new Float32Array(3*a),u=new Uint32Array(0===e?n.length:2*n.length+6*h)
516
+ if(0===e){let t=0
517
+ for(let e=0;s.length>e;e+=2)c[t]=s[e],c[t+1]=s[e+1],c[t+2]=0,l[t]=0,l[t+1]=0,l[t+2]=1,t+=3
518
+ for(let t=0;n.length>t;t++)u[t]=n[t]
519
+ return{vertices:c,normals:l,indices:u}}const f=25e-6*i,d=e>f?e:f
520
+ for(let t=0,e=0;s.length>t;t+=2,e++){const i=s[t],n=s[t+1],o=3*e
521
+ c[o]=i,c[o+1]=n,c[o+2]=0,l[o]=0,l[o+1]=0,l[o+2]=-1
522
+ const h=3*(r+e)
523
+ c[h]=i,c[h+1]=n,c[h+2]=d,l[h]=0,l[h+1]=0,l[h+2]=1}for(let t=0;n.length>t;t++)u[t]=n[n.length-1-t]
524
+ for(let t=0;n.length>t;t++)u[n.length+t]=n[t]+r
525
+ let y=2*r,p=2*n.length
526
+ for(let t=0;o.length>t;t++){const[e,i]=o[t],n=2*e,r=2*i,h=s[n],a=s[n+1],f=s[r],w=s[r+1],v=f-h,m=w-a,g=v*v+m*m
527
+ let x=0,S=0
528
+ if(g>0){const t=1/Math.sqrt(g)
529
+ x=m*t,S=-v*t}const b=y,E=3*b
530
+ c[E]=h,c[E+1]=a,c[E+2]=0,c[E+3]=f,c[E+4]=w,c[E+5]=0,c[E+6]=h,c[E+7]=a,c[E+8]=d,c[E+9]=f,c[E+10]=w,c[E+11]=d,l[E]=x,l[E+1]=S,l[E+2]=0,l[E+3]=x,l[E+4]=S,l[E+5]=0,l[E+6]=x,l[E+7]=S,l[E+8]=0,l[E+9]=x,l[E+10]=S,l[E+11]=0,u[p++]=b,u[p++]=b+1,u[p++]=b+2,u[p++]=b+1,u[p++]=b+3,u[p++]=b+2,y+=4}return{vertices:c,normals:l,indices:u}}}class X{constructor(){}cs(t,e){const i=t.length
531
+ return 0===i?[]:1===i?[[0]]:this.ls(t,e)}ls(t,e){function i(t){return a[t]===t?t:a[t]=i(a[t])}function s(t,e){const s=i(t),n=i(e)
532
+ s!==n&&(c[n]>c[s]?a[s]=n:c[s]>c[n]?a[n]=s:(a[n]=s,c[s]++))}const n=t.length,r=Array(n),o=Array(2*n)
496
533
  let h=0
497
- for(let i=0;n>i;i++)r[i]=this.hs(t[i],e[i]),o[h++]=[r[i].ls,0,i],o[h++]=[r[i].cs,1,i]
534
+ for(let i=0;n>i;i++)r[i]=this.us(t[i],e[i]),o[h++]=[r[i].fs,0,i],o[h++]=[r[i].ds,1,i]
498
535
  o.sort((t,e)=>t[0]-e[0]||t[1]-e[1])
499
- const a=Array.from({length:n},(t,e)=>e),l=Array(n).fill(0),c=new Set
536
+ const a=Array.from({length:n},(t,e)=>e),c=Array(n).fill(0),l=new Set
500
537
  for(const[,t,e]of o)if(0===t){const t=r[e]
501
- for(const i of c){const n=r[i]
502
- n.us+.001>t.fs&&t.us>n.fs-.001&&s(e,i)}c.add(e)}else c.delete(e)
538
+ for(const i of l){const n=r[i]
539
+ n.ys+.001>t.ps&&t.ys>n.ps-.001&&s(e,i)}l.add(e)}else l.delete(e)
503
540
  const u=new Map
504
541
  for(let t=0;n>t;t++){const e=i(t)
505
542
  let s=u.get(e)
506
- s||(s=[],u.set(e,s)),s.push(t)}return Array.from(u.values())}hs(t,e){return{ls:t.bounds.min.x+e.x,fs:t.bounds.min.y+e.y,cs:t.bounds.max.x+e.x,us:t.bounds.max.y+e.y}}}class Q{constructor(t){this.ds=[],this.ys=new Map,this.compare=t}k(t){const e=this.ys.get(t)
507
- if(void 0!==e)return this.ps(e),void this.gs(e)
508
- const i=this.ds.length
509
- this.ds.push(t),this.ys.set(t,i),this.ps(i)}ws(){const t=this.ds.length
543
+ s||(s=[],u.set(e,s)),s.push(t)}return Array.from(u.values())}us(t,e){return{fs:t.bounds.min.x+e.x,ps:t.bounds.min.y+e.y,ds:t.bounds.max.x+e.x,ys:t.bounds.max.y+e.y}}}class Q{constructor(t){this.ws=[],this.vs=new Map,this.compare=t}k(t){const e=this.vs.get(t)
544
+ if(void 0!==e)return this.gs(e),void this.xs(e)
545
+ const i=this.ws.length
546
+ this.ws.push(t),this.vs.set(t,i),this.gs(i)}Ss(){const t=this.ws.length
510
547
  if(!t)return
511
- if(1===t){const t=this.ds.pop()
512
- return this.ys.clear(),t}const e=this.ds[0],i=this.ds.pop()
513
- return this.ds[0]=i,this.ys.delete(e),this.ys.set(i,0),this.gs(0),e}update(t){const e=this.ys.get(t)
514
- void 0!==e?(this.ps(e),this.gs(e)):this.k(t)}vs(){return!this.ds.length}xs(t,e){const i=this.ds[t],s=this.ds[e]
515
- this.ds[t]=s,this.ds[e]=i,this.ys.set(i,e),this.ys.set(s,t)}ps(t){const e=this.ds[t]
516
- for(;t>0;){const i=t-1>>1,s=this.ds[i]
548
+ if(1===t){const t=this.ws.pop()
549
+ return this.vs.clear(),t}const e=this.ws[0],i=this.ws.pop()
550
+ return this.ws[0]=i,this.vs.delete(e),this.vs.set(i,0),this.xs(0),e}update(t){const e=this.vs.get(t)
551
+ void 0!==e?(this.gs(e),this.xs(e)):this.k(t)}bs(){return!this.ws.length}Es(t,e){const i=this.ws[t],s=this.ws[e]
552
+ this.ws[t]=s,this.ws[e]=i,this.vs.set(i,e),this.vs.set(s,t)}gs(t){const e=this.ws[t]
553
+ for(;t>0;){const i=t-1>>1,s=this.ws[i]
517
554
  if(this.compare(e,s)>=0)break
518
- this.ds[t]=s,this.ys.set(s,t),t=i}this.ds[t]=e,this.ys.set(e,t)}gs(t){const e=this.ds[t],i=this.ds.length,s=i>>1
555
+ this.ws[t]=s,this.vs.set(s,t),t=i}this.ws[t]=e,this.vs.set(e,t)}xs(t){const e=this.ws[t],i=this.ws.length,s=i>>1
519
556
  for(;s>t;){const s=1+(t<<1),n=s+1
520
557
  let r=t,o=e
521
- const h=this.ds[s]
522
- if(0>this.compare(h,o)&&(r=s,o=h),i>n){const t=this.ds[n]
558
+ const h=this.ws[s]
559
+ if(0>this.compare(h,o)&&(r=s,o=h),i>n){const t=this.ws[n]
523
560
  0>this.compare(t,o)&&(r=n,o=t)}if(r===t)break
524
- this.ds[t]=o,this.ys.set(o,t),t=r}this.ds[t]=e,this.ys.set(e,t)}}const Z={enabled:!0,Ss:1,bs:.0087,Ts:10}
525
- class tt{constructor(t){this.stats={Es:0,_s:0,As:0},this.config=t}Ls(t){this.config=t}Ms(t){if(!this.config.enabled||2>=t.points.length)return t
526
- this.stats.As+=t.points.length
527
- let e=[...t.points]
528
- return 5>e.length?t:(e=this.Gs(e,this.config.Ss),3>e.length?t:(e=this.Fs(e,this.config.bs),3>e.length?t:{...t,points:e}))}Gs(t,e){if(3>=t.length)return t
529
- const i=t.length,s=t.map((t,e)=>({index:e,Is:1/0,fi:null,next:null}))
530
- for(let t=0;s.length>t;t++)s[t].fi=s[t-1]||null,s[t].next=s[t+1]||null
531
- const n=new Q((t,e)=>t.Is-e.Is)
561
+ this.ws[t]=o,this.vs.set(o,t),t=r}this.ws[t]=e,this.vs.set(e,t)}}const Z={enabled:!0,_s:1,Ts:.0087,As:10}
562
+ class tt{constructor(t){this.stats={Ls:0,Ms:0,Is:0},this.config=t}Gs(t){this.config=t}Os(t){if(!this.config.enabled||2>=t.points.length)return t
563
+ this.stats.Is+=t.points.length
564
+ const e=t.points
565
+ if(5>e.length)return t
566
+ let i=this.Fs(e,this.config._s)
567
+ return 3>i.length?t:(i=this.ks(i,this.config.Ts),3>i.length?t:{...t,points:i})}Fs(t,e){if(3>=t.length)return t
568
+ const i=t.length,s=t.map((t,e)=>({index:e,Cs:1/0,pi:null,next:null}))
569
+ for(let t=0;s.length>t;t++)s[t].pi=s[t-1]||null,s[t].next=s[t+1]||null
570
+ const n=new Q((t,e)=>t.Cs-e.Cs)
532
571
  for(let e=1;s.length-1>e;e++){const i=s[e]
533
- i.Is=this.Os(t[i.fi.index],t[i.index],t[i.next.index]),n.k(i)}let r=i
534
- for(;!n.vs()&&r>3;){const i=n.ws()
535
- if(!i||i.Is>e)break
536
- if(this.config.Ts>0&&i.fi&&i.next){const e=t[i.index],s=t[i.next.index],n=t[i.fi.index].ei(e),r=e.ei(s)
537
- if(this.config.Ts>n||this.config.Ts>r)continue}i.fi&&(i.fi.next=i.next),i.next&&(i.next.fi=i.fi),r--,i.fi&&i.fi.fi&&(i.fi.Is=this.Os(t[i.fi.fi.index],t[i.fi.index],t[i.next.index]),n.update(i.fi)),i.next&&i.next.next&&(i.next.Is=this.Os(t[i.fi.index],t[i.next.index],t[i.next.next.index]),n.update(i.next))}const o=[]
572
+ i.Cs=this.Bs(t[i.pi.index],t[i.index],t[i.next.index]),n.k(i)}let r=i
573
+ for(;!n.bs()&&r>3;){const i=n.Ss()
574
+ if(!i||i.Cs>e)break
575
+ if(this.config.As>0&&i.pi&&i.next){const e=t[i.index],s=t[i.next.index],n=t[i.pi.index].ni(e),r=e.ni(s)
576
+ if(this.config.As>n||this.config.As>r)continue}i.pi&&(i.pi.next=i.next),i.next&&(i.next.pi=i.pi),r--,i.pi&&i.pi.pi&&(i.pi.Cs=this.Bs(t[i.pi.pi.index],t[i.pi.index],t[i.next.index]),n.update(i.pi)),i.next&&i.next.next&&(i.next.Cs=this.Bs(t[i.pi.index],t[i.next.index],t[i.next.next.index]),n.update(i.next))}const o=[]
538
577
  let h=s[0]
539
578
  for(;h;)o.push(t[h.index]),h=h.next
540
- return this.stats.Es+=i-o.length,o}Fs(t,e){if(2>=t.length)return t
579
+ return this.stats.Ls+=i-o.length,o}ks(t,e){if(2>=t.length)return t
541
580
  const i=[t[0]]
542
- for(let s=1;t.length-1>s;s++){const n=t[s-1],r=t[s],o=t[s+1],h=r.x-n.x,a=r.y-n.y,l=o.x-r.x,c=o.y-r.y,u=this.config.Ts*this.config.Ts
543
- Math.abs(Math.atan2(h*c-a*l,h*l+a*c))>e||u>h*h+a*a||u>l*l+c*c?i.push(r):this.stats._s++}return i.push(t[t.length-1]),i}Os(t,e,i){return Math.abs((t.x*(e.y-i.y)+e.x*(i.y-t.y)+i.x*(t.y-e.y))/2)}getStats(){return{...this.stats}}Cs(){this.stats={Es:0,_s:0,As:0}}}const et={ks:.5,Bs:.2},it=1e-6
544
- class st{constructor(t){this.$s={...et,...t}}Us(t){this.$s={...et,...t}}Ns(t,e,i){const s=[]
545
- return this.Ps(t.x,t.y,e.x,e.y,i.x,i.y,s),this.Ds(i.x,i.y,s),s}zs(t,e,i,s){const n=[]
546
- return this.Rs(t.x,t.y,e.x,e.y,i.x,i.y,s.x,s.y,n),this.Ds(s.x,s.y,n),n}Ps(t,e,i,s,n,r,o,h=0){if(h>16)return
547
- const a=(t+i)/2,l=(e+s)/2,c=(i+n)/2,u=(s+r)/2,f=(a+c)/2,d=(l+u)/2,y=n-t,p=r-e,g=Math.abs((i-n)*p-(s-r)*y),w=this.$s.ks??.5,m=w*w
548
- if(g>it){if(m*(y*y+p*p)>=g*g){const h=this.$s.Bs??.2
549
- if(0>=h)return void this.Ds(i,s,o)
550
- {const a=i-t,l=s-e,c=n-i,u=r-s
551
- if(h>Math.abs(Math.atan2(a*u-l*c,a*c+l*u)))return void this.Ds(i,s,o)}}}else{const n=y*y+p*p
552
- if(0===n){if(m>=(i-t)*(i-t)+(s-e)*(s-e))return void this.Ds(i,s,o)}else{const r=((i-t)*y+(s-e)*p)/n
553
- if(r>0&&1>r&&m*n>=g*g)return void this.Ds(i,s,o)}}this.Ps(t,e,a,l,f,d,o,h+1),this.Ps(f,d,c,u,n,r,o,h+1)}Rs(t,e,i,s,n,r,o,h,a,l=0){if(l>16)return
554
- const c=(t+i)/2,u=(e+s)/2,f=(i+n)/2,d=(s+r)/2,y=(n+o)/2,p=(r+h)/2,g=(c+f)/2,w=(u+d)/2,m=(f+y)/2,v=(d+p)/2,x=(g+m)/2,S=(w+v)/2,b=o-t,T=h-e,E=Math.abs((i-o)*T-(s-h)*b),_=Math.abs((n-o)*T-(r-h)*b),A=this.$s.ks??.5,L=A*A
581
+ for(let s=1;t.length-1>s;s++){const n=t[s-1],r=t[s],o=t[s+1],h=r.x-n.x,a=r.y-n.y,c=o.x-r.x,l=o.y-r.y,u=this.config.As*this.config.As
582
+ Math.abs(Math.atan2(h*l-a*c,h*c+a*l))>e||u>h*h+a*a||u>c*c+l*l?i.push(r):this.stats.Ms++}return i.push(t[t.length-1]),i}Bs(t,e,i){return Math.abs((t.x*(e.y-i.y)+e.x*(i.y-t.y)+i.x*(t.y-e.y))/2)}getStats(){return{...this.stats}}$s(){this.stats={Ls:0,Ms:0,Is:0}}}const et={Us:.5,Ns:.2},it=1e-6
583
+ class st{constructor(t){this.Ds={...et,...t}}Ps(t){this.Ds={...et,...t}}Rs(t,e,i){const s=[]
584
+ return this.zs(t.x,t.y,e.x,e.y,i.x,i.y,s),this.Ws(i.x,i.y,s),s}js(t,e,i,s){const n=[]
585
+ return this.Hs(t.x,t.y,e.x,e.y,i.x,i.y,s.x,s.y,n),this.Ws(s.x,s.y,n),n}zs(t,e,i,s,n,r,o,h=0){if(h>16)return
586
+ const a=(t+i)/2,c=(e+s)/2,l=(i+n)/2,u=(s+r)/2,f=(a+l)/2,d=(c+u)/2,y=n-t,p=r-e,w=Math.abs((i-n)*p-(s-r)*y),v=this.Ds.Us??.5,m=v*v
587
+ if(w>it){if(m*(y*y+p*p)>=w*w){const h=this.Ds.Ns??.2
588
+ if(0>=h)return void this.Ws(i,s,o)
589
+ {const a=i-t,c=s-e,l=n-i,u=r-s
590
+ if(h>Math.abs(Math.atan2(a*u-c*l,a*l+c*u)))return void this.Ws(i,s,o)}}}else{const n=y*y+p*p
591
+ if(0===n){if(m>=(i-t)*(i-t)+(s-e)*(s-e))return void this.Ws(i,s,o)}else{const r=((i-t)*y+(s-e)*p)/n
592
+ if(r>0&&1>r&&m*n>=w*w)return void this.Ws(i,s,o)}}this.zs(t,e,a,c,f,d,o,h+1),this.zs(f,d,l,u,n,r,o,h+1)}Hs(t,e,i,s,n,r,o,h,a,c=0){if(c>16)return
593
+ const l=(t+i)/2,u=(e+s)/2,f=(i+n)/2,d=(s+r)/2,y=(n+o)/2,p=(r+h)/2,w=(l+f)/2,v=(u+d)/2,m=(f+y)/2,g=(d+p)/2,x=(w+m)/2,S=(v+g)/2,b=o-t,E=h-e,_=Math.abs((i-o)*E-(s-h)*b),T=Math.abs((n-o)*E-(r-h)*b),A=this.Ds.Us??.5,L=A*A
555
594
  let M=0
556
- switch(E>it&&(M|=1),_>it&&(M|=2),M){case 0:const l=b*b+T*T
557
- if(0===l){if(L>=(i-t)*(i-t)+(s-e)*(s-e)&&L>=(n-t)*(n-t)+(r-e)*(r-e))return this.Ds(i,s,a),void this.Ds(n,r,a)}else{const o=((i-t)*b+(s-e)*T)/l,h=((n-t)*b+(r-e)*T)/l
558
- if(o>0&&1>o&&h>0&&1>h&&L*l>=(E+_)*(E+_))return this.Ds(i,s,a),void this.Ds(n,r,a)}break
559
- case 1:if(L*(b*b+T*T)>=_*_){const t=this.$s.Bs??.2
560
- if(0>=t)return this.Ds(i,s,a),void this.Ds(n,r,a)
561
- {const e=n-i,l=r-s,c=o-n,u=h-r
562
- if(t>Math.abs(Math.atan2(e*u-l*c,e*c+l*u)))return this.Ds(i,s,a),void this.Ds(n,r,a)}}break
563
- case 2:if(L*(b*b+T*T)>=E*E){const o=this.$s.Bs??.2
564
- if(0>=o)return this.Ds(i,s,a),void this.Ds(n,r,a)
565
- {const h=i-t,l=s-e,c=n-i,u=r-s
566
- if(o>Math.abs(Math.atan2(h*u-l*c,h*c+l*u)))return this.Ds(i,s,a),void this.Ds(n,r,a)}}break
567
- case 3:if(L*(b*b+T*T)>=(E+_)*(E+_)){const l=this.$s.Bs??.2
568
- if(0>=l)return this.Ds(i,s,a),void this.Ds(n,r,a)
569
- {const c=i-t,u=s-e,f=n-i,d=r-s,y=o-n,p=h-r
570
- if(l>Math.abs(Math.atan2(c*d-u*f,c*f+u*d))+Math.abs(Math.atan2(f*p-d*y,f*y+d*p)))return this.Ds(i,s,a),void this.Ds(n,r,a)}}}this.Rs(t,e,c,u,g,w,x,S,a,l+1),this.Rs(x,S,m,v,y,p,o,h,a,l+1)}Ds(t,e,i){const s=new P(t,e)
595
+ switch(_>it&&(M|=1),T>it&&(M|=2),M){case 0:const c=b*b+E*E
596
+ if(0===c){if(L>=(i-t)*(i-t)+(s-e)*(s-e)&&L>=(n-t)*(n-t)+(r-e)*(r-e))return this.Ws(i,s,a),void this.Ws(n,r,a)}else{const o=((i-t)*b+(s-e)*E)/c,h=((n-t)*b+(r-e)*E)/c
597
+ if(o>0&&1>o&&h>0&&1>h&&L*c>=(_+T)*(_+T))return this.Ws(i,s,a),void this.Ws(n,r,a)}break
598
+ case 1:if(L*(b*b+E*E)>=T*T){const t=this.Ds.Ns??.2
599
+ if(0>=t)return this.Ws(i,s,a),void this.Ws(n,r,a)
600
+ {const e=n-i,c=r-s,l=o-n,u=h-r
601
+ if(t>Math.abs(Math.atan2(e*u-c*l,e*l+c*u)))return this.Ws(i,s,a),void this.Ws(n,r,a)}}break
602
+ case 2:if(L*(b*b+E*E)>=_*_){const o=this.Ds.Ns??.2
603
+ if(0>=o)return this.Ws(i,s,a),void this.Ws(n,r,a)
604
+ {const h=i-t,c=s-e,l=n-i,u=r-s
605
+ if(o>Math.abs(Math.atan2(h*u-c*l,h*l+c*u)))return this.Ws(i,s,a),void this.Ws(n,r,a)}}break
606
+ case 3:if(L*(b*b+E*E)>=(_+T)*(_+T)){const c=this.Ds.Ns??.2
607
+ if(0>=c)return this.Ws(i,s,a),void this.Ws(n,r,a)
608
+ {const l=i-t,u=s-e,f=n-i,d=r-s,y=o-n,p=h-r
609
+ if(c>Math.abs(Math.atan2(l*d-u*f,l*f+u*d))+Math.abs(Math.atan2(f*p-d*y,f*y+d*p)))return this.Ws(i,s,a),void this.Ws(n,r,a)}}}this.Hs(t,e,l,u,w,v,x,S,a,c+1),this.Hs(x,S,m,g,y,p,o,h,a,c+1)}Ws(t,e,i){const s=new D(t,e)
571
610
  if(0===i.length)return void i.push(s)
572
611
  const n=i[i.length-1],r=s.x-n.x,o=s.y-n.y
573
- r*r+o*o>1e-12&&i.push(s)}}class nt{constructor(t,e){this.Ws=0,this.js=0,this.Hs=[],this.Vs=null,this.qs=null,this.Js={min:new P(1/0,1/0),max:new P(-1/0,-1/0)},this.Ys=[],this.Ks=[],this.Xs=[],this.Qs=new P(0,0),this.Zs=new st(t),this.tn=new tt({...Z,...e})}setPosition(t,e){this.Qs.set(t,e)}en(t,e){this.Qs.x+=t,this.Qs.y+=e}sn(t,e){this.Hs.length>0&&this.nn(),this.Ws=t,this.js=e,this.Hs=[],this.Js.min.set(1/0,1/0),this.Js.max.set(-1/0,-1/0),this.Ks.push(this.Qs.clone()),c.start("Glyph.polygonizeAndOptimize",{rn:t,hn:e})}nn(){this.Vs&&this.an(),this.Hs.length>0&&(this.Ys.push({rn:this.Ws,mi:[...this.Hs],bounds:{min:{x:this.Js.min.x,y:this.Js.min.y},max:{x:this.Js.max.x,y:this.Js.max.y}}}),this.Xs.push(this.js)),c.end("Glyph.polygonizeAndOptimize"),this.Hs=[]}ln(t,e){this.Vs&&this.an(),this.qs=new P(t,e),this.cn(this.qs),this.Vs={points:[this.qs],un:this.Ws}}fn(t,e){if(!this.Vs||!this.qs)return
574
- const i=new P(t,e)
575
- this.cn(i),this.Vs.points.push(i),this.qs=i}dn(t,e,i,s){if(!this.Vs||!this.qs)return
576
- const n=this.qs,r=new P(t,e),o=new P(i,s)
577
- if(it>Math.abs((r.x-o.x)*(o.y-n.y)-(r.y-o.y)*(o.x-n.x)))return void this.fn(i,s)
578
- const h=this.Zs.Ns(n,r,o)
579
- for(const t of h)this.cn(t)
580
- for(let t=0;h.length>t;t++)this.Vs.points.push(h[t])
581
- this.qs=o}yn(t,e,i,s,n,r){if(!this.Vs||!this.qs)return
582
- const o=this.qs,h=new P(t,e),a=new P(i,s),l=new P(n,r),c=l.x-o.x,u=l.y-o.y
583
- if(it>Math.abs((h.x-l.x)*u-(h.y-l.y)*c)&&it>Math.abs((a.x-l.x)*u-(a.y-l.y)*c))return void this.fn(n,r)
584
- const f=this.Zs.zs(o,h,a,l)
585
- for(const t of f)this.cn(t)
586
- for(let t=0;f.length>t;t++)this.Vs.points.push(f[t])
587
- this.qs=l}pn(){if(!this.Vs||!this.qs)return
588
- const t=this.Vs.points[0]
589
- this.qs.equals(t)||this.Vs.points.push(t),this.an()}an(){if(this.Vs){const t=this.tn.Ms(this.Vs)
590
- this.Hs.push(t),this.Vs=null,this.qs=null}}cn(t){this.Js.min.x=Math.min(this.Js.min.x,t.x),this.Js.min.y=Math.min(this.Js.min.y,t.y),this.Js.max.x=Math.max(this.Js.max.x,t.x),this.Js.max.y=Math.max(this.Js.max.y,t.y)}gn(){return this.Hs.length>0&&this.nn(),this.Ys}wn(){return this.Ks}mn(){return this.Xs}reset(){this.Ys=[],this.Ks=[],this.Xs=[],this.Hs=[],this.Vs=null,this.qs=null,this.Ws=0,this.js=0,this.Qs.set(0,0),this.Js={min:new P(1/0,1/0),max:new P(-1/0,-1/0)}}Us(t){this.Zs.Us(t)}vn(t){this.tn.Ls({...Z,...t})}xn(){return this.tn.getStats()}}class rt{constructor(){this.Sn=null,this.bn=null,this.Tn=null,this.En=null,this._n=null,this.An=0,this.position={x:0,y:0}}setPosition(t,e){this.position.x=t,this.position.y=e,this.Ln&&this.Ln.setPosition(t,e)}en(t,e){this.position.x+=t,this.position.y+=e,this.Ln&&this.Ln.en(t,e)}Mn(t){this.Ln=t}Gn(t,e){if(!t||!t.module||!t.hb)throw Error("Invalid font object")
591
- if(this.Ln=e,this.An)return
612
+ r*r+o*o>1e-12&&i.push(s)}}class nt{constructor(t,e){this.Vs=0,this.qs=0,this.Js=[],this.Ys=null,this.Ks=null,this.Xs={min:new D(1/0,1/0),max:new D(-1/0,-1/0)},this.Qs=[],this.Zs=[],this.tn=[],this.en=new D(0,0),this.sn=new st(t),this.nn=new tt({...Z,...e})}setPosition(t,e){this.en.set(t,e)}rn(t,e){this.en.x+=t,this.en.y+=e}hn(t,e){this.Js.length>0&&this.an(),this.Vs=t,this.qs=e,this.Js=[],this.Xs.min.set(1/0,1/0),this.Xs.max.set(-1/0,-1/0),this.Zs.push(this.en.clone())}an(){this.Ys&&this.cn(),this.Js.length>0&&(this.Qs.push({ln:this.Vs,bi:this.Js,bounds:{min:{x:this.Xs.min.x,y:this.Xs.min.y},max:{x:this.Xs.max.x,y:this.Xs.max.y}}}),this.tn.push(this.qs)),this.Js=[]}un(t,e){this.Ys&&this.cn(),this.Ks=new D(t,e),this.fn(this.Ks),this.Ys={points:[this.Ks],dn:this.Vs}}yn(t,e){if(!this.Ys||!this.Ks)return
613
+ const i=new D(t,e)
614
+ this.fn(i),this.Ys.points.push(i),this.Ks=i}pn(t,e,i,s){if(!this.Ys||!this.Ks)return
615
+ const n=this.Ks,r=new D(t,e),o=new D(i,s)
616
+ if(it>Math.abs((r.x-o.x)*(o.y-n.y)-(r.y-o.y)*(o.x-n.x)))return void this.yn(i,s)
617
+ const h=this.sn.Rs(n,r,o)
618
+ for(let t=0;h.length>t;t++){const e=h[t]
619
+ this.fn(e),this.Ys.points.push(e)}this.Ks=o}wn(t,e,i,s,n,r){if(!this.Ys||!this.Ks)return
620
+ const o=this.Ks,h=new D(t,e),a=new D(i,s),c=new D(n,r),l=c.x-o.x,u=c.y-o.y
621
+ if(it>Math.abs((h.x-c.x)*u-(h.y-c.y)*l)&&it>Math.abs((a.x-c.x)*u-(a.y-c.y)*l))return void this.yn(n,r)
622
+ const f=this.sn.js(o,h,a,c)
623
+ for(let t=0;f.length>t;t++){const e=f[t]
624
+ this.fn(e),this.Ys.points.push(e)}this.Ks=c}vn(){if(!this.Ys||!this.Ks)return
625
+ const t=this.Ys.points[0]
626
+ this.Ks.equals(t)||this.Ys.points.push(t),this.cn()}cn(){if(this.Ys){const t=this.nn.Os(this.Ys)
627
+ this.Js.push(t),this.Ys=null,this.Ks=null}}fn(t){this.Xs.min.x=Math.min(this.Xs.min.x,t.x),this.Xs.min.y=Math.min(this.Xs.min.y,t.y),this.Xs.max.x=Math.max(this.Xs.max.x,t.x),this.Xs.max.y=Math.max(this.Xs.max.y,t.y)}mn(){return this.Js.length>0&&this.an(),this.Qs}gn(){return this.Zs}xn(){return this.tn}reset(){this.Qs=[],this.Zs=[],this.tn=[],this.Js=[],this.Ys=null,this.Ks=null,this.Vs=0,this.qs=0,this.en.set(0,0),this.Xs={min:new D(1/0,1/0),max:new D(-1/0,-1/0)}}Ps(t){this.sn.Ps(t)}Sn(t){this.nn.Gs({...Z,...t})}bn(){return this.nn.getStats()}}class rt{constructor(){this.En=null,this._n=null,this.Tn=null,this.An=null,this.Ln=null,this.Mn=0,this.position={x:0,y:0}}setPosition(t,e){this.position.x=t,this.position.y=e,this.In&&this.In.setPosition(t,e)}rn(t,e){this.position.x+=t,this.position.y+=e,this.In&&this.In.rn(t,e)}Gn(t){this.In=t}On(t,e){if(!t||!t.module||!t.hb)throw Error("Invalid font object")
628
+ if(this.In=e,this.Mn)return
592
629
  const i=t.module
593
- this.Sn=i.Fn((t,e,i,s,n)=>{this.Ln?.ln(s,n)},"viiiffi"),this.bn=i.Fn((t,e,i,s,n)=>{this.Ln?.fn(s,n)},"viiiffi"),this.Tn=i.Fn((t,e,i,s,n,r,o)=>{this.Ln?.dn(s,n,r,o)},"viiiffffi"),this.En=i.Fn((t,e,i,s,n,r,o,h,a)=>{this.Ln?.yn(s,n,r,o,h,a)},"viiiffffffi"),this._n=i.Fn(()=>{this.Ln?.pn()},"viiii"),this.An=i.exports.In(),i.exports.On(this.An,this.Sn,0,0),i.exports.Cn(this.An,this.bn,0,0),i.exports.kn(this.An,this.Tn,0,0),i.exports.Bn(this.An,this.En,0,0),i.exports.$n(this.An,this._n,0,0)}Un(){if(!this.An)throw Error("Draw functions not initialized")
594
- return this.An}destroy(t){if(!t||!t.module||!t.hb)return
630
+ this.En=i.Fn((t,e,i,s,n)=>{this.In?.un(s,n)},"viiiffi"),this._n=i.Fn((t,e,i,s,n)=>{this.In?.yn(s,n)},"viiiffi"),this.Tn=i.Fn((t,e,i,s,n,r,o)=>{this.In?.pn(s,n,r,o)},"viiiffffi"),this.An=i.Fn((t,e,i,s,n,r,o,h,a)=>{this.In?.wn(s,n,r,o,h,a)},"viiiffffffi"),this.Ln=i.Fn(()=>{this.In?.vn()},"viiii"),this.Mn=i.exports.kn(),i.exports.Cn(this.Mn,this.En,0,0),i.exports.Bn(this.Mn,this._n,0,0),i.exports.$n(this.Mn,this.Tn,0,0),i.exports.Un(this.Mn,this.An,0,0),i.exports.Nn(this.Mn,this.Ln,0,0)}Dn(){if(!this.Mn)throw Error("Draw functions not initialized")
631
+ return this.Mn}destroy(t){if(!t||!t.module||!t.hb)return
595
632
  const e=t.module
596
- try{this.An&&(e.exports.Nn(this.An),this.An=0),null!==this.Sn&&(e.Pn(this.Sn),this.Sn=null),null!==this.bn&&(e.Pn(this.bn),this.bn=null),null!==this.Tn&&(e.Pn(this.Tn),this.Tn=null),null!==this.En&&(e.Pn(this.En),this.En=null),null!==this._n&&(e.Pn(this._n),this._n=null)}catch(t){l.warn("Error destroying draw callbacks:",t)}this.Ln=void 0}}const ot=new WeakMap
597
- class ht{constructor(t,e){this.Dn="default",this.zn="default",this.cache=t,this.ae=e,this.Rn=new Y,this.Wn=new K,this.jn=new X,this.Ln=new nt,this.Hn=(()=>{const t=this.ae.module,e=ot.get(t)
633
+ try{this.Mn&&(e.exports.Pn(this.Mn),this.Mn=0),null!==this.En&&(e.Rn(this.En),this.En=null),null!==this._n&&(e.Rn(this._n),this._n=null),null!==this.Tn&&(e.Rn(this.Tn),this.Tn=null),null!==this.An&&(e.Rn(this.An),this.An=null),null!==this.Ln&&(e.Rn(this.Ln),this.Ln=null)}catch(t){c.warn("Error destroying draw callbacks:",t)}this.In=void 0}}const ot=new WeakMap
634
+ class ht{constructor(t,e){this.zn="default",this.Wn="default",this.jn=new Set,this.cache=t,this.le=e,this.tessellator=new Y,this.Hn=new K,this.Vn=new X,this.In=new nt,this.qn=(()=>{const t=this.le.module,e=ot.get(t)
598
635
  if(e)return e
599
636
  const i=new rt
600
- return ot.set(t,i),i})(),this.Hn.Gn(this.ae,this.Ln),this.Vn=W,this.qn=j,this.Jn=H}xn(){return this.Ln.xn()}Us(t){this.$s=t,this.Ln.Us(t),this.Yn()}vn(t){this.Kn=t,this.Ln.vn(t),this.Yn()}Xn(t){this.Dn=t,this.Yn()}Yn(){this.zn=`${this.Dn}__${this.Qn()}`}Qn(){const t=this.$s?.ks??.5,e=this.$s?.Bs??.2,i=this.Kn?.enabled??!0,s=this.Kn?.Ss??1,n=this.Kn?.bs??.0087,r=this.Kn?.Ts??10
601
- return[`cf:${t.toFixed(4)},${e.toFixed(4)}`,`opt:${i?1:0},${s.toFixed(4)},${n.toFixed(6)},${r.toFixed(4)}`].join("|")}Zn(t,e,i,n,r=!1,o){c.start("GlyphGeometryBuilder.buildInstancedGeometry",{tr:t.length,er:t.flat().length,depth:e,ir:i})
602
- let h=new Float32Array(1024),a=new Float32Array(1024),l=new Uint32Array(1024),u=0,f=0,d=0
603
- const y=(t,e)=>{if(t.length>=e)return t
604
- let i=t.length
605
- for(;e>i;)i*=2
606
- const s=new Float32Array(i)
607
- return s.set(t),s},p=(t,e,i)=>{const s=t.vertices,n=t.normals,r=t.indices
608
- h=y(h,u+s.length),a=y(a,f+n.length),l=((t,e)=>{if(t.length>=e)return t
609
- let i=t.length
610
- for(;e>i;)i*=2
611
- const s=new Uint32Array(i)
612
- return s.set(t),s})(l,d+r.length)
613
- const o=e.x,c=e.y,p=e.z
614
- for(let t=0;s.length>t;t+=3)h[u++]=s[t]+o,h[u++]=s[t+1]+c,h[u++]=s[t+2]+p
615
- a.set(n,f),f+=n.length
616
- for(let t=0;r.length>t;t++)l[d++]=r[t]+i},g=[],w={min:{x:1/0,y:1/0,z:0},max:{x:-1/0,y:-1/0,z:e}}
637
+ return ot.set(t,i),i})(),this.qn.On(this.le,this.In),this.Jn=W,this.Yn=j,this.Kn=H}bn(){return this.In.bn()}Ps(t){this.Ds=t,this.In.Ps(t),this.Xn()}Sn(t){this.Qn=t,this.In.Sn(t),this.Xn()}Zn(t){this.zn=t,this.Xn()}Xn(){this.Wn=`${this.zn}__${this.tr()}`}tr(){const t=this.Ds?.Us??.5,e=this.Ds?.Ns??.2,i=this.Qn?.enabled??!0,s=this.Qn?._s??1,n=this.Qn?.Ts??.0087,r=this.Qn?.As??10
638
+ return[`cf:${t.toFixed(4)},${e.toFixed(4)}`,`opt:${i?1:0},${s.toFixed(4)},${n.toFixed(6)},${r.toFixed(4)}`].join("|")}er(t,e,i,n,r=!1,o){if(a){let e=0
639
+ for(let i=0;t.length>i;i++)e+=t[i].length}const h=[]
640
+ let c=0,l=0,u=0,f=0
641
+ const d=(t,e,i,s)=>{const n=f
642
+ return h.push({data:t,px:e,ir:i,sr:s,nr:n}),c+=t.vertices.length,l+=t.normals.length,u+=t.indices.length,f+=t.vertices.length/3,n},y=[],p={min:{x:1/0,y:1/0,z:0},max:{x:-1/0,y:-1/0,z:e}}
617
643
  for(let h=0;t.length>h;h++){const a=t[h]
618
- for(const t of a){const h=[]
619
- for(const e of t.glyphs)h.push(this.sr(e.g))
620
- let a
621
- if(t.glyphs.length>1){const e=`${this.zn}_${t.text}`,i=this.Jn.get(e)
644
+ for(const t of a){const h=t.position.x,a=t.position.y,c=t.position.z,l=[]
645
+ for(const e of t.glyphs)l.push(this.rr(e.g))
646
+ let u
647
+ if(t.glyphs.length>1){const e=`${this.Wn}_${t.text}`,i=this.Kn.get(e)
622
648
  let s=!1
623
- if(i&&i.nr.length===t.glyphs.length){s=!0
624
- for(let e=0;t.glyphs.length>e;e++)if(i.nr[e]!==t.glyphs[e].g){s=!1
625
- break}}if(s&&i)a=i.groups
626
- else{const i=t.glyphs.map(t=>new D(t.x??0,t.y??0,0))
627
- a=this.jn.ss(h,i),this.Jn.set(e,{nr:t.glyphs.map(t=>t.g),groups:a})}}else a=[[0]]
628
- const l=o&&t.glyphs.some(t=>o.has(t.rr)),c=r||l
629
- for(const r of a)if(r.length>1&&!c){const s=r.map(e=>t.glyphs[e]),o=this.hr(s,e,i)
630
- let a=this.qn.get(o)
631
- if(!a){const i=[],l=s[0].x??0,c=s[0].y??0
632
- for(let e=0;r.length>e;e++){const s=r[e],n=h[s],o=t.glyphs[s],a=(o.x??0)-l,u=(o.y??0)-c
633
- for(const t of n.mi)i.push({...t,points:t.points.map(t=>new P(t.x+a,t.y+u))})}a=this.ar(i,e,n),this.qn.set(o,a)}const l=s[0],c=new D(t.position.x+(l.x??0),t.position.y+(l.y??0),t.position.z),f=u/3
634
- p(a,c,f)
635
- const d=a.vertices.length/3
636
- for(let i=0;r.length>i;i++){const s=r[i],n=t.glyphs[s],o=h[s],a=new D(t.position.x+(n.x??0),t.position.y+(n.y??0),t.position.z),l=this.lr(n,f,d,a,o,e)
637
- g.push(l),this.cr(l.bounds,w)}}else for(const o of r){const r=t.glyphs[o],a=h[o],l=new D(t.position.x+(r.x??0),t.position.y+(r.y??0),t.position.z)
638
- if(0===a.mi.length){const t=this.lr(r,0,0,l,a,e)
639
- g.push(t)
640
- continue}let c=this.cache.get(s(this.zn,r.g,e,i))
641
- c?c.ur++:(c=this.dr(a,e,i,n),this.cache.set(s(this.zn,r.g,e,i),c))
642
- const f=u/3
643
- p(c,l,f)
644
- const d=this.lr(r,f,c.vertices.length/3,l,a,e)
645
- g.push(d),this.cr(d.bounds,w)}}}const m=h.slice(0,u),v=a.slice(0,f),x=l.slice(0,d)
646
- return c.end("GlyphGeometryBuilder.buildInstancedGeometry"),{vertices:m,normals:v,indices:x,yr:g,planeBounds:w}}hr(t,e,i){if(0===t.length)return""
649
+ if(i&&i.hr.length===t.glyphs.length){s=!0
650
+ for(let e=0;t.glyphs.length>e;e++)if(i.hr[e]!==t.glyphs[e].g){s=!1
651
+ break}}if(s&&i)u=i.groups
652
+ else{const i=t.glyphs.map(t=>new P(t.x??0,t.y??0,0))
653
+ u=this.Vn.cs(l,i),this.Kn.set(e,{hr:t.glyphs.map(t=>t.g),groups:u})}}else u=[[0]]
654
+ const f=o&&t.glyphs.some(t=>o.has(t.ar)),w=r||f
655
+ for(const r of u)if(r.length>1&&!w){const s=r.map(e=>t.glyphs[e]),o=this.cr(s,e,i)
656
+ let u=this.Yn.get(o)
657
+ if(!u){const i=[],h=s[0].x??0,a=s[0].y??0
658
+ for(let e=0;r.length>e;e++){const s=r[e],n=l[s],o=t.glyphs[s],c=(o.x??0)-h,u=(o.y??0)-a
659
+ for(const t of n.bi)i.push({...t,points:t.points.map(t=>new D(t.x+c,t.y+u))})}u=this.lr(i,e,n),this.Yn.set(o,u)}const f=s[0],w=d(u,h+(f.x??0),a+(f.y??0),c),v=u.vertices.length/3
660
+ for(let i=0;r.length>i;i++){const s=r[i],n=t.glyphs[s],o=this.ur(n,w,v,h+(n.x??0),a+(n.y??0),c,l[s],e)
661
+ y.push(o),this.dr(o.bounds,p)}}else for(const o of r){const r=t.glyphs[o],u=l[o],f=h+(r.x??0),w=a+(r.y??0),v=c
662
+ if(0===u.bi.length){const t=this.ur(r,0,0,f,w,v,u,e)
663
+ y.push(t)
664
+ continue}const m=s(this.Wn,r.g,e,i)
665
+ let g=this.cache.get(m)
666
+ g?g.yr++:(g=this.pr(u,e,i,n),this.cache.set(m,g))
667
+ const x=d(g,f,w,v),S=this.ur(r,x,g.vertices.length/3,f,w,v,u,e)
668
+ y.push(S),this.dr(S.bounds,p)}}}const w=new Float32Array(c),v=new Float32Array(l),m=new Uint32Array(u)
669
+ let g=0,x=0,S=0
670
+ for(let t=0;h.length>t;t++){const e=h[t],i=e.data.vertices,s=e.data.normals,n=e.data.indices,r=e.px,o=e.ir,a=e.sr
671
+ for(let t=0;i.length>t;t+=3)w[g++]=i[t]+r,w[g++]=i[t+1]+o,w[g++]=i[t+2]+a
672
+ v.set(s,x),x+=s.length
673
+ const c=e.nr
674
+ for(let t=0;n.length>t;t++)m[S++]=n[t]+c}return{vertices:w,normals:v,indices:m,wr:y,planeBounds:p}}cr(t,e,i){if(0===t.length)return""
647
675
  const s=t[0].x??0,n=t[0].y??0,r=t.map(t=>`${t.g}:${(t.x??0)-s},${(t.y??0)-n}`).join("|")
648
- return`${this.zn}_${r}_${Math.round(1e3*e)/1e3}_${i}`}lr(t,e,i,s,n,r){return{hn:t.rr,pr:t.pr,gr:e,wr:i,bounds:{min:{x:n.bounds.min.x+s.x,y:n.bounds.min.y+s.y,z:s.z},max:{x:n.bounds.max.x+s.x,y:n.bounds.max.y+s.y,z:s.z+r}}}}sr(t){const e=`${this.zn}_${t}`,i=this.Vn.get(e)
676
+ return`${this.Wn}_${r}_${Math.round(1e3*e)/1e3}_${i}`}ur(t,e,i,s,n,r,o,h){return{vr:t.ar,mr:t.mr,nr:e,gr:i,bounds:{min:{x:o.bounds.min.x+s,y:o.bounds.min.y+n,z:r},max:{x:o.bounds.max.x+s,y:o.bounds.max.y+n,z:r+h}}}}rr(t){if(this.jn.has(t))return{ln:t,bi:[],bounds:{min:{x:0,y:0},max:{x:0,y:0}}}
677
+ const e=`${this.Wn}_${t}`,i=this.Jn.get(e)
649
678
  if(i)return i
650
- this.Hn.Mn(this.Ln),this.Ln.reset(),this.Ln.sn(t,0),this.ae.module.exports.mr(this.ae.font.vr,t,this.Hn.Un(),0),this.Ln.nn()
651
- const s=this.Ln.gn()[0]||{rn:t,mi:[],bounds:{min:{x:0,y:0},max:{x:0,y:0}}}
652
- return this.Vn.set(e,s),s}ar(t,e,i){const s=this.Rn.process(t,!0,i)
653
- return this.Sr(s,e)}Sr(t,e){c.start("Extruder.extrude",{depth:e,upem:this.ae.upem})
654
- const i=this.Wn.es(t,e,this.ae.upem)
655
- c.end("Extruder.extrude")
656
- const s=i.vertices
657
- let n=1/0,r=1/0,o=1/0,h=-1/0,a=-1/0,l=-1/0
658
- for(let t=0;s.length>t;t+=3){const e=s[t],i=s[t+1],c=s[t+2]
659
- n>e&&(n=e),e>h&&(h=e),r>i&&(r=i),i>a&&(a=i),o>c&&(o=c),c>l&&(l=c)}const u=new D(n,r,o),f=new D(h,a,l)
660
- return{geometry:t,vertices:i.vertices,normals:i.normals,indices:i.indices,bounds:{min:u,max:f},ur:1}}dr(t,e,i,s){c.start("GlyphGeometryBuilder.tessellateGlyph",{rn:t.rn,br:t.mi.length})
661
- const n=this.Rn.process(t.mi,i,s)
662
- return c.end("GlyphGeometryBuilder.tessellateGlyph"),this.Sr(n,e)}cr(t,e){const i=e.min,s=e.max,n=t.min,r=t.max
663
- i.x>n.x&&(i.x=n.x),i.y>n.y&&(i.y=n.y),i.z>n.z&&(i.z=n.z),r.x>s.x&&(s.x=r.x),r.y>s.y&&(s.y=r.y),r.z>s.z&&(s.z=r.z)}Tr(){return this.cache.getStats()}clearCache(){this.cache.clear(),this.qn.clear(),this.Jn.clear(),this.Vn.clear()}}class at{constructor(t,e){this.Er=new Map,this.ae=t,this._r=e}Ar(t,e,i,s,n,r,o){c.start("TextShaper.shapeLines",{tr:t.length})
664
- try{const r=[]
665
- return t.forEach((t,o)=>{const h=this.Lr(t,o,e,i,s,n)
666
- r.push(h)}),r}finally{c.end("TextShaper.shapeLines")}}Lr(e,i,s,n,r,o){const h=this.ae.hb.createBuffer()
667
- "rtl"===o&&h.Mr("rtl"),h.re(e.text),h.oe()
668
- const a=t(this.ae.he)
669
- this.ae.hb.shape(this.ae.font,h,a)
670
- const l=h.json(this.ae.font)
679
+ this.qn.Gn(this.In),this.In.reset(),this.In.hn(t,0),this.le.module.exports.Sr(this.le.font.br,t,this.qn.Dn(),0),this.In.an()
680
+ const s=this.In.mn()[0]||{ln:t,bi:[],bounds:{min:{x:0,y:0},max:{x:0,y:0}}}
681
+ return 0===s.bi.length&&this.jn.add(t),this.Jn.set(e,s),s}lr(t,e,i){const s=this.tessellator.process(t,!0,i,0!==e)
682
+ return this.Er(s,e)}Er(t,e){const i=this.Hn.hs(t,e,this.le.upem),s=i.vertices
683
+ let n=1/0,r=1/0,o=1/0,h=-1/0,a=-1/0,c=-1/0
684
+ for(let t=0;s.length>t;t+=3){const e=s[t],i=s[t+1],l=s[t+2]
685
+ n>e&&(n=e),e>h&&(h=e),r>i&&(r=i),i>a&&(a=i),o>l&&(o=l),l>c&&(c=l)}const l=new P(n,r,o),u=new P(h,a,c)
686
+ return{geometry:t,vertices:i.vertices,normals:i.normals,indices:i.indices,bounds:{min:l,max:u},yr:1}}pr(t,e,i,s){const n=this.tessellator.process(t.bi,i,s,0!==e)
687
+ return this.Er(n,e)}dr(t,e){const i=e.min,s=e.max,n=t.min,r=t.max
688
+ i.x>n.x&&(i.x=n.x),i.y>n.y&&(i.y=n.y),i.z>n.z&&(i.z=n.z),r.x>s.x&&(s.x=r.x),r.y>s.y&&(s.y=r.y),r.z>s.z&&(s.z=r.z)}_r(){return this.cache.getStats()}clearCache(){this.cache.clear(),this.Yn.clear(),this.Kn.clear(),this.Jn.clear()}}class at{constructor(t,e){this.Tr=new Map,this.le=t,this.Ar=e}Lr(t,e,i,s,n,r,o){try{const r=[]
689
+ return t.forEach((t,o)=>{const h=this.Mr(t,o,e,i,s,n)
690
+ r.push(h)}),r}finally{}}Mr(e,i,s,n,r,o){const h=this.le.hb.createBuffer()
691
+ "rtl"===o&&h.Ir("rtl"),h.oe(e.text),h.he()
692
+ const a=t(this.le.ae)
693
+ this.le.hb.shape(this.le.font,h,a)
694
+ const c=h.json(this.le.font)
671
695
  h.destroy()
672
- const c=[]
673
- let u=[],f="",d=new D,y=new D(e.Nt,-i*s,0)
674
- const p=n*this.ae.upem,g=this.Gr(e,r,n),w=this.Fr(e,r)
675
- for(let t=0;l.length>t;t++){const s=l[t],n=/\s/.test(e.text[s.Ir])
676
- s.rr=e.Dt&&s.Ir===e.text.length-1&&"-"===e.text[s.Ir]?e.Ut:e.$t+s.Ir,s.pr=i,n&&u.length>0&&(c.push({text:f,glyphs:u,position:d.clone()}),u=[],f="")
677
- const r=y.clone().add(new D(s.dx,s.dy,0))
678
- if(n||(0===u.length&&d.Xe(r),s.x=r.x-d.x,s.y=r.y-d.y,u.push(s),f+=e.text[s.Ir]),y.x+=s.ax,y.y+=s.ay,0!==p&&l.length-1>t&&(y.x+=p),n&&(y.x+=g),0!==w&&l.length-1>t&&!n){const i=e.text[s.Ir],n=e.text[l[t+1].Ir],r=M.tt(i),o=n&&M.tt(n)
696
+ const l=[]
697
+ let u=[],f="",d=0,y=0,p=e.Dt,w=-i*s
698
+ const v=n*this.le.upem,m=this.Gr(e,r,n),g=this.Or(e,r)
699
+ for(let t=0;c.length>t;t++){const s=c[t],n=/\s/.test(e.text[s.ce])
700
+ s.ar=e.Rt&&s.ce===e.text.length-1&&"-"===e.text[s.ce]?e.Nt:e.Ut+s.ce,s.mr=i,n&&u.length>0&&(l.push({text:f,glyphs:u,position:new P(d,y,0)}),u=[],f="")
701
+ const r=p+s.dx,o=w+s.dy
702
+ if(n||(0===u.length&&(d=r,y=o),s.x=r-d,s.y=o-y,u.push(s),f+=e.text[s.ce]),p+=s.ax,w+=s.ay,0!==v&&c.length-1>t&&(p+=v),n&&(p+=m),0!==g&&c.length-1>t&&!n){const i=e.text[s.ce],n=e.text[c[t+1].ce],r=L.tt(i),o=n&&L.tt(n)
679
703
  if(r&&o){let t=!0
680
- M.et(n)&&(t=!1),M.it(i)&&(t=!1),M.st(i)&&M.st(n)&&(t=!1),t&&(y.x+=w)}}}return u.length>0&&c.push({text:f,glyphs:u,position:d.clone()}),c}Gr(t,e,i){let s=0
681
- if(void 0!==t.Yt&&"justify"===e&&!t.Pt){let e=this.Er.get(i)
682
- void 0===e&&(e=G.measureTextWidth(this.ae," ",i),this.Er.set(i,e)),t.Yt>0?s=t.Yt*e*.5:0>t.Yt&&(s=t.Yt*e*y)}return s}Fr(t,e){if(void 0===t.Yt||"justify"!==e||t.Pt)return 0
683
- return t.Yt>0||0>t.Yt?.04*t.Yt*this.ae.upem:0}clearCache(){this._r.clearCache()}Tr(){return this._r.Tr()}}var lt={exports:{}},ct=h(Object.freeze({__proto__:null,default:{},Or(){throw Error("fs not available in browser")}}))
684
- !(function(t){var e,i=(e="undefined"!=typeof document?document.currentScript?.src:void 0,async function(t={}){function i(){var t=w.buffer
685
- n.HEAP8=new Int8Array(t),n.HEAPU8=m=new Uint8Array(t),n.HEAP32=new Int32Array(t),n.HEAPU32=new Uint32Array(t),n.HEAPF32=new Float32Array(t),new BigInt64Array(t),new BigUint64Array(t)}function s(t){n.Cr?.(t),x(t="Aborted("+t+")"),S=!0,t+=". Build with -sASSERTIONS for more info."
704
+ L.et(n)&&(t=!1),L.it(i)&&(t=!1),L.st(i)&&L.st(n)&&(t=!1),t&&(p+=g)}}}return u.length>0&&l.push({text:f,glyphs:u,position:new P(d,y,0)}),l}Gr(t,e,i){let s=0
705
+ if(void 0!==t.Kt&&"justify"===e&&!t.Pt){let e=this.Tr.get(i)
706
+ void 0===e&&(e=I.measureTextWidth(this.le," ",i),this.Tr.set(i,e)),t.Kt>0?s=t.Kt*e*.5:0>t.Kt&&(s=t.Kt*e*d)}return s}Or(t,e){if(void 0===t.Kt||"justify"!==e||t.Pt)return 0
707
+ return t.Kt>0||0>t.Kt?.04*t.Kt*this.le.upem:0}clearCache(){this.Ar.clearCache()}_r(){return this.Ar._r()}}var ct={exports:{}},lt=h(Object.freeze({__proto__:null,default:{},Fr(){throw Error("fs not available in browser")}}))
708
+ !(function(t){var e,i=(e="undefined"!=typeof document?document.currentScript?.src:void 0,async function(t={}){function i(){var t=v.buffer
709
+ n.HEAP8=new Int8Array(t),n.HEAPU8=m=new Uint8Array(t),n.HEAP32=new Int32Array(t),n.HEAPU32=new Uint32Array(t),n.HEAPF32=new Float32Array(t),new BigInt64Array(t),new BigUint64Array(t)}function s(t){n.kr?.(t),x(t="Aborted("+t+")"),S=!0,t+=". Build with -sASSERTIONS for more info."
686
710
  var e=new WebAssembly.RuntimeError(t)
687
- throw g?.(e),e}var n=t,r="object"==typeof window,o="undefined"!=typeof WorkerGlobalScope,h="object"==typeof process&&process.versions?.node&&"renderer"!=process.type,a=(t,e)=>{throw e}
711
+ throw w?.(e),e}var n=t,r="object"==typeof window,o="undefined"!=typeof WorkerGlobalScope,h="object"==typeof process&&process.versions?.node&&"renderer"!=process.type,a=(t,e)=>{throw e}
688
712
  "undefined"!=typeof __filename?e=__filename:o&&(e=self.location.href)
689
- var l,c,u=""
690
- if(h){var f=ct
691
- u=__dirname+"/",c=t=>(t=b(t)?new URL(t):t,f.Or(t)),l=async(t,e=!0)=>(t=b(t)?new URL(t):t,f.Or(t,e?void 0:"utf8")),process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),a=(t,e)=>{throw process.exitCode=t,e}}else if(r||o){try{u=new URL(".",e).href}catch{}o&&(c=t=>{var e=new XMLHttpRequest
692
- return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)}),l=async t=>{if(b(t))return new Promise((e,i)=>{var s=new XMLHttpRequest
713
+ var c,l,u=""
714
+ if(h){var f=lt
715
+ u=__dirname+"/",l=t=>(t=b(t)?new URL(t):t,f.Fr(t)),c=async(t,e=!0)=>(t=b(t)?new URL(t):t,f.Fr(t,e?void 0:"utf8")),process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),a=(t,e)=>{throw process.exitCode=t,e}}else if(r||o){try{u=new URL(".",e).href}catch{}o&&(l=t=>{var e=new XMLHttpRequest
716
+ return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)}),c=async t=>{if(b(t))return new Promise((e,i)=>{var s=new XMLHttpRequest
693
717
  s.open("GET",t,!0),s.responseType="arraybuffer",s.onload=()=>{200==s.status||0==s.status&&s.response?e(s.response):i(s.status)},s.onerror=i,s.send(null)})
694
718
  var e=await fetch(t,{credentials:"same-origin"})
695
719
  if(e.ok)return e.arrayBuffer()
696
720
  throw Error(e.status+" : "+e.url)}}console.log.bind(console)
697
- var d,y,p,g,w,m,v,x=console.error.bind(console),S=!1,b=t=>t.startsWith("file://"),T=!1,E=0,_=null
721
+ var d,y,p,w,v,m,g,x=console.error.bind(console),S=!1,b=t=>t.startsWith("file://"),E=!1,_=0,T=null
698
722
  class A{name="ExitStatus"
699
- constructor(t){this.message=`Program terminated with exit(${t})`,this.status=t}}var L,M,G,F=t=>{for(;t.length>0;)t.shift()(n)},I=[],O=t=>I.push(t),C=[],k=t=>C.push(t),B=!0,$=0,U={},N=t=>{if(t instanceof A||"unwind"==t)return y
700
- a(1,t)},P=()=>B||$>0,D=t=>{y=t,P()||(n.kr?.(t),S=!0),a(t,new A(t))},z=(t,e)=>Math.ceil(t/e)*e,R=t=>{var e=(t-w.buffer.byteLength+65535)/65536|0
701
- try{return w.grow(e),i(),1}catch(t){}},W=t=>{const e=t.length
702
- return[e%128|128,e>>7,...t]},j={Si:127,Ti:127,_i:126,f:125,d:124,e:111},H=t=>W(Array.from(t,t=>j[t])),V=t=>L.get(t),q=[],J=(t,e)=>L.set(t,e)
703
- n.Br&&(B=n.Br),n.$r&&(x=n.$r),n.Ur&&(d=n.Ur),n.Nr=w,n.Pr=K,n.Fn=(t,e)=>{var i=(t=>(M||(M=new WeakMap,((t,e)=>{if(M)for(var i=0;0+e>i;i++){var s=V(i)
723
+ constructor(t){this.message=`Program terminated with exit(${t})`,this.status=t}}var L,M,I,G=t=>{for(;t.length>0;)t.shift()(n)},O=[],F=t=>O.push(t),k=[],C=t=>k.push(t),B=!0,$=0,U={},N=t=>{if(t instanceof A||"unwind"==t)return y
724
+ a(1,t)},D=()=>B||$>0,P=t=>{y=t,D()||(n.Cr?.(t),S=!0),a(t,new A(t))},R=(t,e)=>Math.ceil(t/e)*e,z=t=>{var e=(t-v.buffer.byteLength+65535)/65536|0
725
+ try{return v.grow(e),i(),1}catch(t){}},W=t=>{const e=t.length
726
+ return[e%128|128,e>>7,...t]},j={_i:127,Ai:127,Mi:126,f:125,d:124,e:111},H=t=>W(Array.from(t,t=>j[t])),V=t=>L.get(t),q=[],J=(t,e)=>L.set(t,e)
727
+ n.Br&&(B=n.Br),n.$r&&(x=n.$r),n.Ur&&(d=n.Ur),n.Nr=v,n.Dr=K,n.Fn=(t,e)=>{var i=(t=>(M||(M=new WeakMap,((t,e)=>{if(M)for(var i=0;0+e>i;i++){var s=V(i)
704
728
  s&&M.set(s,i)}})(0,L.length)),M.get(t)||0))(t)
705
729
  if(i)return i
706
730
  var s=q.length?q.pop():L.grow(1)
707
731
  try{J(s,t)}catch(i){if(!(i instanceof TypeError))throw i
708
732
  var n=((t,e)=>{var i=Uint8Array.of(0,97,115,109,1,0,0,0,1,...W([1,96,...H(e.slice(1)),...H("v"===e[0]?"":e[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),s=new WebAssembly.Module(i)
709
733
  return new WebAssembly.Instance(s,{e:{f:t}}).exports.f})(t,e)
710
- J(s,n)}return M.set(t,s),s},n.Pn=t=>{M.delete(V(t)),J(t,null),q.push(t)}
711
- var Y={Dr:()=>s(""),zr(){B=!1,$=0},Rr(t,e){if(U[t]&&(clearTimeout(U[t].id),delete U[t]),!e)return 0
712
- var i=setTimeout(()=>{delete U[t],(t=>{if(!S)try{t(),(()=>{if(!P())try{y=t=y,D(t)}catch(t){N(t)}var t})()}catch(t){N(t)}})(()=>G(t,performance.now()))},e)
734
+ J(s,n)}return M.set(t,s),s},n.Rn=t=>{M.delete(V(t)),J(t,null),q.push(t)}
735
+ var Y={Pr:()=>s(""),Rr(){B=!1,$=0},zr(t,e){if(U[t]&&(clearTimeout(U[t].id),delete U[t]),!e)return 0
736
+ var i=setTimeout(()=>{delete U[t],(t=>{if(!S)try{t(),(()=>{if(!D())try{y=t=y,P(t)}catch(t){N(t)}var t})()}catch(t){N(t)}})(()=>I(t,performance.now()))},e)
713
737
  return U[t]={id:i,Wr:e},0},jr(t){var e=m.length,i=2147483648
714
738
  if((t>>>=0)>i)return!1
715
- for(var s=1;4>=s;s*=2){var n=e*(1+.2/s),r=Math.min(i,z(Math.max(t,n=Math.min(n,t+100663296)),65536))
716
- if(R(r))return!0}return!1},Hr:D},K=await(async()=>{function t(t){return n.Pr=K=t.exports,n.Nr=w=K.memory,i(),L=K.Vr,(t=>{n.qr=t.Jr,n.Yr=t.Kr,n.Xr=t.Qr,n.Zr=t.eo,n.io=t.so,n.no=t.ro,n.oo=t.ho,n.ao=t.lo,n.co=t.uo,n.fo=t.do,n.yo=t.po,n.wo=t.mo,n.vo=t.xo,n.So=t.bo,n.To=t.Eo,n._o=t.Ao,n.Lo=t.Mo,n.Go=t.Fo,n.Io=t.Oo,n.Co=t.ko,n.Bo=t.$o,n.Uo=t.No,n.Po=t.Do,n.zo=t.Ro,n.Wo=t.jo,n.Ho=t.Vo,n.qo=t.Jo,n.Yo=t.Ko,n.Xo=t.On,n.Qo=t.Cn,n.Zo=t.kn,n.th=t.Bn,n.eh=t.$n,n.ih=t.In,n.sh=t.Nn,n.nh=t.rh,n.oh=t.hh,n.ah=t.uh,n.fh=t.dh,n.yh=t.ph,n.gh=t.mr,n.wh=t.mh,n.xh=t.Sh,n.bh=t.Th,n.Eh=t._h,n.Ah=t.Lh,n.Mh=t.Gh,n.Fh=t.Ih,n.Oh=t.Ch,n.kh=t.Bh,n.$h=t.Uh,n.Nh=t.Ph,G=t.Dh})(K),(()=>{if(E--,n.zh?.(E),0==E&&_){var t=_
717
- _=null,t()}})(),K}E++,n.zh?.(E)
718
- var e,r={u:Y,Rh:Y}
719
- return n.Wh?new Promise(e=>{n.Wh(r,i=>{e(t(i))})}):(v??=(e="hb.wasm",n.jh?n.jh(e,u):u+e),t((await(async function(t,e,i){if(!t&&!b(e)&&!h)try{var n=fetch(e,{credentials:"same-origin"})
720
- return await WebAssembly.instantiateStreaming(n,i)}catch(t){x("wasm streaming compile failed: "+t),x("falling back to ArrayBuffer instantiation")}return(async(t,e)=>{try{var i=await(async t=>{if(!d)try{var e=await l(t)
721
- return new Uint8Array(e)}catch{}return(t=>{if(t==v&&d)return new Uint8Array(d)
722
- if(c)return c(t)
739
+ for(var s=1;4>=s;s*=2){var n=e*(1+.2/s),r=Math.min(i,R(Math.max(t,n=Math.min(n,t+100663296)),65536))
740
+ if(z(r))return!0}return!1},Hr:P},K=await(async()=>{function t(t){return n.Dr=K=t.exports,n.Nr=v=K.memory,i(),L=K.Vr,(t=>{n.qr=t.Jr,n.Yr=t.Kr,n.Xr=t.Qr,n.Zr=t.eo,n.io=t.so,n.no=t.ro,n.oo=t.ho,n.ao=t.co,n.lo=t.uo,n.fo=t.do,n.yo=t.po,n.wo=t.vo,n.mo=t.xo,n.So=t.bo,n.Eo=t._o,n.To=t.Ao,n.Lo=t.Mo,n.Io=t.Go,n.Oo=t.Fo,n.ko=t.Co,n.Bo=t.$o,n.Uo=t.No,n.Do=t.Po,n.Ro=t.zo,n.Wo=t.jo,n.Ho=t.Vo,n.qo=t.Jo,n.Yo=t.Ko,n.Xo=t.Cn,n.Qo=t.Bn,n.Zo=t.$n,n.th=t.Un,n.eh=t.Nn,n.ih=t.kn,n.sh=t.Pn,n.nh=t.rh,n.oh=t.hh,n.ah=t.uh,n.fh=t.dh,n.yh=t.ph,n.wh=t.Sr,n.mh=t.gh,n.xh=t.Sh,n.bh=t.Eh,n._h=t.Th,n.Ah=t.Lh,n.Mh=t.Ih,n.Gh=t.Oh,n.Fh=t.kh,n.Ch=t.Bh,n.$h=t.Uh,n.Nh=t.Dh,I=t.Ph})(K),(()=>{if(_--,n.Rh?.(_),0==_&&T){var t=T
741
+ T=null,t()}})(),K}_++,n.Rh?.(_)
742
+ var e,r={u:Y,zh:Y}
743
+ return n.Wh?new Promise(e=>{n.Wh(r,i=>{e(t(i))})}):(g??=(e="hb.wasm",n.jh?n.jh(e,u):u+e),t((await(async function(t,e,i){if(!t&&!b(e)&&!h)try{var n=fetch(e,{credentials:"same-origin"})
744
+ return await WebAssembly.instantiateStreaming(n,i)}catch(t){x("wasm streaming compile failed: "+t),x("falling back to ArrayBuffer instantiation")}return(async(t,e)=>{try{var i=await(async t=>{if(!d)try{var e=await c(t)
745
+ return new Uint8Array(e)}catch{}return(t=>{if(t==g&&d)return new Uint8Array(d)
746
+ if(l)return l(t)
723
747
  throw"both async and sync fetching of the wasm failed"})(t)})(t)
724
- return await WebAssembly.instantiate(i,e)}catch(t){x("failed to asynchronously prepare wasm: "+t),s(t)}})(e,i)})(d,v,r)).Hh))})()
725
- return(()=>{if(n.Vh)for("function"==typeof n.Vh&&(n.Vh=[n.Vh]);n.Vh.length>0;)n.Vh.shift()()})(),(function t(){function e(){n.qh=!0,S||(T=!0,K.Jh(),p?.(n),n.Yh?.(),(()=>{if(n.Kh)for("function"==typeof n.Kh&&(n.Kh=[n.Kh]);n.Kh.length;)O(n.Kh.shift())
726
- F(I)})())}E>0?_=t:((()=>{if(n.Xh)for("function"==typeof n.Xh&&(n.Xh=[n.Xh]);n.Xh.length;)k(n.Xh.shift())
727
- F(C)})(),E>0?_=t:n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),e()},1)):e())})(),T?n:new Promise((t,e)=>{p=t,g=e})})
728
- t.exports=i,t.exports.default=i})(lt)
729
- var ut=o(lt.exports),ft={exports:{}}
748
+ return await WebAssembly.instantiate(i,e)}catch(t){x("failed to asynchronously prepare wasm: "+t),s(t)}})(e,i)})(d,g,r)).Hh))})()
749
+ return(()=>{if(n.Vh)for("function"==typeof n.Vh&&(n.Vh=[n.Vh]);n.Vh.length>0;)n.Vh.shift()()})(),(function t(){function e(){n.qh=!0,S||(E=!0,K.Jh(),p?.(n),n.Yh?.(),(()=>{if(n.Kh)for("function"==typeof n.Kh&&(n.Kh=[n.Kh]);n.Kh.length;)F(n.Kh.shift())
750
+ G(O)})())}_>0?T=t:((()=>{if(n.Xh)for("function"==typeof n.Xh&&(n.Xh=[n.Xh]);n.Xh.length;)C(n.Xh.shift())
751
+ G(k)})(),_>0?T=t:n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),e()},1)):e())})(),E?n:new Promise((t,e)=>{p=t,w=e})})
752
+ t.exports=i,t.exports.default=i})(ct)
753
+ var ut=o(ct.exports),ft={exports:{}}
730
754
  try{ft.exports=t=>{function e(t){return(255&t.charCodeAt(0))<<24|(255&t.charCodeAt(1))<<16|(255&t.charCodeAt(2))<<8|255&t.charCodeAt(3)}function i(e){var i=n.Jo(e.length+1)
731
755
  for(let s=0;e.length>s;++s){const n=e.charCodeAt(s)
732
756
  if(n>127)throw Error("Expected ASCII text")
733
- t.HEAPU8[i+s]=n}return t.HEAPU8[i+e.length]=0,{vr:i,length:e.length,Ko(){n.Ko(i)}}}function s(t,e,s){var r=0,o=0
757
+ t.HEAPU8[i+s]=n}return t.HEAPU8[i+e.length]=0,{br:i,length:e.length,Ko(){n.Ko(i)}}}function s(t,e,s){var r=0,o=0
734
758
  s&&(s=s.split(","),r=n.Jo(16*s.length),s.forEach(t=>{var e=i(t)
735
- n.Vo(e.vr,-1,r+16*o)&&o++,e.Ko()})),n.Ph(t.vr,e.vr,r,o),r&&n.Ko(r)}var n=t.Pr,r=new TextDecoder("utf8")
736
- let o=t.Fn,h=t.Pn
737
- var a=o(t=>{n.Ko(t)},"vi"),l=e("JSON"),c="",u=n.Jo(256)
738
- return{Pe(e){var i=n.Jo(e.byteLength)
759
+ n.Vo(e.br,-1,r+16*o)&&o++,e.Ko()})),n.Dh(t.br,e.br,r,o),r&&n.Ko(r)}var n=t.Dr,r=new TextDecoder("utf8")
760
+ let o=t.Fn,h=t.Rn
761
+ var a=o(t=>{n.Ko(t)},"vi"),c=e("JSON"),l="",u=n.Jo(256)
762
+ return{ze(e){var i=n.Jo(e.byteLength)
739
763
  t.HEAPU8.set(new Uint8Array(e),i)
740
764
  var s=n.Jr(i,e.byteLength,2,i,a)
741
- return{vr:s,destroy(){n.Kr(s)}}},De(i,s){var r=n.rh(i.vr,s)
765
+ return{br:s,destroy(){n.Kr(s)}}},We(i,s){var r=n.rh(i.br,s)
742
766
  const o=n.dh(r)
743
- return{vr:r,upem:o,Qh(i){var s=n.uh(r,e(i)),o=n.Qr(s)
767
+ return{br:r,upem:o,Qh(i){var s=n.uh(r,e(i)),o=n.Qr(s)
744
768
  if(o){var h=n.eo(s,null)
745
- return t.HEAPU8.subarray(h,h+o)}},We(){var e=n.Jo(2048),i=n.Jo(4)
746
- t.HEAPU32[i/4]=64,n.Ch(r,0,i,e)
769
+ return t.HEAPU8.subarray(h,h+o)}},Ve(){var e=n.Jo(2048),i=n.Jo(4)
770
+ t.HEAPU32[i/4]=64,n.kh(r,0,i,e)
747
771
  var s={}
748
772
  return Array.from({length:t.HEAPU32[i/4]}).forEach((i,n)=>{var r
749
- s[(r=t.HEAPU32[e/4+8*n+1],""+String.fromCharCode(r>>24&255)+String.fromCharCode(r>>16&255)+String.fromCharCode(r>>8&255)+String.fromCharCode(255&r))]={min:t.HEAPF32[e/4+8*n+4],default:t.HEAPF32[e/4+8*n+5],max:t.HEAPF32[e/4+8*n+6]}}),n.Ko(i),n.Ko(e),s},Zh(){var e=n.Gh()
773
+ s[(r=t.HEAPU32[e/4+8*n+1],""+String.fromCharCode(r>>24&255)+String.fromCharCode(r>>16&255)+String.fromCharCode(r>>8&255)+String.fromCharCode(255&r))]={min:t.HEAPF32[e/4+8*n+4],default:t.HEAPF32[e/4+8*n+5],max:t.HEAPF32[e/4+8*n+6]}}),n.Ko(i),n.Ko(e),s},Zh(){var e=n.Ih()
750
774
  n.ph(r,e)
751
775
  var i=(e=>{const i=n.Bh(e),s=n.Jo(i<<2),r=s>>2,o=t.HEAPU32.subarray(r,r+i)
752
776
  return t.HEAPU32.set(o,r),n.Uh(e,-1,s,i),o})(e)
753
- return n.Ih(e),i},destroy(){n.hh(r)}}},ze(i){function s(t){return l||(f=o((t,e,i,s,n)=>{c+=`M${s},${n}`},"viiiffi"),d=o((t,e,i,s,n)=>{c+=`L${s},${n}`},"viiiffi"),y=o((t,e,i,s,n,r,o,h,a)=>{c+=`C${s},${n} ${r},${o} ${h},${a}`},"viiiffffffi"),p=o((t,e,i,s,n,r,o)=>{c+=`Q${s},${n} ${r},${o}`},"viiiffffi"),g=o(()=>{c+="Z"},"viiii"),l=n.In(),n.On(l,f,0,0),n.Cn(l,d,0,0),n.Bn(l,y,0,0),n.kn(l,p,0,0),n.$n(l,g,0,0)),c="",n.mr(a,t,l,0),c}var a=n.Sh(i.vr),l=null,f=null,d=null,y=null,p=null,g=null
754
- return{vr:a,ta(e){n.mh(a,e,u,256)
777
+ return n.Oh(e),i},destroy(){n.hh(r)}}},je(i){function s(t){return c||(f=o((t,e,i,s,n)=>{l+=`M${s},${n}`},"viiiffi"),d=o((t,e,i,s,n)=>{l+=`L${s},${n}`},"viiiffi"),y=o((t,e,i,s,n,r,o,h,a)=>{l+=`C${s},${n} ${r},${o} ${h},${a}`},"viiiffffffi"),p=o((t,e,i,s,n,r,o)=>{l+=`Q${s},${n} ${r},${o}`},"viiiffffi"),w=o(()=>{l+="Z"},"viiii"),c=n.kn(),n.Cn(c,f,0,0),n.Bn(c,d,0,0),n.Un(c,y,0,0),n.$n(c,p,0,0),n.Nn(c,w,0,0)),l="",n.Sr(a,t,c,0),l}var a=n.Sh(i.br),c=null,f=null,d=null,y=null,p=null,w=null
778
+ return{br:a,ta(e){n.gh(a,e,u,256)
755
779
  var i=t.HEAPU8.subarray(u,u+256)
756
780
  return r.decode(i.slice(0,i.indexOf(0)))},ea:s,ia:t=>s(t).replace(/([MLQCZ])/g,"|$1 ").split("|").filter(t=>t.length).map(t=>{var e=t.split(/[ ,]/g)
757
- return{type:e[0],values:e.slice(1).filter(t=>t.length).map(t=>+t)}}),setScale(t,e){n.Lh(a,t,e)},Re(i){var s=Object.entries(i),r=n.Jo(8*s.length)
758
- s.forEach((i,s)=>{t.HEAPU32[r/4+2*s+0]=e(i[0]),t.HEAPF32[r/4+2*s+1]=i[1]}),n.Th(a,r,s.length),n.Ko(r)},destroy(){n._h(a),l&&(n.Nn(l),l=null,h(f),h(d),h(y),h(p),h(g))}}},createBuffer(){var e=n.ro()
759
- return{vr:e,re(i){const s=(e=>{const i=n.Jo(2*e.length),s=new Uint16Array(t.Nr.buffer,i,e.length)
781
+ return{type:e[0],values:e.slice(1).filter(t=>t.length).map(t=>+t)}}),setScale(t,e){n.Lh(a,t,e)},He(i){var s=Object.entries(i),r=n.Jo(8*s.length)
782
+ s.forEach((i,s)=>{t.HEAPU32[r/4+2*s+0]=e(i[0]),t.HEAPF32[r/4+2*s+1]=i[1]}),n.Eh(a,r,s.length),n.Ko(r)},destroy(){n.Th(a),c&&(n.Pn(c),c=null,h(f),h(d),h(y),h(p),h(w))}}},createBuffer(){var e=n.ro()
783
+ return{br:e,oe(i){const s=(e=>{const i=n.Jo(2*e.length),s=new Uint16Array(t.Nr.buffer,i,e.length)
760
784
  for(let t=0;s.length>t;++t)s[t]=e.charCodeAt(t)
761
- return{vr:i,length:s.length,Ko(){n.Ko(i)}}})(i)
762
- n.ko(e,s.vr,s.length,0,s.length),s.Ko()},oe:()=>n.Fo(e),Mr(t){n.uo(e,{sa:4,na:5,ra:6,oa:7}[t]||0)},ha(t){var i=0
763
- t.forEach(t=>{i|=(t=>"BOT"==t?1:"EOT"==t?2:"PRESERVE_DEFAULT_IGNORABLES"==t?4:"REMOVE_DEFAULT_IGNORABLES"==t?8:"DO_NOT_INSERT_DOTTED_CIRCLE"==t?16:"PRODUCE_UNSAFE_TO_CONCAT"==t?64:0)(t)}),n.mo(e,i)},aa(t){var s=i(t)
764
- n.po(e,n.No(s.vr,-1)),s.Ko()},la(t){var s=i(t)
765
- n.do(e,n.Do(s.vr,-1)),s.Ko()},ca(t){n.xo(e,t)},json(){for(var i=n.bo(e),s=[],r=n.Eo(e,0),o=r/4,h=n.Ao(e,0)/4,a=t.HEAPU32.subarray(o,o+5*i),l=t.HEAP32.subarray(h,h+5*i),c=0;i>c;++c)s.push({g:a[5*c+0],Ir:a[5*c+2],ax:l[5*c+0],ay:l[5*c+1],dx:l[5*c+2],dy:l[5*c+3],flags:n.Mo(r+20*c)})
766
- return s},destroy(){n.ho(e)}}},shape:s,ua(e,i,a,c,u){var f=[],d=0,y=!1,p=1048576,g=n.Jo(p),w=o((e,i,s)=>{var o=r.decode(t.HEAPU8.subarray(s,t.HEAPU8.indexOf(0,s)))
767
- return o.startsWith("start table GSUB")?d=1:o.startsWith("start table GPOS")&&(d=2),d!=u&&(y=!1),0!=u&&d==u&&o.startsWith("end lookup "+c)&&(y=!0),y?0:(n.so(e,0,n.bo(e),g,p,0,i,l,4),f.push({Ai:o,Fi:JSON.parse(r.decode(t.HEAPU8.subarray(g,t.HEAPU8.indexOf(0,g)))),glyphs:2==n.lo(e)}),1)},"iiiii")
768
- return n.$o(i.vr,w,0,0),s(e,i,a),n.Ko(g),h(w),f},version(){var e=n.Jo(12)
769
- n.Ro(e,e+4,e+8)
785
+ return{br:i,length:s.length,Ko(){n.Ko(i)}}})(i)
786
+ n.Co(e,s.br,s.length,0,s.length),s.Ko()},he:()=>n.Go(e),Ir(t){n.uo(e,{sa:4,na:5,ra:6,oa:7}[t]||0)},ha(t){var i=0
787
+ t.forEach(t=>{i|=(t=>"BOT"==t?1:"EOT"==t?2:"PRESERVE_DEFAULT_IGNORABLES"==t?4:"REMOVE_DEFAULT_IGNORABLES"==t?8:"DO_NOT_INSERT_DOTTED_CIRCLE"==t?16:"PRODUCE_UNSAFE_TO_CONCAT"==t?64:0)(t)}),n.vo(e,i)},aa(t){var s=i(t)
788
+ n.po(e,n.No(s.br,-1)),s.Ko()},ca(t){var s=i(t)
789
+ n.do(e,n.Po(s.br,-1)),s.Ko()},la(t){n.xo(e,t)},json(){for(var i=n.bo(e),s=[],r=n._o(e,0),o=r/4,h=n.Ao(e,0)/4,a=t.HEAPU32.subarray(o,o+5*i),c=t.HEAP32.subarray(h,h+5*i),l=0;i>l;++l)s.push({g:a[5*l+0],ce:a[5*l+2],ax:c[5*l+0],ay:c[5*l+1],dx:c[5*l+2],dy:c[5*l+3],flags:n.Mo(r+20*l)})
790
+ return s},destroy(){n.ho(e)}}},shape:s,ua(e,i,a,l,u){var f=[],d=0,y=!1,p=1048576,w=n.Jo(p),v=o((e,i,s)=>{var o=r.decode(t.HEAPU8.subarray(s,t.HEAPU8.indexOf(0,s)))
791
+ return o.startsWith("start table GSUB")?d=1:o.startsWith("start table GPOS")&&(d=2),d!=u&&(y=!1),0!=u&&d==u&&o.startsWith("end lookup "+l)&&(y=!0),y?0:(n.so(e,0,n.bo(e),w,p,0,i,c,4),f.push({Ii:o,ki:JSON.parse(r.decode(t.HEAPU8.subarray(w,t.HEAPU8.indexOf(0,w)))),glyphs:2==n.co(e)}),1)},"iiiii")
792
+ return n.$o(i.br,v,0,0),s(e,i,a),n.Ko(w),h(v),f},version(){var e=n.Jo(12)
793
+ n.zo(e,e+4,e+8)
770
794
  var i={fa:t.HEAPU32[e/4],da:t.HEAPU32[(e+4)/4],ya:t.HEAPU32[(e+8)/4]}
771
795
  return n.Ko(e),i},pa(){var e=n.jo()
772
796
  return r.decode(t.HEAPU8.subarray(e,t.HEAPU8.indexOf(0,e)))}}}}catch(t){}var dt=o(ft.exports)
773
- let yt=null,pt=null,gt=null
774
- const wt={ga(t){pt=t,gt=null,yt=null},wa(t){gt=t,pt=null,yt=null},ma:async()=>yt||(yt=new Promise(async(t,e)=>{try{const e={}
775
- if(gt)e.Ur=gt
797
+ let yt=null,pt=null,wt=null
798
+ const vt={wa(t){pt=t,wt=null,yt=null},va(t){wt=t,pt=null,yt=null},ma:async()=>yt||(yt=new Promise(async(t,e)=>{try{const e={}
799
+ if(wt)e.Ur=wt
776
800
  else{if(!pt)throw Error("HarfBuzz WASM path or buffer must be set before initialization.")
777
801
  e.jh=(t,e)=>t.endsWith(".wasm")?pt:e+t}const i=await ut(e)
778
- t({hb:dt(i),module:{Fn:i.Fn,exports:i.Pr,Pn:i.Pn}})}catch(t){e(Error("Failed to initialize HarfBuzz: "+t))}}),yt)}
779
- class mt{constructor(t,e){this.text=t,this.va=new Map,e.forEach(t=>{const e=this.va.get(t.hn)||[]
780
- e.push(t),this.va.set(t.hn,e)})}xa(t){const e=[]
781
- return t.Sa&&e.push(...this.ba(t.Sa)),t.Ta&&e.push(...this.Ea(t.Ta)),e}ba(t){const e=[]
802
+ t({hb:dt(i),module:{Fn:i.Fn,exports:i.Dr,Rn:i.Rn}})}catch(t){e(Error("Failed to initialize HarfBuzz: "+t))}}),yt)}
803
+ class mt{constructor(t,e){this.text=t,this.ga=new Map,e.forEach(t=>{const e=this.ga.get(t.vr)||[]
804
+ e.push(t),this.ga.set(t.vr,e)})}xa(t){const e=[]
805
+ return t.Sa&&e.push(...this.ba(t.Sa)),t.Ea&&e.push(...this._a(t.Ea)),e}ba(t){const e=[]
782
806
  for(const i of t){let t=0
783
- for(;-1!==(t=this.text.indexOf(i,t));)e.push(this.createTextRange(t,t+i.length,i)),t+=i.length}return e}Ea(t){return t.map(t=>{const e=this.text.slice(t.start,t.end)
807
+ for(;-1!==(t=this.text.indexOf(i,t));)e.push(this.createTextRange(t,t+i.length,i)),t+=i.length}return e}_a(t){return t.map(t=>{const e=this.text.slice(t.start,t.end)
784
808
  return this.createTextRange(t.start,t.end,e)})}createTextRange(t,e,i){const s=[],n=new Map
785
- for(let i=t;e>i;i++){const t=this.va.get(i)
809
+ for(let i=t;e>i;i++){const t=this.ga.get(i)
786
810
  if(t)for(const e of t){s.push(e)
787
- const t=n.get(e.pr)||[]
788
- t.push(e),n.set(e.pr,t)}}return{start:t,end:e,_a:i,bounds:Array.from(n.values()).map(t=>this.Aa(t)),glyphs:s,La:Array.from(n.keys()).sort((t,e)=>t-e)}}Aa(t){if(0===t.length)return{min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}}
811
+ const t=n.get(e.mr)||[]
812
+ t.push(e),n.set(e.mr,t)}}return{start:t,end:e,Ta:i,bounds:Array.from(n.values()).map(t=>this.Aa(t)),glyphs:s,La:Array.from(n.keys()).sort((t,e)=>t-e)}}Aa(t){if(0===t.length)return{min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}}
789
813
  let e=1/0,i=1/0,s=1/0,n=-1/0,r=-1/0,o=-1/0
790
814
  for(const h of t)e>h.bounds.min.x&&(e=h.bounds.min.x),i>h.bounds.min.y&&(i=h.bounds.min.y),s>h.bounds.min.z&&(s=h.bounds.min.z),h.bounds.max.x>n&&(n=h.bounds.max.x),h.bounds.max.y>r&&(r=h.bounds.max.y),h.bounds.max.z>o&&(o=h.bounds.max.z)
791
- return{min:{x:e,y:i,z:s},max:{x:n,y:r,z:o}}}}class vt{static{this.Ma=new Map}static{this.Ga=null}static{this.Fa=new Map}static{this.Ia=0}static{this.Oa=1/0}static{this.Ca=0}static ka(t){return Object.keys(t).sort().map(e=>`${e}:${t[e]}`).join(",")}constructor(){this.Ba="",vt.Ga||(vt.Ga=wt.ma()),this.$a=new $(()=>vt.Ga)}static Ua(t){wt.ga(t),vt.Ga=null}static Na(t){wt.wa(t),vt.Ga=null}static init(){return vt.Ga||(vt.Ga=wt.ma()),vt.Ga}static async create(t){if(!t.font)throw Error("Font is required. Specify options.font as a URL string or ArrayBuffer.")
792
- vt.Ga||(vt.Ga=wt.ma())
793
- const e=await vt.Pa(t),i=new vt
794
- i.Da(e)
795
- const{font:s,za:n,...r}=t,o=await i.Ra(r),h=async e=>{const s={...t}
815
+ return{min:{x:e,y:i,z:s},max:{x:n,y:r,z:o}}}}class gt{static{this.Ma=new Map}static{this.Ia=null}static{this.Ga=new Map}static{this.Oa=0}static{this.Fa=1/0}static{this.ka=0}static Ca(t){return Object.keys(t).sort().map(e=>`${e}:${t[e]}`).join(",")}constructor(){this.Ba="",gt.Ia||(gt.Ia=vt.ma()),this.$a=new $(()=>gt.Ia)}static Ua(t){vt.wa(t),gt.Ia=null}static Na(t){vt.va(t),gt.Ia=null}static init(){return gt.Ia||(gt.Ia=vt.ma()),gt.Ia}static async create(t){if(!t.font)throw Error("Font is required. Specify options.font as a URL string or ArrayBuffer.")
816
+ gt.Ia||(gt.Ia=vt.ma())
817
+ const e=await gt.Da(t),i=new gt
818
+ i.Pa(e)
819
+ const s=await i.Ra(t),n=async e=>{const s={...t}
796
820
  for(const t in e){const i=e[t]
797
- void 0!==i&&(s[t]=i)}if(void 0!==e.font||void 0!==e.je||void 0!==e.he){const t=await vt.Pa(s)
798
- i.Da(t),i.Wa()}t=s
799
- const{font:n,za:r,...o}=t
800
- return{...await i.Ra(o),getLoadedFont(){return i.getLoadedFont()},getCacheStatistics(){return i.getCacheStatistics()},clearCache(){return i.clearCache()},measureTextWidth(t,e){return i.measureTextWidth(t,e)},update:h}}
801
- return{...o,getLoadedFont(){return i.getLoadedFont()},getCacheStatistics(){return i.getCacheStatistics()},clearCache(){return i.clearCache()},measureTextWidth(t,e){return i.measureTextWidth(t,e)},update:h}}static async Pa(t){let e="string"==typeof t.font?t.font:"buffer-"+vt.ja(t.font)
802
- t.je&&(e+="_var_"+vt.ka(t.je)),t.he&&(e+="_feat_"+vt.ka(t.he))
803
- let i=vt.Fa.get(e)
804
- return i||(i=await vt.Ha(e,t.font,t.je,t.he)),i}static async Ha(t,e,i,s){const n=new vt
805
- await n.Ne(e,i,s)
821
+ void 0!==i&&(s[t]=i)}if(void 0!==e.font||void 0!==e.qe||void 0!==e.ae){const t=await gt.Da(s)
822
+ i.Pa(t),i.za()}return t=s,{...await i.Ra(t),getLoadedFont(){return i.getLoadedFont()},getCacheStatistics(){return i.getCacheStatistics()},clearCache(){return i.clearCache()},measureTextWidth(t,e){return i.measureTextWidth(t,e)},update:n}}
823
+ return{...s,getLoadedFont(){return i.getLoadedFont()},getCacheStatistics(){return i.getCacheStatistics()},clearCache(){return i.clearCache()},measureTextWidth(t,e){return i.measureTextWidth(t,e)},update:n}}static async Da(t){let e="string"==typeof t.font?t.font:"buffer-"+gt.Wa(t.font)
824
+ t.qe&&(e+="_var_"+gt.Ca(t.qe)),t.ae&&(e+="_feat_"+gt.Ca(t.ae))
825
+ let i=gt.Ga.get(e)
826
+ return i||(i=await gt.ja(e,t.font,t.qe,t.ae)),i}static async ja(t,e,i,s){const n=new gt
827
+ await n.Re(e,i,s)
806
828
  const r=n.getLoadedFont()
807
- return vt.Fa.set(t,r),vt.Va(r),vt.qa(),r}static Va(t){vt.Ia+=t.Ye?.byteLength??0}static Ja(t){const e=vt.Fa.get(t)
808
- e&&(vt.Ia-=e.Ye?.byteLength??0,0>vt.Ia&&(vt.Ia=0))}static qa(){if(vt.Oa!==1/0)for(;vt.Ia>vt.Oa&&vt.Fa.size>0;){const t=vt.Fa.keys().next().value
829
+ return gt.Ga.set(t,r),gt.Ha(r),gt.Va(),r}static Ha(t){gt.Oa+=t.Qe?.byteLength??0}static qa(t){const e=gt.Ga.get(t)
830
+ e&&(gt.Oa-=e.Qe?.byteLength??0,0>gt.Oa&&(gt.Oa=0))}static Va(){if(gt.Fa!==1/0)for(;gt.Oa>gt.Fa&&gt.Ga.size>0;){const t=gt.Ga.keys().next().value
809
831
  if(void 0===t)break
810
- vt.Ja(t),vt.Fa.delete(t)}}static ja(t){if(t){const e=new Uint8Array(t)
832
+ gt.qa(t),gt.Ga.delete(t)}}static Wa(t){if(t){const e=new Uint8Array(t)
811
833
  let i=2166136261
812
834
  const s=Math.min(32,e.length),n=Math.floor(e.length/s)
813
835
  for(let t=0;s>t;t++)i^=e[t*n],i=Math.imul(i,16777619)
814
- return i^=e.length,i=Math.imul(i,16777619),(i>>>0).toString(36)}return"c"+ ++vt.Ca}Da(t){this.ae=t
815
- const e=vt.ja(t.Ye)
816
- this.Ba="font_"+e,t.je&&(this.Ba+="_var_"+vt.ka(t.je)),t.he&&(this.Ba+="_feat_"+vt.ka(t.he))}async Ne(t,e,i){c.start("Text.loadFont",{Ya:"string"==typeof t?t:`buffer(${t.byteLength})`}),vt.Ga||(vt.Ga=wt.ma()),await vt.Ga
836
+ return i^=e.length,i=Math.imul(i,16777619),(i>>>0).toString(36)}return"c"+ ++gt.ka}Pa(t){this.le=t
837
+ const e=gt.Wa(t.Qe)
838
+ this.Ba="font_"+e,t.qe&&(this.Ba+="_var_"+gt.Ca(t.qe)),t.ae&&(this.Ba+="_feat_"+gt.Ca(t.ae))}async Re(t,e,i){gt.Ia||(gt.Ia=vt.ma()),await gt.Ia
817
839
  const s="string"==typeof t?await fetch(t).then(e=>{if(!e.ok)throw Error(`Failed to load font from ${t}: HTTP ${e.status} ${e.statusText}`)
818
840
  return e.arrayBuffer()}):t
819
- try{this.ae&&this.destroy(),this.ae=await this.$a.Ne(s,e),i&&(this.ae.he=i)
820
- const t=vt.ja(s)
821
- this.Ba="font_"+t,e&&(this.Ba+="_var_"+vt.ka(e)),i&&(this.Ba+="_feat_"+vt.ka(i))}catch(t){throw l.error("Failed to load font:",t),t}finally{c.end("Text.loadFont")}}async Ra(t){c.start("Text.createGeometry",{textLength:t.text.length,size:t.size||72,hasLayout:!!t.layout,mode:"cached"})
822
- try{if(!this.ae)throw Error("Font not loaded. Use Text.create() with a font option.")
823
- const e=await this.Ka(t)
824
- if(this.Xa(e),this.Qa(t=e),!this._r){const e=t.za?r(t.za):R
825
- this._r=new ht(e,this.ae),this._r.Xn(this.Ba)}this._r.Us(t.Za),this._r.vn(t.tl),this.ae.font.setScale(this.ae.upem,this.ae.upem),this.el||(this.el=new at(this.ae,this._r))
826
- const i=this.il(t),s=t.ir??this.ae.He??!1,n=this.el.Ar(i.lines,i.sl,i.letterSpacing,i.align,i.direction,t.color,t.text)
841
+ try{this.le&&this.destroy(),this.le=await this.$a.Re(s,e),i&&(this.le.ae=i)
842
+ const t=gt.Wa(s)
843
+ this.Ba="font_"+t,e&&(this.Ba+="_var_"+gt.Ca(e)),i&&(this.Ba+="_feat_"+gt.Ca(i))}catch(t){throw c.error("Failed to load font:",t),t}}async Ra(t){try{if(!this.le)throw Error("Font not loaded. Use Text.create() with a font option.")
844
+ const e=await this.Ja(t)
845
+ if(this.Ya(e),this.Ka(t=e),!this.Ar){const e=t.Xa?r(t.Xa):z
846
+ this.Ar=new ht(e,this.le),this.Ar.Zn(this.Ba)}this.Ar.Ps(t.Qa),this.Ar.Sn(t.Za),this.le.font.setScale(this.le.upem,this.le.upem),this.tc||(this.tc=new at(this.le,this.Ar))
847
+ const i=this.ec(t),s=t.sc??this.le.Je??!1,n=this.tc.Lr(i.lines,i.nc,i.letterSpacing,i.align,i.direction,t.color,t.text)
827
848
  let o
828
- if(t.color&&"object"==typeof t.color&&!Array.isArray(t.color)&&(t.color.Sa||t.color.Ta)){if(o=new Set,t.color.Sa)for(const e of Object.keys(t.color.Sa)){let i=0
849
+ if(t.color&&"object"==typeof t.color&&!Array.isArray(t.color)&&(t.color.Sa||t.color.Ea)){if(o=new Set,t.color.Sa)for(const e of Object.keys(t.color.Sa)){let i=0
829
850
  for(;-1!==(i=t.text.indexOf(e,i));){for(let t=i;i+e.length>t;t++)o.add(t)
830
- i+=e.length}}if(t.color.Ta)for(const e of t.color.Ta)for(let t=e.start;e.end>t;t++)o.add(t)}const h=this._r.Zn(n,i.depth,s,this.ae.p.be,t.nl||!1,o),a=this._r.Tr(),l=this.rl(h.vertices,h.normals,h.indices,h.yr,h.planeBounds,t,a,t.text)
831
- if(t.nl){const t=this.ol(l.vertices.length/3,l.glyphs)
832
- l.glyphAttributes=t}return l}finally{c.end("Text.createGeometry")}}async Ka(t){if(!1!==t.layout?.wt&&t.layout?.width){const e=t.layout?.language||"en-us"
833
- if(!t.layout?.xt?.[e])try{if(!vt.Ma.has(e)){const s=await i(e,t.layout?.hl)
834
- vt.Ma.set(e,s)}return{...t,layout:{...t.layout,xt:{...t.layout?.xt,[e]:vt.Ma.get(e)}}}}catch(i){return l.warn(`Failed to load patterns for ${e}: ${i}`),{...t,layout:{...t.layout,wt:!1}}}}return t}Xa(t){if(!t.text)throw Error("Text content is required")
835
- const e=t.al??1e5
836
- if(t.text.length>e)throw Error(`Text exceeds ${e} character limit`)}Qa(t){t.je&&this.ae&&vt.ka(t.je)!==vt.ka(this.ae.je||{})&&(this.ae.font.Re(t.je),this.ae.je=t.je)}il(t){if(!this.ae)throw Error("Font not loaded. Use Text.create() with a font option")
837
- const{text:e,size:i=72,depth:s=0,lineHeight:n=1,letterSpacing:r=0,layout:o={}}=t,{width:h,direction:a="ltr",align:l=("rtl"===a?"right":"left"),vt:c=!0,wt:y=!0,language:p="en-us",bt:g=u,Tt:w=f,Et:m=d,_t:v,xt:x,At:S,Lt:b,Mt:T,Gt:E,Ft:_,It:A,Ot:L,Ct:M,kt:G,Bt:I}=o
838
- let O
839
- void 0!==h&&(O=h*(this.ae.upem/i))
840
- const C=s*(this.ae.upem/i),B=C>0?Math.max(C,25e-6*this.ae.upem):0
841
- this.ll||(this.ll=new F(this.ae))
842
- const $=this.ll.le({text:e,width:O,align:l,direction:a,wt:y,language:p,vt:c,bt:g,Tt:w,Et:m,_t:v,xt:x,At:S,Lt:b,Mt:T,Gt:E,Ft:_,It:A,Ot:L,Ct:M,kt:G,Bt:I,letterSpacing:r}),U=k.Fe(this.ae.p)
843
- return{lines:$.lines,sl:(U.de-U.ye)*n,letterSpacing:r,align:l,direction:a,depth:B,size:i}}cl(t,e,i,s){const n=t.length/3,r=new Float32Array(3*n),o=[]
851
+ i+=e.length}}if(t.color.Ea)for(const e of t.color.Ea)for(let t=e.start;e.end>t;t++)o.add(t)}const h=this.Ar.er(n,i.depth,s,this.le.p.Te,t.rc||!1,o),a=this.Ar._r(),c=this.oc(h.vertices,h.normals,h.indices,h.wr,h.planeBounds,t,a,t.text)
852
+ if(t.rc){const t=this.hc(c.vertices.length/3,c.glyphs)
853
+ c.glyphAttributes=t}return c}finally{}}async Ja(t){if(!1!==t.layout?.vt&&t.layout?.width){const e=t.layout?.language||"en-us"
854
+ if(!t.layout?.St?.[e])try{if(!gt.Ma.has(e)){const s=await i(e,t.layout?.ac)
855
+ gt.Ma.set(e,s)}return{...t,layout:{...t.layout,St:{...t.layout?.St,[e]:gt.Ma.get(e)}}}}catch(i){return c.warn(`Failed to load patterns for ${e}: ${i}`),{...t,layout:{...t.layout,vt:!1}}}}return t}Ya(t){if(!t.text)throw Error("Text content is required")
856
+ const e=t.cc??1e5
857
+ if(t.text.length>e)throw Error(`Text exceeds ${e} character limit`)}Ka(t){t.qe&&this.le&&gt.Ca(t.qe)!==gt.Ca(this.le.qe||{})&&(this.le.font.He(t.qe),this.le.qe=t.qe)}ec(t){if(!this.le)throw Error("Font not loaded. Use Text.create() with a font option")
858
+ const{text:e,size:i=72,depth:s=0,lineHeight:n=1,letterSpacing:r=0,layout:o={}}=t,{width:h,direction:a="ltr",align:c=("rtl"===a?"right":"left"),gt:d=!0,vt:y=!0,language:p="en-us",Et:w=l,_t:v=u,Tt:m=f,At:g,St:x,Lt:S,Mt:b,It:E,Gt:_,Ot:T,Ft:A,kt:L,Ct:M,Bt:I,$t:O}=o
859
+ let F
860
+ void 0!==h&&(F=h*(this.le.upem/i))
861
+ const k=s*(this.le.upem/i),B=k>0?Math.max(k,25e-6*this.le.upem):0
862
+ this.lc||(this.lc=new G(this.le))
863
+ const $=this.lc.ue({text:e,width:F,align:c,direction:a,vt:y,language:p,gt:d,Et:w,_t:v,Tt:m,At:g,St:x,Lt:S,Mt:b,It:E,Gt:_,Ot:T,Ft:A,kt:L,Ct:M,Bt:I,$t:O,letterSpacing:r}),U=C.ke(this.le.p)
864
+ return{lines:$.lines,nc:(U.we-U.ve)*n,letterSpacing:r,align:c,direction:a,depth:B,size:i}}uc(t,e,i,s){const n=t.length/3,r=new Float32Array(3*n),o=[]
844
865
  if(Array.isArray(i)){for(let t=0;n>t;t++){const e=3*t
845
- r[e]=i[0],r[e+1]=i[1],r[e+2]=i[2]}o.push({start:0,end:s.length,_a:s,color:i,bounds:[],glyphs:e,La:[...new Set(e.map(t=>t.pr))]})}else{const t=i.default||[1,1,1]
866
+ r[e]=i[0],r[e+1]=i[1],r[e+2]=i[2]}o.push({start:0,end:s.length,Ta:s,color:i,bounds:[],glyphs:e,La:[...new Set(e.map(t=>t.mr))]})}else{const t=i.default||[1,1,1]
846
867
  for(let e=0;r.length>e;e+=3)r[e]=t[0],r[e+1]=t[1],r[e+2]=t[2]
847
- i.Sa&&new mt(s,e).xa({Sa:Object.keys(i.Sa)}).forEach(t=>{const e=i.Sa[t._a]
848
- e&&(t.glyphs.forEach(t=>{for(let i=0;t.wr>i;i++){const s=3*(t.gr+i)
849
- s>=0&&r.length>s&&(r[s]=e[0],r[s+1]=e[1],r[s+2]=e[2])}}),o.push({start:t.start,end:t.end,_a:t._a,color:e,bounds:t.bounds,glyphs:t.glyphs,La:t.La}))}),i.Ta&&i.Ta.forEach(t=>{const i=[]
850
- for(const s of e)if(s.hn>=t.start&&t.end>s.hn){i.push(s)
851
- for(let e=0;s.wr>e;e++){const i=3*(s.gr+e)
852
- i>=0&&r.length>i&&(r[i]=t.color[0],r[i+1]=t.color[1],r[i+2]=t.color[2])}}o.push({start:t.start,end:t.end,_a:s.slice(t.start,t.end),color:t.color,bounds:[],glyphs:i,La:[...new Set(i.map(t=>t.pr))]})})}return{colors:r,ul:o}}rl(t,e,i,s,n,r,o,h){const{layout:a={},size:l=72}=r,{width:c,align:u=("rtl"===a.direction?"right":"left")}=a
853
- this.ll||(this.ll=new F(this.ae))
854
- const f=this.ll.ce(t,{width:c,align:u,planeBounds:n}),d=f.offset
855
- n.min.x=f.ue.min.x,n.max.x=f.ue.max.x
856
- const y=l/this.ae.upem
857
- for(let e=0;t.length>e;e++)t[e]*=y
868
+ i.Sa&&new mt(s,e).xa({Sa:Object.keys(i.Sa)}).forEach(t=>{const e=i.Sa[t.Ta]
869
+ e&&(t.glyphs.forEach(t=>{for(let i=0;t.gr>i;i++){const s=3*(t.nr+i)
870
+ s>=0&&r.length>s&&(r[s]=e[0],r[s+1]=e[1],r[s+2]=e[2])}}),o.push({start:t.start,end:t.end,Ta:t.Ta,color:e,bounds:t.bounds,glyphs:t.glyphs,La:t.La}))}),i.Ea&&i.Ea.forEach(t=>{const i=[]
871
+ for(const s of e)if(s.vr>=t.start&&t.end>s.vr){i.push(s)
872
+ for(let e=0;s.gr>e;e++){const i=3*(s.nr+e)
873
+ i>=0&&r.length>i&&(r[i]=t.color[0],r[i+1]=t.color[1],r[i+2]=t.color[2])}}o.push({start:t.start,end:t.end,Ta:s.slice(t.start,t.end),color:t.color,bounds:[],glyphs:i,La:[...new Set(i.map(t=>t.mr))]})})}return{colors:r,fc:o}}oc(t,e,i,s,n,r,o,h){const{layout:a={},size:c=72}=r,{width:l,align:u=("rtl"===a.direction?"right":"left")}=a
874
+ this.lc||(this.lc=new G(this.le))
875
+ const f=this.lc.ye({width:l,align:u,planeBounds:n}),d=f.offset
876
+ n.min.x=f.de.min.x,n.max.x=f.de.max.x
877
+ const y=c/this.le.upem,p=d*y
878
+ if(0===p)for(let e=0;t.length>e;e++)t[e]*=y
879
+ else for(let e=0;t.length>e;e+=3)t[e]=t[e]*y+p,t[e+1]*=y,t[e+2]*=y
858
880
  n.min.x*=y,n.min.y*=y,n.min.z*=y,n.max.x*=y,n.max.y*=y,n.max.z*=y
859
881
  for(let t=0;s.length>t;t++){const e=s[t]
860
- 0!==d&&(e.bounds.min.x+=d,e.bounds.max.x+=d),e.bounds.min.x*=y,e.bounds.min.y*=y,e.bounds.min.z*=y,e.bounds.max.x*=y,e.bounds.max.y*=y,e.bounds.max.z*=y}let p,g
861
- if(r.color){const e=this.cl(t,s,r.color,r.text)
862
- p=e.colors,g=e.ul}const w=this._r.xn()
863
- return{vertices:t,normals:e,indices:i,colors:p,glyphs:s,planeBounds:n,stats:{fl:i.length/3,dl:t.length/3,Es:w.Es,_s:w._s,As:w.As,...o||{}},query(t){if(!h)throw Error("Original text not available for querying")
864
- return new mt(h,s).xa(t)},ul:g,glyphAttributes:void 0}}Ie(){if(!this.ae)throw Error("Font not loaded. Call loadFont() first")
865
- return k.Ie(this.ae.p)}static async yl(t,e){await Promise.all(t.map(async t=>{if(!vt.Ma.has(t))try{const s=await i(t,e)
866
- vt.Ma.set(t,s)}catch(e){l.warn(`Failed to pre-load patterns for ${t}: ${e}`)}}))}static pl(t,e){vt.Ma.set(t,e)}static gl(){vt.Fa.clear(),vt.Ia=0}static wl(t){vt.Oa=t===1/0?1/0:1048576*Math.max(1,Math.floor(t)),vt.qa()}getLoadedFont(){return this.ae}measureTextWidth(t,e=0){if(!this.ae)throw Error("Font not loaded. Call loadFont() first")
867
- return G.measureTextWidth(this.ae,t,e)}getCacheStatistics(){return this._r?this._r.Tr():null}clearCache(){this._r&&this._r.clearCache()}ol(t,e){const i=new Float32Array(3*t),s=new Float32Array(t),n=new Float32Array(t)
882
+ e.bounds.min.x=e.bounds.min.x*y+p,e.bounds.min.y*=y,e.bounds.min.z*=y,e.bounds.max.x=e.bounds.max.x*y+p,e.bounds.max.y*=y,e.bounds.max.z*=y}let w,v
883
+ if(r.color){const e=this.uc(t,s,r.color,r.text)
884
+ w=e.colors,v=e.fc}const m=this.Ar.bn()
885
+ return{vertices:t,normals:e,indices:i,colors:w,glyphs:s,planeBounds:n,stats:{dc:i.length/3,yc:t.length/3,Ls:m.Ls,Ms:m.Ms,Is:m.Is,...o||{}},query(t){if(!h)throw Error("Original text not available for querying")
886
+ return new mt(h,s).xa(t)},fc:v,glyphAttributes:void 0}}Ce(){if(!this.le)throw Error("Font not loaded. Call loadFont() first")
887
+ return C.Ce(this.le.p)}static async wc(t,e){await Promise.all(t.map(async t=>{if(!gt.Ma.has(t))try{const s=await i(t,e)
888
+ gt.Ma.set(t,s)}catch(e){c.warn(`Failed to pre-load patterns for ${t}: ${e}`)}}))}static vc(t,e){gt.Ma.set(t,e)}static mc(){gt.Ga.clear(),gt.Oa=0}static gc(t){gt.Fa=t===1/0?1/0:1048576*Math.max(1,Math.floor(t)),gt.Va()}getLoadedFont(){return this.le}measureTextWidth(t,e=0){if(!this.le)throw Error("Font not loaded. Call loadFont() first")
889
+ return I.measureTextWidth(this.le,t,e)}getCacheStatistics(){return this.Ar?this.Ar._r():null}clearCache(){this.Ar&&this.Ar.clearCache()}hc(t,e){const i=new Float32Array(3*t),s=new Float32Array(t),n=new Float32Array(t)
868
890
  return e.forEach((e,r)=>{const o=(e.bounds.min.x+e.bounds.max.x)/2,h=(e.bounds.min.y+e.bounds.max.y)/2,a=(e.bounds.min.z+e.bounds.max.z)/2
869
- for(let l=0;e.wr>l;l++){const c=e.gr+l
870
- t>c&&(i[3*c]=o,i[3*c+1]=h,i[3*c+2]=a,s[c]=r,n[c]=e.pr)}}),{ml:i,un:s,vl:n}}Wa(){this._r=void 0,this.el=void 0,this.ll=void 0}destroy(){if(!this.ae)return
871
- const t=this.ae
872
- try{$.Ke(t)}catch(t){l.warn("Error destroying HarfBuzz objects:",t)}finally{this.ae=void 0,this.ll=void 0,this.el=void 0}}}export{et as DEFAULT_CURVE_FIDELITY,k as FontMetadataExtractor,vt as Text,r as createGlyphCache,R as globalGlyphCache}
891
+ for(let c=0;e.gr>c;c++){const l=e.nr+c
892
+ t>l&&(i[3*l]=o,i[3*l+1]=h,i[3*l+2]=a,s[l]=r,n[l]=e.mr)}}),{xc:i,dn:s,Sc:n}}za(){this.Ar=void 0,this.tc=void 0,this.lc=void 0}destroy(){if(!this.le)return
893
+ const t=this.le
894
+ try{$.Ze(t)}catch(t){c.warn("Error destroying HarfBuzz objects:",t)}finally{this.le=void 0,this.lc=void 0,this.tc=void 0}}}export{et as DEFAULT_CURVE_FIDELITY,C as FontMetadataExtractor,gt as Text,r as createGlyphCache,z as globalGlyphCache}