@mlightcad/data-model 1.3.0 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/package.json +4 -4
  2. package/dist/data-model.cjs +0 -5
  3. package/dist/data-model.js +0 -25305
  4. package/dist/dxf-parser-worker.js +0 -1669
  5. package/lib/base/AcDbHostApplicationServices.d.ts +0 -96
  6. package/lib/base/AcDbHostApplicationServices.d.ts.map +0 -1
  7. package/lib/base/AcDbHostApplicationServices.js +0 -118
  8. package/lib/base/AcDbHostApplicationServices.js.map +0 -1
  9. package/lib/base/AcDbObject.d.ts +0 -205
  10. package/lib/base/AcDbObject.d.ts.map +0 -1
  11. package/lib/base/AcDbObject.js +0 -236
  12. package/lib/base/AcDbObject.js.map +0 -1
  13. package/lib/base/index.d.ts +0 -3
  14. package/lib/base/index.d.ts.map +0 -1
  15. package/lib/base/index.js +0 -3
  16. package/lib/base/index.js.map +0 -1
  17. package/lib/converter/AcDbBatchProcessing.d.ts +0 -146
  18. package/lib/converter/AcDbBatchProcessing.d.ts.map +0 -1
  19. package/lib/converter/AcDbBatchProcessing.js +0 -272
  20. package/lib/converter/AcDbBatchProcessing.js.map +0 -1
  21. package/lib/converter/AcDbDxfConverter.d.ts +0 -272
  22. package/lib/converter/AcDbDxfConverter.d.ts.map +0 -1
  23. package/lib/converter/AcDbDxfConverter.js +0 -872
  24. package/lib/converter/AcDbDxfConverter.js.map +0 -1
  25. package/lib/converter/AcDbDxfParser.d.ts +0 -23
  26. package/lib/converter/AcDbDxfParser.d.ts.map +0 -1
  27. package/lib/converter/AcDbDxfParser.js +0 -83
  28. package/lib/converter/AcDbDxfParser.js.map +0 -1
  29. package/lib/converter/AcDbEntitiyConverter.d.ts +0 -159
  30. package/lib/converter/AcDbEntitiyConverter.d.ts.map +0 -1
  31. package/lib/converter/AcDbEntitiyConverter.js +0 -659
  32. package/lib/converter/AcDbEntitiyConverter.js.map +0 -1
  33. package/lib/converter/AcDbObjectConverter.d.ts +0 -61
  34. package/lib/converter/AcDbObjectConverter.d.ts.map +0 -1
  35. package/lib/converter/AcDbObjectConverter.js +0 -91
  36. package/lib/converter/AcDbObjectConverter.js.map +0 -1
  37. package/lib/converter/index.d.ts +0 -4
  38. package/lib/converter/index.d.ts.map +0 -1
  39. package/lib/converter/index.js +0 -4
  40. package/lib/converter/index.js.map +0 -1
  41. package/lib/converter/worker/AcDbBaseWorker.d.ts +0 -36
  42. package/lib/converter/worker/AcDbBaseWorker.d.ts.map +0 -1
  43. package/lib/converter/worker/AcDbBaseWorker.js +0 -93
  44. package/lib/converter/worker/AcDbBaseWorker.js.map +0 -1
  45. package/lib/converter/worker/AcDbDxfParserWorker.d.ts +0 -11
  46. package/lib/converter/worker/AcDbDxfParserWorker.d.ts.map +0 -1
  47. package/lib/converter/worker/AcDbDxfParserWorker.js +0 -75
  48. package/lib/converter/worker/AcDbDxfParserWorker.js.map +0 -1
  49. package/lib/converter/worker/AcDbWorkerManager.d.ts +0 -107
  50. package/lib/converter/worker/AcDbWorkerManager.d.ts.map +0 -1
  51. package/lib/converter/worker/AcDbWorkerManager.js +0 -360
  52. package/lib/converter/worker/AcDbWorkerManager.js.map +0 -1
  53. package/lib/converter/worker/index.d.ts +0 -3
  54. package/lib/converter/worker/index.d.ts.map +0 -1
  55. package/lib/converter/worker/index.js +0 -3
  56. package/lib/converter/worker/index.js.map +0 -1
  57. package/lib/database/AcDbBlockTable.d.ts +0 -56
  58. package/lib/database/AcDbBlockTable.d.ts.map +0 -1
  59. package/lib/database/AcDbBlockTable.js +0 -98
  60. package/lib/database/AcDbBlockTable.js.map +0 -1
  61. package/lib/database/AcDbBlockTableRecord.d.ts +0 -185
  62. package/lib/database/AcDbBlockTableRecord.d.ts.map +0 -1
  63. package/lib/database/AcDbBlockTableRecord.js +0 -261
  64. package/lib/database/AcDbBlockTableRecord.js.map +0 -1
  65. package/lib/database/AcDbDatabase.d.ts +0 -575
  66. package/lib/database/AcDbDatabase.d.ts.map +0 -1
  67. package/lib/database/AcDbDatabase.js +0 -833
  68. package/lib/database/AcDbDatabase.js.map +0 -1
  69. package/lib/database/AcDbDatabaseConverter.d.ts +0 -292
  70. package/lib/database/AcDbDatabaseConverter.d.ts.map +0 -1
  71. package/lib/database/AcDbDatabaseConverter.js +0 -447
  72. package/lib/database/AcDbDatabaseConverter.js.map +0 -1
  73. package/lib/database/AcDbDatabaseConverterManager.d.ts +0 -141
  74. package/lib/database/AcDbDatabaseConverterManager.d.ts.map +0 -1
  75. package/lib/database/AcDbDatabaseConverterManager.js +0 -173
  76. package/lib/database/AcDbDatabaseConverterManager.js.map +0 -1
  77. package/lib/database/AcDbDimStyleTable.d.ts +0 -31
  78. package/lib/database/AcDbDimStyleTable.d.ts.map +0 -1
  79. package/lib/database/AcDbDimStyleTable.js +0 -49
  80. package/lib/database/AcDbDimStyleTable.js.map +0 -1
  81. package/lib/database/AcDbDimStyleTableRecord.d.ts +0 -797
  82. package/lib/database/AcDbDimStyleTableRecord.d.ts.map +0 -1
  83. package/lib/database/AcDbDimStyleTableRecord.js +0 -1294
  84. package/lib/database/AcDbDimStyleTableRecord.js.map +0 -1
  85. package/lib/database/AcDbDwgVersion.d.ts +0 -32
  86. package/lib/database/AcDbDwgVersion.d.ts.map +0 -1
  87. package/lib/database/AcDbDwgVersion.js +0 -76
  88. package/lib/database/AcDbDwgVersion.js.map +0 -1
  89. package/lib/database/AcDbLayerTable.d.ts +0 -51
  90. package/lib/database/AcDbLayerTable.d.ts.map +0 -1
  91. package/lib/database/AcDbLayerTable.js +0 -92
  92. package/lib/database/AcDbLayerTable.js.map +0 -1
  93. package/lib/database/AcDbLayerTableRecord.d.ts +0 -278
  94. package/lib/database/AcDbLayerTableRecord.d.ts.map +0 -1
  95. package/lib/database/AcDbLayerTableRecord.js +0 -397
  96. package/lib/database/AcDbLayerTableRecord.js.map +0 -1
  97. package/lib/database/AcDbLinetypeTable.d.ts +0 -30
  98. package/lib/database/AcDbLinetypeTable.d.ts.map +0 -1
  99. package/lib/database/AcDbLinetypeTable.js +0 -48
  100. package/lib/database/AcDbLinetypeTable.js.map +0 -1
  101. package/lib/database/AcDbLinetypeTableRecord.d.ts +0 -79
  102. package/lib/database/AcDbLinetypeTableRecord.d.ts.map +0 -1
  103. package/lib/database/AcDbLinetypeTableRecord.js +0 -129
  104. package/lib/database/AcDbLinetypeTableRecord.js.map +0 -1
  105. package/lib/database/AcDbSymbolTable.d.ts +0 -199
  106. package/lib/database/AcDbSymbolTable.d.ts.map +0 -1
  107. package/lib/database/AcDbSymbolTable.js +0 -264
  108. package/lib/database/AcDbSymbolTable.js.map +0 -1
  109. package/lib/database/AcDbSymbolTableRecord.d.ts +0 -61
  110. package/lib/database/AcDbSymbolTableRecord.d.ts.map +0 -1
  111. package/lib/database/AcDbSymbolTableRecord.js +0 -82
  112. package/lib/database/AcDbSymbolTableRecord.js.map +0 -1
  113. package/lib/database/AcDbTextStyleTable.d.ts +0 -48
  114. package/lib/database/AcDbTextStyleTable.d.ts.map +0 -1
  115. package/lib/database/AcDbTextStyleTable.js +0 -112
  116. package/lib/database/AcDbTextStyleTable.js.map +0 -1
  117. package/lib/database/AcDbTextStyleTableRecord.d.ts +0 -179
  118. package/lib/database/AcDbTextStyleTableRecord.d.ts.map +0 -1
  119. package/lib/database/AcDbTextStyleTableRecord.js +0 -276
  120. package/lib/database/AcDbTextStyleTableRecord.js.map +0 -1
  121. package/lib/database/AcDbViewportTable.d.ts +0 -31
  122. package/lib/database/AcDbViewportTable.d.ts.map +0 -1
  123. package/lib/database/AcDbViewportTable.js +0 -49
  124. package/lib/database/AcDbViewportTable.js.map +0 -1
  125. package/lib/database/AcDbViewportTableRecord.d.ts +0 -154
  126. package/lib/database/AcDbViewportTableRecord.d.ts.map +0 -1
  127. package/lib/database/AcDbViewportTableRecord.js +0 -318
  128. package/lib/database/AcDbViewportTableRecord.js.map +0 -1
  129. package/lib/database/index.d.ts +0 -19
  130. package/lib/database/index.d.ts.map +0 -1
  131. package/lib/database/index.js +0 -19
  132. package/lib/database/index.js.map +0 -1
  133. package/lib/entity/AcDbArc.d.ts +0 -254
  134. package/lib/entity/AcDbArc.d.ts.map +0 -1
  135. package/lib/entity/AcDbArc.js +0 -340
  136. package/lib/entity/AcDbArc.js.map +0 -1
  137. package/lib/entity/AcDbBlockReference.d.ts +0 -190
  138. package/lib/entity/AcDbBlockReference.d.ts.map +0 -1
  139. package/lib/entity/AcDbBlockReference.js +0 -302
  140. package/lib/entity/AcDbBlockReference.js.map +0 -1
  141. package/lib/entity/AcDbCircle.d.ts +0 -186
  142. package/lib/entity/AcDbCircle.d.ts.map +0 -1
  143. package/lib/entity/AcDbCircle.js +0 -249
  144. package/lib/entity/AcDbCircle.js.map +0 -1
  145. package/lib/entity/AcDbCurve.d.ts +0 -42
  146. package/lib/entity/AcDbCurve.d.ts.map +0 -1
  147. package/lib/entity/AcDbCurve.js +0 -44
  148. package/lib/entity/AcDbCurve.js.map +0 -1
  149. package/lib/entity/AcDbEllipse.d.ts +0 -207
  150. package/lib/entity/AcDbEllipse.d.ts.map +0 -1
  151. package/lib/entity/AcDbEllipse.js +0 -272
  152. package/lib/entity/AcDbEllipse.js.map +0 -1
  153. package/lib/entity/AcDbEntity.d.ts +0 -385
  154. package/lib/entity/AcDbEntity.d.ts.map +0 -1
  155. package/lib/entity/AcDbEntity.js +0 -561
  156. package/lib/entity/AcDbEntity.js.map +0 -1
  157. package/lib/entity/AcDbFace.d.ts +0 -151
  158. package/lib/entity/AcDbFace.d.ts.map +0 -1
  159. package/lib/entity/AcDbFace.js +0 -224
  160. package/lib/entity/AcDbFace.js.map +0 -1
  161. package/lib/entity/AcDbHatch.d.ts +0 -174
  162. package/lib/entity/AcDbHatch.d.ts.map +0 -1
  163. package/lib/entity/AcDbHatch.js +0 -250
  164. package/lib/entity/AcDbHatch.js.map +0 -1
  165. package/lib/entity/AcDbLeader.d.ts +0 -243
  166. package/lib/entity/AcDbLeader.d.ts.map +0 -1
  167. package/lib/entity/AcDbLeader.js +0 -358
  168. package/lib/entity/AcDbLeader.js.map +0 -1
  169. package/lib/entity/AcDbLine.d.ts +0 -198
  170. package/lib/entity/AcDbLine.d.ts.map +0 -1
  171. package/lib/entity/AcDbLine.js +0 -300
  172. package/lib/entity/AcDbLine.js.map +0 -1
  173. package/lib/entity/AcDbMText.d.ts +0 -248
  174. package/lib/entity/AcDbMText.d.ts.map +0 -1
  175. package/lib/entity/AcDbMText.js +0 -414
  176. package/lib/entity/AcDbMText.js.map +0 -1
  177. package/lib/entity/AcDbPoint.d.ts +0 -113
  178. package/lib/entity/AcDbPoint.d.ts.map +0 -1
  179. package/lib/entity/AcDbPoint.js +0 -155
  180. package/lib/entity/AcDbPoint.js.map +0 -1
  181. package/lib/entity/AcDbPolyline.d.ts +0 -221
  182. package/lib/entity/AcDbPolyline.d.ts.map +0 -1
  183. package/lib/entity/AcDbPolyline.js +0 -301
  184. package/lib/entity/AcDbPolyline.js.map +0 -1
  185. package/lib/entity/AcDbRasterImage.d.ts +0 -216
  186. package/lib/entity/AcDbRasterImage.d.ts.map +0 -1
  187. package/lib/entity/AcDbRasterImage.js +0 -451
  188. package/lib/entity/AcDbRasterImage.js.map +0 -1
  189. package/lib/entity/AcDbRay.d.ts +0 -150
  190. package/lib/entity/AcDbRay.d.ts.map +0 -1
  191. package/lib/entity/AcDbRay.js +0 -208
  192. package/lib/entity/AcDbRay.js.map +0 -1
  193. package/lib/entity/AcDbSpline.d.ts +0 -135
  194. package/lib/entity/AcDbSpline.d.ts.map +0 -1
  195. package/lib/entity/AcDbSpline.js +0 -142
  196. package/lib/entity/AcDbSpline.js.map +0 -1
  197. package/lib/entity/AcDbTable.d.ts +0 -260
  198. package/lib/entity/AcDbTable.d.ts.map +0 -1
  199. package/lib/entity/AcDbTable.js +0 -452
  200. package/lib/entity/AcDbTable.js.map +0 -1
  201. package/lib/entity/AcDbText.d.ts +0 -388
  202. package/lib/entity/AcDbText.d.ts.map +0 -1
  203. package/lib/entity/AcDbText.js +0 -523
  204. package/lib/entity/AcDbText.js.map +0 -1
  205. package/lib/entity/AcDbTrace.d.ts +0 -193
  206. package/lib/entity/AcDbTrace.d.ts.map +0 -1
  207. package/lib/entity/AcDbTrace.js +0 -271
  208. package/lib/entity/AcDbTrace.js.map +0 -1
  209. package/lib/entity/AcDbViewport.d.ts +0 -173
  210. package/lib/entity/AcDbViewport.d.ts.map +0 -1
  211. package/lib/entity/AcDbViewport.js +0 -295
  212. package/lib/entity/AcDbViewport.js.map +0 -1
  213. package/lib/entity/AcDbWipeout.d.ts +0 -39
  214. package/lib/entity/AcDbWipeout.d.ts.map +0 -1
  215. package/lib/entity/AcDbWipeout.js +0 -70
  216. package/lib/entity/AcDbWipeout.js.map +0 -1
  217. package/lib/entity/AcDbXline.d.ts +0 -151
  218. package/lib/entity/AcDbXline.d.ts.map +0 -1
  219. package/lib/entity/AcDbXline.js +0 -209
  220. package/lib/entity/AcDbXline.js.map +0 -1
  221. package/lib/entity/dimension/AcDb3PointAngularDimension.d.ts +0 -92
  222. package/lib/entity/dimension/AcDb3PointAngularDimension.d.ts.map +0 -1
  223. package/lib/entity/dimension/AcDb3PointAngularDimension.js +0 -157
  224. package/lib/entity/dimension/AcDb3PointAngularDimension.js.map +0 -1
  225. package/lib/entity/dimension/AcDbAlignedDimension.d.ts +0 -220
  226. package/lib/entity/dimension/AcDbAlignedDimension.d.ts.map +0 -1
  227. package/lib/entity/dimension/AcDbAlignedDimension.js +0 -341
  228. package/lib/entity/dimension/AcDbAlignedDimension.js.map +0 -1
  229. package/lib/entity/dimension/AcDbArcDimension.d.ts +0 -94
  230. package/lib/entity/dimension/AcDbArcDimension.d.ts.map +0 -1
  231. package/lib/entity/dimension/AcDbArcDimension.js +0 -159
  232. package/lib/entity/dimension/AcDbArcDimension.js.map +0 -1
  233. package/lib/entity/dimension/AcDbDiametricDimension.d.ts +0 -145
  234. package/lib/entity/dimension/AcDbDiametricDimension.d.ts.map +0 -1
  235. package/lib/entity/dimension/AcDbDiametricDimension.js +0 -275
  236. package/lib/entity/dimension/AcDbDiametricDimension.js.map +0 -1
  237. package/lib/entity/dimension/AcDbDimension.d.ts +0 -257
  238. package/lib/entity/dimension/AcDbDimension.d.ts.map +0 -1
  239. package/lib/entity/dimension/AcDbDimension.js +0 -466
  240. package/lib/entity/dimension/AcDbDimension.js.map +0 -1
  241. package/lib/entity/dimension/AcDbOrdinateDimension.d.ts +0 -78
  242. package/lib/entity/dimension/AcDbOrdinateDimension.d.ts.map +0 -1
  243. package/lib/entity/dimension/AcDbOrdinateDimension.js +0 -133
  244. package/lib/entity/dimension/AcDbOrdinateDimension.js.map +0 -1
  245. package/lib/entity/dimension/AcDbRadialDimension.d.ts +0 -214
  246. package/lib/entity/dimension/AcDbRadialDimension.d.ts.map +0 -1
  247. package/lib/entity/dimension/AcDbRadialDimension.js +0 -288
  248. package/lib/entity/dimension/AcDbRadialDimension.js.map +0 -1
  249. package/lib/entity/dimension/index.d.ts +0 -8
  250. package/lib/entity/dimension/index.d.ts.map +0 -1
  251. package/lib/entity/dimension/index.js +0 -8
  252. package/lib/entity/dimension/index.js.map +0 -1
  253. package/lib/entity/index.d.ts +0 -24
  254. package/lib/entity/index.d.ts.map +0 -1
  255. package/lib/entity/index.js +0 -24
  256. package/lib/entity/index.js.map +0 -1
  257. package/lib/index.d.ts +0 -10
  258. package/lib/index.d.ts.map +0 -1
  259. package/lib/index.js +0 -10
  260. package/lib/index.js.map +0 -1
  261. package/lib/misc/AcDbAngleUnits.d.ts +0 -20
  262. package/lib/misc/AcDbAngleUnits.d.ts.map +0 -1
  263. package/lib/misc/AcDbAngleUnits.js +0 -21
  264. package/lib/misc/AcDbAngleUnits.js.map +0 -1
  265. package/lib/misc/AcDbCodePage.d.ts +0 -50
  266. package/lib/misc/AcDbCodePage.d.ts.map +0 -1
  267. package/lib/misc/AcDbCodePage.js +0 -100
  268. package/lib/misc/AcDbCodePage.js.map +0 -1
  269. package/lib/misc/AcDbConstants.d.ts +0 -24
  270. package/lib/misc/AcDbConstants.d.ts.map +0 -1
  271. package/lib/misc/AcDbConstants.js +0 -24
  272. package/lib/misc/AcDbConstants.js.map +0 -1
  273. package/lib/misc/AcDbDimArrowType.d.ts +0 -89
  274. package/lib/misc/AcDbDimArrowType.d.ts.map +0 -1
  275. package/lib/misc/AcDbDimArrowType.js +0 -90
  276. package/lib/misc/AcDbDimArrowType.js.map +0 -1
  277. package/lib/misc/AcDbObjectIterator.d.ts +0 -55
  278. package/lib/misc/AcDbObjectIterator.d.ts.map +0 -1
  279. package/lib/misc/AcDbObjectIterator.js +0 -67
  280. package/lib/misc/AcDbObjectIterator.js.map +0 -1
  281. package/lib/misc/AcDbOsnapMode.d.ts +0 -51
  282. package/lib/misc/AcDbOsnapMode.d.ts.map +0 -1
  283. package/lib/misc/AcDbOsnapMode.js +0 -52
  284. package/lib/misc/AcDbOsnapMode.js.map +0 -1
  285. package/lib/misc/AcDbRenderingCache.d.ts +0 -141
  286. package/lib/misc/AcDbRenderingCache.d.ts.map +0 -1
  287. package/lib/misc/AcDbRenderingCache.js +0 -239
  288. package/lib/misc/AcDbRenderingCache.js.map +0 -1
  289. package/lib/misc/AcDbUnitsValue.d.ts +0 -101
  290. package/lib/misc/AcDbUnitsValue.d.ts.map +0 -1
  291. package/lib/misc/AcDbUnitsValue.js +0 -121
  292. package/lib/misc/AcDbUnitsValue.js.map +0 -1
  293. package/lib/misc/index.d.ts +0 -9
  294. package/lib/misc/index.d.ts.map +0 -1
  295. package/lib/misc/index.js +0 -9
  296. package/lib/misc/index.js.map +0 -1
  297. package/lib/object/AcDbDictionary.d.ts +0 -178
  298. package/lib/object/AcDbDictionary.d.ts.map +0 -1
  299. package/lib/object/AcDbDictionary.js +0 -264
  300. package/lib/object/AcDbDictionary.js.map +0 -1
  301. package/lib/object/AcDbRasterImageDef.d.ts +0 -54
  302. package/lib/object/AcDbRasterImageDef.d.ts.map +0 -1
  303. package/lib/object/AcDbRasterImageDef.js +0 -82
  304. package/lib/object/AcDbRasterImageDef.js.map +0 -1
  305. package/lib/object/index.d.ts +0 -4
  306. package/lib/object/index.d.ts.map +0 -1
  307. package/lib/object/index.js +0 -4
  308. package/lib/object/index.js.map +0 -1
  309. package/lib/object/layout/AcDbLayout.d.ts +0 -190
  310. package/lib/object/layout/AcDbLayout.d.ts.map +0 -1
  311. package/lib/object/layout/AcDbLayout.js +0 -253
  312. package/lib/object/layout/AcDbLayout.js.map +0 -1
  313. package/lib/object/layout/AcDbLayoutDictionary.d.ts +0 -47
  314. package/lib/object/layout/AcDbLayoutDictionary.d.ts.map +0 -1
  315. package/lib/object/layout/AcDbLayoutDictionary.js +0 -122
  316. package/lib/object/layout/AcDbLayoutDictionary.js.map +0 -1
  317. package/lib/object/layout/AcDbLayoutManager.d.ts +0 -188
  318. package/lib/object/layout/AcDbLayoutManager.d.ts.map +0 -1
  319. package/lib/object/layout/AcDbLayoutManager.js +0 -245
  320. package/lib/object/layout/AcDbLayoutManager.js.map +0 -1
  321. package/lib/object/layout/index.d.ts +0 -4
  322. package/lib/object/layout/index.d.ts.map +0 -1
  323. package/lib/object/layout/index.js +0 -4
  324. package/lib/object/layout/index.js.map +0 -1
@@ -1,5 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function Xu(i,t){for(var e=0;e<t.length;e++){const s=t[e];if(typeof s!="string"&&!Array.isArray(s)){for(const o in s)if(o!=="default"&&!(o in i)){const h=Object.getOwnPropertyDescriptor(s,o);h&&Object.defineProperty(i,o,h.get?h:{enumerable:!0,get:()=>s[o]})}}}return Object.freeze(Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}))}const Xs={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Ki=[0,16711680,16776960,65280,65535,255,16711935,16777215,8421504,12632256,16711680,16744319,13369344,13395558,10027008,10046540,8323072,8339263,4980736,4990502,16727808,16752511,13382400,13401958,10036736,10051404,8331008,8343359,4985600,4992806,16744192,16760703,13395456,13408614,10046464,10056268,8339200,8347455,4990464,4995366,16760576,16768895,13408512,13415014,10056192,10061132,8347392,8351551,4995328,4997670,16776960,16777087,13421568,13421670,10000384,10000460,8355584,8355647,5000192,5000230,12582656,14679935,10079232,11717734,7510016,8755276,6258432,7307071,3755008,4344870,8388352,12582783,6736896,10079334,5019648,7510092,4161280,6258495,2509824,3755046,4194048,10485631,3394560,8375398,2529280,6264908,2064128,5209919,1264640,3099686,65280,8388479,52224,6736998,38912,5019724,32512,4161343,19456,2509862,65343,8388511,52275,6737023,38950,5019743,32543,4161359,19475,2509871,65407,8388543,52326,6737049,38988,5019762,32575,4161375,19494,2509881,65471,8388575,52377,6737074,39026,5019781,32607,4161391,19513,2509890,65535,8388607,52428,6737100,39064,5019800,32639,4161407,19532,2509900,49151,8380415,39372,6730444,29336,5014936,24447,4157311,14668,2507340,32767,8372223,26316,6724044,19608,5010072,16255,4153215,9804,2505036,16383,8364031,13260,6717388,9880,5005208,8063,4149119,4940,2502476,255,8355839,204,6710988,152,5000344,127,4145023,76,2500172,4129023,10452991,3342540,8349388,2490520,6245528,2031743,5193599,1245260,3089996,8323327,12550143,6684876,10053324,4980888,7490712,4128895,6242175,2490444,3745356,12517631,14647295,10027212,11691724,7471256,8735896,6226047,7290751,3735628,4335180,16711935,16744447,13369548,13395660,9961624,9981080,8323199,8339327,4980812,4990540,16711871,16744415,13369497,13395634,9961586,9981061,8323167,8339311,4980793,4990530,16711807,16744383,13369446,13395609,9961548,9981042,8323135,8339295,4980774,4990521,16711743,16744351,13369395,13395583,9961510,9981023,8323103,8339279,4980755,4990511,3355443,5987163,8684676,11382189,14079702,16777215,0];function hs(i,t,e){return Math.max(t,Math.min(e,i))}const $o=class Zo{constructor(){this._colorIndex=256,this._color=null,this._colorName=null}get color(){return this._color}set color(t){t==null?this._color=null:(this._color=Math.round(hs(t,0,256*256*256-1)),this._colorIndex=this.getColorIndexByValue(this._color),this._colorName=this.getColorNameByValue(this._color))}get hexColor(){if(this._color&&this._color>0&&this._color<=16777215){let t=this._color.toString(16).toUpperCase();for(;t.length<6;)t="0"+t;return`0x${t}`}return""}get cssColor(){return`rgb(${this.red},${this.green},${this.blue})`}get red(){return this.color?this.color>>16&255:null}get green(){return this.color?this.color>>8&255:null}get blue(){return this.color?this.color&255:null}get colorIndex(){return this._colorIndex}set colorIndex(t){t==null?this._colorIndex=null:(this._colorIndex=hs(t,0,256),this._colorIndex>0&&this._colorIndex<256?(this._color=Ki[t],this._colorName=this.getColorNameByValue(this._color)):(this._color=null,this._colorName=null))}get colorName(){return this._colorName}set colorName(t){if(t){const e=Xs[t.toLowerCase()];e!==void 0?(this._colorName=t,this._color=e,this._colorIndex=this.getColorIndexByValue(this._color)):console.warn("Unknown color: "+t)}else this._colorName=null}get hasColorName(){return this._colorName==null}get hasColorIndex(){return this._colorIndex==null}get isByLayer(){return this.colorIndex==256}setByLayer(){return this.colorIndex=256,this}get isByBlock(){return this.colorIndex==0}setByBlock(){return this.colorIndex=0,this}setScalar(t){return this.setRGB(t,t,t),this}setRGB(t,e,s){const o=Math.round(hs(t,0,255)),h=Math.round(hs(e,0,255)),c=Math.round(hs(s,0,255));return this.color=(o<<16)+(h<<8)+c,this}setColorName(t){const e=Xs[t.toLowerCase()];return e!==void 0?this.color=e:console.warn("Unknown color "+t),this}clone(){const t=new Zo;return t.colorIndex=this.colorIndex,t.color=this.color,t._colorName=this._colorName,this}copy(t){return this.colorIndex=t.colorIndex,this.color=t.color,this._colorName=t._colorName,this}equals(t){return t.color==this.color&&t.colorIndex==this.colorIndex&&t._colorName==this._colorName}toString(){return this.isByLayer?"ByLayer":this.isByBlock?"ByBlock":this.colorName?this.colorName:this.hexColor}getColorNameByValue(t){for(const[e,s]of Object.entries(Xs))if(s===t)return e;return null}getColorIndexByValue(t){const e=Ki.length-1;for(let s=1;s<e;++s)if(Ki[s]===t)return s;return null}};$o.NAMES=Xs;let Wr=$o;const Ue={get ILLEGAL_PARAMETERS(){return new ReferenceError("Illegal Parameters")},get ZERO_DIVISION(){return new Error("Zero division")},get UNRESOLVED_BOUNDARY_CONFLICT(){return new Error("Unresolved boundary conflict in boolean operation")},get INFINITE_LOOP(){return new Error("Infinite loop")},get CANNOT_INVOKE_ABSTRACT_METHOD(){return new Error("Abstract method cannot be invoked")},get OPERATION_IS_NOT_SUPPORTED(){return new Error("Operation is not supported")},get NOT_IMPLEMENTED(){return new Error("Not implemented yet")}};let Ku=class{constructor(){this._listeners={}}addEventListener(t,e){this._listeners===void 0&&(this._listeners={});const s=this._listeners;s[t]===void 0&&(s[t]=[]),s[t].indexOf(e)===-1&&s[t].push(e)}hasEventListener(t,e){if(this._listeners===void 0)return!1;const s=this._listeners;return s[t]!==void 0&&s[t].indexOf(e)!==-1}removeEventListener(t,e){if(this._listeners===void 0)return;const s=this._listeners[t];if(s!==void 0){const o=s.indexOf(e);o!==-1&&s.splice(o,1)}}dispatchEvent(t){if(this._listeners===void 0)return;const e=this._listeners[t.type];if(e!==void 0){t.target=this;const s=e.slice(0);for(let o=0,h=s.length;o<h;o++)s[o].call(this,t)}}},ie=class{constructor(){this.listeners=[]}addEventListener(t){this.listeners.push(t)}removeEventListener(t){this.listeners=this.listeners.filter(e=>e!==t)}replaceEventListener(t){this.removeEventListener(t),this.addEventListener(t)}dispatch(t,...e){for(const s of this.listeners)s.call(null,t,...e)}};var $u=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Zu(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var Qo={exports:{}};(function(i){(function(t,e){i.exports?i.exports=e():t.log=e()})($u,function(){var t=function(){},e="undefined",s=typeof window!==e&&typeof window.navigator!==e&&/Trident\/|MSIE /.test(window.navigator.userAgent),o=["trace","debug","info","warn","error"],h={},c=null;function f(O,U){var D=O[U];if(typeof D.bind=="function")return D.bind(O);try{return Function.prototype.bind.call(D,O)}catch{return function(){return Function.prototype.apply.apply(D,[O,arguments])}}}function x(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function g(O){return O==="debug"&&(O="log"),typeof console===e?!1:O==="trace"&&s?x:console[O]!==void 0?f(console,O):console.log!==void 0?f(console,"log"):t}function A(){for(var O=this.getLevel(),U=0;U<o.length;U++){var D=o[U];this[D]=U<O?t:this.methodFactory(D,O,this.name)}if(this.log=this.debug,typeof console===e&&O<this.levels.SILENT)return"No console available for logging"}function b(O){return function(){typeof console!==e&&(A.call(this),this[O].apply(this,arguments))}}function E(O,U,D){return g(O)||b.apply(this,arguments)}function T(O,U){var D=this,dt,vt,ot,W="loglevel";typeof O=="string"?W+=":"+O:typeof O=="symbol"&&(W=void 0);function ut(bt){var Lt=(o[bt]||"silent").toUpperCase();if(!(typeof window===e||!W)){try{window.localStorage[W]=Lt;return}catch{}try{window.document.cookie=encodeURIComponent(W)+"="+Lt+";"}catch{}}}function st(){var bt;if(!(typeof window===e||!W)){try{bt=window.localStorage[W]}catch{}if(typeof bt===e)try{var Lt=window.document.cookie,de=encodeURIComponent(W),me=Lt.indexOf(de+"=");me!==-1&&(bt=/^([^;]+)/.exec(Lt.slice(me+de.length+1))[1])}catch{}return D.levels[bt]===void 0&&(bt=void 0),bt}}function Vt(){if(!(typeof window===e||!W)){try{window.localStorage.removeItem(W)}catch{}try{window.document.cookie=encodeURIComponent(W)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function Yt(bt){var Lt=bt;if(typeof Lt=="string"&&D.levels[Lt.toUpperCase()]!==void 0&&(Lt=D.levels[Lt.toUpperCase()]),typeof Lt=="number"&&Lt>=0&&Lt<=D.levels.SILENT)return Lt;throw new TypeError("log.setLevel() called with invalid level: "+bt)}D.name=O,D.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},D.methodFactory=U||E,D.getLevel=function(){return ot??vt??dt},D.setLevel=function(bt,Lt){return ot=Yt(bt),Lt!==!1&&ut(ot),A.call(D)},D.setDefaultLevel=function(bt){vt=Yt(bt),st()||D.setLevel(bt,!1)},D.resetLevel=function(){ot=null,Vt(),A.call(D)},D.enableAll=function(bt){D.setLevel(D.levels.TRACE,bt)},D.disableAll=function(bt){D.setLevel(D.levels.SILENT,bt)},D.rebuild=function(){if(c!==D&&(dt=Yt(c.getLevel())),A.call(D),c===D)for(var bt in h)h[bt].rebuild()},dt=Yt(c?c.getLevel():"WARN");var Wt=st();Wt!=null&&(ot=Yt(Wt)),A.call(D)}c=new T,c.getLogger=function(O){if(typeof O!="symbol"&&typeof O!="string"||O==="")throw new TypeError("You must supply a name when creating a logger.");var U=h[O];return U||(U=h[O]=new T(O,c.methodFactory)),U};var R=typeof window!==e?window.log:void 0;return c.noConflict=function(){return typeof window!==e&&window.log===c&&(window.log=R),c},c.getLoggers=function(){return h},c.default=c,c})})(Qo);var Jo=Qo.exports;const Qu=Zu(Jo),Ju=Xu({__proto__:null,default:Qu},[Jo]),tc=!0,ks=Ju;ks.setLevel("debug");const ec=i=>{try{ks.setLevel(i)}catch(t){ks.setLevel("error"),ks.error(t)}};function Ps(i){return i===null||typeof i!="object"?i:Array.isArray(i)?[...i]:{...i}}function Fn(i,...t){for(const e of t)if(e)for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&i[s]===void 0&&(i[s]=e[s]);return i}function tl(i,t){return i!=null&&Object.prototype.hasOwnProperty.call(i,t)}function el(i){return i==null?!0:Array.isArray(i)||typeof i=="string"?i.length===0:i instanceof Map||i instanceof Set?i.size===0:typeof i=="object"?Object.keys(i).length===0:!1}function zn(i,t){if(i===t)return!0;if(i==null||t==null)return i===t;if(typeof i!=typeof t)return!1;if(typeof i!="object")return i===t;if(Array.isArray(i)!==Array.isArray(t))return!1;if(Array.isArray(i)){if(i.length!==t.length)return!1;for(let o=0;o<i.length;o++)if(!zn(i[o],t[o]))return!1;return!0}const e=Object.keys(i),s=Object.keys(t);if(e.length!==s.length)return!1;for(const o of e)if(!Object.prototype.hasOwnProperty.call(t,o)||!zn(i[o],t[o]))return!1;return!0}let rl=class nl{constructor(t,e){this.events={attrChanged:new ie,modelChanged:new ie},this._changing=!1,this._previousAttributes={},this._pending=!1;const s=t||{};e&&Fn(s,e),this.attributes=s,this.changed={}}get(t){return this.attributes[t]}set(t,e,s){if(t==null)return this;let o;typeof t=="object"?(o=t,s=e):(o={},o[t]=e),s||(s={});const h=s.unset,c=s.silent,f=[],x=this._changing;this._changing=!0,x||(this._previousAttributes=Ps(this.attributes),this.changed={});const g=this.attributes,A=this.changed,b=this._previousAttributes;for(const E in o)e=o[E],zn(g[E],e)||f.push(E),zn(b[E],e)?delete A[E]:A[E]=e,h?delete g[E]:g[E]=e;if(!c){f.length&&(this._pending=s);for(let E=0;E<f.length;E++)this.events.attrChanged.dispatch({object:this,attrName:f[E],attrValue:g[f[E]],options:s})}if(x)return this;if(!c)for(;this._pending;)s=this._pending,this._pending=!1,this.events.modelChanged.dispatch({object:this,options:s});return this._pending=!1,this._changing=!1,this}has(t){return this.get(t)!=null}hasChanged(t){return t==null?!el(this.changed):tl(this.changed,t)}changedAttributes(t){if(!t)return this.hasChanged()?Ps(this.changed):{};const e=this._changing?this._previousAttributes:this.attributes,s={};for(const o in t){const h=t[o];zn(e[o],h)||(s[o]=h)}return s}previous(t){return t==null||!this._previousAttributes?null:this._previousAttributes[t]}previousAttributes(){return Ps(this._previousAttributes)}clone(){const t=Ps(this.attributes);return new nl(t)}},ga=class Es{constructor(){this.entries=new Map}static getInstance(){return Es.instance||(Es.instance=new Es),Es.instance}collect(t){this.entries.set(t.name,t)}printAll(){for(const[t,e]of this.entries)console.log(`${t}:`),console.log(e.format())}clear(){this.entries.clear()}getAll(){return Array.from(this.entries.values())}getEntry(t){return this.entries.get(t)}remove(t){return this.entries.delete(t)}};class rc{static formatBytes(t,e=2){if(t===0)return"0 B";const s=1024,o=Math.max(0,e),h=["B","KB","MB","GB","TB"],c=Math.floor(Math.log(t)/Math.log(s)),f=t/Math.pow(s,c);return`${parseFloat(f.toFixed(o))} ${h[c]}`}}class sl{constructor(t){this.name=t}run(t){throw new Error("run() must be implemented by subclass")}}class il{constructor(){this.tasks=[],this.onProgress=()=>{},this.onComplete=()=>{},this.onError=()=>{}}scheduleTask(t){return new Promise((e,s)=>{const o=()=>{Promise.resolve(t()).then(e).catch(s)};typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(o):setTimeout(o,0)})}addTask(t){this.tasks.push(t)}setProgressCallback(t){this.onProgress=t}setCompleteCallback(t){this.onComplete=t}setErrorCallback(t){this.onError=t}async run(t){const e=this.tasks.length;let s=t;for(let o=0;o<e;o++){const h=this.tasks[o];try{s=await this.scheduleTask(async()=>{const c=await h.run(s);return this.onProgress((o+1)/e,h),c})}catch(c){this.onError({error:c,taskIndex:o,task:h})}}this.onComplete(s)}}let al=class{constructor(t,e,s){this.isLoading=!1,this.itemsLoaded=0,this.itemsTotal=0,this.urlModifier=void 0,this.handlers=[],this.onStart=void 0,this.onLoad=t,this.onProgress=e,this.onError=s}itemStart(t){this.itemsTotal++,this.isLoading===!1&&this.onStart!==void 0&&this.onStart(t,this.itemsLoaded,this.itemsTotal),this.isLoading=!0}itemEnd(t){this.itemsLoaded++,this.onProgress!==void 0&&this.onProgress(t,this.itemsLoaded,this.itemsTotal),this.itemsLoaded===this.itemsTotal&&(this.isLoading=!1,this.onLoad!==void 0&&this.onLoad())}itemError(t){this.onError!==void 0&&this.onError(t)}resolveURL(t){return this.urlModifier?this.urlModifier(t):t}setURLModifier(t){return this.urlModifier=t,this}addHandler(t,e){return this.handlers.push(t,e),this}removeHandler(t){const e=this.handlers.indexOf(t);return e!==-1&&this.handlers.splice(e,2),this}getHandler(t){for(let e=0,s=this.handlers.length;e<s;e+=2){const o=this.handlers[e],h=this.handlers[e+1];if(o.global&&(o.lastIndex=0),o.test(t))return h}return null}};const ol=new al;let nc=class{constructor(t){this.manager=t!==void 0?t:ol,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}loadAsync(t,e){return new Promise((s,o)=>{this.load(t,s,e,o)})}parse(t){}setCrossOrigin(t){return this.crossOrigin=t,this}setWithCredentials(t){return this.withCredentials=t,this}setPath(t){return this.path=t,this}setResourcePath(t){return this.resourcePath=t,this}setRequestHeader(t){return this.requestHeader=t,this}};class ll{constructor(t,e,s){this._chunkSize=-1,this._minimumChunkSize=50,this._count=t,this._numerOfChunk=e<1?1:e,this._minimumChunkSize=s,this.calculateChunkSize()}get count(){return this._count}get numerOfChunk(){return this._numerOfChunk}get minimumChunkSize(){return this._minimumChunkSize}set minimumChunkSize(t){this._minimumChunkSize=t,this.calculateChunkSize()}get chunkSize(){return this._chunkSize}calculateChunkSize(){let t=this._count/this._numerOfChunk;t<this._minimumChunkSize&&(t=Math.min(this._minimumChunkSize,this._count)),this._chunkSize=t<1?this._count:Math.floor(t)}scheduleTask(t){return new Promise((e,s)=>{const o=()=>{Promise.resolve(t()).then(e).catch(s)};typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(o):setTimeout(o,0)})}async processChunk(t){let e=0;const s=async()=>{const o=e,h=Math.min(e+this._chunkSize,this._count);await t(o,h),e=h,e<this._count&&await this.scheduleTask(s)};await s()}}var _a=(i=>(i[i.DecimalDegrees=0]="DecimalDegrees",i[i.DegreesMinutesSeconds=1]="DegreesMinutesSeconds",i[i.Gradians=2]="Gradians",i[i.Radians=3]="Radians",i[i.SurveyorsUnits=4]="SurveyorsUnits",i))(_a||{});class Gr{static get instance(){return this._instance||(this._instance=new Gr),this._instance}constructor(){this._blocks=new Map}createKey(t,e){return`${t}_${e}`}set(t,e){return e=e.fastDeepClone(),this._blocks.set(t,e),e}get(t){let e=this._blocks.get(t);return e&&(e=e.fastDeepClone()),e}has(t){return this._blocks.has(t)}clear(){this._blocks.clear()}draw(t,e,s,o=!0,h,c){const f=[];if(e!=null){const x=this.createKey(e.name,s);let g;if(this.has(x))g=this.get(x);else{const A=e.newIterator();for(const b of A)b.color.isByBlock&&s?(Co.copy(b.color),b.color.color=s,this.addEntity(b,f,t),b.color.copy(Co)):this.addEntity(b,f,t);g=t.group(f),g&&o&&this.set(x,g)}return g&&h&&(g.applyMatrix(h),c&&(c.x!=0||c.y!=0||c.z!=1)&&(h.setFromExtrusionDirection(c),g.applyMatrix(h))),g}else return t.group(f)}addEntity(t,e,s){const o=t.draw(s);o&&(this.attachEntityInfo(o,t),e.push(o))}attachEntityInfo(t,e){t.objectId=e.objectId,t.ownerId=e.ownerId,t.layerName=e.layer,t.visible=e.visibility}}const Co=new Wr;var Rs=(i=>(i[i.UTF8=0]="UTF8",i[i.US_ASCII=1]="US_ASCII",i[i.ISO_8859_1=2]="ISO_8859_1",i[i.ISO_8859_2=3]="ISO_8859_2",i[i.ISO_8859_3=4]="ISO_8859_3",i[i.ISO_8859_4=5]="ISO_8859_4",i[i.ISO_8859_5=6]="ISO_8859_5",i[i.ISO_8859_6=7]="ISO_8859_6",i[i.ISO_8859_7=8]="ISO_8859_7",i[i.ISO_8859_8=9]="ISO_8859_8",i[i.ISO_8859_9=10]="ISO_8859_9",i[i.CP437=11]="CP437",i[i.CP850=12]="CP850",i[i.CP852=13]="CP852",i[i.CP855=14]="CP855",i[i.CP857=15]="CP857",i[i.CP860=16]="CP860",i[i.CP861=17]="CP861",i[i.CP863=18]="CP863",i[i.CP864=19]="CP864",i[i.CP865=20]="CP865",i[i.CP869=21]="CP869",i[i.CP932=22]="CP932",i[i.MACINTOSH=23]="MACINTOSH",i[i.BIG5=24]="BIG5",i[i.CP949=25]="CP949",i[i.JOHAB=26]="JOHAB",i[i.CP866=27]="CP866",i[i.ANSI_1250=28]="ANSI_1250",i[i.ANSI_1251=29]="ANSI_1251",i[i.ANSI_1252=30]="ANSI_1252",i[i.GB2312=31]="GB2312",i[i.ANSI_1253=32]="ANSI_1253",i[i.ANSI_1254=33]="ANSI_1254",i[i.ANSI_1255=34]="ANSI_1255",i[i.ANSI_1256=35]="ANSI_1256",i[i.ANSI_1257=36]="ANSI_1257",i[i.ANSI_874=37]="ANSI_874",i[i.ANSI_932=38]="ANSI_932",i[i.ANSI_936=39]="ANSI_936",i[i.ANSI_949=40]="ANSI_949",i[i.ANSI_950=41]="ANSI_950",i[i.ANSI_1361=42]="ANSI_1361",i[i.UTF16=43]="UTF16",i[i.ANSI_1258=44]="ANSI_1258",i[i.UNDEFINED=255]="UNDEFINED",i))(Rs||{});const sc=["utf-8","utf-8","iso-8859-1","iso-8859-2","iso-8859-3","iso-8859-4","iso-8859-5","iso-8859-6","iso-8859-7","iso-8859-8","iso-8859-9","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","shift-jis","macintosh","big5","utf-8","utf-8","ibm866","windows-1250","windows-1251","windows-1252","gbk","windows-1253","windows-1254","windows-1255","windows-1256","windows-1257","windows-874","shift-jis","gbk","euc-kr","big5","utf-8","utf-16le","windows-1258"],hl=i=>sc[i],ei="Continuous",Ks="ByLayer",ul="ByBlock";var cn=(i=>(i[i.EndPoint=1]="EndPoint",i[i.MidPoint=2]="MidPoint",i[i.Center=3]="Center",i[i.Node=4]="Node",i[i.Quadrant=5]="Quadrant",i[i.Insertion=7]="Insertion",i[i.Perpendicular=8]="Perpendicular",i[i.Tangent=9]="Tangent",i[i.Nearest=10]="Nearest",i[i.Centroid=11]="Centroid",i))(cn||{}),va=(i=>(i[i.Undefined=0]="Undefined",i[i.Inches=1]="Inches",i[i.Feet=2]="Feet",i[i.Miles=3]="Miles",i[i.Millimeters=4]="Millimeters",i[i.Centimeters=5]="Centimeters",i[i.Meters=6]="Meters",i[i.Kilometers=7]="Kilometers",i[i.Microinches=8]="Microinches",i[i.Mils=9]="Mils",i[i.Yards=10]="Yards",i[i.Angstroms=11]="Angstroms",i[i.Nanometers=12]="Nanometers",i[i.Microns=13]="Microns",i[i.Decimeters=14]="Decimeters",i[i.Dekameters=15]="Dekameters",i[i.Hectometers=16]="Hectometers",i[i.Gigameters=17]="Gigameters",i[i.Astronomical=18]="Astronomical",i[i.LightYears=19]="LightYears",i[i.Parsecs=20]="Parsecs",i[i.USSurveyFeet=21]="USSurveyFeet",i[i.USSurveyInch=22]="USSurveyInch",i[i.USSurveyYard=23]="USSurveyYard",i[i.USSurveyMile=24]="USSurveyMile",i[i.Max=24]="Max",i))(va||{});function ic(i){return i==4||i==5||i==6||i==7||i==12||i==13||i==14||i==15||i==16||i==17}function ac(i){return i==1||i==2||i==3||i==8||i==9||i==10||i==21}var cl=(i=>(i.ClosedFilled="",i.Dot="_DOT",i.DotSmall="_DOTSMALL",i.DotBlank="_DOTBLANK",i.Origin="_ORIGIN",i.Origin2="_ORIGIN2",i.Open="_OPEN",i.Open90="_OPEN90",i.Open30="_OPEN30",i.Closed="_CLOSED",i.Small="_SMALL",i.None="_NONE",i.Oblique="_OBLIQUE",i.BoxFilled="_BOXFILLED",i.Box="_BOXBLANK",i.ClosedBlank="_CLOSEDBLANK",i.DatumBlank="_DATUMBLANK",i.DatumFilled="_DATUMFILLED",i.Integral="_INTEGRAL",i.ArchTick="_ARCHTICK",i))(cl||{});class Mi{constructor(t){this.i=0,this._records=t,this._keys=Array.from(t.keys())}[Symbol.iterator](){return this}next(){for(;this.i<this._keys.length;){const t=this._records.get(this._keys[this.i]);return this.i+=1,{value:t,done:!1}}return{value:null,done:!0}}}const dl="Load Database";class Ie extends sl{constructor(t,e){super(t.stage),this.data=t,this.progress=e}async run(t){const e=ga.getInstance().getEntry(dl),s=Date.now();this.progress&&await this.progress(this.data.progress.value,this.data.stage,"START");const o=await this.data.task(t);if(this.progress){const h=o.data;await this.progress(this.data.progress.value,this.data.stage,"END",h),this.data.progress.value+=this.data.step,this.data.progress.value>100&&(this.data.progress.value=100)}return e&&(e.data[this.name]=Date.now()-s),o}}class ml{constructor(t={}){this.config=t}async read(t,e,s,o){const h={name:dl,data:{total:0},format(){let g="";return Object.keys(this.data).forEach(A=>{A!=="total"&&(g+=`- ${A}: ${this.data[A]} ms
2
- `)}),g+=`- total: ${this.data.total} ms`,g}};ga.getInstance().collect(h),this.progress=o;const c={value:0},f=new il;f.setCompleteCallback(()=>this.onFinished()),f.setErrorCallback(g=>this.onError(g)),f.addTask(new Ie({stage:"START",step:1,progress:c,task:async g=>g},o)),f.addTask(new Ie({stage:"PARSE",step:5,progress:c,task:async g=>await this.parse(g)},o)),f.addTask(new Ie({stage:"FONT",step:5,progress:c,task:async g=>{const A=this.getFonts(g.model);return{model:g.model,data:A}}},o)),f.addTask(new Ie({stage:"LTYPE",step:1,progress:c,task:async g=>(this.processLineTypes(g.model,e),g)},o)),f.addTask(new Ie({stage:"STYLE",step:1,progress:c,task:async g=>(this.processTextStyles(g.model,e),g)},o)),f.addTask(new Ie({stage:"DIMSTYLE",step:1,progress:c,task:async g=>(this.processDimStyles(g.model,e),g)},o)),f.addTask(new Ie({stage:"LAYER",step:1,progress:c,task:async g=>(this.processLayers(g.model,e),e.tables.layerTable.numEntries===0&&e.createDefaultData({layer:!0}),g)},o)),f.addTask(new Ie({stage:"VPORT",step:1,progress:c,task:async g=>(this.processViewports(g.model,e),g)},o)),f.addTask(new Ie({stage:"HEADER",step:1,progress:c,task:async g=>(this.processHeader(g.model,e),g)},o)),f.addTask(new Ie({stage:"BLOCK_RECORD",step:5,progress:c,task:async g=>(this.processBlockTables(g.model,e),g)},o)),f.addTask(new Ie({stage:"OBJECT",step:5,progress:c,task:async g=>(this.processObjects(g.model,e),e.dictionaries.layouts.numEntries===0&&e.createDefaultData({layout:!0}),g)},o)),f.addTask(new Ie({stage:"BLOCK",step:5,progress:c,task:async g=>(await this.processBlocks(g.model,e),g)},o)),f.addTask(new Ie({stage:"ENTITY",step:100,progress:c,task:async g=>(await this.processEntities(g.model,e,s,c,o),g)},o)),f.addTask(new Ie({stage:"END",step:0,progress:c,task:async g=>g},o));const x=Date.now();await f.run(t),h.data.total=Date.now()-x}onError(t){if(this.progress){const e=t.task;this.progress(e.data.progress.value,e.data.stage,"ERROR",void 0,t)}console.error(`Error occurred in conversion stage '${t.task.name}': `,t.error),t.task.name!="ENTITY"&&this.onFinished()}onFinished(){this.progress&&(this.progress(100,"END","END"),Gr.instance.clear())}async parse(t,e){throw new Error("Not impelemented yet!")}getFonts(t){throw new Error("Not impelemented yet!")}processLineTypes(t,e){throw new Error("Not impelemented yet!")}processTextStyles(t,e){throw new Error("Not impelemented yet!")}processDimStyles(t,e){throw new Error("Not impelemented yet!")}processLayers(t,e){throw new Error("Not impelemented yet!")}processViewports(t,e){throw new Error("Not impelemented yet!")}processHeader(t,e){throw new Error("Not impelemented yet!")}processBlockTables(t,e){throw new Error("Not impelemented yet!")}processObjects(t,e){throw new Error("Not impelemented yet!")}processBlocks(t,e){throw new Error("Not impelemented yet!")}processEntities(t,e,s,o,h){throw new Error("Not impelemented yet!")}}var he,us,Qt,se,cs,Je,ye,pr,tr,tn,ds,ms,en,rn,ps,fs,gs,Ne,fr,qt,nn,_s,_t,xe,vs,be,ys,gr,_r,er,xs,sn,Ce,vr,an,$i,Zi,yr,xr,bs,ws,br,As,Qi,Ji,ue,wr,ce,Le,ta,ea,ra,na,Ar,Oe,on,Ss,ln,ze,Sr,Re,Ir;(he={})[he.None=0]="None",he[he.Anonymous=1]="Anonymous",he[he.NonConstant=2]="NonConstant",he[he.Xref=4]="Xref",he[he.XrefOverlay=8]="XrefOverlay",he[he.ExternallyDependent=16]="ExternallyDependent",he[he.ResolvedOrDependent=32]="ResolvedOrDependent",he[he.ReferencedXref=64]="ReferencedXref";(us={})[us.BYBLOCK=0]="BYBLOCK",us[us.BYLAYER=256]="BYLAYER";(Qt={})[Qt.Rotated=0]="Rotated",Qt[Qt.Aligned=1]="Aligned",Qt[Qt.Angular=2]="Angular",Qt[Qt.Diameter=3]="Diameter",Qt[Qt.Radius=4]="Radius",Qt[Qt.Angular3Point=5]="Angular3Point",Qt[Qt.Ordinate=6]="Ordinate",Qt[Qt.ReferenceIsExclusive=32]="ReferenceIsExclusive",Qt[Qt.IsOrdinateXTypeFlag=64]="IsOrdinateXTypeFlag",Qt[Qt.IsCustomTextPositionFlag=128]="IsCustomTextPositionFlag";(se={})[se.TopLeft=1]="TopLeft",se[se.TopCenter=2]="TopCenter",se[se.TopRight=3]="TopRight",se[se.MiddleLeft=4]="MiddleLeft",se[se.MiddleCenter=5]="MiddleCenter",se[se.MiddleRight=6]="MiddleRight",se[se.BottomLeft=7]="BottomLeft",se[se.BottomCenter=8]="BottomCenter",se[se.BottomRight=9]="BottomRight";(cs={})[cs.AtLeast=1]="AtLeast",cs[cs.Exact=2]="Exact";var Lo=((Je={})[Je.Center=0]="Center",Je[Je.Above=1]="Above",Je[Je.Outside=2]="Outside",Je[Je.JIS=3]="JIS",Je[Je.Below=4]="Below",Je),Cn=((ye={})[ye.Feet=0]="Feet",ye[ye.None=1]="None",ye[ye.Inch=2]="Inch",ye[ye.FeetAndInch=3]="FeetAndInch",ye[ye.Leading=4]="Leading",ye[ye.Trailing=8]="Trailing",ye[ye.LeadingAndTrailing=12]="LeadingAndTrailing",ye),oc=((pr={})[pr.None=0]="None",pr[pr.Leading=1]="Leading",pr[pr.Trailing=2]="Trailing",pr[pr.LeadingAndTrailing=3]="LeadingAndTrailing",pr),lc=((tr={})[tr.Center=0]="Center",tr[tr.Left=1]="Left",tr[tr.Right=2]="Right",tr[tr.OverFirst=3]="OverFirst",tr[tr.OverSecond=4]="OverSecond",tr),hc=((tn={})[tn.Bottom=0]="Bottom",tn[tn.Center=1]="Center",tn[tn.Top=2]="Top",tn);(ds={})[ds.PatternFill=0]="PatternFill",ds[ds.SolidFill=1]="SolidFill";(ms={})[ms.NonAssociative=0]="NonAssociative",ms[ms.Associative=1]="Associative";(en={})[en.Normal=0]="Normal",en[en.Outer=1]="Outer",en[en.Ignore=2]="Ignore";(rn={})[rn.UserDefined=0]="UserDefined",rn[rn.Predefined=1]="Predefined",rn[rn.Custom=2]="Custom";(ps={})[ps.NotAnnotated=0]="NotAnnotated",ps[ps.Annotated=1]="Annotated";(fs={})[fs.Solid=0]="Solid",fs[fs.Gradient=1]="Gradient";(gs={})[gs.TwoColor=0]="TwoColor",gs[gs.OneColor=1]="OneColor";var uc=((Ne={})[Ne.Default=0]="Default",Ne[Ne.External=1]="External",Ne[Ne.Polyline=2]="Polyline",Ne[Ne.Derived=4]="Derived",Ne[Ne.Textbox=8]="Textbox",Ne[Ne.Outermost=16]="Outermost",Ne),Gs=((fr={})[fr.Line=1]="Line",fr[fr.Circular=2]="Circular",fr[fr.Elliptic=3]="Elliptic",fr[fr.Spline=4]="Spline",fr),cc=((qt={})[qt.Off=0]="Off",qt[qt.Solid=1]="Solid",qt[qt.Dashed=2]="Dashed",qt[qt.Dotted=3]="Dotted",qt[qt.ShotDash=4]="ShotDash",qt[qt.MediumDash=5]="MediumDash",qt[qt.LongDash=6]="LongDash",qt[qt.DoubleShortDash=7]="DoubleShortDash",qt[qt.DoubleMediumDash=8]="DoubleMediumDash",qt[qt.DoubleLongDash=9]="DoubleLongDash",qt[qt.DoubleMediumLongDash=10]="DoubleMediumLongDash",qt[qt.SparseDot=11]="SparseDot",qt);cc.Off;(nn={})[nn.Standard=-3]="Standard",nn[nn.ByLayer=-2]="ByLayer",nn[nn.ByBlock=-1]="ByBlock";(_s={})[_s.English=0]="English",_s[_s.Metric=1]="Metric";(_t={})[_t.PERSPECTIVE_MODE=1]="PERSPECTIVE_MODE",_t[_t.FRONT_CLIPPING=2]="FRONT_CLIPPING",_t[_t.BACK_CLIPPING=4]="BACK_CLIPPING",_t[_t.UCS_FOLLOW=8]="UCS_FOLLOW",_t[_t.FRONT_CLIP_NOT_AT_EYE=16]="FRONT_CLIP_NOT_AT_EYE",_t[_t.UCS_ICON_VISIBILITY=32]="UCS_ICON_VISIBILITY",_t[_t.UCS_ICON_AT_ORIGIN=64]="UCS_ICON_AT_ORIGIN",_t[_t.FAST_ZOOM=128]="FAST_ZOOM",_t[_t.SNAP_MODE=256]="SNAP_MODE",_t[_t.GRID_MODE=512]="GRID_MODE",_t[_t.ISOMETRIC_SNAP_STYLE=1024]="ISOMETRIC_SNAP_STYLE",_t[_t.HIDE_PLOT_MODE=2048]="HIDE_PLOT_MODE",_t[_t.K_ISO_PAIR_TOP=4096]="K_ISO_PAIR_TOP",_t[_t.K_ISO_PAIR_RIGHT=8192]="K_ISO_PAIR_RIGHT",_t[_t.VIEWPORT_ZOOM_LOCKING=16384]="VIEWPORT_ZOOM_LOCKING",_t[_t.UNUSED=32768]="UNUSED",_t[_t.NON_RECTANGULAR_CLIPPING=65536]="NON_RECTANGULAR_CLIPPING",_t[_t.VIEWPORT_OFF=131072]="VIEWPORT_OFF",_t[_t.GRID_BEYOND_DRAWING_LIMITS=262144]="GRID_BEYOND_DRAWING_LIMITS",_t[_t.ADAPTIVE_GRID_DISPLAY=524288]="ADAPTIVE_GRID_DISPLAY",_t[_t.SUBDIVISION_BELOW_SPACING=1048576]="SUBDIVISION_BELOW_SPACING",_t[_t.GRID_FOLLOWS_WORKPLANE=2097152]="GRID_FOLLOWS_WORKPLANE";(xe={})[xe.OPTIMIZED_2D=0]="OPTIMIZED_2D",xe[xe.WIREFRAME=1]="WIREFRAME",xe[xe.HIDDEN_LINE=2]="HIDDEN_LINE",xe[xe.FLAT_SHADED=3]="FLAT_SHADED",xe[xe.GOURAUD_SHADED=4]="GOURAUD_SHADED",xe[xe.FLAT_SHADED_WITH_WIREFRAME=5]="FLAT_SHADED_WITH_WIREFRAME",xe[xe.GOURAUD_SHADED_WITH_WIREFRAME=6]="GOURAUD_SHADED_WITH_WIREFRAME";(vs={})[vs.UCS_UNCHANGED=0]="UCS_UNCHANGED",vs[vs.HAS_OWN_UCS=1]="HAS_OWN_UCS";(be={})[be.NON_ORTHOGRAPHIC=0]="NON_ORTHOGRAPHIC",be[be.TOP=1]="TOP",be[be.BOTTOM=2]="BOTTOM",be[be.FRONT=3]="FRONT",be[be.BACK=4]="BACK",be[be.LEFT=5]="LEFT",be[be.RIGHT=6]="RIGHT";(ys={})[ys.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",ys[ys.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS";(gr={})[gr.ByLayer=0]="ByLayer",gr[gr.ByBlock=1]="ByBlock",gr[gr.ByDictionaryDefault=2]="ByDictionaryDefault",gr[gr.ByObject=3]="ByObject";function At(i,t,e){return i.code===t&&(e==null||i.value===e)}function zt(i){let t={};i.rewind();let e=i.next(),s=e.code;if(t.x=e.value,(e=i.next()).code!==s+10)throw Error("Expected code for point value to be 20 but got "+e.code+".");return t.y=e.value,(e=i.next()).code!==s+20?i.rewind():t.z=e.value,t}let ya=Symbol();function xt(i,t){return(e,s,o)=>{let h=function(x,g=!1){return x.reduce((A,b)=>{b.pushContext&&A.push({});let E=A[A.length-1];for(let T of typeof b.code=="number"?[b.code]:b.code){let R=E[T]??(E[T]=[]);b.isMultiple&&R.length&&g&&console.warn(`Snippet ${R[R.length-1].name} for code(${T}) is shadowed by ${b.name}`),R.push(b)}return A},[{}])}(i,s.debug),c=!1,f=h.length-1;for(;!At(e,0,"EOF");){let x=function(U,D,dt){return U.find((vt,ot)=>{var W;return ot>=dt&&((W=vt[D])==null?void 0:W.length)})}(h,e.code,f),g=x==null?void 0:x[e.code],A=g==null?void 0:g[g.length-1];if(!x||!A){s.rewind();break}A.isMultiple||x[e.code].pop();let{name:b,parser:E,isMultiple:T,isReducible:R}=A,O=E==null?void 0:E(e,s,o);if(O===ya){s.rewind();break}if(b){let[U,D]=function(dt,vt){let ot=vt.split(".");if(!ot.length)throw Error("[parserGenerator::getObjectByPath] Invalid empty path");let W=dt;for(let ut=0;ut<ot.length-1;++ut){let st=sa(ot[ut]),Vt=sa(ot[ut+1]);Object.prototype.hasOwnProperty.call(W,st)||(typeof Vt=="number"?W[st]=[]:W[st]={}),W=W[st]}return[W,sa(ot[ot.length-1])]}(o,b);T&&!R?(Object.prototype.hasOwnProperty.call(U,D)||(U[D]=[]),U[D].push(O)):U[D]=O}A.pushContext&&(f-=1),c=!0,e=s.next()}return t&&Object.setPrototypeOf(o,t),c}}function sa(i){let t=Number.parseInt(i);return Number.isNaN(t)?i:t}function y({value:i}){return i}function G(i,t){return zt(t)}function Dt({value:i}){return!!i}let dc=[{code:1001,name:"xdata",parser:pl}];function pl(i,t){var o;if(!At(i,1001))throw Error("XData must starts with code 1001");let e={appName:i.value,value:[]};i=t.next();let s=[e.value];for(;!At(i,0,"EOF")&&i.code>=1e3;){let h=s[s.length-1];switch(i.code){case 1002:i.value==="{"?s.push([]):(s.pop(),(o=s[s.length-1])==null||o.push(h));break;case 1e3:case 1004:case 1040:case 1070:case 1071:h.push({type:Pr(i.code),value:i.value});break;case 1003:h.push({name:"layer",type:Pr(i.code),value:i.value});break;case 1005:h.push({name:"handle",type:Pr(i.code),value:i.value});break;case 1010:h.push({type:Pr(i.code),value:zt(t)});break;case 1011:h.push({name:"worldSpacePosition",type:Pr(i.code),value:zt(t)});break;case 1012:h.push({name:"worldSpaceDisplacement",type:Pr(i.code),value:zt(t)});break;case 1013:h.push({name:"worldSpaceDirection",type:Pr(i.code),value:zt(t)});break;case 1041:h.push({name:"distance",type:Pr(i.code),value:i.value});break;case 1042:h.push({name:"scale",type:Pr(i.code),value:i.value})}i=t.next()}return t.rewind(),e}function Pr(i){switch(i){case 1e3:case 1003:case 1005:return"string";case 1004:return"hex";case 1040:case 1041:case 1042:return"real";case 1070:return"integer";case 1071:return"long";case 1010:case 1011:case 1012:case 1013:return"point";default:return""}}function mn(i,t,e){for(;At(i,102);){var s;let o=i.value;if(i=t.next(),!o.startsWith("{")){t.debug&&console.warn(`Invalid application group, expected to start with "{" but received: ${o}`),function(c,f){for(;!At(c,102)&&!At(c,0,"EOF");)c=f.next()}(i,t),i=t.next();continue}let h=o.slice(1).trim();e.extensions??(e.extensions={}),(s=e.extensions)[h]??(s[h]=[]),function(c,f,x){for(;!At(c,102,"}")&&!At(c,0,"EOF");)x.push(c),c=f.next()}(i,t,e.extensions[h]),i=t.next()}t.rewind()}let mc=0;function fl(i){if(!i)throw TypeError("entity cannot be undefined or null");i.handle||(i.handle=mc++)}var pc=[0,16711680,16776960,65280,65535,255,16711935,16777215,8421504,12632256,16711680,16744319,13369344,13395558,10027008,10046540,8323072,8339263,4980736,4990502,16727808,16752511,13382400,13401958,10036736,10051404,8331008,8343359,4985600,4992806,16744192,16760703,13395456,13408614,10046464,10056268,8339200,8347455,4990464,4995366,16760576,16768895,13408512,13415014,10056192,10061132,8347392,8351551,4995328,4997670,16776960,16777087,13421568,13421670,10000384,10000460,8355584,8355647,5000192,5000230,12582656,14679935,10079232,11717734,7510016,8755276,6258432,7307071,3755008,4344870,8388352,12582783,6736896,10079334,5019648,7510092,4161280,6258495,2509824,3755046,4194048,10485631,3394560,8375398,2529280,6264908,2064128,5209919,1264640,3099686,65280,8388479,52224,6736998,38912,5019724,32512,4161343,19456,2509862,65343,8388511,52275,6737023,38950,5019743,32543,4161359,19475,2509871,65407,8388543,52326,6737049,38988,5019762,32575,4161375,19494,2509881,65471,8388575,52377,6737074,39026,5019781,32607,4161391,19513,2509890,65535,8388607,52428,6737100,39064,5019800,32639,4161407,19532,2509900,49151,8380415,39372,6730444,29336,5014936,24447,4157311,14668,2507340,32767,8372223,26316,6724044,19608,5010072,16255,4153215,9804,2505036,16383,8364031,13260,6717388,9880,5005208,8063,4149119,4940,2502476,255,8355839,204,6710988,152,5000344,127,4145023,76,2500172,4129023,10452991,3342540,8349388,2490520,6245528,2031743,5193599,1245260,3089996,8323327,12550143,6684876,10053324,4980888,7490712,4128895,6242175,2490444,3745356,12517631,14647295,10027212,11691724,7471256,8735896,6226047,7290751,3735628,4335180,16711935,16744447,13369548,13395660,9961624,9981080,8323199,8339327,4980812,4990540,16711871,16744415,13369497,13395634,9961586,9981061,8323167,8339311,4980793,4990530,16711807,16744383,13369446,13395609,9961548,9981042,8323135,8339295,4980774,4990521,16711743,16744351,13369395,13395583,9961510,9981023,8323103,8339279,4980755,4990511,3355443,5987163,8684676,11382189,14079702,16777215];function gl(i){return pc[i]}(_r={})[_r.CAST_AND_RECEIVE=0]="CAST_AND_RECEIVE",_r[_r.CAST=1]="CAST",_r[_r.RECEIVE=2]="RECEIVE",_r[_r.IGNORE=3]="IGNORE";let Ut=[...dc,{code:284,name:"shadowMode",parser:y},{code:390,name:"plotStyleHardId",parser:y},{code:380,name:"plotStyleType",parser:y},{code:440,name:"transparency",parser:y},{code:430,name:"colorName",parser:y},{code:420,name:"color",parser:y},{code:310,name:"proxyEntity",isMultiple:!0,parser:y},{code:92,name:"proxyByte",parser:y},{code:60,name:"isVisible",parser:Dt},{code:48,name:"lineTypeScale",parser:y},{code:370,name:"lineweight",parser:y},{code:62,name:"colorIndex",parser(i,t,e){let s=i.value;return s>0&&s<256&&(e.color=gl(Math.abs(s))),s}},{code:347,name:"materialObjectHardId",parser:y},{code:6,name:"lineType",parser:y},{code:8,name:"layer",parser:y},{code:410,name:"layoutTabName",parser:y},{code:67,name:"isInPaperSpace",parser:Dt},{code:100},{code:160},{code:330,name:"ownerBlockRecordSoftId",parser:y},{code:102,parser:mn},{code:102,parser:mn},{code:102,parser:mn},{code:5,name:"handle",parser:y}];function Ni(i){return[{code:3,name:i,parser:(t,e,s)=>(s._code3text=(s._code3text??"")+t.value,s._code3text+(s._code1text??"")),isMultiple:!0,isReducible:!0},{code:1,name:i,parser:(t,e,s)=>(s._code1text=t.value,(s._code3text??"")+s._code1text)}]}function _l(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let fc={extrusionDirection:{x:0,y:0,z:1}},gc=[{code:210,name:"extrusionDirection",parser:G},{code:51,name:"endAngle",parser:y},{code:50,name:"startAngle",parser:y},{code:100,name:"subclassMarker",parser:y},{code:40,name:"radius",parser:y},{code:10,name:"center",parser:G},{code:39,name:"thickness",parser:y},{code:100},...Ut];class vl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){_l(this,"parser",xt(gc,fc))}}_l(vl,"ForEntityName","ARC");(er={})[er.NONE=0]="NONE",er[er.INVISIBLE=1]="INVISIBLE",er[er.CONSTANT=2]="CONSTANT",er[er.VERIFICATION_REQUIRED=4]="VERIFICATION_REQUIRED",er[er.PRESET=8]="PRESET";(xs={})[xs.MULTILINE=2]="MULTILINE",xs[xs.CONSTANT_MULTILINE=4]="CONSTANT_MULTILINE";(sn={})[sn.NONE=0]="NONE",sn[sn.MIRRORED_X=2]="MIRRORED_X",sn[sn.MIRRORED_Y=4]="MIRRORED_Y";var _c=((Ce={})[Ce.LEFT=0]="LEFT",Ce[Ce.CENTER=1]="CENTER",Ce[Ce.RIGHT=2]="RIGHT",Ce[Ce.ALIGNED=3]="ALIGNED",Ce[Ce.MIDDLE=4]="MIDDLE",Ce[Ce.FIT=5]="FIT",Ce),vc=((vr={})[vr.BASELINE=0]="BASELINE",vr[vr.BOTTOM=1]="BOTTOM",vr[vr.MIDDLE=2]="MIDDLE",vr[vr.TOP=3]="TOP",vr);function yl(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let xl={thickness:0,rotation:0,xScale:1,obliqueAngle:0,styleName:"STANDARD",generationFlag:0,halign:_c.LEFT,valign:vc.BASELINE,extrusionDirection:{x:0,y:0,z:1}},bl=[{code:73,name:"valign",parser:y},{code:100},{code:210,name:"extrusionDirection",parser:G},{code:11,name:"endPoint",parser:G},{code:72,name:"valign",parser:y},{code:72,name:"halign",parser:y},{code:71,name:"generationFlag",parser:y},{code:7,name:"styleName",parser:y},{code:51,name:"obliqueAngle",parser:y},{code:41,name:"xScale",parser:y},{code:50,name:"rotation",parser:y},{code:1,name:"text",parser:y},{code:40,name:"textHeight",parser:y},{code:10,name:"startPoint",parser:G},{code:39,name:"thickness",parser:y},{code:100,name:"subclassMarker",parser:y},...Ut];class wl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){yl(this,"parser",xt(bl,xl))}}function Al(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}yl(wl,"ForEntityName","TEXT");let yc={...xl},xc=[{code:2},{code:40,name:"annotationScale",parser:y},{code:10,name:"alignmentPoint",parser:G},{code:340,name:"secondaryAttributesHardIds",isMultiple:!0,parser:y},{code:70,name:"numberOfSecondaryAttributes",parser:y},{code:70,name:"isReallyLocked",parser:Dt},{code:70,name:"mtextFlag",parser:y},{code:280,name:"isDuplicatedRecord",parser:Dt},{code:100},{code:280,name:"isLocked",parser:Dt},{code:74,name:"valign",parser:y},{code:73},{code:70,name:"attributeFlag",parser:y},{code:2,name:"tag",parser:y},{code:3,name:"prompt",parser:y},{code:280},{code:100,name:"subclassMarker",parser:y},...bl.slice(2)];class Sl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Al(this,"parser",xt(xc,yc))}}Al(Sl,"ForEntityName","ATTDEF");(an={})[an.LEFT_TO_RIGHT=1]="LEFT_TO_RIGHT",an[an.TOP_TO_BOTTOM=3]="TOP_TO_BOTTOM",an[an.BY_STYLE=5]="BY_STYLE";function bc(i,t){let e={};for(let s of i){let o=t(s);o!=null&&(e[o]??(e[o]=[]),e[o].push(s))}return e}function*ri(i,t=1/0,e=1){for(let s=i;s!==t;s+=e)yield s}function Vr(i){return{x:i.x??0,y:i.y??0,z:i.z??0}}function xa(i,t,e){if(At(t,102))return mn(t,e,i),!0;switch(t.code){case 0:i.type=t.value;break;case 5:i.handle=t.value;break;case 330:i.ownerBlockRecordSoftId=t.value;break;case 67:i.isInPaperSpace=!!t.value;break;case 8:i.layer=t.value;break;case 6:i.lineType=t.value;break;case 347:i.materialObjectHardId=t.value;break;case 62:i.colorIndex=t.value,i.color=gl(Math.abs(t.value));break;case 370:i.lineweight=t.value;break;case 48:i.lineTypeScale=t.value;break;case 60:i.isVisible=!!t.value;break;case 92:i.proxyByte=t.value;break;case 310:i.proxyEntity=t.value;break;case 100:break;case 420:i.color=t.value;break;case 430:i.transparency=t.value;break;case 390:i.plotStyleHardId=t.value;break;case 284:i.shadowMode=t.value;break;case 1001:i.xdata=pl(t,e);break;default:return!1}return!0}function Il(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let wc={textStyle:"STANDARD",extrusionDirection:{x:0,y:0,z:1},rotation:0},$s=[{code:46,name:"annotationHeight",parser:y},{code:101,parser(i,t){(function(e){e.rewind();let s=e.next();if(s.code!==101)throw Error("Bad call for skipEmbeddedObject()");do s=e.next();while(s.code!==0);e.rewind()})(t)}},{code:50,name:"columnHeight",parser:y},{code:49,name:"columnGutter",parser:y},{code:48,name:"columnWidth",parser:y},{code:79,name:"columnAutoHeight",parser:y},{code:78,name:"columnFlowReversed",parser:y},{code:76,name:"columnCount",parser:y},{code:75,name:"columnType",parser:y},{code:441,name:"backgroundFillTransparency",parser:y},{code:63,name:"backgroundFillColor",parser:y},{code:45,name:"fillBoxScale",parser:y},{code:[...ri(430,440)],name:"backgroundColor",parser:y},{code:[...ri(420,430)],name:"backgroundColor",parser:y},{code:90,name:"backgroundFill",parser:y},{code:44,name:"lineSpacing",parser:y},{code:73,name:"lineSpacingStyle",parser:y},{code:50,name:"rotation",parser:y},{code:43},{code:42},{code:11,name:"direction",parser:G},{code:210,name:"extrusionDirection",parser:G},{code:7,name:"styleName",parser:y},...Ni("text"),{code:72,name:"drawingDirection",parser:y},{code:71,name:"attachmentPoint",parser:y},{code:41,name:"width",parser:y},{code:40,name:"height",parser:y},{code:10,name:"insertionPoint",parser:G},{code:100,name:"subclassMarker",parser:y},...Ut];class Pl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Il(this,"parser",xt($s,wc))}}function El(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Il(Pl,"ForEntityName","MTEXT");let Ac={thickness:0,rotation:0,scale:1,obliqueAngle:0,textStyle:"STANDARD",textGenerationFlag:0,horizontalJustification:0,verticalJustification:0,extrusionDirection:{x:0,y:0,z:1}},Sc=[...$s.slice($s.findIndex(({name:i})=>i==="columnType"),$s.findIndex(({name:i})=>i==="subclassMarker")+1),{code:100},{code:0,parser(i){if(!At(i,0,"MTEXT"))return ya}},{code:2,name:"definitionTag",parser:y},{code:40,name:"annotationScale",parser:y},{code:10,name:"alignmentPoint",parser:G},{code:340,name:"secondaryAttributesHardId",parser:y},{code:70,name:"numberOfSecondaryAttributes",parser:y},{code:70,name:"isReallyLocked",parser:Dt},{code:70,name:"mtextFlag",parser:y},{code:280,name:"isDuplicatedEntriesKeep",parser:Dt},{code:100},{code:280,name:"lockPositionFlag",parser:Dt},{code:210,name:"extrusionDirection",parser:G},{code:11,name:"alignmentPoint",parser:G},{code:74,name:"verticalJustification",parser:y},{code:72,name:"horizontalJustification",parser:y},{code:71,name:"textGenerationFlag",parser:y},{code:7,name:"textStyle",parser:y},{code:51,name:"obliqueAngle",parser:y},{code:41,name:"scale",parser:y},{code:50,name:"rotation",parser:y},{code:73},{code:70,name:"attributeFlag",parser:y},{code:2,name:"tag",parser:y},{code:280},{code:100,name:"subclassMarker",parser:y},{code:1,name:"text",parser:y},{code:40,name:"textHeight",parser:y},{code:10,name:"startPoint",parser:G},{code:39,name:"thickness",parser:y},{code:100},...Ut];class kl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){El(this,"parser",xt(Sc,Ac))}}function Tl(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}El(kl,"ForEntityName","ATTRIB");let Ic=[...Ni("data"),{code:70,name:"version",parser:y},{code:100,name:"subclassMarker",parser:y},...Ut];class Ml{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Tl(this,"parser",xt(Ic))}}function Nl(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Tl(Ml,"ForEntityName","BODY");let Pc={thickness:0,extrusionDirection:{x:0,y:0,z:1}},Ec=[{code:210,name:"extrusionDirection",parser:G},{code:40,name:"radius",parser:y},{code:10,name:"center",parser:G},{code:39,name:"thickness",parser:y},{code:100,name:"subclassMarker",parser:y},...Ut];class Cl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Nl(this,"parser",xt(Ec,Pc))}}Nl(Cl,"ForEntityName","CIRCLE");class Zs{parseEntity(t,e){let s={};for(;!At(e,0,"EOF");){if(e.code===0){t.rewind();break}(function(o,h,c){switch(h.code){case 100:o.subclassMarker=h.value;break;case 280:o.version=h.value;break;case 2:o.name=h.value;break;case 10:o.definitionPoint=zt(c);break;case 11:o.textPoint=zt(c);break;case 12:o.insertionPoint=zt(c);break;case 13:o.subDefinitionPoint1=zt(c);break;case 14:o.subDefinitionPoint2=zt(c);break;case 15:o.centerPoint=zt(c);break;case 16:o.arcPoint=zt(c);break;case 70:o.dimensionType=h.value;break;case 71:o.attachmentPoint=h.value;break;case 72:o.textLineSpacingStyle=h.value;break;case 40:o.leaderLength=h.value;break;case 41:o.textLineSpacingFactor=h.value;break;case 42:o.measurement=h.value;break;case 1:o.text=h.value;break;case 50:o.rotationAngle=h.value;break;case 52:o.obliqueAngle=h.value;break;case 53:o.textRotation=h.value;break;case 51:o.ocsRotation=h.value;break;case 210:o.extrusionDirection=zt(c);break;case 3:o.styleName=h.value;break;default:xa(o,h,c)}})(s,e,t),e=t.next()}return s}}function Ll(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Zi="DIMENSION",($i="ForEntityName")in Zs?Object.defineProperty(Zs,$i,{value:Zi,enumerable:!0,configurable:!0,writable:!0}):Zs[$i]=Zi;let kc={extrusionDirection:{x:0,y:0,z:1}},Tc=[{code:42,name:"endAngle",parser:y},{code:41,name:"startAngle",parser:y},{code:40,name:"axisRatio",parser:y},{code:210,name:"extrusionDirection",parser:G},{code:11,name:"majorAxisEndPoint",parser:G},{code:10,name:"center",parser:G},{code:100,name:"subclassMarker",parser:y},...Ut];class Ol{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Ll(this,"parser",xt(Tc,kc))}}Ll(Ol,"ForEntityName","ELLIPSE");(yr={})[yr.First=1]="First",yr[yr.Second=2]="Second",yr[yr.Third=4]="Third",yr[yr.Fourth=8]="Fourth";function zl(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Mc=[{code:13,name:"vertices.3",parser:G},{code:12,name:"vertices.2",parser:G},{code:11,name:"vertices.1",parser:G},{code:10,name:"vertices.0",parser:G},{code:100,name:"subclassMarker",parser:y},...Ut];class Rl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){zl(this,"parser",xt(Mc))}}zl(Rl,"ForEntityName","3DFACE");let Bl=[{code:330,name:"sourceBoundaryObjects",parser:y,isMultiple:!0},{code:97,name:"numberOfSourceBoundaryObjects",parser:y}],Nc=[{code:11,name:"end",parser:G},{code:10,name:"start",parser:G}],Cc=[{code:73,name:"isCCW",parser:Dt},{code:51,name:"endAngle",parser:y},{code:50,name:"startAngle",parser:y},{code:40,name:"radius",parser:y},{code:10,name:"center",parser:G}],Lc=[{code:73,name:"isCCW",parser:Dt},{code:51,name:"endAngle",parser:y},{code:50,name:"startAngle",parser:y},{code:40,name:"lengthOfMinorAxis",parser:y},{code:11,name:"end",parser:G},{code:10,name:"center",parser:G}],Oc=[{code:13,name:"endTangent",parser:G},{code:12,name:"startTangent",parser:G},{code:11,name:"fitDatum",isMultiple:!0,parser:G},{code:97,name:"numberOfFitData",parser:y},{code:10,name:"controlPoints",isMultiple:!0,parser(i,t){let e={...zt(t),weight:1};return(i=t.next()).code===42?e.weight=i.value:t.rewind(),e}},{code:40,name:"knots",isMultiple:!0,parser:y},{code:96,name:"numberOfControlPoints",parser:y},{code:95,name:"numberOfKnots",parser:y},{code:74,name:"isPeriodic",parser:Dt},{code:73,name:"splineFlag",parser:y},{code:94,name:"degree",parser:y}],zc={[Gs.Line]:Nc,[Gs.Circular]:Cc,[Gs.Elliptic]:Lc,[Gs.Spline]:Oc},Rc=[...Bl,{code:72,name:"edges",parser(i,t){let e={type:i.value},s=xt(zc[e.type]);if(!s)throw Error(`Invalid edge type ${e.type}`);return s(i=t.next(),t,e),e},isMultiple:!0},{code:93,name:"numberOfEdges",parser:y}],Bc=[...Bl,{code:10,name:"vertices",parser(i,t){let e={...zt(t),bulge:0};return(i=t.next()).code===42?e.bulge=i.value:t.rewind(),e},isMultiple:!0},{code:93,name:"numberOfVertices",parser:y},{code:73,name:"isClosed",parser:Dt},{code:72,name:"hasBulge",parser:Dt}],Dc=[{code:49,name:"dashLengths",parser:y,isMultiple:!0},{code:79,name:"numberOfDashLengths",parser:y},{code:45,name:"offset",parser:Oo},{code:43,name:"base",parser:Oo},{code:53,name:"angle",parser:y}];function Oo(i,t){let e=i.code+1,s={x:i.value,y:1};return(i=t.next()).code===e?s.y=i.value:t.rewind(),s}function Dl(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Fc={extrusionDirection:{x:0,y:0,z:1},gradientRotation:0,colorTint:0},Uc=[{code:470},{code:463},{code:462,name:"colorTint",parser:y},{code:461,name:"gradientDefinition",parser:y},{code:460,name:"gradientRotation",parser:y},{code:453,name:"numberOfColors",parser:y},{code:452,name:"gradientColorFlag",parser:y},{code:451},{code:450,name:"gradientFlag",parser:y},{code:10,name:"seedPoints",parser:G,isMultiple:!0},{code:99},{code:11,name:"offsetVector",parser:G},{code:98,name:"numberOfSeedPoints",parser:y},{code:47,name:"pixelSize",parser:y},{code:53,name:"definitionLines",parser:function(i,t){let e={};return xt(Dc)(i,t,e),e},isMultiple:!0},{code:78,name:"numberOfDefinitionLines",parser:y},{code:77,name:"isDouble",parser:Dt},{code:73,name:"isAnnotated",parser:Dt},{code:41,name:"patternScale",parser:y},{code:52,name:"patternAngle",parser:y},{code:76,name:"patternType",parser:y},{code:75,name:"hatchStyle",parser:y},{code:92,name:"boundaryPaths",parser:function(i,t){let e={boundaryPathTypeFlag:i.value},s=e.boundaryPathTypeFlag&uc.Polyline;return i=t.next(),s?xt(Bc)(i,t,e):xt(Rc)(i,t,e),e},isMultiple:!0},{code:91,name:"numberOfBoundaryPaths",parser:y},{code:71,name:"associativity",parser:y},{code:63,name:"patternFillColor",parser:y},{code:70,name:"solidFill",parser:y},{code:2,name:"patternName",parser:y},{code:210,name:"extrusionDirection",parser:G},{code:10,name:"elevationPoint",parser:G},{code:100,name:"subclassMarker",parser:y,pushContext:!0},...Ut];class Fl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Dl(this,"parser",xt(Uc,Fc))}}Dl(Fl,"ForEntityName","HATCH");(xr={})[xr.ShowImage=1]="ShowImage",xr[xr.ShowImageWhenNotAlignedWithScreen=2]="ShowImageWhenNotAlignedWithScreen",xr[xr.UseClippingBoundary=4]="UseClippingBoundary",xr[xr.TransparencyIsOn=8]="TransparencyIsOn";(bs={})[bs.Rectangular=1]="Rectangular",bs[bs.Polygonal=2]="Polygonal";(ws={})[ws.Outside=0]="Outside",ws[ws.Inside=1]="Inside";function Ul(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Vc={brightness:50,contrast:50,fade:0,clippingBoundaryPath:[]},jc=[{code:290,name:"clipMode",parser:y},{code:14,name:"clippingBoundaryPath",isMultiple:!0,parser:G},{code:91,name:"countBoundaryPoints",parser:y},{code:71,name:"clippingBoundaryType",parser:y},{code:360,name:"imageDefReactorHandle",parser:y},{code:283,name:"fade",parser:y},{code:282,name:"contrast",parser:y},{code:281,name:"brightness",parser:y},{code:280,name:"isClipped",parser:Dt},{code:70,name:"flags",parser:y},{code:340,name:"imageDefHandle",parser:y},{code:13,name:"imageSize",parser:G},{code:12,name:"vPixel",parser:G},{code:11,name:"uPixel",parser:G},{code:10,name:"position",parser:G},{code:90,name:"version",parser:y},{code:100,name:"subclassMarker",parser:y},...Ut];class Vl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Ul(this,"parser",xt(jc,Vc))}}function jl(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Ul(Vl,"ForEntityName","IMAGE");let Gc={xScale:1,yScale:1,zScale:1,rotation:0,columnCount:0,rowCount:0,columnSpacing:0,rowSpacing:0,extrusionDirection:{x:0,y:0,z:1}},Wc=[{code:210,name:"extrusionDirection",parser:G},{code:45,name:"rowSpacing",parser:y},{code:44,name:"columnSpacing",parser:y},{code:71,name:"rowCount",parser:y},{code:70,name:"columnCount",parser:y},{code:50,name:"rotation",parser:y},{code:43,name:"zScale",parser:y},{code:42,name:"yScale",parser:y},{code:41,name:"xScale",parser:y},{code:10,name:"insertionPoint",parser:G},{code:2,name:"name",parser:y},{code:66,name:"isVariableAttributes",parser:Dt},{code:100,name:"subclassMarker",parser:y},...Ut];class Gl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){jl(this,"parser",xt(Wc,Gc))}}function Wl(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}jl(Gl,"ForEntityName","INSERT");let Hc={isArrowheadEnabled:!0},qc=[{code:213,name:"offsetFromAnnotation",parser:G},{code:212,name:"offsetFromBlock",parser:G},{code:211,name:"horizontalDirection",parser:G},{code:210,name:"normal",parser:G},{code:340,name:"associatedAnnotation",parser:y},{code:77,name:"byBlockColor",parser:y},{code:10,name:"vertices",parser:G,isMultiple:!0},{code:76,name:"numberOfVertices",parser:y},{code:41,name:"textWidth",parser:y},{code:40,name:"textHeight",parser:y},{code:75,name:"isHooklineExists",parser:Dt},{code:74,name:"isHooklineSameDirection",parser:Dt},{code:73,name:"leaderCreationFlag",parser:y},{code:72,name:"isSpline",parser:Dt},{code:71,name:"isArrowheadEnabled",parser:Dt},{code:3,name:"styleName",parser:y},{code:100,name:"subclassMarker",parser:y},...Ut],Hl=class{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Wl(this,"parser",xt(qc,Hc))}};Wl(Hl,"ForEntityName","LEADER");(br={})[br.TextAnnotation=0]="TextAnnotation",br[br.ToleranceAnnotation=1]="ToleranceAnnotation",br[br.BlockReferenceAnnotation=2]="BlockReferenceAnnotation",br[br.NoAnnotation=3]="NoAnnotation";function ql(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Yc={thickness:0,extrusionDirection:{x:0,y:0,z:1}},Xc=[{code:210,name:"extrusionDirection",parser:G},{code:11,name:"endPoint",parser:G},{code:10,name:"startPoint",parser:G},{code:39,name:"thickness",parser:y},{code:100,name:"subclassMarker",parser:y},...Ut];class Yl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){ql(this,"parser",xt(Xc,Yc))}}ql(Yl,"ForEntityName","LINE");(As={})[As.IS_CLOSED=1]="IS_CLOSED",As[As.PLINE_GEN=128]="PLINE_GEN";let Kc={flag:0,elevation:0,thickness:0,extrusionDirection:{x:0,y:0,z:1},vertices:[]},$c={bulge:0},Zc=[{code:42,name:"bulge",parser:y},{code:41,name:"endWidth",parser:y},{code:40,name:"startWidth",parser:y},{code:91,name:"id",parser:y},{code:20,name:"y",parser:y},{code:10,name:"x",parser:y}],Qc=[{code:210,name:"extrusionDirection",parser:G},{code:10,name:"vertices",isMultiple:!0,parser(i,t){let e={};return xt(Zc,$c)(i,t,e),e}},{code:39,name:"thickness",parser:y},{code:38,name:"elevation",parser:y},{code:43,name:"constantWidth",parser:y},{code:70,name:"flag",parser:y},{code:90,name:"numberOfVertices",parser:y},{code:100,name:"subclassMarker",parser:y},...Ut];class Qs{parseEntity(t,e){let s={};return xt(Qc,Kc)(e,t,s),s}}function Xl(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Ji="LWPOLYLINE",(Qi="ForEntityName")in Qs?Object.defineProperty(Qs,Qi,{value:Ji,enumerable:!0,configurable:!0,writable:!0}):Qs[Qi]=Ji;let Jc=[{code:90,name:"overridenSubEntityCount",parser:y},{code:140,name:"edgeCreaseWeights",parser:y,isMultiple:!0},{code:95,name:"edgeCreaseCount",parser:y},{code:94,parser(i,t,e){e.edgeCount=i.value,e.edgeIndices=[];for(let s=0;s<e.edgeCount;++s){let o=[];i=t.next(),o[0]=i.value,i=t.next(),o[1]=i.value,e.edgeIndices.push(o)}}},{code:93,parser(i,t,e){e.totalFaceIndices=i.value,e.faceIndices=[];let s=[];for(let h=0;h<e.totalFaceIndices&&!At(i,0);++h)i=t.next(),s.push(i.value);let o=0;for(;o<s.length;){let h=s[o++],c=[];for(let f=0;f<h;++f)c.push(s[o++]);e.faceIndices.push(c)}}},{code:10,name:"vertices",parser:G,isMultiple:!0},{code:92,name:"verticesCount",parser:y},{code:91,name:"subdivisionLevel",parser:y},{code:40,name:"blendCrease",parser:y},{code:72,name:"isBlendCreased",parser:Dt},{code:71,name:"version",parser:y},{code:100,name:"subclassMarker",parser:function({value:i}){return i.trim()},pushContext:!0},...Ut];class Kl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Xl(this,"parser",xt(Jc))}}function $l(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Xl(Kl,"ForEntityName","MESH");let td={thickness:0,extrusionDirection:{x:0,y:0,z:1},angle:0},ed=[{code:50,name:"angle",parser:y},{code:210,name:"extrusionDirection",parser:G},{code:39,name:"thickness",parser:y},{code:10,name:"position",parser:G},{code:100,name:"subclassMarker",parser:y},...Ut];class Zl{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){$l(this,"parser",xt(ed,td))}}$l(Zl,"ForEntityName","POINT");(ue={})[ue.CLOSED_POLYLINE=1]="CLOSED_POLYLINE",ue[ue.CURVE_FIT=2]="CURVE_FIT",ue[ue.SPLINE_FIT=4]="SPLINE_FIT",ue[ue.POLYLINE_3D=8]="POLYLINE_3D",ue[ue.POLYGON_3D=16]="POLYGON_3D",ue[ue.CLOSED_POLYGON=32]="CLOSED_POLYGON",ue[ue.POLYFACE=64]="POLYFACE",ue[ue.CONTINUOUS=128]="CONTINUOUS";(wr={})[wr.NONE=0]="NONE",wr[wr.QUADRATIC=5]="QUADRATIC",wr[wr.CUBIC=6]="CUBIC",wr[wr.BEZIER=8]="BEZIER";(ce={})[ce.CREATED_BY_CURVE_FIT=1]="CREATED_BY_CURVE_FIT",ce[ce.TANGENT_DEFINED=2]="TANGENT_DEFINED",ce[ce.NOT_USED=4]="NOT_USED",ce[ce.CREATED_BY_SPLINE_FIT=8]="CREATED_BY_SPLINE_FIT",ce[ce.SPLINE_CONTROL_POINT=16]="SPLINE_CONTROL_POINT",ce[ce.FOR_POLYLINE=32]="FOR_POLYLINE",ce[ce.FOR_POLYGON=64]="FOR_POLYGON",ce[ce.POLYFACE=128]="POLYFACE";function Ql(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let rd={startWidth:0,endWidth:0,bulge:0},nd=[{code:91,name:"id",parser:y},{code:[...ri(71,75)],name:"faces",isMultiple:!0,parser:y},{code:50,name:"tangentDirection",parser:y},{code:70,name:"flag",parser:y},{code:42,name:"bulge",parser:y},{code:41,name:"endWidth",parser:y},{code:40,name:"startWidth",parser:y},{code:30,name:"z",parser:y},{code:20,name:"y",parser:y},{code:10,name:"x",parser:y},{code:100,name:"subclassMarker",parser:y},{code:100},...Ut];class ba{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Ql(this,"parser",xt(nd,rd))}}function Jl(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Ql(ba,"ForEntityName","VERTEX");let sd={thickness:0,flag:0,startWidth:0,endWidth:0,meshMVertexCount:0,meshNVertexCount:0,surfaceMDensity:0,surfaceNDensity:0,smoothType:0,extrusionDirection:{x:0,y:0,z:1},vertices:[]},id=[{code:0,name:"vertices",isMultiple:!0,parser:(i,t)=>At(i,0,"VERTEX")?(i=t.next(),new ba().parseEntity(t,i)):ya},{code:210,name:"extrusionDirection",parser:G},{code:75,name:"smoothType",parser:y},{code:74,name:"surfaceNDensity",parser:y},{code:73,name:"surfaceMDensity",parser:y},{code:72,name:"meshNVertexCount",parser:y},{code:71,name:"meshMVertexCount",parser:y},{code:41,name:"endWidth",parser:y},{code:40,name:"startWidth",parser:y},{code:70,name:"flag",parser:y},{code:39,name:"thickness",parser:y},{code:30,name:"elevation",parser:y},{code:20},{code:10},{code:66},{code:100,name:"subclassMarker",parser:y},...Ut];class th{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Jl(this,"parser",xt(id,sd))}}function eh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Jl(th,"ForEntityName","POLYLINE");let ad=[{code:11,name:"direction",parser:G},{code:10,name:"position",parser:G},{code:100,name:"subclassMarker",parser:y},...Ut];class rh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){eh(this,"parser",xt(ad))}}function nh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}eh(rh,"ForEntityName","RAY");let od=[...Ni("data"),{code:70,name:"version",parser:y},{code:100,name:"subclassMarker",parser:y},...Ut];class sh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){nh(this,"parser",xt(od))}}function ih(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}nh(sh,"ForEntityName","REGION");let ld={vertices:[],backLineVertices:[]},hd=[{code:360,name:"geometrySettingHardId",parser:y},{code:12,name:"backLineVertices",isMultiple:!0,parser:G},{code:93,name:"numberOfBackLineVertices",parser:y},{code:11,name:"vertices",isMultiple:!0,parser:G},{code:92,name:"verticesCount",parser:y},{code:[63,411],name:"indicatorColor",parser:y},{code:70,name:"indicatorTransparency",parser:y},{code:41,name:"bottomHeight",parser:y},{code:40,name:"topHeight",parser:y},{code:10,name:"verticalDirection",parser:G},{code:1,name:"name",parser:y},{code:91,name:"flag",parser:y},{code:90,name:"state",parser:y},{code:100,name:"subclassMarker",parser:y},...Ut];class ah{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){ih(this,"parser",xt(hd,ld))}}function oh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}ih(ah,"ForEntityName","SECTION");let ud={points:[],thickness:0,extrusionDirection:{x:0,y:0,z:1}},cd=[{code:210,name:"extrusionDirection",parser:G},{code:39,name:"thickness",parser:y},{code:[...ri(10,14)],name:"points",isMultiple:!0,parser:G},{code:100,name:"subclassMarker",parser:y},...Ut];class lh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){oh(this,"parser",xt(cd,ud))}}function hh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}oh(lh,"ForEntityName","SOLID");let dd=[{code:350,name:"historyObjectSoftId",parser:y},{code:100,name:"subclassMarker",parser:y},...Ni("data"),{code:70,name:"version",parser:y},{code:100},...Ut];class uh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){hh(this,"parser",xt(dd))}}hh(uh,"ForEntityName","3DSOLID");(Le={})[Le.NONE=0]="NONE",Le[Le.CLOSED=1]="CLOSED",Le[Le.PERIODIC=2]="PERIODIC",Le[Le.RATIONAL=4]="RATIONAL",Le[Le.PLANAR=8]="PLANAR",Le[Le.LINEAR=16]="LINEAR";function ch(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let md={knotTolerance:1e-6,controlTolerance:1e-6,fitTolerance:1e-9,knotValues:[],controlPoints:[],fitPoints:[]},pd=[{code:11,name:"fitPoints",isMultiple:!0,parser:G},{code:10,name:"controlPoints",isMultiple:!0,parser:G},{code:41,name:"weights",isMultiple:!0,parser:y},{code:40,name:"knots",isMultiple:!0,parser:y},{code:13,name:"endTangent",parser:G},{code:12,name:"startTangent",parser:G},{code:44,name:"fitTolerance",parser:y},{code:43,name:"controlTolerance",parser:y},{code:42,name:"knotTolerance",parser:y},{code:74,name:"numberOfFitPoints",parser:y},{code:73,name:"numberOfControlPoints",parser:y},{code:72,name:"numberOfKnots",parser:y},{code:71,name:"degree",parser:y},{code:70,name:"flag",parser:y},{code:210,name:"normal",parser:G},{code:100,name:"subclassMarker",parser:y},...Ut];class dh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){ch(this,"parser",xt(pd,md))}}ch(dh,"ForEntityName","SPLINE");class Js{parseEntity(t,e){let s={};for(;!t.isEOF();){if(e.code===0){t.rewind();break}switch(e.code){case 100:s.subclassMarker=e.value,e=t.next();break;case 2:s.name=e.value,e=t.next();break;case 5:s.handle=e.value,e=t.next();break;case 10:s.startPoint=Vr(zt(t)),e=t.lastReadGroup;break;case 11:s.directionVector=Vr(zt(t)),e=t.lastReadGroup;break;case 90:s.tableValue=e.value,e=t.next();break;case 91:s.rowCount=e.value,e=t.next();break;case 92:s.columnCount=e.value,e=t.next();break;case 93:s.overrideFlag=e.value,e=t.next();break;case 94:s.borderColorOverrideFlag=e.value,e=t.next();break;case 95:s.borderLineWeightOverrideFlag=e.value,e=t.next();break;case 96:s.borderVisibilityOverrideFlag=e.value,e=t.next();break;case 141:s.rowHeightArr??(s.rowHeightArr=[]),s.rowHeightArr.push(e.value),e=t.next();break;case 142:s.columnWidthArr??(s.columnWidthArr=[]),s.columnWidthArr.push(e.value),e=t.next();break;case 280:s.version=e.value,e=t.next();break;case 310:s.bmpPreview??(s.bmpPreview=""),s.bmpPreview+=e.value,e=t.next();break;case 330:s.ownerDictionaryId=e.value,e=t.next();break;case 342:s.tableStyleId=e.value,e=t.next();break;case 343:s.blockRecordHandle=e.value,e=t.next();break;case 170:s.attachmentPoint=e.value,e=t.next();break;case 171:s.cells??(s.cells=[]),s.cells.push(function(o,h){let c=!1,f=!1,x={};for(;!o.isEOF()&&h.code!==0&&!f;)switch(h.code){case 171:if(c){f=!0;continue}x.cellType=h.value,c=!0,h=o.next();break;case 172:x.flagValue=h.value,h=o.next();break;case 173:x.mergedValue=h.value,h=o.next();break;case 174:x.autoFit=h.value,h=o.next();break;case 175:x.borderWidth=h.value,h=o.next();break;case 176:x.borderHeight=h.value,h=o.next();break;case 91:x.overrideFlag=h.value,h=o.next();break;case 178:x.virtualEdgeFlag=h.value,h=o.next();break;case 145:x.rotation=h.value,h=o.next();break;case 345:x.fieldObjetId=h.value,h=o.next();break;case 340:x.blockTableRecordId=h.value,h=o.next();break;case 146:x.blockScale=h.value,h=o.next();break;case 177:x.blockAttrNum=h.value,h=o.next();break;case 7:x.textStyle=h.value,h=o.next();break;case 140:x.textHeight=h.value,h=o.next();break;case 170:x.attachmentPoint=h.value,h=o.next();break;case 92:x.extendedCellFlags=h.value,h=o.next();break;case 285:x.rightBorderVisibility=!!(h.value??!0),h=o.next();break;case 286:x.bottomBorderVisibility=!!(h.value??!0),h=o.next();break;case 288:x.leftBorderVisibility=!!(h.value??!0),h=o.next();break;case 289:x.topBorderVisibility=!!(h.value??!0),h=o.next();break;case 301:(function(g,A,b){for(;b.code!==304;)switch(b.code){case 301:case 93:case 90:case 94:b=A.next();break;case 1:g.text=b.value,b=A.next();break;case 300:g.attrText=b.value,b=A.next();break;case 302:g.text=b.value?b.value:g.text,b=A.next();break;default:console.log(`Ignore code: ${b.code}, value: ${b.value}`),b=A.next()}})(x,o,h),h=o.next();break;default:return x}return c=!1,f=!1,x}(t,e)),e=t.lastReadGroup;break;default:xa(s,e,t),e=t.next()}}return s}}function mh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}ea="ACAD_TABLE",(ta="ForEntityName")in Js?Object.defineProperty(Js,ta,{value:ea,enumerable:!0,configurable:!0,writable:!0}):Js[ta]=ea;let fd=[{code:11,name:"xAxisDirection",parser:G},{code:210,name:"extrusionDirection",parser:G},{code:1,name:"text",parser:y},{code:10,name:"position",parser:G},{code:3,name:"styleName",parser:y},{code:100,name:"subclassMarker",parser:y},...Ut];class ph{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){mh(this,"parser",xt(fd))}}mh(ph,"ForEntityName","TOLERANCE");let ti=class{parseEntity(t,e){let s={};for(;e!=="EOF";){if(e.code===0){t.rewind();break}!function(o,h,c){if(c==="EOF")return!1;switch(c.code){case 0:return!1;case 8:o.layer=c.value;break;case 100:o.subclassMarker=c.value;break;case 10:o.viewportCenter=Vr(zt(h));break;case 40:o.width=c.value;break;case 41:o.height=c.value;break;case 68:o.status=c.value;break;case 69:o.viewportId=c.value;break;case 12:o.displayCenter=zt(h);break;case 13:o.snapBase=zt(h);break;case 14:o.snapSpacing=zt(h);break;case 15:o.gridSpacing=zt(h);break;case 16:o.viewDirection=Vr(zt(h));break;case 17:o.targetPoint=Vr(zt(h));break;case 42:o.perspectiveLensLength=c.value;break;case 43:o.frontClipZ=c.value;break;case 44:o.backClipZ=c.value;break;case 45:o.viewHeight=c.value;break;case 50:o.snapAngle=c.value;break;case 51:o.viewTwistAngle=c.value;break;case 72:o.circleZoomPercent=c.value;break;case 331:o.frozenLayerIds??(o.frozenLayerIds=[]),o.frozenLayerIds.push(c.value);break;case 90:o.statusBitFlags=c.value;break;case 340:o.clippingBoundaryId=c.value;break;case 1:o.sheetName=c.value;break;case 281:o.renderMode=c.value;break;case 71:o.ucsPerViewport=c.value;break;case 110:o.ucsOrigin=Vr(zt(h));break;case 111:o.ucsXAxis=Vr(zt(h));break;case 112:o.ucsYAxis=Vr(zt(h));break;case 345:o.ucsId=c.value;break;case 346:o.ucsBaseId=c.value;break;case 79:o.orthographicType=c.value;break;case 146:o.elevation=c.value;break;case 170:o.shadePlotMode=c.value;break;case 61:o.majorGridFrequency=c.value;break;case 332:o.backgroundId=c.value;break;case 333:o.shadePlotId=c.value;break;case 348:o.visualStyleId=c.value;break;case 292:o.isDefaultLighting=!!c.value;break;case 282:o.defaultLightingType=c.value;break;case 141:o.brightness=c.value;break;case 142:o.contrast=c.value;break;case 63:case 421:case 431:o.ambientLightColor=c.value;break;case 361:o.sunId=c.value;break;case 335:case 343:case 344:case 91:o.softPointer=c.value}return!0}(s,t,e)&&xa(s,e,t),e=t.next()}return s}};na="VIEWPORT",(ra="ForEntityName")in ti?Object.defineProperty(ti,ra,{value:na,enumerable:!0,configurable:!0,writable:!0}):ti[ra]=na;(Ar={})[Ar.ShowImage=1]="ShowImage",Ar[Ar.ShowImageWhenNotAligned=2]="ShowImageWhenNotAligned",Ar[Ar.UseClippingBoundary=4]="UseClippingBoundary",Ar[Ar.Transparency=8]="Transparency";function fh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let gd={brightness:50,constrast:50,fade:0},_d=[{code:14,name:"boundary",isMultiple:!0,parser:G},{code:91,name:"numberOfVertices",parser:y},{code:71,name:"boundaryType",parser:y},{code:360,name:"imageDefReactorHardId",parser:y},{code:283,name:"fade",parser:y},{code:282,name:"contrast",parser:y},{code:281,name:"brightness",parser:y},{code:280,name:"isClipping",parser:Dt},{code:70,name:"displayFlag",parser:y},{code:340,name:"imageDefHardId",parser:y},{code:13,name:"imageSize",parser:G},{code:12,name:"vDirection",parser:G},{code:11,name:"uDirection",parser:G},{code:10,name:"position",parser:G},{code:90,name:"classVersion",parser:y},{code:100,name:"subclassMarker",parser:y},...Ut];class gh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){fh(this,"parser",xt(_d,gd))}}function _h(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}fh(gh,"ForEntityName","WIPEOUT");let vd=[{code:11,name:"direction",parser:G},{code:10,name:"position",parser:G},{code:100,name:"subclassMarker",parser:y},...Ut],vh=class{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){_h(this,"parser",xt(vd))}};function yh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}_h(vh,"ForEntityName","XLINE");let yd={},xd=[{code:170,name:"multileaderType",parser:y},{code:291,name:"doglegEnabled",parser:Dt},{code:40,name:"doglegLength",parser:y},{code:172,name:"contentType",parser:y},{code:3,name:"textContent",parser:y},{code:12,name:"textAnchor",parser:G},{code:344,name:"blockHandle",parser:y},{code:15,name:"blockPosition",parser:G},{code:302,name:"leaderSections",parser:function(i,t,e){let s,o={leaderLines:[]};for(;t.hasNext()&&(s=t.next()).code!==303;)switch(s.code){case 10:o.landingPoint=(s.value,zt(t));break;case 11:o.doglegVector=(s.value,zt(t));break;case 40:o.doglegLength=s.value;break;case 304:o.leaderLines.push(function(h,c,f){let x,g={vertices:[]};for(;c.hasNext()&&(x=c.next()).code!==305;)x.code===10&&g.vertices.push((x.value,zt(c)));return g}(0,t))}return o},isMultiple:!0},...Ut];class xh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){yh(this,"parser",xt(xd,yd))}}yh(xh,"ForEntityName","MULTILEADER");let bd=Object.fromEntries([vl,Sl,kl,Ml,Cl,Zs,Ol,Rl,Vl,Gl,Hl,Yl,Qs,Kl,Pl,xh,Zl,th,rh,sh,ah,lh,uh,dh,Js,wl,ph,Fl,ba,ti,gh,vh].map(i=>[i.ForEntityName,new i]));function bh(i,t){let e=[];for(;!At(i,0,"EOF");){if(i.code===0){if(i.value==="ENDBLK"||i.value==="ENDSEC"){t.rewind();break}let s=bd[i.value];if(s){let o=i.value;i=t.next();let h=s.parseEntity(t,i);h.type=o,fl(h),e.push(h)}else t.debug&&console.warn(`Unsupported ENTITY type: ${i.value}`)}i=t.next()}return e}function wd(i,t){let e={};for(;!At(i,0,"EOF")&&!At(i,0,"ENDSEC");){if(At(i,0,"BLOCK")){let s=Ad(i=t.next(),t);fl(s),s.name&&(e[s.name]=s)}i=t.next()}return e}function Ad(i,t){let e={};for(;!At(i,0,"EOF");){if(At(i,0,"ENDBLK")){for(i=t.next();!At(i,0,"EOF");){if(At(i,100,"AcDbBlockEnd"))return e;i=t.next()}break}switch(i.code){case 1:e.xrefPath=i.value;break;case 2:e.name=i.value;break;case 3:e.name2=i.value;break;case 5:e.handle=i.value;break;case 8:e.layer=i.value;break;case 10:e.position=zt(t);break;case 67:e.paperSpace=!!i.value&&i.value==1;break;case 70:i.value!==0&&(e.type=i.value);break;case 100:break;case 330:e.ownerHandle=i.value;break;case 0:e.entities=bh(i,t)}i=t.next()}return e}function Sd(i,t){let e=null,s={};for(;!At(i,0,"EOF")&&!At(i,0,"ENDSEC");)i.code===9?e=i.value:i.code===10?s[e]=zt(t):s[e]=i.value,i=t.next();return s}(Oe={})[Oe.NOT_APPLICABLE=0]="NOT_APPLICABLE",Oe[Oe.KEEP_EXISTING=1]="KEEP_EXISTING",Oe[Oe.USE_CLONE=2]="USE_CLONE",Oe[Oe.XREF_VALUE_NAME=3]="XREF_VALUE_NAME",Oe[Oe.VALUE_NAME=4]="VALUE_NAME",Oe[Oe.UNMANGLE_NAME=5]="UNMANGLE_NAME";let wa=[{code:330,name:"ownerObjectId",parser:y},{code:102,parser:mn},{code:102,parser:mn},{code:102,parser:mn},{code:5,name:"handle",parser:y}],Id=[{code:3,name:"entries",parser:(i,t)=>{let e={name:i.value};return(i=t.next()).code===350?e.objectSoftId=i.value:i.code===360?e.objectHardId=i.value:t.rewind(),e},isMultiple:!0},{code:281,name:"recordCloneFlag",parser:y},{code:280,name:"isHardOwned",parser:Dt},{code:100,name:"subclassMarker",parser:y},...wa],Pd=[{code:330,name:"imageDefReactorIdSoft",isMultiple:!0,parser:y},{code:90,name:"version",parser:y},{code:1,name:"fileName",parser:y},{code:10,name:"size",parser:G},{code:11,name:"sizeOfOnePixel",parser:G},{code:280,name:"isLoaded",parser:y},{code:281,name:"resolutionUnits",parser:y},{code:100,name:"subclassMarker",parser:y}];(on={})[on.NOUNIT=0]="NOUNIT",on[on.CENTIMETERS=2]="CENTIMETERS",on[on.INCH=5]="INCH";(Ss={})[Ss.PSLTSCALE=1]="PSLTSCALE",Ss[Ss.LIMCHECK=2]="LIMCHECK";(ln={})[ln.INCHES=0]="INCHES",ln[ln.MILLIMETERS=1]="MILLIMETERS",ln[ln.PIXELS=2]="PIXELS";(ze={})[ze.LAST_SCREEN_DISPLAY=0]="LAST_SCREEN_DISPLAY",ze[ze.DRAWING_EXTENTS=1]="DRAWING_EXTENTS",ze[ze.DRAWING_LIMITS=2]="DRAWING_LIMITS",ze[ze.VIEW_SPECIFIED=3]="VIEW_SPECIFIED",ze[ze.WINDOW_SPECIFIED=4]="WINDOW_SPECIFIED",ze[ze.LAYOUT_INFORMATION=5]="LAYOUT_INFORMATION";(Sr={})[Sr.AS_DISPLAYED=0]="AS_DISPLAYED",Sr[Sr.WIREFRAME=1]="WIREFRAME",Sr[Sr.HIDDEN=2]="HIDDEN",Sr[Sr.RENDERED=3]="RENDERED";(Re={})[Re.DRAFT=0]="DRAFT",Re[Re.PREVIEW=1]="PREVIEW",Re[Re.NORMAL=2]="NORMAL",Re[Re.PRESENTATION=3]="PRESENTATION",Re[Re.MAXIMUM=4]="MAXIMUM",Re[Re.CUSTOM=5]="CUSTOM";let wh=[{code:333,name:"shadePlotId",parser:y},{code:149,name:"imageOriginY",parser:y},{code:148,name:"imageOriginX",parser:y},{code:147,name:"scaleFactor",parser:y},{code:78,name:"shadePlotCustomDPI",parser:y},{code:77,name:"shadePlotResolution",parser:y},{code:76,name:"shadePlotMode",parser:y},{code:75,name:"standardScaleType",parser:y},{code:7,name:"currentStyleSheet",parser:y},{code:74,name:"plotType",parser:y},{code:73,name:"plotRotation",parser:y},{code:72,name:"plotPaperUnit",parser:y},{code:70,name:"layoutFlag",parser:y},{code:143,name:"printScaleDenominator",parser:y},{code:142,name:"printScaleNumerator",parser:y},{code:141,name:"windowAreaYMax",parser:y},{code:140,name:"windowAreaXMax",parser:y},{code:49,name:"windowAreaYMin",parser:y},{code:48,name:"windowAreaXMin",parser:y},{code:47,name:"plotOriginY",parser:y},{code:46,name:"plotOriginX",parser:y},{code:45,name:"paperHeight",parser:y},{code:44,name:"paperWidth",parser:y},{code:43,name:"marginTop",parser:y},{code:42,name:"marginRight",parser:y},{code:41,name:"marginBottom",parser:y},{code:40,name:"marginLeft",parser:y},{code:6,name:"plotViewName",parser:y},{code:4,name:"paperSize",parser:y},{code:2,name:"configName",parser:y},{code:1,name:"pageSetupName",parser:y},{code:100,name:"subclassMarker",parser:y},...wa],Ed=[{code:346,name:"orthographicUcsId",parser:y},{code:345,name:"namedUcsId",parser:y},{code:331,name:"viewportId",parser:y},{code:330,name:"paperSpaceTableId",parser:y},{code:76,name:"orthographicType",parser:y},{code:17,name:"ucsYAxis",parser:G},{code:16,name:"ucsXAxis",parser:G},{code:13,name:"ucsOrigin",parser:G},{code:146,name:"elevation",parser:y},{code:15,name:"maxExtent",parser:G},{code:14,name:"minExtent",parser:G},{code:12,name:"insertionPoint",parser:G},{code:11,name:"maxLimit",parser:G},{code:10,name:"minLimit",parser:G},{code:71,name:"tabOrder",parser:y},{code:70,name:"controlFlag",parser:y},{code:1,name:"layoutName",parser:y},{code:100,name:"subclassMarker",parser:y},...wh],kd=[{code:40,name:"wcsToOCSTransform",parser:zo},{code:40,name:"ocsToWCSTransform",parser:zo},{code:41,name:"backClippingDistance",parser:y},{code:73,name:"isBackClipping",parser:Dt,pushContext:!0},{code:40,name:"frontClippingDistance",parser:y},{code:72,name:"isFrontClipping",parser:Dt,pushContext:!0},{code:71,name:"isClipBoundaryDisplayed",parser:Dt},{code:11,name:"position",parser:G},{code:210,name:"normal",parser:G},{code:10,name:"boundaryVertices",parser:G,isMultiple:!0},{code:70,name:"boundaryCount",parser:y},{code:100,name:"subclassMarker",parser:y},{code:100},...wa];function zo(i,t){let e=[];for(let s=0;s<3&&At(i,40);++s){let o=[];for(let h=0;h<4&&At(i,40);++h)o.push(i.value),i=t.next();e.push(o)}return t.rewind(),e}let Td={LAYOUT:Ed,PLOTSETTINGS:wh,DICTIONARY:Id,SPATIAL_FILTER:kd,IMAGEDEF:Pd};function Md(i,t){let e=[];for(;i.code!==0||!["EOF","ENDSEC"].includes(i.value);){let s=i.value,o=Td[s];if(i.code===0&&(o!=null&&o.length)){let h=xt(o),c={name:s};h(i=t.next(),t,c)?(e.push(c),i=t.peek()):i=t.next()}else i=t.next()}return{byName:bc(e,({name:s})=>s)}}let Un=[{code:100,name:"subclassMarker",parser:y},{code:330,name:"ownerObjectId",parser:y},{code:102,parser(i,t){for(;!At(i,0,"EOF")&&!At(i,102,"}");)i=t.next()}},{code:5,name:"handle",parser:y}],Nd=xt([{code:310,name:"bmpPreview",parser:y},{code:281,name:"scalability",parser:y},{code:280,name:"explodability",parser:y},{code:70,name:"insertionUnits",parser:y},{code:340,name:"layoutObjects",parser:y},{code:2,name:"name",parser:y},{code:100,name:"subclassMarker",parser:y},...Un]),Cd=[{name:"DIMPOST",code:3},{name:"DIMAPOST",code:4},{name:"DIMBLK_OBSOLETE",code:5},{name:"DIMBLK1_OBSOLETE",code:6},{name:"DIMBLK2_OBSOLETE",code:7},{name:"DIMSCALE",code:40,defaultValue:1},{name:"DIMASZ",code:41,defaultValue:.25},{name:"DIMEXO",code:42,defaultValue:.625,defaultValueImperial:.0625},{name:"DIMDLI",code:43,defaultValue:3.75,defaultValueImperial:.38},{name:"DIMEXE",code:44,defaultValue:2.25,defaultValueImperial:.28},{name:"DIMRND",code:45,defaultValue:0},{name:"DIMDLE",code:46,defaultValue:0},{name:"DIMTP",code:47,defaultValue:0},{name:"DIMTM",code:48,defaultValue:0},{name:"DIMTXT",code:140,defaultValue:2.5,defaultValueImperial:.28},{name:"DIMCEN",code:141,defaultValue:2.5,defaultValueImperial:.09},{name:"DIMTSZ",code:142,defaultValue:0},{name:"DIMALTF",code:143,defaultValue:25.4},{name:"DIMLFAC",code:144,defaultValue:1},{name:"DIMTVP",code:145,defaultValue:0},{name:"DIMTFAC",code:146,defaultValue:1},{name:"DIMGAP",code:147,defaultValue:.625,defaultValueImperial:.09},{name:"DIMALTRND",code:148,defaultValue:0},{name:"DIMTOL",code:71,defaultValue:0,defaultValueImperial:1},{name:"DIMLIM",code:72,defaultValue:0},{name:"DIMTIH",code:73,defaultValue:0,defaultValueImperial:1},{name:"DIMTOH",code:74,defaultValue:0,defaultValueImperial:1},{name:"DIMSE1",code:75,defaultValue:0},{name:"DIMSE2",code:76,defaultValue:0},{name:"DIMTAD",code:77,defaultValue:Lo.Above,defaultValueImperial:Lo.Center},{name:"DIMZIN",code:78,defaultValue:Cn.Trailing,defaultValueImperial:Cn.Feet},{name:"DIMAZIN",code:79,defaultValue:oc.None},{name:"DIMALT",code:170,defaultValue:0},{name:"DIMALTD",code:171,defaultValue:3,defaultValueImperial:2},{name:"DIMTOFL",code:172,defaultValue:1,defaultValueImperial:0},{name:"DIMSAH",code:173,defaultValue:0},{name:"DIMTIX",code:174,defaultValue:0},{name:"DIMSOXD",code:175,defaultValue:0},{name:"DIMCLRD",code:176,defaultValue:0},{name:"DIMCLRE",code:177,defaultValue:0},{name:"DIMCLRT",code:178,defaultValue:0},{name:"DIMADEC",code:179},{name:"DIMUNIT",code:270},{name:"DIMDEC",code:271,defaultValue:2,defaultValueImperial:4},{name:"DIMTDEC",code:272,defaultValue:2,defaultValueImperial:4},{name:"DIMALTU",code:273,defaultValue:2},{name:"DIMALTTD",code:274,defaultValue:2,defaultValueImperial:4},{name:"DIMAUNIT",code:275,defaultValue:0},{name:"DIMFRAC",code:276,defaultValue:0},{name:"DIMLUNIT",code:277,defaultValue:2},{name:"DIMDSEP",code:278,defaultValue:",",defaultValueImperial:"."},{name:"DIMJUST",code:280,defaultValue:lc.Center},{name:"DIMSD1",code:281,defaultValue:0},{name:"DIMSD2",code:282,defaultValue:0},{name:"DIMTOLJ",code:283,defaultValue:hc.Center},{name:"DIMTZIN",code:284,defaultValue:Cn.Trailing,defaultValueImperial:Cn.Feet},{name:"DIMALTZ",code:285,defaultValue:Cn.Trailing},{name:"DIMALTTZ",code:286,defaultValue:Cn.Trailing},{name:"DIMFIT",code:287},{name:"DIMUPT",code:288,defaultValue:0},{name:"DIMATFIT",code:289,defaultValue:3},{name:"DIMTXSTY",code:340},{name:"DIMLDRBLK",code:341},{name:"DIMBLK",code:342},{name:"DIMBLK1",code:343},{name:"DIMBLK2",code:344},{name:"DIMLWD",code:371,defaultValue:-2},{name:"DIMLWD",code:372,defaultValue:-2}],Ld=xt([...Cd.map(i=>({...i,parser:y})),{code:70,name:"standardFlag",parser:y},{code:2,name:"name",parser:y},{code:100,name:"subclassMarker",parser:y},{code:105,name:"handle",parser:y},...Un.filter(i=>i.code!==5)]),Od=xt([{code:347,name:"materialObjectId",parser:y},{code:390,name:"plotStyleNameObjectId",parser:y},{code:370,name:"lineweight",parser:y},{code:290,name:"isPlotting",parser:Dt},{code:6,name:"lineType",parser:y},{code:62,name:"colorIndex",parser:y},{code:70,name:"standardFlag",parser:y},{code:2,name:"name",parser:y},{code:100,name:"subclassMarker",parser:y},...Un]);(Ir={})[Ir.NONE=0]="NONE",Ir[Ir.AbsoluteRotation=1]="AbsoluteRotation",Ir[Ir.TextEmbedded=2]="TextEmbedded",Ir[Ir.ShapeEmbedded=4]="ShapeEmbedded";let zd=xt([{code:9,name:"text",parser:y},{code:45,name:"offsetY",parser:y},{code:44,name:"offsetX",parser:y},{code:50,name:"rotation",parser:y},{code:46,name:"scale",parser:y},{code:340,name:"styleObjectId",parser:y},{code:75,name:"shapeNumber",parser:y},{code:74,name:"elementTypeFlag",parser:y},{code:49,name:"elementLength",parser:y}],{elementTypeFlag:0,elementLength:0}),Rd=xt([{code:49,name:"pattern",parser(i,t){let e={};return zd(i,t,e),e},isMultiple:!0},{code:40,name:"totalPatternLength",parser:y},{code:73,name:"numberOfLineTypes",parser:y},{code:72,parser:y},{code:3,name:"description",parser:y},{code:70,name:"standardFlag",parser:y},{code:2,name:"name",parser:y},{code:100,name:"subclassMarker",parser:y},...Un]),Bd=xt([{code:1e3,name:"extendedFont",parser:y},{code:1001},{code:4,name:"bigFont",parser:y},{code:3,name:"font",parser:y},{code:42,name:"lastHeight",parser:y},{code:71,name:"textGenerationFlag",parser:y},{code:50,name:"obliqueAngle",parser:y},{code:41,name:"widthFactor",parser:y},{code:40,name:"fixedTextHeight",parser:y},{code:70,name:"standardFlag",parser:y},{code:2,name:"name",parser:y},{code:100,name:"subclassMarker",parser:y},...Un]),Dd=xt([{code:[63,421,431],name:"ambientColor",parser:y},{code:142,name:"contrast",parser:y},{code:141,name:"brightness",parser:y},{code:282,name:"defaultLightingType",parser:y},{code:292,name:"isDefaultLightingOn",parser:Dt},{code:348,name:"visualStyleObjectId",parser:y},{code:333,name:"shadePlotObjectId",parser:y},{code:332,name:"backgroundObjectId",parser:y},{code:61,name:"majorGridLines",parser:y},{code:170,name:"shadePlotSetting",parser:y},{code:146,name:"elevation",parser:y},{code:79,name:"orthographicType",parser:y},{code:112,name:"ucsYAxis",parser:G},{code:111,name:"ucsXAxis",parser:G},{code:110,name:"ucsOrigin",parser:G},{code:74,name:"ucsIconSetting",parser:y},{code:71,name:"viewMode",parser:y},{code:281,name:"renderMode",parser:y},{code:1,name:"styleSheet",parser:y},{code:[331,441],name:"frozenLayers",parser:y,isMultiple:!0},{code:72,name:"circleSides",parser:y},{code:51,name:"viewTwistAngle",parser:y},{code:50,name:"snapRotationAngle",parser:y},{code:45,name:"viewHeight",parser:y},{code:44,name:"backClippingPlane",parser:y},{code:43,name:"frontClippingPlane",parser:y},{code:42,name:"lensLength",parser:y},{code:17,name:"viewTarget",parser:G},{code:16,name:"viewDirectionFromTarget",parser:G},{code:15,name:"gridSpacing",parser:G},{code:14,name:"snapSpacing",parser:G},{code:13,name:"snapBasePoint",parser:G},{code:12,name:"center",parser:G},{code:11,name:"upperRightCorner",parser:G},{code:10,name:"lowerLeftCorner",parser:G},{code:70,name:"standardFlag",parser:y},{code:2,name:"name",parser:y},{code:100,name:"subclassMarker",parser:y},...Un]),Fd={BLOCK_RECORD:Nd,DIMSTYLE:Ld,LAYER:Od,LTYPE:Rd,STYLE:Bd,VPORT:Dd},Ud=xt([{code:70,name:"maxNumberOfEntries",parser:y},{code:100,name:"subclassMarker",parser:y},{code:330,name:"ownerObjectId",parser:y},{code:102},{code:360,isMultiple:!0},{code:102},{code:5,name:"handle",parser:y},{code:2,name:"name",parser:y}]);function Vd(i,t){var s;let e={};for(;!At(i,0,"EOF")&&!At(i,0,"ENDSEC");){if(At(i,0,"TABLE")){i=t.next();let o={entries:[]};Ud(i,t,o),e[o.name]=o}if(At(i,0)&&!At(i,0,"ENDTAB")){let o=i.value;i=t.next();let h=Fd[o];if(!h){t.debug&&console.warn(`parseTable: Invalid table name '${o}'`),i=t.next();continue}let c={};h(i,t,c),(s=e[o])==null||s.entries.push(c)}i=t.next()}return e}function Is(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}class Ro{next(){if(!this.hasNext())return this._eof?this.debug&&console.warn("Cannot call 'next' after EOF group has been read"):this.debug&&console.warn("Unexpected end of input: EOF group not read before end of file. Ended on code "+this._data[this._pointer]),{code:0,value:"EOF"};let t=parseInt(this._data[this._pointer++],10),e=Bo(t,this._data[this._pointer++],this.debug),s={code:t,value:e};return At(s,0,"EOF")&&(this._eof=!0),this.lastReadGroup=s,s}peek(){if(!this.hasNext())throw this._eof?Error("Cannot call 'next' after EOF group has been read"):Error("Unexpected end of input: EOF group not read before end of file. Ended on code "+this._data[this._pointer]);let t={code:parseInt(this._data[this._pointer]),value:0};return t.value=Bo(t.code,this._data[this._pointer+1],this.debug),t}rewind(t){t=t||1,this._pointer=this._pointer-2*t}hasNext(){return!this._eof&&!(this._pointer>this._data.length-2)}isEOF(){return this._eof}constructor(t,e=!1){Is(this,"_data",void 0),Is(this,"debug",void 0),Is(this,"_pointer",void 0),Is(this,"_eof",void 0),Is(this,"lastReadGroup",void 0),this._data=t,this.debug=e,this.lastReadGroup={code:0,value:0},this._pointer=0,this._eof=!1}}function Bo(i,t,e=!1){return i<=9?t:i>=10&&i<=59?parseFloat(t.trim()):i>=60&&i<=99?parseInt(t.trim()):i>=100&&i<=109?t:i>=110&&i<=149?parseFloat(t.trim()):i>=160&&i<=179?parseInt(t.trim()):i>=210&&i<=239?parseFloat(t.trim()):i>=270&&i<=289?parseInt(t.trim()):i>=290&&i<=299?function(s){if(s==="0")return!1;if(s==="1")return!0;throw TypeError("String '"+s+"' cannot be cast to Boolean type")}(t.trim()):i>=300&&i<=369?t:i>=370&&i<=389?parseInt(t.trim()):i>=390&&i<=399?t:i>=400&&i<=409?parseInt(t.trim()):i>=410&&i<=419?t:i>=420&&i<=429?parseInt(t.trim()):i>=430&&i<=439?t:i>=440&&i<=459?parseInt(t.trim()):i>=460&&i<=469?parseFloat(t.trim()):i>=470&&i<=481||i===999||i>=1e3&&i<=1009?t:i>=1010&&i<=1059?parseFloat(t.trim()):i>=1060&&i<=1071?parseInt(t.trim()):(e&&console.warn("WARNING: Group code does not have a defined type: %j",{code:i,value:t}),t)}function ua(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}class jd{constructor(){ua(this,"encoding","utf-8"),ua(this,"encodingFailureFatal",!1)}}class Gd extends EventTarget{parseSync(t,e=!1){let s=new Ro(t.split(/\r\n|\r|\n/g),e);if(!s.hasNext())throw Error("Empty file");return this.parseAll(s)}parseStream(t){let e="",s=this;return new Promise((o,h)=>{t.on("data",c=>{e+=c}),t.on("end",()=>{try{let c=e.split(/\r\n|\r|\n/g),f=new Ro(c);if(!f.hasNext())throw Error("Empty file");o(s.parseAll(f))}catch(c){h(c)}}),t.on("error",c=>{h(c)})})}async parseFromUrl(t,e){let s=await fetch(t,e);if(!s.body)return null;let o=s.body.getReader(),h="";for(;;){let{done:c,value:f}=await o.read();if(c){h+=this._decoder.decode(new ArrayBuffer(0),{stream:!1});break}h+=this._decoder.decode(f,{stream:!0})}return this.parseSync(h)}parseAll(t){let e={header:{},blocks:{},entities:[],tables:{},objects:{byName:{},byTree:void 0}},s=t.next();for(;!At(s,0,"EOF");)At(s,0,"SECTION")&&(At(s=t.next(),2,"HEADER")?(s=t.next(),e.header=Sd(s,t)):At(s,2,"BLOCKS")?(s=t.next(),e.blocks=wd(s,t)):At(s,2,"ENTITIES")?(s=t.next(),e.entities=bh(s,t)):At(s,2,"TABLES")?(s=t.next(),e.tables=Vd(s,t)):At(s,2,"OBJECTS")&&(s=t.next(),e.objects=Md(s,t))),s=t.next();return e}constructor(t=new jd){super(),ua(this,"_decoder",void 0),this._decoder=new TextDecoder(t.encoding,{fatal:t.encodingFailureFatal})}}const Do=[{name:"AC1.2",value:1},{name:"AC1.40",value:2},{name:"AC1.50",value:3},{name:"AC2.20",value:4},{name:"AC2.10",value:5},{name:"AC2.21",value:6},{name:"AC2.22",value:7},{name:"AC1001",value:8},{name:"AC1002",value:9},{name:"AC1003",value:10},{name:"AC1004",value:11},{name:"AC1005",value:12},{name:"AC1006",value:13},{name:"AC1007",value:14},{name:"AC1008",value:15},{name:"AC1009",value:16},{name:"AC1010",value:17},{name:"AC1011",value:18},{name:"AC1012",value:19},{name:"AC1013",value:20},{name:"AC1014",value:21},{name:"AC1500",value:22},{name:"AC1015",value:23},{name:"AC1800a",value:24},{name:"AC1800",value:25},{name:"AC2100a",value:26},{name:"AC1021",value:27},{name:"AC2400a",value:28},{name:"AC1024",value:29},{name:"AC1027",value:31},{name:"AC3200a",value:32},{name:"AC1032",value:33}];class ni{constructor(t){if(typeof t=="string"){const e=Do.find(s=>s.name===t);if(!e)throw new Error(`Unknown DWG version name: ${t}`);this.name=e.name,this.value=e.value;return}if(typeof t=="number"){const e=Do.find(s=>s.value===t);if(!e)throw new Error(`Unknown DWG version value: ${t}`);this.name=e.name,this.value=e.value;return}throw new Error("Invalid constructor argument for AcDbDwgVersion")}}class Wd{parse(t){const e=new Gd,s=this.getDxfInfoFromBuffer(t);let o="";return s.version&&s.version.value<=23&&s.encoding?o=new TextDecoder(s.encoding).decode(t):o=new TextDecoder().decode(t),e.parseSync(o)}getDxfInfoFromBuffer(t){var g,A,b;const s=new TextDecoder("utf-8");let o=0,h="",c=null,f=null,x=!1;for(;o<t.byteLength;){const E=Math.min(o+65536,t.byteLength),T=t.slice(o,E);o=E;const O=(h+s.decode(T,{stream:!0})).split(/\r?\n/);h=O.pop()??"";for(let U=0;U<O.length;U++){const D=O[U].trim();if(D==="SECTION"&&((g=O[U+2])==null?void 0:g.trim())==="HEADER")x=!0;else if(D==="ENDSEC"&&x)return{version:c,encoding:f};if(x&&D==="$ACADVER"){const dt=(A=O[U+2])==null?void 0:A.trim();dt&&(c=new ni(dt))}else if(x&&D==="$DWGCODEPAGE"){const dt=(b=O[U+2])==null?void 0:b.trim();if(dt){const vt=Rs[dt];f=hl(vt)}}if(c&&f)return{version:c,encoding:f}}}return{version:c,encoding:f}}}const ge=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Fo=1234567;const Aa=Math.PI/180,Sa=180/Math.PI;function Ah(){const i=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,s=Math.random()*4294967295|0;return(ge[i&255]+ge[i>>8&255]+ge[i>>16&255]+ge[i>>24&255]+"-"+ge[t&255]+ge[t>>8&255]+"-"+ge[t>>16&15|64]+ge[t>>24&255]+"-"+ge[e&63|128]+ge[e>>8&255]+"-"+ge[e>>16&255]+ge[e>>24&255]+ge[s&255]+ge[s>>8&255]+ge[s>>16&255]+ge[s>>24&255]).toLowerCase()}function kr(i,t,e){return Math.max(t,Math.min(e,i))}function Ia(i,t){return(i%t+t)%t}function Sh(i,t,e,s,o){return s+(i-t)*(o-s)/(e-t)}function Ih(i,t,e){return i!==t?(e-i)/(t-i):0}function Pa(i,t,e){return(1-e)*i+e*t}function Ph(i,t,e,s){return Pa(i,t,1-Math.exp(-e*s))}function Eh(i,t=1){return t-Math.abs(Ia(i,t*2)-t)}function kh(i,t,e){return i<=t?0:i>=e?1:(i=(i-t)/(e-t),i*i*(3-2*i))}function Th(i,t,e){return i<=t?0:i>=e?1:(i=(i-t)/(e-t),i*i*i*(i*(i*6-15)+10))}function Mh(i,t){return i+Math.floor(Math.random()*(t-i+1))}function Nh(i,t){return i+Math.random()*(t-i)}function Ch(i){return i*(.5-Math.random())}function Lh(i){i!==void 0&&(Fo=i);let t=Fo+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function Oh(i){return i*Aa}function zh(i){return i*Sa}function Rh(i){return(i&i-1)===0&&i!==0}function Bh(i){return Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))}function Dh(i){return Math.pow(2,Math.floor(Math.log(i)/Math.LN2))}function Ts(i){const t=Math.PI*2;return(i%t+t)%t}function Fh(i,t,e){return i>t&&i<e||i>e&&i<t}function Uh(i,t,e,s=!1){return i=Ts(i),t=Ts(t),e=Ts(e),s?t>e?i<=t&&i>=e:i<=t||i>=e:t<e?i>=t&&i<=e:i>=t||i<=e}function Ea(i){return i=Math.abs(i),i<1?0:Math.ceil(Math.log10(Math.abs(i)+1))}function Vh(i,t=1e-7){const e=Ea(i);return Math.max(Math.pow(10,e)*t,t)}const Et={DEG2RAD:Aa,RAD2DEG:Sa,generateUUID:Ah,clamp:kr,euclideanModulo:Ia,mapLinear:Sh,inverseLerp:Ih,lerp:Pa,damp:Ph,pingpong:Eh,smoothstep:kh,smootherstep:Th,randInt:Mh,randFloat:Nh,randFloatSpread:Ch,seededRandom:Lh,degToRad:Oh,radToDeg:zh,isPowerOfTwo:Rh,ceilPowerOfTwo:Bh,floorPowerOfTwo:Dh,normalizeAngle:Ts,isBetween:Fh,isBetweenAngle:Uh,intPartLength:Ea,relativeEps:Vh},ca=class jh{constructor(t,e){this.x=0,this.y=0;const s=+(t!==void 0)+ +(e!==void 0);if(s!==0){if(s===1&&t instanceof Array){this.x=t[0],this.y=t[1];return}if(s===1){const{x:o,y:h}=t;this.x=o,this.y=h;return}if(s===2){this.x=t,this.y=e;return}throw Ue.ILLEGAL_PARAMETERS}}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new jh(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix2d(t){const e=this.x,s=this.y,o=t.elements;return this.x=o[0]*e+o[3]*s+o[6],this.y=o[1]*e+o[4]*s+o[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){const s=this.length();return this.divideScalar(s||1).multiplyScalar(Math.max(t,Math.min(e,s)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const s=this.dot(t)/e;return Math.acos(Math.max(-1,Math.min(1,s)))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,s=this.y-t.y;return e*e+s*s}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,s){return this.x=t.x+(e.x-t.x)*s,this.y=t.y+(e.y-t.y)*s,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}rotateAround(t,e){const s=Math.cos(e),o=Math.sin(e),h=this.x-t.x,c=this.y-t.y;return this.x=h*s-c*o+t.x,this.y=h*o+c*s+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}relativeEps(t=1e-7){return Math.min(Et.relativeEps(this.x,t),Et.relativeEps(this.y,t))}*[Symbol.iterator](){yield this.x,yield this.y}};ca.EMPTY=Object.freeze(new ca(0,0));let $t=ca;const da=class Gh{constructor(t,e,s,o,h,c,f,x,g){this.elements=[1,0,0,0,1,0,0,0,1],t!=null&&e!=null&&s!=null&&o!=null&&h!=null&&c!=null&&f!=null&&x!=null&&g!=null&&this.set(t,e,s,o,h,c,f,x,g)}set(t,e,s,o,h,c,f,x,g){const A=this.elements;return A[0]=t,A[1]=o,A[2]=f,A[3]=e,A[4]=h,A[5]=x,A[6]=s,A[7]=c,A[8]=g,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,s=t.elements;return e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=s[3],e[4]=s[4],e[5]=s[5],e[6]=s[6],e[7]=s[7],e[8]=s[8],this}extractBasis(t,e,s){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),s.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const s=t.elements,o=e.elements,h=this.elements,c=s[0],f=s[3],x=s[6],g=s[1],A=s[4],b=s[7],E=s[2],T=s[5],R=s[8],O=o[0],U=o[3],D=o[6],dt=o[1],vt=o[4],ot=o[7],W=o[2],ut=o[5],st=o[8];return h[0]=c*O+f*dt+x*W,h[3]=c*U+f*vt+x*ut,h[6]=c*D+f*ot+x*st,h[1]=g*O+A*dt+b*W,h[4]=g*U+A*vt+b*ut,h[7]=g*D+A*ot+b*st,h[2]=E*O+T*dt+R*W,h[5]=E*U+T*vt+R*ut,h[8]=E*D+T*ot+R*st,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],s=t[1],o=t[2],h=t[3],c=t[4],f=t[5],x=t[6],g=t[7],A=t[8];return e*c*A-e*f*g-s*h*A+s*f*x+o*h*g-o*c*x}invert(){const t=this.elements,e=t[0],s=t[1],o=t[2],h=t[3],c=t[4],f=t[5],x=t[6],g=t[7],A=t[8],b=A*c-f*g,E=f*x-A*h,T=g*h-c*x,R=e*b+s*E+o*T;if(R===0)return this.set(0,0,0,0,0,0,0,0,0);const O=1/R;return t[0]=b*O,t[1]=(o*g-A*s)*O,t[2]=(f*s-o*c)*O,t[3]=E*O,t[4]=(A*e-o*x)*O,t[5]=(o*h-f*e)*O,t[6]=T*O,t[7]=(s*x-g*e)*O,t[8]=(c*e-s*h)*O,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t.elements[0]=e[0],t.elements[1]=e[3],t.elements[2]=e[6],t.elements[3]=e[1],t.elements[4]=e[4],t.elements[5]=e[7],t.elements[6]=e[2],t.elements[7]=e[5],t.elements[8]=e[8],this}setUvTransform(t,e,s,o,h,c,f){const x=Math.cos(h),g=Math.sin(h);return this.set(s*x,s*g,-s*(x*c+g*f)+c+t,-o*g,o*x,-o*(-g*c+x*f)+f+e,0,0,1),this}scale(t,e){return this.premultiply(ia.makeScale(t,e)),this}rotate(t){return this.premultiply(ia.makeRotation(-t)),this}translate(t,e){return this.premultiply(ia.makeTranslation(t,e)),this}makeTranslation(t,e){return t instanceof $t?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),s=Math.sin(t);return this.set(e,-s,0,s,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,s=t.elements;for(let o=0;o<9;o++)if(e[o]!==s[o])return!1;return!0}fromArray(t,e=0){for(let s=0;s<9;s++)this.elements[s]=t[s+e];return this}toArray(t=[],e=0){const s=this.elements;return t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3],t[e+4]=s[4],t[e+5]=s[5],t[e+6]=s[6],t[e+7]=s[7],t[e+8]=s[8],t}clone(){return new Gh().fromArray(this.elements)}};da.IDENTITY=Object.freeze(new da);let Ci=da;const ia=new Ci,un=1e-6,ne=2*Math.PI,Hd={x:0,y:0},ka={x:0,y:0,z:0};class Ta{constructor(){this.equalPointTol=un,this.equalVectorTol=un}equalPoint2d(t,e){return new $t(t).sub(e).length()<this.equalPointTol}equalPoint3d(t,e){return new Z(t).sub(e).length()<this.equalPointTol}static equalToZero(t,e=un){return t<e&&t>-e}static equal(t,e,s=un){return Math.abs(t-e)<s}static great(t,e,s=un){return t-e>s}static less(t,e,s=un){return t-e<s}}const Ma=new Ta;function Na(i,t,e=!1){const s=i.x,o=i.y;let h=!1;const c=t.length;for(let f=0,x=c-1;f<c;x=f++){const g=t[f].x,A=t[f].y,b=t[x].x,E=t[x].y;let T=A>o!=E>o;e&&(T=A>=o!=E>=o),T&&s<(b-g)*(o-A)/(E-A)+g&&(h=!h)}return h}function Wh(i,t){if(i.length===0||t.length===0)return!1;const e=new _e().setFromPoints(i),s=new _e().setFromPoints(t);if(!e.intersectsBox(s))return!1;for(let o=0;o<i.length;){if(Na(i[o],t,!0))return!0;o<i.length-1&&Ma.equalPoint2d(i[o+1],i[o])&&++o,++o}return!1}const Hh={isPointInPolygon:Na,isPolygonIntersect:Wh};function qh(i,t){const e=[],s=t-1,o=i;for(let h=0;h<=o;h++)e.push(0);for(let h=1;h<=s-o;h++)e.push(h);for(let h=0;h<=o;h++)e.push(s-o+1);return e}function Yh(i,t){const e=t.length-1,s=i,o=[0];let h=0;for(let f=1;f<=e;f++){const x=t[f][0]-t[f-1][0],g=t[f][1]-t[f-1][1],A=t[f][2]-t[f-1][2],b=Math.sqrt(x*x+g*g+A*A);h+=b,o.push(h)}const c=[];for(let f=0;f<=s;f++)c.push(0);for(let f=1;f<=e-s;f++){const x=o[f]/h;c.push(x*(e-s+1))}for(let f=0;f<=s;f++)c.push(e-s+1);return c}function Xh(i,t){const e=t.length-1,s=i,o=[0];let h=0;for(let f=1;f<=e;f++){const x=t[f][0]-t[f-1][0],g=t[f][1]-t[f-1][1],A=t[f][2]-t[f-1][2],b=Math.sqrt(x*x+g*g+A*A),E=Math.sqrt(b);h+=E,o.push(h)}const c=[];for(let f=0;f<=s;f++)c.push(0);for(let f=1;f<=e-s;f++){const x=o[f]/h;c.push(x*(e-s+1))}for(let f=0;f<=s;f++)c.push(e-s+1);return c}function si(i,t,e,s){if(t===0)return e>=s[i]&&e<s[i+1]?1:0;const o=s[i+t]-s[i],h=s[i+t+1]-s[i+1],c=o>1e-10?(e-s[i])/o:0,f=h>1e-10?(s[i+t+1]-e)/h:0;return c*si(i,t-1,e,s)+f*si(i+1,t-1,e,s)}function Ms(i,t,e,s,o){const h=s.length-1,c=t;if(i=Math.max(e[c],Math.min(e[h+1],i)),Math.abs(i-e[h+1])<1e-8)return[...s[h]];if(Math.abs(i-e[c])<1e-8)return[...s[0]];const f=[0,0,0];let x=0;for(let g=0;g<=h;g++){const A=si(g,c,i,e),b=o[g]*A;f[0]+=s[g][0]*b,f[1]+=s[g][1]*b,f[2]+=s[g][2]*b,x+=b}if(x<1e-10){const g=e[e.length-c-1];if(Math.abs(i-g)<1e-8)return[...s[h]];if(Math.abs(i-e[c])<1e-8)return[...s[0]]}return x>1e-10&&(f[0]/=x,f[1]/=x,f[2]/=x),f}function Kh(i,t,e,s){const o=i,h=t[o],c=t[t.length-o-1];let f=0;const x=1e3,g=(c-h)/x;let A=Ms(h,i,t,e,s);for(let O=1;O<=x;O++){const U=h+O*g,D=Ms(U,i,t,e,s),dt=D[0]-A[0],vt=D[1]-A[1],ot=D[2]-A[2];f+=Math.sqrt(dt*dt+vt*vt+ot*ot),A=D}const b=Ms(c,i,t,e,s),E=b[0]-A[0],T=b[1]-A[1],R=b[2]-A[2];return f+=Math.sqrt(E*E+T*T+R*R),f}function qd(i){return i.map(t=>[...t])}class Hr{constructor(t=0,e=0,s=0,o=1){this._x=t,this._y=e,this._z=s,this._w=o}static slerpFlat(t,e,s,o,h,c,f){let x=s[o+0],g=s[o+1],A=s[o+2],b=s[o+3];const E=h[c+0],T=h[c+1],R=h[c+2],O=h[c+3];if(f===0){t[e+0]=x,t[e+1]=g,t[e+2]=A,t[e+3]=b;return}if(f===1){t[e+0]=E,t[e+1]=T,t[e+2]=R,t[e+3]=O;return}if(b!==O||x!==E||g!==T||A!==R){let U=1-f;const D=x*E+g*T+A*R+b*O,dt=D>=0?1:-1,vt=1-D*D;if(vt>Number.EPSILON){const W=Math.sqrt(vt),ut=Math.atan2(W,D*dt);U=Math.sin(U*ut)/W,f=Math.sin(f*ut)/W}const ot=f*dt;if(x=x*U+E*ot,g=g*U+T*ot,A=A*U+R*ot,b=b*U+O*ot,U===1-f){const W=1/Math.sqrt(x*x+g*g+A*A+b*b);x*=W,g*=W,A*=W,b*=W}}t[e]=x,t[e+1]=g,t[e+2]=A,t[e+3]=b}static multiplyQuaternionsFlat(t,e,s,o,h,c){const f=s[o],x=s[o+1],g=s[o+2],A=s[o+3],b=h[c],E=h[c+1],T=h[c+2],R=h[c+3];return t[e]=f*R+A*b+x*T-g*E,t[e+1]=x*R+A*E+g*b-f*T,t[e+2]=g*R+A*T+f*E-x*b,t[e+3]=A*R-f*b-x*E-g*T,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,s,o){return this._x=t,this._y=e,this._z=s,this._w=o,this._onChangeCallback(),this}clone(){return new Hr(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const s=t.x,o=t.y,h=t.z,c=t.order,f=Math.cos,x=Math.sin,g=f(s/2),A=f(o/2),b=f(h/2),E=x(s/2),T=x(o/2),R=x(h/2);switch(c){case"XYZ":this._x=E*A*b+g*T*R,this._y=g*T*b-E*A*R,this._z=g*A*R+E*T*b,this._w=g*A*b-E*T*R;break;case"YXZ":this._x=E*A*b+g*T*R,this._y=g*T*b-E*A*R,this._z=g*A*R-E*T*b,this._w=g*A*b+E*T*R;break;case"ZXY":this._x=E*A*b-g*T*R,this._y=g*T*b+E*A*R,this._z=g*A*R+E*T*b,this._w=g*A*b-E*T*R;break;case"ZYX":this._x=E*A*b-g*T*R,this._y=g*T*b+E*A*R,this._z=g*A*R-E*T*b,this._w=g*A*b+E*T*R;break;case"YZX":this._x=E*A*b+g*T*R,this._y=g*T*b+E*A*R,this._z=g*A*R-E*T*b,this._w=g*A*b-E*T*R;break;case"XZY":this._x=E*A*b-g*T*R,this._y=g*T*b-E*A*R,this._z=g*A*R+E*T*b,this._w=g*A*b+E*T*R;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+c)}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const s=e/2,o=Math.sin(s);return this._x=t.x*o,this._y=t.y*o,this._z=t.z*o,this._w=Math.cos(s),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,s=e[0],o=e[4],h=e[8],c=e[1],f=e[5],x=e[9],g=e[2],A=e[6],b=e[10],E=s+f+b;if(E>0){const T=.5/Math.sqrt(E+1);this._w=.25/T,this._x=(A-x)*T,this._y=(h-g)*T,this._z=(c-o)*T}else if(s>f&&s>b){const T=2*Math.sqrt(1+s-f-b);this._w=(A-x)/T,this._x=.25*T,this._y=(o+c)/T,this._z=(h+g)/T}else if(f>b){const T=2*Math.sqrt(1+f-s-b);this._w=(h-g)/T,this._x=(o+c)/T,this._y=.25*T,this._z=(x+A)/T}else{const T=2*Math.sqrt(1+b-s-f);this._w=(c-o)/T,this._x=(h+g)/T,this._y=(x+A)/T,this._z=.25*T}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let s=t.dot(e)+1;return s<Number.EPSILON?(s=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=s):(this._x=0,this._y=-t.z,this._z=t.y,this._w=s)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=s),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(kr(this.dot(t),-1,1)))}rotateTowards(t,e){const s=this.angleTo(t);if(s===0)return this;const o=Math.min(1,e/s);return this.slerp(t,o),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const s=t._x,o=t._y,h=t._z,c=t._w,f=e._x,x=e._y,g=e._z,A=e._w;return this._x=s*A+c*f+o*g-h*x,this._y=o*A+c*x+h*f-s*g,this._z=h*A+c*g+s*x-o*f,this._w=c*A-s*f-o*x-h*g,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);const s=this._x,o=this._y,h=this._z,c=this._w;let f=c*t._w+s*t._x+o*t._y+h*t._z;if(f<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,f=-f):this.copy(t),f>=1)return this._w=c,this._x=s,this._y=o,this._z=h,this;const x=1-f*f;if(x<=Number.EPSILON){const T=1-e;return this._w=T*c+e*this._w,this._x=T*s+e*this._x,this._y=T*o+e*this._y,this._z=T*h+e*this._z,this.normalize(),this}const g=Math.sqrt(x),A=Math.atan2(g,f),b=Math.sin((1-e)*A)/g,E=Math.sin(e*A)/g;return this._w=c*b+this._w*E,this._x=s*b+this._x*E,this._y=o*b+this._y*E,this._z=h*b+this._z*E,this._onChangeCallback(),this}slerpQuaternions(t,e,s){return this.copy(t).slerp(e,s)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),s=Math.random(),o=Math.sqrt(1-s),h=Math.sqrt(s);return this.set(o*Math.sin(t),o*Math.cos(t),h*Math.sin(e),h*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}const De=class $h{constructor(t,e,s){this.x=0,this.y=0,this.z=0;const o=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0);if(o!==0){if(o===1&&t instanceof Array){this.x=t[0],this.y=t[1],this.z=t[2];return}if(o===1){const{x:h,y:c,z:f}=t;this.x=h,this.y=c,this.z=f||0;return}if(o===3){this.x=t,this.y=e,this.z=s;return}throw Ue.ILLEGAL_PARAMETERS}}set(t,e,s){return s===void 0&&(s=this.z),this.x=t,this.y=e,this.z=s,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new $h(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z||0,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z||0,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(Uo.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(Uo.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,s=this.y,o=this.z,h=t.elements;return this.x=h[0]*e+h[3]*s+h[6]*o,this.y=h[1]*e+h[4]*s+h[7]*o,this.z=h[2]*e+h[5]*s+h[8]*o,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix3d(t){const e=this.x,s=this.y,o=this.z,h=t.elements,c=1/(h[3]*e+h[7]*s+h[11]*o+h[15]);return this.x=(h[0]*e+h[4]*s+h[8]*o+h[12])*c,this.y=(h[1]*e+h[5]*s+h[9]*o+h[13])*c,this.z=(h[2]*e+h[6]*s+h[10]*o+h[14])*c,this}applyQuaternion(t){const e=this.x,s=this.y,o=this.z,h=t.x,c=t.y,f=t.z,x=t.w,g=2*(c*o-f*s),A=2*(f*e-h*o),b=2*(h*s-c*e);return this.x=e+x*g+c*b-f*A,this.y=s+x*A+f*g-h*b,this.z=o+x*b+h*A-c*g,this}transformDirection(t){const e=this.x,s=this.y,o=this.z,h=t.elements;return this.x=h[0]*e+h[4]*s+h[8]*o,this.y=h[1]*e+h[5]*s+h[9]*o,this.z=h[2]*e+h[6]*s+h[10]*o,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){const s=this.length();return this.divideScalar(s||1).multiplyScalar(Math.max(t,Math.min(e,s)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}isParallelTo(t){const e=this.dot(t),s=this.length(),o=t.length();return Math.abs(e)===s*o}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,s){return this.x=t.x+(e.x-t.x)*s,this.y=t.y+(e.y-t.y)*s,this.z=t.z+(e.z-t.z)*s,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const s=t.x,o=t.y,h=t.z,c=e.x,f=e.y,x=e.z;return this.x=o*x-h*f,this.y=h*c-s*x,this.z=s*f-o*c,this}projectOnVector(t){const e=t.lengthSq();if(e===0)return this.set(0,0,0);const s=t.dot(this)/e;return this.copy(t).multiplyScalar(s)}projectOnPlane(t){return aa.copy(this).projectOnVector(t),this.sub(aa)}reflect(t){return this.sub(aa.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const s=this.dot(t)/e;return Math.acos(Math.max(-1,Math.min(1,s)))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,s=this.y-t.y,o=this.z-t.z;return e*e+s*s+o*o}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),s=this.setFromMatrixColumn(t,1).length(),o=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=s,this.z=o,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=Math.random()*2-1,s=Math.sqrt(1-e*e);return this.x=s*Math.cos(t),this.y=e,this.z=s*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};De.X_AXIS=Object.freeze(new De(1,0,0)),De.NEGATIVE_X_AXIS=Object.freeze(new De(-1,0,0)),De.Y_AXIS=Object.freeze(new De(0,1,0)),De.NEGATIVE_Y_AXIS=Object.freeze(new De(0,-1,0)),De.Z_AXIS=Object.freeze(new De(0,0,1)),De.NEGATIVE_Z_AXIS=Object.freeze(new De(0,0,-1));let Z=De;const aa=new Z,Uo=new Hr,ma=class Zh{constructor(t,e,s,o,h,c,f,x,g,A,b,E,T,R,O,U){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!=null&&e!=null&&s!=null&&o!=null&&h!=null&&c!=null&&f!=null&&x!=null&&g!=null&&A!=null&&b!=null&&E!=null&&T!=null&&R!=null&&O!=null&&U!=null&&this.set(t,e,s,o,h,c,f,x,g,A,b,E,T,R,O,U)}set(t,e,s,o,h,c,f,x,g,A,b,E,T,R,O,U){const D=this.elements;return D[0]=t,D[4]=e,D[8]=s,D[12]=o,D[1]=h,D[5]=c,D[9]=f,D[13]=x,D[2]=g,D[6]=A,D[10]=b,D[14]=E,D[3]=T,D[7]=R,D[11]=O,D[15]=U,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Zh().fromArray(this.elements)}copy(t){const e=this.elements,s=t.elements;return e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=s[3],e[4]=s[4],e[5]=s[5],e[6]=s[6],e[7]=s[7],e[8]=s[8],e[9]=s[9],e[10]=s[10],e[11]=s[11],e[12]=s[12],e[13]=s[13],e[14]=s[14],e[15]=s[15],this}copyPosition(t){const e=this.elements,s=t.elements;return e[12]=s[12],e[13]=s[13],e[14]=s[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}setFromExtrusionDirection(t){if(Ma.equalPoint3d(t,Z.Z_AXIS))this.identity();else{const e=new Z(1,0,0);Math.abs(t.x)<1/64&&Math.abs(t.y)<1/64?e.crossVectors(Z.Y_AXIS,t).normalize():e.crossVectors(Z.Z_AXIS,t).normalize();const s=t.clone().cross(e).normalize();this.set(e.x,e.y,e.z,0,s.x,s.y,s.z,0,t.x,t.y,t.z,0,0,0,0,1)}return this}extractBasis(t,e,s){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),s.setFromMatrixColumn(this,2),this}makeBasis(t,e,s){return this.set(t.x,e.x,s.x,0,t.y,e.y,s.y,0,t.z,e.z,s.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,s=t.elements,o=1/Ln.setFromMatrixColumn(t,0).length(),h=1/Ln.setFromMatrixColumn(t,1).length(),c=1/Ln.setFromMatrixColumn(t,2).length();return e[0]=s[0]*o,e[1]=s[1]*o,e[2]=s[2]*o,e[3]=0,e[4]=s[4]*h,e[5]=s[5]*h,e[6]=s[6]*h,e[7]=0,e[8]=s[8]*c,e[9]=s[9]*c,e[10]=s[10]*c,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Yd,t,Xd)}lookAt(t,e,s){const o=this.elements;return Be.subVectors(t,e),Be.lengthSq()===0&&(Be.z=1),Be.normalize(),Ur.crossVectors(s,Be),Ur.lengthSq()===0&&(Math.abs(s.z)===1?Be.x+=1e-4:Be.z+=1e-4,Be.normalize(),Ur.crossVectors(s,Be)),Ur.normalize(),Ws.crossVectors(Be,Ur),o[0]=Ur.x,o[4]=Ws.x,o[8]=Be.x,o[1]=Ur.y,o[5]=Ws.y,o[9]=Be.y,o[2]=Ur.z,o[6]=Ws.z,o[10]=Be.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const s=t.elements,o=e.elements,h=this.elements,c=s[0],f=s[4],x=s[8],g=s[12],A=s[1],b=s[5],E=s[9],T=s[13],R=s[2],O=s[6],U=s[10],D=s[14],dt=s[3],vt=s[7],ot=s[11],W=s[15],ut=o[0],st=o[4],Vt=o[8],Yt=o[12],Wt=o[1],bt=o[5],Lt=o[9],de=o[13],me=o[2],Pe=o[6],Jt=o[10],ae=o[14],Q=o[3],Mt=o[7],oe=o[11],hr=o[15];return h[0]=c*ut+f*Wt+x*me+g*Q,h[4]=c*st+f*bt+x*Pe+g*Mt,h[8]=c*Vt+f*Lt+x*Jt+g*oe,h[12]=c*Yt+f*de+x*ae+g*hr,h[1]=A*ut+b*Wt+E*me+T*Q,h[5]=A*st+b*bt+E*Pe+T*Mt,h[9]=A*Vt+b*Lt+E*Jt+T*oe,h[13]=A*Yt+b*de+E*ae+T*hr,h[2]=R*ut+O*Wt+U*me+D*Q,h[6]=R*st+O*bt+U*Pe+D*Mt,h[10]=R*Vt+O*Lt+U*Jt+D*oe,h[14]=R*Yt+O*de+U*ae+D*hr,h[3]=dt*ut+vt*Wt+ot*me+W*Q,h[7]=dt*st+vt*bt+ot*Pe+W*Mt,h[11]=dt*Vt+vt*Lt+ot*Jt+W*oe,h[15]=dt*Yt+vt*de+ot*ae+W*hr,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],s=t[4],o=t[8],h=t[12],c=t[1],f=t[5],x=t[9],g=t[13],A=t[2],b=t[6],E=t[10],T=t[14],R=t[3],O=t[7],U=t[11],D=t[15];return R*(+h*x*b-o*g*b-h*f*E+s*g*E+o*f*T-s*x*T)+O*(+e*x*T-e*g*E+h*c*E-o*c*T+o*g*A-h*x*A)+U*(+e*g*b-e*f*T-h*c*b+s*c*T+h*f*A-s*g*A)+D*(-o*f*A-e*x*b+e*f*E+o*c*b-s*c*E+s*x*A)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,s){const o=this.elements;return t instanceof Z?(o[12]=t.x,o[13]=t.y,o[14]=t.z):(o[12]=t,o[13]=e,o[14]=s),this}invert(){const t=this.elements,e=t[0],s=t[1],o=t[2],h=t[3],c=t[4],f=t[5],x=t[6],g=t[7],A=t[8],b=t[9],E=t[10],T=t[11],R=t[12],O=t[13],U=t[14],D=t[15],dt=b*U*g-O*E*g+O*x*T-f*U*T-b*x*D+f*E*D,vt=R*E*g-A*U*g-R*x*T+c*U*T+A*x*D-c*E*D,ot=A*O*g-R*b*g+R*f*T-c*O*T-A*f*D+c*b*D,W=R*b*x-A*O*x-R*f*E+c*O*E+A*f*U-c*b*U,ut=e*dt+s*vt+o*ot+h*W;if(ut===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const st=1/ut;return t[0]=dt*st,t[1]=(O*E*h-b*U*h-O*o*T+s*U*T+b*o*D-s*E*D)*st,t[2]=(f*U*h-O*x*h+O*o*g-s*U*g-f*o*D+s*x*D)*st,t[3]=(b*x*h-f*E*h-b*o*g+s*E*g+f*o*T-s*x*T)*st,t[4]=vt*st,t[5]=(A*U*h-R*E*h+R*o*T-e*U*T-A*o*D+e*E*D)*st,t[6]=(R*x*h-c*U*h-R*o*g+e*U*g+c*o*D-e*x*D)*st,t[7]=(c*E*h-A*x*h+A*o*g-e*E*g-c*o*T+e*x*T)*st,t[8]=ot*st,t[9]=(R*b*h-A*O*h-R*s*T+e*O*T+A*s*D-e*b*D)*st,t[10]=(c*O*h-R*f*h+R*s*g-e*O*g-c*s*D+e*f*D)*st,t[11]=(A*f*h-c*b*h-A*s*g+e*b*g+c*s*T-e*f*T)*st,t[12]=W*st,t[13]=(A*O*o-R*b*o+R*s*E-e*O*E-A*s*U+e*b*U)*st,t[14]=(R*f*o-c*O*o-R*s*x+e*O*x+c*s*U-e*f*U)*st,t[15]=(c*b*o-A*f*o+A*s*x-e*b*x-c*s*E+e*f*E)*st,this}scale(t){const e=this.elements,s=t.x,o=t.y,h=t.z;return e[0]*=s,e[4]*=o,e[8]*=h,e[1]*=s,e[5]*=o,e[9]*=h,e[2]*=s,e[6]*=o,e[10]*=h,e[3]*=s,e[7]*=o,e[11]*=h,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],s=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],o=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,s,o))}makeTranslation(t,e,s){return t instanceof Z?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,s,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),s=Math.sin(t);return this.set(1,0,0,0,0,e,-s,0,0,s,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),s=Math.sin(t);return this.set(e,0,s,0,0,1,0,0,-s,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),s=Math.sin(t);return this.set(e,-s,0,0,s,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const s=Math.cos(e),o=Math.sin(e),h=1-s,c=t.x,f=t.y,x=t.z,g=h*c,A=h*f;return this.set(g*c+s,g*f-o*x,g*x+o*f,0,g*f+o*x,A*f+s,A*x-o*c,0,g*x-o*f,A*x+o*c,h*x*x+s,0,0,0,0,1),this}makeScale(t,e,s){return this.set(t,0,0,0,0,e,0,0,0,0,s,0,0,0,0,1),this}makeShear(t,e,s,o,h,c){return this.set(1,s,h,0,t,1,c,0,e,o,1,0,0,0,0,1),this}compose(t,e,s){const o=this.elements,h=e.x,c=e.y,f=e.z,x=e.w,g=h+h,A=c+c,b=f+f,E=h*g,T=h*A,R=h*b,O=c*A,U=c*b,D=f*b,dt=x*g,vt=x*A,ot=x*b,W=s.x,ut=s.y,st=s.z;return o[0]=(1-(O+D))*W,o[1]=(T+ot)*W,o[2]=(R-vt)*W,o[3]=0,o[4]=(T-ot)*ut,o[5]=(1-(E+D))*ut,o[6]=(U+dt)*ut,o[7]=0,o[8]=(R+vt)*st,o[9]=(U-dt)*st,o[10]=(1-(E+O))*st,o[11]=0,o[12]=t.x,o[13]=t.y,o[14]=t.z,o[15]=1,this}decompose(t,e,s){const o=this.elements;let h=Ln.set(o[0],o[1],o[2]).length();const c=Ln.set(o[4],o[5],o[6]).length(),f=Ln.set(o[8],o[9],o[10]).length();this.determinant()<0&&(h=-h),t.x=o[12],t.y=o[13],t.z=o[14],rr.copy(this);const x=1/h,g=1/c,A=1/f;return rr.elements[0]*=x,rr.elements[1]*=x,rr.elements[2]*=x,rr.elements[4]*=g,rr.elements[5]*=g,rr.elements[6]*=g,rr.elements[8]*=A,rr.elements[9]*=A,rr.elements[10]*=A,e.setFromRotationMatrix(rr),s.x=h,s.y=c,s.z=f,this}equals(t){const e=this.elements,s=t.elements;for(let o=0;o<16;o++)if(e[o]!==s[o])return!1;return!0}fromArray(t,e=0){for(let s=0;s<16;s++)this.elements[s]=t[s+e];return this}toArray(t=[],e=0){const s=this.elements;return t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3],t[e+4]=s[4],t[e+5]=s[5],t[e+6]=s[6],t[e+7]=s[7],t[e+8]=s[8],t[e+9]=s[9],t[e+10]=s[10],t[e+11]=s[11],t[e+12]=s[12],t[e+13]=s[13],t[e+14]=s[14],t[e+15]=s[15],t}};ma.IDENTITY=Object.freeze(new ma);let gn=ma;const Ln=new Z,rr=new gn,Yd=new Z(0,0,0),Xd=new Z(1,1,1),Ur=new Z,Ws=new Z,Be=new Z;class Rt{constructor(t=void 0,e=void 0){this.min=t==null?new Z(1/0,1/0,1/0):new Z(t.x,t.y,t.z),this.max=e==null?new Z(-1/0,-1/0,-1/0):new Z(e.x,e.y,e.z)}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,s=t.length;e<s;e+=3)this.expandByPoint(oa.fromArray(t,e));return this}setFromPoints(t){this.makeEmpty();for(let e=0,s=t.length;e<s;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){const s=oa.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(s),this.max.copy(t).add(s),this}clone(){return new Rt().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new Z(0,0,0):new Z(0,0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new Z(0,0,0):new Z(0,0,0).subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}containsPoint(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y||t.z<this.min.z||t.z>this.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y||t.max.z<this.min.z||t.min.z>this.max.z)}intersectsPlane(t){let e,s;return t.normal.x>0?(e=t.normal.x*this.min.x,s=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,s=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,s+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,s+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,s+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,s+=t.normal.z*this.min.z),e<=-t.constant&&s>=-t.constant}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,oa).distanceTo(t)}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Er[0].set(this.min.x,this.min.y,this.min.z).applyMatrix3d(t),Er[1].set(this.min.x,this.min.y,this.max.z).applyMatrix3d(t),Er[2].set(this.min.x,this.max.y,this.min.z).applyMatrix3d(t),Er[3].set(this.min.x,this.max.y,this.max.z).applyMatrix3d(t),Er[4].set(this.max.x,this.min.y,this.min.z).applyMatrix3d(t),Er[5].set(this.max.x,this.min.y,this.max.z).applyMatrix3d(t),Er[6].set(this.max.x,this.max.y,this.min.z).applyMatrix3d(t),Er[7].set(this.max.x,this.max.y,this.max.z).applyMatrix3d(t),this.setFromPoints(Er),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}const Er=[new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z],oa=new Z,Vo=new $t;class _e{constructor(t=void 0,e=void 0){this.min=t==null?new $t(1/0,1/0):new $t(t.x,t.y),this.max=e==null?new $t(-1/0,-1/0):new $t(e.x,e.y)}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromPoints(t){this.makeEmpty();for(let e=0,s=t.length;e<s;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){const s=Vo.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(s),this.max.copy(t).add(s),this}clone(){return new _e().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(t){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0):t.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new $t(0,0):new $t(0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new $t(0,0):new $t(0,0).subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}containsPoint(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y)}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,Vo).distanceTo(t)}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}const jo=new Z,Kd=new Z,$d=new Ci;class Bs{constructor(t=new Z(1,0,0),e=0){this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,s,o){return this.normal.set(t,e,s),this.constant=o,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,s){const o=jo.subVectors(s,e).cross(Kd.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(o,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectsBox(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const s=e||$d.getNormalMatrix(t),o=this.coplanarPoint(jo).applyMatrix3d(t),h=this.normal.applyMatrix3(s).normalize();return this.constant=-o.dot(h),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new Bs().copy(this)}}class Tt extends $t{static pointArrayToNumberArray(t){const e=new Array(t.length*2);return t.forEach((s,o)=>{s.toArray(e,o*2)}),e}}class Y extends Z{static pointArrayToNumberArray(t,e=!0){const s=e?3:2,o=new Array(t.length*s);return t.forEach((h,c)=>{h.toArray(o,c*s)}),o}}const Go=new gn,Wo=new Hr,Qh=class pa{constructor(t=0,e=0,s=0,o=pa.DEFAULT_ORDER){this._x=t,this._y=e,this._z=s,this._order=o}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,s,o=this._order){return this._x=t,this._y=e,this._z=s,this._order=o,this._onChangeCallback(),this}clone(){return new pa(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,s=!0){const o=t.elements,h=o[0],c=o[4],f=o[8],x=o[1],g=o[5],A=o[9],b=o[2],E=o[6],T=o[10];switch(e){case"XYZ":this._y=Math.asin(kr(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(-A,T),this._z=Math.atan2(-c,h)):(this._x=Math.atan2(E,g),this._z=0);break;case"YXZ":this._x=Math.asin(-kr(A,-1,1)),Math.abs(A)<.9999999?(this._y=Math.atan2(f,T),this._z=Math.atan2(x,g)):(this._y=Math.atan2(-b,h),this._z=0);break;case"ZXY":this._x=Math.asin(kr(E,-1,1)),Math.abs(E)<.9999999?(this._y=Math.atan2(-b,T),this._z=Math.atan2(-c,g)):(this._y=0,this._z=Math.atan2(x,h));break;case"ZYX":this._y=Math.asin(-kr(b,-1,1)),Math.abs(b)<.9999999?(this._x=Math.atan2(E,T),this._z=Math.atan2(x,h)):(this._x=0,this._z=Math.atan2(-c,g));break;case"YZX":this._z=Math.asin(kr(x,-1,1)),Math.abs(x)<.9999999?(this._x=Math.atan2(-A,g),this._y=Math.atan2(-b,h)):(this._x=0,this._y=Math.atan2(f,T));break;case"XZY":this._z=Math.asin(-kr(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(E,g),this._y=Math.atan2(f,h)):(this._x=Math.atan2(-A,T),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,s===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,s=!0){return Go.makeRotationFromQuaternion(t),this.setFromRotationMatrix(Go,e,s)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return Wo.setFromEuler(this),this.setFromQuaternion(Wo,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};Qh.DEFAULT_ORDER="XYZ";let Jh=Qh;class tu{constructor(){this._boundingBoxNeedsUpdate=!1}get boundingBoxNeedUpdate(){return this._boundingBoxNeedsUpdate}}class Ca extends tu{translate(t){return this.transform(new Ci().makeTranslation(t.x,t.y))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class Li extends Ca{constructor(){super(),this._loops=[]}add(t){this._loops.push(t),this._boundingBoxNeedsUpdate=!0}get loops(){return this._loops}get outter(){if(this._loops.length>0)return this._loops[0]}calculateBoundingBox(){const t=this.outter;return t?t.box:new _e}transform(t){return this._boundingBoxNeedsUpdate=!0,this}getPoints(t){const e=[];for(let s=0;s<this.loops.length;++s){const o=this.loops[s].getPoints(t);e.push(o)}return e}buildHierarchy(){var t;const e=this.getPoints(100),s=this.calculateBoundaryBoxes(e),o=this.sortBoundaryBoxesByAreas(s),h=new Map,c=o.length;for(let x=0;x<c;x++)h.set(o[x],{index:o[x],children:[]});const f={index:-1,children:[]};for(let x=0;x<c;x++){const g=o[x],A=e[g],b=s[g];let E=x+1;for(;E<c;E++){const T=o[E],R=e[T];if(s[T].containsBox(b)&&Hh.isPointInPolygon(A[Et.randInt(0,A.length-1)],R)){(t=h.get(T))==null||t.children.push(h.get(g));break}}E===c&&f.children.push(h.get(g))}return f}calculateBoundaryBoxes(t){const e=[];return t.forEach(s=>{e.push(new _e().setFromPoints(s))}),e}sortBoundaryBoxesByAreas(t){const e=[];t.forEach((o,h)=>{const c=o.size,f=c.width*c.height;e.push({area:f,index:h})}),e.sort((o,h)=>o.area-h.area);const s=[];return e.forEach(o=>{s.push(o.index)}),s}}class Vn extends Ca{constructor(){super(),this.arcLengthDivisions=100}get startPoint(){return this.getPoint(0)}get endPoint(){return this.getPoint(1)}get length(){return this.getLength()}getPoint(t){throw new Error("AcGeCurve2d: .getPoint() not implemented.")}getPointAt(t){const e=this.getUtoTmapping(t);return this.getPoint(e)}getPoints(t=5){const e=[];for(let s=0;s<=t;s++)e.push(this.getPoint(s/t));return e}getSpacedPoints(t=5){const e=[];for(let s=0;s<=t;s++)e.push(this.getPointAt(s/t));return e}getLength(){const t=this.getLengths();return t[t.length-1]}getLengths(t=this.arcLengthDivisions){const e=[];let s,o=this.getPoint(0),h=0;e.push(0);for(let c=1;c<=t;c++)s=this.getPoint(c/t),h+=s.distanceTo(o),e.push(h),o=s;return e}getUtoTmapping(t,e){const s=this.getLengths();let o=0;const h=s.length;let c;e?c=e:c=t*s[h-1];let f=0,x=h-1,g;for(;f<=x;)if(o=Math.floor(f+(x-f)/2),g=s[o]-c,g<0)f=o+1;else if(g>0)x=o-1;else{x=o;break}if(o=x,s[o]===c)return o/(h-1);const A=s[o],b=s[o+1]-A,E=(c-A)/b;return(o+E)/(h-1)}getTangent(t){let e=t-1e-4,s=t+1e-4;e<0&&(e=0),s>1&&(s=1);const o=this.getPoint(e),h=this.getPoint(s),c=new Tt;return c.copy(h).sub(o).normalize(),c}getTangentAt(t){const e=this.getUtoTmapping(t);return this.getTangent(e)}}class Rn extends Vn{constructor(t,e,s,o,h){super();const c=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0)+ +(o!==void 0)+ +(h!==void 0);if(c==3)typeof t=="object"&&typeof e=="object"&&typeof s=="object"?this.createByThreePoints(t,e,s):this.createByStartEndPointsAndBulge(t,e,s);else if(c==5){const f=t;this.center=new Tt(f.x,f.y),this.radius=e,this._clockwise=h,this._startAngle=this._clockwise?this._mirrorAngle(Et.normalizeAngle(s)):Et.normalizeAngle(s),this._endAngle=this._clockwise?this._mirrorAngle(Et.normalizeAngle(o)):Et.normalizeAngle(o)}else throw Ue.ILLEGAL_PARAMETERS}createByThreePoints(t,e,s){const o=(st,Vt)=>({x:(st.x+Vt.x)/2,y:(st.y+Vt.y)/2}),h=(st,Vt)=>(Vt.y-st.y)/(Vt.x-st.x),c=st=>-1/st,f=o(t,e),x=o(e,s),g=h(t,e),A=h(e,s),b=c(g),E=c(A),T=(st,Vt,Yt,Wt)=>{const bt=(Wt-Vt)/(st-Yt),Lt=st*bt+Vt;return{x:bt,y:Lt}},R=f.y-b*f.x,O=x.y-E*x.x,U=T(b,R,E,O),D=Math.sqrt(Math.pow(t.x-U.x,2)+Math.pow(t.y-U.y,2)),dt=(st,Vt)=>Math.atan2(st.y-Vt.y,st.x-Vt.x),vt=dt(t,U),ot=dt(e,U),W=dt(s,U),ut=W>vt&&W<ot||vt>W&&vt<ot||ot>W&&ot<vt;this.center=U,this.radius=D,this._clockwise=!ut,this._startAngle=vt,this._endAngle=W}createByStartEndPointsAndBulge(t,e,s){let o,h,c;s<0?(o=Math.atan(-s)*4,h=new $t(t),c=new $t(e)):(o=Math.atan(s)*4,h=new $t(e),c=new $t(t));const f=new $t().subVectors(c,h),x=f.length(),g=new $t().addVectors(h,f.multiplyScalar(.5)),A=Math.abs(x/2/Math.tan(o/2)),b=f.normalize();let E;if(o<Math.PI){const T=new $t(b.x*Math.cos(Math.PI/2)-b.y*Math.sin(Math.PI/2),b.y*Math.cos(Math.PI/2)+b.x*Math.sin(Math.PI/2));E=g.add(T.multiplyScalar(-A))}else{const T=new $t(b.x*Math.cos(Math.PI/2)-b.y*Math.sin(Math.PI/2),b.y*Math.cos(Math.PI/2)+b.x*Math.sin(Math.PI/2));E=g.add(T.multiplyScalar(A))}s<0?(this._startAngle=Math.atan2(h.y-E.y,h.x-E.x),this._endAngle=Math.atan2(c.y-E.y,c.x-E.x)):(this._startAngle=Math.atan2(c.y-E.y,c.x-E.x),this._endAngle=Math.atan2(h.y-E.y,h.x-E.x)),this._clockwise=s<0,this.center=E,this.radius=c.sub(E).length()}get center(){return this._center}set center(t){this._center=new Tt(t.x,t.y),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(t){this._radius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._clockwise?this._mirrorAngle(this._startAngle):this._startAngle}set startAngle(t){this._startAngle=this._clockwise?this._mirrorAngle(Et.normalizeAngle(t)):Et.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._clockwise?this._mirrorAngle(this._endAngle):this._endAngle}set endAngle(t){const e=this.startAngle==0&&t==ne?t:Et.normalizeAngle(t);this._endAngle=this._clockwise?this._mirrorAngle(e):e,this._boundingBoxNeedsUpdate=!0}_mirrorAngle(t){return(360-t*180/Math.PI)%360*Math.PI/180}_getInternalAngle(t){return this._clockwise?this._mirrorAngle(t):t}get deltaAngle(){const t=this._getInternalAngle(this.startAngle),e=this._getInternalAngle(this.endAngle);return this.clockwise?Et.normalizeAngle(t-e):Et.normalizeAngle(e-t)}get clockwise(){return this._clockwise}set clockwise(t){this._clockwise=t,this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this.startAngle)}get endPoint(){return this.getPointAtAngle(this.endAngle)}get midPoint(){const t=this._getInternalAngle(this.startAngle),e=this._getInternalAngle(this.endAngle),s=Et.normalizeAngle((t+e)/2),o=this._clockwise?this._mirrorAngle(s):s;return this.getPointAtAngle(o)}get closed(){const t=this._getInternalAngle(this.startAngle),e=this._getInternalAngle(this.endAngle);return Math.abs(e-t)/Math.PI%2==0}calculateBoundingBox(){const t=[this.startPoint,this.endPoint],e=[0,Math.PI/2,Math.PI,3*Math.PI/2];for(const h of e){const c=this._getInternalAngle(h);Et.isBetweenAngle(c,this._getInternalAngle(this.startAngle),this._getInternalAngle(this.endAngle),this.clockwise)&&t.push(this.getPointAtAngle(h))}const s=t.map(h=>h.x),o=t.map(h=>h.y);return new _e(new Tt(Math.min(...s),Math.min(...o)),new Tt(Math.max(...s),Math.max(...o)))}get length(){return Math.abs(this.deltaAngle*this.radius)}transform(t){return this._boundingBoxNeedsUpdate=!0,this}clone(){return new Rn(this.center.clone(),this.radius,this._startAngle,this._endAngle,this.clockwise)}getPointAtAngle(t){const e=this._getInternalAngle(t),s=this.center.x+this.radius*Math.cos(e),o=this.center.y+this.radius*Math.sin(e);return new Tt(s,o)}getPoints(t=100){const e=[];let s=this.deltaAngle,o=this._getInternalAngle(this.startAngle);if(this.closed&&(s=ne,o=0),this.clockwise)for(let h=0;h<=t;h++){const c=o-s*(h/t),f=this._clockwise?this._mirrorAngle(c):c,x=this.getPointAtAngle(f);e.push(new Tt(x.x,x.y))}else for(let h=0;h<=t;h++){const c=o+s*(h/t),f=this._clockwise?this._mirrorAngle(c):c,x=this.getPointAtAngle(f);e.push(new Tt(x.x,x.y))}return e}}class Zd extends tu{translate(t){return this.transform(new gn().makeTranslation(t.x,t.y,t.z))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class Ds extends Zd{}class qr extends Ds{constructor(t,e){super(),this._start=new Y(t),this._end=new Y(e)}get startPoint(){return this._start}set startPoint(t){this._start.copy(t),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(t){this._end.copy(t),this._boundingBoxNeedsUpdate=!0}get direction(){return new Z().subVectors(this.endPoint,this.startPoint).normalize()}get midPoint(){return new Y((this._start.x+this._end.x)/2,(this._start.y+this._end.y)/2,(this._start.z+this._end.z)/2)}get length(){return this.startPoint.distanceTo(this.endPoint)}isPointOnLine(t){return this.project(t).distanceTo(t)<1e-6}at(t,e){return this.delta(e).multiplyScalar(t).add(this._start)}atLength(t,e=!1){if(e){const s=this.delta(hn).normalize();return new Y(this._start).addScaledVector(s,t)}else{const s=this.delta(hn).normalize();return new Y(this._end).addScaledVector(s,t)}}extend(t,e=!1){if(e){const s=hn.subVectors(this._start,this._end).normalize();this._start=new Y(this._start).addScaledVector(s,t)}else{const s=this.delta(hn).normalize();this._end=new Y(this._end).addScaledVector(s,t)}return this._boundingBoxNeedsUpdate=!0,this}closestPointToPointParameter(t,e){Ho.subVectors(t,this._start),Hs.subVectors(this.endPoint,this.startPoint);const s=Hs.dot(Hs);let o=Hs.dot(Ho)/s;return e&&(o=Et.clamp(o,0,1)),o}closestPointToPoint(t,e,s){const o=this.closestPointToPointParameter(t,e);return this.delta(s).multiplyScalar(o).add(this._start)}delta(t){return t.subVectors(this._end,this._start)}distanceSq(){return this._start.distanceToSquared(this._end)}distance(){return this._start.distanceTo(this._end)}project(t){const e=this.direction,s=hn.subVectors(t,this.startPoint).dot(e);return new Y().copy(e).multiplyScalar(s).add(this.startPoint)}perpPoint(t){const e=this.direction,s=this.startPoint,o=hn.subVectors(t,s).dot(e),h=hn.copy(e).multiplyScalar(o);return new Y().addVectors(s,h)}calculateBoundingBox(){const t=new Y(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y),Math.min(this._start.z,this._end.z)),e=new Y(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y),Math.max(this._start.z,this._end.z));return new Rt(t,e)}transform(t){return this._start.applyMatrix3d(t),this._end.applyMatrix3d(t),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(t){return this.startPoint=t.startPoint,this.endPoint=t.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new qr(this._start.clone(),this._end.clone())}}const hn=new Z,Ho=new Z,Hs=new Z;class pn extends Ds{static computeCenterPoint(t,e,s){const o=new Z().addVectors(t,e).multiplyScalar(.5),h=new Z().addVectors(t,s).multiplyScalar(.5),c=new Z().subVectors(e,t),f=new Z().subVectors(s,t),x=new Z().crossVectors(c,f).normalize();if(x.lengthSq()===0)return console.error("Points are collinear and cannot form a valid arc."),null;const g=new Z().crossVectors(c,x).normalize(),A=new Z().crossVectors(f,x).normalize(),b=g.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),E=A.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),T=new qr(o,o.clone().add(b)),R=new qr(h,h.clone().add(E)),O=new Z;return T.closestPointToPoint(R.startPoint,!0,O)?O:(console.error("Cannot find a valid center for the arc."),null)}static createByThreePoints(t,e,s){const o=pn.computeCenterPoint(t,e,s);if(o){const h=o.distanceTo(t),c=new Z().subVectors(t,o),f=new Z().subVectors(e,o),x=Math.atan2(c.y,c.x),g=Math.atan2(f.y,f.x);return new pn(o,h,x,g,Z.Z_AXIS)}}constructor(t,e,s,o,h,c=Z.X_AXIS){super(),this.center=t,this.radius=e,this.startAngle=s,this.endAngle=o,this.normal=h,this.refVec=c,(o-s)%ne==0?(this.startAngle=0,this.endAngle=ne):(this.startAngle=s,this.endAngle=o)}get center(){return this._center}set center(t){this._center=new Y(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(t){if(t<0)throw Ue.ILLEGAL_PARAMETERS;this._radius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=Et.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==ne?t:Et.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return Et.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(t){this._normal=new Z(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get refVec(){return this._refVec}set refVec(t){this._refVec=new Z(t.x,t.y,t.z),this._refVec.normalize(),this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get length(){return Math.abs(this.deltaAngle*this.radius)}calculateBoundingBox(){const t=[this.startAngle,this.endAngle];for(let x=0;x<2*Math.PI;x+=Math.PI/2)Et.isBetweenAngle(x,this.startAngle,this.endAngle)&&t.push(x);let e=1/0,s=1/0,o=1/0,h=-1/0,c=-1/0,f=-1/0;for(const x of t){const g=this.getPointAtAngle(x);g.x<e&&(e=g.x),g.y<s&&(s=g.y),g.z<o&&(o=g.z),g.x>h&&(h=g.x),g.y>c&&(c=g.y),g.z>f&&(f=g.z)}return new Rt({x:e,y:s,z:o},{x:h,y:c,z:f})}get closed(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0}getPoints(t){const e=[];let s=this.deltaAngle,o=this.startAngle;this.closed&&(s=ne,o=0);for(let h=0;h<=t;h++){const c=o+s*(h/t),f=this.getPointAtAngle(c);e.push(f)}return e}transform(t){const e=la.copy(this.refVec).applyAxisAngle(this.normal,this.startAngle).multiplyScalar(this.radius),s=la.copy(this.refVec).applyAxisAngle(this.normal,this.endAngle).multiplyScalar(this.radius);return this.center.applyMatrix3d(t),e.applyMatrix3d(t),s.applyMatrix3d(t),this.normal.applyMatrix3d(t).normalize(),this.refVec.applyMatrix3d(t).normalize(),this.startAngle=this.getAngle(e),this.endAngle=this.getAngle(s),this._boundingBoxNeedsUpdate=!0,this}copy(t){return this.center=t.center,this.radius=t.radius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this.normal=t.normal,this.refVec=t.refVec,this._boundingBoxNeedsUpdate=!0,this}clone(){return new pn(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.normal,this.refVec)}getAngle(t){return t.sub(this.center),Math.atan2(t.dot(la.crossVectors(this.refVec,this.normal)),t.dot(this.refVec))}getPointAtAngle(t){const e=this.normal,s=this.refVec,o={x:e.y*s.z-e.z*s.y,y:e.z*s.x-e.x*s.z,z:e.x*s.y-e.y*s.x},h=this.center,c=this.radius;return new Y(h.x+c*(s.x*Math.cos(t)+o.x*Math.sin(t)),h.y+c*(s.y*Math.cos(t)+o.y*Math.sin(t)),h.z+c*(s.z*Math.cos(t)+o.z*Math.sin(t)))}get plane(){const t=new Z(this.center).distanceTo(ka);return new Bs(this.normal,t)}}const la=new Z;class Oi extends Vn{constructor(t,e,s,o=0,h=ne,c=!1,f=0){super(),this.center=t,this.majorAxisRadius=e,this.minorAxisRadius=s,(h-o)%ne==0?(this.startAngle=0,this.endAngle=ne):(this.startAngle=o,this.endAngle=h),this.clockwise=c,this.rotation=f}get center(){return this._center}set center(t){this._center=new Y(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw Ue.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw Ue.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=Et.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==ne?t:Et.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get clockwise(){return this._clockwise}set clockwise(t){this._clockwise=t,this._boundingBoxNeedsUpdate=!0}get rotation(){return this._rotation}set rotation(t){this._rotation=t,this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return Et.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}calculateBoundingBox(){let t=1/0,e=1/0,s=-1/0,o=-1/0;for(let h=0;h<=100;h++){const c=this.getPoint(h/100);t=Math.min(t,c.x),e=Math.min(e,c.y),s=Math.max(s,c.x),o=Math.max(o,c.y)}return new _e({x:t,y:e},{x:s,y:o})}get closed(){return this.deltaAngle==0}getPoint(t){const e=Math.PI*2;let s=this.endAngle-this.startAngle;const o=Math.abs(s)<Number.EPSILON;for(;s<0;)s+=e;for(;s>e;)s-=e;s<Number.EPSILON&&(o?s=0:s=e),this.clockwise===!0&&!o&&(s===e?s=-e:s=s-e);const h=this.startAngle+t*s;let c=this.center.x+this.majorAxisRadius*Math.cos(h),f=this.center.y+this.minorAxisRadius*Math.sin(h);if(this.rotation!==0){const x=Math.cos(this.rotation),g=Math.sin(this.rotation),A=c-this.center.x,b=f-this.center.y;c=A*x-b*g+this.center.x,f=A*g+b*x+this.center.y}return new Tt(c,f)}transform(t){return this._boundingBoxNeedsUpdate=!0,this}copy(t){return this.center=t.center,this.majorAxisRadius=t.majorAxisRadius,this.minorAxisRadius=t.minorAxisRadius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this.clockwise=t.clockwise,this.rotation=t.rotation,this}clone(){return new Oi(this.center,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle,this.clockwise,this.rotation)}}class zi extends Ds{constructor(t,e,s,o,h,c=0,f=ne){super(),this.center=t,this.normal=e,this.majorAxis=s,this.majorAxisRadius=o,this.minorAxisRadius=h;const x=Math.abs(f-c);Math.abs(x-ne)<1e-10||Math.abs(x-2*ne)<1e-10?(this.startAngle=0,this.endAngle=ne):(this.startAngle=c,this.endAngle=f)}get center(){return this._center}set center(t){this._center=new Y(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw Ue.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw Ue.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=Et.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==ne?t:Et.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){const t=this.endAngle-this.startAngle;return Math.abs(t-ne)<1e-10?ne:Et.normalizeAngle(t)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(t){this._normal=new Z(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get majorAxis(){return this._majorAxis}set majorAxis(t){this._majorAxis=new Z(t.x,t.y,t.z),this._majorAxis.normalize(),this._boundingBoxNeedsUpdate=!0}get minorAxis(){return new Z().crossVectors(this.normal,this.majorAxis).normalize()}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get isCircular(){return Ta.equal(this.majorAxisRadius,this.minorAxisRadius)}get length(){if(this.isCircular)return this.majorAxisRadius*Math.abs(this.deltaAngle);const t=1e3,e=this.deltaAngle/t;let s=0,o=this.getPointAtAngle(this.startAngle);for(let h=1;h<=t;h++){const c=this.startAngle+h*e,f=this.getPointAtAngle(c),x=f.x-o.x,g=f.y-o.y,A=f.z-o.z;s+=Math.sqrt(x*x+g*g+A*A),o=f}return s}calculateBoundingBox(){if(this.majorAxis.equals(Z.X_AXIS)||this.majorAxis.equals(Z.Y_AXIS)||this.majorAxis.isParallelTo(Z.X_AXIS)||this.majorAxis.isParallelTo(Z.Y_AXIS)){const t=[this.startAngle,this.endAngle];for(let x=0;x<2*Math.PI;x+=Math.PI/2)Et.isBetweenAngle(x,this.startAngle,this.endAngle)&&t.push(x);let e=1/0,s=1/0,o=1/0,h=-1/0,c=-1/0,f=-1/0;for(const x of t){const g=this.getPointAtAngle(x);g.x<e&&(e=g.x),g.y<s&&(s=g.y),g.z<o&&(o=g.z),g.x>h&&(h=g.x),g.y>c&&(c=g.y),g.z>f&&(f=g.z)}return new Rt({x:e,y:s,z:o},{x:h,y:c,z:f})}else{let t=1/0,e=1/0,s=1/0,o=-1/0,h=-1/0,c=-1/0;for(let f=0;f<=100;f++){const x=this.startAngle+this.deltaAngle*(f/100),g=this.getPointAtAngle(x);t=Math.min(t,g.x),e=Math.min(e,g.y),s=Math.min(s,g.z),o=Math.max(o,g.x),h=Math.max(h,g.y),c=Math.max(c,g.z)}return new Rt({x:t,y:e,z:s},{x:o,y:h,z:c})}}get closed(){return this.deltaAngle==0}getPoints(t=100){const e=[];let s=this.deltaAngle,o=this.startAngle;this.closed&&(s=ne,o=0);for(let h=0;h<=t;h++){const c=o+s*(h/t),f=this.getPointAtAngle(c);e.push(f)}return e}getPointAtAngle(t){const e=Math.cos(t),s=Math.sin(t),o=this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).multiplyScalar(s),h=this.majorAxis.clone().multiplyScalar(e*this.majorAxisRadius).add(o);return new Y(this.center.x+h.x,this.center.y+h.y,this.center.z+h.z)}contains(t){const e=new Z(t).sub(this.center),s=e.dot(this.majorAxis),o=e.dot(this.minorAxis),h=s/this.majorAxisRadius,c=o/this.minorAxisRadius;return h*h+c*c<=1}transform(t){return this._boundingBoxNeedsUpdate=!0,this}copy(t){return this.center=t.center,this.normal=t.normal,this.majorAxis=t.majorAxis,this.majorAxisRadius=t.majorAxisRadius,this.minorAxisRadius=t.minorAxisRadius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this._boundingBoxNeedsUpdate=!0,this}clone(){return new zi(this.center,this.normal,this.majorAxis,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle)}get plane(){const t=new Z(this.center).distanceTo(ka);return new Bs(this.normal,t)}}class Fs extends Vn{constructor(t=null,e=!1){super(),this._vertices=t||new Array,this._closed=e}get numberOfVertices(){return this._vertices.length}get closed(){return this._closed}get startPoint(){if(this.numberOfVertices>0){const t=this._vertices[0];return new Tt(t.x,t.y)}throw new Error("Start point does not exist in an empty polyline.")}get endPoint(){const t=this.numberOfVertices;if(t>0)if(this.closed){const e=this._vertices[0];return new Tt(e.x,e.y)}else{const e=this._vertices[t-1];return new Tt(e.x,e.y)}throw new Error("End point does not exist in an empty polyline.")}get length(){let t=0;const e=this._vertices.length;for(let s=0;s<e;++s){const o=this._vertices[s];let h=null;if(s<e-1?h=this._vertices[s+1]:s==e-1&&this.closed&&(h=this._vertices[0]),h)if(o.bulge){const c=new Rn(o,h,o.bulge);t+=c.length}else t+=new Tt(o.x,o.y).distanceTo(h)}return t}set closed(t){this._closed=t,this._boundingBoxNeedsUpdate=!0}addVertexAt(t,e){t<=0?this._vertices.unshift(e):this._vertices.splice(t,0,e),this._boundingBoxNeedsUpdate=!0}getPointAt(t){const e=this._vertices[t];return new Tt(e.x,e.y)}calculateBoundingBox(){const t=this.getPoints(100);return new _e().setFromPoints(t)}transform(t){return this._boundingBoxNeedsUpdate=!0,this}getPoints3d(t,e){const s=[];return this.getPoints(t).forEach(o=>s.push(new Y().set(o.x,o.y,e))),s}getPoints(t){const e=[],s=this._vertices.length;for(let o=0;o<s;++o){const h=this._vertices[o];if(h.bulge){let c=null;if(o<s-1?c=this._vertices[o+1]:o==s-1&&this.closed&&(c=this._vertices[0]),c){const f=new Rn(h,c,h.bulge).getPoints(t),x=f.length;for(let g=0;g<x;++g){const A=f[g];e.push(new Tt(A.x,A.y))}}}else e.push(new Tt(h.x,h.y)),o==s-1&&this.closed&&e.push(e[0])}return e}}class Ri extends Vn{constructor(t,e){super(),this._start=new Tt(t),this._end=new Tt(e)}get startPoint(){return this._start}set startPoint(t){this._start.copy(t),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(t){this._end.copy(t),this._boundingBoxNeedsUpdate=!0}getPoints(){return[this.startPoint,this.endPoint]}get length(){return this.startPoint.distanceTo(this.endPoint)}calculateBoundingBox(){const t=new Tt(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y)),e=new Tt(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y));return new _e(t,e)}transform(t){return this._start.applyMatrix2d(t),this._end.applyMatrix2d(t),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(t){return this.startPoint=t.startPoint,this.endPoint=t.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new Ri(this._start.clone(),this._end.clone())}}class eu extends Vn{constructor(t=[]){super(),this._curves=t}get curves(){return this._curves}add(t){this._curves.push(t),this._boundingBoxNeedsUpdate=!0}get numberOfEdges(){return this._curves.length}get startPoint(){if(this._curves.length>0){const t=this._curves[0].startPoint;return new Tt(t.x,t.y)}throw new Error("Start point does not exist in an empty loop.")}get endPoint(){return this.startPoint}get length(){let t=0;return this._curves.forEach(e=>{t+=e.length}),t}calculateBoundingBox(){const t=this.getPoints(100),e=new _e;return e.setFromPoints(t),e}transform(t){return this._boundingBoxNeedsUpdate=!0,this}get closed(){return!0}getPoints(t){const e=[];return this.curves.forEach(s=>{s.getPoints(t).forEach(o=>{e.push(new Tt(o.x,o.y))})}),e}}function Qd(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var ru={exports:{}};(function(i,t){(function(e){i.exports=e()})(function(){var e={},s=this;new Function("try {return this===window;}catch(e){ return false;}");var o=new Function("try {return this===global;}catch(e){return false;}"),h=new Function("try {return typeof importScripts === 'function';}catch(e){return false;}");if(o()&&h(),o()||h()){var c=s;if(h()){var f=function(x,g){var A=s;return x.split(".").forEach(function(b){A&&(A=A[b])}),A?A[g]:null};onmessage=function(x){if(!(!x.data.className||!x.data.methodName)){var g=f(x.data.className,x.data.methodName);if(!g)return console.error("could not find "+x.data.className+"."+x.data.methodName);postMessage({result:g.apply(null,x.data.args),id:x.data.id})}}}}return function(x,g,A){g.geom=g.geom||{},g.exe=g.exe||{},g.eval=g.eval||{},g.core=g.core||{},g.promhx=g.promhx||{};var b={},E=function(){return Mt.__string_rec(this,"")};function T(r,n){function a(){}a.prototype=r;var l=new a;for(var u in n)l[u]=n[u];return n.toString!==Object.prototype.toString&&(l.toString=n.toString),l}var R=function(){};b.HxOverrides=R,R.__name__=["HxOverrides"],R.strDate=function(r){var n=r.length;switch(n){case 8:var a=r.split(":"),l=new Date;return l.setTime(0),l.setUTCHours(a[0]),l.setUTCMinutes(a[1]),l.setUTCSeconds(a[2]),l;case 10:var u=r.split("-");return new Date(u[0],u[1]-1,u[2],0,0,0);case 19:var d=r.split(" "),p=d[0].split("-"),_=d[1].split(":");return new Date(p[0],p[1]-1,p[2],_[0],_[1],_[2]);default:throw new Q("Invalid date format : "+r)}},R.cca=function(r,n){var a=r.charCodeAt(n);if(a==a)return a},R.substr=function(r,n,a){return n!=null&&n!=0&&a!=null&&a<0?"":(a==null&&(a=r.length),n<0?(n=r.length+n,n<0&&(n=0)):a<0&&(a=r.length+a-n),r.substr(n,a))},R.iter=function(r){return{cur:0,arr:r,hasNext:function(){return this.cur<this.arr.length},next:function(){return this.arr[this.cur++]}}};var O=function(){};b.Lambda=O,O.__name__=["Lambda"],O.fold=function(r,n,a){for(var l=Xe(r)();l.hasNext();){var u=l.next();a=n(u,a)}return a};var U=function(){this.length=0};b.List=U,U.__name__=["List"],U.prototype={add:function(r){var n=[r];this.h==null?this.h=n:this.q[1]=n,this.q=n,this.length++},pop:function(){if(this.h==null)return null;var r=this.h[0];return this.h=this.h[1],this.h==null&&(this.q=null),this.length--,r},isEmpty:function(){return this.h==null},__class__:U},Math.__name__=["Math"];var D=function(){};b.Reflect=D,D.__name__=["Reflect"],D.field=function(r,n){try{return r[n]}catch(a){return a instanceof Q&&(a=a.val),null}},D.callMethod=function(r,n,a){return n.apply(r,a)},D.fields=function(r){var n=[];if(r!=null){var a=Object.prototype.hasOwnProperty;for(var l in r)l!="__id__"&&l!="hx__closures__"&&a.call(r,l)&&n.push(l)}return n},D.isFunction=function(r){return typeof r=="function"&&!(r.__name__||r.__ename__)},D.deleteField=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)?(delete r[n],!0):!1};var dt=function(){};b.Std=dt,dt.__name__=["Std"],dt.string=function(r){return Mt.__string_rec(r,"")},dt.parseFloat=function(r){return parseFloat(r)};var vt=function(){this.b=""};b.StringBuf=vt,vt.__name__=["StringBuf"],vt.prototype={add:function(r){this.b+=dt.string(r)},__class__:vt};var ot=function(){};b.StringTools=ot,ot.__name__=["StringTools"],ot.fastCodeAt=function(r,n){return r.charCodeAt(n)};var W=b.ValueType={__ename__:["ValueType"],__constructs__:["TNull","TInt","TFloat","TBool","TObject","TFunction","TClass","TEnum","TUnknown"]};W.TNull=["TNull",0],W.TNull.toString=E,W.TNull.__enum__=W,W.TInt=["TInt",1],W.TInt.toString=E,W.TInt.__enum__=W,W.TFloat=["TFloat",2],W.TFloat.toString=E,W.TFloat.__enum__=W,W.TBool=["TBool",3],W.TBool.toString=E,W.TBool.__enum__=W,W.TObject=["TObject",4],W.TObject.toString=E,W.TObject.__enum__=W,W.TFunction=["TFunction",5],W.TFunction.toString=E,W.TFunction.__enum__=W,W.TClass=function(r){var n=["TClass",6,r];return n.__enum__=W,n.toString=E,n},W.TEnum=function(r){var n=["TEnum",7,r];return n.__enum__=W,n.toString=E,n},W.TUnknown=["TUnknown",8],W.TUnknown.toString=E,W.TUnknown.__enum__=W;var ut=function(){};b.Type=ut,ut.__name__=["Type"],ut.getClassName=function(r){var n=r.__name__;return n==null?null:n.join(".")},ut.getEnumName=function(r){var n=r.__ename__;return n.join(".")},ut.resolveClass=function(r){var n=b[r];return n==null||!n.__name__?null:n},ut.resolveEnum=function(r){var n=b[r];return n==null||!n.__ename__?null:n},ut.createEmptyInstance=function(r){function n(){}return n.prototype=r.prototype,new n},ut.createEnum=function(r,n,a){var l=D.field(r,n);if(l==null)throw new Q("No such constructor "+n);if(D.isFunction(l)){if(a==null)throw new Q("Constructor "+n+" need parameters");return D.callMethod(r,l,a)}if(a!=null&&a.length!=0)throw new Q("Constructor "+n+" does not need parameters");return l},ut.getEnumConstructs=function(r){var n=r.__constructs__;return n.slice()},ut.typeof=function(r){var n=typeof r;switch(n){case"boolean":return W.TBool;case"string":return W.TClass(String);case"number":return Math.ceil(r)==r%2147483648?W.TInt:W.TFloat;case"object":if(r==null)return W.TNull;var a=r.__enum__;if(a!=null)return W.TEnum(a);var l=Mt.getClass(r);return l!=null?W.TClass(l):W.TObject;case"function":return r.__name__||r.__ename__?W.TObject:W.TFunction;case"undefined":return W.TNull;default:return W.TUnknown}};var st=function(){};b["haxe.IMap"]=st,st.__name__=["haxe","IMap"];var Vt=function(r,n){this.high=r,this.low=n};b["haxe._Int64.___Int64"]=Vt,Vt.__name__=["haxe","_Int64","___Int64"],Vt.prototype={__class__:Vt};var Yt=function(){this.buf=new vt,this.cache=[],this.useCache=Yt.USE_CACHE,this.useEnumIndex=Yt.USE_ENUM_INDEX,this.shash=new me,this.scount=0};b["haxe.Serializer"]=Yt,Yt.__name__=["haxe","Serializer"],Yt.prototype={toString:function(){return this.buf.b},serializeString:function(r){var n=this.shash.get(r);if(n!=null){this.buf.b+="R",n==null?this.buf.b+="null":this.buf.b+=""+n;return}this.shash.set(r,this.scount++),this.buf.b+="y",r=encodeURIComponent(r),r.length==null?this.buf.b+="null":this.buf.b+=""+r.length,this.buf.b+=":",r==null?this.buf.b+="null":this.buf.b+=""+r},serializeRef:function(r){for(var n=typeof r,a=0,l=this.cache.length;a<l;){var u=a++,d=this.cache[u];if(typeof d==n&&d==r)return this.buf.b+="r",u==null?this.buf.b+="null":this.buf.b+=""+u,!0}return this.cache.push(r),!1},serializeFields:function(r){for(var n=0,a=D.fields(r);n<a.length;){var l=a[n];++n,this.serializeString(l),this.serialize(D.field(r,l))}this.buf.b+="g"},serialize:function(r){{var n=ut.typeof(r);switch(n[1]){case 0:this.buf.b+="n";break;case 1:var a=r;if(a==0){this.buf.b+="z";return}this.buf.b+="i",a==null?this.buf.b+="null":this.buf.b+=""+a;break;case 2:var l=r;isNaN(l)?this.buf.b+="k":isFinite(l)?(this.buf.b+="d",l==null?this.buf.b+="null":this.buf.b+=""+l):l<0?this.buf.b+="m":this.buf.b+="p";break;case 3:r?this.buf.b+="t":this.buf.b+="f";break;case 6:var u=n[2];if(u==String){this.serializeString(r);return}if(this.useCache&&this.serializeRef(r))return;switch(u){case Array:var d=0;this.buf.b+="a";for(var p=r.length,_=0;_<p;){var v=_++;r[v]==null?d++:(d>0&&(d==1?this.buf.b+="n":(this.buf.b+="u",d==null?this.buf.b+="null":this.buf.b+=""+d),d=0),this.serialize(r[v]))}d>0&&(d==1?this.buf.b+="n":(this.buf.b+="u",d==null?this.buf.b+="null":this.buf.b+=""+d)),this.buf.b+="h";break;case U:this.buf.b+="l";for(var w=r,I=w.h,S=null;I!=null;){var P;S=I[0],I=I[1],P=S,this.serialize(P)}this.buf.b+="h";break;case Date:var k=r;this.buf.b+="v",this.buf.add(k.getTime());break;case me:this.buf.b+="b";for(var M=r,L=M.keys();L.hasNext();){var C=L.next();this.serializeString(C),this.serialize(Gi[C]!=null?M.getReserved(C):M.h[C])}this.buf.b+="h";break;case bt:this.buf.b+="q";for(var B=r,z=B.keys();z.hasNext();){var F=z.next();this.buf.b+=":",F==null?this.buf.b+="null":this.buf.b+=""+F,this.serialize(B.h[F])}this.buf.b+="h";break;case Lt:this.buf.b+="M";for(var V=r,q=V.keys();q.hasNext();){var J=q.next(),H=D.field(J,"__id__");D.deleteField(J,"__id__"),this.serialize(J),J.__id__=H,this.serialize(V.h[J.__id__])}this.buf.b+="h";break;case Pe:for(var j=r,K=0,tt=j.length-2,et=new vt,it=Yt.BASE64;K<tt;){var ht=j.get(K++),at=j.get(K++),ct=j.get(K++);et.add(it.charAt(ht>>2)),et.add(it.charAt((ht<<4|at>>4)&63)),et.add(it.charAt((at<<2|ct>>6)&63)),et.add(it.charAt(ct&63))}if(K==tt){var nt=j.get(K++),mt=j.get(K++);et.add(it.charAt(nt>>2)),et.add(it.charAt((nt<<4|mt>>4)&63)),et.add(it.charAt(mt<<2&63))}else if(K==tt+1){var X=j.get(K++);et.add(it.charAt(X>>2)),et.add(it.charAt(X<<4&63))}var ft=et.b;this.buf.b+="s",ft.length==null?this.buf.b+="null":this.buf.b+=""+ft.length,this.buf.b+=":",ft==null?this.buf.b+="null":this.buf.b+=""+ft;break;default:this.useCache&&this.cache.pop(),r.hxSerialize!=null?(this.buf.b+="C",this.serializeString(ut.getClassName(u)),this.useCache&&this.cache.push(r),r.hxSerialize(this),this.buf.b+="g"):(this.buf.b+="c",this.serializeString(ut.getClassName(u)),this.useCache&&this.cache.push(r),this.serializeFields(r))}break;case 4:if(Mt.__instanceof(r,vo)){var It=ut.getClassName(r);this.buf.b+="A",this.serializeString(It)}else if(Mt.__instanceof(r,yo))this.buf.b+="B",this.serializeString(ut.getEnumName(r));else{if(this.useCache&&this.serializeRef(r))return;this.buf.b+="o",this.serializeFields(r)}break;case 7:var Gt=n[2];if(this.useCache){if(this.serializeRef(r))return;this.cache.pop()}this.useEnumIndex?this.buf.b+="j":this.buf.b+="w",this.serializeString(ut.getEnumName(Gt)),this.useEnumIndex?(this.buf.b+=":",this.buf.b+=dt.string(r[1])):this.serializeString(r[0]),this.buf.b+=":";var Xt=r.length;this.buf.b+=dt.string(Xt-2);for(var Ft=2;Ft<Xt;){var Kt=Ft++;this.serialize(r[Kt])}this.useCache&&this.cache.push(r);break;case 5:throw new Q("Cannot serialize function");default:throw new Q("Cannot serialize "+dt.string(r))}}},__class__:Yt};var Wt=function(r){this.buf=r,this.length=r.length,this.pos=0,this.scache=[],this.cache=[];var n=Wt.DEFAULT_RESOLVER;n==null&&(n=ut,Wt.DEFAULT_RESOLVER=n),this.setResolver(n)};b["haxe.Unserializer"]=Wt,Wt.__name__=["haxe","Unserializer"],Wt.initCodes=function(){for(var r=[],n=0,a=Wt.BASE64.length;n<a;){var l=n++;r[Wt.BASE64.charCodeAt(l)]=l}return r},Wt.prototype={setResolver:function(r){r==null?this.resolver={resolveClass:function(n){return null},resolveEnum:function(n){return null}}:this.resolver=r},get:function(r){return this.buf.charCodeAt(r)},readDigits:function(){for(var r=0,n=!1,a=this.pos;;){var l=this.buf.charCodeAt(this.pos);if(l!=l)break;if(l==45){if(this.pos!=a)break;n=!0,this.pos++;continue}if(l<48||l>57)break;r=r*10+(l-48),this.pos++}return n&&(r*=-1),r},readFloat:function(){for(var r=this.pos;;){var n=this.buf.charCodeAt(this.pos);if(n>=43&&n<58||n==101||n==69)this.pos++;else break}return dt.parseFloat(R.substr(this.buf,r,this.pos-r))},unserializeObject:function(r){for(;;){if(this.pos>=this.length)throw new Q("Invalid object");if(this.buf.charCodeAt(this.pos)==103)break;var n=this.unserialize();if(typeof n!="string")throw new Q("Invalid object key");var a=this.unserialize();r[n]=a}this.pos++},unserializeEnum:function(r,n){if(this.get(this.pos++)!=58)throw new Q("Invalid enum format");var a=this.readDigits();if(a==0)return ut.createEnum(r,n);for(var l=[];a-- >0;)l.push(this.unserialize());return ut.createEnum(r,n,l)},unserialize:function(){var r=this.get(this.pos++);switch(r){case 110:return null;case 116:return!0;case 102:return!1;case 122:return 0;case 105:return this.readDigits();case 100:return this.readFloat();case 121:var n=this.readDigits();if(this.get(this.pos++)!=58||this.length-this.pos<n)throw new Q("Invalid string length");var a=R.substr(this.buf,this.pos,n);return this.pos+=n,a=decodeURIComponent(a.split("+").join(" ")),this.scache.push(a),a;case 107:return NaN;case 109:return-1/0;case 112:return 1/0;case 97:this.buf;var l=[];for(this.cache.push(l);;){var u=this.buf.charCodeAt(this.pos);if(u==104){this.pos++;break}if(u==117){this.pos++;var d=this.readDigits();l[l.length+d-1]=null}else l.push(this.unserialize())}return l;case 111:var p={};return this.cache.push(p),this.unserializeObject(p),p;case 114:var _=this.readDigits();if(_<0||_>=this.cache.length)throw new Q("Invalid reference");return this.cache[_];case 82:var v=this.readDigits();if(v<0||v>=this.scache.length)throw new Q("Invalid string reference");return this.scache[v];case 120:throw new Q(this.unserialize());case 99:var w=this.unserialize(),I=this.resolver.resolveClass(w);if(I==null)throw new Q("Class not found "+w);var S=ut.createEmptyInstance(I);return this.cache.push(S),this.unserializeObject(S),S;case 119:var P=this.unserialize(),k=this.resolver.resolveEnum(P);if(k==null)throw new Q("Enum not found "+P);var M=this.unserializeEnum(k,this.unserialize());return this.cache.push(M),M;case 106:var L=this.unserialize(),C=this.resolver.resolveEnum(L);if(C==null)throw new Q("Enum not found "+L);this.pos++;var B=this.readDigits(),z=ut.getEnumConstructs(C)[B];if(z==null)throw new Q("Unknown enum index "+L+"@"+B);var F=this.unserializeEnum(C,z);return this.cache.push(F),F;case 108:var V=new U;for(this.cache.push(V),this.buf;this.buf.charCodeAt(this.pos)!=104;)V.add(this.unserialize());return this.pos++,V;case 98:var q=new me;for(this.cache.push(q),this.buf;this.buf.charCodeAt(this.pos)!=104;){var J=this.unserialize();q.set(J,this.unserialize())}return this.pos++,q;case 113:var H=new bt;this.cache.push(H),this.buf;for(var j=this.get(this.pos++);j==58;){var K=this.readDigits();H.set(K,this.unserialize()),j=this.get(this.pos++)}if(j!=104)throw new Q("Invalid IntMap format");return H;case 77:var tt=new Lt;for(this.cache.push(tt),this.buf;this.buf.charCodeAt(this.pos)!=104;){var et=this.unserialize();tt.set(et,this.unserialize())}return this.pos++,tt;case 118:var it;if(this.buf.charCodeAt(this.pos)>=48&&this.buf.charCodeAt(this.pos)<=57&&this.buf.charCodeAt(this.pos+1)>=48&&this.buf.charCodeAt(this.pos+1)<=57&&this.buf.charCodeAt(this.pos+2)>=48&&this.buf.charCodeAt(this.pos+2)<=57&&this.buf.charCodeAt(this.pos+3)>=48&&this.buf.charCodeAt(this.pos+3)<=57&&this.buf.charCodeAt(this.pos+4)==45){var ht=R.substr(this.buf,this.pos,19);it=R.strDate(ht),this.pos+=19}else{var at=this.readFloat(),ct=new Date;ct.setTime(at),it=ct}return this.cache.push(it),it;case 115:var nt=this.readDigits(),mt=this.buf;if(this.get(this.pos++)!=58||this.length-this.pos<nt)throw new Q("Invalid bytes length");var X=Wt.CODES;X==null&&(X=Wt.initCodes(),Wt.CODES=X);var ft=this.pos,It=nt&3,Gt;Gt=(nt>>2)*3+(It>=2?It-1:0);for(var Xt=ft+(nt-It),Ft=Pe.alloc(Gt),Kt=0;ft<Xt;){var Ae=X[ot.fastCodeAt(mt,ft++)],He=X[ot.fastCodeAt(mt,ft++)];Ft.set(Kt++,Ae<<2|He>>4);var ve=X[ot.fastCodeAt(mt,ft++)];Ft.set(Kt++,He<<4|ve>>2);var fe=X[ot.fastCodeAt(mt,ft++)];Ft.set(Kt++,ve<<6|fe)}if(It>=2){var Se=X[ot.fastCodeAt(mt,ft++)],Me=X[ot.fastCodeAt(mt,ft++)];if(Ft.set(Kt++,Se<<2|Me>>4),It==3){var Ke=X[ot.fastCodeAt(mt,ft++)];Ft.set(Kt++,Me<<4|Ke>>2)}}return this.pos+=nt,this.cache.push(Ft),Ft;case 67:var or=this.unserialize(),$e=this.resolver.resolveClass(or);if($e==null)throw new Q("Class not found "+or);var Ze=ut.createEmptyInstance($e);if(this.cache.push(Ze),Ze.hxUnserialize(this),this.get(this.pos++)!=103)throw new Q("Invalid custom data");return Ze;case 65:var Qe=this.unserialize(),dr=this.resolver.resolveClass(Qe);if(dr==null)throw new Q("Class not found "+Qe);return dr;case 66:var Mn=this.unserialize(),Zr=this.resolver.resolveEnum(Mn);if(Zr==null)throw new Q("Enum not found "+Mn);return Zr}throw this.pos--,new Q("Invalid char "+this.buf.charAt(this.pos)+" at position "+this.pos)},__class__:Wt};var bt=function(){this.h={}};b["haxe.ds.IntMap"]=bt,bt.__name__=["haxe","ds","IntMap"],bt.__interfaces__=[st],bt.prototype={set:function(r,n){this.h[r]=n},remove:function(r){return this.h.hasOwnProperty(r)?(delete this.h[r],!0):!1},keys:function(){var r=[];for(var n in this.h)this.h.hasOwnProperty(n)&&r.push(n|0);return R.iter(r)},__class__:bt};var Lt=function(){this.h={},this.h.__keys__={}};b["haxe.ds.ObjectMap"]=Lt,Lt.__name__=["haxe","ds","ObjectMap"],Lt.__interfaces__=[st],Lt.prototype={set:function(r,n){var a=r.__id__||(r.__id__=++Lt.count);this.h[a]=n,this.h.__keys__[a]=r},keys:function(){var r=[];for(var n in this.h.__keys__)this.h.hasOwnProperty(n)&&r.push(this.h.__keys__[n]);return R.iter(r)},__class__:Lt};var de=b["haxe.ds.Option"]={__ename__:["haxe","ds","Option"],__constructs__:["Some","None"]};de.Some=function(r){var n=["Some",0,r];return n.__enum__=de,n.toString=E,n},de.None=["None",1],de.None.toString=E,de.None.__enum__=de;var me=function(){this.h={}};b["haxe.ds.StringMap"]=me,me.__name__=["haxe","ds","StringMap"],me.__interfaces__=[st],me.prototype={set:function(r,n){Gi[r]!=null?this.setReserved(r,n):this.h[r]=n},get:function(r){return Gi[r]!=null?this.getReserved(r):this.h[r]},setReserved:function(r,n){this.rh==null&&(this.rh={}),this.rh["$"+r]=n},getReserved:function(r){return this.rh==null?null:this.rh["$"+r]},keys:function(){var r=this.arrayKeys();return R.iter(r)},arrayKeys:function(){var r=[];for(var n in this.h)this.h.hasOwnProperty(n)&&r.push(n);if(this.rh!=null)for(var n in this.rh)n.charCodeAt(0)==36&&r.push(n.substr(1));return r},__class__:me};var Pe=function(r){this.length=r.byteLength,this.b=new Wi(r),this.b.bufferValue=r,r.hxBytes=this,r.bytes=this.b};b["haxe.io.Bytes"]=Pe,Pe.__name__=["haxe","io","Bytes"],Pe.alloc=function(r){return new Pe(new js(r))},Pe.prototype={get:function(r){return this.b[r]},set:function(r,n){this.b[r]=n&255},__class__:Pe};var Jt=b["haxe.io.Error"]={__ename__:["haxe","io","Error"],__constructs__:["Blocked","Overflow","OutsideBounds","Custom"]};Jt.Blocked=["Blocked",0],Jt.Blocked.toString=E,Jt.Blocked.__enum__=Jt,Jt.Overflow=["Overflow",1],Jt.Overflow.toString=E,Jt.Overflow.__enum__=Jt,Jt.OutsideBounds=["OutsideBounds",2],Jt.OutsideBounds.toString=E,Jt.OutsideBounds.__enum__=Jt,Jt.Custom=function(r){var n=["Custom",3,r];return n.__enum__=Jt,n.toString=E,n};var ae=function(){};b["haxe.io.FPHelper"]=ae,ae.__name__=["haxe","io","FPHelper"],ae.i32ToFloat=function(r){var n=1-(r>>>31<<1),a=r>>>23&255,l=r&8388607;return l==0&&a==0?0:n*(1+Math.pow(2,-23)*l)*Math.pow(2,a-127)},ae.floatToI32=function(r){if(r==0)return 0;var n;r<0?n=-r:n=r;var a=Math.floor(Math.log(n)/.6931471805599453);a<-127?a=-127:a>128&&(a=128);var l=Math.round((n/Math.pow(2,a)-1)*8388608)&8388607;return(r<0?-2147483648:0)|a+127<<23|l},ae.i64ToDouble=function(r,n){var a=1-(n>>>31<<1),l=(n>>20&2047)-1023,u=(n&1048575)*4294967296+(r>>>31)*2147483648+(r&2147483647);return u==0&&l==-1023?0:a*(1+Math.pow(2,-52)*u)*Math.pow(2,l)},ae.doubleToI64=function(r){var n=ae.i64tmp;if(r==0)n.low=0,n.high=0;else{var a;r<0?a=-r:a=r;var l=Math.floor(Math.log(a)/.6931471805599453),u,d=(a/Math.pow(2,l)-1)*4503599627370496;u=Math.round(d);var p=u|0,_=u/4294967296|0;n.low=p,n.high=(r<0?-2147483648:0)|l+1023<<20|_}return n};var Q=function(r){Error.call(this),this.val=r,this.message=String(r),Error.captureStackTrace&&Error.captureStackTrace(this,Q)};b["js._Boot.HaxeError"]=Q,Q.__name__=["js","_Boot","HaxeError"],Q.__super__=Error,Q.prototype=T(Error.prototype,{__class__:Q});var Mt=function(){};b["js.Boot"]=Mt,Mt.__name__=["js","Boot"],Mt.getClass=function(r){if(r instanceof Array&&r.__enum__==null)return Array;var n=r.__class__;if(n!=null)return n;var a=Mt.__nativeClassName(r);return a!=null?Mt.__resolveNativeClass(a):null},Mt.__string_rec=function(r,n){if(r==null)return"null";if(n.length>=5)return"<...>";var a=typeof r;switch(a=="function"&&(r.__name__||r.__ename__)&&(a="object"),a){case"object":if(r instanceof Array){if(r.__enum__){if(r.length==2)return r[0];var l=r[0]+"(";n+=" ";for(var u=2,d=r.length;u<d;){var p=u++;p!=2?l+=","+Mt.__string_rec(r[p],n):l+=Mt.__string_rec(r[p],n)}return l+")"}var _=r.length,v="[";n+=" ";for(var w=0;w<_;){var I=w++;v+=(I>0?",":"")+Mt.__string_rec(r[I],n)}return v+="]",v}var S;try{S=r.toString}catch(C){return C instanceof Q&&(C=C.val),"???"}if(S!=null&&S!=Object.toString&&typeof S=="function"){var P=r.toString();if(P!="[object Object]")return P}var k=null,M=`{
3
- `;n+=" ";var L=r.hasOwnProperty!=null;for(var k in r)L&&!r.hasOwnProperty(k)||k=="prototype"||k=="__class__"||k=="__super__"||k=="__interfaces__"||k=="__properties__"||(M.length!=2&&(M+=`,
4
- `),M+=n+k+" : "+Mt.__string_rec(r[k],n));return n=n.substring(1),M+=`
5
- `+n+"}",M;case"function":return"<function>";case"string":return r;default:return String(r)}},Mt.__interfLoop=function(r,n){if(r==null)return!1;if(r==n)return!0;var a=r.__interfaces__;if(a!=null)for(var l=0,u=a.length;l<u;){var d=l++,p=a[d];if(p==n||Mt.__interfLoop(p,n))return!0}return Mt.__interfLoop(r.__super__,n)},Mt.__instanceof=function(r,n){if(n==null)return!1;switch(n){case Lu:return(r|0)===r;case go:return typeof r=="number";case _o:return typeof r=="boolean";case String:return typeof r=="string";case Array:return r instanceof Array&&r.__enum__==null;case Ou:return!0;default:if(r!=null){if(typeof n=="function"){if(r instanceof n||Mt.__interfLoop(Mt.getClass(r),n))return!0}else if(typeof n=="object"&&Mt.__isNativeObj(n)&&r instanceof n)return!0}else return!1;return n==vo&&r.__name__!=null||n==yo&&r.__ename__!=null?!0:r.__enum__==n}},Mt.__nativeClassName=function(r){var n=Mt.__toStr.call(r).slice(8,-1);return n=="Object"||n=="Function"||n=="Math"||n=="JSON"?null:n},Mt.__isNativeObj=function(r){return Mt.__nativeClassName(r)!=null},Mt.__resolveNativeClass=function(r){return A[r]};var oe=function(r){if(r instanceof Array&&r.__enum__==null)this.a=r,this.byteLength=r.length;else{var n=r;this.a=[];for(var a=0;a<n;){var l=a++;this.a[l]=0}this.byteLength=n}};b["js.html.compat.ArrayBuffer"]=oe,oe.__name__=["js","html","compat","ArrayBuffer"],oe.sliceImpl=function(r,n){var a=new Wi(this,r,n==null?null:n-r),l=new js(a.byteLength),u=new Wi(l);return u.set(a),l},oe.prototype={slice:function(r,n){return new oe(this.a.slice(r,n))},__class__:oe};var hr=function(r,n,a){if(this.buf=r,n==null?this.offset=0:this.offset=n,a==null?this.length=r.byteLength-this.offset:this.length=a,this.offset<0||this.length<0||this.offset+this.length>r.byteLength)throw new Q(Jt.OutsideBounds)};b["js.html.compat.DataView"]=hr,hr.__name__=["js","html","compat","DataView"],hr.prototype={getInt8:function(r){var n=this.buf.a[this.offset+r];return n>=128?n-256:n},getUint8:function(r){return this.buf.a[this.offset+r]},getInt16:function(r,n){var a=this.getUint16(r,n);return a>=32768?a-65536:a},getUint16:function(r,n){return n?this.buf.a[this.offset+r]|this.buf.a[this.offset+r+1]<<8:this.buf.a[this.offset+r]<<8|this.buf.a[this.offset+r+1]},getInt32:function(r,n){var a=this.offset+r,l=this.buf.a[a++],u=this.buf.a[a++],d=this.buf.a[a++],p=this.buf.a[a++];return n?l|u<<8|d<<16|p<<24:p|d<<8|u<<16|l<<24},getUint32:function(r,n){var a=this.getInt32(r,n);return a<0?a+4294967296:a},getFloat32:function(r,n){return ae.i32ToFloat(this.getInt32(r,n))},getFloat64:function(r,n){var a=this.getInt32(r,n),l=this.getInt32(r+4,n);return ae.i64ToDouble(n?a:l,n?l:a)},setInt8:function(r,n){n<0?this.buf.a[r+this.offset]=n+128&255:this.buf.a[r+this.offset]=n&255},setUint8:function(r,n){this.buf.a[r+this.offset]=n&255},setInt16:function(r,n,a){this.setUint16(r,n<0?n+65536:n,a)},setUint16:function(r,n,a){var l=r+this.offset;a?(this.buf.a[l]=n&255,this.buf.a[l++]=n>>8&255):(this.buf.a[l++]=n>>8&255,this.buf.a[l]=n&255)},setInt32:function(r,n,a){this.setUint32(r,n,a)},setUint32:function(r,n,a){var l=r+this.offset;a?(this.buf.a[l++]=n&255,this.buf.a[l++]=n>>8&255,this.buf.a[l++]=n>>16&255,this.buf.a[l++]=n>>>24):(this.buf.a[l++]=n>>>24,this.buf.a[l++]=n>>16&255,this.buf.a[l++]=n>>8&255,this.buf.a[l++]=n&255)},setFloat32:function(r,n,a){this.setUint32(r,ae.floatToI32(n),a)},setFloat64:function(r,n,a){var l=ae.doubleToI64(n);a?(this.setUint32(r,l.low),this.setUint32(r,l.high)):(this.setUint32(r,l.high),this.setUint32(r,l.low))},__class__:hr};var nr=function(){};b["js.html.compat.Uint8Array"]=nr,nr.__name__=["js","html","compat","Uint8Array"],nr._new=function(r,n,a){var l;if(typeof r=="number"){l=[];for(var u=0;u<r;){var d=u++;l[d]=0}l.byteLength=l.length,l.byteOffset=0,l.buffer=new oe(l)}else if(Mt.__instanceof(r,oe)){var p=r;n==null&&(n=0),a==null&&(a=p.byteLength-n),n==0?l=p.a:l=p.a.slice(n,n+a),l.byteLength=l.length,l.byteOffset=n,l.buffer=p}else if(r instanceof Array&&r.__enum__==null)l=r.slice(),l.byteLength=l.length,l.byteOffset=0,l.buffer=new oe(l);else throw new Q("TODO "+dt.string(r));return l.subarray=nr._subarray,l.set=nr._set,l},nr._set=function(r,n){var a=this;if(Mt.__instanceof(r.buffer,oe)){var l=r;if(r.byteLength+n>a.byteLength)throw new Q("set() outside of range");for(var u=0,d=r.byteLength;u<d;){var p=u++;a[p+n]=l[p]}}else if(r instanceof Array&&r.__enum__==null){var _=r;if(_.length+n>a.byteLength)throw new Q("set() outside of range");for(var v=0,w=_.length;v<w;){var I=v++;a[I+n]=_[I]}}else throw new Q("TODO")},nr._subarray=function(r,n){var a=this,l=nr._new(a.slice(r,n));return l.byteOffset=r,l};var kt=function(r){this._resolved=!1,this._pending=!1,this._errorPending=!1,this._fulfilled=!1,this._update=[],this._error=[],this._errored=!1,r!=null&&kt.link(r,this,function(n){return n})};b["promhx.base.AsyncBase"]=kt,kt.__name__=["promhx","base","AsyncBase"],kt.link=function(r,n,a){r._update.push({async:n,linkf:function(l){n.handleResolve(a(l))}}),kt.immediateLinkUpdate(r,n,a)},kt.immediateLinkUpdate=function(r,n,a){if(r._errored&&!r._errorPending&&!(r._error.length>0)&&n.handleError(r._errorVal),r._resolved&&!r._pending)try{n.handleResolve(a(r._val))}catch(l){l instanceof Q&&(l=l.val),n.handleError(l)}},kt.linkAll=function(r,n){for(var a=function(d,p,_){if(d.length==0||kt.allFulfilled(d)){for(var v,w=[],I=Xe(r)();I.hasNext();){var S=I.next();w.push(S==p?_:S._val)}v=w,n.handleResolve(v)}},l=Xe(r)();l.hasNext();){var u=l.next();u._update.push({async:n,linkf:function(d,p,_){return function(v){d(p,_,v)}}(a,function(d){for(var p,_=[],v=Xe(r)();v.hasNext();){var w=v.next();w!=u&&_.push(w)}return p=_,p}(),u)})}kt.allFulfilled(r)&&n.handleResolve(function(d){for(var p,_=[],v=Xe(r)();v.hasNext();){var w=v.next();_.push(w._val)}return p=_,p}())},kt.pipeLink=function(r,n,a){var l=!1,u=function(d){if(!l){l=!0;var p=a(d);p._update.push({async:n,linkf:Te(n,n.handleResolve)}),kt.immediateLinkUpdate(p,n,function(_){return _})}};if(r._update.push({async:n,linkf:u}),r._resolved&&!r._pending)try{u(r._val)}catch(d){d instanceof Q&&(d=d.val),n.handleError(d)}},kt.allResolved=function(r){for(var n=Xe(r)();n.hasNext();){var a=n.next();if(!a._resolved)return!1}return!0},kt.allFulfilled=function(r){for(var n=Xe(r)();n.hasNext();){var a=n.next();if(!a._fulfilled)return!1}return!0},kt.prototype={catchError:function(r){return this._error.push(r),this},errorThen:function(r){return this._errorMap=r,this},isResolved:function(){return this._resolved},isErrored:function(){return this._errored},isErrorHandled:function(){return this._error.length>0},isErrorPending:function(){return this._errorPending},isFulfilled:function(){return this._fulfilled},isPending:function(){return this._pending},handleResolve:function(r){this._resolve(r)},_resolve:function(r){var n=this;this._pending?St.enqueue(function(a,l){return function(){a(l)}}(Te(this,this._resolve),r)):(this._resolved=!0,this._pending=!0,St.queue.add(function(){n._val=r;for(var a=0,l=n._update;a<l.length;){var u=l[a];++a;try{u.linkf(r)}catch(d){d instanceof Q&&(d=d.val),u.async.handleError(d)}}n._fulfilled=!0,n._pending=!1}),St.continueOnNextLoop())},handleError:function(r){this._handleError(r)},_handleError:function(r){var n=this,a=function(l){if(n._error.length>0)for(var u=0,d=n._error;u<d.length;){var p=d[u];++u,p(l)}else if(n._update.length>0)for(var _=0,v=n._update;_<v.length;){var w=v[_];++_,w.async.handleError(l)}else throw new Q(l);n._errorPending=!1};this._errorPending||(this._errorPending=!0,this._errored=!0,this._errorVal=r,St.queue.add(function(){if(n._errorMap!=null)try{n._resolve(n._errorMap(r))}catch(l){l instanceof Q&&(l=l.val),a(l)}else a(r)}),St.continueOnNextLoop())},then:function(r){var n=new kt(null);return kt.link(this,n,r),n},unlink:function(r){var n=this;St.queue.add(function(){n._update=n._update.filter(function(a){return a.async!=r})}),St.continueOnNextLoop()},isLinked:function(r){for(var n=!1,a=0,l=this._update;a<l.length;){var u=l[a];if(++a,u.async==r)return!0}return n},__class__:kt};var yn=g.promhx.Deferred=function(){kt.call(this)};b["promhx.Deferred"]=yn,yn.__name__=["promhx","Deferred"],yn.__super__=kt,yn.prototype=T(kt.prototype,{resolve:function(r){this.handleResolve(r)},throwError:function(r){this.handleError(r)},promise:function(){return new pe(this)},stream:function(){return new Ht(this)},publicStream:function(){return new Mr(this)},__class__:yn});var pe=g.promhx.Promise=function(r){kt.call(this,r),this._rejected=!1};b["promhx.Promise"]=pe,pe.__name__=["promhx","Promise"],pe.whenAll=function(r){var n=new pe(null);return kt.linkAll(r,n),n},pe.promise=function(r){var n=new pe;return n.handleResolve(r),n},pe.__super__=kt,pe.prototype=T(kt.prototype,{isRejected:function(){return this._rejected},reject:function(r){this._rejected=!0,this.handleError(r)},handleResolve:function(r){if(this._resolved){var n="Promise has already been resolved";throw new Q(xn.AlreadyResolved(n))}this._resolve(r)},then:function(r){var n=new pe(null);return kt.link(this,n,r),n},unlink:function(r){var n=this;St.queue.add(function(){if(n._fulfilled)n._update=n._update.filter(function(l){return l.async!=r});else{var a="Downstream Promise is not fullfilled";n.handleError(xn.DownstreamNotFullfilled(a))}}),St.continueOnNextLoop()},handleError:function(r){this._rejected=!0,this._handleError(r)},pipe:function(r){var n=new pe(null);return kt.pipeLink(this,n,r),n},errorPipe:function(r){var n=new pe;return this.catchError(function(a){var l=r(a);l.then(Te(n,n._resolve))}),this.then(Te(n,n._resolve)),n},__class__:pe});var Ht=g.promhx.Stream=function(r){kt.call(this,r),this._end_promise=new pe};b["promhx.Stream"]=Ht,Ht.__name__=["promhx","Stream"],Ht.foreach=function(r){for(var n=new Ht(null),a=Xe(r)();a.hasNext();){var l=a.next();n.handleResolve(l)}return n.end(),n},Ht.wheneverAll=function(r){var n=new Ht(null);return kt.linkAll(r,n),n},Ht.concatAll=function(r){for(var n=new Ht(null),a=Xe(r)();a.hasNext();){var l=a.next();n.concat(l)}return n},Ht.mergeAll=function(r){for(var n=new Ht(null),a=Xe(r)();a.hasNext();){var l=a.next();n.merge(l)}return n},Ht.stream=function(r){var n=new Ht(null);return n.handleResolve(r),n},Ht.__super__=kt,Ht.prototype=T(kt.prototype,{then:function(r){var n=new Ht(null);return kt.link(this,n,r),this._end_promise._update.push({async:n._end_promise,linkf:function(a){n.end()}}),n},detachStream:function(r){for(var n=[],a=!1,l=0,u=this._update;l<u.length;){var d=u[l];++l,d.async==r?(this._end_promise._update=this._end_promise._update.filter(function(p){return p.async!=r._end_promise}),a=!0):n.push(d)}return this._update=n,a},first:function(){var r=new pe(null);return this.then(function(n){r._resolved||r.handleResolve(n)}),r},handleResolve:function(r){!this._end&&!this._pause&&this._resolve(r)},pause:function(r){r==null&&(r=!this._pause),this._pause=r},pipe:function(r){var n=new Ht(null);return kt.pipeLink(this,n,r),this._end_promise.then(function(a){n.end()}),n},errorPipe:function(r){var n=new Ht(null);return this.catchError(function(a){var l=r(a);l.then(Te(n,n._resolve)),l._end_promise.then((ji=n._end_promise,Te(ji,ji._resolve)))}),this.then(Te(n,n._resolve)),this._end_promise.then(function(a){n.end()}),n},handleEnd:function(){if(this._pending)St.queue.add(Te(this,this.handleEnd)),St.continueOnNextLoop();else{if(this._end_promise._resolved)return;this._end=!0;var r;this._resolved?r=de.Some(this._val):r=de.None,this._end_promise.handleResolve(r),this._update=[],this._error=[]}},end:function(){return St.queue.add(Te(this,this.handleEnd)),St.continueOnNextLoop(),this},endThen:function(r){return this._end_promise.then(r)},filter:function(r){var n=new Ht(null);return this._update.push({async:n,linkf:function(a){r(a)&&n.handleResolve(a)}}),kt.immediateLinkUpdate(this,n,function(a){return a}),n},concat:function(r){var n=new Ht(null);return this._update.push({async:n,linkf:Te(n,n.handleResolve)}),kt.immediateLinkUpdate(this,n,function(a){return a}),this._end_promise.then(function(a){r.pipe(function(l){return n.handleResolve(l),n}),r._end_promise.then(function(l){n.end()})}),n},merge:function(r){var n=new Ht(null);return this._update.push({async:n,linkf:Te(n,n.handleResolve)}),r._update.push({async:n,linkf:Te(n,n.handleResolve)}),kt.immediateLinkUpdate(this,n,function(a){return a}),kt.immediateLinkUpdate(r,n,function(a){return a}),n},__class__:Ht});var Mr=g.promhx.PublicStream=function(r){Ht.call(this,r)};b["promhx.PublicStream"]=Mr,Mr.__name__=["promhx","PublicStream"],Mr.publicstream=function(r){var n=new Mr(null);return n.handleResolve(r),n},Mr.__super__=Ht,Mr.prototype=T(Ht.prototype,{resolve:function(r){this.handleResolve(r)},throwError:function(r){this.handleError(r)},update:function(r){this.handleResolve(r)},__class__:Mr});var St=function(){};b["promhx.base.EventLoop"]=St,St.__name__=["promhx","base","EventLoop"],St.enqueue=function(r){St.queue.add(r),St.continueOnNextLoop()},St.set_nextLoop=function(r){if(St.nextLoop!=null)throw new Q("nextLoop has already been set");return St.nextLoop=r,St.nextLoop},St.queueEmpty=function(){return St.queue.isEmpty()},St.finish=function(r){r==null&&(r=1e3);for(var n=null;r-- >0&&(n=St.queue.pop())!=null;)n();return St.queue.isEmpty()},St.clear=function(){St.queue=new U},St.f=function(){var r=St.queue.pop();r!=null&&r(),St.queue.isEmpty()||St.continueOnNextLoop()},St.continueOnNextLoop=function(){St.nextLoop!=null?St.nextLoop(St.f):setImmediate(St.f)};var xn=b["promhx.error.PromiseError"]={__ename__:["promhx","error","PromiseError"],__constructs__:["AlreadyResolved","DownstreamNotFullfilled"]};xn.AlreadyResolved=function(r){var n=["AlreadyResolved",0,r];return n.__enum__=xn,n.toString=E,n},xn.DownstreamNotFullfilled=function(r){var n=["DownstreamNotFullfilled",1,r];return n.__enum__=xn,n.toString=E,n};var Us=function(){};b["verb.Verb"]=Us,Us.__name__=["verb","Verb"],Us.main=function(){x.log("verb 2.1.0")};var $=function(){};b["verb.core.ArrayExtensions"]=$,$.__name__=["verb","core","ArrayExtensions"],$.alloc=function(r,n){if(!(n<0))for(;r.length<n;)r.push(null)},$.reversed=function(r){var n=r.slice();return n.reverse(),n},$.last=function(r){return r[r.length-1]},$.first=function(r){return r[0]},$.spliceAndInsert=function(r,n,a,l){r.splice(n,a),r.splice(n,0,l)},$.left=function(r){if(r.length==0)return[];var n=Math.ceil(r.length/2);return r.slice(0,n)},$.right=function(r){if(r.length==0)return[];var n=Math.ceil(r.length/2);return r.slice(n)},$.rightWithPivot=function(r){if(r.length==0)return[];var n=Math.ceil(r.length/2);return r.slice(n-1)},$.unique=function(r,n){if(r.length==0)return[];for(var a=[r.pop()];r.length>0;){for(var l=r.pop(),u=!0,d=0;d<a.length;){var p=a[d];if(++d,n(l,p)){u=!1;break}}u&&a.push(l)}return a};var Bt=function(){};b["verb.core.Binomial"]=Bt,Bt.__name__=["verb","core","Binomial"],Bt.get=function(r,n){if(n==0)return 1;if(r==0||n>r)return 0;if(n>r-n&&(n=r-n),Bt.memo_exists(r,n))return Bt.get_memo(r,n);for(var a=1,l=r,u=1,d=n+1;u<d;){var p=u++;if(Bt.memo_exists(l,p)){r--,a=Bt.get_memo(l,p);continue}a*=r--,a/=p,Bt.memoize(l,p,a)}return a},Bt.get_no_memo=function(r,n){if(n==0)return 1;if(r==0||n>r)return 0;n>r-n&&(n=r-n);for(var a=1,l=1,u=n+1;l<u;){var d=l++;a*=r--,a/=d}return a},Bt.memo_exists=function(r,n){return Bt.memo.h.hasOwnProperty(r)&&Bt.memo.h[r].h.hasOwnProperty(n)},Bt.get_memo=function(r,n){return Bt.memo.h[r].h[n]},Bt.memoize=function(r,n,a){Bt.memo.h.hasOwnProperty(r)||Bt.memo.set(r,new bt),Bt.memo.h[r].h[n]=a};var Ee=g.core.BoundingBox=function(r){this.max=null,this.min=null,this.dim=3,this.initialized=!1,r!=null&&this.addRange(r)};b["verb.core.BoundingBox"]=Ee,Ee.__name__=["verb","core","BoundingBox"],Ee.intervalsOverlap=function(r,n,a,l,u){u==null&&(u=-1);var d;u<-.5?d=rt.TOLERANCE:d=u;var p=Math.min(r,n)-d,_=Math.max(r,n)+d,v=Math.min(a,l)-d,w=Math.max(a,l)+d;return p>=v&&p<=w||_>=v&&_<=w||v>=p&&v<=_||w>=p&&w<=_},Ee.prototype={fromPoint:function(r){return new Ee([r])},add:function(r){if(!this.initialized)return this.dim=r.length,this.min=r.slice(0),this.max=r.slice(0),this.initialized=!0,this;for(var n=0,a=this.dim;n<a;){var l=n++;r[l]>this.max[l]&&(this.max[l]=r[l]),r[l]<this.min[l]&&(this.min[l]=r[l])}return this},addRange:function(r){for(var n=r.length,a=0;a<n;){var l=a++;this.add(r[l])}return this},contains:function(r,n){return n==null&&(n=-1),this.initialized?this.intersects(new Ee([r]),n):!1},intersects:function(r,n){if(n==null&&(n=-1),!this.initialized||!r.initialized)return!1;for(var a=this.min,l=this.max,u=r.min,d=r.max,p=0,_=this.dim;p<_;){var v=p++;if(!Ee.intervalsOverlap(a[v],l[v],u[v],d[v],n))return!1}return!0},clear:function(){return this.initialized=!1,this},getLongestAxis:function(){for(var r=0,n=0,a=0,l=this.dim;a<l;){var u=a++,d=this.getAxisLength(u);d>r&&(r=d,n=u)}return n},getAxisLength:function(r){return r<0||r>this.dim-1?0:Math.abs(this.min[r]-this.max[r])},intersect:function(r,n){if(!this.initialized)return null;var a=this.min,l=this.max,u=r.min,d=r.max;if(!this.intersects(r,n))return null;for(var p=[],_=[],v=0,w=this.dim;v<w;){var I=v++;p.push(Math.min(l[I],d[I])),_.push(Math.max(a[I],u[I]))}return new Ee([_,p])},__class__:Ee};var rt=g.core.Constants=function(){};b["verb.core.Constants"]=rt,rt.__name__=["verb","core","Constants"];var Zt=g.core.SerializableBase=function(){};b["verb.core.SerializableBase"]=Zt,Zt.__name__=["verb","core","SerializableBase"],Zt.prototype={serialize:function(){var r=new Yt;return r.serialize(this),r.toString()},__class__:Zt};var jn=g.core.Plane=function(r,n){this.origin=r,this.normal=n};b["verb.core.Plane"]=jn,jn.__name__=["verb","core","Plane"],jn.__super__=Zt,jn.prototype=T(Zt.prototype,{__class__:jn});var bn=g.core.Ray=function(r,n){this.origin=r,this.dir=n};b["verb.core.Ray"]=bn,bn.__name__=["verb","core","Ray"],bn.__super__=Zt,bn.prototype=T(Zt.prototype,{__class__:bn});var jt=g.core.NurbsCurveData=function(r,n,a){this.degree=r,this.controlPoints=a,this.knots=n};b["verb.core.NurbsCurveData"]=jt,jt.__name__=["verb","core","NurbsCurveData"],jt.__super__=Zt,jt.prototype=T(Zt.prototype,{__class__:jt});var te=g.core.NurbsSurfaceData=function(r,n,a,l,u){this.degreeU=r,this.degreeV=n,this.knotsU=a,this.knotsV=l,this.controlPoints=u};b["verb.core.NurbsSurfaceData"]=te,te.__name__=["verb","core","NurbsSurfaceData"],te.__super__=Zt,te.prototype=T(Zt.prototype,{__class__:te});var qe=g.core.MeshData=function(r,n,a,l){this.faces=r,this.points=n,this.normals=a,this.uvs=l};b["verb.core.MeshData"]=qe,qe.__name__=["verb","core","MeshData"],qe.empty=function(){return new qe([],[],[],[])},qe.__super__=Zt,qe.prototype=T(Zt.prototype,{__class__:qe});var Gn=g.core.PolylineData=function(r,n){this.points=r,this.params=n};b["verb.core.PolylineData"]=Gn,Gn.__name__=["verb","core","PolylineData"],Gn.__super__=Zt,Gn.prototype=T(Zt.prototype,{__class__:Gn});var Wn=g.core.VolumeData=function(r,n,a,l,u,d,p){this.degreeU=r,this.degreeV=n,this.degreeW=a,this.knotsU=l,this.knotsV=u,this.knotsW=d,this.controlPoints=p};b["verb.core.VolumeData"]=Wn,Wn.__name__=["verb","core","VolumeData"],Wn.__super__=Zt,Wn.prototype=T(Zt.prototype,{__class__:Wn});var ee=g.core.Pair=function(r,n){this.item0=r,this.item1=n};b["verb.core.Pair"]=ee,ee.__name__=["verb","core","Pair"],ee.prototype={__class__:ee};var we=g.core.Interval=function(r,n){this.min=r,this.max=n};b["verb.core.Interval"]=we,we.__name__=["verb","core","Interval"],we.prototype={__class__:we};var Kr=g.core.CurveCurveIntersection=function(r,n,a,l){this.point0=r,this.point1=n,this.u0=a,this.u1=l};b["verb.core.CurveCurveIntersection"]=Kr,Kr.__name__=["verb","core","CurveCurveIntersection"],Kr.prototype={__class__:Kr};var Hn=g.core.CurveSurfaceIntersection=function(r,n,a,l){this.u=r,this.uv=n,this.curvePoint=a,this.surfacePoint=l};b["verb.core.CurveSurfaceIntersection"]=Hn,Hn.__name__=["verb","core","CurveSurfaceIntersection"],Hn.prototype={__class__:Hn};var Nr=g.core.MeshIntersectionPoint=function(r,n,a,l,u){this.visited=!1,this.adj=null,this.opp=null,this.uv0=r,this.uv1=n,this.point=a,this.faceIndex0,this.faceIndex1};b["verb.core.MeshIntersectionPoint"]=Nr,Nr.__name__=["verb","core","MeshIntersectionPoint"],Nr.prototype={__class__:Nr};var qn=g.core.PolylineMeshIntersection=function(r,n,a,l,u){this.point=r,this.u=n,this.uv=a,this.polylineIndex=l,this.faceIndex=u};b["verb.core.PolylineMeshIntersection"]=qn,qn.__name__=["verb","core","PolylineMeshIntersection"],qn.prototype={__class__:qn};var Yn=g.core.SurfaceSurfaceIntersectionPoint=function(r,n,a,l){this.uv0=r,this.uv1=n,this.point=a,this.dist=l};b["verb.core.SurfaceSurfaceIntersectionPoint"]=Yn,Yn.__name__=["verb","core","SurfaceSurfaceIntersectionPoint"],Yn.prototype={__class__:Yn};var Xn=g.core.TriSegmentIntersection=function(r,n,a,l){this.point=r,this.s=n,this.t=a,this.p=l};b["verb.core.TriSegmentIntersection"]=Xn,Xn.__name__=["verb","core","TriSegmentIntersection"],Xn.prototype={__class__:Xn};var wn=g.core.CurveTriPoint=function(r,n,a){this.u=r,this.point=n,this.uv=a};b["verb.core.CurveTriPoint"]=wn,wn.__name__=["verb","core","CurveTriPoint"],wn.prototype={__class__:wn};var Ge=function(r,n,a,l,u){u==null&&(u=!1),l==null&&(l=-1),this.uv=a,this.point=r,this.normal=n,this.id=l,this.degen=u};b["verb.core.SurfacePoint"]=Ge,Ge.__name__=["verb","core","SurfacePoint"],Ge.fromUv=function(r,n){return new Ge(null,null,[r,n])},Ge.prototype={__class__:Ge};var Vs=g.core.CurvePoint=function(r,n){this.u=r,this.pt=n};b["verb.core.CurvePoint"]=Vs,Vs.__name__=["verb","core","CurvePoint"],Vs.prototype={__class__:Vs};var Kn=g.core.KdTree=function(r,n){this.dim=3,this.points=r,this.distanceFunction=n,this.dim=r[0].point.length,this.root=this.buildTree(r,0,null)};b["verb.core.KdTree"]=Kn,Kn.__name__=["verb","core","KdTree"],Kn.prototype={buildTree:function(r,n,a){var l=n%this.dim,u,d;return r.length==0?null:r.length==1?new Sn(r[0],l,a):(r.sort(function(p,_){var v=p.point[l]-_.point[l];return v==0?0:v>0?1:-1}),u=Math.floor(r.length/2),d=new Sn(r[u],l,a),d.left=this.buildTree(r.slice(0,u),n+1,d),d.right=this.buildTree(r.slice(u+1),n+1,d),d)},nearest:function(r,n,a){var l=this,u=new $n(function(S){return-S.item1}),d,p=null;p=function(S){for(var P,k=S.dimension,M=l.distanceFunction(r,S.kdPoint.point),L,C=[],B=0,z=l.dim;B<z;)B++,C.push(0);L=C;for(var F,V,q=function(K,tt){u.push(new ee(K,tt)),u.size()>n&&u.pop()},J=0,H=l.dim;J<H;){var j=J++;j==S.dimension?L[j]=r[j]:L[j]=S.kdPoint.point[j]}if(F=l.distanceFunction(L,S.kdPoint.point),S.right==null&&S.left==null){(u.size()<n||M<u.peek().item1)&&q(S,M);return}S.right==null?P=S.left:S.left==null?P=S.right:r[k]<S.kdPoint.point[k]?P=S.left:P=S.right,p(P),(u.size()<n||M<u.peek().item1)&&q(S,M),(u.size()<n||Math.abs(F)<u.peek().item1)&&(P==S.left?V=S.right:V=S.left,V!=null&&p(V))},d=p;for(var _=0;_<n;)_++,u.push(new ee(null,a));d(this.root);for(var v=[],w=0;w<n;){var I=w++;u.content[I].item0!=null&&v.push(new ee(u.content[I].item0.kdPoint,u.content[I].item1))}return v},__class__:Kn};var $n=function(r){this.content=[],this.scoreFunction=r};b["verb.core.BinaryHeap"]=$n,$n.__name__=["verb","core","BinaryHeap"],$n.prototype={push:function(r){this.content.push(r),this.bubbleUp(this.content.length-1)},pop:function(){var r=this.content[0],n=this.content.pop();return this.content.length>0&&(this.content[0]=n,this.sinkDown(0)),r},peek:function(){return this.content[0]},remove:function(r){for(var n=this.content.length,a=0;a<n;){var l=a++;if(this.content[l]==r){var u=this.content.pop();l!=n-1&&(this.content[l]=u,this.scoreFunction(u)<this.scoreFunction(r)?this.bubbleUp(l):this.sinkDown(l));return}}throw new Q("Node not found.")},size:function(){return this.content.length},bubbleUp:function(r){for(var n=this.content[r];r>0;){var a=Math.floor((r+1)/2)-1,l=this.content[a];if(this.scoreFunction(n)<this.scoreFunction(l))this.content[a]=n,this.content[r]=l,r=a;else break}},sinkDown:function(r){for(var n=this.content.length,a=this.content[r],l=this.scoreFunction(a);;){var u=(r+1)*2,d=u-1,p=-1,_=0;if(d<n){var v=this.content[d];_=this.scoreFunction(v),_<l&&(p=d)}if(u<n){var w=this.content[u],I=this.scoreFunction(w);I<(p==-1?l:_)&&(p=u)}if(p!=-1)this.content[r]=this.content[p],this.content[p]=a,r=p;else break}},__class__:$n};var An=g.core.KdPoint=function(r,n){this.point=r,this.obj=n};b["verb.core.KdPoint"]=An,An.__name__=["verb","core","KdPoint"],An.prototype={__class__:An};var Sn=g.core.KdNode=function(r,n,a){this.kdPoint=r,this.left=null,this.right=null,this.parent=a,this.dimension=n};b["verb.core.KdNode"]=Sn,Sn.__name__=["verb","core","KdNode"],Sn.prototype={__class__:Sn};var ur=function(){};b["verb.eval.IBoundingBoxTree"]=ur,ur.__name__=["verb","eval","IBoundingBoxTree"],ur.prototype={__class__:ur};var sr=function(r,n){this._boundingBox=null,this._curve=r,n==null&&(n=m.domain(this._curve.knots)/64),this._knotTol=n};b["verb.core.LazyCurveBoundingBoxTree"]=sr,sr.__name__=["verb","core","LazyCurveBoundingBoxTree"],sr.__interfaces__=[ur],sr.prototype={split:function(){var r=$.first(this._curve.knots),n=$.last(this._curve.knots),a=n-r,l=le.curveSplit(this._curve,(n+r)/2+a*.1*Math.random());return new ee(new sr(l[0],this._knotTol),new sr(l[1],this._knotTol))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=new Ee(N.dehomogenize1d(this._curve.controlPoints))),this._boundingBox},yield:function(){return this._curve},indivisible:function(r){return m.domain(this._curve.knots)<this._knotTol},empty:function(){return!1},__class__:sr};var ir=function(r,n){if(this._boundingBox=null,this._mesh=r,n==null){for(var a=[],l=0,u=r.faces.length;l<u;){var d=l++;a.push(d)}n=a}this._faceIndices=n};b["verb.core.LazyMeshBoundingBoxTree"]=ir,ir.__name__=["verb","core","LazyMeshBoundingBoxTree"],ir.__interfaces__=[ur],ir.prototype={split:function(){var r=re.sortTrianglesOnLongestAxis(this.boundingBox(),this._mesh,this._faceIndices),n=$.left(r),a=$.right(r);return new ee(new ir(this._mesh,n),new ir(this._mesh,a))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=re.makeMeshAabb(this._mesh,this._faceIndices)),this._boundingBox},yield:function(){return this._faceIndices[0]},indivisible:function(r){return this._faceIndices.length==1},empty:function(){return this._faceIndices.length==0},__class__:ir};var ar=function(r,n){this._boundingBox=null,this._polyline=r,n==null&&(n=new we(0,r.points.length!=0?r.points.length-1:0)),this._interval=n};b["verb.core.LazyPolylineBoundingBoxTree"]=ar,ar.__name__=["verb","core","LazyPolylineBoundingBoxTree"],ar.__interfaces__=[ur],ar.prototype={split:function(){var r=this._interval.min,n=this._interval.max,a=r+Math.ceil((n-r)/2),l=new we(r,a),u=new we(a,n);return new ee(new ar(this._polyline,l),new ar(this._polyline,u))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=new Ee(this._polyline.points)),this._boundingBox},yield:function(){return this._interval.min},indivisible:function(r){return this._interval.max-this._interval.min==1},empty:function(){return this._interval.max-this._interval.min==0},__class__:ar};var Cr=function(r,n,a,l){n==null&&(n=!1),this._boundingBox=null,this._surface=r,this._splitV=n,a==null&&(a=m.domain(r.knotsU)/16),l==null&&(l=m.domain(r.knotsV)/16),this._knotTolU=a,this._knotTolV=l};b["verb.core.LazySurfaceBoundingBoxTree"]=Cr,Cr.__name__=["verb","core","LazySurfaceBoundingBoxTree"],Cr.__interfaces__=[ur],Cr.prototype={split:function(){var r,n;this._splitV?(r=$.first(this._surface.knotsV),n=$.last(this._surface.knotsV)):(r=$.first(this._surface.knotsU),n=$.last(this._surface.knotsU));var a=(r+n)/2,l=le.surfaceSplit(this._surface,a,this._splitV);return new ee(new Cr(l[0],!this._splitV,this._knotTolU,this._knotTolV),new Cr(l[1],!this._splitV,this._knotTolU,this._knotTolV))},boundingBox:function(){if(this._boundingBox==null){this._boundingBox=new Ee;for(var r=0,n=this._surface.controlPoints;r<n.length;){var a=n[r];++r,this._boundingBox.addRange(N.dehomogenize1d(a))}}return this._boundingBox},yield:function(){return this._surface},indivisible:function(r){return m.domain(this._surface.knotsV)<this._knotTolV&&m.domain(this._surface.knotsU)<this._knotTolU},empty:function(){return!1},__class__:Cr};var Ct=g.core.Mat=function(){};b["verb.core.Mat"]=Ct,Ct.__name__=["verb","core","Mat"],Ct.mul=function(r,n){for(var a=[],l=0,u=n.length;l<u;){var d=l++;a.push(m.mul(r,n[d]))}return a},Ct.mult=function(r,n){var a,l,u,d,p,_,v,w;a=r.length,l=n.length,u=n[0].length,d=[];for(var I=a-1,S=0,P=0;I>=0;){for(p=[],_=r[I],P=u-1;P>=0;){for(v=_[l-1]*n[l-1][P],S=l-2;S>=1;)w=S-1,v+=_[S]*n[S][P]+_[w]*n[w][P],S-=2;S==0&&(v+=_[0]*n[0][P]),p[P]=v,P--}d[I]=p,I--}return d},Ct.add=function(r,n){for(var a=[],l=0,u=r.length;l<u;){var d=l++;a.push(m.add(r[d],n[d]))}return a},Ct.div=function(r,n){for(var a=[],l=0,u=r.length;l<u;){var d=l++;a.push(m.div(r[d],n))}return a},Ct.sub=function(r,n){for(var a=[],l=0,u=r.length;l<u;){var d=l++;a.push(m.sub(r[d],n[d]))}return a},Ct.dot=function(r,n){for(var a=[],l=0,u=r.length;l<u;){var d=l++;a.push(m.dot(r[d],n))}return a},Ct.identity=function(r){for(var n=m.zeros2d(r,r),a=0;a<r;){var l=a++;n[l][l]=1}return n},Ct.transpose=function(r){if(r.length==0)return[];for(var n=[],a=0,l=r[0].length;a<l;){var u=a++;n.push(function(d){for(var p,_=[],v=0,w=r.length;v<w;){var I=v++;_.push(r[I][u])}return p=_,p}())}return n},Ct.solve=function(r,n){return Ct.LUsolve(Ct.LU(r),n)},Ct.LUsolve=function(r,n){var a,l,u=r.LU,d=u.length,p=n.slice(),_=r.P,v,w,I;for(a=d-1;a!=-1;)p[a]=n[a],--a;for(a=0;a<d;){for(v=_[a],_[a]!=a&&(I=p[a],p[a]=p[v],p[v]=I),w=u[a],l=0;l<a;)p[a]-=p[l]*w[l],++l;++a}for(a=d-1;a>=0;){for(w=u[a],l=a+1;l<d;)p[a]-=p[l]*w[l],++l;p[a]/=w[a],--a}return p},Ct.LU=function(r){for(var n,a,l,u,d,p,_,v,w,I=[],S=0,P=r.length;S<P;){var k=S++;I.push(r[k].slice())}r=I;var M=r.length,L=M-1,C=[];for(l=0;l<M;){for(_=l,p=r[l],w=Math.abs(p[l]),a=l+1;a<M;)u=Math.abs(r[a][l]),w<u&&(w=u,_=a),++a;for(C[l]=_,_!=l&&(r[l]=r[_],r[_]=p,p=r[l]),d=p[l],n=l+1;n<M;)r[n][l]/=d,++n;for(n=l+1;n<M;){for(v=r[n],a=l+1;a<L;)v[a]-=v[l]*p[a],++a,v[a]-=v[l]*p[a],++a;a==L&&(v[a]-=v[l]*p[a]),++n}++l}return new Zn(r,C)};var Zn=function(r,n){this.LU=r,this.P=n};b["verb.core._Mat.LUDecomp"]=Zn,Zn.__name__=["verb","core","_Mat","LUDecomp"],Zn.prototype={__class__:Zn};var re=g.core.Mesh=function(){};b["verb.core.Mesh"]=re,re.__name__=["verb","core","Mesh"],re.getTriangleNorm=function(r,n){var a=r[n[0]],l=r[n[1]],u=r[n[2]],d=m.sub(l,a),p=m.sub(u,a),_=m.cross(d,p);return m.mul(1/m.norm(_),_)},re.makeMeshAabb=function(r,n){for(var a=new Ee,l=0;l<n.length;){var u=n[l];++l,a.add(r.points[r.faces[u][0]]),a.add(r.points[r.faces[u][1]]),a.add(r.points[r.faces[u][2]])}return a},re.sortTrianglesOnLongestAxis=function(r,n,a){for(var l=r.getLongestAxis(),u=[],d=0;d<a.length;){var p=a[d];++d;var _=re.getMinCoordOnAxis(n.points,n.faces[p],l);u.push(new ee(_,p))}u.sort(function(P,k){var M=P.item0,L=k.item0;return M==L?0:M>L?1:-1});for(var v=[],w=0,I=u.length;w<I;){var S=w++;v.push(u[S].item1)}return v},re.getMinCoordOnAxis=function(r,n,a){for(var l=1/0,u=0;u<3;){var d=u++,p=r[n[d]][a];p<l&&(l=p)}return l},re.getTriangleCentroid=function(r,n){for(var a=[0,0,0],l=0;l<3;)for(var u=l++,d=0;d<3;){var p=d++;a[p]+=r[n[u]][p]}for(var _=0;_<3;){var v=_++;a[v]/=3}return a},re.triangleUVFromPoint=function(r,n,a){var l=r.faces[n],u=r.points[l[0]],d=r.points[l[1]],p=r.points[l[2]],_=r.uvs[l[0]],v=r.uvs[l[1]],w=r.uvs[l[2]],I=m.sub(u,a),S=m.sub(d,a),P=m.sub(p,a),k=m.norm(m.cross(m.sub(u,d),m.sub(u,p))),M=m.norm(m.cross(S,P))/k,L=m.norm(m.cross(P,I))/k,C=m.norm(m.cross(I,S))/k;return m.add(m.mul(M,_),m.add(m.mul(L,v),m.mul(C,w)))};var Lr=function(r,n){if(this._empty=!1,this._face=-1,n==null){for(var a=[],l=0,u=r.faces.length;l<u;){var d=l++;a.push(d)}n=a}if(this._boundingBox=re.makeMeshAabb(r,n),n.length<1){this._empty=!0;return}else if(n.length<2){this._face=n[0];return}var p=re.sortTrianglesOnLongestAxis(this._boundingBox,r,n),_=$.left(p),v=$.right(p);this._children=new ee(new Lr(r,_),new Lr(r,v))};b["verb.core.MeshBoundingBoxTree"]=Lr,Lr.__name__=["verb","core","MeshBoundingBoxTree"],Lr.__interfaces__=[ur],Lr.prototype={split:function(){return this._children},boundingBox:function(){return this._boundingBox},yield:function(){return this._face},indivisible:function(r){return this._children==null},empty:function(){return this._empty},__class__:Lr};var Ye=g.core.Minimizer=function(){};b["verb.core.Minimizer"]=Ye,Ye.__name__=["verb","core","Minimizer"],Ye.uncmin=function(r,n,a,l,u){a==null&&(a=1e-8),l==null&&(l=function(J){return Ye.numericalGradient(r,J)}),u==null&&(u=1e3),n=n.slice(0);var d=n.length,p=r(n),_=p,v;if(isNaN(p))throw new Q("uncmin: f(x0) is a NaN!");a=Math.max(a,rt.EPSILON);var w,I,S,P=Ct.identity(d),k=0,M=[],L,C,B,z,F,V,q="";for(I=l(n);k<u;){if(!m.all(m.finite(I))){q="Gradient has Infinity or NaN";break}if(w=m.neg(Ct.dot(P,I)),!m.all(m.finite(w))){q="Search direction has Infinity or NaN";break}if(V=m.norm(w),V<a){q="Newton step smaller than tol";break}for(F=1,v=m.dot(I,w),L=n;k<u&&!(F*V<a);){if(M=m.mul(F,w),L=m.add(n,M),_=r(L),_-p>=.1*F*v||isNaN(_)){F*=.5,++k;continue}break}if(F*V<a){q="Line search step size smaller than tol";break}if(k==u){q="maxit reached during line search";break}S=l(L),C=m.sub(S,I),z=m.dot(C,M),B=Ct.dot(P,C),P=Ct.sub(Ct.add(P,Ct.mul((z+m.dot(C,B))/(z*z),Ye.tensor(M,M))),Ct.div(Ct.add(Ye.tensor(B,M),Ye.tensor(M,B)),z)),n=L,p=_,I=S,++k}return new Qn(n,p,I,P,k,q)},Ye.numericalGradient=function(r,n){var a=n.length,l=r(n);if(l==NaN)throw new Q("gradient: f(x) is a NaN!");for(var u=n.slice(0),d,p,_=[],v,w=.001,I,S,P,k=0,M,L,C,B=0;B<a;)for(var z=B++,F=Math.max(1e-6*l,1e-8);;){if(++k,k>20)throw new Q("Numerical gradient fails");if(u[z]=n[z]+F,d=r(u),u[z]=n[z]-F,p=r(u),u[z]=n[z],isNaN(d)||isNaN(p)){F/=16;continue}if(_[z]=(d-p)/(2*F),I=n[z]-F,S=n[z],P=n[z]+F,M=(d-l)/F,L=(l-p)/F,C=m.max([Math.abs(_[z]),Math.abs(l),Math.abs(d),Math.abs(p),Math.abs(I),Math.abs(S),Math.abs(P),1e-8]),v=Math.min(m.max([Math.abs(M-_[z]),Math.abs(L-_[z]),Math.abs(M-L)])/C,F/C),v>w)F/=16;else break}return _},Ye.tensor=function(r,n){for(var a=r.length,l=n.length,u=[],d,p,_=a-1;_>=0;){d=[],p=r[_];for(var v=l-1;v>=3;)d[v]=p*n[v],--v,d[v]=p*n[v],--v,d[v]=p*n[v],--v,d[v]=p*n[v],--v;for(;v>=0;)d[v]=p*n[v],--v;u[_]=d,_--}return u};var Qn=function(r,n,a,l,u,d){this.solution=r,this.value=n,this.gradient=a,this.invHessian=l,this.iterations=u,this.message=d};b["verb.core.MinimizationResult"]=Qn,Qn.__name__=["verb","core","MinimizationResult"],Qn.prototype={__class__:Qn};var In=function(){};b["verb.core.ISerializable"]=In,In.__name__=["verb","core","ISerializable"],In.prototype={__class__:In};var Vi=g.core.Deserializer=function(){};b["verb.core.Deserializer"]=Vi,Vi.__name__=["verb","core","Deserializer"],Vi.deserialize=function(r){var n=new Wt(r),a=n.unserialize();return a};var ke=g.core.Trig=function(){};b["verb.core.Trig"]=ke,ke.__name__=["verb","core","Trig"],ke.isPointInPlane=function(r,n,a){return Math.abs(m.dot(m.sub(r,n.origin),n.normal))<a},ke.distToSegment=function(r,n,a){var l=ke.segmentClosestPoint(n,r,a,0,1);return m.dist(n,l.pt)},ke.rayClosestPoint=function(r,n,a){var l=m.sub(r,n),u=m.dot(l,a),d=m.add(n,m.mul(u,a));return d},ke.distToRay=function(r,n,a){var l=ke.rayClosestPoint(r,n,a),u=m.sub(l,r);return m.norm(u)},ke.threePointsAreFlat=function(r,n,a,l){var u=m.sub(n,r),d=m.sub(a,r),p=m.cross(u,d),_=m.dot(p,p);return _<l},ke.segmentClosestPoint=function(r,n,a,l,u){var d=m.sub(a,n),p=m.norm(d);if(p<rt.EPSILON)return{u:l,pt:n};var _=n,v=m.mul(1/p,d),w=m.sub(r,_),I=m.dot(w,v);return I<0?{u:l,pt:n}:I>p?{u,pt:a}:{u:l+(u-l)*I/p,pt:m.add(_,m.mul(I,v))}};var m=g.core.Vec=function(){};b["verb.core.Vec"]=m,m.__name__=["verb","core","Vec"],m.angleBetween=function(r,n){return Math.acos(m.dot(r,n)/(m.norm(r)*m.norm(n)))},m.positiveAngleBetween=function(r,n,a){var l=m.cross(r,n),u=m.norm(r),d=m.norm(n),p=u*d,_=m.dot(r,n),v=m.norm(l)/p,w=_/p,I=Math.atan2(v,w),S=m.dot(a,l);return Math.abs(S)<rt.EPSILON||S>0?I:-I},m.signedAngleBetween=function(r,n,a){var l=m.cross(r,n),u=m.norm(r),d=m.norm(n),p=u*d,_=m.dot(r,n),v=m.norm(l)/p,w=_/p,I=Math.atan2(v,w),S=m.dot(a,l);return S>0?I:2*Math.PI-I},m.angleBetweenNormalized2d=function(r,n){var a=r[0]*n[1]-r[1]*n[0];return Math.atan2(a,m.dot(r,n))},m.domain=function(r){return $.last(r)-$.first(r)},m.range=function(r){for(var n=[],a=0,l=0;l<r;)l++,n.push(a),a+=1;return n},m.span=function(r,n,a){if(a==null)return[];if(a<rt.EPSILON)return[];if(r>n&&a>0)return[];if(n>r&&a<0)return[];for(var l=[],u=r;u<=n;)l.push(u),u+=a;return l},m.neg=function(r){return r.map(function(n){return-n})},m.min=function(r){return O.fold(r,function(n,a){return Math.min(n,a)},1/0)},m.max=function(r){return O.fold(r,function(n,a){return Math.max(n,a)},-1/0)},m.all=function(r){return O.fold(r,function(n,a){return a&&n},!0)},m.finite=function(r){return r.map(function(n){return isFinite(n)})},m.onRay=function(r,n,a){return m.add(r,m.mul(a,n))},m.lerp=function(r,n,a){return m.add(m.mul(r,n),m.mul(1-r,a))},m.normalized=function(r){return m.div(r,m.norm(r))},m.cross=function(r,n){return[r[1]*n[2]-r[2]*n[1],r[2]*n[0]-r[0]*n[2],r[0]*n[1]-r[1]*n[0]]},m.dist=function(r,n){return m.norm(m.sub(r,n))},m.distSquared=function(r,n){return m.normSquared(m.sub(r,n))},m.sum=function(r){return O.fold(r,function(n,a){return a+n},0)},m.addAll=function(r){var n=Xe(r)();if(!n.hasNext())return null;var a=n.next().length;return O.fold(r,function(l,u){return m.add(u,l)},m.rep(a,0))},m.addAllMutate=function(r){for(var n=r[0],a=1,l=r.length;a<l;){var u=a++;m.addMutate(n,r[u])}},m.addMulMutate=function(r,n,a){for(var l=0,u=r.length;l<u;){var d=l++;r[d]=r[d]+n*a[d]}},m.subMulMutate=function(r,n,a){for(var l=0,u=r.length;l<u;){var d=l++;r[d]=r[d]-n*a[d]}},m.addMutate=function(r,n){for(var a=0,l=r.length;a<l;){var u=a++;r[u]=r[u]+n[u]}},m.subMutate=function(r,n){for(var a=0,l=r.length;a<l;){var u=a++;r[u]=r[u]-n[u]}},m.mulMutate=function(r,n){for(var a=0,l=n.length;a<l;){var u=a++;n[u]=n[u]*r}},m.norm=function(r){var n=m.normSquared(r);return n!=0?Math.sqrt(n):n},m.normSquared=function(r){return O.fold(r,function(n,a){return a+n*n},0)},m.rep=function(r,n){for(var a=[],l=0;l<r;)l++,a.push(n);return a},m.zeros1d=function(r){for(var n=[],a=0;a<r;)a++,n.push(0);return n},m.zeros2d=function(r,n){for(var a=[],l=0;l<r;)l++,a.push(m.zeros1d(n));return a},m.zeros3d=function(r,n,a){for(var l=[],u=0;u<r;)u++,l.push(m.zeros2d(n,a));return l},m.dot=function(r,n){for(var a=0,l=0,u=r.length;l<u;){var d=l++;a+=r[d]*n[d]}return a},m.add=function(r,n){for(var a=[],l=0,u=r.length;l<u;){var d=l++;a.push(r[d]+n[d])}return a},m.mul=function(r,n){for(var a=[],l=0,u=n.length;l<u;){var d=l++;a.push(r*n[d])}return a},m.div=function(r,n){for(var a=[],l=0,u=r.length;l<u;){var d=l++;a.push(r[d]/n)}return a},m.sub=function(r,n){for(var a=[],l=0,u=r.length;l<u;){var d=l++;a.push(r[d]-n[d])}return a},m.isZero=function(r){for(var n=0,a=r.length;n<a;){var l=n++;if(Math.abs(r[l])>rt.TOLERANCE)return!1}return!0},m.sortedSetUnion=function(r,n){for(var a=[],l=0,u=0;l<r.length||u<n.length;){if(l>=r.length){a.push(n[u]),u++;continue}else if(u>=n.length){a.push(r[l]),l++;continue}var d=r[l]-n[u];if(Math.abs(d)<rt.EPSILON){a.push(r[l]),l++,u++;continue}if(d>0){a.push(n[u]),u++;continue}a.push(r[l]),l++}return a},m.sortedSetSub=function(r,n){for(var a=[],l=0,u=0;l<r.length;){if(u>=n.length){a.push(r[l]),l++;continue}if(Math.abs(r[l]-n[u])<rt.EPSILON){l++,u++;continue}a.push(r[l]),l++}return a};var yt=g.eval.Analyze=function(){};b["verb.eval.Analyze"]=yt,yt.__name__=["verb","eval","Analyze"],yt.knotMultiplicities=function(r){for(var n=[new Pn(r[0],0)],a=n[0],l=0;l<r.length;){var u=r[l];++l,Math.abs(u-a.knot)>rt.EPSILON&&(a=new Pn(u,0),n.push(a)),a.inc()}return n},yt.isRationalSurfaceClosed=function(r,n){n==null&&(n=!0);var a;n?a=r.controlPoints:a=Ct.transpose(r.controlPoints);for(var l=0,u=a[0].length;l<u;){var d=l++,p=m.dist($.first(a)[d],$.last(a)[d])<rt.EPSILON;if(!p)return!1}return!0},yt.rationalSurfaceClosestPoint=function(r,n){var a=yt.rationalSurfaceClosestParam(r,n);return N.rationalSurfacePoint(r,a[0],a[1])},yt.rationalSurfaceClosestParam=function(r,n){for(var a=5,l=0,u,d=1e-4,p=5e-4,_,v=r.knotsU[0],w=$.last(r.knotsU),I=r.knotsV[0],S=$.last(r.knotsV),P=yt.isRationalSurfaceClosed(r),k=yt.isRationalSurfaceClosed(r,!1),M,L=Ot.rationalSurfaceAdaptive(r,new Or),C=1/0,B=0,z=L.points.length;B<z;){var F=B++,V=L.points[F],q=m.normSquared(m.sub(n,V));q<C&&(C=q,M=L.uvs[F])}for(var J=function(Gt){return N.rationalSurfaceDerivatives(r,Gt[0],Gt[1],2)},H=function(Gt,Xt,Ft){var Kt=Xt[1][0],Ae=Xt[0][1],He=Xt[2][0],ve=Xt[0][2],fe=Xt[1][1],Se=Xt[1][1],Me=m.dot(Kt,Ft),Ke=m.dot(Ae,Ft),or=[-Me,-Ke],$e=m.dot(Kt,Kt)+m.dot(He,Ft),Ze=m.dot(Kt,Ae)+m.dot(fe,Ft),Qe=m.dot(Kt,Ae)+m.dot(Se,Ft),dr=m.dot(Ae,Ae)+m.dot(ve,Ft),Mn=[[$e,Ze],[Qe,dr]],Zr=Ct.solve(Mn,or);return m.add(Zr,Gt)};l<a;){u=J(M),_=m.sub(u[0][0],n);var j=m.norm(_),K=m.dot(u[1][0],_),tt=m.norm(u[1][0])*j,et=m.dot(u[0][1],_),it=m.norm(u[0][1])*j,ht=K/tt,at=et/it,ct=j<d,nt=ht<p,mt=at<p;if(ct&&nt&&mt)return M;var X=H(M,u,_);X[0]<v?P?X=[w-(X[0]-v),X[1]]:X=[v+rt.EPSILON,X[1]]:X[0]>w&&(P?X=[v+(X[0]-w),X[1]]:X=[w-rt.EPSILON,X[1]]),X[1]<I?k?X=[X[0],S-(X[1]-I)]:X=[X[0],I+rt.EPSILON]:X[1]>S&&(k?X=[X[0],I+(X[0]-S)]:X=[X[0],S-rt.EPSILON]);var ft=m.norm(m.mul(X[0]-M[0],u[1][0])),It=m.norm(m.mul(X[1]-M[1],u[0][1]));if(ft+It<d)return M;M=X,l++}return M},yt.rationalCurveClosestPoint=function(r,n){return N.rationalCurvePoint(r,yt.rationalCurveClosestParam(r,n))},yt.rationalCurveClosestParam=function(r,n){for(var a=1/0,l=0,u=Ot.rationalCurveRegularSample(r,r.controlPoints.length*r.degree,!0),d=0,p=u.length-1;d<p;){var _=d++,v=u[_][0],w=u[_+1][0],I=u[_].slice(1),S=u[_+1].slice(1),P=ke.segmentClosestPoint(n,I,S,v,w),k=m.norm(m.sub(n,P.pt));k<a&&(a=k,l=P.u)}for(var M=5,L=0,C,B=1e-4,z=5e-4,F,V=r.knots[0],q=$.last(r.knots),J=m.normSquared(m.sub(r.controlPoints[0],$.last(r.controlPoints)))<rt.EPSILON,H=l,j=function(X){return N.rationalCurveDerivatives(r,X,2)},K=function(X,ft,It){var Gt=m.dot(ft[1],It),Xt=m.dot(ft[2],It),Ft=m.dot(ft[1],ft[1]),Kt=Xt+Ft;return X-Gt/Kt};L<M;){C=j(H),F=m.sub(C[0],n);var tt=m.norm(F),et=m.dot(C[1],F),it=m.norm(C[1])*tt,ht=et/it,at=tt<B,ct=Math.abs(ht)<z;if(at&&ct)return H;var nt=K(H,C,F);nt<V?J?nt=q-(nt-V):nt=V:nt>q&&(J?nt=V+(nt-q):nt=q);var mt=m.norm(m.mul(nt-H,C[1]));if(mt<B)return H;H=nt,L++}return H},yt.rationalCurveParamAtArcLength=function(r,n,a,l,u){if(a==null&&(a=.001),n<rt.EPSILON)return r.knots[0];var d;l!=null?d=l:d=gt.decomposeCurveIntoBeziers(r);var p=0;d[p];var _=-rt.EPSILON,v;for(u!=null?v=u:v=[];_<n&&p<d.length;){if(p<v.length?v[p]=v[p]:v[p]=yt.rationalBezierCurveArcLength(r),_+=v[p],n<_+rt.EPSILON)return yt.rationalBezierCurveParamAtArcLength(r,n,a,v[p]);p++}return-1},yt.rationalBezierCurveParamAtArcLength=function(r,n,a,l){if(n<0)return r.knots[0];var u;if(l!=null?u=l:u=yt.rationalBezierCurveArcLength(r),n>u)return $.last(r.knots);var d=r.knots[0],p=0,_=$.last(r.knots),v=u,w=0,I=0,S;for(a!=null?S=a:S=rt.TOLERANCE*2;v-p>S;)w=(d+_)/2,I=yt.rationalBezierCurveArcLength(r,w),I>n?(_=w,v=I):(d=w,p=I);return(d+_)/2},yt.rationalCurveArcLength=function(r,n,a){a==null&&(a=16),n==null?n=$.last(r.knots):n=n;for(var l=gt.decomposeCurveIntoBeziers(r),u=0,d=l[0],p=0;u<l.length&&d.knots[0]+rt.EPSILON<n;){var _=Math.min($.last(d.knots),n);p+=yt.rationalBezierCurveArcLength(d,_,a),d=l[++u]}return p},yt.rationalBezierCurveArcLength=function(r,n,a){a==null&&(a=16);var l;n==null?l=$.last(r.knots):l=n;for(var u=(l-r.knots[0])/2,d=0,p=r.degree+a,_,v,w=0;w<p;){var I=w++;_=u*yt.Tvalues[p][I]+u+r.knots[0],v=N.rationalCurveDerivatives(r,_,1),d+=yt.Cvalues[p][I]*m.norm(v[1])}return u*d};var Pn=g.eval.KnotMultiplicity=function(r,n){this.knot=r,this.mult=n};b["verb.eval.KnotMultiplicity"]=Pn,Pn.__name__=["verb","eval","KnotMultiplicity"],Pn.prototype={inc:function(){this.mult++},__class__:Pn};var We=g.eval.Check=function(){};b["verb.eval.Check"]=We,We.__name__=["verb","eval","Check"],We.isValidKnotVector=function(r,n){if(r.length==0||r.length<(n+1)*2)return!1;for(var a=$.first(r),l=0,u=n+1;l<u;){var d=l++;if(Math.abs(r[d]-a)>rt.EPSILON)return!1}a=$.last(r);for(var p=r.length-n-1,_=r.length;p<_;){var v=p++;if(Math.abs(r[v]-a)>rt.EPSILON)return!1}return We.isNonDecreasing(r)},We.isNonDecreasing=function(r){for(var n=$.first(r),a=0,l=r.length;a<l;){var u=a++;if(r[u]<n-rt.EPSILON)return!1;n=r[u]}return!0},We.isValidNurbsCurveData=function(r){if(r.controlPoints==null)throw new Q("Control points array cannot be null!");if(r.degree==null)throw new Q("Degree cannot be null!");if(r.degree<1)throw new Q("Degree must be greater than 1!");if(r.knots==null)throw new Q("Knots cannot be null!");if(r.knots.length!=r.controlPoints.length+r.degree+1)throw new Q("controlPoints.length + degree + 1 must equal knots.length!");if(!We.isValidKnotVector(r.knots,r.degree))throw new Q("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return r},We.isValidNurbsSurfaceData=function(r){if(r.controlPoints==null)throw new Q("Control points array cannot be null!");if(r.degreeU==null)throw new Q("DegreeU cannot be null!");if(r.degreeV==null)throw new Q("DegreeV cannot be null!");if(r.degreeU<1)throw new Q("DegreeU must be greater than 1!");if(r.degreeV<1)throw new Q("DegreeV must be greater than 1!");if(r.knotsU==null)throw new Q("KnotsU cannot be null!");if(r.knotsV==null)throw new Q("KnotsV cannot be null!");if(r.knotsU.length!=r.controlPoints.length+r.degreeU+1)throw new Q("controlPointsU.length + degreeU + 1 must equal knotsU.length!");if(r.knotsV.length!=r.controlPoints[0].length+r.degreeV+1)throw new Q("controlPointsV.length + degreeV + 1 must equal knotsV.length!");if(!We.isValidKnotVector(r.knotsU,r.degreeU)||!We.isValidKnotVector(r.knotsV,r.degreeV))throw new Q("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return r};var le=g.eval.Divide=function(){};b["verb.eval.Divide"]=le,le.__name__=["verb","eval","Divide"],le.surfaceSplit=function(r,n,a){a==null&&(a=!1);var l,u,d;a?(d=r.controlPoints,l=r.knotsV,u=r.degreeV):(d=Ct.transpose(r.controlPoints),l=r.knotsU,u=r.degreeU);for(var p,_=[],v=0,w=u+1;v<w;)v++,_.push(n);p=_;for(var I=[],S=[],P=N.knotSpan(u,n,l),k=null,M=0;M<d.length;){var L=d[M];++M,k=gt.curveKnotRefine(new jt(u,l,L),p),I.push(k.controlPoints.slice(0,P+1)),S.push(k.controlPoints.slice(P+1))}var C=k.knots.slice(0,P+u+2),B=k.knots.slice(P+1);return a?[new te(r.degreeU,u,r.knotsU.slice(),C,I),new te(r.degreeU,u,r.knotsU.slice(),B,S)]:(I=Ct.transpose(I),S=Ct.transpose(S),[new te(u,r.degreeV,C,r.knotsV.slice(),I),new te(u,r.degreeV,B,r.knotsV.slice(),S)])},le.curveSplit=function(r,n){var a=r.degree;r.controlPoints;for(var l=r.knots,u,d=[],p=0,_=a+1;p<_;)p++,d.push(n);u=d;var v=gt.curveKnotRefine(r,u),w=N.knotSpan(a,n,l),I=v.knots.slice(0,w+a+2),S=v.knots.slice(w+1),P=v.controlPoints.slice(0,w+1),k=v.controlPoints.slice(w+1);return[new jt(a,I,P),new jt(a,S,k)]},le.rationalCurveByEqualArcLength=function(r,n){var a=yt.rationalCurveArcLength(r),l=a/n;return le.rationalCurveByArcLength(r,l)},le.rationalCurveByArcLength=function(r,n){var a=gt.decomposeCurveIntoBeziers(r),l=a.map(function(P){return yt.rationalBezierCurveArcLength(P)}),u=m.sum(l),d=[new En(r.knots[0],0)];if(n>u)return d;for(var p=n,_=0,v=p,w=0,I=0,S;_<a.length;){for(w+=l[_];v<w+rt.EPSILON;)S=yt.rationalBezierCurveParamAtArcLength(a[_],v-I,rt.TOLERANCE,l[_]),d.push(new En(S,v)),v+=p;I+=l[_],_++}return d};var En=g.eval.CurveLengthSample=function(r,n){this.u=r,this.len=n};b["verb.eval.CurveLengthSample"]=En,En.__name__=["verb","eval","CurveLengthSample"],En.prototype={__class__:En};var N=g.eval.Eval=function(){};b["verb.eval.Eval"]=N,N.__name__=["verb","eval","Eval"],N.rationalCurveTangent=function(r,n){var a=N.rationalCurveDerivatives(r,n,1);return a[1]},N.rationalSurfaceNormal=function(r,n,a){var l=N.rationalSurfaceDerivatives(r,n,a,1);return m.cross(l[1][0],l[0][1])},N.rationalSurfaceDerivatives=function(r,n,a,l){l==null&&(l=1);for(var u=N.surfaceDerivatives(r,n,a,l),d=N.rational2d(u),p=N.weight2d(u),_=[],v=d[0][0].length,w=0,I=l+1;w<I;){var S=w++;_.push([]);for(var P=0,k=l-S+1;P<k;){for(var M=P++,L=d[S][M],C=1,B=M+1;C<B;){var z=C++;m.subMulMutate(L,Bt.get(M,z)*p[0][z],_[S][M-z])}for(var F=1,V=S+1;F<V;){var q=F++;m.subMulMutate(L,Bt.get(S,q)*p[q][0],_[S-q][M]);for(var J=m.zeros1d(v),H=1,j=M+1;H<j;){var K=H++;m.addMulMutate(J,Bt.get(M,K)*p[q][K],_[S-q][M-K])}m.subMulMutate(L,Bt.get(S,q),J)}m.mulMutate(1/p[0][0],L),_[S].push(L)}}return _},N.rationalSurfacePoint=function(r,n,a){return N.dehomogenize(N.surfacePoint(r,n,a))},N.rationalCurveDerivatives=function(r,n,a){a==null&&(a=1);for(var l=N.curveDerivatives(r,n,a),u=N.rational1d(l),d=N.weight1d(l),p=[],_=0,v=a+1;_<v;){for(var w=_++,I=u[w],S=1,P=w+1;S<P;){var k=S++;m.subMulMutate(I,Bt.get(w,k)*d[k],p[w-k])}m.mulMutate(1/d[0],I),p.push(I)}return p},N.rationalCurvePoint=function(r,n){return N.dehomogenize(N.curvePoint(r,n))},N.surfaceDerivatives=function(r,n,a,l){var u=r.knotsU.length-r.degreeU-2,d=r.knotsV.length-r.degreeV-2;return N.surfaceDerivativesGivenNM(u,d,r,n,a,l)},N.surfaceDerivativesGivenNM=function(r,n,a,l,u,d){var p=a.degreeU,_=a.degreeV,v=a.controlPoints,w=a.knotsU,I=a.knotsV;if(!N.areValidRelations(p,v.length,w.length)||!N.areValidRelations(_,v[0].length,I.length))throw new Q("Invalid relations between control points, knot vector, and n");var S=v[0][0].length,P;d<p?P=d:P=p;var k;d<_?k=d:k=_;for(var M=m.zeros3d(d+1,d+1,S),L=N.knotSpanGivenN(r,p,l,w),C=N.knotSpanGivenN(n,_,u,I),B=N.derivativeBasisFunctionsGivenNI(L,l,p,r,w),z=N.derivativeBasisFunctionsGivenNI(C,u,_,n,I),F=m.zeros2d(_+1,S),V=0,q=0,J=P+1;q<J;){for(var H=q++,j=0,K=_+1;j<K;){var tt=j++;F[tt]=m.zeros1d(S);for(var et=0,it=p+1;et<it;){var ht=et++;m.addMulMutate(F[tt],B[H][ht],v[L-p+ht][C-_+tt])}}var at=d-H;at<k?V=at:V=k;for(var ct=0,nt=V+1;ct<nt;){var mt=ct++;M[H][mt]=m.zeros1d(S);for(var X=0,ft=_+1;X<ft;){var It=X++;m.addMulMutate(M[H][mt],z[mt][It],F[It])}}}return M},N.surfacePoint=function(r,n,a){var l=r.knotsU.length-r.degreeU-2,u=r.knotsV.length-r.degreeV-2;return N.surfacePointGivenNM(l,u,r,n,a)},N.surfacePointGivenNM=function(r,n,a,l,u){var d=a.degreeU,p=a.degreeV,_=a.controlPoints,v=a.knotsU,w=a.knotsV;if(!N.areValidRelations(d,_.length,v.length)||!N.areValidRelations(p,_[0].length,w.length))throw new Q("Invalid relations between control points, knot vector, and n");for(var I=_[0][0].length,S=N.knotSpanGivenN(r,d,l,v),P=N.knotSpanGivenN(n,p,u,w),k=N.basisFunctionsGivenKnotSpanIndex(S,l,d,v),M=N.basisFunctionsGivenKnotSpanIndex(P,u,p,w),L=S-d,C=P,B=m.zeros1d(I),z=m.zeros1d(I),F=0,V=p+1;F<V;){var q=F++;z=m.zeros1d(I),C=P-p+q;for(var J=0,H=d+1;J<H;){var j=J++;m.addMulMutate(z,k[j],_[L+j][C])}m.addMulMutate(B,M[q],z)}return B},N.curveRegularSamplePoints=function(r,n){for(var a=N.curveDerivatives(r,r.knots[0],r.degree),l=1/n,u=l*l,d=a[0],p=m.mul(l,a[1]),_=m.mul(u*.5,a[2]),v=m.mul(u*l*.5,a[3]),w=m.add(_,_),I=m.add(v,v),S=m.mul(.3333333333333333,v),P=[],k=0,M=n+1;k<M;)k++,P.push(N.dehomogenize(d)),m.addAllMutate([d,p,_,S]),m.addAllMutate([p,w,v]),m.addAllMutate([w,I]),m.addAllMutate([_,v]);return P},N.curveRegularSamplePoints2=function(r,n){for(var a=N.curveDerivatives(r,r.knots[0],r.degree),l=1/n,u=l*l,d=a[0],p=m.mul(l,a[1]),_=m.mul(u*.5,a[2]),v=m.mul(u*l*.5,a[3]),w=m.add(_,_),I=m.add(v,v),S=m.mul(.3333333333333333,v),P=[],k=0,M=n+1;k<M;)k++,P.push(N.dehomogenize(d)),m.addAllMutate([d,p,_,S]),m.addAllMutate([p,w,v]),m.addAllMutate([w,I]),m.addAllMutate([_,v]);return P},N.rationalSurfaceRegularSampleDerivatives=function(r,n,a,l){for(var u=N.surfaceRegularSampleDerivatives(r,n,a,l),d=[],p=n+1,_=a+1,v=l+1,w=0;w<p;){var I=w++,S=[];d.push(S);for(var P=0;P<_;){for(var k=P++,M=u[I][k],L=N.rational2d(M),C=N.weight2d(M),B=[],z=L[0][0].length,F=0;F<v;){var V=F++;B.push([]);for(var q=0,J=v-V;q<J;){for(var H=q++,j=L[V][H],K=1,tt=H+1;K<tt;){var et=K++;m.subMulMutate(j,Bt.get(H,et)*C[0][et],B[V][H-et])}for(var it=1,ht=V+1;it<ht;){var at=it++;m.subMulMutate(j,Bt.get(V,at)*C[at][0],B[V-at][H]);for(var ct=m.zeros1d(z),nt=1,mt=H+1;nt<mt;){var X=nt++;m.addMulMutate(ct,Bt.get(H,X)*C[at][X],B[V-at][H-X])}m.subMulMutate(j,Bt.get(V,at),ct)}m.mulMutate(1/C[0][0],j),B[V].push(j)}}S.push(B)}}return d},N.surfaceRegularSampleDerivatives=function(r,n,a,l){var u=r.degreeU,d=r.degreeV,p=r.controlPoints,_=r.knotsU,v=r.knotsV,w=p[0][0].length;($.last(_)-_[0])/n,($.last(v)-v[0])/a;for(var I=N.regularlySpacedDerivativeBasisFunctions(u,_,n),S=I.item0,P=I.item1,k=N.regularlySpacedDerivativeBasisFunctions(d,v,a),M=k.item0,L=k.item1,C=[],B=n+1,z=a+1,F=0;F<B;){var V=F++,q=[];C.push(q);for(var J=0;J<z;){var H=J++;q.push(N.surfaceDerivativesGivenBasesKnotSpans(u,d,p,S[V],M[H],P[V],L[H],w,l))}}return C},N.rationalSurfaceRegularSamplePoints=function(r,n,a){return N.dehomogenize2d(N.surfaceRegularSamplePoints(r,n,a))},N.surfaceRegularSamplePoints=function(r,n,a){var l=r.degreeU,u=r.degreeV,d=r.controlPoints,p=r.knotsU,_=r.knotsV,v=d[0][0].length;($.last(p)-p[0])/n,($.last(_)-_[0])/a;for(var w=N.regularlySpacedBasisFunctions(l,p,n),I=w.item0,S=w.item1,P=N.regularlySpacedBasisFunctions(u,_,a),k=P.item0,M=P.item1,L=[],C=n+1,B=a+1,z=0;z<C;){var F=z++,V=[];L.push(V);for(var q=0;q<B;){var J=q++;V.push(N.surfacePointGivenBasesKnotSpans(l,u,d,I[F],k[J],S[F],M[J],v))}}return L},N.regularlySpacedBasisFunctions=function(r,n,a){for(var l=n.length-r-2,u=($.last(n)-n[0])/a,d=[],p=[],_=n[0],v=N.knotSpanGivenN(l,r,_,n),w=a+1,I=0;I<w;){for(I++;_>=n[v+1];)v++;p.push(v),d.push(N.basisFunctionsGivenKnotSpanIndex(v,_,r,n)),_+=u}return new ee(p,d)},N.regularlySpacedDerivativeBasisFunctions=function(r,n,a){for(var l=n.length-r-2,u=($.last(n)-n[0])/a,d=[],p=[],_=n[0],v=N.knotSpanGivenN(l,r,_,n),w=a+1,I=0;I<w;){for(I++;_>=n[v+1];)v++;p.push(v),d.push(N.derivativeBasisFunctionsGivenNI(v,_,r,l,n)),_+=u}return new ee(p,d)},N.surfacePointGivenBasesKnotSpans=function(r,n,a,l,u,d,p,_){for(var v=m.zeros1d(_),w,I=l-r,S=u-n,P=0,k=n+1;P<k;){var M=P++;w=m.zeros1d(_);for(var L=0,C=r+1;L<C;){var B=L++;m.addMulMutate(w,d[B],a[I+B][S])}S++,m.addMulMutate(v,p[M],w)}return v},N.surfaceDerivativesGivenBasesKnotSpans=function(r,n,a,l,u,d,p,_,v){var w=a[0][0].length,I;v<r?I=v:I=r;var S;v<n?S=v:S=n;for(var P=m.zeros3d(I+1,S+1,w),k=m.zeros2d(n+1,w),M=0,L=0,C=I+1;L<C;){for(var B=L++,z=0,F=n+1;z<F;){var V=z++;k[V]=m.zeros1d(w);for(var q=0,J=r+1;q<J;){var H=q++;m.addMulMutate(k[V],d[B][H],a[l-r+H][u-n+V])}}var j=v-B;j<S?M=j:M=S;for(var K=0,tt=M+1;K<tt;){var et=K++;P[B][et]=m.zeros1d(w);for(var it=0,ht=n+1;it<ht;){var at=it++;m.addMulMutate(P[B][et],p[et][at],k[at])}}}return P},N.curveDerivatives=function(r,n,a){var l=r.knots.length-r.degree-2;return N.curveDerivativesGivenN(l,r,n,a)},N.curveDerivativesGivenN=function(r,n,a,l){var u=n.degree,d=n.controlPoints,p=n.knots;if(!N.areValidRelations(u,d.length,p.length))throw new Q("Invalid relations between control points, knot vector, and n");var _=d[0].length,v;l<u?v=l:v=u;for(var w=m.zeros2d(l+1,_),I=N.knotSpanGivenN(r,u,a,p),S=N.derivativeBasisFunctionsGivenNI(I,a,u,v,p),P=0,k=v+1;P<k;)for(var M=P++,L=0,C=u+1;L<C;){var B=L++;m.addMulMutate(w[M],S[M][B],d[I-u+B])}return w},N.curvePoint=function(r,n){var a=r.knots.length-r.degree-2;return N.curvePointGivenN(a,r,n)},N.areValidRelations=function(r,n,a){return n+r+1-a==0},N.curvePointGivenN=function(r,n,a){var l=n.degree,u=n.controlPoints,d=n.knots;if(!N.areValidRelations(l,u.length,d.length))throw new Q("Invalid relations between control points, knot Array, and n");for(var p=N.knotSpanGivenN(r,l,a,d),_=N.basisFunctionsGivenKnotSpanIndex(p,a,l,d),v=m.zeros1d(u[0].length),w=0,I=l+1;w<I;){var S=w++;m.addMulMutate(v,_[S],u[p-l+S])}return v},N.volumePoint=function(r,n,a,l){var u=r.knotsU.length-r.degreeU-2,d=r.knotsV.length-r.degreeV-2,p=r.knotsW.length-r.degreeW-2;return N.volumePointGivenNML(r,u,d,p,n,a,l)},N.volumePointGivenNML=function(r,n,a,l,u,d,p){if(!N.areValidRelations(r.degreeU,r.controlPoints.length,r.knotsU.length)||!N.areValidRelations(r.degreeV,r.controlPoints[0].length,r.knotsV.length)||!N.areValidRelations(r.degreeW,r.controlPoints[0][0].length,r.knotsW.length))throw new Q("Invalid relations between control points and knot vector");for(var _=r.controlPoints,v=r.degreeU,w=r.degreeV,I=r.degreeW,S=r.knotsU,P=r.knotsV,k=r.knotsW,M=_[0][0][0].length,L=N.knotSpanGivenN(n,v,u,S),C=N.knotSpanGivenN(a,w,d,P),B=N.knotSpanGivenN(l,I,p,k),z=N.basisFunctionsGivenKnotSpanIndex(L,u,v,S),F=N.basisFunctionsGivenKnotSpanIndex(C,d,w,P),V=N.basisFunctionsGivenKnotSpanIndex(B,p,I,k),q=L-v,J=m.zeros1d(M),H=m.zeros1d(M),j=m.zeros1d(M),K=0,tt=I+1;K<tt;){var et=K++;j=m.zeros1d(M);for(var it=B-I+et,ht=0,at=w+1;ht<at;){var ct=ht++;H=m.zeros1d(M);for(var nt=C-w+ct,mt=0,X=v+1;mt<X;){var ft=mt++;m.addMulMutate(H,z[ft],_[q+ft][nt][it])}m.addMulMutate(j,F[ct],H)}m.addMulMutate(J,V[et],j)}return J},N.derivativeBasisFunctions=function(r,n,a){var l=N.knotSpan(n,r,a),u=a.length-1,d=u-n-1;return N.derivativeBasisFunctionsGivenNI(l,r,n,d,a)},N.derivativeBasisFunctionsGivenNI=function(r,n,a,l,u){var d=m.zeros2d(a+1,a+1),p=m.zeros1d(a+1),_=m.zeros1d(a+1),v=0,w=0;d[0][0]=1;for(var I=1,S=a+1;I<S;){var P=I++;p[P]=n-u[r+1-P],_[P]=u[r+P]-n,v=0;for(var k=0;k<P;){var M=k++;d[P][M]=_[M+1]+p[P-M],w=d[M][P-1]/d[P][M],d[M][P]=v+_[M+1]*w,v=p[P-M]*w}d[P][P]=v}for(var L=m.zeros2d(l+1,a+1),C=m.zeros2d(2,a+1),B=0,z=1,F=0,V=0,q=0,J=0,H=0,j=0,K=a+1;j<K;){var tt=j++;L[0][tt]=d[tt][a]}for(var et=0,it=a+1;et<it;){var ht=et++;B=0,z=1,C[0][0]=1;for(var at=1,ct=l+1;at<ct;){var nt=at++;F=0,V=ht-nt,q=a-nt,ht>=nt&&(C[z][0]=C[B][0]/d[q+1][V],F=C[z][0]*d[V][q]),V>=-1?J=1:J=-V,ht-1<=q?H=nt-1:H=a-ht;for(var mt=J,X=H+1;mt<X;){var ft=mt++;C[z][ft]=(C[B][ft]-C[B][ft-1])/d[q+1][V+ft],F+=C[z][ft]*d[V+ft][q]}ht<=q&&(C[z][nt]=-C[B][nt-1]/d[q+1][ht],F+=C[z][nt]*d[ht][q]),L[nt][ht]=F;var It=B;B=z,z=It}}for(var Gt=a,Xt=1,Ft=l+1;Xt<Ft;){for(var Kt=Xt++,Ae=0,He=a+1;Ae<He;){var ve=Ae++;L[Kt][ve]*=Gt}Gt*=a-Kt}return L},N.basisFunctions=function(r,n,a){var l=N.knotSpan(n,r,a);return N.basisFunctionsGivenKnotSpanIndex(l,r,n,a)},N.basisFunctionsGivenKnotSpanIndex=function(r,n,a,l){var u=m.zeros1d(a+1),d=m.zeros1d(a+1),p=m.zeros1d(a+1),_=0,v=0;u[0]=1;for(var w=1,I=a+1;w<I;){var S=w++;d[S]=n-l[r+1-S],p[S]=l[r+S]-n,_=0;for(var P=0;P<S;){var k=P++;v=u[k]/(p[k+1]+d[S-k]),u[k]=_+p[k+1]*v,_=d[S-k]*v}u[S]=_}return u},N.knotSpan=function(r,n,a){return N.knotSpanGivenN(a.length-r-2,r,n,a)},N.knotSpanGivenN=function(r,n,a,l){if(a>l[r+1]-rt.EPSILON)return r;if(a<l[n]+rt.EPSILON)return n;for(var u=n,d=r+1,p=Math.floor((u+d)/2);a<l[p]||a>=l[p+1];)a<l[p]?d=p:u=p,p=Math.floor((u+d)/2);return p},N.dehomogenize=function(r){for(var n=r.length,a=[],l=r[n-1],u=r.length-1,d=0;d<u;){var p=d++;a.push(r[p]/l)}return a},N.rational1d=function(r){var n=r[0].length-1;return r.map(function(a){return a.slice(0,n)})},N.rational2d=function(r){return r.map(N.rational1d)},N.weight1d=function(r){var n=r[0].length-1;return r.map(function(a){return a[n]})},N.weight2d=function(r){return r.map(N.weight1d)},N.dehomogenize1d=function(r){return r.map(N.dehomogenize)},N.dehomogenize2d=function(r){return r.map(N.dehomogenize1d)},N.homogenize1d=function(r,n){var a=r.length,l=r[0].length,u=[],d=0,p=[],_;n!=null?_=n:_=m.rep(r.length,1);for(var v=0;v<a;){var w=v++,I=[];p=r[w],d=_[w];for(var S=0;S<l;){var P=S++;I.push(p[P]*d)}I.push(d),u.push(I)}return u},N.homogenize2d=function(r,n){var a=r.length,l=[],u;if(n!=null)u=n;else{for(var d=[],p=0;p<a;)p++,d.push(m.rep(r[0].length,1));u=d}for(var _=0;_<a;){var v=_++;l.push(N.homogenize1d(r[v],u[v]))}return l};var lt=g.eval.Intersect=function(){};b["verb.eval.Intersect"]=lt,lt.__name__=["verb","eval","Intersect"],lt.surfaces=function(r,n,a){var l=Ot.rationalSurfaceAdaptive(r),u=Ot.rationalSurfaceAdaptive(n),d=lt.meshes(l,u),p=d.map(function(_){return _.map(function(v){return lt.surfacesAtPointWithEstimate(r,n,v.uv0,v.uv1,a)})});return p.map(function(_){return pt.rationalInterpCurve(_.map(function(v){return v.point}),3)})},lt.surfacesAtPointWithEstimate=function(r,n,a,l,u){var d,p,_,v,w,I,S,P,k,M,L,C,B,z=5,F=0;do{if(d=N.rationalSurfaceDerivatives(r,a[0],a[1],1),p=d[0][0],v=d[1][0],w=d[0][1],_=m.normalized(m.cross(v,w)),I=m.dot(_,p),S=N.rationalSurfaceDerivatives(n,l[0],l[1],1),P=S[0][0],M=S[1][0],L=S[0][1],k=m.normalized(m.cross(M,L)),C=m.dot(k,P),B=m.distSquared(p,P),B<u*u)break;var V=m.normalized(m.cross(_,k)),q=m.dot(V,p),J=lt.threePlanes(_,I,k,C,V,q);if(J==null)throw new Q("panic!");var H=m.sub(J,p),j=m.sub(J,P),K=m.cross(v,_),tt=m.cross(w,_),et=m.cross(M,k),it=m.cross(L,k),ht=m.dot(tt,H)/m.dot(tt,v),at=m.dot(K,H)/m.dot(K,w),ct=m.dot(it,j)/m.dot(it,M),nt=m.dot(et,j)/m.dot(et,L);a=m.add([ht,at],a),l=m.add([ct,nt],l),F++}while(F<z);return new Yn(a,l,p,B)},lt.meshes=function(r,n,a,l){a==null&&(a=new ir(r)),l==null&&(l=new ir(n));var u=lt.boundingBoxTrees(a,l,0),d=$.unique(u.map(function(p){return lt.triangles(r,p.item0,n,p.item1)}).filter(function(p){return p!=null}).filter(function(p){return m.distSquared(p.min.point,p.max.point)>rt.EPSILON}),function(p,_){var v=m.sub(p.min.uv0,_.min.uv0),w=m.dot(v,v),I=m.sub(p.max.uv0,_.max.uv0),S=m.dot(I,I),P=m.sub(p.min.uv0,_.max.uv0),k=m.dot(P,P),M=m.sub(p.max.uv0,_.min.uv0),L=m.dot(M,M);return w<rt.EPSILON&&S<rt.EPSILON||k<rt.EPSILON&&L<rt.EPSILON});return lt.makeMeshIntersectionPolylines(d)},lt.meshSlices=function(r,n,a,l){for(var u=new Lr(r),d=u.boundingBox(),p=d.min[0],_=d.min[1],v=d.max[0],w=d.max[1],I=m.span(n,a,l),S=[],P=0;P<I.length;){var k=I[P];++P;var M=[[p,_,k],[v,_,k],[v,w,k],[p,w,k]],L=[[0,0],[1,0],[1,1],[0,1]],C=[[0,1,2],[0,2,3]],B=new qe(C,M,null,L);S.push(lt.meshes(r,B,u))}return S},lt.makeMeshIntersectionPolylines=function(r){if(r.length==0)return[];for(var n=0;n<r.length;){var a=r[n];++n,a.max.opp=a.min,a.min.opp=a.max}for(var l=lt.kdTreeFromSegments(r),u=[],d=0;d<r.length;){var p=r[d];++d,u.push(p.min),u.push(p.max)}for(var _=0;_<u.length;){var v=u[_];if(++_,v.adj==null){var w=lt.lookupAdjacentSegment(v,l,r.length);w!=null&&w.adj==null&&(v.adj=w,w.adj=v)}}var I=u.filter(function(z){return z.adj==null});I.length==0&&(I=u);for(var S=[],P=0,k=!1;I.length!=0;){var M=I.pop();if(!M.visited){for(var L=[],C=M;C!=null&&!(C.visited||(C.visited=!0,C.opp.visited=!0,L.push(C),P+=2,C=C.opp.adj,C==M)););L.length>0&&(L.push(L[L.length-1].opp),S.push(L))}if(I.length==0&&u.length>0&&(k||P<u.length)){k=!0;var B=u.pop();I.push(B)}}return S},lt.kdTreeFromSegments=function(r){for(var n=[],a=0;a<r.length;){var l=r[a];++a,n.push(new An(l.min.point,l.min)),n.push(new An(l.max.point,l.max))}return new Kn(n,m.distSquared)},lt.lookupAdjacentSegment=function(r,n,a){var l=n.nearest(r.point,a,rt.EPSILON).filter(function(u){return r!=u.item0.obj}).map(function(u){return u.item0.obj});return l.length==1?l[0]:null},lt.curveAndSurface=function(r,n,a,l,u){a==null&&(a=.001),l!=null?l=l:l=new sr(r),u!=null?u=u:u=new Cr(n);var d=lt.boundingBoxTrees(l,u,a);return $.unique(d.map(function(p){var _=p.item0,v=p.item1,w=$.first(_.knots),I=$.last(_.knots),S=(w+I)/2,P=$.first(v.knotsU),k=$.last(v.knotsU),M=$.first(v.knotsV),L=$.last(v.knotsV),C=[(P+k)/2,(M+L)/2];return lt.curveAndSurfaceWithEstimate(_,v,[S].concat(C),a)}).filter(function(p){return m.distSquared(p.curvePoint,p.surfacePoint)<a*a}),function(p,_){return Math.abs(p.u-_.u)<.5*a})},lt.curveAndSurfaceWithEstimate=function(r,n,a,l){l==null&&(l=.001);var u=function(v){var w=N.rationalCurvePoint(r,v[0]),I=N.rationalSurfacePoint(n,v[1],v[2]),S=m.sub(w,I);return m.dot(S,S)},d=function(v){var w=N.rationalCurveDerivatives(r,v[0],1),I=N.rationalSurfaceDerivatives(n,v[1],v[2],1),S=m.sub(I[0][0],w[0]),P=m.mul(-1,w[1]),k=I[1][0],M=I[0][1];return[2*m.dot(P,S),2*m.dot(k,S),2*m.dot(M,S)]},p=Ye.uncmin(u,a,l*l,d),_=p.solution;return new Hn(_[0],[_[1],_[2]],N.rationalCurvePoint(r,_[0]),N.rationalSurfacePoint(n,_[1],_[2]))},lt.polylineAndMesh=function(r,n,a){for(var l=lt.boundingBoxTrees(new ar(r),new ir(n),a),u=[],d=0;d<l.length;){var p=l[d];++d;var _=p.item0,v=p.item1,w=lt.segmentWithTriangle(r.points[_],r.points[_+1],n.points,n.faces[v]);if(w!=null){var I=w.point,S=m.lerp(w.p,[r.params[_]],[r.params[_+1]])[0],P=re.triangleUVFromPoint(n,v,I);u.push(new qn(I,S,P,_,v))}}return u},lt.boundingBoxTrees=function(r,n,a){a==null&&(a=1e-9);var l=[],u=[];l.push(r),u.push(n);for(var d=[];l.length>0;){var p=l.pop(),_=u.pop();if(!(p.empty()||_.empty())&&p.boundingBox().intersects(_.boundingBox(),a)){var v=p.indivisible(a),w=_.indivisible(a);if(v&&w){d.push(new ee(p.yield(),_.yield()));continue}else if(v&&!w){var I=_.split();l.push(p),u.push(I.item1),l.push(p),u.push(I.item0);continue}else if(!v&&w){var S=p.split();l.push(S.item1),u.push(_),l.push(S.item0),u.push(_);continue}var P=p.split(),k=_.split();l.push(P.item1),u.push(k.item1),l.push(P.item1),u.push(k.item0),l.push(P.item0),u.push(k.item1),l.push(P.item0),u.push(k.item0)}}return d},lt.curves=function(r,n,a){var l=lt.boundingBoxTrees(new sr(r),new sr(n),0);return $.unique(l.map(function(u){return lt.curvesWithEstimate(r,n,$.first(u.item0.knots),$.first(u.item1.knots),a)}).filter(function(u){return m.distSquared(u.point0,u.point1)<a}),function(u,d){return Math.abs(u.u0-d.u0)<a*5})},lt.curvesWithEstimate=function(r,n,a,l,u){var d=function(P){var k=N.rationalCurvePoint(r,P[0]),M=N.rationalCurvePoint(n,P[1]),L=m.sub(k,M);return m.dot(L,L)},p=function(P){var k=N.rationalCurveDerivatives(r,P[0],1),M=N.rationalCurveDerivatives(n,P[1],1),L=m.sub(k[0],M[0]),C=k[1],B=m.mul(-1,M[1]);return[2*m.dot(C,L),2*m.dot(B,L)]},_=Ye.uncmin(d,[a,l],u*u,p),v=_.solution[0],w=_.solution[1],I=N.rationalCurvePoint(r,v),S=N.rationalCurvePoint(n,w);return new Kr(I,S,v,w)},lt.triangles=function(r,n,a,l){var u=r.faces[n],d=a.faces[l],p=re.getTriangleNorm(r.points,u),_=re.getTriangleNorm(a.points,d),v=r.points[u[0]],w=a.points[d[0]],I=lt.planes(v,p,w,_);if(I==null)return null;var S=lt.clipRayInCoplanarTriangle(I,r,n);if(S==null)return null;var P=lt.clipRayInCoplanarTriangle(I,a,l);if(P==null)return null;var k=lt.mergeTriangleClipIntervals(S,P,r,n,a,l);return k==null?null:new we(new Nr(k.min.uv0,k.min.uv1,k.min.point,n,l),new Nr(k.max.uv0,k.max.uv1,k.max.point,n,l))},lt.clipRayInCoplanarTriangle=function(r,n,a){for(var l=n.faces[a],u=[n.points[l[0]],n.points[l[1]],n.points[l[2]]],d=[n.uvs[l[0]],n.uvs[l[1]],n.uvs[l[2]]],p=[m.sub(d[1],d[0]),m.sub(d[2],d[1]),m.sub(d[0],d[2])],_=[m.sub(u[1],u[0]),m.sub(u[2],u[1]),m.sub(u[0],u[2])],v=_.map(m.normalized),w=_.map(m.norm),I=null,S=null,P=0;P<3;){var k=P++,M=u[k],L=v[k],C=lt.rays(M,L,r.origin,r.dir);if(C!=null){var B=C.u0,z=C.u1;B<-rt.EPSILON||B>w[k]+rt.EPSILON||((I==null||z<I.u)&&(I=new wn(z,m.onRay(r.origin,r.dir,z),m.onRay(d[k],p[k],B/w[k]))),(S==null||z>S.u)&&(S=new wn(z,m.onRay(r.origin,r.dir,z),m.onRay(d[k],p[k],B/w[k]))))}}return S==null||I==null?null:new we(I,S)},lt.mergeTriangleClipIntervals=function(r,n,a,l,u,d){if(n.min.u>r.max.u+rt.EPSILON||r.min.u>n.max.u+rt.EPSILON)return null;var p;r.min.u>n.min.u?p=new ee(r.min,0):p=new ee(n.min,1);var _;r.max.u<n.max.u?_=new ee(r.max,0):_=new ee(n.max,1);var v=new we(new Nr(null,null,p.item0.point,l,d),new Nr(null,null,_.item0.point,l,d));return p.item1==0?(v.min.uv0=p.item0.uv,v.min.uv1=re.triangleUVFromPoint(u,d,p.item0.point)):(v.min.uv0=re.triangleUVFromPoint(a,l,p.item0.point),v.min.uv1=p.item0.uv),_.item1==0?(v.max.uv0=_.item0.uv,v.max.uv1=re.triangleUVFromPoint(u,d,_.item0.point)):(v.max.uv0=re.triangleUVFromPoint(a,l,_.item0.point),v.max.uv1=_.item0.uv),v},lt.planes=function(r,n,a,l){var u=m.cross(n,l);if(m.dot(u,u)<rt.EPSILON)return null;var d=0,p=Math.abs(u[0]),_=Math.abs(u[1]),v=Math.abs(u[2]);_>p&&(d=1,p=_),v>p&&(d=2,p=v);var w,I,S,P;d==0?(w=n[1],I=n[2],S=l[1],P=l[2]):d==1?(w=n[0],I=n[2],S=l[0],P=l[2]):(w=n[0],I=n[1],S=l[0],P=l[1]);var k=-m.dot(r,n),M=-m.dot(a,l),L=w*P-I*S,C=(I*M-k*P)/L,B=(k*S-w*M)/L,z;return d==0?z=[0,C,B]:d==1?z=[C,0,B]:z=[C,B,0],new bn(z,m.normalized(u))},lt.threePlanes=function(r,n,a,l,u,d){var p=m.cross(a,u),_=m.dot(r,p);if(Math.abs(_)<rt.EPSILON)return null;var v=m.sub(m.mul(d,a),m.mul(l,u)),w=m.add(m.mul(n,p),m.cross(r,v));return m.mul(1/_,w)},lt.polylines=function(r,n,a){for(var l=lt.boundingBoxTrees(new ar(r),new ar(n),a),u=[],d=0;d<l.length;){var p=l[d];++d;var _=p.item0,v=p.item1,w=lt.segments(r.points[_],r.points[_+1],n.points[v],n.points[v+1],a);w!=null&&(w.u0=m.lerp(w.u0,[r.params[_]],[r.params[_+1]])[0],w.u1=m.lerp(w.u1,[n.params[v]],[n.params[v+1]])[0],u.push(w))}return u},lt.segments=function(r,n,a,l,u){var d=m.sub(n,r),p=Math.sqrt(m.dot(d,d)),_=m.mul(1/p,d),v=m.sub(l,a),w=Math.sqrt(m.dot(v,v)),I=m.mul(1/w,v),S=lt.rays(r,_,a,I);if(S!=null){var P=Math.min(Math.max(0,S.u0/p),1),k=Math.min(Math.max(0,S.u1/w),1),M=m.onRay(r,d,P),L=m.onRay(a,v,k),C=m.distSquared(M,L);if(C<u*u)return new Kr(M,L,P,k)}return null},lt.rays=function(r,n,a,l){var u=m.dot(n,l),d=m.dot(n,a),p=m.dot(n,r),_=m.dot(l,a),v=m.dot(l,r),w=m.dot(n,n),I=m.dot(l,l),S=w*I-u*u;if(Math.abs(S)<rt.EPSILON)return null;var P=u*(d-p)-w*(_-v),k=P/S,M=(d-p+k*u)/w,L=m.onRay(r,n,M),C=m.onRay(a,l,k);return new Kr(L,C,M,k)},lt.segmentWithTriangle=function(r,n,a,l){var u=a[l[0]],d=a[l[1]],p=a[l[2]],_=m.sub(d,u),v=m.sub(p,u),w=m.cross(_,v),I=m.sub(n,r),S=m.sub(r,u),P=-m.dot(w,S),k=m.dot(w,I);if(Math.abs(k)<rt.EPSILON)return null;var M=P/k;if(M<0||M>1)return null;var L=m.add(r,m.mul(M,I)),C=m.dot(_,v),B=m.dot(_,_),z=m.dot(v,v),F=m.sub(L,u),V=m.dot(F,_),q=m.dot(F,v),J=C*C-B*z;if(Math.abs(J)<rt.EPSILON)return null;var H=(C*q-z*V)/J,j=(C*V-B*q)/J;return H>1+rt.EPSILON||j>1+rt.EPSILON||j<-rt.EPSILON||H<-rt.EPSILON||H+j>1+rt.EPSILON?null:new Xn(L,H,j,M)},lt.segmentAndPlane=function(r,n,a,l){var u=m.dot(l,m.sub(n,r));if(Math.abs(u)<rt.EPSILON)return null;var d=m.dot(l,m.sub(a,r)),p=d/u;return p>1+rt.EPSILON||p<-rt.EPSILON?null:{p}};var pt=g.eval.Make=function(){};b["verb.eval.Make"]=pt,pt.__name__=["verb","eval","Make"],pt.rationalTranslationalSurface=function(r,n){for(var a=N.rationalCurvePoint(n,$.first(n.knots)),l=$.first(n.knots),u=$.last(n.knots),d=2*n.controlPoints.length,p=(u-l)/(d-1),_=[],v=0;v<d;){var w=v++,I=m.sub(N.rationalCurvePoint(n,l+w*p),a),S=gt.rationalCurveTransform(r,[[1,0,0,I[0]],[0,1,0,I[1]],[0,0,1,I[2]],[0,0,0,1]]);_.push(S)}return pt.loftedSurface(_)},pt.surfaceBoundaryCurves=function(r){var n=pt.surfaceIsocurve(r,$.first(r.knotsU),!1),a=pt.surfaceIsocurve(r,$.last(r.knotsU),!1),l=pt.surfaceIsocurve(r,$.first(r.knotsV),!0),u=pt.surfaceIsocurve(r,$.last(r.knotsV),!0);return[n,a,l,u]},pt.surfaceIsocurve=function(r,n,a){a==null&&(a=!1);var l;a?l=r.knotsV:l=r.knotsU;var u;a?u=r.degreeV:u=r.degreeU;for(var d=yt.knotMultiplicities(l),p=-1,_=0,v=d.length;_<v;){var w=_++;if(Math.abs(n-d[w].knot)<rt.EPSILON){p=w;break}}var I=u+1;p>=0&&(I=I-d[p].mult);var S;I>0?S=gt.surfaceKnotRefine(r,m.rep(I,n),a):S=r;var P=N.knotSpan(u,n,l);return Math.abs(n-$.first(l))<rt.EPSILON?P=0:Math.abs(n-$.last(l))<rt.EPSILON&&(P=(a?S.controlPoints[0].length:S.controlPoints.length)-1),a?new jt(S.degreeU,S.knotsU,function(k){for(var M,L=[],C=0,B=S.controlPoints;C<B.length;){var z=B[C];++C,L.push(z[P])}return M=L,M}()):new jt(S.degreeV,S.knotsV,S.controlPoints[P])},pt.loftedSurface=function(r,n){r=gt.unifyCurveKnotVectors(r);var a=r[0].degree;n==null&&(n=3),n>r.length-1&&(n=r.length-1);for(var l=r[0].knots,u=[],d=[],p=0,_=r[0].controlPoints.length;p<_;){var v=[p++],w=r.map(function(S){return function(P){return P.controlPoints[S[0]]}}(v)),I=pt.rationalInterpCurve(w,n,!0);d.push(I.controlPoints),u=I.knots}return new te(a,n,l,u,d)},pt.clonedCurve=function(r){return new jt(r.degree,r.knots.slice(),r.controlPoints.map(function(n){return n.slice()}))},pt.rationalBezierCurve=function(r,n){for(var a=r.length-1,l=[],u=0,d=a+1;u<d;)u++,l.push(0);for(var p=0,_=a+1;p<_;)p++,l.push(1);return n==null&&(n=m.rep(r.length,1)),new jt(a,l,N.homogenize1d(r,n))},pt.fourPointSurface=function(r,n,a,l,u){u==null&&(u=3);for(var d=u,p=[],_=0,v=u+1;_<v;){for(var w=_++,I=[],S=0,P=u+1;S<P;){var k=S++,M=1-w/d,L=m.lerp(M,r,n),C=m.lerp(M,l,a),B=m.lerp(1-k/d,L,C);B.push(1),I.push(B)}p.push(I)}var z=m.rep(u+1,0),F=m.rep(u+1,1);return new te(u,u,z.concat(F),z.concat(F),p)},pt.ellipseArc=function(r,n,a,l,u){var d=m.norm(n),p=m.norm(a);n=m.normalized(n),a=m.normalized(a),u<l&&(u=2*Math.PI+l);var _=u-l,v=0;_<=Math.PI/2?v=1:_<=Math.PI?v=2:_<=3*Math.PI/2?v=3:v=4;var w=_/v,I=Math.cos(w/2),S=m.add(r,m.add(m.mul(d*Math.cos(l),n),m.mul(p*Math.sin(l),a))),P=m.sub(m.mul(Math.cos(l),a),m.mul(Math.sin(l),n)),k=[],M=m.zeros1d(2*v+3),L=0,C=l,B=m.zeros1d(v*2);k[0]=S,B[0]=1;for(var z=1,F=v+1;z<F;){var V=z++;C+=w;var q=m.add(r,m.add(m.mul(d*Math.cos(C),n),m.mul(p*Math.sin(C),a)));B[L+2]=1,k[L+2]=q;var J=m.sub(m.mul(Math.cos(C),a),m.mul(Math.sin(C),n)),H=lt.rays(S,m.mul(1/m.norm(P),P),q,m.mul(1/m.norm(J),J)),j=m.add(S,m.mul(H.u0,P));B[L+1]=I,k[L+1]=j,L+=2,V<v&&(S=q,P=J)}for(var K=2*v+1,tt=0;tt<3;){var et=tt++;M[et]=0,M[et+K]=1}switch(v){case 2:M[3]=M[4]=.5;break;case 3:M[3]=M[4]=.3333333333333333,M[5]=M[6]=.6666666666666666;break;case 4:M[3]=M[4]=.25,M[5]=M[6]=.5,M[7]=M[8]=.75;break}return new jt(2,M,N.homogenize1d(k,B))},pt.arc=function(r,n,a,l,u,d){return pt.ellipseArc(r,m.mul(l,m.normalized(n)),m.mul(l,m.normalized(a)),u,d)},pt.polyline=function(r){for(var n=[0,0],a=0,l=0,u=r.length-1;l<u;){var d=l++;a+=m.dist(r[d],r[d+1]),n.push(a)}n.push(a),n=m.mul(1/a,n);for(var p,_=[],v=0,w=r.length;v<w;)v++,_.push(1);return p=_,new jt(1,n,N.homogenize1d(r.slice(0),p))},pt.extrudedSurface=function(r,n,a){for(var l=[[],[],[]],u=[[],[],[]],d=N.dehomogenize1d(a.controlPoints),p=N.weight1d(a.controlPoints),_=m.mul(n,r),v=m.mul(.5*n,r),w=0,I=d.length;w<I;){var S=w++;l[2][S]=d[S],l[1][S]=m.add(v,d[S]),l[0][S]=m.add(_,d[S]),u[0][S]=p[S],u[1][S]=p[S],u[2][S]=p[S]}return new te(2,a.degree,[0,0,0,1,1,1],a.knots,N.homogenize2d(l,u))},pt.cylindricalSurface=function(r,n,a,l,u){var d=m.cross(r,n),p=pt.arc(a,n,d,u,0,2*Math.PI);return pt.extrudedSurface(r,l,p)},pt.revolvedSurface=function(r,n,a,l){var u=N.dehomogenize1d(r.controlPoints),d=N.weight1d(r.controlPoints),p,_;l<=Math.PI/2?(p=1,_=m.zeros1d(6+2*(p-1))):l<=Math.PI?(p=2,_=m.zeros1d(6+2*(p-1)),_[3]=_[4]=.5):l<=3*Math.PI/2?(p=3,_=m.zeros1d(6+2*(p-1)),_[3]=_[4]=.3333333333333333,_[5]=_[6]=.6666666666666666):(p=4,_=m.zeros1d(6+2*(p-1)),_[3]=_[4]=.25,_[5]=_[6]=.5,_[7]=_[8]=.75);for(var v=l/p,w=3+2*(p-1),I=0;I<3;){var S=I++;_[S]=0,_[w+S]=1}for(var P=Math.cos(v/2),k=0,M=m.zeros1d(p+1),L=m.zeros1d(p+1),C=m.zeros3d(2*p+1,u.length,3),B=m.zeros2d(2*p+1,u.length),z=1,F=p+1;z<F;){var V=z++;k+=v,L[V]=Math.cos(k),M[V]=Math.sin(k)}for(var q=0,J=u.length;q<J;){var H=q++,j=ke.rayClosestPoint(u[H],n,a),K=m.sub(u[H],j),tt=m.norm(K),et=m.cross(a,K);tt>rt.EPSILON&&(K=m.mul(1/tt,K),et=m.mul(1/tt,et)),C[0][H]=u[H];var it=u[H];B[0][H]=d[H];for(var ht=et,at=0,ct=1,nt=p+1;ct<nt;){var mt=ct++,X;tt==0?X=j:X=m.add(j,m.add(m.mul(tt*L[mt],K),m.mul(tt*M[mt],et))),C[at+2][H]=X,B[at+2][H]=d[H];var ft=m.sub(m.mul(L[mt],et),m.mul(M[mt],K));if(tt==0)C[at+1][H]=j;else{var It=lt.rays(it,m.mul(1/m.norm(ht),ht),X,m.mul(1/m.norm(ft),ft)),Gt=m.add(it,m.mul(It.u0,ht));C[at+1][H]=Gt}B[at+1][H]=P*d[H],at+=2,mt<p&&(it=X,ht=ft)}}return new te(2,r.degree,_,r.knots,N.homogenize2d(C,B))},pt.sphericalSurface=function(r,n,a,l){var u=pt.arc(r,m.mul(-1,n),a,l,0,Math.PI);return pt.revolvedSurface(u,r,n,2*Math.PI)},pt.conicalSurface=function(r,n,a,l,u){var d=2*Math.PI,p=1,_=[m.add(a,m.mul(l,r)),m.add(a,m.mul(u,n))],v=[0,0,1,1],w=[1,1],I=new jt(p,v,N.homogenize1d(_,w));return pt.revolvedSurface(I,a,r,d)},pt.rationalInterpCurve=function(r,n,a,l,u){if(a==null&&(a=!1),n==null&&(n=3),r.length<n+1)throw new Q("You need to supply at least degree + 1 points! You only supplied "+r.length+" points.");for(var d=[0],p=1,_=r.length;p<_;){var v=p++,w=m.norm(m.sub(r[v],r[v-1])),I=d[d.length-1];d.push(I+w)}for(var S=d[d.length-1],P=0,k=d.length;P<k;){var M=P++;d[M]=d[M]/S}var L=m.rep(n+1,0),C=l!=null&&u!=null,B;C?B=0:B=1;var z;C?z=d.length-n+1:z=d.length-n;for(var F=B;F<z;){for(var V=F++,q=0,J=0;J<n;){var H=J++;q+=d[V+H]}L.push(1/n*q)}var j=L.concat(m.rep(n+1,1)),K=[],tt;C?tt=r.length+1:tt=r.length-1;var et;C?et=r.length-(n-1):et=r.length-(n+1);for(var it=0;it<d.length;){var ht=d[it];++it;var at=N.knotSpanGivenN(tt,n,ht,j),ct=N.basisFunctionsGivenKnotSpanIndex(at,ht,n,j),nt=at-n,mt=m.zeros1d(nt),X=m.zeros1d(et-nt);K.push(mt.concat(ct).concat(X))}if(C){var ft=K[0].length-2,It=[-1,1].concat(m.zeros1d(ft)),Gt=m.zeros1d(ft).concat([-1,1]);$.spliceAndInsert(K,1,0,It),$.spliceAndInsert(K,K.length-1,0,Gt)}for(var Xt=r[0].length,Ft=[],Kt=(1-j[j.length-n-2])/n,Ae=j[n+1]/n,He=0;He<Xt;){var ve=[He++],fe;if(!C)fe=r.map(function(Qe){return function(dr){return dr[Qe[0]]}}(ve));else{fe=[r[0][ve[0]]],fe.push(Ae*l[ve[0]]);for(var Se=1,Me=r.length-1;Se<Me;){var Ke=Se++;fe.push(r[Ke][ve[0]])}fe.push(Kt*u[ve[0]]),fe.push($.last(r)[ve[0]])}var or=Ct.solve(K,fe);Ft.push(or)}var $e=Ct.transpose(Ft);if(!a){var Ze=m.rep($e.length,1);$e=N.homogenize1d($e,Ze)}return new jt(n,j,$e)};var gt=g.eval.Modify=function(){};b["verb.eval.Modify"]=gt,gt.__name__=["verb","eval","Modify"],gt.curveReverse=function(r){return new jt(r.degree,gt.knotsReverse(r.knots),$.reversed(r.controlPoints))},gt.surfaceReverse=function(r,n){return n==null&&(n=!1),n?new te(r.degreeU,r.degreeV,r.knotsU,gt.knotsReverse(r.knotsV),function(a){for(var l,u=[],d=0,p=r.controlPoints;d<p.length;){var _=p[d];++d,u.push($.reversed(_))}return l=u,l}()):new te(r.degreeU,r.degreeV,gt.knotsReverse(r.knotsU),r.knotsV,$.reversed(r.controlPoints))},gt.knotsReverse=function(r){var n=$.first(r);$.last(r);for(var a=[n],l=r.length,u=1;u<l;){var d=u++;a.push(a[d-1]+(r[l-d]-r[l-d-1]))}return a},gt.unifyCurveKnotVectors=function(r){r=r.map(pt.clonedCurve);for(var n=O.fold(r,function(j,K){return gt.imax(j.degree,K)},0),a=0,l=r.length;a<l;){var u=a++;r[u].degree<n&&(r[u]=gt.curveElevateDegree(r[u],n))}for(var d,p=[],_=0;_<r.length;){var v=r[_];++_,p.push(new we($.first(v.knots),$.last(v.knots)))}d=p;for(var w=0,I=r.length;w<I;){var S=w++,P=[d[S].min];r[S].knots=r[S].knots.map(function(j){return function(K){return K-j[0]}}(P))}for(var k=d.map(function(j){return j.max-j.min}),M=O.fold(k,function(j,K){return Math.max(j,K)},0),L=0,C=r.length;L<C;){var B=L++,z=[M/k[B]];r[B].knots=r[B].knots.map(function(j){return function(K){return K*j[0]}}(z))}for(var F=O.fold(r,function(j,K){return m.sortedSetUnion(j.knots,K)},[]),V=0,q=r.length;V<q;){var J=V++,H=m.sortedSetSub(F,r[J].knots);H.length==0&&(r[J]=r[J]),r[J]=gt.curveKnotRefine(r[J],H)}return r},gt.imin=function(r,n){return r<n?r:n},gt.imax=function(r,n){return r>n?r:n},gt.curveElevateDegree=function(r,n){if(n<=r.degree)return r;var a=r.knots.length-r.degree-2,l=r.degree,u=r.knots,d=r.controlPoints,p=n-r.degree,_=r.controlPoints[0].length,v=m.zeros2d(l+p+1,l+1),w=[],I=[],S=[],P=a+l+1,k=n,M=Math.floor(k/2),L=[],C=[];v[0][0]=1,v[k][l]=1;for(var B=1,z=M+1;B<z;)for(var F=B++,V=1/Bt.get(k,F),q=gt.imin(l,F),J=gt.imax(0,F-p),H=q+1;J<H;){var j=J++;v[F][j]=V*Bt.get(l,j)*Bt.get(p,F-j)}for(var K=M+1;K<k;)for(var tt=K++,et=gt.imin(l,tt),it=gt.imax(0,tt-p),ht=et+1;it<ht;){var at=it++;v[tt][at]=v[k-tt][l-at]}var ct=k+1,nt=-1,mt=l,X=l+1,ft=1,It=u[0];L[0]=d[0];for(var Gt=0,Xt=k+1;Gt<Xt;){var Ft=Gt++;C[Ft]=It}for(var Kt=0,Ae=l+1;Kt<Ae;){var He=Kt++;w[He]=d[He]}for(;X<P;){for(var ve=X;X<P&&u[X]==u[X+1];)X=X+1;var fe=X-ve+1,Se=u[X],Me=nt;nt=l-fe;var Ke;Me>0?Ke=Math.floor((Me+2)/2):Ke=1;var or;if(nt>0?or=Math.floor(k-(nt+1)/2):or=k,nt>0){for(var $e=Se-It,Ze=[],Qe=l;Qe>fe;)Ze[Qe-fe-1]=$e/(u[mt+Qe]-It),Qe--;for(var dr=1,Mn=nt+1;dr<Mn;){for(var Zr=dr++,zu=nt-Zr,Hi=fe+Zr,Qr=l;Qr>=Hi;)w[Qr]=m.add(m.mul(Ze[Qr-Hi],w[Qr]),m.mul(1-Ze[Qr-Hi],w[Qr-1])),Qr--;S[zu]=w[l]}}for(var xo=Ke,Ru=k+1;xo<Ru;){var Nn=xo++;I[Nn]=m.zeros1d(_);for(var Bu=gt.imin(l,Nn),bo=gt.imax(0,Nn-p),Du=Bu+1;bo<Du;){var wo=bo++;I[Nn]=m.add(I[Nn],m.mul(v[Nn][wo],w[wo]))}}if(Me>1)for(var qi=ct-2,Yi=ct,Ao=Se-It,Fu=(Se-C[ct-1])/Ao,So=1;So<Me;){for(var Xi=So++,mr=qi,Jr=Yi,Fr=Jr-ct+1;Jr-mr>Xi;){if(mr<ft){var Uu=(Se-C[mr])/(It-C[mr]);L[mr]=m.lerp(Uu,L[mr],L[mr-1])}if(Jr>=Ke){if(Jr-Xi<=ct-k+Me){var Vu=(Se-C[Jr-Xi])/Ao;I[Fr]=m.lerp(Vu,I[Fr],I[Fr+1])}}else I[Fr]=m.lerp(Fu,I[Fr],I[Fr+1]);mr=mr+1,Jr=Jr-1,Fr=Fr-1}qi=qi-1,Yi=Yi+1}if(mt!=l)for(var Io=0,ju=k-Me;Io<ju;)Io++,C[ct]=It,ct=ct+1;for(var Po=Ke,Gu=or+1;Po<Gu;){var Wu=Po++;L[ft]=I[Wu],ft=ft+1}if(X<P){for(var Eo=0;Eo<nt;){var ko=Eo++;w[ko]=S[ko]}for(var To=nt,Hu=l+1;To<Hu;){var Mo=To++;w[Mo]=d[X-l+Mo]}mt=X,X=X+1,It=Se}else for(var No=0,qu=k+1;No<qu;){var Yu=No++;C[ct+Yu]=Se}}return new jt(n,C,L)},gt.rationalSurfaceTransform=function(r,n){for(var a=N.dehomogenize2d(r.controlPoints),l=0,u=a.length;l<u;)for(var d=l++,p=0,_=a[d].length;p<_;){var v=p++,w=a[d][v];w.push(1),a[d][v]=Ct.dot(n,w).slice(0,w.length-1)}return new te(r.degreeU,r.degreeV,r.knotsU.slice(),r.knotsV.slice(),N.homogenize2d(a,N.weight2d(r.controlPoints)))},gt.rationalCurveTransform=function(r,n){for(var a=N.dehomogenize1d(r.controlPoints),l=0,u=a.length;l<u;){var d=l++,p=a[d];p.push(1),a[d]=Ct.dot(n,p).slice(0,p.length-1)}return new jt(r.degree,r.knots.slice(),N.homogenize1d(a,N.weight1d(r.controlPoints)))},gt.surfaceKnotRefine=function(r,n,a){var l=[],u,d,p;a?(p=r.controlPoints,u=r.knotsV,d=r.degreeV):(p=Ct.transpose(r.controlPoints),u=r.knotsU,d=r.degreeU);for(var _=null,v=0;v<p.length;){var w=p[v];++v,_=gt.curveKnotRefine(new jt(d,u,w),n),l.push(_.controlPoints)}var I=_.knots;return a?new te(r.degreeU,r.degreeV,r.knotsU.slice(),I,l):(l=Ct.transpose(l),new te(r.degreeU,r.degreeV,I,r.knotsV.slice(),l))},gt.decomposeCurveIntoBeziers=function(r){for(var n=r.degree,a=r.controlPoints,l=r.knots,u=yt.knotMultiplicities(l),d=n+1,p=0;p<u.length;){var _=u[p];if(++p,_.mult<d){var v=m.rep(d-_.mult,_.knot),w=gt.curveKnotRefine(new jt(n,l,a),v);l=w.knots,a=w.controlPoints}}l.length/d-1;for(var I=d*2,S=[],P=0;P<a.length;){var k=l.slice(P,P+I),M=a.slice(P,P+d);S.push(new jt(n,k,M)),P+=d}return S},gt.curveKnotRefine=function(r,n){if(n.length==0)return pt.clonedCurve(r);for(var a=r.degree,l=r.controlPoints,u=r.knots,d=l.length-1,p=d+a+1,_=n.length-1,v=N.knotSpan(a,n[0],u),w=N.knotSpan(a,n[_],u),I=[],S=[],P=0,k=v-a+1;P<k;){var M=P++;I[M]=l[M]}for(var L=w-1,C=d+1;L<C;){var B=L++;I[B+_+1]=l[B]}for(var z=0,F=v+1;z<F;){var V=z++;S[V]=u[V]}for(var q=w+a,J=p+1;q<J;){var H=q++;S[H+_+1]=u[H]}for(var j=w+a-1,K=w+a+_,tt=_;tt>=0;){for(;n[tt]<=u[j]&&j>v;)I[K-a-1]=l[j-a-1],S[K]=u[j],K=K-1,j=j-1;I[K-a-1]=I[K-a];for(var et=1,it=a+1;et<it;){var ht=et++,at=K-a+ht,ct=S[K+ht]-n[tt];Math.abs(ct)<rt.EPSILON?I[at-1]=I[at]:(ct=ct/(S[K+ht]-u[j-a+ht]),I[at-1]=m.add(m.mul(ct,I[at-1]),m.mul(1-ct,I[at])))}S[K]=n[tt],K=K-1,tt--}return new jt(a,S,I)},gt.curveKnotInsert=function(r,n,a){for(var l=r.degree,u=r.controlPoints,d=r.knots,p=0,_=u.length,v=N.knotSpan(l,n,d),w=[],I=[],S=[],P=1,k=v+1;P<k;){var M=P++;I[M]=d[M]}for(var L=1,C=a+1;L<C;){var B=L++;I[v+B]=n}for(var z=v+1,F=d.length;z<F;){var V=z++;I[V+a]=d[V]}for(var q=0,J=v-l+1;q<J;){var H=q++;S[H]=u[H]}for(var j=v-p;j<_;){var K=j++;S[K+a]=u[K]}for(var tt=0,et=l-p+1;tt<et;){var it=tt++;w[it]=u[v-l+it]}for(var ht=0,at=0,ct=1,nt=a+1;ct<nt;){var mt=ct++;ht=v-l+mt;for(var X=0,ft=l-mt-p+1;X<ft;){var It=X++;at=(n-d[ht+It])/(d[It+v+1]-d[ht+It]),w[It]=m.add(m.mul(at,w[It+1]),m.mul(1-at,w[It]))}S[ht]=w[0],S[v+a-mt-p]=w[l-mt-p]}for(var Gt=ht+1,Xt=v-p;Gt<Xt;){var Ft=Gt++;S[Ft]=w[Ft-ht]}return new jt(l,I,S)};var Ot=g.eval.Tess=function(){};b["verb.eval.Tess"]=Ot,Ot.__name__=["verb","eval","Tess"],Ot.rationalCurveRegularSample=function(r,n,a){return Ot.rationalCurveRegularSampleRange(r,r.knots[0],$.last(r.knots),n,a)},Ot.rationalCurveRegularSampleRange=function(r,n,a,l,u){l<1&&(l=2);for(var d=[],p=(a-n)/(l-1),_=0,v=0;v<l;){var w=v++;_=n+p*w,u?d.push([_].concat(N.rationalCurvePoint(r,_))):d.push(N.rationalCurvePoint(r,_))}return d},Ot.rationalCurveAdaptiveSample=function(r,n,a){if(a==null&&(a=!1),n==null&&(n=1e-6),r.degree==1)if(a){for(var l=[],u=0,d=r.controlPoints.length;u<d;){var p=u++;l.push([r.knots[p+1]].concat(N.dehomogenize(r.controlPoints[p])))}return l}else return r.controlPoints.map(N.dehomogenize);return Ot.rationalCurveAdaptiveSampleRange(r,r.knots[0],$.last(r.knots),n,a)},Ot.rationalCurveAdaptiveSampleRange=function(r,n,a,l,u){var d=N.rationalCurvePoint(r,n),p=N.rationalCurvePoint(r,a),_=.5+.2*Math.random(),v=n+(a-n)*_,w=N.rationalCurvePoint(r,v),I=m.sub(d,p),S=m.sub(d,w);if(m.dot(I,I)<l&&m.dot(S,S)>l||!ke.threePointsAreFlat(d,w,p,l)){var P=n+(a-n)*.5,k=Ot.rationalCurveAdaptiveSampleRange(r,n,P,l,u),M=Ot.rationalCurveAdaptiveSampleRange(r,P,a,l,u);return k.slice(0,-1).concat(M)}else return u?[[n].concat(d),[a].concat(p)]:[d,p]},Ot.rationalSurfaceNaive=function(r,n,a){n<1&&(n=1),a<1&&(a=1),r.degreeU,r.degreeV,r.controlPoints;for(var l=r.knotsU,u=r.knotsV,d=$.last(l)-l[0],p=$.last(u)-u[0],_=d/n,v=p/a,w=[],I=[],S=[],P=0,k=n+1;P<k;)for(var M=P++,L=0,C=a+1;L<C;){var B=L++,z=M*_,F=B*v;I.push([z,F]);var V=N.rationalSurfaceDerivatives(r,z,F,1),q=V[0][0];w.push(q);var J=m.normalized(m.cross(V[1][0],V[0][1]));S.push(J)}for(var H=[],j=0;j<n;)for(var K=j++,tt=0;tt<a;){var et=tt++,it=K*(a+1)+et,ht=(K+1)*(a+1)+et,at=ht+1,ct=it+1,nt=[it,ht,at],mt=[it,at,ct];H.push(nt),H.push(mt)}return new qe(H,w,S,I)},Ot.divideRationalSurfaceAdaptive=function(r,n){n==null&&(n=new Or),n.minDivsU!=null?n.minDivsU=n.minDivsU:n.minDivsU=1,n.minDivsV!=null?n.minDivsU=n.minDivsV:n.minDivsU=1,n.refine!=null?n.refine=n.refine:n.refine=!0;var a=(r.controlPoints.length-1)*2,l=(r.controlPoints[0].length-1)*2,u;n.minDivsU>a?u=n.minDivsU=n.minDivsU:u=n.minDivsU=a;var d;n.minDivsV>l?d=n.minDivsV=n.minDivsV:d=n.minDivsV=l;for(var p=$.last(r.knotsU),_=r.knotsU[0],v=$.last(r.knotsV),w=r.knotsV[0],I=(p-_)/u,S=(v-w)/d,P=[],k=[],M=0,L=d+1;M<L;){for(var C=M++,B=[],z=0,F=u+1;z<F;){var V=z++,q=_+I*V,J=w+S*C,H=N.rationalSurfaceDerivatives(r,q,J,1),j=m.normalized(m.cross(H[0][1],H[1][0]));B.push(new Ge(H[0][0],j,[q,J],-1,m.isZero(j)))}k.push(B)}for(var K=0;K<d;)for(var tt=K++,et=0;et<u;){var it=et++,ht=[k[d-tt-1][it],k[d-tt-1][it+1],k[d-tt][it+1],k[d-tt][it]];P.push(new cr(r,ht))}if(!n.refine)return P;for(var at=0;at<d;)for(var ct=at++,nt=0;nt<u;){var mt=nt++,X=ct*u+mt,ft=Ot.north(X,ct,mt,u,d,P),It=Ot.east(X,ct,mt,u,d,P),Gt=Ot.south(X,ct,mt,u,d,P),Xt=Ot.west(X,ct,mt,u,d,P);P[X].neighbors=[Gt,It,ft,Xt],P[X].divide(n)}return P},Ot.north=function(r,n,a,l,u,d){return n==0?null:d[r-l]},Ot.south=function(r,n,a,l,u,d){return n==u-1?null:d[r+l]},Ot.east=function(r,n,a,l,u,d){return a==l-1?null:d[r+1]},Ot.west=function(r,n,a,l,u,d){return a==0?null:d[r-1]},Ot.triangulateAdaptiveRefinementNodeTree=function(r){for(var n=qe.empty(),a=0;a<r.length;){var l=r[a];++a,l.triangulate(n)}return n},Ot.rationalSurfaceAdaptive=function(r,n){n!=null?n=n:n=new Or;var a=Ot.divideRationalSurfaceAdaptive(r,n);return Ot.triangulateAdaptiveRefinementNodeTree(a)};var Or=g.core.AdaptiveRefinementOptions=function(){this.minDivsV=1,this.minDivsU=1,this.refine=!0,this.maxDepth=10,this.minDepth=0,this.normTol=.025};b["verb.eval.AdaptiveRefinementOptions"]=Or,Or.__name__=["verb","eval","AdaptiveRefinementOptions"],Or.prototype={__class__:Or};var cr=g.core.AdaptiveRefinementNode=function(r,n,a){if(this.srf=r,a==null?this.neighbors=[null,null,null,null]:this.neighbors=a,this.corners=n,this.corners==null){var l=r.knotsU[0],u=$.last(r.knotsU),d=r.knotsV[0],p=$.last(r.knotsV);this.corners=[Ge.fromUv(l,d),Ge.fromUv(u,d),Ge.fromUv(u,p),Ge.fromUv(l,p)]}};b["verb.eval.AdaptiveRefinementNode"]=cr,cr.__name__=["verb","eval","AdaptiveRefinementNode"],cr.prototype={isLeaf:function(){return this.children==null},center:function(){return this.centerPoint!=null?this.centerPoint:this.evalSrf(this.u05,this.v05)},evalCorners:function(){this.u05=(this.corners[0].uv[0]+this.corners[2].uv[0])/2,this.v05=(this.corners[0].uv[1]+this.corners[2].uv[1])/2;for(var r=0;r<4;){var n=r++;if(this.corners[n].point==null){var a=this.corners[n];this.evalSrf(a.uv[0],a.uv[1],a)}}},evalSrf:function(r,n,a){var l=N.rationalSurfaceDerivatives(this.srf,r,n,1),u=l[0][0],d=m.cross(l[0][1],l[1][0]),p=m.isZero(d);return p||(d=m.normalized(d)),a!=null?(a.degen=p,a.point=u,a.normal=d,a):new Ge(u,d,[r,n],-1,p)},getEdgeCorners:function(r){if(this.isLeaf())return[this.corners[r]];if(this.horizontal)switch(r){case 0:return this.children[0].getEdgeCorners(0);case 1:return this.children[0].getEdgeCorners(1).concat(this.children[1].getEdgeCorners(1));case 2:return this.children[1].getEdgeCorners(2);case 3:return this.children[1].getEdgeCorners(3).concat(this.children[0].getEdgeCorners(3))}switch(r){case 0:return this.children[0].getEdgeCorners(0).concat(this.children[1].getEdgeCorners(0));case 1:return this.children[1].getEdgeCorners(1);case 2:return this.children[1].getEdgeCorners(2).concat(this.children[0].getEdgeCorners(2));case 3:return this.children[0].getEdgeCorners(3)}return null},getAllCorners:function(r){var n=[this.corners[r]];if(this.neighbors[r]==null)return n;var a=this.neighbors[r].getEdgeCorners((r+2)%4),l=r%2,u=rt.EPSILON,d=this,p=[function(v){return v.uv[0]>d.corners[0].uv[0]+u&&v.uv[0]<d.corners[2].uv[0]-u},function(v){return v.uv[1]>d.corners[0].uv[1]+u&&v.uv[1]<d.corners[2].uv[1]-u}],_=a.filter(p[l]);return _.reverse(),n.concat(_)},midpoint:function(r){if(this.midPoints==null&&(this.midPoints=[null,null,null,null]),this.midPoints[r]!=null)return this.midPoints[r];switch(r){case 0:this.midPoints[0]=this.evalSrf(this.u05,this.corners[0].uv[1]);break;case 1:this.midPoints[1]=this.evalSrf(this.corners[1].uv[0],this.v05);break;case 2:this.midPoints[2]=this.evalSrf(this.u05,this.corners[2].uv[1]);break;case 3:this.midPoints[3]=this.evalSrf(this.corners[0].uv[0],this.v05);break}return this.midPoints[r]},hasBadNormals:function(){return this.corners[0].degen||this.corners[1].degen||this.corners[2].degen||this.corners[3].degen},fixNormals:function(){for(var r=this.corners.length,n=0;n<r;){var a=n++;if(this.corners[a],this.corners[a].degen){var l=this.corners[(a+1)%r],u=this.corners[(a+3)%r];l.degen?this.corners[a].normal=u.normal:this.corners[a].normal=l.normal}}},shouldDivide:function(r,n){if(n<r.minDepth)return!0;if(n>=r.maxDepth)return!1;if(this.hasBadNormals())return this.fixNormals(),!1;if(this.splitVert=m.normSquared(m.sub(this.corners[0].normal,this.corners[1].normal))>r.normTol||m.normSquared(m.sub(this.corners[2].normal,this.corners[3].normal))>r.normTol,this.splitHoriz=m.normSquared(m.sub(this.corners[1].normal,this.corners[2].normal))>r.normTol||m.normSquared(m.sub(this.corners[3].normal,this.corners[0].normal))>r.normTol,this.splitVert||this.splitHoriz)return!0;var a=this.center();return m.normSquared(m.sub(a.normal,this.corners[0].normal))>r.normTol||m.normSquared(m.sub(a.normal,this.corners[1].normal))>r.normTol||m.normSquared(m.sub(a.normal,this.corners[2].normal))>r.normTol||m.normSquared(m.sub(a.normal,this.corners[3].normal))>r.normTol},divide:function(r){r==null&&(r=new Or),r.normTol==null&&(r.normTol=.085),r.minDepth==null&&(r.minDepth=0),r.maxDepth==null&&(r.maxDepth=10),this._divide(r,0,!0)},_divide:function(r,n,a){if(this.evalCorners(),!!this.shouldDivide(r,n)){if(n++,this.splitVert&&!this.splitHoriz?a=!1:!this.splitVert&&this.splitHoriz&&(a=!0),this.horizontal=a,this.horizontal){var l=[this.corners[0],this.corners[1],this.midpoint(1),this.midpoint(3)],u=[this.midpoint(3),this.midpoint(1),this.corners[2],this.corners[3]];this.children=[new cr(this.srf,l),new cr(this.srf,u)],this.children[0].neighbors=[this.neighbors[0],this.neighbors[1],this.children[1],this.neighbors[3]],this.children[1].neighbors=[this.children[0],this.neighbors[1],this.neighbors[2],this.neighbors[3]]}else{var d=[this.corners[0],this.midpoint(0),this.midpoint(2),this.corners[3]],p=[this.midpoint(0),this.corners[1],this.corners[2],this.midpoint(2)];this.children=[new cr(this.srf,d),new cr(this.srf,p)],this.children[0].neighbors=[this.neighbors[0],this.children[1],this.neighbors[2],this.neighbors[3]],this.children[1].neighbors=[this.neighbors[0],this.neighbors[1],this.neighbors[2],this.children[0]]}for(var _=0,v=this.children;_<v.length;){var w=v[_];++_,w._divide(r,n,!a)}}},triangulate:function(r){if(r==null&&(r=qe.empty()),this.isLeaf())return this.triangulateLeaf(r);for(var n=0,a=this.children;n<a.length;){var l=a[n];if(++n,l==null)break;l.triangulate(r)}return r},triangulateLeaf:function(r){for(var n=r.points.length,a=[],l=[],u=0,d=0;d<4;){var p=d++,_=this.getAllCorners(p);_.length==2&&(u=p+1);for(var v=0,w=_.length;v<w;){var I=v++;a.push(_[I])}}for(var S=0;S<a.length;){var P=a[S];if(++S,P.id!=-1){l.push(P.id);continue}r.uvs.push(P.uv),r.points.push(P.point),r.normals.push(P.normal),P.id=n,l.push(n),n++}if(a.length==4)return r.faces.push([l[0],l[3],l[1]]),r.faces.push([l[3],l[2],l[1]]),r;if(a.length==5){var k=l.length;return r.faces.push([l[u],l[(u+2)%k],l[(u+1)%k]]),r.faces.push([l[(u+4)%k],l[(u+3)%k],l[u]]),r.faces.push([l[u],l[(u+3)%k],l[(u+2)%k]]),r}var M=this.center();r.uvs.push(M.uv),r.points.push(M.point),r.normals.push(M.normal);for(var L=r.points.length-1,C=0,B=a.length-1;C<a.length;)r.faces.push([L,l[C],l[B]]),B=C++;return r},__class__:cr};var wt=g.exe.Dispatcher=function(){};b["verb.exe.Dispatcher"]=wt,wt.__name__=["verb","exe","Dispatcher"],wt.init=function(){wt._init||(wt._workerPool=new zr(wt.THREADS),wt._init=!0)},wt.dispatchMethod=function(r,n,a){wt.init();var l=new yn,u=function(d){l.resolve(d)};return wt._workerPool.addWork(ut.getClassName(r),n,a,u),new pe(l)};var zr=g.exe.WorkerPool=function(r,n){n==null&&(n="verb.js"),r==null&&(r=1),this._callbacks=new bt,this._working=new bt,this._pool=[],this._queue=[];for(var a=0;a<r;){a++;var l;try{l=new Worker(zr.basePath+n)}catch(u){u instanceof Q&&(u=u.val),l=new Worker(zr.basePath+n.substring(0,-3)+".min.js")}this._pool.push(l)}};b["verb.exe.WorkerPool"]=zr,zr.__name__=["verb","exe","WorkerPool"],zr.prototype={addWork:function(r,n,a,l){var u=new $r(r,n,a);this._callbacks.set(u.id,l),this._queue.push(u),this.processQueue()},processQueue:function(){for(var r=this;this._queue.length>0&&this._pool.length>0;){var n=this._queue.shift(),a=[n.id],l=[this._pool.shift()];this._working.h[a[0]]=l[0],l[0].onmessage=function(u,d){return function(p){r._working.remove(d[0]),r._pool.push(u[0]);try{r._callbacks.h.hasOwnProperty(d[0])&&(r._callbacks.h[d[0]](p.data.result),r._callbacks.remove(d[0]))}catch(_){_ instanceof Q&&(_=_.val),x.log(_)}r.processQueue()}}(l,a),l[0].postMessage(n)}},__class__:zr};var $r=function(r,n,a){this.className=r,this.methodName=n,this.args=a,this.id=$r.uuid++};b["verb.exe._WorkerPool.Work"]=$r,$r.__name__=["verb","exe","_WorkerPool","Work"],$r.prototype={__class__:$r};var kn=function(){};b["verb.geom.ICurve"]=kn,kn.__name__=["verb","geom","ICurve"],kn.__interfaces__=[In],kn.prototype={__class__:kn};var Nt=g.geom.NurbsCurve=function(r){this._data=We.isValidNurbsCurveData(r)};b["verb.geom.NurbsCurve"]=Nt,Nt.__name__=["verb","geom","NurbsCurve"],Nt.__interfaces__=[kn],Nt.byKnotsControlPointsWeights=function(r,n,a,l){return new Nt(new jt(r,n.slice(),N.homogenize1d(a,l)))},Nt.byPoints=function(r,n){return n==null&&(n=3),new Nt(pt.rationalInterpCurve(r,n))},Nt.__super__=Zt,Nt.prototype=T(Zt.prototype,{degree:function(){return this._data.degree},knots:function(){return this._data.knots.slice(0)},controlPoints:function(){return N.dehomogenize1d(this._data.controlPoints)},weights:function(){return N.weight1d(this._data.controlPoints)},asNurbs:function(){return new jt(this.degree(),this.knots(),N.homogenize1d(this.controlPoints(),this.weights()))},clone:function(){return new Nt(this._data)},domain:function(){return new we($.first(this._data.knots),$.last(this._data.knots))},transform:function(r){return new Nt(gt.rationalCurveTransform(this._data,r))},transformAsync:function(r){return wt.dispatchMethod(gt,"rationalCurveTransform",[this._data,r]).then(function(n){return new Nt(n)})},point:function(r){return N.rationalCurvePoint(this._data,r)},pointAsync:function(r){return wt.dispatchMethod(N,"rationalCurvePoint",[this._data,r])},tangent:function(r){return N.rationalCurveTangent(this._data,r)},tangentAsync:function(r){return wt.dispatchMethod(N,"rationalCurveTangent",[this._data,r])},derivatives:function(r,n){return n==null&&(n=1),N.rationalCurveDerivatives(this._data,r,n)},derivativesAsync:function(r,n){return n==null&&(n=1),wt.dispatchMethod(N,"rationalCurveDerivatives",[this._data,r,n])},closestPoint:function(r){return yt.rationalCurveClosestPoint(this._data,r)},closestPointAsync:function(r){return wt.dispatchMethod(yt,"rationalCurveClosestPoint",[this._data,r])},closestParam:function(r){return yt.rationalCurveClosestParam(this._data,r)},closestParamAsync:function(r){return wt.dispatchMethod(yt,"rationalCurveClosestParam",[this._data,r])},length:function(){return yt.rationalCurveArcLength(this._data)},lengthAsync:function(){return wt.dispatchMethod(yt,"rationalCurveArcLength",[this._data])},lengthAtParam:function(r){return yt.rationalCurveArcLength(this._data,r)},lengthAtParamAsync:function(){return wt.dispatchMethod(yt,"rationalCurveArcLength",[this._data])},paramAtLength:function(r,n){return yt.rationalCurveParamAtArcLength(this._data,r,n)},paramAtLengthAsync:function(r,n){return wt.dispatchMethod(yt,"rationalCurveParamAtArcLength",[this._data,r,n])},divideByEqualArcLength:function(r){return le.rationalCurveByEqualArcLength(this._data,r)},divideByEqualArcLengthAsync:function(r){return wt.dispatchMethod(le,"rationalCurveByEqualArcLength",[this._data,r])},divideByArcLength:function(r){return le.rationalCurveByArcLength(this._data,r)},divideByArcLengthAsync:function(r){return wt.dispatchMethod(le,"rationalCurveByArcLength",[this._data,r])},split:function(r){return le.curveSplit(this._data,r).map(function(n){return new Nt(n)})},splitAsync:function(r){return wt.dispatchMethod(le,"curveSplit",[this._data,r]).then(function(n){return n.map(function(a){return new Nt(a)})})},reverse:function(){return new Nt(gt.curveReverse(this._data))},reverseAsync:function(){return wt.dispatchMethod(gt,"curveReverse",[this._data]).then(function(r){return new Nt(r)})},tessellate:function(r){return Ot.rationalCurveAdaptiveSample(this._data,r,!1)},tessellateAsync:function(r){return wt.dispatchMethod(Ot,"rationalCurveAdaptiveSample",[this._data,r,!1])},__class__:Nt});var Rr=g.geom.Arc=function(r,n,a,l,u,d){Nt.call(this,pt.arc(r,n,a,l,u,d)),this._center=r,this._xaxis=n,this._yaxis=a,this._radius=l,this._minAngle=u,this._maxAngle=d};b["verb.geom.Arc"]=Rr,Rr.__name__=["verb","geom","Arc"],Rr.__super__=Nt,Rr.prototype=T(Nt.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},radius:function(){return this._radius},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:Rr});var Jn=g.geom.BezierCurve=function(r,n){Nt.call(this,pt.rationalBezierCurve(r,n))};b["verb.geom.BezierCurve"]=Jn,Jn.__name__=["verb","geom","BezierCurve"],Jn.__super__=Nt,Jn.prototype=T(Nt.prototype,{__class__:Jn});var ts=g.geom.Circle=function(r,n,a,l){Rr.call(this,r,n,a,l,0,Math.PI*2)};b["verb.geom.Circle"]=ts,ts.__name__=["verb","geom","Circle"],ts.__super__=Rr,ts.prototype=T(Rr.prototype,{__class__:ts});var Tn=function(){};b["verb.geom.ISurface"]=Tn,Tn.__name__=["verb","geom","ISurface"],Tn.__interfaces__=[In],Tn.prototype={__class__:Tn};var Pt=g.geom.NurbsSurface=function(r){this._data=We.isValidNurbsSurfaceData(r)};b["verb.geom.NurbsSurface"]=Pt,Pt.__name__=["verb","geom","NurbsSurface"],Pt.__interfaces__=[Tn],Pt.byKnotsControlPointsWeights=function(r,n,a,l,u,d){return new Pt(new te(r,n,a,l,N.homogenize2d(u,d)))},Pt.byCorners=function(r,n,a,l){return new Pt(pt.fourPointSurface(r,n,a,l))},Pt.byLoftingCurves=function(r,n){return new Pt(pt.loftedSurface(function(a){for(var l,u=[],d=0;d<r.length;){var p=r[d];++d,u.push(p.asNurbs())}return l=u,l}(),n))},Pt.__super__=Zt,Pt.prototype=T(Zt.prototype,{degreeU:function(){return this._data.degreeU},degreeV:function(){return this._data.degreeV},knotsU:function(){return this._data.knotsU.slice(0)},knotsV:function(){return this._data.knotsV.slice(0)},controlPoints:function(){return N.dehomogenize2d(this._data.controlPoints)},weights:function(){return N.weight2d(this._data.controlPoints)},asNurbs:function(){return new te(this.degreeU(),this.degreeV(),this.knotsU(),this.knotsV(),N.homogenize2d(this.controlPoints(),this.weights()))},clone:function(){return new Pt(this.asNurbs())},domainU:function(){return new we($.first(this._data.knotsU),$.last(this._data.knotsU))},domainV:function(){return new we($.first(this._data.knotsV),$.last(this._data.knotsV))},point:function(r,n){return N.rationalSurfacePoint(this._data,r,n)},pointAsync:function(r,n){return wt.dispatchMethod(N,"rationalSurfacePoint",[this._data,r,n])},normal:function(r,n){return N.rationalSurfaceNormal(this._data,r,n)},normalAsync:function(r,n){return wt.dispatchMethod(N,"rationalSurfaceNormal",[this._data,r,n])},derivatives:function(r,n,a){return a==null&&(a=1),N.rationalSurfaceDerivatives(this._data,r,n,a)},derivativesAsync:function(r,n,a){return a==null&&(a=1),wt.dispatchMethod(N,"rationalSurfaceDerivatives",[this._data,r,n,a])},closestParam:function(r){return yt.rationalSurfaceClosestParam(this._data,r)},closestParamAsync:function(r){return wt.dispatchMethod(yt,"rationalSurfaceClosestParam",[this._data,r])},closestPoint:function(r){return yt.rationalSurfaceClosestPoint(this._data,r)},closestPointAsync:function(r){return wt.dispatchMethod(yt,"rationalSurfaceClosestPoint",[this._data,r])},split:function(r,n){return n==null&&(n=!1),le.surfaceSplit(this._data,r,n).map(function(a){return new Pt(a)})},splitAsync:function(r,n){return n==null&&(n=!1),wt.dispatchMethod(le,"surfaceSplit",[this._data,r,n]).then(function(a){return a.map(function(l){return new Pt(l)})})},reverse:function(r){return r==null&&(r=!1),new Pt(gt.surfaceReverse(this._data,r))},reverseAsync:function(r){return r==null&&(r=!1),wt.dispatchMethod(gt,"surfaceReverse",[this._data,r]).then(function(n){return new Pt(n)})},isocurve:function(r,n){return n==null&&(n=!1),new Nt(pt.surfaceIsocurve(this._data,r,n))},isocurveAsync:function(r,n){return n==null&&(n=!1),wt.dispatchMethod(pt,"surfaceIsocurve",[this._data,r,n]).then(function(a){return new Nt(a)})},boundaries:function(r){return pt.surfaceBoundaryCurves(this._data).map(function(n){return new Nt(n)})},boundariesAsync:function(r){return wt.dispatchMethod(pt,"surfaceBoundaryCurves",[this._data]).then(function(n){return n.map(function(a){return new Nt(a)})})},tessellate:function(r){return Ot.rationalSurfaceAdaptive(this._data,r)},tessellateAsync:function(r){return wt.dispatchMethod(Ot,"rationalSurfaceAdaptive",[this._data,r])},transform:function(r){return new Pt(gt.rationalSurfaceTransform(this._data,r))},transformAsync:function(r){return wt.dispatchMethod(gt,"rationalSurfaceTransform",[this._data,r]).then(function(n){return new Pt(n)})},__class__:Pt});var es=g.geom.ConicalSurface=function(r,n,a,l,u){Pt.call(this,pt.conicalSurface(r,n,a,l,u)),this._axis=r,this._xaxis=n,this._base=a,this._height=l,this._radius=u};b["verb.geom.ConicalSurface"]=es,es.__name__=["verb","geom","ConicalSurface"],es.__super__=Pt,es.prototype=T(Pt.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:es});var rs=g.geom.CylindricalSurface=function(r,n,a,l,u){Pt.call(this,pt.cylindricalSurface(r,n,a,l,u)),this._axis=r,this._xaxis=n,this._base=a,this._height=l,this._radius=u};b["verb.geom.CylindricalSurface"]=rs,rs.__name__=["verb","geom","CylindricalSurface"],rs.__super__=Pt,rs.prototype=T(Pt.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:rs});var Br=g.geom.EllipseArc=function(r,n,a,l,u){Nt.call(this,pt.ellipseArc(r,n,a,l,u)),this._center=r,this._xaxis=n,this._yaxis=a,this._minAngle=l,this._maxAngle=u};b["verb.geom.EllipseArc"]=Br,Br.__name__=["verb","geom","EllipseArc"],Br.__super__=Nt,Br.prototype=T(Nt.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:Br});var ns=g.geom.Ellipse=function(r,n,a){Br.call(this,r,n,a,0,Math.PI*2)};b["verb.geom.Ellipse"]=ns,ns.__name__=["verb","geom","Ellipse"],ns.__super__=Br,ns.prototype=T(Br.prototype,{__class__:ns});var ss=g.geom.ExtrudedSurface=function(r,n){Pt.call(this,pt.extrudedSurface(m.normalized(n),m.norm(n),r.asNurbs())),this._profile=r,this._direction=n};b["verb.geom.ExtrudedSurface"]=ss,ss.__name__=["verb","geom","ExtrudedSurface"],ss.__super__=Pt,ss.prototype=T(Pt.prototype,{profile:function(){return this._profile},direction:function(){return this._direction},__class__:ss});var Dr=g.geom.Intersect=function(){};b["verb.geom.Intersect"]=Dr,Dr.__name__=["verb","geom","Intersect"],Dr.curves=function(r,n,a){return a==null&&(a=.001),lt.curves(r.asNurbs(),n.asNurbs(),a)},Dr.curvesAsync=function(r,n,a){return a==null&&(a=.001),wt.dispatchMethod(lt,"curves",[r.asNurbs(),n.asNurbs(),a])},Dr.curveAndSurface=function(r,n,a){return a==null&&(a=.001),lt.curveAndSurface(r.asNurbs(),n.asNurbs(),a)},Dr.curveAndSurfaceAsync=function(r,n,a){return a==null&&(a=.001),wt.dispatchMethod(lt,"curveAndSurface",[r.asNurbs(),n.asNurbs(),a])},Dr.surfaces=function(r,n,a){return a==null&&(a=.001),lt.surfaces(r.asNurbs(),n.asNurbs(),a).map(function(l){return new Nt(l)})},Dr.surfacesAsync=function(r,n,a){return a==null&&(a=.001),wt.dispatchMethod(lt,"surfaces",[r.asNurbs(),n.asNurbs(),a]).then(function(l){return l.map(function(u){return new Nt(u)})})};var is=g.geom.Line=function(r,n){Nt.call(this,pt.polyline([r,n])),this._start=r,this._end=n};b["verb.geom.Line"]=is,is.__name__=["verb","geom","Line"],is.__super__=Nt,is.prototype=T(Nt.prototype,{start:function(){return this._start},end:function(){return this._end},__class__:is});var as=g.geom.RevolvedSurface=function(r,n,a,l){Pt.call(this,pt.revolvedSurface(r.asNurbs(),n,a,l)),this._profile=r,this._center=n,this._axis=a,this._angle=l};b["verb.geom.RevolvedSurface"]=as,as.__name__=["verb","geom","RevolvedSurface"],as.__super__=Pt,as.prototype=T(Pt.prototype,{profile:function(){return this._profile},center:function(){return this._center},axis:function(){return this._center},angle:function(){return this._angle},__class__:as});var os=g.geom.SphericalSurface=function(r,n){Pt.call(this,pt.sphericalSurface(r,[0,0,1],[1,0,0],n)),this._center=r,this._radius=n};b["verb.geom.SphericalSurface"]=os,os.__name__=["verb","geom","SphericalSurface"],os.__super__=Pt,os.prototype=T(Pt.prototype,{center:function(){return this._center},radius:function(){return this._radius},__class__:os});var ls=g.geom.SweptSurface=function(r,n){Pt.call(this,pt.rationalTranslationalSurface(r.asNurbs(),n.asNurbs())),this._profile=r,this._rail=n};b["verb.geom.SweptSurface"]=ls,ls.__name__=["verb","geom","SweptSurface"],ls.__super__=Pt,ls.prototype=T(Pt.prototype,{profile:function(){return this._profile},rail:function(){return this._rail},__class__:ls});function Xe(r){return r instanceof Array?function(){return R.iter(r)}:typeof r.iterator=="function"?Te(r,r.iterator):r.iterator}var ji,Cu=0;function Te(r,n){if(n==null)return null;n.__id__==null&&(n.__id__=Cu++);var a;return r.hx__closures__==null?r.hx__closures__={}:a=r.hx__closures__[n.__id__],a==null&&(a=function(){return a.method.apply(a.scope,arguments)},a.scope=r,a.method=n,r.hx__closures__[n.__id__]=a),a}b.Math=Math,String.prototype.__class__=b.String=String,String.__name__=["String"],b.Array=Array,Array.__name__=["Array"],Date.prototype.__class__=b.Date=Date,Date.__name__=["Date"];var Lu=b.Int={__name__:["Int"]},Ou=b.Dynamic={__name__:["Dynamic"]},go=b.Float=Number;go.__name__=["Float"];var _o=b.Bool=Boolean;_o.__ename__=["Bool"];var vo=b.Class={__name__:["Class"]},yo={};Array.prototype.map==null&&(Array.prototype.map=function(r){for(var n=[],a=0,l=this.length;a<l;){var u=a++;n[u]=r(this[u])}return n}),Array.prototype.filter==null&&(Array.prototype.filter=function(r){for(var n=[],a=0,l=this.length;a<l;){var u=a++,d=this[u];r(d)&&n.push(d)}return n});var Gi={},js=A.ArrayBuffer||oe;js.prototype.slice==null&&(js.prototype.slice=oe.sliceImpl),A.DataView;var Wi=A.Uint8Array||nr._new;(function(r,n){if(r.setImmediate)return;var a=1,l={},u=!1,d=r.document,p;function _(z){return l[a]=v.apply(n,z),a++}function v(z){var F=[].slice.call(arguments,1);return function(){typeof z=="function"?z.apply(n,F):new Function(""+z)()}}function w(z){if(u)setTimeout(v(w,z),0);else{var F=l[z];if(F){u=!0;try{F()}finally{I(z),u=!1}}}}function I(z){delete l[z]}function S(){p=function(){var z=_(arguments);return process.nextTick(v(w,z)),z}}function P(){if(r.postMessage&&!r.importScripts){var z=!0,F=r.onmessage;return r.onmessage=function(){z=!1},r.postMessage("","*"),r.onmessage=F,z}}function k(){var z="setImmediate$"+Math.random()+"$",F=function(V){V.source===r&&typeof V.data=="string"&&V.data.indexOf(z)===0&&w(+V.data.slice(z.length))};r.addEventListener?r.addEventListener("message",F,!1):r.attachEvent("onmessage",F),p=function(){var V=_(arguments);return r.postMessage(z+V,"*"),V}}function M(){var z=new MessageChannel;z.port1.onmessage=function(F){var V=F.data;w(V)},p=function(){var F=_(arguments);return z.port2.postMessage(F),F}}function L(){var z=d.documentElement;p=function(){var F=_(arguments),V=d.createElement("script");return V.onreadystatechange=function(){w(F),V.onreadystatechange=null,z.removeChild(V),V=null},z.appendChild(V),F}}function C(){p=function(){var z=_(arguments);return setTimeout(v(w,z),0),z}}var B=Object.getPrototypeOf&&Object.getPrototypeOf(r);B=B&&B.setTimeout?B:r,{}.toString.call(r.process)==="[object process]"?S():P()?k():r.MessageChannel?M():d&&"onreadystatechange"in d.createElement("script")?L():C(),B.setImmediate=p,B.clearImmediate=I})(new Function("return this")()),Yt.USE_CACHE=!1,Yt.USE_ENUM_INDEX=!1,Yt.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",Wt.DEFAULT_RESOLVER=ut,Wt.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",Lt.count=0,ae.i64tmp=function(r){var n,a=new Vt(0,0);return n=a,n}(),Mt.__toStr={}.toString,nr.BYTES_PER_ELEMENT=1,St.queue=new U,Bt.memo=new bt,rt.TOLERANCE=1e-6,rt.EPSILON=1e-10,rt.VERSION="2.0.0",yt.Tvalues=[[],[],[-.5773502691896257,.5773502691896257],[0,-.7745966692414834,.7745966692414834],[-.33998104358485626,.33998104358485626,-.8611363115940526,.8611363115940526],[0,-.5384693101056831,.5384693101056831,-.906179845938664,.906179845938664],[.6612093864662645,-.6612093864662645,-.2386191860831969,.2386191860831969,-.932469514203152,.932469514203152],[0,.4058451513773972,-.4058451513773972,-.7415311855993945,.7415311855993945,-.9491079123427585,.9491079123427585],[-.1834346424956498,.1834346424956498,-.525532409916329,.525532409916329,-.7966664774136267,.7966664774136267,-.9602898564975363,.9602898564975363],[0,-.8360311073266358,.8360311073266358,-.9681602395076261,.9681602395076261,-.3242534234038089,.3242534234038089,-.6133714327005904,.6133714327005904],[-.14887433898163122,.14887433898163122,-.4333953941292472,.4333953941292472,-.6794095682990244,.6794095682990244,-.8650633666889845,.8650633666889845,-.9739065285171717,.9739065285171717],[0,-.26954315595234496,.26954315595234496,-.5190961292068118,.5190961292068118,-.7301520055740494,.7301520055740494,-.8870625997680953,.8870625997680953,-.978228658146057,.978228658146057],[-.1252334085114689,.1252334085114689,-.3678314989981802,.3678314989981802,-.5873179542866175,.5873179542866175,-.7699026741943047,.7699026741943047,-.9041172563704749,.9041172563704749,-.9815606342467192,.9815606342467192],[0,-.2304583159551348,.2304583159551348,-.44849275103644687,.44849275103644687,-.6423493394403402,.6423493394403402,-.8015780907333099,.8015780907333099,-.9175983992229779,.9175983992229779,-.9841830547185881,.9841830547185881],[-.10805494870734367,.10805494870734367,-.31911236892788974,.31911236892788974,-.5152486363581541,.5152486363581541,-.6872929048116855,.6872929048116855,-.827201315069765,.827201315069765,-.9284348836635735,.9284348836635735,-.9862838086968123,.9862838086968123],[0,-.20119409399743451,.20119409399743451,-.3941513470775634,.3941513470775634,-.5709721726085388,.5709721726085388,-.7244177313601701,.7244177313601701,-.8482065834104272,.8482065834104272,-.937273392400706,.937273392400706,-.9879925180204854,.9879925180204854],[-.09501250983763744,.09501250983763744,-.2816035507792589,.2816035507792589,-.45801677765722737,.45801677765722737,-.6178762444026438,.6178762444026438,-.755404408355003,.755404408355003,-.8656312023878318,.8656312023878318,-.9445750230732326,.9445750230732326,-.9894009349916499,.9894009349916499],[0,-.17848418149584785,.17848418149584785,-.3512317634538763,.3512317634538763,-.5126905370864769,.5126905370864769,-.6576711592166907,.6576711592166907,-.7815140038968014,.7815140038968014,-.8802391537269859,.8802391537269859,-.9506755217687678,.9506755217687678,-.9905754753144174,.9905754753144174],[-.0847750130417353,.0847750130417353,-.2518862256915055,.2518862256915055,-.41175116146284263,.41175116146284263,-.5597708310739475,.5597708310739475,-.6916870430603532,.6916870430603532,-.8037049589725231,.8037049589725231,-.8926024664975557,.8926024664975557,-.9558239495713977,.9558239495713977,-.9915651684209309,.9915651684209309],[0,-.16035864564022537,.16035864564022537,-.31656409996362983,.31656409996362983,-.46457074137596094,.46457074137596094,-.600545304661681,.600545304661681,-.7209661773352294,.7209661773352294,-.8227146565371428,.8227146565371428,-.9031559036148179,.9031559036148179,-.96020815213483,.96020815213483,-.9924068438435844,.9924068438435844],[-.07652652113349734,.07652652113349734,-.22778585114164507,.22778585114164507,-.37370608871541955,.37370608871541955,-.5108670019508271,.5108670019508271,-.636053680726515,.636053680726515,-.7463319064601508,.7463319064601508,-.8391169718222188,.8391169718222188,-.912234428251326,.912234428251326,-.9639719272779138,.9639719272779138,-.9931285991850949,.9931285991850949],[0,-.1455618541608951,.1455618541608951,-.2880213168024011,.2880213168024011,-.4243421202074388,.4243421202074388,-.5516188358872198,.5516188358872198,-.6671388041974123,.6671388041974123,-.7684399634756779,.7684399634756779,-.8533633645833173,.8533633645833173,-.9200993341504008,.9200993341504008,-.9672268385663063,.9672268385663063,-.9937521706203895,.9937521706203895],[-.06973927331972223,.06973927331972223,-.20786042668822127,.20786042668822127,-.34193582089208424,.34193582089208424,-.469355837986757,.469355837986757,-.5876404035069116,.5876404035069116,-.6944872631866827,.6944872631866827,-.7878168059792081,.7878168059792081,-.8658125777203002,.8658125777203002,-.926956772187174,.926956772187174,-.9700604978354287,.9700604978354287,-.9942945854823992,.9942945854823992],[0,-.1332568242984661,.1332568242984661,-.26413568097034495,.26413568097034495,-.3903010380302908,.3903010380302908,-.5095014778460075,.5095014778460075,-.6196098757636461,.6196098757636461,-.7186613631319502,.7186613631319502,-.8048884016188399,.8048884016188399,-.8767523582704416,.8767523582704416,-.9329710868260161,.9329710868260161,-.9725424712181152,.9725424712181152,-.9947693349975522,.9947693349975522],[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213]],yt.Cvalues=[[],[],[1,1],[.8888888888888888,.5555555555555556,.5555555555555556],[.6521451548625461,.6521451548625461,.34785484513745385,.34785484513745385],[.5688888888888889,.47862867049936647,.47862867049936647,.23692688505618908,.23692688505618908],[.3607615730481386,.3607615730481386,.46791393457269104,.46791393457269104,.17132449237917036,.17132449237917036],[.4179591836734694,.3818300505051189,.3818300505051189,.27970539148927664,.27970539148927664,.1294849661688697,.1294849661688697],[.362683783378362,.362683783378362,.31370664587788727,.31370664587788727,.22238103445337448,.22238103445337448,.10122853629037626,.10122853629037626],[.3302393550012598,.1806481606948574,.1806481606948574,.08127438836157441,.08127438836157441,.31234707704000286,.31234707704000286,.26061069640293544,.26061069640293544],[.29552422471475287,.29552422471475287,.26926671930999635,.26926671930999635,.21908636251598204,.21908636251598204,.1494513491505806,.1494513491505806,.06667134430868814,.06667134430868814],[.2729250867779006,.26280454451024665,.26280454451024665,.23319376459199048,.23319376459199048,.18629021092773426,.18629021092773426,.1255803694649046,.1255803694649046,.05566856711617366,.05566856711617366],[.24914704581340277,.24914704581340277,.2334925365383548,.2334925365383548,.20316742672306592,.20316742672306592,.16007832854334622,.16007832854334622,.10693932599531843,.10693932599531843,.04717533638651183,.04717533638651183],[.2325515532308739,.22628318026289723,.22628318026289723,.2078160475368885,.2078160475368885,.17814598076194574,.17814598076194574,.13887351021978725,.13887351021978725,.09212149983772845,.09212149983772845,.04048400476531588,.04048400476531588],[.2152638534631578,.2152638534631578,.2051984637212956,.2051984637212956,.18553839747793782,.18553839747793782,.15720316715819355,.15720316715819355,.12151857068790319,.12151857068790319,.08015808715976021,.08015808715976021,.03511946033175186,.03511946033175186],[.2025782419255613,.19843148532711158,.19843148532711158,.1861610000155622,.1861610000155622,.16626920581699392,.16626920581699392,.13957067792615432,.13957067792615432,.10715922046717194,.10715922046717194,.07036604748810812,.07036604748810812,.03075324199611727,.03075324199611727],[.1894506104550685,.1894506104550685,.18260341504492358,.18260341504492358,.16915651939500254,.16915651939500254,.14959598881657674,.14959598881657674,.12462897125553388,.12462897125553388,.09515851168249279,.09515851168249279,.062253523938647894,.062253523938647894,.027152459411754096,.027152459411754096],[.17944647035620653,.17656270536699264,.17656270536699264,.16800410215645004,.16800410215645004,.15404576107681028,.15404576107681028,.13513636846852548,.13513636846852548,.11188384719340397,.11188384719340397,.08503614831717918,.08503614831717918,.0554595293739872,.0554595293739872,.02414830286854793,.02414830286854793],[.1691423829631436,.1691423829631436,.16427648374583273,.16427648374583273,.15468467512626524,.15468467512626524,.14064291467065065,.14064291467065065,.12255520671147846,.12255520671147846,.10094204410628717,.10094204410628717,.07642573025488905,.07642573025488905,.0497145488949698,.0497145488949698,.02161601352648331,.02161601352648331],[.1610544498487837,.15896884339395434,.15896884339395434,.15276604206585967,.15276604206585967,.1426067021736066,.1426067021736066,.12875396253933621,.12875396253933621,.11156664554733399,.11156664554733399,.09149002162245,.09149002162245,.06904454273764123,.06904454273764123,.0448142267656996,.0448142267656996,.019461788229726478,.019461788229726478],[.15275338713072584,.15275338713072584,.14917298647260374,.14917298647260374,.14209610931838204,.14209610931838204,.13168863844917664,.13168863844917664,.11819453196151841,.11819453196151841,.10193011981724044,.10193011981724044,.08327674157670475,.08327674157670475,.06267204833410907,.06267204833410907,.04060142980038694,.04060142980038694,.017614007139152118,.017614007139152118],[.14608113364969041,.14452440398997005,.14452440398997005,.13988739479107315,.13988739479107315,.13226893863333747,.13226893863333747,.12183141605372853,.12183141605372853,.10879729916714838,.10879729916714838,.09344442345603386,.09344442345603386,.0761001136283793,.0761001136283793,.057134425426857205,.057134425426857205,.036953789770852494,.036953789770852494,.016017228257774335,.016017228257774335],[.13925187285563198,.13925187285563198,.13654149834601517,.13654149834601517,.13117350478706238,.13117350478706238,.12325237681051242,.12325237681051242,.11293229608053922,.11293229608053922,.10041414444288096,.10041414444288096,.08594160621706773,.08594160621706773,.06979646842452049,.06979646842452049,.052293335152683286,.052293335152683286,.03377490158481415,.03377490158481415,.0146279952982722,.0146279952982722],[.13365457218610619,.1324620394046966,.1324620394046966,.12890572218808216,.12890572218808216,.12304908430672953,.12304908430672953,.11499664022241136,.11499664022241136,.10489209146454141,.10489209146454141,.09291576606003515,.09291576606003515,.07928141177671895,.07928141177671895,.06423242140852585,.06423242140852585,.04803767173108467,.04803767173108467,.030988005856979445,.030988005856979445,.013411859487141771,.013411859487141771],[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872]],wt.THREADS=1,wt._init=!1,zr.basePath="",$r.uuid=0,Us.main()}(typeof console<"u"?console:{log:function(){}},e,typeof c<"u"?c:typeof s<"u"?s:typeof self<"u"?self:this),e})})(ru);var Jd=ru.exports;const On=Qd(Jd);class ha{constructor(){this.c0=0,this.c1=0,this.c2=0,this.c3=0}init(t,e,s,o){this.c0=t,this.c1=s,this.c2=-3*t+3*e-2*s-o,this.c3=2*t-2*e+s+o}initCatmullRom(t,e,s,o,h){this.init(e,s,h*(s-t),h*(o-e))}initNonuniformCatmullRom(t,e,s,o,h,c,f){let x=(e-t)/h-(s-t)/(h+c)+(s-e)/c,g=(s-e)/c-(o-e)/(c+f)+(o-s)/f;x*=c,g*=c,this.init(e,s,x,g)}calc(t){const e=t*t,s=e*t;return this.c0+this.c1*t+this.c2*e+this.c3*s}}class nu extends Ds{constructor(t=[],e=!1,s="centripetal",o=.5){super(),this.isCatmullRomCurve3d=!0,this.type="CatmullRomCurve3d",this._tmp=new Z,this._px=new ha,this._py=new ha,this._pz=new ha,this._points=t.map(h=>new Y(h)),this._closed=e,this._curveType=s,this._tension=o}get points(){return this._points}get closed(){return this._closed}get curveType(){return this._curveType}get tension(){return this._tension}get startPoint(){return this._points.length>0?this._points[0]:new Y}get endPoint(){return this._points.length>0?this._points[this._points.length-1]:new Y}get length(){if(this._points.length<2)return 0;let t=0;for(let e=1;e<this._points.length;e++)t+=this._points[e-1].distanceTo(this._points[e]);return this._closed&&this._points.length>2&&(t+=this._points[this._points.length-1].distanceTo(this._points[0])),t}getPoint(t,e=new Y){const s=e,o=this._points,h=o.length;if(h===0)return s.set(0,0,0);if(h===1)return s.copy(o[0]);const c=(h-(this._closed?0:1))*t;let f=Math.floor(c),x=c-f;this._closed?f+=f>0?0:(Math.floor(Math.abs(f)/h)+1)*h:x===0&&f===h-1&&(f=h-2,x=1);let g,A;this._closed||f>0?g=o[(f-1)%h]:(this._tmp.subVectors(o[0],o[1]).add(o[0]),g=new Y(this._tmp.x,this._tmp.y,this._tmp.z));const b=o[f%h],E=o[(f+1)%h];if(this._closed||f+2<h?A=o[(f+2)%h]:(this._tmp.subVectors(o[h-1],o[h-2]).add(o[h-1]),A=new Y(this._tmp.x,this._tmp.y,this._tmp.z)),this._curveType==="centripetal"||this._curveType==="chordal"){const T=this._curveType==="chordal"?.5:.25;let R=Math.pow(g.distanceToSquared(b),T),O=Math.pow(b.distanceToSquared(E),T),U=Math.pow(E.distanceToSquared(A),T);O<1e-4&&(O=1),R<1e-4&&(R=O),U<1e-4&&(U=O),this._px.initNonuniformCatmullRom(g.x,b.x,E.x,A.x,R,O,U),this._py.initNonuniformCatmullRom(g.y,b.y,E.y,A.y,R,O,U),this._pz.initNonuniformCatmullRom(g.z,b.z,E.z,A.z,R,O,U)}else this._curveType==="catmullrom"&&(this._px.initCatmullRom(g.x,b.x,E.x,A.x,this._tension),this._py.initCatmullRom(g.y,b.y,E.y,A.y,this._tension),this._pz.initCatmullRom(g.z,b.z,E.z,A.z,this._tension));return s.set(this._px.calc(x),this._py.calc(x),this._pz.calc(x)),s}getPoints(t){const e=[];for(let s=0;s<=t;s++)e.push(this.getPoint(s/t));return e}setPoints(t){this._points=t.map(e=>new Y(e)),this._boundingBoxNeedsUpdate=!0}setClosed(t){this._closed!==t&&(this._closed=t,this._boundingBoxNeedsUpdate=!0)}setCurveType(t){this._curveType=t}setTension(t){this._tension=t}transform(t){return this._points=this._points.map(e=>{const s=new Y;return s.copy(e),s.applyMatrix3d(t),s}),this._boundingBoxNeedsUpdate=!0,this}calculateBoundingBox(){if(this._points.length===0)return new Rt;const t=new Rt;return this._points.forEach(e=>{t.expandByPoint(e)}),t}}class fn{constructor(t,e,s,o){this._degree=t,this._knots=[...e],this._controlPoints=s.map(h=>({x:h.x,y:h.y,z:h.z})),this._weights=o?[...o]:new Array(s.length).fill(1)}degree(){return this._degree}knots(){return[...this._knots]}controlPoints(){return this._controlPoints.map(t=>({x:t.x,y:t.y,z:t.z}))}weights(){return[...this._weights]}point(t){const e=this._controlPoints.map(s=>[s.x,s.y,s.z]);return Ms(t,this._degree,this._knots,e,this._weights)}length(){const t=this._controlPoints.map(e=>[e.x,e.y,e.z]);return Kh(this._degree,this._knots,t,this._weights)}static byKnotsControlPointsWeights(t,e,s,o){return new fn(t,e,s,o)}static byPoints(t,e,s="Uniform"){let o;switch(s){case"Chord":o=Yh(e,t);break;case"SqrtChord":o=Xh(e,t);break;case"Uniform":default:o=qh(e,t.length);break}const h=t.map(f=>({x:f[0],y:f[1],z:f[2]})),c=new Array(h.length).fill(1);return new fn(e,o,h,c)}getParameterRange(){const t=this._knots[this._degree],e=this._knots[this._knots.length-this._degree-1];return{start:t,end:e}}getPoints(t){const e=[],{start:s,end:o}=this.getParameterRange();for(let h=0;h<=t;h++){const c=s+(o-s)*(h/t);e.push(this.point(c))}return e}isClosed(t=1e-6){const{start:e,end:s}=this.getParameterRange(),o=this.point(e),h=this.point(s),c=o[0]-h[0],f=o[1]-h[1],x=o[2]-h[2];return Math.sqrt(c*c+f*f+x*x)<t}static createFitPointsForClosedCurve(t){if(t.length<4)throw new Error("At least 4 points are required for a closed NURBS curve");const e=new nu(t,!0,"centripetal"),s=Math.max(50,t.length*2);return e.getPoints(s)}static createClosedCurve(t,e,s="Chord"){const o=this.createFitPointsForClosedCurve(t).map(h=>[h.x,h.y,h.z]);return fn.byPoints(o,e,s)}}class Yr extends Ds{constructor(t,e,s,o,h){super();const c=arguments.length;if(c<2||c>5)throw Ue.ILLEGAL_PARAMETERS;if(this._degree=3,this._closed=!1,Array.isArray(e)){this._controlPoints=t;let f,x=3,g=!1;if(c>=3&&(Array.isArray(s)?(f=s,c>=4&&(x=o||3),c>=5&&(g=h)):s!==void 0&&(x=s||3,c>=4&&(g=o))),s===void 0&&c>=4&&(x=o||3,c>=5&&(g=h)),this._degree=x,this._closed=g,this._controlPoints.length<this._degree+1)throw Ue.ILLEGAL_PARAMETERS;const A=this.toVerbPoints(this._controlPoints);this._nurbsCurve=On.geom.NurbsCurve.byKnotsControlPointsWeights(this._degree,e,A,f)}else{if(this._fitPoints=t,this._knotParameterization=e,c>=3&&(this._degree=s||3),c>=4&&(this._closed=o),this._fitPoints.length<this._degree+1)throw Ue.ILLEGAL_PARAMETERS;const f=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=On.geom.NurbsCurve.byPoints(f,this._degree),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}}buildCurve(){if(this._fitPoints&&this._knotParameterization){if(this._closed){const t=fn.createFitPointsForClosedCurve(this._fitPoints),e=this.toNurbsPoints(t);this._nurbsCurve=On.geom.NurbsCurve.byPoints(e,this._degree)}else{const t=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=On.geom.NurbsCurve.byPoints(t,this._degree)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}else if(this._controlPoints)if(this._closed){const t=fn.createFitPointsForClosedCurve(this._controlPoints),e=this.toNurbsPoints(t);this._nurbsCurve=On.geom.NurbsCurve.byPoints(e,this._degree),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}else{const t=this._nurbsCurve.knots(),e=this._nurbsCurve.weights(),s=this.toVerbPoints(this._controlPoints);this._nurbsCurve=On.geom.NurbsCurve.byKnotsControlPointsWeights(this._degree,t,s,e)}}setClosed(t){this._closed!==t&&(this._closed=t,this._boundingBoxNeedsUpdate=!0,this.buildCurve())}get degree(){return this._degree}get knotParameterization(){return this._knotParameterization}get startPoint(){const t=this._nurbsCurve.knots(),e=this._nurbsCurve.degree(),s=t[e],o=this._nurbsCurve.point(s);return new Y(o[0],o[1],o[2])}get endPoint(){const t=this._nurbsCurve.knots(),e=this._nurbsCurve.degree(),s=t[t.length-e-1],o=this._nurbsCurve.point(s);return new Y(o[0],o[1],o[2])}get length(){return this._nurbsCurve.length()}getFitPointAt(t){if(!this._fitPoints)throw new Error("No fit points in this spline");const e=this._fitPoints.length,s=t<0||t>=e?e-1:t,o=this._fitPoints[s];return{x:o.x,y:o.y,z:o.z||0}}getControlPointAt(t){const e=this._controlPoints.length,s=t<0||t>=e?e-1:t;return this._controlPoints[s]}getPoints(t=100){const e=this._nurbsCurve,s=[],o=e.knots(),h=this._nurbsCurve.degree(),c=o[h],f=o[o.length-h-1],x=(f-c)/(t-1);for(let g=0;g<t;g++){const A=g===t-1?f:c+g*x,b=e.point(A);s.push(new Y(b[0],b[1],b[2]))}return s}getCurvePoints(t,e){const s=[],o=t.knots(),h=o[3],c=(o[o.length-4]-h)/(e-1);for(let f=0;f<e;f++){const x=h+f*c;s.push(t.point(x))}return s}calculateBoundingBox(){const t=this.getPoints(100);return new Rt().setFromPoints(t)}get closed(){return this._closed}set closed(t){this.setClosed(t)}transform(t){return this._boundingBoxNeedsUpdate=!0,this}toNurbsPoints(t){const e=new Array(t.length);return t.forEach((s,o)=>{e[o]=[s.x,s.y,s.z||0]}),e}toVerbPoints(t){const e=new Array(t.length);return t.forEach((s,o)=>{e[o]=[s.x,s.y,s.z||0]}),e}toGePoints(t){const e=new Array(t.length);return t.forEach((s,o)=>{e[o]={x:s[0],y:s[1],z:s[2]}}),e}static createClosedSpline(t,e="Uniform",s=3){if(t.length<s+1)throw new Error(`At least ${s+1} points are required for a degree ${s} closed spline`);return new Yr(t,e,s,!0)}}var dn=256,su=[],qo=256,qs;for(;dn--;)su[dn]=(dn+256).toString(16).substring(1);function t0(i){var t=0,e=11;if(!qs||dn+e>qo*2)for(qs="",dn=0;t<qo;t++)qs+=su[Math.random()*256|0];return qs.substring(dn,dn+++e)}class Xr{constructor(t,e){t=t||{},Fn(t,{objectId:t0()}),this._attrs=new rl(t,e)}get attrs(){return this._attrs}getAttr(t){const e=this._attrs.get(t);if(e===void 0)throw new Error(`[AcDbObject] Attribute name '${t}' does't exist in this object!`);return e}getAttrWithoutException(t){return this._attrs.get(t)}setAttr(t,e){this._attrs.set(t,e)}get objectId(){return this.getAttr("objectId")}set objectId(t){this._attrs.set("objectId",t)}get ownerId(){return this.getAttr("ownerId")}set ownerId(t){this._attrs.set("ownerId",t)}get database(){return this._database?this._database:Fa().workingDatabase}set database(t){this._database=t}close(){}}const Ua=class Ua extends Xr{constructor(){super(...arguments),this._layer="0",this._color=new Wr,this._lineType=Ks,this._lineWeight=1,this._linetypeScale=-1,this._visibility=!0,this._transparency=0}get type(){return this.constructor.typeName}get layer(){return this._layer}set layer(t){this._layer=t}get color(){return this._color}set color(t){this._color.copy(t)}get rgbColor(){let t=this.database.cecolor;if(this.color.isByLayer){const e=this.getLayerColor();e&&e.color&&(t=e)}else this.color.isByBlock||this.color.color!=null&&(t=this.color);return t.color==null?16777215:t.color}get lineType(){return this._lineType}set lineType(t){this._lineType=t||Ks}get lineWeight(){return this._lineWeight}set lineWeight(t){this._lineWeight=t}get linetypeScale(){return this._linetypeScale}set linetypeScale(t){this._linetypeScale=t}get visibility(){return this._visibility}set visibility(t){this._visibility=t}get transparency(){return this._transparency}set transparency(t){this._transparency=t}subGetGripPoints(){return new Array}subGetOsnapPoints(t,e,s,o,h){}transformBy(t){return this}triggerModifiedEvent(){this.database.events.entityModified.dispatch({database:this.database,entity:this})}get lineStyle(){var s;const t=this.getLineType(),e=(s=this.database)==null?void 0:s.tables.linetypeTable.getAt(t);return e?{...e.linetype,color:this.rgbColor}:{name:t,standardFlag:0,color:this.rgbColor,description:"",totalPatternLength:0}}getLineType(){if(this.lineType==Ks){const t=this.database.tables.layerTable.getAt(this.layer);if(t&&t.linetype)return t.linetype}else return this.lineType==ul?ei:this.lineType;return ei}getLayerColor(){const t=this.database.tables.layerTable.getAt(this.layer);if(t==null)console.error(`The layer with name '${this.layer}' not found in drawing database!`);else return t.color;return null}attachEntityInfo(t){t&&(t.objectId=this.objectId,t.ownerId=this.ownerId,t.layerName=this.layer,t.visible=this.visibility)}};Ua.typeName="Entity";let Ve=Ua;const Va=class Va extends Ve{};Va.typeName="Curve";let je=Va;const ja=class ja extends je{constructor(t,e,s,o){super(),this._geo=new pn(t,e,s,o,Z.Z_AXIS,Z.X_AXIS)}get center(){return this._geo.center}set center(t){this._geo.center=t}get radius(){return this._geo.radius}set radius(t){this._geo.radius=t}get startAngle(){return this._geo.startAngle}set startAngle(t){this._geo.startAngle=t}get endAngle(){return this._geo.endAngle}set endAngle(t){this._geo.endAngle=t}get startPoint(){return this._geo.startPoint}get endPoint(){return this._geo.endPoint}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}subGetGripPoints(){const t=new Array;return t.push(this.center),t.push(this.startPoint),t.push(this.endPoint),t}transformBy(t){return this._geo.transform(t),this}draw(t){return t.circularArc(this._geo,this.lineStyle)}};ja.typeName="Arc";let ii=ja;const Ga=class Ga extends Ve{constructor(t){super(),this._blockName=t,this._position=new Y,this._rotation=0,this._normal=new Z(0,0,1),this._scaleFactors=new Y(1,1,1)}get position(){return this._position}set position(t){this._position.copy(t)}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get scaleFactors(){return this._scaleFactors}set scaleFactors(t){this._scaleFactors.copy(t)}get normal(){return this._normal}set normal(t){this._normal.copy(t).normalize()}get blockTableRecord(){return this.database.tables.blockTable.getAt(this._blockName)}get geometricExtents(){const t=new Rt,e=this.blockTableRecord;if(e!=null){const h=e.newIterator();for(const c of h)t.union(c.geometricExtents)}const s=new Hr().setFromEuler(new Jh(this.rotation,0,0)),o=new gn;return o.compose(this.position,s,this.scaleFactors),t.applyMatrix4(o),t}draw(t){const e=[],s=this.blockTableRecord;if(s!=null){const o=this.computeTransformMatrix(),h=Gr.instance.draw(t,s,this.rgbColor,!0,o,this.normal);return this.attachEntityInfo(h),h}else{const o=t.group(e);return this.attachEntityInfo(o),o}}computeTransformMatrix(){const t=new Hr;return t.setFromAxisAngle(Z.Z_AXIS,this.rotation),new gn().compose(this._position,t,this._scaleFactors)}};Ga.typeName="BlockReference";let Ls=Ga;const Wa=class Wa extends je{constructor(t,e,s=Z.Z_AXIS){super(),this._geo=new pn(t,e,0,ne,s,Z.X_AXIS)}get center(){return this._geo.center}set center(t){this._geo.center=t}get radius(){return this._geo.radius}set radius(t){this._geo.radius=t}get normal(){return this._geo.normal}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}subGetGripPoints(){const t=new Array;return t.push(this.center),t}transformBy(t){return this._geo.transform(t),this}draw(t){return t.circularArc(this._geo,this.lineStyle)}};Wa.typeName="Circle";let ai=Wa;const Ha=class Ha extends je{constructor(t,e,s,o,h,c,f){super(),this._geo=new zi(t,e,s,o,h,c,f)}get center(){return this._geo.center}set center(t){this._geo.center=t}get majorAxisRadius(){return this._geo.majorAxisRadius}set majorAxisRadius(t){this._geo.majorAxisRadius=t}get minorAxisRadius(){return this._geo.minorAxisRadius}set minorAxisRadius(t){this._geo.minorAxisRadius=t}get normal(){return this._geo.normal}set normal(t){this._geo.normal=t}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}draw(t){return t.ellipticalArc(this._geo,this.lineStyle)}};Ha.typeName="Ellipse";let oi=Ha;const qa=class qa extends Ve{constructor(){super(),this._vertices=[new Y,new Y,new Y],this._edgeInvisibilities=0}getVertexAt(t){return t<0?this._vertices[0]:t>this._vertices.length?this._vertices[this._vertices.length-1]:this._vertices[t]}setVertexAt(t,e){if(t<0&&this._vertices[0].copy(e),t>=3)return this._vertices.length===3&&this._vertices.push(new Y),this._vertices[3].copy(e);this._vertices[t].copy(e)}setEdgeInvisibilities(t){this._edgeInvisibilities=t}isEdgeVisibleAt(t){if(t<0||t>3)throw new Error("Index out of range");return(this._edgeInvisibilities&1<<t)===0}makeEdgeInvisibleAt(t){if(t<0||t>3)throw new Error("Index out of range");this._edgeInvisibilities=this._edgeInvisibilities|1<<t}get geometricExtents(){return new Rt().setFromPoints(this._vertices)}subGetGripPoints(){const t=new Array;for(let e=0;e<this._vertices.length;++e)t.push(this.getVertexAt(e));return t}draw(t){const e=this._vertices.length,s=new Float32Array(e*3),o=new Uint16Array(e*2);for(let h=0;h<e;h++)s[h*3]=this._vertices[h].x,s[h*3+1]=this._vertices[h].y,s[h*3+2]=this._vertices[h].z,this.isEdgeVisibleAt(h)&&(o[h*2]=h,o[h*2+1]=(h+1)%4);return t.lineSegments(s,3,o,this.lineStyle)}};qa.typeName="Face";let li=qa;var iu=(i=>(i[i.UserDefined=0]="UserDefined",i[i.Predefined=1]="Predefined",i[i.Custom=2]="Custom",i))(iu||{}),au=(i=>(i[i.Normal=0]="Normal",i[i.Outer=1]="Outer",i[i.Ignore=2]="Ignore",i))(au||{});const Ya=class Ya extends Ve{constructor(){super(),this._elevation=0,this._geo=new Li,this._definitionLines=[],this._patternName="",this._patternType=1,this._patternAngle=0,this._patternScale=1,this._hatchStyle=0}get definitionLines(){return this._definitionLines}get patternName(){return this._patternName}set patternName(t){this._patternName=t}get patternType(){return this._patternType}set patternType(t){this._patternType=t}get patternAngle(){return this._patternAngle}set patternAngle(t){this._patternAngle=t}get patternScale(){return this._patternScale}set patternScale(t){this._patternScale=t}get hatchStyle(){return this._hatchStyle}set hatchStyle(t){this._hatchStyle=t}add(t){this._geo.add(t)}get geometricExtents(){const t=this._geo.box;return new Rt({x:t.min.x,y:t.min.y,z:this._elevation},{x:t.max.x,y:t.max.y,z:this._elevation})}draw(t){return t.area(this._geo,{color:this.rgbColor,solidFill:!1,patternAngle:this.patternAngle,patternLines:this.definitionLines})}};Ya.typeName="Hatch";let hi=Ya;var ou=(i=>(i[i.MText=0]="MText",i[i.Fcf=1]="Fcf",i[i.BlockReference=2]="BlockReference",i[i.NoAnnotation=3]="NoAnnotation",i))(ou||{});const Xa=class Xa extends je{constructor(){super(),this._isSplined=!1,this._updated=!1,this._hasArrowHead=!1,this._vertices=[],this._dimensionStyle="",this._hasHookLine=!1,this._annoType=3}get isSplined(){return this._isSplined}set isSplined(t){this._isSplined=t}get hasArrowHead(){return this._hasArrowHead}set hasArrowHead(t){this._hasArrowHead=t}get hasHookLine(){return this._hasHookLine}set hasHookLine(t){this._hasHookLine=t}get numVertices(){return this._vertices.length}get dimensionStyle(){return this._dimensionStyle}set dimensionStyle(t){this._dimensionStyle=t}get annoType(){return this._annoType}set annoType(t){this._annoType=t}appendVertex(t){this._vertices.push(new Y().copy(t)),this._updated=!0}setVertexAt(t,e){throw(t<0||t>=this._vertices.length)&&(this._vertices[t].copy(e),this._updated=!0),new Error("The vertex index is out of range!")}vertexAt(t){throw(t<0||t>=this._vertices.length)&&this._vertices[t],new Error("The vertex index is out of range!")}get geometricExtents(){return this._isSplined&&this.splineGeo?this.splineGeo.calculateBoundingBox():new Rt().setFromPoints(this._vertices)}get closed(){return!1}set closed(t){}draw(t){if(this.isSplined&&this.splineGeo){const e=this.splineGeo.getPoints(100);return t.lines(e,this.lineStyle)}else return t.lines(this._vertices,this.lineStyle)}get splineGeo(){return this.createSplineIfNeeded(),this._splineGeo}createSplineIfNeeded(){this.isSplined&&this.numVertices>=2&&(this._splineGeo==null||this._updated)&&(this._splineGeo=new Yr(this._vertices,"Uniform"),this._updated=!1)}};Xa.typeName="Leader";let ui=Xa;const Ka=class Ka extends je{constructor(t,e){super(),this._geo=new qr(t,e)}get startPoint(){return this._geo.startPoint}set startPoint(t){this._geo.startPoint=t}get endPoint(){return this._geo.endPoint}set endPoint(t){this._geo.endPoint=t}get midPoint(){return this._geo.midPoint}get geometricExtents(){return this._geo.box}get closed(){return!1}subGetGripPoints(){const t=new Array;return t.push(this.midPoint),t.push(this.startPoint),t.push(this.endPoint),t}subGetOsnapPoints(t,e,s,o,h){const c=this.startPoint,f=this.endPoint;switch(t){case cn.EndPoint:h.push(c),h.push(f);break;case cn.MidPoint:h.push(this.midPoint);break;case cn.Nearest:{const x=this._geo.project(s);h.push(x)}break;case cn.Perpendicular:{const x=this._geo.perpPoint(s);h.push(x)}break;case cn.Tangent:h.push(c);break}}transformBy(t){return this._geo.transform(t),this}draw(t){const e=this.startPoint,s=this.endPoint,o=[new Y(e.x,e.y,0),new Y(s.x,s.y,0)];return t.lines(o,this.lineStyle)}};Ka.typeName="Line";let ci=Ka;var La=(i=>(i.ClosedFilled="",i.Dot="_DOT",i.DotSmall="_DOTSMALL",i.DotBlank="_DOTBLANK",i.Origin="_ORIGIN",i.Origin2="_ORIGIN2",i.Open="_OPEN",i.Open90="_OPEN90",i.Open30="_OPEN30",i.Closed="_CLOSED",i.Small="_SMALL",i.None="_NONE",i.Oblique="_OBLIQUE",i.BoxFilled="_BOXFILLED",i.Box="_BOXBLANK",i.ClosedBlank="_CLOSEDBLANK",i.DatumBlank="_DATUMBLANK",i.DatumFilled="_DATUMFILLED",i.Integral="_INTEGRAL",i.ArchTick="_ARCHTICK",i))(La||{}),Bi=(i=>(i[i.LEFT_TO_RIGHT=1]="LEFT_TO_RIGHT",i[i.RIGHT_TO_LEFT=2]="RIGHT_TO_LEFT",i[i.TOP_TO_BOTTOM=3]="TOP_TO_BOTTOM",i[i.BOTTOM_TO_TOP=4]="BOTTOM_TO_TOP",i[i.BY_STYLE=5]="BY_STYLE",i))(Bi||{}),Bn=(i=>(i[i.TopLeft=1]="TopLeft",i[i.TopCenter=2]="TopCenter",i[i.TopRight=3]="TopRight",i[i.MiddleLeft=4]="MiddleLeft",i[i.MiddleCenter=5]="MiddleCenter",i[i.MiddleRight=6]="MiddleRight",i[i.BottomLeft=7]="BottomLeft",i[i.BottomCenter=8]="BottomCenter",i[i.BottomRight=9]="BottomRight",i))(Bn||{}),Oa=(i=>(i[i.OPTIMIZED_2D=0]="OPTIMIZED_2D",i[i.WIREFRAME=1]="WIREFRAME",i[i.HIDDEN_LINE=2]="HIDDEN_LINE",i[i.FLAT_SHADED=3]="FLAT_SHADED",i[i.GOURAUD_SHADED=4]="GOURAUD_SHADED",i[i.FLAT_SHADED_WITH_WIREFRAME=5]="FLAT_SHADED_WITH_WIREFRAME",i[i.GOURAUD_SHADED_WITH_WIREFRAME=6]="GOURAUD_SHADED_WITH_WIREFRAME",i))(Oa||{}),za=(i=>(i[i.NON_ORTHOGRAPHIC=0]="NON_ORTHOGRAPHIC",i[i.TOP=1]="TOP",i[i.BOTTOM=2]="BOTTOM",i[i.FRONT=3]="FRONT",i[i.BACK=4]="BACK",i[i.LEFT=5]="LEFT",i[i.RIGHT=6]="RIGHT",i))(za||{}),Ra=(i=>(i[i.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",i[i.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS",i))(Ra||{});class Di{constructor(){this._number=-1,this._id="",this._groupId="",this._centerPoint=new Y,this._height=0,this._width=0,this._viewCenter=new Y,this._viewHeight=0}get number(){return this._number}set number(t){this._number=t}get id(){return this._id}set id(t){this._id=t}get groupId(){return this._groupId}set groupId(t){this._groupId=t}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint.copy(t)}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get box(){const t=new _e;return t.setFromCenterAndSize(this.centerPoint,{x:this.width,y:this.height}),t}get viewCenter(){return this._viewCenter}set viewCenter(t){this._viewCenter.copy(t)}get viewHeight(){return this._viewHeight}set viewHeight(t){this._viewHeight=t}get viewWidth(){return this.viewHeight*(this.width/this.height)}get viewBox(){const t=new _e;return t.setFromCenterAndSize(this.viewCenter,{x:this.viewWidth,y:this.viewHeight}),t}clone(){const t=new Di;return t.id=this.id,t.groupId=this.groupId,t.number=this.number,t.centerPoint.copy(this.centerPoint),t.height=this.height,t.width=this.width,t.viewCenter.copy(this.viewCenter),t.viewHeight=this.viewHeight,t}copy(t){return this.id=t.id,this.groupId=t.groupId,this.number=t.number,this.centerPoint.copy(t.centerPoint),this.height=t.height,this.width=t.width,this.viewCenter.copy(t.viewCenter),this.viewHeight=t.viewHeight,this}}const $a=class $a extends Ve{constructor(){super(),this._contents="",this._height=0,this._width=0,this._lineSpacingFactor=.25,this._lineSpacingStyle=0,this._backgroundFill=!1,this._backgroundFillColor=13158600,this._backgroundFillTransparency=1,this._backgroundScaleFactor=1,this._rotation=0,this._styleName="",this._location=new Y,this._attachmentPoint=Bn.TopLeft,this._direction=new Z(1,0,0),this._drawingDirection=Bi.LEFT_TO_RIGHT}get contents(){return this._contents}set contents(t){this._contents=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get lineSpacingFactor(){return this._lineSpacingFactor}set lineSpacingFactor(t){this._lineSpacingFactor=t}get lineSpacingStyle(){return this._lineSpacingStyle}set lineSpacingStyle(t){this._lineSpacingStyle=t}get backgroundFill(){return this._backgroundFill}set backgroundFill(t){this._backgroundFill=t,this._backgroundFillColor=13158600}get backgroundFillColor(){return this._backgroundFillColor}set backgroundFillColor(t){this._backgroundFillColor=t}get backgroundFillTransparency(){return this._backgroundFillTransparency}set backgroundFillTransparency(t){this._backgroundFillTransparency=t}get backgroundScaleFactor(){return this._backgroundScaleFactor}set backgroundScaleFactor(t){this._backgroundScaleFactor=t}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get location(){return this._location}set location(t){this._location.copy(t)}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get direction(){return this._direction}set direction(t){this._direction.copy(t)}get drawingDirection(){return this._drawingDirection}set drawingDirection(t){this._drawingDirection=t}get geometricExtents(){return new Rt}getTextStyle(){const t=this.database.tables.textStyleTable;let e=t.getAt(this.styleName);return e||(e=t.getAt("STANDARD")||t.getAt("Standard")),e.textStyle}draw(t,e){const s={text:this.contents,height:this.height,width:this.width,position:this.location,rotation:this.rotation,directionVector:this.direction,attachmentPoint:this.attachmentPoint,drawingDirection:this.drawingDirection,lineSpaceFactor:this.lineSpacingFactor},o={...this.getTextStyle(),color:this.rgbColor};return t.mtext(s,o,e)}};$a.typeName="MText";let di=$a;const Za=class Za extends je{constructor(t,e,s,o,h){super();const c=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0)+ +(o!==void 0)+ +(h!==void 0);if(c<2||c>5)throw Ue.ILLEGAL_PARAMETERS;!Array.isArray(e)?this._geo=new Yr(t,e,s,o):this._geo=new Yr(t,e,s,o,h)}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}set closed(t){this._geo.closed=t}draw(t){const e=this._geo.getPoints(100);return t.lines(e,this.lineStyle)}};Za.typeName="Spline";let Os=Za;const e0=new Z,Qa=class Qa extends Ls{constructor(t,e,s){super(t),this._attachmentPoint=Bn.TopLeft,this._numColumns=s,this._numRows=e,this._columnWidth=new Array(s),this._rowHeight=new Array(e),this._cells=new Array(e*s)}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get numRows(){return this._numRows}set numRows(t){this._numRows=t}get numColumns(){return this._numColumns}set numColumns(t){this._numColumns=t}numContents(t,e){return 1}rowHeight(t){return this._rowHeight[t]}setRowHeight(t,e){this._rowHeight[t]=e}setUniformRowHeight(t){this._rowHeight.fill(t)}columnWidth(t){return this._columnWidth[t]}setUniformColumnWidth(t){this._columnWidth.fill(t)}setColumnWidth(t,e){this._columnWidth[t]=e}cell(t){if(!(t<0||t>=this._cells.length))return this._cells[t]}setCell(t,e){this._cells[t]=e}textString(t,e,s){return this._cells[t*e].text}setTextString(t,e,s){this._cells[t*e].text=s}isEmpty(t,e){return!this._cells[t*e].text}get geometricExtents(){return new Rt}draw(t){let e=0,s=0;const o=new Uint16Array(this.numColumns*this.numRows*8),h=new Float32Array((this.numColumns+1)*(this.numRows+1)*3);let c=0;for(let E=0;E<=this.numRows;E++){e-=E>0?this.rowHeight(E-1):0,s=0;for(let T=0;T<=this.numColumns;T++)s+=T>0?this.columnWidth(T-1):0,h[c++]=s,h[c++]=e,h[c++]=0}const f=[],x=new Array(this.numRows*this.numColumns).fill(!1);s=0,c=0;let g=0;for(let E=0;E<this.numColumns;E++){s+=E>0?this.columnWidth(E-1):0,e=0;for(let T=0;T<this.numRows;T++){e+=T>0?this.rowHeight(T-1):0;const R=this.cell(T*this.numColumns+E);if(g=T*this.numColumns+E,R&&!x[g]){const O=R.borderWidth??1,U=R.borderHeight??1;this.fillVisited(x,g,this.numColumns,O,U),o[c++]=E+T*(this.numColumns+1),o[c++]=E+T*(this.numColumns+1)+O;const D=h[o[c-1]*3]-s,dt=E+(T+U)*(this.numColumns+1)+O;E+O==this.numColumns&&(o[c++]=E+T*(this.numColumns+1)+O,o[c++]=dt);const vt=-h[dt*3+1]-e;if(T+U==this.numRows&&(o[c++]=E+(T+U)*(this.numColumns+1)+U,o[c++]=E+(T+U)*(this.numColumns+1)),o[c++]=E+(T+U)*(this.numColumns+1),o[c++]=E+T*(this.numColumns+1),R.text){const ot=R.attachmentPoint||this.attachmentPoint||Bn.MiddleCenter,W=this.getTableTextOffset(ot,D,vt),ut={text:R.text,height:R.textHeight,width:D,position:e0.set(s,-e,0).clone().add(W),rotation:this.rotation,attachmentPoint:ot},st={...this.getTextStyle(R),color:this.color.color};f.push(t.mtext(ut,st))}}}}f.push(t.lineSegments(h,3,o,this.lineStyle));const A=t.group(f),b=new Hr;return b.setFromAxisAngle(Z.Z_AXIS,this.rotation),Yo.compose(this.position,b,this.scaleFactors),A.applyMatrix(Yo),this.attachEntityInfo(A),A}fillVisited(t,e,s,o,h){if(h==1&&o==1)t[e]=!0;else for(let c=0;c<o;++c)for(let f=0;f<h;++f)t[e+c+f*s]=!0}getTextStyle(t){const e=this.database.tables.textStyleTable;let s;return t.textStyle&&(s=e.getAt(t.textStyle)),s||(s=e.getAt("STANDARD")||e.getAt("Standard")),s.textStyle}getTableTextOffset(t,e,s){const o=new Z;switch(t){case 1:break;case 2:o.setX(e/2);break;case 3:o.setX(e);break;case 4:o.setY(-s/2);break;case 5:o.set(e/2,-s/2,0);break;case 6:o.set(e,-s/2,0);break;case 7:o.setY(-s);break;case 8:o.set(e/2,-s,0);break;case 9:o.set(e,-s,0);break}return o}};Qa.typeName="Table";let mi=Qa;const Yo=new gn;var lu=(i=>(i[i.LEFT=0]="LEFT",i[i.CENTER=1]="CENTER",i[i.RIGHT=2]="RIGHT",i[i.ALIGNED=3]="ALIGNED",i[i.MIDDLE=4]="MIDDLE",i[i.FIT=5]="FIT",i))(lu||{}),hu=(i=>(i[i.BASELINE=0]="BASELINE",i[i.BOTTOM=1]="BOTTOM",i[i.MIDDLE=2]="MIDDLE",i[i.TOP=3]="TOP",i))(hu||{});const Ja=class Ja extends Ve{constructor(){super(),this._textString="",this._height=0,this._thickness=1,this._position=new Y,this._rotation=0,this._oblique=0,this._horizontalMode=0,this._verticalModel=2,this._styleName="",this._widthFactor=1}get textString(){return this._textString}set textString(t){this._textString=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get height(){return this._height}set height(t){this._height=t}get position(){return this._position}set position(t){this._position.copy(t)}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}get horizontalMode(){return this._horizontalMode}set horizontalMode(t){this._horizontalMode=t}get verticalMode(){return this._verticalModel}set verticalMode(t){this._verticalModel=t}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get widthFactor(){return this._widthFactor}set widthFactor(t){this._widthFactor=t}get geometricExtents(){return new Rt}getTextStyle(){const t=this.database.tables.textStyleTable;let e=t.getAt(this.styleName);return e||(e=t.getAt("STANDARD")||t.getAt("Standard")),e.textStyle}draw(t,e){const s={text:this.textString,height:this.height,width:1/0,widthFactor:this.widthFactor,position:this.position,rotation:this.rotation,drawingDirection:Bi.BOTTOM_TO_TOP,attachmentPoint:Bn.BottomLeft},o={...this.getTextStyle(),color:this.rgbColor};return t.mtext(s,o,e)}};Ja.typeName="Text";let pi=Ja;const to=class to extends je{constructor(){super(),this._elevation=0,this._thickness=1,this._vertices=[new Y,new Y,new Y,new Y]}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return!0}get thickness(){return this._thickness}set thickness(t){this._thickness=t}getPointAt(t){return t<0?this._vertices[0]:t>3?this._vertices[3]:this._vertices[t]}setPointAt(t,e){if(t<0&&this._vertices[0].copy(e),t>3)return this._vertices[3].copy(e);this._vertices[t].copy(e)}get geometricExtents(){return new Rt().setFromPoints(this._vertices)}subGetGripPoints(){const t=new Array;for(let e=0;e<4;++e)t.push(this.getPointAt(e));return t}draw(t){const e=new Fs(this._vertices,!0),s=new Li;return s.add(e),t.area(s,{color:this.rgbColor,solidFill:!0,patternAngle:0,patternLines:[]})}};to.typeName="Trace";let fi=to;const eo=class eo extends je{constructor(){super(),this._elevation=0,this._geo=new Fs}get numberOfVertices(){return this._geo.numberOfVertices}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return this._geo.closed}set closed(t){this._geo.closed=t}addVertexAt(t,e,s=0,o=-1,h=-1){const c=o<0?void 0:o,f=h<0?void 0:h,x={x:e.x,y:e.y,bulge:s,startWidth:c,endWidth:f};this._geo.addVertexAt(t,x)}getPoint2dAt(t){return this._geo.getPointAt(t)}getPoint3dAt(t){const e=this.getPoint2dAt(t);return new Y(e.x,e.y,this._elevation)}get geometricExtents(){const t=this._geo.box;return new Rt({x:t.min.x,y:t.min.y,z:this._elevation},{x:t.max.x,y:t.max.y,z:this._elevation})}subGetGripPoints(){const t=new Array;for(let e=0;e<this.numberOfVertices;++e)t.push(this.getPoint3dAt(e));return t}draw(t){const e=[];return this._geo.getPoints(100).forEach(o=>e.push(new Y().set(o.x,o.y,this.elevation))),t.lines(e,this.lineStyle)}};eo.typeName="Polyline";let gi=eo;const ro=class ro extends Ve{constructor(){super(),this._geo=new Y}get position(){return this._geo}set position(t){this._geo.set(t.x,t.y,t.z||0)}get geometricExtents(){return new Rt().expandByPoint(this._geo)}transformBy(t){return this._geo.applyMatrix3d(t),this}draw(t){return t.point(this._geo,{displayMode:this.database.pdmode,displaySize:this.database.pdsize,color:this.rgbColor})}};ro.typeName="Point";let _i=ro;var uu=(i=>(i[i.Invalid=0]="Invalid",i[i.Rect=1]="Rect",i[i.Poly=2]="Poly",i))(uu||{}),cu=(i=>(i[i.Show=1]="Show",i[i.ShowUnAligned=2]="ShowUnAligned",i[i.Clip=4]="Clip",i[i.Transparent=8]="Transparent",i))(cu||{});const no=class no extends Ve{constructor(){super(),this._brightness=50,this._contrast=50,this._fade=0,this._width=0,this._height=0,this._position=new Y,this._scale=new $t(1,1),this._rotation=0,this._clipBoundaryType=1,this._clipBoundary=[],this._isClipped=!1,this._isShownClipped=!1,this._isImageShown=!0,this._isImageTransparent=!1,this._imageDefId=""}get brightness(){return this._brightness}set brightness(t){this._brightness=t}get contrast(){return this._contrast}set contrast(t){this._contrast=t}get fade(){return this._fade}set fade(t){this._fade=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get position(){return this._position}set position(t){this._position=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get scale(){return this._scale}set scale(t){this._scale.copy(t)}get clipBoundaryType(){return this._clipBoundaryType}set clipBoundaryType(t){this._clipBoundaryType=t}get clipBoundary(){return this._clipBoundary}set clipBoundary(t){this._clipBoundary=[],this._clipBoundary.push(...t)}get isClipped(){return this._isClipped}set isClipped(t){this._isClipped=t}get isShownClipped(){return this._isShownClipped}set isShownClipped(t){this._isShownClipped=t}get isImageShown(){return this._isImageShown}set isImageShown(t){this._isImageShown=t}get isImageTransparent(){return this._isImageTransparent}set isImageTransparent(t){this._isImageTransparent=t}get image(){return this._image}set image(t){this._image=t}get imageDefId(){return this._imageDefId}set imageDefId(t){this._imageDefId=t}get imageFileName(){if(this._imageDefId){const t=this.database.dictionaries.imageDefs.getIdAt(this._imageDefId);if(t)return t.sourceFileName}return""}get geometricExtents(){const t=new Rt;return t.min.copy(this._position),t.max.set(this._position.x+this._width,this._position.y+this._height,0),t}subGetGripPoints(){return this.boundaryPath()}draw(t){const e=this.boundaryPath();return this._image?t.image(this._image,{boundary:e,roation:this._rotation}):t.lines(e,this.lineStyle)}boundaryPath(){const t=[];if(this.isClipped&&this._clipBoundary.length>3){const e=this._width,s=this._height,o=new _e;o.setFromPoints(this._clipBoundary);const h=new Tt;h.setX(this._position.x-o.min.x*e),h.setY(this._position.y-o.min.y*s),this._clipBoundary.forEach(c=>{const f=c.x*e+h.x,x=c.y*s+h.y;t.push(new Y(f,x,this._position.z))})}else{if(t.push(this._position),t.push(this._position.clone().setX(this._position.x+this._width)),t.push(this._position.clone().set(this._position.x+this._width,this._position.y+this._height,this._position.z)),t.push(this._position.clone().setY(this._position.y+this._height)),this._rotation>0){Xo.copy(t[1]);for(let e=1;e<4;e++)Ys.copy(t[e]),Ys.rotateAround(Xo,this._rotation),t[e].setX(Ys.x),t[e].setY(Ys.y)}t.push(t[0])}return t}};no.typeName="RasterImage";let zs=no;const Xo=new Tt,Ys=new Tt,so=class so extends je{constructor(){super(),this._basePoint=new Y,this._unitDir=new Z}get basePoint(){return this._basePoint}set basePoint(t){this._basePoint.copy(t)}get unitDir(){return this._unitDir}set unitDir(t){this._unitDir.copy(t)}get closed(){return!1}get geometricExtents(){const t=new Rt;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}draw(t){const e=[];return e.push(this.basePoint),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e,this.lineStyle)}};so.typeName="Ray";let vi=so;const io=class io extends Ve{constructor(){super(),this._centerPoint=new Y,this._height=0,this._width=0,this._viewCenter=new Y,this._viewHeight=0,this._number=-1}get number(){return this._number}set number(t){this._number=t}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get viewCenter(){return this._viewCenter}set viewCenter(t){this._viewCenter=t}get viewHeight(){return this._viewHeight}set viewHeight(t){this._viewHeight=t}get geometricExtents(){return new Rt}draw(t){if(this._number>1&&this.ownerId!=this.database.tables.blockTable.modelSpace.objectId){const e=this.toGiViewport(),s=t.group(this.createViewportRect(e,t));return this.attachEntityInfo(s),s}}toGiViewport(){const t=new Di;return t.id=this.objectId,t.groupId=this.ownerId,t.number=this.number,t.centerPoint=this.centerPoint,t.width=this.width,t.height=this.height,t.viewHeight=this.viewHeight,t.viewCenter=this.viewCenter,t}createViewportRect(t,e){const s=[];return s.push(e.lines([new Y(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0),new Y(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0)],this.lineStyle)),s.push(e.lines([new Y(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0),new Y(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0)],this.lineStyle)),s.push(e.lines([new Y(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0),new Y(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0)],this.lineStyle)),s.push(e.lines([new Y(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0),new Y(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0)],this.lineStyle)),s}};io.typeName="Viewport";let yi=io;const ao=class ao extends zs{draw(t){const e=this.boundaryPath(),s=new Li;return s.add(new Fs(e)),t.area(s,{color:0,solidFill:!0,patternAngle:0,patternLines:[]})}};ao.typeName="Wipeout";let xi=ao;const oo=class oo extends je{constructor(){super(),this._basePoint=new Y,this._unitDir=new Z}get basePoint(){return this._basePoint}set basePoint(t){this._basePoint.copy(t)}get unitDir(){return this._unitDir}set unitDir(t){this._unitDir.copy(t)}get closed(){return!1}get geometricExtents(){const t=new Rt;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}draw(t){const e=[];return e.push(this._unitDir.clone().multiplyScalar(-1e6).add(this._basePoint)),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e,this.lineStyle)}};oo.typeName="Xline";let bi=oo;var du=(i=>(i[i.AtLeast=1]="AtLeast",i[i.Exactly=2]="Exactly",i))(du||{});const lo=class lo extends Ve{constructor(){super(),this._dimBlockId=null,this._dimensionStyleName=null,this._dimensionText=null,this._textLineSpacingFactor=1,this._textLineSpacingStyle=1,this._textPosition=new Y,this._textRotation=0}get dimBlockId(){return this._dimBlockId}set dimBlockId(t){this._dimBlockId=t}get dimensionStyleName(){return this._dimensionStyleName}set dimensionStyleName(t){this._dimensionStyleName=t}get dimensionStyle(){if(this._dimStyle==null){let t;this.dimensionStyleName&&(t=this.database.tables.dimStyleTable.getAt(this.dimensionStyleName)),t==null&&(t=new Dn),this._dimStyle=t}return this._dimStyle}get dimensionText(){return this._dimensionText}set dimensionText(t){this._dimensionText=t}get measurement(){return this._measurement}set measurement(t){this._measurement=t}get textLineSpacingFactor(){return this._textLineSpacingFactor}set textLineSpacingFactor(t){this._textLineSpacingFactor=t}get textLineSpacingStyle(){return this._textLineSpacingStyle}set textLineSpacingStyle(t){this._textLineSpacingStyle=t}get textPosition(){return this._textPosition}set textPosition(t){this._textPosition.copy(t)}get textRotation(){return this._textRotation}set textRotation(t){this._textRotation=t}draw(t){if(this.dimBlockId){const s=this.database.tables.blockTable.getAt(this.dimBlockId);if(s){const o=Gr.instance.draw(t,s,this.rgbColor,!1);return this.attachEntityInfo(o),o}}const e=t.group([]);return this.attachEntityInfo(e),e}drawFirstArrow(t){const e=this.database.tables.blockTable.getAt(this.firstArrowType);if(e)return Gr.instance.draw(t,e,this.rgbColor,!1)}drawSecondArrow(t){const e=this.database.tables.blockTable.getAt(this.secondArrowType);if(e)return Gr.instance.draw(t,e,this.rgbColor,!1)}get arrowScaleFactor(){return this.dimensionStyle.dimasz}get firstArrowStyle(){return{type:this.firstArrowType,scale:this.arrowScaleFactor,appended:this.isAppendArrow,visible:this.dimensionStyle.dimse1==0}}get secondArrowStyle(){return{type:this.secondArrowType,scale:this.arrowScaleFactor,appended:this.isAppendArrow,visible:this.dimensionStyle.dimse2==0}}get isAppendArrow(){return!0}get firstArrowTypeBtrId(){const t=this.dimensionStyle;return t.dimsah==0?t.dimblk:t.dimblk1}get firstArrowType(){const t=this.firstArrowTypeBtrId;return this.getArrowName(t)}get secondArrowTypeBtrId(){const t=this.dimensionStyle;return t.dimsah==0?t.dimblk:t.dimblk2}get secondArrowType(){const t=this.secondArrowTypeBtrId;return this.getArrowName(t)}get arrowLineCount(){return 1}getLineArrowStyle(t){}findPointOnLine1(t,e,s){const o=new Y().subVectors(e,t).normalize();return new Y(e).addScaledVector(o,s)}findPointOnLine2(t,e,s){const o=t.x+s*Math.cos(e),h=t.y+s*Math.sin(e);return{x:o,y:h}}adjustExtensionLine(t){const e=this.dimensionStyle;t.extend(e.dimexe),t.extend(-e.dimexo,!0)}getArrowName(t){const e=this.database.tables.blockTable.getIdAt(t);return e?e.name.toUpperCase():La.Closed}};lo.typeName="Dimension";let Tr=lo;const ho=class ho extends Tr{constructor(t,e,s,o,h=null,c=null){super(),this._centerPoint=new Y().copy(t),this._xLine1Point=new Y().copy(e),this._xLine2Point=new Y().copy(s),this._arcPoint=new Y().copy(o),this.dimensionText=h,this.dimensionStyleName=c}get arcPoint(){return this._arcPoint}set arcPoint(t){this._arcPoint.copy(t)}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint.copy(t)}get xLine1Point(){return this._xLine1Point}set xLine1Point(t){this._xLine1Point.copy(t)}get xLine2Point(){return this._xLine2Point}set xLine2Point(t){this._xLine2Point.copy(t)}get geometricExtents(){return new Rt}};ho.typeName="3PointAngularDimension";let wi=ho;const uo=class uo extends Tr{constructor(t,e,s,o=null,h=null){super(),this._dimLinePoint=new Y().copy(s),this._xLine1Point=new Y().copy(t),this._xLine2Point=new Y().copy(e),this._oblique=0,this._rotation=0,this.dimensionText=o,this.dimensionStyleName=h}get dimLinePoint(){return this._dimLinePoint}set dimLinePoint(t){this._dimLinePoint.copy(t)}get xLine1Point(){return this._xLine1Point}set xLine1Point(t){this._xLine1Point.copy(t)}get xLine2Point(){return this._xLine2Point}set xLine2Point(t){this._xLine2Point.copy(t)}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}get geometricExtents(){return new Rt}get isAppendArrow(){return!1}calculateLines(){const t=[],e=this.createExtensionLine(this._xLine1Point),s=this.createExtensionLine(this._xLine2Point),o=this.findIntersectionPoint(e,this._dimLinePoint),h=this.findIntersectionPoint(s,this._dimLinePoint),c=new qr(o,h);return t.push(c),e.endPoint=o,this.adjustExtensionLine(e),t.push(e),s.endPoint=h,this.adjustExtensionLine(s),t.push(s),t}createExtensionLine(t){const e=this.rotation+Math.PI/2,s=this.findPointOnLine2(t,e,100);return new qr(t,{...s,z:t.z})}findIntersectionPoint(t,e){const s=t.startPoint,o=t.endPoint,h=new Z().subVectors(o,s).normalize(),f=new Z().subVectors(e,s).dot(h),x=new Z().copy(h).multiplyScalar(f);return new Z().addVectors(s,x)}};uo.typeName="AlignedDimension";let Ai=uo;const co=class co extends Tr{constructor(t,e,s,o,h=null,c=null){super(),this._arcPoint=new Y().copy(o),this._xLine1Point=new Y().copy(e),this._xLine2Point=new Y().copy(s),this._centerPoint=new Y().copy(t),this.dimensionText=h,this.dimensionStyleName=c}get arcPoint(){return this._arcPoint}set arcPoint(t){this._arcPoint.copy(t)}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint.copy(t)}get xLine1Point(){return this._xLine1Point}set xLine1Point(t){this._xLine1Point.copy(t)}get xLine2Point(){return this._xLine2Point}set xLine2Point(t){this._xLine2Point.copy(t)}get geometricExtents(){return new Rt}};co.typeName="ArcDimension";let fa=co;const mo=class mo extends Tr{constructor(t,e,s=0,o=null,h=null){super(),this._chordPoint=new Y().copy(t),this._farChordPoint=new Y().copy(e),this._extArcStartAngle=0,this._extArcEndAngle=0,this._leaderLength=s,this.dimensionText=o,this.dimensionStyleName=h}get chordPoint(){return this._chordPoint}set chordPoint(t){this._chordPoint.copy(t)}get farChordPoint(){return this._farChordPoint}set farChordPoint(t){this._farChordPoint.copy(t)}get extArcStartAngle(){return this._extArcStartAngle}set extArcStartAngle(t){this._extArcStartAngle=t}get extArcEndAngle(){return this._extArcEndAngle}set extArcEndAngle(t){this._extArcEndAngle=t}get leaderLength(){return this._leaderLength}get geometricExtents(){return new Rt}drawLines(t,e){const s=[],o=e.length;return o==1?s.push(this.drawLine(t,e[0],{firstArrow:this.firstArrowStyle})):o==3?(this.sortLines(e),s.push(this.drawLine(t,e[0],{firstArrow:this.firstArrowStyle})),s.push(this.drawLine(t,e[1])),s.push(this.drawLine(t,e[2],{firstArrow:this.firstArrowStyle}))):e.forEach(h=>{s.push(this.drawLine(t,h))}),s}drawLine(t,e,s){if(s){const o=[e.startPoint,e.endPoint];return t.lines(o,{...this.lineStyle,arrows:s})}else return e.draw(t)}sortLines(t){const e=(s,o)=>s.x!==o.x?s.x-o.x:s.y!==o.y?s.y-o.y:s.z-o.z;t.sort((s,o)=>{const h=e(s.startPoint,o.startPoint);return h!==0?h:e(s.endPoint,o.endPoint)})}};mo.typeName="DiametricDimension";let Si=mo;const po=class po extends Tr{constructor(t,e,s=null,o=null){super(),this._definingPoint=new Y().copy(t),this._leaderEndPoint=new Y().copy(e),this.dimensionText=s,this.dimensionStyleName=o}get definingPoint(){return this._definingPoint}set definingPoint(t){this._definingPoint.copy(t)}get leaderEndPoint(){return this._leaderEndPoint}set leaderEndPoint(t){this._leaderEndPoint.copy(t)}get geometricExtents(){return new Rt}get arrowLineCount(){return 0}};po.typeName="OrdinateDimension";let Ii=po;const fo=class fo extends Tr{constructor(t,e,s,o=null,h=null){super(),this._center=new Y().copy(t),this._chordPoint=new Y().copy(e),this._leaderLength=s,this._extArcStartAngle=0,this._extArcEndAngle=0,this.dimensionText=o,this.dimensionStyleName=h}get center(){return this._center}set center(t){this._center.copy(t)}get chordPoint(){return this._chordPoint}set chordPoint(t){this._chordPoint.copy(t)}get extArcStartAngle(){return this._extArcStartAngle}set extArcStartAngle(t){this._extArcStartAngle=t}get extArcEndAngle(){return this._extArcEndAngle}set extArcEndAngle(t){this._extArcEndAngle=t}get leaderLength(){return this._leaderLength}set leaderLenght(t){this._leaderLength=t}get geometricExtents(){return new Rt}getLineArrowStyle(t){return{secondArrow:this.secondArrowStyle}}};fo.typeName="RadialDimension";let Pi=fo;class Ko{convert(t){const e=this.createEntity(t);return e&&this.processCommonAttrs(t,e),e}createEntity(t){return t.type=="3DFACE"?this.convertFace(t):t.type=="ARC"?this.convertArc(t):t.type=="CIRCLE"?this.convertCirle(t):t.type=="DIMENSION"?this.convertDimension(t):t.type=="ELLIPSE"?this.convertEllipse(t):t.type=="HATCH"?this.convertHatch(t):t.type=="IMAGE"?this.convertImage(t):t.type=="LEADER"?this.convertLeader(t):t.type=="LINE"?this.convertLine(t):t.type=="MTEXT"?this.convertMText(t):t.type=="POLYLINE"||t.type=="LWPOLYLINE"?this.convertPolyline(t):t.type=="POINT"?this.convertPoint(t):t.type=="RAY"?this.convertRay(t):t.type=="SPLINE"?this.convertSpline(t):t.type=="ACAD_TABLE"?this.convertTable(t):t.type=="TEXT"?this.convertText(t):t.type=="SOLID"?this.convertSolid(t):t.type=="VIEWPORT"?this.convertViewport(t):t.type=="WIPEOUT"?this.convertWipeout(t):t.type=="XLINE"?this.convertXline(t):t.type=="INSERT"?this.convertBlockReference(t):null}convertFace(t){const e=new li;return t.vertices.forEach((s,o)=>e.setVertexAt(o,s)),e}convertArc(t){return new ii(t.center,t.radius,Et.degToRad(t.startAngle),Et.degToRad(t.endAngle))}convertCirle(t){return new ai(t.center,t.radius)}convertEllipse(t){const e=new Z(t.majorAxisEndPoint),s=e.length();return new oi(t.center,t.extrusionDirection??Z.Z_AXIS,e,s,s*t.axisRatio,t.startAngle,t.endAngle)}convertLine(t){const e=t.startPoint,s=t.endPoint;return new ci(new Y(e.x,e.y,e.z||0),new Y(s.x,s.y,s.z||0))}convertSpline(t){try{if(t.numberOfControlPoints>0&&t.numberOfKnots>0)return new Os(t.controlPoints,t.knots,t.weights,t.degree,!!(t.flag&1));if(t.numberOfFitPoints>0){const e=this.numberArrayToPointArray(t.fitPoints,t.numberOfFitPoints);if(e!=null)return new Os(e,"Uniform",t.degree,!!(t.flag&1))}}catch(e){console.log(`Failed to convert spline with error: ${e}`)}return null}convertPoint(t){const e=new _i;return e.position=t.position,e}convertSolid(t){const e=new fi;return t.points.forEach((s,o)=>e.setPointAt(o,s)),e.thickness=t.thickness,e}convertPolyline(t){const e=new gi;return e.closed=!!(t.flag&1),t.vertices.forEach((s,o)=>{e.addVertexAt(o,new Tt(s.x,s.y),s.bulge,s.startWidth,s.endWidth)}),e}convertHatch(t){var o;const e=new hi;return(o=t.definitionLines)==null||o.forEach(h=>{e.definitionLines.push({angle:h.angle,origin:h.base,delta:h.offset,dashPattern:h.numberOfDashLengths>0?h.dashLengths:[]})}),e.hatchStyle=t.hatchStyle,e.patternName=t.patternName,e.patternType=t.patternType,e.patternAngle=t.patternAngle==null?0:t.patternAngle,e.patternScale=t.patternScale==null?0:t.patternScale,t.boundaryPaths.forEach(h=>{if(h.boundaryPathTypeFlag&2){const f=h,x=new Fs;x.closed=f.isClosed,f.vertices.forEach((g,A)=>{x.addVertexAt(A,{x:g.x,y:g.y,bulge:g.bulge})}),e.add(x)}else{const f=h,x=new eu;f.edges.forEach(g=>{if(g.type==1){const A=g;x.add(new Ri(A.start,A.end))}else if(g.type==2){const A=g;x.add(new Rn(A.center,A.radius,Et.degToRad(A.startAngle||0),Et.degToRad(A.endAngle||0),!A.isCCW))}else if(g.type==3){const A=g;new $t().subVectors(A.end,A.center);const E=Math.sqrt(Math.pow(A.end.x,2)+Math.pow(A.end.y,2)),T=E*A.lengthOfMinorAxis;let R=Et.degToRad(A.startAngle||0),O=Et.degToRad(A.endAngle||0);const U=Math.atan2(A.end.y,A.end.x);A.isCCW||(R=Math.PI*2-R,O=Math.PI*2-O),x.add(new Oi({...A.center,z:0},E,T,R,O,!A.isCCW,U))}else if(g.type==4){const A=g;if(A.numberOfControlPoints>0&&A.numberOfKnots>0){const b=A.controlPoints.map(R=>({x:R.x,y:R.y,z:0}));let E=!0;const T=A.controlPoints.map(R=>(R.weight==null&&(E=!1),R.weight||1));x.add(new Yr(b,A.knots,E?T:void 0))}else if(A.numberOfFitData>0){const b=A.fitDatum.map(E=>({x:E.x,y:E.y,z:0}));x.add(new Yr(b,"Uniform"))}}}),e.add(x)}}),e}convertTable(t){const e=new mi(t.name,t.rowCount,t.columnCount);return e.attachmentPoint=t.attachmentPoint,e.position.copy(t.startPoint),t.columnWidthArr.forEach((s,o)=>e.setColumnWidth(o,s)),t.rowHeightArr.forEach((s,o)=>e.setRowHeight(o,s)),t.cells.forEach((s,o)=>{e.setCell(o,s)}),e}convertText(t){const e=new pi;return e.textString=t.text,e.styleName=t.styleName,e.height=t.textHeight,e.position.copy(t.startPoint),e.rotation=Et.degToRad(t.rotation||0),e.oblique=t.obliqueAngle??0,e.thickness=t.thickness,e.horizontalMode=t.halign,e.verticalMode=t.valign,e.widthFactor=t.xScale??1,e}convertMText(t){const e=new di;return e.contents=t.text,t.styleName!=null&&(e.styleName=t.styleName),e.height=t.height,e.width=t.width,e.rotation=Et.degToRad(t.rotation||0),e.location=t.insertionPoint,e.attachmentPoint=t.attachmentPoint,t.direction&&(e.direction=new Z(t.direction)),e.drawingDirection=t.drawingDirection,e}convertLeader(t){const e=new ui;return t.vertices.forEach(s=>{e.appendVertex(s)}),e.hasArrowHead=t.isArrowheadEnabled,e.hasHookLine=t.isHooklineExists,e.isSplined=t.isSpline,e.dimensionStyle=t.styleName,e.annoType=t.leaderCreationFlag,e}convertDimension(t){if(t.subclassMarker=="AcDbAlignedDimension"||t.subclassMarker=="AcDbRotatedDimension"){const e=t,s=new Ai(e.subDefinitionPoint1,e.subDefinitionPoint2,e.definitionPoint);return s.rotation=Et.degToRad(e.rotationAngle||0),this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDb3PointAngularDimension"){const e=t,s=new wi(e.centerPoint,e.subDefinitionPoint1,e.subDefinitionPoint2,e.definitionPoint);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbOrdinateDimension"){const e=t,s=new Ii(e.subDefinitionPoint1,e.subDefinitionPoint2);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbRadialDimension"){const e=t,s=new Pi(e.definitionPoint,e.centerPoint,e.leaderLength);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbDiametricDimension"){const e=t,s=new Si(e.definitionPoint,e.centerPoint,e.leaderLength);return this.processDimensionCommonAttrs(t,s),s}return null}processImage(t,e){e.position.copy(t.position),e.brightness=t.brightness,e.contrast=t.contrast,e.fade=t.fade,e.isShownClipped=(t.flags|4)>0,e.isImageShown=(t.flags|3)>0,e.isImageTransparent=(t.flags|8)>0,e.imageDefId=t.imageDefHandle,e.isClipped=t.isClipped,t.clippingBoundaryPath.forEach(s=>{e.clipBoundary.push(new Tt(s))}),e.width=Math.sqrt(t.uPixel.x**2+t.uPixel.y**2+t.uPixel.z**2)*t.imageSize.x,e.height=Math.sqrt(t.vPixel.x**2+t.vPixel.y**2+t.vPixel.z**2)*t.imageSize.y,e.rotation=Math.atan2(t.uPixel.y,t.uPixel.x)}convertImage(t){const e=new zs;return this.processImage(t,e),e.clipBoundaryType=t.clippingBoundaryType,e}processWipeout(t,e){e.position.copy(t.position),e.brightness=t.brightness,e.contrast=t.contrast,e.fade=t.fade,e.isShownClipped=(t.displayFlag|4)>0,e.isImageShown=(t.displayFlag|3)>0,e.isImageTransparent=(t.displayFlag|8)>0,e.imageDefId=t.imageDefHardId,e.isClipped=t.isClipping,t.boundary.forEach(s=>{e.clipBoundary.push(new Tt(s))}),e.clipBoundaryType=t.boundaryType,e.width=Math.sqrt(t.uDirection.x**2+t.uDirection.y**2+t.uDirection.z**2)*t.imageSize.x,e.height=Math.sqrt(t.vDirection.x**2+t.vDirection.y**2+t.vDirection.z**2)*t.imageSize.y,e.rotation=Math.atan2(t.uDirection.y,t.uDirection.x)}convertWipeout(t){const e=new xi;return this.processWipeout(t,e),e}convertViewport(t){const e=new yi;return e.number=t.viewportId,e.centerPoint.copy(t.viewportCenter),e.height=t.height,e.width=t.width,e.viewCenter.copy(t.displayCenter),e.viewHeight=t.viewHeight,e}convertRay(t){const e=new vi;return e.basePoint.copy(t.position),e.unitDir.copy(t.direction),e}convertXline(t){const e=new bi;return e.basePoint.copy(t.position),e.unitDir.copy(t.direction),e}convertBlockReference(t){const e=new Ls(t.name);return t.insertionPoint&&e.position.copy(t.insertionPoint),e.scaleFactors.x=t.xScale||1,e.scaleFactors.y=t.yScale||1,e.scaleFactors.z=t.zScale||1,e.rotation=t.rotation!=null?Et.degToRad(t.rotation):0,e.normal.copy(t.extrusionDirection??{x:0,y:0,z:1}),e}processDimensionCommonAttrs(t,e){e.dimBlockId=t.name,e.textPosition.copy(t.textPoint),e.textRotation=t.textRotation||0,t.textLineSpacingFactor&&(e.textLineSpacingFactor=t.textLineSpacingFactor),t.textLineSpacingStyle&&(e.textLineSpacingStyle=t.textLineSpacingStyle),e.dimensionStyleName=t.styleName,e.dimensionText=t.text||"",e.measurement=t.measurement}processCommonAttrs(t,e){e.layer=t.layer||"0",t.handle&&(e.objectId=t.handle),e.ownerId=t.ownerBlockRecordSoftId||"",t.lineType!=null&&(e.lineType=t.lineType),t.lineweight!=null&&(e.lineWeight=t.lineweight),t.lineTypeScale!=null&&(e.linetypeScale=t.lineTypeScale),t.color!=null&&(e.color.color=t.color),t.colorIndex!=null&&(e.color.colorIndex=t.colorIndex),t.colorName!=null&&(e.color.colorName=t.colorName),t.isVisible!=null&&(e.visibility=t.isVisible),t.transparency!=null&&(e.transparency=t.transparency)}numberArrayToPointArray(t,e){const s=t.length;let o=0;if(s/2==e?o=2:s/3==e&&(o=3),o==0)return;const h=[];for(let c=0,f=s/o;c<f;++c)h.push({x:t[c*o],y:t[c*o+1],z:o==3?t[c*o+2]:0});return h}}class Fi extends Xr{constructor(){super(),this._tabOrder=-1,this._tabSelected=!1,this._blockTableRecordId="",this._layoutName="",this._limits=new _e,this._extents=new Rt}get layoutName(){return this._layoutName}set layoutName(t){this._layoutName=t.length>256?t.slice(0,256):t}get tabOrder(){return this._tabOrder}set tabOrder(t){this._tabOrder=t}get tabSelected(){return this._tabSelected}set tabSelected(t){this._tabSelected=t}get blockTableRecordId(){return this._blockTableRecordId}set blockTableRecordId(t){this._blockTableRecordId=t}get limits(){return this._limits}set limits(t){this._limits.copy(t)}get extents(){return this._extents}set extents(t){this._extents.copy(t)}}class Ba extends Xr{constructor(t){super(),this.database=t,this._recordsByName=new Map,this._recordsById=new Map}get numEntries(){return this._recordsByName.size}setAt(t,e){e.database=this.database,this._recordsByName.set(t,e),this._recordsById.set(e.objectId,e),this.database.events.dictObjetSet.dispatch({database:this.database,object:e,key:t})}remove(t){const e=this.getAt(t);return e?(this._recordsByName.delete(t.toUpperCase()),this._recordsById.delete(this.objectId),this.database.events.dictObjectErased.dispatch({database:this.database,object:e,key:t}),!0):!1}removeId(t){const e=this.getIdAt(t);return e?(this._recordsById.delete(this.objectId),this._recordsByName.forEach((s,o)=>{s===e&&(this._recordsByName.delete(o),this.database.events.dictObjectErased.dispatch({database:this.database,object:e,key:o}))}),!0):!1}removeAll(){this._recordsByName.forEach((t,e)=>{this.database.events.dictObjectErased.dispatch({database:this.database,object:t,key:e})}),this._recordsByName.clear(),this._recordsById.clear()}has(t){return this._recordsByName.has(t.toUpperCase())}hasId(t){return this._recordsById.has(t)}getAt(t){return this._recordsByName.get(t)}getIdAt(t){return this._recordsById.get(t)}newIterator(){return new Mi(this._recordsByName)}}class mu extends Ba{getBtrIdAt(t){for(const[e,s]of this._recordsByName)if(s.blockTableRecordId==t)return s}get maxTabOrder(){let t=-1;return this._recordsByName.forEach(e=>{e.tabOrder>t&&(t=e.tabOrder)}),t}}class pu extends Xr{constructor(){super(),this._sourceFileName=""}get sourceFileName(){return this._sourceFileName}set sourceFileName(t){this._sourceFileName=t}}class r0{convertLayout(t,e){var o;const s=new Fi;return s.layoutName=t.layoutName,s.tabOrder=t.tabOrder,(o=e.tables.BLOCK_RECORD)==null||o.entries.some(h=>h.layoutObjects===t.handle?(s.blockTableRecordId=h.handle,!0):!1),s.limits.min.copy(t.minLimit),s.limits.max.copy(t.maxLimit),s.extents.min.copy(t.minExtent),s.extents.max.copy(t.maxExtent),this.processCommonAttrs(t,s),s}convertImageDef(t){const e=new pu;return e.sourceFileName=t.fileName,this.processCommonAttrs(t,e),e}processCommonAttrs(t,e){e.objectId=t.handle,e.ownerId=t.ownerObjectId}}class fu{constructor(t){this.taskId=0,this.workers=new Map,this.pendingTasks=new Map,this.config={workerUrl:t.workerUrl,timeout:t.timeout??3e4,maxConcurrentWorkers:t.maxConcurrentWorkers??4}}async execute(t,e){const s=Date.now(),o=this.generateTaskId();try{return await this.executeInWorker(o,t,e||this.config.workerUrl)}catch(h){const c=Date.now()-s;return{success:!1,error:h instanceof Error?h.message:String(h),duration:c}}}async executeInWorker(t,e,s){const o=Date.now();return new Promise((h,c)=>{const f=this.getAvailableWorker(s),x=setTimeout(()=>{this.cleanupTask(t),this.releaseWorker(f),c(new Error(`Worker operation timed out after ${this.config.timeout}ms`))},this.config.timeout);this.pendingTasks.set(t,{resolve:b=>{clearTimeout(x),this.releaseWorker(f),h(b)},reject:b=>{clearTimeout(x),this.releaseWorker(f),c(b)},timeout:x});const g=b=>{const{id:E,success:T,data:R,error:O}=b.data;if(E!==t)return;this.cleanupTask(t);const U=Date.now()-o;h(T?{success:!0,data:R,duration:U}:{success:!1,error:O,duration:U})},A=b=>{this.cleanupTask(t),c(new Error(`Worker error: ${b.message}`))};f.addEventListener("message",g),f.addEventListener("error",A),f.postMessage({id:t,input:e})})}cleanupTask(t){const e=this.pendingTasks.get(t);e&&(clearTimeout(e.timeout),this.pendingTasks.delete(t))}generateTaskId(){return`task_${++this.taskId}_${Date.now()}`}detectWorkerSupport(){return typeof Worker<"u"}getAvailableWorker(t){for(const[s,o]of this.workers)if(!o.isBusy)return o.isBusy=!0,o.worker;if(this.workers.size<this.config.maxConcurrentWorkers){const s=new Worker(t,{type:"module"}),o=this.generateWorkerId(),h={worker:s,isBusy:!0,id:o,createdAt:new Date};return this.workers.set(o,h),s}const e=Array.from(this.workers.values()).sort((s,o)=>s.createdAt.getTime()-o.createdAt.getTime())[0];return e.isBusy=!0,e.worker}releaseWorker(t){for(const[e,s]of this.workers)if(s.worker===t){s.isBusy=!1;break}}generateWorkerId(){return`worker_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}getStats(){return{totalWorkers:this.workers.size,busyWorkers:Array.from(this.workers.values()).filter(t=>t.isBusy).length,pendingTasks:this.pendingTasks.size,config:this.config}}destroy(){for(const[t,e]of this.pendingTasks)clearTimeout(e.timeout),e.reject(new Error("Framework destroyed"));this.pendingTasks.clear();for(const[t,e]of this.workers)e.worker.terminate();this.workers.clear()}}class gu{constructor(t){this.framework=new fu(t)}async execute(t,e){return this.framework.execute(t,e)}getStats(){return this.framework.getStats()}destroy(){this.framework.destroy()}}function _u(i){return new gu(i)}class n0{constructor(){this.setupMessageHandler()}setupMessageHandler(){self.onmessage=async t=>{const{id:e,input:s}=t.data;try{const o=await this.executeTask(s);this.sendResponse(e,!0,o)}catch(o){this.sendResponse(e,!1,void 0,o instanceof Error?o.message:String(o))}}}sendResponse(t,e,s,o){const h={id:t,success:e,data:s,error:o};self.postMessage(h)}}class vu extends ml{constructor(t={}){super(t),t.parserWorkerUrl||(t.parserWorkerUrl="/assets/dxf-parser-worker.js")}async parse(t){if(this.config.useWorker&&this.config.parserWorkerUrl){const e=_u({workerUrl:this.config.parserWorkerUrl,maxConcurrentWorkers:1}),s=await e.execute(t);return e.destroy(),{model:s.data,data:{unknownEntityCount:0}}}else return{model:new Wd().parse(t),data:{unknownEntityCount:0}}}getFonts(t){var h;const e=new Map,s=c=>{if(c){const f=c.lastIndexOf(".");return f>=0?c.substring(0,f).toLowerCase():c.toLowerCase()}};(h=t.tables.STYLE)==null||h.entries.forEach(c=>{const f=[];let x=s(c.font);x&&f.push(x),x=s(c.bigFont),x&&f.push(x),e.set(c.name,f)});const o=new Set;return this.getFontsInBlock(t.entities,t.blocks,e,o),Array.from(o)}getFontsInBlock(t,e,s,o){const h=/\\f(.*?)\|/g;t.forEach(c=>{if(c.type=="MTEXT"){const f=c;[...f.text.matchAll(h)].forEach(A=>{o.add(A[1].toLowerCase())});const g=s.get(f.styleName);g==null||g.forEach(A=>o.add(A))}else if(c.type=="TEXT"){const f=c,x=s.get(f.styleName);x==null||x.forEach(g=>o.add(g))}else if(c.type=="INSERT"){const x=e[c.name];x&&x.entities&&this.getFontsInBlock(x.entities,e,s,o)}})}async processEntities(t,e,s,o,h){const c=new Ko;let f=t.entities;const x=f.length,g=new ll(x,100-o.value,s);this.config.convertByEntityType&&(f=this.groupAndFlattenByType(f));const A=e.tables.blockTable.modelSpace;await g.processChunk(async(b,E)=>{let T=[],R=b<E?f[b].type:"";for(let O=b;O<E;O++){const U=f[O],D=c.convert(U);D&&(this.config.convertByEntityType&&U.type!==R&&(A.appendEntity(T),T=[],R=U.type),T.push(D))}if(A.appendEntity(T),h){let O=o.value+E/x*(100-o.value);O>100&&(O=100),await h(O,"ENTITY","IN-PROGRESS")}})}async processEntitiesInBlock(t,e){const s=new Ko,o=t.length,h=[];for(let c=0;c<o;c++){const f=t[c],x=s.convert(f);x&&h.push(x)}e.appendEntity(h)}processBlocks(t,e){const s=t.blocks;for(const[o,h]of Object.entries(s)){let c=e.tables.blockTable.getAt(h.name);c||(c=new Fe,c.objectId=h.handle,c.name=o,c.origin.copy(h.position),e.tables.blockTable.add(c)),h.entities&&this.processEntitiesInBlock(h.entities,c)}}processHeader(t,e){const s=t.header;s.$ACADVER&&(e.version=s.$ACADVER),s.$DWGCODEPAGE&&(e.codepage=Rs[s.$DWGCODEPAGE]),e.cecolor.colorIndex=s.$CECOLOR||256,e.angBase=s.$ANGBASE||0,e.angDir=s.$ANGDIR||0,s.$AUNITS!=null&&(e.aunits=s.$AUNITS),s.$EXTMAX&&(e.extmax=s.$EXTMAX),s.$EXTMIN&&(e.extmin=s.$EXTMIN),s.$INSUNITS!=null&&(e.insunits=s.$INSUNITS),e.pdmode=s.$PDMODE||0,e.pdsize=s.$PDSIZE||0}processBlockTables(t,e){var o;const s=(o=t.tables.BLOCK_RECORD)==null?void 0:o.entries;s&&s.length>0&&(e.tables.blockTable.removeAll(),s.forEach(h=>{const c=new Fe;c.objectId=h.handle,c.name=h.name,c.layoutId=h.layoutObjects,e.tables.blockTable.add(c)}))}processObjects(t,e){const s=t.objects.byName,o=new r0;if("LAYOUT"in s){const h=e.dictionaries.layouts;s.LAYOUT.forEach(c=>{const f=o.convertLayout(c,t);h.setAt(f.layoutName,f)})}if("IMAGEDEF"in s){const h=e.dictionaries.imageDefs;s.IMAGEDEF.forEach(c=>{const f=o.convertImageDef(c);h.setAt(f.objectId,f)})}}processViewports(t,e){var o,h;const s=(h=(o=t.tables)==null?void 0:o.VPORT)==null?void 0:h.entries;s&&s.length>0&&s.forEach(c=>{const f=new Mu;this.processCommonTableEntryAttrs(c,f),c.circleSides&&(f.circleSides=c.circleSides),f.standardFlag=c.standardFlag,f.center.copy(c.center),f.lowerLeftCorner.copy(c.lowerLeftCorner),f.upperRightCorner.copy(c.upperRightCorner),c.snapBasePoint&&f.snapBase.copy(c.snapBasePoint),c.snapRotationAngle&&(f.snapAngle=c.snapRotationAngle),c.snapSpacing&&f.snapIncrements.copy(c.snapSpacing),c.majorGridLines&&(f.gridMajor=c.majorGridLines),c.gridSpacing&&f.gridIncrements.copy(c.gridSpacing),c.backgroundObjectId&&(f.backgroundObjectId=c.backgroundObjectId),f.gsView.center.copy(c.center),f.gsView.viewDirectionFromTarget.copy(c.viewDirectionFromTarget),f.gsView.viewTarget.copy(c.viewTarget),c.lensLength&&(f.gsView.lensLength=c.lensLength),c.frontClippingPlane&&(f.gsView.frontClippingPlane=c.frontClippingPlane),c.backClippingPlane&&(f.gsView.backClippingPlane=c.backClippingPlane),c.viewHeight&&(f.gsView.viewHeight=c.viewHeight),c.viewTwistAngle&&(f.gsView.viewTwistAngle=c.viewTwistAngle),c.frozenLayers&&(f.gsView.frozenLayers=c.frozenLayers),c.styleSheet&&(f.gsView.styleSheet=c.styleSheet),c.renderMode&&(f.gsView.renderMode=c.renderMode),c.viewMode&&(f.gsView.viewMode=c.viewMode),c.ucsIconSetting&&(f.gsView.ucsIconSetting=c.ucsIconSetting),c.ucsOrigin&&f.gsView.ucsOrigin.copy(c.ucsOrigin),c.ucsXAxis&&f.gsView.ucsXAxis.copy(c.ucsXAxis),c.ucsYAxis&&f.gsView.ucsYAxis.copy(c.ucsYAxis),c.orthographicType&&(f.gsView.orthographicType=c.orthographicType),c.shadePlotSetting&&(f.gsView.shadePlotSetting=c.shadePlotSetting),c.shadePlotObjectId&&(f.gsView.shadePlotObjectId=c.shadePlotObjectId),c.visualStyleObjectId&&(f.gsView.visualStyleObjectId=c.visualStyleObjectId),c.isDefaultLightingOn&&(f.gsView.isDefaultLightingOn=c.isDefaultLightingOn),c.defaultLightingType&&(f.gsView.defaultLightingType=c.defaultLightingType),c.brightness&&(f.gsView.brightness=c.brightness),c.contrast&&(f.gsView.contrast=c.contrast),c.ambientColor&&(f.gsView.ambientColor=c.ambientColor),e.tables.viewportTable.add(f)})}processLayers(t,e){var o,h;const s=(h=(o=t.tables)==null?void 0:o.LAYER)==null?void 0:h.entries;s&&s.length>0&&s.forEach(c=>{const f=new Wr;f.colorIndex=c.colorIndex;const x=new Ui({name:c.name,standardFlags:c.standardFlag,linetype:c.lineType,lineWeight:c.lineweight,isOff:c.colorIndex<0,color:f,isPlottable:c.isPlotting});this.processCommonTableEntryAttrs(c,x),e.tables.layerTable.add(x)})}processLineTypes(t,e){var o,h;const s=(h=(o=t.tables)==null?void 0:o.LTYPE)==null?void 0:h.entries;s&&s.length>0&&s.forEach(c=>{const f=new Cs(c);this.processCommonTableEntryAttrs(c,f),f.name=c.name,e.tables.linetypeTable.add(f)})}processTextStyles(t,e){var o;const s=(o=t.tables.STYLE)==null?void 0:o.entries;s&&s.length>0&&s.forEach(h=>{const c=new Da(h);this.processCommonTableEntryAttrs(h,c),e.tables.textStyleTable.add(c)})}processDimStyles(t,e){var o;const s=(o=t.tables.DIMSTYLE)==null?void 0:o.entries;s&&s.length>0&&s.forEach(h=>{const c={name:h.name,ownerId:h.ownerObjectId,dimpost:h.DIMPOST||"",dimapost:h.DIMAPOST||"",dimscale:h.DIMSCALE,dimasz:h.DIMASZ,dimexo:h.DIMEXO,dimdli:h.DIMDLI,dimexe:h.DIMEXE,dimrnd:h.DIMRND,dimdle:h.DIMDLE,dimtp:h.DIMTP,dimtm:h.DIMTM,dimtxt:h.DIMTXT,dimcen:h.DIMCEN,dimtsz:h.DIMTSZ,dimaltf:h.DIMALTF,dimlfac:h.DIMLFAC,dimtvp:h.DIMTVP,dimtfac:h.DIMTFAC,dimgap:h.DIMGAP,dimaltrnd:h.DIMALTRND,dimtol:h.DIMTOL==null||h.DIMTOL==0?0:1,dimlim:h.DIMLIM==null||h.DIMLIM==0?0:1,dimtih:h.DIMTIH==null||h.DIMTIH==0?0:1,dimtoh:h.DIMTOH==null||h.DIMTOH==0?0:1,dimse1:h.DIMSE1==null||h.DIMSE1==0?0:1,dimse2:h.DIMSE2==null||h.DIMSE2==0?0:1,dimtad:h.DIMTAD,dimzin:h.DIMZIN,dimazin:h.DIMAZIN,dimalt:h.DIMALT,dimaltd:h.DIMALTD,dimtofl:h.DIMTOFL,dimsah:h.DIMSAH,dimtix:h.DIMTIX,dimsoxd:h.DIMSOXD,dimclrd:h.DIMCLRD,dimclre:h.DIMCLRE,dimclrt:h.DIMCLRT,dimadec:h.DIMADEC||0,dimunit:h.DIMUNIT||2,dimdec:h.DIMDEC,dimtdec:h.DIMTDEC,dimaltu:h.DIMALTU,dimalttd:h.DIMALTTD,dimaunit:h.DIMAUNIT,dimfrac:h.DIMFRAC,dimlunit:h.DIMLUNIT,dimdsep:h.DIMDSEP,dimtmove:h.DIMTMOVE||0,dimjust:h.DIMJUST,dimsd1:h.DIMSD1,dimsd2:h.DIMSD2,dimtolj:h.DIMTOLJ,dimtzin:h.DIMTZIN,dimaltz:h.DIMALTZ,dimalttz:h.DIMALTTZ,dimfit:h.DIMFIT||0,dimupt:h.DIMUPT,dimatfit:h.DIMATFIT,dimtxsty:h.DIMTXSTY||"Standard",dimldrblk:h.DIMLDRBLK||"",dimblk:h.DIMBLK||"",dimblk1:h.DIMBLK1||"",dimblk2:h.DIMBLK2||"",dimlwd:h.DIMLWD,dimlwe:h.DIMLWE},f=new Dn(c);this.processCommonTableEntryAttrs(h,f),e.tables.dimStyleTable.add(f)})}processCommonTableEntryAttrs(t,e){e.name=t.name,e.objectId=t.handle,e.ownerId=t.ownerObjectId}groupAndFlattenByType(t){const e={},s=[];for(const o of t)e[o.type]||(e[o.type]=[],s.push(o.type)),e[o.type].push(o);return s.flatMap(o=>e[o])}}var Ns=(i=>(i.DXF="dxf",i.DWG="dwg",i))(Ns||{});class lr{constructor(){this.events={registered:new ie,unregistered:new ie},this._converters=new Map,this.register("dxf",new vu)}static createInstance(){return lr._instance==null&&(lr._instance=new lr),this._instance}static get instance(){return lr._instance||(lr._instance=new lr),lr._instance}get fileTypes(){return this._converters.keys()}register(t,e){this._converters.set(t,e),this.events.registered.dispatch({fileType:t,converter:e})}get(t){return this._converters.get(t)}unregister(t){const e=this._converters.get(t);e&&(this._converters.delete(t),this.events.unregistered.dispatch({fileType:t,converter:e}))}}class _n extends Xr{constructor(t,e){t=t||{},Fn(t,{name:""}),super(t,e)}get name(){return this.getAttr("name")}set name(t){this.setAttr("name",t)}}const jr=class jr extends _n{static isModelSapceName(t){return t.toLowerCase()==jr.MODEL_SPACE_NAME.toLowerCase()}static isPaperSapceName(t){return t.toLowerCase().startsWith(jr.PAPER_SPACE_NAME_PREFIX.toLowerCase())}constructor(){super(),this._origin=new Y,this._layoutId="",this._entities=new Map}get isModelSapce(){return jr.isModelSapceName(this.name)}get isPaperSapce(){return jr.isPaperSapceName(this.name)}get origin(){return this._origin}set origin(t){this._origin.copy(t)}get layoutId(){return this._layoutId}set layoutId(t){this._layoutId=t}appendEntity(t){if(Array.isArray(t))for(let e=0;e<t.length;++e){const s=t[e];s.database=this.database,s.ownerId=this.objectId,this._entities.set(s.objectId,s)}else t.database=this.database,t.ownerId=this.objectId,this._entities.set(t.objectId,t);(this.isModelSapce||this.isPaperSapce)&&this.database.events.entityAppended.dispatch({database:this.database,entity:t})}newIterator(){return new Mi(this._entities)}getIdAt(t){return this._entities.get(t)}};jr.MODEL_SPACE_NAME="*MODEL_SPACE",jr.PAPER_SPACE_NAME_PREFIX="*PAPER_SPACE";let Fe=jr;class vn extends Xr{constructor(t){super(),this.database=t,this._recordsByName=new Map,this._recordsById=new Map}get numEntries(){return this._recordsByName.size}add(t){t.database=this.database;const e=this.normalizeName(t.name);this._recordsByName.set(e,t),this._recordsById.set(t.objectId,t)}remove(t){const e=this.normalizeName(t),s=this._recordsByName.get(e);return s?(this._recordsById.delete(s.objectId),this._recordsByName.delete(t),!0):!1}removeId(t){const e=this._recordsById.get(t);return e?(this._recordsByName.delete(e.name),this._recordsById.delete(t),!0):!1}removeAll(){this._recordsByName.clear(),this._recordsById.clear()}has(t){const e=this.normalizeName(t);return this._recordsByName.has(e)}hasId(t){return this._recordsById.has(t)}getAt(t){const e=this.normalizeName(t);return this._recordsByName.get(e)}getIdAt(t){return this._recordsById.get(t)}getOwnerIdAt(t){return this._recordsById.get(t)}newIterator(){return new Mi(this._recordsByName)}normalizeName(t){return t}}class yu extends vn{constructor(t){super(t)}get modelSpace(){let t=this.getAt(Fe.MODEL_SPACE_NAME);return t||(t=new Fe,t.name=Fe.MODEL_SPACE_NAME,this.add(t)),t}normalizeName(t){let e=t;if(Fe.isModelSapceName(t))e=Fe.MODEL_SPACE_NAME;else if(Fe.isPaperSapceName(t)){const s=Fe.PAPER_SPACE_NAME_PREFIX,o=t.substring(s.length);e=s+o}return e}}class xu extends vn{constructor(t){super(t)}}class Ui extends _n{constructor(t,e){t=t||{},Fn(t,{color:new Wr,description:"",standardFlags:0,isHidden:!1,isInUse:!0,isOff:!1,isPlottable:!0,transparency:0,linetype:"",lineWeight:1,materialId:-1}),super(t,e),this.attrs.events.attrChanged.addEventListener(s=>{this.database.events.layerModified.dispatch({database:this.database,layer:this,changes:s.object.changedAttributes()})})}get color(){return this.getAttr("color")}set color(t){this.setAttr("color",t.clone())}get description(){return this.getAttr("description")}set description(t){this.setAttr("description",t)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get isFrozen(){return(this.standardFlags&1)==1}set isFrozen(t){const e=t?1:0;this.standardFlags=this.standardFlags|e}get isHidden(){return this.getAttr("isHidden")}set isHidden(t){this.setAttr("isHidden",t)}get isInUse(){return this.getAttr("isInUse")}set isInUse(t){this.setAttr("isInUse",t)}get isLocked(){return(this.standardFlags&4)==4}set isLocked(t){const e=t?4:0;this.standardFlags=this.standardFlags|e}get isOff(){return this.getAttr("isOff")}set isOff(t){this.setAttr("isOff",t)}get isPlottable(){return this.getAttr("isPlottable")}set isPlottable(t){this.setAttr("isPlottable",t)}get transparency(){return this.getAttr("transparency")}set transparency(t){this.setAttr("transparency",t)}get linetype(){return this.getAttr("linetype")}set linetype(t){this.setAttr("linetype",t)}get lineWeight(){return this.getAttr("lineWeight")}set lineWeight(t){this.setAttr("lineWeight",t)}get materialId(){return this.getAttr("materialId")}set materialId(t){this.setAttr("materialId",t)}}class bu extends vn{constructor(t){super(t);const e=new Wr;e.color=16777215;const s=new Ui({name:"0",standardFlags:0,linetype:ei,lineWeight:1,isOff:!1,color:e,isPlottable:!0});this.add(s)}add(t){super.add(t),this.database.events.layerAppended.dispatch({database:this.database,layer:t})}}class wu extends vn{constructor(t){super(t)}}class Au extends vn{constructor(t){super(t)}get fonts(){const t=new Set,e=o=>{if(o){const h=o.lastIndexOf(".");if(h>=0){const c=o.substring(0,h).toLowerCase();t.add(c)}else t.add(o.toLowerCase())}},s=this.newIterator();for(const o of s)e(o.fileName),e(o.bigFontFileName);return Array.from(t)}}class Su extends vn{constructor(t){super(t)}}class Cs extends _n{constructor(t){super(),this.name=t.name,this._linetype=t}get numDashes(){return this._linetype.pattern?this._linetype.pattern.length:0}get patternLength(){return this._linetype.totalPatternLength}get comments(){return this._linetype.description}get linetype(){return this._linetype}dashLengthAt(t){if(t<0||t>=this.numDashes)throw new Error('Index must be greater than or equal to zero, but less than the value of property "numDashes".');return this._linetype.pattern[t].elementLength}}class Da extends _n{constructor(t){super(),this.name=t.name,this._textStyle=t,this._textStyle.font=this.getFileNameWithoutExtension(this._textStyle.font||this._textStyle.extendedFont||this.name),this._isVertical=!1}get obliquingAngle(){return this._textStyle.obliqueAngle}set obliquingAngle(t){this._textStyle.obliqueAngle=t}get priorSize(){return this._textStyle.lastHeight}set priorSize(t){this._textStyle.lastHeight=t}get textSize(){return this._textStyle.fixedTextHeight}set textSize(t){this._textStyle.fixedTextHeight=t}get xScale(){return this._textStyle.widthFactor}set xScale(t){this._textStyle.widthFactor=t}get isVertical(){return this._isVertical}set isVertical(t){this._isVertical=t}get fileName(){return this._textStyle.font}set fileName(t){this._textStyle.font=t}get bigFontFileName(){return this._textStyle.bigFont}set bigFontFileName(t){this._textStyle.bigFont=t}get textStyle(){return this._textStyle}getFileNameWithoutExtension(t){const e=t.split("/").pop();if(e){const s=e.lastIndexOf(".");return s===-1?e:e.substring(0,s)}return t}}var Iu=(i=>(i[i.Center=0]="Center",i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.OverFirst=3]="OverFirst",i[i.OverSecond=4]="OverSecond",i))(Iu||{}),Pu=(i=>(i[i.Center=0]="Center",i[i.Above=1]="Above",i[i.Outside=2]="Outside",i[i.JIS=3]="JIS",i[i.Below=4]="Below",i))(Pu||{}),Eu=(i=>(i[i.Feet=0]="Feet",i[i.None=1]="None",i[i.Inch=2]="Inch",i[i.FeetAndInch=3]="FeetAndInch",i[i.Leading=4]="Leading",i[i.Trailing=8]="Trailing",i[i.LeadingAndTrailing=12]="LeadingAndTrailing",i))(Eu||{}),ku=(i=>(i[i.None=0]="None",i[i.Leading=1]="Leading",i[i.Trailing=2]="Trailing",i[i.LeadingAndTrailing=3]="LeadingAndTrailing",i))(ku||{}),Tu=(i=>(i[i.Bottom=0]="Bottom",i[i.Middle=1]="Middle",i[i.Top=2]="Top",i))(Tu||{});const ki=class ki extends _n{constructor(t,e){t=t||{},Fn(t,ki.DEFAULT_DIM_VALUES),super(t,e)}get dimpost(){return this.getAttr("dimpost")}set dimpost(t){this.setAttr("dimpost",t)}get dimapost(){return this.getAttr("dimapost")}set dimapost(t){this.setAttr("dimapost",t)}get dimscale(){return this.getAttr("dimscale")}set dimscale(t){this.setAttr("dimscale",t)}get dimasz(){return this.getAttr("dimasz")}set dimasz(t){this.setAttr("dimasz",t)}get dimexo(){return this.getAttr("dimexo")}set dimexo(t){this.setAttr("dimexo",t)}get dimdli(){return this.getAttr("dimdli")}set dimdli(t){this.setAttr("dimdli",t)}get dimexe(){return this.getAttr("dimexe")}set dimexe(t){this.setAttr("dimexe",t)}get dimrnd(){return this.getAttr("dimrnd")}set dimrnd(t){this.setAttr("dimrnd",t)}get dimdle(){return this.getAttr("dimdle")}set dimdle(t){this.setAttr("dimdle",t)}get dimtp(){return this.getAttr("dimtp")}set dimtp(t){this.setAttr("dimtp",t)}get dimtm(){return this.getAttr("dimtm")}set dimtm(t){this.setAttr("dimtm",t)}get dimtxt(){return this.getAttr("dimtxt")}set dimtxt(t){this.setAttr("dimtxt",t)}get dimcen(){return this.getAttr("dimcen")}set dimcen(t){this.setAttr("dimcen",t)}get dimtsz(){return this.getAttr("dimtsz")}set dimtsz(t){this.setAttr("dimtsz",t)}get dimaltf(){return this.getAttr("dimaltf")}set dimaltf(t){this.setAttr("dimaltf",t)}get dimlfac(){return this.getAttr("dimlfac")}set dimlfac(t){this.setAttr("dimlfac",t)}get dimtvp(){return this.getAttr("dimtvp")}set dimtvp(t){this.setAttr("dimtvp",t)}get dimtfac(){return this.getAttr("dimtfac")}set dimtfac(t){this.setAttr("dimtfac",t)}get dimgap(){return this.getAttr("dimgap")}set dimgap(t){this.setAttr("dimgap",t)}get dimaltrnd(){return this.getAttr("dimaltrnd")}set dimaltrnd(t){this.setAttr("dimaltrnd",t)}get dimtol(){return this.getAttr("dimtol")}set dimtol(t){this.setAttr("dimtol",t)}get dimlim(){return this.getAttr("dimlim")}set dimlim(t){this.setAttr("dimlim",t)}get dimtih(){return this.getAttr("dimtih")}set dimtih(t){this.setAttr("dimtih",t)}get dimtoh(){return this.getAttr("dimtoh")}set dimtoh(t){this.setAttr("dimtoh",t)}get dimse1(){return this.getAttr("dimse1")}set dimse1(t){this.setAttr("dimse1",t)}get dimse2(){return this.getAttr("dimse2")}set dimse2(t){this.setAttr("dimse2",t)}get dimtad(){return this.getAttr("dimtad")}set dimtad(t){this.setAttr("dimtad",t)}get dimzin(){return this.getAttr("dimzin")}set dimzin(t){this.setAttr("dimzin",t)}get dimazin(){return this.getAttr("dimazin")}set dimazin(t){this.setAttr("dimazin",t)}get dimalt(){return this.getAttr("dimalt")}set dimalt(t){this.setAttr("dimalt",t)}get dimaltd(){return this.getAttr("dimaltd")}set dimaltd(t){this.setAttr("dimaltd",t)}get dimtofl(){return this.getAttr("dimtofl")}set dimtofl(t){this.setAttr("dimtofl",t)}get dimsah(){return this.getAttr("dimsah")}set dimsah(t){this.setAttr("dimsah",t)}get dimtix(){return this.getAttr("dimtix")}set dimtix(t){this.setAttr("dimtix",t)}get dimsoxd(){return this.getAttr("dimsoxd")}set dimsoxd(t){this.setAttr("dimsoxd",t)}get dimclrd(){return this.getAttr("dimclrd")}set dimclrd(t){this.setAttr("dimclrd",t)}get dimclre(){return this.getAttr("dimclre")}set dimclre(t){this.setAttr("dimclre",t)}get dimclrt(){return this.getAttr("dimclrt")}set dimclrt(t){this.setAttr("dimclrt",t)}get dimadec(){return this.getAttr("dimadec")}set dimadec(t){this.setAttr("dimadec",t)}get dimunit(){return this.getAttr("dimunit")}set dimunit(t){this.setAttr("dimunit",t)}get dimdec(){return this.getAttr("dimdec")}set dimdec(t){this.setAttr("dimdec",t)}get dimtdec(){return this.getAttr("dimtdec")}set dimtdec(t){this.setAttr("dimtdec",t)}get dimaltu(){return this.getAttr("dimaltu")}set dimaltu(t){this.setAttr("dimaltu",t)}get dimalttd(){return this.getAttr("dimalttd")}set dimalttd(t){this.setAttr("dimalttd",t)}get dimaunit(){return this.getAttr("dimaunit")}set dimaunit(t){this.setAttr("dimaunit",t)}get dimfrac(){return this.getAttr("dimfrac")}set dimfrac(t){this.setAttr("dimfrac",t)}get dimlunit(){return this.getAttr("dimlunit")}set dimlunit(t){this.setAttr("dimlunit",t)}get dimdsep(){return this.getAttr("dimdsep")}set dimdsep(t){this.setAttr("dimdsep",t)}get dimtmove(){return this.getAttr("dimtmove")}set dimtmove(t){this.setAttr("dimtmove",t)}get dimjust(){return this.getAttr("dimjust")}set dimjust(t){this.setAttr("dimjust",t)}get dimsd1(){return this.getAttr("dimsd1")}set dimsd1(t){this.setAttr("dimsd1",t)}get dimsd2(){return this.getAttr("dimsd2")}set dimsd2(t){this.setAttr("dimsd2",t)}get dimtolj(){return this.getAttr("dimtolj")}set dimtolj(t){this.setAttr("dimtolj",t)}get dimtzin(){return this.getAttr("dimtzin")}set dimtzin(t){this.setAttr("dimtzin",t)}get dimaltz(){return this.getAttr("dimaltz")}set dimaltz(t){this.setAttr("dimaltz",t)}get dimalttz(){return this.getAttr("dimalttz")}set dimalttz(t){this.setAttr("dimalttz",t)}get dimfit(){return this.getAttr("dimfit")}set dimfit(t){this.setAttr("dimfit",t)}get dimupt(){return this.getAttr("dimupt")}set dimupt(t){this.setAttr("dimupt",t)}get dimatfit(){return this.getAttr("dimatfit")}set dimatfit(t){this.setAttr("dimatfit",t)}get dimtxsty(){return this.getAttr("dimtxsty")}set dimtxsty(t){this.setAttr("dimtxsty",t)}get dimldrblk(){return this.getAttr("dimldrblk")}set dimldrblk(t){this.setAttr("dimldrblk",t)}get dimblk(){return this.getAttr("dimblk")}set dimblk(t){this.setAttr("dimblk",t)}get dimblk1(){return this.getAttr("dimblk1")}set dimblk1(t){this.setAttr("dimblk1",t)}get dimblk2(){return this.getAttr("dimblk2")}set dimblk2(t){this.setAttr("dimblk2",t)}get dimlwd(){return this.getAttr("dimlwd")}set dimlwd(t){this.setAttr("dimlwd",t)}get dimlwe(){return this.getAttr("dimlwe")}set dimlwe(t){this.setAttr("dimlwe",t)}};ki.DEFAULT_DIM_VALUES={name:"",dimpost:"",dimapost:"",dimscale:1,dimasz:2.5,dimexo:.625,dimdli:.38,dimexe:.18,dimrnd:0,dimdle:0,dimtp:0,dimtm:0,dimtxt:2.5,dimcen:2.5,dimtsz:0,dimaltf:0,dimlfac:1,dimtvp:0,dimtfac:1,dimgap:1,dimaltrnd:0,dimtol:0,dimlim:0,dimtih:0,dimtoh:0,dimse1:0,dimse2:0,dimtad:0,dimzin:0,dimazin:0,dimalt:0,dimaltd:2,dimtofl:0,dimsah:0,dimtix:0,dimsoxd:0,dimclrd:0,dimclre:0,dimclrt:0,dimadec:0,dimunit:2,dimdec:4,dimtdec:4,dimaltu:2,dimalttd:2,dimaunit:0,dimfrac:0,dimlunit:2,dimdsep:".",dimtmove:0,dimjust:0,dimsd1:0,dimsd2:0,dimtolj:0,dimtzin:0,dimaltz:0,dimalttz:0,dimfit:0,dimupt:0,dimatfit:3,dimtxsty:"Standard",dimldrblk:"",dimblk:"",dimblk1:"",dimblk2:"",dimlwd:-2,dimlwe:-2};let Dn=ki;class s0 extends Xr{constructor(){super(),this.events={dictObjetSet:new ie,dictObjectErased:new ie,entityAppended:new ie,entityModified:new ie,layerAppended:new ie,layerModified:new ie,layerErased:new ie,openProgress:new ie,headerSysVarChanged:new ie},this._version=new ni("AC1014"),this._codepage=Rs.UTF16,this._angBase=0,this._angDir=0,this._aunits=_a.DecimalDegrees,this._celtscale=1,this._cecolor=new Wr,this._extents=new Rt,this._insunits=va.Millimeters,this._ltscale=1,this._pdmode=0,this._pdsize=0,this._tables={blockTable:new yu(this),dimStyleTable:new xu(this),linetypeTable:new wu(this),textStyleTable:new Au(this),layerTable:new bu(this),viewportTable:new Su(this)},this._dictionaries={layouts:new mu(this),imageDefs:new Ba(this)}}get tables(){return this._tables}get dictionaries(){return this._dictionaries}get currentSpaceId(){return this._currentSpace||(this._currentSpace=this._tables.blockTable.modelSpace),this._currentSpace.objectId}set currentSpaceId(t){const e=this.tables.blockTable.getIdAt(t);if(e==null)throw new Error(`[AcDbDatabase] The specified block table record id '${t}' doesn't exist in the drawing database!`);this._currentSpace=e}get aunits(){return this._aunits}set aunits(t){this._aunits=t||0,this.triggerHeaderSysVarChangedEvent("aunits")}get version(){return this._version}set version(t){this._version=new ni(t),this.triggerHeaderSysVarChangedEvent("version")}get codepage(){return this._codepage}set codepage(t){this._codepage=t,this.triggerHeaderSysVarChangedEvent("codepage")}get insunits(){return this._insunits}set insunits(t){this._insunits=t||4,this.triggerHeaderSysVarChangedEvent("insunits")}get ltscale(){return this._ltscale}set ltscale(t){this._ltscale=t||1,this.triggerHeaderSysVarChangedEvent("ltscale")}get cecolor(){return this._cecolor}set cecolor(t){this._cecolor=t||0,this.triggerHeaderSysVarChangedEvent("cecolor")}get celtscale(){return this._celtscale}set celtscale(t){this._celtscale=t||1,this.triggerHeaderSysVarChangedEvent("celtscale")}get angBase(){return this._angBase}set angBase(t){this._angBase=t||0,this.triggerHeaderSysVarChangedEvent("angbase")}get angDir(){return this._angDir}set angDir(t){this._angDir=t||0,this.triggerHeaderSysVarChangedEvent("angdir")}get extmax(){return this._extents.max}set extmax(t){t&&(this._extents.expandByPoint(t),this.triggerHeaderSysVarChangedEvent("extmax"))}get extmin(){return this._extents.min}set extmin(t){t&&(this._extents.expandByPoint(t),this.triggerHeaderSysVarChangedEvent("extmin"))}get extents(){return this._extents}get pdmode(){return this._pdmode}set pdmode(t){this._pdmode=t||0,this.triggerHeaderSysVarChangedEvent("pdmode")}get pdsize(){return this._pdsize}set pdsize(t){this._pdsize=t||0,this.triggerHeaderSysVarChangedEvent("pdsize")}async read(t,e,s=Ns.DXF){const o=lr.instance.get(s);if(o==null)throw new Error(`Database converter for file type '${s}' isn't registered and can can't read this file!`);this.clear(),await o.read(t,this,e&&e.minimumChunkSize||10,async(h,c,f,x)=>{if(this.events.openProgress.dispatch({database:this,percentage:h,stage:"CONVERSION",subStage:c,subStageStatus:f,data:x}),e&&e.fontLoader&&c=="FONT"&&f=="END"){const g=x||this.tables.textStyleTable.fonts;await e.fontLoader.load(g)}})}async openUri(t,e){var E;this.events.openProgress.dispatch({database:this,percentage:0,stage:"FETCH_FILE",subStageStatus:"START"});const s=await fetch(t);if(!s.ok)throw this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"ERROR"}),new Error(`Failed to fetch file '${t}' with HTTP status code '${s.status}'!`);const o=s.headers.get("content-length"),h=o?parseInt(o,10):null;let c=0;const f=(E=s.body)==null?void 0:E.getReader();if(!f)throw new Error("Failed to get response reader");const x=[];for(;;){const{done:T,value:R}=await f.read();if(T)break;if(x.push(R),c+=R.length,h!==null){const O=Math.round(c/h*100);this.events.openProgress.dispatch({database:this,percentage:O,stage:"FETCH_FILE",subStageStatus:"IN-PROGRESS"})}}const g=new Uint8Array(c);let A=0;for(const T of x)g.set(T,A),A+=T.length;t.toLowerCase().split(".").pop()==="dwg"?await this.read(g.buffer,e,Ns.DWG):await this.read(g.buffer,e,Ns.DXF),this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"END"})}createDefaultData(t={layer:!0,lineType:!0,textStyle:!0,dimStyle:!0,layout:!0}){if(t.layer){const e=new Wr;e.colorIndex=7,this._tables.layerTable.add(new Ui({name:"0",standardFlags:0,linetype:"Continuous",lineWeight:0,isOff:!1,color:e,isPlottable:!0}))}if(t.lineType&&(this._tables.linetypeTable.add(new Cs({name:"ByBlock",standardFlag:0,description:"",totalPatternLength:0})),this._tables.linetypeTable.add(new Cs({name:"ByLayer",standardFlag:0,description:"",totalPatternLength:0})),this._tables.linetypeTable.add(new Cs({name:"Continuous",standardFlag:0,description:"Solid line",totalPatternLength:0}))),t.textStyle&&this._tables.textStyleTable.add(new Da({name:"Standard",standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"})),t.dimStyle&&this._tables.dimStyleTable.add(new Dn({name:"Standard",dimtxsty:"Standard"})),t.layout){const e=new Fi;e.layoutName="Model",e.tabOrder=0,e.blockTableRecordId=this._tables.blockTable.modelSpace.objectId,e.limits.min.copy({x:0,y:0}),e.limits.max.copy({x:1e6,y:1e6}),e.extents.min.copy({x:0,y:0,z:0}),e.extents.max.copy({x:1e6,y:1e6,z:0}),this._dictionaries.layouts.setAt(e.layoutName,e),this._tables.blockTable.modelSpace.layoutId=e.objectId}}clear(){this._tables.blockTable.removeAll(),this._tables.dimStyleTable.removeAll(),this._tables.linetypeTable.removeAll(),this._tables.textStyleTable.removeAll(),this._tables.layerTable.removeAll(),this._tables.viewportTable.removeAll(),this._dictionaries.layouts.removeAll(),this._currentSpace=void 0,this._extents.makeEmpty()}triggerHeaderSysVarChangedEvent(t){this.events.headerSysVarChanged.dispatch({database:this,name:t})}}const i0={center:new Tt,viewDirectionFromTarget:new Y(0,0,1),viewTarget:new Y(0,0,0),lensLength:500,frontClippingPlane:0,backClippingPlane:0,viewHeight:1e3,viewTwistAngle:0,frozenLayers:[],styleSheet:"",renderMode:Oa.OPTIMIZED_2D,viewMode:0,ucsIconSetting:0,ucsOrigin:new Y(0,0,0),ucsXAxis:new Y(1,0,0),ucsYAxis:new Y(0,1,0),orthographicType:za.TOP,shadePlotSetting:0,shadePlotObjectId:void 0,visualStyleObjectId:void 0,isDefaultLightingOn:!1,defaultLightingType:Ra.ONE_DISTANT_LIGHT,brightness:0,contrast:0,ambientColor:void 0};class Mu extends _n{constructor(){super(),this._circleSides=100,this._center=new Tt,this._lowerLeftCorner=new Tt(0,0),this._upperRightCorner=new Tt(1,1),this._snapBase=new Tt(0,0),this._snapAngle=0,this._snapSpacing=new Tt(0,0),this._standardFlag=0,this._gridSpacing=new Tt,this._gridMajor=10,this._gsView=i0}get circleSides(){return this._circleSides}set circleSides(t){this._circleSides=t}get center(){return this._center}get lowerLeftCorner(){return this._lowerLeftCorner}set lowerLeftCorner(t){this._lowerLeftCorner.copy(t)}get upperRightCorner(){return this._upperRightCorner}set upperRightCorner(t){this._upperRightCorner.copy(t)}get snapBase(){return this._snapBase}set snapBase(t){this._snapBase.copy(t)}get snapAngle(){return this._snapAngle}set snapAngle(t){this._snapAngle=t}get snapIncrements(){return this._snapSpacing}set snapIncrements(t){this._snapSpacing.copy(t)}get gridMajor(){return this._gridMajor}set gridMajor(t){this._gridMajor=t}get gridIncrements(){return this._gridSpacing}set gridIncrements(t){this._gridSpacing.copy(t)}get standardFlag(){return this._standardFlag}set standardFlag(t){this._standardFlag=t}get snapEnabled(){return!!(this._standardFlag&256)}get backgroundObjectId(){return this._backgroundObjectId}set backgroundObjectId(t){this._backgroundObjectId=t}get gsView(){return this._gsView}}class Nu{constructor(){this.events={layoutCreated:new ie,layoutRemoved:new ie,layoutRenamed:new ie,layoutSwitched:new ie}}countLayouts(t){return this.getWorkingDatabase(t).dictionaries.layouts.numEntries}findLayoutNamed(t,e){return this.getWorkingDatabase(e).dictionaries.layouts.getAt(t)}findActiveLayout(){const t=this.getActiveLayout();return t?t.layoutName:"Model"}setCurrentLayoutId(t,e){const s=this.getWorkingDatabase(e),o=s.dictionaries.layouts.getIdAt(t);return this.setCurrentLayoutInternal(o,s)}setCurrentLayoutBtrId(t,e){const s=this.getWorkingDatabase(e),o=s.dictionaries.layouts.getBtrIdAt(t);return this.setCurrentLayoutInternal(o,s)}setCurrentLayout(t,e){const s=this.getWorkingDatabase(e),o=s.dictionaries.layouts.getAt(t);return this.setCurrentLayoutInternal(o,s)}renameLayout(t,e,s){const h=this.getWorkingDatabase(s).dictionaries.layouts.getAt(t);return h?(h.layoutName=e,this.events.layoutRenamed.dispatch({layout:h,oldName:t,newName:e}),!0):!1}layoutExists(t,e){return this.getWorkingDatabase(e).dictionaries.layouts.has(t)}deleteLayout(t,e){const s=this.getWorkingDatabase(e).dictionaries.layouts,o=s.getAt(t);let h=!1;return o&&(h=s.remove(t),h&&this.events.layoutRemoved.dispatch({layout:o})),h}createLayout(t,e){const s=this.getWorkingDatabase(e),o=new Fi;o.layoutName=t,o.tabOrder=s.dictionaries.layouts.maxTabOrder;const h=new Fe;return h.name=`*Paper_Space${o.tabOrder}`,s.tables.blockTable.add(h),s.dictionaries.layouts.setAt(t,o),this.events.layoutCreated.dispatch({layout:o}),{layout:o,btr:h}}getActiveLayout(t){const e=this.getWorkingDatabase(t);return e.dictionaries.layouts.getBtrIdAt(e.currentSpaceId)}getWorkingDatabase(t){return t||Fa().workingDatabase}setCurrentLayoutInternal(t,e){return t?(this.events.layoutSwitched.dispatch({layout:t}),e.currentSpaceId=t.blockTableRecordId,!0):!1}}function Fa(){return Ei.instance}const Ti=class Ti{constructor(){this._workingDatabase=null,this._layoutManager=new Nu}get workingDatabase(){if(this._workingDatabase==null)throw new Error("The current working database must be set before using it!");return this._workingDatabase}set workingDatabase(t){this._workingDatabase=t}get layoutManager(){return this._layoutManager}};Ti.instance=new Ti;let Ei=Ti;exports.AcCmColor=Wr;exports.AcCmErrors=Ue;exports.AcCmEventDispatcher=Ku;exports.AcCmEventManager=ie;exports.AcCmLoader=nc;exports.AcCmLoadingManager=al;exports.AcCmObject=rl;exports.AcCmPerformanceCollector=ga;exports.AcCmTask=sl;exports.AcCmTaskScheduler=il;exports.AcDb3PointAngularDimension=wi;exports.AcDbAlignedDimension=Ai;exports.AcDbAngleUnits=_a;exports.AcDbArc=ii;exports.AcDbArcDimension=fa;exports.AcDbBaseWorker=n0;exports.AcDbBatchProcessing=ll;exports.AcDbBlockReference=Ls;exports.AcDbBlockTable=yu;exports.AcDbBlockTableRecord=Fe;exports.AcDbCircle=ai;exports.AcDbCodePage=Rs;exports.AcDbCurve=je;exports.AcDbDatabase=s0;exports.AcDbDatabaseConverter=ml;exports.AcDbDatabaseConverterManager=lr;exports.AcDbDiametricDimension=Si;exports.AcDbDictionary=Ba;exports.AcDbDimArrowType=cl;exports.AcDbDimStyleTable=xu;exports.AcDbDimStyleTableRecord=Dn;exports.AcDbDimTextHorizontal=Iu;exports.AcDbDimTextVertical=Pu;exports.AcDbDimVerticalJustification=Tu;exports.AcDbDimZeroSuppression=Eu;exports.AcDbDimZeroSuppressionAngular=ku;exports.AcDbDimension=Tr;exports.AcDbDwgVersion=ni;exports.AcDbDxfConverter=vu;exports.AcDbEllipse=oi;exports.AcDbEntity=Ve;exports.AcDbFace=li;exports.AcDbFileType=Ns;exports.AcDbHatch=hi;exports.AcDbHatchPatternType=iu;exports.AcDbHatchStyle=au;exports.AcDbHostApplicationServices=Ei;exports.AcDbLayerTable=bu;exports.AcDbLayerTableRecord=Ui;exports.AcDbLayout=Fi;exports.AcDbLayoutDictionary=mu;exports.AcDbLayoutManager=Nu;exports.AcDbLeader=ui;exports.AcDbLeaderAnnotationType=ou;exports.AcDbLine=ci;exports.AcDbLineSpacingStyle=du;exports.AcDbLinetypeTable=wu;exports.AcDbLinetypeTableRecord=Cs;exports.AcDbMText=di;exports.AcDbObject=Xr;exports.AcDbObjectIterator=Mi;exports.AcDbOrdinateDimension=Ii;exports.AcDbOsnapMode=cn;exports.AcDbPoint=_i;exports.AcDbPolyline=gi;exports.AcDbRadialDimension=Pi;exports.AcDbRasterImage=zs;exports.AcDbRasterImageClipBoundaryType=uu;exports.AcDbRasterImageDef=pu;exports.AcDbRasterImageImageDisplayOpt=cu;exports.AcDbRay=vi;exports.AcDbRenderingCache=Gr;exports.AcDbSpline=Os;exports.AcDbSymbolTable=vn;exports.AcDbSymbolTableRecord=_n;exports.AcDbTable=mi;exports.AcDbText=pi;exports.AcDbTextHorizontalMode=lu;exports.AcDbTextStyleTable=Au;exports.AcDbTextStyleTableRecord=Da;exports.AcDbTextVerticalMode=hu;exports.AcDbTrace=fi;exports.AcDbUnitsValue=va;exports.AcDbViewport=yi;exports.AcDbViewportTable=Su;exports.AcDbViewportTableRecord=Mu;exports.AcDbWipeout=xi;exports.AcDbWorkerApi=gu;exports.AcDbWorkerManager=fu;exports.AcDbXline=bi;exports.AcGeArea2d=Li;exports.AcGeBox2d=_e;exports.AcGeBox3d=Rt;exports.AcGeCatmullRomCurve3d=nu;exports.AcGeCircArc2d=Rn;exports.AcGeCircArc3d=pn;exports.AcGeCurve2d=Vn;exports.AcGeEllipseArc2d=Oi;exports.AcGeEllipseArc3d=zi;exports.AcGeEuler=Jh;exports.AcGeGeometryUtil=Hh;exports.AcGeLine2d=Ri;exports.AcGeLine3d=qr;exports.AcGeLoop2d=eu;exports.AcGeMathUtil=Et;exports.AcGeMatrix2d=Ci;exports.AcGeMatrix3d=gn;exports.AcGeNurbsCurve=fn;exports.AcGePlane=Bs;exports.AcGePoint2d=Tt;exports.AcGePoint3d=Y;exports.AcGePolyline2d=Fs;exports.AcGeQuaternion=Hr;exports.AcGeShape2d=Ca;exports.AcGeSpline3d=Yr;exports.AcGeTol=Ta;exports.AcGeVector2d=$t;exports.AcGeVector3d=Z;exports.AcGiArrowType=La;exports.AcGiDefaultLightingType=Ra;exports.AcGiMTextAttachmentPoint=Bn;exports.AcGiMTextFlowDirection=Bi;exports.AcGiOrthographicType=za;exports.AcGiRenderMode=Oa;exports.AcGiViewport=Di;exports.AcTrStringUtil=rc;exports.ByBlock=ul;exports.ByLayer=Ks;exports.DEBUG_MODE=tc;exports.DEFAULT_LINE_TYPE=ei;exports.DEFAULT_TOL=Ma;exports.DEG2RAD=Aa;exports.DefaultLoadingManager=ol;exports.FLOAT_TOL=un;exports.ORIGIN_POINT_2D=Hd;exports.ORIGIN_POINT_3D=ka;exports.RAD2DEG=Sa;exports.TAU=ne;exports.acdbHostApplicationServices=Fa;exports.basisFunction=si;exports.calculateCurveLength=Kh;exports.ceilPowerOfTwo=Bh;exports.clamp=kr;exports.clone=Ps;exports.createWorkerApi=_u;exports.damp=Ph;exports.defaults=Fn;exports.degToRad=Oh;exports.dwgCodePageToEncoding=hl;exports.euclideanModulo=Ia;exports.evaluateNurbsPoint=Ms;exports.floorPowerOfTwo=Dh;exports.generateChordKnots=Yh;exports.generateSqrtChordKnots=Xh;exports.generateUUID=Ah;exports.generateUniformKnots=qh;exports.has=tl;exports.intPartLength=Ea;exports.interpolateControlPoints=qd;exports.inverseLerp=Ih;exports.isBetween=Fh;exports.isBetweenAngle=Uh;exports.isEmpty=el;exports.isEqual=zn;exports.isImperialUnits=ac;exports.isMetricUnits=ic;exports.isPointInPolygon=Na;exports.isPolygonIntersect=Wh;exports.isPowerOfTwo=Rh;exports.lerp=Pa;exports.log=ks;exports.mapLinear=Sh;exports.normalizeAngle=Ts;exports.pingpong=Eh;exports.radToDeg=zh;exports.randFloat=Nh;exports.randFloatSpread=Ch;exports.randInt=Mh;exports.relativeEps=Vh;exports.seededRandom=Lh;exports.setLogLevel=ec;exports.smootherstep=Th;exports.smoothstep=kh;