three-text 0.2.18 → 0.3.0

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